dnl the gi version number
m4_define(gi_major_version, 1)
-m4_define(gi_minor_version, 29)
-m4_define(gi_micro_version, 0)
+m4_define(gi_minor_version, 49)
+m4_define(gi_micro_version, 1)
m4_define(gi_version, gi_major_version.gi_minor_version.gi_micro_version)
-AC_PREREQ(2.59)
-AC_INIT(gobject-introspection, gi_version,
- [http://bugzilla.gnome.org/enter_bug.cgi?product=glib&component=introspection])
-AM_INIT_AUTOMAKE([1.7 dist-bzip2 no-dist-gzip foreign -Wno-portability])
-AM_MAINTAINER_MODE
-
-m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],)
+AC_PREREQ([2.63])
+AC_INIT([gobject-introspection],
+ [gi_version],
+ [http://bugzilla.gnome.org/enter_bug.cgi?product=gobject-introspection],
+ [gobject-introspection])
AC_CONFIG_HEADER([config.h])
-
AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_AUX_DIR([build-aux])
+
+AM_INIT_AUTOMAKE([1.11 tar-ustar dist-xz no-dist-gzip foreign -Wno-portability parallel-tests])
+AM_MAINTAINER_MODE([enable])
+
+AM_SILENT_RULES([yes])
+
+# Used in docs/reference/version.xml
+GI_VERSION=gi_version
+AC_SUBST(GI_VERSION)
# Check for Win32
AC_CANONICAL_HOST
-AC_MSG_CHECKING([for Win32])
case "$host" in
*-*-mingw*)
os_win32=yes
os_win32=no
;;
esac
-AC_MSG_RESULT([$os_win32])
-AM_CONDITIONAL(OS_WIN32, [test "$os_win32" = "yes"])
+AM_CONDITIONAL(OS_WIN32, [test "x$os_win32" = "xyes"])
# Checks for programs.
AC_PROG_CC
AM_PROG_CC_C_O
-AC_PROG_LIBTOOL
+AC_PROG_MKDIR_P
+
+# Initialize libtool
+LT_PREREQ([2.2])
+LT_INIT
+
PKG_PROG_PKG_CONFIG
AC_PROG_LEX
AC_SUBST(GIR_DIR)
AC_DEFINE_UNQUOTED(GIR_DIR, "$GIR_DIR", [Director prefix for gir installation])
-PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.29.7])
+PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.49.4])
PKG_CHECK_MODULES(GOBJECT, [gobject-2.0])
+PKG_CHECK_MODULES(GMODULE, [gmodule-2.0])
PKG_CHECK_MODULES(GIO, [gio-2.0])
PKG_CHECK_MODULES(GIO_UNIX, [gio-unix-2.0], have_gio_unix=true, have_gio_unix=false)
AM_CONDITIONAL(HAVE_GIO_UNIX, test x$have_gio_unix = xtrue)
-AC_ARG_ENABLE(tests,[ --disable-tests disable test libraries ], enable_tests=$enableval,enable_tests=yes)
-have_cairo=no
-PKG_CHECK_MODULES(CAIRO, [cairo], have_cairo=yes, have_cairo=no)
-if test x$have_cairo != xyes && test x$enable_tests != xno; then
- AC_MSG_ERROR([Tests enabled but cairo not found; pass --disable-tests or install cairo])
-fi
+# Prefer cairo-gobject if we have it
+AC_ARG_WITH(cairo,
+ AS_HELP_STRING([--with-cairo], [Use cairo @<:@default=maybe@:>@]),
+ [], [with_cairo=maybe])
-have_cairo_gobject=no
-if test x$have_cairo = xyes; then
- PKG_CHECK_MODULES(CAIRO_GOBJECT, [cairo-gobject], have_cairo_gobject=yes, have_cairo_gobject=no)
-fi
+AS_IF([test x${with_cairo} != xno], [
+ PKG_CHECK_MODULES(CAIRO, [cairo cairo-gobject], have_cairo=yes, have_cairo=no)
+ AS_IF([ test x$have_cairo = xno && test x$with_cairo = xyes ], [
+ AC_MSG_ERROR([cairo enabled but not found])
+ ])
+])
+AM_CONDITIONAL(HAVE_CAIRO, test x$have_cairo = xyes)
+
+case "$host" in
+ *-*-darwin*)
+ CAIRO_SHARED_LIBRARY="libcairo-gobject.2.dylib"
+ ;;
+ *-*-mingw*)
+ CAIRO_SHARED_LIBRARY="libcairo-gobject-2.dll"
+ ;;
+ *-*-openbsd*)
+ CAIRO_SHARED_LIBRARY="libcairo-gobject.so"
+ ;;
+ *)
+ CAIRO_SHARED_LIBRARY="libcairo-gobject.so.2"
+ ;;
+esac
+CAIRO_GIR_PACKAGE="cairo-gobject"
-if test x$have_cairo_gobject = xyes; then
- case "$host" in
- *-*-darwin*)
- CAIRO_SHARED_LIBRARY="libcairo-gobject.2.dylib"
- ;;
- *)
- CAIRO_SHARED_LIBRARY="libcairo-gobject.so.2"
- ;;
- esac
- CAIRO_GIR_PACKAGE="cairo-gobject"
-elif test x$have_cairo = xyes; then
- case "$host" in
- *-*-darwin*)
- CAIRO_SHARED_LIBRARY="libcairo.2.dylib"
- ;;
- *)
- CAIRO_SHARED_LIBRARY="libcairo.so.2"
- ;;
- esac
- CAIRO_GIR_PACKAGE="cairo"
-fi
AC_SUBST(CAIRO_SHARED_LIBRARY)
AC_SUBST(CAIRO_GIR_PACKAGE)
-AM_CONDITIONAL(BUILD_TESTS, test x$enable_tests != xno)
-AM_CONDITIONAL(HAVE_CAIRO, test x$have_cairo != xno)
-AM_CONDITIONAL(HAVE_CAIRO_GOBJECT, test x$have_cairo_gobject != xno)
-PKG_CHECK_MODULES(SCANNER, [gobject-2.0 gthread-2.0 gio-2.0])
+PKG_CHECK_MODULES(SCANNER, [gobject-2.0 gio-2.0])
dnl libffi
-PKG_CHECK_MODULES(FFI, libffi, have_ffi_pkgconfig=yes, have_ffi_pkgconfig=no)
+PKG_CHECK_MODULES(FFI, [libffi >= 3.0.0 ], have_ffi_pkgconfig=yes, have_ffi_pkgconfig=no)
FFI_PC_CFLAGS=""
FFI_PC_LIBS=""
FFI_PC_PACKAGES=""
else
AC_MSG_CHECKING(for ffi.h)
- AC_TRY_CPP([#include <ffi.h>], have_ffi_h=yes, have_ffi_h=no)
+ AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <ffi.h>]])],
+ [have_ffi_h=yes],[have_ffi_h=no])
if test x"$have_ffi_h" = x"yes"; then
save_LIBS=$LIBS
GIREPO_CFLAGS="$GIREPO_CFLAGS $GCOV_CFLAGS"
# gtk-doc
-GTK_DOC_CHECK([1.12])
+# gtkdocize greps for ^GTK_DOC_CHECK and parses it, so you need to have
+# it on it's own line.
+m4_ifdef([GTK_DOC_CHECK], [
+GTK_DOC_CHECK([1.19], [--flavour no-tmpl])
+],[
+AM_CONDITIONAL([ENABLE_GTK_DOC],[false])
+])
# Checks for header files.
AC_HEADER_STDC
AC_CHECK_FUNCS([backtrace backtrace_symbols])
# Python
+# option to specify python interpreter to use; this just sets $PYTHON, so that
+# we will fallback to reading $PYTHON if --with-python is not given, and
+# python.m4 will get the expected input
+AC_ARG_WITH(python,
+ AS_HELP_STRING([--with-python=PATH],[Path to Python interpreter; searches $PATH if only a program name is given; if not given, searches for a few standard names such as "python3" or "python2"]),
+ [PYTHON="$withval"], [])
+if test x"$PYTHON" = xyes; then
+ AC_MSG_ERROR([--with-python option requires a path or program argument])
+fi
+if test -n "$PYTHON" && ! which "$PYTHON"; then
+ AC_MSG_ERROR([Python interpreter $PYTHON does not exist])
+fi
-AC_MSG_CHECKING([whether Python support is requested])
-
-AM_PATH_PYTHON([2.5])
+AM_PATH_PYTHON([2.7])
case "$host" in
*-*-mingw*)
# Change backslashes to forward slashes in pyexecdir to avoid
pyexecdir=`echo $pyexecdir | tr '\\\\' '/'`
;;
esac
-AM_CHECK_PYTHON_HEADERS(,AC_MSG_ERROR([Python headers not found]))
+AM_CHECK_PYTHON_HEADERS(, AC_MSG_ERROR([Python headers not found]))
+if test "x$os_win32" = "xyes"; then
+ AM_CHECK_PYTHON_LIBS(, AC_MSG_ERROR([Python libs not found. Windows requires Python modules to be explicitly linked to libpython.]))
+fi
+
+dnl Not enabled by default until 3.6 cycle when we can propose mako as
+dnl an external dependency
+AC_ARG_ENABLE(doctool,[ --disable-doctool disable g-ir-doc-tool ],,enable_doctool=auto)
+AS_IF([ test x$enable_doctool != xno], [
+ AM_CHECK_PYMOD(mako,,have_python_mako=yes,have_python_mako=no)
+])
+AS_IF([ test x$enable_doctool = xauto && test x$have_python_mako = xyes ],
+ [ enable_doctool=yes ],
+ [ test x$enable_doctool = xauto && test x$have_python_mako = xno ],
+ [ enable_doctool=no ],
+ [ test x$enable_doctool = xyes && test x$have_python_mako = xno ],
+ [ AC_MSG_ERROR([Python mako module not found]) ])
+AM_CONDITIONAL(BUILD_DOCTOOL, test x$enable_doctool != xno)
# Glib documentation
AC_ARG_WITH(glib-src,
[ --with-glib-src=PATH Source directory for glib - needed to add docs to gir],
GLIBSRC=$withval
-)
+)
AM_CONDITIONAL(WITH_GLIBSRC, test x"$GLIBSRC" != x)
AC_SUBST(GLIBSRC)
AC_MSG_RESULT([$GLIBSRC])
+dnl
+dnl Check for -fvisibility=hidden to determine if we can do GNU-style
+dnl visibility attributes for symbol export control
+dnl
+GI_HIDDEN_VISIBILITY_CFLAGS=""
+case "$host" in
+ *-*-mingw*)
+ dnl on mingw32 we do -fvisibility=hidden and __declspec(dllexport)
+ AC_DEFINE([_GI_EXTERN], [__attribute__((visibility("default"))) __declspec(dllexport) extern],
+ [defines how to decorate public symbols while building])
+ CFLAGS="${CFLAGS} -fvisibility=hidden"
+ ;;
+ *)
+ dnl on other compilers, check if we can do -fvisibility=hidden
+ SAVED_CFLAGS="${CFLAGS}"
+ CFLAGS="-fvisibility=hidden"
+ AC_MSG_CHECKING([for -fvisibility=hidden compiler flag])
+ AC_TRY_COMPILE([], [int main (void) { return 0; }],
+ AC_MSG_RESULT(yes)
+ enable_fvisibility_hidden=yes,
+ AC_MSG_RESULT(no)
+ enable_fvisibility_hidden=no)
+ CFLAGS="${SAVED_CFLAGS}"
+
+ AS_IF([test "${enable_fvisibility_hidden}" = "yes"], [
+ AC_DEFINE([_GI_EXTERN], [__attribute__((visibility("default"))) extern],
+ [defines how to decorate public symbols while building])
+ GI_HIDDEN_VISIBILITY_CFLAGS="-fvisibility=hidden"
+ ])
+ ;;
+esac
+AC_SUBST(GI_HIDDEN_VISIBILITY_CFLAGS)
+
+dnl
+dnl Check for -Bsymbolic-functions linker flag used to avoid
+dnl intra-library PLT jumps, if available.
+dnl
+AC_ARG_ENABLE(Bsymbolic,
+ [AS_HELP_STRING([--disable-Bsymbolic],
+ [avoid linking with -Bsymbolic])],,
+ [SAVED_LDFLAGS="${LDFLAGS}"
+ AC_MSG_CHECKING([for -Bsymbolic-functions linker flag])
+ LDFLAGS=-Wl,-Bsymbolic-functions
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[int main (void) { return 0; }]])],
+ [AC_MSG_RESULT(yes)
+ enable_Bsymbolic=yes],
+ [AC_MSG_RESULT(no)
+ enable_Bsymbolic=no])
+ LDFLAGS="${SAVED_LDFLAGS}"])
+
+if test "x${enable_Bsymbolic}" = "xyes"; then
+ EXTRA_LINK_FLAGS=-Wl,-Bsymbolic-functions
+fi
+AC_SUBST(EXTRA_LINK_FLAGS)
AC_CONFIG_FILES([
Makefile
-giscanner/config.py
-m4/Makefile
tests/Makefile
tests/offsets/Makefile
tests/scanner/Makefile
+tests/scanner/annotationparser/Makefile
tests/repository/Makefile
tests/warn/Makefile
docs/Makefile
docs/reference/Makefile
+docs/reference/version.xml
gobject-introspection-1.0.pc
-gobject-introspection-no-export-1.0.pc])
+gobject-introspection-no-export-1.0.pc
+config.h.win32
+build/Makefile
+build/win32/Makefile
+build/win32/vs9/Makefile
+build/win32/vs9/gi-version-paths.vsprops
+build/win32/vs10/Makefile
+build/win32/vs10/gi-version-paths.props
+build/win32/vs11/Makefile
+build/win32/vs12/Makefile
+build/win32/vs14/Makefile])
AC_OUTPUT