Add build machinery for gobject-introspection data
configure.ac: Check for gobject-introspection build/introspection.m4: Include the file that defines the GOBJECT_CHECK_INTROSPECTION m4 macro in case we want to disable the introspection data generation. clutter/json/Makefile.am: Build the .gir for "ClutterJson" (json-glib as part of the Clutter library) clutter/Makefile.am: Build the .gir for clutter, compile the Clutter and ClutterJson girs into typelibs, and install them. Also move GCC_FLAGS from $(INCLUDES) to $(AM_CFLAGS) since it includes non-preprocessor flag like -Wall. See also: http://bugzilla.openedhand.com/show_bug.cgi?id=1450 Based on a patch by: Owen W. Taylor <otaylor@fishsoup.net> Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
This commit is contained in:
parent
c5afd98416
commit
21aa09748c
@ -2,6 +2,7 @@ NULL =
|
|||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
dolt.m4 \
|
dolt.m4 \
|
||||||
|
introspection.m4 \
|
||||||
gtk-doc.m4 \
|
gtk-doc.m4 \
|
||||||
shave.in \
|
shave.in \
|
||||||
shave-libtool.in \
|
shave-libtool.in \
|
||||||
|
88
build/autotools/introspection.m4
Normal file
88
build/autotools/introspection.m4
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
dnl -*- mode: autoconf -*-
|
||||||
|
dnl Copyright 2009 Johan Dahlin
|
||||||
|
dnl
|
||||||
|
dnl This file is free software; the author(s) gives unlimited
|
||||||
|
dnl permission to copy and/or distribute it, with or without
|
||||||
|
dnl modifications, as long as this notice is preserved.
|
||||||
|
dnl
|
||||||
|
|
||||||
|
# serial 1
|
||||||
|
|
||||||
|
m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
|
||||||
|
[
|
||||||
|
AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
|
||||||
|
AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
|
||||||
|
AC_BEFORE([LT_INIT],[$0])dnl setup libtool first
|
||||||
|
|
||||||
|
dnl enable/disable introspection
|
||||||
|
m4_if([$2], [require],
|
||||||
|
[dnl
|
||||||
|
enable_introspection=yes
|
||||||
|
],[dnl
|
||||||
|
AC_ARG_ENABLE(introspection,
|
||||||
|
AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]],
|
||||||
|
[Enable introspection for this build]),,
|
||||||
|
[enable_introspection=auto])
|
||||||
|
])dnl
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for gobject-introspection])
|
||||||
|
|
||||||
|
dnl presence/version checking
|
||||||
|
AS_CASE([$enable_introspection],
|
||||||
|
[no], [dnl
|
||||||
|
found_introspection="no (disabled, use --enable-introspection to enable)"
|
||||||
|
],dnl
|
||||||
|
[yes],[dnl
|
||||||
|
PKG_CHECK_EXISTS([gobject-introspection-1.0],,
|
||||||
|
AC_MSG_ERROR([gobject-introspection-1.0 is not installed]))
|
||||||
|
PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1],
|
||||||
|
found_introspection=yes,
|
||||||
|
AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME]))
|
||||||
|
],dnl
|
||||||
|
[auto],[dnl
|
||||||
|
PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no)
|
||||||
|
],dnl
|
||||||
|
[dnl
|
||||||
|
AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])
|
||||||
|
])dnl
|
||||||
|
|
||||||
|
AC_MSG_RESULT([$found_introspection])
|
||||||
|
|
||||||
|
INTROSPECTION_SCANNER=
|
||||||
|
INTROSPECTION_COMPILER=
|
||||||
|
INTROSPECTION_GENERATE=
|
||||||
|
INTROSPECTION_GIRDIR=
|
||||||
|
INTROSPECTION_TYPELIBDIR=
|
||||||
|
if test "x$found_introspection" = "xyes"; then
|
||||||
|
INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
|
||||||
|
INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
|
||||||
|
INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
|
||||||
|
INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
|
||||||
|
INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
|
||||||
|
fi
|
||||||
|
AC_SUBST(INTROSPECTION_SCANNER)
|
||||||
|
AC_SUBST(INTROSPECTION_COMPILER)
|
||||||
|
AC_SUBST(INTROSPECTION_GENERATE)
|
||||||
|
AC_SUBST(INTROSPECTION_GIRDIR)
|
||||||
|
AC_SUBST(INTROSPECTION_TYPELIBDIR)
|
||||||
|
|
||||||
|
AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes")
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl Usage:
|
||||||
|
dnl GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version])
|
||||||
|
|
||||||
|
AC_DEFUN([GOBJECT_INTROSPECTION_CHECK],
|
||||||
|
[
|
||||||
|
_GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1])
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl Usage:
|
||||||
|
dnl GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version])
|
||||||
|
|
||||||
|
|
||||||
|
AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE],
|
||||||
|
[
|
||||||
|
_GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require])
|
||||||
|
])
|
@ -32,12 +32,13 @@ INCLUDES = \
|
|||||||
-DCLUTTER_COMPILATION=1 \
|
-DCLUTTER_COMPILATION=1 \
|
||||||
-DG_DISABLE_DEPRECATED \
|
-DG_DISABLE_DEPRECATED \
|
||||||
-DG_LOG_DOMAIN=\"Clutter\" \
|
-DG_LOG_DOMAIN=\"Clutter\" \
|
||||||
$(GCC_FLAGS) \
|
|
||||||
$(CLUTTER_CFLAGS) \
|
$(CLUTTER_CFLAGS) \
|
||||||
$(CLUTTER_DEBUG_CFLAGS) \
|
$(CLUTTER_DEBUG_CFLAGS) \
|
||||||
$(MAINTAINER_CFLAGS) \
|
$(MAINTAINER_CFLAGS) \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
|
AM_CFLAGS=$(GCC_FLAGS)
|
||||||
|
|
||||||
LDADD = \
|
LDADD = \
|
||||||
$(CLUTTER_LT_LDFLAGS) \
|
$(CLUTTER_LT_LDFLAGS) \
|
||||||
-export-dynamic \
|
-export-dynamic \
|
||||||
@ -236,6 +237,64 @@ clutter_HEADERS = \
|
|||||||
clutter-version.h \
|
clutter-version.h \
|
||||||
clutter.h
|
clutter.h
|
||||||
|
|
||||||
|
if HAVE_INTROSPECTION
|
||||||
|
BUILT_GIRSOURCES =
|
||||||
|
|
||||||
|
if LOCAL_JSON_GLIB
|
||||||
|
json_gir_include_path=--add-include-path=json
|
||||||
|
endif
|
||||||
|
|
||||||
|
# We can't reference the list of COGL header files, since they are in a
|
||||||
|
# subdir Makefile.am, so just extract them from cogl.h instead. The doc comments
|
||||||
|
# for COGL are in the headers, so we don't need the source files.
|
||||||
|
Clutter-@CLUTTER_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libclutter-@CLUTTER_FLAVOUR@-@CLUTTER_API_VERSION@.la
|
||||||
|
cogl_headers=`sed -n "s/#include <cogl\/\([^>]*\)>/cogl\/\1/p" < cogl/cogl.h` ; \
|
||||||
|
$(INTROSPECTION_SCANNER) -v --namespace Clutter --nsversion=@CLUTTER_API_VERSION@ \
|
||||||
|
$(INCLUDES) \
|
||||||
|
$(json_gir_include_path) \
|
||||||
|
--include=GL-1.0 \
|
||||||
|
--include=GObject-2.0 \
|
||||||
|
--include=Pango-1.0 \
|
||||||
|
--include=PangoCairo-1.0 \
|
||||||
|
--include=ClutterJson-@CLUTTER_API_VERSION@ \
|
||||||
|
--library=clutter-@CLUTTER_FLAVOUR@-@CLUTTER_API_VERSION@ \
|
||||||
|
--libtool="$(top_builddir)/doltlibtool" \
|
||||||
|
--pkg gobject-2.0 \
|
||||||
|
--pkg pango \
|
||||||
|
--pkg pangocairo \
|
||||||
|
--output $@ \
|
||||||
|
$(clutter_HEADERS) \
|
||||||
|
$$cogl_headers \
|
||||||
|
$(source_c)
|
||||||
|
|
||||||
|
BUILT_GIRSOURCES += Clutter-@CLUTTER_API_VERSION@.gir
|
||||||
|
|
||||||
|
if LOCAL_JSON_GLIB
|
||||||
|
# We build ClutterJson.gir in the json/ subdir, but it needs to reference the shared library
|
||||||
|
# that it's built into, so we delay compiling the gir into typelib until after we've built
|
||||||
|
# the shared library. To create the final ClutterJson.gir that we compiler and install, we
|
||||||
|
# transfer the shared-library="" line from Clutter.gir to ClutterJson.gir
|
||||||
|
ClutterJson-@CLUTTER_API_VERSION@.gir: Clutter-@CLUTTER_API_VERSION@.gir json/ClutterJson-@CLUTTER_API_VERSION@.gir
|
||||||
|
shlib=`sed -n 's/.*shared-library="\([^"]*\)".*/\1/p' < Clutter-@CLUTTER_API_VERSION@.gir` ; \
|
||||||
|
sed "s/shared-library=\"clutter-json\"/shared-library=\"$$shlib\"/"< json/ClutterJson-@CLUTTER_API_VERSION@.gir > $@
|
||||||
|
|
||||||
|
BUILT_GIRSOURCES += ClutterJson-@CLUTTER_API_VERSION@.gir
|
||||||
|
endif
|
||||||
|
|
||||||
|
# INTROSPECTION_GIRDIR/INTROSPECTION_TYPELIBDIR aren't the right place to install
|
||||||
|
# thing - we need to install inside our prefix.
|
||||||
|
girdir = $(datadir)/gir-1.0
|
||||||
|
gir_DATA = $(BUILT_GIRSOURCES)
|
||||||
|
|
||||||
|
typelibsdir = $(libdir)/girepository-1.0/
|
||||||
|
typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
|
||||||
|
|
||||||
|
%.typelib: %.gir $(INTROSPECTION_COMPILER)
|
||||||
|
$(DEBUG) $(INTROSPECTION_COMPILER) --includedir=$(srcdir) --includedir=. $(INTROSPECTION_COMPILER_OPTS) $< -o $(builddir)/$(@F)
|
||||||
|
|
||||||
|
CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
|
||||||
|
endif
|
||||||
|
|
||||||
DISTCLEANFILES = \
|
DISTCLEANFILES = \
|
||||||
$(ENUMFILES) \
|
$(ENUMFILES) \
|
||||||
$(MARSHALFILES) \
|
$(MARSHALFILES) \
|
||||||
|
@ -26,3 +26,27 @@ INCLUDES = \
|
|||||||
|
|
||||||
clutterjsondir = $(includedir)/clutter-@CLUTTER_MAJORMINOR@/clutter/json
|
clutterjsondir = $(includedir)/clutter-@CLUTTER_MAJORMINOR@/clutter/json
|
||||||
clutterjson_HEADERS = $(source_h)
|
clutterjson_HEADERS = $(source_h)
|
||||||
|
|
||||||
|
noinst_DATA =
|
||||||
|
CLEANFILES =
|
||||||
|
|
||||||
|
if HAVE_INTROSPECTION
|
||||||
|
BUILT_GIRSOURCES =
|
||||||
|
|
||||||
|
ClutterJson-@CLUTTER_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libclutter-json.la
|
||||||
|
$(INTROSPECTION_SCANNER) -v --namespace ClutterJson --nsversion=@CLUTTER_API_VERSION@ \
|
||||||
|
--add-include-path=$(srcdir) --add-include-path=. \
|
||||||
|
--include=GObject-2.0 \
|
||||||
|
--library=clutter-json \
|
||||||
|
--libtool="$(top_builddir)/doltlibtool" \
|
||||||
|
--pkg gobject-2.0 \
|
||||||
|
--output $@ \
|
||||||
|
$(clutterjson_HEADERS) \
|
||||||
|
$(source_c)
|
||||||
|
|
||||||
|
BUILT_GIRSOURCES += ClutterJson-@CLUTTER_API_VERSION@.gir
|
||||||
|
|
||||||
|
noinst_DATA += $(BUILT_GIRSOURCES)
|
||||||
|
|
||||||
|
CLEANFILES += $(BUILT_GIRSOURCES)
|
||||||
|
endif
|
||||||
|
@ -596,6 +596,9 @@ if test "x$enable_maintainer_flags" = "xyes"; then
|
|||||||
fi
|
fi
|
||||||
AC_SUBST(MAINTAINER_CFLAGS)
|
AC_SUBST(MAINTAINER_CFLAGS)
|
||||||
|
|
||||||
|
dnl = GObject-Introspection check ==========================================
|
||||||
|
|
||||||
|
GOBJECT_INTROSPECTION_CHECK([0.6.3])
|
||||||
|
|
||||||
dnl = GTK Doc check ========================================================
|
dnl = GTK Doc check ========================================================
|
||||||
|
|
||||||
@ -721,6 +724,7 @@ echo " Debug level: ${enable_debug}"
|
|||||||
echo " Compiler flags: ${CPPFLAGS} ${MAINTAINER_CFLAGS}"
|
echo " Compiler flags: ${CPPFLAGS} ${MAINTAINER_CFLAGS}"
|
||||||
echo " Build API Documentation: ${enable_gtk_doc}"
|
echo " Build API Documentation: ${enable_gtk_doc}"
|
||||||
echo " Build Manual Documentation: ${enable_manual}"
|
echo " Build Manual Documentation: ${enable_manual}"
|
||||||
|
echo " Build Introspection data: ${enable_introspection}"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user