1 dnl Process this file with autoconf to produce a configure script.
6 AC_CONFIG_SRCDIR(gold.cc)
12 AM_CONFIG_HEADER(config.h:config.in)
15 [ --with-sysroot[=DIR] search for usr/lib et al within DIR],
16 [sysroot=$withval], [sysroot=no])
18 if test "$sysroot" = "yes"; then
19 sysroot='${exec_prefix}/${target_alias}/sys-root'
20 elif test "$sysroot" = "no"; then
25 if test -n "$sysroot"; then
27 "${prefix}" | "${prefix}/"* | \
28 "${exec_prefix}" | "${exec_prefix}/"* | \
29 '${prefix}' | '${prefix}/'*| \
30 '${exec_prefix}' | '${exec_prefix}/'*)
36 AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT, "$sysroot",
37 [System root for target files])
38 AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT_RELOCATABLE, $sysroot_relocatable,
39 [Whether the system root can be relocated])
41 AC_ARG_ENABLE([targets],
42 [ --enable-targets alternative target configurations],
43 [case "${enableval}" in
45 AC_MSG_ERROR([--enable-targets option must specify target names or 'all'])
51 enable_targets=$enableval
54 [# For now, enable all targets by default
58 # Canonicalize the enabled targets.
59 if test -n "$enable_targets"; then
60 for targ in `echo $enable_targets | sed -e 's/,/ /g'`; do
61 result=`$ac_config_sub $targ 2>/dev/null`
62 if test -n "$result"; then
63 canon_targets="$canon_targets $result"
65 # Permit unrecognized target names, like "all".
66 canon_targets="$canon_targets $targ"
71 # See which specific instantiations we need.
74 for targ in $target $canon_targets; do
79 if test "$targ" = "all"; then
89 targetobjs="$targetobjs i386.\$(OBJEXT)"
93 targetobjs="$targetobjs x86_64.\$(OBJEXT)"
96 AC_MSG_ERROR("unsupported target $targ")
102 if test -n "$targ_32_little"; then
103 AC_DEFINE(HAVE_TARGET_32_LITTLE, 1,
104 [Define to support 32-bit little-endian targets])
106 if test -n "$targ_32_big"; then
107 AC_DEFINE(HAVE_TARGET_32_BIG, 1,
108 [Define to support 32-bit big-endian targets])
110 if test -n "$targ_64_little"; then
111 AC_DEFINE(HAVE_TARGET_64_LITTLE, 1,
112 [Define to support 64-bit little-endian targets])
114 if test -n "$targ_64_big"; then
115 AC_DEFINE(HAVE_TARGET_64_BIG, 1,
116 [Define to support 64-bit big-endian targets])
119 if test -n "$all_targets"; then
120 TARGETOBJS='$(ALL_TARGETOBJS)'
122 TARGETOBJS="$targetobjs"
132 ZW_GNU_GETTEXT_SISTER_DIR
139 AM_CONDITIONAL(NATIVE_LINKER,
140 test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias")
141 AM_CONDITIONAL(GCC, test "$GCC" = yes)
143 dnl Some architectures do not support taking pointers of functions
144 dnl defined in shared libraries except in -fPIC mode. We need to
145 dnl tell the unittest framework if we're compiling for one of those
146 dnl targets, so it doesn't try to run the tests that do that.
147 AM_CONDITIONAL(FN_PTRS_IN_SO_WITHOUT_PIC, [
154 dnl Test for __thread support.
155 AC_CACHE_CHECK([for thread support], [gold_cv_c_thread],
156 [AC_COMPILE_IFELSE([__thread int i = 1;],
157 [gold_cv_c_thread=yes], [gold_cv_c_thread=no])])
159 AM_CONDITIONAL(TLS, test "$gold_cv_c_thread" = "yes")
161 dnl On GNU/Linux TLS in static programs only works when using glibc
163 AC_CACHE_CHECK([for glibc >= 2.4], [gold_cv_lib_glibc24],
165 #include <features.h>
166 #if !defined __GLIBC__
168 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4)
171 ], [gold_cv_lib_glibc24=yes], [gold_cv_lib_glibc24=no])])
173 AM_CONDITIONAL(STATIC_TLS, test "$gold_cv_lib_glibc24" = "yes")
177 WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//'`
178 AC_SUBST(WARN_CXXFLAGS)
180 dnl Force support for large files by default. This may need to be
181 dnl host dependent. If build == host, we can check getconf LFS_CFLAGS.
182 LFS_CXXFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
183 AC_SUBST(LFS_CXXFLAGS)
185 AC_REPLACE_FUNCS(pread)
189 AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
190 AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
191 AC_CHECK_FUNCS(mallinfo)
193 dnl Test whether the compiler can specify a member templates to call.
194 AC_CACHE_CHECK([template member calls], [gold_cv_c_membertemplates],
196 class c { public: template<int i> void fn(); };
197 template<int i> void foo(c cv) { cv.fn<i>(); }
198 template void foo<1>(c cv);],
199 [gold_cv_c_membertemplates=yes], [gold_cv_c_membertemplates=no])])
201 if test "$gold_cv_c_membertemplates" = "yes"; then
202 AC_DEFINE(HAVE_MEMBER_TEMPLATE_SPECIFICATIONS, [],
203 [Whether the C++ compiler can call a template member with no arguments])
210 AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)