* i386.cc (Target_i386::define_tls_base_symbol): New function.
[deliverable/binutils-gdb.git] / gold / configure.ac
CommitLineData
bae7f79e
ILT
1dnl Process this file with autoconf to produce a configure script.
2
3AC_PREREQ(2.59)
8486ee48
ILT
4
5AC_INIT(gold, 0.1)
6AC_CONFIG_SRCDIR(gold.cc)
bae7f79e
ILT
7
8AC_CANONICAL_TARGET
9
8486ee48 10AM_INIT_AUTOMAKE
bae7f79e
ILT
11
12AM_CONFIG_HEADER(config.h:config.in)
13
ad2d6943
ILT
14AC_ARG_WITH(sysroot,
15[ --with-sysroot[=DIR] search for usr/lib et al within DIR],
16[sysroot=$withval], [sysroot=no])
17
18if test "$sysroot" = "yes"; then
19 sysroot='${exec_prefix}/${target_alias}/sys-root'
20elif test "$sysroot" = "no"; then
21 sysroot=
22fi
23
24sysroot_relocatable=0
25if 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
34fi
35
36AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT, "$sysroot",
37 [System root for target files])
38AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT_RELOCATABLE, $sysroot_relocatable,
39 [Whether the system root can be relocated])
40
fe9a4c12
ILT
41dnl For now threads are a configure time option.
42AC_ARG_ENABLE([threads],
43[ --enable-threads multi-threaded linking],
44[case "${enableval}" in
45 yes | "") threads=yes ;;
46 no) threads=no ;;
47 *) threads=yes ;;
48 esac],
49[threads=no])
50if test "$threads" = "yes"; then
51 AC_DEFINE(ENABLE_THREADS, 1,
52 [Define to do multi-threaded linking])
53fi
54AM_CONDITIONAL(THREADS, test "$threads" = "yes")
55
193a53d9
ILT
56AC_ARG_ENABLE([targets],
57[ --enable-targets alternative target configurations],
58[case "${enableval}" in
59 yes | "")
60 AC_MSG_ERROR([--enable-targets option must specify target names or 'all'])
61 ;;
62 no)
63 enable_targets=
64 ;;
65 *)
66 enable_targets=$enableval
67 ;;
68esac],
69[# For now, enable all targets by default
70 enable_targets=all
71])
72
73# Canonicalize the enabled targets.
74if test -n "$enable_targets"; then
75 for targ in `echo $enable_targets | sed -e 's/,/ /g'`; do
76 result=`$ac_config_sub $targ 2>/dev/null`
77 if test -n "$result"; then
78 canon_targets="$canon_targets $result"
79 else
80 # Permit unrecognized target names, like "all".
81 canon_targets="$canon_targets $targ"
82 fi
83 done
84fi
85
86# See which specific instantiations we need.
6df6da4a
ILT
87targetobjs=
88all_targets=
fbfba508
ILT
89default_machine=
90default_size=
91default_big_endian=
92targ_32_little=
93targ_32_big=
94targ_64_little=
95targ_64_big=
193a53d9 96for targ in $target $canon_targets; do
193a53d9
ILT
97 if test "$targ" = "all"; then
98 targ_32_little=yes
99 targ_32_big=yes
100 targ_64_little=yes
101 targ_64_big=yes
6df6da4a 102 all_targets=yes
193a53d9 103 else
fbfba508
ILT
104 . ${srcdir}/configure.tgt
105
106 if test "$targ_obj" = "UNKNOWN"; then
6df6da4a 107 AC_MSG_ERROR("unsupported target $targ")
fbfba508
ILT
108 else
109 targetobjs="$targetobjs ${targ_obj}.\$(OBJEXT)"
f5314dd5
DM
110 if test "$targ_size" = "32" -o "$targ_extra_size" = "32"; then
111 if test "$targ_big_endian" = "true" \
112 -o "$targ_extra_big_endian" = "true"; then
113 targ_32_big=yes
114 fi
115 if test "$targ_big_endian" = "false" \
116 -o "$targ_extra_big_endian" = "false"; then
117 targ_32_little=yes
118 fi
119 fi
120 if test "$targ_size" = "64" -o "$targ_extra_size" = "64"; then
121 if test "$targ_big_endian" = "true" \
122 -o "$targ_extra_big_endian" = "true"; then
123 targ_64_big=yes
124 fi
125 if test "$targ_big_endian" = "false" \
126 -o "$targ_extra_big_endian" = "false"; then
127 targ_64_little=yes
128 fi
fbfba508
ILT
129 fi
130
131 if test "$target" = "$targ"; then
132 default_machine=$targ_machine
133 default_size=$targ_size
134 default_big_endian=$targ_big_endian
135 fi
136 fi
193a53d9
ILT
137 fi
138done
139
140if test -n "$targ_32_little"; then
141 AC_DEFINE(HAVE_TARGET_32_LITTLE, 1,
142 [Define to support 32-bit little-endian targets])
143fi
144if test -n "$targ_32_big"; then
145 AC_DEFINE(HAVE_TARGET_32_BIG, 1,
146 [Define to support 32-bit big-endian targets])
147fi
148if test -n "$targ_64_little"; then
149 AC_DEFINE(HAVE_TARGET_64_LITTLE, 1,
150 [Define to support 64-bit little-endian targets])
151fi
152if test -n "$targ_64_big"; then
153 AC_DEFINE(HAVE_TARGET_64_BIG, 1,
154 [Define to support 64-bit big-endian targets])
155fi
156
6df6da4a
ILT
157if test -n "$all_targets"; then
158 TARGETOBJS='$(ALL_TARGETOBJS)'
159else
160 TARGETOBJS="$targetobjs"
161fi
162AC_SUBST(TARGETOBJS)
163
fbfba508
ILT
164AC_DEFINE_UNQUOTED(GOLD_DEFAULT_MACHINE, $default_machine,
165 [Default machine code])
166AC_DEFINE_UNQUOTED(GOLD_DEFAULT_SIZE, $default_size,
167 [Default size (32 or 64)])
168AC_DEFINE_UNQUOTED(GOLD_DEFAULT_BIG_ENDIAN, $default_big_endian,
169 [Default big endian (true or false)])
170
bae7f79e
ILT
171AC_PROG_CC
172AC_PROG_CXX
dbe717ef 173AC_PROG_YACC
5a6f7e2d 174AC_PROG_RANLIB
bae7f79e 175AC_PROG_INSTALL
537b5f51 176AC_PROG_LN_S
fa99aa09
ILT
177
178AC_GNU_SOURCE
179
bae7f79e
ILT
180ZW_GNU_GETTEXT_SISTER_DIR
181AM_PO_SUBDIRS
182
92e059d8
ILT
183AC_C_BIGENDIAN
184
bae7f79e
ILT
185AC_EXEEXT
186
537b5f51
ILT
187AM_CONDITIONAL(NATIVE_LINKER,
188 test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias")
189AM_CONDITIONAL(GCC, test "$GCC" = yes)
190
63402fe4
ILT
191dnl Some architectures do not support taking pointers of functions
192dnl defined in shared libraries except in -fPIC mode. We need to
193dnl tell the unittest framework if we're compiling for one of those
194dnl targets, so it doesn't try to run the tests that do that.
195AM_CONDITIONAL(FN_PTRS_IN_SO_WITHOUT_PIC, [
196 case $target_cpu in
197 i?86) true;;
198 x86_64) false;;
199 *) true;;
200 esac])
201
6eee141f 202dnl Test for __thread support.
097ec620
ILT
203AC_CACHE_CHECK([for thread support], [gold_cv_c_thread],
204[AC_COMPILE_IFELSE([__thread int i = 1;],
205[gold_cv_c_thread=yes], [gold_cv_c_thread=no])])
206
207AM_CONDITIONAL(TLS, test "$gold_cv_c_thread" = "yes")
208
209dnl On GNU/Linux TLS in static programs only works when using glibc
210dnl 2.4 or later.
211AC_CACHE_CHECK([for glibc >= 2.4], [gold_cv_lib_glibc24],
212[AC_COMPILE_IFELSE([
213#include <features.h>
214#if !defined __GLIBC__
215error
216#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4)
217error
218#endif
219], [gold_cv_lib_glibc24=yes], [gold_cv_lib_glibc24=no])])
220
221AM_CONDITIONAL(STATIC_TLS, test "$gold_cv_lib_glibc24" = "yes")
6eee141f 222
c2b45e22
CC
223dnl Test for the -ftls-dialect=gnu2 option.
224save_CFLAGS="$CFLAGS"
225CFLAGS="$CFLAGS -mtls-dialect=gnu2"
226AC_COMPILE_IFELSE([int i;], [have_tls_gnu2=yes], [have_tls_gnu2=no])
227CFLAGS="$save_CFLAGS"
228AM_CONDITIONAL(TLS_GNU2_DIALECT, test "$have_tls_gnu2" = "yes")
229
230dnl On GNU/Linux TLS descriptors are supported by the dynamic loader
231dnl only with glibc 2.5 or later.
232AC_CACHE_CHECK([for glibc >= 2.5], [gold_cv_lib_glibc25],
233[AC_COMPILE_IFELSE([
234#include <features.h>
235#if !defined __GLIBC__
236error
237#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 5)
238error
239#endif
240], [gold_cv_lib_glibc25=yes], [gold_cv_lib_glibc25=no])])
241
242AM_CONDITIONAL(TLS_DESCRIPTORS, test "$gold_cv_lib_glibc25" = "yes")
243
2fd32231
ILT
244dnl Check whether the compiler supports constructor priorities in
245dnl attributes, which were added in gcc 4.3.
246AC_CACHE_CHECK([for constructor priorities], [gold_cv_c_conprio],
247[AC_COMPILE_IFELSE([void f() __attribute__ ((constructor (1)));],
248[gold_cv_c_conprio=yes], [gold_cv_c_conprio=no])])
249
250AM_CONDITIONAL(CONSTRUCTOR_PRIORITY, test "$gold_cv_c_conprio" = "yes")
251
bae7f79e
ILT
252AM_BINUTILS_WARNINGS
253
254WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//'`
255AC_SUBST(WARN_CXXFLAGS)
256
257dnl Force support for large files by default. This may need to be
258dnl host dependent. If build == host, we can check getconf LFS_CFLAGS.
494e05f4
ILT
259LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
260AC_SUBST(LFS_CFLAGS)
bae7f79e 261
82dcae9d
ILT
262AC_REPLACE_FUNCS(pread)
263
9a0910c3
ILT
264# Link in zlib if we can. This allows us to write compressed sections.
265AC_SEARCH_LIBS(zlibVersion, z, [AC_CHECK_HEADERS(zlib.h)])
7fcd0256 266AM_CONDITIONAL(HAVE_ZLIB, test "$ac_cv_search_zlibVersion" != "no")
9a0910c3 267
54dc6425 268AC_LANG_PUSH(C++)
d288e464 269
54dc6425
ILT
270AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
271AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
e44fcf3b 272AC_CHECK_FUNCS(mallinfo)
d288e464 273
04bf7072
ILT
274# gcc 4.3.0 doesn't recognize the printf attribute on a template
275# function. Check for that. This is gcc bug 35546. This test can
276# probably be removed after the bug has been fixed for a while.
277AC_CACHE_CHECK([whether we can use attributes with template functions],
278[gold_cv_template_attribute],
279[AC_COMPILE_IFELSE([
280template<typename T> extern void foo(const char*, ...)
281 __attribute__ ((__format__ (__printf__, 1, 2)));
282template<typename T> void foo(const char* format, ...) {}
283void bar() { foo<int>("%s\n", "foo"); }
284], [gold_cv_template_attribute=yes], [gold_cv_template_attribute=no])])
285if test "$gold_cv_template_attribute" = "yes"; then
286 AC_DEFINE(HAVE_TEMPLATE_ATTRIBUTES, 1,
287 [Define if attributes work on C++ templates])
288fi
289
54dc6425
ILT
290AC_LANG_POP(C++)
291
bae7f79e
ILT
292AM_MAINTAINER_MODE
293
5a6f7e2d 294AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)
This page took 0.101877 seconds and 4 git commands to generate.