Prepare 0.157 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-2013 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.157],[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-2013 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.11 -Wno-portability dist-bzip2 no-dist-gzip parallel-tests])
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 AC_ARG_ENABLE([valgrind],
194 AS_HELP_STRING([--enable-valgrind],[run all tests under valgrind]),
195 [use_valgrind=$enableval], [use_valgrind=no])
196 if test "$use_valgrind" = yes; then
197   AC_CHECK_PROG(HAVE_VALGRIND, valgrind, yes, no)
198   if test "$HAVE_VALGRIND" = "no"; then
199     AC_MSG_ERROR([valgrind not found])
200   fi
201 fi
202 AM_CONDITIONAL(USE_VALGRIND, test "$use_valgrind" = yes)
203
204 AM_CONDITIONAL(BUILD_STATIC, [dnl
205 test "$use_mudflap" = yes -o "$use_gprof" = yes -o "$use_gcov" = yes])
206
207 AC_ARG_ENABLE([tests-rpath],
208 AS_HELP_STRING([--enable-tests-rpath],[build $ORIGIN-using rpath into tests]),
209                [tests_use_rpath=$enableval], [tests_use_rpath=no])
210 AM_CONDITIONAL(TESTS_RPATH, test "$tests_use_rpath" = yes)
211
212 LIBEBL_SUBDIR="$PACKAGE"
213 AC_ARG_ENABLE([libebl-subdir],
214 AS_HELP_STRING([--enable-libebl-subdir=DIR],
215 [install libebl_CPU modules in $(libdir)/DIR]), [dnl
216 LIBEBL_SUBDIR="$enable_libebl_subdir"])
217 AC_SUBST([LIBEBL_SUBDIR])
218 AC_DEFINE_UNQUOTED(LIBEBL_SUBDIR, "$LIBEBL_SUBDIR")
219 AH_TEMPLATE([LIBEBL_SUBDIR], [$libdir subdirectory containing libebl modules.])
220
221 dnl Test for zlib and bzlib, gives ZLIB/BZLIB .am
222 dnl conditional and config.h USE_ZLIB/USE_BZLIB #define.
223 save_LIBS="$LIBS"
224 LIBS=
225 eu_ZIPLIB(zlib,ZLIB,z,gzdirect,gzip)
226 eu_ZIPLIB(bzlib,BZLIB,bz2,BZ2_bzdopen,bzip2)
227 eu_ZIPLIB(lzma,LZMA,lzma,lzma_auto_decoder,[LZMA (xz)])
228 zip_LIBS="$LIBS"
229 LIBS="$save_LIBS"
230 AC_SUBST([zip_LIBS])
231
232 AC_CHECK_LIB([stdc++], [__cxa_demangle], [dnl
233 AC_DEFINE([USE_DEMANGLE], [1], [Defined if demangling is enabled])])
234 AM_CONDITIONAL(DEMANGLE, test "$ac_cv_lib_stdcpp___cxa_demangle" = yes)
235
236 dnl The directories with content.
237
238 dnl Documentation.
239 dnl Commented out for now.
240 dnl AC_CONFIG_FILES([doc/Makefile])
241
242 dnl Support library.
243 AC_CONFIG_FILES([lib/Makefile])
244
245 dnl ELF library.
246 AC_CONFIG_FILES([libelf/Makefile])
247
248 dnl Higher-level ELF support library.
249 AC_CONFIG_FILES([libebl/Makefile])
250
251 dnl DWARF library.
252 AC_CONFIG_FILES([libdw/Makefile])
253
254 dnl Higher-level DWARF support library.
255 AC_CONFIG_FILES([libdwfl/Makefile])
256
257 dnl CPU handling library.
258 AC_CONFIG_FILES([libcpu/Makefile])
259
260 dnl Assembler library.
261 AM_CONDITIONAL(HAVE_LIBASM, true)dnl Used in tests/Makefile.am, which see.
262 AC_CONFIG_FILES([libasm/Makefile])
263
264 dnl CPU-specific backend libraries.
265 AC_CONFIG_FILES([backends/Makefile])
266
267 dnl Tools.
268 AC_CONFIG_FILES([src/Makefile po/Makefile.in])
269
270 dnl Test suite.
271 AM_CONDITIONAL(STANDALONE, false)dnl Used in tests/Makefile.am, which see.
272 AC_CONFIG_FILES([tests/Makefile])
273
274 # Get the definitions necessary to create the Makefiles in the po
275 # subdirectories.  This is a small subset of the gettext rules.
276 AC_SUBST(USE_NLS, yes)
277 AM_PO_SUBDIRS
278
279 dnl Appended to the config.h file.
280 dnl We hide all kinds of configuration magic in lib/eu-config.h.
281 AH_BOTTOM([#include <eu-config.h>])
282
283 dnl Version compatibility header.
284 AC_CONFIG_FILES([version.h:config/version.h.in])
285 AC_SUBST([eu_version])
286
287 # 1.234<whatever> -> 1234<whatever>
288 case "$PACKAGE_VERSION" in
289 [[0-9]].*) eu_version=`echo "$PACKAGE_VERSION" | sed 's@\.@@'` ;;
290 *)         AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
291 esac
292 case "$eu_version" in
293 *.*)
294   # 1234.567 -> "1234", "567"
295   eu_extra_version="${eu_version#*.}"
296   eu_version="${eu_version%%.*}"
297   case "$eu_extra_version" in
298   [[0-9]][[0-9]][[0-9]]) ;;
299   [[0-9]][[0-9]])       eu_extra_version="${eu_extra_version}0" ;;
300   [[0-9]])              eu_extra_version="${eu_extra_version}00" ;;
301   *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
302   esac
303   ;;
304 *)
305   eu_extra_version=000
306   ;;
307 esac
308
309 case "$eu_version" in
310       0[[0-9]][[0-9]][[0-9]]) eu_version="${eu_version#0}$eu_extra_version" ;;
311 [[0-9]][[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}$eu_extra_version" ;;
312 [[0-9]][[0-9]][[0-9]])        eu_version="${eu_version}0$eu_extra_version" ;;
313 [[0-9]][[0-9]])               eu_version="${eu_version}00$eu_extra_version";;
314 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
315 esac
316
317 # Round up to the next release API (x.y) version.
318 eu_version=$(( (eu_version + 999) / 1000 ))
319
320 AC_OUTPUT