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