diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2007-12-12 16:54:33 +0000 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2007-12-12 16:54:33 +0000 |
commit | 996c1b3e07f6c74aff4299c31f0d71b3226a46a9 (patch) | |
tree | 06d5806f733157f0e1a861cb8bb5f5e33f32fabc | |
parent | c3050365d194debf6052d0f11118d68c8db60892 (diff) |
Add compiler.m4 and linker.m4 (MIT licensed, from libfshare) and use them for optionally disabling optimization, optionally enabling coverage, and version script detection
-rw-r--r-- | _boring | 3 | ||||
-rw-r--r-- | configure.ac | 18 | ||||
-rw-r--r-- | m4/Makefile.am | 4 | ||||
-rw-r--r-- | m4/compiler.m4 | 67 | ||||
-rw-r--r-- | m4/linker.m4 | 73 | ||||
-rw-r--r-- | telepathy-glib/Makefile.am | 3 | ||||
-rw-r--r-- | tests/Makefile.am | 1 | ||||
-rw-r--r-- | tests/dbus/Makefile.am | 1 |
8 files changed, 155 insertions, 15 deletions
@@ -57,6 +57,9 @@ (^|/).libs($|/) \.lo$ \.la$ +\.gcno$ +\.gcda$ +\.gcov$ \-glue.(c|h)$ \-marshal.(c|h)$ \-enumtypes.(c|h)$ diff --git a/configure.ac b/configure.ac index 9dfbf8924..cc53530f9 100644 --- a/configure.ac +++ b/configure.ac @@ -59,6 +59,12 @@ AC_SUBST([LT_CURRENT]) AC_SUBST([LT_REVISION]) AC_SUBST([LT_AGE]) +dnl optimizations, etc. +COMPILER_OPTIMISATIONS +COMPILER_COVERAGE +LINKER_OPTIMISATIONS +LINKER_VERSION_SCRIPT + dnl decide error flags AS_COMPILER_FLAG(-Wall, ERROR_CFLAGS="-Wall", ERROR_CFLAGS="") AS_COMPILER_FLAG(-Werror, werror=yes, werror=no) @@ -101,10 +107,6 @@ AC_ARG_ENABLE(backtrace, AC_HELP_STRING([--enable-backtrace],[enable printing out the backtrace in case of crash (in most GLib connection managers)]), enable_backtrace=$enableval, enable_backtrace=no ) -AC_ARG_ENABLE(coverage, - AC_HELP_STRING([--enable-coverage],[compile with coverage info]), - enable_coverage=$enableval, enable_coverage=no ) - ifelse(tp_glib_nano_version, 0, [ # tp-glib is version x.y.z - disable coding style checks by default AC_ARG_ENABLE(coding-style-checks, @@ -132,10 +134,6 @@ if test x$enable_backtrace = xyes; then AC_DEFINE(ENABLE_BACKTRACE, [], [Enable backtrace output on crashes]) fi -if test x$enable_coverage = xyes; then - COVERAGE_CFLAGS="-g -fprofile-arcs -ftest-coverage" -fi - AC_SUBST(HANDLE_LEAK_DEBUG_CFLAGS) AC_SUBST(COVERAGE_CFLAGS) @@ -193,9 +191,9 @@ AC_CHECK_FUNCS(signal) AC_CHECK_HEADERS(signal.h) HAVE_LD_VERSION_SCRIPT=no -[if ld --help | grep '[-]-version-script' >/dev/null; then +if test -n "$VERSION_SCRIPT_ARG"; then HAVE_LD_VERSION_SCRIPT=yes -fi] +fi AC_CHECK_PROGS([NM], [nm]) if test -z "$NM"; then HAVE_LD_VERSION_SCRIPT=no diff --git a/m4/Makefile.am b/m4/Makefile.am index 08aa0a1f3..a2a68e9f1 100644 --- a/m4/Makefile.am +++ b/m4/Makefile.am @@ -1,4 +1,6 @@ EXTRA_DIST = \ as-compiler-flag.m4 \ as-ac-expand.m4 \ -gtk-doc.m4 +compiler.m4 \ +gtk-doc.m4 \ +linker.m4 diff --git a/m4/compiler.m4 b/m4/compiler.m4 new file mode 100644 index 000000000..5aff5d819 --- /dev/null +++ b/m4/compiler.m4 @@ -0,0 +1,67 @@ +# compiler.m4 - autoconf macros for compiler settings +# +# Copyright © 2005 Scott James Remnant <scott@netsplit.com>. +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +# ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +# CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +# COMPILER_WARNINGS +# ---------------------- +# Add configure option to enable additional compiler warnings and treat +# them as errors. +AC_DEFUN([COMPILER_WARNINGS], +[AC_ARG_ENABLE(compiler-warnings, + AS_HELP_STRING([--enable-compiler-warnings], + [Enable additional compiler warnings]), +[if test "x$enable_compiler_warnings" = "xyes"; then + if test "x$GCC" = "xyes"; then + CFLAGS="-Wall -Werror $CFLAGS" + fi + if test "x$GXX" = "xyes"; then + CXXFLAGS="-Wall -Werror $CXXFLAGS" + fi +fi])dnl +])# COMPILER_WARNINGS + +# COMPILER_OPTIMISATIONS +# --------------------------- +# Add configure option to disable optimisations. +AC_DEFUN([COMPILER_OPTIMISATIONS], +[AC_ARG_ENABLE(compiler-optimisations, + AS_HELP_STRING([--disable-compiler-optimisations], + [Disable compiler optimisations]), +[if test "x$enable_compiler_optimisations" = "xno"; then + [CFLAGS=`echo "$CFLAGS" | sed -e "s/ -O[1-9]*\b/ -O0/g"`] +fi])dnl +])# COMPILER_OPTIMISATIONS + +# COMPILER_COVERAGE +# ---------------------- +# Add configure option to enable coverage data. +AC_DEFUN([COMPILER_COVERAGE], +[AC_ARG_ENABLE(compiler-coverage, + AS_HELP_STRING([--enable-compiler-coverage], + [Enable generation of coverage data]), +[if test "x$enable_compiler_coverage" = "xyes"; then + if test "x$GCC" = "xyes"; then + CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage" + fi +fi])dnl +])# COMPILER_COVERAGE diff --git a/m4/linker.m4 b/m4/linker.m4 new file mode 100644 index 000000000..8093cb88e --- /dev/null +++ b/m4/linker.m4 @@ -0,0 +1,73 @@ +# linker.m4 - autoconf macros for linker settings +# +# Copyright © 2005 Scott James Remnant <scott@netsplit.com>. +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +# ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +# CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +# LINKER_OPTIMISATIONS +# -------------------- +# Add configure option to disable linker optimisations. +AC_DEFUN([LINKER_OPTIMISATIONS], +[AC_ARG_ENABLE(linker-optimisations, + AS_HELP_STRING([--disable-linker-optimisations], + [Disable linker optimisations]), +[if test "x$enable_linker_optimisations" = "xno"; then + [LDFLAGS=`echo "$LDFLAGS" | sed -e "s/ -Wl,-O[0-9]*\b//g"`] +else + [LDFLAGS="$LDFLAGS -Wl,-O1"] +fi], [LDFLAGS="$LDFLAGS -Wl,-O1"])dnl +])# LINKER_OPTIMISATIONS + +# LINKER_VERSION_SCRIPT +# -------------------------- +# Detect whether the linker supports version scripts +AC_DEFUN([LINKER_VERSION_SCRIPT], +[AC_MSG_CHECKING([for linker version script argument]) +for aranha_try_arg in "-Wl,--version-script"; do + aranha_old_libs="$LIBS" + LIBS="$LIBS $aranha_try_arg=conftest.ver" + + cat >conftest.ver <<EOF +TEST { + global: + *; +}; +EOF + + AC_TRY_LINK([], [], [ + rm -f conftest.ver + LIBS="$aranha_old_libs" + + AC_MSG_RESULT([$aranha_try_arg]) + AC_SUBST(VERSION_SCRIPT_ARG, [$aranha_try_arg]) + break + ]) + + rm -f conftest.ver + LIBS="$aranha_old_libs" +done + +AM_CONDITIONAL(HAVE_VERSION_SCRIPT_ARG, [test -n "$VERSION_SCRIPT_ARG"]) +if test -z "$VERSION_SCRIPT_ARG"; then + AC_MSG_RESULT([unknown]) +fi +])dnl +])# LINKER_VERSION_SCRIPT diff --git a/telepathy-glib/Makefile.am b/telepathy-glib/Makefile.am index 4d07b10d1..4c8077889 100644 --- a/telepathy-glib/Makefile.am +++ b/telepathy-glib/Makefile.am @@ -43,7 +43,7 @@ _gen/versioned-abi.txt: version-script.txt Makefile.am sort -u < $@.tmp > $@ libtelepathy_glib_la_LDFLAGS += \ - -Wl,--version-script=$(srcdir)/version-script.txt + $(VERSION_SCRIPT_ARG)=$(srcdir)/version-script.txt else # !HAVE_LD_VERSION_SCRIPT @@ -189,7 +189,6 @@ AM_CFLAGS = \ @DBUS_CFLAGS@ \ @GLIB_CFLAGS@ \ @HANDLE_LEAK_DEBUG_CFLAGS@ \ - @COVERAGE_CFLAGS@ \ -I$(top_builddir) \ -I$(top_srcdir) diff --git a/tests/Makefile.am b/tests/Makefile.am index 7bef8c40c..ee3c81644 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -48,5 +48,4 @@ AM_CFLAGS = \ $(ERROR_CFLAGS) \ $(DBUS_CFLAGS) \ $(GLIB_CFLAGS) \ - $(COVERAGE_CFLAGS) \ $(TP_GLIB_CFLAGS) diff --git a/tests/dbus/Makefile.am b/tests/dbus/Makefile.am index bd0b65f22..cbd0babeb 100644 --- a/tests/dbus/Makefile.am +++ b/tests/dbus/Makefile.am @@ -18,7 +18,6 @@ AM_CFLAGS = \ $(ERROR_CFLAGS) \ $(DBUS_CFLAGS) \ $(GLIB_CFLAGS) \ - $(COVERAGE_CFLAGS) \ $(TP_GLIB_CFLAGS) TESTS_ENVIRONMENT = \ |