lib: replace trace is_static with destruction listeners
[babeltrace.git] / configure.ac
... / ...
CommitLineData
1dnl Process this file with autoconf to produce a configure script.
2dnl
3dnl Copyright (c) 2017 EfficiOS, Inc.
4dnl
5dnl Permission is hereby granted, free of charge, to any person obtaining a copy
6dnl of this software and associated documentation files (the "Software"), to deal
7dnl in the Software without restriction, including without limitation the rights
8dnl to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9dnl copies of the Software, and to permit persons to whom the Software is
10dnl furnished to do so, subject to the following conditions:
11dnl
12dnl The above copyright notice and this permission notice shall be included in
13dnl all copies or substantial portions of the Software.
14dnl
15dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18dnl AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20dnl OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21dnl SOFTWARE.
22
23## ##
24## Autoconf base setup ##
25## ##
26
27AC_PREREQ([2.50])
28
29m4_define([bt_version_major], [2])
30m4_define([bt_version_minor], [0])
31m4_define([bt_version_patch], [0])
32m4_define([bt_version_extra], [-pre4])
33m4_define([bt_version], bt_version_major[.]bt_version_minor[.]bt_version_patch[]bt_version_extra)
34
35AC_INIT([babeltrace], bt_version, [jeremie dot galarneau at efficios dot com], [], [https://efficios.com/babeltrace/])
36
37# Following the numbering scheme proposed by libtool for the library version
38# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
39AC_SUBST([BABELTRACE_LIBRARY_VERSION], bt_version_major[:]bt_version_minor[:]bt_version_patch)
40
41AC_CONFIG_HEADERS([include/config.h])
42AC_CONFIG_AUX_DIR([config])
43AC_CONFIG_MACRO_DIR([m4])
44AC_REQUIRE_AUX_FILE([tap-driver.sh])
45
46AC_DEFINE([BT_VERSION_MAJOR], bt_version_major, [Babeltrace library major version])
47AC_DEFINE([BT_VERSION_MINOR], bt_version_minor, [Babeltrace library minor version])
48AC_DEFINE([BT_VERSION_PATCH], bt_version_patch, [Babeltrace library patch version])
49AC_DEFINE([BT_VERSION_EXTRA], ["]bt_version_extra["], [Babeltrace library extra version])
50
51AC_CANONICAL_TARGET
52AC_CANONICAL_HOST
53
54
55## ##
56## Automake base setup ##
57## ##
58
59AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip tar-ustar nostdinc])
60AM_MAINTAINER_MODE([enable])
61
62# Enable silent rules if available (Introduced in AM 1.11)
63m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
64
65
66## ##
67## OS specific defaults ##
68## ##
69
70MINGW32=no
71DEFAULT_ENABLE_DEBUG_INFO=no
72LT_NO_UNDEFINED=""
73AS_CASE([$host_os],
74 [solaris*|darwin*],
75 [
76 DEFAULT_ENABLE_DEBUG_INFO=no
77 ],
78 [cygwin*],
79 [
80 DEFAULT_ENABLE_DEBUG_INFO=no
81 LT_NO_UNDEFINED="-no-undefined"
82 ],
83 [mingw*],
84 [
85 MINGW32=yes
86 DEFAULT_ENABLE_DEBUG_INFO=no
87 LT_NO_UNDEFINED="-no-undefined"
88 ]
89)
90
91AM_CONDITIONAL([BABELTRACE_BUILD_WITH_MINGW], [test "x$MINGW32" = "xyes"])
92AC_SUBST(LT_NO_UNDEFINED)
93
94
95## ##
96## C compiler checks ##
97## ##
98
99AC_USE_SYSTEM_EXTENSIONS
100AC_SYS_LARGEFILE
101
102# Choose the c compiler
103AC_PROG_CC
104
105# Make sure the c compiler supports C99
106AC_PROG_CC_C99([], [AC_MSG_ERROR([The compiler does not support C99])])
107
108# Make sure the c compiler supports __attributes__
109AX_C___ATTRIBUTE__
110AS_IF([test "x$ax_cv___attribute__" != "xyes"],
111 [AC_MSG_ERROR([The compiler does not support __attribute__ extensions])])
112
113# Make sur we have pthread support
114AX_PTHREAD([], [AC_MSG_ERROR([Could not configure pthread support])])
115
116# Checks for typedefs, structures, and compiler characteristics.
117AC_C_INLINE
118AC_C_TYPEOF
119AC_TYPE_PID_T
120AC_TYPE_SIZE_T
121AC_TYPE_INT16_T
122AC_TYPE_INT32_T
123AC_TYPE_INT64_T
124AC_TYPE_INT8_T
125AC_TYPE_OFF_T
126AC_TYPE_SSIZE_T
127AC_TYPE_UINT16_T
128AC_TYPE_UINT32_T
129AC_TYPE_UINT64_T
130AC_TYPE_UINT8_T
131AC_CHECK_TYPES([ptrdiff_t])
132
133
134## ##
135## Header checks ##
136## ##
137
138AC_HEADER_STDBOOL
139AC_CHECK_HEADERS([ \
140 fcntl.h \
141 float.h \
142 ftw.h \
143 libintl.h \
144 limits.h \
145 malloc.h \
146 netdb.h \
147 netinet/in.h \
148 stddef.h \
149 sys/socket.h \
150 sys/time.h
151])
152
153
154## ##
155## Linker checks ##
156## ##
157
158# Check if the linker supports no-as-needed
159AX_APPEND_LINK_FLAGS([-Wl,--no-as-needed], [LD_NO_AS_NEEDED])
160AC_SUBST([LD_NO_AS_NEEDED])
161
162# Check if the linker supports whole-archive
163AX_CHECK_LINK_FLAG([-Wl,--whole-archive,--no-whole-archive],
164 [
165 AC_SUBST([LD_WHOLE_ARCHIVE], [-Wl,--whole-archive,])
166 AC_SUBST([LD_NO_WHOLE_ARCHIVE], [,--no-whole-archive])
167 ],[
168 # Fallback to force_load for the macOS linker
169 AX_CHECK_LINK_FLAG([-Wl,-force_load],
170 [
171 AC_SUBST([LD_WHOLE_ARCHIVE], [-Wl,-force_load,])
172 AC_SUBST([LD_NO_WHOLE_ARCHIVE], [])
173 ],[
174 AC_MSG_WARN([Can't find a linker option to force the inclusion of the static plugin archive objects.])
175 ]
176 )
177 ]
178)
179
180# Initialize and configure libtool
181LT_INIT([win32-dll])
182
183
184## ##
185## Programs checks ##
186## ##
187
188AC_PROG_MAKE_SET
189AC_PROG_MKDIR_P
190AC_PROG_LN_S
191
192# set $IN_GIT_REPO if we're in the Git repository; the `bootstrap` file
193# is not distributed in tarballs
194AS_IF([test -f "$srcdir/bootstrap"], [in_git_repo=yes], [in_git_repo=no])
195AM_CONDITIONAL([IN_GIT_REPO], [test "x$in_git_repo" = "xyes"])
196
197# check for bison
198AC_PROG_YACC
199AX_PROG_BISON_VERSION([2.4], [have_bison=yes])
200
201AS_IF([test "x$have_bison" != "xyes"], [
202 AS_IF([test "x$in_git_repo" = "xyes"], [
203 AC_MSG_FAILURE([dnl
204Bison >= 2.4 is required when building from the Git repository. You can
205set the YACC variable to override automatic detection.
206 ])
207 ], [
208 AC_MSG_WARN([dnl
209Missing Bison >= 2.4. Note that the parser files are already built in
210this distribution tarball, so Bison is only needed if you intend to
211modify their sources. You can set the YACC variable to override automatic
212detection.
213 ])
214 ])
215])
216AM_CONDITIONAL([HAVE_BISON], [test "x$have_bison" = "xyes"])
217
218# check for flex
219AC_PROG_LEX
220AX_PROG_FLEX_VERSION([2.5.35], [have_flex=yes])
221
222AS_IF([test "x$have_flex" != "xyes"], [
223 AS_IF([test "x$in_git_repo" = "xyes"], [
224 AC_MSG_FAILURE([dnl
225Flex >= 2.5.35 is required when building from the Git repository. You can
226set the LEX variable to override automatic detection.
227 ])
228 ], [
229 AC_MSG_WARN([dnl
230Missing Flex >= 2.5.35. Note that the lexer files are already built in
231this distribution tarball, so Flex is only needed if you intend to
232modify their sources. You can set the LEX variable to override automatic
233detection.
234 ])
235 ])
236])
237AM_CONDITIONAL([HAVE_FLEX], [test "x$have_flex" = "xyes"])
238
239
240## ##
241## Library checks ##
242## ##
243
244# Check what libraries are required on this platform to link sockets programs.
245AX_LIB_SOCKET_NSL
246
247# Check for glib >= 2.22 with gmodule support
248AM_PATH_GLIB_2_0([2.22.0], [],
249 AC_MSG_ERROR([glib >= 2.22 is required - download it from ftp://ftp.gtk.org/pub/gtk]),
250 [gmodule-no-export]
251)
252
253# Checks for library functions.
254AC_FUNC_ALLOCA
255AC_FUNC_FORK
256AC_FUNC_MKTIME
257AC_FUNC_MMAP
258AC_FUNC_STRERROR_R
259AC_FUNC_STRNLEN
260AC_CHECK_FUNCS([ \
261 atexit \
262 dup2 \
263 ftruncate \
264 gethostbyname \
265 gettimeofday \
266 localtime_r \
267 memchr \
268 memset \
269 mkdir \
270 mkdtemp \
271 munmap \
272 rmdir \
273 setenv \
274 socket \
275 strchr \
276 strdup \
277 strerror \
278 strndup \
279 strnlen \
280 strrchr \
281 strstr \
282 strtoul \
283 strtoull \
284 tzset \
285])
286
287# AC_FUNC_MALLOC causes problems when cross-compiling.
288#AC_FUNC_MALLOC
289#AC_FUNC_REALLOC
290
291# First, check for uuid in system libs
292AH_TEMPLATE([BABELTRACE_HAVE_LIBUUID], [Define if you have libuuid support])
293AC_CHECK_FUNCS([uuid_generate],
294 [
295 AC_DEFINE([BABELTRACE_HAVE_LIBUUID], [1])
296 UUID_LIBS=""
297 ],
298 [
299 # Then, check if the pkg-config module is available, otherwise explicitly check
300 # for libuuid, or uuid support in the C-library.
301 PKG_CHECK_MODULES([UUID], [uuid],
302 [
303 AC_DEFINE([BABELTRACE_HAVE_LIBUUID], [1])
304 dnl PKG_CHECK_MODULES defines UUID_LIBS
305 ],
306 [
307 AC_MSG_WARN([pkg-config was unable to find a valid .pc for libuuid. Set PKG_CONFIG_PATH to specify the pkgconfig configuration file location])
308 AC_MSG_WARN([Finding libuuid without pkg-config.])
309 AC_CHECK_LIB([uuid], [uuid_generate],
310 [
311 AC_DEFINE([BABELTRACE_HAVE_LIBUUID], [1])
312 UUID_LIBS="-luuid"
313 ],
314 [
315 # libuuid not found, check for uuid_create in libc.
316 AC_CHECK_LIB([c], [uuid_create],
317 [
318 AC_DEFINE([BABELTRACE_HAVE_LIBUUID], [1])
319 UUID_LIBS="-lc"
320 ],
321 [
322 # for MinGW32 we have our own internal implementation of uuid using Windows functions.
323 AS_IF([test "x$MINGW32" = xno],
324 [AC_MSG_FAILURE([Cannot find libuuid uuid_generate nor libc uuid_create. Either set PKG_CONFIG_PATH to the configuration file location or use LDFLAGS=-Ldir to specify the library location])]
325 )
326 ]
327 )
328 ]
329 )
330 ]
331 )
332 ]
333)
334AC_SUBST(UUID_LIBS)
335
336# Check for fmemopen
337AC_CHECK_LIB([c], [fmemopen],
338 [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_FMEMOPEN], 1, [Has fmemopen support.])]
339)
340
341# Check for open_memstream
342AC_CHECK_LIB([c], [open_memstream],
343 [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_OPEN_MEMSTREAM], 1, [Has open_memstream support.])]
344)
345
346# Check for posix_fallocate
347AC_CHECK_LIB([c], [posix_fallocate],
348 [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_POSIX_FALLOCATE], 1, [Has posix_fallocate support.])]
349)
350
351# Check libpopt
352PKG_CHECK_MODULES([POPT], [popt],
353 [
354 dnl PKG_CHECK_MODULES defines POPT_LIBS
355 ],
356 [
357 AC_MSG_WARN([pkg-config was unable to find a valid .pc for libpopt. Set PKG_CONFIG_PATH to specify the pkgconfig configuration file location])
358 AC_MSG_WARN([Finding libpopt without pkg-config.])
359 AC_CHECK_LIB([popt],
360 [poptGetContext],
361 [POPT_LIBS="-lpopt"],
362 [
363 AC_MSG_FAILURE([Cannot find libpopt. Either set PKG_CONFIG_PATH to the configuration file location or use LDFLAGS=-Ldir to specify the library location])
364 ]
365 )
366 ]
367)
368AC_SUBST(POPT_LIBS)
369
370
371## ##
372## User variables ##
373## ##
374
375AC_ARG_VAR([PYTHON_INCLUDE], [Include flags for Python, bypassing python-config])
376AC_ARG_VAR([PYTHON_LIBS], [Library flags for Python, bypassing python-config])
377AC_ARG_VAR([PYTHON_CONFIG], [Path to python-config])
378
379# PLUGINSDIR: Plugins directory
380AC_ARG_VAR([PLUGINSDIR], [built-in plugins install directory [LIBDIR/babeltrace/plugins]])
381AS_IF([test "x$PLUGINSDIR" = x], [PLUGINSDIR='$(libdir)/babeltrace/plugins'])
382
383# BABELTRACE_MINIMAL_LOG_LEVEL:
384AC_ARG_VAR([BABELTRACE_MINIMAL_LOG_LEVEL], [Minimal log level for Babeltrace program, library, and plugins (VERBOSE, DEBUG, INFO, WARN, ERROR (default), FATAL, or NONE)])
385AS_IF([test "x$BABELTRACE_MINIMAL_LOG_LEVEL" = x], [BABELTRACE_MINIMAL_LOG_LEVEL="VERBOSE"])
386AS_IF([test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "VERBOSE" && \
387 test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "DEBUG" && \
388 test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "INFO" && \
389 test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "WARN" && \
390 test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "ERROR" && \
391 test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "FATAL" && \
392 test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "NONE"],
393 [AC_MSG_ERROR([Invalid BABELTRACE_MINIMAL_LOG_LEVEL value ($BABELTRACE_MINIMAL_LOG_LEVEL): use VERBOSE, DEBUG, INFO, WARN, ERROR, FATAL, or NONE.])]
394)
395AC_DEFINE_UNQUOTED([BT_LOG_LEVEL], [BT_LOG_$BABELTRACE_MINIMAL_LOG_LEVEL], [Minimal log level])
396
397# BABELTRACE_DEV_MODE:
398AC_ARG_VAR([BABELTRACE_DEV_MODE], [Set to 1 to enable the Babeltrace developer mode (enables run-time checks for plugin developers)])
399AS_IF([test "x$BABELTRACE_DEV_MODE" = x1], [
400 AS_IF([test "x$BABELTRACE_MINIMAL_LOG_LEVEL" = "xNONE"], [
401 AC_MSG_ERROR([Babeltrace developer mode (\$BABELTRACE_DEV_MODE) needs \$BABELTRACE_MINIMAL_LOG_LEVEL to be at least FATAL.])
402 ])
403 AC_DEFINE([BT_DEV_MODE], 1, [Babeltrace developer mode])
404], [BABELTRACE_DEV_MODE=0])
405
406# BABELTRACE_DEBUG_MODE:
407AC_ARG_VAR([BABELTRACE_DEBUG_MODE], [Set to 1 to enable the Babeltrace debug mode (enables internal assertions for Babeltrace maintainers)])
408AS_IF([test "x$BABELTRACE_DEBUG_MODE" = x1], [
409 AC_DEFINE([BT_DEBUG_MODE], 1, [Babeltrace debug mode])
410], [BABELTRACE_DEBUG_MODE=0])
411
412
413## ##
414## Optionnal features selection ##
415## ##
416
417# Python bindings
418# Disabled by default
419AC_ARG_ENABLE([python-bindings],
420 [AC_HELP_STRING([--enable-python-bindings], [build the Python bindings])],
421 [], dnl AC_ARG_ENABLE will fill enable_python_bindings with the user choice
422 [enable_python_bindings=no]
423)
424
425# Python bindings documentation
426# Disabled by default
427AC_ARG_ENABLE([python-bindings-doc],
428 [AC_HELP_STRING([--enable-python-bindings-doc], [build the Python bindings documentation])],
429 [], dnl AC_ARG_ENABLE will fill enable_python_bindings_doc with the user choice
430 [enable_python_bindings_doc=no]
431)
432
433# Python plugins
434# Disabled by default
435AC_ARG_ENABLE([python-plugins],
436 [AC_HELP_STRING([--enable-python-plugins], [enable the Python plugins support for the library and converter])],
437 [], dnl AC_ARG_ENABLE will fill enable_python_plugins with the user choice
438 [enable_python_plugins=no]
439)
440
441# Debug info
442# Enabled by default, except on some platforms
443AC_ARG_ENABLE([debug-info],
444 [AC_HELP_STRING([--disable-debug-info], [disable the debug info support (default on macOS, Solaris and Windows)])],
445 [], dnl AC_ARG_ENABLE will fill enable_debug_info with the user choice
446 [enable_debug_info="$DEFAULT_ENABLE_DEBUG_INFO"]
447)
448
449# API documentation
450# Disabled by default
451AC_ARG_ENABLE([api-doc],
452 [AC_HELP_STRING([--enable-api-doc], [build the HTML API documentation])],
453 [enable_api_doc=$enableval],
454 [enable_api_doc=no]
455)
456
457# Built-in plugins
458# Disabled by default
459AC_ARG_ENABLE([built-in-plugins],
460 [AC_HELP_STRING([--enable-built-in-plugins], [Statically-link in-tree plug-ins into the babeltrace binary])],
461 [], dnl AC_ARG_ENABLE will fill enable_built_in_plugins with the user choice
462 [enable_built_in_plugins=no]
463)
464
465# Built-in python plugin support
466# Disabled by default
467AC_ARG_ENABLE([built-in-python-plugin-support],
468 [AC_HELP_STRING([--enable-built-in-python-plugin-support], [Statically-link Python plugin support into the babeltrace library])],
469 [], dnl AC_ARG_ENABLE will fill enable_built_in_python_plugin_support with the user choice
470 [enable_built_in_python_plugin_support=no]
471)
472
473# Man pages
474# Enabled by default
475AC_ARG_ENABLE([man-pages],
476 [AS_HELP_STRING([--disable-man-pages], [Do not build and install man pages (already built in a distributed tarball])],
477 [], dnl AC_ARG_ENABLE will fill enable_built_in_plugins with the user choice
478 [enable_man_pages=yes]
479)
480
481
482# Set automake variables for optionnal feature conditionnals in Makefile.am
483AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS], [test "x$enable_python_bindings" = xyes])
484AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS_DOC], [test "x$enable_python_bindings_doc" = xyes])
485AM_CONDITIONAL([ENABLE_PYTHON_PLUGINS], [test "x$enable_python_plugins" = xyes])
486AM_CONDITIONAL([ENABLE_DEBUG_INFO], [test "x$enable_debug_info" = xyes])
487AM_CONDITIONAL([ENABLE_API_DOC], [test "x$enable_api_doc" = xyes])
488AM_CONDITIONAL([ENABLE_BUILT_IN_PLUGINS], [test "x$enable_built_in_plugins" = xyes])
489AM_CONDITIONAL([ENABLE_BUILT_IN_PYTHON_PLUGIN_SUPPORT], [test "x$enable_built_in_python_plugin_support" = xyes])
490AM_CONDITIONAL([ENABLE_MAN_PAGES], [test "x$enable_man_pages" = xyes])
491
492
493# Set defines for optionnal features conditionnals in the source code
494
495## jgalar: still used?
496AS_IF([test "x$enable_python_plugins" = xyes],
497 [AC_DEFINE([PYTHON_PLUGINS], [1], [Python plugin support.])]
498)
499
500AS_IF([test "x$enable_debug_info" = xyes],
501 [AC_DEFINE([ENABLE_DEBUG_INFO], [1], [Define to 1 if you enable the 'debug info' feature])]
502)
503
504AS_IF([test "x$enable_built_in_plugins" = xyes],
505 [AC_DEFINE([BT_BUILT_IN_PLUGINS], [1], [Define to 1 to register plug-in attributes in static executable sections])]
506)
507
508AS_IF([test "x$enable_built_in_python_plugin_support" = xyes],
509 [AC_DEFINE([BT_BUILT_IN_PYTHON_PLUGIN_SUPPORT], [1], [Define to 1 to register plug-in attributes in static executable sections])]
510)
511
512AS_IF([test "x$enable_debug_info" = xyes],
513 [ENABLE_DEBUG_INFO_VAL=1],
514 [ENABLE_DEBUG_INFO_VAL=0]
515)
516
517AC_SUBST([ENABLE_DEBUG_INFO_VAL])
518
519
520# Check for conflicting optional features user choices
521
522AS_IF([test "x$enable_python_bindings" = xno],
523 [
524 AS_IF([test "x$enable_python_bindings_doc" = xyes], [AC_MSG_ERROR([--enable-python-bindings-doc was specified without --enable-python-bindings])])
525 ]
526)
527
528AS_IF([test "x$enable_built_in_plugins" = xyes],
529 [
530 # Built-in plug-ins are only available when the --disable-shared --enable-static options are used.
531 AS_IF([test "x$enable_static" != xyes], [AC_MSG_ERROR(--enable-static must be used to bundle plug-ins in the babeltrace executable)])
532 AS_IF([test "x$enable_shared" = xyes], [AC_MSG_ERROR(--disable-shared must be used to bundle plug-ins in the babeltrace executable)])
533 ]
534)
535
536AS_IF([test "x$enable_built_in_python_plugin_support" = xyes],
537 [
538 AS_IF([test "x$enable_python_plugins" = xno], [AC_MSG_ERROR([--enable-python-plugins must be used to bundle Python plugin support in the babeltrace executable])])
539 # Built-in plug-ins are only available when the --disable-shared --enable-static options are used.
540 AS_IF([test "x$enable_static" != xyes], [AC_MSG_ERROR(--enable-static must be used to bundle Python plugin support in the babeltrace executable)])
541 AS_IF([test "x$enable_shared" = xyes], [AC_MSG_ERROR(--disable-shared must be used to bundle Python plugin support in the babeltrace executable)])
542 ]
543)
544
545
546# Check for optionnal features dependencies
547
548AS_IF([test "x$enable_python_bindings" = xyes],
549 [AX_PKG_SWIG(2.0.0, [], [AC_MSG_ERROR([SWIG 2.0.0 or newer is required to build the python bindings])])]
550)
551
552AS_IF([test "x$enable_python_bindings" = xyes || test "x$enable_python_plugins" = xyes],
553 [
554 AM_PATH_PYTHON([3.0], [], [AC_MSG_ERROR(Python 3 is not available or is not the default Python interpreter on your system. See the README file to learn how to override your distribution's default Python interpreter.)])
555
556 AM_PATH_PYTHON_MODULES([PYTHON])
557 # pythondir is the path where extra modules are to be installed
558 pythondir=$PYTHON_PREFIX/$PYTHON_MODULES_PATH
559 # pyexecdir is the path that contains shared objects used by the extra modules
560 pyexecdir=$PYTHON_EXEC_PREFIX/$PYTHON_MODULES_PATH
561 AS_IF([test -z "$PYTHON_INCLUDE"], [
562 AS_IF([test -z "$PYTHON_CONFIG"], [
563 AC_PATH_PROGS([PYTHON_CONFIG],
564 [python$PYTHON_VERSION-config python-config],
565 [no],
566 [`dirname $PYTHON`])
567 AS_IF([test "$PYTHON_CONFIG" = no], [AC_MSG_ERROR([cannot find python-config for $PYTHON. Is python-dev installed?])])
568 ])
569 AC_MSG_CHECKING([Python include flags])
570 PYTHON_INCLUDE=`$PYTHON_CONFIG --includes`
571 AC_MSG_RESULT([$PYTHON_INCLUDE])
572 ])
573 AS_IF([test -z "$PYTHON_LIBS"], [
574 AS_IF([test -z "$PYTHON_CONFIG"], [
575 AC_PATH_PROGS([PYTHON_CONFIG],
576 [python$PYTHON_VERSION-config python-config],
577 [no],
578 [`dirname $PYTHON`])
579 AS_IF([test "$PYTHON_CONFIG" = no], [AC_MSG_ERROR([cannot find python-config for $PYTHON. Is python-dev installed?])])
580 ])
581 AC_MSG_CHECKING([Python library flags])
582 PYTHON_LIBS=`$PYTHON_CONFIG --libs`
583 AC_MSG_RESULT([$PYTHON_LIBS])
584 ])
585 ]
586)
587
588AS_IF([test "x$enable_python_bindings_doc" = xyes],
589 [
590 AM_CHECK_PYTHON_SPHINX([PYTHON])
591 AS_IF([test "x$PYTHON_SPHINX_EXISTS" = xno],
592 [AC_MSG_ERROR([The Sphinx package for Python 3 is required to build the Python bindings documentation])]
593 )
594 ]
595)
596
597AS_IF([test "x$enable_debug_info" = xyes],
598 [
599 # Check if libelf and libdw are present
600 AC_CHECK_LIB([elf], [elf_version], [:], [AC_MSG_ERROR(Missing libelf (from elfutils >= 0.154) which is required by debug info. You can disable this feature using --disable-debug-info.)])
601 AC_CHECK_LIB([dw], [dwarf_begin], [:], [AC_MSG_ERROR(Missing libdw (from elfutils >= 0.154) which is required by debug info. You can disable this feature using --disable-debug-info.)])
602 BT_LIB_ELFUTILS([0], [154], [:], [AC_MSG_ERROR(elfutils >= 0.154 is required to use the debug info feature. You can disable this feature using --disable-debug-info.)])
603 ELFUTILS_LIBS="-lelf -ldw"
604 ]
605)
606AC_SUBST([ELFUTILS_LIBS])
607
608AS_IF([test "x$enable_api_doc" = "xyes"],
609 [
610 DX_DOXYGEN_FEATURE(ON)
611 DX_DOT_FEATURE(OFF)
612 DX_HTML_FEATURE(ON)
613 DX_CHM_FEATURE(OFF)
614 DX_CHI_FEATURE(OFF)
615 DX_MAN_FEATURE(OFF)
616 DX_RTF_FEATURE(OFF)
617 DX_XML_FEATURE(OFF)
618 DX_PDF_FEATURE(OFF)
619 DX_PS_FEATURE(OFF)
620 DX_INIT_DOXYGEN([Babeltrace], [$(srcdir)/Doxyfile], [output])
621 AS_IF([test -z "$DX_DOXYGEN"],
622 [AC_MSG_ERROR([You need doxygen to enable the API documentation])]
623 )
624 ]
625)
626
627have_asciidoc_xmlto=no
628warn_prebuilt_man_pages=no
629
630AS_IF([test "x$enable_man_pages" = "xyes"], [
631 AC_PATH_PROG([ASCIIDOC], [asciidoc], [no])
632 AC_PATH_PROG([XMLTO], [xmlto], [no])
633
634 AS_IF([test "x$ASCIIDOC" = "xno" || test "x$XMLTO" = "xno"], [
635 AS_IF([test "x$in_git_repo" = "xyes"], [
636 # this is an error because we're in the Git repo, which
637 # means the man pages are not already generated for us,
638 # thus asciixmlto are required because we were asked
639 # to build the man pages
640 AC_MSG_ERROR([
641You need asciidoc and xmlto to build the Babeltrace man pages. Use
642--disable-man-pages to disable building the man pages, in which case
643they will not be installed.
644 ])
645 ], [
646 # only warn here: since we're in the tarball, the man
647 # pages should already be generated at this point, thus
648 # asciidoc/xmlto are not strictly required
649 warn_prebuilt_man_pages=yes
650 ])
651 ], [
652 have_asciidoc_xmlto=yes
653 ])
654])
655
656# export AsciiDoc and xmlto existence
657AM_CONDITIONAL([HAVE_ASCIIDOC_XMLTO], [test "x$have_asciidoc_xmlto" = "xyes"])
658
659# a wonderful hack that seems necessary because $libdir is
660# literally `${exec_prefix}/lib`, and $exec_prefix is set to `NONE`
661# by autoconf when it's not specified by the user
662AS_IF([test "x$exec_prefix" = xNONE], [
663 AS_IF([test "x$prefix" = xNONE], [
664 PREFIX="$ac_default_prefix"
665 ], [
666 PREFIX="$prefix"
667 ])
668
669 LIBDIR="$PREFIX/lib"
670], [
671 LIBDIR="$libdir"
672])
673
674AC_SUBST(LIBDIR)
675
676
677# Set global CFLAGS in AM_CFLAGS
678AM_CFLAGS="-Wall -Wformat $PTHREAD_CFLAGS $GLIB_CFLAGS"
679AC_SUBST(AM_CFLAGS)
680
681# Set global CPPFLAGS in AM_CPPFLAGS
682AM_CPPFLAGS="-I\$(top_builddir)/include -I\$(top_srcdir)/include -include config.h"
683AC_SUBST(AM_CPPFLAGS)
684
685# Add glib to global link libs
686LIBS="$LIBS $GLIB_LIBS"
687
688# Check that the current size_t matches the size that glib thinks it should
689# be. This catches problems on multi-arch where people try to do a 32-bit
690# build while pointing at 64-bit glib headers. This is a common error because
691# glib.h is not platform specific but it includes glibconfig.h which is and
692# is usually installed in a non-standard path.
693
694# Older versions of the pkg-config macros disallows PKG_* in the autoconf
695# output. Specifically allow pkg_config_libdir to be able to print the
696# error message.
697m4_pattern_allow([PKG_CONFIG_LIBDIR])
698
699save_CFLAGS=${CFLAGS}
700CFLAGS="${CFLAGS} ${AM_CFLAGS}"
701AC_COMPILE_IFELSE([
702 AC_LANG_PROGRAM([dnl
703#include <glib.h>
704#include <unistd.h>
705 ], [dnl
706G_STATIC_ASSERT(sizeof(size_t) == GLIB_SIZEOF_SIZE_T);
707 ])
708],[:],[
709 AC_MSG_ERROR([dnl
710sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T. You probably need to set
711PKG_CONFIG_LIBDIR to point to the right pkg-config files for your build
712target.
713 ])
714])
715CFLAGS=${save_CFLAGS}
716
717# Abuse autoconf's AC_ARG_PROGRAM output variable 'program_transform_name'
718# to rename babeltrace.bin to babeltrace at install time.
719program_transform_name="s&babeltrace\.bin&babeltrace&;s&babeltrace-log\.bin&babeltrace-log&;$program_transform_name"
720AC_SUBST(program_transform_name)
721
722AC_CONFIG_FILES([
723 Makefile
724 bindings/python/Makefile
725 bindings/python/babeltrace/Makefile
726 bindings/python/babeltrace/setup.py
727 bindings/python/babeltrace/babeltrace/__init__.py
728 bindings/python/bt2/Makefile
729 bindings/python/bt2/setup.py
730 bindings/python/bt2/bt2/__init__.py
731 common/Makefile
732 ctfser/Makefile
733 compat/Makefile
734 cli/Makefile
735 doc/Makefile
736 doc/api/Makefile
737 doc/api/Doxyfile
738 doc/bindings/Makefile
739 doc/bindings/python/Makefile
740 doc/contributing-images/Makefile
741 doc/man/Makefile
742 doc/man/asciidoc-attrs.conf
743 lib/Makefile
744 lib/prio_heap/Makefile
745 lib/plugin/Makefile
746 lib/graph/Makefile
747 lib/graph/message/Makefile
748 lib/trace-ir/Makefile
749 lib/ctf-writer/Makefile
750 include/Makefile
751 logging/Makefile
752 bindings/Makefile
753 tests/Makefile
754 tests/cli/Makefile
755 tests/cli/intersection/Makefile
756 tests/lib/Makefile
757 tests/lib/test-plugin-plugins/Makefile
758 tests/lib/trace-ir/Makefile
759 tests/lib/ctf-writer/Makefile
760 tests/utils/common.sh
761 tests/utils/Makefile
762 tests/utils/tap/Makefile
763 tests/bindings/Makefile
764 tests/bindings/python/Makefile
765 tests/bindings/python/bt2/Makefile
766 tests/bindings/python/babeltrace/Makefile
767 tests/plugins/Makefile
768 tests/python-plugin-provider/Makefile
769 extras/Makefile
770 extras/valgrind/Makefile
771 plugins/Makefile
772 plugins/ctf/Makefile
773 plugins/ctf/common/Makefile
774 plugins/ctf/common/bfcr/Makefile
775 plugins/ctf/common/metadata/Makefile
776 plugins/ctf/common/msg-iter/Makefile
777 plugins/ctf/common/utils/Makefile
778 plugins/ctf/fs-src/Makefile
779 plugins/ctf/fs-sink/Makefile
780 plugins/ctf/lttng-live/Makefile
781 plugins/text/Makefile
782 plugins/text/dmesg/Makefile
783 plugins/text/pretty/Makefile
784 plugins/utils/Makefile
785 plugins/utils/dummy/Makefile
786 plugins/utils/counter/Makefile
787 plugins/utils/trimmer/Makefile
788 plugins/utils/muxer/Makefile
789 python-plugin-provider/Makefile
790 plugins/libctfcopytrace/Makefile
791 plugins/lttng-utils/Makefile
792 babeltrace.pc
793 babeltrace-ctf.pc
794])
795
796AC_CONFIG_FILES([tests/cli/intersection/test_intersection], [chmod +x tests/cli/intersection/test_intersection])
797AC_CONFIG_FILES([tests/cli/test_convert_args], [chmod +x tests/cli/test_convert_args])
798AC_CONFIG_FILES([tests/cli/test_packet_seq_num], [chmod +x tests/cli/test_packet_seq_num])
799AC_CONFIG_FILES([tests/cli/test_trace_copy], [chmod +x tests/cli/test_trace_copy])
800AC_CONFIG_FILES([tests/cli/test_trace_read], [chmod +x tests/cli/test_trace_read])
801AC_CONFIG_FILES([tests/cli/test_trimmer], [chmod +x tests/cli/test_trimmer])
802AC_CONFIG_FILES([tests/lib/test_ctf_writer_complete], [chmod +x tests/lib/test_ctf_writer_complete])
803AC_CONFIG_FILES([tests/lib/test_plugin_complete], [chmod +x tests/lib/test_plugin_complete])
804AC_CONFIG_FILES([tests/lib/trace-ir/test_trace_ir], [chmod +x tests/lib/trace-ir/test_trace_ir])
805AC_CONFIG_FILES([tests/lib/ctf-writer/test_ctf_writer], [chmod +x tests/lib/ctf-writer/test_ctf_writer])
806AC_CONFIG_FILES([tests/plugins/test-utils-muxer-complete], [chmod +x tests/plugins/test-utils-muxer-complete])
807AC_CONFIG_FILES([tests/plugins/test_lttng_utils_debug_info], [chmod +x tests/plugins/test_lttng_utils_debug_info])
808AC_CONFIG_FILES([tests/plugins/test_dwarf_complete], [chmod +x tests/plugins/test_dwarf_complete])
809AC_CONFIG_FILES([tests/plugins/test_bin_info_complete], [chmod +x tests/plugins/test_bin_info_complete])
810
811AS_IF([test "x$enable_python_bindings" = xyes],
812 [
813 AC_CONFIG_FILES([tests/bindings/python/bt2/test_python_bt2], [chmod +x tests/bindings/python/bt2/test_python_bt2])
814 AC_CONFIG_FILES([tests/bindings/python/babeltrace/test_python_babeltrace], [chmod +x tests/bindings/python/babeltrace/test_python_babeltrace])
815 ]
816)
817
818AS_IF([test "x$enable_python_plugins" = "xyes"],
819 [AC_CONFIG_FILES([tests/python-plugin-provider/test_python_plugin_provider], [chmod +x tests/python-plugin-provider/test_python_plugin_provider])]
820)
821
822AC_OUTPUT
823
824#
825# Mini-report on what will be built.
826#
827
828PPRINT_INIT
829PPRINT_SET_INDENT(1)
830PPRINT_SET_TS(38)
831
832AS_ECHO
833AS_ECHO("${PPRINT_COLOR_BLDBLU}Babeltrace $PACKAGE_VERSION$PPRINT_COLOR_RST")
834AS_ECHO
835
836PPRINT_SUBTITLE([System])
837
838# Target architecture we're building for.
839target_arch=$host_cpu
840[
841for f in $CFLAGS; do
842 if test $f = "-m32"; then
843 target_arch="32-bit"
844 elif test $f = "-m64"; then
845 target_arch="64-bit"
846 fi
847done
848]
849
850PPRINT_PROP_STRING([Target architecture], $target_arch)
851
852AS_ECHO
853PPRINT_SUBTITLE([Python 3 language support])
854test "x$enable_python_bindings" = "xyes" && value=1 || value=0
855PPRINT_PROP_BOOL([Python bindings], $value)
856test "x$enable_python_plugins" = "xyes" && value=1 || value=0
857PPRINT_PROP_BOOL([Python plugin support], $value)
858AS_IF([test "x$enable_python_bindings" = "xyes" || test "x$enable_python_plugins" = "xyes"], [
859 PPRINT_PROP_STRING([Python include paths], [$PYTHON_INCLUDE])
860 PPRINT_PROP_STRING([Python libraries], [$PYTHON_LIBS])
861])
862
863AS_ECHO
864PPRINT_SUBTITLE([Plugins])
865PPRINT_PROP_BOOL(['ctf' plugin], 1)
866test "x$enable_debug_info" = "xyes" && value=1 || value=0
867PPRINT_PROP_BOOL(['lttng-utils' plugin], $value)
868PPRINT_PROP_BOOL(['text' plugin], 1)
869PPRINT_PROP_BOOL(['utils' plugin], 1)
870
871AS_ECHO
872PPRINT_SUBTITLE([Built-in features])
873test "x$enable_built_in_plugins" = "xyes" && value=1 || value=0
874PPRINT_PROP_BOOL([Built-in plugins], $value)
875test "x$enable_built_in_python_plugin_support" = "xyes" && value=1 || value=0
876PPRINT_PROP_BOOL([Built-in Python plugin support], $value)
877
878AS_ECHO
879PPRINT_SUBTITLE([Documentation])
880
881# man pages build enabled/disabled
882m4_pushdef([build_man_pages_msg], [Build and install man pages])
883
884AS_IF([test "x$enable_man_pages" != "xno"], [
885 AS_IF([test "x$in_git_repo" = "xyes"], [
886 PPRINT_PROP_BOOL([build_man_pages_msg], 1)
887 ], [
888 AS_IF([test "x$have_asciidoc_xmlto" = "xyes"], [
889 PPRINT_PROP_BOOL([build_man_pages_msg], 1)
890 ], [
891 PPRINT_PROP_STRING([build_man_pages_msg],
892 [${PPRINT_COLOR_BLDGRN}yes (already built)],
893 $PPRINT_COLOR_SUBTITLE)
894 ])
895 ])
896], [
897 PPRINT_PROP_BOOL([build_man_pages_msg], 0)
898])
899
900m4_popdef([build_man_pages_msg])
901
902test "x$enable_api_doc" = "xyes" && value=1 || value=0
903PPRINT_PROP_BOOL([HTML API documentation], $value)
904test "x$enable_python_bindings_doc" = "xyes" && value=1 || value=0
905PPRINT_PROP_BOOL([Python bindings documentation], $value)
906
907AS_ECHO
908PPRINT_SUBTITLE([Logging])
909PPRINT_PROP_STRING([Minimal log level], $BABELTRACE_MINIMAL_LOG_LEVEL)
910
911AS_ECHO
912PPRINT_SUBTITLE([Special build modes])
913PPRINT_PROP_BOOL([Debug mode], $BABELTRACE_DEBUG_MODE)
914PPRINT_PROP_BOOL([Developer mode], $BABELTRACE_DEV_MODE)
915
916report_bindir="`eval eval echo $bindir`"
917report_libdir="`eval eval echo $libdir`"
918report_sysconfdif="`eval eval echo $sysconfdir`"
919
920# Print the bindir and libdir this `make install' will install into.
921AS_ECHO
922PPRINT_SUBTITLE([Install directories])
923PPRINT_PROP_STRING([Binaries], [$report_bindir])
924PPRINT_PROP_STRING([Libraries], [$report_libdir])
925PPRINT_PROP_STRING([Plugins], [$report_libdir/babeltrace/plugins])
926PPRINT_PROP_STRING([Configuration], [$report_sysconfdif])
This page took 0.025375 seconds and 4 git commands to generate.