Initialize strtok_r's saveptr to NULL
[deliverable/binutils-gdb.git] / gold / configure.ac
CommitLineData
bae7f79e 1dnl Process this file with autoconf to produce a configure script.
5bf135a7 2dnl
6f2750fe 3dnl Copyright (C) 2006-2016 Free Software Foundation, Inc.
5bf135a7
NC
4dnl
5dnl This file is free software; you can redistribute it and/or modify
6dnl it under the terms of the GNU General Public License as published by
7dnl the Free Software Foundation; either version 3 of the License, or
8dnl (at your option) any later version.
2b64b551 9dnl
5bf135a7
NC
10dnl This program is distributed in the hope that it will be useful,
11dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
12dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13dnl GNU General Public License for more details.
2b64b551 14dnl
5bf135a7
NC
15dnl You should have received a copy of the GNU General Public License
16dnl along with this program; see the file COPYING3. If not see
17dnl <http://www.gnu.org/licenses/>.
18dnl
bae7f79e
ILT
19
20AC_PREREQ(2.59)
8486ee48
ILT
21
22AC_INIT(gold, 0.1)
23AC_CONFIG_SRCDIR(gold.cc)
bae7f79e
ILT
24
25AC_CANONICAL_TARGET
26
6ea55b82 27AM_INIT_AUTOMAKE([no-dist parallel-tests])
bae7f79e
ILT
28
29AM_CONFIG_HEADER(config.h:config.in)
30
df7b86aa
NC
31# PR 14072
32AH_VERBATIM([00_CONFIG_H_CHECK],
33[/* Check that config.h is #included before system headers
34 (this works only for glibc, but that should be enough). */
0a6f1bf2 35#if defined(__GLIBC__) && !defined(__FreeBSD_kernel__) && !defined(__CONFIG_H__)
df7b86aa
NC
36# error config.h must be #included before system headers
37#endif
38#define __CONFIG_H__ 1])
39
ad2d6943
ILT
40AC_ARG_WITH(sysroot,
41[ --with-sysroot[=DIR] search for usr/lib et al within DIR],
42[sysroot=$withval], [sysroot=no])
43
44if test "$sysroot" = "yes"; then
45 sysroot='${exec_prefix}/${target_alias}/sys-root'
46elif test "$sysroot" = "no"; then
47 sysroot=
48fi
49
50sysroot_relocatable=0
51if test -n "$sysroot"; then
52 case "sysroot" in
53 "${prefix}" | "${prefix}/"* | \
54 "${exec_prefix}" | "${exec_prefix}/"* | \
55 '${prefix}' | '${prefix}/'*| \
56 '${exec_prefix}' | '${exec_prefix}/'*)
57 sysroot_relocatable=1
58 ;;
59 esac
60fi
61
62AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT, "$sysroot",
63 [System root for target files])
64AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT_RELOCATABLE, $sysroot_relocatable,
65 [Whether the system root can be relocated])
66
4fda8867
NC
67dnl "install_as_default" is true if the linker to be installed as the
68dnl default linker, ld.
69dnl "installed_linker" is the installed gold linker name.
c7791212 70
f2a6224b 71installed_linker=ld.gold
c7791212
NC
72AC_ARG_ENABLE(gold,
73[[ --enable-gold[=ARG] build gold [ARG={default,yes,no}]]],
74[case "${enableval}" in
f2a6224b
L
75 default)
76 install_as_default=yes
77 ;;
78 yes)
79 if test x${enable_ld} = xno; then
c7791212
NC
80 install_as_default=yes
81 fi
4fda8867
NC
82 ;;
83 esac],
f2a6224b 84[install_as_default=no])
4fda8867
NC
85AC_SUBST(install_as_default)
86AC_SUBST(installed_linker)
87
fe9a4c12
ILT
88dnl For now threads are a configure time option.
89AC_ARG_ENABLE([threads],
90[ --enable-threads multi-threaded linking],
91[case "${enableval}" in
92 yes | "") threads=yes ;;
93 no) threads=no ;;
94 *) threads=yes ;;
95 esac],
96[threads=no])
97if test "$threads" = "yes"; then
98 AC_DEFINE(ENABLE_THREADS, 1,
99 [Define to do multi-threaded linking])
100fi
101AM_CONDITIONAL(THREADS, test "$threads" = "yes")
89fc3421
CC
102
103AC_ARG_ENABLE([plugins],
104[ --enable-plugins linker plugins],
105[case "${enableval}" in
106 yes | "") plugins=yes ;;
107 no) plugins=no ;;
108 *) plugins=yes ;;
109 esac],
110[plugins=no])
111if test "$plugins" = "yes"; then
112 AC_DEFINE(ENABLE_PLUGINS, 1,
113 [Define to enable linker plugins])
114fi
115AM_CONDITIONAL(PLUGINS, test "$plugins" = "yes")
fe9a4c12 116
6b1edb94
L
117# Decide if -z relro should be enabled in ELF linker by default.
118ac_default_ld_z_relro=unset
119# Provide a configure time option to override our default.
120AC_ARG_ENABLE(relro,
121 AS_HELP_STRING([--enable-relro],
122 [enable -z relro in ELF linker by default]),
123[case "${enableval}" in
124 yes) ac_default_ld_z_relro=1 ;;
125 no) ac_default_ld_z_relro=0 ;;
126esac])dnl
127if test "${ac_default_ld_z_relro}" = unset; then
128 ac_default_ld_z_relro=1
129fi
130AC_DEFINE_UNQUOTED(DEFAULT_LD_Z_RELRO,
131 $ac_default_ld_z_relro,
132 [Define to 1 if you want to enable -z relro in ELF linker by default.])
133
193a53d9
ILT
134AC_ARG_ENABLE([targets],
135[ --enable-targets alternative target configurations],
136[case "${enableval}" in
137 yes | "")
138 AC_MSG_ERROR([--enable-targets option must specify target names or 'all'])
139 ;;
140 no)
141 enable_targets=
142 ;;
143 *)
144 enable_targets=$enableval
145 ;;
146esac],
147[# For now, enable all targets by default
148 enable_targets=all
149])
150
151# Canonicalize the enabled targets.
152if test -n "$enable_targets"; then
153 for targ in `echo $enable_targets | sed -e 's/,/ /g'`; do
154 result=`$ac_config_sub $targ 2>/dev/null`
155 if test -n "$result"; then
156 canon_targets="$canon_targets $result"
157 else
158 # Permit unrecognized target names, like "all".
159 canon_targets="$canon_targets $targ"
160 fi
161 done
162fi
163
164# See which specific instantiations we need.
6df6da4a
ILT
165targetobjs=
166all_targets=
fbfba508
ILT
167default_machine=
168default_size=
169default_big_endian=
36959681 170default_osabi=ELFOSABI_NONE
fbfba508
ILT
171targ_32_little=
172targ_32_big=
173targ_64_little=
174targ_64_big=
193a53d9 175for targ in $target $canon_targets; do
193a53d9
ILT
176 if test "$targ" = "all"; then
177 targ_32_little=yes
178 targ_32_big=yes
179 targ_64_little=yes
180 targ_64_big=yes
6df6da4a 181 all_targets=yes
193a53d9 182 else
fbfba508
ILT
183 . ${srcdir}/configure.tgt
184
185 if test "$targ_obj" = "UNKNOWN"; then
6df6da4a 186 AC_MSG_ERROR("unsupported target $targ")
fbfba508
ILT
187 else
188 targetobjs="$targetobjs ${targ_obj}.\$(OBJEXT)"
60b2b4e7
ILT
189 if test "$targ_extra_obj" != ""; then
190 targetobjs="$targetobjs ${targ_extra_obj}.\$(OBJEXT)"
191 fi
f5314dd5
DM
192 if test "$targ_size" = "32" -o "$targ_extra_size" = "32"; then
193 if test "$targ_big_endian" = "true" \
194 -o "$targ_extra_big_endian" = "true"; then
195 targ_32_big=yes
196 fi
197 if test "$targ_big_endian" = "false" \
198 -o "$targ_extra_big_endian" = "false"; then
199 targ_32_little=yes
200 fi
201 fi
202 if test "$targ_size" = "64" -o "$targ_extra_size" = "64"; then
203 if test "$targ_big_endian" = "true" \
204 -o "$targ_extra_big_endian" = "true"; then
205 targ_64_big=yes
206 fi
207 if test "$targ_big_endian" = "false" \
208 -o "$targ_extra_big_endian" = "false"; then
209 targ_64_little=yes
210 fi
fbfba508
ILT
211 fi
212
213 if test "$target" = "$targ"; then
214 default_machine=$targ_machine
215 default_size=$targ_size
216 default_big_endian=$targ_big_endian
36959681 217 default_osabi=$targ_osabi
364c7fa5 218
053a4d68 219 AM_CONDITIONAL(DEFAULT_TARGET_AARCH64, test "$targ_obj" = "aarch64")
364c7fa5
ILT
220 AM_CONDITIONAL(DEFAULT_TARGET_ARM, test "$targ_obj" = "arm")
221 AM_CONDITIONAL(DEFAULT_TARGET_I386, test "$targ_obj" = "i386")
222 AM_CONDITIONAL(DEFAULT_TARGET_POWERPC, test "$targ_obj" = "powerpc")
223 AM_CONDITIONAL(DEFAULT_TARGET_SPARC, test "$targ_obj" = "sparc")
e79a4bad 224 AM_CONDITIONAL(DEFAULT_TARGET_S390, test "$targ_obj" = "s390")
4fc1b9d4
L
225 target_x86_64=no
226 target_x32=no
227 if test "$targ_obj" = "x86_64"; then
228 case "$target" in
229 x86_64*-linux-gnux32)
230 target_x32=yes
be66981e 231 default_size=32
4fc1b9d4
L
232 ;;
233 *)
234 target_x86_64=yes
235 ;;
236 esac
237 fi
238 AM_CONDITIONAL(DEFAULT_TARGET_X86_64, test "$target_x86_64" = "yes")
239 AM_CONDITIONAL(DEFAULT_TARGET_X32, test "$target_x32" = "yes")
5c0b3823 240 AM_CONDITIONAL(DEFAULT_TARGET_TILEGX, test "$targ_obj" = "tilegx")
9810d34d 241 AM_CONDITIONAL(DEFAULT_TARGET_MIPS, test "$targ_obj" = "mips")
9df9de2c
CC
242 DEFAULT_TARGET=${targ_obj}
243 AC_SUBST(DEFAULT_TARGET)
fbfba508
ILT
244 fi
245 fi
193a53d9
ILT
246 fi
247done
248
6cfaf60b 249# Remove any duplicates.
9109c078
ILT
250to=""
251for t in $targetobjs; do
252 case " $to " in
253 *" $t "*) ;;
254 *) to="$to $t" ;;
255 esac
256done
257targetobjs=$to
6cfaf60b 258
193a53d9
ILT
259if test -n "$targ_32_little"; then
260 AC_DEFINE(HAVE_TARGET_32_LITTLE, 1,
261 [Define to support 32-bit little-endian targets])
262fi
263if test -n "$targ_32_big"; then
264 AC_DEFINE(HAVE_TARGET_32_BIG, 1,
265 [Define to support 32-bit big-endian targets])
266fi
267if test -n "$targ_64_little"; then
268 AC_DEFINE(HAVE_TARGET_64_LITTLE, 1,
269 [Define to support 64-bit little-endian targets])
270fi
271if test -n "$targ_64_big"; then
272 AC_DEFINE(HAVE_TARGET_64_BIG, 1,
273 [Define to support 64-bit big-endian targets])
274fi
275
6df6da4a
ILT
276if test -n "$all_targets"; then
277 TARGETOBJS='$(ALL_TARGETOBJS)'
278else
279 TARGETOBJS="$targetobjs"
280fi
281AC_SUBST(TARGETOBJS)
282
fbfba508
ILT
283AC_DEFINE_UNQUOTED(GOLD_DEFAULT_MACHINE, $default_machine,
284 [Default machine code])
285AC_DEFINE_UNQUOTED(GOLD_DEFAULT_SIZE, $default_size,
286 [Default size (32 or 64)])
287AC_DEFINE_UNQUOTED(GOLD_DEFAULT_BIG_ENDIAN, $default_big_endian,
288 [Default big endian (true or false)])
36959681
ILT
289AC_DEFINE_UNQUOTED(GOLD_DEFAULT_OSABI, $default_osabi,
290 [Default OSABI code])
fbfba508 291
3f3cddf1
ILT
292AC_ARG_WITH(lib-path,
293[ --with-lib-path=dir1:dir2... set default LIB_PATH],
294[case "$withval" in
295 yes) LIB_PATH='"/lib:/usr/lib"' ;;
296 no) LIB_PATH='""' ;;
297 *) LIB_PATH='"'"$withval"'"' ;;
298 esac],
299[LIB_PATH='"::DEFAULT::"'])
300AC_DEFINE_UNQUOTED(LIB_PATH, $LIB_PATH,
301 [Default library search path])
302if test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias"; then
303 AC_DEFINE(NATIVE_LINKER, 1, [Whether configured as a native linker])
304fi
305
ebb300b2
CC
306AC_CHECK_TOOL(NM, nm)
307
bae7f79e
ILT
308AC_PROG_CC
309AC_PROG_CXX
dbe717ef 310AC_PROG_YACC
5a6f7e2d 311AC_PROG_RANLIB
bae7f79e 312AC_PROG_INSTALL
537b5f51 313AC_PROG_LN_S
fa99aa09
ILT
314
315AC_GNU_SOURCE
316
bae7f79e
ILT
317ZW_GNU_GETTEXT_SISTER_DIR
318AM_PO_SUBDIRS
319
92e059d8
ILT
320AC_C_BIGENDIAN
321
bae7f79e
ILT
322AC_EXEEXT
323
537b5f51
ILT
324AM_CONDITIONAL(NATIVE_LINKER,
325 test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias")
326AM_CONDITIONAL(GCC, test "$GCC" = yes)
327
eb373049
ILT
328AM_CONDITIONAL(NATIVE_OR_CROSS_LINKER,
329 test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias" -o "x$host_alias" = "x$build_alias")
330
328c7c2f
ILT
331dnl Test for whether static linking is supported. Some systems do not
332dnl install static libraries. This only affects the set of tests that
333dnl we run.
334AC_CACHE_CHECK([whether static linking works], [gold_cv_lib_static],
dd7af074 335[LDFLAGS_hold=$LDFLAGS
328c7c2f 336LDFLAGS="$LDFLAGS -static"
dd7af074 337AC_LINK_IFELSE([
328c7c2f 338AC_LANG_PROGRAM([[void f() { }]])],
dd7af074
ILT
339[gold_cv_lib_static=yes], [gold_cv_lib_static=no])
340LDFLAGS=$LDFLAGS_hold])
328c7c2f
ILT
341AM_CONDITIONAL(HAVE_STATIC, test "$gold_cv_lib_static" = "yes")
342
63402fe4
ILT
343dnl Some architectures do not support taking pointers of functions
344dnl defined in shared libraries except in -fPIC mode. We need to
345dnl tell the unittest framework if we're compiling for one of those
346dnl targets, so it doesn't try to run the tests that do that.
347AM_CONDITIONAL(FN_PTRS_IN_SO_WITHOUT_PIC, [
348 case $target_cpu in
864a1b56 349 powerpc*) false;;
63402fe4 350 x86_64) false;;
11936fb1 351 sparc64) false;;
e79a4bad 352 s390x) false;;
63402fe4
ILT
353 *) true;;
354 esac])
355
084e2665
ILT
356dnl Test for gcc 4.1 or later. Full support for -mcmodel=medium is
357dnl only available in gcc 4.1.
358AC_CACHE_CHECK([for gcc >= 4.1], [gold_cv_prog_gcc41],
359[AC_COMPILE_IFELSE([
360#if !defined __GNUC__
361error
362#elif __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 1)
363error
364#endif
365], [gold_cv_prog_gcc41=yes], [gold_cv_prog_gcc41=no])])
366
24482ca0
L
367save_CFLAGS="$CFLAGS"
368CFLAGS="$CFLAGS -mcmodel=medium"
369AC_COMPILE_IFELSE([int i;], [have_mcmodel_medium=yes], [have_mcmodel_medium=no])
370CFLAGS="$save_CFLAGS"
8a5e3e08 371dnl Whether we can test -mcmodel=medium.
084e2665 372AM_CONDITIONAL(MCMODEL_MEDIUM,
24482ca0 373[test "$target_cpu" = "x86_64" -a "$have_mcmodel_medium" = "yes" -a "$gold_cv_prog_gcc41" = "yes"])
8a5e3e08 374
2b64b551
RM
375AC_CACHE_CHECK([whether $CC supports -fmerge-constants],
376 [gold_cv_merge_constants], [
377save_CFLAGS="$CFLAGS"
378CFLAGS="$CFLAGS -fmerge-constants"
379AC_COMPILE_IFELSE([const char *s = "foo";],
2500c017
CC
380 [gold_cv_merge_constants=yes],
381 [gold_cv_merge_constants=no])
2b64b551
RM
382CFLAGS="$save_CFLAGS"])
383AC_SUBST([MERGE_CONSTANTS_FLAG])
384AS_IF([test "$gold_cv_merge_constants" = yes],
385 [MERGE_CONSTANTS_FLAG=-fmerge-constants],
386 [MERGE_CONSTANTS_FLAG=])
387
6eee141f 388dnl Test for __thread support.
097ec620
ILT
389AC_CACHE_CHECK([for thread support], [gold_cv_c_thread],
390[AC_COMPILE_IFELSE([__thread int i = 1;],
391[gold_cv_c_thread=yes], [gold_cv_c_thread=no])])
392
393AM_CONDITIONAL(TLS, test "$gold_cv_c_thread" = "yes")
394
395dnl On GNU/Linux TLS in static programs only works when using glibc
396dnl 2.4 or later.
397AC_CACHE_CHECK([for glibc >= 2.4], [gold_cv_lib_glibc24],
398[AC_COMPILE_IFELSE([
399#include <features.h>
400#if !defined __GLIBC__
401error
402#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4)
403error
404#endif
405], [gold_cv_lib_glibc24=yes], [gold_cv_lib_glibc24=no])])
406
407AM_CONDITIONAL(STATIC_TLS, test "$gold_cv_lib_glibc24" = "yes")
6eee141f 408
155a0dd7
ILT
409dnl Test for #pragma omp threadprivate
410AC_CACHE_CHECK([for omp support], [gold_cv_c_threadprivate],
411[save_CFLAGS="$CFLAGS"
412CFLAGS="$CFLAGS -fopenmp"
413AC_COMPILE_IFELSE([
414#include <omp.h>
415int i;
416#pragma omp threadprivate (i)
417], [gold_cv_c_threadprivate=yes], [gold_cv_c_threadprivate=no])
418CFLAGS="$save_CFLAGS"])
419if test "$gold_cv_c_threadprivate" = "yes"; then
420 AC_DEFINE(HAVE_OMP_SUPPORT, 1,
421 [Define if compiler supports #pragma omp threadprivate])
422fi
423AM_CONDITIONAL(OMP_SUPPORT, test "$gold_cv_c_threadprivate" = "yes")
424
c2b45e22 425dnl Test for the -ftls-dialect=gnu2 option.
13323c49
RM
426dnl Use -Werror in case of compilers that make unknown -m options warnings.
427dnl They would pass the test here, but fail in actual use when $WARN_CFLAGS
428dnl gets set later by default Autoconf magic to include -Werror. (We are
429dnl assuming here that there is no compiler that groks -mtls-dialect=gnu2
430dnl but does not grok -Werror.)
c2b45e22 431save_CFLAGS="$CFLAGS"
13323c49 432CFLAGS="$CFLAGS -Werror -fpic -mtls-dialect=gnu2"
63887f3d
L
433AC_COMPILE_IFELSE([
434__thread int i;
435void foo (void)
436{
437 i = 10;
438}
439], [have_tls_gnu2=yes], [have_tls_gnu2=no])
c2b45e22
CC
440CFLAGS="$save_CFLAGS"
441AM_CONDITIONAL(TLS_GNU2_DIALECT, test "$have_tls_gnu2" = "yes")
442
443dnl On GNU/Linux TLS descriptors are supported by the dynamic loader
b0074644
ILT
444dnl only with glibc 2.9 or later.
445AC_CACHE_CHECK([for glibc >= 2.9], [gold_cv_lib_glibc29],
c2b45e22
CC
446[AC_COMPILE_IFELSE([
447#include <features.h>
448#if !defined __GLIBC__
449error
b0074644 450#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 9)
c2b45e22
CC
451error
452#endif
b0074644 453], [gold_cv_lib_glibc29=yes], [gold_cv_lib_glibc29=no])])
c2b45e22 454
b0074644 455AM_CONDITIONAL(TLS_DESCRIPTORS, test "$gold_cv_lib_glibc29" = "yes")
c2b45e22 456
1d1f116d
CD
457dnl Test for the -frandom-seed option.
458AC_CACHE_CHECK([for -frandom-seed support], [gold_cv_c_random_seed],
459[save_CFLAGS="$CFLAGS"
460CFLAGS="$CFLAGS -frandom-seed=foo"
461AC_COMPILE_IFELSE([int i;], [gold_cv_c_random_seed=yes],
462[gold_cv_c_random_seed=no])
463CFLAGS="$save_CFLAGS"])
464if test "$gold_cv_c_random_seed" = "yes"; then
465 # In Makefile, '$@' will be expanded to be the name of the file
466 # being built, providing a unique seed for each file.
467 RANDOM_SEED_CFLAGS=-frandom-seed=\$@
468fi
469AC_SUBST(RANDOM_SEED_CFLAGS)
470
7223e9ca 471dnl On GNU/Linux ifunc is supported by the dynamic linker in glibc
d0773f31 472dnl 2.11 or later, and by binutils 2.20.1 or later.
ebb300b2
CC
473AC_CACHE_CHECK([for glibc ifunc support], [gold_cv_lib_glibc_ifunc],
474[save_LDFLAGS="$LDFLAGS"
475LDFLAGS="$LDFLAGS -static"
476AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7223e9ca
ILT
477#include <features.h>
478#if !defined __GLIBC__
479error
480#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 11)
481error
482#endif
ebb300b2
CC
483void func (void) { }
484void invoke (void);
485__asm__(".type invoke, %gnu_indirect_function");
486typedef void (*funcptr) (void);
487funcptr dispatch (void) __asm__ ("invoke");
488funcptr dispatch (void) { return &func; }]],
489[[invoke();]])
490], [
491if ${NM} conftest$EXEEXT | grep "__rela\?_iplt_start" >/dev/null 2>&1; then
492 gold_cv_lib_glibc_ifunc=both
493else
494 gold_cv_lib_glibc_ifunc=dyn
495fi], [gold_cv_lib_glibc_ifunc=no])
496LDFLAGS="$save_LDFLAGS"])
7223e9ca 497
ebb300b2
CC
498AM_CONDITIONAL(IFUNC, test "$gold_cv_lib_glibc_ifunc" != "no")
499AM_CONDITIONAL(IFUNC_STATIC, test "$gold_cv_lib_glibc_ifunc" = "both")
7223e9ca 500
bae7f79e
ILT
501AM_BINUTILS_WARNINGS
502
2ea97941 503WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//' -e 's/-Wshadow//'`
bae7f79e
ILT
504AC_SUBST(WARN_CXXFLAGS)
505
dc87f620
ILT
506AC_ARG_WITH(gold-ldflags,
507[ --with-gold-ldflags=FLAGS additional link flags for gold],
508[if test "$withval" = "no" -o "$withval" = "yes"; then
509 GOLD_LDFLAGS=
510 else
511 GOLD_LDFLAGS=$withval
512 fi],
513[GOLD_LDFLAGS=])
514AC_SUBST(GOLD_LDFLAGS)
515
516AC_ARG_WITH(gold-ldadd,
517[ --with-gold-ldadd=LIBS additional libraries for gold],
518[if test "$withval" = "no" -o "$withval" = "yes"; then
519 GOLD_LDADD=
520 else
521 GOLD_LDADD=$withval
522 fi],
523[GOLD_LDADD=])
524AC_SUBST(GOLD_LDADD)
525
bae7f79e
ILT
526dnl Force support for large files by default. This may need to be
527dnl host dependent. If build == host, we can check getconf LFS_CFLAGS.
494e05f4
ILT
528LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
529AC_SUBST(LFS_CFLAGS)
bae7f79e 530
88597d34
ILT
531AC_CHECK_HEADERS(sys/mman.h)
532AC_CHECK_FUNCS(chsize mmap)
533AC_REPLACE_FUNCS(pread ftruncate ffsll)
534
535AC_CACHE_CHECK([mremap with MREMAP_MAYMOVE], [gold_cv_lib_mremap_maymove],
536[AC_LINK_IFELSE([
537AC_LANG_PROGRAM([[
538#include <sys/mman.h>
539void f() { mremap (0, 0, 0, MREMAP_MAYMOVE); }
540]])], [gold_cv_lib_mremap_maymove=yes], [gold_cv_lib_mremap_maymove=no])])
541if test "$gold_cv_lib_mremap_maymove" = "yes"; then
542 AC_DEFINE(HAVE_MREMAP, 1,
543 [Define to 1 if you have the mremap function with MREMAP_MAYMOVE support])
544else
545 AC_LIBOBJ(mremap)
546fi
82dcae9d 547
9a0910c3 548# Link in zlib if we can. This allows us to write compressed sections.
ae2eea65 549AM_ZLIB
9a0910c3 550
0639a6f6
ILT
551dnl We have to check these in C, not C++, because autoconf generates
552dnl tests which have no type information, and current glibc provides
553dnl multiple declarations of functions like basename when compiling
554dnl with C++.
555AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp])
556
ae447ddd
CC
557dnl Check if gcc supports the -gpubnames option.
558dnl Use -Werror in case of compilers that make unknown -g options warnings.
559dnl They would pass the test here, but fail in actual use when $WARN_CFLAGS
560dnl gets set later by default Autoconf magic to include -Werror. (We are
561dnl assuming here that there is no compiler that groks -gpubnames
562dnl but does not grok -Werror.)
563save_CFLAGS="$CFLAGS"
564CFLAGS="$CFLAGS -Werror -gpubnames"
565AC_COMPILE_IFELSE([int i;], [have_pubnames=yes], [have_pubnames=no])
566CFLAGS="$save_CFLAGS"
567AM_CONDITIONAL(HAVE_PUBNAMES, test "$have_pubnames" = "yes")
568
569dnl Check if gcc supports the -fno-use-linker-plugin option.
570save_CFLAGS="$CFLAGS"
571CFLAGS="$CFLAGS -Werror -fno-use-linker-plugin"
572AC_COMPILE_IFELSE([int i;], [have_no_use_linker_plugin=yes], [have_no_use_linker_plugin=no])
573CFLAGS="$save_CFLAGS"
574AM_CONDITIONAL(HAVE_NO_USE_LINKER_PLUGIN, test "$have_no_use_linker_plugin" = "yes")
575
54dc6425 576AC_LANG_PUSH(C++)
d288e464 577
8356f2d0 578AC_CHECK_HEADERS(unordered_set unordered_map)
54dc6425
ILT
579AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
580AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
15d5fa16 581AC_CHECK_HEADERS(byteswap.h)
0bf402d5
ILT
582
583dnl When plugins enabled dynamic loader interface is required. Check headers
6632e8cc 584dnl which may provide this interface. Add the necessary library to link.
0bf402d5 585AC_CHECK_HEADERS(windows.h)
6632e8cc
CC
586AC_CHECK_HEADERS(dlfcn.h)
587AC_SEARCH_LIBS(dlopen, [dl dld])
588case "$ac_cv_search_dlopen" in
589 no*) DLOPEN_LIBS="";;
590 *) DLOPEN_LIBS="$ac_cv_search_dlopen";;
591esac
0bf402d5
ILT
592AC_SUBST(DLOPEN_LIBS)
593
7c0640fa 594AC_CHECK_FUNCS(mallinfo posix_fallocate fallocate readv sysconf times)
3d857b98 595AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp, strndup, memmem])
d288e464 596
40fde488
CD
597# Use of ::std::tr1::unordered_map::rehash causes undefined symbols
598# at link time with some versions of GCC.
599AC_CACHE_CHECK([whether ::std::tr1::unordered_map::rehash is usable.],
600[gold_cv_unordered_map_rehash],
601[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
602#include <tr1/unordered_map>
603void bar() { ::std::tr1::unordered_map<int, int> x; x.rehash(10); }
604]])], [gold_cv_unordered_map_rehash=yes], [gold_cv_unordered_map_rehash=no])])
605if test "$gold_cv_unordered_map_rehash" = "yes"; then
606 AC_DEFINE(HAVE_TR1_UNORDERED_MAP_REHASH, 1,
607 [Define if ::std::tr1::unordered_map::rehash is usable])
608fi
609
81c82a68
ILT
610# Use of tr1/unordered_map with off_t as a key is not supported on GCC
611# 4.1.xx when compiling in 32-bit mode with a 64-bit off_t type.
612AC_CACHE_CHECK([whether std::tr1::hash<off_t> is defined],
613[gold_cv_hash_off_t],
614[CXXFLAGS_hold=$CXXFLAGS
615CXXFLAGS="$CXXFLAGS $LFS_CFLAGS"
616AC_COMPILE_IFELSE([
617#include <sys/types.h>
618#include <tr1/unordered_map>
619std::tr1::hash<off_t> h;
620],
621[gold_cv_hash_off_t=yes],
622[gold_cv_hash_off_t=no])
26e4ef59 623CXXFLAGS=$CXXFLAGS_hold])
81c82a68
ILT
624if test "$gold_cv_hash_off_t" = "yes"; then
625 AC_DEFINE(HAVE_TR1_HASH_OFF_T, 1,
626 [Define if std::tr1::hash<off_t> is usable])
627fi
628
04bf7072
ILT
629# gcc 4.3.0 doesn't recognize the printf attribute on a template
630# function. Check for that. This is gcc bug 35546. This test can
631# probably be removed after the bug has been fixed for a while.
632AC_CACHE_CHECK([whether we can use attributes with template functions],
633[gold_cv_template_attribute],
634[AC_COMPILE_IFELSE([
635template<typename T> extern void foo(const char*, ...)
636 __attribute__ ((__format__ (__printf__, 1, 2)));
637template<typename T> void foo(const char* format, ...) {}
638void bar() { foo<int>("%s\n", "foo"); }
639], [gold_cv_template_attribute=yes], [gold_cv_template_attribute=no])])
640if test "$gold_cv_template_attribute" = "yes"; then
641 AC_DEFINE(HAVE_TEMPLATE_ATTRIBUTES, 1,
642 [Define if attributes work on C++ templates])
643fi
644
5d329b7d
ILT
645dnl Check if the system has struct stat::st_mtim.
646AC_CACHE_CHECK([for struct stat::st_mtim.],
647[gold_cv_stat_st_mtim],
648[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
649#include <sys/stat.h>
650long bar() { struct stat s; return (long)(s.st_mtim.tv_sec + s.st_mtim.tv_sec);}
651]])], [gold_cv_stat_st_mtim=yes], [gold_cv_stat_st_mtim=no])])
652if test "$gold_cv_stat_st_mtim" = "yes"; then
653 AC_DEFINE(HAVE_STAT_ST_MTIM, 1,
654 [Define if struct stat has a field st_mtim with timespec for mtime])
655fi
656
54dc6425
ILT
657AC_LANG_POP(C++)
658
58797674 659AC_CHECK_HEADERS(locale.h)
44350750
NC
660AC_CHECK_FUNCS(setlocale)
661AM_LC_MESSAGES
662
bae7f79e
ILT
663AM_MAINTAINER_MODE
664
5a6f7e2d 665AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)
This page took 0.474118 seconds and 4 git commands to generate.