X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=configure.ac;h=6166b25a0bc60a805ed60fa24d966ccb69f86d5c;hp=0da5a04e4f79b83c56c77be4f719d390ccc07de7;hb=8f141dbdf7c4628c13d7b099240a7bd4bcacf2cf;hpb=e971184584781f70bbbfc52bbede8b9abf0436e5 diff --git a/configure.ac b/configure.ac index 0da5a04e4..6166b25a0 100644 --- a/configure.ac +++ b/configure.ac @@ -15,46 +15,118 @@ AM_MAINTAINER_MODE([enable]) # Enable silent rules if available (Introduced in AM 1.11) m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) -# Checks for C compiler -AC_USE_SYSTEM_EXTENSIONS -AC_SYS_LARGEFILE + +## ## +## C compiler checks ## +## ## + +# Choose the C compiler AC_PROG_CC # AC_PROG_CC_STDC was merged in AC_PROG_CC in autoconf 2.70 m4_version_prereq([2.70], [], [AC_PROG_CC_STDC]) -AC_PROG_CXX -RW_PROG_CXX_WORKS -AM_CONDITIONAL([CXX_WORKS], [test "x$rw_cv_prog_cxx_works" = "xyes"]) -# Detect warning flags supported by the compiler, append them to WARN_CFLAGS. +# Make sure the C compiler supports C99 +AS_IF([test "$ac_cv_prog_cc_c99" = "no"], [AC_MSG_ERROR([The compiler does not support C99])]) + +# Enable available system extensions and LFS support +AC_USE_SYSTEM_EXTENSIONS +AC_SYS_LARGEFILE + +# Make sure the C compiler supports __attribute__ +AX_C___ATTRIBUTE__ +AS_IF([test "x$ax_cv___attribute__" != "xyes"], + [AC_MSG_ERROR([The compiler does not support __attribute__ extensions])]) + +# Make sure we have pthread support +AX_PTHREAD([], [AC_MSG_ERROR([Could not configure pthread support])]) + +# Checks for typedefs, structures, and compiler characteristics. +AC_C_INLINE +AC_TYPE_INT32_T +AC_TYPE_INT64_T +AC_TYPE_MODE_T +AC_TYPE_OFF_T +AC_TYPE_PID_T +AC_TYPE_SIZE_T +AC_TYPE_SSIZE_T +AC_TYPE_UID_T +AC_TYPE_UINT16_T +AC_TYPE_UINT32_T +AC_TYPE_UINT64_T +AC_TYPE_UINT8_T + +# Detect warning flags supported by the C and C++ compilers and append them to +# WARN_CFLAGS and WARN_CXXFLAGS. +m4_define([WARN_FLAGS_LIST], [ dnl + -Wall dnl + dnl We currently get this warning when building with Clang: + dnl + dnl /usr/include/setjmp.h:54:12: error: declaration of built-in function '__sigsetjmp' requires the declaration of the 'jmp_buf' type, commonly provided in the header . [-Werror,-Wincomplete-setjmp-declaration] + dnl extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) __THROWNL; + dnl ^ + -Wno-incomplete-setjmp-declaration dnl + -Wdiscarded-qualifiers dnl + -Wmissing-declarations dnl + -Wmissing-prototypes dnl + -Wmissing-parameter-type dnl + -Wshadow dnl + -Wno-gnu-folding-constant dnl + -Wsuggest-attribute=format dnl + -Wformat=2 dnl + dnl GCC enables this with -Wall in C++, and that generates a + dnl lot of warnings that have on average a low value to fix. + -Wno-sign-compare dnl +]) + +# Pass -Werror as an extra flag during the test: this is needed to make the +# -Wunknown-warning-option diagnostic fatal with clang. +AC_LANG_PUSH([C]) +AX_APPEND_COMPILE_FLAGS([WARN_FLAGS_LIST], [WARN_CFLAGS], [-Werror]) +AC_LANG_POP([C]) + +# The test used in AX_APPEND_COMPILE_FLAGS, generated using AC_LANG_PROGRAM, is +# written in such a way that it triggers warnings with the following warning +# flags. So they would always end up disabled if we put them there, because +# the test program would not build. # +# Enable them here unconditionally. They are supported by GCC >= 4.8 and by +# Clang >= 3.3 (required by the project) and are only valid for C code. +WARN_CFLAGS="${WARN_CFLAGS} -Wold-style-definition -Wstrict-prototypes" + +# Disable 'strict aliasing' if the C compiler supports it. +AC_LANG_PUSH([C]) +AX_APPEND_COMPILE_FLAGS([-fno-strict-aliasing], [OPT_CFLAGS], [-Werror]) +AC_LANG_POP([C]) + + +## ## +## C++ compiler checks ## +## ## + +# Find a C++11 compiler with GNU extensions (-std=gnu++11) +AX_CXX_COMPILE_STDCXX([11], [ext], [mandatory]) + # Pass -Werror as an extra flag during the test: this is needed to make the # -Wunknown-warning-option diagnostic fatal with clang. -AX_APPEND_COMPILE_FLAGS([ dnl - -Wall dnl - dnl We currently get this warning when building with Clang: - dnl - dnl /usr/include/setjmp.h:54:12: error: declaration of built-in function '__sigsetjmp' requires the declaration of the 'jmp_buf' type, commonly provided in the header . [-Werror,-Wincomplete-setjmp-declaration] - dnl extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) __THROWNL; - dnl ^ - -Wno-incomplete-setjmp-declaration dnl - -Wdiscarded-qualifiers dnl - -Wmissing-declarations dnl - -Wmissing-prototypes dnl - -Wmissing-parameter-type dnl - -Wold-style-definition dnl - -Wstrict-prototypes dnl - -Wshadow dnl - ], - [WARN_CFLAGS], - [-Werror]) - -# When given, add -Werror to WARN_CFLAGS. -AC_ARG_ENABLE([Werror], - [AS_HELP_STRING([--enable-Werror], [Treat compiler warnings as errors.])] -) -AS_IF([test "x$enable_Werror" = "xyes"], - [WARN_CFLAGS="${WARN_CFLAGS} -Werror"] -) +AC_LANG_PUSH([C++]) +AX_APPEND_COMPILE_FLAGS([WARN_FLAGS_LIST], [WARN_CXXFLAGS], [-Werror]) +AC_LANG_POP([C++]) + +# Disable 'strict aliasing' if the C++ compiler supports it. +AC_LANG_PUSH([C++]) +AX_APPEND_COMPILE_FLAGS([-fno-strict-aliasing], [OPT_CXXFLAGS], [-Werror]) +AC_LANG_POP([C++]) + + +# When given, add -Werror to WARN_CFLAGS and WARN_CXXFLAGS. +AC_ARG_ENABLE([Werror],[ + AS_HELP_STRING([--enable-Werror], [Treat compiler warnings as errors.]) +]) + +AS_IF([test "x$enable_Werror" = "xyes"], [ + WARN_CFLAGS="${WARN_CFLAGS} -Werror" + WARN_CXXFLAGS="${WARN_CXXFLAGS} -Werror" +]) # Checks for programs. AC_PROG_GREP @@ -126,27 +198,6 @@ detection. AM_CONDITIONAL([HAVE_FLEX], [test "x$have_flex" = "xyes"]) -# Checks for typedefs, structures, and compiler characteristics. -AC_C_INLINE -AC_TYPE_INT32_T -AC_TYPE_INT64_T -AC_TYPE_MODE_T -AC_TYPE_OFF_T -AC_TYPE_PID_T -AC_TYPE_SIZE_T -AC_TYPE_SSIZE_T -AC_TYPE_UID_T -AC_TYPE_UINT16_T -AC_TYPE_UINT32_T -AC_TYPE_UINT64_T -AC_TYPE_UINT8_T - -AX_C___ATTRIBUTE__ -AS_IF([test "x$ax_cv___attribute__" = "xyes"], - [:], - [AC_MSG_ERROR([The compiler does not support __attribute__ extensions])]) - -AX_PTHREAD(,[AC_MSG_ERROR([Could not configure pthreads support])]) # Check if linker has the -no-pie option. AX_CHECK_LINK_FLAG([-no-pie], [linker_have_no_pie_option=yes]) @@ -204,7 +255,7 @@ AS_IF([test "x$libtool_fixup" = "xyes"], [ libtool_m4="$srcdir/m4/libtool.m4" libtool_flag_pattern=".*link_all_deplibs\s*,\s*\$1\s*)" - AC_MSG_CHECKING([for occurence(s) of link_all_deplibs = no in $libtool_m4]) + AC_MSG_CHECKING([for occurrence(s) of link_all_deplibs = no in $libtool_m4]) libtool_flag_pattern_count=$($GREP -c "$libtool_flag_pattern\s*=\s*no" $libtool_m4) AS_IF([test $libtool_flag_pattern_count -ne 0], [ @@ -487,7 +538,6 @@ AC_CHECK_FUNC([clock_gettime], [AC_DEFINE_UNQUOTED([LTTNG_HAVE_CLOCK_GETTIME], 1 # URCU library version needed or newer PKG_CHECK_MODULES([URCU], [liburcu >= 0.11]) -PKG_CHECK_MODULES([URCU_BP], [liburcu-bp >= 0.11]) PKG_CHECK_MODULES([URCU_CDS], [liburcu-cds >= 0.11]) AM_CPPFLAGS="$AM_CPPFLAGS $URCU_CFLAGS" @@ -903,7 +953,6 @@ AS_IF([test x$enable_bin_lttng_crash != xno], AS_IF([test x$enable_bin_lttng_relayd != xno], [ - build_lib_lttng_ctl=yes build_lib_sessiond_comm=yes build_lib_index=yes build_lib_health=yes @@ -1037,9 +1086,12 @@ AM_CONDITIONAL([BUILD_LIB_SESSIOND_COMM], [test x$build_lib_sessiond_comm = xyes AM_CONDITIONAL([BUILD_LIB_TESTPOINT], [test x$build_lib_testpoint = xyes]) AM_CONDITIONAL([BUILD_LIB_UST_CONSUMER], [test x$build_lib_ust_consumer = xyes]) -AM_CFLAGS="${WARN_CFLAGS} -fno-strict-aliasing $PTHREAD_CFLAGS" +AM_CFLAGS="-fvisibility=hidden $OPT_CFLAGS $WARN_CFLAGS $PTHREAD_CFLAGS" AC_SUBST(AM_CFLAGS) +AM_CXXFLAGS="-fvisibility=hidden -fvisibility-inlines-hidden $OPT_CXXFLAGS $WARN_CXXFLAGS $PTHREAD_CFLAGS" +AC_SUBST(AM_CXXFLAGS) + # This is set even though it is empty, so Makefiles can do "AM_LDFLAGS += ...". AM_LDFLAGS="" AC_SUBST(AM_LDFLAGS) @@ -1091,6 +1143,7 @@ AC_CONFIG_FILES([ src/Makefile src/common/Makefile src/common/argpar/Makefile + src/common/argpar-utils/Makefile src/common/bytecode/Makefile src/common/kernel-ctl/Makefile src/common/kernel-consumer/Makefile @@ -1104,6 +1157,7 @@ AC_CONFIG_FILES([ src/common/index/Makefile src/common/health/Makefile src/common/config/Makefile + src/common/ini-config/Makefile src/common/string-utils/Makefile src/common/fd-tracker/Makefile src/common/filter/Makefile @@ -1151,6 +1205,7 @@ AC_CONFIG_FILES([ tests/regression/tools/trigger/start-stop/Makefile tests/regression/tools/trigger/utils/Makefile tests/regression/tools/trigger/name/Makefile + tests/regression/tools/trigger/hidden/Makefile tests/regression/ust/Makefile tests/regression/ust/nprocesses/Makefile tests/regression/ust/high-throughput/Makefile @@ -1197,6 +1252,7 @@ AC_CONFIG_FILES([ tests/utils/testapp/userspace-probe-elf-binary/Makefile tests/utils/testapp/userspace-probe-elf-cxx-binary/Makefile tests/utils/testapp/userspace-probe-sdt-binary/Makefile + tests/utils/xml-utils/Makefile ]) # Inject variable into python test script. @@ -1297,9 +1353,9 @@ PPRINT_PROP_BOOL([LTTng-UST Python2 agent tests], $value) test ! -z "$PYTHON3_AGENT" && value=1 || value=0 PPRINT_PROP_BOOL([LTTng-UST Python3 agent tests], $value) -# LTTng UST Java agent Log4j tests enabled/disabled +# userspace-probe SDT instrumentation tests enabled/disabled test "x$test_sdt_uprobe" = "xyes" && value=1 || value=0 -PPRINT_PROP_BOOL([LTTng-UST SDT uprobe tests], $value) +PPRINT_PROP_BOOL([LTTng-modules SDT uprobe tests], $value) #Python binding enabled/disabled test "x$enable_python_binding" = xyes && value=1 || value=0