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.
7 # Project version information
8 m4_define([bt_version_major], [2])
9 m4_define([bt_version_minor], [1])
10 m4_define([bt_version_patch], [0])
11 m4_define([bt_version_dev_stage], [-rc1])
12 m4_define([bt_version], bt_version_major[.]bt_version_minor[.]bt_version_patch[]bt_version_dev_stage)
13 m4_define([bt_version_name], [[Codename TBD]])
14 m4_define([bt_version_description], [[Description TBD]])
16 # Library version information of "libbabeltrace2"
17 # Following the numbering scheme proposed by libtool for the library version
18 # http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
19 m4_define([bt_lib_version_current], [0])
20 m4_define([bt_lib_version_revision], [0])
21 m4_define([bt_lib_version_age], [0])
22 m4_define([bt_lib_version], bt_lib_version_current[:]bt_lib_version_revision[:]bt_lib_version_age)
26 ## Autoconf base setup ##
30 AC_INIT([babeltrace2],[bt_version],[jeremie dot galarneau at efficios dot com],[],[https://efficios.com/babeltrace/])
32 AC_SUBST([BABELTRACE_LIBRARY_VERSION], bt_lib_version)
34 AC_CONFIG_HEADERS([src/common/config.h])
35 AC_CONFIG_AUX_DIR([config])
36 AC_CONFIG_MACRO_DIR([m4])
38 AC_DEFINE([BT_VERSION_MAJOR], bt_version_major, [Babeltrace major version])
39 AC_DEFINE([BT_VERSION_MINOR], bt_version_minor, [Babeltrace minor version])
40 AC_DEFINE([BT_VERSION_PATCH], bt_version_patch, [Babeltrace patch version])
41 AC_DEFINE([BT_VERSION_DEV_STAGE], ["]bt_version_dev_stage["], [Babeltrace version development stage (can be empty)])
42 AC_DEFINE([BT_VERSION_NAME], ["]bt_version_name["], [Babeltrace version name])
43 AC_DEFINE([BT_VERSION_DESCRIPTION], ["]AS_ESCAPE(bt_version_description)["], [Babeltrace version description])
50 ## Automake base setup ##
53 AM_INIT_AUTOMAKE([1.12 foreign dist-bzip2 no-dist-gzip tar-ustar nostdinc -Wall -Wno-portability -Werror])
54 AM_MAINTAINER_MODE([enable])
56 # Enable silent rules by default
57 AM_SILENT_RULES([yes])
61 ## OS specific defaults ##
69 AE_FEATURE_DISABLE([debug-info])
73 AE_FEATURE_DISABLE([debug-info])
77 AE_FEATURE_DISABLE([debug-info])
78 LT_NO_UNDEFINED="-no-undefined"
83 AE_FEATURE_DISABLE([debug-info])
84 LT_NO_UNDEFINED="-no-undefined"
88 AM_CONDITIONAL([BABELTRACE_BUILD_WITH_MINGW], [test "x$MINGW32" = "xyes"])
89 AC_SUBST(LT_NO_UNDEFINED)
93 ## C compiler checks ##
96 # Choose the C compiler
98 # AC_PROG_CC_STDC was merged in AC_PROG_CC in autoconf 2.70
99 m4_version_prereq([2.70], [], [AC_PROG_CC_STDC])
101 # Make sure the C compiler supports C99
102 AS_IF([test "$ac_cv_prog_cc_c99" = "no"], [AC_MSG_ERROR([The compiler does not support C99])])
104 # Enable available system extensions and LFS support
105 AC_USE_SYSTEM_EXTENSIONS
108 # Make sure the C compiler supports __attributes__
110 AS_IF([test "x$ax_cv___attribute__" != "xyes"],
111 [AC_MSG_ERROR([The compiler does not support __attribute__ extensions])])
113 # Make sur we have pthread support
114 AX_PTHREAD([], [AC_MSG_ERROR([Could not configure pthread support])])
116 # Checks for typedefs, structures, and compiler characteristics.
131 AC_CHECK_TYPES([ptrdiff_t])
135 ## C++ compiler checks ##
138 # Require a C++11 compiler without GNU extensions (-std=c++11)
139 AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory])
166 # Check if the linker supports no-as-needed
167 AX_APPEND_LINK_FLAGS([-Wl,--no-as-needed], [LD_NO_AS_NEEDED])
168 AC_SUBST([LD_NO_AS_NEEDED])
170 # Check if the linker supports whole-archive
171 AX_CHECK_LINK_FLAG([-Wl,--whole-archive,--no-whole-archive],
173 AC_SUBST([LD_WHOLE_ARCHIVE], [-Wl,--whole-archive,])
174 AC_SUBST([LD_NO_WHOLE_ARCHIVE], [,--no-whole-archive])
176 # Fallback to force_load for the macOS linker
177 AX_CHECK_LINK_FLAG([-Wl,-force_load],
179 AC_SUBST([LD_WHOLE_ARCHIVE], [-Wl,-force_load,])
180 AC_SUBST([LD_NO_WHOLE_ARCHIVE], [])
182 AC_MSG_WARN([Can't find a linker option to force the inclusion of the static plugin archive objects.])
188 # Check if the linker supports the "notext" keyword
189 AX_CHECK_LINK_FLAG([-Wl,-z,notext],[
190 AC_SUBST([LD_NOTEXT], [-Wl,-z,notext])
195 ## Programs checks ##
203 AC_CHECK_PROGS([FOLD], [fold])
204 AC_CHECK_PROGS([ASCIIDOC], [asciidoc])
205 AC_CHECK_PROGS([XMLTO], [xmlto])
209 AX_PROG_BISON_VERSION([2.5], [have_bison=yes])
211 AS_IF([test "x$have_bison" != "xyes"], [
214 Bison >= 2.4 is required when building from the Git repository. You can
215 set the YACC variable to override automatic detection.
219 Missing Bison >= 2.4. Note that the parser files are already built in
220 this distribution tarball, so Bison is only needed if you intend to
221 modify their sources. You can set the YACC variable to override automatic
226 AM_CONDITIONAL([HAVE_BISON], [test "x$have_bison" = "xyes"])
229 # Prior to autoconf 2.70, AC_PROG_FLEX did not take an argument. This is not a
230 # problem since the argument is silently ignored by older versions.
231 AC_PROG_LEX([noyywrap])
232 AX_PROG_FLEX_VERSION([2.5.35], [have_flex=yes])
234 AS_IF([test "x$have_flex" != "xyes"], [
237 Flex >= 2.5.35 is required when building from the Git repository. You can
238 set the LEX variable to override automatic detection.
242 Missing Flex >= 2.5.35. Note that the lexer files are already built in
243 this distribution tarball, so Flex is only needed if you intend to
244 modify their sources. You can set the LEX variable to override automatic
249 AM_CONDITIONAL([HAVE_FLEX], [test "x$have_flex" = "xyes"])
251 # Always check for python, we will fail later if some features require it and
253 AM_PATH_PYTHON([3.0], [
254 AE_PATH_PYTHON_MODULES([PYTHON])
256 # pythondir is the path where extra modules are to be installed
257 pythondir=$PYTHON_PREFIX/$PYTHON_MODULES_PATH
259 # pyexecdir is the path that contains shared objects used by the extra modules
260 pyexecdir=$PYTHON_EXEC_PREFIX/$PYTHON_MODULES_PATH
262 # If no PYTHON_CONFIG was specified by the user, try to find it, starting
263 # with the one specific to the configured python version.
264 AS_IF([test "x$PYTHON_CONFIG" = "x"], [
265 AC_CHECK_PROGS([PYTHON_CONFIG], [python$PYTHON_VERSION-config python-config])
268 # If PYTHON_CONFIG is set use it to get the includes and ld flags, unless
269 # they were specified by the user.
270 AS_IF([test "x$PYTHON_CONFIG" != "x" ], [
271 AS_IF([test "x$PYTHON_INCLUDE" = "x"], [
272 AC_MSG_CHECKING([Python include flags])
273 PYTHON_INCLUDE=`$PYTHON_CONFIG --includes`
274 AC_MSG_RESULT([$PYTHON_INCLUDE])
277 AS_IF([test "x$PYTHON_LDFLAGS" = "x"], [
278 AC_MSG_CHECKING([Python library flags])
279 # Python 3.8+ requires that we pass --embed to get the -lpython3.x flag.
280 AS_IF([! PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags --embed`], [
281 PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags`
283 AC_MSG_RESULT([$PYTHON_LDFLAGS])
288 # Initialize and configure libtool
296 # Check what libraries are required on this platform to link sockets programs.
299 # Check for glib >= 2.28 with gmodule support
300 AM_PATH_GLIB_2_0([2.28.0], [],
301 AC_MSG_ERROR([glib >= 2.28 is required - download it from ftp://ftp.gtk.org/pub/gtk]),
305 # Checks for library functions.
339 # AC_FUNC_MALLOC causes problems when cross-compiling.
344 AC_CHECK_LIB([c], [fmemopen],
345 [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_FMEMOPEN], 1, [Has fmemopen support.])]
348 # Check for open_memstream
349 AC_CHECK_LIB([c], [open_memstream],
350 [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_OPEN_MEMSTREAM], 1, [Has open_memstream support.])]
353 # Check for posix_fallocate
354 AC_CHECK_LIB([c], [posix_fallocate],
355 [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_POSIX_FALLOCATE], 1, [Has posix_fallocate support.])]
363 AC_ARG_VAR([PYTHON_INCLUDE], [Include flags for Python, bypassing python-config])
364 AC_ARG_VAR([PYTHON_LDFLAGS], [Linker flags for Python, bypassing python-config])
365 AC_ARG_VAR([PYTHON_CONFIG], [Path to python-config])
367 # BABELTRACE_PLUGINS_DIR: Plugins directory
368 AC_ARG_VAR([BABELTRACE_PLUGINS_DIR], [built-in plugins install directory [LIBDIR/babeltrace2/plugins]])
369 AS_IF([test "x$BABELTRACE_PLUGINS_DIR" = x], [BABELTRACE_PLUGINS_DIR='${libdir}/babeltrace2/plugins'])
371 # BABELTRACE_PLUGIN_PROVIDERS_DIR: Plugin providers directory
372 AC_ARG_VAR([BABELTRACE_PLUGIN_PROVIDERS_DIR], [built-in plugin providers install directory [LIBDIR/babeltrace2/plugin-providers]])
373 AS_IF([test "x$BABELTRACE_PLUGIN_PROVIDERS_DIR" = x], [BABELTRACE_PLUGIN_PROVIDERS_DIR='${libdir}/babeltrace2/plugin-providers'])
375 # BABELTRACE_MINIMAL_LOG_LEVEL:
376 AC_ARG_VAR([BABELTRACE_MINIMAL_LOG_LEVEL], [Minimal log level for Babeltrace program, library, and plugins (TRACE, DEBUG (default), or INFO)])
377 AS_IF([test "x$BABELTRACE_MINIMAL_LOG_LEVEL" = x], [BABELTRACE_MINIMAL_LOG_LEVEL="DEBUG"])
378 AS_IF([test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "TRACE" && \
379 test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "DEBUG" && \
380 test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "INFO"],
381 [AC_MSG_ERROR([Invalid BABELTRACE_MINIMAL_LOG_LEVEL value ($BABELTRACE_MINIMAL_LOG_LEVEL): use TRACE, DEBUG, or INFO.])]
383 AC_DEFINE_UNQUOTED([BT_MINIMAL_LOG_LEVEL], [BT_LOG_$BABELTRACE_MINIMAL_LOG_LEVEL], [Minimal log level])
385 # BABELTRACE_DEV_MODE:
386 AC_ARG_VAR([BABELTRACE_DEV_MODE], [Set to 1 to enable the Babeltrace developer mode (enables run-time checks for plugin developers)])
387 AS_IF([test "x$BABELTRACE_DEV_MODE" = x1], [
388 AC_DEFINE([BT_DEV_MODE], 1, [Babeltrace developer mode])
389 ], [BABELTRACE_DEV_MODE=0])
390 AM_CONDITIONAL([DEV_MODE], [test "x$BABELTRACE_DEV_MODE" = x1])
392 # BABELTRACE_DEBUG_MODE:
393 AC_ARG_VAR([BABELTRACE_DEBUG_MODE], [Set to 1 to enable the Babeltrace debug mode (enables internal assertions for Babeltrace maintainers)])
394 AS_IF([test "x$BABELTRACE_DEBUG_MODE" = x1], [
395 AC_DEFINE([BT_DEBUG_MODE], 1, [Babeltrace debug mode])
396 ], [BABELTRACE_DEBUG_MODE=0])
400 ## Optionnal features selection ##
404 # Disabled by default
405 AE_FEATURE_DEFAULT_DISABLE
406 AE_FEATURE([python-bindings],[build the Python bindings])
408 # Python bindings documentation
409 # Disabled by default
410 AE_FEATURE_DEFAULT_DISABLE
411 AE_FEATURE([python-bindings-doc],[build the Python bindings documentation])
414 # Disabled by default
415 AE_FEATURE_DEFAULT_DISABLE
416 AE_FEATURE([python-plugins],[enable the Python plugins support for the library and converter])
419 # Enabled by default, except on some platforms
420 AE_FEATURE_DEFAULT_ENABLE
421 AE_FEATURE([debug-info],[disable the debug info support (default on macOS, Solaris and Windows)])
424 # Disabled by default
425 AE_FEATURE_DEFAULT_DISABLE
426 AE_FEATURE([api-doc],[build the HTML API documentation])
429 # Disabled by default
430 AE_FEATURE_DEFAULT_DISABLE
431 AE_FEATURE([built-in-plugins],[Statically-link in-tree plug-ins into the babeltrace2 executable])
433 # Built-in python plugin support
434 # Disabled by default
435 AE_FEATURE_DEFAULT_DISABLE
436 AE_FEATURE([built-in-python-plugin-support],[Statically-link Python plugin support into the babeltrace library])
440 AE_FEATURE_DEFAULT_ENABLE
441 AE_FEATURE([man-pages],[Do not build and install man pages (already built in a distributed tarball])
443 # When given, add -Werror to WARN_CFLAGS and WARN_CXXFLAGS.
444 # Disabled by default
445 AE_FEATURE_DEFAULT_DISABLE
446 AE_FEATURE([Werror],[Treat compiler warnings as errors.])
448 # When given, build with AddressSanitizer.
449 AE_FEATURE_DEFAULT_DISABLE
450 AE_FEATURE([asan],[Build with AddressSanitizer.])
453 ## Check for conflicting features selection ##
456 # Check for conflicting Python related features user choices.
457 AE_IF_FEATURE_ENABLED([python-plugins], [
458 AE_IF_FEATURE_UNDEF([python-bindings], [
459 # --enable-python-plugins was provided but --enable-python-bindings was
460 # omitted. Turn the Python bindings ON anyway because it's needed to
461 # use the Python plugins.
462 AE_FEATURE_ENABLE([python-bindings])
464 AE_IF_FEATURE_DISABLED([python-bindings], [
465 # --enable-python-plugins _and_ --disable-python-bindings were
466 # used. This is invalid because Python plugins need the Python
467 # bindings to be useful.
468 AC_MSG_ERROR(--enable-python-bindings must be used to support Python plugins)
473 # Check for conflicting optional features user choices
474 AE_IF_FEATURE_ENABLED([built-in-plugins], [
475 # Built-in plug-ins are only available when the --disable-shared --enable-static options are used.
476 AE_IF_FEATURE_NOT_ENABLED([static], [AC_MSG_ERROR(--enable-static must be used to bundle plug-ins in the babeltrace2 executable)])
477 AE_IF_FEATURE_ENABLED([shared], [AC_MSG_ERROR(--disable-shared must be used to bundle plug-ins in the babeltrace2 executable)])
480 AE_IF_FEATURE_ENABLED([built-in-python-plugin-support], [
481 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])])
482 # Built-in plug-ins are only available when the --disable-shared --enable-static options are used.
483 AE_IF_FEATURE_NOT_ENABLED([static], [AC_MSG_ERROR(--enable-static must be used to bundle Python plugin support in the babeltrace2 executable)])
484 AE_IF_FEATURE_ENABLED([shared], [AC_MSG_ERROR(--disable-shared must be used to bundle Python plugin support in the babeltrace2 executable)])
489 ## Set automake variables for optional feature conditionnals in Makefile.am ##
492 AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS], AE_IS_FEATURE_ENABLED([python-bindings]))
493 AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS_DOC], AE_IS_FEATURE_ENABLED([python-bindings-doc]))
494 AM_CONDITIONAL([ENABLE_PYTHON_PLUGINS], AE_IS_FEATURE_ENABLED([python-plugins]))
495 AM_CONDITIONAL([ENABLE_DEBUG_INFO], AE_IS_FEATURE_ENABLED([debug-info]))
496 AM_CONDITIONAL([ENABLE_API_DOC], AE_IS_FEATURE_ENABLED([api-doc]))
497 AM_CONDITIONAL([ENABLE_BUILT_IN_PLUGINS], AE_IS_FEATURE_ENABLED([built-in-plugins]))
498 AM_CONDITIONAL([ENABLE_BUILT_IN_PYTHON_PLUGIN_SUPPORT], AE_IS_FEATURE_ENABLED([built-in-python-plugin-support]))
499 AM_CONDITIONAL([ENABLE_MAN_PAGES], AE_IS_FEATURE_ENABLED([man-pages]))
500 AM_CONDITIONAL([ENABLE_PYTHON_COMMON_DEPS], AE_IS_FEATURE_ENABLED([python-bindings]) || AE_IS_FEATURE_ENABLED([python-plugins]))
501 AM_CONDITIONAL([ENABLE_ASAN], AE_IS_FEATURE_ENABLED([asan]))
505 ## Set defines for optional features conditionnals in the source code ##
508 AE_IF_FEATURE_ENABLED([built-in-plugins],
509 [AC_DEFINE([BT_BUILT_IN_PLUGINS], [1], [Define to 1 to register plug-in attributes in static executable sections])]
512 AE_IF_FEATURE_ENABLED([built-in-python-plugin-support],
513 [AC_DEFINE([BT_BUILT_IN_PYTHON_PLUGIN_SUPPORT], [1], [Define to 1 to register plug-in attributes in static executable sections])]
516 AE_IF_FEATURE_ENABLED([debug-info], [ENABLE_DEBUG_INFO_VAL=1], [ENABLE_DEBUG_INFO_VAL=0])
517 AC_SUBST([ENABLE_DEBUG_INFO_VAL])
519 AE_IF_FEATURE_ENABLED([asan], [ENABLE_ASAN=1], [ENABLE_ASAN=0])
520 AC_SUBST([ENABLE_ASAN])
523 ## Check for optional features dependencies ##
526 # The Python bindings require SWIG
527 AE_IF_FEATURE_ENABLED([python-bindings],
528 [AX_PKG_SWIG(2.0.0, [], [AC_MSG_ERROR([SWIG 2.0.0 or newer is required to build the python bindings])])]
531 AS_IF([test "$PYTHON" != :], [have_python=yes], [have_python=no])
532 AS_IF([test -n "$PYTHON_CONFIG"], [have_python_dev=yes], [have_python_dev=no])
534 AM_CONDITIONAL([HAVE_PYTHON], [test "x$have_python" = xyes])
535 AM_CONDITIONAL([HAVE_PYTHON_DEV], [test "x$have_python_dev" = xyes])
537 AS_IF([AE_IS_FEATURE_ENABLED([python-bindings]) || AE_IS_FEATURE_ENABLED([python-plugins])], [
538 AS_IF([test "x$have_python_dev" = xno], [
539 AC_MSG_ERROR([Cannot find a suitable python-config. You can override the python-config path with the PYTHON_CONFIG environment variable.])
542 AX_COMPARE_VERSION(["$PYTHON_VERSION"], [ge], ["3.12"], [
543 AC_MSG_CHECKING([for python setuptools])
544 AS_IF(["$PYTHON" -c "import setuptools" 2>/dev/null], [
548 AC_MSG_ERROR([Python >= 3.12 removed 'distutils', the 'setuptools' module needs to be installed for the selected interpreter.])
553 AE_IF_FEATURE_ENABLED([python-bindings-doc],
555 AE_CHECK_PYTHON_SPHINX([PYTHON])
556 AS_IF([test "x$PYTHON_SPHINX_EXISTS" = xno], [
557 AC_MSG_ERROR([The Sphinx package for Python 3 is required to build the Python bindings documentation])
560 AE_IF_FEATURE_NOT_ENABLED([python-bindings], [
561 AC_MSG_ERROR([The Python bindings are required to build their documentation])
566 AE_IF_FEATURE_ENABLED([debug-info], [
567 # Check if libelf and libdw are present
568 PKG_CHECK_MODULES([ELFUTILS], [libelf >= 0.154 libdw >= 0.154],
570 dnl PKG_CHECK_MODULES defines ELFUTILS_LIBS
573 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.])
575 # Turns out SLES12 doesn't bother shipping .pc file for libelf
576 AC_MSG_WARN([Finding libelf without pkg-config.])
577 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.)])
578 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.)])
579 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.)])
580 ELFUTILS_LIBS="-lelf -ldw"
583 AC_SUBST([ELFUTILS_LIBS])
585 AE_IF_FEATURE_ENABLED([api-doc],
587 DX_DOXYGEN_FEATURE(ON)
597 DX_INIT_DOXYGEN([Babeltrace 2], [$(builddir)/Doxyfile], [output])
598 AS_IF([test -z "$DX_DOXYGEN"],
599 [AC_MSG_ERROR([You need doxygen to enable the API documentation])]
604 have_asciidoc_xmlto=no
605 warn_prebuilt_man_pages=no
607 AE_IF_FEATURE_ENABLED([man-pages], [
608 AS_IF([test "x$ASCIIDOC" = "x" || test "x$XMLTO" = "x"], [
610 # this is an error because we're in the Git repo, which
611 # means the man pages are not already generated for us,
612 # thus asciixmlto are required because we were asked
613 # to build the man pages
615 You need asciidoc and xmlto to build the Babeltrace man pages. Use
616 --disable-man-pages to disable building the man pages, in which case
617 they will not be installed.
620 # only warn here: since we're in the tarball, the man
621 # pages should already be generated at this point, thus
622 # asciidoc/xmlto are not strictly required
623 warn_prebuilt_man_pages=yes
626 have_asciidoc_xmlto=yes
630 # export AsciiDoc and xmlto existence
631 AM_CONDITIONAL([HAVE_ASCIIDOC_XMLTO], [test "x$have_asciidoc_xmlto" = "xyes"])
633 # a wonderful hack that seems necessary because $libdir is
634 # literally `${exec_prefix}/lib`, and $exec_prefix is set to `NONE`
635 # by autoconf when it's not specified by the user
636 AS_IF([test "x$exec_prefix" = xNONE], [
637 AS_IF([test "x$prefix" = xNONE], [
638 PREFIX="$ac_default_prefix"
650 # If --enable-asan is used...
651 AE_IF_FEATURE_ENABLED([asan], [
652 # ... add -fsanitize=address to the *FLAGS variables.
653 ASAN_CFLAGS="-fsanitize=address"
654 ASAN_CXXFLAGS="-fsanitize=address"
655 ASAN_LDFLAGS="-fsanitize=address"
660 # CFLAGS from libraries (the glib ones are needed for the following sizeof
662 AM_CFLAGS="${PTHREAD_CFLAGS} ${GLIB_CFLAGS} ${ASAN_CFLAGS}"
663 AM_CXXFLAGS="${PTHREAD_CFLAGS} ${GLIB_CFLAGS} ${ASAN_CXXFLAGS}"
664 AM_LDFLAGS="${ASAN_LDFLAGS}"
666 # Check that the current size_t matches the size that glib thinks it should
667 # be. This catches problems on multi-arch where people try to do a 32-bit
668 # build while pointing at 64-bit glib headers. This is a common error because
669 # glib.h is not platform specific but it includes glibconfig.h which is and
670 # is usually installed in a non-standard path.
672 # Do this before enabling all the warning flags, as the
673 # AC_LANG_PROGRAM-generated program may generate some warning, which makes this
674 # test fail unnecessarily.
676 # Older versions of the pkg-config macros disallows PKG_* in the autoconf
677 # output. Specifically allow pkg_config_libdir to be able to print the
679 m4_pattern_allow([PKG_CONFIG_LIBDIR])
681 save_CFLAGS=${CFLAGS}
682 CFLAGS="${CFLAGS} ${AM_CFLAGS}"
688 G_STATIC_ASSERT(sizeof(size_t) == GLIB_SIZEOF_SIZE_T);
692 sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T. You probably need to set
693 PKG_CONFIG_LIBDIR to point to the right pkg-config files for your build
697 CFLAGS=${save_CFLAGS}
699 # Detect C and LD warning flags supported by the compiler.
701 # Detect warning flags supported by the C and C++ compilers and append them to
702 # WARN_CFLAGS and WARN_CXXFLAGS.
704 m4_define([WARN_FLAGS_LIST], [ dnl
707 -Wmissing-prototypes dnl
708 -Wmissing-declarations dnl
709 -Wnull-dereference dnl
711 -Wredundant-decls dnl
713 dnl GCC's -Wshadow warns about constructor parameters shadowing fields, but
714 dnl Clang's does not. Enable Clang's `-Wshadow-field-in-constructor`, to make
715 dnl Clang warn about that.
716 -Wshadow-field-in-constructor dnl
718 -Wjump-misses-init dnl
719 -Wsuggest-attribute=format dnl
720 -Wtautological-constant-out-of-range-compare dnl
724 -Wstrict-aliasing dnl
725 -Wmissing-noreturn dnl
727 -Wduplicated-cond dnl
728 -Wduplicated-branches dnl
730 -Wsuggest-override dnl
731 -Wno-unused-parameter dnl
732 -Wno-sign-compare dnl
734 dnl Some versions of SWIG (like 3.0.12) generate code that produces
735 dnl -Wcast-function-type warnings. This warning is present in gcc >= 8. This
736 dnl combo happens on RHEL/Centos 8, for example. Later versions of SWIG (like
737 dnl 4.0.1) have the correct function signatures to not produce this warning.
738 dnl It's simpler to just disable the warning globally.
740 dnl Note that the Debian/Ubuntu SWIG package 3.0.12-2 contains a local patch to
741 dnl fix this (python-fix-function-cast-warnings.patch), so you won't be able to
742 dnl reproduce the warning using that package.
744 dnl Ref: https://github.com/swig/swig/issues/1259
745 -Wno-cast-function-type dnl
746 -Wno-missing-field-initializers dnl
747 -Wno-maybe-uninitialized dnl
750 # Pass -Werror as an extra flag during the test: this is needed to make the
751 # -Wunknown-warning-option diagnostic fatal with clang.
753 AX_APPEND_COMPILE_FLAGS([WARN_FLAGS_LIST], [WARN_CXXFLAGS], [-Werror])
755 AX_APPEND_COMPILE_FLAGS([WARN_FLAGS_LIST], [WARN_CFLAGS], [-Werror])
757 AE_IF_FEATURE_ENABLED([Werror], [WARN_CXXFLAGS="${WARN_CXXFLAGS} -Werror"])
758 AE_IF_FEATURE_ENABLED([Werror], [WARN_CFLAGS="${WARN_CFLAGS} -Werror"])
760 # The test used in AX_APPEND_COMPILE_FLAGS, generated using AC_LANG_PROGRAM, is
761 # written in such a way that it triggers warnings with the following warning
762 # flags. So they would always end up disabled if we put them there, because
763 # the test program would not build.
765 # Enable them here unconditionally. They are supported by GCC >= 4.8 and by
766 # Clang >= 3.3 (required by the project) and are only valid for C code.
767 WARN_CFLAGS="${WARN_CFLAGS} -Wold-style-definition -Wstrict-prototypes"
769 # CFLAGS from AX_APPEND_COMPILE_FLAGS.
770 AM_CXXFLAGS="${AM_CXXFLAGS} ${WARN_CXXFLAGS}"
771 AM_CFLAGS="${AM_CFLAGS} ${WARN_CFLAGS}"
773 # Done for AM_CXXFLAGS, AM_CFLAGS and AM_LDFLAGS.
774 AC_SUBST(AM_CXXFLAGS)
778 # Set global CPPFLAGS in AM_CPPFLAGS
779 AM_CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/src -I\$(top_srcdir)/src -include common/config.h"
780 AC_SUBST(AM_CPPFLAGS)
782 # Add glib to global link libs
783 LIBS="$LIBS $GLIB_LIBS"
785 # Abuse autoconf's AC_ARG_PROGRAM output variable 'program_transform_name'
786 # to rename babeltrace2.bin to babeltrace2 at install time.
787 program_transform_name="s&babeltrace2\.bin&babeltrace2&;$program_transform_name"
788 AC_SUBST(program_transform_name)
792 doc/api/libbabeltrace2/Doxyfile
793 doc/api/libbabeltrace2/Makefile
794 doc/bindings/Makefile
795 doc/bindings/python/Makefile
796 doc/contributing-images/Makefile
798 doc/man/asciidoc-attrs.conf
803 src/autodisc/Makefile
804 src/babeltrace2-ctf-writer.pc
806 src/bindings/Makefile
807 src/bindings/python/bt2/bt2/version.py
808 src/bindings/python/bt2/Makefile
809 src/bindings/python/bt2/setup.py
810 src/bindings/python/Makefile
813 src/cpp-common/Makefile
816 src/ctf-writer/Makefile
817 src/fd-cache/Makefile
818 src/lib/graph/Makefile
819 src/lib/graph/message/Makefile
821 src/lib/plugin/Makefile
822 src/lib/prio-heap/Makefile
823 src/lib/trace-ir/Makefile
826 src/plugins/common/Makefile
827 src/plugins/common/muxing/Makefile
828 src/plugins/common/param-validation/Makefile
829 src/plugins/ctf/common/bfcr/Makefile
830 src/plugins/ctf/common/Makefile
831 src/plugins/ctf/common/metadata/Makefile
832 src/plugins/ctf/common/msg-iter/Makefile
833 src/plugins/ctf/fs-sink/Makefile
834 src/plugins/ctf/fs-src/Makefile
835 src/plugins/ctf/lttng-live/Makefile
836 src/plugins/ctf/Makefile
837 src/plugins/lttng-utils/debug-info/Makefile
838 src/plugins/lttng-utils/Makefile
840 src/plugins/text/dmesg/Makefile
841 src/plugins/text/Makefile
842 src/plugins/text/pretty/Makefile
843 src/plugins/text/details/Makefile
844 src/plugins/utils/counter/Makefile
845 src/plugins/utils/dummy/Makefile
846 src/plugins/utils/Makefile
847 src/plugins/utils/muxer/Makefile
848 src/plugins/utils/trimmer/Makefile
849 src/py-common/Makefile
850 src/python-plugin-provider/Makefile
851 src/param-parse/Makefile
852 src/string-format/Makefile
853 tests/bitfield/Makefile
854 tests/ctf-writer/Makefile
856 tests/lib/test-plugin-plugins/Makefile
857 tests/lib/conds/Makefile
859 tests/param-validation/Makefile
860 tests/plugins/Makefile
861 tests/plugins/src.ctf.fs/Makefile
862 tests/plugins/src.ctf.fs/succeed/Makefile
863 tests/plugins/sink.ctf.fs/Makefile
864 tests/plugins/sink.ctf.fs/succeed/Makefile
865 tests/plugins/flt.lttng-utils.debug-info/Makefile
866 tests/plugins/flt.utils.muxer/Makefile
867 tests/plugins/flt.utils.muxer/succeed/Makefile
868 tests/plugins/flt.utils.trimmer/Makefile
869 tests/plugins/sink.text.pretty/Makefile
871 tests/utils/tap/Makefile
874 AC_CONFIG_FILES([tests/utils/env.sh],[chmod +x tests/utils/env.sh])
879 # Mini-report on what will be built.
888 AS_IF([test -n "bt_version_name"], [
889 AS_ECHO("${PPRINT_COLOR_BLDBLU}Babeltrace $PACKAGE_VERSION \"bt_version_name\"$PPRINT_COLOR_RST")
891 AS_ECHO("${PPRINT_COLOR_BLDBLU}Babeltrace $PACKAGE_VERSION")
896 AS_IF([test -n "bt_version_description"], [
897 AS_IF([test -n "$FOLD"], [
898 AS_ECHO("`AS_ECHO("bt_version_description") | $FOLD -s`")
900 AS_ECHO("bt_version_description")
906 PPRINT_SUBTITLE([System])
908 # Target architecture we're building for.
909 target_arch=$host_cpu
912 if test $f = "-m32"; then
914 elif test $f = "-m64"; then
920 PPRINT_PROP_STRING([Target architecture], $target_arch)
923 PPRINT_SUBTITLE([Python 3 language support])
924 test "x$have_python" = "xyes" && value=1 || value=0
925 PPRINT_PROP_BOOL([Have Python interpreter], $value)
926 test "x$have_python_dev" = "xyes" && value=1 || value=0
927 PPRINT_PROP_BOOL([Have Python development libraries], $value)
928 test "x$enable_python_bindings" = "xyes" && value=1 || value=0
929 PPRINT_PROP_BOOL_CUSTOM([Python bindings], $value, [To enable, use --enable-python-bindings])
930 test "x$enable_python_plugins" = "xyes" && value=1 || value=0
931 PPRINT_PROP_BOOL_CUSTOM([Python plugin support], $value, [To enable, use --enable-python-plugins])
932 AS_IF([test "x$have_python" = "xyes"], [
933 PPRINT_PROP_STRING([Python interpreter path], [$PYTHON])
935 AS_IF([test "x$have_python_dev" = "xyes"], [
936 PPRINT_PROP_STRING([python-config path], [$PYTHON_CONFIG])
937 PPRINT_PROP_STRING([Python include paths], [$PYTHON_INCLUDE])
938 PPRINT_PROP_STRING([Python linker flags], [$PYTHON_LDFLAGS])
940 AE_IF_FEATURE_ENABLED([python-bindings], [
941 PPRINT_PROP_STRING([SWIG executable], [$SWIG])
942 PPRINT_PROP_STRING([SWIG library], [$SWIG_LIB])
946 PPRINT_SUBTITLE([Plugins])
947 PPRINT_PROP_BOOL(['ctf' plugin], 1)
948 test "x$enable_debug_info" = "xyes" && value=1 || value=0
949 PPRINT_PROP_BOOL_CUSTOM(['lttng-utils' plugin], $value, [To enable, use --enable-debug-info])
950 PPRINT_PROP_BOOL(['text' plugin], 1)
951 PPRINT_PROP_BOOL(['utils' plugin], 1)
954 PPRINT_SUBTITLE([Built-in features])
955 test "x$enable_built_in_plugins" = "xyes" && value=1 || value=0
956 PPRINT_PROP_BOOL_CUSTOM([Built-in plugins], $value, [To enable, use --enable-built-in-plugins])
957 test "x$enable_built_in_python_plugin_support" = "xyes" && value=1 || value=0
958 PPRINT_PROP_BOOL_CUSTOM([Built-in Python plugin support], $value, [To enable, use --enable-built-in-python-plugin-support])
961 PPRINT_SUBTITLE([Documentation])
963 # man pages build enabled/disabled
964 m4_pushdef([build_man_pages_msg], [Build and install man pages])
966 AE_IF_FEATURE_ENABLED([man-pages], [
968 PPRINT_PROP_BOOL([build_man_pages_msg], 1)
970 AS_IF([test "x$have_asciidoc_xmlto" = "xyes"], [
971 PPRINT_PROP_BOOL([build_man_pages_msg], 1)
973 PPRINT_PROP_STRING([build_man_pages_msg],
974 [${PPRINT_COLOR_BLDGRN}yes (already built)],
975 $PPRINT_COLOR_SUBTITLE)
979 PPRINT_PROP_BOOL_CUSTOM([build_man_pages_msg], 0, [To build man pages, use --enable-man-pages])
982 m4_popdef([build_man_pages_msg])
984 test "x$enable_api_doc" = "xyes" && value=1 || value=0
985 PPRINT_PROP_BOOL_CUSTOM([HTML API documentation], $value, [To build documentation, use --enable-api-doc])
986 test "x$enable_python_bindings_doc" = "xyes" && value=1 || value=0
987 PPRINT_PROP_BOOL_CUSTOM([Python bindings documentation], $value, [To build the Python bindings documentation, use --enable-python-bindings-doc])
990 PPRINT_SUBTITLE([Logging])
991 PPRINT_PROP_STRING([Minimal log level], $BABELTRACE_MINIMAL_LOG_LEVEL)
994 PPRINT_SUBTITLE([Special build modes])
995 PPRINT_PROP_BOOL_CUSTOM([Debug mode], $BABELTRACE_DEBUG_MODE, [To enable, set the BABELTRACE_DEBUG_MODE environment variable to 1])
996 PPRINT_PROP_BOOL_CUSTOM([Developer mode], $BABELTRACE_DEV_MODE, [To enable, set the BABELTRACE_DEV_MODE environment variable to 1])
998 report_bindir="`eval eval echo $bindir`"
999 report_libdir="`eval eval echo $libdir`"
1000 report_sysconfdif="`eval eval echo $sysconfdir`"
1001 report_pluginsdir="`eval eval eval echo $BABELTRACE_PLUGINS_DIR`"
1002 report_pluginprovidersdir="`eval eval eval echo $BABELTRACE_PLUGIN_PROVIDERS_DIR`"
1004 # Print the bindir and libdir this `make install' will install into.
1006 PPRINT_SUBTITLE([Install directories])
1007 PPRINT_PROP_STRING([Binaries], [$report_bindir])
1008 PPRINT_PROP_STRING([Libraries], [$report_libdir])
1009 PPRINT_PROP_STRING([Plugins], [$report_pluginsdir])
1010 PPRINT_PROP_STRING([Plugin providers], [$report_pluginprovidersdir])
1011 PPRINT_PROP_STRING([Configuration], [$report_sysconfdif])
1013 # vim: shiftwidth=2 softtabstop=2 expandtab