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