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-2011 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.152],[http://bugzilla.redhat.com/bugzilla/],[elfutils])
21 AC_CONFIG_AUX_DIR([config])
22 AC_CONFIG_FILES([config/Makefile])
24 AC_COPYRIGHT([Copyright (C) 1996-2010 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([thread-safety],
51 AS_HELP_STRING([--enable-thread-safety], [enable thread safety of libraries]),
52 use_tls=locks, use_locks=no)
53 AM_CONDITIONAL(USE_LOCKS, test "$use_locks" = yes)
54 AS_IF([test "$use_locks" = yes], [AC_DEFINE(USE_LOCKS)])
56 AH_TEMPLATE([USE_LOCKS], [Defined if libraries should be thread-safe.])
63 AC_CACHE_CHECK([for gcc with C99 support], ac_cv_c99, [dnl
65 CFLAGS="$CFLAGS -std=gnu99"
66 AC_COMPILE_IFELSE([AC_LANG_SOURCE([dnl
67 int foo (int a) { for (int i = 0; i < a; ++i) if (i % 4) break; int s = a; }])],
68 ac_cv_c99=yes, ac_cv_c99=no)
69 CFLAGS="$old_CFLAGS"])
70 AS_IF([test "x$ac_cv_c99" != xyes],
71 AC_MSG_ERROR([gcc with C99 support required]))
73 AC_CACHE_CHECK([for __thread support], ac_cv_tls, [dnl
74 # Use the same flags that we use for our DSOs, so the test is representative.
75 # Some old compiler/linker/libc combinations fail some ways and not others.
77 save_LDFLAGS="$LDFLAGS"
78 CFLAGS="-fpic $CFLAGS"
79 LDFLAGS="-shared -Wl,-z,defs,-z,relro $LDFLAGS"
81 AC_LANG_PROGRAM([[#undef __thread
82 static __thread int a; int foo (int b) { return a + b; }]],
83 [[exit (foo (0));]])],
84 ac_cv_tls=yes, ac_cv_tls=no)
86 LDFLAGS="$save_LDFLAGS"])
87 AS_IF([test "x$ac_cv_tls" != xyes],
88 AC_MSG_ERROR([__thread support required]))
90 dnl This test must come as early as possible after the compiler configuration
91 dnl tests, because the choice of the file model can (in principle) affect
92 dnl whether functions and headers are available, whether they work, etc.
95 dnl Enable the linker to be build as a native-only linker. By default it
96 dnl can handle all architectures but this comes at a cost. A native
97 dnl will be slightly faster, small, and has fewer dependencies.
99 AC_ARG_ENABLE([generic],
100 AS_HELP_STRING([--disable-generic], [do not build generic linker]), [dnl
101 if test "$enable_generic" = no; then
104 AC_DEFINE(NATIVE_ELF, 32)
109 AC_MSG_ERROR([no machine-specific linker for this configuration available])
113 AH_TEMPLATE([NATIVE_ELF],
114 [Define to 32 or 64 if a specific implementation is wanted.])
115 AM_CONDITIONAL(NATIVE_LD, test "$native_ld" = yes)
116 dnl The automake generated Makefile cannot deal with macros in the name
117 dnl of files if at any time there is no such file, even if the filename
118 dnl would not be used.
119 AS_IF([test -z "$base_cpu"], [base_cpu=none])
121 dnl Support to work around automake's inflexible dependency generation.
122 dnl See src/Makefile.am for more information.
123 AM_CONDITIONAL(NEVER, false)
125 dnl Enable debugging via mudflap. This option will cause most libraries
126 dnl to be built as archives which are statically linked into the applications.
127 dnl All code, as far as possible, is compiled instrumented to catch all
128 dnl the bugs valgrind is able to catch.
130 AC_ARG_ENABLE([mudflap],
131 AS_HELP_STRING([--enable-mudflap],
132 [build binaries with mudflap instrumentation]), [dnl
133 if test "x$enable_mudflap" = xyes; then
134 # Check whether the compiler support -fmudflap.
136 CFLAGS="$CFLAGS -fmudflap"
137 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[use_mudflap=yes],[use_mudflap=fail])
140 if test "$use_mudflap" = fail; then
141 AC_MSG_FAILURE([--enable-mudflap requires a compiler which understands this option])
143 AM_CONDITIONAL(MUDFLAP, test "$use_mudflap" = yes)
145 dnl enable debugging of branch prediction.
147 AC_ARG_ENABLE([debugpred],
148 AS_HELP_STRING([--enable-debugpred],[build binaries with support to debug branch prediction]),
149 [use_debugpred=1], [use_debugpred=0])
150 AC_SUBST([DEBUGPRED], $use_debugpred)
152 dnl Enable gprof suport.
153 AC_ARG_ENABLE([gprof],
154 AS_HELP_STRING([--enable-gprof],[build binaries with gprof support]), [use_gprof=yes], [use_gprof=no])
155 if test "$use_gprof" = yes; then
157 LDFLAGS="$LDFLAGS -pg"
159 AM_CONDITIONAL(GPROF, test "$use_gprof" = yes)
161 # Enable gcov suport.
162 AC_ARG_ENABLE([gcov],
163 AS_HELP_STRING([--enable-gcov],[build binaries with gcov support]), [use_gcov=yes], [use_gcov=no])
164 if test "$use_gcov" = yes; then
165 CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
166 LDFLAGS="$LDFLAGS -fprofile-arcs"
168 AM_CONDITIONAL(GCOV, test "$use_gcov" = yes)
170 AM_CONDITIONAL(BUILD_STATIC, [dnl
171 test "$use_mudflap" = yes -o "$use_gprof" = yes -o "$use_gcov" = yes])
173 AC_ARG_ENABLE([tests-rpath],
174 AS_HELP_STRING([--enable-tests-rpath],[build $ORIGIN-using rpath into tests]),
175 [tests_use_rpath=yes], [tests_use_rpath=no])
176 AM_CONDITIONAL(TESTS_RPATH, test "$tests_use_rpath" = yes)
178 LIBEBL_SUBDIR="$PACKAGE"
179 AC_ARG_ENABLE([libebl-subdir],
180 AS_HELP_STRING([--enable-libebl-subdir=DIR],
181 [install libebl_CPU modules in $(libdir)/DIR]), [dnl
182 LIBEBL_SUBDIR="$enable_libebl_subdir"])
183 AC_SUBST([LIBEBL_SUBDIR])
184 AC_DEFINE_UNQUOTED(LIBEBL_SUBDIR, "$LIBEBL_SUBDIR")
185 AH_TEMPLATE([LIBEBL_SUBDIR], [$libdir subdirectory containing libebl modules.])
187 dnl Test for zlib and bzlib, gives ZLIB/BZLIB .am
188 dnl conditional and config.h USE_ZLIB/USE_BZLIB #define.
191 eu_ZIPLIB(zlib,ZLIB,z,gzdirect,gzip)
192 eu_ZIPLIB(bzlib,BZLIB,bz2,BZ2_bzdopen,bzip2)
193 eu_ZIPLIB(lzma,LZMA,lzma,lzma_auto_decoder,[LZMA (xz)])
198 AC_CHECK_LIB([stdc++], [__cxa_demangle], [dnl
199 AC_DEFINE([USE_DEMANGLE], [1], [Defined if demangling is enabled])])
200 AM_CONDITIONAL(DEMANGLE, test "$ac_cv_lib_stdcpp___cxa_demangle" = yes)
202 dnl The directories with content.
205 dnl Commented out for now.
206 dnl AC_CONFIG_FILES([doc/Makefile])
209 AC_CONFIG_FILES([lib/Makefile])
212 AC_CONFIG_FILES([libelf/Makefile])
214 dnl Higher-level ELF support library.
215 AC_CONFIG_FILES([libebl/Makefile])
218 AC_CONFIG_FILES([libdw/Makefile])
220 dnl Higher-level DWARF support library.
221 AC_CONFIG_FILES([libdwfl/Makefile])
223 dnl CPU handling library.
224 AC_CONFIG_FILES([libcpu/Makefile])
226 dnl Assembler library.
227 AM_CONDITIONAL(HAVE_LIBASM, true)dnl Used in tests/Makefile.am, which see.
228 AC_CONFIG_FILES([libasm/Makefile])
230 dnl CPU-specific backend libraries.
231 AC_CONFIG_FILES([backends/Makefile])
234 AC_CONFIG_FILES([src/Makefile po/Makefile.in])
237 AM_CONDITIONAL(STANDALONE, false)dnl Used in tests/Makefile.am, which see.
238 AC_CONFIG_FILES([tests/Makefile])
240 # Get the definitions necessary to create the Makefiles in the po
241 # subdirectories. This is a small subset of the gettext rules.
242 AC_SUBST(USE_NLS, yes)
245 dnl Appended to the config.h file.
246 dnl We hide all kinds of configuration magic in lib/eu-config.h.
247 AH_BOTTOM([#include <eu-config.h>])
249 dnl Version compatibility header.
250 AC_CONFIG_FILES([version.h:config/version.h.in])
251 AC_SUBST([eu_version])
253 # 1.234<whatever> -> 1234<whatever>
254 case "$PACKAGE_VERSION" in
255 [[0-9]].*) eu_version="${PACKAGE_VERSION/./}" ;;
256 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
258 case "$eu_version" in
260 # 1234.567 -> "1234", "567"
261 eu_extra_version="${eu_version#*.}"
262 eu_version="${eu_version%%.*}"
263 case "$eu_extra_version" in
264 [[0-9]][[0-9]][[0-9]]) ;;
265 [[0-9]][[0-9]]) eu_extra_version="${eu_extra_version}0" ;;
266 [[0-9]]) eu_extra_version="${eu_extra_version}00" ;;
267 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
275 case "$eu_version" in
276 0[[0-9]][[0-9]][[0-9]]) eu_version="${eu_version#0}$eu_extra_version" ;;
277 [[0-9]][[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}$eu_extra_version" ;;
278 [[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}0$eu_extra_version" ;;
279 [[0-9]][[0-9]]) eu_version="${eu_version}00$eu_extra_version";;
280 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
283 # Round up to the next release API (x.y) version.
284 [eu_version=$[($eu_version + 999) / 1000]]