Commit | Line | Data |
---|---|---|
0235b0db | 1 | dnl SPDX-License-Identifier: MIT |
9ffc0257 | 2 | dnl |
0235b0db | 3 | dnl Copyright (C) 2017 EfficiOS, Inc. |
9ffc0257 | 4 | dnl |
0235b0db | 5 | dnl Process this file with autoconf to produce a configure script. |
9ffc0257 | 6 | |
08fe49d3 | 7 | # Project version information |
a2edfc7d | 8 | m4_define([bt_version_major], [2]) |
d5427d80 | 9 | m4_define([bt_version_minor], [1]) |
a2edfc7d | 10 | m4_define([bt_version_patch], [0]) |
d5427d80 | 11 | m4_define([bt_version_dev_stage], [-rc1]) |
2671dfad | 12 | m4_define([bt_version], bt_version_major[.]bt_version_minor[.]bt_version_patch[]bt_version_dev_stage) |
08fe49d3 MJ |
13 | m4_define([bt_version_name], [[Codename TBD]]) |
14 | m4_define([bt_version_description], [[Description TBD]]) | |
3fbccce7 | 15 | |
08fe49d3 | 16 | # Library version information of "libbabeltrace2" |
3fbccce7 MD |
17 | # Following the numbering scheme proposed by libtool for the library version |
18 | # http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html | |
7e69c04f MJ |
19 | m4_define([bt_lib_version_current], [0]) |
20 | m4_define([bt_lib_version_revision], [0]) | |
21 | m4_define([bt_lib_version_age], [0]) | |
22 | m4_define([bt_lib_version], bt_lib_version_current[:]bt_lib_version_revision[:]bt_lib_version_age) | |
08fe49d3 MJ |
23 | |
24 | ||
25 | ## ## | |
26 | ## Autoconf base setup ## | |
27 | ## ## | |
28 | ||
29 | AC_PREREQ([2.69]) | |
30 | AC_INIT([babeltrace2],[bt_version],[jeremie dot galarneau at efficios dot com],[],[https://efficios.com/babeltrace/]) | |
af597f37 | 31 | |
7e69c04f | 32 | AC_SUBST([BABELTRACE_LIBRARY_VERSION], bt_lib_version) |
3fbccce7 | 33 | |
578e048b | 34 | AC_CONFIG_HEADERS([src/common/config.h]) |
ac65e355 | 35 | AC_CONFIG_AUX_DIR([config]) |
80e2fb15 MJ |
36 | AC_CONFIG_MACRO_DIR([m4]) |
37 | ||
7e69c04f MJ |
38 | AC_DEFINE([BT_VERSION_MAJOR], bt_version_major, [Babeltrace major version]) |
39 | AC_DEFINE([BT_VERSION_MINOR], bt_version_minor, [Babeltrace minor version]) | |
40 | AC_DEFINE([BT_VERSION_PATCH], bt_version_patch, [Babeltrace patch version]) | |
2671dfad | 41 | AC_DEFINE([BT_VERSION_DEV_STAGE], ["]bt_version_dev_stage["], [Babeltrace version development stage (can be empty)]) |
aaa8b698 | 42 | AC_DEFINE([BT_VERSION_NAME], ["]bt_version_name["], [Babeltrace version name]) |
08fe49d3 | 43 | AC_DEFINE([BT_VERSION_DESCRIPTION], ["]AS_ESCAPE(bt_version_description)["], [Babeltrace version description]) |
a2edfc7d | 44 | |
ac65e355 MD |
45 | AC_CANONICAL_TARGET |
46 | AC_CANONICAL_HOST | |
80e2fb15 | 47 | |
9ffc0257 MJ |
48 | |
49 | ## ## | |
50 | ## Automake base setup ## | |
51 | ## ## | |
52 | ||
2d12ade9 | 53 | AM_INIT_AUTOMAKE([1.13 foreign dist-bzip2 no-dist-gzip tar-ustar nostdinc subdir-objects -Wall -Wno-portability -Werror]) |
99e3ba41 | 54 | AM_MAINTAINER_MODE([enable]) |
ac65e355 | 55 | |
e97fe75e MJ |
56 | # Enable silent rules by default |
57 | AM_SILENT_RULES([yes]) | |
0671bd13 | 58 | |
3d5e9596 | 59 | |
9ffc0257 MJ |
60 | ## ## |
61 | ## OS specific defaults ## | |
62 | ## ## | |
63 | ||
64 | MINGW32=no | |
9ffc0257 MJ |
65 | LT_NO_UNDEFINED="" |
66 | AS_CASE([$host_os], | |
67 | [solaris*|darwin*], | |
68 | [ | |
900ddc21 | 69 | AE_FEATURE_DISABLE([debug-info]) |
9ffc0257 | 70 | ], |
f4f8f798 MJ |
71 | [freebsd*], |
72 | [ | |
900ddc21 | 73 | AE_FEATURE_DISABLE([debug-info]) |
f4f8f798 | 74 | ], |
9ffc0257 MJ |
75 | [cygwin*], |
76 | [ | |
900ddc21 MJ |
77 | AE_FEATURE_DISABLE([debug-info]) |
78 | LT_NO_UNDEFINED="-no-undefined" | |
9ffc0257 MJ |
79 | ], |
80 | [mingw*], | |
81 | [ | |
900ddc21 MJ |
82 | MINGW32=yes |
83 | AE_FEATURE_DISABLE([debug-info]) | |
84 | LT_NO_UNDEFINED="-no-undefined" | |
9ffc0257 MJ |
85 | ] |
86 | ) | |
87 | ||
88 | AM_CONDITIONAL([BABELTRACE_BUILD_WITH_MINGW], [test "x$MINGW32" = "xyes"]) | |
89 | AC_SUBST(LT_NO_UNDEFINED) | |
90 | ||
91 | ||
92 | ## ## | |
93 | ## C compiler checks ## | |
94 | ## ## | |
95 | ||
c09b8e7b | 96 | # Choose the C compiler |
b877064f | 97 | AC_PROG_CC |
c09b8e7b | 98 | # AC_PROG_CC_STDC was merged in AC_PROG_CC in autoconf 2.70 |
b877064f | 99 | m4_version_prereq([2.70], [], [AC_PROG_CC_STDC]) |
217108a9 | 100 | |
c09b8e7b | 101 | # Make sure the C compiler supports C99 |
e97fe75e MJ |
102 | AS_IF([test "$ac_cv_prog_cc_c99" = "no"], [AC_MSG_ERROR([The compiler does not support C99])]) |
103 | ||
104 | # Enable available system extensions and LFS support | |
105 | AC_USE_SYSTEM_EXTENSIONS | |
106 | AC_SYS_LARGEFILE | |
ac65e355 | 107 | |
c09b8e7b | 108 | # Make sure the C compiler supports __attributes__ |
ec8add54 | 109 | AX_C___ATTRIBUTE__ |
9ffc0257 MJ |
110 | AS_IF([test "x$ax_cv___attribute__" != "xyes"], |
111 | [AC_MSG_ERROR([The compiler does not support __attribute__ extensions])]) | |
ec8add54 | 112 | |
e7401568 | 113 | # Make sure we have pthread support |
9ffc0257 MJ |
114 | AX_PTHREAD([], [AC_MSG_ERROR([Could not configure pthread support])]) |
115 | ||
116 | # Checks for typedefs, structures, and compiler characteristics. | |
117 | AC_C_INLINE | |
118 | AC_C_TYPEOF | |
9ffc0257 MJ |
119 | AC_TYPE_INT16_T |
120 | AC_TYPE_INT32_T | |
121 | AC_TYPE_INT64_T | |
122 | AC_TYPE_INT8_T | |
123 | AC_TYPE_OFF_T | |
c09b8e7b MJ |
124 | AC_TYPE_PID_T |
125 | AC_TYPE_SIZE_T | |
9ffc0257 MJ |
126 | AC_TYPE_SSIZE_T |
127 | AC_TYPE_UINT16_T | |
128 | AC_TYPE_UINT32_T | |
129 | AC_TYPE_UINT64_T | |
130 | AC_TYPE_UINT8_T | |
131 | AC_CHECK_TYPES([ptrdiff_t]) | |
a2bc83d4 | 132 | |
9ffc0257 | 133 | |
c20049fd MJ |
134 | ## ## |
135 | ## C++ compiler checks ## | |
136 | ## ## | |
137 | ||
138 | # Require a C++11 compiler without GNU extensions (-std=c++11) | |
139 | AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory]) | |
140 | ||
141 | ||
9ffc0257 MJ |
142 | ## ## |
143 | ## Header checks ## | |
144 | ## ## | |
f0d8d709 | 145 | |
f847f3ae MJ |
146 | AC_HEADER_STDBOOL |
147 | AC_CHECK_HEADERS([ \ | |
900ddc21 MJ |
148 | fcntl.h \ |
149 | float.h \ | |
150 | ftw.h \ | |
151 | libintl.h \ | |
152 | limits.h \ | |
153 | malloc.h \ | |
154 | netdb.h \ | |
155 | netinet/in.h \ | |
156 | stddef.h \ | |
157 | sys/socket.h \ | |
158 | sys/time.h | |
f847f3ae | 159 | ]) |
80e2fb15 | 160 | |
9ffc0257 MJ |
161 | |
162 | ## ## | |
163 | ## Linker checks ## | |
164 | ## ## | |
165 | ||
166 | # Check if the linker supports no-as-needed | |
167 | AX_APPEND_LINK_FLAGS([-Wl,--no-as-needed], [LD_NO_AS_NEEDED]) | |
168 | AC_SUBST([LD_NO_AS_NEEDED]) | |
169 | ||
1244e794 MJ |
170 | # Check if the linker supports whole-archive |
171 | AX_CHECK_LINK_FLAG([-Wl,--whole-archive,--no-whole-archive], | |
172 | [ | |
173 | AC_SUBST([LD_WHOLE_ARCHIVE], [-Wl,--whole-archive,]) | |
174 | AC_SUBST([LD_NO_WHOLE_ARCHIVE], [,--no-whole-archive]) | |
175 | ],[ | |
176 | # Fallback to force_load for the macOS linker | |
177 | AX_CHECK_LINK_FLAG([-Wl,-force_load], | |
178 | [ | |
179 | AC_SUBST([LD_WHOLE_ARCHIVE], [-Wl,-force_load,]) | |
180 | AC_SUBST([LD_NO_WHOLE_ARCHIVE], []) | |
181 | ],[ | |
182 | AC_MSG_WARN([Can't find a linker option to force the inclusion of the static plugin archive objects.]) | |
183 | ] | |
184 | ) | |
185 | ] | |
186 | ) | |
187 | ||
5e8a0751 MJ |
188 | # Check if the linker supports the "notext" keyword |
189 | AX_CHECK_LINK_FLAG([-Wl,-z,notext],[ | |
900ddc21 | 190 | AC_SUBST([LD_NOTEXT], [-Wl,-z,notext]) |
5e8a0751 MJ |
191 | ]) |
192 | ||
9ffc0257 MJ |
193 | |
194 | ## ## | |
195 | ## Programs checks ## | |
196 | ## ## | |
197 | ||
e97fe75e | 198 | AM_PROG_AR |
9ffc0257 MJ |
199 | AC_PROG_MAKE_SET |
200 | AC_PROG_MKDIR_P | |
201 | AC_PROG_LN_S | |
e97fe75e | 202 | AC_PROG_SED |
5aced3e6 MJ |
203 | AC_CHECK_PROGS([FOLD], [fold]) |
204 | AC_CHECK_PROGS([ASCIIDOC], [asciidoc]) | |
205 | AC_CHECK_PROGS([XMLTO], [xmlto]) | |
9ffc0257 | 206 | |
540d833d MJ |
207 | # check for bison |
208 | AC_PROG_YACC | |
042f640b | 209 | AX_PROG_BISON_VERSION([2.5], [have_bison=yes]) |
540d833d MJ |
210 | |
211 | AS_IF([test "x$have_bison" != "xyes"], [ | |
e0c79724 | 212 | AE_IF_IN_GIT_REPO([ |
9ffc0257 | 213 | AC_MSG_FAILURE([dnl |
921cd9bd | 214 | Bison >= 2.5 is required when building from the Git repository. You can |
540d833d MJ |
215 | set the YACC variable to override automatic detection. |
216 | ]) | |
217 | ], [ | |
9ffc0257 | 218 | AC_MSG_WARN([dnl |
921cd9bd | 219 | Missing Bison >= 2.5. Note that the parser files are already built in |
540d833d MJ |
220 | this distribution tarball, so Bison is only needed if you intend to |
221 | modify their sources. You can set the YACC variable to override automatic | |
222 | detection. | |
223 | ]) | |
224 | ]) | |
225 | ]) | |
226 | AM_CONDITIONAL([HAVE_BISON], [test "x$have_bison" = "xyes"]) | |
227 | ||
228 | # check for flex | |
b877064f SM |
229 | # Prior to autoconf 2.70, AC_PROG_FLEX did not take an argument. This is not a |
230 | # problem since the argument is silently ignored by older versions. | |
231 | AC_PROG_LEX([noyywrap]) | |
540d833d MJ |
232 | AX_PROG_FLEX_VERSION([2.5.35], [have_flex=yes]) |
233 | ||
234 | AS_IF([test "x$have_flex" != "xyes"], [ | |
e0c79724 | 235 | AE_IF_IN_GIT_REPO([ |
9ffc0257 | 236 | AC_MSG_FAILURE([dnl |
540d833d MJ |
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 | ], [ | |
9ffc0257 | 241 | AC_MSG_WARN([dnl |
540d833d MJ |
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"]) | |
331d78f5 | 250 | |
5aced3e6 MJ |
251 | # Always check for python, we will fail later if some features require it and |
252 | # it's unavailable. | |
041857ec | 253 | AM_PATH_PYTHON([3.4], [ |
5aced3e6 MJ |
254 | AE_PATH_PYTHON_MODULES([PYTHON]) |
255 | ||
256 | # pythondir is the path where extra modules are to be installed | |
257 | pythondir=$PYTHON_PREFIX/$PYTHON_MODULES_PATH | |
258 | ||
259 | # pyexecdir is the path that contains shared objects used by the extra modules | |
260 | pyexecdir=$PYTHON_EXEC_PREFIX/$PYTHON_MODULES_PATH | |
261 | ||
262 | # If no PYTHON_CONFIG was specified by the user, try to find it, starting | |
263 | # with the one specific to the configured python version. | |
264 | AS_IF([test "x$PYTHON_CONFIG" = "x"], [ | |
265 | AC_CHECK_PROGS([PYTHON_CONFIG], [python$PYTHON_VERSION-config python-config]) | |
266 | ]) | |
267 | ||
268 | # If PYTHON_CONFIG is set use it to get the includes and ld flags, unless | |
269 | # they were specified by the user. | |
270 | AS_IF([test "x$PYTHON_CONFIG" != "x" ], [ | |
271 | AS_IF([test "x$PYTHON_INCLUDE" = "x"], [ | |
272 | AC_MSG_CHECKING([Python include flags]) | |
273 | PYTHON_INCLUDE=`$PYTHON_CONFIG --includes` | |
274 | AC_MSG_RESULT([$PYTHON_INCLUDE]) | |
275 | ]) | |
276 | ||
277 | AS_IF([test "x$PYTHON_LDFLAGS" = "x"], [ | |
278 | AC_MSG_CHECKING([Python library flags]) | |
279 | # Python 3.8+ requires that we pass --embed to get the -lpython3.x flag. | |
280 | AS_IF([! PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags --embed`], [ | |
281 | PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags` | |
282 | ]) | |
283 | AC_MSG_RESULT([$PYTHON_LDFLAGS]) | |
284 | ]) | |
285 | ]) | |
286 | ], [:]) | |
287 | ||
e97fe75e MJ |
288 | # Initialize and configure libtool |
289 | LT_INIT([win32-dll]) | |
290 | ||
e5f5317f | 291 | |
9ffc0257 MJ |
292 | ## ## |
293 | ## Library checks ## | |
294 | ## ## | |
ac65e355 | 295 | |
39fa4402 MJ |
296 | # Check what libraries are required on this platform to link sockets programs. |
297 | AX_LIB_SOCKET_NSL | |
298 | ||
ef9559ae SM |
299 | # Check for glib >= 2.28 with gmodule support |
300 | AM_PATH_GLIB_2_0([2.28.0], [], | |
301 | AC_MSG_ERROR([glib >= 2.28 is required - download it from ftp://ftp.gtk.org/pub/gtk]), | |
9ffc0257 MJ |
302 | [gmodule-no-export] |
303 | ) | |
ac65e355 MD |
304 | |
305 | # Checks for library functions. | |
f847f3ae MJ |
306 | AC_FUNC_ALLOCA |
307 | AC_FUNC_FORK | |
f847f3ae | 308 | AC_FUNC_MKTIME |
ac65e355 | 309 | AC_FUNC_MMAP |
f847f3ae | 310 | AC_FUNC_STRERROR_R |
9ffc0257 | 311 | AC_FUNC_STRNLEN |
2f8c0e47 | 312 | AC_CHECK_FUNCS([ \ |
900ddc21 MJ |
313 | atexit \ |
314 | dup2 \ | |
315 | ftruncate \ | |
316 | gethostbyname \ | |
317 | gettimeofday \ | |
318 | localtime_r \ | |
319 | memchr \ | |
320 | memset \ | |
321 | mkdir \ | |
322 | mkdtemp \ | |
323 | munmap \ | |
324 | rmdir \ | |
325 | setenv \ | |
326 | socket \ | |
327 | strchr \ | |
328 | strdup \ | |
329 | strerror \ | |
330 | strndup \ | |
331 | strnlen \ | |
332 | strrchr \ | |
333 | strstr \ | |
334 | strtoul \ | |
335 | strtoull \ | |
336 | tzset \ | |
2f8c0e47 | 337 | ]) |
ac65e355 | 338 | |
dc4cb410 MJ |
339 | # AC_FUNC_MALLOC causes problems when cross-compiling. |
340 | #AC_FUNC_MALLOC | |
341 | #AC_FUNC_REALLOC | |
342 | ||
f8370579 MD |
343 | # Check for fmemopen |
344 | AC_CHECK_LIB([c], [fmemopen], | |
9ffc0257 | 345 | [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_FMEMOPEN], 1, [Has fmemopen support.])] |
f8370579 MD |
346 | ) |
347 | ||
348 | # Check for open_memstream | |
349 | AC_CHECK_LIB([c], [open_memstream], | |
9ffc0257 | 350 | [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_OPEN_MEMSTREAM], 1, [Has open_memstream support.])] |
f8370579 MD |
351 | ) |
352 | ||
a323afb2 JG |
353 | # Check for posix_fallocate |
354 | AC_CHECK_LIB([c], [posix_fallocate], | |
9ffc0257 | 355 | [AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_POSIX_FALLOCATE], 1, [Has posix_fallocate support.])] |
a323afb2 JG |
356 | ) |
357 | ||
887d26fa | 358 | |
9ffc0257 MJ |
359 | ## ## |
360 | ## User variables ## | |
361 | ## ## | |
362 | ||
363 | AC_ARG_VAR([PYTHON_INCLUDE], [Include flags for Python, bypassing python-config]) | |
0b9113bf | 364 | AC_ARG_VAR([PYTHON_LDFLAGS], [Linker flags for Python, bypassing python-config]) |
9ffc0257 MJ |
365 | AC_ARG_VAR([PYTHON_CONFIG], [Path to python-config]) |
366 | ||
056632bf MJ |
367 | # BABELTRACE_PLUGINS_DIR: Plugins directory |
368 | AC_ARG_VAR([BABELTRACE_PLUGINS_DIR], [built-in plugins install directory [LIBDIR/babeltrace2/plugins]]) | |
369 | AS_IF([test "x$BABELTRACE_PLUGINS_DIR" = x], [BABELTRACE_PLUGINS_DIR='${libdir}/babeltrace2/plugins']) | |
a094f13b | 370 | |
b14c7bf1 MJ |
371 | # BABELTRACE_PLUGIN_PROVIDERS_DIR: Plugin providers directory |
372 | AC_ARG_VAR([BABELTRACE_PLUGIN_PROVIDERS_DIR], [built-in plugin providers install directory [LIBDIR/babeltrace2/plugin-providers]]) | |
373 | AS_IF([test "x$BABELTRACE_PLUGIN_PROVIDERS_DIR" = x], [BABELTRACE_PLUGIN_PROVIDERS_DIR='${libdir}/babeltrace2/plugin-providers']) | |
374 | ||
9ffc0257 | 375 | # BABELTRACE_MINIMAL_LOG_LEVEL: |
dd22a91f | 376 | AC_ARG_VAR([BABELTRACE_MINIMAL_LOG_LEVEL], [Minimal log level for Babeltrace program, library, and plugins (TRACE, DEBUG (default), or INFO)]) |
f7a9ecd3 | 377 | AS_IF([test "x$BABELTRACE_MINIMAL_LOG_LEVEL" = x], [BABELTRACE_MINIMAL_LOG_LEVEL="DEBUG"]) |
ef267d12 | 378 | AS_IF([test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "TRACE" && \ |
9ffc0257 | 379 | test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "DEBUG" && \ |
dd22a91f PP |
380 | test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "INFO"], |
381 | [AC_MSG_ERROR([Invalid BABELTRACE_MINIMAL_LOG_LEVEL value ($BABELTRACE_MINIMAL_LOG_LEVEL): use TRACE, DEBUG, or INFO.])] | |
9ffc0257 | 382 | ) |
71436ae4 | 383 | AC_DEFINE_UNQUOTED([BT_LOG_MINIMAL_LEVEL], [__BT_LOGGING_LEVEL_$BABELTRACE_MINIMAL_LOG_LEVEL], [Minimal log level]) |
9ffc0257 | 384 | |
464ebc31 PP |
385 | # BABELTRACE_DEV_MODE: |
386 | AC_ARG_VAR([BABELTRACE_DEV_MODE], [Set to 1 to enable the Babeltrace developer mode (enables run-time checks for plugin developers)]) | |
387 | AS_IF([test "x$BABELTRACE_DEV_MODE" = x1], [ | |
900ddc21 | 388 | AC_DEFINE([BT_DEV_MODE], 1, [Babeltrace developer mode]) |
464ebc31 | 389 | ], [BABELTRACE_DEV_MODE=0]) |
5d7e8359 | 390 | AM_CONDITIONAL([DEV_MODE], [test "x$BABELTRACE_DEV_MODE" = x1]) |
464ebc31 PP |
391 | |
392 | # BABELTRACE_DEBUG_MODE: | |
393 | AC_ARG_VAR([BABELTRACE_DEBUG_MODE], [Set to 1 to enable the Babeltrace debug mode (enables internal assertions for Babeltrace maintainers)]) | |
394 | AS_IF([test "x$BABELTRACE_DEBUG_MODE" = x1], [ | |
900ddc21 | 395 | AC_DEFINE([BT_DEBUG_MODE], 1, [Babeltrace debug mode]) |
464ebc31 PP |
396 | ], [BABELTRACE_DEBUG_MODE=0]) |
397 | ||
9ffc0257 | 398 | |
e7401568 SM |
399 | ## ## |
400 | ## Optional features selection ## | |
401 | ## ## | |
24a3136a | 402 | |
9ffc0257 MJ |
403 | # Python bindings |
404 | # Disabled by default | |
887d26fa MJ |
405 | AE_FEATURE_DEFAULT_DISABLE |
406 | AE_FEATURE([python-bindings],[build the Python bindings]) | |
9ffc0257 | 407 | |
ba64dfcc SM |
408 | # Python bindings documentation |
409 | # Disabled by default | |
887d26fa MJ |
410 | AE_FEATURE_DEFAULT_DISABLE |
411 | AE_FEATURE([python-bindings-doc],[build the Python bindings documentation]) | |
ba64dfcc | 412 | |
9ffc0257 MJ |
413 | # Python plugins |
414 | # Disabled by default | |
887d26fa MJ |
415 | AE_FEATURE_DEFAULT_DISABLE |
416 | AE_FEATURE([python-plugins],[enable the Python plugins support for the library and converter]) | |
9ffc0257 MJ |
417 | |
418 | # Debug info | |
419 | # Enabled by default, except on some platforms | |
887d26fa MJ |
420 | AE_FEATURE_DEFAULT_ENABLE |
421 | AE_FEATURE([debug-info],[disable the debug info support (default on macOS, Solaris and Windows)]) | |
9ffc0257 MJ |
422 | |
423 | # API documentation | |
424 | # Disabled by default | |
887d26fa MJ |
425 | AE_FEATURE_DEFAULT_DISABLE |
426 | AE_FEATURE([api-doc],[build the HTML API documentation]) | |
9ffc0257 MJ |
427 | |
428 | # Built-in plugins | |
429 | # Disabled by default | |
887d26fa MJ |
430 | AE_FEATURE_DEFAULT_DISABLE |
431 | AE_FEATURE([built-in-plugins],[Statically-link in-tree plug-ins into the babeltrace2 executable]) | |
9ffc0257 MJ |
432 | |
433 | # Built-in python plugin support | |
434 | # Disabled by default | |
887d26fa MJ |
435 | AE_FEATURE_DEFAULT_DISABLE |
436 | AE_FEATURE([built-in-python-plugin-support],[Statically-link Python plugin support into the babeltrace library]) | |
9ffc0257 | 437 | |
0659f3af PP |
438 | # Man pages |
439 | # Enabled by default | |
887d26fa MJ |
440 | AE_FEATURE_DEFAULT_ENABLE |
441 | AE_FEATURE([man-pages],[Do not build and install man pages (already built in a distributed tarball]) | |
0659f3af | 442 | |
c20049fd | 443 | # When given, add -Werror to WARN_CFLAGS and WARN_CXXFLAGS. |
887d26fa MJ |
444 | # Disabled by default |
445 | AE_FEATURE_DEFAULT_DISABLE | |
446 | AE_FEATURE([Werror],[Treat compiler warnings as errors.]) | |
9ffc0257 | 447 | |
0b0893d4 SM |
448 | # When given, build with AddressSanitizer. |
449 | AE_FEATURE_DEFAULT_DISABLE | |
450 | AE_FEATURE([asan],[Build with AddressSanitizer.]) | |
50cb048d | 451 | AE_FEATURE([ubsan],[Build with UndefinedBehaviorSanitizer.]) |
9ffc0257 | 452 | |
887d26fa MJ |
453 | ## ## |
454 | ## Check for conflicting features selection ## | |
455 | ## ## | |
9ffc0257 | 456 | |
887d26fa MJ |
457 | # Check for conflicting Python related features user choices. |
458 | AE_IF_FEATURE_ENABLED([python-plugins], [ | |
459 | AE_IF_FEATURE_UNDEF([python-bindings], [ | |
460 | # --enable-python-plugins was provided but --enable-python-bindings was | |
461 | # omitted. Turn the Python bindings ON anyway because it's needed to | |
462 | # use the Python plugins. | |
463 | AE_FEATURE_ENABLE([python-bindings]) | |
464 | ], [ | |
465 | AE_IF_FEATURE_DISABLED([python-bindings], [ | |
466 | # --enable-python-plugins _and_ --disable-python-bindings were | |
467 | # used. This is invalid because Python plugins need the Python | |
468 | # bindings to be useful. | |
469 | AC_MSG_ERROR(--enable-python-bindings must be used to support Python plugins) | |
470 | ]) | |
471 | ]) | |
472 | ]) | |
9ffc0257 | 473 | |
887d26fa MJ |
474 | # Check for conflicting optional features user choices |
475 | AE_IF_FEATURE_ENABLED([built-in-plugins], [ | |
900ddc21 MJ |
476 | # Built-in plug-ins are only available when the --disable-shared --enable-static options are used. |
477 | AE_IF_FEATURE_NOT_ENABLED([static], [AC_MSG_ERROR(--enable-static must be used to bundle plug-ins in the babeltrace2 executable)]) | |
478 | AE_IF_FEATURE_ENABLED([shared], [AC_MSG_ERROR(--disable-shared must be used to bundle plug-ins in the babeltrace2 executable)]) | |
887d26fa | 479 | ]) |
9ffc0257 | 480 | |
887d26fa | 481 | AE_IF_FEATURE_ENABLED([built-in-python-plugin-support], [ |
900ddc21 MJ |
482 | AE_IF_FEATURE_NOT_ENABLED([python-plugins], [AC_MSG_ERROR([--enable-python-plugins must be used to bundle Python plugin support in the babeltrace2 executable])]) |
483 | # Built-in plug-ins are only available when the --disable-shared --enable-static options are used. | |
484 | AE_IF_FEATURE_NOT_ENABLED([static], [AC_MSG_ERROR(--enable-static must be used to bundle Python plugin support in the babeltrace2 executable)]) | |
485 | AE_IF_FEATURE_ENABLED([shared], [AC_MSG_ERROR(--disable-shared must be used to bundle Python plugin support in the babeltrace2 executable)]) | |
887d26fa | 486 | ]) |
0659f3af | 487 | |
0659f3af | 488 | |
c09b8e7b MJ |
489 | ## ## |
490 | ## Set automake variables for optional feature conditionnals in Makefile.am ## | |
491 | ## ## | |
9ffc0257 | 492 | |
887d26fa MJ |
493 | AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS], AE_IS_FEATURE_ENABLED([python-bindings])) |
494 | AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS_DOC], AE_IS_FEATURE_ENABLED([python-bindings-doc])) | |
495 | AM_CONDITIONAL([ENABLE_PYTHON_PLUGINS], AE_IS_FEATURE_ENABLED([python-plugins])) | |
496 | AM_CONDITIONAL([ENABLE_DEBUG_INFO], AE_IS_FEATURE_ENABLED([debug-info])) | |
497 | AM_CONDITIONAL([ENABLE_API_DOC], AE_IS_FEATURE_ENABLED([api-doc])) | |
498 | AM_CONDITIONAL([ENABLE_BUILT_IN_PLUGINS], AE_IS_FEATURE_ENABLED([built-in-plugins])) | |
499 | AM_CONDITIONAL([ENABLE_BUILT_IN_PYTHON_PLUGIN_SUPPORT], AE_IS_FEATURE_ENABLED([built-in-python-plugin-support])) | |
500 | AM_CONDITIONAL([ENABLE_MAN_PAGES], AE_IS_FEATURE_ENABLED([man-pages])) | |
501 | AM_CONDITIONAL([ENABLE_PYTHON_COMMON_DEPS], AE_IS_FEATURE_ENABLED([python-bindings]) || AE_IS_FEATURE_ENABLED([python-plugins])) | |
0b0893d4 | 502 | AM_CONDITIONAL([ENABLE_ASAN], AE_IS_FEATURE_ENABLED([asan])) |
9ffc0257 | 503 | |
887d26fa | 504 | |
c09b8e7b MJ |
505 | ## ## |
506 | ## Set defines for optional features conditionnals in the source code ## | |
507 | ## ## | |
887d26fa MJ |
508 | |
509 | AE_IF_FEATURE_ENABLED([built-in-plugins], | |
510 | [AC_DEFINE([BT_BUILT_IN_PLUGINS], [1], [Define to 1 to register plug-in attributes in static executable sections])] | |
9ffc0257 MJ |
511 | ) |
512 | ||
887d26fa MJ |
513 | AE_IF_FEATURE_ENABLED([built-in-python-plugin-support], |
514 | [AC_DEFINE([BT_BUILT_IN_PYTHON_PLUGIN_SUPPORT], [1], [Define to 1 to register plug-in attributes in static executable sections])] | |
55bb57e0 | 515 | ) |
9cf643d1 | 516 | |
faf5c654 SM |
517 | AE_IF_FEATURE_ENABLED([python-plugins], [ENABLE_PYTHON_PLUGINS=1], [ENABLE_PYTHON_PLUGINS=0]) |
518 | AC_SUBST([ENABLE_PYTHON_PLUGINS]) | |
519 | ||
887d26fa MJ |
520 | AE_IF_FEATURE_ENABLED([debug-info], [ENABLE_DEBUG_INFO_VAL=1], [ENABLE_DEBUG_INFO_VAL=0]) |
521 | AC_SUBST([ENABLE_DEBUG_INFO_VAL]) | |
522 | ||
0b0893d4 SM |
523 | AE_IF_FEATURE_ENABLED([asan], [ENABLE_ASAN=1], [ENABLE_ASAN=0]) |
524 | AC_SUBST([ENABLE_ASAN]) | |
4f5f37d9 | 525 | |
c09b8e7b MJ |
526 | ## ## |
527 | ## Check for optional features dependencies ## | |
528 | ## ## | |
9ffc0257 | 529 | |
887d26fa | 530 | # The Python bindings require SWIG |
de767439 | 531 | AE_IF_FEATURE_ENABLED([python-bindings], |
9ffc0257 MJ |
532 | [AX_PKG_SWIG(2.0.0, [], [AC_MSG_ERROR([SWIG 2.0.0 or newer is required to build the python bindings])])] |
533 | ) | |
534 | ||
419fff0b PP |
535 | AS_IF([test "$PYTHON" != :], [have_python=yes], [have_python=no]) |
536 | AS_IF([test -n "$PYTHON_CONFIG"], [have_python_dev=yes], [have_python_dev=no]) | |
537 | ||
538 | AM_CONDITIONAL([HAVE_PYTHON], [test "x$have_python" = xyes]) | |
539 | AM_CONDITIONAL([HAVE_PYTHON_DEV], [test "x$have_python_dev" = xyes]) | |
540 | ||
cb50b38f MJ |
541 | AS_IF([test "x$have_python" = xyes], [ |
542 | AX_COMPARE_VERSION(["$PYTHON_VERSION"], [ge], ["3.12"], [ | |
543 | have_python_312_or_greater=yes | |
544 | ]) | |
545 | ]) | |
546 | ||
547 | AM_CONDITIONAL([HAVE_PYTHON_312_OR_GREATER], [test "x$have_python_312_or_greater" = xyes]) | |
548 | ||
887d26fa | 549 | AS_IF([AE_IS_FEATURE_ENABLED([python-bindings]) || AE_IS_FEATURE_ENABLED([python-plugins])], [ |
419fff0b PP |
550 | AS_IF([test "x$have_python_dev" = xno], [ |
551 | AC_MSG_ERROR([Cannot find a suitable python-config. You can override the python-config path with the PYTHON_CONFIG environment variable.]) | |
552 | ]) | |
6ec97181 MJ |
553 | |
554 | AX_COMPARE_VERSION(["$PYTHON_VERSION"], [ge], ["3.12"], [ | |
555 | AC_MSG_CHECKING([for python setuptools]) | |
556 | AS_IF(["$PYTHON" -c "import setuptools" 2>/dev/null], [ | |
557 | AC_MSG_RESULT([yes]) | |
558 | ], [ | |
559 | AC_MSG_RESULT([no]) | |
560 | AC_MSG_ERROR([Python >= 3.12 removed 'distutils', the 'setuptools' module needs to be installed for the selected interpreter.]) | |
561 | ]) | |
562 | ]) | |
419fff0b | 563 | ]) |
55bb57e0 | 564 | |
887d26fa | 565 | AE_IF_FEATURE_ENABLED([python-bindings-doc], |
ba64dfcc | 566 | [ |
435aa29a | 567 | AE_CHECK_PYTHON_SPHINX([PYTHON]) |
ba64dfcc SM |
568 | AS_IF([test "x$PYTHON_SPHINX_EXISTS" = xno], [ |
569 | AC_MSG_ERROR([The Sphinx package for Python 3 is required to build the Python bindings documentation]) | |
570 | ]) | |
571 | ||
887d26fa | 572 | AE_IF_FEATURE_NOT_ENABLED([python-bindings], [ |
ba64dfcc SM |
573 | AC_MSG_ERROR([The Python bindings are required to build their documentation]) |
574 | ]) | |
575 | ] | |
576 | ) | |
577 | ||
887d26fa | 578 | AE_IF_FEATURE_ENABLED([debug-info], [ |
e97fe75e MJ |
579 | # Check if libelf and libdw are present |
580 | PKG_CHECK_MODULES([ELFUTILS], [libelf >= 0.154 libdw >= 0.154], | |
581 | [ | |
582 | dnl PKG_CHECK_MODULES defines ELFUTILS_LIBS | |
583 | ], | |
584 | [ | |
1c482ed8 MJ |
585 | AC_MSG_WARN([pkg-config was unable to find a valid .pc for libelf/libdw. Set PKG_CONFIG_PATH to specify the pkg-config configuration file location.]) |
586 | ||
587 | # Turns out SLES12 doesn't bother shipping .pc file for libelf | |
588 | AC_MSG_WARN([Finding libelf without pkg-config.]) | |
2bf8d324 MJ |
589 | 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.)]) |
590 | 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.)]) | |
1c482ed8 MJ |
591 | AE_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.)]) |
592 | ELFUTILS_LIBS="-lelf -ldw" | |
e97fe75e MJ |
593 | ]) |
594 | ]) | |
901e5c12 | 595 | AC_SUBST([ELFUTILS_LIBS]) |
6fbd4105 | 596 | |
887d26fa | 597 | AE_IF_FEATURE_ENABLED([api-doc], |
9ffc0257 MJ |
598 | [ |
599 | DX_DOXYGEN_FEATURE(ON) | |
600 | DX_DOT_FEATURE(OFF) | |
601 | DX_HTML_FEATURE(ON) | |
602 | DX_CHM_FEATURE(OFF) | |
603 | DX_CHI_FEATURE(OFF) | |
604 | DX_MAN_FEATURE(OFF) | |
605 | DX_RTF_FEATURE(OFF) | |
606 | DX_XML_FEATURE(OFF) | |
607 | DX_PDF_FEATURE(OFF) | |
608 | DX_PS_FEATURE(OFF) | |
a5231e64 | 609 | DX_INIT_DOXYGEN([babeltrace2], [$(builddir)/Doxyfile], [output]) |
9ffc0257 | 610 | AS_IF([test -z "$DX_DOXYGEN"], |
900ddc21 | 611 | [AC_MSG_ERROR([You need doxygen to enable the API documentation])] |
9ffc0257 MJ |
612 | ) |
613 | ] | |
614 | ) | |
ac65e355 | 615 | |
0659f3af PP |
616 | have_asciidoc_xmlto=no |
617 | warn_prebuilt_man_pages=no | |
618 | ||
887d26fa | 619 | AE_IF_FEATURE_ENABLED([man-pages], [ |
5aced3e6 | 620 | AS_IF([test "x$ASCIIDOC" = "x" || test "x$XMLTO" = "x"], [ |
e0c79724 | 621 | AE_IF_IN_GIT_REPO([ |
0659f3af PP |
622 | # this is an error because we're in the Git repo, which |
623 | # means the man pages are not already generated for us, | |
624 | # thus asciixmlto are required because we were asked | |
625 | # to build the man pages | |
626 | AC_MSG_ERROR([ | |
627 | You need asciidoc and xmlto to build the Babeltrace man pages. Use | |
628 | --disable-man-pages to disable building the man pages, in which case | |
629 | they will not be installed. | |
630 | ]) | |
631 | ], [ | |
632 | # only warn here: since we're in the tarball, the man | |
633 | # pages should already be generated at this point, thus | |
634 | # asciidoc/xmlto are not strictly required | |
635 | warn_prebuilt_man_pages=yes | |
636 | ]) | |
637 | ], [ | |
638 | have_asciidoc_xmlto=yes | |
639 | ]) | |
640 | ]) | |
641 | ||
642 | # export AsciiDoc and xmlto existence | |
643 | AM_CONDITIONAL([HAVE_ASCIIDOC_XMLTO], [test "x$have_asciidoc_xmlto" = "xyes"]) | |
644 | ||
645 | # a wonderful hack that seems necessary because $libdir is | |
646 | # literally `${exec_prefix}/lib`, and $exec_prefix is set to `NONE` | |
647 | # by autoconf when it's not specified by the user | |
648 | AS_IF([test "x$exec_prefix" = xNONE], [ | |
649 | AS_IF([test "x$prefix" = xNONE], [ | |
650 | PREFIX="$ac_default_prefix" | |
651 | ], [ | |
652 | PREFIX="$prefix" | |
653 | ]) | |
654 | ||
655 | LIBDIR="$PREFIX/lib" | |
656 | ], [ | |
657 | LIBDIR="$libdir" | |
658 | ]) | |
659 | ||
660 | AC_SUBST(LIBDIR) | |
661 | ||
0b0893d4 SM |
662 | # If --enable-asan is used... |
663 | AE_IF_FEATURE_ENABLED([asan], [ | |
664 | # ... add -fsanitize=address to the *FLAGS variables. | |
665 | ASAN_CFLAGS="-fsanitize=address" | |
666 | ASAN_CXXFLAGS="-fsanitize=address" | |
667 | ASAN_LDFLAGS="-fsanitize=address" | |
668 | ]) | |
887d26fa | 669 | |
50cb048d SM |
670 | # If --enable-ubsan is used... |
671 | AE_IF_FEATURE_ENABLED([ubsan], [ | |
672 | # ... add -fsanitize=undefined to the *FLAGS variables. | |
673 | UBSAN_CFLAGS="-fsanitize=undefined" | |
674 | UBSAN_CXXFLAGS="-fsanitize=undefined" | |
675 | UBSAN_LDFLAGS="-fsanitize=undefined" | |
676 | ]) | |
887d26fa | 677 | |
02bb4fcc SM |
678 | # CFLAGS from libraries (the glib ones are needed for the following sizeof |
679 | # test). | |
50cb048d SM |
680 | AM_CFLAGS="-fvisibility=hidden ${PTHREAD_CFLAGS} ${GLIB_CFLAGS} ${ASAN_CFLAGS} ${UBSAN_CFLAGS}" |
681 | AM_CXXFLAGS="-fvisibility=hidden -fvisibility-inlines-hidden ${PTHREAD_CFLAGS} ${GLIB_CFLAGS} ${ASAN_CXXFLAGS} ${UBSAN_CFLAGS}" | |
682 | AM_LDFLAGS="${ASAN_LDFLAGS} ${UBSAN_CFLAGS}" | |
38424656 | 683 | |
5b5959d4 MJ |
684 | # Check that the current size_t matches the size that glib thinks it should |
685 | # be. This catches problems on multi-arch where people try to do a 32-bit | |
686 | # build while pointing at 64-bit glib headers. This is a common error because | |
687 | # glib.h is not platform specific but it includes glibconfig.h which is and | |
688 | # is usually installed in a non-standard path. | |
689 | ||
02bb4fcc SM |
690 | # Do this before enabling all the warning flags, as the |
691 | # AC_LANG_PROGRAM-generated program may generate some warning, which makes this | |
692 | # test fail unnecessarily. | |
693 | ||
3d130ada MJ |
694 | # Older versions of the pkg-config macros disallows PKG_* in the autoconf |
695 | # output. Specifically allow pkg_config_libdir to be able to print the | |
696 | # error message. | |
697 | m4_pattern_allow([PKG_CONFIG_LIBDIR]) | |
698 | ||
5b5959d4 MJ |
699 | save_CFLAGS=${CFLAGS} |
700 | CFLAGS="${CFLAGS} ${AM_CFLAGS}" | |
701 | AC_COMPILE_IFELSE([ | |
702 | AC_LANG_PROGRAM([dnl | |
703 | #include <glib.h> | |
704 | #include <unistd.h> | |
705 | ], [dnl | |
706 | G_STATIC_ASSERT(sizeof(size_t) == GLIB_SIZEOF_SIZE_T); | |
707 | ]) | |
708 | ],[:],[ | |
709 | AC_MSG_ERROR([dnl | |
710 | sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T. You probably need to set | |
711 | PKG_CONFIG_LIBDIR to point to the right pkg-config files for your build | |
712 | target. | |
713 | ]) | |
714 | ]) | |
715 | CFLAGS=${save_CFLAGS} | |
716 | ||
02bb4fcc | 717 | # Detect C and LD warning flags supported by the compiler. |
28ba44ad | 718 | |
c20049fd MJ |
719 | # Detect warning flags supported by the C and C++ compilers and append them to |
720 | # WARN_CFLAGS and WARN_CXXFLAGS. | |
28ba44ad | 721 | # |
c20049fd | 722 | m4_define([WARN_FLAGS_LIST], [ dnl |
900ddc21 MJ |
723 | -Wall dnl |
724 | -Wextra dnl | |
725 | -Wmissing-prototypes dnl | |
726 | -Wmissing-declarations dnl | |
727 | -Wnull-dereference dnl | |
728 | -Wundef dnl | |
729 | -Wredundant-decls dnl | |
730 | -Wshadow dnl | |
d6ed1edd SM |
731 | dnl GCC's -Wshadow warns about constructor parameters shadowing fields, but |
732 | dnl Clang's does not. Enable Clang's `-Wshadow-field-in-constructor`, to make | |
733 | dnl Clang warn about that. | |
734 | -Wshadow-field-in-constructor dnl | |
200e2a8d | 735 | -Wshadow-field dnl |
900ddc21 MJ |
736 | -Wjump-misses-init dnl |
737 | -Wsuggest-attribute=format dnl | |
738 | -Wtautological-constant-out-of-range-compare dnl | |
739 | -Wnested-externs dnl | |
740 | -Wwrite-strings dnl | |
741 | -Wformat=2 dnl | |
742 | -Wstrict-aliasing dnl | |
743 | -Wmissing-noreturn dnl | |
744 | -Winit-self dnl | |
745 | -Wduplicated-cond dnl | |
746 | -Wduplicated-branches dnl | |
747 | -Wlogical-op dnl | |
63b7bb4e | 748 | -Wsuggest-override dnl |
900ddc21 MJ |
749 | -Wno-sign-compare dnl |
750 | dnl | |
751 | dnl Some versions of SWIG (like 3.0.12) generate code that produces | |
752 | dnl -Wcast-function-type warnings. This warning is present in gcc >= 8. This | |
753 | dnl combo happens on RHEL/Centos 8, for example. Later versions of SWIG (like | |
754 | dnl 4.0.1) have the correct function signatures to not produce this warning. | |
755 | dnl It's simpler to just disable the warning globally. | |
756 | dnl | |
757 | dnl Note that the Debian/Ubuntu SWIG package 3.0.12-2 contains a local patch to | |
758 | dnl fix this (python-fix-function-cast-warnings.patch), so you won't be able to | |
759 | dnl reproduce the warning using that package. | |
760 | dnl | |
761 | dnl Ref: https://github.com/swig/swig/issues/1259 | |
762 | -Wno-cast-function-type dnl | |
419d8c49 | 763 | -Wno-maybe-uninitialized dnl |
900ddc21 | 764 | ]) |
c20049fd MJ |
765 | |
766 | # Pass -Werror as an extra flag during the test: this is needed to make the | |
767 | # -Wunknown-warning-option diagnostic fatal with clang. | |
768 | AC_LANG([C++]) | |
769 | AX_APPEND_COMPILE_FLAGS([WARN_FLAGS_LIST], [WARN_CXXFLAGS], [-Werror]) | |
770 | AC_LANG([C]) | |
771 | AX_APPEND_COMPILE_FLAGS([WARN_FLAGS_LIST], [WARN_CFLAGS], [-Werror]) | |
28ba44ad | 772 | |
c20049fd | 773 | AE_IF_FEATURE_ENABLED([Werror], [WARN_CXXFLAGS="${WARN_CXXFLAGS} -Werror"]) |
887d26fa | 774 | AE_IF_FEATURE_ENABLED([Werror], [WARN_CFLAGS="${WARN_CFLAGS} -Werror"]) |
02bb4fcc | 775 | |
28ba44ad | 776 | # The test used in AX_APPEND_COMPILE_FLAGS, generated using AC_LANG_PROGRAM, is |
65679347 SM |
777 | # written in such a way that it triggers warnings with the following warning |
778 | # flags. So they would always end up disabled if we put them there, because | |
779 | # the test program would not build. | |
02bb4fcc | 780 | # |
65679347 | 781 | # Enable them here unconditionally. They are supported by GCC >= 4.8 and by |
c20049fd | 782 | # Clang >= 3.3 (required by the project) and are only valid for C code. |
65679347 | 783 | WARN_CFLAGS="${WARN_CFLAGS} -Wold-style-definition -Wstrict-prototypes" |
02bb4fcc | 784 | |
28ba44ad | 785 | # CFLAGS from AX_APPEND_COMPILE_FLAGS. |
c20049fd | 786 | AM_CXXFLAGS="${AM_CXXFLAGS} ${WARN_CXXFLAGS}" |
28ba44ad | 787 | AM_CFLAGS="${AM_CFLAGS} ${WARN_CFLAGS}" |
02bb4fcc | 788 | |
0b0893d4 | 789 | # Done for AM_CXXFLAGS, AM_CFLAGS and AM_LDFLAGS. |
c20049fd | 790 | AC_SUBST(AM_CXXFLAGS) |
02bb4fcc | 791 | AC_SUBST(AM_CFLAGS) |
0b0893d4 | 792 | AC_SUBST(AM_LDFLAGS) |
02bb4fcc SM |
793 | |
794 | # Set global CPPFLAGS in AM_CPPFLAGS | |
795 | AM_CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/src -I\$(top_srcdir)/src -include common/config.h" | |
796 | AC_SUBST(AM_CPPFLAGS) | |
797 | ||
798 | # Add glib to global link libs | |
799 | LIBS="$LIBS $GLIB_LIBS" | |
800 | ||
b80bfc62 SM |
801 | # Disable exceptions for the {fmt} library. This means, for example, that a |
802 | # format error will result in an assertion failure (instead of throwing an | |
803 | # `fmt::format_error` exception). | |
804 | AC_DEFINE_UNQUOTED([FMT_EXCEPTIONS], 0, [Disable {fmt} exceptions.]) | |
805 | ||
9ffc0257 | 806 | # Abuse autoconf's AC_ARG_PROGRAM output variable 'program_transform_name' |
ec2c5e50 | 807 | # to rename babeltrace2.bin to babeltrace2 at install time. |
bb30da78 | 808 | program_transform_name="s&babeltrace2\.bin&babeltrace2&;$program_transform_name" |
33b34c43 | 809 | AC_SUBST(program_transform_name) |
591999ca | 810 | |
ac65e355 | 811 | AC_CONFIG_FILES([ |
900ddc21 MJ |
812 | doc/api/libbabeltrace2/Doxyfile |
813 | doc/api/libbabeltrace2/Makefile | |
900ddc21 | 814 | doc/bindings/python/Makefile |
900ddc21 MJ |
815 | doc/Makefile |
816 | doc/man/asciidoc-attrs.conf | |
817 | doc/man/Makefile | |
818 | include/Makefile | |
819 | Makefile | |
900ddc21 MJ |
820 | src/babeltrace2-ctf-writer.pc |
821 | src/babeltrace2.pc | |
900ddc21 MJ |
822 | src/bindings/python/bt2/bt2/version.py |
823 | src/bindings/python/bt2/Makefile | |
824 | src/bindings/python/bt2/setup.py | |
900ddc21 | 825 | src/cli/Makefile |
900ddc21 | 826 | src/Makefile |
900ddc21 MJ |
827 | tests/bitfield/Makefile |
828 | tests/ctf-writer/Makefile | |
829 | tests/lib/Makefile | |
900ddc21 MJ |
830 | tests/Makefile |
831 | tests/param-validation/Makefile | |
832 | tests/plugins/Makefile | |
833 | tests/plugins/src.ctf.fs/Makefile | |
834 | tests/plugins/src.ctf.fs/succeed/Makefile | |
835 | tests/plugins/sink.ctf.fs/Makefile | |
836 | tests/plugins/sink.ctf.fs/succeed/Makefile | |
837 | tests/plugins/flt.lttng-utils.debug-info/Makefile | |
838 | tests/plugins/flt.utils.muxer/Makefile | |
839 | tests/plugins/flt.utils.muxer/succeed/Makefile | |
840 | tests/plugins/flt.utils.trimmer/Makefile | |
841 | tests/plugins/sink.text.pretty/Makefile | |
7fcc5fd0 | 842 | tests/utils/env.sh |
900ddc21 MJ |
843 | tests/utils/Makefile |
844 | tests/utils/tap/Makefile | |
ac65e355 | 845 | ]) |
c41a7502 | 846 | |
ac65e355 | 847 | AC_OUTPUT |
1a0399f9 MJ |
848 | |
849 | # | |
850 | # Mini-report on what will be built. | |
851 | # | |
852 | ||
853 | PPRINT_INIT | |
854 | PPRINT_SET_INDENT(1) | |
855 | PPRINT_SET_TS(38) | |
856 | ||
857 | AS_ECHO | |
aaa8b698 PP |
858 | |
859 | AS_IF([test -n "bt_version_name"], [ | |
900ddc21 | 860 | AS_ECHO("${PPRINT_COLOR_BLDBLU}Babeltrace $PACKAGE_VERSION \"bt_version_name\"$PPRINT_COLOR_RST") |
aaa8b698 | 861 | ], [ |
900ddc21 | 862 | AS_ECHO("${PPRINT_COLOR_BLDBLU}Babeltrace $PACKAGE_VERSION") |
aaa8b698 PP |
863 | ]) |
864 | ||
1a0399f9 MJ |
865 | AS_ECHO |
866 | ||
e97fe75e | 867 | AS_IF([test -n "bt_version_description"], [ |
5aced3e6 MJ |
868 | AS_IF([test -n "$FOLD"], [ |
869 | AS_ECHO("`AS_ECHO("bt_version_description") | $FOLD -s`") | |
900ddc21 MJ |
870 | ], [ |
871 | AS_ECHO("bt_version_description") | |
872 | ]) | |
aaa8b698 | 873 | |
900ddc21 | 874 | AS_ECHO |
aaa8b698 PP |
875 | ]) |
876 | ||
4266f2ad | 877 | PPRINT_SUBTITLE([System]) |
1a0399f9 MJ |
878 | |
879 | # Target architecture we're building for. | |
880 | target_arch=$host_cpu | |
881 | [ | |
882 | for f in $CFLAGS; do | |
900ddc21 MJ |
883 | if test $f = "-m32"; then |
884 | target_arch="32-bit" | |
885 | elif test $f = "-m64"; then | |
886 | target_arch="64-bit" | |
887 | fi | |
1a0399f9 MJ |
888 | done |
889 | ] | |
beb0fb75 | 890 | |
4266f2ad | 891 | PPRINT_PROP_STRING([Target architecture], $target_arch) |
d1dab1d2 | 892 | |
4266f2ad PP |
893 | AS_ECHO |
894 | PPRINT_SUBTITLE([Python 3 language support]) | |
419fff0b PP |
895 | test "x$have_python" = "xyes" && value=1 || value=0 |
896 | PPRINT_PROP_BOOL([Have Python interpreter], $value) | |
897 | test "x$have_python_dev" = "xyes" && value=1 || value=0 | |
898 | PPRINT_PROP_BOOL([Have Python development libraries], $value) | |
55bb57e0 | 899 | test "x$enable_python_bindings" = "xyes" && value=1 || value=0 |
f75e50ab | 900 | PPRINT_PROP_BOOL_CUSTOM([Python bindings], $value, [To enable, use --enable-python-bindings]) |
55bb57e0 | 901 | test "x$enable_python_plugins" = "xyes" && value=1 || value=0 |
f75e50ab | 902 | PPRINT_PROP_BOOL_CUSTOM([Python plugin support], $value, [To enable, use --enable-python-plugins]) |
419fff0b PP |
903 | AS_IF([test "x$have_python" = "xyes"], [ |
904 | PPRINT_PROP_STRING([Python interpreter path], [$PYTHON]) | |
905 | ]) | |
906 | AS_IF([test "x$have_python_dev" = "xyes"], [ | |
907 | PPRINT_PROP_STRING([python-config path], [$PYTHON_CONFIG]) | |
4266f2ad | 908 | PPRINT_PROP_STRING([Python include paths], [$PYTHON_INCLUDE]) |
0b9113bf | 909 | PPRINT_PROP_STRING([Python linker flags], [$PYTHON_LDFLAGS]) |
419fff0b | 910 | ]) |
887d26fa | 911 | AE_IF_FEATURE_ENABLED([python-bindings], [ |
8c102541 SM |
912 | PPRINT_PROP_STRING([SWIG executable], [$SWIG]) |
913 | PPRINT_PROP_STRING([SWIG library], [$SWIG_LIB]) | |
4266f2ad | 914 | ]) |
55bb57e0 | 915 | |
4266f2ad PP |
916 | AS_ECHO |
917 | PPRINT_SUBTITLE([Plugins]) | |
918 | PPRINT_PROP_BOOL(['ctf' plugin], 1) | |
9ffc0257 | 919 | test "x$enable_debug_info" = "xyes" && value=1 || value=0 |
f75e50ab | 920 | PPRINT_PROP_BOOL_CUSTOM(['lttng-utils' plugin], $value, [To enable, use --enable-debug-info]) |
4266f2ad PP |
921 | PPRINT_PROP_BOOL(['text' plugin], 1) |
922 | PPRINT_PROP_BOOL(['utils' plugin], 1) | |
923 | ||
924 | AS_ECHO | |
925 | PPRINT_SUBTITLE([Built-in features]) | |
9ffc0257 | 926 | test "x$enable_built_in_plugins" = "xyes" && value=1 || value=0 |
f75e50ab | 927 | PPRINT_PROP_BOOL_CUSTOM([Built-in plugins], $value, [To enable, use --enable-built-in-plugins]) |
9ffc0257 | 928 | test "x$enable_built_in_python_plugin_support" = "xyes" && value=1 || value=0 |
f75e50ab | 929 | PPRINT_PROP_BOOL_CUSTOM([Built-in Python plugin support], $value, [To enable, use --enable-built-in-python-plugin-support]) |
6fbd4105 | 930 | |
4266f2ad PP |
931 | AS_ECHO |
932 | PPRINT_SUBTITLE([Documentation]) | |
0659f3af PP |
933 | |
934 | # man pages build enabled/disabled | |
935 | m4_pushdef([build_man_pages_msg], [Build and install man pages]) | |
936 | ||
e0c79724 MJ |
937 | AE_IF_FEATURE_ENABLED([man-pages], [ |
938 | AE_IF_IN_GIT_REPO([ | |
0659f3af PP |
939 | PPRINT_PROP_BOOL([build_man_pages_msg], 1) |
940 | ], [ | |
941 | AS_IF([test "x$have_asciidoc_xmlto" = "xyes"], [ | |
942 | PPRINT_PROP_BOOL([build_man_pages_msg], 1) | |
943 | ], [ | |
944 | PPRINT_PROP_STRING([build_man_pages_msg], | |
945 | [${PPRINT_COLOR_BLDGRN}yes (already built)], | |
946 | $PPRINT_COLOR_SUBTITLE) | |
947 | ]) | |
948 | ]) | |
949 | ], [ | |
f75e50ab | 950 | PPRINT_PROP_BOOL_CUSTOM([build_man_pages_msg], 0, [To build man pages, use --enable-man-pages]) |
0659f3af PP |
951 | ]) |
952 | ||
953 | m4_popdef([build_man_pages_msg]) | |
954 | ||
4266f2ad | 955 | test "x$enable_api_doc" = "xyes" && value=1 || value=0 |
f75e50ab | 956 | PPRINT_PROP_BOOL_CUSTOM([HTML API documentation], $value, [To build documentation, use --enable-api-doc]) |
ba64dfcc SM |
957 | test "x$enable_python_bindings_doc" = "xyes" && value=1 || value=0 |
958 | PPRINT_PROP_BOOL_CUSTOM([Python bindings documentation], $value, [To build the Python bindings documentation, use --enable-python-bindings-doc]) | |
1a0399f9 | 959 | |
4266f2ad PP |
960 | AS_ECHO |
961 | PPRINT_SUBTITLE([Logging]) | |
962 | PPRINT_PROP_STRING([Minimal log level], $BABELTRACE_MINIMAL_LOG_LEVEL) | |
963 | ||
464ebc31 PP |
964 | AS_ECHO |
965 | PPRINT_SUBTITLE([Special build modes]) | |
f75e50ab GB |
966 | PPRINT_PROP_BOOL_CUSTOM([Debug mode], $BABELTRACE_DEBUG_MODE, [To enable, set the BABELTRACE_DEBUG_MODE environment variable to 1]) |
967 | PPRINT_PROP_BOOL_CUSTOM([Developer mode], $BABELTRACE_DEV_MODE, [To enable, set the BABELTRACE_DEV_MODE environment variable to 1]) | |
464ebc31 | 968 | |
1a0399f9 MJ |
969 | report_bindir="`eval eval echo $bindir`" |
970 | report_libdir="`eval eval echo $libdir`" | |
4266f2ad | 971 | report_sysconfdif="`eval eval echo $sysconfdir`" |
056632bf | 972 | report_pluginsdir="`eval eval eval echo $BABELTRACE_PLUGINS_DIR`" |
b14c7bf1 | 973 | report_pluginprovidersdir="`eval eval eval echo $BABELTRACE_PLUGIN_PROVIDERS_DIR`" |
1a0399f9 MJ |
974 | |
975 | # Print the bindir and libdir this `make install' will install into. | |
976 | AS_ECHO | |
977 | PPRINT_SUBTITLE([Install directories]) | |
978 | PPRINT_PROP_STRING([Binaries], [$report_bindir]) | |
979 | PPRINT_PROP_STRING([Libraries], [$report_libdir]) | |
056632bf | 980 | PPRINT_PROP_STRING([Plugins], [$report_pluginsdir]) |
b14c7bf1 | 981 | PPRINT_PROP_STRING([Plugin providers], [$report_pluginprovidersdir]) |
4266f2ad | 982 | PPRINT_PROP_STRING([Configuration], [$report_sysconfdif]) |
900ddc21 MJ |
983 | |
984 | # vim: shiftwidth=2 softtabstop=2 expandtab |