* sparc.cc (Target_sparc::Scan): Change from struct to class.
[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;;
11936fb1 199 sparc64) false;;
63402fe4
ILT
200 *) true;;
201 esac])
202
6eee141f 203dnl Test for __thread support.
097ec620
ILT
204AC_CACHE_CHECK([for thread support], [gold_cv_c_thread],
205[AC_COMPILE_IFELSE([__thread int i = 1;],
206[gold_cv_c_thread=yes], [gold_cv_c_thread=no])])
207
208AM_CONDITIONAL(TLS, test "$gold_cv_c_thread" = "yes")
209
210dnl On GNU/Linux TLS in static programs only works when using glibc
211dnl 2.4 or later.
212AC_CACHE_CHECK([for glibc >= 2.4], [gold_cv_lib_glibc24],
213[AC_COMPILE_IFELSE([
214#include <features.h>
215#if !defined __GLIBC__
216error
217#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4)
218error
219#endif
220], [gold_cv_lib_glibc24=yes], [gold_cv_lib_glibc24=no])])
221
222AM_CONDITIONAL(STATIC_TLS, test "$gold_cv_lib_glibc24" = "yes")
6eee141f 223
c2b45e22
CC
224dnl Test for the -ftls-dialect=gnu2 option.
225save_CFLAGS="$CFLAGS"
226CFLAGS="$CFLAGS -mtls-dialect=gnu2"
227AC_COMPILE_IFELSE([int i;], [have_tls_gnu2=yes], [have_tls_gnu2=no])
228CFLAGS="$save_CFLAGS"
229AM_CONDITIONAL(TLS_GNU2_DIALECT, test "$have_tls_gnu2" = "yes")
230
231dnl On GNU/Linux TLS descriptors are supported by the dynamic loader
232dnl only with glibc 2.5 or later.
233AC_CACHE_CHECK([for glibc >= 2.5], [gold_cv_lib_glibc25],
234[AC_COMPILE_IFELSE([
235#include <features.h>
236#if !defined __GLIBC__
237error
238#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 5)
239error
240#endif
241], [gold_cv_lib_glibc25=yes], [gold_cv_lib_glibc25=no])])
242
243AM_CONDITIONAL(TLS_DESCRIPTORS, test "$gold_cv_lib_glibc25" = "yes")
244
2fd32231
ILT
245dnl Check whether the compiler supports constructor priorities in
246dnl attributes, which were added in gcc 4.3.
247AC_CACHE_CHECK([for constructor priorities], [gold_cv_c_conprio],
248[AC_COMPILE_IFELSE([void f() __attribute__ ((constructor (1)));],
249[gold_cv_c_conprio=yes], [gold_cv_c_conprio=no])])
250
251AM_CONDITIONAL(CONSTRUCTOR_PRIORITY, test "$gold_cv_c_conprio" = "yes")
252
bae7f79e
ILT
253AM_BINUTILS_WARNINGS
254
255WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//'`
256AC_SUBST(WARN_CXXFLAGS)
257
258dnl Force support for large files by default. This may need to be
259dnl host dependent. If build == host, we can check getconf LFS_CFLAGS.
494e05f4
ILT
260LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
261AC_SUBST(LFS_CFLAGS)
bae7f79e 262
82dcae9d
ILT
263AC_REPLACE_FUNCS(pread)
264
9a0910c3
ILT
265# Link in zlib if we can. This allows us to write compressed sections.
266AC_SEARCH_LIBS(zlibVersion, z, [AC_CHECK_HEADERS(zlib.h)])
7fcd0256 267AM_CONDITIONAL(HAVE_ZLIB, test "$ac_cv_search_zlibVersion" != "no")
9a0910c3 268
54dc6425 269AC_LANG_PUSH(C++)
d288e464 270
54dc6425
ILT
271AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
272AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
e44fcf3b 273AC_CHECK_FUNCS(mallinfo)
d288e464 274
04bf7072
ILT
275# gcc 4.3.0 doesn't recognize the printf attribute on a template
276# function. Check for that. This is gcc bug 35546. This test can
277# probably be removed after the bug has been fixed for a while.
278AC_CACHE_CHECK([whether we can use attributes with template functions],
279[gold_cv_template_attribute],
280[AC_COMPILE_IFELSE([
281template<typename T> extern void foo(const char*, ...)
282 __attribute__ ((__format__ (__printf__, 1, 2)));
283template<typename T> void foo(const char* format, ...) {}
284void bar() { foo<int>("%s\n", "foo"); }
285], [gold_cv_template_attribute=yes], [gold_cv_template_attribute=no])])
286if test "$gold_cv_template_attribute" = "yes"; then
287 AC_DEFINE(HAVE_TEMPLATE_ATTRIBUTES, 1,
288 [Define if attributes work on C++ templates])
289fi
290
54dc6425
ILT
291AC_LANG_POP(C++)
292
bae7f79e
ILT
293AM_MAINTAINER_MODE
294
5a6f7e2d 295AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)
This page took 0.092305 seconds and 4 git commands to generate.