port: fix compat/endian.h on FreeBSD
[babeltrace.git] / configure.ac
... / ...
CommitLineData
1dnl SPDX-License-Identifier: MIT
2dnl
3dnl Copyright (C) 2017 EfficiOS, Inc.
4dnl
5dnl Process this file with autoconf to produce a configure script.
6
7## ##
8## Autoconf base setup ##
9## ##
10
11AC_PREREQ([2.69])
12
13m4_define([bt_version_major], [2])
14m4_define([bt_version_minor], [1])
15m4_define([bt_version_patch], [0])
16m4_define([bt_version_dev_stage], [-rc1])
17m4_define([bt_version], bt_version_major[.]bt_version_minor[.]bt_version_patch[]bt_version_dev_stage)
18m4_define([bt_version_name], [])
19
20AC_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
24m4_define([bt_lib_version_current], [0])
25m4_define([bt_lib_version_revision], [0])
26m4_define([bt_lib_version_age], [0])
27m4_define([bt_lib_version], bt_lib_version_current[:]bt_lib_version_revision[:]bt_lib_version_age)
28m4_define([bt_version_description], [])
29m4_define([bt_version_description_c_safe], AS_ESCAPE(bt_version_description))
30
31AC_SUBST([BABELTRACE_LIBRARY_VERSION], bt_lib_version)
32
33AC_CONFIG_HEADERS([src/common/config.h])
34AC_CONFIG_AUX_DIR([config])
35AC_CONFIG_MACRO_DIR([m4])
36
37AC_DEFINE([BT_VERSION_MAJOR], bt_version_major, [Babeltrace major version])
38AC_DEFINE([BT_VERSION_MINOR], bt_version_minor, [Babeltrace minor version])
39AC_DEFINE([BT_VERSION_PATCH], bt_version_patch, [Babeltrace patch version])
40AC_DEFINE([BT_VERSION_DEV_STAGE], ["]bt_version_dev_stage["], [Babeltrace version development stage (can be empty)])
41AC_DEFINE([BT_VERSION_NAME], ["]bt_version_name["], [Babeltrace version name])
42AC_DEFINE([BT_VERSION_DESCRIPTION], ["]bt_version_description_c_safe["], [Babeltrace version description])
43
44AC_CANONICAL_TARGET
45AC_CANONICAL_HOST
46
47
48## ##
49## Automake base setup ##
50## ##
51
52AM_INIT_AUTOMAKE([1.12 foreign dist-bzip2 no-dist-gzip tar-ustar nostdinc -Wall -Wno-portability -Werror])
53AM_MAINTAINER_MODE([enable])
54
55# Enable silent rules by default
56AM_SILENT_RULES([yes])
57
58
59## ##
60## OS specific defaults ##
61## ##
62
63MINGW32=no
64DEFAULT_ENABLE_DEBUG_INFO=yes
65LT_NO_UNDEFINED=""
66AS_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
88AM_CONDITIONAL([BABELTRACE_BUILD_WITH_MINGW], [test "x$MINGW32" = "xyes"])
89AC_SUBST(LT_NO_UNDEFINED)
90
91
92## ##
93## C compiler checks ##
94## ##
95
96# Choose the c compiler
97AC_PROG_CC_STDC
98
99# Make sure the c compiler supports C99
100AS_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
103AC_USE_SYSTEM_EXTENSIONS
104AC_SYS_LARGEFILE
105
106# Make sure the c compiler supports __attributes__
107AX_C___ATTRIBUTE__
108AS_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
112AX_PTHREAD([], [AC_MSG_ERROR([Could not configure pthread support])])
113
114# Checks for typedefs, structures, and compiler characteristics.
115AC_C_INLINE
116AC_C_TYPEOF
117AC_TYPE_PID_T
118AC_TYPE_SIZE_T
119AC_TYPE_INT16_T
120AC_TYPE_INT32_T
121AC_TYPE_INT64_T
122AC_TYPE_INT8_T
123AC_TYPE_OFF_T
124AC_TYPE_SSIZE_T
125AC_TYPE_UINT16_T
126AC_TYPE_UINT32_T
127AC_TYPE_UINT64_T
128AC_TYPE_UINT8_T
129AC_CHECK_TYPES([ptrdiff_t])
130
131
132## ##
133## Header checks ##
134## ##
135
136AC_HEADER_STDBOOL
137AC_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
157AX_APPEND_LINK_FLAGS([-Wl,--no-as-needed], [LD_NO_AS_NEEDED])
158AC_SUBST([LD_NO_AS_NEEDED])
159
160# Check if the linker supports whole-archive
161AX_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
183AM_PROG_AR
184AC_PROG_MAKE_SET
185AC_PROG_MKDIR_P
186AC_PROG_LN_S
187AC_PROG_SED
188AC_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
192AS_IF([test -f "$srcdir/bootstrap"], [in_git_repo=yes], [in_git_repo=no])
193AM_CONDITIONAL([IN_GIT_REPO], [test "x$in_git_repo" = "xyes"])
194
195# check for bison
196AC_PROG_YACC
197AX_PROG_BISON_VERSION([2.5], [have_bison=yes])
198
199AS_IF([test "x$have_bison" != "xyes"], [
200 AS_IF([test "x$in_git_repo" = "xyes"], [
201 AC_MSG_FAILURE([dnl
202Bison >= 2.4 is required when building from the Git repository. You can
203set the YACC variable to override automatic detection.
204 ])
205 ], [
206 AC_MSG_WARN([dnl
207Missing Bison >= 2.4. Note that the parser files are already built in
208this distribution tarball, so Bison is only needed if you intend to
209modify their sources. You can set the YACC variable to override automatic
210detection.
211 ])
212 ])
213])
214AM_CONDITIONAL([HAVE_BISON], [test "x$have_bison" = "xyes"])
215
216# check for flex
217AC_PROG_LEX
218AX_PROG_FLEX_VERSION([2.5.35], [have_flex=yes])
219
220AS_IF([test "x$have_flex" != "xyes"], [
221 AS_IF([test "x$in_git_repo" = "xyes"], [
222 AC_MSG_FAILURE([dnl
223Flex >= 2.5.35 is required when building from the Git repository. You can
224set the LEX variable to override automatic detection.
225 ])
226 ], [
227 AC_MSG_WARN([dnl
228Missing Flex >= 2.5.35. Note that the lexer files are already built in
229this distribution tarball, so Flex is only needed if you intend to
230modify their sources. You can set the LEX variable to override automatic
231detection.
232 ])
233 ])
234])
235AM_CONDITIONAL([HAVE_FLEX], [test "x$have_flex" = "xyes"])
236
237# Initialize and configure libtool
238LT_INIT([win32-dll])
239
240
241## ##
242## Library checks ##
243## ##
244
245# Check what libraries are required on this platform to link sockets programs.
246AX_LIB_SOCKET_NSL
247
248# Check for glib >= 2.28 with gmodule support
249AM_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.
255AC_FUNC_ALLOCA
256AC_FUNC_FORK
257AC_FUNC_MKTIME
258AC_FUNC_MMAP
259AC_FUNC_STRERROR_R
260AC_FUNC_STRNLEN
261AC_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
293AC_CHECK_LIB([c], [fmemopen],
294 [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_FMEMOPEN], 1, [Has fmemopen support.])]
295)
296
297# Check for open_memstream
298AC_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
303AC_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
311AC_ARG_VAR([PYTHON_INCLUDE], [Include flags for Python, bypassing python-config])
312AC_ARG_VAR([PYTHON_LDFLAGS], [Linker flags for Python, bypassing python-config])
313AC_ARG_VAR([PYTHON_CONFIG], [Path to python-config])
314
315# BABELTRACE_PLUGINS_DIR: Plugins directory
316AC_ARG_VAR([BABELTRACE_PLUGINS_DIR], [built-in plugins install directory [LIBDIR/babeltrace2/plugins]])
317AS_IF([test "x$BABELTRACE_PLUGINS_DIR" = x], [BABELTRACE_PLUGINS_DIR='${libdir}/babeltrace2/plugins'])
318
319# BABELTRACE_PLUGIN_PROVIDERS_DIR: Plugin providers directory
320AC_ARG_VAR([BABELTRACE_PLUGIN_PROVIDERS_DIR], [built-in plugin providers install directory [LIBDIR/babeltrace2/plugin-providers]])
321AS_IF([test "x$BABELTRACE_PLUGIN_PROVIDERS_DIR" = x], [BABELTRACE_PLUGIN_PROVIDERS_DIR='${libdir}/babeltrace2/plugin-providers'])
322
323# BABELTRACE_MINIMAL_LOG_LEVEL:
324AC_ARG_VAR([BABELTRACE_MINIMAL_LOG_LEVEL], [Minimal log level for Babeltrace program, library, and plugins (TRACE, DEBUG (default), or INFO)])
325AS_IF([test "x$BABELTRACE_MINIMAL_LOG_LEVEL" = x], [BABELTRACE_MINIMAL_LOG_LEVEL="DEBUG"])
326AS_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)
331AC_DEFINE_UNQUOTED([BT_MINIMAL_LOG_LEVEL], [BT_LOG_$BABELTRACE_MINIMAL_LOG_LEVEL], [Minimal log level])
332
333# BABELTRACE_DEV_MODE:
334AC_ARG_VAR([BABELTRACE_DEV_MODE], [Set to 1 to enable the Babeltrace developer mode (enables run-time checks for plugin developers)])
335AS_IF([test "x$BABELTRACE_DEV_MODE" = x1], [
336 AC_DEFINE([BT_DEV_MODE], 1, [Babeltrace developer mode])
337], [BABELTRACE_DEV_MODE=0])
338AM_CONDITIONAL([DEV_MODE], [test "x$BABELTRACE_DEV_MODE" = x1])
339
340# BABELTRACE_DEBUG_MODE:
341AC_ARG_VAR([BABELTRACE_DEBUG_MODE], [Set to 1 to enable the Babeltrace debug mode (enables internal assertions for Babeltrace maintainers)])
342AS_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
353AC_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
361AC_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
369AC_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
376AC_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
384AC_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
391AC_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
398AC_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
405AC_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
413AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS], [test "x$enable_python_bindings" = xyes])
414AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS_DOC], [test "x$enable_python_bindings_doc" = xyes])
415AM_CONDITIONAL([ENABLE_PYTHON_PLUGINS], [test "x$enable_python_plugins" = xyes])
416AM_CONDITIONAL([ENABLE_DEBUG_INFO], [test "x$enable_debug_info" = xyes])
417AM_CONDITIONAL([ENABLE_API_DOC], [test "x$enable_api_doc" = xyes])
418AM_CONDITIONAL([ENABLE_BUILT_IN_PLUGINS], [test "x$enable_built_in_plugins" = xyes])
419AM_CONDITIONAL([ENABLE_BUILT_IN_PYTHON_PLUGIN_SUPPORT], [test "x$enable_built_in_python_plugin_support" = xyes])
420AM_CONDITIONAL([ENABLE_MAN_PAGES], [test "x$enable_man_pages" = xyes])
421AM_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
425AS_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
429AS_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
433AS_IF([test "x$enable_debug_info" = xyes],
434 [ENABLE_DEBUG_INFO_VAL=1],
435 [ENABLE_DEBUG_INFO_VAL=0]
436)
437
438AC_SUBST([ENABLE_DEBUG_INFO_VAL])
439
440# Check for conflicting Python related features user choices.
441AS_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
466AS_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
474AS_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
486AS_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
490AM_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
524AS_IF([test "$PYTHON" != :], [have_python=yes], [have_python=no])
525AS_IF([test -n "$PYTHON_CONFIG"], [have_python_dev=yes], [have_python_dev=no])
526
527AM_CONDITIONAL([HAVE_PYTHON], [test "x$have_python" = xyes])
528AM_CONDITIONAL([HAVE_PYTHON_DEV], [test "x$have_python_dev" = xyes])
529
530AS_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
536AS_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
549AS_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])
559AC_SUBST([ELFUTILS_LIBS])
560
561AS_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
580have_asciidoc_xmlto=no
581warn_prebuilt_man_pages=no
582
583AC_PATH_PROG([ASCIIDOC], [asciidoc], [no])
584AC_PATH_PROG([XMLTO], [xmlto], [no])
585
586AS_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([
594You need asciidoc and xmlto to build the Babeltrace man pages. Use
595--disable-man-pages to disable building the man pages, in which case
596they 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
610AM_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
615AS_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
627AC_SUBST(LIBDIR)
628
629# CFLAGS from libraries (the glib ones are needed for the following sizeof
630# test).
631AM_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.
646m4_pattern_allow([PKG_CONFIG_LIBDIR])
647
648save_CFLAGS=${CFLAGS}
649CFLAGS="${CFLAGS} ${AM_CFLAGS}"
650AC_COMPILE_IFELSE([
651 AC_LANG_PROGRAM([dnl
652#include <glib.h>
653#include <unistd.h>
654 ], [dnl
655G_STATIC_ASSERT(sizeof(size_t) == GLIB_SIZEOF_SIZE_T);
656 ])
657],[:],[
658 AC_MSG_ERROR([dnl
659sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T. You probably need to set
660PKG_CONFIG_LIBDIR to point to the right pkg-config files for your build
661target.
662 ])
663])
664CFLAGS=${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.
672AX_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.
714AC_ARG_ENABLE([Werror],
715 [AS_HELP_STRING([--enable-Werror], [Treat compiler warnings as errors.])]
716)
717AS_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.
728WARN_CFLAGS="${WARN_CFLAGS} -Wold-style-definition -Wstrict-prototypes"
729
730# CFLAGS from AX_APPEND_COMPILE_FLAGS.
731AM_CFLAGS="${AM_CFLAGS} ${WARN_CFLAGS}"
732
733# Done for AM_CFLAGS.
734AC_SUBST(AM_CFLAGS)
735
736# Set global CPPFLAGS in AM_CPPFLAGS
737AM_CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/src -I\$(top_srcdir)/src -include common/config.h"
738AC_SUBST(AM_CPPFLAGS)
739
740# Add glib to global link libs
741LIBS="$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.
745program_transform_name="s&babeltrace2\.bin&babeltrace2&;$program_transform_name"
746AC_SUBST(program_transform_name)
747
748AC_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
831AC_OUTPUT
832
833#
834# Mini-report on what will be built.
835#
836
837PPRINT_INIT
838PPRINT_SET_INDENT(1)
839PPRINT_SET_TS(38)
840
841AS_ECHO
842
843AS_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
849AS_ECHO
850
851AS_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
861PPRINT_SUBTITLE([System])
862
863# Target architecture we're building for.
864target_arch=$host_cpu
865[
866for 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
872done
873]
874
875PPRINT_PROP_STRING([Target architecture], $target_arch)
876
877AS_ECHO
878PPRINT_SUBTITLE([Python 3 language support])
879test "x$have_python" = "xyes" && value=1 || value=0
880PPRINT_PROP_BOOL([Have Python interpreter], $value)
881test "x$have_python_dev" = "xyes" && value=1 || value=0
882PPRINT_PROP_BOOL([Have Python development libraries], $value)
883test "x$enable_python_bindings" = "xyes" && value=1 || value=0
884PPRINT_PROP_BOOL_CUSTOM([Python bindings], $value, [To enable, use --enable-python-bindings])
885test "x$enable_python_plugins" = "xyes" && value=1 || value=0
886PPRINT_PROP_BOOL_CUSTOM([Python plugin support], $value, [To enable, use --enable-python-plugins])
887AS_IF([test "x$have_python" = "xyes"], [
888 PPRINT_PROP_STRING([Python interpreter path], [$PYTHON])
889])
890AS_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])
895AS_IF([test "x$enable_python_bindings" = "xyes"], [
896 PPRINT_PROP_STRING([SWIG executable], [$SWIG])
897 PPRINT_PROP_STRING([SWIG library], [$SWIG_LIB])
898])
899
900AS_ECHO
901PPRINT_SUBTITLE([Plugins])
902PPRINT_PROP_BOOL(['ctf' plugin], 1)
903test "x$enable_debug_info" = "xyes" && value=1 || value=0
904PPRINT_PROP_BOOL_CUSTOM(['lttng-utils' plugin], $value, [To enable, use --enable-debug-info])
905PPRINT_PROP_BOOL(['text' plugin], 1)
906PPRINT_PROP_BOOL(['utils' plugin], 1)
907
908AS_ECHO
909PPRINT_SUBTITLE([Built-in features])
910test "x$enable_built_in_plugins" = "xyes" && value=1 || value=0
911PPRINT_PROP_BOOL_CUSTOM([Built-in plugins], $value, [To enable, use --enable-built-in-plugins])
912test "x$enable_built_in_python_plugin_support" = "xyes" && value=1 || value=0
913PPRINT_PROP_BOOL_CUSTOM([Built-in Python plugin support], $value, [To enable, use --enable-built-in-python-plugin-support])
914
915AS_ECHO
916PPRINT_SUBTITLE([Documentation])
917
918# man pages build enabled/disabled
919m4_pushdef([build_man_pages_msg], [Build and install man pages])
920
921AS_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
937m4_popdef([build_man_pages_msg])
938
939test "x$enable_api_doc" = "xyes" && value=1 || value=0
940PPRINT_PROP_BOOL_CUSTOM([HTML API documentation], $value, [To build documentation, use --enable-api-doc])
941test "x$enable_python_bindings_doc" = "xyes" && value=1 || value=0
942PPRINT_PROP_BOOL_CUSTOM([Python bindings documentation], $value, [To build the Python bindings documentation, use --enable-python-bindings-doc])
943
944AS_ECHO
945PPRINT_SUBTITLE([Logging])
946PPRINT_PROP_STRING([Minimal log level], $BABELTRACE_MINIMAL_LOG_LEVEL)
947
948AS_ECHO
949PPRINT_SUBTITLE([Special build modes])
950PPRINT_PROP_BOOL_CUSTOM([Debug mode], $BABELTRACE_DEBUG_MODE, [To enable, set the BABELTRACE_DEBUG_MODE environment variable to 1])
951PPRINT_PROP_BOOL_CUSTOM([Developer mode], $BABELTRACE_DEV_MODE, [To enable, set the BABELTRACE_DEV_MODE environment variable to 1])
952
953report_bindir="`eval eval echo $bindir`"
954report_libdir="`eval eval echo $libdir`"
955report_sysconfdif="`eval eval echo $sysconfdir`"
956report_pluginsdir="`eval eval eval echo $BABELTRACE_PLUGINS_DIR`"
957report_pluginprovidersdir="`eval eval eval echo $BABELTRACE_PLUGIN_PROVIDERS_DIR`"
958
959# Print the bindir and libdir this `make install' will install into.
960AS_ECHO
961PPRINT_SUBTITLE([Install directories])
962PPRINT_PROP_STRING([Binaries], [$report_bindir])
963PPRINT_PROP_STRING([Libraries], [$report_libdir])
964PPRINT_PROP_STRING([Plugins], [$report_pluginsdir])
965PPRINT_PROP_STRING([Plugin providers], [$report_pluginprovidersdir])
966PPRINT_PROP_STRING([Configuration], [$report_sysconfdif])
This page took 0.026355 seconds and 4 git commands to generate.