Code

build system: Added --enable-gprof configure flag.
authorSebastian Harl <sh@tokkee.org>
Sat, 28 Jun 2014 08:07:55 +0000 (10:07 +0200)
committerSebastian Harl <sh@tokkee.org>
Sat, 28 Jun 2014 08:07:55 +0000 (10:07 +0200)
configure.ac
src/Makefile.am

index 5f778027b601b44d25473a1bae31d88c24db816a..b94b2a0e0fca679d3f55f697649f177d39e64e51 100644 (file)
@@ -248,6 +248,44 @@ fi; fi
 AC_SUBST([COVERAGE_CFLAGS])
 AC_SUBST([COVERAGE_LDFLAGS])
 
+AC_ARG_ENABLE([gprof],
+               AS_HELP_STRING([--enable-gprof],
+                               [Gprof profiling @<:@default=no@:>@]),
+               [enable_gprof="$enableval"],
+               [enable_gprof="no"])
+
+PROFILING_CFLAGS=""
+PROFILING_LDFLAGS=""
+if test "x$enable_gprof" = "xyes"; then
+       PROFILING_CFLAGS="-O0"
+       profiling_flag_have_problem="no"
+
+       AC_MSG_CHECKING([whether $CC accepts -pg])
+       if test_cc_flags -pg; then
+               PROFILING_CFLAGS="$PROFILING_CFLAGS -pg"
+               PROFILING_LDFLAGS="$PROFILING_LDFLAGS -pg"
+               AC_MSG_RESULT([yes])
+       else
+               AC_MSG_RESULT([no])
+               profiling_flag_have_problem="yes"
+       fi
+
+       for flag in -fprofile-arcs; do
+               AC_MSG_CHECKING([whether $CC accepts $flag])
+               if test_cc_flags $flag; then
+                       PROFILING_CFLAGS="$PROFILING_CFLAGS $flag"
+                       AC_MSG_RESULT([yes])
+               fi
+               # else: this is not a serious problem
+       done
+
+       if test "x$profiling_flag_have_problem" != "xno"; then
+               AC_MSG_WARN([Some profiling flags are not supported by your compiler!])
+       fi
+fi
+AC_SUBST([PROFILING_CFLAGS])
+AC_SUBST([PROFILING_LDFLAGS])
+
 m4_divert_once([HELP_ENABLE], [
 Build dependencies:])
 
@@ -454,6 +492,7 @@ AC_MSG_RESULT([    unit testing: . . . . . . . $unit_tests])
 AC_MSG_RESULT([      stdio mocking:  . . . . . $have_fopencookie])
 AC_MSG_RESULT([    coverage testing: . . . . . $enable_gcov])
 AC_MSG_RESULT([    integration testing:  . . . $integration_tests])
+AC_MSG_RESULT([    profiling:  . . . . . . . . $enable_gprof])
 AC_MSG_RESULT()
 AC_MSG_RESULT([  Libraries:])
 AC_MSG_RESULT([    libdbi: . . . . . . . . . . $with_libdbi])
index d851492580b9d4620b272e2a76d96254a8936cf4..686827b5a470ca2a8f5af18cd39c3832219f928e 100644 (file)
@@ -1,8 +1,8 @@
 SUBDIRS = liboconfig
 
 # coverage related flags are only set when gcov is enabled
-AM_CFLAGS = @STRICT_CFLAGS@ @COVERAGE_CFLAGS@
-AM_LDFLAGS = @COVERAGE_LDFLAGS@
+AM_CFLAGS = @STRICT_CFLAGS@ @COVERAGE_CFLAGS@ @PROFILING_CFLAGS@
+AM_LDFLAGS = @COVERAGE_LDFLAGS@ @PROFILING_LDFLAGS@
 AM_CPPFLAGS  = -I"${top_srcdir}/src/include"
 AM_CPPFLAGS += -DSYSCONFDIR='"${sysconfdir}"'
 AM_CPPFLAGS += -DLOCALSTATEDIR='"${localstatedir}"'
@@ -60,7 +60,8 @@ libsysdbclient_la_LIBADD = $(LIBLTDL)
 noinst_LTLIBRARIES += libsysdb_fe_parser.la
 libsysdb_fe_parser_la_SOURCES = \
                frontend/grammar.y frontend/scanner.l
-libsysdb_fe_parser_la_CFLAGS = -DBUILD_DATE="\"$$( date --utc '+%F %T' ) (UTC)\""
+libsysdb_fe_parser_la_CFLAGS = @COVERAGE_CFLAGS@ @PROFILING_CFLAGS@ \
+               -DBUILD_DATE="\"$$( date --utc '+%F %T' ) (UTC)\""
 libsysdb_la_SOURCES = \
                sysdb.c include/sysdb.h \
                core/object.c include/core/object.h \
@@ -102,7 +103,8 @@ bin_PROGRAMS += sysdb
 # don't use strict CFLAGS for flex code
 noinst_LTLIBRARIES += libsysdb_scanner.la
 libsysdb_scanner_la_SOURCES = tools/sysdb/scanner.l
-libsysdb_scanner_la_CFLAGS = -DBUILD_DATE="\"$$( date --utc '+%F %T' ) (UTC)\""
+libsysdb_scanner_la_CFLAGS = @COVERAGE_CFLAGS@ @PROFILING_CFLAGS@ \
+               -DBUILD_DATE="\"$$( date --utc '+%F %T' ) (UTC)\""
 sysdb_SOURCES = tools/sysdb/main.c include/client/sysdb.h \
                tools/sysdb/command.c tools/sysdb/command.h \
                tools/sysdb/input.c tools/sysdb/input.h \