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