Add a single generated env file to the test suite
[babeltrace.git] / configure.ac
index 24a2d212a2f09afca0d75ff411ec120e471cfefe..673fd7209523d66785ce18eddc917d3d1307f4f3 100644 (file)
@@ -69,7 +69,7 @@ AS_CASE([$host_os],
     ],
   [freebsd*],
     [
-       DEFAULT_ENABLE_DEBUG_INFO=no
+       AE_FEATURE_DISABLE([debug-info])
     ],
   [cygwin*],
     [
@@ -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,7 +404,7 @@ 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.])
@@ -471,14 +482,14 @@ AC_SUBST([ENABLE_DEBUG_INFO_VAL])
 ##                                           ##
 
 # 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])])]
 )
 
 # Always check for python, we will fail later if some features require it and
 # it's unavailable.
 AM_PATH_PYTHON([3.0], [
-  AM_PATH_PYTHON_MODULES([PYTHON])
+  AE_PATH_PYTHON_MODULES([PYTHON])
 
   # pythondir is the path where extra modules are to be installed
   pythondir=$PYTHON_PREFIX/$PYTHON_MODULES_PATH
@@ -525,7 +536,7 @@ AS_IF([AE_IS_FEATURE_ENABLED([python-bindings]) || AE_IS_FEATURE_ENABLED([python
 
 AE_IF_FEATURE_ENABLED([python-bindings-doc],
   [
-    AM_CHECK_PYTHON_SPHINX([PYTHON])
+    AE_CHECK_PYTHON_SPHINX([PYTHON])
     AS_IF([test "x$PYTHON_SPHINX_EXISTS" = xno], [
       AC_MSG_ERROR([The Sphinx package for Python 3 is required to build the Python bindings documentation])
     ])
@@ -543,7 +554,14 @@ AE_IF_FEATURE_ENABLED([debug-info], [
       dnl PKG_CHECK_MODULES defines ELFUTILS_LIBS
     ],
     [
-      AC_MSG_ERROR([elfutils >= 0.154 is required to use the debug info feature. You can disable this feature using --disable-debug-info.])
+      AC_MSG_WARN([pkg-config was unable to find a valid .pc for libelf/libdw. Set PKG_CONFIG_PATH to specify the pkg-config configuration file location.])
+
+      # Turns out SLES12 doesn't bother shipping .pc file for libelf
+      AC_MSG_WARN([Finding libelf without pkg-config.])
+      AC_CHECK_LIB([elf], [elf_version], [], [AC_MSG_ERROR(Missing libelf (from elfutils >= 0.154) which is required by debug info. You can disable this feature using --disable-debug-info.)])
+      AC_CHECK_LIB([dw], [dwarf_begin], [], [AC_MSG_ERROR(Missing libdw (from elfutils >= 0.154) which is required by debug info. You can disable this feature using --disable-debug-info.)])
+      AE_LIB_ELFUTILS([0], [154], [], [AC_MSG_ERROR(elfutils >= 0.154 is required to use the debug info feature. You can disable this feature using --disable-debug-info.)])
+      ELFUTILS_LIBS="-lelf -ldw"
     ])
 ])
 AC_SUBST([ELFUTILS_LIBS])
@@ -622,6 +640,7 @@ AC_SUBST(LIBDIR)
 # CFLAGS from libraries (the glib ones are needed for the following sizeof
 # test).
 AM_CFLAGS="${PTHREAD_CFLAGS} ${GLIB_CFLAGS}"
+AM_CXXFLAGS="${PTHREAD_CFLAGS} ${GLIB_CFLAGS}"
 
 # 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
@@ -658,11 +677,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
@@ -699,10 +717,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
@@ -711,13 +735,15 @@ 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 and AM_CFLAGS.
+AC_SUBST(AM_CXXFLAGS)
 AC_SUBST(AM_CFLAGS)
 
 # Set global CPPFLAGS in AM_CPPFLAGS
@@ -815,6 +841,8 @@ AC_CONFIG_FILES([
        tests/utils/tap/Makefile
 ])
 
+AC_CONFIG_FILES([tests/utils/env.sh],[chmod +x tests/utils/env.sh])
+
 AC_OUTPUT
 
 #
This page took 0.025661 seconds and 4 git commands to generate.