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