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_locks=$enableval, 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.
146 AC_ARG_ENABLE([debugpred],
147 AS_HELP_STRING([--enable-debugpred],[build binaries with support to debug branch prediction]),
148 [use_debugpred=$enableval], [use_debugpred=no])
149 case $use_debugpred in
150 yes) use_debugpred=1 ;;
151 *) use_debugpred=0 ;;
153 AC_SUBST([DEBUGPRED], $use_debugpred)
155 dnl Enable gprof suport.
156 AC_ARG_ENABLE([gprof],
157 AS_HELP_STRING([--enable-gprof],[build binaries with gprof support]), [use_gprof=$enableval], [use_gprof=no])
158 if test "$use_gprof" = yes; then
160 LDFLAGS="$LDFLAGS -pg"
162 AM_CONDITIONAL(GPROF, test "$use_gprof" = yes)
164 # Enable gcov suport.
165 AC_ARG_ENABLE([gcov],
166 AS_HELP_STRING([--enable-gcov],[build binaries with gcov support]), [use_gcov=$enableval], [use_gcov=no])
167 if test "$use_gcov" = yes; then
168 CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
169 LDFLAGS="$LDFLAGS -fprofile-arcs"
171 AM_CONDITIONAL(GCOV, test "$use_gcov" = yes)
173 AM_CONDITIONAL(BUILD_STATIC, [dnl
174 test "$use_mudflap" = yes -o "$use_gprof" = yes -o "$use_gcov" = yes])
176 AC_ARG_ENABLE([tests-rpath],
177 AS_HELP_STRING([--enable-tests-rpath],[build $ORIGIN-using rpath into tests]),
178 [tests_use_rpath=$enableval], [tests_use_rpath=no])
179 AM_CONDITIONAL(TESTS_RPATH, test "$tests_use_rpath" = yes)
181 LIBEBL_SUBDIR="$PACKAGE"
182 AC_ARG_ENABLE([libebl-subdir],
183 AS_HELP_STRING([--enable-libebl-subdir=DIR],
184 [install libebl_CPU modules in $(libdir)/DIR]), [dnl
185 LIBEBL_SUBDIR="$enable_libebl_subdir"])
186 AC_SUBST([LIBEBL_SUBDIR])
187 AC_DEFINE_UNQUOTED(LIBEBL_SUBDIR, "$LIBEBL_SUBDIR")
188 AH_TEMPLATE([LIBEBL_SUBDIR], [$libdir subdirectory containing libebl modules.])
190 dnl Test for zlib and bzlib, gives ZLIB/BZLIB .am
191 dnl conditional and config.h USE_ZLIB/USE_BZLIB #define.
194 eu_ZIPLIB(zlib,ZLIB,z,gzdirect,gzip)
195 eu_ZIPLIB(bzlib,BZLIB,bz2,BZ2_bzdopen,bzip2)
196 eu_ZIPLIB(lzma,LZMA,lzma,lzma_auto_decoder,[LZMA (xz)])
201 AC_CHECK_LIB([stdc++], [__cxa_demangle], [dnl
202 AC_DEFINE([USE_DEMANGLE], [1], [Defined if demangling is enabled])])
203 AM_CONDITIONAL(DEMANGLE, test "$ac_cv_lib_stdcpp___cxa_demangle" = yes)
205 dnl The directories with content.
208 dnl Commented out for now.
209 dnl AC_CONFIG_FILES([doc/Makefile])
212 AC_CONFIG_FILES([lib/Makefile])
215 AC_CONFIG_FILES([libelf/Makefile])
217 dnl Higher-level ELF support library.
218 AC_CONFIG_FILES([libebl/Makefile])
221 AC_CONFIG_FILES([libdw/Makefile])
223 dnl Higher-level DWARF support library.
224 AC_CONFIG_FILES([libdwfl/Makefile])
226 dnl CPU handling library.
227 AC_CONFIG_FILES([libcpu/Makefile])
229 dnl Assembler library.
230 AM_CONDITIONAL(HAVE_LIBASM, true)dnl Used in tests/Makefile.am, which see.
231 AC_CONFIG_FILES([libasm/Makefile])
233 dnl CPU-specific backend libraries.
234 AC_CONFIG_FILES([backends/Makefile])
237 AC_CONFIG_FILES([src/Makefile po/Makefile.in])
240 AM_CONDITIONAL(STANDALONE, false)dnl Used in tests/Makefile.am, which see.
241 AC_CONFIG_FILES([tests/Makefile])
243 # Get the definitions necessary to create the Makefiles in the po
244 # subdirectories. This is a small subset of the gettext rules.
245 AC_SUBST(USE_NLS, yes)
248 dnl Appended to the config.h file.
249 dnl We hide all kinds of configuration magic in lib/eu-config.h.
250 AH_BOTTOM([#include <eu-config.h>])
252 dnl Version compatibility header.
253 AC_CONFIG_FILES([version.h:config/version.h.in])
254 AC_SUBST([eu_version])
256 # 1.234<whatever> -> 1234<whatever>
257 case "$PACKAGE_VERSION" in
258 [[0-9]].*) eu_version=`echo "$PACKAGE_VERSION" | sed 's@\.@@'` ;;
259 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
261 case "$eu_version" in
263 # 1234.567 -> "1234", "567"
264 eu_extra_version="${eu_version#*.}"
265 eu_version="${eu_version%%.*}"
266 case "$eu_extra_version" in
267 [[0-9]][[0-9]][[0-9]]) ;;
268 [[0-9]][[0-9]]) eu_extra_version="${eu_extra_version}0" ;;
269 [[0-9]]) eu_extra_version="${eu_extra_version}00" ;;
270 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
278 case "$eu_version" in
279 0[[0-9]][[0-9]][[0-9]]) eu_version="${eu_version#0}$eu_extra_version" ;;
280 [[0-9]][[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}$eu_extra_version" ;;
281 [[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}0$eu_extra_version" ;;
282 [[0-9]][[0-9]]) eu_version="${eu_version}00$eu_extra_version";;
283 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
286 # Round up to the next release API (x.y) version.
287 eu_version=$(( (eu_version + 999) / 1000 ))