Prepare 0.153 release.
[platform/upstream/elfutils.git] / configure.ac
1 dnl Process this file with autoconf to produce a configure script.
2 dnl Configure input file for elfutils.                     -*-autoconf-*-
3 dnl
4 dnl Copyright (C) 1996-2012 Red Hat, Inc.
5 dnl
6 dnl This file is part of elfutils.
7 dnl
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.
12 dnl
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.
17 dnl
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.154],[http://bugzilla.redhat.com/bugzilla/],[elfutils])
21
22 AC_CONFIG_AUX_DIR([config])
23 AC_CONFIG_FILES([config/Makefile])
24
25 AC_COPYRIGHT([Copyright (C) 1996-2012 Red Hat, Inc.])
26 AC_PREREQ(2.63)                 dnl Minimum Autoconf version required.
27
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])
30 AM_MAINTAINER_MODE
31
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.])
37
38 AC_CONFIG_SRCDIR([libelf/libelf.h])
39 AC_CONFIG_FILES([Makefile])
40 AC_CONFIG_HEADERS([config.h])
41
42 AC_CONFIG_MACRO_DIR([m4])
43 AC_CONFIG_FILES([m4/Makefile])
44
45 dnl The RPM spec file.  We substitute a few values in the file.
46 AC_CONFIG_FILES([elfutils.spec:config/elfutils.spec.in])
47
48
49 AC_CANONICAL_HOST
50
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
56 else
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?])
61
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)])
67
68 AH_TEMPLATE([USE_LOCKS], [Defined if libraries should be thread-safe.])
69
70 AC_PROG_CC
71 AC_PROG_RANLIB
72 AC_PROG_YACC
73 AM_PROG_LEX
74
75 AC_CACHE_CHECK([for gcc with C99 support], ac_cv_c99, [dnl
76 old_CFLAGS="$CFLAGS"
77 CFLAGS="$CFLAGS -std=gnu99"
78 AC_COMPILE_IFELSE([AC_LANG_SOURCE([dnl
79 int foo (int a) { for (int i = 0; i < a; ++i) if (i % 4) break; int s = a; }])],
80                   ac_cv_c99=yes, ac_cv_c99=no)
81 CFLAGS="$old_CFLAGS"])
82 AS_IF([test "x$ac_cv_c99" != xyes],
83       AC_MSG_ERROR([gcc with C99 support required]))
84
85 AC_CACHE_CHECK([for __thread support], ac_cv_tls, [dnl
86 # Use the same flags that we use for our DSOs, so the test is representative.
87 # Some old compiler/linker/libc combinations fail some ways and not others.
88 save_CFLAGS="$CFLAGS"
89 save_LDFLAGS="$LDFLAGS"
90 CFLAGS="-fpic $CFLAGS"
91 LDFLAGS="-shared -Wl,-z,defs,-z,relro $LDFLAGS"
92 AC_LINK_IFELSE([dnl
93 AC_LANG_PROGRAM([[#undef __thread
94 static __thread int a; int foo (int b) { return a + b; }]],
95                 [[exit (foo (0));]])],
96                ac_cv_tls=yes, ac_cv_tls=no)
97 CFLAGS="$save_CFLAGS"
98 LDFLAGS="$save_LDFLAGS"])
99 AS_IF([test "x$ac_cv_tls" != xyes],
100       AC_MSG_ERROR([__thread support required]))
101
102 dnl This test must come as early as possible after the compiler configuration
103 dnl tests, because the choice of the file model can (in principle) affect
104 dnl whether functions and headers are available, whether they work, etc.
105 AC_SYS_LARGEFILE
106
107 dnl Enable the linker to be build as a native-only linker.  By default it
108 dnl can handle all architectures but this comes at a cost.  A native
109 dnl will be slightly faster, small, and has fewer dependencies.
110 native_ld=no
111 AC_ARG_ENABLE([generic],
112 AS_HELP_STRING([--disable-generic], [do not build generic linker]), [dnl
113 if test "$enable_generic" = no; then
114   case "$host_cpu" in
115    i?86)
116     AC_DEFINE(NATIVE_ELF, 32)
117     native_ld=yes
118     base_cpu=i386
119     ;;
120    *)
121     AC_MSG_ERROR([no machine-specific linker for this configuration available])
122     ;;
123   esac
124 fi])
125 AH_TEMPLATE([NATIVE_ELF],
126 [Define to 32 or 64 if a specific implementation is wanted.])
127 AM_CONDITIONAL(NATIVE_LD, test "$native_ld" = yes)
128 dnl The automake generated Makefile cannot deal with macros in the name
129 dnl of files if at any time there is no such file, even if the filename
130 dnl would not be used.
131 AS_IF([test -z "$base_cpu"], [base_cpu=none])
132 AC_SUBST(base_cpu)
133 dnl Support to work around automake's inflexible dependency generation.
134 dnl See src/Makefile.am for more information.
135 AM_CONDITIONAL(NEVER, false)
136
137 dnl Enable debugging via mudflap.  This option will cause most libraries
138 dnl to be built as archives which are statically linked into the applications.
139 dnl All code, as far as possible, is compiled instrumented to catch all
140 dnl the bugs valgrind is able to catch.
141 use_mudflap=no
142 AC_ARG_ENABLE([mudflap],
143 AS_HELP_STRING([--enable-mudflap],
144 [build binaries with mudflap instrumentation]), [dnl
145 if test "x$enable_mudflap" = xyes; then
146   # Check whether the compiler support -fmudflap.
147   old_CFLAGS="$CFLAGS"
148   CFLAGS="$CFLAGS -fmudflap"
149   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[use_mudflap=yes],[use_mudflap=fail])
150   CFLAGS="$old_CFLAGS"
151 fi])
152 if test "$use_mudflap" = fail; then
153   AC_MSG_FAILURE([--enable-mudflap requires a compiler which understands this option])
154 fi
155 AM_CONDITIONAL(MUDFLAP, test "$use_mudflap" = yes)
156
157 dnl enable debugging of branch prediction.
158 AC_ARG_ENABLE([debugpred],
159 AS_HELP_STRING([--enable-debugpred],[build binaries with support to debug branch prediction]),
160 [use_debugpred=$enableval], [use_debugpred=no])
161 case $use_debugpred in
162  yes) use_debugpred=1 ;;
163  *)   use_debugpred=0 ;;
164 esac
165 AC_SUBST([DEBUGPRED], $use_debugpred)
166
167 dnl Enable gprof suport.
168 AC_ARG_ENABLE([gprof],
169 AS_HELP_STRING([--enable-gprof],[build binaries with gprof support]), [use_gprof=$enableval], [use_gprof=no])
170 if test "$use_gprof" = yes; then
171   CFLAGS="$CFLAGS -pg"
172   LDFLAGS="$LDFLAGS -pg"
173 fi
174 AM_CONDITIONAL(GPROF, test "$use_gprof" = yes)
175
176 # Enable gcov suport.
177 AC_ARG_ENABLE([gcov],
178 AS_HELP_STRING([--enable-gcov],[build binaries with gcov support]), [use_gcov=$enableval], [use_gcov=no])
179 if test "$use_gcov" = yes; then
180   CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
181   LDFLAGS="$LDFLAGS -fprofile-arcs"
182 fi
183 AM_CONDITIONAL(GCOV, test "$use_gcov" = yes)
184
185 AM_CONDITIONAL(BUILD_STATIC, [dnl
186 test "$use_mudflap" = yes -o "$use_gprof" = yes -o "$use_gcov" = yes])
187
188 AC_ARG_ENABLE([tests-rpath],
189 AS_HELP_STRING([--enable-tests-rpath],[build $ORIGIN-using rpath into tests]),
190                [tests_use_rpath=$enableval], [tests_use_rpath=no])
191 AM_CONDITIONAL(TESTS_RPATH, test "$tests_use_rpath" = yes)
192
193 LIBEBL_SUBDIR="$PACKAGE"
194 AC_ARG_ENABLE([libebl-subdir],
195 AS_HELP_STRING([--enable-libebl-subdir=DIR],
196 [install libebl_CPU modules in $(libdir)/DIR]), [dnl
197 LIBEBL_SUBDIR="$enable_libebl_subdir"])
198 AC_SUBST([LIBEBL_SUBDIR])
199 AC_DEFINE_UNQUOTED(LIBEBL_SUBDIR, "$LIBEBL_SUBDIR")
200 AH_TEMPLATE([LIBEBL_SUBDIR], [$libdir subdirectory containing libebl modules.])
201
202 dnl Test for zlib and bzlib, gives ZLIB/BZLIB .am
203 dnl conditional and config.h USE_ZLIB/USE_BZLIB #define.
204 save_LIBS="$LIBS"
205 LIBS=
206 eu_ZIPLIB(zlib,ZLIB,z,gzdirect,gzip)
207 eu_ZIPLIB(bzlib,BZLIB,bz2,BZ2_bzdopen,bzip2)
208 eu_ZIPLIB(lzma,LZMA,lzma,lzma_auto_decoder,[LZMA (xz)])
209 zip_LIBS="$LIBS"
210 LIBS="$save_LIBS"
211 AC_SUBST([zip_LIBS])
212
213 AC_CHECK_LIB([stdc++], [__cxa_demangle], [dnl
214 AC_DEFINE([USE_DEMANGLE], [1], [Defined if demangling is enabled])])
215 AM_CONDITIONAL(DEMANGLE, test "$ac_cv_lib_stdcpp___cxa_demangle" = yes)
216
217 dnl The directories with content.
218
219 dnl Documentation.
220 dnl Commented out for now.
221 dnl AC_CONFIG_FILES([doc/Makefile])
222
223 dnl Support library.
224 AC_CONFIG_FILES([lib/Makefile])
225
226 dnl ELF library.
227 AC_CONFIG_FILES([libelf/Makefile])
228
229 dnl Higher-level ELF support library.
230 AC_CONFIG_FILES([libebl/Makefile])
231
232 dnl DWARF library.
233 AC_CONFIG_FILES([libdw/Makefile])
234
235 dnl Higher-level DWARF support library.
236 AC_CONFIG_FILES([libdwfl/Makefile])
237
238 dnl CPU handling library.
239 AC_CONFIG_FILES([libcpu/Makefile])
240
241 dnl Assembler library.
242 AM_CONDITIONAL(HAVE_LIBASM, true)dnl Used in tests/Makefile.am, which see.
243 AC_CONFIG_FILES([libasm/Makefile])
244
245 dnl CPU-specific backend libraries.
246 AC_CONFIG_FILES([backends/Makefile])
247
248 dnl Tools.
249 AC_CONFIG_FILES([src/Makefile po/Makefile.in])
250
251 dnl Test suite.
252 AM_CONDITIONAL(STANDALONE, false)dnl Used in tests/Makefile.am, which see.
253 AC_CONFIG_FILES([tests/Makefile])
254
255 # Get the definitions necessary to create the Makefiles in the po
256 # subdirectories.  This is a small subset of the gettext rules.
257 AC_SUBST(USE_NLS, yes)
258 AM_PO_SUBDIRS
259
260 dnl Appended to the config.h file.
261 dnl We hide all kinds of configuration magic in lib/eu-config.h.
262 AH_BOTTOM([#include <eu-config.h>])
263
264 dnl Version compatibility header.
265 AC_CONFIG_FILES([version.h:config/version.h.in])
266 AC_SUBST([eu_version])
267
268 # 1.234<whatever> -> 1234<whatever>
269 case "$PACKAGE_VERSION" in
270 [[0-9]].*) eu_version=`echo "$PACKAGE_VERSION" | sed 's@\.@@'` ;;
271 *)         AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
272 esac
273 case "$eu_version" in
274 *.*)
275   # 1234.567 -> "1234", "567"
276   eu_extra_version="${eu_version#*.}"
277   eu_version="${eu_version%%.*}"
278   case "$eu_extra_version" in
279   [[0-9]][[0-9]][[0-9]]) ;;
280   [[0-9]][[0-9]])       eu_extra_version="${eu_extra_version}0" ;;
281   [[0-9]])              eu_extra_version="${eu_extra_version}00" ;;
282   *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
283   esac
284   ;;
285 *)
286   eu_extra_version=000
287   ;;
288 esac
289
290 case "$eu_version" in
291       0[[0-9]][[0-9]][[0-9]]) eu_version="${eu_version#0}$eu_extra_version" ;;
292 [[0-9]][[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}$eu_extra_version" ;;
293 [[0-9]][[0-9]][[0-9]])        eu_version="${eu_version}0$eu_extra_version" ;;
294 [[0-9]][[0-9]])               eu_version="${eu_version}00$eu_extra_version";;
295 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
296 esac
297
298 # Round up to the next release API (x.y) version.
299 eu_version=$(( (eu_version + 999) / 1000 ))
300
301 AC_OUTPUT