Completely rework configure.ac
[babeltrace.git] / configure.ac
index 25503768e1828d30d9c75fc8f2a0e8794d060472..c94b720e1e0197f7793e0dcc0acb3d181ca8e6c2 100644 (file)
@@ -1,10 +1,38 @@
+dnl Process this file with autoconf to produce a configure script.
+dnl
+dnl Copyright (c) 2017 EfficiOS, Inc.
+dnl
+dnl Permission is hereby granted, free of charge, to any person obtaining a copy
+dnl of this software and associated documentation files (the "Software"), to deal
+dnl in the Software without restriction, including without limitation the rights
+dnl to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+dnl copies of the Software, and to permit persons to whom the Software is
+dnl furnished to do so, subject to the following conditions:
+dnl
+dnl The above copyright notice and this permission notice shall be included in
+dnl all copies or substantial portions of the Software.
+dnl
+dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+dnl AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+dnl OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+dnl SOFTWARE.
+
+##                     ##
+## Autoconf base setup ##
+##                     ##
+
 AC_PREREQ([2.50])
+
 m4_define([bt_version_major], [2])
 m4_define([bt_version_minor], [0])
 m4_define([bt_version_patch], [0])
 m4_define([bt_version_extra], [-pre1])
 m4_define([bt_version], bt_version_major[.]bt_version_minor[.]bt_version_patch[]bt_version_extra)
