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