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