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