X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=configure.ac;h=bfef1785cac364cafe2c5400264ae145e45643d0;hp=54aa385c33d608010626b21a06bf86b472a665b2;hb=0b7af9456fb564df73d32ff7712200d14569a375;hpb=d086eb7768842cebd257527cedd9668e6311ea58 diff --git a/configure.ac b/configure.ac index 54aa385c3..bfef1785c 100644 --- a/configure.ac +++ b/configure.ac @@ -1,16 +1,31 @@ -AC_INIT([lttng-tools],[2.1.0-rc9],[dgoulet@efficios.com],[],[http://lttng.org]) +AC_PREREQ([2.64]) +AC_INIT([lttng-tools],[2.8.0-pre],[jeremie.galarneau@efficios.com],[],[https://lttng.org]) AC_CONFIG_AUX_DIR([config]) AC_CANONICAL_TARGET AC_CANONICAL_HOST AC_CONFIG_MACRO_DIR([config]) AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip]) +AM_MAINTAINER_MODE([enable]) m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) -version_name="Basse Messe" -version_description="Light coloured German ale whose style was named after the city Cologne (Koln) where it was first brewed. It is a rather simple beer with lightly fruity aromas and a delicate hoppy fragrance. The beer has a pronounced malty taste with a subtle bitter aftertaste" +# Compute minor/major/patchlevel version numbers +AC_PROG_SED +major_version=$(echo AC_PACKAGE_VERSION | sed 's/^\([[0-9]]\)*\.[[0-9]]*\.[[0-9]]*.*$/\1/') +minor_version=$(echo AC_PACKAGE_VERSION | sed 's/^[[0-9]]*\.\([[0-9]]*\)\.[[0-9]]*.*$/\1/') +patchlevel_version=$(echo AC_PACKAGE_VERSION | sed 's/^[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\).*$/\1/') +AC_SUBST([MAJOR_VERSION], [$major_version]) +AC_SUBST([MINOR_VERSION], [$minor_version]) +AC_SUBST([PATCHLEVEL_VERSION], [$patchlevel_version]) +AC_DEFINE_UNQUOTED([VERSION_MAJOR], $major_version, [LTTng-Tools major version number]) +AC_DEFINE_UNQUOTED([VERSION_MINOR], $minor_version, [LTTng-Tools minor version number]) +AC_DEFINE_UNQUOTED([VERSION_PATCHLEVEL], $patchlevel_version, [LTTng-Tools patchlevel version number]) + +version_name="Herbe à Détourne" +version_description='Brewed with unrestrained amounts of Citra hop, the Herbe à Détourne is a fantastic New World Tripel brewed by "Dieu du Ciel!". Aromas of mango, cantaloupe melon and passion fruit, combined with a controlled bitter finish, unite in making this smooth golden-orange beer stand apart.' +version_description_c=$(echo $version_description | sed 's/"/\\"/g') AC_DEFINE_UNQUOTED([VERSION_NAME], ["$version_name"], "") -AC_DEFINE_UNQUOTED([VERSION_DESCRIPTION], ["$version_description"], "") +AC_DEFINE_UNQUOTED([VERSION_DESCRIPTION], ["$version_description_c"], "") AC_CONFIG_HEADERS([include/config.h]) @@ -44,7 +59,18 @@ AM_CONDITIONAL([NO_SHARED], [test x$enable_shared = xno]) AC_CHECK_HEADERS([ \ sys/types.h unistd.h fcntl.h string.h pthread.h limits.h \ 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 \ + 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 +]) + +# Basic functions check +AC_CHECK_FUNCS([ \ + atexit bzero clock_gettime dup2 fdatasync ftruncate \ + gethostbyname gethostname getpagesize localtime_r memchr memset \ + mkdir munmap putenv realpath rmdir socket strchr strcspn strdup \ + strncasecmp strndup strpbrk strrchr strstr strtol strtoul \ + strtoull \ ]) # Babeltrace viewer check @@ -91,13 +117,39 @@ AC_ARG_WITH([consumerd64-libdir], [CONSUMERD64_LIBDIR='']) AC_SUBST([CONSUMERD64_LIBDIR]) +AC_ARG_WITH([sessiond-bin], + AS_HELP_STRING([--with-sessiond-bin], + [Location of the sessiond executable (including the filename)]), + [SESSIOND_BIN="$withval"], + [SESSIOND_BIN='']) +AC_SUBST([SESSIOND_BIN]) + +AC_ARG_WITH([lttng-system-rundir], + AS_HELP_STRING([--with-lttng-system-rundir], + [Location of the system directory where the system-wide lttng-sessiond runtime files are kept. The default is "/var/run/lttng".]), + [LTTNG_SYSTEM_RUNDIR="$withval"], + [LTTNG_SYSTEM_RUNDIR="/var/run/lttng"]) +AC_SUBST([LTTNG_SYSTEM_RUNDIR]) + AC_DEFINE_UNQUOTED([CONFIG_CONSUMERD32_BIN], "$CONSUMERD32_BIN", [Location of the 32-bit consumerd executable.]) AC_DEFINE_UNQUOTED([CONFIG_CONSUMERD64_BIN], "$CONSUMERD64_BIN", [Location of the 64-bit consumerd executable]) AC_DEFINE_UNQUOTED([CONFIG_CONSUMERD32_LIBDIR], "$CONSUMERD32_LIBDIR", [Search for consumerd 32-bit libraries in this location.]) AC_DEFINE_UNQUOTED([CONFIG_CONSUMERD64_LIBDIR], "$CONSUMERD64_LIBDIR", [Search for consumerd 64-bit libraries in this location.]) AC_DEFINE_UNQUOTED([CONFIG_BABELTRACE_BIN], "$BABELTRACE_BIN", [Location of the babeltrace viewer executable.]) AC_DEFINE_UNQUOTED([CONFIG_LTTV_GUI_BIN], "$LTTV_GUI_BIN", [Location of the lttv GUI viewer executable.]) +AC_DEFINE_UNQUOTED([CONFIG_SESSIOND_BIN], "$SESSIOND_BIN", [Location of the sessiond executable.]) +AC_DEFINE_UNQUOTED([CONFIG_LTTNG_SYSTEM_RUNDIR], ["$LTTNG_SYSTEM_RUNDIR"], [LTTng system runtime directory]) +if test "x$prefix" = "xNONE"; then + prefix=$ac_default_prefix +fi +CONFDIR=`eval echo $sysconfdir` +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.]) + +# # Check for pthread AC_CHECK_LIB([pthread], [pthread_create], [], [AC_MSG_ERROR([Cannot find libpthread. Use [LDFLAGS]=-Ldir to specify its location.])] @@ -108,18 +160,41 @@ AC_CHECK_LIB([popt], [poptGetContext], [], [AC_MSG_ERROR([Cannot find libpopt. Use [LDFLAGS]=-Ldir to specify its location.])] ) +AM_PATH_XML2(2.7.6, true, AC_MSG_ERROR(No supported version of libxml2 found.)) + +# Check for libuuid +AC_CHECK_LIB([uuid], [uuid_generate], +[ + AC_DEFINE_UNQUOTED([LTTNG_HAVE_LIBUUID], 1, [Has libuuid support.]) + have_libuuid=yes +], +[ + # libuuid not found, check for uuid_create in libc. + AC_CHECK_LIB([c], [uuid_create], + [ + AC_DEFINE_UNQUOTED([LTTNG_HAVE_LIBC_UUID], 1, [Has libc uuid support.]) + have_libc_uuid=yes + ], + [ + AC_MSG_ERROR([Cannot find libuuid uuid_generate nor libc uuid_create. Use [LDFLAGS]=-Ldir to specify their location.]) + ]) +] +) +AM_CONDITIONAL([LTTNG_BUILD_WITH_LIBUUID], [test "x$have_libuuid" = "xyes"]) +AM_CONDITIONAL([LTTNG_BUILD_WITH_LIBC_UUID], [test "x$have_libc_uuid" = "xyes"]) + # URCU library version needed or newer -liburcu_version=">= 0.7.2" +liburcu_version=">= 0.8.0" # Check liburcu needed function calls AC_CHECK_DECL([cds_list_add], [], [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include ]] ) -AC_CHECK_DECL([cds_wfq_init], [], - [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include ]] +AC_CHECK_DECL([cds_wfcq_init], [], + [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include ]] ) -AC_CHECK_DECL([cds_wfq_dequeue_blocking], [], - [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include ]] +AC_CHECK_DECL([cds_wfcq_dequeue_blocking], [], + [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include ]] ) AC_CHECK_DECL([futex_async], [], [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include ]] @@ -133,6 +208,45 @@ AC_CHECK_DECL([rcu_thread_online], [], AC_CHECK_DECL([caa_likely], [], [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include ]] ) +#Function added in urcu 0.7.0 +AC_CHECK_DECL([cmm_smp_mb__before_uatomic_or], [], + [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include ]] +) + +# Check kmod library +AC_ARG_WITH(kmod-prefix, + AS_HELP_STRING([--with-kmod-prefix=PATH], + [Specify the installation prefix of the kmod library. + Headers must be in PATH/include; libraries in PATH/lib.]), + [ + CPPFLAGS="$CPPFLAGS -I${withval}/include" + LDFLAGS="$LDFLAGS -L${withval}/lib64 -L${withval}/lib" + ]) + +AC_ARG_ENABLE(kmod, + AS_HELP_STRING([--disable-kmod],[build without kmod support]), + kmod_support=zz$enableval, kmod_support=yes) + +AS_IF([test "x$kmod_support" = "xyes"], [ + AC_CHECK_LIB([kmod], [kmod_module_probe_insert_module], + [ + AC_DEFINE([HAVE_KMOD], [1], [has kmod support]) + LIBS="$LIBS -lkmod" + kmod_found=yes + ], + kmod_found=no + ) +]) +AM_CONDITIONAL([HAVE_KMOD], [test "x$kmod_found" = xyes]) + +AC_ARG_WITH(lttng-ust-prefix, + AS_HELP_STRING([--with-lttng-ust-prefix=PATH], + [Specify the installation prefix of the lttng-ust library. + Headers must be in PATH/include; libraries in PATH/lib.]), + [ + CPPFLAGS="$CPPFLAGS -I${withval}/include" + LDFLAGS="$LDFLAGS -L${withval}/lib64 -L${withval}/lib" + ]) # Check liblttng-ust-ctl library AC_ARG_ENABLE(lttng-ust, @@ -140,17 +254,17 @@ AC_ARG_ENABLE(lttng-ust, lttng_ust_support=$enableval, lttng_ust_support=yes) AS_IF([test "x$lttng_ust_support" = "xyes"], [ - AC_CHECK_LIB([lttng-ust-ctl], [ustctl_set_filter], + AC_CHECK_LIB([lttng-ust-ctl], [ustctl_recv_channel_from_consumer], [ AC_DEFINE([HAVE_LIBLTTNG_UST_CTL], [1], [has LTTng-UST control support]) lttng_ust_ctl_found=yes ], - [AC_MSG_ERROR([Cannot find LTTng-UST 2.1.x. Use [LDFLAGS]=-Ldir to specify its location, or specify --disable-lttng-ust to build lttng-tools without LTTng-UST support.])], - [-lurcu-common -lurcu-bp -lurcu-cds -lrt] + [AC_MSG_ERROR([Cannot find LTTng-UST >= 2.2.x. Use --with-lttng-ust-prefix=PREFIX to specify its location, or specify --disable-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$lttng_ust_ctl_found" = xyes]) -AC_CHECK_FUNCS([sched_getcpu sysconf]) +AC_CHECK_FUNCS([sched_getcpu sysconf sync_file_range]) # check for dlopen AC_CHECK_LIB([dl], [dlopen], @@ -184,6 +298,15 @@ AC_CHECK_LIB([c], [open_memstream], ] ) +AC_ARG_ENABLE([git-version], + [AC_HELP_STRING([--disable-git-version], + [Do not use the git version for the build])], + [have_git_version=$enableval], [have_git_version=yes] +) + +AM_CONDITIONAL([LTTNG_TOOLS_BUILD_GIT_SOURCE], + [test "x${have_git_version}" = "xyes"]) + # For Python # SWIG version needed or newer: swig_version=2.0.0 @@ -220,13 +343,6 @@ else fi -# Option to only build the consumer daemon and its libraries -AC_ARG_WITH([consumerd-only], - AS_HELP_STRING([--with-consumerd-only],[Only build the consumer daemon [default=no]]), - [consumerd_only=$withval], - [consumerd_only=no]) -AM_CONDITIONAL([BUILD_CONSUMERD_ONLY], [test "x$consumerd_only" = "xyes"]) - # Epoll check. If not present, the build will fallback on poll() API AX_HAVE_EPOLL( [AX_CONFIG_FEATURE_ENABLE(epoll)], @@ -239,13 +355,90 @@ AX_CONFIG_FEATURE( ) AM_CONDITIONAL([COMPAT_EPOLL], [ test "$enable_epoll" = "yes" ]) +AX_JAVA_OPTIONS +AX_PROG_JAVAC +AX_PROG_JAVA +AX_PROG_JAR + +AX_CHECK_CLASSPATH + +# Check for Java UST agent common class first +AX_CHECK_CLASS(org.lttng.ust.agent.AbstractLttngAgent) +if test "x$ac_cv_class_org_lttng_ust_agent_AbstractLttngAgent" = "xyes"; then + java_agent_common=yes +else + java_agent_common=no +fi + +# If the common class is available, test for each agent +if test "x$java_agent_common" = "xyes"; then + # Check for JUL + AX_CHECK_CLASS(org.lttng.ust.agent.jul.LttngLogHandler) + AX_CHECK_CLASS(org.lttng.ust.agent.log4j.LttngLogAppender) + AX_CHECK_CLASS(org.apache.log4j.Logger) + + build_java_jul_agent=no + if test "x$ac_cv_class_org_lttng_ust_agent_jul_LttngLogHandler" = "xyes"; then + build_java_jul_agent=yes + fi + + build_java_log4j_agent=no + if test "x$ac_cv_class_org_lttng_ust_agent_log4j_LttngLogAppender" = "xyes"; then + if test "x$ac_cv_class_org_apache_log4j_Logger" = "xyes"; then + build_java_log4j_agent=yes + fi + fi + +fi + +AM_CONDITIONAL([BUILD_JAVA_JUL_AGENT], [test "x$build_java_jul_agent" = "xyes"]) +AM_CONDITIONAL([BUILD_JAVA_LOG4J_AGENT], [test "x$build_java_log4j_agent" = "xyes"]) + AC_SYS_LARGEFILE + +# C compiler tests AC_PROG_CC +AC_C_INLINE + +# Type availability checking +AC_TYPE_INT32_T +AC_TYPE_INT64_T +AC_TYPE_MODE_T +AC_TYPE_OFF_T +AC_TYPE_PID_T +AC_TYPE_SIZE_T +AC_TYPE_SSIZE_T +AC_TYPE_UID_T +AC_TYPE_UINT16_T +AC_TYPE_UINT32_T +AC_TYPE_UINT64_T +AC_TYPE_UINT8_T + LT_INIT AC_PROG_YACC AC_PROG_LEX -AC_DEFUN([AC_PROG_BISON], [AC_CHECK_PROGS(BISON, bison, bison)]) +if test ! -f "$srcdir/src/lib/lttng-ctl/filter/filter-parser.h"; then + if test x"$YACC" != "xbison -y"; then + AC_MSG_ERROR([[bison not found and is required when building from git. + Please install bison]]) + fi + AC_PATH_PROG([BISON],[bison]) + AX_PROG_BISON_VERSION([2.4], [],[ + AC_MSG_ERROR([[Bison >= 2.4 is required when building from git]]) + ]) +fi + +if test ! -f "$srcdir/src/lib/lttng-ctl/filter/filter-lexer.c"; then + if test x"$LEX" != "xflex"; then + AC_MSG_ERROR([[flex not found and is required when building from git. + Please install flex]]) + fi + AC_PATH_PROG([FLEX],[flex]) + AX_PROG_FLEX_VERSION([2.5.35], [],[ + AC_MSG_ERROR([[Flex >= 2.5.35 is required when building from git]]) + ]) +fi CFLAGS="-Wall $CFLAGS -g -fno-strict-aliasing" @@ -268,6 +461,7 @@ AC_CONFIG_FILES([ extras/bindings/Makefile extras/bindings/swig/Makefile extras/bindings/swig/python/Makefile + extras/core-handler/Makefile src/Makefile src/common/Makefile src/common/kernel-ctl/Makefile @@ -278,28 +472,60 @@ AC_CONFIG_FILES([ src/common/compat/Makefile src/common/relayd/Makefile src/common/testpoint/Makefile + src/common/index/Makefile + src/common/health/Makefile + src/common/config/Makefile src/lib/Makefile src/lib/lttng-ctl/Makefile src/lib/lttng-ctl/filter/Makefile + src/lib/lttng-ctl/lttng-ctl.pc src/bin/Makefile src/bin/lttng-consumerd/Makefile src/bin/lttng-sessiond/Makefile src/bin/lttng-relayd/Makefile src/bin/lttng/Makefile + src/bin/lttng-crash/Makefile tests/Makefile - tests/kernel/Makefile - tests/tools/Makefile - tests/tools/streaming/Makefile - tests/tools/filtering/Makefile - tests/tools/health/Makefile - tests/ust/Makefile - tests/ust/nprocesses/Makefile - tests/ust/high-throughput/Makefile - tests/ust/low-throughput/Makefile - tests/ust/before-after/Makefile - tests/ust/multi-session/Makefile - tests/ust/overlap/Makefile - tests/ust/overlap/demo/Makefile + tests/regression/Makefile + tests/regression/kernel/Makefile + tests/regression/tools/Makefile + tests/regression/tools/streaming/Makefile + tests/regression/tools/filtering/Makefile + tests/regression/tools/health/Makefile + tests/regression/tools/tracefile-limits/Makefile + tests/regression/tools/snapshots/Makefile + tests/regression/tools/live/Makefile + tests/regression/tools/exclusion/Makefile + tests/regression/tools/save-load/Makefile + tests/regression/tools/mi/Makefile + tests/regression/ust/Makefile + tests/regression/ust/nprocesses/Makefile + tests/regression/ust/high-throughput/Makefile + tests/regression/ust/low-throughput/Makefile + tests/regression/ust/before-after/Makefile + tests/regression/ust/buffers-pid/Makefile + tests/regression/ust/periodical-metadata-flush/Makefile + tests/regression/ust/multi-session/Makefile + tests/regression/ust/overlap/Makefile + tests/regression/ust/overlap/demo/Makefile + tests/regression/ust/linking/Makefile + tests/regression/ust/daemon/Makefile + tests/regression/ust/exit-fast/Makefile + tests/regression/ust/fork/Makefile + tests/regression/ust/libc-wrapper/Makefile + tests/regression/ust/java-jul/Makefile + tests/regression/ust/java-log4j/Makefile + tests/regression/ust/python-logging/Makefile + tests/regression/ust/getcpu-override/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-ust-events/Makefile + tests/utils/testapp/gen-ust-nevents/Makefile + tests/utils/testapp/gen-ust-tracef/Makefile ]) AC_OUTPUT @@ -328,6 +554,14 @@ done AS_ECHO_N("Target architecture: ") AS_ECHO($target_arch) +# kmod enabled/disabled +AS_ECHO_N("libkmod support: ") +AS_IF([test "x$kmod_found" = "xyes"],[ + AS_ECHO("Enabled") +],[ + AS_ECHO("Disabled") +]) + # LTTng-UST enabled/disabled AS_ECHO_N("Lttng-UST support: ") AS_IF([test "x$lttng_ust_support" = "xyes"],[ @@ -360,6 +594,15 @@ AS_ECHO("`eval eval echo $libdir`") # If we build the sessiond, print the paths it will use AS_IF([test "x$consumerd_only" = "xno"],[ + AS_ECHO() + AS_ECHO_N("The lttng command will look for the lttng-sessiond executable at: ") + AS_IF([test "$SESSIOND_BIN" = ""],[ + AS_ECHO_N("`eval eval echo $bindir`") + AS_ECHO("/lttng-sessiond") + ],[ + AS_ECHO("$SESSIOND_BIN") + ]) + AS_ECHO() AS_ECHO("The sessiond daemon will look in the following directories: ") AS_ECHO_N("32-bit consumerd executable at: ")