summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Nicholson <dbn.lists@gmail.com>2012-03-22 14:51:30 -0700
committerDan Nicholson <dbn.lists@gmail.com>2012-04-21 12:46:32 -0700
commitc74da521af566bc208ff9a2da3e43634817f73d5 (patch)
tree1a0007aa2533b1c7b51cdff5647bbe3e29711342
parent75755ba614e2b7f014fe33c619867b58a9c55598 (diff)
Use a bundled glib2 to avoid circular dependency
It's nice to say that glib is a base library and you should have it installed to build pkg-config, but it makes bootstrapping pkg-config really annoying since it introduces a circular dependency. Let's be nice to our users and bundle a copy to avoid this situation. The default is still to use the system's glib, but the internal copy can be used by passing --with-internal-glib to configure. The latest stable copy of glib is included and will be updated periodically with their stable releases. The top level autogen.sh is running recursively through glib. If this becomes an issue, we can switch autoreconf to --no-recursive and then descend to glib and run its autogen.sh script. Since this is default off, its integration will probably not be tested often. Therefore, it's forcefully turned on during distcheck to make sure to test it out before distributing a tarball.
-rw-r--r--Makefile.am6
-rw-r--r--configure.ac27
2 files changed, 26 insertions, 7 deletions
diff --git a/Makefile.am b/Makefile.am
index 49c047b..082b03d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,2 +2,6 @@ pkg_config_LDADD=@GLIB_LIBS@
+if INTERNAL_GLIB
+GLIB_SUBDIR = glib
+endif
+
if USE_INSTALLED_POPT
@@ -45,2 +49,2 @@ pkg_config_SOURCES= \
main.c
-DISTCHECK_CONFIGURE_FLAGS = --with-installed-popt \ No newline at end of file
+DISTCHECK_CONFIGURE_FLAGS = --with-installed-popt --with-internal-glib
diff --git a/configure.ac b/configure.ac
index b0faf63..b730834 100644
--- a/configure.ac
+++ b/configure.ac
@@ -119,10 +119,25 @@ AM_CONDITIONAL(NATIVE_WIN32, [test "x$native_win32" = xyes])
-if test "x$GLIB_CFLAGS" = "x" && test "x$GLIB_LIBS" = "x"; then
- AC_CHECK_PROGS([PKG_CONFIG], [pkg-config], [])
- if test -n $PKG_CONFIG && $PKG_CONFIG --exists glib-2.0; then
+AC_ARG_WITH([internal-glib],
+ [AS_HELP_STRING([--with-internal-glib], [use internal glib])],
+ [with_internal_glib="$withval"],
+ [with_internal_glib=no])
+AM_CONDITIONAL([INTERNAL_GLIB], [test "x$with_internal_glib" = xyes])
+if test "x$with_internal_glib" = xyes; then
+ GLIB_CFLAGS='-I$(top_srcdir)/glib -I$(top_srcdir)/glib/glib \
+ -I$(top_builddir)/glib/glib'
+ GLIB_LIBS='$(top_builddir)/glib/glib/libglib-2.0.la'
+ AC_CONFIG_SUBDIRS([glib])
+else
+ if test "x$GLIB_CFLAGS" = "x" && test "x$GLIB_LIBS" = "x"; then
+ AC_CHECK_PROGS([PKG_CONFIG], [pkg-config], [])
+ if test -n $PKG_CONFIG && $PKG_CONFIG --exists glib-2.0; then
GLIB_CFLAGS=`$PKG_CONFIG --cflags glib-2.0`
GLIB_LIBS=`$PKG_CONFIG --libs glib-2.0`
- else
- AC_MSG_ERROR([pkg-config and glib-2.0 not found, please set GLIB_CFLAGS and GLIB_LIBS to the correct values])
- fi
+ else
+ AC_MSG_ERROR(m4_normalize([pkg-config and glib-2.0 not found, please set
+ GLIB_CFLAGS and GLIB_LIBS to the correct
+ values or pass --with-internal-glib to
+ configure]))
+ fi
+ fi
fi