],
[freebsd*],
[
- DEFAULT_ENABLE_DEBUG_INFO=no
+ AE_FEATURE_DISABLE([debug-info])
],
[cygwin*],
[
## ##
# 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])])
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 ##
## ##
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"], [
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.])
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])
# 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
# 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
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
# 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