X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=configure.ac;h=961e87c72289ee27cb3e314a868750746bbb1f0e;hp=8c7dec29bc236e443d00ff66870b1606530e9a8e;hb=c09b8e7b887f3f78c3febe9fc65515369172ff09;hpb=1c482ed8da42029e59b4258c86739e5c046be600 diff --git a/configure.ac b/configure.ac index 8c7dec29..961e87c7 100644 --- a/configure.ac +++ b/configure.ac @@ -69,7 +69,7 @@ AS_CASE([$host_os], ], [freebsd*], [ - DEFAULT_ENABLE_DEBUG_INFO=no + AE_FEATURE_DISABLE([debug-info]) ], [cygwin*], [ @@ -92,17 +92,19 @@ AC_SUBST(LT_NO_UNDEFINED) ## C compiler checks ## ## ## -# Choose the c compiler -AC_PROG_CC_STDC +# 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]) -# Make sure the c compiler supports C99 +# 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 __attributes__ +# Make sure the C compiler supports __attributes__ AX_C___ATTRIBUTE__ AS_IF([test "x$ax_cv___attribute__" != "xyes"], [AC_MSG_ERROR([The compiler does not support __attribute__ extensions])]) @@ -113,13 +115,13 @@ AX_PTHREAD([], [AC_MSG_ERROR([Could not configure pthread support])]) # Checks for typedefs, structures, and compiler characteristics. AC_C_INLINE AC_C_TYPEOF -AC_TYPE_PID_T -AC_TYPE_SIZE_T AC_TYPE_INT16_T AC_TYPE_INT32_T AC_TYPE_INT64_T AC_TYPE_INT8_T AC_TYPE_OFF_T +AC_TYPE_PID_T +AC_TYPE_SIZE_T AC_TYPE_SSIZE_T AC_TYPE_UINT16_T AC_TYPE_UINT32_T @@ -128,6 +130,14 @@ AC_TYPE_UINT8_T AC_CHECK_TYPES([ptrdiff_t]) +## ## +## C++ compiler checks ## +## ## + +# Require a C++11 compiler without GNU extensions (-std=c++11) +AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory]) + + ## ## ## Header checks ## ## ## @@ -218,7 +228,9 @@ detection. AM_CONDITIONAL([HAVE_BISON], [test "x$have_bison" = "xyes"]) # check for flex -AC_PROG_LEX +# Prior to autoconf 2.70, AC_PROG_FLEX did not take an argument. This is not a +# problem since the argument is silently ignored by older versions. +AC_PROG_LEX([noyywrap]) AX_PROG_FLEX_VERSION([2.5.35], [have_flex=yes]) AS_IF([test "x$have_flex" != "xyes"], [ @@ -393,11 +405,14 @@ AE_FEATURE([built-in-python-plugin-support],[Statically-link Python plugin suppo AE_FEATURE_DEFAULT_ENABLE AE_FEATURE([man-pages],[Do not build and install man pages (already built in a distributed tarball]) -# When given, add -Werror to WARN_CFLAGS. +# When given, add -Werror to WARN_CFLAGS and WARN_CXXFLAGS. # Disabled by default AE_FEATURE_DEFAULT_DISABLE AE_FEATURE([Werror],[Treat compiler warnings as errors.]) +# When given, build with AddressSanitizer. +AE_FEATURE_DEFAULT_DISABLE +AE_FEATURE([asan],[Build with AddressSanitizer.]) ## ## ## Check for conflicting features selection ## @@ -435,9 +450,9 @@ AE_IF_FEATURE_ENABLED([built-in-python-plugin-support], [ ]) -## ## -## Set automake variables for optionnal feature conditionnals in Makefile.am ## -## ## +## ## +## Set automake variables for optional feature conditionnals in Makefile.am ## +## ## AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS], AE_IS_FEATURE_ENABLED([python-bindings])) AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS_DOC], AE_IS_FEATURE_ENABLED([python-bindings-doc])) @@ -448,11 +463,12 @@ AM_CONDITIONAL([ENABLE_BUILT_IN_PLUGINS], AE_IS_FEATURE_ENABLED([built-in-plugin AM_CONDITIONAL([ENABLE_BUILT_IN_PYTHON_PLUGIN_SUPPORT], AE_IS_FEATURE_ENABLED([built-in-python-plugin-support])) AM_CONDITIONAL([ENABLE_MAN_PAGES], AE_IS_FEATURE_ENABLED([man-pages])) AM_CONDITIONAL([ENABLE_PYTHON_COMMON_DEPS], AE_IS_FEATURE_ENABLED([python-bindings]) || AE_IS_FEATURE_ENABLED([python-plugins])) +AM_CONDITIONAL([ENABLE_ASAN], AE_IS_FEATURE_ENABLED([asan])) -## ## -## Set defines for optionnal features conditionnals in the source code ## -## ## +## ## +## Set defines for optional features conditionnals in the source code ## +## ## AE_IF_FEATURE_ENABLED([built-in-plugins], [AC_DEFINE([BT_BUILT_IN_PLUGINS], [1], [Define to 1 to register plug-in attributes in static executable sections])] @@ -465,13 +481,15 @@ AE_IF_FEATURE_ENABLED([built-in-python-plugin-support], AE_IF_FEATURE_ENABLED([debug-info], [ENABLE_DEBUG_INFO_VAL=1], [ENABLE_DEBUG_INFO_VAL=0]) AC_SUBST([ENABLE_DEBUG_INFO_VAL]) +AE_IF_FEATURE_ENABLED([asan], [ENABLE_ASAN=1], [ENABLE_ASAN=0]) +AC_SUBST([ENABLE_ASAN]) -## ## -## Check for optionnal features dependencies ## -## ## +## ## +## Check for optional features dependencies ## +## ## # The Python bindings require SWIG -AE_IF_FEATURE_ENABLED([python-plugins], +AE_IF_FEATURE_ENABLED([python-bindings], [AX_PKG_SWIG(2.0.0, [], [AC_MSG_ERROR([SWIG 2.0.0 or newer is required to build the python bindings])])] ) @@ -623,12 +641,21 @@ AS_IF([test "x$exec_prefix" = xNONE], [ AC_SUBST(LIBDIR) +# If --enable-asan is used... +AE_IF_FEATURE_ENABLED([asan], [ + # ... add -fsanitize=address to the *FLAGS variables. + ASAN_CFLAGS="-fsanitize=address" + ASAN_CXXFLAGS="-fsanitize=address" + ASAN_LDFLAGS="-fsanitize=address" +]) # CFLAGS from libraries (the glib ones are needed for the following sizeof # test). -AM_CFLAGS="${PTHREAD_CFLAGS} ${GLIB_CFLAGS}" +AM_CFLAGS="${PTHREAD_CFLAGS} ${GLIB_CFLAGS} ${ASAN_CFLAGS}" +AM_CXXFLAGS="${PTHREAD_CFLAGS} ${GLIB_CFLAGS} ${ASAN_CXXFLAGS}" +AM_LDFLAGS="${ASAN_LDFLAGS}" # Check that the current size_t matches the size that glib thinks it should # be. This catches problems on multi-arch where people try to do a 32-bit @@ -665,11 +692,10 @@ CFLAGS=${save_CFLAGS} # Detect C and LD warning flags supported by the compiler. -# Detect warning flags supported by the compiler, append them to WARN_CFLAGS. +# Detect warning flags supported by the C and C++ compilers and append them to +# WARN_CFLAGS and WARN_CXXFLAGS. # -# 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 +m4_define([WARN_FLAGS_LIST], [ dnl -Wall dnl -Wextra dnl -Wmissing-prototypes dnl @@ -706,10 +732,16 @@ AX_APPEND_COMPILE_FLAGS([ dnl dnl Ref: https://github.com/swig/swig/issues/1259 -Wno-cast-function-type dnl -Wno-missing-field-initializers dnl - ], - [WARN_CFLAGS], - [-Werror]) + ]) +# Pass -Werror as an extra flag during the test: this is needed to make the +# -Wunknown-warning-option diagnostic fatal with clang. +AC_LANG([C++]) +AX_APPEND_COMPILE_FLAGS([WARN_FLAGS_LIST], [WARN_CXXFLAGS], [-Werror]) +AC_LANG([C]) +AX_APPEND_COMPILE_FLAGS([WARN_FLAGS_LIST], [WARN_CFLAGS], [-Werror]) + +AE_IF_FEATURE_ENABLED([Werror], [WARN_CXXFLAGS="${WARN_CXXFLAGS} -Werror"]) AE_IF_FEATURE_ENABLED([Werror], [WARN_CFLAGS="${WARN_CFLAGS} -Werror"]) # The test used in AX_APPEND_COMPILE_FLAGS, generated using AC_LANG_PROGRAM, is @@ -718,14 +750,17 @@ AE_IF_FEATURE_ENABLED([Werror], [WARN_CFLAGS="${WARN_CFLAGS} -Werror"]) # the test program would not build. # # Enable them here unconditionally. They are supported by GCC >= 4.8 and by -# Clang >= 4.0. +# Clang >= 3.3 (required by the project) and are only valid for C code. WARN_CFLAGS="${WARN_CFLAGS} -Wold-style-definition -Wstrict-prototypes" # CFLAGS from AX_APPEND_COMPILE_FLAGS. +AM_CXXFLAGS="${AM_CXXFLAGS} ${WARN_CXXFLAGS}" AM_CFLAGS="${AM_CFLAGS} ${WARN_CFLAGS}" -# Done for AM_CFLAGS. +# Done for AM_CXXFLAGS, AM_CFLAGS and AM_LDFLAGS. +AC_SUBST(AM_CXXFLAGS) AC_SUBST(AM_CFLAGS) +AC_SUBST(AM_LDFLAGS) # Set global CPPFLAGS in AM_CPPFLAGS AM_CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/src -I\$(top_srcdir)/src -include common/config.h" @@ -822,6 +857,8 @@ AC_CONFIG_FILES([ tests/utils/tap/Makefile ]) +AC_CONFIG_FILES([tests/utils/env.sh],[chmod +x tests/utils/env.sh]) + AC_OUTPUT #