ust-fd: Add close_range declaration
[lttng-ust.git] / configure.ac
index 7f31f36c793d3a6903cffa26a87c241d954905fc..ef0d0d151becab9452c52a7970ab0ef0b7fee838 100644 (file)
@@ -1,7 +1,7 @@
 dnl Version infos
 m4_define([V_MAJOR], [2])
 m4_define([V_MINOR], [12])
-m4_define([V_PATCH], [0])
+m4_define([V_PATCH], [10])
 dnl m4_define([V_EXTRA], [])
 m4_define([V_NAME], [[(Ta) Meilleure]])
 m4_define([V_DESC], [[Ta Meilleure is a Northeast IPA beer brewed by Lagabière. Translating to "Your best one", this beer gives out strong aromas of passion fruit, lemon, and peaches. Tastewise, expect a lot of fruit, a creamy texture, and a smooth lingering hop bitterness.]])
@@ -53,7 +53,8 @@ AC_REQUIRE_AUX_FILE([tap-driver.sh])
 AC_USE_SYSTEM_EXTENSIONS
 AC_SYS_LARGEFILE
 AC_PROG_CC
-AC_PROG_CC_STDC
+# AC_PROG_CC_STDC was merged in AC_PROG_CC in autoconf 2.70
+m4_version_prereq([2.70], [], [AC_PROG_CC_STDC])
 AC_PROG_CXX
 RW_PROG_CXX_WORKS
 AM_CONDITIONAL([CXX_WORKS], [test "x$rw_cv_prog_cxx_works" = "xyes"])
@@ -72,8 +73,8 @@ AC_PROG_GREP
 AC_PROG_LN_S
 AC_PROG_MKDIR_P
 AC_PROG_MAKE_SET
