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