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