xref: /netbsd-src/external/gpl3/binutils/dist/gas/configure.ac (revision 2718af68c3efc72c9769069b5c7f9ed36f6b9def)
1dnl Process this file with autoconf to produce a configure script.
2dnl
3dnl And be careful when changing it!  If you must add tests with square
4dnl brackets, be sure changequote invocations surround it.
5dnl
6dnl   Copyright (C) 2012-2020 Free Software Foundation, Inc.
7dnl
8dnl This file is free software; you can redistribute it and/or modify
9dnl it under the terms of the GNU General Public License as published by
10dnl the Free Software Foundation; either version 3 of the License, or
11dnl (at your option) any later version.
12dnl
13dnl This program is distributed in the hope that it will be useful,
14dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
15dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16dnl GNU General Public License for more details.
17dnl
18dnl You should have received a copy of the GNU General Public License
19dnl along with this program; see the file COPYING3.  If not see
20dnl <http://www.gnu.org/licenses/>.
21dnl
22dnl v2.5 needed for --bindir et al
23m4_include([../bfd/version.m4])
24AC_INIT([gas], BFD_VERSION)
25AC_CONFIG_SRCDIR(as.h)
26
27dnl Autoconf 2.57 will find the aux dir without this.  However, unless
28dnl we specify this explicitly, automake-1.7 will assume that ylwrap is in
29dnl gas/ instead of gas/../.
30AC_CONFIG_AUX_DIR(..)
31AC_CANONICAL_TARGET
32AC_ISC_POSIX
33
34AM_INIT_AUTOMAKE
35
36AC_PROG_CC
37AC_GNU_SOURCE
38AC_USE_SYSTEM_EXTENSIONS
39
40LT_INIT
41ACX_LARGEFILE
42ACX_PROG_CMP_IGNORE_INITIAL
43
44AC_ARG_ENABLE(targets,
45[  --enable-targets        alternative target configurations besides the primary],
46[case "${enableval}" in
47  yes | "") AC_MSG_ERROR(enable-targets option must specify target names or 'all')
48	    ;;
49  no)	    enable_targets= ;;
50  *)	    enable_targets=$enableval ;;
51esac])dnl
52
53ac_checking=
54. ${srcdir}/../bfd/development.sh
55test "$development" = true && ac_checking=yes
56AC_ARG_ENABLE(checking,
57[  --enable-checking       enable run-time checks],
58[case "${enableval}" in
59  no|none)  ac_checking= ;;
60  *)	    ac_checking=yes ;;
61esac])dnl
62if test x$ac_checking != x ; then
63  AC_DEFINE(ENABLE_CHECKING, 1, [Define if you want run-time sanity checks.])
64fi
65
66# PR gas/19109
67# Decide the default method for compressing debug sections.
68ac_default_compressed_debug_sections=unset
69# Provide a configure time option to override our default.
70AC_ARG_ENABLE(compressed_debug_sections,
71	      AS_HELP_STRING([--enable-compressed-debug-sections={all,gas,none}],
72	      [compress debug sections by default]),
73[case ,"${enableval}", in
74  ,yes, | ,all, | *,gas,*) ac_default_compressed_debug_sections=yes ;;
75  ,no, | ,none,)  ac_default_compressed_debug_sections=no ;;
76  *)   ac_default_compressed_debug_sections=unset ;;
77esac])dnl
78
79# PR gas/19520
80# Decide if x86 assembler should generate relax relocations.
81ac_default_x86_relax_relocations=unset
82# Provide a configure time option to override our default.
83AC_ARG_ENABLE(x86_relax_relocations,
84	      AS_HELP_STRING([--enable-x86-relax-relocations],
85	      [generate x86 relax relocations by default]),
86[case "${enableval}" in
87  no)  ac_default_x86_relax_relocations=0 ;;
88esac])dnl
89
90# Decide if ELF assembler should generate common symbols with the
91# STT_COMMON type.
92ac_default_elf_stt_common=unset
93# Provide a configure time option to override our default.
94AC_ARG_ENABLE(elf_stt_common,
95	      AS_HELP_STRING([--enable-elf-stt-common],
96	      [generate ELF common symbols with STT_COMMON type by default]),
97[case "${enableval}" in
98  yes)  ac_default_elf_stt_common=1 ;;
99esac])dnl
100
101
102# Decide if the ELF assembler should default to generating
103# GNU Build notes if none are provided by the input.
104ac_default_generate_build_notes=0
105# Provide a configuration option to override the default.
106AC_ARG_ENABLE(generate_build_notes,
107	      AS_HELP_STRING([--enable-generate-build-notes],
108	      [generate GNU Build notes if none are provided by the input]),
109[case "${enableval}" in
110  yes)  ac_default_generate_build_notes=1 ;;
111  no)   ac_default_generate_build_notes=0 ;;
112esac])dnl
113
114# Decide if the MIPS assembler should default to enable MIPS fix Loongson3
115# LLSC errata.
116ac_default_mips_fix_loongson3_llsc=unset
117# Provide a configuration option to override the default.
118AC_ARG_ENABLE(mips-fix-loongson3-llsc,
119             AS_HELP_STRING([--enable-mips-fix-loongson3-llsc],
120             [enable MIPS fix Loongson3 LLSC errata]),
121[case "${enableval}" in
122  yes)  ac_default_mips_fix_loongson3_llsc=1 ;;
123  no)   ac_default_mips_fix_loongson3_llsc=0 ;;
124esac])dnl
125
126# Decide if the x86 ELF assembler should default to generating GNU x86
127# used ISA and feature properties.
128ac_default_generate_x86_used_note=unset
129# Provide a configuration option to override the default.
130AC_ARG_ENABLE(x86-used-note,
131	      AS_HELP_STRING([--enable-x86-used-note],
132	      [generate GNU x86 used ISA and feature properties]),
133[case "${enableval}" in
134  yes)  ac_default_generate_x86_used_note=1 ;;
135  no)   ac_default_generate_x86_used_note=0 ;;
136esac])dnl
137
138# Decide if the RISC-V ELF assembler should default to generating attribute.
139ac_default_generate_riscv_attr=unset
140# Provide a configuration option to override the default.
141AC_ARG_ENABLE(default-riscv-attribute,
142	      AS_HELP_STRING([--enable-default-riscv-attribute],
143	      [generate RISC-V arch attribute by default]),
144[case "${enableval}" in
145  yes)  ac_default_generate_riscv_attr=1 ;;
146  no)   ac_default_generate_riscv_attr=0 ;;
147esac])dnl
148
149using_cgen=no
150
151AM_BINUTILS_WARNINGS
152
153# Generate a header file
154AC_CONFIG_HEADERS(config.h:config.in)
155
156dnl Option --with-cpu=TYPE allows configure type control of the default
157dnl cpu type within the assembler.  Currently only the ARC target
158dnl supports this feature, but others may be added in the future.
159AC_ARG_WITH(cpu,
160            AS_HELP_STRING([--with-cpu=CPU],
161            [default cpu variant is CPU (currently only supported on ARC)]),
162            [AC_DEFINE_UNQUOTED(TARGET_WITH_CPU,
163                                "${with_cpu}",
164                                [Target specific CPU.])],
165            [])
166
167# PR 14072
168AH_VERBATIM([00_CONFIG_H_CHECK],
169[/* Check that config.h is #included before system headers
170   (this works only for glibc, but that should be enough).  */
171#if defined(__GLIBC__) && !defined(__FreeBSD_kernel__) && !defined(__CONFIG_H__)
172#  error config.h must be #included before system headers
173#endif
174#define __CONFIG_H__ 1])
175
176# If we are on a DOS filesystem, we must use gdb.ini rather than
177# .gdbinit.
178case "${host}" in
179  *-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-windows*)
180    GDBINIT="gdb.ini"
181    AC_CONFIG_FILES(gdb.ini:gdbinit.in)
182    ;;
183  *)
184    GDBINIT=".gdbinit"
185    AC_CONFIG_FILES(.gdbinit:gdbinit.in)
186    ;;
187esac
188AC_SUBST(GDBINIT)
189
190#We need this for the host.
191AC_C_BIGENDIAN
192
193te_file=generic
194
195# Makefile target for installing gas in $(tooldir)/bin.
196install_tooldir=install-exec-tooldir
197
198canon_targets=""
199all_targets=no
200if test -n "$enable_targets" ; then
201  for t in `echo $enable_targets | sed 's/,/ /g'`; do
202    if test $t = "all"; then
203      all_targets=yes
204      continue
205    fi
206    result=`$ac_config_sub $t 2>/dev/null`
207    if test -n "$result" ; then
208      canon_targets="$canon_targets $result"
209#    else
210#      # Permit "all", etc.  We don't support it yet though.
211#      canon_targets="$canon_targets $t"
212    fi
213  done
214  GAS_UNIQ(canon_targets)
215fi
216
217emulations=""
218
219for this_target in $target $canon_targets ; do
220
221    targ=${this_target}
222    . ${srcdir}/configure.tgt
223
224    case ${target_cpu} in
225      crisv32)
226	AC_DEFINE_UNQUOTED(DEFAULT_CRIS_ARCH, $arch,
227			   [Default CRIS architecture.])
228	;;
229    esac
230
231    if test ${this_target} = $target ; then
232      target_cpu_type=${cpu_type}
233    elif test ${target_cpu_type} != ${cpu_type} ; then
234      continue
235    fi
236
237    generic_target=${cpu_type}-${target_vendor}-${target_os}
238    case ${generic_target} in
239      i386-*-msdosdjgpp* \
240      | i386-*-go32* \
241      | i386-go32-rtems*)
242	AC_DEFINE(STRICTCOFF, 1, [Using strict COFF?])
243	;;
244
245      i386-*-solaris2 \
246      | x86_64-*-solaris2 \
247      | i386-*-solaris2.[[0-9]] \
248      | i386-*-solaris2.1[[01]] \
249      | x86_64-*-solaris2.1[[01]])
250	if test ${this_target} = $target \
251	   && test ${ac_default_x86_relax_relocations} = unset; then
252	  ac_default_x86_relax_relocations=0
253	fi
254	;;
255
256      microblaze*)
257        ;;
258
259changequote(,)dnl
260      ppc-*-aix[5-9].*)
261changequote([,])dnl
262	AC_DEFINE(AIX_WEAK_SUPPORT, 1,
263		  [Define if using AIX 5.2 value for C_WEAKEXT.])
264	;;
265      ppc-*-solaris*)
266	if test ${this_target} = $target; then
267	  AC_DEFINE(TARGET_SOLARIS_COMMENT, 1,
268		    [Define if default target is PowerPC Solaris.])
269	fi
270	if test x${endian} = xbig; then
271	  AC_MSG_ERROR(Solaris must be configured little endian)
272	fi
273	;;
274    esac
275
276    if test ${this_target} = $target ; then
277      endian_def=
278      if test x${endian} = xbig; then
279	endian_def=1
280      elif test x${endian} = xlittle; then
281	endian_def=0
282      fi
283      if test x${endian_def} != x; then
284	AC_DEFINE_UNQUOTED(TARGET_BYTES_BIG_ENDIAN, $endian_def,
285			   [Define as 1 if big endian.])
286      fi
287    fi
288
289# Other random stuff.
290
291    case ${cpu_type} in
292      mips)
293	# Set mips_cpu to the name of the default CPU.
294	case ${target_cpu} in
295	  mips | mipsbe | mipseb | mipsle | mipsel | mips64 | mips64el | mips64eb | mipsn64el | mipsn64eb )
296	    mips_cpu=from-abi
297	    ;;
298	  mipsisa32 | mipsisa32el)
299	    mips_cpu=mips32
300	    ;;
301	  mipsisa32r2 | mipsisa32r2el)
302	    mips_cpu=mips32r2
303	    ;;
304	  mipsisa32r3 | mipsisa32r3el)
305	    mips_cpu=mips32r3
306	    ;;
307	  mipsisa32r5 | mipsisa32r5el)
308	    mips_cpu=mips32r5
309	    ;;
310	  mipsisa32r6 | mipsisa32r6el)
311	    mips_cpu=mips32r6
312	    ;;
313	  mipsisa64 | mipsisa64el)
314	    mips_cpu=mips64
315	    ;;
316	  mipsisa64r2 | mipsisa64r2el)
317	    mips_cpu=mips64r2
318	    ;;
319	  mipsisa64r3 | mipsisa64r3el)
320	    mips_cpu=mips64r3
321	    ;;
322	  mipsisa64r5 | mipsisa64r5el)
323	    mips_cpu=mips64r5
324	    ;;
325	  mipsisa64r6 | mipsisa64r6el)
326	    mips_cpu=mips64r6
327	    ;;
328	  mipstx39 | mipstx39el)
329	    mips_cpu=r3900
330	    ;;
331	  mips64vr | mips64vrel)
332	    mips_cpu=vr4100
333	    ;;
334	  mipsisa32r2* | mipsisa64r2*)
335changequote(,)dnl
336	    mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..r2//' -e 's/el$//'`
337changequote([,])dnl
338	    ;;
339	  mipsisa32r6* | mipsisa64r6*)
340changequote(,)dnl
341	    mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..r6//' -e 's/el$//'`
342changequote([,])dnl
343	    ;;
344	  mips64* | mipsisa64* | mipsisa32*)
345changequote(,)dnl
346	    mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..//' -e 's/el$//'`
347changequote([,])dnl
348	    ;;
349	  mips*)
350changequote(,)dnl
351	    mips_cpu=`echo $target_cpu | sed -e 's/^mips//' -e 's/el$//'`
352changequote([,])dnl
353	    ;;
354	  *)
355	    AC_MSG_ERROR($target_cpu isn't a supported MIPS CPU name)
356	    ;;
357	esac
358	# See whether it's appropriate to set E_MIPS_ABI_O32 for o32
359	# binaries.  It's a GNU extension that some OSes don't understand.
360	case ${target} in
361	  *-*-irix*)
362	    use_e_mips_abi_o32=0
363	    ;;
364	  *)
365	    use_e_mips_abi_o32=1
366	    ;;
367	esac
368	# Decide whether to generate 32-bit or 64-bit code by default.
369	# Used to resolve -march=from-abi when an embedded ABI is selected.
370	case ${target} in
371	  mips64*-*-* | mipsisa64*-*-*)
372	    mips_default_64bit=1
373	    ;;
374	  *)
375	    mips_default_64bit=0
376	    ;;
377	esac
378	# Decide which ABI to target by default.
379	case ${target} in
380	  mips64*-linux* | mips-sgi-irix6* | mips64*-freebsd* \
381	  | mips64*-kfreebsd*-gnu | mips64*-ps2-elf*)
382	    mips_default_abi=N32_ABI
383	    ;;
384	  mips*-linux* | mips*-freebsd* | mips*-kfreebsd*-gnu)
385	    mips_default_abi=O32_ABI
386	    ;;
387	  mips64*-openbsd*)
388	    mips_default_abi=N64_ABI
389	    ;;
390	  *)
391	    mips_default_abi=NO_ABI
392	    ;;
393	esac
394	AC_DEFINE_UNQUOTED(MIPS_CPU_STRING_DEFAULT, "$mips_cpu",
395			   [Default CPU for MIPS targets. ])
396	AC_DEFINE_UNQUOTED(USE_E_MIPS_ABI_O32, $use_e_mips_abi_o32,
397			   [Allow use of E_MIPS_ABI_O32 on MIPS targets. ])
398	AC_DEFINE_UNQUOTED(MIPS_DEFAULT_64BIT, $mips_default_64bit,
399			   [Generate 64-bit code by default on MIPS targets. ])
400	AC_DEFINE_UNQUOTED(MIPS_DEFAULT_ABI, $mips_default_abi,
401			   [Choose a default ABI for MIPS targets. ])
402	;;
403    esac
404
405    # Do we need the opcodes library?
406    case ${cpu_type} in
407      vax | tic30)
408	;;
409
410      *)
411	need_opcodes=yes
412
413	case "${enable_shared}" in
414	yes) shared_opcodes=true ;;
415	*opcodes*) shared_opcodes=true ;;
416	*) shared_opcodes=false ;;
417	esac
418	;;
419    esac
420
421    # Any other special object files needed ?
422    case ${cpu_type} in
423
424      bfin)
425	for f in bfin-parse.o bfin-lex-wrapper.o; do
426	  case " $extra_objects " in
427	    *" $f "*) ;;
428	    *) extra_objects="$extra_objects $f" ;;
429	  esac
430	done
431	;;
432
433      bpf)
434      	if test $this_target = $target ; then
435	  AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
436	fi
437        using_cgen=yes
438        ;;
439      epiphany | fr30 | ip2k | iq2000 | lm32 | m32r | or1k)
440	using_cgen=yes
441	;;
442
443      m32c)
444	using_cgen=yes
445	;;
446      frv)
447	using_cgen=yes
448	;;
449      m68k)
450	f=m68k-parse.o
451	case " $extra_objects " in
452	  *" $f "*) ;;
453	  *) extra_objects="$extra_objects $f" ;;
454	esac
455	;;
456
457      mep)
458	using_cgen=yes
459	;;
460
461      mips)
462	for f in itbl-parse.o itbl-lex-wrapper.o itbl-ops.o; do
463	  case " $extra_objects " in
464	    *" $f "*) ;;
465	    *) extra_objects="$extra_objects $f" ;;
466	  esac
467	done
468	;;
469
470      mt)
471	using_cgen=yes
472	;;
473
474      nds32)
475	# setup NDS32_LINUX_TOOLCHAIN definition
476	if test "linux" = $em; then
477	  AC_DEFINE(NDS32_LINUX_TOOLCHAIN, 1,
478	    [Define value for nds32_linux_toolchain])
479	else
480	  AC_DEFINE(NDS32_LINUX_TOOLCHAIN, 0,
481	    [Define default value for nds32_linux_toolchain])
482	fi
483
484	# Decide BASELINE, REDUCED_REGS, FPU_DP_EXT, FPU_SP_EXT features
485	# based on arch_name.
486	AC_MSG_CHECKING(for default configuration of --with-arch)
487	if test "x${with_arch}" != x; then
488	  case ${with_arch} in
489	    v2j | v2s | v2f | v2 | v3m | v3j | v3s | v3f | v3 )
490	      AC_DEFINE_UNQUOTED(NDS32_DEFAULT_ARCH_NAME, "$with_arch",
491				 [Define value for nds32_arch_name])
492	      ;;
493	    *)
494	      AC_MSG_ERROR(This kind of arch name does *NOT* exist!)
495	      ;;
496	  esac
497	fi
498	AC_MSG_RESULT($with_arch)
499
500	# Decide features one by one.
501	AC_MSG_CHECKING(for default configuration of --enable-dx-regs)
502	if test "x${enable_dx_regs}" = xyes; then
503	  AC_DEFINE(NDS32_DEFAULT_DX_REGS, 1,
504		    [Define value for nds32_dx_regs])
505	else
506	  AC_DEFINE(NDS32_DEFAULT_DX_REGS, 0,
507		    [Define default value for nds32_dx_regs])
508	fi
509	AC_MSG_RESULT($enable_dx_regs)
510
511	AC_MSG_CHECKING(for default configuration of --enable-perf-ext)
512	if test "x${enable_perf_ext}" = xno; then
513	  AC_DEFINE(NDS32_DEFAULT_PERF_EXT, 0,
514		    [Define value for nds32_perf_ext])
515	else
516	  AC_DEFINE(NDS32_DEFAULT_PERF_EXT, 1,
517		    [Define default value for nds32_perf_ext])
518	fi
519	AC_MSG_RESULT($enable_perf_ext)
520
521	AC_MSG_CHECKING(for default configuration of --enable-perf-ext2)
522	if test "x${enable_perf_ext2}" = xno; then
523	  AC_DEFINE(NDS32_DEFAULT_PERF_EXT2, 0,
524		    [Define value for nds32_perf_ext2])
525	else
526	  AC_DEFINE(NDS32_DEFAULT_PERF_EXT2, 1,
527		    [Define default value for nds32_perf_ext2])
528	fi
529	AC_MSG_RESULT($enable_perf_ext2)
530
531	AC_MSG_CHECKING(for default configuration of --enable-string-ext)
532	if test "x${enable_string_ext}" = xno; then
533	  AC_DEFINE(NDS32_DEFAULT_STRING_EXT, 0,
534		    [Define value for nds32_string_ext])
535	else
536	  AC_DEFINE(NDS32_DEFAULT_STRING_EXT, 1,
537		    [Define default value for nds32_string_ext])
538	fi
539	AC_MSG_RESULT($enable_string_ext)
540
541	AC_MSG_CHECKING(for default configuration of --enable-audio-ext)
542	if test "x${enable_audio_ext}" = xno; then
543	  AC_DEFINE(NDS32_DEFAULT_AUDIO_EXT, 0,
544		    [Define value for nds32_audio_ext])
545	else
546	  AC_DEFINE(NDS32_DEFAULT_AUDIO_EXT, 1,
547		    [Define default value for nds32_audio_ext])
548	fi
549	AC_MSG_RESULT($enable_audio_ext)
550
551	AC_MSG_CHECKING(for default configuration of --enable-dsp-ext)
552	if test "x${enable_dsp_ext}" = xno; then
553	  AC_DEFINE(NDS32_DEFAULT_DSP_EXT, 0,
554		    [Define value for nds32_dsp_ext])
555	else
556	  AC_DEFINE(NDS32_DEFAULT_DSP_EXT, 1,
557		    [Define default value for nds32_dsp_ext])
558	fi
559	AC_MSG_RESULT($enable_dsp_ext)
560
561	AC_MSG_CHECKING(for default configuration of --enable-zol-ext)
562	if test "x${enable_zol_ext}" = xno; then
563	  AC_DEFINE(NDS32_DEFAULT_ZOL_EXT, 0,
564		    [Define value for nds32_zol_ext])
565	else
566	  AC_DEFINE(NDS32_DEFAULT_ZOL_EXT, 1,
567		    [Define default value for nds32_zol_ext])
568	fi
569	AC_MSG_RESULT($enable_zol_ext)
570	;;
571
572      aarch64 | i386 | riscv | s390 | sparc)
573	if test $this_target = $target ; then
574	  AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
575	fi
576	;;
577
578      rl78)
579	f=rl78-parse.o
580	case " $extra_objects " in
581	  *" $f "*) ;;
582	  *) extra_objects="$extra_objects $f" ;;
583	esac
584	;;
585
586      rx)
587	f=rx-parse.o
588	case " $extra_objects " in
589	  *" $f "*) ;;
590	  *) extra_objects="$extra_objects $f" ;;
591	esac
592	;;
593
594      xstormy16)
595	using_cgen=yes
596	;;
597
598      xc16x)
599	using_cgen=yes
600	;;
601
602      xtensa)
603	f=config/xtensa-relax.o
604	case " $extra_objects " in
605	  *" $f "*) ;;
606	  *) extra_objects="$extra_objects $f" ;;
607	esac
608	;;
609
610      *)
611	;;
612    esac
613
614    if test $using_cgen = yes ; then
615	f=cgen.o
616	case " $extra_objects " in
617	  *" $f "*) ;;
618	  *) extra_objects="$extra_objects $f" ;;
619	esac
620    fi
621
622# See if we really can support this configuration with the emulation code.
623
624    if test $this_target = $target ; then
625      obj_format=$fmt
626      te_file=$em
627    fi
628
629    case ${te_file} in
630      vms)
631	f=config/te-vms.o
632	case " $extra_objects " in
633	  *" $f "*) ;;
634	  *) extra_objects="$extra_objects $f" ;;
635	esac ;;
636    esac
637
638# From target name and format, produce a list of supported emulations.
639
640    case ${generic_target}-${fmt} in
641      mips-*-*-*)	case "$endian" in
642			big)	emulation="mipsbelf mipslelf mipself" ;;
643			*)	emulation="mipslelf mipsbelf mipself" ;;
644			esac ;;
645      # i386-pc-pe-coff != i386-pc-coff.
646      i386-*-pe-coff)	;;
647      # Uncommenting the next line will turn on support for i386 AOUT
648      # for the default linux configuration
649      # i386-*-linux*-elf) emulation="i386elf i386aout" ;;
650      #
651      i386-*-aout)	emulation="i386aout" ;;
652      i386-*-coff)	emulation="i386coff" ;;
653      i386-*-elf)	emulation="i386elf" ;;
654
655      # Always all formats.  The first stated emulation becomes the default.
656      cris-*-*aout*)	emulation="crisaout criself" ;;
657      cris-*-*)		emulation="criself crisaout" ;;
658    esac
659
660    emulations="$emulations $emulation"
661
662done
663
664if test ${ac_default_x86_relax_relocations} = unset; then
665  ac_default_x86_relax_relocations=1
666fi
667AC_DEFINE_UNQUOTED(DEFAULT_GENERATE_X86_RELAX_RELOCATIONS,
668  $ac_default_x86_relax_relocations,
669  [Define to 1 if you want to generate x86 relax relocations by default.])
670
671if test ${ac_default_elf_stt_common} = unset; then
672  ac_default_elf_stt_common=0
673fi
674AC_DEFINE_UNQUOTED(DEFAULT_GENERATE_ELF_STT_COMMON,
675  $ac_default_elf_stt_common,
676  [Define to 1 if you want to generate ELF common symbols with the
677   STT_COMMON type by default.])
678
679AC_DEFINE_UNQUOTED(DEFAULT_GENERATE_BUILD_NOTES,
680  $ac_default_generate_build_notes,
681  [Define to 1 if you want to generate GNU Build attribute notes
682   by default, if none are contained in the input.])
683
684if test ${ac_default_generate_x86_used_note} = unset; then
685  ac_default_generate_x86_used_note=0
686fi
687AC_DEFINE_UNQUOTED(DEFAULT_X86_USED_NOTE,
688  $ac_default_generate_x86_used_note,
689  [Define to 1 if you want to generate GNU x86 used ISA and feature
690   properties by default.])
691
692if test ${ac_default_generate_riscv_attr} = unset; then
693    case ${target_os} in
694      elf)
695	ac_default_generate_riscv_attr=1
696	;;
697      *)
698	ac_default_generate_riscv_attr=0
699	;;
700  esac
701fi
702
703AC_DEFINE_UNQUOTED(DEFAULT_RISCV_ATTR,
704  $ac_default_generate_riscv_attr,
705  [Define to 1 if you want to generate RISC-V arch attribute by default.])
706
707if test ${ac_default_mips_fix_loongson3_llsc} = unset; then
708  ac_default_mips_fix_loongson3_llsc=0
709fi
710AC_DEFINE_UNQUOTED(DEFAULT_MIPS_FIX_LOONGSON3_LLSC,
711  $ac_default_mips_fix_loongson3_llsc,
712  [Define to 1 if you want to fix Loongson3 LLSC Errata by default.])
713
714if test x$ac_default_compressed_debug_sections = xyes ; then
715  AC_DEFINE(DEFAULT_FLAG_COMPRESS_DEBUG, 1, [Define if you want compressed debug sections by default.])
716fi
717
718# Turn on all targets if possible
719if test ${all_targets} = "yes"; then
720  case ${target_cpu_type} in
721  i386)
722    case ${obj_format} in
723    aout)
724      emulations="$emulations i386coff i386elf"
725      ;;
726    coff)
727      emulations="$emulations i386aout i386elf"
728    ;;
729    elf)
730      emulations="$emulations i386aout i386coff"
731      ;;
732    esac
733  ;;
734  x86_64)
735    case ${obj_format} in
736    aout)
737      emulations="$emulations i386coff i386elf"
738      ;;
739    coff)
740      emulations="$emulations i386aout i386elf"
741    ;;
742    elf)
743      emulations="$emulations i386aout i386coff"
744      ;;
745    esac
746  ;;
747  esac
748fi
749
750# PE code has way too many macros tweaking behaviour
751case ${te_file} in
752  pe*) emulations="" ;;
753esac
754
755# Assign floating point type.  Most processors with FP support
756# IEEE FP.  On those that don't support FP at all, usually IEEE
757# is emulated.
758case ${target_cpu} in
759  vax | pdp11 )	atof=vax ;;
760  *)		atof=ieee ;;
761esac
762
763case "${obj_format}" in
764  "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
765esac
766
767# Unfortunately the cpu in cpu-opc.h file isn't always $(TARGET_CPU).
768cgen_cpu_prefix=""
769if test $using_cgen = yes ; then
770  case ${target_cpu} in
771    or1knd)
772       cgen_cpu_prefix=or1k ;;
773    *) cgen_cpu_prefix=${target_cpu} ;;
774  esac
775  AC_SUBST(cgen_cpu_prefix)
776  AC_DEFINE(USING_CGEN, 1, [Using cgen code?])
777fi
778
779dnl
780dnl Make sure the desired support files exist.
781dnl
782
783if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
784  AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
785fi
786
787if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
788  AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
789fi
790
791# Some COFF configurations want these random other flags set.
792case ${obj_format} in
793  coff)
794    case ${target_cpu_type} in
795      i386) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
796      x86_64) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
797    esac
798    ;;
799esac
800
801# Getting this done right is going to be a bitch.  Each configuration specified
802# with --enable-targets=... should be checked for environment, format, cpu
803# setting.
804#
805# For each configuration, the necessary object file support code must be linked
806# in.  This might be only one, it might be up to four.  The necessary emulation
807# code needs to be provided, too.
808#
809# And then there's "--enable-targets=all"....
810#
811# For now, just always do it for MIPS ELF configurations.  Sigh.
812
813formats="${obj_format}"
814emfiles=""
815EMULATIONS=""
816GAS_UNIQ(emulations)
817for em in . $emulations ; do
818  case $em in
819    .)	continue ;;
820    mipsbelf | mipslelf | mipself)
821	fmt=elf   file=mipself ;;
822    *coff)
823	fmt=coff  file=$em ;;
824    *aout)
825	fmt=aout file=$em ;;
826    *elf)
827	fmt=elf file=$em ;;
828  esac
829  formats="$formats $fmt"
830  emfiles="$emfiles config/e-$file.o"
831  EMULATIONS="$EMULATIONS &$em,"
832done
833GAS_UNIQ(formats)
834GAS_UNIQ(emfiles)
835if test `set . $formats ; shift ; echo $#` -gt 1 ; then
836  for fmt in $formats ; do
837    case $fmt in
838      aout)	AC_DEFINE(OBJ_MAYBE_AOUT, 1,    [a.out support?])   ;;
839      coff)	AC_DEFINE(OBJ_MAYBE_COFF, 1,    [COFF support?])    ;;
840      ecoff)	AC_DEFINE(OBJ_MAYBE_ECOFF, 1,   [ECOFF support?])   ;;
841      elf)	AC_DEFINE(OBJ_MAYBE_ELF, 1,     [ELF support?])     ;;
842      generic)	AC_DEFINE(OBJ_MAYBE_GENERIC, 1, [generic support?]) ;;
843      som)	AC_DEFINE(OBJ_MAYBE_SOM, 1,     [SOM support?])     ;;
844    esac
845    extra_objects="$extra_objects config/obj-$fmt.o"
846  done
847  obj_format=multi
848fi
849if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
850  DEFAULT_EMULATION=`set . $emulations ; echo $2`
851  # e-mipself has more than one emulation per file, e-i386* has just one at the
852  # moment.  If only one emulation is specified, then don't define
853  # USE_EMULATIONS or include any of the e-files as they will only be bloat.
854  case "${obj_format}${emfiles}" in
855    multi* | *mipself*)
856      extra_objects="$extra_objects $emfiles"
857      AC_DEFINE(USE_EMULATIONS, 1, [Use emulation support?]) ;;
858  esac
859fi
860AC_SUBST(extra_objects)
861AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS, [Supported emulations.])
862AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION",
863		   [Default emulation.])
864
865reject_dev_configs=yes
866
867case ${reject_dev_configs}-${dev} in
868  yes-yes) # Oops.
869    AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
870    ;;
871esac
872
873AC_SUBST(target_cpu_type)
874AC_SUBST(obj_format)
875AC_SUBST(te_file)
876AC_SUBST(install_tooldir)
877AC_SUBST(atof)
878dnl AC_SUBST(emulation)
879
880# do we need the opcodes library?
881case "${need_opcodes}" in
882yes)
883  OPCODES_LIB=../opcodes/libopcodes.la
884  ;;
885esac
886
887AC_SUBST(OPCODES_LIB)
888
889AC_DEFINE_UNQUOTED(TARGET_ALIAS,	"${target_alias}", [Target alias.])
890AC_DEFINE_UNQUOTED(TARGET_CANONICAL,	"${target}",       [Canonical target.])
891AC_DEFINE_UNQUOTED(TARGET_CPU,		"${target_cpu}",   [Target CPU.])
892AC_DEFINE_UNQUOTED(TARGET_VENDOR,	"${target_vendor}", [Target vendor.])
893AC_DEFINE_UNQUOTED(TARGET_OS,		"${target_os}",    [Target OS.])
894
895AC_PROG_YACC
896AM_PROG_LEX
897
898ALL_LINGUAS="es fi fr id ja ru rw sv tr uk zh_CN"
899ZW_GNU_GETTEXT_SISTER_DIR
900AM_PO_SUBDIRS
901
902AM_MAINTAINER_MODE
903AM_CONDITIONAL(GENINSRC_NEVER, false)
904AC_EXEEXT
905
906AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h errno.h sys/types.h limits.h locale.h time.h sys/stat.h)
907ACX_HEADER_STRING
908
909# Put this here so that autoconf's "cross-compiling" message doesn't confuse
910# people who are not cross-compiling but are compiling cross-assemblers.
911AC_MSG_CHECKING(whether compiling a cross-assembler)
912if test "${host}" = "${target}"; then
913  cross_gas=no
914else
915  cross_gas=yes
916  AC_DEFINE(CROSS_COMPILE, 1, [Compiling cross-assembler?])
917fi
918AC_MSG_RESULT($cross_gas)
919
920dnl ansidecl.h will deal with const
921dnl AC_C_CONST
922AC_FUNC_ALLOCA
923AC_C_INLINE
924
925# VMS doesn't have unlink.
926AC_CHECK_FUNCS(unlink remove, break)
927AC_CHECK_FUNCS(sbrk setlocale)
928AC_CHECK_FUNCS(strsignal)
929
930AM_LC_MESSAGES
931
932# do we need the math library?
933case "${need_libm}" in
934yes)
935  LT_LIB_M
936  AC_SUBST(LIBM)
937  ;;
938esac
939
940# Some non-ANSI preprocessors botch requoting inside strings.  That's bad
941# enough, but on some of those systems, the assert macro relies on requoting
942# working properly!
943GAS_WORKING_ASSERT
944
945# On some systems, the system header files may not declare malloc, realloc,
946# and free.  There are places where gas needs these functions to have been
947# declared -- such as when taking their addresses.
948gas_test_headers="
949#ifdef HAVE_MEMORY_H
950#include <memory.h>
951#endif
952#ifdef HAVE_STRING_H
953#include <string.h>
954#else
955#ifdef HAVE_STRINGS_H
956#include <strings.h>
957#endif
958#endif
959#ifdef HAVE_STDLIB_H
960#include <stdlib.h>
961#endif
962#ifdef HAVE_UNISTD_H
963#include <unistd.h>
964#endif
965"
966
967# Does errno.h declare errno, or do we have to add a separate declaration
968# for it?
969GAS_CHECK_DECL_NEEDED(errno, f, int f, [
970#ifdef HAVE_ERRNO_H
971#include <errno.h>
972#endif
973])
974
975AC_MSG_CHECKING(for a known getopt prototype in unistd.h)
976AC_CACHE_VAL(gas_cv_decl_getopt_unistd_h,
977[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <unistd.h>], [extern int getopt (int, char *const*, const char *);])],
978gas_cv_decl_getopt_unistd_h=yes, gas_cv_decl_getopt_unistd_h=no)])
979AC_MSG_RESULT($gas_cv_decl_getopt_unistd_h)
980if test $gas_cv_decl_getopt_unistd_h = yes; then
981  AC_DEFINE([HAVE_DECL_GETOPT], 1,
982	    [Is the prototype for getopt in <unistd.h> in the expected format?])
983fi
984
985GAS_CHECK_DECL_NEEDED(environ, f, char **f, $gas_test_headers)
986GAS_CHECK_DECL_NEEDED(ffs, f, int (*f)(int), $gas_test_headers)
987GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
988GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
989GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
990GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
991
992AC_CHECK_DECLS([free, getenv, malloc, mempcpy, realloc, stpcpy, strstr, vsnprintf, asprintf])
993
994BFD_BINARY_FOPEN
995
996# Link in zlib if we can.  This allows us to write compressed debug sections.
997AM_ZLIB
998
999# Support for VMS timestamps via cross compile
1000
1001if test "$ac_cv_header_time_h" = yes; then
1002  GAS_HAVE_TIME_TYPE_MEMBER(struct tm, tm_gmtoff)
1003fi
1004
1005if test "$ac_cv_header_sys_stat_h" = yes; then
1006    GAS_HAVE_SYS_STAT_TYPE_MEMBER(struct stat, st_mtim, tv_sec)
1007    GAS_HAVE_SYS_STAT_TYPE_MEMBER(struct stat, st_mtim, tv_nsec)
1008fi
1009
1010
1011dnl Required for html, pdf, install-pdf and install-html targets.
1012AC_SUBST(datarootdir)
1013AC_SUBST(docdir)
1014AC_SUBST(htmldir)
1015AC_SUBST(pdfdir)
1016
1017dnl This must come last.
1018
1019dnl We used to make symlinks to files in the source directory, but now
1020dnl we just use the right name for .c files, and create .h files in
1021dnl the build directory which include the right .h file.  Make sure
1022dnl the old symlinks don't exist, so that a reconfigure in an existing
1023dnl directory behaves reasonably.
1024
1025AC_CONFIG_FILES(Makefile doc/Makefile po/Makefile.in:po/Make-in)
1026AC_CONFIG_COMMANDS([default],
1027[rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
1028 echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
1029 echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
1030 echo '#include "te-'"${te_file}"'.h"' > targ-env.h
1031 echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
1032 if test "x$cgen_cpu_prefix" != x ; then
1033   echo '#include "opcodes/'"${cgen_cpu_prefix}"'-desc.h"' > cgen-desc.h
1034 fi],
1035[target_cpu_type=${target_cpu_type}
1036 cgen_cpu_prefix=${cgen_cpu_prefix}
1037 obj_format=${obj_format}
1038 te_file=${te_file}])
1039
1040AC_OUTPUT
1041