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