Home | History | Annotate | Download | only in 0.153
      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-2012 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.153],[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-2012 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(deterministic-archives,
     51 [AS_HELP_STRING([--enable-deterministic-archives],
     52 		[ar and ranlib default to -D behavior])], [
     53 if test "${enableval}" = no; then
     54   default_ar_deterministic=false
     55 else
     56   default_ar_deterministic=true
     57 fi], [default_ar_deterministic=false])
     58 AC_DEFINE_UNQUOTED(DEFAULT_AR_DETERMINISTIC, $default_ar_deterministic,
     59 		   [Should ar and ranlib use -D behavior by default?])
     60 
     61 AC_ARG_ENABLE([thread-safety],
     62 AS_HELP_STRING([--enable-thread-safety], [enable thread safety of libraries]),
     63 use_locks=$enableval, use_locks=no)
     64 AM_CONDITIONAL(USE_LOCKS, test "$use_locks" = yes)
     65 AS_IF([test "$use_locks" = yes], [AC_DEFINE(USE_LOCKS)])
     66 
     67 AH_TEMPLATE([USE_LOCKS], [Defined if libraries should be thread-safe.])
     68 
     69 AC_PROG_CC
     70 AC_PROG_RANLIB
     71 AC_PROG_YACC
     72 AM_PROG_LEX
     73 
     74 AC_CACHE_CHECK([for gcc with C99 support], ac_cv_c99, [dnl
     75 old_CFLAGS="$CFLAGS"
     76 CFLAGS="$CFLAGS -std=gnu99"
     77 AC_COMPILE_IFELSE([AC_LANG_SOURCE([dnl
     78 int 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)
     80 CFLAGS="$old_CFLAGS"])
     81 AS_IF([test "x$ac_cv_c99" != xyes],
     82       AC_MSG_ERROR([gcc with C99 support required]))
     83 
     84 AC_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.
     87 save_CFLAGS="$CFLAGS"
     88 save_LDFLAGS="$LDFLAGS"
     89 CFLAGS="-fpic $CFLAGS"
     90 LDFLAGS="-shared -Wl,-z,defs,-z,relro $LDFLAGS"
     91 AC_LINK_IFELSE([dnl
     92 AC_LANG_PROGRAM([[#undef __thread
     93 static __thread int a; int foo (int b) { return a + b; }]],
     94 		[[exit (foo (0));]])],
     95 	       ac_cv_tls=yes, ac_cv_tls=no)
     96 CFLAGS="$save_CFLAGS"
     97 LDFLAGS="$save_LDFLAGS"])
     98 AS_IF([test "x$ac_cv_tls" != xyes],
     99       AC_MSG_ERROR([__thread support required]))
    100 
    101 dnl This test must come as early as possible after the compiler configuration
    102 dnl tests, because the choice of the file model can (in principle) affect
    103 dnl whether functions and headers are available, whether they work, etc.
    104 AC_SYS_LARGEFILE
    105 
    106 dnl Enable the linker to be build as a native-only linker.  By default it
    107 dnl can handle all architectures but this comes at a cost.  A native
    108 dnl will be slightly faster, small, and has fewer dependencies.
    109 native_ld=no
    110 AC_ARG_ENABLE([generic],
    111 AS_HELP_STRING([--disable-generic], [do not build generic linker]), [dnl
    112 if 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
    123 fi])
    124 AH_TEMPLATE([NATIVE_ELF],
    125 [Define to 32 or 64 if a specific implementation is wanted.])
    126 AM_CONDITIONAL(NATIVE_LD, test "$native_ld" = yes)
    127 dnl The automake generated Makefile cannot deal with macros in the name
    128 dnl of files if at any time there is no such file, even if the filename
    129 dnl would not be used.
    130 AS_IF([test -z "$base_cpu"], [base_cpu=none])
    131 AC_SUBST(base_cpu)
    132 dnl Support to work around automake's inflexible dependency generation.
    133 dnl See src/Makefile.am for more information.
    134 AM_CONDITIONAL(NEVER, false)
    135 
    136 dnl Enable debugging via mudflap.  This option will cause most libraries
    137 dnl to be built as archives which are statically linked into the applications.
    138 dnl All code, as far as possible, is compiled instrumented to catch all
    139 dnl the bugs valgrind is able to catch.
    140 use_mudflap=no
    141 AC_ARG_ENABLE([mudflap],
    142 AS_HELP_STRING([--enable-mudflap],
    143 [build binaries with mudflap instrumentation]), [dnl
    144 if 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"
    150 fi])
    151 if test "$use_mudflap" = fail; then
    152   AC_MSG_FAILURE([--enable-mudflap requires a compiler which understands this option])
    153 fi
    154 AM_CONDITIONAL(MUDFLAP, test "$use_mudflap" = yes)
    155 
    156 dnl enable debugging of branch prediction.
    157 AC_ARG_ENABLE([debugpred],
    158 AS_HELP_STRING([--enable-debugpred],[build binaries with support to debug branch prediction]),
    159 [use_debugpred=$enableval], [use_debugpred=no])
    160 case $use_debugpred in
    161  yes) use_debugpred=1 ;;
    162  *)   use_debugpred=0 ;;
    163 esac
    164 AC_SUBST([DEBUGPRED], $use_debugpred)
    165 
    166 dnl Enable gprof suport.
    167 AC_ARG_ENABLE([gprof],
    168 AS_HELP_STRING([--enable-gprof],[build binaries with gprof support]), [use_gprof=$enableval], [use_gprof=no])
    169 if test "$use_gprof" = yes; then
    170   CFLAGS="$CFLAGS -pg"
    171   LDFLAGS="$LDFLAGS -pg"
    172 fi
    173 AM_CONDITIONAL(GPROF, test "$use_gprof" = yes)
    174 
    175 # Enable gcov suport.
    176 AC_ARG_ENABLE([gcov],
    177 AS_HELP_STRING([--enable-gcov],[build binaries with gcov support]), [use_gcov=$enableval], [use_gcov=no])
    178 if test "$use_gcov" = yes; then
    179   CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
    180   LDFLAGS="$LDFLAGS -fprofile-arcs"
    181 fi
    182 AM_CONDITIONAL(GCOV, test "$use_gcov" = yes)
    183 
    184 AM_CONDITIONAL(BUILD_STATIC, [dnl
    185 test "$use_mudflap" = yes -o "$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 dnl The directories with content.
    217 
    218 dnl Documentation.
    219 dnl Commented out for now.
    220 dnl AC_CONFIG_FILES([doc/Makefile])
    221 
    222 dnl Support library.
    223 AC_CONFIG_FILES([lib/Makefile])
    224 
    225 dnl ELF library.
    226 AC_CONFIG_FILES([libelf/Makefile])
    227 
    228 dnl Higher-level ELF support library.
    229 AC_CONFIG_FILES([libebl/Makefile])
    230 
    231 dnl DWARF library.
    232 AC_CONFIG_FILES([libdw/Makefile])
    233 
    234 dnl Higher-level DWARF support library.
    235 AC_CONFIG_FILES([libdwfl/Makefile])
    236 
    237 dnl CPU handling library.
    238 AC_CONFIG_FILES([libcpu/Makefile])
    239 
    240 dnl Assembler library.
    241 AM_CONDITIONAL(HAVE_LIBASM, true)dnl Used in tests/Makefile.am, which see.
    242 AC_CONFIG_FILES([libasm/Makefile])
    243 
    244 dnl CPU-specific backend libraries.
    245 AC_CONFIG_FILES([backends/Makefile])
    246 
    247 dnl Tools.
    248 AC_CONFIG_FILES([src/Makefile po/Makefile.in])
    249 
    250 dnl Test suite.
    251 AM_CONDITIONAL(STANDALONE, false)dnl Used in tests/Makefile.am, which see.
    252 AC_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.
    256 AC_SUBST(USE_NLS, yes)
    257 AM_PO_SUBDIRS
    258 
    259 dnl Appended to the config.h file.
    260 dnl We hide all kinds of configuration magic in lib/eu-config.h.
    261 AH_BOTTOM([#include <eu-config.h>])
    262 
    263 dnl Version compatibility header.
    264 AC_CONFIG_FILES([version.h:config/version.h.in])
    265 AC_SUBST([eu_version])
    266 
    267 # 1.234<whatever> -> 1234<whatever>
    268 case "$PACKAGE_VERSION" in
    269 [[0-9]].*) eu_version=`echo "$PACKAGE_VERSION" | sed 's@\.@@'` ;;
    270 *)     	   AC_MSG_ERROR([confused by version number '$PACKAGE_VERSION']) ;;
    271 esac
    272 case "$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   ;;
    287 esac
    288 
    289 case "$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']) ;;
    295 esac
    296 
    297 # Round up to the next release API (x.y) version.
    298 eu_version=$(( (eu_version + 999) / 1000 ))
    299 
    300 AC_OUTPUT
    301