AC_PREREQ([2.64])
-AC_INIT([lttng-tools],[2.11.0-pre],[jeremie.galarneau@efficios.com],[],[https://lttng.org])
+AC_INIT([lttng-tools],[2.12.0-pre],[jeremie.galarneau@efficios.com],[],[https://lttng.org])
AC_CONFIG_HEADERS([include/config.h])
AC_CONFIG_AUX_DIR([config])
AC_SYS_LARGEFILE
AC_PROG_CC
AC_PROG_CC_STDC
+AC_PROG_CXX
+RW_PROG_CXX_WORKS
+AM_CONDITIONAL([CXX_WORKS], [test "x$rw_cv_prog_cxx_works" = "xyes"])
# Checks for programs.
AC_PROG_GREP
AX_PTHREAD(,[AC_MSG_ERROR([Could not configure pthreads support])])
+# Check if linker has the -no-pie option.
+AX_CHECK_LINK_FLAG([-no-pie], [linker_have_no_pie_option=yes])
+AM_CONDITIONAL([LINKER_HAVE_NO_PIE_OPTION], [test "x$linker_have_no_pie_option" = "xyes"])
+
AX_LIB_SOCKET_NSL
LT_NO_UNDEFINED=""
AC_DEFINE_UNQUOTED([VERSION_PATCHLEVEL], $patchlevel_version, [LTTng-Tools patchlevel version number])
version_name="Codename TBD"
-version_description='Description TBD'
+version_description="Description TBD"
version_description_c=$(echo $version_description | $SED 's/"/\\"/g')
AC_DEFINE_UNQUOTED([VERSION_NAME], ["$version_name"], "")
signal.h stdlib.h sys/un.h sys/socket.h stdlib.h stdio.h \
getopt.h sys/ipc.h sys/shm.h popt.h grp.h arpa/inet.h \
netdb.h netinet/in.h paths.h stddef.h sys/file.h sys/ioctl.h \
- sys/mount.h sys/param.h sys/time.h
+ sys/mount.h sys/param.h sys/time.h elf.h
])
+AM_CONDITIONAL([HAVE_ELF_H], [test x$ac_cv_header_elf_h = xyes])
+
# Basic functions check
AC_CHECK_FUNCS([ \
atexit bzero clock_gettime dup2 fdatasync fls ftruncate \
- gethostbyname gethostname getpagesize localtime_r memchr memset \
+ gethostbyname gethostname getpagesize localtime_r memchr memrchr memset \
mkdir munmap putenv realpath rmdir socket strchr strcspn strdup \
strncasecmp strndup strnlen strpbrk strrchr strstr strtol strtoul \
strtoull dirfd gethostbyname2 getipnodebyname epoll_create1 \
AC_CHECK_LIB([dl], [dlopen], [
have_libdl=yes
libdl_name=dl
+ DL_LIBS="-ldl"
], [
# libdl not found, check for dlopen in libc.
AC_CHECK_LIB([c], [dlopen], [
have_libc_dl=yes
libdl_name=c
+ DL_LIBS="-lc"
], [
AC_MSG_ERROR([Cannot find dlopen in libdl nor libc. Use [LDFLAGS]=-Ldir to specify their location.])
])
])
+AC_SUBST(DL_LIBS)
# Check if libdl has dlmopen support.
AH_TEMPLATE([HAVE_DLMOPEN], ["Define to 1 if dlmopen is available."])
_AC_DEFINE_QUOTED_AND_SUBST([DEFAULT_NETWORK_DATA_BIND_ADDRESS], [0.0.0.0])
_AC_DEFINE_QUOTED_AND_SUBST([DEFAULT_NETWORK_VIEWER_BIND_ADDRESS], [localhost])
_AC_DEFINE_AND_SUBST([DEFAULT_NETWORK_RELAYD_CTRL_MAX_PAYLOAD_SIZE], [134217728])
-_AC_DEFINE_AND_SUBST([DEFAULT_ROTATE_PENDING_RELAY_TIMER], [200000])
+_AC_DEFINE_AND_SUBST([DEFAULT_ROTATE_PENDING_TIMER], [500000])
# Command short descriptions
_AC_DEFINE_QUOTED_AND_SUBST([CMD_DESCR_ADD_CONTEXT], [Add context fields to a channel])
_AC_DEFINE_QUOTED_AND_SUBST([CMD_DESCR_START], [Start tracing])
_AC_DEFINE_QUOTED_AND_SUBST([CMD_DESCR_STATUS], [Get the status of the current tracing session])
_AC_DEFINE_QUOTED_AND_SUBST([CMD_DESCR_STOP], [Stop tracing])
+_AC_DEFINE_QUOTED_AND_SUBST([CMD_DESCR_DISABLE_ROTATION], [Unset a rotation schedule])
+_AC_DEFINE_QUOTED_AND_SUBST([CMD_DESCR_ENABLE_ROTATION], [Set a rotation schedule])
+_AC_DEFINE_QUOTED_AND_SUBST([CMD_DESCR_ROTATE], [Archive a tracing session’s current trace chunk])
_AC_DEFINE_QUOTED_AND_SUBST([CMD_DESCR_TRACK], [Track specific system resources])
_AC_DEFINE_QUOTED_AND_SUBST([CMD_DESCR_UNTRACK], [Untrack specific system resources])
_AC_DEFINE_QUOTED_AND_SUBST([CMD_DESCR_VERSION], [Show version information])
AC_SUBST(CONFDIR)
AC_DEFINE_UNQUOTED([CONFIG_LTTNG_SYSTEM_CONFIGDIR],"$CONFDIR", [LTTng system configuration directory.])
-AC_DEFINE_DIR([CONFIG_LTTNG_SYSTEM_DATADIR],[datadir], [LTTng system data directory.])
+AX_DEFINE_DIR([CONFIG_LTTNG_SYSTEM_DATADIR], [datadir], [LTTng system data directory.])
# Check libpopt
PKG_CHECK_MODULES([POPT], [popt],
[with_lttng_ust=yes]
)
-AS_IF([test "x$with_lttng_ust" = "xyes"],
- [
- AC_CHECK_LIB([lttng-ust-ctl], [ustctl_recv_channel_from_consumer],
- [
- AC_DEFINE([HAVE_LIBLTTNG_UST_CTL], [1])
- ],
- [
- AC_MSG_FAILURE([Cannot find LTTng-UST >= 2.2.x. Use [LDFLAGS]=-Ldir and [CPPFLAGS]=-Idir to specify its location, or specify --without-lttng-ust to build lttng-tools without LTTng-UST support.])
- ],
- [-lurcu-common -lurcu-bp -lurcu-cds -lrt -ldl]
- )
- ]
-)
-AM_CONDITIONAL([HAVE_LIBLTTNG_UST_CTL], [test "x$with_lttng_ust" = "xyes"])
+AS_IF([test "x$with_lttng_ust" = "xyes"], [
+ AC_DEFINE([HAVE_LIBLTTNG_UST_CTL], [1])
+ # Check for liblttng-ust
+ PKG_CHECK_MODULES([UST], [lttng-ust >= $major_version.$minor_version])
+ # Check for liblttng-ust-ctl
+ PKG_CHECK_MODULES([UST_CTL], [lttng-ust-ctl >= $major_version.$minor_version])
+
+ AM_CPPFLAGS="$AM_CPPFLAGS $UST_CFLAGS"
+])
+
+AM_CONDITIONAL([HAVE_LIBLTTNG_UST_CTL], [test "x$with_lttng_ust" = "xyes"])
-# check for dlopen
-AC_CHECK_LIB([dl], [dlopen],
- [DL_LIBS="-ldl"],
- [
- #libdl not found, check for dlopen in libc.
- AC_CHECK_LIB([c], [dlopen],
- [DL_LIBS="-lc"],
- [AC_MSG_FAILURE([Cannot find dlopen in libdl nor libc. Use [LDFLAGS]=-Ldir to specify their location.])]
- )
- ]
-)
-AC_SUBST(DL_LIBS)
# Check for fmemopen
AC_CHECK_LIB([c], [fmemopen],
)
AM_CONDITIONAL([COMPAT_EPOLL], [ test "$enable_epoll" = "yes" ])
+AS_IF([test "x$ac_cv_func_dirfd" = "xyes"],
+ [AX_CONFIG_FEATURE_ENABLE(dirfd)],
+ [AX_CONFIG_FEATURE_DISABLE(dirfd)]
+)
+AX_CONFIG_FEATURE(
+ [dirfd], [Use directory file descriptors],
+ [COMPAT_DIRFD], [This platform supports directory file descriptors.],
+ [enable_dirfd="yes"], [enable_dirfd="no"]
+)
+AM_CONDITIONAL([COMPAT_DIRFD], [ test "$enable_dirfd" = "yes" ])
+
AM_CONDITIONAL([TEST_JAVA_JUL_AGENT], [test "x$test_java_agent_jul" = "xyes"])
AM_CONDITIONAL([TEST_JAVA_LOG4J_AGENT], [test "x$test_java_agent_log4j" = "xyes"])
AC_SUBST([PYTHON2_AGENT])
AC_SUBST([PYTHON3_AGENT])
+AC_ARG_ENABLE([test-sdt-uprobe],
+ [AS_HELP_STRING([--enable-test-sdt-uprobe], [enable the LTTng UST SDT uprobe tests [default=autodetect]])],
+ [test_sdt_uprobe="$enableval"],
+ [test_sdt_uprobe=autodetect]
+)
+
+AS_IF([test "$test_sdt_uprobe" != "no"], [
+ LTTNG_CHECK_SDT_WORKS
+ AC_PATH_PROG([DTRACE], [dtrace])
+])
+
+AS_IF([test "$test_sdt_uprobe" = "yes"], [
+ AS_IF([test "$lttng_cv_sdt_works" = "no"], [
+ AC_MSG_ERROR([Cannot find 'sys/sdt.h'.])
+ ])
+ AS_IF([test "x$DTRACE" = "x"], [
+ AC_MSG_ERROR([Cannot find SystemTap dtrace. You can set the DTRACE variable to override automatic detection.])
+ ])
+])
+
+AS_IF([test "$test_sdt_uprobe" = "autodetect"], [
+ AS_IF([test "$lttng_cv_sdt_works" = "yes"], [
+ AS_IF([test "x$DTRACE" != "x"], [
+ test_sdt_uprobe=yes
+ ])
+ ])
+])
+
+AM_CONDITIONAL([TEST_SDT_UPROBE], [test "$test_sdt_uprobe" = "yes"])
+
# Arguments for binaries build exclusion
AC_ARG_ENABLE([bin-lttng], AS_HELP_STRING([--disable-bin-lttng],[Disable the build of lttng binaries]))
AC_ARG_ENABLE([bin-lttng-consumerd], AS_HELP_STRING([--disable-bin-lttng-consumerd],
build_lib_relayd=yes
build_lib_testpoint=yes
build_lib_health=yes
- build_lib_health=yes
]
)
AM_CFLAGS="-Wall -fno-strict-aliasing $PTHREAD_CFLAGS"
AC_SUBST(AM_CFLAGS)
-AM_CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include -I\$(top_srcdir)/src -include config.h $AM_CPPFLAGS"
+# The order in which the include folders are searched is important.
+# The top_builddir should always be searched first in the event that a build
+# time generated file is included. An example of this is the "version.i" file.
+# In a scenario where lttng-tools is built from a distribution tarball and in a
+# out-of-tree manner, the generated "version.i" has priority on the one from
+# the source (distribution tarball) and must be found first.
+AM_CPPFLAGS="-I\$(top_builddir)/include -I\$(top_srcdir)/include -I\$(top_srcdir)/src -include config.h $AM_CPPFLAGS"
AC_SUBST(AM_CPPFLAGS)
lttngincludedir="${includedir}/lttng"
tests/regression/tools/regen-statedump/Makefile
tests/regression/tools/notification/Makefile
tests/regression/tools/rotation/Makefile
+ tests/regression/tools/base-path/Makefile
+ tests/regression/tools/metadata/Makefile
+ tests/regression/tools/working-directory/Makefile
tests/regression/ust/Makefile
tests/regression/ust/nprocesses/Makefile
tests/regression/ust/high-throughput/Makefile
tests/regression/ust/type-declarations/Makefile
tests/regression/ust/rotation-destroy-flush/Makefile
tests/regression/ust/blocking/Makefile
+ tests/regression/ust/namespaces/Makefile
tests/stress/Makefile
tests/unit/Makefile
tests/unit/ini_config/Makefile
tests/utils/Makefile
tests/utils/tap/Makefile
tests/utils/testapp/Makefile
+ tests/utils/testapp/gen-ns-events/Makefile
tests/utils/testapp/gen-ust-events/Makefile
+ tests/utils/testapp/gen-ust-events-ns/Makefile
tests/utils/testapp/gen-syscall-events-callstack/Makefile
tests/utils/testapp/gen-ust-nevents/Makefile
tests/utils/testapp/gen-ust-nevents-str/Makefile
tests/utils/testapp/gen-syscall-events/Makefile
tests/utils/testapp/gen-ust-tracef/Makefile
+ tests/utils/testapp/userspace-probe-elf-binary/Makefile
+ tests/utils/testapp/userspace-probe-elf-cxx-binary/Makefile
+ tests/utils/testapp/userspace-probe-sdt-binary/Makefile
])
# Inject variable into python test script.
test ! -z "$PYTHON3_AGENT" && value=1 || value=0
PPRINT_PROP_BOOL([LTTng-UST Python3 agent tests], $value)
+# LTTng UST Java agent Log4j tests enabled/disabled
+test "x$test_sdt_uprobe" = "xyes" && value=1 || value=0
+PPRINT_PROP_BOOL([LTTng-UST SDT uprobe tests], $value)
+
#Python binding enabled/disabled
test "x$enable_python_binding" = xyes && value=1 || value=0
AS_ECHO