From 0091d5f0c20f95c556e0715408976736daad5916 Mon Sep 17 00:00:00 2001 From: Sebastian Harl Date: Sat, 28 Jun 2014 10:07:55 +0200 Subject: [PATCH] build system: Added --enable-gprof configure flag. --- configure.ac | 39 +++++++++++++++++++++++++++++++++++++++ src/Makefile.am | 10 ++++++---- 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index 5f77802..b94b2a0 100644 --- a/configure.ac +++ b/configure.ac @@ -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]) diff --git a/src/Makefile.am b/src/Makefile.am index d851492..686827b 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -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 \ -- 2.30.2