Only run static TLS tests on glibc 2.4 or later.
[deliverable/binutils-gdb.git] / gold / configure.ac
1 dnl Process this file with autoconf to produce a configure script.
2
3 AC_PREREQ(2.59)
4
5 AC_INIT(gold, 0.1)
6 AC_CONFIG_SRCDIR(gold.cc)
7
8 AC_CANONICAL_TARGET
9
10 AM_INIT_AUTOMAKE
11
12 AM_CONFIG_HEADER(config.h:config.in)
13
14 AC_ARG_WITH(sysroot,
15 [ --with-sysroot[=DIR] search for usr/lib et al within DIR],
16 [sysroot=$withval], [sysroot=no])
17
18 if test "$sysroot" = "yes"; then
19 sysroot='${exec_prefix}/${target_alias}/sys-root'
20 elif test "$sysroot" = "no"; then
21 sysroot=
22 fi
23
24 sysroot_relocatable=0
25 if test -n "$sysroot"; then
26 case "sysroot" in
27 "${prefix}" | "${prefix}/"* | \
28 "${exec_prefix}" | "${exec_prefix}/"* | \
29 '${prefix}' | '${prefix}/'*| \
30 '${exec_prefix}' | '${exec_prefix}/'*)
31 sysroot_relocatable=1
32 ;;
33 esac
34 fi
35
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])
40
41 AC_ARG_ENABLE([targets],
42 [ --enable-targets alternative target configurations],
43 [case "${enableval}" in
44 yes | "")
45 AC_MSG_ERROR([--enable-targets option must specify target names or 'all'])
46 ;;
47 no)
48 enable_targets=
49 ;;
50 *)
51 enable_targets=$enableval
52 ;;
53 esac],
54 [# For now, enable all targets by default
55 enable_targets=all
56 ])
57
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"
64 else
65 # Permit unrecognized target names, like "all".
66 canon_targets="$canon_targets $targ"
67 fi
68 done
69 fi
70
71 # See which specific instantiations we need.
72 targetobjs=
73 all_targets=
74 for targ in $target $canon_targets; do
75 targ_32_little=
76 targ_32_big=
77 targ_64_little=
78 targ_64_big=
79 if test "$targ" = "all"; then
80 targ_32_little=yes
81 targ_32_big=yes
82 targ_64_little=yes
83 targ_64_big=yes
84 all_targets=yes
85 else
86 case "$targ" in
87 i?86-*)
88 targ_32_little=yes
89 targetobjs="$targetobjs i386.\$(OBJEXT)"
90 ;;
91 x86_64-*)
92 targ_64_little=yes
93 targetobjs="$targetobjs x86_64.\$(OBJEXT)"
94 ;;
95 *)
96 AC_MSG_ERROR("unsupported target $targ")
97 ;;
98 esac
99 fi
100 done
101
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])
105 fi
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])
109 fi
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])
113 fi
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])
117 fi
118
119 if test -n "$all_targets"; then
120 TARGETOBJS='$(ALL_TARGETOBJS)'
121 else
122 TARGETOBJS="$targetobjs"
123 fi
124 AC_SUBST(TARGETOBJS)
125
126 AC_PROG_CC
127 AC_PROG_CXX
128 AC_PROG_YACC
129 AC_PROG_RANLIB
130 AC_PROG_INSTALL
131 AC_PROG_LN_S
132 ZW_GNU_GETTEXT_SISTER_DIR
133 AM_PO_SUBDIRS
134
135 AC_C_BIGENDIAN
136
137 AC_EXEEXT
138
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)
142
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, [
148 case $target_cpu in
149 i?86) true;;
150 x86_64) false;;
151 *) true;;
152 esac])
153
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])])
158
159 AM_CONDITIONAL(TLS, test "$gold_cv_c_thread" = "yes")
160
161 dnl On GNU/Linux TLS in static programs only works when using glibc
162 dnl 2.4 or later.
163 AC_CACHE_CHECK([for glibc >= 2.4], [gold_cv_lib_glibc24],
164 [AC_COMPILE_IFELSE([
165 #include <features.h>
166 #if !defined __GLIBC__
167 error
168 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4)
169 error
170 #endif
171 ], [gold_cv_lib_glibc24=yes], [gold_cv_lib_glibc24=no])])
172
173 AM_CONDITIONAL(STATIC_TLS, test "$gold_cv_lib_glibc24" = "yes")
174
175 AM_BINUTILS_WARNINGS
176
177 WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//'`
178 AC_SUBST(WARN_CXXFLAGS)
179
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)
184
185 AC_REPLACE_FUNCS(pread)
186
187 AC_LANG_PUSH(C++)
188
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)
192
193 dnl Test whether the compiler can specify a member templates to call.
194 AC_CACHE_CHECK([template member calls], [gold_cv_c_membertemplates],
195 [AC_COMPILE_IFELSE([
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])])
200
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])
204 fi
205
206 AC_LANG_POP(C++)
207
208 AM_MAINTAINER_MODE
209
210 AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)
This page took 0.034958 seconds and 5 git commands to generate.