Fix: bt2: add precond. check, for stream class supporting discarded msgs with clock...
[babeltrace.git] / configure.ac
CommitLineData
0235b0db 1dnl SPDX-License-Identifier: MIT
9ffc0257 2dnl
0235b0db 3dnl Copyright (C) 2017 EfficiOS, Inc.
9ffc0257 4dnl
0235b0db 5dnl Process this file with autoconf to produce a configure script.
9ffc0257
MJ
6
7## ##
8## Autoconf base setup ##
9## ##
10
9d594903 11AC_PREREQ([2.50])
9ffc0257 12
a2edfc7d 13m4_define([bt_version_major], [2])
d5427d80 14m4_define([bt_version_minor], [1])
a2edfc7d 15m4_define([bt_version_patch], [0])
d5427d80 16m4_define([bt_version_dev_stage], [-rc1])
2671dfad 17m4_define([bt_version], bt_version_major[.]bt_version_minor[.]bt_version_patch[]bt_version_dev_stage)
d5427d80 18m4_define([bt_version_name], [])
9ffc0257 19
322bf382 20AC_INIT([babeltrace2], bt_version, [jeremie dot galarneau at efficios dot com], [], [https://efficios.com/babeltrace/])
af597f37 21AC_PROG_SED
3fbccce7
MD
22
23# Following the numbering scheme proposed by libtool for the library version
24# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
7e69c04f
MJ
25m4_define([bt_lib_version_current], [0])
26m4_define([bt_lib_version_revision], [0])
27m4_define([bt_lib_version_age], [0])
28m4_define([bt_lib_version], bt_lib_version_current[:]bt_lib_version_revision[:]bt_lib_version_age)
29
d5427d80 30bt_version_description=""
af597f37
JG
31bt_version_description_c_safe=$(echo $bt_version_description | $SED 's/"/\\"/g')
32
7e69c04f 33AC_SUBST([BABELTRACE_LIBRARY_VERSION], bt_lib_version)
3fbccce7 34
578e048b 35AC_CONFIG_HEADERS([src/common/config.h])
ac65e355 36AC_CONFIG_AUX_DIR([config])
80e2fb15
MJ
37AC_CONFIG_MACRO_DIR([m4])
38
7e69c04f
MJ
39AC_DEFINE([BT_VERSION_MAJOR], bt_version_major, [Babeltrace major version])
40AC_DEFINE([BT_VERSION_MINOR], bt_version_minor, [Babeltrace minor version])
41AC_DEFINE([BT_VERSION_PATCH], bt_version_patch, [Babeltrace patch version])
2671dfad 42AC_DEFINE([BT_VERSION_DEV_STAGE], ["]bt_version_dev_stage["], [Babeltrace version development stage (can be empty)])
aaa8b698 43AC_DEFINE([BT_VERSION_NAME], ["]bt_version_name["], [Babeltrace version name])
af597f37 44AC_DEFINE_UNQUOTED([BT_VERSION_DESCRIPTION], ["$bt_version_description_c_safe"], [Babeltrace version description])
a2edfc7d 45
ac65e355
MD
46AC_CANONICAL_TARGET
47AC_CANONICAL_HOST
80e2fb15 48
9ffc0257
MJ
49
50## ##
51## Automake base setup ##
52## ##
53
7a3f3e45 54AM_INIT_AUTOMAKE([1.12 foreign dist-bzip2 no-dist-gzip tar-ustar nostdinc])
99e3ba41 55AM_MAINTAINER_MODE([enable])
ac65e355 56
80e2fb15
MJ
57# Enable silent rules if available (Introduced in AM 1.11)
58m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
0671bd13 59
3d5e9596 60
9ffc0257
MJ
61## ##
62## OS specific defaults ##
63## ##
64
65MINGW32=no
ca9f27f3 66DEFAULT_ENABLE_DEBUG_INFO=yes
9ffc0257
MJ
67LT_NO_UNDEFINED=""
68AS_CASE([$host_os],
69 [solaris*|darwin*],
70 [
71 DEFAULT_ENABLE_DEBUG_INFO=no
72 ],
73 [cygwin*],
74 [
75 DEFAULT_ENABLE_DEBUG_INFO=no
76 LT_NO_UNDEFINED="-no-undefined"
77 ],
78 [mingw*],
79 [
80 MINGW32=yes
81 DEFAULT_ENABLE_DEBUG_INFO=no
82 LT_NO_UNDEFINED="-no-undefined"
83 ]
84)
85
86AM_CONDITIONAL([BABELTRACE_BUILD_WITH_MINGW], [test "x$MINGW32" = "xyes"])
87AC_SUBST(LT_NO_UNDEFINED)
88
89
90## ##
91## C compiler checks ##
92## ##
93
80e2fb15 94AC_USE_SYSTEM_EXTENSIONS
217108a9 95AC_SYS_LARGEFILE
9ffc0257
MJ
96
97# Choose the c compiler
80e2fb15 98AC_PROG_CC
217108a9 99
9ffc0257
MJ
100# Make sure the c compiler supports C99
101AC_PROG_CC_C99([], [AC_MSG_ERROR([The compiler does not support C99])])
ac65e355 102
9ffc0257 103# Make sure the c compiler supports __attributes__
ec8add54 104AX_C___ATTRIBUTE__
9ffc0257
MJ
105AS_IF([test "x$ax_cv___attribute__" != "xyes"],
106 [AC_MSG_ERROR([The compiler does not support __attribute__ extensions])])
ec8add54 107
9ffc0257
MJ
108# Make sur we have pthread support
109AX_PTHREAD([], [AC_MSG_ERROR([Could not configure pthread support])])
110
111# Checks for typedefs, structures, and compiler characteristics.
112AC_C_INLINE
113AC_C_TYPEOF
114AC_TYPE_PID_T
115AC_TYPE_SIZE_T
116AC_TYPE_INT16_T
117AC_TYPE_INT32_T
118AC_TYPE_INT64_T
119AC_TYPE_INT8_T
120AC_TYPE_OFF_T
121AC_TYPE_SSIZE_T
122AC_TYPE_UINT16_T
123AC_TYPE_UINT32_T
124AC_TYPE_UINT64_T
125AC_TYPE_UINT8_T
126AC_CHECK_TYPES([ptrdiff_t])
a2bc83d4 127
9ffc0257
MJ
128
129## ##
130## Header checks ##
131## ##
f0d8d709 132
f847f3ae
MJ
133AC_HEADER_STDBOOL
134AC_CHECK_HEADERS([ \
135 fcntl.h \
136 float.h \
e1f4c4f7 137 ftw.h \
f847f3ae
MJ
138 libintl.h \
139 limits.h \
140 malloc.h \
141 netdb.h \
142 netinet/in.h \
143 stddef.h \
144 sys/socket.h \
9ffc0257 145 sys/time.h
f847f3ae 146])
80e2fb15 147
9ffc0257
MJ
148
149## ##
150## Linker checks ##
151## ##
152
153# Check if the linker supports no-as-needed
154AX_APPEND_LINK_FLAGS([-Wl,--no-as-needed], [LD_NO_AS_NEEDED])
155AC_SUBST([LD_NO_AS_NEEDED])
156
1244e794
MJ
157# Check if the linker supports whole-archive
158AX_CHECK_LINK_FLAG([-Wl,--whole-archive,--no-whole-archive],
159 [
160 AC_SUBST([LD_WHOLE_ARCHIVE], [-Wl,--whole-archive,])
161 AC_SUBST([LD_NO_WHOLE_ARCHIVE], [,--no-whole-archive])
162 ],[
163 # Fallback to force_load for the macOS linker
164 AX_CHECK_LINK_FLAG([-Wl,-force_load],
165 [
166 AC_SUBST([LD_WHOLE_ARCHIVE], [-Wl,-force_load,])
167 AC_SUBST([LD_NO_WHOLE_ARCHIVE], [])
168 ],[
169 AC_MSG_WARN([Can't find a linker option to force the inclusion of the static plugin archive objects.])
170 ]
171 )
172 ]
173)
174
9ffc0257
MJ
175# Initialize and configure libtool
176LT_INIT([win32-dll])
177
178
179## ##
180## Programs checks ##
181## ##
182
183AC_PROG_MAKE_SET
184AC_PROG_MKDIR_P
185AC_PROG_LN_S
aaa8b698 186AC_PATH_PROG([report_fold], [fold])
9ffc0257 187
540d833d
MJ
188# set $IN_GIT_REPO if we're in the Git repository; the `bootstrap` file
189# is not distributed in tarballs
190AS_IF([test -f "$srcdir/bootstrap"], [in_git_repo=yes], [in_git_repo=no])
191AM_CONDITIONAL([IN_GIT_REPO], [test "x$in_git_repo" = "xyes"])
192
193# check for bison
194AC_PROG_YACC
042f640b 195AX_PROG_BISON_VERSION([2.5], [have_bison=yes])
540d833d
MJ
196
197AS_IF([test "x$have_bison" != "xyes"], [
198 AS_IF([test "x$in_git_repo" = "xyes"], [
9ffc0257 199 AC_MSG_FAILURE([dnl
540d833d
MJ
200Bison >= 2.4 is required when building from the Git repository. You can
201set the YACC variable to override automatic detection.
202 ])
203 ], [
9ffc0257 204 AC_MSG_WARN([dnl
540d833d
MJ
205Missing Bison >= 2.4. Note that the parser files are already built in
206this distribution tarball, so Bison is only needed if you intend to
207modify their sources. You can set the YACC variable to override automatic
208detection.
209 ])
210 ])
211])
212AM_CONDITIONAL([HAVE_BISON], [test "x$have_bison" = "xyes"])
213
214# check for flex
215AC_PROG_LEX
216AX_PROG_FLEX_VERSION([2.5.35], [have_flex=yes])
217
218AS_IF([test "x$have_flex" != "xyes"], [
219 AS_IF([test "x$in_git_repo" = "xyes"], [
9ffc0257 220 AC_MSG_FAILURE([dnl
540d833d
MJ
221Flex >= 2.5.35 is required when building from the Git repository. You can
222set the LEX variable to override automatic detection.
223 ])
224 ], [
9ffc0257 225 AC_MSG_WARN([dnl
540d833d
MJ
226Missing Flex >= 2.5.35. Note that the lexer files are already built in
227this distribution tarball, so Flex is only needed if you intend to
228modify their sources. You can set the LEX variable to override automatic
229detection.
230 ])
231 ])
232])
233AM_CONDITIONAL([HAVE_FLEX], [test "x$have_flex" = "xyes"])
331d78f5 234
e5f5317f 235
9ffc0257
MJ
236## ##
237## Library checks ##
238## ##
ac65e355 239
39fa4402
MJ
240# Check what libraries are required on this platform to link sockets programs.
241AX_LIB_SOCKET_NSL
242
ef9559ae
SM
243# Check for glib >= 2.28 with gmodule support
244AM_PATH_GLIB_2_0([2.28.0], [],
245 AC_MSG_ERROR([glib >= 2.28 is required - download it from ftp://ftp.gtk.org/pub/gtk]),
9ffc0257
MJ
246 [gmodule-no-export]
247)
ac65e355
MD
248
249# Checks for library functions.
f847f3ae
MJ
250AC_FUNC_ALLOCA
251AC_FUNC_FORK
f847f3ae 252AC_FUNC_MKTIME
ac65e355 253AC_FUNC_MMAP
f847f3ae 254AC_FUNC_STRERROR_R
9ffc0257 255AC_FUNC_STRNLEN
2f8c0e47 256AC_CHECK_FUNCS([ \
f847f3ae 257 atexit \
f847f3ae
MJ
258 dup2 \
259 ftruncate \
260 gethostbyname \
f847f3ae
MJ
261 gettimeofday \
262 localtime_r \
263 memchr \
264 memset \
265 mkdir \
266 mkdtemp \
267 munmap \
268 rmdir \
269 setenv \
270 socket \
271 strchr \
272 strdup \
273 strerror \
274 strndup \
275 strnlen \
276 strrchr \
9ffc0257 277 strstr \
f847f3ae
MJ
278 strtoul \
279 strtoull \
280 tzset \
2f8c0e47 281])
ac65e355 282
dc4cb410
MJ
283# AC_FUNC_MALLOC causes problems when cross-compiling.
284#AC_FUNC_MALLOC
285#AC_FUNC_REALLOC
286
f8370579
MD
287# Check for fmemopen
288AC_CHECK_LIB([c], [fmemopen],
9ffc0257 289 [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_FMEMOPEN], 1, [Has fmemopen support.])]
f8370579
MD
290)
291
292# Check for open_memstream
293AC_CHECK_LIB([c], [open_memstream],
9ffc0257 294 [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_OPEN_MEMSTREAM], 1, [Has open_memstream support.])]
f8370579
MD
295)
296
a323afb2
JG
297# Check for posix_fallocate
298AC_CHECK_LIB([c], [posix_fallocate],
9ffc0257 299 [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_POSIX_FALLOCATE], 1, [Has posix_fallocate support.])]
a323afb2
JG
300)
301
9ffc0257
MJ
302## ##
303## User variables ##
304## ##
305
306AC_ARG_VAR([PYTHON_INCLUDE], [Include flags for Python, bypassing python-config])
0b9113bf 307AC_ARG_VAR([PYTHON_LDFLAGS], [Linker flags for Python, bypassing python-config])
9ffc0257
MJ
308AC_ARG_VAR([PYTHON_CONFIG], [Path to python-config])
309
056632bf
MJ
310# BABELTRACE_PLUGINS_DIR: Plugins directory
311AC_ARG_VAR([BABELTRACE_PLUGINS_DIR], [built-in plugins install directory [LIBDIR/babeltrace2/plugins]])
312AS_IF([test "x$BABELTRACE_PLUGINS_DIR" = x], [BABELTRACE_PLUGINS_DIR='${libdir}/babeltrace2/plugins'])
a094f13b 313
b14c7bf1
MJ
314# BABELTRACE_PLUGIN_PROVIDERS_DIR: Plugin providers directory
315AC_ARG_VAR([BABELTRACE_PLUGIN_PROVIDERS_DIR], [built-in plugin providers install directory [LIBDIR/babeltrace2/plugin-providers]])
316AS_IF([test "x$BABELTRACE_PLUGIN_PROVIDERS_DIR" = x], [BABELTRACE_PLUGIN_PROVIDERS_DIR='${libdir}/babeltrace2/plugin-providers'])
317
9ffc0257 318# BABELTRACE_MINIMAL_LOG_LEVEL:
dd22a91f 319AC_ARG_VAR([BABELTRACE_MINIMAL_LOG_LEVEL], [Minimal log level for Babeltrace program, library, and plugins (TRACE, DEBUG (default), or INFO)])
f7a9ecd3 320AS_IF([test "x$BABELTRACE_MINIMAL_LOG_LEVEL" = x], [BABELTRACE_MINIMAL_LOG_LEVEL="DEBUG"])
ef267d12 321AS_IF([test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "TRACE" && \
9ffc0257 322 test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "DEBUG" && \
dd22a91f
PP
323 test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "INFO"],
324 [AC_MSG_ERROR([Invalid BABELTRACE_MINIMAL_LOG_LEVEL value ($BABELTRACE_MINIMAL_LOG_LEVEL): use TRACE, DEBUG, or INFO.])]
9ffc0257 325)
510400a9 326AC_DEFINE_UNQUOTED([BT_MINIMAL_LOG_LEVEL], [BT_LOG_$BABELTRACE_MINIMAL_LOG_LEVEL], [Minimal log level])
9ffc0257 327
464ebc31
PP
328# BABELTRACE_DEV_MODE:
329AC_ARG_VAR([BABELTRACE_DEV_MODE], [Set to 1 to enable the Babeltrace developer mode (enables run-time checks for plugin developers)])
330AS_IF([test "x$BABELTRACE_DEV_MODE" = x1], [
464ebc31
PP
331 AC_DEFINE([BT_DEV_MODE], 1, [Babeltrace developer mode])
332], [BABELTRACE_DEV_MODE=0])
333
334# BABELTRACE_DEBUG_MODE:
335AC_ARG_VAR([BABELTRACE_DEBUG_MODE], [Set to 1 to enable the Babeltrace debug mode (enables internal assertions for Babeltrace maintainers)])
336AS_IF([test "x$BABELTRACE_DEBUG_MODE" = x1], [
337 AC_DEFINE([BT_DEBUG_MODE], 1, [Babeltrace debug mode])
338], [BABELTRACE_DEBUG_MODE=0])
339
9ffc0257
MJ
340
341## ##
342## Optionnal features selection ##
343## ##
24a3136a 344
9ffc0257
MJ
345# Python bindings
346# Disabled by default
94a6cea3 347AC_ARG_ENABLE([python-bindings],
38c609ff
FD
348 [AC_HELP_STRING([--enable-python-bindings], [build the Python bindings])],
349 [], dnl AC_ARG_ENABLE will fill enable_python_bindings with the user choice
350 [enable_python_bindings=unspecified]
9ffc0257
MJ
351)
352
9ffc0257
MJ
353# Python plugins
354# Disabled by default
355AC_ARG_ENABLE([python-plugins],
0f3224e9
FD
356 [AC_HELP_STRING([--enable-python-plugins], [enable the Python plugins support for the library and converter])]
357 dnl AC_ARG_ENABLE will fill enable_python_plugins with the user choice
9ffc0257
MJ
358)
359
360# Debug info
361# Enabled by default, except on some platforms
362AC_ARG_ENABLE([debug-info],
363 [AC_HELP_STRING([--disable-debug-info], [disable the debug info support (default on macOS, Solaris and Windows)])],
364 [], dnl AC_ARG_ENABLE will fill enable_debug_info with the user choice
365 [enable_debug_info="$DEFAULT_ENABLE_DEBUG_INFO"]
366)
367
368# API documentation
369# Disabled by default
370AC_ARG_ENABLE([api-doc],
371 [AC_HELP_STRING([--enable-api-doc], [build the HTML API documentation])],
0f3224e9 372 [enable_api_doc=$enableval]
9ffc0257
MJ
373)
374
375# Built-in plugins
376# Disabled by default
377AC_ARG_ENABLE([built-in-plugins],
0f3224e9
FD
378 [AC_HELP_STRING([--enable-built-in-plugins], [Statically-link in-tree plug-ins into the babeltrace2 executable])]
379 dnl AC_ARG_ENABLE will fill enable_built_in_plugins with the user choice
9ffc0257
MJ
380)
381
382# Built-in python plugin support
383# Disabled by default
384AC_ARG_ENABLE([built-in-python-plugin-support],
0f3224e9
FD
385 [AC_HELP_STRING([--enable-built-in-python-plugin-support], [Statically-link Python plugin support into the babeltrace library])]
386 dnl AC_ARG_ENABLE will fill enable_built_in_python_plugin_support with the user choice
9ffc0257
MJ
387)
388
0659f3af
PP
389# Man pages
390# Enabled by default
391AC_ARG_ENABLE([man-pages],
392 [AS_HELP_STRING([--disable-man-pages], [Do not build and install man pages (already built in a distributed tarball])],
0f3224e9 393 [], dnl AC_ARG_ENABLE will fill enable_man_pages with the user choice
0659f3af
PP
394 [enable_man_pages=yes]
395)
396
9ffc0257
MJ
397
398# Set automake variables for optionnal feature conditionnals in Makefile.am
399AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS], [test "x$enable_python_bindings" = xyes])
9ffc0257
MJ
400AM_CONDITIONAL([ENABLE_PYTHON_PLUGINS], [test "x$enable_python_plugins" = xyes])
401AM_CONDITIONAL([ENABLE_DEBUG_INFO], [test "x$enable_debug_info" = xyes])
402AM_CONDITIONAL([ENABLE_API_DOC], [test "x$enable_api_doc" = xyes])
403AM_CONDITIONAL([ENABLE_BUILT_IN_PLUGINS], [test "x$enable_built_in_plugins" = xyes])
404AM_CONDITIONAL([ENABLE_BUILT_IN_PYTHON_PLUGIN_SUPPORT], [test "x$enable_built_in_python_plugin_support" = xyes])
0659f3af 405AM_CONDITIONAL([ENABLE_MAN_PAGES], [test "x$enable_man_pages" = xyes])
419fff0b 406AM_CONDITIONAL([ENABLE_PYTHON_COMMON_DEPS], [test "x$enable_python_bindings" = xyes || test "x$enable_python_plugins" = xyes])
9ffc0257
MJ
407
408# Set defines for optionnal features conditionnals in the source code
409
410## jgalar: still used?
411AS_IF([test "x$enable_python_plugins" = xyes],
412 [AC_DEFINE([PYTHON_PLUGINS], [1], [Python plugin support.])]
413)
414
415AS_IF([test "x$enable_debug_info" = xyes],
416 [AC_DEFINE([ENABLE_DEBUG_INFO], [1], [Define to 1 if you enable the 'debug info' feature])]
417)
418
419AS_IF([test "x$enable_built_in_plugins" = xyes],
420 [AC_DEFINE([BT_BUILT_IN_PLUGINS], [1], [Define to 1 to register plug-in attributes in static executable sections])]
421)
422
423AS_IF([test "x$enable_built_in_python_plugin_support" = xyes],
424 [AC_DEFINE([BT_BUILT_IN_PYTHON_PLUGIN_SUPPORT], [1], [Define to 1 to register plug-in attributes in static executable sections])]
425)
426
0659f3af
PP
427AS_IF([test "x$enable_debug_info" = xyes],
428 [ENABLE_DEBUG_INFO_VAL=1],
429 [ENABLE_DEBUG_INFO_VAL=0]
430)
431
432AC_SUBST([ENABLE_DEBUG_INFO_VAL])
433
38c609ff
FD
434# Check for conflicting Python related features user choices.
435AS_IF([test "x$enable_python_plugins" = xyes],
436 [
437 AS_IF([test "x$enable_python_bindings" = xunspecified],
438 [
439 # --enable-python-plugins was provided but --enable-python-bindings was
440 # omitted. Turn the Python bindings ON anyway because it's needed to
441 # use the Python plugins.
442 enable_python_bindings=yes
443 ],
444 [
445 AS_IF([test "x$enable_python_bindings" = xno],
446 [
447 # --enable-python-plugins _and_ --disable-python-bindings were
448 # used. This is invalid because Python plugins need the Python
449 # bindings to be useful.
450 AC_MSG_ERROR(--enable-python-bindings must be used to support Python plugins)
451 ]
452 )
453 ]
454 )
455 ]
456)
9ffc0257 457
811644b8 458# Check for conflicting optional features user choices
9ffc0257 459
9ffc0257
MJ
460AS_IF([test "x$enable_built_in_plugins" = xyes],
461 [
462 # Built-in plug-ins are only available when the --disable-shared --enable-static options are used.
ec2c5e50
MJ
463 AS_IF([test "x$enable_static" != xyes], [AC_MSG_ERROR(--enable-static must be used to bundle plug-ins in the babeltrace2 executable)])
464 AS_IF([test "x$enable_shared" = xyes], [AC_MSG_ERROR(--disable-shared must be used to bundle plug-ins in the babeltrace2 executable)])
9ffc0257
MJ
465 ]
466)
467
468AS_IF([test "x$enable_built_in_python_plugin_support" = xyes],
469 [
0f3224e9 470 AS_IF([test "x$enable_python_plugins" != xyes], [AC_MSG_ERROR([--enable-python-plugins must be used to bundle Python plugin support in the babeltrace2 executable])])
9ffc0257 471 # Built-in plug-ins are only available when the --disable-shared --enable-static options are used.
ec2c5e50
MJ
472 AS_IF([test "x$enable_static" != xyes], [AC_MSG_ERROR(--enable-static must be used to bundle Python plugin support in the babeltrace2 executable)])
473 AS_IF([test "x$enable_shared" = xyes], [AC_MSG_ERROR(--disable-shared must be used to bundle Python plugin support in the babeltrace2 executable)])
9ffc0257 474 ]
55bb57e0 475)
9cf643d1 476
4f5f37d9 477
9ffc0257
MJ
478# Check for optionnal features dependencies
479
480AS_IF([test "x$enable_python_bindings" = xyes],
481 [AX_PKG_SWIG(2.0.0, [], [AC_MSG_ERROR([SWIG 2.0.0 or newer is required to build the python bindings])])]
482)
483
419fff0b 484AM_PATH_PYTHON([3.0], [
1b39e2de 485 AM_PATH_PYTHON_MODULES([PYTHON])
419fff0b 486
1b39e2de
JG
487 # pythondir is the path where extra modules are to be installed
488 pythondir=$PYTHON_PREFIX/$PYTHON_MODULES_PATH
419fff0b 489
1b39e2de
JG
490 # pyexecdir is the path that contains shared objects used by the extra modules
491 pyexecdir=$PYTHON_EXEC_PREFIX/$PYTHON_MODULES_PATH
419fff0b
PP
492
493 AS_IF([test -z "$PYTHON_CONFIG"], [
494 AC_PATH_PROGS([PYTHON_CONFIG],
495 [python$PYTHON_VERSION-config python-config],
496 [],
497 [`dirname $PYTHON`])
24a3136a 498 ])
419fff0b
PP
499
500 AS_IF([test -n "$PYTHON_CONFIG"], [
501 AS_IF([test -z "$PYTHON_INCLUDE"], [
502 AC_MSG_CHECKING([Python include flags])
503 PYTHON_INCLUDE=`$PYTHON_CONFIG --includes`
504 AC_MSG_RESULT([$PYTHON_INCLUDE])
505 ])
506
507 AS_IF([test -z "$PYTHON_LDFLAGS"], [
508 AC_MSG_CHECKING([Python library flags])
2d786d15
SM
509 # Python 3.8+ requires that we pass --embed to get the -lpython3.x flag.
510 AS_IF([! PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags --embed`], [
511 PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags`
512 ])
419fff0b 513 AC_MSG_RESULT([$PYTHON_LDFLAGS])
55bb57e0 514 ])
55bb57e0 515 ])
419fff0b
PP
516], [:])
517
518AS_IF([test "$PYTHON" != :], [have_python=yes], [have_python=no])
519AS_IF([test -n "$PYTHON_CONFIG"], [have_python_dev=yes], [have_python_dev=no])
520
521AM_CONDITIONAL([HAVE_PYTHON], [test "x$have_python" = xyes])
522AM_CONDITIONAL([HAVE_PYTHON_DEV], [test "x$have_python_dev" = xyes])
523
524AS_IF([test "x$enable_python_bindings" = xyes || test "x$enable_python_plugins" = xyes], [
525 AS_IF([test "x$have_python_dev" = xno], [
526 AC_MSG_ERROR([Cannot find a suitable python-config. You can override the python-config path with the PYTHON_CONFIG environment variable.])
527 ])
528])
55bb57e0 529
9ffc0257
MJ
530AS_IF([test "x$enable_debug_info" = xyes],
531 [
532 # Check if libelf and libdw are present
901e5c12
MJ
533 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.)])
534 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.)])
9ffc0257 535 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.)])
901e5c12 536 ELFUTILS_LIBS="-lelf -ldw"
9ffc0257
MJ
537 ]
538)
901e5c12 539AC_SUBST([ELFUTILS_LIBS])
6fbd4105 540
9ffc0257
MJ
541AS_IF([test "x$enable_api_doc" = "xyes"],
542 [
543 DX_DOXYGEN_FEATURE(ON)
544 DX_DOT_FEATURE(OFF)
545 DX_HTML_FEATURE(ON)
546 DX_CHM_FEATURE(OFF)
547 DX_CHI_FEATURE(OFF)
548 DX_MAN_FEATURE(OFF)
549 DX_RTF_FEATURE(OFF)
550 DX_XML_FEATURE(OFF)
551 DX_PDF_FEATURE(OFF)
552 DX_PS_FEATURE(OFF)
43c59509 553 DX_INIT_DOXYGEN([Babeltrace 2], [$(builddir)/Doxyfile], [output])
9ffc0257
MJ
554 AS_IF([test -z "$DX_DOXYGEN"],
555 [AC_MSG_ERROR([You need doxygen to enable the API documentation])]
556 )
557 ]
558)
ac65e355 559
0659f3af
PP
560have_asciidoc_xmlto=no
561warn_prebuilt_man_pages=no
562
4a9f5414
MJ
563AC_PATH_PROG([ASCIIDOC], [asciidoc], [no])
564AC_PATH_PROG([XMLTO], [xmlto], [no])
0659f3af 565
4a9f5414 566AS_IF([test "x$enable_man_pages" = "xyes"], [
0659f3af
PP
567 AS_IF([test "x$ASCIIDOC" = "xno" || test "x$XMLTO" = "xno"], [
568 AS_IF([test "x$in_git_repo" = "xyes"], [
569 # this is an error because we're in the Git repo, which
570 # means the man pages are not already generated for us,
571 # thus asciixmlto are required because we were asked
572 # to build the man pages
573 AC_MSG_ERROR([
574You need asciidoc and xmlto to build the Babeltrace man pages. Use
575--disable-man-pages to disable building the man pages, in which case
576they will not be installed.
577 ])
578 ], [
579 # only warn here: since we're in the tarball, the man
580 # pages should already be generated at this point, thus
581 # asciidoc/xmlto are not strictly required
582 warn_prebuilt_man_pages=yes
583 ])
584 ], [
585 have_asciidoc_xmlto=yes
586 ])
587])
588
589# export AsciiDoc and xmlto existence
590AM_CONDITIONAL([HAVE_ASCIIDOC_XMLTO], [test "x$have_asciidoc_xmlto" = "xyes"])
591
592# a wonderful hack that seems necessary because $libdir is
593# literally `${exec_prefix}/lib`, and $exec_prefix is set to `NONE`
594# by autoconf when it's not specified by the user
595AS_IF([test "x$exec_prefix" = xNONE], [
596 AS_IF([test "x$prefix" = xNONE], [
597 PREFIX="$ac_default_prefix"
598 ], [
599 PREFIX="$prefix"
600 ])
601
602 LIBDIR="$PREFIX/lib"
603], [
604 LIBDIR="$libdir"
605])
606
607AC_SUBST(LIBDIR)
608
02bb4fcc
SM
609# CFLAGS from libraries (the glib ones are needed for the following sizeof
610# test).
611AM_CFLAGS="${PTHREAD_CFLAGS} ${GLIB_CFLAGS}"
38424656 612
5b5959d4
MJ
613# Check that the current size_t matches the size that glib thinks it should
614# be. This catches problems on multi-arch where people try to do a 32-bit
615# build while pointing at 64-bit glib headers. This is a common error because
616# glib.h is not platform specific but it includes glibconfig.h which is and
617# is usually installed in a non-standard path.
618
02bb4fcc
SM
619# Do this before enabling all the warning flags, as the
620# AC_LANG_PROGRAM-generated program may generate some warning, which makes this
621# test fail unnecessarily.
622
3d130ada
MJ
623# Older versions of the pkg-config macros disallows PKG_* in the autoconf
624# output. Specifically allow pkg_config_libdir to be able to print the
625# error message.
626m4_pattern_allow([PKG_CONFIG_LIBDIR])
627
5b5959d4
MJ
628save_CFLAGS=${CFLAGS}
629CFLAGS="${CFLAGS} ${AM_CFLAGS}"
630AC_COMPILE_IFELSE([
631 AC_LANG_PROGRAM([dnl
632#include <glib.h>
633#include <unistd.h>
634 ], [dnl
635G_STATIC_ASSERT(sizeof(size_t) == GLIB_SIZEOF_SIZE_T);
636 ])
637],[:],[
638 AC_MSG_ERROR([dnl
639sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T. You probably need to set
640PKG_CONFIG_LIBDIR to point to the right pkg-config files for your build
641target.
642 ])
643])
644CFLAGS=${save_CFLAGS}
645
02bb4fcc 646# Detect C and LD warning flags supported by the compiler.
28ba44ad
SM
647
648# Detect warning flags supported by the compiler, append them to WARN_CFLAGS.
649#
650# Pass -Werror as an extra flag during the test: this is needed to make the
651# -Wunknown-warning-option diagnostic fatal with clang.
652AX_APPEND_COMPILE_FLAGS([ dnl
653 -Wall dnl
654 -Wextra dnl
655 -Wstrict-prototypes dnl
656 -Wmissing-prototypes dnl
657 -Wmissing-declarations dnl
658 -Wnull-dereference dnl
659 -Wundef dnl
660 -Wredundant-decls dnl
661 -Wshadow dnl
662 -Wjump-misses-init dnl
8b305066 663 -Wsuggest-attribute=format dnl
28ba44ad
SM
664 -Wtautological-constant-out-of-range-compare dnl
665 -Wnested-externs dnl
666 -Wwrite-strings dnl
667 -Wformat=2 dnl
28ba44ad
SM
668 -Wstrict-aliasing dnl
669 -Wmissing-noreturn dnl
670 -Winit-self dnl
671 -Wduplicated-cond dnl
672 -Wduplicated-branches dnl
673 -Wlogical-op dnl
674 -Wno-unused-parameter dnl
675 -Wno-sign-compare dnl
c29c23a0
SM
676 dnl
677 dnl Some versions of SWIG (like 3.0.12) generate code that produces
678 dnl -Wcast-function-type warnings. This warning is present in gcc >= 8. This
679 dnl combo happens on RHEL/Centos 8, for example. Later versions of SWIG (like
680 dnl 4.0.1) have the correct function signatures to not produce this warning.
681 dnl It's simpler to just disable the warning globally.
682 dnl
683 dnl Note that the Debian/Ubuntu SWIG package 3.0.12-2 contains a local patch to
684 dnl fix this (python-fix-function-cast-warnings.patch), so you won't be able to
685 dnl reproduce the warning using that package.
686 dnl
687 dnl Ref: https://github.com/swig/swig/issues/1259
688 -Wno-cast-function-type dnl
28ba44ad
SM
689 -Wno-missing-field-initializers dnl
690 ],
691 [WARN_CFLAGS],
692 [-Werror])
693
694# When given, add -Werror to WARN_CFLAGS.
695AC_ARG_ENABLE([Werror],
696 [AS_HELP_STRING([--enable-Werror], [Treat compiler warnings as errors.])]
697)
698AS_IF([test "x$enable_Werror" = "xyes"],
699 [WARN_CFLAGS="${WARN_CFLAGS} -Werror"]
700)
02bb4fcc 701
28ba44ad 702# The test used in AX_APPEND_COMPILE_FLAGS, generated using AC_LANG_PROGRAM, is
02bb4fcc 703# written in such a way that it triggers a -Wold-style-definition warning. So
28ba44ad
SM
704# this warning always ends up disabled if we put it there, because the test
705# program does not build.
02bb4fcc
SM
706#
707# Enable it here unconditionally. It is supported by GCC >= 4.8 and by Clang
708# (it is accepted for compatibility although it has no effect), and there is
709# not reason to not want it.
710
28ba44ad 711WARN_CFLAGS="${WARN_CFLAGS} -Wold-style-definition"
02bb4fcc 712
28ba44ad
SM
713# CFLAGS from AX_APPEND_COMPILE_FLAGS.
714AM_CFLAGS="${AM_CFLAGS} ${WARN_CFLAGS}"
02bb4fcc
SM
715
716# Done for AM_CFLAGS.
717AC_SUBST(AM_CFLAGS)
718
719# Set global CPPFLAGS in AM_CPPFLAGS
720AM_CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/src -I\$(top_srcdir)/src -include common/config.h"
721AC_SUBST(AM_CPPFLAGS)
722
723# Add glib to global link libs
724LIBS="$LIBS $GLIB_LIBS"
725
9ffc0257 726# Abuse autoconf's AC_ARG_PROGRAM output variable 'program_transform_name'
ec2c5e50 727# to rename babeltrace2.bin to babeltrace2 at install time.
bb30da78 728program_transform_name="s&babeltrace2\.bin&babeltrace2&;$program_transform_name"
33b34c43 729AC_SUBST(program_transform_name)
591999ca 730
ac65e355 731AC_CONFIG_FILES([
578e048b 732 doc/api/Makefile
43c59509
PP
733 doc/api/libbabeltrace2/Doxyfile
734 doc/api/libbabeltrace2/Makefile
f9ded0e0 735 doc/contributing-images/Makefile
578e048b
MJ
736 doc/Makefile
737 doc/man/asciidoc-attrs.conf
738 doc/man/Makefile
e92927d1 739 include/Makefile
578e048b 740 Makefile
fac21c87 741 src/argpar/Makefile
97010665 742 src/autodisc/Makefile
578e048b
MJ
743 src/babeltrace2-ctf-writer.pc
744 src/babeltrace2.pc
745 src/bindings/Makefile
07041daf 746 src/bindings/python/bt2/bt2/version.py
578e048b
MJ
747 src/bindings/python/bt2/Makefile
748 src/bindings/python/bt2/setup.py
749 src/bindings/python/Makefile
750 src/cli/Makefile
751 src/common/Makefile
752 src/compat/Makefile
753 src/ctfser/Makefile
754 src/ctf-writer/Makefile
755 src/fd-cache/Makefile
756 src/lib/graph/Makefile
757 src/lib/graph/message/Makefile
758 src/lib/Makefile
759 src/lib/plugin/Makefile
760 src/lib/prio-heap/Makefile
761 src/lib/trace-ir/Makefile
762 src/logging/Makefile
763 src/Makefile
1aca5200
FD
764 src/plugins/common/Makefile
765 src/plugins/common/muxing/Makefile
d0d4e0ed 766 src/plugins/common/param-validation/Makefile
578e048b
MJ
767 src/plugins/ctf/common/bfcr/Makefile
768 src/plugins/ctf/common/Makefile
769 src/plugins/ctf/common/metadata/Makefile
770 src/plugins/ctf/common/msg-iter/Makefile
578e048b
MJ
771 src/plugins/ctf/fs-sink/Makefile
772 src/plugins/ctf/fs-src/Makefile
773 src/plugins/ctf/lttng-live/Makefile
774 src/plugins/ctf/Makefile
775 src/plugins/lttng-utils/debug-info/Makefile
776 src/plugins/lttng-utils/Makefile
777 src/plugins/Makefile
778 src/plugins/text/dmesg/Makefile
779 src/plugins/text/Makefile
780 src/plugins/text/pretty/Makefile
55478183 781 src/plugins/text/details/Makefile
578e048b
MJ
782 src/plugins/utils/counter/Makefile
783 src/plugins/utils/dummy/Makefile
784 src/plugins/utils/Makefile
785 src/plugins/utils/muxer/Makefile
786 src/plugins/utils/trimmer/Makefile
7085eeaa 787 src/py-common/Makefile
578e048b 788 src/python-plugin-provider/Makefile
5869b179 789 src/param-parse/Makefile
ec532b44 790 src/string-format/Makefile
906ac65f 791 tests/bitfield/Makefile
331731aa 792 tests/ctf-writer/Makefile
aa968dde 793 tests/lib/Makefile
cbb9e0b1 794 tests/lib/test-plugin-plugins/Makefile
578e048b 795 tests/Makefile
d0d4e0ed 796 tests/param-validation/Makefile
578e048b 797 tests/plugins/Makefile
e30aed9e
PP
798 tests/plugins/src.ctf.fs/Makefile
799 tests/plugins/src.ctf.fs/succeed/Makefile
4d227882
FD
800 tests/plugins/sink.ctf.fs/Makefile
801 tests/plugins/sink.ctf.fs/succeed/Makefile
66251464 802 tests/plugins/flt.lttng-utils.debug-info/Makefile
38403bf5
FD
803 tests/plugins/flt.utils.muxer/Makefile
804 tests/plugins/flt.utils.muxer/succeed/Makefile
188edac1 805 tests/plugins/flt.utils.trimmer/Makefile
1833a3d1
CB
806 tests/utils/Makefile
807 tests/utils/tap/Makefile
ac65e355 808])
c41a7502 809
ac65e355 810AC_OUTPUT
1a0399f9
MJ
811
812#
813# Mini-report on what will be built.
814#
815
816PPRINT_INIT
817PPRINT_SET_INDENT(1)
818PPRINT_SET_TS(38)
819
820AS_ECHO
aaa8b698
PP
821
822AS_IF([test -n "bt_version_name"], [
823 AS_ECHO("${PPRINT_COLOR_BLDBLU}Babeltrace $PACKAGE_VERSION \"bt_version_name\"$PPRINT_COLOR_RST")
824], [
825 AS_ECHO("${PPRINT_COLOR_BLDBLU}Babeltrace $PACKAGE_VERSION")
826])
827
1a0399f9
MJ
828AS_ECHO
829
af597f37 830AS_IF([test -n "$bt_version_description"], [
aaa8b698 831 AS_IF([test -n "$report_fold"], [
af597f37 832 AS_ECHO("`AS_ECHO("$bt_version_description") | $report_fold -s`")
aaa8b698 833 ], [
af597f37 834 AS_ECHO("$bt_version_description")
aaa8b698
PP
835 ])
836
837 AS_ECHO
838])
839
4266f2ad 840PPRINT_SUBTITLE([System])
1a0399f9
MJ
841
842# Target architecture we're building for.
843target_arch=$host_cpu
844[
845for f in $CFLAGS; do
846 if test $f = "-m32"; then
847 target_arch="32-bit"
848 elif test $f = "-m64"; then
849 target_arch="64-bit"
850 fi
851done
852]
beb0fb75 853
4266f2ad 854PPRINT_PROP_STRING([Target architecture], $target_arch)
d1dab1d2 855
4266f2ad
PP
856AS_ECHO
857PPRINT_SUBTITLE([Python 3 language support])
419fff0b
PP
858test "x$have_python" = "xyes" && value=1 || value=0
859PPRINT_PROP_BOOL([Have Python interpreter], $value)
860test "x$have_python_dev" = "xyes" && value=1 || value=0
861PPRINT_PROP_BOOL([Have Python development libraries], $value)
55bb57e0 862test "x$enable_python_bindings" = "xyes" && value=1 || value=0
f75e50ab 863PPRINT_PROP_BOOL_CUSTOM([Python bindings], $value, [To enable, use --enable-python-bindings])
55bb57e0 864test "x$enable_python_plugins" = "xyes" && value=1 || value=0
f75e50ab 865PPRINT_PROP_BOOL_CUSTOM([Python plugin support], $value, [To enable, use --enable-python-plugins])
419fff0b
PP
866AS_IF([test "x$have_python" = "xyes"], [
867 PPRINT_PROP_STRING([Python interpreter path], [$PYTHON])
868])
869AS_IF([test "x$have_python_dev" = "xyes"], [
870 PPRINT_PROP_STRING([python-config path], [$PYTHON_CONFIG])
4266f2ad 871 PPRINT_PROP_STRING([Python include paths], [$PYTHON_INCLUDE])
0b9113bf 872 PPRINT_PROP_STRING([Python linker flags], [$PYTHON_LDFLAGS])
419fff0b
PP
873])
874AS_IF([test "x$enable_python_bindings" = "xyes"], [
8c102541
SM
875 PPRINT_PROP_STRING([SWIG executable], [$SWIG])
876 PPRINT_PROP_STRING([SWIG library], [$SWIG_LIB])
4266f2ad 877])
55bb57e0 878
4266f2ad
PP
879AS_ECHO
880PPRINT_SUBTITLE([Plugins])
881PPRINT_PROP_BOOL(['ctf' plugin], 1)
9ffc0257 882test "x$enable_debug_info" = "xyes" && value=1 || value=0
f75e50ab 883PPRINT_PROP_BOOL_CUSTOM(['lttng-utils' plugin], $value, [To enable, use --enable-debug-info])
4266f2ad
PP
884PPRINT_PROP_BOOL(['text' plugin], 1)
885PPRINT_PROP_BOOL(['utils' plugin], 1)
886
887AS_ECHO
888PPRINT_SUBTITLE([Built-in features])
9ffc0257 889test "x$enable_built_in_plugins" = "xyes" && value=1 || value=0
f75e50ab 890PPRINT_PROP_BOOL_CUSTOM([Built-in plugins], $value, [To enable, use --enable-built-in-plugins])
9ffc0257 891test "x$enable_built_in_python_plugin_support" = "xyes" && value=1 || value=0
f75e50ab 892PPRINT_PROP_BOOL_CUSTOM([Built-in Python plugin support], $value, [To enable, use --enable-built-in-python-plugin-support])
6fbd4105 893
4266f2ad
PP
894AS_ECHO
895PPRINT_SUBTITLE([Documentation])
0659f3af
PP
896
897# man pages build enabled/disabled
898m4_pushdef([build_man_pages_msg], [Build and install man pages])
899
900AS_IF([test "x$enable_man_pages" != "xno"], [
901 AS_IF([test "x$in_git_repo" = "xyes"], [
902 PPRINT_PROP_BOOL([build_man_pages_msg], 1)
903 ], [
904 AS_IF([test "x$have_asciidoc_xmlto" = "xyes"], [
905 PPRINT_PROP_BOOL([build_man_pages_msg], 1)
906 ], [
907 PPRINT_PROP_STRING([build_man_pages_msg],
908 [${PPRINT_COLOR_BLDGRN}yes (already built)],
909 $PPRINT_COLOR_SUBTITLE)
910 ])
911 ])
912], [
f75e50ab 913 PPRINT_PROP_BOOL_CUSTOM([build_man_pages_msg], 0, [To build man pages, use --enable-man-pages])
0659f3af
PP
914])
915
916m4_popdef([build_man_pages_msg])
917
4266f2ad 918test "x$enable_api_doc" = "xyes" && value=1 || value=0
f75e50ab 919PPRINT_PROP_BOOL_CUSTOM([HTML API documentation], $value, [To build documentation, use --enable-api-doc])
1a0399f9 920
4266f2ad
PP
921AS_ECHO
922PPRINT_SUBTITLE([Logging])
923PPRINT_PROP_STRING([Minimal log level], $BABELTRACE_MINIMAL_LOG_LEVEL)
924
464ebc31
PP
925AS_ECHO
926PPRINT_SUBTITLE([Special build modes])
f75e50ab
GB
927PPRINT_PROP_BOOL_CUSTOM([Debug mode], $BABELTRACE_DEBUG_MODE, [To enable, set the BABELTRACE_DEBUG_MODE environment variable to 1])
928PPRINT_PROP_BOOL_CUSTOM([Developer mode], $BABELTRACE_DEV_MODE, [To enable, set the BABELTRACE_DEV_MODE environment variable to 1])
464ebc31 929
1a0399f9
MJ
930report_bindir="`eval eval echo $bindir`"
931report_libdir="`eval eval echo $libdir`"
4266f2ad 932report_sysconfdif="`eval eval echo $sysconfdir`"
056632bf 933report_pluginsdir="`eval eval eval echo $BABELTRACE_PLUGINS_DIR`"
b14c7bf1 934report_pluginprovidersdir="`eval eval eval echo $BABELTRACE_PLUGIN_PROVIDERS_DIR`"
1a0399f9
MJ
935
936# Print the bindir and libdir this `make install' will install into.
937AS_ECHO
938PPRINT_SUBTITLE([Install directories])
939PPRINT_PROP_STRING([Binaries], [$report_bindir])
940PPRINT_PROP_STRING([Libraries], [$report_libdir])
056632bf 941PPRINT_PROP_STRING([Plugins], [$report_pluginsdir])
b14c7bf1 942PPRINT_PROP_STRING([Plugin providers], [$report_pluginprovidersdir])
4266f2ad 943PPRINT_PROP_STRING([Configuration], [$report_sysconfdif])
This page took 0.12716 seconds and 4 git commands to generate.