summaryrefslogtreecommitdiff
path: root/m4
diff options
context:
space:
mode:
authorRob Taylor <rob.taylor@codethink.co.uk>2008-02-08 18:09:05 +0000
committerRobert James Taylor <robtaylor@src.gnome.org>2008-02-08 18:09:05 +0000
commite2340a78cd657c2398f1076f6f0b87a3dca25540 (patch)
tree17395722d1bda95d39e4b543cd3739fe4314eeec /m4
parentb935261f387dffa2c7006fe1be04820004810e87 (diff)
downloadgobject-introspection-e2340a78cd657c2398f1076f6f0b87a3dca25540.tar.gz
Added:
2008-02-08 Rob Taylor <rob.taylor@codethink.co.uk> * Makefile.am: * configure.ac: * gcov.mak: Added: * girepository/Makefile.am: * m4/Makefile.am: Added: * m4/as-compiler-flag.m4: Added: * m4/gcov.m4: Added: * tools/Makefile.am: Add ability to generate a coverage report. Adds configure option --enable-gcov and make rule 'check-coverage'. svn path=/trunk/; revision=105
Diffstat (limited to 'm4')
-rw-r--r--m4/Makefile.am1
-rw-r--r--m4/as-compiler-flag.m433
-rw-r--r--m4/gcov.m447
3 files changed, 81 insertions, 0 deletions
diff --git a/m4/Makefile.am b/m4/Makefile.am
new file mode 100644
index 00000000..c2095e8f
--- /dev/null
+++ b/m4/Makefile.am
@@ -0,0 +1 @@
+EXTRA_DIST=gcov.m4 as-compiler.m4
diff --git a/m4/as-compiler-flag.m4 b/m4/as-compiler-flag.m4
new file mode 100644
index 00000000..aba31b1c
--- /dev/null
+++ b/m4/as-compiler-flag.m4
@@ -0,0 +1,33 @@
+dnl as-compiler-flag.m4 0.1.0
+
+dnl autostars m4 macro for detection of compiler flags
+
+dnl David Schleef <ds@schleef.org>
+
+dnl $Id: as-compiler-flag.m4,v 1.1 2004/06/01 09:33:45 thomasvs Exp $
+
+dnl AS_COMPILER_FLAG(CFLAGS, ACTION-IF-ACCEPTED, [ACTION-IF-NOT-ACCEPTED])
+dnl Tries to compile with the given CFLAGS.
+dnl Runs ACTION-IF-ACCEPTED if the compiler can compile with the flags,
+dnl and ACTION-IF-NOT-ACCEPTED otherwise.
+
+AC_DEFUN([AS_COMPILER_FLAG],
+[
+ AC_MSG_CHECKING([to see if compiler understands $1])
+
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $1"
+
+ AC_TRY_COMPILE([ ], [], [flag_ok=yes], [flag_ok=no])
+ CFLAGS="$save_CFLAGS"
+
+ if test "X$flag_ok" = Xyes ; then
+ $2
+ true
+ else
+ $3
+ true
+ fi
+ AC_MSG_RESULT([$flag_ok])
+])
+
diff --git a/m4/gcov.m4 b/m4/gcov.m4
new file mode 100644
index 00000000..c96eddac
--- /dev/null
+++ b/m4/gcov.m4
@@ -0,0 +1,47 @@
+AC_DEFUN([GI_ENABLE_GCOV],
+[
+ AC_ARG_ENABLE(gcov,
+ AC_HELP_STRING([--enable-gcov],
+ [compile with coverage profiling instrumentation (gcc only)]),
+ enable_gcov=$enableval,
+ enable_gcov=no)
+ if test x$enable_gcov = xyes ; then
+ if test "x$GCC" != "xyes"
+ then
+ AC_MSG_ERROR([gcov only works if gcc is used])
+ fi
+
+ AS_COMPILER_FLAG(["-fprofile-arcs"],
+ [GCOV_CFLAGS="$GCOV_CFLAGS -fprofile-arcs"],
+ true)
+ AS_COMPILER_FLAG(["-ftest-coverage"],
+ [GCOV_CFLAGS="$GCOV_CFLAGS -ftest-coverage"],
+ true)
+ dnl libtool 1.5.22 and lower strip -fprofile-arcs from the flags
+ dnl passed to the linker, which is a bug; -fprofile-arcs implicitly
+ dnl links in -lgcov, so we do it explicitly here for the same effect
+ GCOV_LIBS=-lgcov
+ AC_SUBST(GCOV_CFLAGS)
+ AC_SUBST(GCOV_LIBS)
+ GCOV=`echo $CC | sed s/gcc/gcov/g`
+ AC_SUBST(GCOV)
+
+ GI_GCOV_ENABLED=yes
+ AC_DEFINE_UNQUOTED(GI_GCOV_ENABLED, 1,
+ [Defined if gcov is enabled to force a rebuild due to config.h changing])
+ dnl if gcov is used, we do not want default -O2 CFLAGS
+ if test "x$GI_GCOV_ENABLED" = "xyes"
+ then
+ CFLAGS="-g -O0"
+ AC_SUBST(CFLAGS)
+ CXXFLAGS="-g -O0"
+ AC_SUBST(CXXFLAGS)
+ FFLAGS="-g -O0"
+ AC_SUBST(FFLAGS)
+ CCASFLAGS="-g -O0"
+ AC_SUBST(CCASFLAGS)
+ AC_MSG_NOTICE([gcov enabled, setting CFLAGS and friends to $CFLAGS])
+ fi
+ fi
+ AM_CONDITIONAL(GI_GCOV_ENABLED, test x$enable_gcov = xyes)
+])