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-2012 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.155],[https://bugzilla.redhat.com/],[elfutils])
22 AC_CONFIG_AUX_DIR([config])
23 AC_CONFIG_FILES([config/Makefile])
25 AC_COPYRIGHT([Copyright (C) 1996-2012 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.8 -Wno-portability dist-bzip2 no-dist-gzip])
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], [enable thread safety of libraries]),
64 use_locks=$enableval, use_locks=no)
65 AM_CONDITIONAL(USE_LOCKS, test "$use_locks" = yes)
66 AS_IF([test "$use_locks" = yes], [AC_DEFINE(USE_LOCKS)])
68 AH_TEMPLATE([USE_LOCKS], [Defined if libraries should be thread-safe.])
71 AS_HELP_STRING([--enable-dwz], [enable experimental GNU ref_alt FORM, dwz multi file support in libdw]),
72 enable_dwz=$enableval, enable_dwz=no)
73 AM_CONDITIONAL(ENABLE_DWZ, test "$enable_dwz" = yes)
74 AS_IF([test "$enable_dwz" = yes], [AC_DEFINE(ENABLE_DWZ)])
76 AH_TEMPLATE([ENABLE_DWZ], [Defined if libdw should support GNU ref_alt FORM, dwz multi files.])
83 AC_CACHE_CHECK([for gcc with C99 support], ac_cv_c99, [dnl
85 CFLAGS="$CFLAGS -std=gnu99"
86 AC_COMPILE_IFELSE([AC_LANG_SOURCE([dnl
87 int foo (int a) { for (int i = 0; i < a; ++i) if (i % 4) break; int s = a; }])],
88 ac_cv_c99=yes, ac_cv_c99=no)
89 CFLAGS="$old_CFLAGS"])
90 AS_IF([test "x$ac_cv_c99" != xyes],
91 AC_MSG_ERROR([gcc with C99 support required]))
93 AC_CACHE_CHECK([for __thread support], ac_cv_tls, [dnl
94 # Use the same flags that we use for our DSOs, so the test is representative.
95 # Some old compiler/linker/libc combinations fail some ways and not others.
97 save_LDFLAGS="$LDFLAGS"
98 CFLAGS="-fpic $CFLAGS"
99 LDFLAGS="-shared -Wl,-z,defs,-z,relro $LDFLAGS"
101 AC_LANG_PROGRAM([[#undef __thread
102 static __thread int a; int foo (int b) { return a + b; }]],
103 [[exit (foo (0));]])],
104 ac_cv_tls=yes, ac_cv_tls=no)
105 CFLAGS="$save_CFLAGS"
106 LDFLAGS="$save_LDFLAGS"])
107 AS_IF([test "x$ac_cv_tls" != xyes],
108 AC_MSG_ERROR([__thread support required]))
110 dnl This test must come as early as possible after the compiler configuration
111 dnl tests, because the choice of the file model can (in principle) affect
112 dnl whether functions and headers are available, whether they work, etc.
115 dnl Enable the linker to be build as a native-only linker. By default it
116 dnl can handle all architectures but this comes at a cost. A native
117 dnl will be slightly faster, small, and has fewer dependencies.
119 AC_ARG_ENABLE([generic],
120 AS_HELP_STRING([--disable-generic], [do not build generic linker]), [dnl
121 if test "$enable_generic" = no; then
124 AC_DEFINE(NATIVE_ELF, 32)
129 AC_MSG_ERROR([no machine-specific linker for this configuration available])
133 AH_TEMPLATE([NATIVE_ELF],
134 [Define to 32 or 64 if a specific implementation is wanted.])
135 AM_CONDITIONAL(NATIVE_LD, test "$native_ld" = yes)
136 dnl The automake generated Makefile cannot deal with macros in the name
137 dnl of files if at any time there is no such file, even if the filename
138 dnl would not be used.
139 AS_IF([test -z "$base_cpu"], [base_cpu=none])
141 dnl Support to work around automake's inflexible dependency generation.
142 dnl See src/Makefile.am for more information.
143 AM_CONDITIONAL(NEVER, false)
145 dnl Enable debugging via mudflap. This option will cause most libraries
146 dnl to be built as archives which are statically linked into the applications.
147 dnl All code, as far as possible, is compiled instrumented to catch all
148 dnl the bugs valgrind is able to catch.
150 AC_ARG_ENABLE([mudflap],
151 AS_HELP_STRING([--enable-mudflap],
152 [build binaries with mudflap instrumentation]), [dnl
153 if test "x$enable_mudflap" = xyes; then
154 # Check whether the compiler support -fmudflap.
156 CFLAGS="$CFLAGS -fmudflap"
157 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[use_mudflap=yes],[use_mudflap=fail])
160 if test "$use_mudflap" = fail; then
161 AC_MSG_FAILURE([--enable-mudflap requires a compiler which understands this option])
163 AM_CONDITIONAL(MUDFLAP, test "$use_mudflap" = yes)
165 dnl enable debugging of branch prediction.
166 AC_ARG_ENABLE([debugpred],
167 AS_HELP_STRING([--enable-debugpred],[build binaries with support to debug branch prediction]),
168 [use_debugpred=$enableval], [use_debugpred=no])
169 case $use_debugpred in
170 yes) use_debugpred=1 ;;
171 *) use_debugpred=0 ;;
173 AC_SUBST([DEBUGPRED], $use_debugpred)
175 dnl Enable gprof suport.
176 AC_ARG_ENABLE([gprof],
177 AS_HELP_STRING([--enable-gprof],[build binaries with gprof support]), [use_gprof=$enableval], [use_gprof=no])
178 if test "$use_gprof" = yes; then
180 LDFLAGS="$LDFLAGS -pg"
182 AM_CONDITIONAL(GPROF, test "$use_gprof" = yes)
184 # Enable gcov suport.
185 AC_ARG_ENABLE([gcov],
186 AS_HELP_STRING([--enable-gcov],[build binaries with gcov support]), [use_gcov=$enableval], [use_gcov=no])
187 if test "$use_gcov" = yes; then
188 CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
189 LDFLAGS="$LDFLAGS -fprofile-arcs"
191 AM_CONDITIONAL(GCOV, test "$use_gcov" = yes)
193 AC_ARG_ENABLE([valgrind],
194 AS_HELP_STRING([--enable-valgrind],[run all tests under valgrind]),
195 [use_valgrind=$enableval], [use_valgrind=no])
196 if test "$use_valgrind" = yes; then
197 AC_CHECK_PROG(HAVE_VALGRIND, valgrind, yes, no)
198 if test "$HAVE_VALGRIND" = "no"; then
199 AC_MSG_ERROR([valgrind not found])
202 AM_CONDITIONAL(USE_VALGRIND, test "$use_valgrind" = yes)
204 AM_CONDITIONAL(BUILD_STATIC, [dnl
205 test "$use_mudflap" = yes -o "$use_gprof" = yes -o "$use_gcov" = yes])
207 AC_ARG_ENABLE([tests-rpath],
208 AS_HELP_STRING([--enable-tests-rpath],[build $ORIGIN-using rpath into tests]),
209 [tests_use_rpath=$enableval], [tests_use_rpath=no])
210 AM_CONDITIONAL(TESTS_RPATH, test "$tests_use_rpath" = yes)
212 LIBEBL_SUBDIR="$PACKAGE"
213 AC_ARG_ENABLE([libebl-subdir],
214 AS_HELP_STRING([--enable-libebl-subdir=DIR],
215 [install libebl_CPU modules in $(libdir)/DIR]), [dnl
216 LIBEBL_SUBDIR="$enable_libebl_subdir"])
217 AC_SUBST([LIBEBL_SUBDIR])
218 AC_DEFINE_UNQUOTED(LIBEBL_SUBDIR, "$LIBEBL_SUBDIR")
219 AH_TEMPLATE([LIBEBL_SUBDIR], [$libdir subdirectory containing libebl modules.])
221 dnl Test for zlib and bzlib, gives ZLIB/BZLIB .am
222 dnl conditional and config.h USE_ZLIB/USE_BZLIB #define.
225 eu_ZIPLIB(zlib,ZLIB,z,gzdirect,gzip)
226 eu_ZIPLIB(bzlib,BZLIB,bz2,BZ2_bzdopen,bzip2)
227 eu_ZIPLIB(lzma,LZMA,lzma,lzma_auto_decoder,[LZMA (xz)])
232 AC_CHECK_LIB([stdc++], [__cxa_demangle], [dnl
233 AC_DEFINE([USE_DEMANGLE], [1], [Defined if demangling is enabled])])
234 AM_CONDITIONAL(DEMANGLE, test "$ac_cv_lib_stdcpp___cxa_demangle" = yes)
236 dnl The directories with content.
239 dnl Commented out for now.
240 dnl AC_CONFIG_FILES([doc/Makefile])
243 AC_CONFIG_FILES([lib/Makefile])
246 AC_CONFIG_FILES([libelf/Makefile])
248 dnl Higher-level ELF support library.
249 AC_CONFIG_FILES([libebl/Makefile])
252 AC_CONFIG_FILES([libdw/Makefile])
254 dnl Higher-level DWARF support library.
255 AC_CONFIG_FILES([libdwfl/Makefile])
257 dnl CPU handling library.
258 AC_CONFIG_FILES([libcpu/Makefile])
260 dnl Assembler library.
261 AM_CONDITIONAL(HAVE_LIBASM, true)dnl Used in tests/Makefile.am, which see.
262 AC_CONFIG_FILES([libasm/Makefile])
264 dnl CPU-specific backend libraries.
265 AC_CONFIG_FILES([backends/Makefile])
268 AC_CONFIG_FILES([src/Makefile po/Makefile.in])
271 AM_CONDITIONAL(STANDALONE, false)dnl Used in tests/Makefile.am, which see.
272 AC_CONFIG_FILES([tests/Makefile])
274 # Get the definitions necessary to create the Makefiles in the po
275 # subdirectories. This is a small subset of the gettext rules.
276 AC_SUBST(USE_NLS, yes)
279 dnl Appended to the config.h file.
280 dnl We hide all kinds of configuration magic in lib/eu-config.h.
281 AH_BOTTOM([#include <eu-config.h>])
283 dnl Version compatibility header.
284 AC_CONFIG_FILES([version.h:config/version.h.in])
285 AC_SUBST([eu_version])
287 # 1.234<whatever> -> 1234<whatever>
288 case "$PACKAGE_VERSION" in
289 [[0-9]].*) eu_version=`echo "$PACKAGE_VERSION" | sed 's@\.@@'` ;;
290 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
292 case "$eu_version" in
294 # 1234.567 -> "1234", "567"
295 eu_extra_version="${eu_version#*.}"
296 eu_version="${eu_version%%.*}"
297 case "$eu_extra_version" in
298 [[0-9]][[0-9]][[0-9]]) ;;
299 [[0-9]][[0-9]]) eu_extra_version="${eu_extra_version}0" ;;
300 [[0-9]]) eu_extra_version="${eu_extra_version}00" ;;
301 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
309 case "$eu_version" in
310 0[[0-9]][[0-9]][[0-9]]) eu_version="${eu_version#0}$eu_extra_version" ;;
311 [[0-9]][[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}$eu_extra_version" ;;
312 [[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}0$eu_extra_version" ;;
313 [[0-9]][[0-9]]) eu_version="${eu_version}00$eu_extra_version";;
314 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
317 # Round up to the next release API (x.y) version.
318 eu_version=$(( (eu_version + 999) / 1000 ))