dnl Process this file with autoconf to produce a configure script
-AC_PREREQ(2.59)
AC_INIT
AC_CONFIG_SRCDIR([xmalloc.c])
cross_compiling=maybe
fi
+# We may wish to install the target headers somewhere.
+AC_MSG_CHECKING([whether to install libiberty headers and static library])
+dnl install-libiberty is disabled by default
+
+AC_ARG_ENABLE(install-libiberty,
+[ --enable-install-libiberty Install headers and library for end users],
+enable_install_libiberty=$enableval,
+enable_install_libiberty=no)dnl
+
+# Option parsed, now set things appropriately.
+case x"$enable_install_libiberty" in
+ xyes|x)
+ target_header_dir=libiberty
+ ;;
+ xno)
+ target_header_dir=
+ ;;
+ *)
+ # This could be sanity-checked in various ways...
+ target_header_dir="${enable_install_libiberty}"
+ ;;
+esac
+AC_MSG_RESULT($enable_install_libiberty)
+AC_MSG_NOTICE([target_header_dir = $target_header_dir])
+
GCC_NO_EXECUTABLES
AC_PROG_CC
+AC_GNU_SOURCE
+AC_SYS_LARGEFILE
AC_PROG_CPP_WERROR
ACX_PROG_CC_WARNING_OPTS([-W -Wall -Wwrite-strings -Wc++-compat \
- -Wstrict-prototypes], [ac_libiberty_warn_cflags])
+ -Wstrict-prototypes \
+ -Wshadow=local], [ac_libiberty_warn_cflags])
ACX_PROG_CC_WARNING_ALMOST_PEDANTIC([], [ac_libiberty_warn_cflags])
AC_PROG_CC_C_O
esac
if [[ -n "${frag}" ]]; then
- frags=${libiberty_topdir}/libiberty/config/$frag
-else
- frags=
+ frag=${libiberty_topdir}/libiberty/config/$frag
fi
+GCC_PICFLAG
+
# If they didn't specify --enable-shared, don't generate shared libs.
case "${enable_shared}" in
yes) shared=yes ;;
"") shared=no ;;
*) shared=yes ;;
esac
-if [[ "${shared}" = "yes" ]]; then
- frag=
- case "${host}" in
- *-*-cygwin*) ;;
- alpha*-*-linux*) frag=mh-elfalphapic ;;
- arm*-*-*) frag=mh-armpic ;;
- hppa*-*-*) frag=mh-papic ;;
- i[[34567]]86-*-* | x86_64-*-*)
- frag=mh-x86pic ;;
- powerpc*-*-aix*) ;;
- powerpc*-*-*) frag=mh-ppcpic ;;
- sparc*-*-*) frag=mh-sparcpic ;;
- s390*-*-*) frag=mh-s390pic ;;
- *) frag=mh-${host_cpu}pic ;;
- esac
- if [[ -n "${frag}" ]]; then
- frags="${frags} ${libiberty_topdir}/config/${frag}"
- fi
+
+# ...unless --enable-host-shared was passed from top-level config:
+if [[ "${enable_host_shared}" = "yes" ]]; then
+ shared=yes
+fi
+
+if [[ "${shared}" != "yes" ]]; then
+ PICFLAG=
fi
+AC_SUBST(PICFLAG)
+
+NOASANFLAG=
+case " ${CFLAGS} " in
+ *\ -fsanitize=address\ *) NOASANFLAG=-fno-sanitize=address ;;
+esac
+AC_SUBST(NOASANFLAG)
echo "# Warning: this fragment is automatically generated" > temp-frag
-for frag in ${frags}; do
- if [[ -f ${frag} ]]; then
- echo "Appending ${frag} to xhost-mkfrag"
- echo "# Following fragment copied from ${frag}" >> temp-frag
- cat ${frag} >> temp-frag
- fi
-done
+if [[ -n "${frag}" ]] && [[ -f "${frag}" ]]; then
+ echo "Appending ${frag} to xhost-mkfrag"
+ echo "# Following fragment copied from ${frag}" >> temp-frag
+ cat ${frag} >> temp-frag
+fi
# record if we want to build shared libs.
if [[ "${shared}" = "yes" ]]; then
# It's OK to check for header files. Although the compiler may not be
# able to link anything, it had better be able to at least compile
# something.
-AC_CHECK_HEADERS(sys/file.h sys/param.h limits.h stdlib.h malloc.h string.h unistd.h strings.h sys/time.h time.h sys/resource.h sys/stat.h sys/mman.h fcntl.h alloca.h sys/pstat.h sys/sysmp.h sys/sysinfo.h machine/hal_sysinfo.h sys/table.h sys/sysctl.h sys/systemcfg.h stdint.h stdio_ext.h)
+AC_CHECK_HEADERS(sys/file.h sys/param.h limits.h stdlib.h malloc.h string.h unistd.h strings.h sys/time.h time.h sys/resource.h sys/stat.h sys/mman.h fcntl.h alloca.h sys/pstat.h sys/sysmp.h sys/sysinfo.h machine/hal_sysinfo.h sys/table.h sys/sysctl.h sys/systemcfg.h stdint.h stdio_ext.h process.h sys/prctl.h)
AC_HEADER_SYS_WAIT
AC_HEADER_TIME
libiberty_AC_DECLARE_ERRNO
-# Determine the size of an int for struct fibnode.
+# Determine sizes of some types.
AC_CHECK_SIZEOF([int])
+AC_CHECK_SIZEOF([long])
+AC_CHECK_SIZEOF([size_t])
-AC_CHECK_TYPE(uintptr_t, unsigned long)
+# Check for presense of long long
+AC_CHECK_TYPE([long long],
+ [AC_DEFINE(HAVE_LONG_LONG, 1, [Define if you have the `long long' type.]) AC_CHECK_SIZEOF([long long])],
+ [])
# Look for a 64-bit type.
AC_MSG_CHECKING([for a 64-bit type])
[Define to an unsigned 64-bit type available in the compiler.])
fi
+AC_TYPE_INTPTR_T
+AC_TYPE_UINTPTR_T
+AC_TYPE_SSIZE_T
+
# Given the above check, we always have uintptr_t or a fallback
# definition. So define HAVE_UINTPTR_T in case any imported code
# relies on it.
funcs="$funcs memchr"
funcs="$funcs memcmp"
funcs="$funcs memcpy"
+funcs="$funcs memmem"
funcs="$funcs memmove"
funcs="$funcs mempcpy"
funcs="$funcs memset"
funcs="$funcs strdup"
funcs="$funcs strncasecmp"
funcs="$funcs strndup"
+funcs="$funcs strnlen"
funcs="$funcs strrchr"
funcs="$funcs strstr"
funcs="$funcs strtod"
funcs="$funcs strtol"
funcs="$funcs strtoul"
+funcs="$funcs strtoll"
+funcs="$funcs strtoull"
funcs="$funcs strverscmp"
funcs="$funcs tmpnam"
funcs="$funcs vasprintf"
funcs="$funcs vsnprintf"
funcs="$funcs vsprintf"
funcs="$funcs waitpid"
+funcs="$funcs setproctitle"
# Also in the old function.def file: alloca, vfork, getopt.
vars="sys_errlist sys_nerr sys_siglist"
-checkfuncs="getrusage on_exit psignal strerror strsignal sysconf times sbrk gettimeofday"
-checkfuncs="$checkfuncs realpath canonicalize_file_name pstat_getstatic pstat_getdynamic sysmp"
-checkfuncs="$checkfuncs getsysinfo table sysctl wait3 wait4 __fsetlocking"
+checkfuncs="__fsetlocking canonicalize_file_name dup3 getrlimit getrusage \
+ getsysinfo gettimeofday on_exit pipe2 psignal pstat_getdynamic pstat_getstatic \
+ realpath setrlimit sbrk spawnve spawnvpe strerror strsignal sysconf sysctl \
+ sysmp table times wait3 wait4"
# These are neither executed nor required, but they help keep
# autoheader happy without adding a bunch of text to acconfig.h.
if test "x" = "y"; then
- AC_CHECK_FUNCS(asprintf atexit basename bcmp bcopy bsearch bzero calloc clock \
- getcwd getpagesize gettimeofday index insque mkstemps memchr memcmp memcpy \
- memmove mempcpy memset putenv random rename rindex sigsetmask \
- strcasecmp setenv stpcpy stpncpy strchr strdup strncasecmp strndup strrchr strstr \
- strtod strtol strtoul strverscmp tmpnam vasprintf vfprintf vprintf \
- vsprintf waitpid getrusage on_exit psignal strerror strsignal \
- sysconf times sbrk gettimeofday ffs snprintf vsnprintf \
- pstat_getstatic pstat_getdynamic sysmp getsysinfo table sysctl wait3 wait4 \
- realpath canonicalize_file_name __fsetlocking)
- AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf])
+ AC_CHECK_FUNCS(asprintf atexit \
+ basename bcmp bcopy bsearch bzero \
+ calloc canonicalize_file_name clock \
+ dup3 \
+ ffs __fsetlocking \
+ getcwd getpagesize getrlimit getrusage getsysinfo gettimeofday \
+ index insque \
+ memchr memcmp memcpy memmem memmove memset mkstemps \
+ on_exit \
+ pipe2 psignal pstat_getdynamic pstat_getstatic putenv \
+ random realpath rename rindex \
+ sbrk setenv setproctitle setrlimit sigsetmask snprintf spawnve spawnvpe \
+ stpcpy stpncpy strcasecmp strchr strdup \
+ strerror strncasecmp strndup strnlen strrchr strsignal strstr strtod \
+ strtol strtoul strtoll strtoull strverscmp sysconf sysctl sysmp \
+ table times tmpnam \
+ vasprintf vfprintf vprintf vsprintf \
+ wait3 wait4 waitpid)
+ AC_CHECK_DECLS([basename(char *), ffs, asprintf, vasprintf, snprintf, vsnprintf, strtol, strtoul, strtoll, strtoull, strnlen])
AC_DEFINE(HAVE_SYS_ERRLIST, 1, [Define if you have the sys_errlist variable.])
AC_DEFINE(HAVE_SYS_NERR, 1, [Define if you have the sys_nerr variable.])
AC_DEFINE(HAVE_SYS_SIGLIST, 1, [Define if you have the sys_siglist variable.])
setobjs=
CHECK=
-target_header_dir=
if test -n "${with_target_subdir}"; then
# We are being configured as a target library. AC_REPLACE_FUNCS
AC_LIBOBJ([stpcpy])
AC_LIBOBJ([stpncpy])
AC_LIBOBJ([strndup])
+ AC_LIBOBJ([strnlen])
AC_LIBOBJ([strverscmp])
AC_LIBOBJ([vasprintf])
AC_LIBOBJ([waitpid])
for f in $funcs; do
case "$f" in
- asprintf | basename | bcmp | bcopy | bzero | clock | ffs | getpagesize | index | insque | mempcpy | mkstemps | random | rindex | sigsetmask | stpcpy | stpncpy | strdup | strndup | strverscmp | vasprintf | waitpid)
+ asprintf | basename | bcmp | bcopy | bzero | clock | ffs | getpagesize | index | insque | mempcpy | mkstemps | random | rindex | sigsetmask | stpcpy | stpncpy | strdup | strndup | strnlen | strverscmp | vasprintf | waitpid)
;;
*)
n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
setobjs=yes
;;
- esac
+ *-*-msdosdjgpp)
+ AC_LIBOBJ([vasprintf])
+ AC_LIBOBJ([vsnprintf])
+ AC_LIBOBJ([snprintf])
+ AC_LIBOBJ([asprintf])
- # We may wish to install the target headers somewhere.
- AC_ARG_ENABLE(install-libiberty,
- [ --enable-install-libiberty Install headers for end users],
- enable_install_libiberty=$enableval,
- enable_install_libiberty=no)dnl
-
- # Option parsed, now set things appropriately.
- case x"$enable_install_libiberty" in
- xyes|x)
- target_header_dir=libiberty
- ;;
- xno)
- target_header_dir=
- ;;
- *)
- # This could be sanity-checked in various ways...
- target_header_dir="${enable_install_libiberty}"
- ;;
- esac
+ for f in atexit basename bcmp bcopy bsearch bzero calloc clock ffs \
+ getcwd getpagesize getrusage gettimeofday \
+ index insque memchr memcmp memcpy memmove memset psignal \
+ putenv random rename rindex sbrk setenv stpcpy strcasecmp \
+ strchr strdup strerror strncasecmp strrchr strstr strtod \
+ strtol strtoul sysconf times tmpnam vfprintf vprintf \
+ vsprintf waitpid
+ do
+ n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ AC_DEFINE_UNQUOTED($n)
+ done
+ setobjs=yes
+ ;;
+
+ esac
+
else
# Not a target library, so we set things up to run the test suite.
# Of the functions in $checkfuncs, VxWorks only has strerror.
AC_DEFINE(HAVE_STRERROR)
- setobjs=yes
- ;;
-
- *-*-msdosdjgpp)
- for f in atexit basename bcmp bcopy bsearch bzero calloc clock ffs \
- getcwd getpagesize getrusage gettimeofday \
- index insque memchr memcmp memcpy memmove memset psignal \
- putenv random rename rindex sbrk setenv stpcpy strcasecmp \
- strchr strdup strerror strncasecmp strrchr strstr strtod \
- strtol strtoul sysconf times tmpnam vfprintf vprintf \
- vsprintf waitpid
- do
- n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
- AC_DEFINE_UNQUOTED($n)
- done
-
-
setobjs=yes
;;
case "${host}" in
- *-*-cygwin*)
- # The Cygwin library actually uses a couple of files from
- # libiberty when it is built. If we are building a native
- # Cygwin, and we run the tests, we will appear to have these
- # files. However, when we go on to build winsup, we will wind up
- # with a library which does not have the files, since they should
- # have come from libiberty.
-
- # We handle this by removing the functions the winsup library
- # provides from our shell variables, so that they appear to be
- # missing.
-
- # DJ - only if we're *building* cygwin, not just building *with* cygwin
-
- if test -n "${with_target_subdir}"
- then
- funcs="`echo $funcs | sed -e 's/random//'`"
- AC_LIBOBJ([random])
- vars="`echo $vars | sed -e 's/sys_siglist//'`"
- checkfuncs="`echo $checkfuncs | sed -e 's/strsignal//' -e 's/psignal//'`"
- fi
+ *-*-android*)
+ # On android, getpagesize is defined in unistd.h as a static inline
+ # function, which AC_CHECK_FUNCS does not handle properly.
+ ac_cv_func_getpagesize=yes
;;
*-*-mingw32*)
[AC_MSG_RESULT([no])])
AC_CHECK_FUNCS($checkfuncs)
- AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf])
+ AC_CHECK_DECLS([basename(char *), ffs, asprintf, vasprintf, snprintf, vsnprintf])
AC_CHECK_DECLS([calloc, getenv, getopt, malloc, realloc, sbrk])
+ AC_CHECK_DECLS([strtol, strtoul, strtoll, strtoull])
AC_CHECK_DECLS([strverscmp])
+ AC_CHECK_DECLS([strnlen])
libiberty_NEED_DECLARATION(canonicalize_file_name)
fi
# Figure out which version of pexecute to use.
case "${host}" in
- *-*-mingw* | *-*-winnt*) pexecute=./pex-win32.o ;;
- *-*-msdosdjgpp*) pexecute=./pex-djgpp.o ;;
- *-*-msdos*) pexecute=./pex-msdos.o ;;
- *) pexecute=./pex-unix.o ;;
+ *-*-mingw* | *-*-winnt*) pexecute=pex-win32 ;;
+ *-*-msdosdjgpp*) pexecute=pex-djgpp ;;
+ *-*-msdos*) pexecute=pex-msdos ;;
+ *) pexecute=pex-unix ;;
esac
AC_SUBST(pexecute)