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