summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2007-12-12 16:54:33 +0000
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2007-12-12 16:54:33 +0000
commit996c1b3e07f6c74aff4299c31f0d71b3226a46a9 (patch)
tree06d5806f733157f0e1a861cb8bb5f5e33f32fabc
parentc3050365d194debf6052d0f11118d68c8db60892 (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--_boring3
-rw-r--r--configure.ac18
-rw-r--r--m4/Makefile.am4
-rw-r--r--m4/compiler.m467
-rw-r--r--m4/linker.m473
-rw-r--r--telepathy-glib/Makefile.am3
-rw-r--r--tests/Makefile.am1
-rw-r--r--tests/dbus/Makefile.am1
8 files changed, 155 insertions, 15 deletions
diff --git a/_boring b/_boring
index 684808bca..9d023f589 100644
--- a/_boring
+++ b/_boring
@@ -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 = \