summaryrefslogtreecommitdiff
path: root/m4/introspection.m4
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2018-05-29 11:27:19 +0200
committerLubomir Rintel <lkundrak@v3.sk>2018-08-07 10:06:44 +0200
commit99b92fd9920372e57bfe3a624b29915ca3335d99 (patch)
treedd4d2b23322543625d456377e87cca70dd903074 /m4/introspection.m4
parent667a81e5931fa44b2d05732713790e469880fc00 (diff)
downloadNetworkManager-99b92fd9920372e57bfe3a624b29915ca3335d99.tar.gz
build: check whether g-ir-scanner actually works
g-ir-scanner uses distutils that have an unfortunate misfeature of inheriting the compiler flags it itself was built with. This includes the hardening flags that don't work with without redhat-rpm-build and break with clang every full moon. A configure check makes it clear about what went wrong in case introspection is desired, otherwise turns it off. (Taken from network-manager commit 678890ed0347849990787e8893122a39f95cb708)
Diffstat (limited to 'm4/introspection.m4')
-rw-r--r--m4/introspection.m465
1 files changed, 31 insertions, 34 deletions
diff --git a/m4/introspection.m4 b/m4/introspection.m4
index 3b4fc6b813..f3bda0e7c5 100644
--- a/m4/introspection.m4
+++ b/m4/introspection.m4
@@ -25,46 +25,43 @@ m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
[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 Canonicalize enable_introspection
- enable_introspection=$found_introspection
- ],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)"
- INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
- INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
- INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
+
+ if test "x$enable_introspection" == "xno"; then
+ found_introspection="no"
+ else
+ PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], [
+ 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)"
+ INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
+ INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
+ INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
+
+ AC_MSG_CHECKING([if $INTROSPECTION_SCANNER works])
+ if CFLAGS="${CFLAGS} -Wno-error" "$INTROSPECTION_SCANNER" --namespace=test --library=c /dev/null --output /dev/null >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
+ found_introspection=yes
+ else
+ found_introspection="no (compiler failure -- check config.log)"
+ fi
+ AC_MSG_RESULT([$found_introspection])
+ ], [found_introspection="no (not installed)"])
+
+ if test "x$enable_introspection" == "xyes"; then
+ if test "x$found_introspection" != "xyes"; then
+ AC_MSG_ERROR([introspection enabled but can't be used])
+ fi
+ elif test "x$enable_introspection" != "xauto"; then
+ AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])
+ fi
fi
+
AC_SUBST(INTROSPECTION_SCANNER, 'CFLAGS="${CFLAGS} -Wno-error" '"$INTROSPECTION_SCANNER")
AC_SUBST(INTROSPECTION_COMPILER)
AC_SUBST(INTROSPECTION_GENERATE)