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