-AC_INIT([babeltrace],bt_version,[jeremie dot galarneau at efficios dot com])
+
+AC_INIT([babeltrace], bt_version, [jeremie dot galarneau at efficios dot com], [], [https://efficios.com/babeltrace/])
 
 # Following the numbering scheme proposed by libtool for the library version
 # http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
@@ -13,6 +41,7 @@ AC_SUBST([BABELTRACE_LIBRARY_VERSION], bt_version_major[:]bt_version_minor[:]bt_
 AC_CONFIG_HEADERS([include/config.h])
 AC_CONFIG_AUX_DIR([config])
 AC_CONFIG_MACRO_DIR([m4])
+AC_REQUIRE_AUX_FILE([tap-driver.sh])
 
 AC_DEFINE([BT_VERSION_MAJOR], bt_version_major, [Babeltrace library major version])
 AC_DEFINE([BT_VERSION_MINOR], bt_version_minor, [Babeltrace library minor version])
@@ -22,36 +51,89 @@ AC_DEFINE([BT_VERSION_EXTRA], ["]bt_version_extra["], [Babeltrace library extra
 AC_CANONICAL_TARGET
 AC_CANONICAL_HOST
 
+
+##                     ##
+## Automake base setup ##
+##                     ##
+
 AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip tar-ustar nostdinc])
 AM_MAINTAINER_MODE([enable])
 
 # Enable silent rules if available (Introduced in AM 1.11)
 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
 
-AC_REQUIRE_AUX_FILE([tap-driver.sh])
 
-# Checks for C compiler
+##                      ##
+## OS specific defaults ##
+##                      ##
+
+MINGW32=no
+DEFAULT_ENABLE_DEBUG_INFO=yes
+LT_NO_UNDEFINED=""
+AS_CASE([$host_os],
+  [solaris*|darwin*],
+    [
+       DEFAULT_ENABLE_DEBUG_INFO=no
+    ],
+  [cygwin*],
+    [
+       DEFAULT_ENABLE_DEBUG_INFO=no
+       LT_NO_UNDEFINED="-no-undefined"
+    ],
+  [mingw*],
+    [
+       MINGW32=yes
+       DEFAULT_ENABLE_DEBUG_INFO=no
+       LT_NO_UNDEFINED="-no-undefined"
+    ]
+)
+
+AM_CONDITIONAL([BABELTRACE_BUILD_WITH_MINGW], [test "x$MINGW32" = "xyes"])
+AC_SUBST(LT_NO_UNDEFINED)
+
+
+##                   ##
+## C compiler checks ##
+##                   ##
+
 AC_USE_SYSTEM_EXTENSIONS
 AC_SYS_LARGEFILE
+
+# Choose the c compiler
 AC_PROG_CC
-AC_PROG_CC_STDC
 
-# Checks for programs.
-AC_PROG_MAKE_SET
-LT_INIT(win32-dll)
-AC_PROG_MKDIR_P
-AC_PROG_LN_S
+# Make sure the c compiler supports C99
+AC_PROG_CC_C99([], [AC_MSG_ERROR([The compiler does not support C99])])
 
+# Make sure the c compiler supports __attributes__
 AX_C___ATTRIBUTE__
-AS_IF([test "x$ax_cv___attribute__" = "xyes"],
-       [:],
-       [AC_MSG_ERROR([The compiler does not support __attribute__ extensions])])
+AS_IF([test "x$ax_cv___attribute__" != "xyes"],
+  [AC_MSG_ERROR([The compiler does not support __attribute__ extensions])])
 
-AX_PTHREAD(,[AC_MSG_ERROR([Could not configure pthreads support])])
+# Make sur we have pthread support
+AX_PTHREAD([], [AC_MSG_ERROR([Could not configure pthread support])])
+
+# Checks for typedefs, structures, and compiler characteristics.
+AC_C_INLINE
+AC_C_TYPEOF
+AC_TYPE_PID_T
+AC_TYPE_SIZE_T
+AC_TYPE_INT16_T
+AC_TYPE_INT32_T
+AC_TYPE_INT64_T
+AC_TYPE_INT8_T
+AC_TYPE_OFF_T
+AC_TYPE_SSIZE_T
+AC_TYPE_UINT16_T
+AC_TYPE_UINT32_T
+AC_TYPE_UINT64_T
+AC_TYPE_UINT8_T
+AC_CHECK_TYPES([ptrdiff_t])
 
-# Check linker option
-AX_APPEND_LINK_FLAGS([-Wl,--no-as-needed], [LD_NO_AS_NEEDED])
-AC_SUBST([LD_NO_AS_NEEDED])
+
+##               ##
+## Header checks ##
+##               ##
 
 AC_HEADER_STDBOOL
 AC_CHECK_HEADERS([ \
@@ -65,8 +147,30 @@ AC_CHECK_HEADERS([ \
        netinet/in.h \
        stddef.h \
        sys/socket.h \
+       sys/time.h
 ])
 
+
+##               ##
+## Linker checks ##
+##               ##
+
+# Check if the linker supports no-as-needed
+AX_APPEND_LINK_FLAGS([-Wl,--no-as-needed], [LD_NO_AS_NEEDED])
+AC_SUBST([LD_NO_AS_NEEDED])
+
+# Initialize and configure libtool
+LT_INIT([win32-dll])
+
+
+##                 ##
+## Programs checks ##
+##                 ##
+
+AC_PROG_MAKE_SET
+AC_PROG_MKDIR_P
+AC_PROG_LN_S
+
 # set $IN_GIT_REPO if we're in the Git repository; the `bootstrap` file
 # is not distributed in tarballs
 AS_IF([test -f "$srcdir/bootstrap"], [in_git_repo=yes], [in_git_repo=no])
@@ -78,12 +182,12 @@ AX_PROG_BISON_VERSION([2.4], [have_bison=yes])
 
 AS_IF([test "x$have_bison" != "xyes"], [
   AS_IF([test "x$in_git_repo" = "xyes"], [
-    AC_MSG_FAILURE([
+    AC_MSG_FAILURE([dnl
 Bison >= 2.4 is required when building from the Git repository. You can
 set the YACC variable to override automatic detection.
     ])
   ], [
-    AC_MSG_WARN([
+    AC_MSG_WARN([dnl
 Missing Bison >= 2.4. 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
@@ -99,12 +203,12 @@ AX_PROG_FLEX_VERSION([2.5.35], [have_flex=yes])
 
 AS_IF([test "x$have_flex" != "xyes"], [
   AS_IF([test "x$in_git_repo" = "xyes"], [
-    AC_MSG_FAILURE([
+    AC_MSG_FAILURE([dnl
 Flex >= 2.5.35 is required when building from the Git repository. You can
 set the LEX variable to override automatic detection.
     ])
   ], [
-    AC_MSG_WARN([
+    AC_MSG_WARN([dnl
 Missing Flex >= 2.5.35. Note that the lexer files are already built in
 this distribution tarball, so Flex is only needed if you intend to
 modify their sources. You can set the LEX variable to override automatic
@@ -115,25 +219,18 @@ detection.
 AM_CONDITIONAL([HAVE_FLEX], [test "x$have_flex" = "xyes"])
 
 
-AM_PATH_GLIB_2_0(2.22.0, ,AC_MSG_ERROR([glib is required in order to compile BabelTrace - download it from ftp://ftp.gtk.org/pub/gtk]) , gmodule-no-export)
+##                ##
+## Library checks ##
+##                ##
 
 # Check what libraries are required on this platform to link sockets programs.
 AX_LIB_SOCKET_NSL
 
-# Checks for typedefs, structures, and compiler characteristics.
-AC_C_INLINE
-AC_TYPE_PID_T
-AC_TYPE_SIZE_T
-AC_TYPE_INT16_T
-AC_TYPE_INT32_T
-AC_TYPE_INT64_T
-AC_TYPE_INT8_T
-AC_TYPE_OFF_T
-AC_TYPE_SSIZE_T
-AC_TYPE_UINT16_T
-AC_TYPE_UINT32_T
-AC_TYPE_UINT64_T
-AC_TYPE_UINT8_T
+# Check for glib >= 2.22 with gmodule support
+AM_PATH_GLIB_2_0([2.22.0], [],
+  AC_MSG_ERROR([glib >= 2.22 is required - download it from ftp://ftp.gtk.org/pub/gtk]),
+  [gmodule-no-export]
+)
 
 # Checks for library functions.
 AC_FUNC_ALLOCA
@@ -141,6 +238,7 @@ AC_FUNC_FORK
 AC_FUNC_MKTIME
 AC_FUNC_MMAP
 AC_FUNC_STRERROR_R
+AC_FUNC_STRNLEN
 AC_CHECK_FUNCS([ \
        atexit \
        dup2 \
@@ -163,6 +261,7 @@ AC_CHECK_FUNCS([ \
        strndup \
        strnlen \
        strrchr \
+       strstr \
        strtoul \
        strtoull \
        tzset \
@@ -173,30 +272,6 @@ AC_CHECK_FUNCS([ \
 #AC_FUNC_MALLOC
 #AC_FUNC_REALLOC
 
-MINGW32=no
-DEFAULT_ENABLE_DEBUG_INFO=yes
-LT_NO_UNDEFINED=""
-AS_CASE([$host_os],
-  [solaris*|darwin*],
-    [
-       DEFAULT_ENABLE_DEBUG_INFO=no
-    ],
-  [cygwin*],
-    [
-       DEFAULT_ENABLE_DEBUG_INFO=no
-       LT_NO_UNDEFINED="-no-undefined"
-    ],
-  [mingw*],
-    [
-       MINGW32=yes
-       DEFAULT_ENABLE_DEBUG_INFO=no
-       LT_NO_UNDEFINED="-no-undefined"
-    ]
-)
-
-AM_CONDITIONAL([BABELTRACE_BUILD_WITH_MINGW], [test "x$MINGW32" = "xyes"])
-AC_SUBST(LT_NO_UNDEFINED)
-
 # First, check for uuid in system libs
 AH_TEMPLATE([BABELTRACE_HAVE_LIBUUID], [Define if you have libuuid support])
 AC_CHECK_FUNCS([uuid_generate],
@@ -229,9 +304,9 @@ AC_CHECK_FUNCS([uuid_generate],
               ],
               [
                 # for MinGW32 we have our own internal implementation of uuid using Windows functions.
-                if test "x$MINGW32" = xno; then
-                  AC_MSG_FAILURE([Cannot find libuuid uuid_generate nor libc uuid_create. Either set PKG_CONFIG_PATH to the configuration file location or use LDFLAGS=-Ldir to specify the library location])
-               fi
+                AS_IF([test "x$MINGW32" = xno],
+                  [AC_MSG_FAILURE([Cannot find libuuid uuid_generate nor libc uuid_create. Either set PKG_CONFIG_PATH to the configuration file location or use LDFLAGS=-Ldir to specify the library location])]
+               )
               ]
             )
           ]
@@ -244,23 +319,17 @@ AC_SUBST(UUID_LIBS)
 
 # Check for fmemopen
 AC_CHECK_LIB([c], [fmemopen],
-[
-       AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_FMEMOPEN], 1, [Has fmemopen support.])
-]
+  [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_FMEMOPEN], 1, [Has fmemopen support.])]
 )
 
 # Check for open_memstream
 AC_CHECK_LIB([c], [open_memstream],
-[
-       AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_OPEN_MEMSTREAM], 1, [Has open_memstream support.])
-]
+  [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_OPEN_MEMSTREAM], 1, [Has open_memstream support.])]
 )
 
 # Check for posix_fallocate
 AC_CHECK_LIB([c], [posix_fallocate],
-[
-       AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_POSIX_FALLOCATE], 1, [Has posix_fallocate support.])
-]
+  [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_POSIX_FALLOCATE], 1, [Has posix_fallocate support.])]
 )
 
 # Check libpopt
@@ -282,56 +351,183 @@ PKG_CHECK_MODULES([POPT], [popt],
 )
 AC_SUBST(POPT_LIBS)
 
-# Plugins
+
+##                 ##
+## User variables  ##
+##                 ##
+
+AC_ARG_VAR([PYTHON_INCLUDE], [Include flags for Python, bypassing python-config])
+AC_ARG_VAR([PYTHON_LIBS], [Library flags for Python, bypassing python-config])
+AC_ARG_VAR([PYTHON_CONFIG], [Path to python-config])
+
+# PLUGINSDIR: Plugins directory
 AC_ARG_VAR([PLUGINSDIR], [built-in plugins install directory [LIBDIR/babeltrace/plugins]])
 AS_IF([test "x$PLUGINSDIR" = x], [PLUGINSDIR='$(libdir)/babeltrace/plugins'])
 
-# For Python
-# SWIG version needed or newer:
-swig_version=2.0.0
+# BABELTRACE_MINIMAL_LOG_LEVEL:
+AC_ARG_VAR([BABELTRACE_MINIMAL_LOG_LEVEL], [Minimal log level for Babeltrace program, library, and plugins (VERBOSE, DEBUG, INFO, WARN, ERROR (default), FATAL, or NONE)])
+AS_IF([test "x$BABELTRACE_MINIMAL_LOG_LEVEL" = x], [BABELTRACE_MINIMAL_LOG_LEVEL="VERBOSE"])
+AS_IF([test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "VERBOSE" && \
+       test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "DEBUG" && \
+       test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "INFO" && \
+       test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "WARN" && \
+       test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "ERROR" && \
+       test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "FATAL" && \
+       test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "NONE"],
+  [AC_MSG_ERROR([Invalid BABELTRACE_MINIMAL_LOG_LEVEL value ($BABELTRACE_MINIMAL_LOG_LEVEL): use VERBOSE, DEBUG, INFO, WARN, ERROR, FATAL, or NONE.])]
+)
+AC_DEFINE_UNQUOTED([BT_LOG_LEVEL], [BT_LOG_$BABELTRACE_MINIMAL_LOG_LEVEL], [Minimal log level])
+
+
+##                              ##
+## Optionnal features selection ##
+##                              ##
 
+# Python bindings
+# Disabled by default
 AC_ARG_ENABLE([python-bindings],
-              [AC_HELP_STRING([--enable-python-bindings],
-                              [generate Python bindings])],
-              [enable_python_bindings=$enableval], [enable_python_bindings=no])
-
-AM_CONDITIONAL([USE_PYTHON], [test "x${enable_python_bindings:-yes}" = xyes])
-
-AC_ARG_ENABLE(
-       [python-plugins],
-       [AC_HELP_STRING(
-               [--enable-python-plugins],
-               [add support for the Babeltrace library and converter to load Python plugins])
-       ],
-       [enable_python_plugins=$enableval],
-       [enable_python_plugins=no]
+  [AC_HELP_STRING([--enable-python-bindings], [build the Python bindings])],
+  [], dnl AC_ARG_ENABLE will fill enable_python_bindings with the user choice
+  [enable_python_bindings=no]
+)
+
+# Python bindings documentation
+# Disabled by default
+AC_ARG_ENABLE([python-bindings-doc],
+  [AC_HELP_STRING([--enable-python-bindings-doc], [build the Python bindings documentation])],
+  [], dnl AC_ARG_ENABLE will fill enable_python_bindings_doc with the user choice
+  [enable_python_bindings_doc=no]
+)
+
+# Python bindings tests
+# Disabled by default
+AC_ARG_ENABLE([python-bindings-tests],
+  [AC_HELP_STRING([--enable-python-bindings-tests], [run the Python bindings tests])],
+  [], dnl AC_ARG_ENABLE will fill enable_python_bindings_tests with the user choice
+  [enable_python_bindings_tests=no]
+)
+
+# Python plugins
+# Disabled by default
+AC_ARG_ENABLE([python-plugins],
+  [AC_HELP_STRING([--enable-python-plugins], [enable the Python plugins support for the library and converter])],
+  [], dnl AC_ARG_ENABLE will fill enable_python_plugins with the user choice
+  [enable_python_plugins=no]
+)
+
+# Debug info
+# Enabled by default, except on some platforms
+AC_ARG_ENABLE([debug-info],
+  [AC_HELP_STRING([--disable-debug-info], [disable the debug info support (default on macOS, Solaris and Windows)])],
+  [], dnl AC_ARG_ENABLE will fill enable_debug_info with the user choice
+  [enable_debug_info="$DEFAULT_ENABLE_DEBUG_INFO"]
+)
+
+# API documentation
+# Disabled by default
+AC_ARG_ENABLE([api-doc],
+  [AC_HELP_STRING([--enable-api-doc], [build the HTML API documentation])],
+  [enable_api_doc=$enableval],
+  [enable_api_doc=no]
+)
+
+# Built-in plugins
+# Disabled by default
+AC_ARG_ENABLE([built-in-plugins],
+  [AC_HELP_STRING([--enable-built-in-plugins], [Statically-link in-tree plug-ins into the babeltrace binary])],
+  [], dnl AC_ARG_ENABLE will fill enable_built_in_plugins with the user choice
+  [enable_built_in_plugins=no]
+)
+
+# Built-in python plugin support
+# Disabled by default
+AC_ARG_ENABLE([built-in-python-plugin-support],
+  [AC_HELP_STRING([--enable-built-in-python-plugin-support], [Statically-link Python plugin support into the babeltrace library])],
+  [], dnl AC_ARG_ENABLE will fill enable_built_in_python_plugin_support with the user choice
+  [enable_built_in_python_plugin_support=no]
+)
+
+
+# Set automake variables for optionnal feature conditionnals in Makefile.am
+AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS], [test "x$enable_python_bindings" = xyes])
+AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS_DOC], [test "x$enable_python_bindings_doc" = xyes])
+AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS_TESTS], [test "x$enable_python_bindings_tests" = xyes])
+AM_CONDITIONAL([ENABLE_PYTHON_PLUGINS], [test "x$enable_python_plugins" = xyes])
+AM_CONDITIONAL([ENABLE_DEBUG_INFO], [test "x$enable_debug_info" = xyes])
+AM_CONDITIONAL([ENABLE_API_DOC], [test "x$enable_api_doc" = xyes])
+AM_CONDITIONAL([ENABLE_BUILT_IN_PLUGINS], [test "x$enable_built_in_plugins" = xyes])
+AM_CONDITIONAL([ENABLE_BUILT_IN_PYTHON_PLUGIN_SUPPORT], [test "x$enable_built_in_python_plugin_support" = xyes])
+
+
+# Set defines for optionnal features conditionnals in the source code
+
+## jgalar: still used?
+AS_IF([test "x$enable_python_plugins" = xyes],
+  [AC_DEFINE([PYTHON_PLUGINS], [1], [Python plugin support.])]
+)
+
+AS_IF([test "x$enable_debug_info" = xyes],
+  [AC_DEFINE([ENABLE_DEBUG_INFO], [1], [Define to 1 if you enable the 'debug info' feature])]
+)
+
+AS_IF([test "x$enable_built_in_plugins" = xyes],
+  [AC_DEFINE([BT_BUILT_IN_PLUGINS], [1], [Define to 1 to register plug-in attributes in static executable sections])]
+)
+
+AS_IF([test "x$enable_built_in_python_plugin_support" = xyes],
+  [AC_DEFINE([BT_BUILT_IN_PYTHON_PLUGIN_SUPPORT], [1], [Define to 1 to register plug-in attributes in static executable sections])]
+)
+
+
+# Check for conflicting optionnal features user choices
+
+AS_IF([test "x$enable_python_bindings" = xno],
+  [
+    AS_IF([test "x$enable_python_bindings_doc" = xyes], [AC_MSG_ERROR([--enable-python-bindings-doc was specified without --enable-python-bindings])])
+    AS_IF([test "x$enable_python_bindings_tests" = xyes], AC_MSG_ERROR([--enable-python-bindings-tests was specified without --enable-python-bindings]))
+  ]
+)
+
+AS_IF([test "x$enable_built_in_plugins" = xyes],
+  [
+    # Built-in plug-ins are only available when the --disable-shared --enable-static options are used.
+    AS_IF([test "x$enable_static" != xyes], [AC_MSG_ERROR(--enable-static must be used to bundle plug-ins in the babeltrace executable)])
+    AS_IF([test "x$enable_shared" = xyes], [AC_MSG_ERROR(--disable-shared must be used to bundle plug-ins in the babeltrace executable)])
+  ]
+)
+
+AS_IF([test "x$enable_built_in_python_plugin_support" = xyes],
+  [
+    AS_IF([test "x$enable_python_plugins" = xno], [AC_MSG_ERROR([--enable-python-plugins must be used to bundle Python plugin support in the babeltrace executable])])
+    # Built-in plug-ins are only available when the --disable-shared --enable-static options are used.
+    AS_IF([test "x$enable_static" != xyes], [AC_MSG_ERROR(--enable-static must be used to bundle Python plugin support in the babeltrace executable)])
+    AS_IF([test "x$enable_shared" = xyes], [AC_MSG_ERROR(--disable-shared must be used to bundle Python plugin support in the babeltrace executable)])
+  ]
 )
 
-if test "x${enable_python_bindings:-yes}" = xyes; then
-  AX_PKG_SWIG($swig_version, [], [ AC_MSG_ERROR([SWIG $swig_version or newer is needed]) ])
-else
-    AC_MSG_NOTICE([You may configure with --enable-python-bindings ]dnl
-[if you want Python bindings.])
-fi
 
-if test "x$enable_python_bindings" != xno || test "x$enable_python_plugins" != xno; then
-  AM_PATH_PYTHON([3.0], , [AC_MSG_ERROR(Python 3 is not available or is not the default Python interpreter on your system. See the README file to learn how to override your distribution's default Python interpreter.)])
+# Check for optionnal features dependencies
+
+AS_IF([test "x$enable_python_bindings" = xyes],
+  [AX_PKG_SWIG(2.0.0, [], [AC_MSG_ERROR([SWIG 2.0.0 or newer is required to build the python bindings])])]
+)
+
+AS_IF([test "x$enable_python_bindings" = xyes || test "x$enable_python_plugins" = xyes],
+  [
+  AM_PATH_PYTHON([3.0], [], [AC_MSG_ERROR(Python 3 is not available or is not the default Python interpreter on your system. See the README file to learn how to override your distribution's default Python interpreter.)])
 
   AM_PATH_PYTHON_MODULES([PYTHON])
   # pythondir is the path where extra modules are to be installed
   pythondir=$PYTHON_PREFIX/$PYTHON_MODULES_PATH
   # pyexecdir is the path that contains shared objects used by the extra modules
   pyexecdir=$PYTHON_EXEC_PREFIX/$PYTHON_MODULES_PATH
-  AC_ARG_VAR([PYTHON_INCLUDE], [Include flags for Python, bypassing python-config])
-  AC_ARG_VAR([PYTHON_LIBS], [Library flags for Python, bypassing python-config])
-  AC_ARG_VAR([PYTHON_CONFIG], [Path to python-config])
   AS_IF([test -z "$PYTHON_INCLUDE"], [
     AS_IF([test -z "$PYTHON_CONFIG"], [
       AC_PATH_PROGS([PYTHON_CONFIG],
                     [python$PYTHON_VERSION-config python-config],
                     [no],
                     [`dirname $PYTHON`])
-      AS_IF([test "$PYTHON_CONFIG" = no], [AC_MSG_ERROR([cannot find python-config for $PYTHON. Do you have python-dev installed?])])
+      AS_IF([test "$PYTHON_CONFIG" = no], [AC_MSG_ERROR([cannot find python-config for $PYTHON. Is python-dev installed?])])
     ])
     AC_MSG_CHECKING([Python include flags])
     PYTHON_INCLUDE=`$PYTHON_CONFIG --includes`
@@ -343,170 +539,78 @@ if test "x$enable_python_bindings" != xno || test "x$enable_python_plugins" != x
                     [python$PYTHON_VERSION-config python-config],
                     [no],
                     [`dirname $PYTHON`])
-      AS_IF([test "$PYTHON_CONFIG" = no], [AC_MSG_ERROR([cannot find python-config for $PYTHON. Do you have python-dev installed?])])
+      AS_IF([test "$PYTHON_CONFIG" = no], [AC_MSG_ERROR([cannot find python-config for $PYTHON. Is python-dev installed?])])
     ])
     AC_MSG_CHECKING([Python library flags])
     PYTHON_LIBS=`$PYTHON_CONFIG --libs`
     AC_MSG_RESULT([$PYTHON_LIBS])
   ])
-fi
-
-AS_IF([test "x$BUILT_IN_PLUGINS" = ""])
-
-AM_CONDITIONAL([WITH_PYTHON_PLUGINS], [test "x$enable_python_plugins" != xno])
-AS_IF(
-  [test "x$enable_python_plugins" != xno],
-  AC_DEFINE_UNQUOTED([WITH_PYTHON_PLUGINS], [1], [Python plugin support.])
+  ]
 )
 
-AC_ARG_ENABLE([python-bindings-doc],
-              [AC_HELP_STRING([--enable-python-bindings-doc],
-                              [generate Python bindings documentation])],
-              [enable_python_bindings_doc=$enableval], [enable_python_bindings_doc=no])
-
-AM_CONDITIONAL([BUILD_PYTHON_BINDINGS_DOC], [test "x${enable_python_bindings_doc:-yes}" = xyes])
-
-AC_ARG_ENABLE([python-bindings-tests],
-              [AC_HELP_STRING([--enable-python-bindings-tests],
-                              [test Python bindings])],
-              [enable_python_bindings_tests=$enableval], [enable_python_bindings_tests=no])
-
-AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS_TESTS], [test "x${enable_python_bindings_tests:-yes}" = xyes])
-
-if test "x${enable_python_bindings:-no}" = xno; then
-  if test "x${enable_python_bindings_doc:-yes}" = xyes; then
-    AC_MSG_ERROR([--enable-python-bindings-doc was specified without --enable-python-bindings])
-  fi
-
-  if test "x${enable_python_bindings_tests:-yes}" = xyes; then
-    AC_MSG_ERROR([--enable-python-bindings-tests was specified without --enable-python-bindings])
-  fi
-fi
-
-if test "x${enable_python_bindings_doc:-yes}" = xyes; then
+AS_IF([test "x$enable_python_bindings_doc" = xyes],
+  [
     AM_CHECK_PYTHON_SPHINX([PYTHON])
     AS_IF([test "x$PYTHON_SPHINX_EXISTS" = xno],
-      AC_MSG_ERROR([The Sphinx package for Python 3 is required to build Python bindings documentation])
+      [AC_MSG_ERROR([The Sphinx package for Python 3 is required to build the Python bindings documentation])]
     )
-fi
+  ]
+)
 
-if test "x${enable_python_bindings_tests:-yes}" = xyes; then
+AS_IF([test "x$enable_python_bindings_tests" = xyes],
+  [
     AM_CHECK_PYTHON_TAPPY([PYTHON])
     AS_IF([test "x$PYTHON_TAPPY_EXISTS" = xno],
-        AC_MSG_ERROR([You need the tappy Python project to test the Python bindings (see <https://github.com/python-tap/tappy>)])
+      [AC_MSG_ERROR([You need the tappy Python project to test the Python bindings (see <https://github.com/python-tap/tappy>)])]
     )
-fi
-
-# Set default enable state for debug info.
-# The _enable_debug_info variable is prepended with an underscore to
-# avoid clashing with the one generated by AC_ARG_ENABLE.
-AS_IF([test "x$DEFAULT_ENABLE_DEBUG_INFO" = xyes], [_enable_debug_info=yes], [_enable_debug_info=no])
+  ]
+)
 
-# Optional debug info feature
-# Do _not_ indent the help string below (appears in the configure --help
-# output).
-AC_ARG_ENABLE([debug-info],
-[AC_HELP_STRING([--enable-debug-info], [enable the debug info feature (default on Linux)])]
-[AC_HELP_STRING([--disable-debug-info], [disable the debug info feature (default on OS X and Solaris)])],
-       [AS_IF([test "x$enableval" = xyes], [_enable_debug_info=yes], [_enable_debug_info=no])], [])
-
-AM_CONDITIONAL([ENABLE_DEBUG_INFO], [test "x$_enable_debug_info" = xyes])
-
-AS_IF([test "x$_enable_debug_info" = xyes], [
-       # Check if libelf and libdw are present
-       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.)])
-       BT_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.)])
-       AC_DEFINE([ENABLE_DEBUG_INFO], [1], [Define to 1 if you enable the 'debug info' feature])
-], [])
-
-AC_ARG_VAR([BUILT_IN_PLUGINS], [Statically-link in-tree plug-ins into the babeltrace binary])
-AS_IF([test "x$BUILT_IN_PLUGINS" != x], [
-# Built-in plug-ins are only available when the --disable-shared --enable-static options are used.
-       AS_IF([test "x$enable_static" != "xyes"], [AC_MSG_ERROR(--enable-static must be used to bundle plug-ins in the babeltrace executable)])
-       AS_IF([test "x$enable_shared" = "xyes"], [AC_MSG_ERROR(--disable-shared must be used to bundle plug-ins in the babeltrace executable)])
-       built_in_plugins=yes
-       AC_DEFINE([BT_BUILT_IN_PLUGINS], [1], [Define to 1 to register plug-in attributes in static executable sections])
-])
-AM_CONDITIONAL([BUILT_IN_PLUGINS], [test "x$built_in_plugins" = "xyes"])
-
-AC_ARG_VAR([BUILT_IN_PYTHON_PLUGIN_SUPPORT], [Statically-link Python plugin support into the babeltrace library])
-AS_IF([test "x$BUILT_IN_PYTHON_PLUGIN_SUPPORT" != x], [
-# Built-in plug-ins are only available when the --disable-shared --enable-static options are used.
-  AS_IF([test "x$enable_static" != "xyes"], [AC_MSG_ERROR(--enable-static must be used to bundle Python plugin support in the babeltrace executable)])
-  AS_IF([test "x$enable_shared" = "xyes"], [AC_MSG_ERROR(--disable-shared must be used to bundle Python plugin support in the babeltrace executable)])
-  AS_IF([test "x$enable_python_plugins" = "xno"], [
-    AC_MSG_ERROR([You can't use BUILT_IN_PYTHON_PLUGIN_SUPPORT=1 without --enable-python-plugins.])
-  ])
-  built_in_python_plugin_support=yes
-  AC_DEFINE([BT_BUILT_IN_PYTHON_PLUGIN_SUPPORT], [1], [Define to 1 to register plug-in attributes in static executable sections])
-])
-AM_CONDITIONAL([BUILT_IN_PYTHON_PLUGIN_SUPPORT], [test "x$built_in_python_plugin_support" = "xyes"])
+AS_IF([test "x$enable_debug_info" = xyes],
+  [
+    # Check if libelf and libdw are present
+    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.)])
+    BT_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.)])
+  ]
+)
 
-PKG_CHECK_MODULES(GMODULE, [gmodule-no-export-2.0 >= 2.0.0])
+AS_IF([test "x$enable_api_doc" = "xyes"],
+  [
+    DX_DOXYGEN_FEATURE(ON)
+    DX_DOT_FEATURE(OFF)
+    DX_HTML_FEATURE(ON)
+    DX_CHM_FEATURE(OFF)
+    DX_CHI_FEATURE(OFF)
+    DX_MAN_FEATURE(OFF)
+    DX_RTF_FEATURE(OFF)
+    DX_XML_FEATURE(OFF)
+    DX_PDF_FEATURE(OFF)
+    DX_PS_FEATURE(OFF)
+    DX_INIT_DOXYGEN([Babeltrace], [$(srcdir)/Doxyfile], [output])
+    AS_IF([test -z "$DX_DOXYGEN"],
+         [AC_MSG_ERROR([You need doxygen to enable the API documentation])]
+    )
+  ]
+)
 
-# Logging
-AC_ARG_VAR([BABELTRACE_MINIMAL_LOG_LEVEL], [Minimal log level for Babeltrace program, library, and plugins (VERBOSE, DEBUG, INFO, WARN, ERROR (default), FATAL, or NONE)])
-AS_IF([test "x$BABELTRACE_MINIMAL_LOG_LEVEL" = "x"], [BABELTRACE_MINIMAL_LOG_LEVEL=VERBOSE])
-AS_IF([test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "VERBOSE" && test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "DEBUG" && test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "INFO" && test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "WARN" && test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "ERROR" && test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "FATAL" && test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "NONE"], [
-       AC_MSG_ERROR([Invalid BABELTRACE_MINIMAL_LOG_LEVEL value ($BABELTRACE_MINIMAL_LOG_LEVEL): use VERBOSE, DEBUG, INFO, WARN, ERROR, FATAL, or NONE.])
-])
-AC_DEFINE_UNQUOTED([BT_LOG_LEVEL], [BT_LOG_$BABELTRACE_MINIMAL_LOG_LEVEL], [Minimal log level])
 
+# Set global CFLAGS in AM_CFLAGS
 AM_CFLAGS="-Wall -Wformat $PTHREAD_CFLAGS $GLIB_CFLAGS"
 AC_SUBST(AM_CFLAGS)
 
+# Set global CPPFLAGS in AM_CPPFLAGS
 AM_CPPFLAGS="-I\$(top_builddir)/include -I\$(top_srcdir)/include -include config.h"
 AC_SUBST(AM_CPPFLAGS)
 
+# Add glib to global link libs
 LIBS="$GLIB_LIBS"
 
-babeltraceincludedir="${includedir}/babeltrace"
-AC_SUBST(babeltraceincludedir)
-
-babeltracectfwriterincludedir="${includedir}/babeltrace/ctf-writer"
-AC_SUBST(babeltracectfwriterincludedir)
-
-babeltracectfincludedir="${includedir}/babeltrace/ctf"
-AC_SUBST(babeltracectfincludedir)
-
-babeltracectfirincludedir="${includedir}/babeltrace/ctf-ir"
-AC_SUBST(babeltracectfirincludedir)
-
-babeltracepluginincludedir="${includedir}/babeltrace/plugin"
-AC_SUBST(babeltracepluginincludedir)
-
-babeltracegraphincludedir="${includedir}/babeltrace/graph"
-AC_SUBST(babeltracegraphincludedir)
-
+# Abuse autoconf's AC_ARG_PROGRAM output variable 'program_transform_name'
+# to rename babeltrace.bin to babeltrace at install time.
 program_transform_name="s&babeltrace\.bin&babeltrace&;s&babeltrace-log\.bin&babeltrace-log&;$program_transform_name"
 AC_SUBST(program_transform_name)
 
-# check for Doxygen
-AC_ARG_ENABLE(
-  [api-doc],
-  [AC_HELP_STRING(
-    [--enable-api-doc],
-    [generate and install HTML API documentation]
-  )],
-  [enable_api_doc=$enableval],
-  [enable_api_doc=no]
-)
-AM_CONDITIONAL([ENABLE_API_DOC], [test "x$enable_api_doc" = "xyes"])
-
-AS_IF([test "x$enable_api_doc" = "xyes"], [
-  DX_DOXYGEN_FEATURE(ON)
-  DX_DOT_FEATURE(OFF)
-  DX_HTML_FEATURE(ON)
-  DX_CHM_FEATURE(OFF)
-  DX_CHI_FEATURE(OFF)
-  DX_MAN_FEATURE(OFF)
-  DX_RTF_FEATURE(OFF)
-  DX_XML_FEATURE(OFF)
-  DX_PDF_FEATURE(OFF)
-  DX_PS_FEATURE(OFF)
-  DX_INIT_DOXYGEN([Babeltrace], [$(srcdir)/Doxyfile], [output])
-])
 
        #TODO: removed, work in progress
        #bindings/python/Makefile
@@ -558,7 +662,7 @@ AC_CONFIG_FILES([
        plugins/ctf/fs-sink/Makefile
        plugins/ctf/lttng-live/Makefile
        plugins/text/Makefile
-  plugins/text/dmesg/Makefile
+       plugins/text/dmesg/Makefile
        plugins/text/pretty/Makefile
        plugins/utils/Makefile
        plugins/utils/dummy/Makefile
@@ -572,32 +676,26 @@ AC_CONFIG_FILES([
        babeltrace-ctf.pc
 ])
 
-#AC_CONFIG_FILES([converter/babeltrace], [chmod +x converter/babeltrace])
-AC_CONFIG_FILES([tests/lib/test_ctf_writer_complete], [chmod +x tests/lib/test_ctf_writer_complete])
-AC_CONFIG_FILES([tests/lib/test_plugin_complete], [chmod +x tests/lib/test_plugin_complete])
-AC_CONFIG_FILES([tests/lib/test_dwarf_complete], [chmod +x tests/lib/test_dwarf_complete])
-AC_CONFIG_FILES([tests/lib/test_bin_info_complete], [chmod +x tests/lib/test_bin_info_complete])
-
-AC_CONFIG_FILES([tests/plugins/test-utils-muxer-complete], [chmod +x tests/plugins/test-utils-muxer-complete])
-
-AC_CONFIG_FILES([tests/cli/test_trace_read], [chmod +x tests/cli/test_trace_read])
-AC_CONFIG_FILES([tests/cli/test_trace_copy], [chmod +x tests/cli/test_trace_copy])
-AC_CONFIG_FILES([tests/cli/test_debug_info], [chmod +x tests/cli/test_debug_info])
-AC_CONFIG_FILES([tests/cli/test_trimmer], [chmod +x tests/cli/test_trimmer])
+AC_CONFIG_FILES([tests/cli/intersection/bt_python_helper.py])
 AC_CONFIG_FILES([tests/cli/intersection/test_intersection], [chmod +x tests/cli/intersection/test_intersection])
 AC_CONFIG_FILES([tests/cli/test_convert_args], [chmod +x tests/cli/test_convert_args])
-AC_CONFIG_FILES([tests/cli/intersection/bt_python_helper.py])
+AC_CONFIG_FILES([tests/cli/test_debug_info], [chmod +x tests/cli/test_debug_info])
+AC_CONFIG_FILES([tests/cli/test_packet_seq_num], [chmod +x tests/cli/test_packet_seq_num])
+AC_CONFIG_FILES([tests/cli/test_trace_copy], [chmod +x tests/cli/test_trace_copy])
+AC_CONFIG_FILES([tests/cli/test_trace_read], [chmod +x tests/cli/test_trace_read])
+AC_CONFIG_FILES([tests/cli/test_trimmer], [chmod +x tests/cli/test_trimmer])
+AC_CONFIG_FILES([tests/lib/test_bin_info_complete], [chmod +x tests/lib/test_bin_info_complete])
+AC_CONFIG_FILES([tests/lib/test_ctf_writer_complete], [chmod +x tests/lib/test_ctf_writer_complete])
+AC_CONFIG_FILES([tests/lib/test_dwarf_complete], [chmod +x tests/lib/test_dwarf_complete])
+AC_CONFIG_FILES([tests/lib/test_plugin_complete], [chmod +x tests/lib/test_plugin_complete])
 AC_CONFIG_FILES([tests/lib/writer/bt_python_helper.py])
 AC_CONFIG_FILES([tests/lib/writer/test_ctf_writer_empty_packet.py])
 AC_CONFIG_FILES([tests/lib/writer/test_ctf_writer_no_packet_context.py])
-AC_CONFIG_FILES([tests/cli/test_packet_seq_num], [chmod +x tests/cli/test_packet_seq_num])
+AC_CONFIG_FILES([tests/plugins/test-utils-muxer-complete], [chmod +x tests/plugins/test-utils-muxer-complete])
 
-AS_IF([test "x$enable_python" = "xyes"], [
-       AC_CONFIG_FILES(
-               [tests/bindings/python/bt2/testall.sh],
-               [chmod +x tests/bindings/python/bt2/testall.sh]
-       )
-])
+AS_IF([test "x$enable_python" = xyes],
+  [AC_CONFIG_FILES([tests/bindings/python/bt2/testall.sh], [chmod +x tests/bindings/python/bt2/testall.sh])]
+)
 
 AC_OUTPUT
 
@@ -643,16 +741,16 @@ AS_IF([test "x$enable_python_bindings" = "xyes" || test "x$enable_python_plugins
 AS_ECHO
 PPRINT_SUBTITLE([Plugins])
 PPRINT_PROP_BOOL(['ctf' plugin], 1)
-test "x$_enable_debug_info" = "xyes" && value=1 || value=0
+test "x$enable_debug_info" = "xyes" && value=1 || value=0
 PPRINT_PROP_BOOL(['lttng-utils' plugin], $value)
 PPRINT_PROP_BOOL(['text' plugin], 1)
 PPRINT_PROP_BOOL(['utils' plugin], 1)
 
 AS_ECHO
 PPRINT_SUBTITLE([Built-in features])
-test "x$built_in_plugins" = "xyes" && value=1 || value=0
+test "x$enable_built_in_plugins" = "xyes" && value=1 || value=0
 PPRINT_PROP_BOOL([Built-in plugins], $value)
-test "x$built_in_python_plugin_support" = "xyes" && value=1 || value=0
+test "x$enable_built_in_python_plugin_support" = "xyes" && value=1 || value=0
 PPRINT_PROP_BOOL([Built-in Python plugin support], $value)
 
 AS_ECHO
This page took 0.0328580000000001 seconds and 4 git commands to generate.