blob: 2f7316e8f6dfa66f217ea5077148f8fcfe1981d6 [file] [log] [blame]
Ulrich Drepperb08d5a82005-07-26 05:00:05 +00001dnl Process this file with autoconf to produce a configure script.
2dnl Configure input file for elfutils. -*-autoconf-*-
3dnl
Frank Ch. Eiglere27e30c2019-10-28 13:29:26 -04004dnl Copyright (C) 1996-2019 Red Hat, Inc.
Ulrich Drepperb08d5a82005-07-26 05:00:05 +00005dnl
Mark Wielaardde2ed972012-06-05 17:15:16 +02006dnl This file is part of elfutils.
Ulrich Drepperb08d5a82005-07-26 05:00:05 +00007dnl
Mark Wielaardde2ed972012-06-05 17:15:16 +02008dnl This file is free software; you can redistribute it and/or modify
9dnl it under the terms of the GNU General Public License as published by
10dnl the Free Software Foundation; either version 3 of the License, or
11dnl (at your option) any later version.
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000012dnl
Mark Wielaardde2ed972012-06-05 17:15:16 +020013dnl elfutils is distributed in the hope that it will be useful, but
14dnl WITHOUT ANY WARRANTY; without even the implied warranty of
15dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16dnl GNU General Public License for more details.
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000017dnl
Mark Wielaardde2ed972012-06-05 17:15:16 +020018dnl You should have received a copy of the GNU General Public License
19dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
Mark Wielaardd4fd0802020-10-31 17:57:47 +010020AC_INIT([elfutils],[0.182],[https://sourceware.org/bugzilla],[elfutils],[http://elfutils.org/])
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000021
Mark Wielaard34b037b2017-01-12 11:43:30 +010022dnl Workaround for older autoconf < 2.64
23m4_ifndef([AC_PACKAGE_URL],
24 [AC_DEFINE([PACKAGE_URL], ["http://elfutils.org/"],
25 [Define to home page for this package])
26 AC_SUBST([PACKAGE_URL], ["http://elfutils.org/"])])
27
Dmitry V. Levinfc5e8082020-12-09 03:12:53 +030028LIBDEBUGINFOD_SONAME=libdebuginfod.so.1
29AC_SUBST([LIBDEBUGINFOD_SONAME])
30
Mark Wielaard9ba24582016-03-02 15:04:43 +010031# We want eu- as default program prefix if none was given by the user.
32# But if the user explicitly provided --program-prefix="" then pretend
33# it wasn't set at all (NONE). We want to test this really early before
34# configure has a chance to use the value.
35
36if test "x$program_prefix" = "xNONE"; then
37 AC_MSG_NOTICE([No --program-prefix given, using "eu-"])
38 program_prefix="eu-"
39elif test "x$program_prefix" = "x"; then
40 AC_MSG_NOTICE([Using no program-prefix])
41 program_prefix=NONE
42fi
43
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000044AC_CONFIG_AUX_DIR([config])
45AC_CONFIG_FILES([config/Makefile])
46
Mark Wielaarda2bc0212020-06-11 16:09:03 +020047AC_COPYRIGHT([Copyright (C) 1996-2020 The elfutils developers.])
Ulrich Drepperdb12f162009-09-21 08:04:38 -070048AC_PREREQ(2.63) dnl Minimum Autoconf version required.
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000049
Roland McGrath9aa8ef72007-05-18 08:59:43 +000050dnl We use GNU make extensions; automake 1.10 defaults to -Wportability.
Mark Wielaard86be7922013-04-26 23:44:25 +020051AM_INIT_AUTOMAKE([gnits 1.11 -Wno-portability dist-bzip2 no-dist-gzip parallel-tests])
Roland McGrathc373d852006-10-10 00:25:21 +000052AM_MAINTAINER_MODE
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000053
Mark Wielaardc04f4912015-10-07 13:37:56 +020054AM_SILENT_RULES([yes])
55
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000056AC_CONFIG_SRCDIR([libelf/libelf.h])
57AC_CONFIG_FILES([Makefile])
58AC_CONFIG_HEADERS([config.h])
59
60AC_CONFIG_MACRO_DIR([m4])
61AC_CONFIG_FILES([m4/Makefile])
62
63dnl The RPM spec file. We substitute a few values in the file.
64AC_CONFIG_FILES([elfutils.spec:config/elfutils.spec.in])
65
Aaron Merey288f6b12019-10-28 13:29:26 -040066dnl debuginfo-server client & server parts.
Dmitry V. Levinfc5e8082020-12-09 03:12:53 +030067AC_CONFIG_FILES([debuginfod/Makefile debuginfod/debuginfod.h])
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000068
69AC_CANONICAL_HOST
70
Roland McGrath3284b792012-01-20 12:51:46 -080071AC_ARG_ENABLE(deterministic-archives,
72[AS_HELP_STRING([--enable-deterministic-archives],
73 [ar and ranlib default to -D behavior])], [
74if test "${enableval}" = no; then
75 default_ar_deterministic=false
76else
77 default_ar_deterministic=true
78fi], [default_ar_deterministic=false])
79AC_DEFINE_UNQUOTED(DEFAULT_AR_DETERMINISTIC, $default_ar_deterministic,
80 [Should ar and ranlib use -D behavior by default?])
81
Ulrich Drepper7e678fa2009-01-10 18:02:05 -080082AC_ARG_ENABLE([thread-safety],
Mark Wielaard09c9bb92013-11-06 12:21:32 +010083AS_HELP_STRING([--enable-thread-safety],
84 [enable thread safety of libraries EXPERIMENTAL]),
85 use_locks=$enableval, use_locks=no)
Ulrich Drepper7e678fa2009-01-10 18:02:05 -080086AM_CONDITIONAL(USE_LOCKS, test "$use_locks" = yes)
87AS_IF([test "$use_locks" = yes], [AC_DEFINE(USE_LOCKS)])
Mark Wielaard09c9bb92013-11-06 12:21:32 +010088AS_IF([test "$use_locks" = yes],
89 [AC_MSG_WARN([thread-safety is EXPERIMENTAL tests might fail.])])
Ulrich Drepperd56e2322008-08-16 03:09:13 +000090
Ulrich Drepper7e678fa2009-01-10 18:02:05 -080091AH_TEMPLATE([USE_LOCKS], [Defined if libraries should be thread-safe.])
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000092
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000093AC_PROG_CC
94AC_PROG_RANLIB
95AC_PROG_YACC
96AM_PROG_LEX
Michael Forneya45c8042013-11-01 00:51:04 -070097# Only available since automake 1.12
98m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
99AC_CHECK_TOOL([READELF], [readelf])
100AC_CHECK_TOOL([NM], [nm])
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000101
Mark Wielaardaba6d762015-04-14 10:18:37 +0200102# We use -std=gnu99 but have explicit checks for some language constructs
103# and GNU extensions since some compilers claim GNU99 support, but don't
104# really support all language extensions. In particular we need
105# Mixed Declarations and Code
106# https://gcc.gnu.org/onlinedocs/gcc/Mixed-Declarations.html
107# Nested Functions
108# https://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html
109# Arrays of Variable Length
110# https://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html
111AC_CACHE_CHECK([for gcc with GNU99 support], ac_cv_c99, [dnl
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000112old_CFLAGS="$CFLAGS"
113CFLAGS="$CFLAGS -std=gnu99"
Roland McGrathf64e25f2011-02-08 19:36:50 -0800114AC_COMPILE_IFELSE([AC_LANG_SOURCE([dnl
Mark Wielaardaba6d762015-04-14 10:18:37 +0200115int foo (int a)
116{
117 for (int i = 0; i < a; ++i) if (i % 4) break; int s = a; return s;
118}
119
120double bar (double a, double b)
121{
122 double square (double z) { return z * z; }
123 return square (a) + square (b);
124}
125
126void baz (int n)
127{
128 struct S { int x[[n]]; };
129}])],
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000130 ac_cv_c99=yes, ac_cv_c99=no)
131CFLAGS="$old_CFLAGS"])
132AS_IF([test "x$ac_cv_c99" != xyes],
Mark Wielaardaba6d762015-04-14 10:18:37 +0200133 AC_MSG_ERROR([gcc with GNU99 support required]))
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000134
Ulf Hermann11274702017-08-18 13:06:36 +0200135AC_CACHE_CHECK([whether gcc supports __attribute__((visibility()))],
136 ac_cv_visibility, [dnl
137save_CFLAGS="$CFLAGS"
138CFLAGS="$save_CFLAGS -Werror"
139AC_COMPILE_IFELSE([AC_LANG_SOURCE([dnl
140int __attribute__((visibility("hidden")))
141foo (int a)
142{
143 return a;
144}])], ac_cv_visibility=yes, ac_cv_visibility=no)
145CFLAGS="$save_CFLAGS"])
146if test "$ac_cv_visibility" = "yes"; then
147 AC_DEFINE([HAVE_VISIBILITY], [1],
148 [Defined if __attribute__((visibility())) is supported])
149fi
150
Ulf Hermann17d71942017-08-18 14:05:10 +0200151AC_CACHE_CHECK([whether gcc supports __attribute__((gcc_struct))],
152 ac_cv_gcc_struct, [dnl
153save_CFLAGS="$CFLAGS"
154CFLAGS="$save_CFLAGS -Werror"
155AC_COMPILE_IFELSE([AC_LANG_SOURCE([dnl
156struct test { int x; } __attribute__((gcc_struct));
157])], ac_cv_gcc_struct=yes, ac_cv_gcc_struct=no)
158CFLAGS="$save_CFLAGS"])
159if test "$ac_cv_gcc_struct" = "yes"; then
160 AC_DEFINE([HAVE_GCC_STRUCT], [1],
161 [Defined if __attribute__((gcc_struct)) is supported])
162fi
163
Ulf Hermann07737582017-08-18 12:41:11 +0200164AC_CACHE_CHECK([whether gcc supports -fPIC], ac_cv_fpic, [dnl
165save_CFLAGS="$CFLAGS"
166CFLAGS="$save_CFLAGS -fPIC -Werror"
167AC_COMPILE_IFELSE([AC_LANG_SOURCE()], ac_cv_fpic=yes, ac_cv_fpic=no)
168CFLAGS="$save_CFLAGS"
169])
170if test "$ac_cv_fpic" = "yes"; then
171 fpic_CFLAGS="-fPIC"
172else
173 fpic_CFLAGS=""
174fi
175AC_SUBST([fpic_CFLAGS])
176
177AC_CACHE_CHECK([whether gcc supports -fPIE], ac_cv_fpie, [dnl
178save_CFLAGS="$CFLAGS"
179CFLAGS="$save_CFLAGS -fPIE -Werror"
180AC_COMPILE_IFELSE([AC_LANG_SOURCE()], ac_cv_fpie=yes, ac_cv_fpie=no)
181CFLAGS="$save_CFLAGS"
182])
183if test "$ac_cv_fpie" = "yes"; then
184 fpie_CFLAGS="-fPIE"
185else
186 fpie_CFLAGS=""
187fi
188AC_SUBST([fpie_CFLAGS])
189
190dso_LDFLAGS="-shared"
191
192ZDEFS_LDFLAGS="-Wl,-z,defs"
193AC_CACHE_CHECK([whether gcc supports $ZDEFS_LDFLAGS], ac_cv_zdefs, [dnl
194save_LDFLAGS="$LDFLAGS"
195LDFLAGS="$ZDEFS_LDFLAGS $save_LDFLAGS"
196AC_LINK_IFELSE([AC_LANG_PROGRAM()], ac_cv_zdefs=yes, ac_cv_zdefs=no)
197LDFLAGS="$save_LDFLAGS"
198])
199if test "$ac_cv_zdefs" = "yes"; then
200 dso_LDFLAGS="$dso_LDFLAGS $ZDEFS_LDFLAGS"
201fi
202
Mark Wielaardcf1b5fe2019-12-06 17:20:00 +0100203# We really want build-ids. Warn and force generating them if gcc was
204# configure without --enable-linker-build-id
205AC_CACHE_CHECK([whether the compiler generates build-ids], ac_cv_buildid, [dnl
Sergei Trofimovich9698a392020-06-14 20:28:07 +0100206AC_LINK_IFELSE([AC_LANG_PROGRAM()],[ac_cv_buildid=yes; $READELF -n conftest$EXEEXT | grep -q NT_GNU_BUILD_ID || ac_cv_buildid=no],AC_MSG_FAILURE([unexpected compile failure]))])
Mark Wielaardcf1b5fe2019-12-06 17:20:00 +0100207if test "$ac_cv_buildid" = "no"; then
208 AC_MSG_WARN([compiler doesn't generate build-id by default])
209 LDFLAGS="$LDFLAGS -Wl,--build-id"
210fi
211
Ulf Hermann07737582017-08-18 12:41:11 +0200212ZRELRO_LDFLAGS="-Wl,-z,relro"
213AC_CACHE_CHECK([whether gcc supports $ZRELRO_LDFLAGS], ac_cv_zrelro, [dnl
214save_LDFLAGS="$LDFLAGS"
215LDFLAGS="$ZRELRO_LDFLAGS $save_LDFLAGS"
216AC_LINK_IFELSE([AC_LANG_PROGRAM()], ac_cv_zrelro=yes, ac_cv_zrelro=no)
217LDFLAGS="$save_LDFLAGS"
218])
219if test "$ac_cv_zrelro" = "yes"; then
220 dso_LDFLAGS="$dso_LDFLAGS $ZRELRO_LDFLAGS"
221fi
222
223AC_SUBST([dso_LDFLAGS])
224
Roland McGrath81817392009-01-23 03:23:02 -0800225AC_CACHE_CHECK([for __thread support], ac_cv_tls, [dnl
Roland McGrathe72bf152009-01-23 14:27:39 -0800226# Use the same flags that we use for our DSOs, so the test is representative.
227# Some old compiler/linker/libc combinations fail some ways and not others.
228save_CFLAGS="$CFLAGS"
229save_LDFLAGS="$LDFLAGS"
Ulf Hermann07737582017-08-18 12:41:11 +0200230CFLAGS="$fpic_CFLAGS $CFLAGS"
231LDFLAGS="$dso_LDFLAGS $LDFLAGS"
Roland McGrath81817392009-01-23 03:23:02 -0800232AC_LINK_IFELSE([dnl
Mark Wielaard0a35e3a2015-03-13 23:51:40 +0100233AC_LANG_PROGRAM([[#include <stdlib.h>
234#undef __thread
Roland McGrathe72bf152009-01-23 14:27:39 -0800235static __thread int a; int foo (int b) { return a + b; }]],
Roland McGrath81817392009-01-23 03:23:02 -0800236 [[exit (foo (0));]])],
Roland McGrathe72bf152009-01-23 14:27:39 -0800237 ac_cv_tls=yes, ac_cv_tls=no)
238CFLAGS="$save_CFLAGS"
239LDFLAGS="$save_LDFLAGS"])
Ulrich Drepper7e678fa2009-01-10 18:02:05 -0800240AS_IF([test "x$ac_cv_tls" != xyes],
Roland McGrath81817392009-01-23 03:23:02 -0800241 AC_MSG_ERROR([__thread support required]))
Ulrich Drepper7e678fa2009-01-10 18:02:05 -0800242
Jonathon Anderson77b66a72019-08-25 10:01:51 -0500243dnl Before 4.9 gcc doesn't ship stdatomic.h, but the nessesary atomics are
244dnl available by (at least) 4.7. So if the system doesn't have a stdatomic.h we
245dnl fall back on one copied from FreeBSD that handles the difference.
246AC_CACHE_CHECK([whether gcc provides stdatomic.h], ac_cv_has_stdatomic,
247 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <stdatomic.h>]])],
248 ac_cv_has_stdatomic=yes, ac_cv_has_stdatomic=no)])
249AM_CONDITIONAL(HAVE_STDATOMIC_H, test "x$ac_cv_has_stdatomic" = xyes)
250AS_IF([test "x$ac_cv_has_stdatomic" = xyes], [AC_DEFINE(HAVE_STDATOMIC_H)])
251
252AH_TEMPLATE([HAVE_STDATOMIC_H], [Define to 1 if `stdatomic.h` is provided by the
253 system, 0 otherwise.])
254
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000255dnl This test must come as early as possible after the compiler configuration
256dnl tests, because the choice of the file model can (in principle) affect
257dnl whether functions and headers are available, whether they work, etc.
258AC_SYS_LARGEFILE
259
Mark Wielaardee225022016-11-23 20:51:35 +0100260dnl Older glibc had a broken fts that didn't work with Large File Systems.
261dnl We want the version that can handler LFS, but include workaround if we
262dnl get a bad one. Add define to CFLAGS (not AC_DEFINE it) since we need to
263dnl check it before including config.h (which might define _FILE_OFFSET_BITS).
264AC_CACHE_CHECK([whether fts.h is bad when included (with LFS)], ac_cv_bad_fts,
265 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <fts.h>]])],
266 ac_cv_bad_fts=no, ac_cv_bad_fts=yes)])
Mark Wielaardad7036f2020-07-18 01:53:29 +0200267AS_IF([test "x$ac_cv_bad_fts" = "xyes"],
268 [CFLAGS="$CFLAGS -DBAD_FTS=1" CXXFLAGS="$CXXFLAGS -DBAD_FTS=1"])
Mark Wielaardee225022016-11-23 20:51:35 +0100269
Mark Wielaard01b994e2017-02-09 21:09:54 +0100270# See if we can add -D_FORTIFY_SOURCE=2. Don't do it if it is already
271# (differently) defined or if it generates warnings/errors because we
272# don't use the right optimisation level (string.h will warn about that).
273AC_MSG_CHECKING([whether to add -D_FORTIFY_SOURCE=2 to CFLAGS])
274case "$CFLAGS" in
275 *-D_FORTIFY_SOURCE=2*)
276 AC_MSG_RESULT([no, already there])
277 ;;
278 *)
279 save_CFLAGS="$CFLAGS"
Omar Sandovalc435a332019-12-11 16:23:27 -0800280 CFLAGS="-D_FORTIFY_SOURCE=2 $CFLAGS -Werror"
Mark Wielaard01b994e2017-02-09 21:09:54 +0100281 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
282 #include <string.h>
283 int main() { return 0; }
284 ]])], [ AC_MSG_RESULT([yes])
285 CFLAGS="-D_FORTIFY_SOURCE=2 $save_CFLAGS" ],
286 [ AC_MSG_RESULT([no])
287 CFLAGS="$save_CFLAGS"])
288 ;;
289esac
290
Ulrich Drepper3cbdd382008-01-02 17:44:39 +0000291dnl enable debugging of branch prediction.
Ulrich Drepper28a0c612008-01-21 18:57:48 +0000292AC_ARG_ENABLE([debugpred],
Ulrich Drepperdb12f162009-09-21 08:04:38 -0700293AS_HELP_STRING([--enable-debugpred],[build binaries with support to debug branch prediction]),
Mike Frysinger8f3002e2011-10-08 15:09:15 -0700294[use_debugpred=$enableval], [use_debugpred=no])
295case $use_debugpred in
Mark Wielaard7702a3c2015-05-01 09:23:57 +0200296 yes) use_debugpred_val=1 ;;
297 *) use_debugpred_val=0 ;;
Mike Frysinger8f3002e2011-10-08 15:09:15 -0700298esac
Mark Wielaard7702a3c2015-05-01 09:23:57 +0200299AC_SUBST([DEBUGPRED], $use_debugpred_val)
Ulrich Drepper3cbdd382008-01-02 17:44:39 +0000300
301dnl Enable gprof suport.
Ulrich Drepper47be7952005-08-07 04:41:39 +0000302AC_ARG_ENABLE([gprof],
Mike Frysinger8f3002e2011-10-08 15:09:15 -0700303AS_HELP_STRING([--enable-gprof],[build binaries with gprof support]), [use_gprof=$enableval], [use_gprof=no])
Ulrich Drepper47be7952005-08-07 04:41:39 +0000304if test "$use_gprof" = yes; then
305 CFLAGS="$CFLAGS -pg"
306 LDFLAGS="$LDFLAGS -pg"
307fi
308AM_CONDITIONAL(GPROF, test "$use_gprof" = yes)
Ulrich Drepperfbe998a2005-08-29 16:27:10 +0000309
310# Enable gcov suport.
311AC_ARG_ENABLE([gcov],
Mike Frysinger8f3002e2011-10-08 15:09:15 -0700312AS_HELP_STRING([--enable-gcov],[build binaries with gcov support]), [use_gcov=$enableval], [use_gcov=no])
Ulrich Drepperfbe998a2005-08-29 16:27:10 +0000313if test "$use_gcov" = yes; then
314 CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
Mark Wielaard3f81dbd2019-11-26 08:56:44 +0100315 CXXFLAGS="$CXXFLAGS -fprofile-arcs -ftest-coverage"
Ulrich Drepperfbe998a2005-08-29 16:27:10 +0000316 LDFLAGS="$LDFLAGS -fprofile-arcs"
317fi
Ulrich Drepper39cec7a2005-08-30 01:22:01 +0000318AM_CONDITIONAL(GCOV, test "$use_gcov" = yes)
Ulrich Drepperfbe998a2005-08-29 16:27:10 +0000319
Mark Wielaard2b250b72015-05-21 23:36:51 +0200320AC_ARG_ENABLE([sanitize-undefined],
321 AS_HELP_STRING([--enable-sanitize-undefined],
322 [Use gcc undefined behaviour sanitizer]),
323 [use_undefined=$enableval], [use_undefined=no])
324if test "$use_undefined" = yes; then
325 old_CFLAGS="$CFLAGS"
326 old_CXXFLAGS="$CXXFLAGS"
327 # We explicitly use unaligned access when possible (see ALLOW_UNALIGNED)
328 # We want to fail immediately on first error, don't try to recover.
Mark Wielaard170f1bb2015-05-31 22:37:19 +0200329 CFLAGS="$CFLAGS -fsanitize=undefined -fno-sanitize-recover"
330 CXXFLAGS="$CXXFLAGS -fsanitize=undefined -fno-sanitize-recover"
331 AC_LINK_IFELSE([AC_LANG_SOURCE([int main (int argc, char **argv) { return 0; }])], use_undefined=yes, use_undefined=no)
Mark Wielaard2b250b72015-05-21 23:36:51 +0200332 AS_IF([test "x$use_undefined" != xyes],
333 AC_MSG_WARN([gcc undefined behaviour sanitizer not available])
334 CFLAGS="$old_CFLAGS" CXXFLAGS="$old_CXXFLAGS")
335fi
Mark Wielaard170f1bb2015-05-31 22:37:19 +0200336case $use_undefined in
337 yes) check_undefined_val=1 ;;
338 *) check_undefined_val=0 ;;
339esac
340AC_DEFINE_UNQUOTED(CHECK_UNDEFINED, $check_undefined_val,
341 [Building with -fsanitize=undefined or not])
Mark Wielaard2b250b72015-05-21 23:36:51 +0200342
Mark Wielaarde3e3ee22012-10-01 16:14:12 +0200343AC_ARG_ENABLE([valgrind],
344AS_HELP_STRING([--enable-valgrind],[run all tests under valgrind]),
345[use_valgrind=$enableval], [use_valgrind=no])
346if test "$use_valgrind" = yes; then
347 AC_CHECK_PROG(HAVE_VALGRIND, valgrind, yes, no)
348 if test "$HAVE_VALGRIND" = "no"; then
349 AC_MSG_ERROR([valgrind not found])
350 fi
351fi
352AM_CONDITIONAL(USE_VALGRIND, test "$use_valgrind" = yes)
353
Jonathon Anderson5e2a8e22019-08-25 09:53:50 -0500354AC_ARG_WITH([valgrind],
355AS_HELP_STRING([--with-valgrind],[include directory for Valgrind headers]),
356[with_valgrind_headers=$withval], [with_valgrind_headers=no])
357if test "x$with_valgrind_headers" != xno; then
358 save_CFLAGS="$CFLAGS"
359 CFLAGS="$CFLAGS -I$with_valgrind_headers"
360 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
361 #include <valgrind/valgrind.h>
362 int main() { return 0; }
363 ]])], [ HAVE_VALGRIND_HEADERS="yes"
364 CFLAGS="$save_CFLAGS -I$with_valgrind_headers" ],
365 [ AC_MSG_ERROR([invalid valgrind include directory: $with_valgrind_headers]) ])
366fi
367
368AC_ARG_ENABLE([valgrind-annotations],
369AS_HELP_STRING([--enable-valgrind-annotations],[insert extra annotations for better valgrind support]),
370[use_vg_annotations=$enableval], [use_vg_annotations=no])
371if test "$use_vg_annotations" = yes; then
372 if test "x$HAVE_VALGRIND_HEADERS" != "xyes"; then
373 AC_MSG_CHECKING([whether Valgrind headers are available])
374 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
375 #include <valgrind/valgrind.h>
376 int main() { return 0; }
377 ]])], [ AC_MSG_RESULT([yes]) ],
378 [ AC_MSG_ERROR([valgrind annotations requested but no headers are available]) ])
379 fi
380fi
381AM_CONDITIONAL(USE_VG_ANNOTATIONS, test "$use_vg_annotations" = yes)
382
Mark Wielaardb63007e2019-01-18 14:18:22 +0100383AC_ARG_ENABLE([install-elfh],
384AS_HELP_STRING([--enable-install-elfh],[install elf.h in include dir]),
385 [install_elfh=$enableval], [install_elfh=no])
386AM_CONDITIONAL(INSTALL_ELFH, test "$install_elfh" = yes)
387
Ulrich Drepper47be7952005-08-07 04:41:39 +0000388AM_CONDITIONAL(BUILD_STATIC, [dnl
Mark Wielaard32324792014-04-13 17:39:57 +0200389test "$use_gprof" = yes -o "$use_gcov" = yes])
Ulrich Drepper47be7952005-08-07 04:41:39 +0000390
Roland McGrath1b8b4462005-11-16 01:33:38 +0000391AC_ARG_ENABLE([tests-rpath],
Ulrich Drepperdb12f162009-09-21 08:04:38 -0700392AS_HELP_STRING([--enable-tests-rpath],[build $ORIGIN-using rpath into tests]),
Mike Frysinger8f3002e2011-10-08 15:09:15 -0700393 [tests_use_rpath=$enableval], [tests_use_rpath=no])
Roland McGrath1b8b4462005-11-16 01:33:38 +0000394AM_CONDITIONAL(TESTS_RPATH, test "$tests_use_rpath" = yes)
395
Mark Wielaard528cb452015-10-16 23:07:12 +0200396dnl zlib is mandatory.
Roland McGrathbca43152009-01-05 23:59:32 -0800397save_LIBS="$LIBS"
398LIBS=
Roland McGrath24169642009-08-26 02:26:34 -0700399eu_ZIPLIB(zlib,ZLIB,z,gzdirect,gzip)
Mike Frysinger2d703bf2016-01-14 13:46:18 -0500400AS_IF([test "x$with_zlib" = xno], [AC_MSG_ERROR([zlib not found but is required])])
Mark Wielaard528cb452015-10-16 23:07:12 +0200401LIBS="$save_LIBS"
402
Mark Wielaard52536d72020-09-18 12:49:29 +0200403dnl Test for bzlib and xz/lzma/zstd, gives BZLIB/LZMALIB/ZSTD .am
404dnl conditional and config.h USE_BZLIB/USE_LZMALIB/USE_ZSTD #define.
Mark Wielaard528cb452015-10-16 23:07:12 +0200405save_LIBS="$LIBS"
406LIBS=
Roland McGrath24169642009-08-26 02:26:34 -0700407eu_ZIPLIB(bzlib,BZLIB,bz2,BZ2_bzdopen,bzip2)
Mark Wielaard0aa60ac2016-01-04 21:41:52 +0100408# We need this since bzip2 doesn't have a pkgconfig file.
409BZ2_LIB="$LIBS"
410AC_SUBST([BZ2_LIB])
Roland McGrath24169642009-08-26 02:26:34 -0700411eu_ZIPLIB(lzma,LZMA,lzma,lzma_auto_decoder,[LZMA (xz)])
Mark Wielaard0aa60ac2016-01-04 21:41:52 +0100412AS_IF([test "x$with_lzma" = xyes], [LIBLZMA="liblzma"], [LIBLZMA=""])
413AC_SUBST([LIBLZMA])
Mark Wielaard52536d72020-09-18 12:49:29 +0200414eu_ZIPLIB(zstd,ZSTD,zstd,ZSTD_decompress,[ZSTD (zst)])
415AS_IF([test "x$with_zstd" = xyes], [LIBZSTD="libzstd"], [LIBLZSTD=""])
416AC_SUBST([LIBZSTD])
Roland McGrathbca43152009-01-05 23:59:32 -0800417zip_LIBS="$LIBS"
418LIBS="$save_LIBS"
419AC_SUBST([zip_LIBS])
420
Akihiko Odakia24d52a2016-10-13 09:16:48 +0900421AC_CHECK_DECLS([memrchr, rawmemchr],[],[],
422 [#define _GNU_SOURCE
423 #include <string.h>])
424AC_CHECK_DECLS([powerof2],[],[],[#include <sys/param.h>])
Ulf Hermannb3248e62017-02-16 10:10:30 +0100425AC_CHECK_DECLS([mempcpy],[],[],
426 [#define _GNU_SOURCE
427 #include <string.h>])
Akihiko Odakia24d52a2016-10-13 09:16:48 +0900428
Mark Wielaardafffdff2018-03-18 00:24:08 +0100429AC_CHECK_FUNCS([process_vm_readv])
430
Ulrich Drepperb4a16cf2011-10-02 08:33:19 -0400431AC_CHECK_LIB([stdc++], [__cxa_demangle], [dnl
432AC_DEFINE([USE_DEMANGLE], [1], [Defined if demangling is enabled])])
Max Filippov1ce4a452015-05-03 21:14:09 +0300433AM_CONDITIONAL(DEMANGLE, test "x$ac_cv_lib_stdcpp___cxa_demangle" = "xyes")
434AS_IF([test "x$ac_cv_lib_stdcpp___cxa_demangle" = "xyes"],
Mark Wielaarde6e80da2015-05-01 10:31:36 +0200435 [enable_demangler=yes],[enable_demangler=no])
Ulrich Drepperb4a16cf2011-10-02 08:33:19 -0400436
Mark Wielaard805ec832014-11-27 23:53:30 +0100437AC_ARG_ENABLE([textrelcheck],
438AS_HELP_STRING([--disable-textrelcheck],
439 [Disable textrelcheck being a fatal error]))
440AM_CONDITIONAL(FATAL_TEXTREL, [test "x$enable_textrelcheck" != "xno"])
Mark Wielaard7702a3c2015-05-01 09:23:57 +0200441AS_IF([test "x$enable_textrelcheck" != "xno"],
442 [enable_textrelcheck=yes],[enable_textrelcheck=no])
Mark Wielaard805ec832014-11-27 23:53:30 +0100443
Max Filippovbafacac2015-04-23 20:46:59 +0200444AC_ARG_ENABLE([symbol-versioning],
445AS_HELP_STRING([--disable-symbol-versioning],
446 [Disable symbol versioning in shared objects]))
Ulf Hermann4a3330a2017-08-18 15:50:42 +0200447
448AC_CACHE_CHECK([whether symbol versioning is supported], ac_cv_symbol_versioning, [dnl
449AC_COMPILE_IFELSE([AC_LANG_SOURCE([dnl
450#define NEW_VERSION(name, version) \
451 asm (".symver " #name "," #name "@@@" #version);
452int foo(int x) { return x + 1; }
453NEW_VERSION (foo, ELFUTILS_12.12)
454])], ac_cv_symbol_versioning=yes, ac_cv_symbol_versioning=no)])
455if test "$ac_cv_symbol_versioning" = "no"; then
456 if test "x$enable_symbol_versioning" != "xno"; then
457 AC_MSG_ERROR([Symbol versioning is not supported.
458 Use --disable-symbol-versioning to build without.])
459 fi
460fi
461
Max Filippovbafacac2015-04-23 20:46:59 +0200462AM_CONDITIONAL(SYMBOL_VERSIONING, [test "x$enable_symbol_versioning" != "xno"])
463AS_IF([test "x$enable_symbol_versioning" = "xno"],
Mark Wielaard7702a3c2015-05-01 09:23:57 +0200464 [AC_MSG_WARN([Disabling symbol versioning breaks ABI compatibility.])
465 enable_symbol_versioning=no],[enable_symbol_versioning=yes])
Max Filippovbafacac2015-04-23 20:46:59 +0200466
Mark Wielaard4b7953d2015-06-09 00:28:13 +0200467AC_CACHE_CHECK([whether gcc accepts -Wstack-usage], ac_cv_stack_usage, [dnl
468old_CFLAGS="$CFLAGS"
Filipe Brandenburger239cd482016-05-02 13:26:13 -0700469CFLAGS="$CFLAGS -Wstack-usage=262144 -Werror"
Mark Wielaard4b7953d2015-06-09 00:28:13 +0200470AC_COMPILE_IFELSE([AC_LANG_SOURCE([])],
471 ac_cv_stack_usage=yes, ac_cv_stack_usage=no)
472CFLAGS="$old_CFLAGS"])
473AM_CONDITIONAL(ADD_STACK_USAGE_WARNING, [test "x$ac_cv_stack_usage" != "xno"])
474
Mark Wielaard8bc14232016-02-09 16:10:22 +0100475# -Wlogical-op was too fragile in the past, make sure we get a sane one.
476AC_CACHE_CHECK([whether gcc has a sane -Wlogical-op], ac_cv_logical_op, [dnl
477old_CFLAGS="$CFLAGS"
478CFLAGS="$CFLAGS -Wlogical-op -Werror"
479AC_COMPILE_IFELSE([AC_LANG_SOURCE(
480 [#define FLAG 1
481 int f (int r, int f) { return (r && (FLAG || (FLAG & f))); }])],
482 ac_cv_logical_op=yes, ac_cv_logical_op=no)
483CFLAGS="$old_CFLAGS"])
484AM_CONDITIONAL(SANE_LOGICAL_OP_WARNING,
485 [test "x$ac_cv_logical_op" != "xno"])
486
487# -Wduplicated-cond was added by GCC6
488AC_CACHE_CHECK([whether gcc accepts -Wduplicated-cond], ac_cv_duplicated_cond, [dnl
489old_CFLAGS="$CFLAGS"
Filipe Brandenburger239cd482016-05-02 13:26:13 -0700490CFLAGS="$CFLAGS -Wduplicated-cond -Werror"
Mark Wielaard8bc14232016-02-09 16:10:22 +0100491AC_COMPILE_IFELSE([AC_LANG_SOURCE([])],
492 ac_cv_duplicated_cond=yes, ac_cv_duplicated_cond=no)
493CFLAGS="$old_CFLAGS"])
494AM_CONDITIONAL(HAVE_DUPLICATED_COND_WARNING,
495 [test "x$ac_cv_duplicated_cond" != "xno"])
496
Mark Wielaard6993d402016-02-13 19:10:00 +0100497# -Wnull-dereference was added by GCC6
498AC_CACHE_CHECK([whether gcc accepts -Wnull-dereference], ac_cv_null_dereference, [dnl
499old_CFLAGS="$CFLAGS"
Filipe Brandenburger239cd482016-05-02 13:26:13 -0700500CFLAGS="$CFLAGS -Wnull-dereference -Werror"
Mark Wielaard6993d402016-02-13 19:10:00 +0100501AC_COMPILE_IFELSE([AC_LANG_SOURCE([])],
502 ac_cv_null_dereference=yes, ac_cv_null_dereference=no)
503CFLAGS="$old_CFLAGS"])
504AM_CONDITIONAL(HAVE_NULL_DEREFERENCE_WARNING,
505 [test "x$ac_cv_null_dereference" != "xno"])
506
Mark Wielaarda3cc8182016-11-02 13:29:26 +0100507# -Wimplicit-fallthrough was added by GCC7
508AC_CACHE_CHECK([whether gcc accepts -Wimplicit-fallthrough], ac_cv_implicit_fallthrough, [dnl
509old_CFLAGS="$CFLAGS"
510CFLAGS="$CFLAGS -Wimplicit-fallthrough -Werror"
511AC_COMPILE_IFELSE([AC_LANG_SOURCE([])],
512 ac_cv_implicit_fallthrough=yes, ac_cv_implicit_fallthrough=no)
513CFLAGS="$old_CFLAGS"])
514AM_CONDITIONAL(HAVE_IMPLICIT_FALLTHROUGH_WARNING,
515 [test "x$ac_cv_implicit_fallthrough" != "xno"])
516
Joshua Watt555e15e2018-02-09 10:27:18 -0600517# Assume the fallthrough attribute is supported if -Wimplict-fallthrough is supported
518if test "$ac_cv_implicit_fallthrough" = "yes"; then
519 AC_DEFINE([HAVE_FALLTHROUGH], [1],
520 [Defined if __attribute__((fallthrough)) is supported])
521fi
522
Anthony G. Basile1ab3c2b2015-05-04 02:25:39 +0300523dnl Check if we have argp available from our libc
524AC_LINK_IFELSE(
525 [AC_LANG_PROGRAM(
526 [#include <argp.h>],
Filipe Brandenburgerafeccd42016-05-02 12:18:47 -0700527 [int argc=1; char *argv[]={"test"}; argp_parse(0,argc,&argv,0,0,0); return 0;]
Anthony G. Basile1ab3c2b2015-05-04 02:25:39 +0300528 )],
529 [libc_has_argp="true"],
530 [libc_has_argp="false"]
531)
532
533dnl If our libc doesn't provide argp, then test for libargp
534if test "$libc_has_argp" = "false" ; then
535 AC_MSG_WARN("libc does not have argp")
536 AC_CHECK_LIB([argp], [argp_parse], [have_argp="true"], [have_argp="false"])
537
538 if test "$have_argp" = "false"; then
539 AC_MSG_ERROR("no libargp found")
540 else
541 argp_LDADD="-largp"
542 fi
543else
544 argp_LDADD=""
545fi
546AC_SUBST([argp_LDADD])
547
Érico Rolimda855fc2020-11-01 21:48:50 -0300548saved_LIBS="$LIBS"
549AC_SEARCH_LIBS([fts_close], [fts])
550LIBS="$saved_LIBS"
551case "$ac_cv_search_fts_close" in
552 no) AC_MSG_FAILURE([failed to find fts_close]) ;;
553 -l*) fts_LIBS="$ac_cv_search_fts_close" ;;
554 *) fts_LIBS= ;;
555esac
556AC_SUBST([fts_LIBS])
557
558saved_LIBS="$LIBS"
559AC_SEARCH_LIBS([_obstack_free], [obstack])
560LIBS="$saved_LIBS"
561case "$ac_cv_search__obstack_free" in
562 no) AC_MSG_FAILURE([failed to find obstack_free]) ;;
563 -l*) obstack_LIBS="$ac_cv_search__obstack_free" ;;
564 *) obstack_LIBS= ;;
565esac
566AC_SUBST([obstack_LIBS])
567
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000568dnl The directories with content.
569
570dnl Documentation.
Ben Woodardf0a51762019-08-23 13:42:06 -0700571AC_CONFIG_FILES([doc/Makefile])
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000572
573dnl Support library.
574AC_CONFIG_FILES([lib/Makefile])
575
576dnl ELF library.
Ulrich Drepper2c9ee4f2007-06-06 02:49:30 +0000577AC_CONFIG_FILES([libelf/Makefile])
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000578
579dnl Higher-level ELF support library.
580AC_CONFIG_FILES([libebl/Makefile])
581
Mark Wielaard93802972014-04-11 23:52:47 +0200582dnl DWARF-ELF Lower-level Functions support library.
583AC_CONFIG_FILES([libdwelf/Makefile])
584
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000585dnl DWARF library.
586AC_CONFIG_FILES([libdw/Makefile])
587
588dnl Higher-level DWARF support library.
589AC_CONFIG_FILES([libdwfl/Makefile])
590
591dnl CPU handling library.
592AC_CONFIG_FILES([libcpu/Makefile])
593
594dnl Assembler library.
Roland McGrathd7f8d0c2005-11-17 02:32:03 +0000595AM_CONDITIONAL(HAVE_LIBASM, true)dnl Used in tests/Makefile.am, which see.
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000596AC_CONFIG_FILES([libasm/Makefile])
597
Roland McGrathe47ab762005-11-17 03:16:00 +0000598dnl CPU-specific backend libraries.
599AC_CONFIG_FILES([backends/Makefile])
600
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000601dnl Tools.
602AC_CONFIG_FILES([src/Makefile po/Makefile.in])
603
604dnl Test suite.
Roland McGrathd7f8d0c2005-11-17 02:32:03 +0000605AM_CONDITIONAL(STANDALONE, false)dnl Used in tests/Makefile.am, which see.
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000606AC_CONFIG_FILES([tests/Makefile])
607
Mark Wielaard0aa60ac2016-01-04 21:41:52 +0100608dnl pkgconfig files
Aaron Merey288f6b12019-10-28 13:29:26 -0400609AC_CONFIG_FILES([config/libelf.pc config/libdw.pc config/libdebuginfod.pc])
Mark Wielaard0aa60ac2016-01-04 21:41:52 +0100610
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000611# Get the definitions necessary to create the Makefiles in the po
612# subdirectories. This is a small subset of the gettext rules.
613AC_SUBST(USE_NLS, yes)
614AM_PO_SUBDIRS
615
Roland McGrathb4d6f0f2008-08-25 22:55:17 +0000616dnl Appended to the config.h file.
617dnl We hide all kinds of configuration magic in lib/eu-config.h.
618AH_BOTTOM([#include <eu-config.h>])
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000619
Roland McGrathfbc72452008-12-16 17:03:03 -0800620dnl Version compatibility header.
621AC_CONFIG_FILES([version.h:config/version.h.in])
622AC_SUBST([eu_version])
Roland McGrathee9d60d2009-04-17 13:18:35 -0700623
624# 1.234<whatever> -> 1234<whatever>
625case "$PACKAGE_VERSION" in
Roland McGrathe9bf1d32011-10-08 15:14:30 -0700626[[0-9]].*) eu_version=`echo "$PACKAGE_VERSION" | sed 's@\.@@'` ;;
Roland McGrathee9d60d2009-04-17 13:18:35 -0700627*) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
628esac
629case "$eu_version" in
630*.*)
631 # 1234.567 -> "1234", "567"
632 eu_extra_version="${eu_version#*.}"
633 eu_version="${eu_version%%.*}"
634 case "$eu_extra_version" in
635 [[0-9]][[0-9]][[0-9]]) ;;
636 [[0-9]][[0-9]]) eu_extra_version="${eu_extra_version}0" ;;
637 [[0-9]]) eu_extra_version="${eu_extra_version}00" ;;
638 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
639 esac
640 ;;
641*)
642 eu_extra_version=000
643 ;;
644esac
645
646case "$eu_version" in
647 0[[0-9]][[0-9]][[0-9]]) eu_version="${eu_version#0}$eu_extra_version" ;;
648[[0-9]][[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}$eu_extra_version" ;;
649[[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}0$eu_extra_version" ;;
Ulrich Drepper2c712522010-06-28 12:10:53 -0700650[[0-9]][[0-9]]) eu_version="${eu_version}00$eu_extra_version";;
Roland McGrathee9d60d2009-04-17 13:18:35 -0700651*) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
Roland McGrathfbc72452008-12-16 17:03:03 -0800652esac
653
Roland McGrath105e3982009-04-19 16:07:45 -0700654# Round up to the next release API (x.y) version.
Roland McGrathe9bf1d32011-10-08 15:14:30 -0700655eu_version=$(( (eu_version + 999) / 1000 ))
Roland McGrath105e3982009-04-19 16:07:45 -0700656
Jan Kratochvil0b867462013-05-30 14:37:38 +0200657AC_CHECK_SIZEOF(long)
658
Kyle McMartinc1e0fcb2014-06-09 21:06:26 +0200659# On aarch64 before glibc 2.20 we would get the kernel user_pt_regs instead
660# of the user_regs_struct from sys/user.h. They are structurally the same
661# but we get either one or the other.
662AC_CHECK_TYPE([struct user_regs_struct],
663 [sys_user_has_user_regs=yes], [sys_user_has_user_regs=no],
664 [[#include <sys/ptrace.h>]
665 [#include <sys/time.h>]
666 [#include <sys/user.h>]])
667if test "$sys_user_has_user_regs" = "yes"; then
668 AC_DEFINE(HAVE_SYS_USER_REGS, 1,
669 [Define to 1 if <sys/user.h> defines struct user_regs_struct])
670fi
671
Jan Kratochvil0b867462013-05-30 14:37:38 +0200672# On a 64-bit host where can can use $CC -m32, we'll run two sets of tests.
673# Likewise in a 32-bit build on a host where $CC -m64 works.
674utrace_BIARCH
675# `$utrace_biarch' will be `-m64' even on an uniarch i386 machine.
Jan Kratochvil8ae9bc92013-12-02 20:54:28 +0100676CC_BIARCH="$CC $utrace_biarch"
Jan Kratochvil0b867462013-05-30 14:37:38 +0200677AC_SUBST([CC_BIARCH])
678
Mark Wielaard4664fd52015-05-30 22:50:37 +0200679# In maintainer mode we really need flex and bison.
680# Otherwise we really need a release dir with maintainer files generated.
681if test "x$enable_maintainer_mode" = xyes; then
682 AC_CHECK_PROG(HAVE_FLEX, flex, yes, no)
683 if test "$HAVE_FLEX" = "no"; then
684 AC_MSG_ERROR([flex needed in maintainer mode])
685 fi
686 AC_CHECK_PROG(HAVE_BISON, bison, yes, no)
687 if test "$HAVE_BISON" = "no"; then
688 AC_MSG_ERROR([bison needed in maintainer mode])
689 fi
Ross Burtond6126842018-07-04 12:11:07 +0100690 AC_CHECK_PROG(HAVE_GAWK, gawk, yes, no)
691 if test "$HAVE_GAWK" = "no"; then
692 AC_MSG_ERROR([gawk needed in maintainer mode])
693 fi
Mark Wielaard4664fd52015-05-30 22:50:37 +0200694else
695 if test ! -f ${srcdir}/libdw/known-dwarf.h; then
696 AC_MSG_ERROR([No libdw/known-dwarf.h. configure --enable-maintainer-mode])
697 fi
698fi
699
700# The testfiles are all compressed, we need bunzip2 when running make check
701AC_CHECK_PROG(HAVE_BUNZIP2, bunzip2, yes, no)
702if test "$HAVE_BUNZIP2" = "no"; then
703 AC_MSG_WARN([No bunzip2, needed to run make check])
704fi
705
Mark Wielaard52536d72020-09-18 12:49:29 +0200706# For tests that need to use zstd compression
707AC_CHECK_PROG(HAVE_ZSTD, zstd, yes, no)
708AM_CONDITIONAL([HAVE_ZSTD],[test "x$HAVE_ZSTD" = "xyes"])
709
Mark Wielaardf7f0cdc2020-06-19 19:41:08 +0200710# Look for libcurl for libdebuginfod minimum version as per rhel7.
711AC_ARG_ENABLE([libdebuginfod],AC_HELP_STRING([--enable-libdebuginfod], [Build debuginfod client library (can be =dummy)]))
712AS_IF([test "x$enable_libdebuginfod" != "xno"], [
713 if test "x$enable_libdebuginfod" != "xdummy"; then
714 AC_MSG_NOTICE([checking libdebuginfod dependencies, --disable-libdebuginfod or --enable-libdebuginfo=dummy to skip])
715 enable_libdebuginfod=yes # presume success
716 PKG_PROG_PKG_CONFIG
717 PKG_CHECK_MODULES([libcurl],[libcurl >= 7.29.0],[],[enable_libdebuginfod=no])
718 if test "x$enable_libdebuginfod" = "xno"; then
719 AC_MSG_ERROR([dependencies not found, use --disable-libdebuginfod to disable or --enable-libdebuginfod=dummy to build a (bootstrap) dummy library.])
720 fi
721 else
722 AC_MSG_NOTICE([building (bootstrap) dummy libdebuginfo library])
723 fi
724])
725
Dmitry V. Levin4ced3012020-08-20 23:27:24 +0300726AS_IF([test "x$enable_libdebuginfod" = "xyes" || test "x$enable_libdebuginfod" = "xdummy"],
727 [AC_DEFINE([ENABLE_LIBDEBUGINFOD], [1], [Enable libdebuginfod])])
728AS_IF([test "x$enable_libdebuginfod" = "xdummy"],
729 [AC_DEFINE([DUMMY_LIBDEBUGINFOD], [1], [Build dummy libdebuginfod])])
Mark Wielaardf7f0cdc2020-06-19 19:41:08 +0200730AM_CONDITIONAL([LIBDEBUGINFOD],[test "x$enable_libdebuginfod" = "xyes" || test "x$enable_libdebuginfod" = "xdummy"])
731AM_CONDITIONAL([DUMMY_LIBDEBUGINFOD],[test "x$enable_libdebuginfod" = "xdummy"])
732
733# Look for libmicrohttpd, libarchive, sqlite for debuginfo server
734# minimum versions as per rhel7.
735AC_ARG_ENABLE([debuginfod],AC_HELP_STRING([--enable-debuginfod], [Build debuginfod server]))
Frank Ch. Eiglere27e30c2019-10-28 13:29:26 -0400736AC_PROG_CXX
Frank Ch. Eiglere27e30c2019-10-28 13:29:26 -0400737AS_IF([test "x$enable_debuginfod" != "xno"], [
Frank Ch. Eigler14d5b412020-02-03 06:29:31 -0500738 AC_MSG_NOTICE([checking debuginfod C++11 support, --disable-debuginfod to skip])
739 AX_CXX_COMPILE_STDCXX(11, noext, mandatory)
740 AC_MSG_NOTICE([checking debuginfod dependencies, --disable-debuginfod to skip])
Mark Wielaardf7f0cdc2020-06-19 19:41:08 +0200741 if test "x$enable_libdebuginfod" = "xno"; then
742 AC_MSG_ERROR([need libdebuginfod (or dummy), use --disable-debuginfod to disable.])
743 fi
Frank Ch. Eiglere27e30c2019-10-28 13:29:26 -0400744 enable_debuginfod=yes # presume success
745 PKG_PROG_PKG_CONFIG
Frank Ch. Eiglere27e30c2019-10-28 13:29:26 -0400746 PKG_CHECK_MODULES([libmicrohttpd],[libmicrohttpd >= 0.9.33],[],[enable_debuginfod=no])
Frank Ch. Eiglere27e30c2019-10-28 13:29:26 -0400747 PKG_CHECK_MODULES([sqlite3],[sqlite3 >= 3.7.17],[],[enable_debuginfod=no])
748 PKG_CHECK_MODULES([libarchive],[libarchive >= 3.1.2],[],[enable_debuginfod=no])
749 if test "x$enable_debuginfod" = "xno"; then
Frank Ch. Eigler14d5b412020-02-03 06:29:31 -0500750 AC_MSG_ERROR([dependencies not found, use --disable-debuginfod to disable.])
Frank Ch. Eiglere27e30c2019-10-28 13:29:26 -0400751 fi
752])
Aaron Merey288f6b12019-10-28 13:29:26 -0400753
Frank Ch. Eiglere27e30c2019-10-28 13:29:26 -0400754AS_IF([test "x$enable_debuginfod" != "xno"],AC_DEFINE([ENABLE_DEBUGINFOD],[1],[Build debuginfod]))
Aaron Merey288f6b12019-10-28 13:29:26 -0400755AM_CONDITIONAL([DEBUGINFOD],[test "x$enable_debuginfod" = "xyes"])
756
Frank Ch. Eigler94708e92020-10-01 16:56:49 -0400757dnl for /etc/profile.d/elfutils.{csh,sh}
758default_debuginfod_urls=""
759AC_ARG_ENABLE(debuginfod-urls,
760 [AS_HELP_STRING([--enable-debuginfod-urls@<:@=URLS@:>@],[add URLS to profile.d DEBUGINFOD_URLS])],
761 [if test "x${enableval}" = "xyes";
762 then default_debuginfod_urls="https://debuginfod.elfutils.org/";
763 elif test "x${enableval}" != "xno"; then
764 default_debuginfod_urls="${enableval}";
765 fi],
766 [default_debuginfod_urls=""])
767AC_SUBST(DEBUGINFOD_URLS, $default_debuginfod_urls)
768AC_CONFIG_FILES([config/profile.sh config/profile.csh])
Aaron Merey288f6b12019-10-28 13:29:26 -0400769
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000770AC_OUTPUT
Mark Wielaard7702a3c2015-05-01 09:23:57 +0200771
772AC_MSG_NOTICE([
773=====================================================================
774 elfutils: ${PACKAGE_VERSION} (eu_version: ${eu_version})
775=====================================================================
776
777 Prefix : ${prefix}
778 Program prefix ("eu-" recommended) : ${program_prefix}
779 Source code location : ${srcdir}
780 Maintainer mode : ${enable_maintainer_mode}
Mark Wielaard7702a3c2015-05-01 09:23:57 +0200781 build arch : ${ac_cv_build}
782
783 RECOMMENDED FEATURES (should all be yes)
784 gzip support : ${with_zlib}
785 bzip2 support : ${with_bzlib}
786 lzma/xz support : ${with_lzma}
Mark Wielaard52536d72020-09-18 12:49:29 +0200787 zstd support : ${with_zstd}
Mark Wielaarde6e80da2015-05-01 10:31:36 +0200788 libstdc++ demangle support : ${enable_demangler}
Mark Wielaard7702a3c2015-05-01 09:23:57 +0200789 File textrel check : ${enable_textrelcheck}
790 Symbol versioning : ${enable_symbol_versioning}
791
792 NOT RECOMMENDED FEATURES (should all be no)
793 Experimental thread safety : ${use_locks}
Mark Wielaardb63007e2019-01-18 14:18:22 +0100794 install elf.h : ${install_elfh}
Mark Wielaard7702a3c2015-05-01 09:23:57 +0200795
796 OTHER FEATURES
797 Deterministic archives by default : ${default_ar_deterministic}
798 Native language support : ${USE_NLS}
Jonathon Anderson5e2a8e22019-08-25 09:53:50 -0500799 Extra Valgrind annotations : ${use_vg_annotations}
Mark Wielaardf7f0cdc2020-06-19 19:41:08 +0200800 libdebuginfod client support : ${enable_libdebuginfod}
801 Debuginfod server support : ${enable_debuginfod}
Frank Ch. Eigler94708e92020-10-01 16:56:49 -0400802 Default DEBUGINFOD_URLS : ${default_debuginfod_urls}
Mark Wielaard7702a3c2015-05-01 09:23:57 +0200803
804 EXTRA TEST FEATURES (used with make check)
Mark Wielaard4664fd52015-05-30 22:50:37 +0200805 have bunzip2 installed (required) : ${HAVE_BUNZIP2}
Mark Wielaard52536d72020-09-18 12:49:29 +0200806 have zstd installed : ${HAVE_ZSTD}
Mark Wielaard7702a3c2015-05-01 09:23:57 +0200807 debug branch prediction : ${use_debugpred}
808 gprof support : ${use_gprof}
809 gcov support : ${use_gcov}
810 run all tests under valgrind : ${use_valgrind}
Mark Wielaard2b250b72015-05-21 23:36:51 +0200811 gcc undefined behaviour sanitizer : ${use_undefined}
Mark Wielaard7702a3c2015-05-01 09:23:57 +0200812 use rpath in tests : ${tests_use_rpath}
813 test biarch : ${utrace_cv_cc_biarch}
814])
Mark Wielaardb63007e2019-01-18 14:18:22 +0100815
816if test "$install_elfh" = yes; then
817 if test "${prefix}" = "/usr/local" -o "${prefix}" = "/usr"; then
818 AC_MSG_WARN([installing elf.h in ${includedir} might conflict with glibc/system elf.h])
819 fi
820fi