Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/acinclude.m4
diff options
context:
space:
mode:
authorBruno Coudoin <bcoudoin@src.gnome.org>2006-08-13 23:57:04 (GMT)
committer Bruno Coudoin <bcoudoin@src.gnome.org>2006-08-13 23:57:04 (GMT)
commit2cba2a20e2bfea4e82758f13bbe0d07f05798c8b (patch)
tree82cc2d84f34105681ec82314c04303f1e9c75eef /acinclude.m4
parent83d9f62c2022f18b514b8730288d55050d08ae83 (diff)
- Added support for relocation using http://autopackage.org/docs/binreloc/
(Needed to create an autopackage installer) Now GCompris will detect at runtime where it is installed and find it's data. As a fallback, default set at compile time are used (like before). To disable is, use sh configure --disable-binreloc Very usefull for developers, you can now run gcompris from within it's source code without even installing it !. The new code detect that and set the data dir accordingly. Warning, developers must no more use the PACKAGE_DATA_DIR define but must get the data dir always from the property object like this: GcomprisProperties *properties = gcompris_get_properties(); properties->package_xxx_dir contains the root data directory, like: package_data_dir = /usr/local/share/gcompris/boards package_locale_dir = /usr/local/share/locale package_plugin_dir = /usr/local/lib/gcompris package_python_plugin_dir= /usr/local/share/gcompris/python
Diffstat (limited to 'acinclude.m4')
-rw-r--r--acinclude.m478
1 files changed, 78 insertions, 0 deletions
diff --git a/acinclude.m4 b/acinclude.m4
index 9f2cf1b..a351e4d 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -92,3 +92,81 @@ case " $CFLAGS " in
fi
;;
esac])
+
+# Check for binary relocation support.
+# Written by Hongli Lai
+# http://autopackage.org/
+
+AC_DEFUN([AM_BINRELOC],
+[
+ AC_ARG_ENABLE(binreloc,
+ [ --enable-binreloc compile with binary relocation support
+ (default=enable when available)],
+ enable_binreloc=$enableval,enable_binreloc=auto)
+
+ AC_ARG_ENABLE(binreloc-threads,
+ [ --enable-binreloc-threads compile binary relocation with threads support
+ (default=yes)],
+ enable_binreloc_threads=$enableval,enable_binreloc_threads=yes)
+
+ BINRELOC_CFLAGS=
+ BINRELOC_LIBS=
+ if test "x$enable_binreloc" = "xauto"; then
+ AC_CHECK_FILE([/proc/self/maps])
+ AC_CACHE_CHECK([whether everything is installed to the same prefix],
+ [br_cv_valid_prefixes], [
+ if test "$bindir" = '${exec_prefix}/bin' -a "$sbindir" = '${exec_prefix}/sbin' -a \
+ "$datadir" = '${prefix}/share' -a "$libdir" = '${exec_prefix}/lib' -a \
+ "$libexecdir" = '${exec_prefix}/libexec' -a "$sysconfdir" = '${prefix}/etc'
+ then
+ br_cv_valid_prefixes=yes
+ else
+ br_cv_valid_prefixes=no
+ fi
+ ])
+ fi
+ AC_CACHE_CHECK([whether binary relocation support should be enabled],
+ [br_cv_binreloc],
+ [if test "x$enable_binreloc" = "xyes"; then
+ br_cv_binreloc=yes
+ elif test "x$enable_binreloc" = "xauto"; then
+ if test "x$br_cv_valid_prefixes" = "xyes" -a \
+ "x$ac_cv_file__proc_self_maps" = "xyes"; then
+ br_cv_binreloc=yes
+ else
+ br_cv_binreloc=no
+ fi
+ else
+ br_cv_binreloc=no
+ fi])
+
+ if test "x$br_cv_binreloc" = "xyes"; then
+ BINRELOC_CFLAGS="-DENABLE_BINRELOC"
+ AC_DEFINE(ENABLE_BINRELOC,,[Use binary relocation?])
+ if test "x$enable_binreloc_threads" = "xyes"; then
+ AC_CHECK_LIB([pthread], [pthread_getspecific])
+ fi
+
+ AC_CACHE_CHECK([whether binary relocation should use threads],
+ [br_cv_binreloc_threads],
+ [if test "x$enable_binreloc_threads" = "xyes"; then
+ if test "x$ac_cv_lib_pthread_pthread_getspecific" = "xyes"; then
+ br_cv_binreloc_threads=yes
+ else
+ br_cv_binreloc_threads=no
+ fi
+ else
+ br_cv_binreloc_threads=no
+ fi])
+
+ if test "x$br_cv_binreloc_threads" = "xyes"; then
+ BINRELOC_LIBS="-lpthread"
+ AC_DEFINE(BR_PTHREAD,1,[Include pthread support for binary relocation?])
+ else
+ BINRELOC_CFLAGS="$BINRELOC_CFLAGS -DBR_PTHREADS=0"
+ AC_DEFINE(BR_PTHREAD,0,[Include pthread support for binary relocation?])
+ fi
+ fi
+ AC_SUBST(BINRELOC_CFLAGS)
+ AC_SUBST(BINRELOC_LIBS)
+])