daily update
[deliverable/binutils-gdb.git] / gold / configure.ac
... / ...
CommitLineData
1dnl Process this file with autoconf to produce a configure script.
2
3AC_PREREQ(2.59)
4
5AC_INIT(gold, 0.1)
6AC_CONFIG_SRCDIR(gold.cc)
7
8AC_CANONICAL_TARGET
9
10AM_INIT_AUTOMAKE
11
12AM_CONFIG_HEADER(config.h:config.in)
13
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
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
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")
69
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.
101targetobjs=
102all_targets=
103default_machine=
104default_size=
105default_big_endian=
106targ_32_little=
107targ_32_big=
108targ_64_little=
109targ_64_big=
110for targ in $target $canon_targets; do
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
116 all_targets=yes
117 else
118 . ${srcdir}/configure.tgt
119
120 if test "$targ_obj" = "UNKNOWN"; then
121 AC_MSG_ERROR("unsupported target $targ")
122 else
123 targetobjs="$targetobjs ${targ_obj}.\$(OBJEXT)"
124 if test "$targ_extra_obj" != ""; then
125 targetobjs="$targetobjs ${targ_extra_obj}.\$(OBJEXT)"
126 fi
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
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
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
174if test -n "$all_targets"; then
175 TARGETOBJS='$(ALL_TARGETOBJS)'
176else
177 TARGETOBJS="$targetobjs"
178fi
179AC_SUBST(TARGETOBJS)
180
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
188AC_PROG_CC
189AC_PROG_CXX
190AC_PROG_YACC
191AC_PROG_RANLIB
192AC_PROG_INSTALL
193AC_PROG_LN_S
194
195AC_GNU_SOURCE
196
197ZW_GNU_GETTEXT_SISTER_DIR
198AM_PO_SUBDIRS
199
200AC_C_BIGENDIAN
201
202AC_EXEEXT
203
204AM_CONDITIONAL(NATIVE_LINKER,
205 test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias")
206AM_CONDITIONAL(GCC, test "$GCC" = yes)
207
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;;
216 sparc64) false;;
217 *) true;;
218 esac])
219
220dnl Test for __thread support.
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")
240
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
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
265dnl only with glibc 2.9 or later.
266AC_CACHE_CHECK([for glibc >= 2.9], [gold_cv_lib_glibc29],
267[AC_COMPILE_IFELSE([
268#include <features.h>
269#if !defined __GLIBC__
270error
271#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 9)
272error
273#endif
274], [gold_cv_lib_glibc29=yes], [gold_cv_lib_glibc29=no])])
275
276AM_CONDITIONAL(TLS_DESCRIPTORS, test "$gold_cv_lib_glibc29" = "yes")
277
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
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
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.
307LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
308AC_SUBST(LFS_CFLAGS)
309
310AC_REPLACE_FUNCS(pread)
311
312# Link in zlib if we can. This allows us to write compressed sections.
313AC_SEARCH_LIBS(zlibVersion, z, [AC_CHECK_HEADERS(zlib.h)])
314AM_CONDITIONAL(HAVE_ZLIB, test "$ac_cv_search_zlibVersion" != "no")
315
316AC_LANG_PUSH(C++)
317
318AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
319AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
320AC_CHECK_FUNCS(mallinfo)
321
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
338AC_LANG_POP(C++)
339
340AM_MAINTAINER_MODE
341
342AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)
This page took 0.02337 seconds and 4 git commands to generate.