blob: 72fb3e8d0d5aade845c3fee404c387f5b437f916 [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
Jan Kratochvil5fdc1de2013-07-25 11:17:49 +02004dnl Copyright (C) 1996-2013 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 Wielaardf36d7272013-09-27 14:02:26 +020020AC_INIT([elfutils],[0.157],[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 Wielaardf36d7272013-09-27 14:02:26 +020025AC_COPYRIGHT([Copyright (C) 1996-2013 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
32dnl Unique ID for this build.
33MODVERSION="Build on $(hostname) $(date +%FT%R:%S%z)"
34AC_SUBST([MODVERSION])
35AC_DEFINE_UNQUOTED(MODVERSION, "$MODVERSION")
36AH_TEMPLATE([MODVERSION], [Identifier for modules in the build.])
37
38AC_CONFIG_SRCDIR([libelf/libelf.h])
39AC_CONFIG_FILES([Makefile])
40AC_CONFIG_HEADERS([config.h])
41
42AC_CONFIG_MACRO_DIR([m4])
43AC_CONFIG_FILES([m4/Makefile])
44
45dnl The RPM spec file. We substitute a few values in the file.
46AC_CONFIG_FILES([elfutils.spec:config/elfutils.spec.in])
47
48
49AC_CANONICAL_HOST
50
Roland McGrath3284b792012-01-20 12:51:46 -080051AC_ARG_ENABLE(deterministic-archives,
52[AS_HELP_STRING([--enable-deterministic-archives],
53 [ar and ranlib default to -D behavior])], [
54if test "${enableval}" = no; then
55 default_ar_deterministic=false
56else
57 default_ar_deterministic=true
58fi], [default_ar_deterministic=false])
59AC_DEFINE_UNQUOTED(DEFAULT_AR_DETERMINISTIC, $default_ar_deterministic,
60 [Should ar and ranlib use -D behavior by default?])
61
Ulrich Drepper7e678fa2009-01-10 18:02:05 -080062AC_ARG_ENABLE([thread-safety],
Mark Wielaard09c9bb92013-11-06 12:21:32 +010063AS_HELP_STRING([--enable-thread-safety],
64 [enable thread safety of libraries EXPERIMENTAL]),
65 use_locks=$enableval, use_locks=no)
Ulrich Drepper7e678fa2009-01-10 18:02:05 -080066AM_CONDITIONAL(USE_LOCKS, test "$use_locks" = yes)
67AS_IF([test "$use_locks" = yes], [AC_DEFINE(USE_LOCKS)])
Mark Wielaard09c9bb92013-11-06 12:21:32 +010068AS_IF([test "$use_locks" = yes],
69 [AC_MSG_WARN([thread-safety is EXPERIMENTAL tests might fail.])])
Ulrich Drepperd56e2322008-08-16 03:09:13 +000070
Ulrich Drepper7e678fa2009-01-10 18:02:05 -080071AH_TEMPLATE([USE_LOCKS], [Defined if libraries should be thread-safe.])
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000072
Mark Wielaardf5519fc2012-08-24 13:54:52 +020073AC_ARG_ENABLE([dwz],
74AS_HELP_STRING([--enable-dwz], [enable experimental GNU ref_alt FORM, dwz multi file support in libdw]),
75enable_dwz=$enableval, enable_dwz=no)
76AM_CONDITIONAL(ENABLE_DWZ, test "$enable_dwz" = yes)
77AS_IF([test "$enable_dwz" = yes], [AC_DEFINE(ENABLE_DWZ)])
Mark Wielaard38928e22013-11-06 14:57:33 +010078AS_IF([test "$enable_dwz" = no -a -d /usr/lib/debug/.dwz],
79 [AC_MSG_WARN([--enable-dwz disabled and /usr/lib/debug/.dwz exists, native tests might fail])])
Mark Wielaardf5519fc2012-08-24 13:54:52 +020080
81AH_TEMPLATE([ENABLE_DWZ], [Defined if libdw should support GNU ref_alt FORM, dwz multi files.])
82
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000083AC_PROG_CC
84AC_PROG_RANLIB
85AC_PROG_YACC
86AM_PROG_LEX
Michael Forneya45c8042013-11-01 00:51:04 -070087# Only available since automake 1.12
88m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
89AC_CHECK_TOOL([READELF], [readelf])
90AC_CHECK_TOOL([NM], [nm])
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000091
92AC_CACHE_CHECK([for gcc with C99 support], ac_cv_c99, [dnl
93old_CFLAGS="$CFLAGS"
94CFLAGS="$CFLAGS -std=gnu99"
Roland McGrathf64e25f2011-02-08 19:36:50 -080095AC_COMPILE_IFELSE([AC_LANG_SOURCE([dnl
96int foo (int a) { for (int i = 0; i < a; ++i) if (i % 4) break; int s = a; }])],
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000097 ac_cv_c99=yes, ac_cv_c99=no)
98CFLAGS="$old_CFLAGS"])
99AS_IF([test "x$ac_cv_c99" != xyes],
100 AC_MSG_ERROR([gcc with C99 support required]))
101
Roland McGrath81817392009-01-23 03:23:02 -0800102AC_CACHE_CHECK([for __thread support], ac_cv_tls, [dnl
Roland McGrathe72bf152009-01-23 14:27:39 -0800103# Use the same flags that we use for our DSOs, so the test is representative.
104# Some old compiler/linker/libc combinations fail some ways and not others.
105save_CFLAGS="$CFLAGS"
106save_LDFLAGS="$LDFLAGS"
107CFLAGS="-fpic $CFLAGS"
108LDFLAGS="-shared -Wl,-z,defs,-z,relro $LDFLAGS"
Roland McGrath81817392009-01-23 03:23:02 -0800109AC_LINK_IFELSE([dnl
Roland McGrath57844442009-01-23 03:40:50 -0800110AC_LANG_PROGRAM([[#undef __thread
Roland McGrathe72bf152009-01-23 14:27:39 -0800111static __thread int a; int foo (int b) { return a + b; }]],
Roland McGrath81817392009-01-23 03:23:02 -0800112 [[exit (foo (0));]])],
Roland McGrathe72bf152009-01-23 14:27:39 -0800113 ac_cv_tls=yes, ac_cv_tls=no)
114CFLAGS="$save_CFLAGS"
115LDFLAGS="$save_LDFLAGS"])
Ulrich Drepper7e678fa2009-01-10 18:02:05 -0800116AS_IF([test "x$ac_cv_tls" != xyes],
Roland McGrath81817392009-01-23 03:23:02 -0800117 AC_MSG_ERROR([__thread support required]))
Ulrich Drepper7e678fa2009-01-10 18:02:05 -0800118
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000119dnl This test must come as early as possible after the compiler configuration
120dnl tests, because the choice of the file model can (in principle) affect
121dnl whether functions and headers are available, whether they work, etc.
122AC_SYS_LARGEFILE
123
124dnl Enable the linker to be build as a native-only linker. By default it
125dnl can handle all architectures but this comes at a cost. A native
126dnl will be slightly faster, small, and has fewer dependencies.
127native_ld=no
128AC_ARG_ENABLE([generic],
129AS_HELP_STRING([--disable-generic], [do not build generic linker]), [dnl
130if test "$enable_generic" = no; then
131 case "$host_cpu" in
132 i?86)
133 AC_DEFINE(NATIVE_ELF, 32)
134 native_ld=yes
135 base_cpu=i386
136 ;;
137 *)
138 AC_MSG_ERROR([no machine-specific linker for this configuration available])
139 ;;
140 esac
141fi])
142AH_TEMPLATE([NATIVE_ELF],
143[Define to 32 or 64 if a specific implementation is wanted.])
144AM_CONDITIONAL(NATIVE_LD, test "$native_ld" = yes)
145dnl The automake generated Makefile cannot deal with macros in the name
146dnl of files if at any time there is no such file, even if the filename
147dnl would not be used.
148AS_IF([test -z "$base_cpu"], [base_cpu=none])
149AC_SUBST(base_cpu)
Ulrich Drepper28ed8952006-07-07 03:43:47 +0000150dnl Support to work around automake's inflexible dependency generation.
151dnl See src/Makefile.am for more information.
152AM_CONDITIONAL(NEVER, false)
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000153
154dnl Enable debugging via mudflap. This option will cause most libraries
155dnl to be built as archives which are statically linked into the applications.
156dnl All code, as far as possible, is compiled instrumented to catch all
157dnl the bugs valgrind is able to catch.
158use_mudflap=no
159AC_ARG_ENABLE([mudflap],
160AS_HELP_STRING([--enable-mudflap],
161[build binaries with mudflap instrumentation]), [dnl
162if test "x$enable_mudflap" = xyes; then
163 # Check whether the compiler support -fmudflap.
164 old_CFLAGS="$CFLAGS"
165 CFLAGS="$CFLAGS -fmudflap"
Ulrich Drepperdb12f162009-09-21 08:04:38 -0700166 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[use_mudflap=yes],[use_mudflap=fail])
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000167 CFLAGS="$old_CFLAGS"
168fi])
169if test "$use_mudflap" = fail; then
170 AC_MSG_FAILURE([--enable-mudflap requires a compiler which understands this option])
171fi
172AM_CONDITIONAL(MUDFLAP, test "$use_mudflap" = yes)
173
Ulrich Drepper3cbdd382008-01-02 17:44:39 +0000174dnl enable debugging of branch prediction.
Ulrich Drepper28a0c612008-01-21 18:57:48 +0000175AC_ARG_ENABLE([debugpred],
Ulrich Drepperdb12f162009-09-21 08:04:38 -0700176AS_HELP_STRING([--enable-debugpred],[build binaries with support to debug branch prediction]),
Mike Frysinger8f3002e2011-10-08 15:09:15 -0700177[use_debugpred=$enableval], [use_debugpred=no])
178case $use_debugpred in
179 yes) use_debugpred=1 ;;
180 *) use_debugpred=0 ;;
181esac
Ulrich Drepper3cbdd382008-01-02 17:44:39 +0000182AC_SUBST([DEBUGPRED], $use_debugpred)
183
184dnl Enable gprof suport.
Ulrich Drepper47be7952005-08-07 04:41:39 +0000185AC_ARG_ENABLE([gprof],
Mike Frysinger8f3002e2011-10-08 15:09:15 -0700186AS_HELP_STRING([--enable-gprof],[build binaries with gprof support]), [use_gprof=$enableval], [use_gprof=no])
Ulrich Drepper47be7952005-08-07 04:41:39 +0000187if test "$use_gprof" = yes; then
188 CFLAGS="$CFLAGS -pg"
189 LDFLAGS="$LDFLAGS -pg"
190fi
191AM_CONDITIONAL(GPROF, test "$use_gprof" = yes)
Ulrich Drepperfbe998a2005-08-29 16:27:10 +0000192
193# Enable gcov suport.
194AC_ARG_ENABLE([gcov],
Mike Frysinger8f3002e2011-10-08 15:09:15 -0700195AS_HELP_STRING([--enable-gcov],[build binaries with gcov support]), [use_gcov=$enableval], [use_gcov=no])
Ulrich Drepperfbe998a2005-08-29 16:27:10 +0000196if test "$use_gcov" = yes; then
197 CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
198 LDFLAGS="$LDFLAGS -fprofile-arcs"
199fi
Ulrich Drepper39cec7a2005-08-30 01:22:01 +0000200AM_CONDITIONAL(GCOV, test "$use_gcov" = yes)
Ulrich Drepperfbe998a2005-08-29 16:27:10 +0000201
Mark Wielaarde3e3ee22012-10-01 16:14:12 +0200202AC_ARG_ENABLE([valgrind],
203AS_HELP_STRING([--enable-valgrind],[run all tests under valgrind]),
204[use_valgrind=$enableval], [use_valgrind=no])
205if test "$use_valgrind" = yes; then
206 AC_CHECK_PROG(HAVE_VALGRIND, valgrind, yes, no)
207 if test "$HAVE_VALGRIND" = "no"; then
208 AC_MSG_ERROR([valgrind not found])
209 fi
210fi
211AM_CONDITIONAL(USE_VALGRIND, test "$use_valgrind" = yes)
212
Ulrich Drepper47be7952005-08-07 04:41:39 +0000213AM_CONDITIONAL(BUILD_STATIC, [dnl
Ulrich Drepperfbe998a2005-08-29 16:27:10 +0000214test "$use_mudflap" = yes -o "$use_gprof" = yes -o "$use_gcov" = yes])
Ulrich Drepper47be7952005-08-07 04:41:39 +0000215
Roland McGrath1b8b4462005-11-16 01:33:38 +0000216AC_ARG_ENABLE([tests-rpath],
Ulrich Drepperdb12f162009-09-21 08:04:38 -0700217AS_HELP_STRING([--enable-tests-rpath],[build $ORIGIN-using rpath into tests]),
Mike Frysinger8f3002e2011-10-08 15:09:15 -0700218 [tests_use_rpath=$enableval], [tests_use_rpath=no])
Roland McGrath1b8b4462005-11-16 01:33:38 +0000219AM_CONDITIONAL(TESTS_RPATH, test "$tests_use_rpath" = yes)
220
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000221LIBEBL_SUBDIR="$PACKAGE"
222AC_ARG_ENABLE([libebl-subdir],
223AS_HELP_STRING([--enable-libebl-subdir=DIR],
224[install libebl_CPU modules in $(libdir)/DIR]), [dnl
225LIBEBL_SUBDIR="$enable_libebl_subdir"])
226AC_SUBST([LIBEBL_SUBDIR])
227AC_DEFINE_UNQUOTED(LIBEBL_SUBDIR, "$LIBEBL_SUBDIR")
228AH_TEMPLATE([LIBEBL_SUBDIR], [$libdir subdirectory containing libebl modules.])
229
Roland McGrath7a647872009-01-08 19:22:35 -0800230dnl Test for zlib and bzlib, gives ZLIB/BZLIB .am
231dnl conditional and config.h USE_ZLIB/USE_BZLIB #define.
Roland McGrathbca43152009-01-05 23:59:32 -0800232save_LIBS="$LIBS"
233LIBS=
Roland McGrath24169642009-08-26 02:26:34 -0700234eu_ZIPLIB(zlib,ZLIB,z,gzdirect,gzip)
235eu_ZIPLIB(bzlib,BZLIB,bz2,BZ2_bzdopen,bzip2)
236eu_ZIPLIB(lzma,LZMA,lzma,lzma_auto_decoder,[LZMA (xz)])
Roland McGrathbca43152009-01-05 23:59:32 -0800237zip_LIBS="$LIBS"
238LIBS="$save_LIBS"
239AC_SUBST([zip_LIBS])
240
Ulrich Drepperb4a16cf2011-10-02 08:33:19 -0400241AC_CHECK_LIB([stdc++], [__cxa_demangle], [dnl
242AC_DEFINE([USE_DEMANGLE], [1], [Defined if demangling is enabled])])
243AM_CONDITIONAL(DEMANGLE, test "$ac_cv_lib_stdcpp___cxa_demangle" = yes)
244
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000245dnl The directories with content.
246
247dnl Documentation.
248dnl Commented out for now.
249dnl AC_CONFIG_FILES([doc/Makefile])
250
251dnl Support library.
252AC_CONFIG_FILES([lib/Makefile])
253
254dnl ELF library.
Ulrich Drepper2c9ee4f2007-06-06 02:49:30 +0000255AC_CONFIG_FILES([libelf/Makefile])
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000256
257dnl Higher-level ELF support library.
258AC_CONFIG_FILES([libebl/Makefile])
259
260dnl DWARF library.
261AC_CONFIG_FILES([libdw/Makefile])
262
263dnl Higher-level DWARF support library.
264AC_CONFIG_FILES([libdwfl/Makefile])
265
266dnl CPU handling library.
267AC_CONFIG_FILES([libcpu/Makefile])
268
269dnl Assembler library.
Roland McGrathd7f8d0c2005-11-17 02:32:03 +0000270AM_CONDITIONAL(HAVE_LIBASM, true)dnl Used in tests/Makefile.am, which see.
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000271AC_CONFIG_FILES([libasm/Makefile])
272
Roland McGrathe47ab762005-11-17 03:16:00 +0000273dnl CPU-specific backend libraries.
274AC_CONFIG_FILES([backends/Makefile])
275
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000276dnl Tools.
277AC_CONFIG_FILES([src/Makefile po/Makefile.in])
278
279dnl Test suite.
Roland McGrathd7f8d0c2005-11-17 02:32:03 +0000280AM_CONDITIONAL(STANDALONE, false)dnl Used in tests/Makefile.am, which see.
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000281AC_CONFIG_FILES([tests/Makefile])
282
283# Get the definitions necessary to create the Makefiles in the po
284# subdirectories. This is a small subset of the gettext rules.
285AC_SUBST(USE_NLS, yes)
286AM_PO_SUBDIRS
287
Roland McGrathb4d6f0f2008-08-25 22:55:17 +0000288dnl Appended to the config.h file.
289dnl We hide all kinds of configuration magic in lib/eu-config.h.
290AH_BOTTOM([#include <eu-config.h>])
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000291
Roland McGrathfbc72452008-12-16 17:03:03 -0800292dnl Version compatibility header.
293AC_CONFIG_FILES([version.h:config/version.h.in])
294AC_SUBST([eu_version])
Roland McGrathee9d60d2009-04-17 13:18:35 -0700295
296# 1.234<whatever> -> 1234<whatever>
297case "$PACKAGE_VERSION" in
Roland McGrathe9bf1d32011-10-08 15:14:30 -0700298[[0-9]].*) eu_version=`echo "$PACKAGE_VERSION" | sed 's@\.@@'` ;;
Roland McGrathee9d60d2009-04-17 13:18:35 -0700299*) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
300esac
301case "$eu_version" in
302*.*)
303 # 1234.567 -> "1234", "567"
304 eu_extra_version="${eu_version#*.}"
305 eu_version="${eu_version%%.*}"
306 case "$eu_extra_version" in
307 [[0-9]][[0-9]][[0-9]]) ;;
308 [[0-9]][[0-9]]) eu_extra_version="${eu_extra_version}0" ;;
309 [[0-9]]) eu_extra_version="${eu_extra_version}00" ;;
310 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
311 esac
312 ;;
313*)
314 eu_extra_version=000
315 ;;
316esac
317
318case "$eu_version" in
319 0[[0-9]][[0-9]][[0-9]]) eu_version="${eu_version#0}$eu_extra_version" ;;
320[[0-9]][[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}$eu_extra_version" ;;
321[[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}0$eu_extra_version" ;;
Ulrich Drepper2c712522010-06-28 12:10:53 -0700322[[0-9]][[0-9]]) eu_version="${eu_version}00$eu_extra_version";;
Roland McGrathee9d60d2009-04-17 13:18:35 -0700323*) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
Roland McGrathfbc72452008-12-16 17:03:03 -0800324esac
325
Roland McGrath105e3982009-04-19 16:07:45 -0700326# Round up to the next release API (x.y) version.
Roland McGrathe9bf1d32011-10-08 15:14:30 -0700327eu_version=$(( (eu_version + 999) / 1000 ))
Roland McGrath105e3982009-04-19 16:07:45 -0700328
Jan Kratochvil0b867462013-05-30 14:37:38 +0200329AC_CHECK_SIZEOF(long)
330
331# On a 64-bit host where can can use $CC -m32, we'll run two sets of tests.
332# Likewise in a 32-bit build on a host where $CC -m64 works.
333utrace_BIARCH
334# `$utrace_biarch' will be `-m64' even on an uniarch i386 machine.
Jan Kratochvil8ae9bc92013-12-02 20:54:28 +0100335CC_BIARCH="$CC $utrace_biarch"
Jan Kratochvil0b867462013-05-30 14:37:38 +0200336AC_SUBST([CC_BIARCH])
337
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000338AC_OUTPUT