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