blob: 0e67a792a3367f84c09b276fb528ac00ed7b7ef5 [file] [log] [blame]
Ben Cheng25b3c042013-11-20 14:45:36 -08001dnl Process this file with autoconf to produce a configure script.
2dnl Configure input file for elfutils. -*-autoconf-*-
3dnl
Elliott Hughes03333822015-02-18 22:19:45 -08004dnl Copyright (C) 1996-2014 Red Hat, Inc.
Ben Cheng25b3c042013-11-20 14:45:36 -08005dnl
Elliott Hughes03333822015-02-18 22:19:45 -08006dnl This file is part of elfutils.
Ben Cheng25b3c042013-11-20 14:45:36 -08007dnl
Elliott Hughes03333822015-02-18 22:19:45 -08008dnl 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.
Ben Cheng25b3c042013-11-20 14:45:36 -080012dnl
Elliott Hughes03333822015-02-18 22:19:45 -080013dnl 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.
Ben Cheng25b3c042013-11-20 14:45:36 -080017dnl
Elliott Hughes03333822015-02-18 22:19:45 -080018dnl 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/>.
20AC_INIT([elfutils],[0.161],[https://bugzilla.redhat.com/],[elfutils])
Ben Cheng25b3c042013-11-20 14:45:36 -080021
22AC_CONFIG_AUX_DIR([config])
23AC_CONFIG_FILES([config/Makefile])
24
Elliott Hughes03333822015-02-18 22:19:45 -080025AC_COPYRIGHT([Copyright (C) 1996-2014 Red Hat, Inc.])
Ben Cheng25b3c042013-11-20 14:45:36 -080026AC_PREREQ(2.63) dnl Minimum Autoconf version required.
27
28dnl We use GNU make extensions; automake 1.10 defaults to -Wportability.
Elliott Hughes03333822015-02-18 22:19:45 -080029AM_INIT_AUTOMAKE([gnits 1.11 -Wno-portability dist-bzip2 no-dist-gzip parallel-tests])
Ben Cheng25b3c042013-11-20 14:45:36 -080030AM_MAINTAINER_MODE
31
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
51AC_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
62AC_ARG_ENABLE([thread-safety],
Elliott Hughes03333822015-02-18 22:19:45 -080063AS_HELP_STRING([--enable-thread-safety],
64 [enable thread safety of libraries EXPERIMENTAL]),
65 use_locks=$enableval, use_locks=no)
Ben Cheng25b3c042013-11-20 14:45:36 -080066AM_CONDITIONAL(USE_LOCKS, test "$use_locks" = yes)
67AS_IF([test "$use_locks" = yes], [AC_DEFINE(USE_LOCKS)])
Elliott Hughes03333822015-02-18 22:19:45 -080068AS_IF([test "$use_locks" = yes],
69 [AC_MSG_WARN([thread-safety is EXPERIMENTAL tests might fail.])])
Ben Cheng25b3c042013-11-20 14:45:36 -080070
71AH_TEMPLATE([USE_LOCKS], [Defined if libraries should be thread-safe.])
72
73AC_PROG_CC
74AC_PROG_RANLIB
75AC_PROG_YACC
76AM_PROG_LEX
Elliott Hughes03333822015-02-18 22:19:45 -080077# Only available since automake 1.12
78m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
79AC_CHECK_TOOL([READELF], [readelf])
80AC_CHECK_TOOL([NM], [nm])
Ben Cheng25b3c042013-11-20 14:45:36 -080081
82AC_CACHE_CHECK([for gcc with C99 support], ac_cv_c99, [dnl
83old_CFLAGS="$CFLAGS"
84CFLAGS="$CFLAGS -std=gnu99"
85AC_COMPILE_IFELSE([AC_LANG_SOURCE([dnl
86int foo (int a) { for (int i = 0; i < a; ++i) if (i % 4) break; int s = a; }])],
87 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
92AC_CACHE_CHECK([for __thread support], ac_cv_tls, [dnl
93# 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"
99AC_LINK_IFELSE([dnl
100AC_LANG_PROGRAM([[#undef __thread
101static __thread int a; int foo (int b) { return a + b; }]],
102 [[exit (foo (0));]])],
103 ac_cv_tls=yes, ac_cv_tls=no)
104CFLAGS="$save_CFLAGS"
105LDFLAGS="$save_LDFLAGS"])
106AS_IF([test "x$ac_cv_tls" != xyes],
107 AC_MSG_ERROR([__thread support required]))
108
109dnl 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)
140dnl Support to work around automake's inflexible dependency generation.
141dnl See src/Makefile.am for more information.
142AM_CONDITIONAL(NEVER, false)
143
Ben Cheng25b3c042013-11-20 14:45:36 -0800144dnl enable debugging of branch prediction.
145AC_ARG_ENABLE([debugpred],
146AS_HELP_STRING([--enable-debugpred],[build binaries with support to debug branch prediction]),
147[use_debugpred=$enableval], [use_debugpred=no])
148case $use_debugpred in
149 yes) use_debugpred=1 ;;
150 *) use_debugpred=0 ;;
151esac
152AC_SUBST([DEBUGPRED], $use_debugpred)
153
154dnl Enable gprof suport.
155AC_ARG_ENABLE([gprof],
156AS_HELP_STRING([--enable-gprof],[build binaries with gprof support]), [use_gprof=$enableval], [use_gprof=no])
157if test "$use_gprof" = yes; then
158 CFLAGS="$CFLAGS -pg"
159 LDFLAGS="$LDFLAGS -pg"
160fi
161AM_CONDITIONAL(GPROF, test "$use_gprof" = yes)
162
163# Enable gcov suport.
164AC_ARG_ENABLE([gcov],
165AS_HELP_STRING([--enable-gcov],[build binaries with gcov support]), [use_gcov=$enableval], [use_gcov=no])
166if test "$use_gcov" = yes; then
167 CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
168 LDFLAGS="$LDFLAGS -fprofile-arcs"
169fi
170AM_CONDITIONAL(GCOV, test "$use_gcov" = yes)
171
Elliott Hughes03333822015-02-18 22:19:45 -0800172AC_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
Ben Cheng25b3c042013-11-20 14:45:36 -0800183AM_CONDITIONAL(BUILD_STATIC, [dnl
Elliott Hughes03333822015-02-18 22:19:45 -0800184test "$use_gprof" = yes -o "$use_gcov" = yes])
Ben Cheng25b3c042013-11-20 14:45:36 -0800185
186AC_ARG_ENABLE([tests-rpath],
187AS_HELP_STRING([--enable-tests-rpath],[build $ORIGIN-using rpath into tests]),
188 [tests_use_rpath=$enableval], [tests_use_rpath=no])
189AM_CONDITIONAL(TESTS_RPATH, test "$tests_use_rpath" = yes)
190
191LIBEBL_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
200dnl Test for zlib and bzlib, gives ZLIB/BZLIB .am
201dnl conditional and config.h USE_ZLIB/USE_BZLIB #define.
202save_LIBS="$LIBS"
203LIBS=
204eu_ZIPLIB(zlib,ZLIB,z,gzdirect,gzip)
205eu_ZIPLIB(bzlib,BZLIB,bz2,BZ2_bzdopen,bzip2)
206eu_ZIPLIB(lzma,LZMA,lzma,lzma_auto_decoder,[LZMA (xz)])
207zip_LIBS="$LIBS"
208LIBS="$save_LIBS"
209AC_SUBST([zip_LIBS])
210
211AC_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
Elliott Hughes03333822015-02-18 22:19:45 -0800215AC_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
Ben Cheng25b3c042013-11-20 14:45:36 -0800220dnl 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.
230AC_CONFIG_FILES([libelf/Makefile])
231
232dnl Higher-level ELF support library.
233AC_CONFIG_FILES([libebl/Makefile])
234
Elliott Hughes03333822015-02-18 22:19:45 -0800235dnl DWARF-ELF Lower-level Functions support library.
236AC_CONFIG_FILES([libdwelf/Makefile])
237
Ben Cheng25b3c042013-11-20 14:45:36 -0800238dnl 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.
248AM_CONDITIONAL(HAVE_LIBASM, true)dnl Used in tests/Makefile.am, which see.
249AC_CONFIG_FILES([libasm/Makefile])
250
251dnl CPU-specific backend libraries.
252AC_CONFIG_FILES([backends/Makefile])
253
254dnl Tools.
255AC_CONFIG_FILES([src/Makefile po/Makefile.in])
256
257dnl Test suite.
258AM_CONDITIONAL(STANDALONE, false)dnl Used in tests/Makefile.am, which see.
259AC_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
266dnl 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>])
269
270dnl Version compatibility header.
271AC_CONFIG_FILES([version.h:config/version.h.in])
272AC_SUBST([eu_version])
273
274# 1.234<whatever> -> 1234<whatever>
275case "$PACKAGE_VERSION" in
276[[0-9]].*) eu_version=`echo "$PACKAGE_VERSION" | sed 's@\.@@'` ;;
277*) 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" ;;
300[[0-9]][[0-9]]) eu_version="${eu_version}00$eu_extra_version";;
301*) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
302esac
303
304# Round up to the next release API (x.y) version.
305eu_version=$(( (eu_version + 999) / 1000 ))
306
Elliott Hughes03333822015-02-18 22:19:45 -0800307AC_CHECK_SIZEOF(long)
308
309# 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
322# 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.
326CC_BIARCH="$CC $utrace_biarch"
327AC_SUBST([CC_BIARCH])
328
Ben Cheng25b3c042013-11-20 14:45:36 -0800329AC_OUTPUT