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 m4_version_prereq([2.70], [], [AC_PROG_CC_STDC])
99 # Make sure the c compiler supports C99
100 AS_IF([test "$ac_cv_prog_cc_c99" = "no"], [AC_MSG_ERROR([The compiler does not support C99])])
102 # Enable available system extensions and LFS support
103 AC_USE_SYSTEM_EXTENSIONS
106 # Make sure the c compiler supports __attributes__
108 AS_IF([test "x$ax_cv___attribute__" != "xyes"],
109 [AC_MSG_ERROR([The compiler does not support __attribute__ extensions])])
111 # Make sur we have pthread support
112 AX_PTHREAD([], [AC_MSG_ERROR([Could not configure pthread support])])
114 # Checks for typedefs, structures, and compiler characteristics.
129 AC_CHECK_TYPES([ptrdiff_t])
133 ## C++ compiler checks ##
136 # Require a C++11 compiler without GNU extensions (-std=c++11)
137 AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory])
164 # Check if the linker supports no-as-needed
165 AX_APPEND_LINK_FLAGS([-Wl,--no-as-needed], [LD_NO_AS_NEEDED])
166 AC_SUBST([LD_NO_AS_NEEDED])
168 # Check if the linker supports whole-archive
169 AX_CHECK_LINK_FLAG([-Wl,--whole-archive,--no-whole-archive],
171 AC_SUBST([LD_WHOLE_ARCHIVE], [-Wl,--whole-archive,])
172 AC_SUBST([LD_NO_WHOLE_ARCHIVE], [,--no-whole-archive])
174 # Fallback to force_load for the macOS linker
175 AX_CHECK_LINK_FLAG([-Wl,-force_load],
177 AC_SUBST([LD_WHOLE_ARCHIVE], [-Wl,-force_load,])
178 AC_SUBST([LD_NO_WHOLE_ARCHIVE], [])
180 AC_MSG_WARN([Can't find a linker option to force the inclusion of the static plugin archive objects.])
186 # Check if the linker supports the "notext" keyword
187 AX_CHECK_LINK_FLAG([-Wl,-z,notext],[
188 AC_SUBST([LD_NOTEXT], [-Wl,-z,notext])
193 ## Programs checks ##
201 AC_PATH_PROG([report_fold], [fold])
203 # set $IN_GIT_REPO if we're in the Git repository; the `bootstrap` file
204 # is not distributed in tarballs
205 AS_IF([test -f "$srcdir/bootstrap"], [in_git_repo=yes], [in_git_repo=no])
206 AM_CONDITIONAL([IN_GIT_REPO], [test "x$in_git_repo" = "xyes"])
210 AX_PROG_BISON_VERSION([2.5], [have_bison=yes])
212 AS_IF([test "x$have_bison" != "xyes"], [
213 AS_IF([test "x$in_git_repo" = "xyes"], [
215 Bison >= 2.4 is required when building from the Git repository. You can
216 set the YACC variable to override automatic detection.
220 Missing Bison >= 2.4. Note that the parser files are already built in
221 this distribution tarball, so Bison is only needed if you intend to
222 modify their sources. You can set the YACC variable to override automatic
227 AM_CONDITIONAL([HAVE_BISON], [test "x$have_bison" = "xyes"])
230 # Prior to autoconf 2.70, AC_PROG_FLEX did not take an argument. This is not a
231 # problem since the argument is silently ignored by older versions.
232 AC_PROG_LEX([noyywrap])
233 AX_PROG_FLEX_VERSION([2.5.35], [have_flex=yes])
235 AS_IF([test "x$have_flex" != "xyes"], [
236 AS_IF([test "x$in_git_repo" = "xyes"], [
238 Flex >= 2.5.35 is required when building from the Git repository. You can
239 set the LEX variable to override automatic detection.
243 Missing Flex >= 2.5.35. Note that the lexer files are already built in
244 this distribution tarball, so Flex is only needed if you intend to
245 modify their sources. You can set the LEX variable to override automatic
250 AM_CONDITIONAL([HAVE_FLEX], [test "x$have_flex" = "xyes"])
252 # Initialize and configure libtool
260 # Check what libraries are required on this platform to link sockets programs.
263 # Check for glib >= 2.28 with gmodule support
264 AM_PATH_GLIB_2_0([2.28.0], [],
265 AC_MSG_ERROR([glib >= 2.28 is required - download it from ftp://ftp.gtk.org/pub/gtk]),
269 # Checks for library functions.
303 # AC_FUNC_MALLOC causes problems when cross-compiling.
308 AC_CHECK_LIB([c], [fmemopen],
309 [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_FMEMOPEN], 1, [Has fmemopen support.])]
312 # Check for open_memstream
313 AC_CHECK_LIB([c], [open_memstream],
314 [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_OPEN_MEMSTREAM], 1, [Has open_memstream support.])]
317 # Check for posix_fallocate
318 AC_CHECK_LIB([c], [posix_fallocate],
319 [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_POSIX_FALLOCATE], 1, [Has posix_fallocate support.])]
327 AC_ARG_VAR([PYTHON_INCLUDE], [Include flags for Python, bypassing python-config])
328 AC_ARG_VAR([PYTHON_LDFLAGS], [Linker flags for Python, bypassing python-config])
329 AC_ARG_VAR([PYTHON_CONFIG], [Path to python-config])
331 # BABELTRACE_PLUGINS_DIR: Plugins directory
332 AC_ARG_VAR([BABELTRACE_PLUGINS_DIR], [built-in plugins install directory [LIBDIR/babeltrace2/plugins]])
333 AS_IF([test "x$BABELTRACE_PLUGINS_DIR" = x], [BABELTRACE_PLUGINS_DIR='${libdir}/babeltrace2/plugins'])
335 # BABELTRACE_PLUGIN_PROVIDERS_DIR: Plugin providers directory
336 AC_ARG_VAR([BABELTRACE_PLUGIN_PROVIDERS_DIR], [built-in plugin providers install directory [LIBDIR/babeltrace2/plugin-providers]])
337 AS_IF([test "x$BABELTRACE_PLUGIN_PROVIDERS_DIR" = x], [BABELTRACE_PLUGIN_PROVIDERS_DIR='${libdir}/babeltrace2/plugin-providers'])
339 # BABELTRACE_MINIMAL_LOG_LEVEL:
340 AC_ARG_VAR([BABELTRACE_MINIMAL_LOG_LEVEL], [Minimal log level for Babeltrace program, library, and plugins (TRACE, DEBUG (default), or INFO)])
341 AS_IF([test "x$BABELTRACE_MINIMAL_LOG_LEVEL" = x], [BABELTRACE_MINIMAL_LOG_LEVEL="DEBUG"])
342 AS_IF([test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "TRACE" && \
343 test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "DEBUG" && \
344 test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "INFO"],
345 [AC_MSG_ERROR([Invalid BABELTRACE_MINIMAL_LOG_LEVEL value ($BABELTRACE_MINIMAL_LOG_LEVEL): use TRACE, DEBUG, or INFO.])]
347 AC_DEFINE_UNQUOTED([BT_MINIMAL_LOG_LEVEL], [BT_LOG_$BABELTRACE_MINIMAL_LOG_LEVEL], [Minimal log level])
349 # BABELTRACE_DEV_MODE:
350 AC_ARG_VAR([BABELTRACE_DEV_MODE], [Set to 1 to enable the Babeltrace developer mode (enables run-time checks for plugin developers)])
351 AS_IF([test "x$BABELTRACE_DEV_MODE" = x1], [
352 AC_DEFINE([BT_DEV_MODE], 1, [Babeltrace developer mode])
353 ], [BABELTRACE_DEV_MODE=0])
354 AM_CONDITIONAL([DEV_MODE], [test "x$BABELTRACE_DEV_MODE" = x1])
356 # BABELTRACE_DEBUG_MODE:
357 AC_ARG_VAR([BABELTRACE_DEBUG_MODE], [Set to 1 to enable the Babeltrace debug mode (enables internal assertions for Babeltrace maintainers)])
358 AS_IF([test "x$BABELTRACE_DEBUG_MODE" = x1], [
359 AC_DEFINE([BT_DEBUG_MODE], 1, [Babeltrace debug mode])
360 ], [BABELTRACE_DEBUG_MODE=0])
364 ## Optionnal features selection ##
368 # Disabled by default
369 AE_FEATURE_DEFAULT_DISABLE
370 AE_FEATURE([python-bindings],[build the Python bindings])
372 # Python bindings documentation
373 # Disabled by default
374 AE_FEATURE_DEFAULT_DISABLE
375 AE_FEATURE([python-bindings-doc],[build the Python bindings documentation])
378 # Disabled by default
379 AE_FEATURE_DEFAULT_DISABLE
380 AE_FEATURE([python-plugins],[enable the Python plugins support for the library and converter])
383 # Enabled by default, except on some platforms
384 AE_FEATURE_DEFAULT_ENABLE
385 AE_FEATURE([debug-info],[disable the debug info support (default on macOS, Solaris and Windows)])
388 # Disabled by default
389 AE_FEATURE_DEFAULT_DISABLE
390 AE_FEATURE([api-doc],[build the HTML API documentation])
393 # Disabled by default
394 AE_FEATURE_DEFAULT_DISABLE
395 AE_FEATURE([built-in-plugins],[Statically-link in-tree plug-ins into the babeltrace2 executable])
397 # Built-in python plugin support
398 # Disabled by default
399 AE_FEATURE_DEFAULT_DISABLE
400 AE_FEATURE([built-in-python-plugin-support],[Statically-link Python plugin support into the babeltrace library])
404 AE_FEATURE_DEFAULT_ENABLE
405 AE_FEATURE([man-pages],[Do not build and install man pages (already built in a distributed tarball])
407 # When given, add -Werror to WARN_CFLAGS and WARN_CXXFLAGS.
408 # Disabled by default
409 AE_FEATURE_DEFAULT_DISABLE
410 AE_FEATURE([Werror],[Treat compiler warnings as errors.])
412 # When given, build with AddressSanitizer.
413 AE_FEATURE_DEFAULT_DISABLE
414 AE_FEATURE([asan],[Build with AddressSanitizer.])
417 ## Check for conflicting features selection ##
420 # Check for conflicting Python related features user choices.
421 AE_IF_FEATURE_ENABLED([python-plugins], [
422 AE_IF_FEATURE_UNDEF([python-bindings], [
423 # --enable-python-plugins was provided but --enable-python-bindings was
424 # omitted. Turn the Python bindings ON anyway because it's needed to
425 # use the Python plugins.
426 AE_FEATURE_ENABLE([python-bindings])
428 AE_IF_FEATURE_DISABLED([python-bindings], [
429 # --enable-python-plugins _and_ --disable-python-bindings were
430 # used. This is invalid because Python plugins need the Python
431 # bindings to be useful.
432 AC_MSG_ERROR(--enable-python-bindings must be used to support Python plugins)
437 # Check for conflicting optional features user choices
438 AE_IF_FEATURE_ENABLED([built-in-plugins], [
439 # Built-in plug-ins are only available when the --disable-shared --enable-static options are used.
440 AE_IF_FEATURE_NOT_ENABLED([static], [AC_MSG_ERROR(--enable-static must be used to bundle plug-ins in the babeltrace2 executable)])
441 AE_IF_FEATURE_ENABLED([shared], [AC_MSG_ERROR(--disable-shared must be used to bundle plug-ins in the babeltrace2 executable)])
444 AE_IF_FEATURE_ENABLED([built-in-python-plugin-support], [
445 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])])
446 # Built-in plug-ins are only available when the --disable-shared --enable-static options are used.
447 AE_IF_FEATURE_NOT_ENABLED([static], [AC_MSG_ERROR(--enable-static must be used to bundle Python plugin support in the babeltrace2 executable)])
448 AE_IF_FEATURE_ENABLED([shared], [AC_MSG_ERROR(--disable-shared must be used to bundle Python plugin support in the babeltrace2 executable)])
453 ## Set automake variables for optionnal feature conditionnals in Makefile.am ##
456 AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS], AE_IS_FEATURE_ENABLED([python-bindings]))
457 AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS_DOC], AE_IS_FEATURE_ENABLED([python-bindings-doc]))
458 AM_CONDITIONAL([ENABLE_PYTHON_PLUGINS], AE_IS_FEATURE_ENABLED([python-plugins]))
459 AM_CONDITIONAL([ENABLE_DEBUG_INFO], AE_IS_FEATURE_ENABLED([debug-info]))
460 AM_CONDITIONAL([ENABLE_API_DOC], AE_IS_FEATURE_ENABLED([api-doc]))
461 AM_CONDITIONAL([ENABLE_BUILT_IN_PLUGINS], AE_IS_FEATURE_ENABLED([built-in-plugins]))
462 AM_CONDITIONAL([ENABLE_BUILT_IN_PYTHON_PLUGIN_SUPPORT], AE_IS_FEATURE_ENABLED([built-in-python-plugin-support]))
463 AM_CONDITIONAL([ENABLE_MAN_PAGES], AE_IS_FEATURE_ENABLED([man-pages]))
464 AM_CONDITIONAL([ENABLE_PYTHON_COMMON_DEPS], AE_IS_FEATURE_ENABLED([python-bindings]) || AE_IS_FEATURE_ENABLED([python-plugins]))
465 AM_CONDITIONAL([ENABLE_ASAN], AE_IS_FEATURE_ENABLED([asan]))
469 ## Set defines for optionnal features conditionnals in the source code ##
472 AE_IF_FEATURE_ENABLED([built-in-plugins],
473 [AC_DEFINE([BT_BUILT_IN_PLUGINS], [1], [Define to 1 to register plug-in attributes in static executable sections])]
476 AE_IF_FEATURE_ENABLED([built-in-python-plugin-support],
477 [AC_DEFINE([BT_BUILT_IN_PYTHON_PLUGIN_SUPPORT], [1], [Define to 1 to register plug-in attributes in static executable sections])]
480 AE_IF_FEATURE_ENABLED([debug-info], [ENABLE_DEBUG_INFO_VAL=1], [ENABLE_DEBUG_INFO_VAL=0])
481 AC_SUBST([ENABLE_DEBUG_INFO_VAL])
483 AE_IF_FEATURE_ENABLED([asan], [ENABLE_ASAN=1], [ENABLE_ASAN=0])
484 AC_SUBST([ENABLE_ASAN])
487 ## Check for optionnal features dependencies ##
490 # The Python bindings require SWIG
491 AE_IF_FEATURE_ENABLED([python-bindings],
492 [AX_PKG_SWIG(2.0.0, [], [AC_MSG_ERROR([SWIG 2.0.0 or newer is required to build the python bindings])])]
495 # Always check for python, we will fail later if some features require it and
497 AM_PATH_PYTHON([3.0], [
498 AE_PATH_PYTHON_MODULES([PYTHON])
500 # pythondir is the path where extra modules are to be installed
501 pythondir=$PYTHON_PREFIX/$PYTHON_MODULES_PATH
503 # pyexecdir is the path that contains shared objects used by the extra modules
504 pyexecdir=$PYTHON_EXEC_PREFIX/$PYTHON_MODULES_PATH
506 AS_IF([test -z "$PYTHON_CONFIG"], [
507 AC_PATH_PROGS([PYTHON_CONFIG],
508 [python$PYTHON_VERSION-config python-config],
513 AS_IF([test -n "$PYTHON_CONFIG"], [
514 AS_IF([test -z "$PYTHON_INCLUDE"], [
515 AC_MSG_CHECKING([Python include flags])
516 PYTHON_INCLUDE=`$PYTHON_CONFIG --includes`
517 AC_MSG_RESULT([$PYTHON_INCLUDE])
520 AS_IF([test -z "$PYTHON_LDFLAGS"], [
521 AC_MSG_CHECKING([Python library flags])
522 # Python 3.8+ requires that we pass --embed to get the -lpython3.x flag.
523 AS_IF([! PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags --embed`], [
524 PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags`
526 AC_MSG_RESULT([$PYTHON_LDFLAGS])
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.])
543 AE_IF_FEATURE_ENABLED([python-bindings-doc],
545 AE_CHECK_PYTHON_SPHINX([PYTHON])
546 AS_IF([test "x$PYTHON_SPHINX_EXISTS" = xno], [
547 AC_MSG_ERROR([The Sphinx package for Python 3 is required to build the Python bindings documentation])
550 AE_IF_FEATURE_NOT_ENABLED([python-bindings], [
551 AC_MSG_ERROR([The Python bindings are required to build their documentation])
556 AE_IF_FEATURE_ENABLED([debug-info], [
557 # Check if libelf and libdw are present
558 PKG_CHECK_MODULES([ELFUTILS], [libelf >= 0.154 libdw >= 0.154],
560 dnl PKG_CHECK_MODULES defines ELFUTILS_LIBS
563 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.])
565 # Turns out SLES12 doesn't bother shipping .pc file for libelf
566 AC_MSG_WARN([Finding libelf without pkg-config.])
567 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.)])
568 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.)])
569 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.)])
570 ELFUTILS_LIBS="-lelf -ldw"
573 AC_SUBST([ELFUTILS_LIBS])
575 AE_IF_FEATURE_ENABLED([api-doc],
577 DX_DOXYGEN_FEATURE(ON)
587 DX_INIT_DOXYGEN([Babeltrace 2], [$(builddir)/Doxyfile], [output])
588 AS_IF([test -z "$DX_DOXYGEN"],
589 [AC_MSG_ERROR([You need doxygen to enable the API documentation])]
594 have_asciidoc_xmlto=no
595 warn_prebuilt_man_pages=no
597 AC_PATH_PROG([ASCIIDOC], [asciidoc], [no])
598 AC_PATH_PROG([XMLTO], [xmlto], [no])
600 AE_IF_FEATURE_ENABLED([man-pages], [
601 AS_IF([test "x$ASCIIDOC" = "xno" || test "x$XMLTO" = "xno"], [
602 AS_IF([test "x$in_git_repo" = "xyes"], [
603 # this is an error because we're in the Git repo, which
604 # means the man pages are not already generated for us,
605 # thus asciixmlto are required because we were asked
606 # to build the man pages
608 You need asciidoc and xmlto to build the Babeltrace man pages. Use
609 --disable-man-pages to disable building the man pages, in which case
610 they will not be installed.
613 # only warn here: since we're in the tarball, the man
614 # pages should already be generated at this point, thus
615 # asciidoc/xmlto are not strictly required
616 warn_prebuilt_man_pages=yes
619 have_asciidoc_xmlto=yes
623 # export AsciiDoc and xmlto existence
624 AM_CONDITIONAL([HAVE_ASCIIDOC_XMLTO], [test "x$have_asciidoc_xmlto" = "xyes"])
626 # a wonderful hack that seems necessary because $libdir is
627 # literally `${exec_prefix}/lib`, and $exec_prefix is set to `NONE`
628 # by autoconf when it's not specified by the user
629 AS_IF([test "x$exec_prefix" = xNONE], [
630 AS_IF([test "x$prefix" = xNONE], [
631 PREFIX="$ac_default_prefix"
643 # If --enable-asan is used...
644 AE_IF_FEATURE_ENABLED([asan], [
645 # ... add -fsanitize=address to the *FLAGS variables.
646 ASAN_CFLAGS="-fsanitize=address"
647 ASAN_CXXFLAGS="-fsanitize=address"
648 ASAN_LDFLAGS="-fsanitize=address"
653 # CFLAGS from libraries (the glib ones are needed for the following sizeof
655 AM_CFLAGS="${PTHREAD_CFLAGS} ${GLIB_CFLAGS} ${ASAN_CFLAGS}"
656 AM_CXXFLAGS="${PTHREAD_CFLAGS} ${GLIB_CFLAGS} ${ASAN_CXXFLAGS}"
657 AM_LDFLAGS="${ASAN_LDFLAGS}"
659 # Check that the current size_t matches the size that glib thinks it should
660 # be. This catches problems on multi-arch where people try to do a 32-bit
661 # build while pointing at 64-bit glib headers. This is a common error because
662 # glib.h is not platform specific but it includes glibconfig.h which is and
663 # is usually installed in a non-standard path.
665 # Do this before enabling all the warning flags, as the
666 # AC_LANG_PROGRAM-generated program may generate some warning, which makes this
667 # test fail unnecessarily.
669 # Older versions of the pkg-config macros disallows PKG_* in the autoconf
670 # output. Specifically allow pkg_config_libdir to be able to print the
672 m4_pattern_allow([PKG_CONFIG_LIBDIR])
674 save_CFLAGS=${CFLAGS}
675 CFLAGS="${CFLAGS} ${AM_CFLAGS}"
681 G_STATIC_ASSERT(sizeof(size_t) == GLIB_SIZEOF_SIZE_T);
685 sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T. You probably need to set
686 PKG_CONFIG_LIBDIR to point to the right pkg-config files for your build
690 CFLAGS=${save_CFLAGS}
692 # Detect C and LD warning flags supported by the compiler.
694 # Detect warning flags supported by the C and C++ compilers and append them to
695 # WARN_CFLAGS and WARN_CXXFLAGS.
697 m4_define([WARN_FLAGS_LIST], [ dnl
700 -Wmissing-prototypes dnl
701 -Wmissing-declarations dnl
702 -Wnull-dereference dnl
704 -Wredundant-decls dnl
706 -Wjump-misses-init dnl
707 -Wsuggest-attribute=format dnl
708 -Wtautological-constant-out-of-range-compare dnl
712 -Wstrict-aliasing dnl
713 -Wmissing-noreturn dnl
715 -Wduplicated-cond dnl
716 -Wduplicated-branches dnl
718 -Wno-unused-parameter dnl
719 -Wno-sign-compare dnl
721 dnl Some versions of SWIG (like 3.0.12) generate code that produces
722 dnl -Wcast-function-type warnings. This warning is present in gcc >= 8. This
723 dnl combo happens on RHEL/Centos 8, for example. Later versions of SWIG (like
724 dnl 4.0.1) have the correct function signatures to not produce this warning.
725 dnl It's simpler to just disable the warning globally.
727 dnl Note that the Debian/Ubuntu SWIG package 3.0.12-2 contains a local patch to
728 dnl fix this (python-fix-function-cast-warnings.patch), so you won't be able to
729 dnl reproduce the warning using that package.
731 dnl Ref: https://github.com/swig/swig/issues/1259
732 -Wno-cast-function-type dnl
733 -Wno-missing-field-initializers dnl
736 # Pass -Werror as an extra flag during the test: this is needed to make the
737 # -Wunknown-warning-option diagnostic fatal with clang.
739 AX_APPEND_COMPILE_FLAGS([WARN_FLAGS_LIST], [WARN_CXXFLAGS], [-Werror])
741 AX_APPEND_COMPILE_FLAGS([WARN_FLAGS_LIST], [WARN_CFLAGS], [-Werror])
743 AE_IF_FEATURE_ENABLED([Werror], [WARN_CXXFLAGS="${WARN_CXXFLAGS} -Werror"])
744 AE_IF_FEATURE_ENABLED([Werror], [WARN_CFLAGS="${WARN_CFLAGS} -Werror"])
746 # The test used in AX_APPEND_COMPILE_FLAGS, generated using AC_LANG_PROGRAM, is
747 # written in such a way that it triggers warnings with the following warning
748 # flags. So they would always end up disabled if we put them there, because
749 # the test program would not build.
751 # Enable them here unconditionally. They are supported by GCC >= 4.8 and by
752 # Clang >= 3.3 (required by the project) and are only valid for C code.
753 WARN_CFLAGS="${WARN_CFLAGS} -Wold-style-definition -Wstrict-prototypes"
755 # CFLAGS from AX_APPEND_COMPILE_FLAGS.
756 AM_CXXFLAGS="${AM_CXXFLAGS} ${WARN_CXXFLAGS}"
757 AM_CFLAGS="${AM_CFLAGS} ${WARN_CFLAGS}"
759 # Done for AM_CXXFLAGS, AM_CFLAGS and AM_LDFLAGS.
760 AC_SUBST(AM_CXXFLAGS)
764 # Set global CPPFLAGS in AM_CPPFLAGS
765 AM_CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/src -I\$(top_srcdir)/src -include common/config.h"
766 AC_SUBST(AM_CPPFLAGS)
768 # Add glib to global link libs
769 LIBS="$LIBS $GLIB_LIBS"
771 # Abuse autoconf's AC_ARG_PROGRAM output variable 'program_transform_name'
772 # to rename babeltrace2.bin to babeltrace2 at install time.
773 program_transform_name="s&babeltrace2\.bin&babeltrace2&;$program_transform_name"
774 AC_SUBST(program_transform_name)
778 doc/api/libbabeltrace2/Doxyfile
779 doc/api/libbabeltrace2/Makefile
780 doc/bindings/Makefile
781 doc/bindings/python/Makefile
782 doc/contributing-images/Makefile
784 doc/man/asciidoc-attrs.conf
789 src/autodisc/Makefile
790 src/babeltrace2-ctf-writer.pc
792 src/bindings/Makefile
793 src/bindings/python/bt2/bt2/version.py
794 src/bindings/python/bt2/Makefile
795 src/bindings/python/bt2/setup.py
796 src/bindings/python/Makefile
801 src/ctf-writer/Makefile
802 src/fd-cache/Makefile
803 src/lib/graph/Makefile
804 src/lib/graph/message/Makefile
806 src/lib/plugin/Makefile
807 src/lib/prio-heap/Makefile
808 src/lib/trace-ir/Makefile
811 src/plugins/common/Makefile
812 src/plugins/common/muxing/Makefile
813 src/plugins/common/param-validation/Makefile
814 src/plugins/ctf/common/bfcr/Makefile
815 src/plugins/ctf/common/Makefile
816 src/plugins/ctf/common/metadata/Makefile
817 src/plugins/ctf/common/msg-iter/Makefile
818 src/plugins/ctf/fs-sink/Makefile
819 src/plugins/ctf/fs-src/Makefile
820 src/plugins/ctf/lttng-live/Makefile
821 src/plugins/ctf/Makefile
822 src/plugins/lttng-utils/debug-info/Makefile
823 src/plugins/lttng-utils/Makefile
825 src/plugins/text/dmesg/Makefile
826 src/plugins/text/Makefile
827 src/plugins/text/pretty/Makefile
828 src/plugins/text/details/Makefile
829 src/plugins/utils/counter/Makefile
830 src/plugins/utils/dummy/Makefile
831 src/plugins/utils/Makefile
832 src/plugins/utils/muxer/Makefile
833 src/plugins/utils/trimmer/Makefile
834 src/py-common/Makefile
835 src/python-plugin-provider/Makefile
836 src/param-parse/Makefile
837 src/string-format/Makefile
838 tests/bitfield/Makefile
839 tests/ctf-writer/Makefile
841 tests/lib/test-plugin-plugins/Makefile
842 tests/lib/conds/Makefile
844 tests/param-validation/Makefile
845 tests/plugins/Makefile
846 tests/plugins/src.ctf.fs/Makefile
847 tests/plugins/src.ctf.fs/succeed/Makefile
848 tests/plugins/sink.ctf.fs/Makefile
849 tests/plugins/sink.ctf.fs/succeed/Makefile
850 tests/plugins/flt.lttng-utils.debug-info/Makefile
851 tests/plugins/flt.utils.muxer/Makefile
852 tests/plugins/flt.utils.muxer/succeed/Makefile
853 tests/plugins/flt.utils.trimmer/Makefile
854 tests/plugins/sink.text.pretty/Makefile
856 tests/utils/tap/Makefile
859 AC_CONFIG_FILES([tests/utils/env.sh],[chmod +x tests/utils/env.sh])
864 # Mini-report on what will be built.
873 AS_IF([test -n "bt_version_name"], [
874 AS_ECHO("${PPRINT_COLOR_BLDBLU}Babeltrace $PACKAGE_VERSION \"bt_version_name\"$PPRINT_COLOR_RST")
876 AS_ECHO("${PPRINT_COLOR_BLDBLU}Babeltrace $PACKAGE_VERSION")
881 AS_IF([test -n "bt_version_description"], [
882 AS_IF([test -n "$report_fold"], [
883 AS_ECHO("`AS_ECHO("bt_version_description") | $report_fold -s`")
885 AS_ECHO("bt_version_description")
891 PPRINT_SUBTITLE([System])
893 # Target architecture we're building for.
894 target_arch=$host_cpu
897 if test $f = "-m32"; then
899 elif test $f = "-m64"; then
905 PPRINT_PROP_STRING([Target architecture], $target_arch)
908 PPRINT_SUBTITLE([Python 3 language support])
909 test "x$have_python" = "xyes" && value=1 || value=0
910 PPRINT_PROP_BOOL([Have Python interpreter], $value)
911 test "x$have_python_dev" = "xyes" && value=1 || value=0
912 PPRINT_PROP_BOOL([Have Python development libraries], $value)
913 test "x$enable_python_bindings" = "xyes" && value=1 || value=0
914 PPRINT_PROP_BOOL_CUSTOM([Python bindings], $value, [To enable, use --enable-python-bindings])
915 test "x$enable_python_plugins" = "xyes" && value=1 || value=0
916 PPRINT_PROP_BOOL_CUSTOM([Python plugin support], $value, [To enable, use --enable-python-plugins])
917 AS_IF([test "x$have_python" = "xyes"], [
918 PPRINT_PROP_STRING([Python interpreter path], [$PYTHON])
920 AS_IF([test "x$have_python_dev" = "xyes"], [
921 PPRINT_PROP_STRING([python-config path], [$PYTHON_CONFIG])
922 PPRINT_PROP_STRING([Python include paths], [$PYTHON_INCLUDE])
923 PPRINT_PROP_STRING([Python linker flags], [$PYTHON_LDFLAGS])
925 AE_IF_FEATURE_ENABLED([python-bindings], [
926 PPRINT_PROP_STRING([SWIG executable], [$SWIG])
927 PPRINT_PROP_STRING([SWIG library], [$SWIG_LIB])
931 PPRINT_SUBTITLE([Plugins])
932 PPRINT_PROP_BOOL(['ctf' plugin], 1)
933 test "x$enable_debug_info" = "xyes" && value=1 || value=0
934 PPRINT_PROP_BOOL_CUSTOM(['lttng-utils' plugin], $value, [To enable, use --enable-debug-info])
935 PPRINT_PROP_BOOL(['text' plugin], 1)
936 PPRINT_PROP_BOOL(['utils' plugin], 1)
939 PPRINT_SUBTITLE([Built-in features])
940 test "x$enable_built_in_plugins" = "xyes" && value=1 || value=0
941 PPRINT_PROP_BOOL_CUSTOM([Built-in plugins], $value, [To enable, use --enable-built-in-plugins])
942 test "x$enable_built_in_python_plugin_support" = "xyes" && value=1 || value=0
943 PPRINT_PROP_BOOL_CUSTOM([Built-in Python plugin support], $value, [To enable, use --enable-built-in-python-plugin-support])
946 PPRINT_SUBTITLE([Documentation])
948 # man pages build enabled/disabled
949 m4_pushdef([build_man_pages_msg], [Build and install man pages])
951 AS_IF([test "x$enable_man_pages" != "xno"], [
952 AS_IF([test "x$in_git_repo" = "xyes"], [
953 PPRINT_PROP_BOOL([build_man_pages_msg], 1)
955 AS_IF([test "x$have_asciidoc_xmlto" = "xyes"], [
956 PPRINT_PROP_BOOL([build_man_pages_msg], 1)
958 PPRINT_PROP_STRING([build_man_pages_msg],
959 [${PPRINT_COLOR_BLDGRN}yes (already built)],
960 $PPRINT_COLOR_SUBTITLE)
964 PPRINT_PROP_BOOL_CUSTOM([build_man_pages_msg], 0, [To build man pages, use --enable-man-pages])
967 m4_popdef([build_man_pages_msg])
969 test "x$enable_api_doc" = "xyes" && value=1 || value=0
970 PPRINT_PROP_BOOL_CUSTOM([HTML API documentation], $value, [To build documentation, use --enable-api-doc])
971 test "x$enable_python_bindings_doc" = "xyes" && value=1 || value=0
972 PPRINT_PROP_BOOL_CUSTOM([Python bindings documentation], $value, [To build the Python bindings documentation, use --enable-python-bindings-doc])
975 PPRINT_SUBTITLE([Logging])
976 PPRINT_PROP_STRING([Minimal log level], $BABELTRACE_MINIMAL_LOG_LEVEL)
979 PPRINT_SUBTITLE([Special build modes])
980 PPRINT_PROP_BOOL_CUSTOM([Debug mode], $BABELTRACE_DEBUG_MODE, [To enable, set the BABELTRACE_DEBUG_MODE environment variable to 1])
981 PPRINT_PROP_BOOL_CUSTOM([Developer mode], $BABELTRACE_DEV_MODE, [To enable, set the BABELTRACE_DEV_MODE environment variable to 1])
983 report_bindir="`eval eval echo $bindir`"
984 report_libdir="`eval eval echo $libdir`"
985 report_sysconfdif="`eval eval echo $sysconfdir`"
986 report_pluginsdir="`eval eval eval echo $BABELTRACE_PLUGINS_DIR`"
987 report_pluginprovidersdir="`eval eval eval echo $BABELTRACE_PLUGIN_PROVIDERS_DIR`"
989 # Print the bindir and libdir this `make install' will install into.
991 PPRINT_SUBTITLE([Install directories])
992 PPRINT_PROP_STRING([Binaries], [$report_bindir])
993 PPRINT_PROP_STRING([Libraries], [$report_libdir])
994 PPRINT_PROP_STRING([Plugins], [$report_pluginsdir])
995 PPRINT_PROP_STRING([Plugin providers], [$report_pluginprovidersdir])
996 PPRINT_PROP_STRING([Configuration], [$report_sysconfdif])