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 program is free software; you can redistribute it and/or modify
7 dnl it under the terms of the GNU General Public License as published by
8 dnl the Free Software Foundation, version 2.
10 dnl This program is distributed in the hope that it will be useful,
11 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
12 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 dnl GNU General Public License for more details.
15 dnl You should have received a copy of the GNU General Public License
16 dnl along with this program; if not, write to the Free Software Foundation,
17 dnl Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
19 AC_INIT([Red Hat elfutils],[0.153],[http://bugzilla.redhat.com/bugzilla/],[elfutils])
21 AC_CONFIG_AUX_DIR([config])
22 AC_CONFIG_FILES([config/Makefile])
24 AC_COPYRIGHT([Copyright (C) 1996-2012 Red Hat, Inc.])
25 AC_PREREQ(2.63) dnl Minimum Autoconf version required.
27 dnl We use GNU make extensions; automake 1.10 defaults to -Wportability.
28 AM_INIT_AUTOMAKE([gnits 1.8 -Wno-portability dist-bzip2 no-dist-gzip])
31 dnl Unique ID for this build.
32 MODVERSION="Build on $(hostname) $(date +%FT%R:%S%z)"
33 AC_SUBST([MODVERSION])
34 AC_DEFINE_UNQUOTED(MODVERSION, "$MODVERSION")
35 AH_TEMPLATE([MODVERSION], [Identifier for modules in the build.])
37 AC_CONFIG_SRCDIR([libelf/libelf.h])
38 AC_CONFIG_FILES([Makefile])
39 AC_CONFIG_HEADERS([config.h])
41 AC_CONFIG_MACRO_DIR([m4])
42 AC_CONFIG_FILES([m4/Makefile])
44 dnl The RPM spec file. We substitute a few values in the file.
45 AC_CONFIG_FILES([elfutils.spec:config/elfutils.spec.in])
50 AC_ARG_ENABLE(deterministic-archives,
51 [AS_HELP_STRING([--enable-deterministic-archives],
52 [ar and ranlib default to -D behavior])], [
53 if test "${enableval}" = no; then
54 default_ar_deterministic=false
56 default_ar_deterministic=true
57 fi], [default_ar_deterministic=false])
58 AC_DEFINE_UNQUOTED(DEFAULT_AR_DETERMINISTIC, $default_ar_deterministic,
59 [Should ar and ranlib use -D behavior by default?])
61 AC_ARG_ENABLE([thread-safety],
62 AS_HELP_STRING([--enable-thread-safety], [enable thread safety of libraries]),
63 use_locks=$enableval, use_locks=no)
64 AM_CONDITIONAL(USE_LOCKS, test "$use_locks" = yes)
65 AS_IF([test "$use_locks" = yes], [AC_DEFINE(USE_LOCKS)])
67 AH_TEMPLATE([USE_LOCKS], [Defined if libraries should be thread-safe.])
74 AC_CACHE_CHECK([for gcc with C99 support], ac_cv_c99, [dnl
76 CFLAGS="$CFLAGS -std=gnu99"
77 AC_COMPILE_IFELSE([AC_LANG_SOURCE([dnl
78 int foo (int a) { for (int i = 0; i < a; ++i) if (i % 4) break; int s = a; }])],
79 ac_cv_c99=yes, ac_cv_c99=no)
80 CFLAGS="$old_CFLAGS"])
81 AS_IF([test "x$ac_cv_c99" != xyes],
82 AC_MSG_ERROR([gcc with C99 support required]))
84 AC_CACHE_CHECK([for __thread support], ac_cv_tls, [dnl
85 # Use the same flags that we use for our DSOs, so the test is representative.
86 # Some old compiler/linker/libc combinations fail some ways and not others.
88 save_LDFLAGS="$LDFLAGS"
89 CFLAGS="-fpic $CFLAGS"
90 LDFLAGS="-shared -Wl,-z,defs,-z,relro $LDFLAGS"
92 AC_LANG_PROGRAM([[#undef __thread
93 static __thread int a; int foo (int b) { return a + b; }]],
94 [[exit (foo (0));]])],
95 ac_cv_tls=yes, ac_cv_tls=no)
97 LDFLAGS="$save_LDFLAGS"])
98 AS_IF([test "x$ac_cv_tls" != xyes],
99 AC_MSG_ERROR([__thread support required]))
101 dnl This test must come as early as possible after the compiler configuration
102 dnl tests, because the choice of the file model can (in principle) affect
103 dnl whether functions and headers are available, whether they work, etc.
106 dnl Enable the linker to be build as a native-only linker. By default it
107 dnl can handle all architectures but this comes at a cost. A native
108 dnl will be slightly faster, small, and has fewer dependencies.
110 AC_ARG_ENABLE([generic],
111 AS_HELP_STRING([--disable-generic], [do not build generic linker]), [dnl
112 if test "$enable_generic" = no; then
115 AC_DEFINE(NATIVE_ELF, 32)
120 AC_MSG_ERROR([no machine-specific linker for this configuration available])
124 AH_TEMPLATE([NATIVE_ELF],
125 [Define to 32 or 64 if a specific implementation is wanted.])
126 AM_CONDITIONAL(NATIVE_LD, test "$native_ld" = yes)
127 dnl The automake generated Makefile cannot deal with macros in the name
128 dnl of files if at any time there is no such file, even if the filename
129 dnl would not be used.
130 AS_IF([test -z "$base_cpu"], [base_cpu=none])
132 dnl Support to work around automake's inflexible dependency generation.
133 dnl See src/Makefile.am for more information.
134 AM_CONDITIONAL(NEVER, false)
136 dnl Enable debugging via mudflap. This option will cause most libraries
137 dnl to be built as archives which are statically linked into the applications.
138 dnl All code, as far as possible, is compiled instrumented to catch all
139 dnl the bugs valgrind is able to catch.
141 AC_ARG_ENABLE([mudflap],
142 AS_HELP_STRING([--enable-mudflap],
143 [build binaries with mudflap instrumentation]), [dnl
144 if test "x$enable_mudflap" = xyes; then
145 # Check whether the compiler support -fmudflap.
147 CFLAGS="$CFLAGS -fmudflap"
148 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[use_mudflap=yes],[use_mudflap=fail])
151 if test "$use_mudflap" = fail; then
152 AC_MSG_FAILURE([--enable-mudflap requires a compiler which understands this option])
154 AM_CONDITIONAL(MUDFLAP, test "$use_mudflap" = yes)
156 dnl enable debugging of branch prediction.
157 AC_ARG_ENABLE([debugpred],
158 AS_HELP_STRING([--enable-debugpred],[build binaries with support to debug branch prediction]),
159 [use_debugpred=$enableval], [use_debugpred=no])
160 case $use_debugpred in
161 yes) use_debugpred=1 ;;
162 *) use_debugpred=0 ;;
164 AC_SUBST([DEBUGPRED], $use_debugpred)
166 dnl Enable gprof suport.
167 AC_ARG_ENABLE([gprof],
168 AS_HELP_STRING([--enable-gprof],[build binaries with gprof support]), [use_gprof=$enableval], [use_gprof=no])
169 if test "$use_gprof" = yes; then
171 LDFLAGS="$LDFLAGS -pg"
173 AM_CONDITIONAL(GPROF, test "$use_gprof" = yes)
175 # Enable gcov suport.
176 AC_ARG_ENABLE([gcov],
177 AS_HELP_STRING([--enable-gcov],[build binaries with gcov support]), [use_gcov=$enableval], [use_gcov=no])
178 if test "$use_gcov" = yes; then
179 CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
180 LDFLAGS="$LDFLAGS -fprofile-arcs"
182 AM_CONDITIONAL(GCOV, test "$use_gcov" = yes)
184 AM_CONDITIONAL(BUILD_STATIC, [dnl
185 test "$use_mudflap" = yes -o "$use_gprof" = yes -o "$use_gcov" = yes])
187 AC_ARG_ENABLE([tests-rpath],
188 AS_HELP_STRING([--enable-tests-rpath],[build $ORIGIN-using rpath into tests]),
189 [tests_use_rpath=$enableval], [tests_use_rpath=no])
190 AM_CONDITIONAL(TESTS_RPATH, test "$tests_use_rpath" = yes)
192 LIBEBL_SUBDIR="$PACKAGE"
193 AC_ARG_ENABLE([libebl-subdir],
194 AS_HELP_STRING([--enable-libebl-subdir=DIR],
195 [install libebl_CPU modules in $(libdir)/DIR]), [dnl
196 LIBEBL_SUBDIR="$enable_libebl_subdir"])
197 AC_SUBST([LIBEBL_SUBDIR])
198 AC_DEFINE_UNQUOTED(LIBEBL_SUBDIR, "$LIBEBL_SUBDIR")
199 AH_TEMPLATE([LIBEBL_SUBDIR], [$libdir subdirectory containing libebl modules.])
201 dnl Test for zlib and bzlib, gives ZLIB/BZLIB .am
202 dnl conditional and config.h USE_ZLIB/USE_BZLIB #define.
205 eu_ZIPLIB(zlib,ZLIB,z,gzdirect,gzip)
206 eu_ZIPLIB(bzlib,BZLIB,bz2,BZ2_bzdopen,bzip2)
207 eu_ZIPLIB(lzma,LZMA,lzma,lzma_auto_decoder,[LZMA (xz)])
212 AC_CHECK_LIB([stdc++], [__cxa_demangle], [dnl
213 AC_DEFINE([USE_DEMANGLE], [1], [Defined if demangling is enabled])])
214 AM_CONDITIONAL(DEMANGLE, test "$ac_cv_lib_stdcpp___cxa_demangle" = yes)
216 dnl The directories with content.
219 dnl Commented out for now.
220 dnl AC_CONFIG_FILES([doc/Makefile])
223 AC_CONFIG_FILES([lib/Makefile])
226 AC_CONFIG_FILES([libelf/Makefile])
228 dnl Higher-level ELF support library.
229 AC_CONFIG_FILES([libebl/Makefile])
232 AC_CONFIG_FILES([libdw/Makefile])
234 dnl Higher-level DWARF support library.
235 AC_CONFIG_FILES([libdwfl/Makefile])
237 dnl CPU handling library.
238 AC_CONFIG_FILES([libcpu/Makefile])
240 dnl Assembler library.
241 AM_CONDITIONAL(HAVE_LIBASM, true)dnl Used in tests/Makefile.am, which see.
242 AC_CONFIG_FILES([libasm/Makefile])
244 dnl CPU-specific backend libraries.
245 AC_CONFIG_FILES([backends/Makefile])
248 AC_CONFIG_FILES([src/Makefile po/Makefile.in])
251 AM_CONDITIONAL(STANDALONE, false)dnl Used in tests/Makefile.am, which see.
252 AC_CONFIG_FILES([tests/Makefile])
254 # Get the definitions necessary to create the Makefiles in the po
255 # subdirectories. This is a small subset of the gettext rules.
256 AC_SUBST(USE_NLS, yes)
259 dnl Appended to the config.h file.
260 dnl We hide all kinds of configuration magic in lib/eu-config.h.
261 AH_BOTTOM([#include <eu-config.h>])
263 dnl Version compatibility header.
264 AC_CONFIG_FILES([version.h:config/version.h.in])
265 AC_SUBST([eu_version])
267 # 1.234<whatever> -> 1234<whatever>
268 case "$PACKAGE_VERSION" in
269 [[0-9]].*) eu_version=`echo "$PACKAGE_VERSION" | sed 's@\.@@'` ;;
270 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
272 case "$eu_version" in
274 # 1234.567 -> "1234", "567"
275 eu_extra_version="${eu_version#*.}"
276 eu_version="${eu_version%%.*}"
277 case "$eu_extra_version" in
278 [[0-9]][[0-9]][[0-9]]) ;;
279 [[0-9]][[0-9]]) eu_extra_version="${eu_extra_version}0" ;;
280 [[0-9]]) eu_extra_version="${eu_extra_version}00" ;;
281 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
289 case "$eu_version" in
290 0[[0-9]][[0-9]][[0-9]]) eu_version="${eu_version#0}$eu_extra_version" ;;
291 [[0-9]][[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}$eu_extra_version" ;;
292 [[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}0$eu_extra_version" ;;
293 [[0-9]][[0-9]]) eu_version="${eu_version}00$eu_extra_version";;
294 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
297 # Round up to the next release API (x.y) version.
298 eu_version=$(( (eu_version + 999) / 1000 ))