/usr/share/gobject-introspection-1.0/Makefile.introspection is in gobject-introspection 1.56.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 | # -*- Mode: make -*-
# Copyright 2009-2010 Johan Dahlin
#
# This file is free software; the author(s) gives unlimited
# permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# * Input variables:
#
# INTROSPECTION_GIRS - List of GIRS that should be generated
# INTROSPECTION_SCANNER - Command to invoke scanner, normally set by
# GOBJECT_INTROSPECTION_REQUIRE/CHECK() in introspection.m4
# INTROSPECTION_SCANNER_ARGS - Additional args to pass in to the scanner
# INTROSPECTION_SCANNER_ENV - Environment variables to set before running
# the scanner
# INTROSPECTION_COMPILER - Command to invoke compiler, normally set by
# GOBJECT_INTROSPECTION_REQUIRE/CHECK() in introspection.m4
# INTROSPECTION_COMPILER_ARGS - Additional args to pass in to the compiler
#
# * Simple tutorial
#
# Add this to configure.ac:
# -Wno-portability to AM_INIT_AUTOMAKE
# GOBJECT_INTROSPECTION_CHECK([0.6.7])
#
# Add this to Makefile.am where your library/program is built:
# include $(INTROSPECTION_MAKEFILE)
# INTROSPECTION_GIRS = YourLib-1.0.gir
# YourLib-1.0.gir: libyourlib.la
# YourLib_1_0_gir_NAMESPACE = YourLib
# YourLib_1_0_gir_VERSION = 1.0
# YourLib_1_0_gir_LIBS = libyourlib.la
# YourLib_1_0_gir_FILES = $(libyourlib_1_0_SOURCES)
# girdir = $(datadir)/gir-1.0
# dist_gir_DATA = YourLib-1.0.gir
# typelibdir = $(libdir)/girepository-1.0
# typelib_DATA = YourLib-1.0.typelib
# CLEANFILES = $(dist_gir_DATA) $(typelib_DATA)
#
# Make sure the required variables are set, these should under normal
# circumstances come from introspection.m4
$(if $(INTROSPECTION_SCANNER),,$(error Need to define INTROSPECTION_SCANNER))
$(if $(INTROSPECTION_COMPILER),,$(error Need to define INTROSPECTION_COMPILER))
# Private functions
## Transform the gir filename to something which can reference through a variable
## without automake/make complaining, eg Gtk-2.0.gir -> Gtk_2_0_gir
_gir_name = $(subst /,_,$(subst -,_,$(subst .,_,$(1))))
# Namespace and Version is either fetched from the gir filename
# or the _NAMESPACE/_VERSION variable combo
_gir_namespace = $(or $($(_gir_name)_NAMESPACE),$(firstword $(subst -, ,$(notdir $(1)))))
_gir_version = $(or $($(_gir_name)_VERSION),$(lastword $(subst -, ,$(1:.gir=))))
# _PROGRAM is an optional variable which needs it's own --program argument
_gir_program = $(if $($(_gir_name)_PROGRAM),--program=$($(_gir_name)_PROGRAM))
# Variables which provides a list of things
_gir_libraries = $(foreach lib,$($(_gir_name)_LIBS),--library=$(lib))
_gir_packages = $(foreach pkg,$($(_gir_name)_PACKAGES),--pkg=$(pkg))
_gir_includes = $(foreach include,$($(_gir_name)_INCLUDES),--include=$(include))
_gir_export_packages = $(foreach pkg,$($(_gir_name)_EXPORT_PACKAGES),--pkg-export=$(pkg))
_gir_c_includes = $(foreach include,$($(_gir_name)_C_INCLUDES),--c-include=$(include))
# Reuse the LIBTOOL variable from automake if it's set, but
# work around MSYS weirdness: When running g-ir-scanner, MSYS changes
# a command-line argument --libtool="/bin/sh ../../libtool" into
# --libtool=c:/opt/msys/1.0/bin/libtool. So just use sh.exe without path
# because we already "know" where the libtool configure produced is.
_gir_libtool = $(if $(findstring MINGW,$(shell uname -s)),--libtool="$(top_builddir)/libtool",$(if $(LIBTOOL),--libtool="$(LIBTOOL)"))
# Macros for AM_SILENT_RULES prettiness
_gir_verbosity = $(if $(AM_DEFAULT_VERBOSITY),$(AM_DEFAULT_VERBOSITY),1)
_gir_silent_scanner_prefix = $(_gir_silent_scanner_prefix_$(V))
_gir_silent_scanner_prefix_ = $(_gir_silent_scanner_prefix_$(_gir_verbosity))
_gir_silent_scanner_prefix_0 = @echo " GISCAN $(1)";
_gir_silent_scanner_opts = $(_gir_silent_scanner_opts_$(V))
_gir_silent_scanner_opts_ = $(_gir_silent_scanner_opts_$(_gir_verbosity))
_gir_silent_scanner_opts_0 = --quiet
_gir_silent_compiler = $(_gir_silent_compiler_$(V))
_gir_silent_compiler_ = $(_gir_silent_compiler_$(_gir_verbosity))
_gir_silent_compiler_0 = @echo " GICOMP $(1)";
_gir_default_scanner_env = CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" CC="$(CC)" PKG_CONFIG="$(PKG_CONFIG)" GI_HOST_OS="$(GI_HOST_OS)" DLLTOOL="$(DLLTOOL)"
#
# Creates a GIR by scanning C headers/sources
# $(1) - Name of the gir file (output)
#
# If output is Gtk-2.0.gir then you should name the variables like
# Gtk_2_0_gir_NAMESPACE, Gtk_2_0_gir_VERSION etc.
# Required variables:
# FILES - C sources and headers which should be scanned
#
# One of these variables are required:
# LIBS - Library where the symbol represented in the gir can be found
# PROGRAM - Program where the symbol represented in the gir can be found
#
# Optional variables
# NAMESPACE - Namespace of the gir, first letter capital,
# rest should be lower case, for instance: 'Gtk', 'Clutter', 'ClutterGtk'.
# If not present the namespace will be fetched from the gir filename,
# the part before the first dash. For 'Gtk-2.0', namespace will be 'Gtk'.
# VERSION - Version of the gir, if not present, will be fetched from gir
# filename, the part after the first dash. For 'Gtk-2.0', version will be '2.0'.
# LIBTOOL - Command to invoke libtool, usually set by automake
# SCANNERFLAGS - Flags to pass in to the scanner, see g-ir-scanner(1) for a list
# CFLAGS - Flags to pass in to the parser when scanning headers
# LDFLAGS - Linker flags used by the scanner
# PACKAGES - list of pkg-config names which cflags are required to parse
# the headers of this gir
# INCLUDES - Gir files to include without the .gir suffix, for instance
# GLib-2.0, Gtk-2.0. This is needed for all libraries which you depend on that
# provides introspection information.
# EXPORT_PACKAGES - list of pkg-config names that are provided by this gir.
# By default the names in the PACKAGES variable will be used.
# C_INCLUDES - List of public C headers which need to be included by
# consumers at compile time to make use of the API
#
define introspection-scanner
# Basic sanity check, to make sure required variables are set
$(if $($(_gir_name)_FILES),,$(error Need to define $(_gir_name)_FILES))
$(if $(or $(findstring --header-only,$($(_gir_name)_SCANNERFLAGS)),
$($(_gir_name)_LIBS),
$($(_gir_name)_PROGRAM)),,
$(error Need to define $(_gir_name)_LIBS or $(_gir_name)_PROGRAM))
# Only dependencies we know are actually filenames goes into _FILES, make
# sure these are built before running the scanner. Libraries and programs
# needs to be added manually.
$(1): $$($(_gir_name)_FILES)
@ $(MKDIR_P) $(dir $(1))
$(_gir_silent_scanner_prefix) $(_gir_default_scanner_env) $(INTROSPECTION_SCANNER_ENV) $(INTROSPECTION_SCANNER) $(_gir_silent_scanner_opts) \
$(INTROSPECTION_SCANNER_ARGS) \
--namespace=$(_gir_namespace) \
--nsversion=$(_gir_version) \
$(_gir_libtool) \
$(_gir_packages) \
$(_gir_includes) \
$(_gir_export_packages) \
$(_gir_c_includes) \
$(_gir_program) \
$(_gir_libraries) \
$($(_gir_name)_SCANNERFLAGS) \
--cflags-begin \
$($(_gir_name)_CFLAGS) \
--cflags-end \
$($(_gir_name)_LDFLAGS) \
$$^ \
--output $(1)
endef
$(foreach gir,$(INTROSPECTION_GIRS),$(eval $(call introspection-scanner,$(gir))))
#
# Compiles a gir into a typelib
# $(1): gir filename (input)
# $(2): typelib filename (output)
#
define introspection-compiler
$(_gir_silent_compiler) $(INTROSPECTION_COMPILER) $(INTROSPECTION_COMPILER_ARGS) --includedir=. $(1) -o $(2)
endef
# Simple rule to compile a typelib.
%.typelib: %.gir
$(call introspection-compiler,$<,$@)
|