blob: 9a3301f56d7754b067532b5eb09b188611f431ed [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
Mark Wielaard0aa60ac2016-01-04 21:41:52 +01004dnl Copyright (C) 1996-2016 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 Wielaard79300542016-01-08 14:44:49 +010020AC_INIT([elfutils],[0.165],[https://bugzilla.redhat.com/],[elfutils])
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000021
22AC_CONFIG_AUX_DIR([config])
23AC_CONFIG_FILES([config/Makefile])
24
Mark Wielaard0aa60ac2016-01-04 21:41:52 +010025AC_COPYRIGHT([Copyright (C) 1996-2016 Red Hat, Inc.])
Ulrich Drepperdb12f162009-09-21 08:04:38 -070026AC_PREREQ(2.63) dnl Minimum Autoconf version required.
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000027
Roland McGrath9aa8ef72007-05-18 08:59:43 +000028dnl We use GNU make extensions; automake 1.10 defaults to -Wportability.
Mark Wielaard86be7922013-04-26 23:44:25 +020029AM_INIT_AUTOMAKE([gnits 1.11 -Wno-portability dist-bzip2 no-dist-gzip parallel-tests])
Roland McGrathc373d852006-10-10 00:25:21 +000030AM_MAINTAINER_MODE
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000031
Mark Wielaardc04f4912015-10-07 13:37:56 +020032AM_SILENT_RULES([yes])
33
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000034AC_CONFIG_SRCDIR([libelf/libelf.h])
35AC_CONFIG_FILES([Makefile])
36AC_CONFIG_HEADERS([config.h])
37
38AC_CONFIG_MACRO_DIR([m4])
39AC_CONFIG_FILES([m4/Makefile])
40
41dnl The RPM spec file. We substitute a few values in the file.
42AC_CONFIG_FILES([elfutils.spec:config/elfutils.spec.in])
43
44
45AC_CANONICAL_HOST
46
Roland McGrath3284b792012-01-20 12:51:46 -080047AC_ARG_ENABLE(deterministic-archives,
48[AS_HELP_STRING([--enable-deterministic-archives],
49 [ar and ranlib default to -D behavior])], [
50if test "${enableval}" = no; then
51 default_ar_deterministic=false
52else
53 default_ar_deterministic=true
54fi], [default_ar_deterministic=false])
55AC_DEFINE_UNQUOTED(DEFAULT_AR_DETERMINISTIC, $default_ar_deterministic,
56 [Should ar and ranlib use -D behavior by default?])
57
Ulrich Drepper7e678fa2009-01-10 18:02:05 -080058AC_ARG_ENABLE([thread-safety],
Mark Wielaard09c9bb92013-11-06 12:21:32 +010059AS_HELP_STRING([--enable-thread-safety],
60 [enable thread safety of libraries EXPERIMENTAL]),
61 use_locks=$enableval, use_locks=no)
Ulrich Drepper7e678fa2009-01-10 18:02:05 -080062AM_CONDITIONAL(USE_LOCKS, test "$use_locks" = yes)
63AS_IF([test "$use_locks" = yes], [AC_DEFINE(USE_LOCKS)])
Mark Wielaard09c9bb92013-11-06 12:21:32 +010064AS_IF([test "$use_locks" = yes],
65 [AC_MSG_WARN([thread-safety is EXPERIMENTAL tests might fail.])])
Ulrich Drepperd56e2322008-08-16 03:09:13 +000066
Ulrich Drepper7e678fa2009-01-10 18:02:05 -080067AH_TEMPLATE([USE_LOCKS], [Defined if libraries should be thread-safe.])
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000068
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000069AC_PROG_CC
70AC_PROG_RANLIB
71AC_PROG_YACC
72AM_PROG_LEX
Michael Forneya45c8042013-11-01 00:51:04 -070073# Only available since automake 1.12
74m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
75AC_CHECK_TOOL([READELF], [readelf])
76AC_CHECK_TOOL([NM], [nm])
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000077
Mark Wielaardaba6d762015-04-14 10:18:37 +020078# We use -std=gnu99 but have explicit checks for some language constructs
79# and GNU extensions since some compilers claim GNU99 support, but don't
80# really support all language extensions. In particular we need
81# Mixed Declarations and Code
82# https://gcc.gnu.org/onlinedocs/gcc/Mixed-Declarations.html
83# Nested Functions
84# https://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html
85# Arrays of Variable Length
86# https://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html
87AC_CACHE_CHECK([for gcc with GNU99 support], ac_cv_c99, [dnl
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000088old_CFLAGS="$CFLAGS"
89CFLAGS="$CFLAGS -std=gnu99"
Roland McGrathf64e25f2011-02-08 19:36:50 -080090AC_COMPILE_IFELSE([AC_LANG_SOURCE([dnl
Mark Wielaardaba6d762015-04-14 10:18:37 +020091int foo (int a)
92{
93 for (int i = 0; i < a; ++i) if (i % 4) break; int s = a; return s;
94}
95
96double bar (double a, double b)
97{
98 double square (double z) { return z * z; }
99 return square (a) + square (b);
100}
101
102void baz (int n)
103{
104 struct S { int x[[n]]; };
105}])],
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000106 ac_cv_c99=yes, ac_cv_c99=no)
107CFLAGS="$old_CFLAGS"])
108AS_IF([test "x$ac_cv_c99" != xyes],
Mark Wielaardaba6d762015-04-14 10:18:37 +0200109 AC_MSG_ERROR([gcc with GNU99 support required]))
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000110
Roland McGrath81817392009-01-23 03:23:02 -0800111AC_CACHE_CHECK([for __thread support], ac_cv_tls, [dnl
Roland McGrathe72bf152009-01-23 14:27:39 -0800112# Use the same flags that we use for our DSOs, so the test is representative.
113# Some old compiler/linker/libc combinations fail some ways and not others.
114save_CFLAGS="$CFLAGS"
115save_LDFLAGS="$LDFLAGS"
Jose E. Marchesi133509f2015-10-05 17:36:30 +0200116CFLAGS="-fPIC $CFLAGS"
Roland McGrathe72bf152009-01-23 14:27:39 -0800117LDFLAGS="-shared -Wl,-z,defs,-z,relro $LDFLAGS"
Roland McGrath81817392009-01-23 03:23:02 -0800118AC_LINK_IFELSE([dnl
Mark Wielaard0a35e3a2015-03-13 23:51:40 +0100119AC_LANG_PROGRAM([[#include <stdlib.h>
120#undef __thread
Roland McGrathe72bf152009-01-23 14:27:39 -0800121static __thread int a; int foo (int b) { return a + b; }]],
Roland McGrath81817392009-01-23 03:23:02 -0800122 [[exit (foo (0));]])],
Roland McGrathe72bf152009-01-23 14:27:39 -0800123 ac_cv_tls=yes, ac_cv_tls=no)
124CFLAGS="$save_CFLAGS"
125LDFLAGS="$save_LDFLAGS"])
Ulrich Drepper7e678fa2009-01-10 18:02:05 -0800126AS_IF([test "x$ac_cv_tls" != xyes],
Roland McGrath81817392009-01-23 03:23:02 -0800127 AC_MSG_ERROR([__thread support required]))
Ulrich Drepper7e678fa2009-01-10 18:02:05 -0800128
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000129dnl This test must come as early as possible after the compiler configuration
130dnl tests, because the choice of the file model can (in principle) affect
131dnl whether functions and headers are available, whether they work, etc.
132AC_SYS_LARGEFILE
133
134dnl Enable the linker to be build as a native-only linker. By default it
135dnl can handle all architectures but this comes at a cost. A native
136dnl will be slightly faster, small, and has fewer dependencies.
137native_ld=no
138AC_ARG_ENABLE([generic],
139AS_HELP_STRING([--disable-generic], [do not build generic linker]), [dnl
140if test "$enable_generic" = no; then
141 case "$host_cpu" in
142 i?86)
143 AC_DEFINE(NATIVE_ELF, 32)
144 native_ld=yes
145 base_cpu=i386
146 ;;
147 *)
148 AC_MSG_ERROR([no machine-specific linker for this configuration available])
149 ;;
150 esac
151fi])
152AH_TEMPLATE([NATIVE_ELF],
153[Define to 32 or 64 if a specific implementation is wanted.])
154AM_CONDITIONAL(NATIVE_LD, test "$native_ld" = yes)
155dnl The automake generated Makefile cannot deal with macros in the name
156dnl of files if at any time there is no such file, even if the filename
157dnl would not be used.
158AS_IF([test -z "$base_cpu"], [base_cpu=none])
159AC_SUBST(base_cpu)
Ulrich Drepper28ed8952006-07-07 03:43:47 +0000160dnl Support to work around automake's inflexible dependency generation.
161dnl See src/Makefile.am for more information.
162AM_CONDITIONAL(NEVER, false)
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000163
Ulrich Drepper3cbdd382008-01-02 17:44:39 +0000164dnl enable debugging of branch prediction.
Ulrich Drepper28a0c612008-01-21 18:57:48 +0000165AC_ARG_ENABLE([debugpred],
Ulrich Drepperdb12f162009-09-21 08:04:38 -0700166AS_HELP_STRING([--enable-debugpred],[build binaries with support to debug branch prediction]),
Mike Frysinger8f3002e2011-10-08 15:09:15 -0700167[use_debugpred=$enableval], [use_debugpred=no])
168case $use_debugpred in
Mark Wielaard7702a3c2015-05-01 09:23:57 +0200169 yes) use_debugpred_val=1 ;;
170 *) use_debugpred_val=0 ;;
Mike Frysinger8f3002e2011-10-08 15:09:15 -0700171esac
Mark Wielaard7702a3c2015-05-01 09:23:57 +0200172AC_SUBST([DEBUGPRED], $use_debugpred_val)
Ulrich Drepper3cbdd382008-01-02 17:44:39 +0000173
174dnl Enable gprof suport.
Ulrich Drepper47be7952005-08-07 04:41:39 +0000175AC_ARG_ENABLE([gprof],
Mike Frysinger8f3002e2011-10-08 15:09:15 -0700176AS_HELP_STRING([--enable-gprof],[build binaries with gprof support]), [use_gprof=$enableval], [use_gprof=no])
Ulrich Drepper47be7952005-08-07 04:41:39 +0000177if test "$use_gprof" = yes; then
178 CFLAGS="$CFLAGS -pg"
179 LDFLAGS="$LDFLAGS -pg"
180fi
181AM_CONDITIONAL(GPROF, test "$use_gprof" = yes)
Ulrich Drepperfbe998a2005-08-29 16:27:10 +0000182
183# Enable gcov suport.
184AC_ARG_ENABLE([gcov],
Mike Frysinger8f3002e2011-10-08 15:09:15 -0700185AS_HELP_STRING([--enable-gcov],[build binaries with gcov support]), [use_gcov=$enableval], [use_gcov=no])
Ulrich Drepperfbe998a2005-08-29 16:27:10 +0000186if test "$use_gcov" = yes; then
187 CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
188 LDFLAGS="$LDFLAGS -fprofile-arcs"
189fi
Ulrich Drepper39cec7a2005-08-30 01:22:01 +0000190AM_CONDITIONAL(GCOV, test "$use_gcov" = yes)
Ulrich Drepperfbe998a2005-08-29 16:27:10 +0000191
Mark Wielaard2b250b72015-05-21 23:36:51 +0200192AC_ARG_ENABLE([sanitize-undefined],
193 AS_HELP_STRING([--enable-sanitize-undefined],
194 [Use gcc undefined behaviour sanitizer]),
195 [use_undefined=$enableval], [use_undefined=no])
196if test "$use_undefined" = yes; then
197 old_CFLAGS="$CFLAGS"
198 old_CXXFLAGS="$CXXFLAGS"
199 # We explicitly use unaligned access when possible (see ALLOW_UNALIGNED)
200 # We want to fail immediately on first error, don't try to recover.
Mark Wielaard170f1bb2015-05-31 22:37:19 +0200201 CFLAGS="$CFLAGS -fsanitize=undefined -fno-sanitize-recover"
202 CXXFLAGS="$CXXFLAGS -fsanitize=undefined -fno-sanitize-recover"
203 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 +0200204 AS_IF([test "x$use_undefined" != xyes],
205 AC_MSG_WARN([gcc undefined behaviour sanitizer not available])
206 CFLAGS="$old_CFLAGS" CXXFLAGS="$old_CXXFLAGS")
207fi
Mark Wielaard170f1bb2015-05-31 22:37:19 +0200208case $use_undefined in
209 yes) check_undefined_val=1 ;;
210 *) check_undefined_val=0 ;;
211esac
212AC_DEFINE_UNQUOTED(CHECK_UNDEFINED, $check_undefined_val,
213 [Building with -fsanitize=undefined or not])
Mark Wielaard2b250b72015-05-21 23:36:51 +0200214
Mark Wielaarde3e3ee22012-10-01 16:14:12 +0200215AC_ARG_ENABLE([valgrind],
216AS_HELP_STRING([--enable-valgrind],[run all tests under valgrind]),
217[use_valgrind=$enableval], [use_valgrind=no])
218if test "$use_valgrind" = yes; then
219 AC_CHECK_PROG(HAVE_VALGRIND, valgrind, yes, no)
220 if test "$HAVE_VALGRIND" = "no"; then
221 AC_MSG_ERROR([valgrind not found])
222 fi
223fi
224AM_CONDITIONAL(USE_VALGRIND, test "$use_valgrind" = yes)
225
Ulrich Drepper47be7952005-08-07 04:41:39 +0000226AM_CONDITIONAL(BUILD_STATIC, [dnl
Mark Wielaard32324792014-04-13 17:39:57 +0200227test "$use_gprof" = yes -o "$use_gcov" = yes])
Ulrich Drepper47be7952005-08-07 04:41:39 +0000228
Roland McGrath1b8b4462005-11-16 01:33:38 +0000229AC_ARG_ENABLE([tests-rpath],
Ulrich Drepperdb12f162009-09-21 08:04:38 -0700230AS_HELP_STRING([--enable-tests-rpath],[build $ORIGIN-using rpath into tests]),
Mike Frysinger8f3002e2011-10-08 15:09:15 -0700231 [tests_use_rpath=$enableval], [tests_use_rpath=no])
Roland McGrath1b8b4462005-11-16 01:33:38 +0000232AM_CONDITIONAL(TESTS_RPATH, test "$tests_use_rpath" = yes)
233
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000234LIBEBL_SUBDIR="$PACKAGE"
235AC_ARG_ENABLE([libebl-subdir],
236AS_HELP_STRING([--enable-libebl-subdir=DIR],
237[install libebl_CPU modules in $(libdir)/DIR]), [dnl
238LIBEBL_SUBDIR="$enable_libebl_subdir"])
239AC_SUBST([LIBEBL_SUBDIR])
240AC_DEFINE_UNQUOTED(LIBEBL_SUBDIR, "$LIBEBL_SUBDIR")
241AH_TEMPLATE([LIBEBL_SUBDIR], [$libdir subdirectory containing libebl modules.])
242
Mark Wielaard528cb452015-10-16 23:07:12 +0200243dnl zlib is mandatory.
Roland McGrathbca43152009-01-05 23:59:32 -0800244save_LIBS="$LIBS"
245LIBS=
Roland McGrath24169642009-08-26 02:26:34 -0700246eu_ZIPLIB(zlib,ZLIB,z,gzdirect,gzip)
Mike Frysinger2d703bf2016-01-14 13:46:18 -0500247AS_IF([test "x$with_zlib" = xno], [AC_MSG_ERROR([zlib not found but is required])])
Mark Wielaard528cb452015-10-16 23:07:12 +0200248LIBS="$save_LIBS"
249
250dnl Test for bzlib and xz/lzma, gives BZLIB/LZMALIB .am
251dnl conditional and config.h USE_BZLIB/USE_LZMALIB #define.
252save_LIBS="$LIBS"
253LIBS=
Roland McGrath24169642009-08-26 02:26:34 -0700254eu_ZIPLIB(bzlib,BZLIB,bz2,BZ2_bzdopen,bzip2)
Mark Wielaard0aa60ac2016-01-04 21:41:52 +0100255# We need this since bzip2 doesn't have a pkgconfig file.
256BZ2_LIB="$LIBS"
257AC_SUBST([BZ2_LIB])
Roland McGrath24169642009-08-26 02:26:34 -0700258eu_ZIPLIB(lzma,LZMA,lzma,lzma_auto_decoder,[LZMA (xz)])
Mark Wielaard0aa60ac2016-01-04 21:41:52 +0100259AS_IF([test "x$with_lzma" = xyes], [LIBLZMA="liblzma"], [LIBLZMA=""])
260AC_SUBST([LIBLZMA])
Roland McGrathbca43152009-01-05 23:59:32 -0800261zip_LIBS="$LIBS"
262LIBS="$save_LIBS"
263AC_SUBST([zip_LIBS])
264
Ulrich Drepperb4a16cf2011-10-02 08:33:19 -0400265AC_CHECK_LIB([stdc++], [__cxa_demangle], [dnl
266AC_DEFINE([USE_DEMANGLE], [1], [Defined if demangling is enabled])])
Max Filippov1ce4a452015-05-03 21:14:09 +0300267AM_CONDITIONAL(DEMANGLE, test "x$ac_cv_lib_stdcpp___cxa_demangle" = "xyes")
268AS_IF([test "x$ac_cv_lib_stdcpp___cxa_demangle" = "xyes"],
Mark Wielaarde6e80da2015-05-01 10:31:36 +0200269 [enable_demangler=yes],[enable_demangler=no])
Ulrich Drepperb4a16cf2011-10-02 08:33:19 -0400270
Mark Wielaard805ec832014-11-27 23:53:30 +0100271AC_ARG_ENABLE([textrelcheck],
272AS_HELP_STRING([--disable-textrelcheck],
273 [Disable textrelcheck being a fatal error]))
274AM_CONDITIONAL(FATAL_TEXTREL, [test "x$enable_textrelcheck" != "xno"])
Mark Wielaard7702a3c2015-05-01 09:23:57 +0200275AS_IF([test "x$enable_textrelcheck" != "xno"],
276 [enable_textrelcheck=yes],[enable_textrelcheck=no])
Mark Wielaard805ec832014-11-27 23:53:30 +0100277
Max Filippovbafacac2015-04-23 20:46:59 +0200278AC_ARG_ENABLE([symbol-versioning],
279AS_HELP_STRING([--disable-symbol-versioning],
280 [Disable symbol versioning in shared objects]))
281AM_CONDITIONAL(SYMBOL_VERSIONING, [test "x$enable_symbol_versioning" != "xno"])
282AS_IF([test "x$enable_symbol_versioning" = "xno"],
Mark Wielaard7702a3c2015-05-01 09:23:57 +0200283 [AC_MSG_WARN([Disabling symbol versioning breaks ABI compatibility.])
284 enable_symbol_versioning=no],[enable_symbol_versioning=yes])
Max Filippovbafacac2015-04-23 20:46:59 +0200285
Mark Wielaard4b7953d2015-06-09 00:28:13 +0200286AC_CACHE_CHECK([whether gcc accepts -Wstack-usage], ac_cv_stack_usage, [dnl
287old_CFLAGS="$CFLAGS"
288CFLAGS="$CFLAGS -Wstack-usage=262144"
289AC_COMPILE_IFELSE([AC_LANG_SOURCE([])],
290 ac_cv_stack_usage=yes, ac_cv_stack_usage=no)
291CFLAGS="$old_CFLAGS"])
292AM_CONDITIONAL(ADD_STACK_USAGE_WARNING, [test "x$ac_cv_stack_usage" != "xno"])
293
Anthony G. Basile1ab3c2b2015-05-04 02:25:39 +0300294dnl Check if we have argp available from our libc
295AC_LINK_IFELSE(
296 [AC_LANG_PROGRAM(
297 [#include <argp.h>],
298 [int argc=1; char *argv[]={"test"}; argp_parse(0,argc,argv,0,0,0); return 0;]
299 )],
300 [libc_has_argp="true"],
301 [libc_has_argp="false"]
302)
303
304dnl If our libc doesn't provide argp, then test for libargp
305if test "$libc_has_argp" = "false" ; then
306 AC_MSG_WARN("libc does not have argp")
307 AC_CHECK_LIB([argp], [argp_parse], [have_argp="true"], [have_argp="false"])
308
309 if test "$have_argp" = "false"; then
310 AC_MSG_ERROR("no libargp found")
311 else
312 argp_LDADD="-largp"
313 fi
314else
315 argp_LDADD=""
316fi
317AC_SUBST([argp_LDADD])
318
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000319dnl The directories with content.
320
321dnl Documentation.
322dnl Commented out for now.
323dnl AC_CONFIG_FILES([doc/Makefile])
324
325dnl Support library.
326AC_CONFIG_FILES([lib/Makefile])
327
328dnl ELF library.
Ulrich Drepper2c9ee4f2007-06-06 02:49:30 +0000329AC_CONFIG_FILES([libelf/Makefile])
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000330
331dnl Higher-level ELF support library.
332AC_CONFIG_FILES([libebl/Makefile])
333
Mark Wielaard93802972014-04-11 23:52:47 +0200334dnl DWARF-ELF Lower-level Functions support library.
335AC_CONFIG_FILES([libdwelf/Makefile])
336
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000337dnl DWARF library.
338AC_CONFIG_FILES([libdw/Makefile])
339
340dnl Higher-level DWARF support library.
341AC_CONFIG_FILES([libdwfl/Makefile])
342
343dnl CPU handling library.
344AC_CONFIG_FILES([libcpu/Makefile])
345
346dnl Assembler library.
Roland McGrathd7f8d0c2005-11-17 02:32:03 +0000347AM_CONDITIONAL(HAVE_LIBASM, true)dnl Used in tests/Makefile.am, which see.
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000348AC_CONFIG_FILES([libasm/Makefile])
349
Roland McGrathe47ab762005-11-17 03:16:00 +0000350dnl CPU-specific backend libraries.
351AC_CONFIG_FILES([backends/Makefile])
352
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000353dnl Tools.
354AC_CONFIG_FILES([src/Makefile po/Makefile.in])
355
356dnl Test suite.
Roland McGrathd7f8d0c2005-11-17 02:32:03 +0000357AM_CONDITIONAL(STANDALONE, false)dnl Used in tests/Makefile.am, which see.
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000358AC_CONFIG_FILES([tests/Makefile])
359
Mark Wielaard0aa60ac2016-01-04 21:41:52 +0100360dnl pkgconfig files
361AC_CONFIG_FILES([config/libelf.pc config/libdw.pc])
362
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000363# Get the definitions necessary to create the Makefiles in the po
364# subdirectories. This is a small subset of the gettext rules.
365AC_SUBST(USE_NLS, yes)
366AM_PO_SUBDIRS
367
Roland McGrathb4d6f0f2008-08-25 22:55:17 +0000368dnl Appended to the config.h file.
369dnl We hide all kinds of configuration magic in lib/eu-config.h.
370AH_BOTTOM([#include <eu-config.h>])
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000371
Roland McGrathfbc72452008-12-16 17:03:03 -0800372dnl Version compatibility header.
373AC_CONFIG_FILES([version.h:config/version.h.in])
374AC_SUBST([eu_version])
Roland McGrathee9d60d2009-04-17 13:18:35 -0700375
376# 1.234<whatever> -> 1234<whatever>
377case "$PACKAGE_VERSION" in
Roland McGrathe9bf1d32011-10-08 15:14:30 -0700378[[0-9]].*) eu_version=`echo "$PACKAGE_VERSION" | sed 's@\.@@'` ;;
Roland McGrathee9d60d2009-04-17 13:18:35 -0700379*) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
380esac
381case "$eu_version" in
382*.*)
383 # 1234.567 -> "1234", "567"
384 eu_extra_version="${eu_version#*.}"
385 eu_version="${eu_version%%.*}"
386 case "$eu_extra_version" in
387 [[0-9]][[0-9]][[0-9]]) ;;
388 [[0-9]][[0-9]]) eu_extra_version="${eu_extra_version}0" ;;
389 [[0-9]]) eu_extra_version="${eu_extra_version}00" ;;
390 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
391 esac
392 ;;
393*)
394 eu_extra_version=000
395 ;;
396esac
397
398case "$eu_version" in
399 0[[0-9]][[0-9]][[0-9]]) eu_version="${eu_version#0}$eu_extra_version" ;;
400[[0-9]][[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}$eu_extra_version" ;;
401[[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}0$eu_extra_version" ;;
Ulrich Drepper2c712522010-06-28 12:10:53 -0700402[[0-9]][[0-9]]) eu_version="${eu_version}00$eu_extra_version";;
Roland McGrathee9d60d2009-04-17 13:18:35 -0700403*) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
Roland McGrathfbc72452008-12-16 17:03:03 -0800404esac
405
Roland McGrath105e3982009-04-19 16:07:45 -0700406# Round up to the next release API (x.y) version.
Roland McGrathe9bf1d32011-10-08 15:14:30 -0700407eu_version=$(( (eu_version + 999) / 1000 ))
Roland McGrath105e3982009-04-19 16:07:45 -0700408
Mark Wielaardf17a9bb2015-05-31 23:03:30 +0200409dnl Unique ID for this build.
410MODVERSION="Build for ${LIBEBL_SUBDIR} ${eu_version} ${ac_cv_build}"
411AC_SUBST([MODVERSION])
412AC_DEFINE_UNQUOTED(MODVERSION, "$MODVERSION")
413AH_TEMPLATE([MODVERSION], [Identifier for modules in the build.])
414
Jan Kratochvil0b867462013-05-30 14:37:38 +0200415AC_CHECK_SIZEOF(long)
416
Kyle McMartinc1e0fcb2014-06-09 21:06:26 +0200417# On aarch64 before glibc 2.20 we would get the kernel user_pt_regs instead
418# of the user_regs_struct from sys/user.h. They are structurally the same
419# but we get either one or the other.
420AC_CHECK_TYPE([struct user_regs_struct],
421 [sys_user_has_user_regs=yes], [sys_user_has_user_regs=no],
422 [[#include <sys/ptrace.h>]
423 [#include <sys/time.h>]
424 [#include <sys/user.h>]])
425if test "$sys_user_has_user_regs" = "yes"; then
426 AC_DEFINE(HAVE_SYS_USER_REGS, 1,
427 [Define to 1 if <sys/user.h> defines struct user_regs_struct])
428fi
429
Jan Kratochvil0b867462013-05-30 14:37:38 +0200430# On a 64-bit host where can can use $CC -m32, we'll run two sets of tests.
431# Likewise in a 32-bit build on a host where $CC -m64 works.
432utrace_BIARCH
433# `$utrace_biarch' will be `-m64' even on an uniarch i386 machine.
Jan Kratochvil8ae9bc92013-12-02 20:54:28 +0100434CC_BIARCH="$CC $utrace_biarch"
Jan Kratochvil0b867462013-05-30 14:37:38 +0200435AC_SUBST([CC_BIARCH])
436
Mark Wielaard4664fd52015-05-30 22:50:37 +0200437# In maintainer mode we really need flex and bison.
438# Otherwise we really need a release dir with maintainer files generated.
439if test "x$enable_maintainer_mode" = xyes; then
440 AC_CHECK_PROG(HAVE_FLEX, flex, yes, no)
441 if test "$HAVE_FLEX" = "no"; then
442 AC_MSG_ERROR([flex needed in maintainer mode])
443 fi
444 AC_CHECK_PROG(HAVE_BISON, bison, yes, no)
445 if test "$HAVE_BISON" = "no"; then
446 AC_MSG_ERROR([bison needed in maintainer mode])
447 fi
448else
449 if test ! -f ${srcdir}/libdw/known-dwarf.h; then
450 AC_MSG_ERROR([No libdw/known-dwarf.h. configure --enable-maintainer-mode])
451 fi
452fi
453
454# The testfiles are all compressed, we need bunzip2 when running make check
455AC_CHECK_PROG(HAVE_BUNZIP2, bunzip2, yes, no)
456if test "$HAVE_BUNZIP2" = "no"; then
457 AC_MSG_WARN([No bunzip2, needed to run make check])
458fi
459
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000460AC_OUTPUT
Mark Wielaard7702a3c2015-05-01 09:23:57 +0200461
462AC_MSG_NOTICE([
463=====================================================================
464 elfutils: ${PACKAGE_VERSION} (eu_version: ${eu_version})
465=====================================================================
466
467 Prefix : ${prefix}
468 Program prefix ("eu-" recommended) : ${program_prefix}
469 Source code location : ${srcdir}
470 Maintainer mode : ${enable_maintainer_mode}
471 libebl modules subdirectory : ${LIBEBL_SUBDIR}
472 build arch : ${ac_cv_build}
473
474 RECOMMENDED FEATURES (should all be yes)
475 gzip support : ${with_zlib}
476 bzip2 support : ${with_bzlib}
477 lzma/xz support : ${with_lzma}
Mark Wielaarde6e80da2015-05-01 10:31:36 +0200478 libstdc++ demangle support : ${enable_demangler}
Mark Wielaard7702a3c2015-05-01 09:23:57 +0200479 File textrel check : ${enable_textrelcheck}
480 Symbol versioning : ${enable_symbol_versioning}
481
482 NOT RECOMMENDED FEATURES (should all be no)
483 Experimental thread safety : ${use_locks}
484
485 OTHER FEATURES
486 Deterministic archives by default : ${default_ar_deterministic}
487 Native language support : ${USE_NLS}
488
489 EXTRA TEST FEATURES (used with make check)
Mark Wielaard4664fd52015-05-30 22:50:37 +0200490 have bunzip2 installed (required) : ${HAVE_BUNZIP2}
Mark Wielaard7702a3c2015-05-01 09:23:57 +0200491 debug branch prediction : ${use_debugpred}
492 gprof support : ${use_gprof}
493 gcov support : ${use_gcov}
494 run all tests under valgrind : ${use_valgrind}
Mark Wielaard2b250b72015-05-21 23:36:51 +0200495 gcc undefined behaviour sanitizer : ${use_undefined}
Mark Wielaard7702a3c2015-05-01 09:23:57 +0200496 use rpath in tests : ${tests_use_rpath}
497 test biarch : ${utrace_cv_cc_biarch}
498])