X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=configure.ac;h=85f422a11af946a6dc443ab737e16e1654fda187;hp=89766642e2927a46ed86e14257c473ef95e2ff14;hb=0b0893d4a069f17d1326ebc3bfc9f9f987f411f3;hpb=cbf9cf74b8e74023580ece25be51ed3a19ba016b diff --git a/configure.ac b/configure.ac index 89766642..85f422a1 100644 --- a/configure.ac +++ b/configure.ac @@ -93,7 +93,8 @@ AC_SUBST(LT_NO_UNDEFINED) ## ## # Choose the c compiler -AC_PROG_CC_STDC +AC_PROG_CC +m4_version_prereq([2.70], [], [AC_PROG_CC_STDC]) # 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])]) @@ -128,6 +129,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 +227,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 +404,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 ## @@ -448,6 +462,7 @@ 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])) ## ## @@ -465,13 +480,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 ## ## ## # 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 +640,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 +691,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 +731,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 +749,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 +856,8 @@ AC_CONFIG_FILES([ tests/utils/tap/Makefile ]) +AC_CONFIG_FILES([tests/utils/env.sh],[chmod +x tests/utils/env.sh]) + AC_OUTPUT #