-AC_CHECK_PROG([HAVE_CMAKE], [cmake], ["yes"])
-AM_CONDITIONAL([HAVE_CMAKE], [test "x$HAVE_CMAKE" = "xyes"])
+AC_CHECK_PROG([CMAKE], [cmake])
+AM_CONDITIONAL([HAVE_CMAKE], [test "x$CMAKE" != "x"])
 
 # libtool link_all_deplibs fixup. See http://bugs.lttng.org/issues/321.
 AC_ARG_ENABLE([libtool-linkdep-fixup], [
@@ -227,7 +228,7 @@ AC_CHECK_LIB([$libdl_name], [dlmopen],
        [AC_DEFINE([HAVE_DLMOPEN], [1])]
 )
 
-AC_CHECK_LIB([pthread], [pthread_create])
+AC_CHECK_LIB([pthread], [pthread_create], [:])
 AC_CHECK_LIB([pthread], [pthread_setname_np],
        AC_DEFINE([HAVE_PTHREAD_SETNAME_NP], [1], [Define to 1 if pthread_setname_np is available.]),
        AC_CHECK_LIB([pthread], [pthread_set_name_np],
@@ -255,7 +256,7 @@ This error can also occur when the liburcu package's configure script has not be
 
 # urcu-cds - check that URCU Concurrent Data Structure lib is available to compilation
 # Part of Userspace RCU library 0.7.2 or better.
-AC_CHECK_LIB([urcu-cds], [_cds_lfht_new], [], [AC_MSG_ERROR([Cannot find
+AC_CHECK_LIB([urcu-cds], [_cds_lfht_new], [:], [AC_MSG_ERROR([Cannot find
 liburcu-cds lib, part of Userspace RCU 0.7 or better. Use [LDFLAGS]=-Ldir to specify its location.])])
 
 AC_MSG_CHECKING([caa_likely()])
@@ -274,10 +275,10 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
 ])
 
 # urcu - check that URCU lib is available to compilation
-AC_CHECK_LIB([urcu-bp], [urcu_bp_synchronize_rcu], [], [AC_MSG_ERROR([Cannot find liburcu-bp 0.11 or newer. Use [LDFLAGS]=-Ldir to specify its location.])])
+AC_CHECK_LIB([urcu-bp], [urcu_bp_synchronize_rcu], [:], [AC_MSG_ERROR([Cannot find liburcu-bp 0.11 or newer. Use [LDFLAGS]=-Ldir to specify its location.])])
 
 # urcu - check that URCU lib is at least version 0.11
-AC_CHECK_LIB([urcu-bp], [urcu_bp_call_rcu], [], [AC_MSG_ERROR([liburcu 0.11 or newer is needed, please update your version or use [LDFLAGS]=-Ldir to specify the right location.])])
+AC_CHECK_LIB([urcu-bp], [urcu_bp_call_rcu], [:], [AC_MSG_ERROR([liburcu 0.11 or newer is needed, please update your version or use [LDFLAGS]=-Ldir to specify the right location.])])
 
 # numa.h integration
 AS_IF([test "x$NO_NUMA" = "x1"],[
@@ -294,7 +295,7 @@ AS_HELP_STRING([--disable-numa], [disable NUMA support])
 
 AS_IF([test "x$enable_numa" = "xyes"], [
        # numa - check that numa lib is available
-       AC_CHECK_LIB([numa], [numa_available], [],
+       AC_CHECK_LIB([numa], [numa_available], [AC_DEFINE([HAVE_LIBNUMA], [1], [Define to 1 if libnuma is available.])],
 [AC_MSG_ERROR([libnuma is not available. Please either install it (e.g. libnuma-dev) or use [LDFLAGS]=-Ldir to specify the right location, or use --disable-numa configure argument to disable NUMA support.])])
        have_libnuma=yes
 ])
@@ -336,25 +337,39 @@ AS_HELP_STRING([--enable-java-agent-jul], [build the LTTng UST Java agent with J
 ])
 
 AC_ARG_ENABLE([java-agent-log4j], [
-AS_HELP_STRING([--enable-java-agent-log4j], [build the LTTng UST Java agent with Log4j support [default=no]])
+AS_HELP_STRING([--enable-java-agent-log4j], [build the LTTng UST Java agent with Log4j 1.x support [default=no]])
 ], [
        java_agent_log4j=$enableval
 ], [
        java_agent_log4j=no
 ])
 
+AC_ARG_ENABLE([java-agent-log4j2], [
+AS_HELP_STRING([--enable-java-agent-log4j2], [build the LTTng UST Java agent with Log4j 2.x support [default=no]])
+], [
+       java_agent_log4j2=$enableval
+], [
+       java_agent_log4j2=no
+])
+
 AC_ARG_ENABLE([java-agent-all], [
 AS_HELP_STRING([--enable-java-agent-all], [build the LTTng UST Java agent with all supported backends [default=no]])
 ], [
        java_agent_jul=$enableval
        java_agent_log4j=$enableval
+       # This backport to a stable branch requires the explicit use of
+       # '--enable-java-agent-log4j2' to avoid introducing a new dependency in
+       # an existing configuration.
+       #java_agent_log4j2=$enableval
 ], [:])
 
 AM_CONDITIONAL([BUILD_JAVA_AGENT], [test "x$java_agent_jul" = "xyes" || test "x$java_agent_log4j" = "xyes"])
 AM_CONDITIONAL([BUILD_JAVA_AGENT_WITH_JUL], [test "x$java_agent_jul" = "xyes"])
 AM_CONDITIONAL([BUILD_JAVA_AGENT_WITH_LOG4J], [test "x$java_agent_log4j" = "xyes"])
+AM_CONDITIONAL([BUILD_JAVA_AGENT_WITH_LOG4J2], [test "x$java_agent_log4j2" = "xyes"])
+AM_CONDITIONAL([BUILD_JAVA_AGENT_WITH_LOG4J_COMMON], [test "x$java_agent_log4j" = "xyes" || test "x$java_agent_log4j2" = "xyes"])
 
-AS_IF([test "x$jni_interface" = "xyes" || test "x$java_agent_jul" = "xyes" || test "x$java_agent_log4j" = "xyes"], [
+AS_IF([test "x$jni_interface" = "xyes" || test "x$java_agent_jul" = "xyes" || test "x$java_agent_log4j" = "xyes" || test "x$java_agent_log4j2" = "xyes"], [
        AX_JAVA_OPTIONS
        AX_PROG_JAVAC
        AX_PROG_JAVA
@@ -383,6 +398,21 @@ AS_IF([test "x$java_agent_log4j" = "xyes"], [
        ])
 ])
 
+# The log4j 2.x agent requires the log4j core and api jars in the classpath
+AS_IF([test "x$java_agent_log4j2" = "xyes"], [
+  AX_CHECK_CLASSPATH
+  AX_CHECK_CLASS([org.apache.logging.log4j.Logger])
+  AX_CHECK_CLASS([org.apache.logging.log4j.core.Core])
+  AS_IF([test "x$ac_cv_class_org_apache_logging_log4j_Logger" = "xno" || test "x$ac_cv_class_org_apache_logging_log4j_core_Core" = "xno"], [
+    AC_MSG_ERROR([dnl
+The UST Java agent support for log4j was requested but the Log4j classes were
+not found. Please specify the location of the Log4j API and core 2.x jars via the Java CLASSPATH
+environment variable, e.g. ./configure CLASSPATH="/path/to/log4j-core.jar:/path/to/log4j-api.jar"
+Current CLASSPATH: "$CLASSPATH"
+    ])
+  ])
+])
+
 # Option to build the python agent
 AC_ARG_ENABLE([python-agent], [
 AS_HELP_STRING([--enable-python-agent], [build the LTTng UST Python agent [default=no]])
@@ -392,8 +422,21 @@ AS_HELP_STRING([--enable-python-agent], [build the LTTng UST Python agent [defau
 AM_CONDITIONAL([BUILD_PYTHON_AGENT], [test "x$python_agent" = "xyes"])
 AS_IF([test "x$python_agent" = "xyes"], [
        AM_PATH_PYTHON([2.7])
+
+       AX_COMPARE_VERSION(["$PYTHON_VERSION"], [ge], ["3.12"], [
+         have_python_312_or_greater=yes
+         AC_MSG_CHECKING([for python setuptools])
+         AS_IF(["$PYTHON" -c "import setuptools" 2>/dev/null], [
+           AC_MSG_RESULT([yes])
+         ], [
+           AC_MSG_RESULT([no])
+           AC_MSG_ERROR([Python >= 3.12 removed 'distutils', the 'setuptools' module needs to be installed for the selected interpreter.])
+         ])
+       ])
 ])
 
+AM_CONDITIONAL([HAVE_PYTHON_312_OR_GREATER], [test "x$have_python_312_or_greater" = "xyes"])
+
 # sdt.h integration
 AC_ARG_WITH([sdt], [
 AS_HELP_STRING([--with-sdt], [provide SystemTap integration via sdt.h [default=no]])
@@ -511,6 +554,10 @@ AM_CFLAGS="-Wall"
 AC_SUBST(AM_CFLAGS)
 AC_SUBST(JNI_CPPFLAGS)
 
+# Used in man pages
+AC_SUBST([LTTNG_UST_MAJOR_VERSION], V_MAJOR)
+AC_SUBST([LTTNG_UST_MINOR_VERSION], V_MINOR)
+
 AC_CONFIG_FILES([
        Makefile
        doc/Makefile
@@ -533,6 +580,7 @@ AC_CONFIG_FILES([
        liblttng-ust-java-agent/java/lttng-ust-agent-common/Makefile
        liblttng-ust-java-agent/java/lttng-ust-agent-jul/Makefile
        liblttng-ust-java-agent/java/lttng-ust-agent-log4j/Makefile
+       liblttng-ust-java-agent/java/lttng-ust-agent-log4j2/Makefile
        liblttng-ust-java-agent/jni/Makefile
        liblttng-ust-java-agent/jni/common/Makefile
        liblttng-ust-java-agent/jni/jul/Makefile
@@ -556,6 +604,7 @@ AC_CONFIG_FILES([
        tests/utils/Makefile
        tests/test-app-ctx/Makefile
        tests/gcc-weak-hidden/Makefile
+       tests/libringbuffer/Makefile
        lttng-ust.pc
        lttng-ust-ctl.pc
 ])
@@ -564,6 +613,7 @@ AC_CONFIG_FILES([
 AC_CONFIG_LINKS([
        python-lttngust/lttngust/agent.py:python-lttngust/lttngust/agent.py
        python-lttngust/lttngust/cmd.py:python-lttngust/lttngust/cmd.py
+       python-lttngust/lttngust/compat.py:python-lttngust/lttngust/compat.py
        python-lttngust/lttngust/debug.py:python-lttngust/lttngust/debug.py
        python-lttngust/lttngust/loghandler.py:python-lttngust/lttngust/loghandler.py
 ])
@@ -610,7 +660,10 @@ test "x$java_agent_jul" = xyes && value=1 || value=0
 PPRINT_PROP_BOOL_CUSTOM([Java agent (JUL support)], $value, [use --enable-java-agent-jul])
 
 test "x$java_agent_log4j" = xyes && value=1 || value=0
-PPRINT_PROP_BOOL_CUSTOM([Java agent (Log4j support)], $value, [use --enable-java-agent-log4j])
+PPRINT_PROP_BOOL_CUSTOM([Java agent (Log4j 1.x support)], $value, [use --enable-java-agent-log4j])
+
+test "x$java_agent_log4j2" = xyes && value=1 || value=0
+PPRINT_PROP_BOOL_CUSTOM([Java agent (Log4j 2.x support)], $value, [use --enable-java-agent-log4j2])
 
 test "x$jni_interface" = xyes && value=1 || value=0
 PPRINT_PROP_BOOL_CUSTOM([JNI interface (JNI)], $value, [use --enable-jni-interface])
This page took 0.025144 seconds and 4 git commands to generate.