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