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