1 AC_INIT([lttng-tools],[2.4.0],[dgoulet@efficios.com],[],[http://lttng.org])
2 AC_CONFIG_AUX_DIR([config])
5 AC_CONFIG_MACRO_DIR([config])
6 AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip])
7 AM_MAINTAINER_MODE([enable])
8 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
10 # Compute minor/major/patchlevel version numbers
12 major_version=$(echo AC_PACKAGE_VERSION | sed 's/^\([[0-9]]\)*\.[[0-9]]*\.[[0-9]]*.*$/\1/')
13 minor_version=$(echo AC_PACKAGE_VERSION | sed 's/^[[0-9]]*\.\([[0-9]]*\)\.[[0-9]]*.*$/\1/')
14 patchlevel_version=$(echo AC_PACKAGE_VERSION | sed 's/^[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\).*$/\1/')
15 AC_SUBST([MAJOR_VERSION], [$major_version])
16 AC_SUBST([MINOR_VERSION], [$minor_version])
17 AC_SUBST([PATCHLEVEL_VERSION], [$patchlevel_version])
18 AC_DEFINE_UNQUOTED([VERSION_MAJOR], $major_version, [LTTng-Tools major version number])
19 AC_DEFINE_UNQUOTED([VERSION_MINOR], $minor_version, [LTTng-Tools minor version number])
20 AC_DEFINE_UNQUOTED([VERSION_PATCHLEVEL], $patchlevel_version, [LTTng-Tools patchlevel version number])
22 version_name="Époque Opaque"
23 version_description="The Époque Opaque is a black IPA from Trou du Diable brewery. The nose is eerily reminiscent of the coffee crisp candy from of our childhood. These strong mocha accents are present on the palate, which are quickly subdued by Japanese and Australian hops leading to a final state of satisfaction enjoyable for any fan of bitter beer."
25 AC_DEFINE_UNQUOTED([VERSION_NAME], ["$version_name"], "")
26 AC_DEFINE_UNQUOTED([VERSION_DESCRIPTION], ["$version_description"], "")
28 AC_CONFIG_HEADERS([include/config.h])
31 # libtool link_all_deplibs fixup. See http://bugs.lttng.org/issues/321.
32 AC_ARG_ENABLE(libtool-linkdep-fixup,
33 AS_HELP_STRING([--disable-libtool-linkdep-fixup],
34 [disable the libtool fixup for linking all dependent libraries (link_all_deplibs)]),
35 libtool_fixup=$enableval,
38 AS_IF([test "x$libtool_fixup" = "xyes"],
40 libtool_m4="$srcdir/config/libtool.m4"
41 libtool_flag_pattern=".*link_all_deplibs\s*,\s*\$1\s*)"
42 AC_MSG_CHECKING([for occurence(s) of link_all_deplibs = no in $libtool_m4])
43 libtool_flag_pattern_count=$(grep -c "$libtool_flag_pattern\s*=\s*no" $libtool_m4)
44 AS_IF([test $libtool_flag_pattern_count -ne 0],
46 AC_MSG_RESULT([$libtool_flag_pattern_count])
47 AC_MSG_WARN([the detected libtool will not link all dependencies, forcing link_all_deplibs = unknown])
48 sed -i "s/\($libtool_flag_pattern\)\s*=\s*no/\1=unknown/g" $libtool_m4
55 AM_CONDITIONAL([NO_SHARED], [test x$enable_shared = xno])
58 sys/types.h unistd.h fcntl.h string.h pthread.h limits.h \
59 signal.h stdlib.h sys/un.h sys/socket.h stdlib.h stdio.h \
60 getopt.h sys/ipc.h sys/shm.h popt.h grp.h \
63 # Babeltrace viewer check
64 AC_ARG_WITH([babeltrace-bin],
65 AS_HELP_STRING([--with-babeltrace-bin],
66 [Location of the babeltrace viewer executable (including the filename)]),
67 [BABELTRACE_BIN="$withval"],
69 AC_SUBST([BABELTRACE_BIN])
72 AC_ARG_WITH([lttv-gui-bin],
73 AS_HELP_STRING([--with-lttv-gui-bin],
74 [Location of the lttv GUI viewer executable (including the filename)]),
75 [LTTV_GUI_BIN="$withval"],
77 AC_SUBST([LTTV_GUI_BIN])
79 AC_ARG_WITH([consumerd32-bin],
80 AS_HELP_STRING([--with-consumerd32-bin],
81 [Location of the 32-bit consumerd executable (including the filename)]),
82 [CONSUMERD32_BIN="$withval"],
84 AC_SUBST([CONSUMERD32_BIN])
86 AC_ARG_WITH([consumerd64-bin],
87 AS_HELP_STRING([--with-consumerd64-bin],
88 [Location of the 64-bit consumerd executable (including the filename)]),
89 [CONSUMERD64_BIN="$withval"],
91 AC_SUBST([CONSUMERD64_BIN])
93 AC_ARG_WITH([consumerd32-libdir],
94 AS_HELP_STRING([--with-consumerd32-libdir],
95 [Directory containing the 32-bit consumerd libraries]),
96 [CONSUMERD32_LIBDIR="$withval"],
97 [CONSUMERD32_LIBDIR=''])
98 AC_SUBST([CONSUMERD32_LIBDIR])
100 AC_ARG_WITH([consumerd64-libdir],
101 AS_HELP_STRING([--with-consumerd64-libdir],
102 [Directory containing the 64-bit consumerd libraries]),
103 [CONSUMERD64_LIBDIR="$withval"],
104 [CONSUMERD64_LIBDIR=''])
105 AC_SUBST([CONSUMERD64_LIBDIR])
107 AC_ARG_WITH([sessiond-bin],
108 AS_HELP_STRING([--with-sessiond-bin],
109 [Location of the sessiond executable (including the filename)]),
110 [SESSIOND_BIN="$withval"],
112 AC_SUBST([SESSIOND_BIN])
114 AC_ARG_WITH([lttng-system-rundir],
115 AS_HELP_STRING([--with-lttng-system-rundir],
116 [Location of the system directory where the system-wide lttng-sessiond runtime files are kept. The default is "/var/run/lttng".]),
117 [LTTNG_SYSTEM_RUNDIR="$withval"],
118 [LTTNG_SYSTEM_RUNDIR="/var/run/lttng"])
119 AC_SUBST([LTTNG_SYSTEM_RUNDIR])
121 AC_DEFINE_UNQUOTED([CONFIG_CONSUMERD32_BIN], "$CONSUMERD32_BIN", [Location of the 32-bit consumerd executable.])
122 AC_DEFINE_UNQUOTED([CONFIG_CONSUMERD64_BIN], "$CONSUMERD64_BIN", [Location of the 64-bit consumerd executable])
123 AC_DEFINE_UNQUOTED([CONFIG_CONSUMERD32_LIBDIR], "$CONSUMERD32_LIBDIR", [Search for consumerd 32-bit libraries in this location.])
124 AC_DEFINE_UNQUOTED([CONFIG_CONSUMERD64_LIBDIR], "$CONSUMERD64_LIBDIR", [Search for consumerd 64-bit libraries in this location.])
125 AC_DEFINE_UNQUOTED([CONFIG_BABELTRACE_BIN], "$BABELTRACE_BIN", [Location of the babeltrace viewer executable.])
126 AC_DEFINE_UNQUOTED([CONFIG_LTTV_GUI_BIN], "$LTTV_GUI_BIN", [Location of the lttv GUI viewer executable.])
127 AC_DEFINE_UNQUOTED([CONFIG_SESSIOND_BIN], "$SESSIOND_BIN", [Location of the sessiond executable.])
128 AC_DEFINE_UNQUOTED([CONFIG_LTTNG_SYSTEM_RUNDIR], ["$LTTNG_SYSTEM_RUNDIR"], [LTTng system runtime directory])
130 if test "x$prefix" = "xNONE"; then
131 prefix=$ac_default_prefix
133 CONFDIR=`eval echo $sysconfdir`
135 AC_DEFINE_UNQUOTED([CONFIG_LTTNG_SYSTEM_CONFIGDIR],"$CONFDIR", [LTTng system configuration directory.])
137 AC_DEFINE_DIR([CONFIG_LTTNG_SYSTEM_DATADIR],[datadir], [LTTng system data directory.])
141 AC_CHECK_LIB([pthread], [pthread_create], [],
142 [AC_MSG_ERROR([Cannot find libpthread. Use [LDFLAGS]=-Ldir to specify its location.])]
146 AC_CHECK_LIB([popt], [poptGetContext], [],
147 [AC_MSG_ERROR([Cannot find libpopt. Use [LDFLAGS]=-Ldir to specify its location.])]
150 AM_PATH_XML2(2.7.6, true, AC_MSG_ERROR(No supported version of libxml2 found.))
153 AC_CHECK_LIB([uuid], [uuid_generate],
155 AC_DEFINE_UNQUOTED([LTTNG_HAVE_LIBUUID], 1, [Has libuuid support.])
159 # libuuid not found, check for uuid_create in libc.
160 AC_CHECK_LIB([c], [uuid_create],
162 AC_DEFINE_UNQUOTED([LTTNG_HAVE_LIBC_UUID], 1, [Has libc uuid support.])
166 AC_MSG_ERROR([Cannot find libuuid uuid_generate nor libc uuid_create. Use [LDFLAGS]=-Ldir to specify their location.])
170 AM_CONDITIONAL([LTTNG_BUILD_WITH_LIBUUID], [test "x$have_libuuid" = "xyes"])
171 AM_CONDITIONAL([LTTNG_BUILD_WITH_LIBC_UUID], [test "x$have_libc_uuid" = "xyes"])
173 # URCU library version needed or newer
174 liburcu_version=">= 0.7.2"
176 # Check liburcu needed function calls
177 AC_CHECK_DECL([cds_list_add], [],
178 [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include <urcu/list.h>]]
180 AC_CHECK_DECL([cds_wfq_init], [],
181 [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include <urcu/wfqueue.h>]]
183 AC_CHECK_DECL([cds_wfq_dequeue_blocking], [],
184 [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include <urcu/wfqueue.h>]]
186 AC_CHECK_DECL([futex_async], [],
187 [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include <urcu/futex.h>]]
189 AC_CHECK_DECL([rcu_thread_offline], [],
190 [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include <urcu.h>]]
192 AC_CHECK_DECL([rcu_thread_online], [],
193 [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include <urcu.h>]]
195 AC_CHECK_DECL([caa_likely], [],
196 [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include <urcu.h>]]
198 #Function added in urcu 0.7.0
199 AC_CHECK_DECL([cmm_smp_mb__before_uatomic_or], [],
200 [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include <urcu.h>]]
203 AC_ARG_WITH(lttng-ust-prefix,
204 AS_HELP_STRING([--with-lttng-ust-prefix=PATH],
205 [Specify the installation prefix of the lttng-ust library.
206 Headers must be in PATH/include; libraries in PATH/lib.]),
208 CPPFLAGS="$CPPFLAGS -I${withval}/include"
209 LDFLAGS="$LDFLAGS -L${withval}/lib64 -L${withval}/lib"
212 # Check liblttng-ust-ctl library
213 AC_ARG_ENABLE(lttng-ust,
214 AS_HELP_STRING([--disable-lttng-ust],[build without LTTng-UST (Userspace Tracing) support]),
215 lttng_ust_support=$enableval, lttng_ust_support=yes)
217 AS_IF([test "x$lttng_ust_support" = "xyes"], [
218 AC_CHECK_LIB([lttng-ust-ctl], [ustctl_recv_channel_from_consumer],
220 AC_DEFINE([HAVE_LIBLTTNG_UST_CTL], [1], [has LTTng-UST control support])
221 lttng_ust_ctl_found=yes
223 [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.])],
224 [-lurcu-common -lurcu-bp -lurcu-cds -lrt]
227 AM_CONDITIONAL([HAVE_LIBLTTNG_UST_CTL], [test "x$lttng_ust_ctl_found" = xyes])
228 AC_CHECK_FUNCS([sched_getcpu sysconf sync_file_range])
231 AC_CHECK_LIB([dl], [dlopen],
236 #libdl not found, check for dlopen in libc.
237 AC_CHECK_LIB([c], [dlopen],
242 AC_MSG_ERROR([Cannot find dlopen in libdl nor libc. Use [LDFLAGS]=-Ldir to specify their location.])
245 AM_CONDITIONAL([LTTNG_TOOLS_BUILD_WITH_LIBDL], [test "x$have_libdl" = "xyes"])
246 AM_CONDITIONAL([LTTNG_TOOLS_BUILD_WITH_LIBC_DL], [test "x$have_libc_dl" = "xyes"])
249 AC_CHECK_LIB([c], [fmemopen],
251 AC_DEFINE_UNQUOTED([LTTNG_HAVE_FMEMOPEN], 1, [Has fmemopen support.])
255 # Check for open_memstream
256 AC_CHECK_LIB([c], [open_memstream],
258 AC_DEFINE_UNQUOTED([LTTNG_HAVE_OPEN_MEMSTREAM], 1, [Has open_memstream support.])
263 # SWIG version needed or newer:
266 AC_ARG_ENABLE([python-bindings],
267 [AC_HELP_STRING([--enable-python-bindings],
268 [compile Python bindings])],
269 [enable_python=yes], [enable_python=no])
271 AM_CONDITIONAL([USE_PYTHON], [test "x${enable_python:-yes}" = xyes])
273 if test "x${enable_python:-yes}" = xyes; then
274 AX_PKG_SWIG($swig_version, [], [ AC_MSG_ERROR([SWIG $swig_version or newer is needed]) ])
277 AC_ARG_VAR([PYTHON_INCLUDE], [Include flags for python, bypassing python-config])
278 AC_ARG_VAR([PYTHON_CONFIG], [Path to python-config])
279 AS_IF([test -z "$PYTHON_INCLUDE"], [
280 AS_IF([test -z "$PYTHON_CONFIG"], [
281 AC_PATH_PROGS([PYTHON_CONFIG],
282 [python$PYTHON_VERSION-config python-config],
285 AS_IF([test "$PYTHON_CONFIG" = no], [AC_MSG_ERROR([cannot find python-config for $PYTHON. Do you have python-dev installed?])])
287 AC_MSG_CHECKING([python include flags])
288 PYTHON_INCLUDE=`$PYTHON_CONFIG --includes`
289 AC_MSG_RESULT([$PYTHON_INCLUDE])
293 AC_MSG_NOTICE([You may configure with --enable-python-bindings ]dnl
294 [if you want Python bindings.])
298 # Option to only build the consumer daemon and its libraries
299 AC_ARG_WITH([consumerd-only],
300 AS_HELP_STRING([--with-consumerd-only],[Only build the consumer daemon [default=no]]),
301 [consumerd_only=$withval],
303 AM_CONDITIONAL([BUILD_CONSUMERD_ONLY], [test "x$consumerd_only" = "xyes"])
305 # Epoll check. If not present, the build will fallback on poll() API
307 [AX_CONFIG_FEATURE_ENABLE(epoll)],
308 [AX_CONFIG_FEATURE_DISABLE(epoll)]
311 [epoll], [This platform supports epoll(7)],
312 [HAVE_EPOLL], [This platform supports epoll(7).],
313 [enable_epoll="yes"], [enable_epoll="no"]
315 AM_CONDITIONAL([COMPAT_EPOLL], [ test "$enable_epoll" = "yes" ])
317 # Set compile flags to java include files if given. This is only used to
319 AC_ARG_WITH([java-jdk],
320 [AS_HELP_STRING([--with-java-jdk=DIR],[use the Java JDK in DIR. Ex : $JAVA_HOME.])],
324 AM_CONDITIONAL([HAVE_JAVA_JDK], [test $JAVA_JDK], [Java JDK path])
327 AS_IF([test $JAVA_JDK],[
328 AS_IF([test -d $JAVA_JDK],
330 AC_MSG_RESULT([using Java includes in $JAVA_SDK])
331 SUBDIRS=`find $JAVA_JDK/include -type d`
333 CPPFLAGS+=`for x in $SUBDIRS; do echo -n "-I$x "; done`
335 ],[AC_MSG_ERROR(Unable to find Java include files in $JAVA_JDK)]
339 # Check for the UST JUL jar file in the system. Hardcoded path is added here
340 # since we have *no* idea where this could be installed. Note that this is only
341 # used for JUL testing.
342 AC_MSG_CHECKING(Java JUL UST jar file)
343 java_jul_jar_path="/usr/local/lib/lttng/java/liblttng-ust-jul.jar"
344 if test -f $java_jul_jar_path; then
349 AC_MSG_RESULT(not found)
351 AM_CONDITIONAL([BUILD_JAVA_JUL], [test "x$build_java_jul" = "xyes"])
352 AC_SUBST([java_jul_jar_path])
360 if test ! -f "$srcdir/src/lib/lttng-ctl/filter/filter-parser.h"; then
361 if test x"$YACC" != "xbison -y"; then
362 AC_MSG_ERROR([[bison not found and is required when building from git.
363 Please install bison]])
367 if test ! -f "$srcdir/src/lib/lttng-ctl/filter/filter-lexer.c"; then
368 if test x"$LEX" != "xflex"; then
369 AC_MSG_ERROR([[flex not found and is required when building from git.
370 Please install flex]])
374 CFLAGS="-Wall $CFLAGS -g -fno-strict-aliasing"
376 DEFAULT_INCLUDES="-I\$(top_srcdir) -I\$(top_builddir) -I\$(top_builddir)/src -I\$(top_builddir)/include -include config.h"
378 lttngincludedir="${includedir}/lttng"
380 AC_SUBST(lttngincludedir)
381 AC_SUBST(DEFAULT_INCLUDES)
383 lttnglibexecdir="${libdir}/lttng/libexec"
384 AC_SUBST(lttnglibexecdir)
392 extras/bindings/Makefile
393 extras/bindings/swig/Makefile
394 extras/bindings/swig/python/Makefile
395 extras/core-handler/Makefile
398 src/common/kernel-ctl/Makefile
399 src/common/kernel-consumer/Makefile
400 src/common/ust-consumer/Makefile
401 src/common/hashtable/Makefile
402 src/common/sessiond-comm/Makefile
403 src/common/compat/Makefile
404 src/common/relayd/Makefile
405 src/common/testpoint/Makefile
406 src/common/index/Makefile
407 src/common/health/Makefile
408 src/common/config/Makefile
410 src/lib/lttng-ctl/Makefile
411 src/lib/lttng-ctl/filter/Makefile
412 src/lib/lttng-ctl/lttng-ctl.pc
414 src/bin/lttng-consumerd/Makefile
415 src/bin/lttng-sessiond/Makefile
416 src/bin/lttng-relayd/Makefile
417 src/bin/lttng/Makefile
419 tests/regression/Makefile
420 tests/regression/kernel/Makefile
421 tests/regression/tools/Makefile
422 tests/regression/tools/streaming/Makefile
423 tests/regression/tools/filtering/Makefile
424 tests/regression/tools/health/Makefile
425 tests/regression/tools/tracefile-limits/Makefile
426 tests/regression/tools/snapshots/Makefile
427 tests/regression/tools/live/Makefile
428 tests/regression/tools/exclusion/Makefile
429 tests/regression/tools/save-load/Makefile
430 tests/regression/ust/Makefile
431 tests/regression/ust/nprocesses/Makefile
432 tests/regression/ust/high-throughput/Makefile
433 tests/regression/ust/low-throughput/Makefile
434 tests/regression/ust/before-after/Makefile
435 tests/regression/ust/buffers-pid/Makefile
436 tests/regression/ust/periodical-metadata-flush/Makefile
437 tests/regression/ust/multi-session/Makefile
438 tests/regression/ust/overlap/Makefile
439 tests/regression/ust/overlap/demo/Makefile
440 tests/regression/ust/linking/Makefile
441 tests/regression/ust/daemon/Makefile
442 tests/regression/ust/exit-fast/Makefile
443 tests/regression/ust/fork/Makefile
444 tests/regression/ust/libc-wrapper/Makefile
445 tests/regression/ust/java-jul/Makefile
446 tests/stress/Makefile
448 tests/unit/ini_config/Makefile
450 tests/utils/tap/Makefile
451 tests/utils/testapp/Makefile
452 tests/utils/testapp/gen-ust-events/Makefile
453 tests/utils/testapp/gen-ust-nevents/Makefile
459 # Mini-report on what will be built
463 AS_ECHO("Version name: $version_name")
464 AS_ECHO("$version_description")
468 # Target architecture we're building for
469 target_arch=$host_cpu
472 if test $f = "-m32"; then
474 elif test $f = "-m64"; then
479 AS_ECHO_N("Target architecture: ")
480 AS_ECHO($target_arch)
482 # LTTng-UST enabled/disabled
483 AS_ECHO_N("Lttng-UST support: ")
484 AS_IF([test "x$lttng_ust_support" = "xyes"],[
490 #Python binding enabled/disabled
491 AS_ECHO_N("Python binding: ")
492 AS_IF([test "x${enable_python:-yes}" = xyes], [
498 # Do we build only the consumerd, or everything
499 AS_IF([test "x$consumerd_only" = "xyes"],[
500 AS_ECHO("Only the consumerd daemon will be built.")
502 AS_ECHO("All binaries will be built.")
505 # Print the bindir and libdir this `make install' will install into.
507 AS_ECHO_N("Binaries will be installed in: ")
508 AS_ECHO("`eval eval echo $bindir`")
509 AS_ECHO_N("Libraries will be installed in: ")
510 AS_ECHO("`eval eval echo $libdir`")
512 # If we build the sessiond, print the paths it will use
513 AS_IF([test "x$consumerd_only" = "xno"],[
515 AS_ECHO_N("The lttng command will look for the lttng-sessiond executable at: ")
516 AS_IF([test "$SESSIOND_BIN" = ""],[
517 AS_ECHO_N("`eval eval echo $bindir`")
518 AS_ECHO("/lttng-sessiond")
520 AS_ECHO("$SESSIOND_BIN")
524 AS_ECHO("The sessiond daemon will look in the following directories: ")
525 AS_ECHO_N("32-bit consumerd executable at: ")
526 AS_IF([test "$CONSUMERD32_BIN" = ""],[
527 AS_ECHO_N("`eval eval echo $lttnglibexecdir`")
528 AS_ECHO("/lttng-consumerd")
530 AS_ECHO("$CONSUMERD32_BIN")
533 AS_ECHO_N("32-bit consumer libraries in: ")
534 AS_IF([test "$CONSUMERD32_LIBDIR" = ""],[
535 AS_ECHO("`eval eval echo $libdir`")
537 AS_ECHO("$CONSUMERD32_LIBDIR")
540 AS_ECHO_N("64-bit consumerd executable at: ")
541 AS_IF([test "$CONSUMERD64_BIN" = ""],[
542 AS_ECHO_N("`eval eval echo $lttnglibexecdir`")
543 AS_ECHO("/lttng-consumerd")
545 AS_ECHO("$CONSUMERD64_BIN")
548 AS_ECHO_N("64-bit consumer libraries in: ")
549 AS_IF([test "$CONSUMERD64_LIBDIR" = ""],[
550 AS_ECHO("`eval eval echo $libdir`")
552 AS_ECHO("$CONSUMERD64_LIBDIR")