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