1dnl -*- Autoconf -*- 2dnl Process this file with autoconf to produce a configure script. 3dnl 4dnl Copyright (C) 2019-2020 Free Software Foundation, Inc. 5dnl 6dnl This file 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; either version 2 of the License, or 9dnl (at your option) any later version. 10dnl 11dnl This program is distributed in the hope that it will be useful, 12dnl but WITHOUT ANY WARRANTY; without even the implied warranty of 13dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14dnl GNU General Public License for more details. 15dnl 16dnl You should have received a copy of the GNU General Public License 17dnl along with this program; see the file COPYING. If not see 18dnl <http://www.gnu.org/licenses/>. 19dnl 20 21AC_PREREQ(2.64) 22AC_INIT([libctf library], 1.2.0-pre) 23AC_CONFIG_SRCDIR(ctf-impl.h) 24AC_CONFIG_MACRO_DIR(../config) 25AC_CONFIG_MACRO_DIR(../bfd) 26AC_USE_SYSTEM_EXTENSIONS 27AM_INIT_AUTOMAKE 28 29# Checks for programs. 30AC_PROG_MAKE_SET 31AC_PROG_CC 32AC_PROG_RANLIB 33AM_PROG_AR 34 35dnl Default to a non shared library. This may be overridden by the 36dnl configure option --enable-shared. 37AC_DISABLE_SHARED 38 39LT_INIT 40AC_SYS_LARGEFILE 41 42MISSING=`cd $ac_aux_dir && ${PWDCMD-pwd}`/missing 43AC_CHECK_PROGS([ACLOCAL], [aclocal], [$MISSING aclocal]) 44AC_CHECK_PROGS([AUTOCONF], [autoconf], [$MISSING autoconf]) 45AC_CHECK_PROGS([AUTOHEADER], [autoheader], [$MISSING autoheader]) 46 47# Figure out what compiler warnings we can enable. 48# See config/warnings.m4 for details. 49 50ACX_PROG_CC_WARNING_OPTS([-W -Wall -Wno-narrowing -Wwrite-strings \ 51 -Wmissing-format-attribute], [warn]) 52ACX_PROG_CC_WARNING_OPTS([-Wstrict-prototypes -Wmissing-prototypes \ 53 -Wold-style-definition], [c_warn]) 54ACX_PROG_CC_WARNING_ALMOST_PEDANTIC([-Wno-long-long]) 55 56# Only enable with --enable-werror-always until existing warnings are 57# corrected. 58ACX_PROG_CC_WARNINGS_ARE_ERRORS([manual]) 59 60AM_MAINTAINER_MODE 61AM_INSTALL_LIBBFD 62ACX_PROG_CC_WARNING_OPTS([-Wall], [ac_libctf_warn_cflags]) 63 64AC_FUNC_MMAP 65# Needed for BFD capability checks. 66AC_SEARCH_LIBS(dlopen, dl) 67AM_ZLIB 68 69# Similar to GDB_AC_CHECK_BFD. 70OLD_CFLAGS=$CFLAGS 71OLD_LDFLAGS=$LDFLAGS 72OLD_LIBS=$LIBS 73# Put the old CFLAGS/LDFLAGS last, in case the user's (C|LD)FLAGS 74# points somewhere with bfd, with -I/foo/lib and -L/foo/lib. We 75# always want our bfd. 76CFLAGS="-I${srcdir}/../include -I../bfd -I${srcdir}/../bfd $CFLAGS" 77ZLIBDIR=`echo $zlibdir | sed 's,\$(top_builddir)/,,g'` 78LDFLAGS="-L../bfd -L../libiberty $ZLIBDIR $LDFLAGS" 79intl=`echo $LIBINTL | sed 's,${top_builddir}/,,g'` 80LIBS="-lbfd -liberty -lz $intl $LIBS" 81AC_CACHE_CHECK([for ELF support in BFD], ac_cv_libctf_bfd_elf, 82[AC_TRY_LINK([#include <stdlib.h> 83 #include "bfd.h" 84 #include "elf-bfd.h"], 85 [(void) bfd_section_from_elf_index (NULL, 0); 86 return 0;], 87 [ac_cv_libctf_bfd_elf=yes], 88 [ac_cv_libctf_bfd_elf=no])]) 89CFLAGS=$OLD_CFLAGS 90LDFLAGS=$OLD_LDFLAGS 91LIBS=$OLD_LIBS 92 93if test $ac_cv_libctf_bfd_elf = yes; then 94 AC_DEFINE([HAVE_BFD_ELF], 1, 95 [Whether libbfd was configured for an ELF target.]) 96fi 97 98AC_C_BIGENDIAN 99AC_CHECK_HEADERS(byteswap.h endian.h) 100AC_CHECK_FUNCS(pread) 101 102AC_CHECK_DECLS([asprintf]) 103 104dnl Check for qsort_r. (Taken from gnulib.) 105AC_CHECK_FUNCS_ONCE([qsort_r]) 106if test $ac_cv_func_qsort_r = yes; then 107 AC_CACHE_CHECK([for qsort_r signature], [ac_cv_libctf_qsort_r_signature], 108 [AC_LINK_IFELSE( 109 [AC_LANG_PROGRAM([[#undef qsort_r 110 #include <stdlib.h> 111 void qsort_r (void *, size_t, size_t, 112 int (*) (void const *, void const *, 113 void *), 114 void *); 115 void (*p) (void *, size_t, size_t, 116 int (*) (void const *, void const *, 117 void *), 118 void *) = qsort_r; 119 ]])], 120 [ac_cv_libctf_qsort_r_signature=GNU], 121 [AC_LINK_IFELSE( 122 [AC_LANG_PROGRAM([[#undef qsort_r 123 #include <stdlib.h> 124 void qsort_r (void *, size_t, size_t, void *, 125 int (*) (void *, 126 void const *, 127 void const *)); 128 void (*p) (void *, size_t, size_t, void *, 129 int (*) (void *, void const *, 130 void const *)) = qsort_r; 131 ]])], 132 [ac_cv_libctf_qsort_r_signature=BSD], 133 [ac_cv_libctf_qsort_r_signature=unknown])])]) 134fi 135 136case x$ac_cv_libctf_qsort_r_signature in 137 xGNU) AC_DEFINE([HAVE_QSORT_R_ARG_LAST], 1, 138 [Whether a qsort_r exists with a void *arg as its last arg.]);; 139 xBSD) AC_DEFINE([HAVE_QSORT_R_COMPAR_LAST], 1, 140 [Whether a qsort_r exists with the compar function as its last arg.]);; 141 *) ac_cv_libctf_qsort_r_signature=unknown;; 142esac 143 144AM_CONDITIONAL(NEED_CTF_QSORT_R, test "${ac_cv_libctf_qsort_r_signature}" = unknown) 145 146AC_CACHE_CHECK([for O_CLOEXEC], [ac_cv_libctf_macro_O_CLOEXEC], 147 [AC_LINK_IFELSE( 148 [AC_LANG_PROGRAM([[#include <fcntl.h> 149 #ifndef O_CLOEXEC 150 choke me; 151 #endif 152 ]], 153 [[return O_CLOEXEC;]])], 154 [ac_cv_libctf_macro_O_CLOEXEC=yes], 155 [ac_cv_libctf_macro_O_CLOEXEC=no])]) 156 157if test $ac_cv_libctf_macro_O_CLOEXEC = yes; then 158 AC_DEFINE([HAVE_O_CLOEXEC], 1, 159 [Whether the platform has a definition of O_CLOEXEC.]) 160fi 161 162# Horrible hacks to build DLLs on Windows and a shared library elsewhere. 163SHARED_LIBADD= 164SHARED_LDFLAGS= 165BFD_LIBADD= 166BFD_DEPENDENCIES= 167if test "$enable_shared" = "yes"; then 168# When building a shared libctf, link against the pic version of libiberty 169# so that apps that use libctf won't need libiberty just to satisfy any 170# libctf references. 171# We can't do that if a pic libiberty is unavailable since including non-pic 172# code would insert text relocations into libctf. 173# Note that linking against libbfd as we do here, which is itself linked 174# against libiberty, may not satisfy all the libctf libiberty references 175# since libbfd may not pull in the entirety of libiberty. 176changequote(,)dnl 177 x=`sed -n -e 's/^[ ]*PICFLAG[ ]*=[ ]*//p' < ../libiberty/Makefile | sed -n '$p'` 178changequote([,])dnl 179 if test -n "$x"; then 180 SHARED_LIBADD="-L`pwd`/../libiberty/pic -liberty" 181 fi 182 183 case "${host}" in 184 # More hacks to build DLLs on Windows. 185 *-*-cygwin*) 186 SHARED_LDFLAGS="-no-undefined" 187 SHARED_LIBADD="-L`pwd`/../libiberty -liberty -L`pwd`/../intl -lintl -lcygwin" 188 BFD_LIBADD="-L`pwd`/../bfd -lbfd" 189 ;; 190 191 *-*-darwin*) 192 BFD_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.dylib" 193 BFD_DEPENDENCIES="../bfd/libbfd.la" 194 ;; 195 *) 196 case "$host_vendor" in 197 hp) 198 BFD_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.sl" 199 ;; 200 *) 201 BFD_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.so" 202 ;; 203 esac 204 BFD_DEPENDENCIES="../bfd/libbfd.la" 205 ;; 206 esac 207fi 208AC_SUBST(SHARED_LDFLAGS) 209AC_SUBST(SHARED_LIBADD) 210AC_SUBST(BFD_LIBADD) 211AC_SUBST(BFD_DEPENDENCIES) 212 213# Use a version script, if possible, or an -export-symbols-regex otherwise. 214VERSION_FLAGS='-export-symbols-regex ctf_.*' 215if $LD --help 2>&1 | grep -- --version-script >/dev/null; then 216 VERSION_FLAGS="-Wl,--version-script='$srcdir/libctf.ver'" 217fi 218AC_SUBST(VERSION_FLAGS) 219 220AC_CONFIG_FILES(Makefile) 221AC_CONFIG_HEADERS(config.h) 222AC_OUTPUT 223