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