• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1dnl Process this file with autoconf to produce a configure script.
2dnl Configure input file for elfutils.                     -*-autoconf-*-
3dnl
4dnl Copyright (C) 1996-2014 Red Hat, Inc.
5dnl
6dnl This file is part of elfutils.
7dnl
8dnl  This file is free software; you can redistribute it and/or modify
9dnl  it under the terms of the GNU General Public License as published by
10dnl  the Free Software Foundation; either version 3 of the License, or
11dnl  (at your option) any later version.
12dnl
13dnl  elfutils is distributed in the hope that it will be useful, but
14dnl  WITHOUT ANY WARRANTY; without even the implied warranty of
15dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16dnl  GNU General Public License for more details.
17dnl
18dnl  You should have received a copy of the GNU General Public License
19dnl  along with this program.  If not, see <http://www.gnu.org/licenses/>.
20AC_INIT([elfutils],[0.161],[https://bugzilla.redhat.com/],[elfutils])
21
22AC_CONFIG_AUX_DIR([config])
23AC_CONFIG_FILES([config/Makefile])
24
25AC_COPYRIGHT([Copyright (C) 1996-2014 Red Hat, Inc.])
26AC_PREREQ(2.63)			dnl Minimum Autoconf version required.
27
28dnl We use GNU make extensions; automake 1.10 defaults to -Wportability.
29AM_INIT_AUTOMAKE([gnits 1.11 -Wno-portability dist-bzip2 no-dist-gzip parallel-tests])
30AM_MAINTAINER_MODE
31
32dnl Unique ID for this build.
33MODVERSION="Build on $(hostname) $(date +%FT%R:%S%z)"
34AC_SUBST([MODVERSION])
35AC_DEFINE_UNQUOTED(MODVERSION, "$MODVERSION")
36AH_TEMPLATE([MODVERSION], [Identifier for modules in the build.])
37
38AC_CONFIG_SRCDIR([libelf/libelf.h])
39AC_CONFIG_FILES([Makefile])
40AC_CONFIG_HEADERS([config.h])
41
42AC_CONFIG_MACRO_DIR([m4])
43AC_CONFIG_FILES([m4/Makefile])
44
45dnl The RPM spec file.  We substitute a few values in the file.
46AC_CONFIG_FILES([elfutils.spec:config/elfutils.spec.in])
47
48
49AC_CANONICAL_HOST
50
51AC_ARG_ENABLE(deterministic-archives,
52[AS_HELP_STRING([--enable-deterministic-archives],
53		[ar and ranlib default to -D behavior])], [
54if test "${enableval}" = no; then
55  default_ar_deterministic=false
56else
57  default_ar_deterministic=true
58fi], [default_ar_deterministic=false])
59AC_DEFINE_UNQUOTED(DEFAULT_AR_DETERMINISTIC, $default_ar_deterministic,
60		   [Should ar and ranlib use -D behavior by default?])
61
62AC_ARG_ENABLE([thread-safety],
63AS_HELP_STRING([--enable-thread-safety],
64               [enable thread safety of libraries EXPERIMENTAL]),
65               use_locks=$enableval, use_locks=no)
66AM_CONDITIONAL(USE_LOCKS, test "$use_locks" = yes)
67AS_IF([test "$use_locks" = yes], [AC_DEFINE(USE_LOCKS)])
68AS_IF([test "$use_locks" = yes],
69      [AC_MSG_WARN([thread-safety is EXPERIMENTAL tests might fail.])])
70
71AH_TEMPLATE([USE_LOCKS], [Defined if libraries should be thread-safe.])
72
73AC_PROG_CC
74AC_PROG_RANLIB
75AC_PROG_YACC
76AM_PROG_LEX
77# Only available since automake 1.12
78m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
79AC_CHECK_TOOL([READELF], [readelf])
80AC_CHECK_TOOL([NM], [nm])
81
82AC_CACHE_CHECK([for gcc with C99 support], ac_cv_c99, [dnl
83old_CFLAGS="$CFLAGS"
84CFLAGS="$CFLAGS -std=gnu99"
85AC_COMPILE_IFELSE([AC_LANG_SOURCE([dnl
86int foo (int a) { for (int i = 0; i < a; ++i) if (i % 4) break; int s = a; }])],
87		  ac_cv_c99=yes, ac_cv_c99=no)
88CFLAGS="$old_CFLAGS"])
89AS_IF([test "x$ac_cv_c99" != xyes],
90      AC_MSG_ERROR([gcc with C99 support required]))
91
92AC_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.
95save_CFLAGS="$CFLAGS"
96save_LDFLAGS="$LDFLAGS"
97CFLAGS="-fpic $CFLAGS"
98LDFLAGS="-shared -Wl,-z,defs,-z,relro $LDFLAGS"
99AC_LINK_IFELSE([dnl
100AC_LANG_PROGRAM([[#undef __thread
101static __thread int a; int foo (int b) { return a + b; }]],
102		[[exit (foo (0));]])],
103	       ac_cv_tls=yes, ac_cv_tls=no)
104CFLAGS="$save_CFLAGS"
105LDFLAGS="$save_LDFLAGS"])
106AS_IF([test "x$ac_cv_tls" != xyes],
107      AC_MSG_ERROR([__thread support required]))
108
109dnl This test must come as early as possible after the compiler configuration
110dnl tests, because the choice of the file model can (in principle) affect
111dnl whether functions and headers are available, whether they work, etc.
112AC_SYS_LARGEFILE
113
114dnl Enable the linker to be build as a native-only linker.  By default it
115dnl can handle all architectures but this comes at a cost.  A native
116dnl will be slightly faster, small, and has fewer dependencies.
117native_ld=no
118AC_ARG_ENABLE([generic],
119AS_HELP_STRING([--disable-generic], [do not build generic linker]), [dnl
120if test "$enable_generic" = no; then
121  case "$host_cpu" in
122   i?86)
123    AC_DEFINE(NATIVE_ELF, 32)
124    native_ld=yes
125    base_cpu=i386
126    ;;
127   *)
128    AC_MSG_ERROR([no machine-specific linker for this configuration available])
129    ;;
130  esac
131fi])
132AH_TEMPLATE([NATIVE_ELF],
133[Define to 32 or 64 if a specific implementation is wanted.])
134AM_CONDITIONAL(NATIVE_LD, test "$native_ld" = yes)
135dnl The automake generated Makefile cannot deal with macros in the name
136dnl of files if at any time there is no such file, even if the filename
137dnl would not be used.
138AS_IF([test -z "$base_cpu"], [base_cpu=none])
139AC_SUBST(base_cpu)
140dnl Support to work around automake's inflexible dependency generation.
141dnl See src/Makefile.am for more information.
142AM_CONDITIONAL(NEVER, false)
143
144dnl enable debugging of branch prediction.
145AC_ARG_ENABLE([debugpred],
146AS_HELP_STRING([--enable-debugpred],[build binaries with support to debug branch prediction]),
147[use_debugpred=$enableval], [use_debugpred=no])
148case $use_debugpred in
149 yes) use_debugpred=1 ;;
150 *)   use_debugpred=0 ;;
151esac
152AC_SUBST([DEBUGPRED], $use_debugpred)
153
154dnl Enable gprof suport.
155AC_ARG_ENABLE([gprof],
156AS_HELP_STRING([--enable-gprof],[build binaries with gprof support]), [use_gprof=$enableval], [use_gprof=no])
157if test "$use_gprof" = yes; then
158  CFLAGS="$CFLAGS -pg"
159  LDFLAGS="$LDFLAGS -pg"
160fi
161AM_CONDITIONAL(GPROF, test "$use_gprof" = yes)
162
163# Enable gcov suport.
164AC_ARG_ENABLE([gcov],
165AS_HELP_STRING([--enable-gcov],[build binaries with gcov support]), [use_gcov=$enableval], [use_gcov=no])
166if test "$use_gcov" = yes; then
167  CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
168  LDFLAGS="$LDFLAGS -fprofile-arcs"
169fi
170AM_CONDITIONAL(GCOV, test "$use_gcov" = yes)
171
172AC_ARG_ENABLE([valgrind],
173AS_HELP_STRING([--enable-valgrind],[run all tests under valgrind]),
174[use_valgrind=$enableval], [use_valgrind=no])
175if test "$use_valgrind" = yes; then
176  AC_CHECK_PROG(HAVE_VALGRIND, valgrind, yes, no)
177  if test "$HAVE_VALGRIND" = "no"; then
178    AC_MSG_ERROR([valgrind not found])
179  fi
180fi
181AM_CONDITIONAL(USE_VALGRIND, test "$use_valgrind" = yes)
182
183AM_CONDITIONAL(BUILD_STATIC, [dnl
184test "$use_gprof" = yes -o "$use_gcov" = yes])
185
186AC_ARG_ENABLE([tests-rpath],
187AS_HELP_STRING([--enable-tests-rpath],[build $ORIGIN-using rpath into tests]),
188	       [tests_use_rpath=$enableval], [tests_use_rpath=no])
189AM_CONDITIONAL(TESTS_RPATH, test "$tests_use_rpath" = yes)
190
191LIBEBL_SUBDIR="$PACKAGE"
192AC_ARG_ENABLE([libebl-subdir],
193AS_HELP_STRING([--enable-libebl-subdir=DIR],
194[install libebl_CPU modules in $(libdir)/DIR]), [dnl
195LIBEBL_SUBDIR="$enable_libebl_subdir"])
196AC_SUBST([LIBEBL_SUBDIR])
197AC_DEFINE_UNQUOTED(LIBEBL_SUBDIR, "$LIBEBL_SUBDIR")
198AH_TEMPLATE([LIBEBL_SUBDIR], [$libdir subdirectory containing libebl modules.])
199
200dnl Test for zlib and bzlib, gives ZLIB/BZLIB .am
201dnl conditional and config.h USE_ZLIB/USE_BZLIB #define.
202save_LIBS="$LIBS"
203LIBS=
204eu_ZIPLIB(zlib,ZLIB,z,gzdirect,gzip)
205eu_ZIPLIB(bzlib,BZLIB,bz2,BZ2_bzdopen,bzip2)
206eu_ZIPLIB(lzma,LZMA,lzma,lzma_auto_decoder,[LZMA (xz)])
207zip_LIBS="$LIBS"
208LIBS="$save_LIBS"
209AC_SUBST([zip_LIBS])
210
211AC_CHECK_LIB([stdc++], [__cxa_demangle], [dnl
212AC_DEFINE([USE_DEMANGLE], [1], [Defined if demangling is enabled])])
213AM_CONDITIONAL(DEMANGLE, test "$ac_cv_lib_stdcpp___cxa_demangle" = yes)
214
215AC_ARG_ENABLE([textrelcheck],
216AS_HELP_STRING([--disable-textrelcheck],
217               [Disable textrelcheck being a fatal error]))
218AM_CONDITIONAL(FATAL_TEXTREL, [test "x$enable_textrelcheck" != "xno"])
219
220dnl The directories with content.
221
222dnl Documentation.
223dnl Commented out for now.
224dnl AC_CONFIG_FILES([doc/Makefile])
225
226dnl Support library.
227AC_CONFIG_FILES([lib/Makefile])
228
229dnl ELF library.
230AC_CONFIG_FILES([libelf/Makefile])
231
232dnl Higher-level ELF support library.
233AC_CONFIG_FILES([libebl/Makefile])
234
235dnl DWARF-ELF Lower-level Functions support library.
236AC_CONFIG_FILES([libdwelf/Makefile])
237
238dnl DWARF library.
239AC_CONFIG_FILES([libdw/Makefile])
240
241dnl Higher-level DWARF support library.
242AC_CONFIG_FILES([libdwfl/Makefile])
243
244dnl CPU handling library.
245AC_CONFIG_FILES([libcpu/Makefile])
246
247dnl Assembler library.
248AM_CONDITIONAL(HAVE_LIBASM, true)dnl Used in tests/Makefile.am, which see.
249AC_CONFIG_FILES([libasm/Makefile])
250
251dnl CPU-specific backend libraries.
252AC_CONFIG_FILES([backends/Makefile])
253
254dnl Tools.
255AC_CONFIG_FILES([src/Makefile po/Makefile.in])
256
257dnl Test suite.
258AM_CONDITIONAL(STANDALONE, false)dnl Used in tests/Makefile.am, which see.
259AC_CONFIG_FILES([tests/Makefile])
260
261# Get the definitions necessary to create the Makefiles in the po
262# subdirectories.  This is a small subset of the gettext rules.
263AC_SUBST(USE_NLS, yes)
264AM_PO_SUBDIRS
265
266dnl Appended to the config.h file.
267dnl We hide all kinds of configuration magic in lib/eu-config.h.
268AH_BOTTOM([#include <eu-config.h>])
269
270dnl Version compatibility header.
271AC_CONFIG_FILES([version.h:config/version.h.in])
272AC_SUBST([eu_version])
273
274# 1.234<whatever> -> 1234<whatever>
275case "$PACKAGE_VERSION" in
276[[0-9]].*) eu_version=`echo "$PACKAGE_VERSION" | sed 's@\.@@'` ;;
277*)     	   AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
278esac
279case "$eu_version" in
280*.*)
281  # 1234.567 -> "1234", "567"
282  eu_extra_version="${eu_version#*.}"
283  eu_version="${eu_version%%.*}"
284  case "$eu_extra_version" in
285  [[0-9]][[0-9]][[0-9]]) ;;
286  [[0-9]][[0-9]])	eu_extra_version="${eu_extra_version}0" ;;
287  [[0-9]])	   	eu_extra_version="${eu_extra_version}00" ;;
288  *) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
289  esac
290  ;;
291*)
292  eu_extra_version=000
293  ;;
294esac
295
296case "$eu_version" in
297      0[[0-9]][[0-9]][[0-9]]) eu_version="${eu_version#0}$eu_extra_version" ;;
298[[0-9]][[0-9]][[0-9]][[0-9]]) eu_version="${eu_version}$eu_extra_version" ;;
299[[0-9]][[0-9]][[0-9]])	      eu_version="${eu_version}0$eu_extra_version" ;;
300[[0-9]][[0-9]])	  	      eu_version="${eu_version}00$eu_extra_version";;
301*) AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
302esac
303
304# Round up to the next release API (x.y) version.
305eu_version=$(( (eu_version + 999) / 1000 ))
306
307AC_CHECK_SIZEOF(long)
308
309# On aarch64 before glibc 2.20 we would get the kernel user_pt_regs instead
310# of the user_regs_struct from sys/user.h. They are structurally the same
311# but we get either one or the other.
312AC_CHECK_TYPE([struct user_regs_struct],
313              [sys_user_has_user_regs=yes], [sys_user_has_user_regs=no],
314              [[#include <sys/ptrace.h>]
315               [#include <sys/time.h>]
316               [#include <sys/user.h>]])
317if test "$sys_user_has_user_regs" = "yes"; then
318  AC_DEFINE(HAVE_SYS_USER_REGS, 1,
319            [Define to 1 if <sys/user.h> defines struct user_regs_struct])
320fi
321
322# On a 64-bit host where can can use $CC -m32, we'll run two sets of tests.
323# Likewise in a 32-bit build on a host where $CC -m64 works.
324utrace_BIARCH
325# `$utrace_biarch' will be `-m64' even on an uniarch i386 machine.
326CC_BIARCH="$CC $utrace_biarch"
327AC_SUBST([CC_BIARCH])
328
329AC_OUTPUT
330