crx string overflow warning
[deliverable/binutils-gdb.git] / ld / configure.ac
CommitLineData
252b5132
RH
1dnl Process this file with autoconf to produce a configure script
2dnl
219d1afa 3dnl Copyright (C) 2012-2018 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.
995da1ff 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.
995da1ff 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
19
da594c4a 20AC_PREREQ(2.59)
2e98a7bd
AM
21m4_include([../bfd/version.m4])
22AC_INIT([ld], BFD_VERSION)
da594c4a 23AC_CONFIG_SRCDIR(ldmain.c)
252b5132 24
da594c4a 25AC_CANONICAL_TARGET
02ecc8e9 26AC_CANONICAL_BUILD
5d64ca4e 27AC_ISC_POSIX
252b5132 28
2e98a7bd 29AM_INIT_AUTOMAKE
64ac50ac 30AM_MAINTAINER_MODE
252b5132 31
b879806f
AM
32AC_PROG_CC
33AC_PROG_CXX
68880f31 34AC_PROG_GREP
b879806f
AM
35AC_GNU_SOURCE
36AC_USE_SYSTEM_EXTENSIONS
37AC_PROG_INSTALL
38
39LT_INIT
40ACX_LARGEFILE
41
8e523c23 42AC_ARG_WITH(lib-path, [ --with-lib-path=dir1:dir2... set default LIB_PATH],LIB_PATH=$withval)
252b5132
RH
43AC_ARG_ENABLE(targets,
44[ --enable-targets alternative target configurations],
45[case "${enableval}" in
da594c4a 46 yes | "") AC_MSG_ERROR(enable-targets option must specify target names or 'all')
6c19b93b 47 ;;
252b5132
RH
48 no) enable_targets= ;;
49 *) enable_targets=$enableval ;;
50esac])dnl
51AC_ARG_ENABLE(64-bit-bfd,
52[ --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes)],
53[case "${enableval}" in
54 yes) want64=true ;;
55 no) want64=false ;;
56 *) AC_MSG_ERROR(bad value ${enableval} for 64-bit-bfd option) ;;
57esac],[want64=false])dnl
58
9c8ebd6a
DJ
59AC_ARG_WITH(sysroot,
60[ --with-sysroot[=DIR] Search for usr/lib et al within DIR.],
61[
62 case ${with_sysroot} in
715d1656 63 yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_alias}/sys-root' ;;
9c8ebd6a
DJ
64 *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
65 esac
66
67 TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
68 use_sysroot=yes
69
fa1e8d8e
RS
70 if test "x$prefix" = xNONE; then
71 test_prefix=/usr/local
72 else
73 test_prefix=$prefix
74 fi
9c8ebd6a 75 if test "x$exec_prefix" = xNONE; then
fa1e8d8e 76 test_exec_prefix=$test_prefix
9c8ebd6a 77 else
fa1e8d8e 78 test_exec_prefix=$exec_prefix
9c8ebd6a
DJ
79 fi
80 case ${TARGET_SYSTEM_ROOT} in
715d1656 81 "${test_prefix}"|"${test_prefix}/"*|\
fa1e8d8e
RS
82 "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
83 '${prefix}'|'${prefix}/'*|\
715d1656 84 '${exec_prefix}'|'${exec_prefix}/'*)
9c8ebd6a
DJ
85 t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
86 TARGET_SYSTEM_ROOT_DEFINE="$t"
87 ;;
88 esac
89], [
90 use_sysroot=no
91 TARGET_SYSTEM_ROOT=
92 TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"\"'
93])
94AC_SUBST(use_sysroot)
95AC_SUBST(TARGET_SYSTEM_ROOT)
96AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
97
4fda8867
NC
98dnl Use --enable-gold to decide if this linker should be the default.
99dnl "install_as_default" is set to false if gold is the default linker.
100dnl "installed_linker" is the installed BFD linker name.
101AC_ARG_ENABLE(gold,
c7791212 102[[ --enable-gold[=ARG] build gold [ARG={default,yes,no}]]],
bf9ef603 103[case "${enableval}" in
c7791212 104 default)
4fda8867
NC
105 install_as_default=no
106 installed_linker=ld.bfd
107 ;;
c7791212 108 yes|no)
4fda8867
NC
109 install_as_default=yes
110 installed_linker=ld.bfd
111 ;;
112 *)
113 AC_MSG_ERROR([invalid --enable-gold argument])
114 ;;
115 esac],
c7791212
NC
116[install_as_default=yes
117 installed_linker=ld.bfd])
4fda8867
NC
118AC_SUBST(install_as_default)
119AC_SUBST(installed_linker)
120
7fb9f789
NC
121AC_ARG_ENABLE([got],
122AS_HELP_STRING([--enable-got=<type>],
6c19b93b 123 [GOT handling scheme (target, single, negative, multigot)]),
7fb9f789
NC
124[case "${enableval}" in
125 target | single | negative | multigot) got_handling=$enableval ;;
da594c4a 126 *) AC_MSG_ERROR(bad value ${enableval} for --enable-got option) ;;
7fb9f789
NC
127esac],
128[got_handling=target])
129
130case "${got_handling}" in
131 target)
132 AC_DEFINE([GOT_HANDLING_DEFAULT], [GOT_HANDLING_TARGET_DEFAULT],
6c19b93b 133 [Define to choose default GOT handling scheme]) ;;
7fb9f789
NC
134 single)
135 AC_DEFINE([GOT_HANDLING_DEFAULT], [GOT_HANDLING_SINGLE],
6c19b93b 136 [Define to choose default GOT handling scheme]) ;;
7fb9f789
NC
137 negative)
138 AC_DEFINE([GOT_HANDLING_DEFAULT], [GOT_HANDLING_NEGATIVE],
6c19b93b 139 [Define to choose default GOT handling scheme]) ;;
7fb9f789
NC
140 multigot)
141 AC_DEFINE([GOT_HANDLING_DEFAULT], [GOT_HANDLING_MULTIGOT],
6c19b93b 142 [Define to choose default GOT handling scheme]) ;;
da594c4a 143 *) AC_MSG_ERROR(bad value ${got_handling} for --enable-got option) ;;
7fb9f789
NC
144esac
145
6c3bc0f8
NC
146# PR gas/19109
147# Decide the default method for compressing debug sections.
148ac_default_compressed_debug_sections=unset
149# Provide a configure time option to override our default.
150AC_ARG_ENABLE(compressed_debug_sections,
4894d80b
L
151 AS_HELP_STRING([--enable-compressed-debug-sections={all,ld,none}],
152 [compress debug sections by default])],
153[case ,"${enableval}", in
9b4c123c 154 ,yes, | ,all, | *,ld,*) ac_default_compressed_debug_sections=yes ;;
4894d80b 155 ,no, | ,none,) ac_default_compressed_debug_sections=no ;;
6c3bc0f8
NC
156esac])dnl
157
6734f10a
SB
158# Decide setting DT_RUNPATH instead of DT_RPATH by default
159ac_default_new_dtags=unset
160# Provide a configure time option to override our default.
161AC_ARG_ENABLE(new_dtags,
162 AS_HELP_STRING([--enable-new-dtags],
163 [set DT_RUNPATH instead of DT_RPATH by default])],
164[case "${enableval}" in
165 yes) ac_default_new_dtags=1 ;;
166 no) ac_default_new_dtags=0 ;;
167esac])dnl
168
647e4d46
L
169# Decide if -z relro should be enabled in ELF linker by default.
170ac_default_ld_z_relro=unset
171# Provide a configure time option to override our default.
172AC_ARG_ENABLE(relro,
173 AS_HELP_STRING([--enable-relro],
174 [enable -z relro in ELF linker by default]),
175[case "${enableval}" in
176 yes) ac_default_ld_z_relro=1 ;;
177 no) ac_default_ld_z_relro=0 ;;
178esac])dnl
179
2760f24c
RG
180# Decide which "--hash-style" to use by default
181# Provide a configure time option to override our default.
182AC_ARG_ENABLE([default-hash-style],
183AS_HELP_STRING([--enable-default-hash-style={sysv,gnu,both}],
184 [use this default hash style]),
185[case "${enable_default_hash_style}" in
186 sysv | gnu | both) ;;
187 *) AC_MSG_ERROR([bad value ${enable_default_hash_style} for enable-default-hash-style option]) ;;
188esac],
189[case "${target}" in
190 # Enable gnu hash only on GNU targets, but not mips
191 mips*-*-*) enable_default_hash_style=sysv ;;
192 *-*-gnu* | *-*-linux* | *-*-nacl*) enable_default_hash_style=both ;;
193 *) enable_default_hash_style=sysv ;;
194esac])
195
196case "${enable_default_hash_style}" in
197 sysv | both) ac_default_emit_sysv_hash=1 ;;
198 *) ac_default_emit_sysv_hash=0 ;;
199esac
200
201case "${enable_default_hash_style}" in
202 gnu | both) ac_default_emit_gnu_hash=1 ;;
203 *) ac_default_emit_gnu_hash=0 ;;
204esac
205
502bdb00 206AM_BINUTILS_WARNINGS
a2d91340 207
44350750
NC
208AM_LC_MESSAGES
209
da594c4a 210AC_CONFIG_HEADERS([config.h:config.in])
252b5132 211
df7b86aa
NC
212# PR 14072
213AH_VERBATIM([00_CONFIG_H_CHECK],
214[/* Check that config.h is #included before system headers
215 (this works only for glibc, but that should be enough). */
d17dce55 216#if defined(__GLIBC__) && !defined(__FreeBSD_kernel__) && !defined(__CONFIG_H__)
df7b86aa
NC
217# error config.h must be #included before system headers
218#endif
219#define __CONFIG_H__ 1])
220
252b5132
RH
221if test -z "$target" ; then
222 AC_MSG_ERROR(Unrecognized target system type; please check config.sub.)
223fi
224if test -z "$host" ; then
225 AC_MSG_ERROR(Unrecognized host system type; please check config.sub.)
226fi
227
228# host-specific stuff:
229
12601963 230ALL_LINGUAS="bg da de es fi fr ga id it ru sr sv tr uk vi zh_CN zh_TW pt_BR"
20e95c23
DJ
231ZW_GNU_GETTEXT_SISTER_DIR
232AM_PO_SUBDIRS
252b5132
RH
233
234AC_EXEEXT
235
236AC_PROG_YACC
237AM_PROG_LEX
238
239AM_MAINTAINER_MODE
d5fbea21 240AM_CONDITIONAL(GENINSRC_NEVER, false)
eccbf555 241ACX_PROG_CMP_IGNORE_INITIAL
252b5132
RH
242
243. ${srcdir}/configure.host
244
245AC_SUBST(HDEFINES)
252b5132
RH
246AC_SUBST(NATIVE_LIB_DIRS)
247
58797674 248AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h elf-hints.h limits.h locale.h sys/param.h)
5d3236ee 249AC_CHECK_HEADERS(fcntl.h sys/file.h sys/time.h sys/stat.h)
208a4923 250ACX_HEADER_STRING
44350750 251AC_CHECK_FUNCS(glob mkstemp realpath sbrk setlocale waitpid)
88ba72a2 252AC_CHECK_FUNCS(open lseek close)
252b5132
RH
253AC_HEADER_DIRENT
254
2aec968d
L
255dnl AC_CHECK_HEADERS(sys/mman.h)
256AC_FUNC_MMAP
257
b879806f
AM
258AC_SEARCH_LIBS([dlopen], [dl])
259AM_CONDITIONAL([ENABLE_PLUGINS], [test x$plugins = xyes])
5d3236ee 260
02ecc8e9 261AC_ARG_ENABLE(initfini-array,
26e3a0c9
AM
262[ --disable-initfini-array do not use .init_array/.fini_array sections],
263[case "${enableval}" in
264 yes|no) ;;
265 *) AC_MSG_ERROR([invalid --enable-initfini-array argument]) ;;
266 esac], [enable_initfini_array=yes])
02ecc8e9
L
267AC_SUBST(enable_initfini_array)
268if test $enable_initfini_array = yes; then
269 AC_DEFINE(HAVE_INITFINI_ARRAY, 1,
270 [Define .init_array/.fini_array sections are available and working.])
271fi
272
34875e64
NC
273AC_MSG_CHECKING(for a known getopt prototype in unistd.h)
274AC_CACHE_VAL(ld_cv_decl_getopt_unistd_h,
da594c4a 275[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <unistd.h>], [extern int getopt (int, char *const*, const char *);])],
34875e64
NC
276ld_cv_decl_getopt_unistd_h=yes, ld_cv_decl_getopt_unistd_h=no)])
277AC_MSG_RESULT($ld_cv_decl_getopt_unistd_h)
278if test $ld_cv_decl_getopt_unistd_h = yes; then
279 AC_DEFINE([HAVE_DECL_GETOPT], 1,
280 [Is the prototype for getopt in <unistd.h> in the expected format?])
281fi
bf9ef603 282
252b5132
RH
283BFD_BINARY_FOPEN
284
502bdb00 285AC_CHECK_DECLS([strstr, free, sbrk, getenv, environ])
252b5132 286
597e2591
ILT
287# When converting linker scripts into strings for use in emulation
288# files, use astring.sed if the compiler supports ANSI string
289# concatenation, or ostring.sed otherwise. This is to support the
290# broken Microsoft MSVC compiler, which limits the length of string
291# constants, while still supporting pre-ANSI compilers which do not
292# support string concatenation.
e4dabd0e 293AC_MSG_CHECKING([whether ANSI C string concatenation works])
597e2591 294AC_CACHE_VAL(ld_cv_string_concatenation,
da594c4a
AM
295[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [char *a = "a" "a";])],
296 ld_cv_string_concatenation=yes,
297 ld_cv_string_concatenation=no)])
e4dabd0e
AS
298AC_MSG_RESULT($ld_cv_string_concatenation)
299if test "$ld_cv_string_concatenation" = "yes"; then
597e2591
ILT
300 STRINGIFY=astring.sed
301else
302 STRINGIFY=ostring.sed
303fi
304AC_SUBST(STRINGIFY)
305
252b5132
RH
306# target-specific stuff:
307
308all_targets=
309EMUL=
310all_emuls=
311all_emul_extras=
ba2be581 312all_libpath=
252b5132
RH
313
314dnl We need to get an arbitrary number of tdir definitions into
315dnl Makefile. We can't do it using AC_SUBST, because autoconf does
316dnl not permit literal newlines in an AC_SUBST variables. So we use a
317dnl file.
318rm -f tdirs
319
bf9ef603 320# If the host is 64-bit, then we enable 64-bit targets by default.
1110793a 321# This is consistent with what ../bfd/configure.ac does.
bf9ef603
RM
322if test x${want64} = xfalse; then
323 AC_CHECK_SIZEOF(void *)
324 if test "x${ac_cv_sizeof_void_p}" = "x8"; then
325 want64=true
326 fi
327fi
328
c58212ea
L
329elf_list_options=FALSE
330elf_shlib_list_options=FALSE
331elf_plt_unwind_list_options=FALSE
252b5132
RH
332for targ_alias in `echo $target_alias $enable_targets | sed 's/,/ /g'`
333do
334 if test "$targ_alias" = "all"; then
335 all_targets=true
82d8e420
L
336 elf_list_options=TRUE
337 elf_shlib_list_options=TRUE
338 elf_plt_unwind_list_options=TRUE
252b5132
RH
339 else
340 # Canonicalize the secondary target names.
42ecbf5e 341 result=`$ac_config_sub $targ_alias 2>/dev/null`
252b5132
RH
342 if test -n "$result"; then
343 targ=$result
344 else
345 targ=$targ_alias
346 fi
347
348 . ${srcdir}/configure.tgt
349
350 if test "$targ" = "$target"; then
351 EMUL=$targ_emul
352 fi
353
314e9a4e
L
354 if test x${want64} = xfalse; then
355 . ${srcdir}/../bfd/config.bfd
356 fi
357
534d3119
L
358 if test x${want64} = xtrue; then
359 targ_extra_emuls="$targ_extra_emuls $targ64_extra_emuls"
360 targ_extra_libpath="$targ_extra_libpath $targ64_extra_libpath"
361 fi
362
3336653a 363 for i in $targ_emul $targ_extra_emuls $targ_extra_libpath; do
252b5132 364 case " $all_emuls " in
8c3fff59
AM
365 *" e${i}.o "*) ;;
366 *)
367 all_emuls="$all_emuls e${i}.o"
368 eval result=\$tdir_$i
369 test -z "$result" && result=$targ_alias
370 echo tdir_$i=$result >> tdirs
c58212ea
L
371 case "${i}" in
372 *elf*)
373 elf_list_options=TRUE
68880f31
CLT
374 ;;
375 *)
376 if $GREP "TEMPLATE_NAME=elf32" ${srcdir}/emulparams/${i}.sh >/dev/null 2>/dev/null; then
377 elf_list_options=TRUE
378 fi
379 ;;
380 esac
381 if test "$elf_list_options" = "TRUE"; then
c58212ea
L
382 . ${srcdir}/emulparams/${i}.sh
383 if test x${GENERATE_SHLIB_SCRIPT} = xyes; then
384 elf_shlib_list_options=TRUE
385 fi
386 if test x${PLT_UNWIND} = xyes; then
387 elf_plt_unwind_list_options=TRUE
388 fi
68880f31 389 fi
c58212ea 390 ;;
252b5132
RH
391 esac
392 done
393
ba2be581 394 for i in $targ_emul $targ_extra_libpath; do
3336653a
RH
395 case " $all_libpath " in
396 *" ${i} "*) ;;
397 *)
ba2be581
RH
398 if test -z "$all_libpath"; then
399 all_libpath=${i}
400 else
401 all_libpath="$all_libpath ${i}"
402 fi
3336653a
RH
403 ;;
404 esac
405 done
406
252b5132
RH
407 for i in $targ_extra_ofiles; do
408 case " $all_emul_extras " in
409 *" ${i} "*) ;;
410 *)
411 all_emul_extras="$all_emul_extras ${i}"
412 ;;
413 esac
414 done
5063daf7 415
252b5132
RH
416 fi
417done
418
621ff761 419if test x$ac_default_compressed_debug_sections = xyes ; then
6c3bc0f8
NC
420 AC_DEFINE(DEFAULT_FLAG_COMPRESS_DEBUG, 1, [Define if you want compressed debug sections by default.])
421fi
422
6734f10a
SB
423if test "${ac_default_new_dtags}" = unset; then
424 ac_default_new_dtags=0
425fi
426AC_DEFINE_UNQUOTED(DEFAULT_NEW_DTAGS,
427 $ac_default_new_dtags,
428 [Define to 1 if you want to set DT_RUNPATH instead of DT_RPATH by default.])
429
647e4d46
L
430if test "${ac_default_ld_z_relro}" = unset; then
431 ac_default_ld_z_relro=0
432fi
433AC_DEFINE_UNQUOTED(DEFAULT_LD_Z_RELRO,
434 $ac_default_ld_z_relro,
435 [Define to 1 if you want to enable -z relro in ELF linker by default.])
436
2760f24c
RG
437AC_DEFINE_UNQUOTED([DEFAULT_EMIT_SYSV_HASH],
438 [$ac_default_emit_sysv_hash],
439 [Define to 1 if you want to emit sysv hash in the ELF linker by default.])
440
441AC_DEFINE_UNQUOTED([DEFAULT_EMIT_GNU_HASH],
442 [$ac_default_emit_gnu_hash],
443 [Define to 1 if you want to emit gnu hash in the ELF linker by default.])
444
c58212ea
L
445AC_SUBST(elf_list_options)
446AC_SUBST(elf_shlib_list_options)
447AC_SUBST(elf_plt_unwind_list_options)
252b5132
RH
448AC_SUBST(EMUL)
449
450TDIRS=tdirs
451AC_SUBST_FILE(TDIRS)
452
252b5132
RH
453if test x${all_targets} = xtrue; then
454 if test x${want64} = xtrue; then
455 EMULATION_OFILES='$(ALL_EMULATIONS) $(ALL_64_EMULATIONS)'
9d069ac3 456 EMUL_EXTRA_OFILES='$(ALL_EMUL_EXTRA_OFILES) $(ALL_64_EMUL_EXTRA_OFILES)'
252b5132
RH
457 else
458 EMULATION_OFILES='$(ALL_EMULATIONS)'
9d069ac3 459 EMUL_EXTRA_OFILES='$(ALL_EMUL_EXTRA_OFILES)'
252b5132 460 fi
252b5132
RH
461else
462 EMULATION_OFILES=$all_emuls
463 EMUL_EXTRA_OFILES=$all_emul_extras
464fi
465AC_SUBST(EMULATION_OFILES)
466AC_SUBST(EMUL_EXTRA_OFILES)
8e523c23 467AC_SUBST(LIB_PATH)
252b5132 468
3336653a
RH
469EMULATION_LIBPATH=$all_libpath
470AC_SUBST(EMULATION_LIBPATH)
471
252b5132 472if test x${enable_static} = xno; then
9165f454 473 TESTBFDLIB="-Wl,--rpath,../bfd/.libs ../bfd/.libs/libbfd.so"
252b5132
RH
474else
475 TESTBFDLIB="../bfd/.libs/libbfd.a"
476fi
477AC_SUBST(TESTBFDLIB)
478
93a6d436
JL
479target_vendor=${target_vendor=$host_vendor}
480case "$target_vendor" in
481 hp) EXTRA_SHLIB_EXTENSION=".sl" ;;
482 *) EXTRA_SHLIB_EXTENSION= ;;
483esac
f234d5fe
NC
484
485case "$target_os" in
486 lynxos) EXTRA_SHLIB_EXTENSION=".a" ;;
487esac
488
93a6d436
JL
489if test x${EXTRA_SHLIB_EXTENSION} != x ; then
490 AC_DEFINE_UNQUOTED(EXTRA_SHLIB_EXTENSION, "$EXTRA_SHLIB_EXTENSION",
491 [Additional extension a shared object might have.])
492fi
493
31dd3154 494dnl Required by html, pdf, install-pdf and install-html
108a6f8e
CD
495AC_SUBST(datarootdir)
496AC_SUBST(docdir)
497AC_SUBST(htmldir)
31dd3154 498AC_SUBST(pdfdir)
108a6f8e 499
da594c4a
AM
500AC_CONFIG_FILES(Makefile po/Makefile.in:po/Make-in)
501AC_OUTPUT
This page took 1.072528 seconds and 4 git commands to generate.