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-2013 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.157],[https://bugzilla.redhat.com/],[elfutils])
22 AC_CONFIG_AUX_DIR([config])
23 AC_CONFIG_FILES([config/Makefile])
25 AC_COPYRIGHT([Copyright (C) 1996-2013 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)])
79 AH_TEMPLATE([ENABLE_DWZ], [Defined if libdw should support GNU ref_alt FORM, dwz multi files.])
85 # Only available since automake 1.12
86 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
87 AC_CHECK_TOOL([READELF], [readelf])
88 AC_CHECK_TOOL([NM], [nm])
90 AC_CACHE_CHECK([for gcc with C99 support], ac_cv_c99, [dnl
92 CFLAGS="$CFLAGS -std=gnu99"
93 AC_COMPILE_IFELSE([AC_LANG_SOURCE([dnl
94 int foo (int a) { for (int i = 0; i < a; ++i) if (i % 4) break; int s = a; }])],
95 ac_cv_c99=yes, ac_cv_c99=no)
96 CFLAGS="$old_CFLAGS"])
97 AS_IF([test "x$ac_cv_c99" != xyes],
98 AC_MSG_ERROR([gcc with C99 support required]))
100 AC_CACHE_CHECK([for __thread support], ac_cv_tls, [dnl
101 # Use the same flags that we use for our DSOs, so the test is representative.
102 # Some old compiler/linker/libc combinations fail some ways and not others.
103 save_CFLAGS="$CFLAGS"
104 save_LDFLAGS="$LDFLAGS"
105 CFLAGS="-fpic $CFLAGS"
106 LDFLAGS="-shared -Wl,-z,defs,-z,relro $LDFLAGS"
108 AC_LANG_PROGRAM([[#undef __thread
109 static __thread int a; int foo (int b) { return a + b; }]],
110 [[exit (foo (0));]])],
111 ac_cv_tls=yes, ac_cv_tls=no)
112 CFLAGS="$save_CFLAGS"
113 LDFLAGS="$save_LDFLAGS"])
114 AS_IF([test "x$ac_cv_tls" != xyes],
115 AC_MSG_ERROR([__thread support required]))
117 dnl This test must come as early as possible after the compiler configuration
118 dnl tests, because the choice of the file model can (in principle) affect
119 dnl whether functions and headers are available, whether they work, etc.
122 dnl Enable the linker to be build as a native-only linker. By default it
123 dnl can handle all architectures but this comes at a cost. A native
124 dnl will be slightly faster, small, and has fewer dependencies.
126 AC_ARG_ENABLE([generic],
127 AS_HELP_STRING([--disable-generic], [do not build generic linker]), [dnl
128 if test "$enable_generic" = no; then
131 AC_DEFINE(NATIVE_ELF, 32)
136 AC_MSG_ERROR([no machine-specific linker for this configuration available])
140 AH_TEMPLATE([NATIVE_ELF],
141 [Define to 32 or 64 if a specific implementation is wanted.])
142 AM_CONDITIONAL(NATIVE_LD, test "$native_ld" = yes)
143 dnl The automake generated Makefile cannot deal with macros in the name
144 dnl of files if at any time there is no such file, even if the filename
145 dnl would not be used.
146 AS_IF([test -z "$base_cpu"], [base_cpu=none])
148 dnl Support to work around automake's inflexible dependency generation.
149 dnl See src/Makefile.am for more information.
150 AM_CONDITIONAL(NEVER, false)
152 dnl Enable debugging via mudflap. This option will cause most libraries
153 dnl to be built as archives which are statically linked into the applications.
154 dnl All code, as far as possible, is compiled instrumented to catch all
155 dnl the bugs valgrind is able to catch.
157 AC_ARG_ENABLE([mudflap],
158 AS_HELP_STRING([--enable-mudflap],
159 [build binaries with mudflap instrumentation]), [dnl
160 if test "x$enable_mudflap" = xyes; then
161 # Check whether the compiler support -fmudflap.
163 CFLAGS="$CFLAGS -fmudflap"
164 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[use_mudflap=yes],[use_mudflap=fail])
167 if test "$use_mudflap" = fail; then
168 AC_MSG_FAILURE([--enable-mudflap requires a compiler which understands this option])
170 AM_CONDITIONAL(MUDFLAP, test "$use_mudflap" = yes)
172 dnl enable debugging of branch prediction.
173 AC_ARG_ENABLE([debugpred],
174 AS_HELP_STRING([--enable-debugpred],[build binaries with support to debug branch prediction]),
175 [use_debugpred=$enableval], [use_debugpred=no])
176 case $use_debugpred in
177 yes) use_debugpred=1 ;;
178 *) use_debugpred=0 ;;
180 AC_SUBST([DEBUGPRED], $use_debugpred)
182 dnl Enable gprof suport.
183 AC_ARG_ENABLE([gprof],
184 AS_HELP_STRING([--enable-gprof],[build binaries with gprof support]), [use_gprof=$enableval], [use_gprof=no])
185 if test "$use_gprof" = yes; then
187 LDFLAGS="$LDFLAGS -pg"
189 AM_CONDITIONAL(GPROF, test "$use_gprof" = yes)
191 # Enable gcov suport.
192 AC_ARG_ENABLE([gcov],
193 AS_HELP_STRING([--enable-gcov],[build binaries with gcov support]), [use_gcov=$enableval], [use_gcov=no])
194 if test "$use_gcov" = yes; then
195 CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
196 LDFLAGS="$LDFLAGS -fprofile-arcs"
198 AM_CONDITIONAL(GCOV, test "$use_gcov" = yes)
200 AC_ARG_ENABLE([valgrind],
201 AS_HELP_STRING([--enable-valgrind],[run all tests under valgrind]),
202 [use_valgrind=$enableval], [use_valgrind=no])
203 if test "$use_valgrind" = yes; then
204 AC_CHECK_PROG(HAVE_VALGRIND, valgrind, yes, no)
205 if test "$HAVE_VALGRIND" = "no"; then
206 AC_MSG_ERROR([valgrind not found])
209 AM_CONDITIONAL(USE_VALGRIND, test "$use_valgrind" = yes)
211 AM_CONDITIONAL(BUILD_STATIC, [dnl
212 test "$use_mudflap" = yes -o "$use_gprof" = yes -o "$use_gcov" = yes])
214 AC_ARG_ENABLE([tests-rpath],
215 AS_HELP_STRING([--enable-tests-rpath],[build $ORIGIN-using rpath into tests]),
216 [tests_use_rpath=$enableval], [tests_use_rpath=no])
217 AM_CONDITIONAL(TESTS_RPATH, test "$tests_use_rpath" = yes)
219 LIBEBL_SUBDIR="$PACKAGE"
220 AC_ARG_ENABLE([libebl-subdir],
221 AS_HELP_STRING([--enable-libebl-subdir=DIR],
222 [install libebl_CPU modules in $(libdir)/DIR]), [dnl
223 LIBEBL_SUBDIR="$enable_libebl_subdir"])
224 AC_SUBST([LIBEBL_SUBDIR])
225 AC_DEFINE_UNQUOTED(LIBEBL_SUBDIR, "$LIBEBL_SUBDIR")
226 AH_TEMPLATE([LIBEBL_SUBDIR], [$libdir subdirectory containing libebl modules.])
228 dnl Test for zlib and bzlib, gives ZLIB/BZLIB .am
229 dnl conditional and config.h USE_ZLIB/USE_BZLIB #define.
232 eu_ZIPLIB(zlib,ZLIB,z,gzdirect,gzip)
233 eu_ZIPLIB(bzlib,BZLIB,bz2,BZ2_bzdopen,bzip2)
234 eu_ZIPLIB(lzma,LZMA,lzma,lzma_auto_decoder,[LZMA (xz)])
239 AC_CHECK_LIB([stdc++], [__cxa_demangle], [dnl
240 AC_DEFINE([USE_DEMANGLE], [1], [Defined if demangling is enabled])])
241 AM_CONDITIONAL(DEMANGLE, test "$ac_cv_lib_stdcpp___cxa_demangle" = yes)
243 dnl The directories with content.
246 dnl Commented out for now.
247 dnl AC_CONFIG_FILES([doc/Makefile])
250 AC_CONFIG_FILES([lib/Makefile])
253 AC_CONFIG_FILES([libelf/Makefile])
255 dnl Higher-level ELF support library.
256 AC_CONFIG_FILES([libebl/Makefile])
259 AC_CONFIG_FILES([libdw/Makefile])
261 dnl Higher-level DWARF support library.
262 AC_CONFIG_FILES([libdwfl/Makefile])
264 dnl CPU handling library.
265 AC_CONFIG_FILES([libcpu/Makefile])
267 dnl Assembler library.
268 AM_CONDITIONAL(HAVE_LIBASM, true)dnl Used in tests/Makefile.am, which see.
269 AC_CONFIG_FILES([libasm/Makefile])
271 dnl CPU-specific backend libraries.
272 AC_CONFIG_FILES([backends/Makefile])
275 AC_CONFIG_FILES([src/Makefile po/Makefile.in])
278 AM_CONDITIONAL(STANDALONE, false)dnl Used in tests/Makefile.am, which see.
279 AC_CONFIG_FILES([tests/Makefile])
281 # Get the definitions necessary to create the Makefiles in the po
282 # subdirectories. This is a small subset of the gettext rules.
283 AC_SUBST(USE_NLS, yes)
286 dnl Appended to the config.h file.
287 dnl We hide all kinds of configuration magic in lib/eu-config.h.
288 AH_BOTTOM([#include <eu-config.h>])
290 dnl Version compatibility header.
291 AC_CONFIG_FILES([version.h:config/version.h.in])
292 AC_SUBST([eu_version])
294 # 1.234<whatever> -> 1234<whatever>
295 case "$PACKAGE_VERSION" in
296 [[0-9]].*) eu_version=`echo "$PACKAGE_VERSION" | sed 's@\.@@'` ;;
297 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
299 case "$eu_version" in
301 # 1234.567 -> "1234", "567"
302 eu_extra_version="${eu_version#*.}"
303 eu_version="${eu_version%%.*}"
304 case "$eu_extra_version" in
305 [[0-9]][[0-9]][[0-9]]) ;;
306 [[0-9]][[0-9]]) eu_extra_version="${eu_extra_version}0" ;;
307 [[0-9]]) eu_extra_version="${eu_extra_version}00" ;;
308 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
316 case "$eu_version" in
317 0[[0-9]][[0-9]][[0-9]]) eu_version="${eu_version#0}$eu_extra_version" ;;
318 [[0-9]][[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}$eu_extra_version" ;;
319 [[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}0$eu_extra_version" ;;
320 [[0-9]][[0-9]]) eu_version="${eu_version}00$eu_extra_version";;
321 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
324 # Round up to the next release API (x.y) version.
325 eu_version=$(( (eu_version + 999) / 1000 ))