1 dnl SPDX-License-Identifier: MIT
3 dnl Copyright (C) 2017 EfficiOS, Inc.
5 dnl Process this file with autoconf to produce a configure script.
8 ## Autoconf base setup ##
13 m4_define([bt_version_major], [2])
14 m4_define([bt_version_minor], [1])
15 m4_define([bt_version_patch], [0])
16 m4_define([bt_version_dev_stage], [-rc1])
17 m4_define([bt_version], bt_version_major[.]bt_version_minor[.]bt_version_patch[]bt_version_dev_stage)
18 m4_define([bt_version_name], [])
20 AC_INIT([babeltrace2],[bt_version],[jeremie dot galarneau at efficios dot com],[],[https://efficios.com/babeltrace/])
22 # Following the numbering scheme proposed by libtool for the library version
23 # http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
24 m4_define([bt_lib_version_current], [0])
25 m4_define([bt_lib_version_revision], [0])
26 m4_define([bt_lib_version_age], [0])
27 m4_define([bt_lib_version], bt_lib_version_current[:]bt_lib_version_revision[:]bt_lib_version_age)
28 m4_define([bt_version_description], [])
29 m4_define([bt_version_description_c_safe], AS_ESCAPE(bt_version_description))
31 AC_SUBST([BABELTRACE_LIBRARY_VERSION], bt_lib_version)
33 AC_CONFIG_HEADERS([src/common/config.h])
34 AC_CONFIG_AUX_DIR([config])
35 AC_CONFIG_MACRO_DIR([m4])
37 AC_DEFINE([BT_VERSION_MAJOR], bt_version_major, [Babeltrace major version])
38 AC_DEFINE([BT_VERSION_MINOR], bt_version_minor, [Babeltrace minor version])
39 AC_DEFINE([BT_VERSION_PATCH], bt_version_patch, [Babeltrace patch version])
40 AC_DEFINE([BT_VERSION_DEV_STAGE], ["]bt_version_dev_stage["], [Babeltrace version development stage (can be empty)])
41 AC_DEFINE([BT_VERSION_NAME], ["]bt_version_name["], [Babeltrace version name])
42 AC_DEFINE([BT_VERSION_DESCRIPTION], ["]bt_version_description_c_safe["], [Babeltrace version description])
49 ## Automake base setup ##
52 AM_INIT_AUTOMAKE([1.12 foreign dist-bzip2 no-dist-gzip tar-ustar nostdinc -Wall -Wno-portability -Werror])
53 AM_MAINTAINER_MODE([enable])
55 # Enable silent rules by default
56 AM_SILENT_RULES([yes])
60 ## OS specific defaults ##
68 AE_FEATURE_DISABLE([debug-info])
72 AE_FEATURE_DISABLE([debug-info])
76 AE_FEATURE_DISABLE([debug-info])
77 LT_NO_UNDEFINED="-no-undefined"
82 AE_FEATURE_DISABLE([debug-info])
83 LT_NO_UNDEFINED="-no-undefined"
87 AM_CONDITIONAL([BABELTRACE_BUILD_WITH_MINGW], [test "x$MINGW32" = "xyes"])
88 AC_SUBST(LT_NO_UNDEFINED)
92 ## C compiler checks ##
95 # Choose the C compiler
97 # AC_PROG_CC_STDC was merged in AC_PROG_CC in autoconf 2.70
98 m4_version_prereq([2.70], [], [AC_PROG_CC_STDC])
100 # Make sure the C compiler supports C99
101 AS_IF([test "$ac_cv_prog_cc_c99" = "no"], [AC_MSG_ERROR([The compiler does not support C99])])
103 # Enable available system extensions and LFS support
104 AC_USE_SYSTEM_EXTENSIONS
107 # Make sure the C compiler supports __attributes__
109 AS_IF([test "x$ax_cv___attribute__" != "xyes"],
110 [AC_MSG_ERROR([The compiler does not support __attribute__ extensions])])
112 # Make sur we have pthread support
113 AX_PTHREAD([], [AC_MSG_ERROR([Could not configure pthread support])])
115 # Checks for typedefs, structures, and compiler characteristics.
130 AC_CHECK_TYPES([ptrdiff_t])
134 ## C++ compiler checks ##
137 # Require a C++11 compiler without GNU extensions (-std=c++11)
138 AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory])
165 # Check if the linker supports no-as-needed
166 AX_APPEND_LINK_FLAGS([-Wl,--no-as-needed], [LD_NO_AS_NEEDED])
167 AC_SUBST([LD_NO_AS_NEEDED])
169 # Check if the linker supports whole-archive
170 AX_CHECK_LINK_FLAG([-Wl,--whole-archive,--no-whole-archive],
172 AC_SUBST([LD_WHOLE_ARCHIVE], [-Wl,--whole-archive,])
173 AC_SUBST([LD_NO_WHOLE_ARCHIVE], [,--no-whole-archive])
175 # Fallback to force_load for the macOS linker
176 AX_CHECK_LINK_FLAG([-Wl,-force_load],
178 AC_SUBST([LD_WHOLE_ARCHIVE], [-Wl,-force_load,])
179 AC_SUBST([LD_NO_WHOLE_ARCHIVE], [])
181 AC_MSG_WARN([Can't find a linker option to force the inclusion of the static plugin archive objects.])
187 # Check if the linker supports the "notext" keyword
188 AX_CHECK_LINK_FLAG([-Wl,-z,notext],[
189 AC_SUBST([LD_NOTEXT], [-Wl,-z,notext])
194 ## Programs checks ##
202 AC_CHECK_PROGS([FOLD], [fold])
203 AC_CHECK_PROGS([ASCIIDOC], [asciidoc])
204 AC_CHECK_PROGS([XMLTO], [xmlto])
206 # set $IN_GIT_REPO if we're in the Git repository; the `bootstrap` file
207 # is not distributed in tarballs
208 AS_IF([test -f "$srcdir/bootstrap"], [in_git_repo=yes], [in_git_repo=no])
209 AM_CONDITIONAL([IN_GIT_REPO], [test "x$in_git_repo" = "xyes"])
213 AX_PROG_BISON_VERSION([2.5], [have_bison=yes])
215 AS_IF([test "x$have_bison" != "xyes"], [
216 AS_IF([test "x$in_git_repo" = "xyes"], [
218 Bison >= 2.4 is required when building from the Git repository. You can
219 set the YACC variable to override automatic detection.
223 Missing Bison >= 2.4. Note that the parser files are already built in
224 this distribution tarball, so Bison is only needed if you intend to
225 modify their sources. You can set the YACC variable to override automatic
230 AM_CONDITIONAL([HAVE_BISON], [test "x$have_bison" = "xyes"])
233 # Prior to autoconf 2.70, AC_PROG_FLEX did not take an argument. This is not a
234 # problem since the argument is silently ignored by older versions.
235 AC_PROG_LEX([noyywrap])
236 AX_PROG_FLEX_VERSION([2.5.35], [have_flex=yes])
238 AS_IF([test "x$have_flex" != "xyes"], [
239 AS_IF([test "x$in_git_repo" = "xyes"], [
241 Flex >= 2.5.35 is required when building from the Git repository. You can
242 set the LEX variable to override automatic detection.
246 Missing Flex >= 2.5.35. Note that the lexer files are already built in
247 this distribution tarball, so Flex is only needed if you intend to
248 modify their sources. You can set the LEX variable to override automatic
253 AM_CONDITIONAL([HAVE_FLEX], [test "x$have_flex" = "xyes"])
255 # Always check for python, we will fail later if some features require it and
257 AM_PATH_PYTHON([3.0], [
258 AE_PATH_PYTHON_MODULES([PYTHON])
260 # pythondir is the path where extra modules are to be installed
261 pythondir=$PYTHON_PREFIX/$PYTHON_MODULES_PATH
263 # pyexecdir is the path that contains shared objects used by the extra modules
264 pyexecdir=$PYTHON_EXEC_PREFIX/$PYTHON_MODULES_PATH
266 # If no PYTHON_CONFIG was specified by the user, try to find it, starting
267 # with the one specific to the configured python version.
268 AS_IF([test "x$PYTHON_CONFIG" = "x"], [
269 AC_CHECK_PROGS([PYTHON_CONFIG], [python$PYTHON_VERSION-config python-config])
272 # If PYTHON_CONFIG is set use it to get the includes and ld flags, unless
273 # they were specified by the user.
274 AS_IF([test "x$PYTHON_CONFIG" != "x" ], [
275 AS_IF([test "x$PYTHON_INCLUDE" = "x"], [
276 AC_MSG_CHECKING([Python include flags])
277 PYTHON_INCLUDE=`$PYTHON_CONFIG --includes`
278 AC_MSG_RESULT([$PYTHON_INCLUDE])
281 AS_IF([test "x$PYTHON_LDFLAGS" = "x"], [
282 AC_MSG_CHECKING([Python library flags])
283 # Python 3.8+ requires that we pass --embed to get the -lpython3.x flag.
284 AS_IF([! PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags --embed`], [
285 PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags`
287 AC_MSG_RESULT([$PYTHON_LDFLAGS])
292 # Initialize and configure libtool
300 # Check what libraries are required on this platform to link sockets programs.
303 # Check for glib >= 2.28 with gmodule support
304 AM_PATH_GLIB_2_0([2.28.0], [],
305 AC_MSG_ERROR([glib >= 2.28 is required - download it from ftp://ftp.gtk.org/pub/gtk]),
309 # Checks for library functions.
343 # AC_FUNC_MALLOC causes problems when cross-compiling.
348 AC_CHECK_LIB([c], [fmemopen],
349 [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_FMEMOPEN], 1, [Has fmemopen support.])]
352 # Check for open_memstream
353 AC_CHECK_LIB([c], [open_memstream],
354 [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_OPEN_MEMSTREAM], 1, [Has open_memstream support.])]
357 # Check for posix_fallocate
358 AC_CHECK_LIB([c], [posix_fallocate],
359 [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_POSIX_FALLOCATE], 1, [Has posix_fallocate support.])]
367 AC_ARG_VAR([PYTHON_INCLUDE], [Include flags for Python, bypassing python-config])
368 AC_ARG_VAR([PYTHON_LDFLAGS], [Linker flags for Python, bypassing python-config])
369 AC_ARG_VAR([PYTHON_CONFIG], [Path to python-config])
371 # BABELTRACE_PLUGINS_DIR: Plugins directory
372 AC_ARG_VAR([BABELTRACE_PLUGINS_DIR], [built-in plugins install directory [LIBDIR/babeltrace2/plugins]])
373 AS_IF([test "x$BABELTRACE_PLUGINS_DIR" = x], [BABELTRACE_PLUGINS_DIR='${libdir}/babeltrace2/plugins'])
375 # BABELTRACE_PLUGIN_PROVIDERS_DIR: Plugin providers directory
376 AC_ARG_VAR([BABELTRACE_PLUGIN_PROVIDERS_DIR], [built-in plugin providers install directory [LIBDIR/babeltrace2/plugin-providers]])
377 AS_IF([test "x$BABELTRACE_PLUGIN_PROVIDERS_DIR" = x], [BABELTRACE_PLUGIN_PROVIDERS_DIR='${libdir}/babeltrace2/plugin-providers'])
379 # BABELTRACE_MINIMAL_LOG_LEVEL:
380 AC_ARG_VAR([BABELTRACE_MINIMAL_LOG_LEVEL], [Minimal log level for Babeltrace program, library, and plugins (TRACE, DEBUG (default), or INFO)])
381 AS_IF([test "x$BABELTRACE_MINIMAL_LOG_LEVEL" = x], [BABELTRACE_MINIMAL_LOG_LEVEL="DEBUG"])
382 AS_IF([test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "TRACE" && \
383 test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "DEBUG" && \
384 test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "INFO"],
385 [AC_MSG_ERROR([Invalid BABELTRACE_MINIMAL_LOG_LEVEL value ($BABELTRACE_MINIMAL_LOG_LEVEL): use TRACE, DEBUG, or INFO.])]
387 AC_DEFINE_UNQUOTED([BT_MINIMAL_LOG_LEVEL], [BT_LOG_$BABELTRACE_MINIMAL_LOG_LEVEL], [Minimal log level])
389 # BABELTRACE_DEV_MODE:
390 AC_ARG_VAR([BABELTRACE_DEV_MODE], [Set to 1 to enable the Babeltrace developer mode (enables run-time checks for plugin developers)])
391 AS_IF([test "x$BABELTRACE_DEV_MODE" = x1], [
392 AC_DEFINE([BT_DEV_MODE], 1, [Babeltrace developer mode])
393 ], [BABELTRACE_DEV_MODE=0])
394 AM_CONDITIONAL([DEV_MODE], [test "x$BABELTRACE_DEV_MODE" = x1])
396 # BABELTRACE_DEBUG_MODE:
397 AC_ARG_VAR([BABELTRACE_DEBUG_MODE], [Set to 1 to enable the Babeltrace debug mode (enables internal assertions for Babeltrace maintainers)])
398 AS_IF([test "x$BABELTRACE_DEBUG_MODE" = x1], [
399 AC_DEFINE([BT_DEBUG_MODE], 1, [Babeltrace debug mode])
400 ], [BABELTRACE_DEBUG_MODE=0])
404 ## Optionnal features selection ##
408 # Disabled by default
409 AE_FEATURE_DEFAULT_DISABLE
410 AE_FEATURE([python-bindings],[build the Python bindings])
412 # Python bindings documentation
413 # Disabled by default
414 AE_FEATURE_DEFAULT_DISABLE
415 AE_FEATURE([python-bindings-doc],[build the Python bindings documentation])
418 # Disabled by default
419 AE_FEATURE_DEFAULT_DISABLE
420 AE_FEATURE([python-plugins],[enable the Python plugins support for the library and converter])
423 # Enabled by default, except on some platforms
424 AE_FEATURE_DEFAULT_ENABLE
425 AE_FEATURE([debug-info],[disable the debug info support (default on macOS, Solaris and Windows)])
428 # Disabled by default
429 AE_FEATURE_DEFAULT_DISABLE
430 AE_FEATURE([api-doc],[build the HTML API documentation])
433 # Disabled by default
434 AE_FEATURE_DEFAULT_DISABLE
435 AE_FEATURE([built-in-plugins],[Statically-link in-tree plug-ins into the babeltrace2 executable])
437 # Built-in python plugin support
438 # Disabled by default
439 AE_FEATURE_DEFAULT_DISABLE
440 AE_FEATURE([built-in-python-plugin-support],[Statically-link Python plugin support into the babeltrace library])
444 AE_FEATURE_DEFAULT_ENABLE
445 AE_FEATURE([man-pages],[Do not build and install man pages (already built in a distributed tarball])
447 # When given, add -Werror to WARN_CFLAGS and WARN_CXXFLAGS.
448 # Disabled by default
449 AE_FEATURE_DEFAULT_DISABLE
450 AE_FEATURE([Werror],[Treat compiler warnings as errors.])
452 # When given, build with AddressSanitizer.
453 AE_FEATURE_DEFAULT_DISABLE
454 AE_FEATURE([asan],[Build with AddressSanitizer.])
457 ## Check for conflicting features selection ##
460 # Check for conflicting Python related features user choices.
461 AE_IF_FEATURE_ENABLED([python-plugins], [
462 AE_IF_FEATURE_UNDEF([python-bindings], [
463 # --enable-python-plugins was provided but --enable-python-bindings was
464 # omitted. Turn the Python bindings ON anyway because it's needed to
465 # use the Python plugins.
466 AE_FEATURE_ENABLE([python-bindings])
468 AE_IF_FEATURE_DISABLED([python-bindings], [
469 # --enable-python-plugins _and_ --disable-python-bindings were
470 # used. This is invalid because Python plugins need the Python
471 # bindings to be useful.
472 AC_MSG_ERROR(--enable-python-bindings must be used to support Python plugins)
477 # Check for conflicting optional features user choices
478 AE_IF_FEATURE_ENABLED([built-in-plugins], [
479 # Built-in plug-ins are only available when the --disable-shared --enable-static options are used.
480 AE_IF_FEATURE_NOT_ENABLED([static], [AC_MSG_ERROR(--enable-static must be used to bundle plug-ins in the babeltrace2 executable)])
481 AE_IF_FEATURE_ENABLED([shared], [AC_MSG_ERROR(--disable-shared must be used to bundle plug-ins in the babeltrace2 executable)])
484 AE_IF_FEATURE_ENABLED([built-in-python-plugin-support], [
485 AE_IF_FEATURE_NOT_ENABLED([python-plugins], [AC_MSG_ERROR([--enable-python-plugins must be used to bundle Python plugin support in the babeltrace2 executable])])
486 # Built-in plug-ins are only available when the --disable-shared --enable-static options are used.
487 AE_IF_FEATURE_NOT_ENABLED([static], [AC_MSG_ERROR(--enable-static must be used to bundle Python plugin support in the babeltrace2 executable)])
488 AE_IF_FEATURE_ENABLED([shared], [AC_MSG_ERROR(--disable-shared must be used to bundle Python plugin support in the babeltrace2 executable)])
493 ## Set automake variables for optional feature conditionnals in Makefile.am ##
496 AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS], AE_IS_FEATURE_ENABLED([python-bindings]))
497 AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS_DOC], AE_IS_FEATURE_ENABLED([python-bindings-doc]))
498 AM_CONDITIONAL([ENABLE_PYTHON_PLUGINS], AE_IS_FEATURE_ENABLED([python-plugins]))
499 AM_CONDITIONAL([ENABLE_DEBUG_INFO], AE_IS_FEATURE_ENABLED([debug-info]))
500 AM_CONDITIONAL([ENABLE_API_DOC], AE_IS_FEATURE_ENABLED([api-doc]))
501 AM_CONDITIONAL([ENABLE_BUILT_IN_PLUGINS], AE_IS_FEATURE_ENABLED([built-in-plugins]))
502 AM_CONDITIONAL([ENABLE_BUILT_IN_PYTHON_PLUGIN_SUPPORT], AE_IS_FEATURE_ENABLED([built-in-python-plugin-support]))
503 AM_CONDITIONAL([ENABLE_MAN_PAGES], AE_IS_FEATURE_ENABLED([man-pages]))
504 AM_CONDITIONAL([ENABLE_PYTHON_COMMON_DEPS], AE_IS_FEATURE_ENABLED([python-bindings]) || AE_IS_FEATURE_ENABLED([python-plugins]))
505 AM_CONDITIONAL([ENABLE_ASAN], AE_IS_FEATURE_ENABLED([asan]))
509 ## Set defines for optional features conditionnals in the source code ##
512 AE_IF_FEATURE_ENABLED([built-in-plugins],
513 [AC_DEFINE([BT_BUILT_IN_PLUGINS], [1], [Define to 1 to register plug-in attributes in static executable sections])]
516 AE_IF_FEATURE_ENABLED([built-in-python-plugin-support],
517 [AC_DEFINE([BT_BUILT_IN_PYTHON_PLUGIN_SUPPORT], [1], [Define to 1 to register plug-in attributes in static executable sections])]
520 AE_IF_FEATURE_ENABLED([debug-info], [ENABLE_DEBUG_INFO_VAL=1], [ENABLE_DEBUG_INFO_VAL=0])
521 AC_SUBST([ENABLE_DEBUG_INFO_VAL])
523 AE_IF_FEATURE_ENABLED([asan], [ENABLE_ASAN=1], [ENABLE_ASAN=0])
524 AC_SUBST([ENABLE_ASAN])
527 ## Check for optional features dependencies ##
530 # The Python bindings require SWIG
531 AE_IF_FEATURE_ENABLED([python-bindings],
532 [AX_PKG_SWIG(2.0.0, [], [AC_MSG_ERROR([SWIG 2.0.0 or newer is required to build the python bindings])])]
535 AS_IF([test "$PYTHON" != :], [have_python=yes], [have_python=no])
536 AS_IF([test -n "$PYTHON_CONFIG"], [have_python_dev=yes], [have_python_dev=no])
538 AM_CONDITIONAL([HAVE_PYTHON], [test "x$have_python" = xyes])
539 AM_CONDITIONAL([HAVE_PYTHON_DEV], [test "x$have_python_dev" = xyes])
541 AS_IF([AE_IS_FEATURE_ENABLED([python-bindings]) || AE_IS_FEATURE_ENABLED([python-plugins])], [
542 AS_IF([test "x$have_python_dev" = xno], [
543 AC_MSG_ERROR([Cannot find a suitable python-config. You can override the python-config path with the PYTHON_CONFIG environment variable.])
547 AE_IF_FEATURE_ENABLED([python-bindings-doc],
549 AE_CHECK_PYTHON_SPHINX([PYTHON])
550 AS_IF([test "x$PYTHON_SPHINX_EXISTS" = xno], [
551 AC_MSG_ERROR([The Sphinx package for Python 3 is required to build the Python bindings documentation])
554 AE_IF_FEATURE_NOT_ENABLED([python-bindings], [
555 AC_MSG_ERROR([The Python bindings are required to build their documentation])
560 AE_IF_FEATURE_ENABLED([debug-info], [
561 # Check if libelf and libdw are present
562 PKG_CHECK_MODULES([ELFUTILS], [libelf >= 0.154 libdw >= 0.154],
564 dnl PKG_CHECK_MODULES defines ELFUTILS_LIBS
567 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.])
569 # Turns out SLES12 doesn't bother shipping .pc file for libelf
570 AC_MSG_WARN([Finding libelf without pkg-config.])
571 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.)])
572 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.)])
573 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.)])
574 ELFUTILS_LIBS="-lelf -ldw"
577 AC_SUBST([ELFUTILS_LIBS])
579 AE_IF_FEATURE_ENABLED([api-doc],
581 DX_DOXYGEN_FEATURE(ON)
591 DX_INIT_DOXYGEN([Babeltrace 2], [$(builddir)/Doxyfile], [output])
592 AS_IF([test -z "$DX_DOXYGEN"],
593 [AC_MSG_ERROR([You need doxygen to enable the API documentation])]
598 have_asciidoc_xmlto=no
599 warn_prebuilt_man_pages=no
601 AE_IF_FEATURE_ENABLED([man-pages], [
602 AS_IF([test "x$ASCIIDOC" = "x" || test "x$XMLTO" = "x"], [
603 AS_IF([test "x$in_git_repo" = "xyes"], [
604 # this is an error because we're in the Git repo, which
605 # means the man pages are not already generated for us,
606 # thus asciixmlto are required because we were asked
607 # to build the man pages
609 You need asciidoc and xmlto to build the Babeltrace man pages. Use
610 --disable-man-pages to disable building the man pages, in which case
611 they will not be installed.
614 # only warn here: since we're in the tarball, the man
615 # pages should already be generated at this point, thus
616 # asciidoc/xmlto are not strictly required
617 warn_prebuilt_man_pages=yes
620 have_asciidoc_xmlto=yes
624 # export AsciiDoc and xmlto existence
625 AM_CONDITIONAL([HAVE_ASCIIDOC_XMLTO], [test "x$have_asciidoc_xmlto" = "xyes"])
627 # a wonderful hack that seems necessary because $libdir is
628 # literally `${exec_prefix}/lib`, and $exec_prefix is set to `NONE`
629 # by autoconf when it's not specified by the user
630 AS_IF([test "x$exec_prefix" = xNONE], [
631 AS_IF([test "x$prefix" = xNONE], [
632 PREFIX="$ac_default_prefix"
644 # If --enable-asan is used...
645 AE_IF_FEATURE_ENABLED([asan], [
646 # ... add -fsanitize=address to the *FLAGS variables.
647 ASAN_CFLAGS="-fsanitize=address"
648 ASAN_CXXFLAGS="-fsanitize=address"
649 ASAN_LDFLAGS="-fsanitize=address"
654 # CFLAGS from libraries (the glib ones are needed for the following sizeof
656 AM_CFLAGS="${PTHREAD_CFLAGS} ${GLIB_CFLAGS} ${ASAN_CFLAGS}"
657 AM_CXXFLAGS="${PTHREAD_CFLAGS} ${GLIB_CFLAGS} ${ASAN_CXXFLAGS}"
658 AM_LDFLAGS="${ASAN_LDFLAGS}"
660 # Check that the current size_t matches the size that glib thinks it should
661 # be. This catches problems on multi-arch where people try to do a 32-bit
662 # build while pointing at 64-bit glib headers. This is a common error because
663 # glib.h is not platform specific but it includes glibconfig.h which is and
664 # is usually installed in a non-standard path.
666 # Do this before enabling all the warning flags, as the
667 # AC_LANG_PROGRAM-generated program may generate some warning, which makes this
668 # test fail unnecessarily.
670 # Older versions of the pkg-config macros disallows PKG_* in the autoconf
671 # output. Specifically allow pkg_config_libdir to be able to print the
673 m4_pattern_allow([PKG_CONFIG_LIBDIR])
675 save_CFLAGS=${CFLAGS}
676 CFLAGS="${CFLAGS} ${AM_CFLAGS}"
682 G_STATIC_ASSERT(sizeof(size_t) == GLIB_SIZEOF_SIZE_T);
686 sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T. You probably need to set
687 PKG_CONFIG_LIBDIR to point to the right pkg-config files for your build
691 CFLAGS=${save_CFLAGS}
693 # Detect C and LD warning flags supported by the compiler.
695 # Detect warning flags supported by the C and C++ compilers and append them to
696 # WARN_CFLAGS and WARN_CXXFLAGS.
698 m4_define([WARN_FLAGS_LIST], [ dnl
701 -Wmissing-prototypes dnl
702 -Wmissing-declarations dnl
703 -Wnull-dereference dnl
705 -Wredundant-decls dnl
707 -Wjump-misses-init dnl
708 -Wsuggest-attribute=format dnl
709 -Wtautological-constant-out-of-range-compare dnl
713 -Wstrict-aliasing dnl
714 -Wmissing-noreturn dnl
716 -Wduplicated-cond dnl
717 -Wduplicated-branches dnl
719 -Wno-unused-parameter dnl
720 -Wno-sign-compare dnl
722 dnl Some versions of SWIG (like 3.0.12) generate code that produces
723 dnl -Wcast-function-type warnings. This warning is present in gcc >= 8. This
724 dnl combo happens on RHEL/Centos 8, for example. Later versions of SWIG (like
725 dnl 4.0.1) have the correct function signatures to not produce this warning.
726 dnl It's simpler to just disable the warning globally.
728 dnl Note that the Debian/Ubuntu SWIG package 3.0.12-2 contains a local patch to
729 dnl fix this (python-fix-function-cast-warnings.patch), so you won't be able to
730 dnl reproduce the warning using that package.
732 dnl Ref: https://github.com/swig/swig/issues/1259
733 -Wno-cast-function-type dnl
734 -Wno-missing-field-initializers dnl
737 # Pass -Werror as an extra flag during the test: this is needed to make the
738 # -Wunknown-warning-option diagnostic fatal with clang.
740 AX_APPEND_COMPILE_FLAGS([WARN_FLAGS_LIST], [WARN_CXXFLAGS], [-Werror])
742 AX_APPEND_COMPILE_FLAGS([WARN_FLAGS_LIST], [WARN_CFLAGS], [-Werror])
744 AE_IF_FEATURE_ENABLED([Werror], [WARN_CXXFLAGS="${WARN_CXXFLAGS} -Werror"])
745 AE_IF_FEATURE_ENABLED([Werror], [WARN_CFLAGS="${WARN_CFLAGS} -Werror"])
747 # The test used in AX_APPEND_COMPILE_FLAGS, generated using AC_LANG_PROGRAM, is
748 # written in such a way that it triggers warnings with the following warning
749 # flags. So they would always end up disabled if we put them there, because
750 # the test program would not build.
752 # Enable them here unconditionally. They are supported by GCC >= 4.8 and by
753 # Clang >= 3.3 (required by the project) and are only valid for C code.
754 WARN_CFLAGS="${WARN_CFLAGS} -Wold-style-definition -Wstrict-prototypes"
756 # CFLAGS from AX_APPEND_COMPILE_FLAGS.
757 AM_CXXFLAGS="${AM_CXXFLAGS} ${WARN_CXXFLAGS}"
758 AM_CFLAGS="${AM_CFLAGS} ${WARN_CFLAGS}"
760 # Done for AM_CXXFLAGS, AM_CFLAGS and AM_LDFLAGS.
761 AC_SUBST(AM_CXXFLAGS)
765 # Set global CPPFLAGS in AM_CPPFLAGS
766 AM_CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/src -I\$(top_srcdir)/src -include common/config.h"
767 AC_SUBST(AM_CPPFLAGS)
769 # Add glib to global link libs
770 LIBS="$LIBS $GLIB_LIBS"
772 # Abuse autoconf's AC_ARG_PROGRAM output variable 'program_transform_name'
773 # to rename babeltrace2.bin to babeltrace2 at install time.
774 program_transform_name="s&babeltrace2\.bin&babeltrace2&;$program_transform_name"
775 AC_SUBST(program_transform_name)
779 doc/api/libbabeltrace2/Doxyfile
780 doc/api/libbabeltrace2/Makefile
781 doc/bindings/Makefile
782 doc/bindings/python/Makefile
783 doc/contributing-images/Makefile
785 doc/man/asciidoc-attrs.conf
790 src/autodisc/Makefile
791 src/babeltrace2-ctf-writer.pc
793 src/bindings/Makefile
794 src/bindings/python/bt2/bt2/version.py
795 src/bindings/python/bt2/Makefile
796 src/bindings/python/bt2/setup.py
797 src/bindings/python/Makefile
802 src/ctf-writer/Makefile
803 src/fd-cache/Makefile
804 src/lib/graph/Makefile
805 src/lib/graph/message/Makefile
807 src/lib/plugin/Makefile
808 src/lib/prio-heap/Makefile
809 src/lib/trace-ir/Makefile
812 src/plugins/common/Makefile
813 src/plugins/common/muxing/Makefile
814 src/plugins/common/param-validation/Makefile
815 src/plugins/ctf/common/bfcr/Makefile
816 src/plugins/ctf/common/Makefile
817 src/plugins/ctf/common/metadata/Makefile
818 src/plugins/ctf/common/msg-iter/Makefile
819 src/plugins/ctf/fs-sink/Makefile
820 src/plugins/ctf/fs-src/Makefile
821 src/plugins/ctf/lttng-live/Makefile
822 src/plugins/ctf/Makefile
823 src/plugins/lttng-utils/debug-info/Makefile
824 src/plugins/lttng-utils/Makefile
826 src/plugins/text/dmesg/Makefile
827 src/plugins/text/Makefile
828 src/plugins/text/pretty/Makefile
829 src/plugins/text/details/Makefile
830 src/plugins/utils/counter/Makefile
831 src/plugins/utils/dummy/Makefile
832 src/plugins/utils/Makefile
833 src/plugins/utils/muxer/Makefile
834 src/plugins/utils/trimmer/Makefile
835 src/py-common/Makefile
836 src/python-plugin-provider/Makefile
837 src/param-parse/Makefile
838 src/string-format/Makefile
839 tests/bitfield/Makefile
840 tests/ctf-writer/Makefile
842 tests/lib/test-plugin-plugins/Makefile
843 tests/lib/conds/Makefile
845 tests/param-validation/Makefile
846 tests/plugins/Makefile
847 tests/plugins/src.ctf.fs/Makefile
848 tests/plugins/src.ctf.fs/succeed/Makefile
849 tests/plugins/sink.ctf.fs/Makefile
850 tests/plugins/sink.ctf.fs/succeed/Makefile
851 tests/plugins/flt.lttng-utils.debug-info/Makefile
852 tests/plugins/flt.utils.muxer/Makefile
853 tests/plugins/flt.utils.muxer/succeed/Makefile
854 tests/plugins/flt.utils.trimmer/Makefile
855 tests/plugins/sink.text.pretty/Makefile
857 tests/utils/tap/Makefile
860 AC_CONFIG_FILES([tests/utils/env.sh],[chmod +x tests/utils/env.sh])
865 # Mini-report on what will be built.
874 AS_IF([test -n "bt_version_name"], [
875 AS_ECHO("${PPRINT_COLOR_BLDBLU}Babeltrace $PACKAGE_VERSION \"bt_version_name\"$PPRINT_COLOR_RST")
877 AS_ECHO("${PPRINT_COLOR_BLDBLU}Babeltrace $PACKAGE_VERSION")
882 AS_IF([test -n "bt_version_description"], [
883 AS_IF([test -n "$FOLD"], [
884 AS_ECHO("`AS_ECHO("bt_version_description") | $FOLD -s`")
886 AS_ECHO("bt_version_description")
892 PPRINT_SUBTITLE([System])
894 # Target architecture we're building for.
895 target_arch=$host_cpu
898 if test $f = "-m32"; then
900 elif test $f = "-m64"; then
906 PPRINT_PROP_STRING([Target architecture], $target_arch)
909 PPRINT_SUBTITLE([Python 3 language support])
910 test "x$have_python" = "xyes" && value=1 || value=0
911 PPRINT_PROP_BOOL([Have Python interpreter], $value)
912 test "x$have_python_dev" = "xyes" && value=1 || value=0
913 PPRINT_PROP_BOOL([Have Python development libraries], $value)
914 test "x$enable_python_bindings" = "xyes" && value=1 || value=0
915 PPRINT_PROP_BOOL_CUSTOM([Python bindings], $value, [To enable, use --enable-python-bindings])
916 test "x$enable_python_plugins" = "xyes" && value=1 || value=0
917 PPRINT_PROP_BOOL_CUSTOM([Python plugin support], $value, [To enable, use --enable-python-plugins])
918 AS_IF([test "x$have_python" = "xyes"], [
919 PPRINT_PROP_STRING([Python interpreter path], [$PYTHON])
921 AS_IF([test "x$have_python_dev" = "xyes"], [
922 PPRINT_PROP_STRING([python-config path], [$PYTHON_CONFIG])
923 PPRINT_PROP_STRING([Python include paths], [$PYTHON_INCLUDE])
924 PPRINT_PROP_STRING([Python linker flags], [$PYTHON_LDFLAGS])
926 AE_IF_FEATURE_ENABLED([python-bindings], [
927 PPRINT_PROP_STRING([SWIG executable], [$SWIG])
928 PPRINT_PROP_STRING([SWIG library], [$SWIG_LIB])
932 PPRINT_SUBTITLE([Plugins])
933 PPRINT_PROP_BOOL(['ctf' plugin], 1)
934 test "x$enable_debug_info" = "xyes" && value=1 || value=0
935 PPRINT_PROP_BOOL_CUSTOM(['lttng-utils' plugin], $value, [To enable, use --enable-debug-info])
936 PPRINT_PROP_BOOL(['text' plugin], 1)
937 PPRINT_PROP_BOOL(['utils' plugin], 1)
940 PPRINT_SUBTITLE([Built-in features])
941 test "x$enable_built_in_plugins" = "xyes" && value=1 || value=0
942 PPRINT_PROP_BOOL_CUSTOM([Built-in plugins], $value, [To enable, use --enable-built-in-plugins])
943 test "x$enable_built_in_python_plugin_support" = "xyes" && value=1 || value=0
944 PPRINT_PROP_BOOL_CUSTOM([Built-in Python plugin support], $value, [To enable, use --enable-built-in-python-plugin-support])
947 PPRINT_SUBTITLE([Documentation])
949 # man pages build enabled/disabled
950 m4_pushdef([build_man_pages_msg], [Build and install man pages])
952 AS_IF([test "x$enable_man_pages" != "xno"], [
953 AS_IF([test "x$in_git_repo" = "xyes"], [
954 PPRINT_PROP_BOOL([build_man_pages_msg], 1)
956 AS_IF([test "x$have_asciidoc_xmlto" = "xyes"], [
957 PPRINT_PROP_BOOL([build_man_pages_msg], 1)
959 PPRINT_PROP_STRING([build_man_pages_msg],
960 [${PPRINT_COLOR_BLDGRN}yes (already built)],
961 $PPRINT_COLOR_SUBTITLE)
965 PPRINT_PROP_BOOL_CUSTOM([build_man_pages_msg], 0, [To build man pages, use --enable-man-pages])
968 m4_popdef([build_man_pages_msg])
970 test "x$enable_api_doc" = "xyes" && value=1 || value=0
971 PPRINT_PROP_BOOL_CUSTOM([HTML API documentation], $value, [To build documentation, use --enable-api-doc])
972 test "x$enable_python_bindings_doc" = "xyes" && value=1 || value=0
973 PPRINT_PROP_BOOL_CUSTOM([Python bindings documentation], $value, [To build the Python bindings documentation, use --enable-python-bindings-doc])
976 PPRINT_SUBTITLE([Logging])
977 PPRINT_PROP_STRING([Minimal log level], $BABELTRACE_MINIMAL_LOG_LEVEL)
980 PPRINT_SUBTITLE([Special build modes])
981 PPRINT_PROP_BOOL_CUSTOM([Debug mode], $BABELTRACE_DEBUG_MODE, [To enable, set the BABELTRACE_DEBUG_MODE environment variable to 1])
982 PPRINT_PROP_BOOL_CUSTOM([Developer mode], $BABELTRACE_DEV_MODE, [To enable, set the BABELTRACE_DEV_MODE environment variable to 1])
984 report_bindir="`eval eval echo $bindir`"
985 report_libdir="`eval eval echo $libdir`"
986 report_sysconfdif="`eval eval echo $sysconfdir`"
987 report_pluginsdir="`eval eval eval echo $BABELTRACE_PLUGINS_DIR`"
988 report_pluginprovidersdir="`eval eval eval echo $BABELTRACE_PLUGIN_PROVIDERS_DIR`"
990 # Print the bindir and libdir this `make install' will install into.
992 PPRINT_SUBTITLE([Install directories])
993 PPRINT_PROP_STRING([Binaries], [$report_bindir])
994 PPRINT_PROP_STRING([Libraries], [$report_libdir])
995 PPRINT_PROP_STRING([Plugins], [$report_pluginsdir])
996 PPRINT_PROP_STRING([Plugin providers], [$report_pluginprovidersdir])
997 PPRINT_PROP_STRING([Configuration], [$report_sysconfdif])
999 # vim: shiftwidth=2 softtabstop=2 expandtab