Fix -Wimplicit warnings.
[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-2015 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.161],[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-2014 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],
64                [enable thread safety of libraries EXPERIMENTAL]),
65                use_locks=$enableval, use_locks=no)
66 AM_CONDITIONAL(USE_LOCKS, test "$use_locks" = yes)
67 AS_IF([test "$use_locks" = yes], [AC_DEFINE(USE_LOCKS)])
68 AS_IF([test "$use_locks" = yes],
69       [AC_MSG_WARN([thread-safety is EXPERIMENTAL tests might fail.])])
70
71 AH_TEMPLATE([USE_LOCKS], [Defined if libraries should be thread-safe.])
72
73 AC_PROG_CC
74 AC_PROG_RANLIB
75 AC_PROG_YACC
76 AM_PROG_LEX
77 # Only available since automake 1.12
78 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
79 AC_CHECK_TOOL([READELF], [readelf])
80 AC_CHECK_TOOL([NM], [nm])
81
82 AC_CACHE_CHECK([for gcc with C99 support], ac_cv_c99, [dnl
83 old_CFLAGS="$CFLAGS"
84 CFLAGS="$CFLAGS -std=gnu99"
85 AC_COMPILE_IFELSE([AC_LANG_SOURCE([dnl
86 int foo (int a) { for (int i = 0; i < a; ++i) if (i % 4) break; int s = a; return s;}])],
87                   ac_cv_c99=yes, ac_cv_c99=no)
88 CFLAGS="$old_CFLAGS"])
89 AS_IF([test "x$ac_cv_c99" != xyes],
90       AC_MSG_ERROR([gcc with C99 support required]))
91
92 AC_CACHE_CHECK([for __thread support], ac_cv_tls, [dnl
93 # Use the same flags that we use for our DSOs, so the test is representative.
94 # Some old compiler/linker/libc combinations fail some ways and not others.
95 save_CFLAGS="$CFLAGS"
96 save_LDFLAGS="$LDFLAGS"
97 CFLAGS="-fpic $CFLAGS"
98 LDFLAGS="-shared -Wl,-z,defs,-z,relro $LDFLAGS"
99 AC_LINK_IFELSE([dnl
100 AC_LANG_PROGRAM([[#include <stdlib.h>
101 #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 of branch prediction.
146 AC_ARG_ENABLE([debugpred],
147 AS_HELP_STRING([--enable-debugpred],[build binaries with support to debug branch prediction]),
148 [use_debugpred=$enableval], [use_debugpred=no])
149 case $use_debugpred in
150  yes) use_debugpred=1 ;;
151  *)   use_debugpred=0 ;;
152 esac
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=$enableval], [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=$enableval], [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 AC_ARG_ENABLE([valgrind],
174 AS_HELP_STRING([--enable-valgrind],[run all tests under valgrind]),
175 [use_valgrind=$enableval], [use_valgrind=no])
176 if test "$use_valgrind" = yes; then
177   AC_CHECK_PROG(HAVE_VALGRIND, valgrind, yes, no)
178   if test "$HAVE_VALGRIND" = "no"; then
179     AC_MSG_ERROR([valgrind not found])
180   fi
181 fi
182 AM_CONDITIONAL(USE_VALGRIND, test "$use_valgrind" = yes)
183
184 AM_CONDITIONAL(BUILD_STATIC, [dnl
185 test "$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 AC_ARG_ENABLE([textrelcheck],
217 AS_HELP_STRING([--disable-textrelcheck],
218                [Disable textrelcheck being a fatal error]))
219 AM_CONDITIONAL(FATAL_TEXTREL, [test "x$enable_textrelcheck" != "xno"])
220
221 dnl The directories with content.
222
223 dnl Documentation.
224 dnl Commented out for now.
225 dnl AC_CONFIG_FILES([doc/Makefile])
226
227 dnl Support library.
228 AC_CONFIG_FILES([lib/Makefile])
229
230 dnl ELF library.
231 AC_CONFIG_FILES([libelf/Makefile])
232
233 dnl Higher-level ELF support library.
234 AC_CONFIG_FILES([libebl/Makefile])
235
236 dnl DWARF-ELF Lower-level Functions support library.
237 AC_CONFIG_FILES([libdwelf/Makefile])
238
239 dnl DWARF library.
240 AC_CONFIG_FILES([libdw/Makefile])
241
242 dnl Higher-level DWARF support library.
243 AC_CONFIG_FILES([libdwfl/Makefile])
244
245 dnl CPU handling library.
246 AC_CONFIG_FILES([libcpu/Makefile])
247
248 dnl Assembler library.
249 AM_CONDITIONAL(HAVE_LIBASM, true)dnl Used in tests/Makefile.am, which see.
250 AC_CONFIG_FILES([libasm/Makefile])
251
252 dnl CPU-specific backend libraries.
253 AC_CONFIG_FILES([backends/Makefile])
254
255 dnl Tools.
256 AC_CONFIG_FILES([src/Makefile po/Makefile.in])
257
258 dnl Test suite.
259 AM_CONDITIONAL(STANDALONE, false)dnl Used in tests/Makefile.am, which see.
260 AC_CONFIG_FILES([tests/Makefile])
261
262 # Get the definitions necessary to create the Makefiles in the po
263 # subdirectories.  This is a small subset of the gettext rules.
264 AC_SUBST(USE_NLS, yes)
265 AM_PO_SUBDIRS
266
267 dnl Appended to the config.h file.
268 dnl We hide all kinds of configuration magic in lib/eu-config.h.
269 AH_BOTTOM([#include <eu-config.h>])
270
271 dnl Version compatibility header.
272 AC_CONFIG_FILES([version.h:config/version.h.in])
273 AC_SUBST([eu_version])
274
275 # 1.234<whatever> -> 1234<whatever>
276 case "$PACKAGE_VERSION" in
277 [[0-9]].*) eu_version=`echo "$PACKAGE_VERSION" | sed 's@\.@@'` ;;
278 *)         AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
279 esac
280 case "$eu_version" in
281 *.*)
282   # 1234.567 -> "1234", "567"
283   eu_extra_version="${eu_version#*.}"
284   eu_version="${eu_version%%.*}"
285   case "$eu_extra_version" in
286   [[0-9]][[0-9]][[0-9]]) ;;
287   [[0-9]][[0-9]])       eu_extra_version="${eu_extra_version}0" ;;
288   [[0-9]])              eu_extra_version="${eu_extra_version}00" ;;
289   *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
290   esac
291   ;;
292 *)
293   eu_extra_version=000
294   ;;
295 esac
296
297 case "$eu_version" in
298       0[[0-9]][[0-9]][[0-9]]) eu_version="${eu_version#0}$eu_extra_version" ;;
299 [[0-9]][[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}$eu_extra_version" ;;
300 [[0-9]][[0-9]][[0-9]])        eu_version="${eu_version}0$eu_extra_version" ;;
301 [[0-9]][[0-9]])               eu_version="${eu_version}00$eu_extra_version";;
302 *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
303 esac
304
305 # Round up to the next release API (x.y) version.
306 eu_version=$(( (eu_version + 999) / 1000 ))
307
308 AC_CHECK_SIZEOF(long)
309
310 # On aarch64 before glibc 2.20 we would get the kernel user_pt_regs instead
311 # of the user_regs_struct from sys/user.h. They are structurally the same
312 # but we get either one or the other.
313 AC_CHECK_TYPE([struct user_regs_struct],
314               [sys_user_has_user_regs=yes], [sys_user_has_user_regs=no],
315               [[#include <sys/ptrace.h>]
316                [#include <sys/time.h>]
317                [#include <sys/user.h>]])
318 if test "$sys_user_has_user_regs" = "yes"; then
319   AC_DEFINE(HAVE_SYS_USER_REGS, 1,
320             [Define to 1 if <sys/user.h> defines struct user_regs_struct])
321 fi
322
323 # On a 64-bit host where can can use $CC -m32, we'll run two sets of tests.
324 # Likewise in a 32-bit build on a host where $CC -m64 works.
325 utrace_BIARCH
326 # `$utrace_biarch' will be `-m64' even on an uniarch i386 machine.
327 CC_BIARCH="$CC $utrace_biarch"
328 AC_SUBST([CC_BIARCH])
329
330 AC_OUTPUT