More support for ld --hash-style in the ld testsuite
[deliverable/binutils-gdb.git] / ld / configure.ac
CommitLineData
252b5132
RH
1dnl Process this file with autoconf to produce a configure script
2dnl
2571583a 3dnl Copyright (C) 2012-2017 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')
252b5132
RH
47 ;;
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>],
123 [GOT handling scheme (target, single, negative, multigot)]),
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],
133 [Define to choose default GOT handling scheme]) ;;
134 single)
135 AC_DEFINE([GOT_HANDLING_DEFAULT], [GOT_HANDLING_SINGLE],
136 [Define to choose default GOT handling scheme]) ;;
137 negative)
138 AC_DEFINE([GOT_HANDLING_DEFAULT], [GOT_HANDLING_NEGATIVE],
139 [Define to choose default GOT handling scheme]) ;;
140 multigot)
141 AC_DEFINE([GOT_HANDLING_DEFAULT], [GOT_HANDLING_MULTIGOT],
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
502bdb00 180AM_BINUTILS_WARNINGS
a2d91340 181
44350750
NC
182AM_LC_MESSAGES
183
da594c4a 184AC_CONFIG_HEADERS([config.h:config.in])
252b5132 185
df7b86aa
NC
186# PR 14072
187AH_VERBATIM([00_CONFIG_H_CHECK],
188[/* Check that config.h is #included before system headers
189 (this works only for glibc, but that should be enough). */
d17dce55 190#if defined(__GLIBC__) && !defined(__FreeBSD_kernel__) && !defined(__CONFIG_H__)
df7b86aa
NC
191# error config.h must be #included before system headers
192#endif
193#define __CONFIG_H__ 1])
194
252b5132
RH
195if test -z "$target" ; then
196 AC_MSG_ERROR(Unrecognized target system type; please check config.sub.)
197fi
198if test -z "$host" ; then
199 AC_MSG_ERROR(Unrecognized host system type; please check config.sub.)
200fi
201
202# host-specific stuff:
203
429d795d 204ALL_LINGUAS="bg da de es fi fr ga id it ru sr sv tr uk vi zh_CN zh_TW"
20e95c23
DJ
205ZW_GNU_GETTEXT_SISTER_DIR
206AM_PO_SUBDIRS
252b5132
RH
207
208AC_EXEEXT
209
210AC_PROG_YACC
211AM_PROG_LEX
212
213AM_MAINTAINER_MODE
d5fbea21 214AM_CONDITIONAL(GENINSRC_NEVER, false)
eccbf555 215ACX_PROG_CMP_IGNORE_INITIAL
252b5132
RH
216
217. ${srcdir}/configure.host
218
219AC_SUBST(HDEFINES)
252b5132
RH
220AC_SUBST(NATIVE_LIB_DIRS)
221
58797674 222AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h elf-hints.h limits.h locale.h sys/param.h)
5d3236ee 223AC_CHECK_HEADERS(fcntl.h sys/file.h sys/time.h sys/stat.h)
208a4923 224ACX_HEADER_STRING
44350750 225AC_CHECK_FUNCS(glob mkstemp realpath sbrk setlocale waitpid)
88ba72a2 226AC_CHECK_FUNCS(open lseek close)
252b5132
RH
227AC_HEADER_DIRENT
228
2aec968d
L
229dnl AC_CHECK_HEADERS(sys/mman.h)
230AC_FUNC_MMAP
231
b879806f
AM
232AC_SEARCH_LIBS([dlopen], [dl])
233AM_CONDITIONAL([ENABLE_PLUGINS], [test x$plugins = xyes])
5d3236ee 234
02ecc8e9 235AC_ARG_ENABLE(initfini-array,
26e3a0c9
AM
236[ --disable-initfini-array do not use .init_array/.fini_array sections],
237[case "${enableval}" in
238 yes|no) ;;
239 *) AC_MSG_ERROR([invalid --enable-initfini-array argument]) ;;
240 esac], [enable_initfini_array=yes])
02ecc8e9
L
241AC_SUBST(enable_initfini_array)
242if test $enable_initfini_array = yes; then
243 AC_DEFINE(HAVE_INITFINI_ARRAY, 1,
244 [Define .init_array/.fini_array sections are available and working.])
245fi
246
34875e64
NC
247AC_MSG_CHECKING(for a known getopt prototype in unistd.h)
248AC_CACHE_VAL(ld_cv_decl_getopt_unistd_h,
da594c4a 249[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <unistd.h>], [extern int getopt (int, char *const*, const char *);])],
34875e64
NC
250ld_cv_decl_getopt_unistd_h=yes, ld_cv_decl_getopt_unistd_h=no)])
251AC_MSG_RESULT($ld_cv_decl_getopt_unistd_h)
252if test $ld_cv_decl_getopt_unistd_h = yes; then
253 AC_DEFINE([HAVE_DECL_GETOPT], 1,
254 [Is the prototype for getopt in <unistd.h> in the expected format?])
255fi
bf9ef603 256
252b5132
RH
257BFD_BINARY_FOPEN
258
502bdb00 259AC_CHECK_DECLS([strstr, free, sbrk, getenv, environ])
252b5132 260
597e2591
ILT
261# When converting linker scripts into strings for use in emulation
262# files, use astring.sed if the compiler supports ANSI string
263# concatenation, or ostring.sed otherwise. This is to support the
264# broken Microsoft MSVC compiler, which limits the length of string
265# constants, while still supporting pre-ANSI compilers which do not
266# support string concatenation.
e4dabd0e 267AC_MSG_CHECKING([whether ANSI C string concatenation works])
597e2591 268AC_CACHE_VAL(ld_cv_string_concatenation,
da594c4a
AM
269[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [char *a = "a" "a";])],
270 ld_cv_string_concatenation=yes,
271 ld_cv_string_concatenation=no)])
e4dabd0e
AS
272AC_MSG_RESULT($ld_cv_string_concatenation)
273if test "$ld_cv_string_concatenation" = "yes"; then
597e2591
ILT
274 STRINGIFY=astring.sed
275else
276 STRINGIFY=ostring.sed
277fi
278AC_SUBST(STRINGIFY)
279
252b5132
RH
280# target-specific stuff:
281
282all_targets=
283EMUL=
284all_emuls=
285all_emul_extras=
ba2be581 286all_libpath=
252b5132
RH
287
288dnl We need to get an arbitrary number of tdir definitions into
289dnl Makefile. We can't do it using AC_SUBST, because autoconf does
290dnl not permit literal newlines in an AC_SUBST variables. So we use a
291dnl file.
292rm -f tdirs
293
bf9ef603 294# If the host is 64-bit, then we enable 64-bit targets by default.
1110793a 295# This is consistent with what ../bfd/configure.ac does.
bf9ef603
RM
296if test x${want64} = xfalse; then
297 AC_CHECK_SIZEOF(void *)
298 if test "x${ac_cv_sizeof_void_p}" = "x8"; then
299 want64=true
300 fi
301fi
302
c58212ea
L
303elf_list_options=FALSE
304elf_shlib_list_options=FALSE
305elf_plt_unwind_list_options=FALSE
252b5132
RH
306for targ_alias in `echo $target_alias $enable_targets | sed 's/,/ /g'`
307do
308 if test "$targ_alias" = "all"; then
309 all_targets=true
82d8e420
L
310 elf_list_options=TRUE
311 elf_shlib_list_options=TRUE
312 elf_plt_unwind_list_options=TRUE
252b5132
RH
313 else
314 # Canonicalize the secondary target names.
42ecbf5e 315 result=`$ac_config_sub $targ_alias 2>/dev/null`
252b5132
RH
316 if test -n "$result"; then
317 targ=$result
318 else
319 targ=$targ_alias
320 fi
321
322 . ${srcdir}/configure.tgt
323
324 if test "$targ" = "$target"; then
325 EMUL=$targ_emul
326 fi
327
314e9a4e
L
328 if test x${want64} = xfalse; then
329 . ${srcdir}/../bfd/config.bfd
330 fi
331
534d3119
L
332 if test x${want64} = xtrue; then
333 targ_extra_emuls="$targ_extra_emuls $targ64_extra_emuls"
334 targ_extra_libpath="$targ_extra_libpath $targ64_extra_libpath"
335 fi
336
3336653a 337 for i in $targ_emul $targ_extra_emuls $targ_extra_libpath; do
252b5132 338 case " $all_emuls " in
8c3fff59
AM
339 *" e${i}.o "*) ;;
340 *)
341 all_emuls="$all_emuls e${i}.o"
342 eval result=\$tdir_$i
343 test -z "$result" && result=$targ_alias
344 echo tdir_$i=$result >> tdirs
c58212ea
L
345 case "${i}" in
346 *elf*)
347 elf_list_options=TRUE
68880f31
CLT
348 ;;
349 *)
350 if $GREP "TEMPLATE_NAME=elf32" ${srcdir}/emulparams/${i}.sh >/dev/null 2>/dev/null; then
351 elf_list_options=TRUE
352 fi
353 ;;
354 esac
355 if test "$elf_list_options" = "TRUE"; then
c58212ea
L
356 . ${srcdir}/emulparams/${i}.sh
357 if test x${GENERATE_SHLIB_SCRIPT} = xyes; then
358 elf_shlib_list_options=TRUE
359 fi
360 if test x${PLT_UNWIND} = xyes; then
361 elf_plt_unwind_list_options=TRUE
362 fi
68880f31 363 fi
c58212ea 364 ;;
252b5132
RH
365 esac
366 done
367
ba2be581 368 for i in $targ_emul $targ_extra_libpath; do
3336653a
RH
369 case " $all_libpath " in
370 *" ${i} "*) ;;
371 *)
ba2be581
RH
372 if test -z "$all_libpath"; then
373 all_libpath=${i}
374 else
375 all_libpath="$all_libpath ${i}"
376 fi
3336653a
RH
377 ;;
378 esac
379 done
380
252b5132
RH
381 for i in $targ_extra_ofiles; do
382 case " $all_emul_extras " in
383 *" ${i} "*) ;;
384 *)
385 all_emul_extras="$all_emul_extras ${i}"
386 ;;
387 esac
388 done
5063daf7 389
252b5132
RH
390 fi
391done
392
621ff761 393if test x$ac_default_compressed_debug_sections = xyes ; then
6c3bc0f8
NC
394 AC_DEFINE(DEFAULT_FLAG_COMPRESS_DEBUG, 1, [Define if you want compressed debug sections by default.])
395fi
396
6734f10a
SB
397if test "${ac_default_new_dtags}" = unset; then
398 ac_default_new_dtags=0
399fi
400AC_DEFINE_UNQUOTED(DEFAULT_NEW_DTAGS,
401 $ac_default_new_dtags,
402 [Define to 1 if you want to set DT_RUNPATH instead of DT_RPATH by default.])
403
647e4d46
L
404if test "${ac_default_ld_z_relro}" = unset; then
405 ac_default_ld_z_relro=0
406fi
407AC_DEFINE_UNQUOTED(DEFAULT_LD_Z_RELRO,
408 $ac_default_ld_z_relro,
409 [Define to 1 if you want to enable -z relro in ELF linker by default.])
410
c58212ea
L
411AC_SUBST(elf_list_options)
412AC_SUBST(elf_shlib_list_options)
413AC_SUBST(elf_plt_unwind_list_options)
252b5132
RH
414AC_SUBST(EMUL)
415
416TDIRS=tdirs
417AC_SUBST_FILE(TDIRS)
418
252b5132
RH
419if test x${all_targets} = xtrue; then
420 if test x${want64} = xtrue; then
421 EMULATION_OFILES='$(ALL_EMULATIONS) $(ALL_64_EMULATIONS)'
9d069ac3 422 EMUL_EXTRA_OFILES='$(ALL_EMUL_EXTRA_OFILES) $(ALL_64_EMUL_EXTRA_OFILES)'
252b5132
RH
423 else
424 EMULATION_OFILES='$(ALL_EMULATIONS)'
9d069ac3 425 EMUL_EXTRA_OFILES='$(ALL_EMUL_EXTRA_OFILES)'
252b5132 426 fi
252b5132
RH
427else
428 EMULATION_OFILES=$all_emuls
429 EMUL_EXTRA_OFILES=$all_emul_extras
430fi
431AC_SUBST(EMULATION_OFILES)
432AC_SUBST(EMUL_EXTRA_OFILES)
8e523c23 433AC_SUBST(LIB_PATH)
252b5132 434
3336653a
RH
435EMULATION_LIBPATH=$all_libpath
436AC_SUBST(EMULATION_LIBPATH)
437
252b5132
RH
438if test x${enable_static} = xno; then
439 TESTBFDLIB="--rpath ../bfd/.libs ../bfd/.libs/libbfd.so"
440else
441 TESTBFDLIB="../bfd/.libs/libbfd.a"
442fi
443AC_SUBST(TESTBFDLIB)
444
93a6d436
JL
445target_vendor=${target_vendor=$host_vendor}
446case "$target_vendor" in
447 hp) EXTRA_SHLIB_EXTENSION=".sl" ;;
448 *) EXTRA_SHLIB_EXTENSION= ;;
449esac
f234d5fe
NC
450
451case "$target_os" in
452 lynxos) EXTRA_SHLIB_EXTENSION=".a" ;;
453esac
454
93a6d436
JL
455if test x${EXTRA_SHLIB_EXTENSION} != x ; then
456 AC_DEFINE_UNQUOTED(EXTRA_SHLIB_EXTENSION, "$EXTRA_SHLIB_EXTENSION",
457 [Additional extension a shared object might have.])
458fi
459
31dd3154 460dnl Required by html, pdf, install-pdf and install-html
108a6f8e
CD
461AC_SUBST(datarootdir)
462AC_SUBST(docdir)
463AC_SUBST(htmldir)
31dd3154 464AC_SUBST(pdfdir)
108a6f8e 465
da594c4a
AM
466AC_CONFIG_FILES(Makefile po/Makefile.in:po/Make-in)
467AC_OUTPUT
This page took 1.013035 seconds and 4 git commands to generate.