Imported Upstream version 0.153
[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 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.
9 dnl
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.
14 dnl
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.
18 dnl
19 AC_INIT([Red Hat elfutils],[0.153],[http://bugzilla.redhat.com/bugzilla/],[elfutils])
20
21 AC_CONFIG_AUX_DIR([config])
22 AC_CONFIG_FILES([config/Makefile])
23
24 AC_COPYRIGHT([Copyright (C) 1996-2012 Red Hat, Inc.])
25 AC_PREREQ(2.63)                 dnl Minimum Autoconf version required.
26
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])
29 AM_MAINTAINER_MODE
30
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.])
36
37 AC_CONFIG_SRCDIR([libelf/libelf.h])
38 AC_CONFIG_FILES([Makefile])
39 AC_CONFIG_HEADERS([config.h])
40
41 AC_CONFIG_MACRO_DIR([m4])
42 AC_CONFIG_FILES([m4/Makefile])
43
44 dnl The RPM spec file.  We substitute a few values in the file.
45 AC_CONFIG_FILES([elfutils.spec:config/elfutils.spec.in])
46
47
48 AC_CANONICAL_HOST
49
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
55 else
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?])
60
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)])
66
67 AH_TEMPLATE([USE_LOCKS], [Defined if libraries should be thread-safe.])
68
69 AC_PROG_CC
70 AC_PROG_RANLIB
71 AC_PROG_YACC
72 AM_PROG_LEX
73
74 AC_CACHE_CHECK([for gcc with C99 support], ac_cv_c99, [dnl
75 old_CFLAGS="$CFLAGS"
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]))
83
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.
87 save_CFLAGS="$CFLAGS"
88 save_LDFLAGS="$LDFLAGS"
89 CFLAGS="-fpic $CFLAGS"
90 LDFLAGS="-shared -Wl,-z,defs,-z,relro $LDFLAGS"
91 AC_LINK_IFELSE([dnl
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)
96 CFLAGS="$save_CFLAGS"
97 LDFLAGS="$save_LDFLAGS"])
98 AS_IF([test "x$ac_cv_tls" != xyes],
99       AC_MSG_ERROR([__thread support required]))
100
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.
104 AC_SYS_LARGEFILE
105
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.
109 native_ld=no
110 AC_ARG_ENABLE([generic],
111 AS_HELP_STRING([--disable-generic], [do not build generic linker]), [dnl
112 if test "$enable_generic" = no; then
113   case "$host_cpu" in
114    i?86)
115     AC_DEFINE(NATIVE_ELF, 32)
116     native_ld=yes
117     base_cpu=i386
118     ;;
119    *)
120     AC_MSG_ERROR([no machine-specific linker for this configuration available])
121     ;;
122   esac
123 fi])
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])
131 AC_SUBST(base_cpu)
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)
135
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.
140 use_mudflap=no
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.
146   old_CFLAGS="$CFLAGS"
147   CFLAGS="$CFLAGS -fmudflap"
148   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[use_mudflap=yes],[use_mudflap=fail])
149   CFLAGS="$old_CFLAGS"
150 fi])
151 if test "$use_mudflap" = fail; then
152   AC_MSG_FAILURE([--enable-mudflap requires a compiler which understands this option])
153 fi
154 AM_CONDITIONAL(MUDFLAP, test "$use_mudflap" = yes)
155
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 ;;
163 esac
164 AC_SUBST([DEBUGPRED], $use_debugpred)
165
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
170   CFLAGS="$CFLAGS -pg"
171   LDFLAGS="$LDFLAGS -pg"
172 fi
173 AM_CONDITIONAL(GPROF, test "$use_gprof" = yes)
174
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"
181 fi
182 AM_CONDITIONAL(GCOV, test "$use_gcov" = yes)
183
184 AM_CONDITIONAL(BUILD_STATIC, [dnl
185 test "$use_mudflap" = yes -o "$use_gprof" = yes -o "$use_gcov" = yes])
186
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)
191
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.])
200
201 dnl Test for zlib and bzlib, gives ZLIB/BZLIB .am
202 dnl conditional and config.h USE_ZLIB/USE_BZLIB #define.
203 save_LIBS="$LIBS"
204 LIBS=
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)])
208 zip_LIBS="$LIBS"
209 LIBS="$save_LIBS"
210 AC_SUBST([zip_LIBS])
211
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)
215
216 dnl The directories with content.
217
218 dnl Documentation.
219 dnl Commented out for now.
220 dnl AC_CONFIG_FILES([doc/Makefile])
221
222 dnl Support library.
223 AC_CONFIG_FILES([lib/Makefile])
224
225 dnl ELF library.
226 AC_CONFIG_FILES([libelf/Makefile])
227
228 dnl Higher-level ELF support library.
229 AC_CONFIG_FILES([libebl/Makefile])
230
231 dnl DWARF library.
232 AC_CONFIG_FILES([libdw/Makefile])
233
234 dnl Higher-level DWARF support library.
235 AC_CONFIG_FILES([libdwfl/Makefile])
236
237 dnl CPU handling library.
238 AC_CONFIG_FILES([libcpu/Makefile])
239
240 dnl Assembler library.
241 AM_CONDITIONAL(HAVE_LIBASM, true)dnl Used in tests/Makefile.am, which see.
242 AC_CONFIG_FILES([libasm/Makefile])
243
244 dnl CPU-specific backend libraries.
245 AC_CONFIG_FILES([backends/Makefile])
246
247 dnl Tools.
248 AC_CONFIG_FILES([src/Makefile po/Makefile.in])
249
250 dnl Test suite.
251 AM_CONDITIONAL(STANDALONE, false)dnl Used in tests/Makefile.am, which see.
252 AC_CONFIG_FILES([tests/Makefile])
253
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)
257 AM_PO_SUBDIRS
258
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>])
262
263 dnl Version compatibility header.
264 AC_CONFIG_FILES([version.h:config/version.h.in])
265 AC_SUBST([eu_version])
266
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']) ;;
271 esac
272 case "$eu_version" in
273 *.*)
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']) ;;
282   esac
283   ;;
284 *)
285   eu_extra_version=000
286   ;;
287 esac
288
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']) ;;
295 esac
296
297 # Round up to the next release API (x.y) version.
298 eu_version=$(( (eu_version + 999) / 1000 ))
299
300 AC_OUTPUT