From: Liu Yuan <tailai.ly at taobao.com> Signed-off-by: Liu Yuan <tailai.ly at taobao.com> --- configure.ac | 30 ++++++++++++++++++++++++++++-- sheep/Makefile.am | 6 +++++- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index bfad873..db7f043 100644 --- a/configure.ac +++ b/configure.ac @@ -66,6 +66,7 @@ if ! ${MAKE-make} --version /cannot/make/this >/dev/null 2>&1; then fi AC_PROG_CC +AM_PROG_AS AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET @@ -202,6 +203,11 @@ AC_ARG_ENABLE([farm], [ enable_farm="yes" ],) AM_CONDITIONAL(BUILD_FARM, test x$enable_farm = xyes) +AC_ARG_ENABLE([trace], + [ --enable-trace : enable trace],, + [ enable_trace="no" ],) +AM_CONDITIONAL(BUILD_TRACE, test x$enable_trace = xyes) + CP=cp OS_LDL="-ldl" case "$host_os" in @@ -272,6 +278,13 @@ if test "x${enable_farm}" = xyes; then PACKAGE_FEATURES="$PACKAGE_FEATURES farm" fi +if test "x${enable_trace}" = xyes; then + AC_CHECK_LIB([rt], [clock_gettime],, + AC_MSG_ERROR(librt not found)) + AC_DEFINE_UNQUOTED([HAVE_TRACE], 1, [have trace]) + PACKAGE_FEATURES="$PACKAGE_FEATURES trace" +fi + # extra warnings EXTRA_WARNINGS="" @@ -325,11 +338,23 @@ else WERROR_CFLAGS="" fi +if test "x${enable_trace}" = xyes && \ + cc_supports_flag -pg && \ + cc_supports_flag -gstabs ; then + AC_MSG_NOTICE([Enabling trace (-pg -gstabs)]) + TRACE_CFLAGS="-pg -gstabs" + TRACE_LDFLAGS="-T$(pwd)/sheep/trace/trace.ld" + PACKAGE_FEATURES="$PACKAGE_FEATURES trace" +else + TRACE_CFLAGS="" +fi + # final build of *FLAGS CFLAGS="$ENV_CFLAGS $OPT_CFLAGS $GDB_FLAGS $OS_CFLAGS \ - $COVERAGE_CFLAGS $EXTRA_WARNINGS $WERROR_CFLAGS $NSS_CFLAGS -D_GNU_SOURCE" + $TRACE_CFLAGS $COVERAGE_CFLAGS $EXTRA_WARNINGS $WERROR_CFLAGS $NSS_CFLAGS \ + -D_GNU_SOURCE" CPPFLAGS="$ENV_CPPFLAGS $ANSI_CPPFLAGS $OS_CPPFLAGS" -LDFLAGS="$ENV_LDFLAGS $COVERAGE_LDFLAGS $OS_LDFLAGS" +LDFLAGS="$ENV_LDFLAGS $COVERAGE_LDFLAGS $OS_LDFLAGS $TRACE_LDFLAGS" # substitute what we need: AC_SUBST([OS_DYFLAGS]) @@ -383,6 +408,7 @@ AC_MSG_RESULT([ ANSI defined CPPFLAGS = ${ANSI_CPPFLAGS}]) AC_MSG_RESULT([ Coverage CFLAGS = ${COVERAGE_CFLAGS}]) AC_MSG_RESULT([ Coverage LDFLAGS = ${COVERAGE_LDFLAGS}]) AC_MSG_RESULT([ Fatal War. CFLAGS = ${WERROR_CFLAGS}]) +AC_MSG_RESULT([ Trace CFLAGS = ${TRACE_CFLAGS}]) AC_MSG_RESULT([ Final CFLAGS = ${CFLAGS}]) AC_MSG_RESULT([ Final CPPFLAGS = ${CPPFLAGS}]) AC_MSG_RESULT([ Final LDFLAGS = ${LDFLAGS}]) diff --git a/sheep/Makefile.am b/sheep/Makefile.am index af4e9cc..6c80e27 100644 --- a/sheep/Makefile.am +++ b/sheep/Makefile.am @@ -40,12 +40,16 @@ if BUILD_FARM sheep_SOURCES += farm/sha1_file.c farm/trunk.c farm/snap.c farm/farm.c endif +if BUILD_TRACE +sheep_SOURCES += trace/trace.c trace/mcount.S trace/stabs.c trace/graph.c +endif + sheep_LDADD = ../lib/libsheepdog.a -lpthread \ $(libcpg_LIBS) $(libcfg_LIBS) $(libacrd_LIBS) $(LIBS) sheep_DEPENDENCIES = ../lib/libsheepdog.a -noinst_HEADERS = work.h sheep_priv.h cluster.h strbuf.h farm/farm.h +noinst_HEADERS = work.h sheep_priv.h cluster.h strbuf.h farm/farm.h trace/trace.h EXTRA_DIST = -- 1.7.8.2 |