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