1 dnl Process this file with autoconf to produce a configure script.
2 dnl Configure input file for elfutils. -*-autoconf-*-
4 dnl Copyright (C) 1996-2014 Red Hat, Inc.
6 dnl This file is part of elfutils.
8 dnl This file is free software; you can redistribute it and/or modify
9 dnl it under the terms of the GNU General Public License as published by
10 dnl the Free Software Foundation; either version 3 of the License, or
11 dnl (at your option) any later version.
13 dnl elfutils is distributed in the hope that it will be useful, but
14 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
15 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 dnl GNU General Public License for more details.
18 dnl You should have received a copy of the GNU General Public License
19 dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
20 AC_INIT([elfutils],[0.158],[https://bugzilla.redhat.com/],[elfutils])
22 AC_CONFIG_AUX_DIR([config])
23 AC_CONFIG_FILES([config/Makefile])
25 AC_COPYRIGHT([Copyright (C) 1996-2014 Red Hat, Inc.])
26 AC_PREREQ(2.63) dnl Minimum Autoconf version required.
28 dnl We use GNU make extensions; automake 1.10 defaults to -Wportability.
29 AM_INIT_AUTOMAKE([gnits 1.11 -Wno-portability dist-bzip2 no-dist-gzip parallel-tests])
32 dnl Unique ID for this build.
33 MODVERSION="Build on $(hostname) $(date +%FT%R:%S%z)"
34 AC_SUBST([MODVERSION])
35 AC_DEFINE_UNQUOTED(MODVERSION, "$MODVERSION")
36 AH_TEMPLATE([MODVERSION], [Identifier for modules in the build.])
38 AC_CONFIG_SRCDIR([libelf/libelf.h])
39 AC_CONFIG_FILES([Makefile])
40 AC_CONFIG_HEADERS([config.h])
42 AC_CONFIG_MACRO_DIR([m4])
43 AC_CONFIG_FILES([m4/Makefile])
45 dnl The RPM spec file. We substitute a few values in the file.
46 AC_CONFIG_FILES([elfutils.spec:config/elfutils.spec.in])
51 AC_ARG_ENABLE(deterministic-archives,
52 [AS_HELP_STRING([--enable-deterministic-archives],
53 [ar and ranlib default to -D behavior])], [
54 if test "${enableval}" = no; then
55 default_ar_deterministic=false
57 default_ar_deterministic=true
58 fi], [default_ar_deterministic=false])
59 AC_DEFINE_UNQUOTED(DEFAULT_AR_DETERMINISTIC, $default_ar_deterministic,
60 [Should ar and ranlib use -D behavior by default?])
62 AC_ARG_ENABLE([thread-safety],
63 AS_HELP_STRING([--enable-thread-safety],
64 [enable thread safety of libraries EXPERIMENTAL]),
65 use_locks=$enableval, use_locks=no)
66 AM_CONDITIONAL(USE_LOCKS, test "$use_locks" = yes)
67 AS_IF([test "$use_locks" = yes], [AC_DEFINE(USE_LOCKS)])
68 AS_IF([test "$use_locks" = yes],
69 [AC_MSG_WARN([thread-safety is EXPERIMENTAL tests might fail.])])
71 AH_TEMPLATE([USE_LOCKS], [Defined if libraries should be thread-safe.])
74 AS_HELP_STRING([--enable-dwz], [enable experimental GNU ref_alt FORM, dwz multi file support in libdw]),
75 enable_dwz=$enableval, enable_dwz=no)
76 AM_CONDITIONAL(ENABLE_DWZ, test "$enable_dwz" = yes)
77 AS_IF([test "$enable_dwz" = yes], [AC_DEFINE(ENABLE_DWZ)])
78 AS_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])])
81 AH_TEMPLATE([ENABLE_DWZ], [Defined if libdw should support GNU ref_alt FORM, dwz multi files.])
87 # Only available since automake 1.12
88 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
89 AC_CHECK_TOOL([READELF], [readelf])
90 AC_CHECK_TOOL([NM], [nm])
92 AC_CACHE_CHECK([for gcc with C99 support], ac_cv_c99, [dnl
94 CFLAGS="$CFLAGS -std=gnu99"
95 AC_COMPILE_IFELSE([AC_LANG_SOURCE([dnl
96 int foo (int a) { for (int i = 0; i < a; ++i) if (i % 4) break; int s = a; }])],
97 ac_cv_c99=yes, ac_cv_c99=no)
98 CFLAGS="$old_CFLAGS"])
99 AS_IF([test "x$ac_cv_c99" != xyes],
100 AC_MSG_ERROR([gcc with C99 support required]))
102 AC_CACHE_CHECK([for __thread support], ac_cv_tls, [dnl
103 # 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.
105 save_CFLAGS="$CFLAGS"
106 save_LDFLAGS="$LDFLAGS"
107 CFLAGS="-fpic $CFLAGS"
108 LDFLAGS="-shared -Wl,-z,defs,-z,relro $LDFLAGS"
110 AC_LANG_PROGRAM([[#undef __thread
111 static __thread int a; int foo (int b) { return a + b; }]],
112 [[exit (foo (0));]])],
113 ac_cv_tls=yes, ac_cv_tls=no)
114 CFLAGS="$save_CFLAGS"
115 LDFLAGS="$save_LDFLAGS"])
116 AS_IF([test "x$ac_cv_tls" != xyes],
117 AC_MSG_ERROR([__thread support required]))
119 dnl This test must come as early as possible after the compiler configuration
120 dnl tests, because the choice of the file model can (in principle) affect
121 dnl whether functions and headers are available, whether they work, etc.
124 dnl Enable the linker to be build as a native-only linker. By default it
125 dnl can handle all architectures but this comes at a cost. A native
126 dnl will be slightly faster, small, and has fewer dependencies.
128 AC_ARG_ENABLE([generic],
129 AS_HELP_STRING([--disable-generic], [do not build generic linker]), [dnl
130 if test "$enable_generic" = no; then
133 AC_DEFINE(NATIVE_ELF, 32)
138 AC_MSG_ERROR([no machine-specific linker for this configuration available])
142 AH_TEMPLATE([NATIVE_ELF],
143 [Define to 32 or 64 if a specific implementation is wanted.])
144 AM_CONDITIONAL(NATIVE_LD, test "$native_ld" = yes)
145 dnl The automake generated Makefile cannot deal with macros in the name
146 dnl of files if at any time there is no such file, even if the filename
147 dnl would not be used.
148 AS_IF([test -z "$base_cpu"], [base_cpu=none])
150 dnl Support to work around automake's inflexible dependency generation.
151 dnl See src/Makefile.am for more information.
152 AM_CONDITIONAL(NEVER, false)
154 dnl enable debugging of branch prediction.
155 AC_ARG_ENABLE([debugpred],
156 AS_HELP_STRING([--enable-debugpred],[build binaries with support to debug branch prediction]),
157 [use_debugpred=$enableval], [use_debugpred=no])
158 case $use_debugpred in
159 yes) use_debugpred=1 ;;
160 *) use_debugpred=0 ;;
162 AC_SUBST([DEBUGPRED], $use_debugpred)
164 dnl Enable gprof suport.
165 AC_ARG_ENABLE([gprof],
166 AS_HELP_STRING([--enable-gprof],[build binaries with gprof support]), [use_gprof=$enableval], [use_gprof=no])
167 if test "$use_gprof" = yes; then
169 LDFLAGS="$LDFLAGS -pg"
171 AM_CONDITIONAL(GPROF, test "$use_gprof" = yes)
173 # Enable gcov suport.
174 AC_ARG_ENABLE([gcov],
175 AS_HELP_STRING([--enable-gcov],[build binaries with gcov support]), [use_gcov=$enableval], [use_gcov=no])
176 if test "$use_gcov" = yes; then
177 CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
178 LDFLAGS="$LDFLAGS -fprofile-arcs"
180 AM_CONDITIONAL(GCOV, test "$use_gcov" = yes)
182 AC_ARG_ENABLE([valgrind],
183 AS_HELP_STRING([--enable-valgrind],[run all tests under valgrind]),
184 [use_valgrind=$enableval], [use_valgrind=no])
185 if test "$use_valgrind" = yes; then
186 AC_CHECK_PROG(HAVE_VALGRIND, valgrind, yes, no)
187 if test "$HAVE_VALGRIND" = "no"; then
188 AC_MSG_ERROR([valgrind not found])
191 AM_CONDITIONAL(USE_VALGRIND, test "$use_valgrind" = yes)
193 AM_CONDITIONAL(BUILD_STATIC, [dnl
194 test "$use_gprof" = yes -o "$use_gcov" = yes])
196 AC_ARG_ENABLE([tests-rpath],
197 AS_HELP_STRING([--enable-tests-rpath],[build $ORIGIN-using rpath into tests]),
198 [tests_use_rpath=$enableval], [tests_use_rpath=no])
199 AM_CONDITIONAL(TESTS_RPATH, test "$tests_use_rpath" = yes)
201 LIBEBL_SUBDIR="$PACKAGE"
202 AC_ARG_ENABLE([libebl-subdir],
203 AS_HELP_STRING([--enable-libebl-subdir=DIR],
204 [install libebl_CPU modules in $(libdir)/DIR]), [dnl
205 LIBEBL_SUBDIR="$enable_libebl_subdir"])
206 AC_SUBST([LIBEBL_SUBDIR])
207 AC_DEFINE_UNQUOTED(LIBEBL_SUBDIR, "$LIBEBL_SUBDIR")
208 AH_TEMPLATE([LIBEBL_SUBDIR], [$libdir subdirectory containing libebl modules.])
210 dnl Test for zlib and bzlib, gives ZLIB/BZLIB .am
211 dnl conditional and config.h USE_ZLIB/USE_BZLIB #define.
214 eu_ZIPLIB(zlib,ZLIB,z,gzdirect,gzip)
215 eu_ZIPLIB(bzlib,BZLIB,bz2,BZ2_bzdopen,bzip2)
216 eu_ZIPLIB(lzma,LZMA,lzma,lzma_auto_decoder,[LZMA (xz)])
221 AC_CHECK_LIB([stdc++], [__cxa_demangle], [dnl
222 AC_DEFINE([USE_DEMANGLE], [1], [Defined if demangling is enabled])])
223 AM_CONDITIONAL(DEMANGLE, test "$ac_cv_lib_stdcpp___cxa_demangle" = yes)
225 dnl The directories with content.
228 dnl Commented out for now.
229 dnl AC_CONFIG_FILES([doc/Makefile])
232 AC_CONFIG_FILES([lib/Makefile])
235 AC_CONFIG_FILES([libelf/Makefile])
237 dnl Higher-level ELF support library.
238 AC_CONFIG_FILES([libebl/Makefile])
240 dnl DWARF-ELF Lower-level Functions support library.
241 AC_CONFIG_FILES([libdwelf/Makefile])
244 AC_CONFIG_FILES([libdw/Makefile])
246 dnl Higher-level DWARF support library.
247 AC_CONFIG_FILES([libdwfl/Makefile])
249 dnl CPU handling library.
250 AC_CONFIG_FILES([libcpu/Makefile])
252 dnl Assembler library.
253 AM_CONDITIONAL(HAVE_LIBASM, true)dnl Used in tests/Makefile.am, which see.
254 AC_CONFIG_FILES([libasm/Makefile])
256 dnl CPU-specific backend libraries.
257 AC_CONFIG_FILES([backends/Makefile])
260 AC_CONFIG_FILES([src/Makefile po/Makefile.in])
263 AM_CONDITIONAL(STANDALONE, false)dnl Used in tests/Makefile.am, which see.
264 AC_CONFIG_FILES([tests/Makefile])
266 # Get the definitions necessary to create the Makefiles in the po
267 # subdirectories. This is a small subset of the gettext rules.
268 AC_SUBST(USE_NLS, yes)
271 dnl Appended to the config.h file.
272 dnl We hide all kinds of configuration magic in lib/eu-config.h.
273 AH_BOTTOM([#include <eu-config.h>])
275 dnl Version compatibility header.
276 AC_CONFIG_FILES([version.h:config/version.h.in])
277 AC_SUBST([eu_version])
279 # 1.234<whatever> -> 1234<whatever>
280 case "$PACKAGE_VERSION" in
281 [[0-9]].*) eu_version=`echo "$PACKAGE_VERSION" | sed 's@\.@@'` ;;
282 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
284 case "$eu_version" in
286 # 1234.567 -> "1234", "567"
287 eu_extra_version="${eu_version#*.}"
288 eu_version="${eu_version%%.*}"
289 case "$eu_extra_version" in
290 [[0-9]][[0-9]][[0-9]]) ;;
291 [[0-9]][[0-9]]) eu_extra_version="${eu_extra_version}0" ;;
292 [[0-9]]) eu_extra_version="${eu_extra_version}00" ;;
293 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
301 case "$eu_version" in
302 0[[0-9]][[0-9]][[0-9]]) eu_version="${eu_version#0}$eu_extra_version" ;;
303 [[0-9]][[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}$eu_extra_version" ;;
304 [[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}0$eu_extra_version" ;;
305 [[0-9]][[0-9]]) eu_version="${eu_version}00$eu_extra_version";;
306 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
309 # Round up to the next release API (x.y) version.
310 eu_version=$(( (eu_version + 999) / 1000 ))
312 AC_CHECK_SIZEOF(long)
314 # On a 64-bit host where can can use $CC -m32, we'll run two sets of tests.
315 # Likewise in a 32-bit build on a host where $CC -m64 works.
317 # `$utrace_biarch' will be `-m64' even on an uniarch i386 machine.
318 CC_BIARCH="$CC $utrace_biarch"
319 AC_SUBST([CC_BIARCH])