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