2006-08-05 07:10:59 +08:00
|
|
|
dnl Process this file with autoconf to produce a configure script.
|
|
|
|
|
|
|
|
AC_PREREQ(2.59)
|
|
|
|
AC_INIT
|
|
|
|
AC_CONFIG_SRCDIR([gold.cc])
|
|
|
|
|
|
|
|
AC_CANONICAL_TARGET
|
|
|
|
|
|
|
|
AM_INIT_AUTOMAKE(gold, 0.1)
|
|
|
|
|
|
|
|
AM_CONFIG_HEADER(config.h:config.in)
|
|
|
|
|
2007-09-05 04:00:53 +08:00
|
|
|
AC_ARG_ENABLE([targets],
|
|
|
|
[ --enable-targets alternative target configurations],
|
|
|
|
[case "${enableval}" in
|
|
|
|
yes | "")
|
|
|
|
AC_MSG_ERROR([--enable-targets option must specify target names or 'all'])
|
|
|
|
;;
|
|
|
|
no)
|
|
|
|
enable_targets=
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
enable_targets=$enableval
|
|
|
|
;;
|
|
|
|
esac],
|
|
|
|
[# For now, enable all targets by default
|
|
|
|
enable_targets=all
|
|
|
|
])
|
|
|
|
|
|
|
|
# Canonicalize the enabled targets.
|
|
|
|
if test -n "$enable_targets"; then
|
|
|
|
for targ in `echo $enable_targets | sed -e 's/,/ /g'`; do
|
|
|
|
result=`$ac_config_sub $targ 2>/dev/null`
|
|
|
|
if test -n "$result"; then
|
|
|
|
canon_targets="$canon_targets $result"
|
|
|
|
else
|
|
|
|
# Permit unrecognized target names, like "all".
|
|
|
|
canon_targets="$canon_targets $targ"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
|
|
|
|
# See which specific instantiations we need.
|
2007-10-01 07:41:32 +08:00
|
|
|
targetobjs=
|
|
|
|
all_targets=
|
2007-09-05 04:00:53 +08:00
|
|
|
for targ in $target $canon_targets; do
|
|
|
|
targ_32_little=
|
|
|
|
targ_32_big=
|
|
|
|
targ_64_little=
|
|
|
|
targ_64_big=
|
|
|
|
if test "$targ" = "all"; then
|
|
|
|
targ_32_little=yes
|
|
|
|
targ_32_big=yes
|
|
|
|
targ_64_little=yes
|
|
|
|
targ_64_big=yes
|
2007-10-01 07:41:32 +08:00
|
|
|
all_targets=yes
|
2007-09-05 04:00:53 +08:00
|
|
|
else
|
|
|
|
case "$targ" in
|
2007-10-01 07:41:32 +08:00
|
|
|
i?86-*)
|
|
|
|
targ_32_little=yes
|
|
|
|
targetobjs="$targetobjs i386.\$(OBJEXT)"
|
|
|
|
;;
|
|
|
|
x86_64-*)
|
|
|
|
targ_64_little=yes
|
|
|
|
targetobjs="$targetobjs x86_64.\$(OBJEXT)"
|
|
|
|
;;
|
2007-09-05 04:00:53 +08:00
|
|
|
*)
|
2007-10-01 07:41:32 +08:00
|
|
|
AC_MSG_ERROR("unsupported target $targ")
|
2007-09-05 04:00:53 +08:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
if test -n "$targ_32_little"; then
|
|
|
|
AC_DEFINE(HAVE_TARGET_32_LITTLE, 1,
|
|
|
|
[Define to support 32-bit little-endian targets])
|
|
|
|
fi
|
|
|
|
if test -n "$targ_32_big"; then
|
|
|
|
AC_DEFINE(HAVE_TARGET_32_BIG, 1,
|
|
|
|
[Define to support 32-bit big-endian targets])
|
|
|
|
fi
|
|
|
|
if test -n "$targ_64_little"; then
|
|
|
|
AC_DEFINE(HAVE_TARGET_64_LITTLE, 1,
|
|
|
|
[Define to support 64-bit little-endian targets])
|
|
|
|
fi
|
|
|
|
if test -n "$targ_64_big"; then
|
|
|
|
AC_DEFINE(HAVE_TARGET_64_BIG, 1,
|
|
|
|
[Define to support 64-bit big-endian targets])
|
|
|
|
fi
|
|
|
|
|
2007-10-01 07:41:32 +08:00
|
|
|
if test -n "$all_targets"; then
|
|
|
|
TARGETOBJS='$(ALL_TARGETOBJS)'
|
|
|
|
else
|
|
|
|
TARGETOBJS="$targetobjs"
|
|
|
|
fi
|
|
|
|
AC_SUBST(TARGETOBJS)
|
|
|
|
|
2006-08-05 07:10:59 +08:00
|
|
|
AC_PROG_CC
|
|
|
|
AC_PROG_CXX
|
2006-11-15 03:21:05 +08:00
|
|
|
AC_PROG_YACC
|
2006-12-01 07:52:50 +08:00
|
|
|
AC_PROG_RANLIB
|
2006-08-05 07:10:59 +08:00
|
|
|
AC_PROG_INSTALL
|
2007-09-23 04:11:12 +08:00
|
|
|
AC_PROG_LN_S
|
2006-08-05 07:10:59 +08:00
|
|
|
ZW_GNU_GETTEXT_SISTER_DIR
|
|
|
|
AM_PO_SUBDIRS
|
|
|
|
|
2006-10-21 04:40:49 +08:00
|
|
|
AC_C_BIGENDIAN
|
|
|
|
|
2006-08-05 07:10:59 +08:00
|
|
|
AC_EXEEXT
|
|
|
|
|
2007-09-23 04:11:12 +08:00
|
|
|
AM_CONDITIONAL(NATIVE_LINKER,
|
|
|
|
test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias")
|
|
|
|
AM_CONDITIONAL(GCC, test "$GCC" = yes)
|
|
|
|
|
2007-10-03 06:45:07 +08:00
|
|
|
dnl Some architectures do not support taking pointers of functions
|
|
|
|
dnl defined in shared libraries except in -fPIC mode. We need to
|
|
|
|
dnl tell the unittest framework if we're compiling for one of those
|
|
|
|
dnl targets, so it doesn't try to run the tests that do that.
|
|
|
|
AM_CONDITIONAL(FN_PTRS_IN_SO_WITHOUT_PIC, [
|
|
|
|
case $target_cpu in
|
|
|
|
i?86) true;;
|
|
|
|
x86_64) false;;
|
|
|
|
*) true;;
|
|
|
|
esac])
|
|
|
|
|
2006-08-05 07:10:59 +08:00
|
|
|
AM_BINUTILS_WARNINGS
|
|
|
|
|
|
|
|
WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//'`
|
|
|
|
AC_SUBST(WARN_CXXFLAGS)
|
|
|
|
|
|
|
|
dnl Force support for large files by default. This may need to be
|
|
|
|
dnl host dependent. If build == host, we can check getconf LFS_CFLAGS.
|
|
|
|
LFS_CXXFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
|
|
|
|
AC_SUBST(LFS_CXXFLAGS)
|
|
|
|
|
2007-09-25 14:43:17 +08:00
|
|
|
AC_REPLACE_FUNCS(pread)
|
|
|
|
|
2006-09-27 05:00:34 +08:00
|
|
|
AC_LANG_PUSH(C++)
|
2006-09-27 05:20:56 +08:00
|
|
|
|
2006-09-27 05:00:34 +08:00
|
|
|
AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
|
|
|
|
AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
|
2006-09-27 05:20:56 +08:00
|
|
|
|
|
|
|
dnl Test whether the compiler can specify a member templates to call.
|
|
|
|
AC_COMPILE_IFELSE([
|
|
|
|
class c { public: template<int i> void fn(); };
|
|
|
|
template<int i> void foo(c cv) { cv.fn<i>(); }
|
|
|
|
template void foo<1>(c cv);],
|
|
|
|
[AC_DEFINE(HAVE_MEMBER_TEMPLATE_SPECIFICATIONS, [],
|
|
|
|
[Whether the C++ compiler can call a template member with no arguments])])
|
|
|
|
|
2006-09-27 05:00:34 +08:00
|
|
|
AC_LANG_POP(C++)
|
|
|
|
|
2006-08-05 07:10:59 +08:00
|
|
|
AM_MAINTAINER_MODE
|
|
|
|
|
2006-12-01 07:52:50 +08:00
|
|
|
AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)
|