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.151],[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([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 dnl The directories with content.
201 dnl Commented out for now.
202 dnl AC_CONFIG_FILES([doc/Makefile])
205 AC_CONFIG_FILES([lib/Makefile])
208 AC_CONFIG_FILES([libelf/Makefile])
210 dnl Higher-level ELF support library.
211 AC_CONFIG_FILES([libebl/Makefile])
214 AC_CONFIG_FILES([libdw/Makefile])
216 dnl Higher-level DWARF support library.
217 AC_CONFIG_FILES([libdwfl/Makefile])
219 dnl CPU handling library.
220 AC_CONFIG_FILES([libcpu/Makefile])
222 dnl Assembler library.
223 AM_CONDITIONAL(HAVE_LIBASM, true)dnl Used in tests/Makefile.am, which see.
224 AC_CONFIG_FILES([libasm/Makefile])
226 dnl CPU-specific backend libraries.
227 AC_CONFIG_FILES([backends/Makefile])
230 AC_CONFIG_FILES([src/Makefile po/Makefile.in])
233 AM_CONDITIONAL(STANDALONE, false)dnl Used in tests/Makefile.am, which see.
234 AC_CONFIG_FILES([tests/Makefile])
236 # Get the definitions necessary to create the Makefiles in the po
237 # subdirectories. This is a small subset of the gettext rules.
238 AC_SUBST(USE_NLS, yes)
241 dnl Appended to the config.h file.
242 dnl We hide all kinds of configuration magic in lib/eu-config.h.
243 AH_BOTTOM([#include <eu-config.h>])
245 dnl Version compatibility header.
246 AC_CONFIG_FILES([version.h:config/version.h.in])
247 AC_SUBST([eu_version])
249 # 1.234<whatever> -> 1234<whatever>
250 case "$PACKAGE_VERSION" in
251 [[0-9]].*) eu_version="${PACKAGE_VERSION/./}" ;;
252 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
254 case "$eu_version" in
256 # 1234.567 -> "1234", "567"
257 eu_extra_version="${eu_version#*.}"
258 eu_version="${eu_version%%.*}"
259 case "$eu_extra_version" in
260 [[0-9]][[0-9]][[0-9]]) ;;
261 [[0-9]][[0-9]]) eu_extra_version="${eu_extra_version}0" ;;
262 [[0-9]]) eu_extra_version="${eu_extra_version}00" ;;
263 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
271 case "$eu_version" in
272 0[[0-9]][[0-9]][[0-9]]) eu_version="${eu_version#0}$eu_extra_version" ;;
273 [[0-9]][[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}$eu_extra_version" ;;
274 [[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}0$eu_extra_version" ;;
275 [[0-9]][[0-9]]) eu_version="${eu_version}00$eu_extra_version";;
276 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
279 # Round up to the next release API (x.y) version.
280 [eu_version=$[($eu_version + 999) / 1000]]