Add missing copyright to utils.c
[lttng-tools.git] / configure.ac
... / ...
CommitLineData
1AC_INIT([lttng-tools],[2.4.0-rc1],[dgoulet@efficios.com],[],[http://lttng.org])
2AC_CONFIG_AUX_DIR([config])
3AC_CANONICAL_TARGET
4AC_CANONICAL_HOST
5AC_CONFIG_MACRO_DIR([config])
6AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip])
7m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
8
9# Compute minor/major/patchlevel version numbers
10AC_PROG_SED
11major_version=$(echo AC_PACKAGE_VERSION | sed 's/^\([[0-9]]\)*\.[[0-9]]*\.[[0-9]]*.*$/\1/')
12minor_version=$(echo AC_PACKAGE_VERSION | sed 's/^[[0-9]]*\.\([[0-9]]*\)\.[[0-9]]*.*$/\1/')
13patchlevel_version=$(echo AC_PACKAGE_VERSION | sed 's/^[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\).*$/\1/')
14AC_SUBST([MAJOR_VERSION], [$major_version])
15AC_SUBST([MINOR_VERSION], [$minor_version])
16AC_SUBST([PATCHLEVEL_VERSION], [$patchlevel_version])
17AC_DEFINE_UNQUOTED([VERSION_MAJOR], $major_version, [LTTng-Tools major version number])
18AC_DEFINE_UNQUOTED([VERSION_MINOR], $minor_version, [LTTng-Tools minor version number])
19AC_DEFINE_UNQUOTED([VERSION_PATCHLEVEL], $patchlevel_version, [LTTng-Tools patchlevel version number])
20
21version_name="Époque Opaque"
22version_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."
23
24AC_DEFINE_UNQUOTED([VERSION_NAME], ["$version_name"], "")
25AC_DEFINE_UNQUOTED([VERSION_DESCRIPTION], ["$version_description"], "")
26
27AC_CONFIG_HEADERS([include/config.h])
28
29AC_PROG_GREP
30# libtool link_all_deplibs fixup. See http://bugs.lttng.org/issues/321.
31AC_ARG_ENABLE(libtool-linkdep-fixup,
32 AS_HELP_STRING([--disable-libtool-linkdep-fixup],
33 [disable the libtool fixup for linking all dependent libraries (link_all_deplibs)]),
34 libtool_fixup=$enableval,
35 libtool_fixup=yes)
36
37AS_IF([test "x$libtool_fixup" = "xyes"],
38 [
39 libtool_m4="$srcdir/config/libtool.m4"
40 libtool_flag_pattern=".*link_all_deplibs\s*,\s*\$1\s*)"
41 AC_MSG_CHECKING([for occurence(s) of link_all_deplibs = no in $libtool_m4])
42 libtool_flag_pattern_count=$(grep -c "$libtool_flag_pattern\s*=\s*no" $libtool_m4)
43 AS_IF([test $libtool_flag_pattern_count -ne 0],
44 [
45 AC_MSG_RESULT([$libtool_flag_pattern_count])
46 AC_MSG_WARN([the detected libtool will not link all dependencies, forcing link_all_deplibs = unknown])
47 sed -i "s/\($libtool_flag_pattern\)\s*=\s*no/\1=unknown/g" $libtool_m4
48 ],
49 [
50 AC_MSG_RESULT([none])
51 ])
52 ])
53
54AM_CONDITIONAL([NO_SHARED], [test x$enable_shared = xno])
55
56AC_CHECK_HEADERS([ \
57 sys/types.h unistd.h fcntl.h string.h pthread.h limits.h \
58 signal.h stdlib.h sys/un.h sys/socket.h stdlib.h stdio.h \
59 getopt.h sys/ipc.h sys/shm.h popt.h grp.h \
60])
61
62# Babeltrace viewer check
63AC_ARG_WITH([babeltrace-bin],
64 AS_HELP_STRING([--with-babeltrace-bin],
65 [Location of the babeltrace viewer executable (including the filename)]),
66 [BABELTRACE_BIN="$withval"],
67 [BABELTRACE_BIN=''])
68AC_SUBST([BABELTRACE_BIN])
69
70# lttv-gui
71AC_ARG_WITH([lttv-gui-bin],
72 AS_HELP_STRING([--with-lttv-gui-bin],
73 [Location of the lttv GUI viewer executable (including the filename)]),
74 [LTTV_GUI_BIN="$withval"],
75 [LTTV_GUI_BIN=''])
76AC_SUBST([LTTV_GUI_BIN])
77
78AC_ARG_WITH([consumerd32-bin],
79 AS_HELP_STRING([--with-consumerd32-bin],
80 [Location of the 32-bit consumerd executable (including the filename)]),
81 [CONSUMERD32_BIN="$withval"],
82 [CONSUMERD32_BIN=''])
83AC_SUBST([CONSUMERD32_BIN])
84
85AC_ARG_WITH([consumerd64-bin],
86 AS_HELP_STRING([--with-consumerd64-bin],
87 [Location of the 64-bit consumerd executable (including the filename)]),
88 [CONSUMERD64_BIN="$withval"],
89 [CONSUMERD64_BIN=''])
90AC_SUBST([CONSUMERD64_BIN])
91
92AC_ARG_WITH([consumerd32-libdir],
93 AS_HELP_STRING([--with-consumerd32-libdir],
94 [Directory containing the 32-bit consumerd libraries]),
95 [CONSUMERD32_LIBDIR="$withval"],
96 [CONSUMERD32_LIBDIR=''])
97AC_SUBST([CONSUMERD32_LIBDIR])
98
99AC_ARG_WITH([consumerd64-libdir],
100 AS_HELP_STRING([--with-consumerd64-libdir],
101 [Directory containing the 64-bit consumerd libraries]),
102 [CONSUMERD64_LIBDIR="$withval"],
103 [CONSUMERD64_LIBDIR=''])
104AC_SUBST([CONSUMERD64_LIBDIR])
105
106AC_ARG_WITH([sessiond-bin],
107 AS_HELP_STRING([--with-sessiond-bin],
108 [Location of the sessiond executable (including the filename)]),
109 [SESSIOND_BIN="$withval"],
110 [SESSIOND_BIN=''])
111AC_SUBST([SESSIOND_BIN])
112
113AC_ARG_WITH([lttng-system-rundir],
114 AS_HELP_STRING([--with-lttng-system-rundir],
115 [Location of the system directory where the system-wide lttng-sessiond runtime files are kept. The default is "/var/run/lttng".]),
116 [LTTNG_SYSTEM_RUNDIR="$withval"],
117 [LTTNG_SYSTEM_RUNDIR="/var/run/lttng"])
118AC_SUBST([LTTNG_SYSTEM_RUNDIR])
119
120AC_DEFINE_UNQUOTED([CONFIG_CONSUMERD32_BIN], "$CONSUMERD32_BIN", [Location of the 32-bit consumerd executable.])
121AC_DEFINE_UNQUOTED([CONFIG_CONSUMERD64_BIN], "$CONSUMERD64_BIN", [Location of the 64-bit consumerd executable])
122AC_DEFINE_UNQUOTED([CONFIG_CONSUMERD32_LIBDIR], "$CONSUMERD32_LIBDIR", [Search for consumerd 32-bit libraries in this location.])
123AC_DEFINE_UNQUOTED([CONFIG_CONSUMERD64_LIBDIR], "$CONSUMERD64_LIBDIR", [Search for consumerd 64-bit libraries in this location.])
124AC_DEFINE_UNQUOTED([CONFIG_BABELTRACE_BIN], "$BABELTRACE_BIN", [Location of the babeltrace viewer executable.])
125AC_DEFINE_UNQUOTED([CONFIG_LTTV_GUI_BIN], "$LTTV_GUI_BIN", [Location of the lttv GUI viewer executable.])
126AC_DEFINE_UNQUOTED([CONFIG_SESSIOND_BIN], "$SESSIOND_BIN", [Location of the sessiond executable.])
127AC_DEFINE_UNQUOTED([CONFIG_LTTNG_SYSTEM_RUNDIR], ["$LTTNG_SYSTEM_RUNDIR"], [LTTng system runtime directory])
128
129# Check for pthread
130AC_CHECK_LIB([pthread], [pthread_create], [],
131 [AC_MSG_ERROR([Cannot find libpthread. Use [LDFLAGS]=-Ldir to specify its location.])]
132)
133
134# Check libpopt
135AC_CHECK_LIB([popt], [poptGetContext], [],
136 [AC_MSG_ERROR([Cannot find libpopt. Use [LDFLAGS]=-Ldir to specify its location.])]
137)
138
139# Check for libuuid
140AC_CHECK_LIB([uuid], [uuid_generate],
141[
142 AC_DEFINE_UNQUOTED([LTTNG_HAVE_LIBUUID], 1, [Has libuuid support.])
143 have_libuuid=yes
144],
145[
146 # libuuid not found, check for uuid_create in libc.
147 AC_CHECK_LIB([c], [uuid_create],
148 [
149 AC_DEFINE_UNQUOTED([LTTNG_HAVE_LIBC_UUID], 1, [Has libc uuid support.])
150 have_libc_uuid=yes
151 ],
152 [
153 AC_MSG_ERROR([Cannot find libuuid uuid_generate nor libc uuid_create. Use [LDFLAGS]=-Ldir to specify their location.])
154 ])
155]
156)
157AM_CONDITIONAL([LTTNG_BUILD_WITH_LIBUUID], [test "x$have_libuuid" = "xyes"])
158AM_CONDITIONAL([LTTNG_BUILD_WITH_LIBC_UUID], [test "x$have_libc_uuid" = "xyes"])
159
160# URCU library version needed or newer
161liburcu_version=">= 0.7.2"
162
163# Check liburcu needed function calls
164AC_CHECK_DECL([cds_list_add], [],
165 [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include <urcu/list.h>]]
166)
167AC_CHECK_DECL([cds_wfq_init], [],
168 [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include <urcu/wfqueue.h>]]
169)
170AC_CHECK_DECL([cds_wfq_dequeue_blocking], [],
171 [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include <urcu/wfqueue.h>]]
172)
173AC_CHECK_DECL([futex_async], [],
174 [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include <urcu/futex.h>]]
175)
176AC_CHECK_DECL([rcu_thread_offline], [],
177 [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include <urcu.h>]]
178)
179AC_CHECK_DECL([rcu_thread_online], [],
180 [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include <urcu.h>]]
181)
182AC_CHECK_DECL([caa_likely], [],
183 [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include <urcu.h>]]
184)
185#Function added in urcu 0.7.0
186AC_CHECK_DECL([cmm_smp_mb__before_uatomic_or], [],
187 [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include <urcu.h>]]
188)
189
190AC_ARG_WITH(lttng-ust-prefix,
191 AS_HELP_STRING([--with-lttng-ust-prefix=PATH],
192 [Specify the installation prefix of the lttng-ust library.
193 Headers must be in PATH/include; libraries in PATH/lib.]),
194 [
195 CPPFLAGS="$CPPFLAGS -I${withval}/include"
196 LDFLAGS="$LDFLAGS -L${withval}/lib64 -L${withval}/lib"
197 ])
198
199# Check liblttng-ust-ctl library
200AC_ARG_ENABLE(lttng-ust,
201 AS_HELP_STRING([--disable-lttng-ust],[build without LTTng-UST (Userspace Tracing) support]),
202 lttng_ust_support=$enableval, lttng_ust_support=yes)
203
204AS_IF([test "x$lttng_ust_support" = "xyes"], [
205 AC_CHECK_LIB([lttng-ust-ctl], [ustctl_recv_channel_from_consumer],
206 [
207 AC_DEFINE([HAVE_LIBLTTNG_UST_CTL], [1], [has LTTng-UST control support])
208 lttng_ust_ctl_found=yes
209 ],
210 [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.])],
211 [-lurcu-common -lurcu-bp -lurcu-cds -lrt]
212 )
213])
214AM_CONDITIONAL([HAVE_LIBLTTNG_UST_CTL], [test "x$lttng_ust_ctl_found" = xyes])
215AC_CHECK_FUNCS([sched_getcpu sysconf sync_file_range])
216
217# check for dlopen
218AC_CHECK_LIB([dl], [dlopen],
219[
220 have_libdl=yes
221],
222[
223 #libdl not found, check for dlopen in libc.
224 AC_CHECK_LIB([c], [dlopen],
225 [
226 have_libc_dl=yes
227 ],
228 [
229 AC_MSG_ERROR([Cannot find dlopen in libdl nor libc. Use [LDFLAGS]=-Ldir to specify their location.])
230 ])
231])
232AM_CONDITIONAL([LTTNG_TOOLS_BUILD_WITH_LIBDL], [test "x$have_libdl" = "xyes"])
233AM_CONDITIONAL([LTTNG_TOOLS_BUILD_WITH_LIBC_DL], [test "x$have_libc_dl" = "xyes"])
234
235# Check for fmemopen
236AC_CHECK_LIB([c], [fmemopen],
237[
238 AC_DEFINE_UNQUOTED([LTTNG_HAVE_FMEMOPEN], 1, [Has fmemopen support.])
239]
240)
241
242# Check for open_memstream
243AC_CHECK_LIB([c], [open_memstream],
244[
245 AC_DEFINE_UNQUOTED([LTTNG_HAVE_OPEN_MEMSTREAM], 1, [Has open_memstream support.])
246]
247)
248
249# For Python
250# SWIG version needed or newer:
251swig_version=2.0.0
252
253AC_ARG_ENABLE([python-bindings],
254 [AC_HELP_STRING([--enable-python-bindings],
255 [compile Python bindings])],
256 [enable_python=yes], [enable_python=no])
257
258AM_CONDITIONAL([USE_PYTHON], [test "x${enable_python:-yes}" = xyes])
259
260if test "x${enable_python:-yes}" = xyes; then
261 AX_PKG_SWIG($swig_version, [], [ AC_MSG_ERROR([SWIG $swig_version or newer is needed]) ])
262 AM_PATH_PYTHON
263
264 AC_ARG_VAR([PYTHON_INCLUDE], [Include flags for python, bypassing python-config])
265 AC_ARG_VAR([PYTHON_CONFIG], [Path to python-config])
266 AS_IF([test -z "$PYTHON_INCLUDE"], [
267 AS_IF([test -z "$PYTHON_CONFIG"], [
268 AC_PATH_PROGS([PYTHON_CONFIG],
269 [python$PYTHON_VERSION-config python-config],
270 [no],
271 [`dirname $PYTHON`])
272 AS_IF([test "$PYTHON_CONFIG" = no], [AC_MSG_ERROR([cannot find python-config for $PYTHON. Do you have python-dev installed?])])
273 ])
274 AC_MSG_CHECKING([python include flags])
275 PYTHON_INCLUDE=`$PYTHON_CONFIG --includes`
276 AC_MSG_RESULT([$PYTHON_INCLUDE])
277 ])
278
279else
280 AC_MSG_NOTICE([You may configure with --enable-python-bindings ]dnl
281[if you want Python bindings.])
282
283fi
284
285# Option to only build the consumer daemon and its libraries
286AC_ARG_WITH([consumerd-only],
287 AS_HELP_STRING([--with-consumerd-only],[Only build the consumer daemon [default=no]]),
288 [consumerd_only=$withval],
289 [consumerd_only=no])
290AM_CONDITIONAL([BUILD_CONSUMERD_ONLY], [test "x$consumerd_only" = "xyes"])
291
292# Epoll check. If not present, the build will fallback on poll() API
293AX_HAVE_EPOLL(
294 [AX_CONFIG_FEATURE_ENABLE(epoll)],
295 [AX_CONFIG_FEATURE_DISABLE(epoll)]
296)
297AX_CONFIG_FEATURE(
298 [epoll], [This platform supports epoll(7)],
299 [HAVE_EPOLL], [This platform supports epoll(7).],
300 [enable_epoll="yes"], [enable_epoll="no"]
301)
302AM_CONDITIONAL([COMPAT_EPOLL], [ test "$enable_epoll" = "yes" ])
303
304AC_SYS_LARGEFILE
305AC_PROG_CC
306LT_INIT
307AC_PROG_YACC
308AC_PROG_LEX
309
310if test ! -f "$srcdir/src/lib/lttng-ctl/filter/filter-parser.h"; then
311 if test x"$YACC" != "xbison -y"; then
312 AC_MSG_ERROR([[bison not found and is required when building from git.
313 Please install bison]])
314 fi
315fi
316
317if test ! -f "$srcdir/src/lib/lttng-ctl/filter/filter-lexer.c"; then
318 if test x"$LEX" != "xflex"; then
319 AC_MSG_ERROR([[flex not found and is required when building from git.
320 Please install flex]])
321 fi
322fi
323
324CFLAGS="-Wall $CFLAGS -g -fno-strict-aliasing"
325
326DEFAULT_INCLUDES="-I\$(top_srcdir) -I\$(top_builddir) -I\$(top_builddir)/src -I\$(top_builddir)/include -include config.h"
327
328lttngincludedir="${includedir}/lttng"
329
330AC_SUBST(lttngincludedir)
331AC_SUBST(DEFAULT_INCLUDES)
332
333lttnglibexecdir="${libdir}/lttng/libexec"
334AC_SUBST(lttnglibexecdir)
335
336AC_CONFIG_FILES([
337 Makefile
338 doc/Makefile
339 doc/man/Makefile
340 include/Makefile
341 extras/Makefile
342 extras/bindings/Makefile
343 extras/bindings/swig/Makefile
344 extras/bindings/swig/python/Makefile
345 extras/core-handler/Makefile
346 src/Makefile
347 src/common/Makefile
348 src/common/kernel-ctl/Makefile
349 src/common/kernel-consumer/Makefile
350 src/common/ust-consumer/Makefile
351 src/common/hashtable/Makefile
352 src/common/sessiond-comm/Makefile
353 src/common/compat/Makefile
354 src/common/relayd/Makefile
355 src/common/testpoint/Makefile
356 src/common/index/Makefile
357 src/common/health/Makefile
358 src/lib/Makefile
359 src/lib/lttng-ctl/Makefile
360 src/lib/lttng-ctl/filter/Makefile
361 src/lib/lttng-ctl/lttng-ctl.pc
362 src/bin/Makefile
363 src/bin/lttng-consumerd/Makefile
364 src/bin/lttng-sessiond/Makefile
365 src/bin/lttng-relayd/Makefile
366 src/bin/lttng/Makefile
367 tests/Makefile
368 tests/regression/Makefile
369 tests/regression/kernel/Makefile
370 tests/regression/tools/Makefile
371 tests/regression/tools/streaming/Makefile
372 tests/regression/tools/filtering/Makefile
373 tests/regression/tools/health/Makefile
374 tests/regression/tools/tracefile-limits/Makefile
375 tests/regression/tools/snapshots/Makefile
376 tests/regression/tools/live/Makefile
377 tests/regression/tools/exclusion/Makefile
378 tests/regression/ust/Makefile
379 tests/regression/ust/nprocesses/Makefile
380 tests/regression/ust/high-throughput/Makefile
381 tests/regression/ust/low-throughput/Makefile
382 tests/regression/ust/before-after/Makefile
383 tests/regression/ust/buffers-pid/Makefile
384 tests/regression/ust/periodical-metadata-flush/Makefile
385 tests/regression/ust/multi-session/Makefile
386 tests/regression/ust/overlap/Makefile
387 tests/regression/ust/overlap/demo/Makefile
388 tests/regression/ust/linking/Makefile
389 tests/regression/ust/daemon/Makefile
390 tests/regression/ust/exit-fast/Makefile
391 tests/regression/ust/fork/Makefile
392 tests/regression/ust/libc-wrapper/Makefile
393 tests/stress/Makefile
394 tests/unit/Makefile
395 tests/utils/Makefile
396 tests/utils/tap/Makefile
397 tests/utils/testapp/Makefile
398 tests/utils/testapp/gen-ust-events/Makefile
399 tests/utils/testapp/gen-ust-nevents/Makefile
400])
401
402AC_OUTPUT
403
404#
405# Mini-report on what will be built
406#
407AS_ECHO()
408
409AS_ECHO("Version name: $version_name")
410AS_ECHO("$version_description")
411
412AS_ECHO()
413
414# Target architecture we're building for
415target_arch=$host_cpu
416[
417for f in $CFLAGS; do
418 if test $f = "-m32"; then
419 target_arch="32-bit"
420 elif test $f = "-m64"; then
421 target_arch="64-bit"
422 fi
423done
424]
425AS_ECHO_N("Target architecture: ")
426AS_ECHO($target_arch)
427
428# LTTng-UST enabled/disabled
429AS_ECHO_N("Lttng-UST support: ")
430AS_IF([test "x$lttng_ust_support" = "xyes"],[
431 AS_ECHO("Enabled")
432],[
433 AS_ECHO("Disabled")
434])
435
436#Python binding enabled/disabled
437AS_ECHO_N("Python binding: ")
438AS_IF([test "x${enable_python:-yes}" = xyes], [
439 AS_ECHO("Enabled")
440],[
441 AS_ECHO("Disabled")
442])
443
444# Do we build only the consumerd, or everything
445AS_IF([test "x$consumerd_only" = "xyes"],[
446 AS_ECHO("Only the consumerd daemon will be built.")
447],[
448 AS_ECHO("All binaries will be built.")
449])
450
451# Print the bindir and libdir this `make install' will install into.
452AS_ECHO()
453AS_ECHO_N("Binaries will be installed in: ")
454AS_ECHO("`eval eval echo $bindir`")
455AS_ECHO_N("Libraries will be installed in: ")
456AS_ECHO("`eval eval echo $libdir`")
457
458# If we build the sessiond, print the paths it will use
459AS_IF([test "x$consumerd_only" = "xno"],[
460 AS_ECHO()
461 AS_ECHO_N("The lttng command will look for the lttng-sessiond executable at: ")
462 AS_IF([test "$SESSIOND_BIN" = ""],[
463 AS_ECHO_N("`eval eval echo $bindir`")
464 AS_ECHO("/lttng-sessiond")
465 ],[
466 AS_ECHO("$SESSIOND_BIN")
467 ])
468
469 AS_ECHO()
470 AS_ECHO("The sessiond daemon will look in the following directories: ")
471 AS_ECHO_N("32-bit consumerd executable at: ")
472 AS_IF([test "$CONSUMERD32_BIN" = ""],[
473 AS_ECHO_N("`eval eval echo $lttnglibexecdir`")
474 AS_ECHO("/lttng-consumerd")
475 ],[
476 AS_ECHO("$CONSUMERD32_BIN")
477 ])
478
479 AS_ECHO_N("32-bit consumer libraries in: ")
480 AS_IF([test "$CONSUMERD32_LIBDIR" = ""],[
481 AS_ECHO("`eval eval echo $libdir`")
482 ],[
483 AS_ECHO("$CONSUMERD32_LIBDIR")
484 ])
485
486 AS_ECHO_N("64-bit consumerd executable at: ")
487 AS_IF([test "$CONSUMERD64_BIN" = ""],[
488 AS_ECHO_N("`eval eval echo $lttnglibexecdir`")
489 AS_ECHO("/lttng-consumerd")
490 ],[
491 AS_ECHO("$CONSUMERD64_BIN")
492 ])
493
494 AS_ECHO_N("64-bit consumer libraries in: ")
495 AS_IF([test "$CONSUMERD64_LIBDIR" = ""],[
496 AS_ECHO("`eval eval echo $libdir`")
497 ],[
498 AS_ECHO("$CONSUMERD64_LIBDIR")
499 ])
500])
501
502AS_ECHO()
503
This page took 0.023672 seconds and 4 git commands to generate.