Reduce the number of Makefiles in 'src/' by one more
[babeltrace.git] / configure.ac
index ca24ee79f7e25bb4c7ebb592236ac3b4691b0661..a15ce6e665d10c31e9bc5eb3ab77069f1150dcbc 100644 (file)
@@ -50,7 +50,7 @@ AC_CANONICAL_HOST
 ## Automake base setup ##
 ##                     ##
 
-AM_INIT_AUTOMAKE([1.12 foreign dist-bzip2 no-dist-gzip tar-ustar nostdinc -Wall -Wno-portability -Werror])
+AM_INIT_AUTOMAKE([1.13 foreign dist-bzip2 no-dist-gzip tar-ustar nostdinc subdir-objects -Wall -Wno-portability -Werror])
 AM_MAINTAINER_MODE([enable])
 
 # Enable silent rules by default
@@ -211,12 +211,12 @@ AX_PROG_BISON_VERSION([2.5], [have_bison=yes])
 AS_IF([test "x$have_bison" != "xyes"], [
   AE_IF_IN_GIT_REPO([
     AC_MSG_FAILURE([dnl
-Bison >= 2.4 is required when building from the Git repository. You can
+Bison >= 2.5 is required when building from the Git repository. You can
 set the YACC variable to override automatic detection.
     ])
   ], [
     AC_MSG_WARN([dnl
-Missing Bison >= 2.4. Note that the parser files are already built in
+Missing Bison >= 2.5. Note that the parser files are already built in
 this distribution tarball, so Bison is only needed if you intend to
 modify their sources. You can set the YACC variable to override automatic
 detection.
@@ -250,7 +250,7 @@ AM_CONDITIONAL([HAVE_FLEX], [test "x$have_flex" = "xyes"])
 
 # 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([3.4], [
   AE_PATH_PYTHON_MODULES([PYTHON])
 
   # pythondir is the path where extra modules are to be installed
@@ -448,6 +448,7 @@ AE_FEATURE([Werror],[Treat compiler warnings as errors.])
 # When given, build with AddressSanitizer.
 AE_FEATURE_DEFAULT_DISABLE
 AE_FEATURE([asan],[Build with AddressSanitizer.])
+AE_FEATURE([ubsan],[Build with UndefinedBehaviorSanitizer.])
 
 ##                                          ##
 ## Check for conflicting features selection ##
@@ -513,6 +514,9 @@ AE_IF_FEATURE_ENABLED([built-in-python-plugin-support],
   [AC_DEFINE([BT_BUILT_IN_PYTHON_PLUGIN_SUPPORT], [1], [Define to 1 to register plug-in attributes in static executable sections])]
 )
 
+AE_IF_FEATURE_ENABLED([python-plugins], [ENABLE_PYTHON_PLUGINS=1], [ENABLE_PYTHON_PLUGINS=0])
+AC_SUBST([ENABLE_PYTHON_PLUGINS])
+
 AE_IF_FEATURE_ENABLED([debug-info], [ENABLE_DEBUG_INFO_VAL=1], [ENABLE_DEBUG_INFO_VAL=0])
 AC_SUBST([ENABLE_DEBUG_INFO_VAL])
 
@@ -534,10 +538,28 @@ AS_IF([test -n "$PYTHON_CONFIG"], [have_python_dev=yes], [have_python_dev=no])
 AM_CONDITIONAL([HAVE_PYTHON], [test "x$have_python" = xyes])
 AM_CONDITIONAL([HAVE_PYTHON_DEV], [test "x$have_python_dev" = xyes])
 
+AS_IF([test "x$have_python" = xyes], [
+  AX_COMPARE_VERSION(["$PYTHON_VERSION"], [ge], ["3.12"], [
+    have_python_312_or_greater=yes
+  ])
+])
+
+AM_CONDITIONAL([HAVE_PYTHON_312_OR_GREATER], [test "x$have_python_312_or_greater" = xyes])
+
 AS_IF([AE_IS_FEATURE_ENABLED([python-bindings]) || AE_IS_FEATURE_ENABLED([python-plugins])], [
   AS_IF([test "x$have_python_dev" = xno], [
     AC_MSG_ERROR([Cannot find a suitable python-config. You can override the python-config path with the PYTHON_CONFIG environment variable.])
   ])
+
+  AX_COMPARE_VERSION(["$PYTHON_VERSION"], [ge], ["3.12"], [
+    AC_MSG_CHECKING([for python setuptools])
+    AS_IF(["$PYTHON" -c "import setuptools" 2>/dev/null], [
+      AC_MSG_RESULT([yes])
+    ], [
+      AC_MSG_RESULT([no])
+      AC_MSG_ERROR([Python >= 3.12 removed 'distutils', the 'setuptools' module needs to be installed for the selected interpreter.])
+    ])
+  ])
 ])
 
 AE_IF_FEATURE_ENABLED([python-bindings-doc],
@@ -564,8 +586,8 @@ AE_IF_FEATURE_ENABLED([debug-info], [
 
       # 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.)])
+      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"
     ])
@@ -645,13 +667,19 @@ AE_IF_FEATURE_ENABLED([asan], [
   ASAN_LDFLAGS="-fsanitize=address"
 ])
 
-
+# If --enable-ubsan is used...
+AE_IF_FEATURE_ENABLED([ubsan], [
+  # ... add -fsanitize=undefined to the *FLAGS variables.
+  UBSAN_CFLAGS="-fsanitize=undefined"
+  UBSAN_CXXFLAGS="-fsanitize=undefined"
+  UBSAN_LDFLAGS="-fsanitize=undefined"
+])
 
 # CFLAGS from libraries (the glib ones are needed for the following sizeof
 # test).
-AM_CFLAGS="${PTHREAD_CFLAGS} ${GLIB_CFLAGS} ${ASAN_CFLAGS}"
-AM_CXXFLAGS="${PTHREAD_CFLAGS} ${GLIB_CFLAGS} ${ASAN_CXXFLAGS}"
-AM_LDFLAGS="${ASAN_LDFLAGS}"
+AM_CFLAGS="-fvisibility=hidden ${PTHREAD_CFLAGS} ${GLIB_CFLAGS} ${ASAN_CFLAGS} ${UBSAN_CFLAGS}"
+AM_CXXFLAGS="-fvisibility=hidden -fvisibility-inlines-hidden ${PTHREAD_CFLAGS} ${GLIB_CFLAGS} ${ASAN_CXXFLAGS} ${UBSAN_CFLAGS}"
+AM_LDFLAGS="${ASAN_LDFLAGS} ${UBSAN_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
@@ -700,6 +728,11 @@ m4_define([WARN_FLAGS_LIST], [ dnl
   -Wundef dnl
   -Wredundant-decls dnl
   -Wshadow dnl
+  dnl GCC's -Wshadow warns about constructor parameters shadowing fields, but
+  dnl Clang's does not.  Enable Clang's `-Wshadow-field-in-constructor`, to make
+  dnl Clang warn about that.
+  -Wshadow-field-in-constructor dnl
+  -Wshadow-field dnl
   -Wjump-misses-init dnl
   -Wsuggest-attribute=format dnl
   -Wtautological-constant-out-of-range-compare dnl
@@ -712,7 +745,7 @@ m4_define([WARN_FLAGS_LIST], [ dnl
   -Wduplicated-cond dnl
   -Wduplicated-branches dnl
   -Wlogical-op dnl
-  -Wno-unused-parameter dnl
+  -Wsuggest-override dnl
   -Wno-sign-compare dnl
   dnl
   dnl Some versions of SWIG (like 3.0.12) generate code that produces
@@ -727,7 +760,7 @@ m4_define([WARN_FLAGS_LIST], [ dnl
   dnl
   dnl Ref: https://github.com/swig/swig/issues/1259
   -Wno-cast-function-type dnl
-  -Wno-missing-field-initializers dnl
+  -Wno-maybe-uninitialized dnl
 ])
 
 # Pass -Werror as an extra flag during the test: this is needed to make the
@@ -771,72 +804,27 @@ program_transform_name="s&babeltrace2\.bin&babeltrace2&;$program_transform_name"
 AC_SUBST(program_transform_name)
 
 AC_CONFIG_FILES([
-  doc/api/Makefile
   doc/api/libbabeltrace2/Doxyfile
   doc/api/libbabeltrace2/Makefile
-  doc/bindings/Makefile
   doc/bindings/python/Makefile
-  doc/contributing-images/Makefile
   doc/Makefile
   doc/man/asciidoc-attrs.conf
   doc/man/Makefile
   include/Makefile
   Makefile
-  src/argpar/Makefile
-  src/autodisc/Makefile
   src/babeltrace2-ctf-writer.pc
   src/babeltrace2.pc
-  src/bindings/Makefile
   src/bindings/python/bt2/bt2/version.py
   src/bindings/python/bt2/Makefile
   src/bindings/python/bt2/setup.py
-  src/bindings/python/Makefile
   src/cli/Makefile
-  src/common/Makefile
-  src/compat/Makefile
-  src/ctfser/Makefile
-  src/ctf-writer/Makefile
-  src/fd-cache/Makefile
-  src/lib/graph/Makefile
-  src/lib/graph/message/Makefile
-  src/lib/Makefile
-  src/lib/plugin/Makefile
-  src/lib/prio-heap/Makefile
-  src/lib/trace-ir/Makefile
-  src/logging/Makefile
   src/Makefile
-  src/plugins/common/Makefile
-  src/plugins/common/muxing/Makefile
-  src/plugins/common/param-validation/Makefile
-  src/plugins/ctf/common/bfcr/Makefile
-  src/plugins/ctf/common/Makefile
-  src/plugins/ctf/common/metadata/Makefile
-  src/plugins/ctf/common/msg-iter/Makefile
-  src/plugins/ctf/fs-sink/Makefile
-  src/plugins/ctf/fs-src/Makefile
-  src/plugins/ctf/lttng-live/Makefile
-  src/plugins/ctf/Makefile
-  src/plugins/lttng-utils/debug-info/Makefile
-  src/plugins/lttng-utils/Makefile
-  src/plugins/Makefile
-  src/plugins/text/dmesg/Makefile
-  src/plugins/text/Makefile
-  src/plugins/text/pretty/Makefile
-  src/plugins/text/details/Makefile
-  src/plugins/utils/counter/Makefile
-  src/plugins/utils/dummy/Makefile
-  src/plugins/utils/Makefile
-  src/plugins/utils/muxer/Makefile
-  src/plugins/utils/trimmer/Makefile
-  src/py-common/Makefile
-  src/python-plugin-provider/Makefile
-  src/param-parse/Makefile
-  src/string-format/Makefile
   tests/bitfield/Makefile
   tests/ctf-writer/Makefile
   tests/lib/Makefile
   tests/lib/test-plugin-plugins/Makefile
   tests/lib/conds/Makefile
+  tests/lib/utils/Makefile
   tests/Makefile
   tests/param-validation/Makefile
   tests/plugins/Makefile
This page took 0.025168 seconds and 4 git commands to generate.