blob: 9bc83c54f00bb2705cad7c449bdab902f05b623e [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 Wielaard70db4cc2014-01-03 22:16:34 +01004dnl Copyright (C) 1996-2014 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 Wielaard5efda262014-08-25 22:13:57 +020020AC_INIT([elfutils],[0.160],[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 Wielaard70db4cc2014-01-03 22:16:34 +010025AC_COPYRIGHT([Copyright (C) 1996-2014 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
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000073AC_PROG_CC
74AC_PROG_RANLIB
75AC_PROG_YACC
76AM_PROG_LEX
Michael Forneya45c8042013-11-01 00:51:04 -070077# Only available since automake 1.12
78m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
79AC_CHECK_TOOL([READELF], [readelf])
80AC_CHECK_TOOL([NM], [nm])
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000081
82AC_CACHE_CHECK([for gcc with C99 support], ac_cv_c99, [dnl
83old_CFLAGS="$CFLAGS"
84CFLAGS="$CFLAGS -std=gnu99"
Roland McGrathf64e25f2011-02-08 19:36:50 -080085AC_COMPILE_IFELSE([AC_LANG_SOURCE([dnl
86int foo (int a) { for (int i = 0; i < a; ++i) if (i % 4) break; int s = a; }])],
Ulrich Drepperb08d5a82005-07-26 05:00:05 +000087 ac_cv_c99=yes, ac_cv_c99=no)
88CFLAGS="$old_CFLAGS"])
89AS_IF([test "x$ac_cv_c99" != xyes],
90 AC_MSG_ERROR([gcc with C99 support required]))
91
Roland McGrath81817392009-01-23 03:23:02 -080092AC_CACHE_CHECK([for __thread support], ac_cv_tls, [dnl
Roland McGrathe72bf152009-01-23 14:27:39 -080093# Use the same flags that we use for our DSOs, so the test is representative.
94# Some old compiler/linker/libc combinations fail some ways and not others.
95save_CFLAGS="$CFLAGS"
96save_LDFLAGS="$LDFLAGS"
97CFLAGS="-fpic $CFLAGS"
98LDFLAGS="-shared -Wl,-z,defs,-z,relro $LDFLAGS"
Roland McGrath81817392009-01-23 03:23:02 -080099AC_LINK_IFELSE([dnl
Roland McGrath57844442009-01-23 03:40:50 -0800100AC_LANG_PROGRAM([[#undef __thread
Roland McGrathe72bf152009-01-23 14:27:39 -0800101static __thread int a; int foo (int b) { return a + b; }]],
Roland McGrath81817392009-01-23 03:23:02 -0800102 [[exit (foo (0));]])],
Roland McGrathe72bf152009-01-23 14:27:39 -0800103 ac_cv_tls=yes, ac_cv_tls=no)
104CFLAGS="$save_CFLAGS"
105LDFLAGS="$save_LDFLAGS"])
Ulrich Drepper7e678fa2009-01-10 18:02:05 -0800106AS_IF([test "x$ac_cv_tls" != xyes],
Roland McGrath81817392009-01-23 03:23:02 -0800107 AC_MSG_ERROR([__thread support required]))
Ulrich Drepper7e678fa2009-01-10 18:02:05 -0800108
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000109dnl This test must come as early as possible after the compiler configuration
110dnl tests, because the choice of the file model can (in principle) affect
111dnl whether functions and headers are available, whether they work, etc.
112AC_SYS_LARGEFILE
113
114dnl Enable the linker to be build as a native-only linker. By default it
115dnl can handle all architectures but this comes at a cost. A native
116dnl will be slightly faster, small, and has fewer dependencies.
117native_ld=no
118AC_ARG_ENABLE([generic],
119AS_HELP_STRING([--disable-generic], [do not build generic linker]), [dnl
120if test "$enable_generic" = no; then
121 case "$host_cpu" in
122 i?86)
123 AC_DEFINE(NATIVE_ELF, 32)
124 native_ld=yes
125 base_cpu=i386
126 ;;
127 *)
128 AC_MSG_ERROR([no machine-specific linker for this configuration available])
129 ;;
130 esac
131fi])
132AH_TEMPLATE([NATIVE_ELF],
133[Define to 32 or 64 if a specific implementation is wanted.])
134AM_CONDITIONAL(NATIVE_LD, test "$native_ld" = yes)
135dnl The automake generated Makefile cannot deal with macros in the name
136dnl of files if at any time there is no such file, even if the filename
137dnl would not be used.
138AS_IF([test -z "$base_cpu"], [base_cpu=none])
139AC_SUBST(base_cpu)
Ulrich Drepper28ed8952006-07-07 03:43:47 +0000140dnl Support to work around automake's inflexible dependency generation.
141dnl See src/Makefile.am for more information.
142AM_CONDITIONAL(NEVER, false)
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000143
Ulrich Drepper3cbdd382008-01-02 17:44:39 +0000144dnl enable debugging of branch prediction.
Ulrich Drepper28a0c612008-01-21 18:57:48 +0000145AC_ARG_ENABLE([debugpred],
Ulrich Drepperdb12f162009-09-21 08:04:38 -0700146AS_HELP_STRING([--enable-debugpred],[build binaries with support to debug branch prediction]),
Mike Frysinger8f3002e2011-10-08 15:09:15 -0700147[use_debugpred=$enableval], [use_debugpred=no])
148case $use_debugpred in
149 yes) use_debugpred=1 ;;
150 *) use_debugpred=0 ;;
151esac
Ulrich Drepper3cbdd382008-01-02 17:44:39 +0000152AC_SUBST([DEBUGPRED], $use_debugpred)
153
154dnl Enable gprof suport.
Ulrich Drepper47be7952005-08-07 04:41:39 +0000155AC_ARG_ENABLE([gprof],
Mike Frysinger8f3002e2011-10-08 15:09:15 -0700156AS_HELP_STRING([--enable-gprof],[build binaries with gprof support]), [use_gprof=$enableval], [use_gprof=no])
Ulrich Drepper47be7952005-08-07 04:41:39 +0000157if test "$use_gprof" = yes; then
158 CFLAGS="$CFLAGS -pg"
159 LDFLAGS="$LDFLAGS -pg"
160fi
161AM_CONDITIONAL(GPROF, test "$use_gprof" = yes)
Ulrich Drepperfbe998a2005-08-29 16:27:10 +0000162
163# Enable gcov suport.
164AC_ARG_ENABLE([gcov],
Mike Frysinger8f3002e2011-10-08 15:09:15 -0700165AS_HELP_STRING([--enable-gcov],[build binaries with gcov support]), [use_gcov=$enableval], [use_gcov=no])
Ulrich Drepperfbe998a2005-08-29 16:27:10 +0000166if test "$use_gcov" = yes; then
167 CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
168 LDFLAGS="$LDFLAGS -fprofile-arcs"
169fi
Ulrich Drepper39cec7a2005-08-30 01:22:01 +0000170AM_CONDITIONAL(GCOV, test "$use_gcov" = yes)
Ulrich Drepperfbe998a2005-08-29 16:27:10 +0000171
Mark Wielaarde3e3ee22012-10-01 16:14:12 +0200172AC_ARG_ENABLE([valgrind],
173AS_HELP_STRING([--enable-valgrind],[run all tests under valgrind]),
174[use_valgrind=$enableval], [use_valgrind=no])
175if test "$use_valgrind" = yes; then
176 AC_CHECK_PROG(HAVE_VALGRIND, valgrind, yes, no)
177 if test "$HAVE_VALGRIND" = "no"; then
178 AC_MSG_ERROR([valgrind not found])
179 fi
180fi
181AM_CONDITIONAL(USE_VALGRIND, test "$use_valgrind" = yes)
182
Ulrich Drepper47be7952005-08-07 04:41:39 +0000183AM_CONDITIONAL(BUILD_STATIC, [dnl
Mark Wielaard32324792014-04-13 17:39:57 +0200184test "$use_gprof" = yes -o "$use_gcov" = yes])
Ulrich Drepper47be7952005-08-07 04:41:39 +0000185
Roland McGrath1b8b4462005-11-16 01:33:38 +0000186AC_ARG_ENABLE([tests-rpath],
Ulrich Drepperdb12f162009-09-21 08:04:38 -0700187AS_HELP_STRING([--enable-tests-rpath],[build $ORIGIN-using rpath into tests]),
Mike Frysinger8f3002e2011-10-08 15:09:15 -0700188 [tests_use_rpath=$enableval], [tests_use_rpath=no])
Roland McGrath1b8b4462005-11-16 01:33:38 +0000189AM_CONDITIONAL(TESTS_RPATH, test "$tests_use_rpath" = yes)
190
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000191LIBEBL_SUBDIR="$PACKAGE"
192AC_ARG_ENABLE([libebl-subdir],
193AS_HELP_STRING([--enable-libebl-subdir=DIR],
194[install libebl_CPU modules in $(libdir)/DIR]), [dnl
195LIBEBL_SUBDIR="$enable_libebl_subdir"])
196AC_SUBST([LIBEBL_SUBDIR])
197AC_DEFINE_UNQUOTED(LIBEBL_SUBDIR, "$LIBEBL_SUBDIR")
198AH_TEMPLATE([LIBEBL_SUBDIR], [$libdir subdirectory containing libebl modules.])
199
Roland McGrath7a647872009-01-08 19:22:35 -0800200dnl Test for zlib and bzlib, gives ZLIB/BZLIB .am
201dnl conditional and config.h USE_ZLIB/USE_BZLIB #define.
Roland McGrathbca43152009-01-05 23:59:32 -0800202save_LIBS="$LIBS"
203LIBS=
Roland McGrath24169642009-08-26 02:26:34 -0700204eu_ZIPLIB(zlib,ZLIB,z,gzdirect,gzip)
205eu_ZIPLIB(bzlib,BZLIB,bz2,BZ2_bzdopen,bzip2)
206eu_ZIPLIB(lzma,LZMA,lzma,lzma_auto_decoder,[LZMA (xz)])
Roland McGrathbca43152009-01-05 23:59:32 -0800207zip_LIBS="$LIBS"
208LIBS="$save_LIBS"
209AC_SUBST([zip_LIBS])
210
Ulrich Drepperb4a16cf2011-10-02 08:33:19 -0400211AC_CHECK_LIB([stdc++], [__cxa_demangle], [dnl
212AC_DEFINE([USE_DEMANGLE], [1], [Defined if demangling is enabled])])
213AM_CONDITIONAL(DEMANGLE, test "$ac_cv_lib_stdcpp___cxa_demangle" = yes)
214
Mark Wielaard805ec832014-11-27 23:53:30 +0100215AC_ARG_ENABLE([textrelcheck],
216AS_HELP_STRING([--disable-textrelcheck],
217 [Disable textrelcheck being a fatal error]))
218AM_CONDITIONAL(FATAL_TEXTREL, [test "x$enable_textrelcheck" != "xno"])
219
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000220dnl The directories with content.
221
222dnl Documentation.
223dnl Commented out for now.
224dnl AC_CONFIG_FILES([doc/Makefile])
225
226dnl Support library.
227AC_CONFIG_FILES([lib/Makefile])
228
229dnl ELF library.
Ulrich Drepper2c9ee4f2007-06-06 02:49:30 +0000230AC_CONFIG_FILES([libelf/Makefile])
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000231
232dnl Higher-level ELF support library.
233AC_CONFIG_FILES([libebl/Makefile])
234
Mark Wielaard93802972014-04-11 23:52:47 +0200235dnl DWARF-ELF Lower-level Functions support library.
236AC_CONFIG_FILES([libdwelf/Makefile])
237
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000238dnl DWARF library.
239AC_CONFIG_FILES([libdw/Makefile])
240
241dnl Higher-level DWARF support library.
242AC_CONFIG_FILES([libdwfl/Makefile])
243
244dnl CPU handling library.
245AC_CONFIG_FILES([libcpu/Makefile])
246
247dnl Assembler library.
Roland McGrathd7f8d0c2005-11-17 02:32:03 +0000248AM_CONDITIONAL(HAVE_LIBASM, true)dnl Used in tests/Makefile.am, which see.
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000249AC_CONFIG_FILES([libasm/Makefile])
250
Roland McGrathe47ab762005-11-17 03:16:00 +0000251dnl CPU-specific backend libraries.
252AC_CONFIG_FILES([backends/Makefile])
253
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000254dnl Tools.
255AC_CONFIG_FILES([src/Makefile po/Makefile.in])
256
257dnl Test suite.
Roland McGrathd7f8d0c2005-11-17 02:32:03 +0000258AM_CONDITIONAL(STANDALONE, false)dnl Used in tests/Makefile.am, which see.
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000259AC_CONFIG_FILES([tests/Makefile])
260
261# Get the definitions necessary to create the Makefiles in the po
262# subdirectories. This is a small subset of the gettext rules.
263AC_SUBST(USE_NLS, yes)
264AM_PO_SUBDIRS
265
Roland McGrathb4d6f0f2008-08-25 22:55:17 +0000266dnl Appended to the config.h file.
267dnl We hide all kinds of configuration magic in lib/eu-config.h.
268AH_BOTTOM([#include <eu-config.h>])
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000269
Roland McGrathfbc72452008-12-16 17:03:03 -0800270dnl Version compatibility header.
271AC_CONFIG_FILES([version.h:config/version.h.in])
272AC_SUBST([eu_version])
Roland McGrathee9d60d2009-04-17 13:18:35 -0700273
274# 1.234<whatever> -> 1234<whatever>
275case "$PACKAGE_VERSION" in
Roland McGrathe9bf1d32011-10-08 15:14:30 -0700276[[0-9]].*) eu_version=`echo "$PACKAGE_VERSION" | sed 's@\.@@'` ;;
Roland McGrathee9d60d2009-04-17 13:18:35 -0700277*) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
278esac
279case "$eu_version" in
280*.*)
281 # 1234.567 -> "1234", "567"
282 eu_extra_version="${eu_version#*.}"
283 eu_version="${eu_version%%.*}"
284 case "$eu_extra_version" in
285 [[0-9]][[0-9]][[0-9]]) ;;
286 [[0-9]][[0-9]]) eu_extra_version="${eu_extra_version}0" ;;
287 [[0-9]]) eu_extra_version="${eu_extra_version}00" ;;
288 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
289 esac
290 ;;
291*)
292 eu_extra_version=000
293 ;;
294esac
295
296case "$eu_version" in
297 0[[0-9]][[0-9]][[0-9]]) eu_version="${eu_version#0}$eu_extra_version" ;;
298[[0-9]][[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}$eu_extra_version" ;;
299[[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}0$eu_extra_version" ;;
Ulrich Drepper2c712522010-06-28 12:10:53 -0700300[[0-9]][[0-9]]) eu_version="${eu_version}00$eu_extra_version";;
Roland McGrathee9d60d2009-04-17 13:18:35 -0700301*) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
Roland McGrathfbc72452008-12-16 17:03:03 -0800302esac
303
Roland McGrath105e3982009-04-19 16:07:45 -0700304# Round up to the next release API (x.y) version.
Roland McGrathe9bf1d32011-10-08 15:14:30 -0700305eu_version=$(( (eu_version + 999) / 1000 ))
Roland McGrath105e3982009-04-19 16:07:45 -0700306
Jan Kratochvil0b867462013-05-30 14:37:38 +0200307AC_CHECK_SIZEOF(long)
308
Kyle McMartinc1e0fcb2014-06-09 21:06:26 +0200309# On aarch64 before glibc 2.20 we would get the kernel user_pt_regs instead
310# of the user_regs_struct from sys/user.h. They are structurally the same
311# but we get either one or the other.
312AC_CHECK_TYPE([struct user_regs_struct],
313 [sys_user_has_user_regs=yes], [sys_user_has_user_regs=no],
314 [[#include <sys/ptrace.h>]
315 [#include <sys/time.h>]
316 [#include <sys/user.h>]])
317if test "$sys_user_has_user_regs" = "yes"; then
318 AC_DEFINE(HAVE_SYS_USER_REGS, 1,
319 [Define to 1 if <sys/user.h> defines struct user_regs_struct])
320fi
321
Jan Kratochvil0b867462013-05-30 14:37:38 +0200322# On a 64-bit host where can can use $CC -m32, we'll run two sets of tests.
323# Likewise in a 32-bit build on a host where $CC -m64 works.
324utrace_BIARCH
325# `$utrace_biarch' will be `-m64' even on an uniarch i386 machine.
Jan Kratochvil8ae9bc92013-12-02 20:54:28 +0100326CC_BIARCH="$CC $utrace_biarch"
Jan Kratochvil0b867462013-05-30 14:37:38 +0200327AC_SUBST([CC_BIARCH])
328
Ulrich Drepperb08d5a82005-07-26 05:00:05 +0000329AC_OUTPUT