* Makefile.in (clean): rm -f $(DEPDIR)/*.
[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")
89fc3421
CC
55
56AC_ARG_ENABLE([plugins],
57[ --enable-plugins linker plugins],
58[case "${enableval}" in
59 yes | "") plugins=yes ;;
60 no) plugins=no ;;
61 *) plugins=yes ;;
62 esac],
63[plugins=no])
64if test "$plugins" = "yes"; then
65 AC_DEFINE(ENABLE_PLUGINS, 1,
66 [Define to enable linker plugins])
67fi
68AM_CONDITIONAL(PLUGINS, test "$plugins" = "yes")
fe9a4c12 69
193a53d9
ILT
70AC_ARG_ENABLE([targets],
71[ --enable-targets alternative target configurations],
72[case "${enableval}" in
73 yes | "")
74 AC_MSG_ERROR([--enable-targets option must specify target names or 'all'])
75 ;;
76 no)
77 enable_targets=
78 ;;
79 *)
80 enable_targets=$enableval
81 ;;
82esac],
83[# For now, enable all targets by default
84 enable_targets=all
85])
86
87# Canonicalize the enabled targets.
88if test -n "$enable_targets"; then
89 for targ in `echo $enable_targets | sed -e 's/,/ /g'`; do
90 result=`$ac_config_sub $targ 2>/dev/null`
91 if test -n "$result"; then
92 canon_targets="$canon_targets $result"
93 else
94 # Permit unrecognized target names, like "all".
95 canon_targets="$canon_targets $targ"
96 fi
97 done
98fi
99
100# See which specific instantiations we need.
6df6da4a
ILT
101targetobjs=
102all_targets=
fbfba508
ILT
103default_machine=
104default_size=
105default_big_endian=
106targ_32_little=
107targ_32_big=
108targ_64_little=
109targ_64_big=
193a53d9 110for targ in $target $canon_targets; do
193a53d9
ILT
111 if test "$targ" = "all"; then
112 targ_32_little=yes
113 targ_32_big=yes
114 targ_64_little=yes
115 targ_64_big=yes
6df6da4a 116 all_targets=yes
193a53d9 117 else
fbfba508
ILT
118 . ${srcdir}/configure.tgt
119
120 if test "$targ_obj" = "UNKNOWN"; then
6df6da4a 121 AC_MSG_ERROR("unsupported target $targ")
fbfba508
ILT
122 else
123 targetobjs="$targetobjs ${targ_obj}.\$(OBJEXT)"
60b2b4e7
ILT
124 if test "$targ_extra_obj" != ""; then
125 targetobjs="$targetobjs ${targ_extra_obj}.\$(OBJEXT)"
126 fi
f5314dd5
DM
127 if test "$targ_size" = "32" -o "$targ_extra_size" = "32"; then
128 if test "$targ_big_endian" = "true" \
129 -o "$targ_extra_big_endian" = "true"; then
130 targ_32_big=yes
131 fi
132 if test "$targ_big_endian" = "false" \
133 -o "$targ_extra_big_endian" = "false"; then
134 targ_32_little=yes
135 fi
136 fi
137 if test "$targ_size" = "64" -o "$targ_extra_size" = "64"; then
138 if test "$targ_big_endian" = "true" \
139 -o "$targ_extra_big_endian" = "true"; then
140 targ_64_big=yes
141 fi
142 if test "$targ_big_endian" = "false" \
143 -o "$targ_extra_big_endian" = "false"; then
144 targ_64_little=yes
145 fi
fbfba508
ILT
146 fi
147
148 if test "$target" = "$targ"; then
149 default_machine=$targ_machine
150 default_size=$targ_size
151 default_big_endian=$targ_big_endian
152 fi
153 fi
193a53d9
ILT
154 fi
155done
156
157if test -n "$targ_32_little"; then
158 AC_DEFINE(HAVE_TARGET_32_LITTLE, 1,
159 [Define to support 32-bit little-endian targets])
160fi
161if test -n "$targ_32_big"; then
162 AC_DEFINE(HAVE_TARGET_32_BIG, 1,
163 [Define to support 32-bit big-endian targets])
164fi
165if test -n "$targ_64_little"; then
166 AC_DEFINE(HAVE_TARGET_64_LITTLE, 1,
167 [Define to support 64-bit little-endian targets])
168fi
169if test -n "$targ_64_big"; then
170 AC_DEFINE(HAVE_TARGET_64_BIG, 1,
171 [Define to support 64-bit big-endian targets])
172fi
173
6df6da4a
ILT
174if test -n "$all_targets"; then
175 TARGETOBJS='$(ALL_TARGETOBJS)'
176else
177 TARGETOBJS="$targetobjs"
178fi
179AC_SUBST(TARGETOBJS)
180
fbfba508
ILT
181AC_DEFINE_UNQUOTED(GOLD_DEFAULT_MACHINE, $default_machine,
182 [Default machine code])
183AC_DEFINE_UNQUOTED(GOLD_DEFAULT_SIZE, $default_size,
184 [Default size (32 or 64)])
185AC_DEFINE_UNQUOTED(GOLD_DEFAULT_BIG_ENDIAN, $default_big_endian,
186 [Default big endian (true or false)])
187
bae7f79e
ILT
188AC_PROG_CC
189AC_PROG_CXX
dbe717ef 190AC_PROG_YACC
5a6f7e2d 191AC_PROG_RANLIB
bae7f79e 192AC_PROG_INSTALL
537b5f51 193AC_PROG_LN_S
fa99aa09
ILT
194
195AC_GNU_SOURCE
196
bae7f79e
ILT
197ZW_GNU_GETTEXT_SISTER_DIR
198AM_PO_SUBDIRS
199
92e059d8
ILT
200AC_C_BIGENDIAN
201
bae7f79e
ILT
202AC_EXEEXT
203
537b5f51
ILT
204AM_CONDITIONAL(NATIVE_LINKER,
205 test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias")
206AM_CONDITIONAL(GCC, test "$GCC" = yes)
207
63402fe4
ILT
208dnl Some architectures do not support taking pointers of functions
209dnl defined in shared libraries except in -fPIC mode. We need to
210dnl tell the unittest framework if we're compiling for one of those
211dnl targets, so it doesn't try to run the tests that do that.
212AM_CONDITIONAL(FN_PTRS_IN_SO_WITHOUT_PIC, [
213 case $target_cpu in
214 i?86) true;;
215 x86_64) false;;
11936fb1 216 sparc64) false;;
63402fe4
ILT
217 *) true;;
218 esac])
219
6eee141f 220dnl Test for __thread support.
097ec620
ILT
221AC_CACHE_CHECK([for thread support], [gold_cv_c_thread],
222[AC_COMPILE_IFELSE([__thread int i = 1;],
223[gold_cv_c_thread=yes], [gold_cv_c_thread=no])])
224
225AM_CONDITIONAL(TLS, test "$gold_cv_c_thread" = "yes")
226
227dnl On GNU/Linux TLS in static programs only works when using glibc
228dnl 2.4 or later.
229AC_CACHE_CHECK([for glibc >= 2.4], [gold_cv_lib_glibc24],
230[AC_COMPILE_IFELSE([
231#include <features.h>
232#if !defined __GLIBC__
233error
234#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4)
235error
236#endif
237], [gold_cv_lib_glibc24=yes], [gold_cv_lib_glibc24=no])])
238
239AM_CONDITIONAL(STATIC_TLS, test "$gold_cv_lib_glibc24" = "yes")
6eee141f 240
155a0dd7
ILT
241dnl Test for #pragma omp threadprivate
242AC_CACHE_CHECK([for omp support], [gold_cv_c_threadprivate],
243[save_CFLAGS="$CFLAGS"
244CFLAGS="$CFLAGS -fopenmp"
245AC_COMPILE_IFELSE([
246#include <omp.h>
247int i;
248#pragma omp threadprivate (i)
249], [gold_cv_c_threadprivate=yes], [gold_cv_c_threadprivate=no])
250CFLAGS="$save_CFLAGS"])
251if test "$gold_cv_c_threadprivate" = "yes"; then
252 AC_DEFINE(HAVE_OMP_SUPPORT, 1,
253 [Define if compiler supports #pragma omp threadprivate])
254fi
255AM_CONDITIONAL(OMP_SUPPORT, test "$gold_cv_c_threadprivate" = "yes")
256
c2b45e22
CC
257dnl Test for the -ftls-dialect=gnu2 option.
258save_CFLAGS="$CFLAGS"
259CFLAGS="$CFLAGS -mtls-dialect=gnu2"
260AC_COMPILE_IFELSE([int i;], [have_tls_gnu2=yes], [have_tls_gnu2=no])
261CFLAGS="$save_CFLAGS"
262AM_CONDITIONAL(TLS_GNU2_DIALECT, test "$have_tls_gnu2" = "yes")
263
264dnl On GNU/Linux TLS descriptors are supported by the dynamic loader
b0074644
ILT
265dnl only with glibc 2.9 or later.
266AC_CACHE_CHECK([for glibc >= 2.9], [gold_cv_lib_glibc29],
c2b45e22
CC
267[AC_COMPILE_IFELSE([
268#include <features.h>
269#if !defined __GLIBC__
270error
b0074644 271#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 9)
c2b45e22
CC
272error
273#endif
b0074644 274], [gold_cv_lib_glibc29=yes], [gold_cv_lib_glibc29=no])])
c2b45e22 275
b0074644 276AM_CONDITIONAL(TLS_DESCRIPTORS, test "$gold_cv_lib_glibc29" = "yes")
c2b45e22 277
2fd32231
ILT
278dnl Check whether the compiler supports constructor priorities in
279dnl attributes, which were added in gcc 4.3.
280AC_CACHE_CHECK([for constructor priorities], [gold_cv_c_conprio],
281[AC_COMPILE_IFELSE([void f() __attribute__ ((constructor (1)));],
282[gold_cv_c_conprio=yes], [gold_cv_c_conprio=no])])
283
284AM_CONDITIONAL(CONSTRUCTOR_PRIORITY, test "$gold_cv_c_conprio" = "yes")
285
1d1f116d
CD
286dnl Test for the -frandom-seed option.
287AC_CACHE_CHECK([for -frandom-seed support], [gold_cv_c_random_seed],
288[save_CFLAGS="$CFLAGS"
289CFLAGS="$CFLAGS -frandom-seed=foo"
290AC_COMPILE_IFELSE([int i;], [gold_cv_c_random_seed=yes],
291[gold_cv_c_random_seed=no])
292CFLAGS="$save_CFLAGS"])
293if test "$gold_cv_c_random_seed" = "yes"; then
294 # In Makefile, '$@' will be expanded to be the name of the file
295 # being built, providing a unique seed for each file.
296 RANDOM_SEED_CFLAGS=-frandom-seed=\$@
297fi
298AC_SUBST(RANDOM_SEED_CFLAGS)
299
bae7f79e
ILT
300AM_BINUTILS_WARNINGS
301
302WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//'`
303AC_SUBST(WARN_CXXFLAGS)
304
305dnl Force support for large files by default. This may need to be
306dnl host dependent. If build == host, we can check getconf LFS_CFLAGS.
494e05f4
ILT
307LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
308AC_SUBST(LFS_CFLAGS)
bae7f79e 309
82dcae9d
ILT
310AC_REPLACE_FUNCS(pread)
311
9a0910c3
ILT
312# Link in zlib if we can. This allows us to write compressed sections.
313AC_SEARCH_LIBS(zlibVersion, z, [AC_CHECK_HEADERS(zlib.h)])
7fcd0256 314AM_CONDITIONAL(HAVE_ZLIB, test "$ac_cv_search_zlibVersion" != "no")
9a0910c3 315
54dc6425 316AC_LANG_PUSH(C++)
d288e464 317
54dc6425
ILT
318AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
319AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
e44fcf3b 320AC_CHECK_FUNCS(mallinfo)
d288e464 321
04bf7072
ILT
322# gcc 4.3.0 doesn't recognize the printf attribute on a template
323# function. Check for that. This is gcc bug 35546. This test can
324# probably be removed after the bug has been fixed for a while.
325AC_CACHE_CHECK([whether we can use attributes with template functions],
326[gold_cv_template_attribute],
327[AC_COMPILE_IFELSE([
328template<typename T> extern void foo(const char*, ...)
329 __attribute__ ((__format__ (__printf__, 1, 2)));
330template<typename T> void foo(const char* format, ...) {}
331void bar() { foo<int>("%s\n", "foo"); }
332], [gold_cv_template_attribute=yes], [gold_cv_template_attribute=no])])
333if test "$gold_cv_template_attribute" = "yes"; then
334 AC_DEFINE(HAVE_TEMPLATE_ATTRIBUTES, 1,
335 [Define if attributes work on C++ templates])
336fi
337
54dc6425
ILT
338AC_LANG_POP(C++)
339
bae7f79e
ILT
340AM_MAINTAINER_MODE
341
5a6f7e2d 342AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)
This page took 0.144153 seconds and 4 git commands to generate.