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