configure.ac revision 1.5
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-2018 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* \
349	  | mips64*-kfreebsd*-gnu | mips64*-ps2-elf*)
350	    mips_default_abi=N32_ABI
351	    ;;
352	  mips*-linux* | mips*-freebsd* | mips*-kfreebsd*-gnu)
353	    mips_default_abi=O32_ABI
354	    ;;
355	  mips64*-openbsd*)
356	    mips_default_abi=N64_ABI
357	    ;;
358	  *)
359	    mips_default_abi=NO_ABI
360	    ;;
361	esac
362	AC_DEFINE_UNQUOTED(MIPS_CPU_STRING_DEFAULT, "$mips_cpu",
363			   [Default CPU for MIPS targets. ])
364	AC_DEFINE_UNQUOTED(USE_E_MIPS_ABI_O32, $use_e_mips_abi_o32,
365			   [Allow use of E_MIPS_ABI_O32 on MIPS targets. ])
366	AC_DEFINE_UNQUOTED(MIPS_DEFAULT_64BIT, $mips_default_64bit,
367			   [Generate 64-bit code by default on MIPS targets. ])
368	AC_DEFINE_UNQUOTED(MIPS_DEFAULT_ABI, $mips_default_abi,
369			   [Choose a default ABI for MIPS targets. ])
370	;;
371    esac
372
373    # Do we need the opcodes library?
374    case ${cpu_type} in
375      vax | tic30)
376	;;
377
378      *)
379	need_opcodes=yes
380
381	case "${enable_shared}" in
382	yes) shared_opcodes=true ;;
383	*opcodes*) shared_opcodes=true ;;
384	*) shared_opcodes=false ;;
385	esac
386	;;
387    esac
388
389    # Any other special object files needed ?
390    case ${cpu_type} in
391
392      bfin)
393        echo ${extra_objects} | grep -s "bfin-parse.o"
394        if test $? -ne 0 ; then
395          extra_objects="$extra_objects bfin-parse.o"
396        fi
397
398        echo ${extra_objects} | grep -s "bfin-lex-wrapper.o"
399        if test $? -ne 0 ; then
400          extra_objects="$extra_objects bfin-lex-wrapper.o"
401        fi
402        ;;
403
404      epiphany | fr30 | ip2k | iq2000 | lm32 | m32r | or1k)
405	using_cgen=yes
406	;;
407
408      m32c)
409	using_cgen=yes
410	;;
411      frv)
412	using_cgen=yes
413	;;
414      m68k)
415	case ${extra_objects} in
416	*m68k-parse.o*) ;;
417	*) extra_objects="$extra_objects m68k-parse.o" ;;
418	esac
419	;;
420
421      mep)
422	using_cgen=yes
423	;;
424
425      mips)
426	echo ${extra_objects} | grep -s "itbl-parse.o"
427	if test $? -ne 0 ; then
428	  extra_objects="$extra_objects itbl-parse.o"
429	fi
430
431	echo ${extra_objects} | grep -s "itbl-lex-wrapper.o"
432	if test $? -ne 0 ; then
433	  extra_objects="$extra_objects itbl-lex-wrapper.o"
434	fi
435
436	echo ${extra_objects} | grep -s "itbl-ops.o"
437	if test $? -ne 0 ; then
438	  extra_objects="$extra_objects itbl-ops.o"
439	fi
440	;;
441
442      mt)
443        using_cgen=yes
444	;;
445
446      nds32)
447        # Decide BASELINE, REDUCED_REGS, FPU_DP_EXT, FPU_SP_EXT features
448	# based on arch_name.
449	AC_MSG_CHECKING(for default configuration of --with-arch)
450	if test "x${with_arch}" != x; then
451	  case ${with_arch} in
452            v2j | v2s | v2f | v2 | v3m | v3j | v3s | v3f | v3 )
453	      AC_DEFINE_UNQUOTED(NDS32_DEFAULT_ARCH_NAME, "$with_arch",
454				 [Define value for nds32_arch_name])
455              ;;
456	    *)
457	      AC_MSG_ERROR(This kind of arch name does *NOT* exist!)
458	      ;;
459          esac
460	fi
461	AC_MSG_RESULT($with_arch)
462
463        # Decide features one by one.
464        AC_MSG_CHECKING(for default configuration of --enable-dx-regs)
465	if test "x${enable_dx_regs}" = xyes; then
466	  AC_DEFINE(NDS32_DEFAULT_DX_REGS, 1,
467		    [Define value for nds32_dx_regs])
468	else
469	  AC_DEFINE(NDS32_DEFAULT_DX_REGS, 0,
470		    [Define default value for nds32_dx_regs])
471	fi
472	AC_MSG_RESULT($enable_dx_regs)
473
474        AC_MSG_CHECKING(for default configuration of --enable-perf-ext)
475	if test "x${enable_perf_ext}" = xno; then
476	  AC_DEFINE(NDS32_DEFAULT_PERF_EXT, 0,
477		    [Define value for nds32_perf_ext])
478	else
479	  AC_DEFINE(NDS32_DEFAULT_PERF_EXT, 1,
480		    [Define default value for nds32_perf_ext])
481	fi
482	AC_MSG_RESULT($enable_perf_ext)
483
484        AC_MSG_CHECKING(for default configuration of --enable-perf-ext2)
485	if test "x${enable_perf_ext2}" = xno; then
486	  AC_DEFINE(NDS32_DEFAULT_PERF_EXT2, 0,
487		    [Define value for nds32_perf_ext2])
488	else
489	  AC_DEFINE(NDS32_DEFAULT_PERF_EXT2, 1,
490		    [Define default value for nds32_perf_ext2])
491	fi
492	AC_MSG_RESULT($enable_perf_ext2)
493
494        AC_MSG_CHECKING(for default configuration of --enable-string-ext)
495	if test "x${enable_string_ext}" = xno; then
496	  AC_DEFINE(NDS32_DEFAULT_STRING_EXT, 0,
497		    [Define value for nds32_string_ext])
498	else
499	  AC_DEFINE(NDS32_DEFAULT_STRING_EXT, 1,
500		    [Define default value for nds32_string_ext])
501	fi
502	AC_MSG_RESULT($enable_string_ext)
503
504        AC_MSG_CHECKING(for default configuration of --enable-audio-ext)
505	if test "x${enable_audio_ext}" = xno; then
506	  AC_DEFINE(NDS32_DEFAULT_AUDIO_EXT, 0,
507		    [Define value for nds32_audio_ext])
508	else
509	  AC_DEFINE(NDS32_DEFAULT_AUDIO_EXT, 1,
510		    [Define default value for nds32_audio_ext])
511	fi
512	AC_MSG_RESULT($enable_audio_ext)
513	;;
514
515      aarch64 | i386 | riscv | s390 | sparc)
516	if test $this_target = $target ; then
517	  AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
518	fi
519	;;
520
521      rl78)
522        echo ${extra_objects} | grep -s "rl78-parse.o"
523        if test $? -ne 0 ; then
524          extra_objects="$extra_objects rl78-parse.o"
525        fi
526	;;
527
528      rx)
529        echo ${extra_objects} | grep -s "rx-parse.o"
530        if test $? -ne 0 ; then
531          extra_objects="$extra_objects rx-parse.o"
532        fi
533	;;
534
535      xstormy16)
536	using_cgen=yes
537	;;
538
539      xc16x)
540	using_cgen=yes
541	;;
542
543      xtensa)
544	echo ${extra_objects} | grep -s "xtensa-relax.o"
545	if test $? -ne 0 ; then
546	  extra_objects="$extra_objects xtensa-relax.o"
547	fi
548	;;
549
550      *)
551	;;
552    esac
553
554    if test $using_cgen = yes ; then
555	case "x${extra_objects}" in
556	*cgen.o*) ;;
557	*) extra_objects="$extra_objects cgen.o" ;;
558	esac
559    fi
560
561# See if we really can support this configuration with the emulation code.
562
563    if test $this_target = $target ; then
564      obj_format=$fmt
565      te_file=$em
566    fi
567
568   case ${te_file} in
569      vms) extra_objects="$extra_objects te-vms.o" ;;
570   esac
571
572# From target name and format, produce a list of supported emulations.
573
574    case ${generic_target}-${fmt} in
575      mips-*-*-*)	case "$endian" in
576			big)	emulation="mipsbelf mipslelf mipself" ;;
577			*)	emulation="mipslelf mipsbelf mipself" ;;
578			esac ;;
579      # i386-pc-pe-coff != i386-pc-coff.
580      i386-*-pe-coff)	;;
581      # Uncommenting the next line will turn on support for i386 AOUT
582      # for the default linux configuration
583      # i386-*-linux*-elf) emulation="i386elf i386aout" ;;
584      #
585      i386-*-aout)	emulation="i386aout" ;;
586      i386-*-coff)	emulation="i386coff" ;;
587      i386-*-elf)	emulation="i386elf" ;;
588
589      # Always all formats.  The first stated emulation becomes the default.
590      cris-*-*aout*)	emulation="crisaout criself" ;;
591      cris-*-*)		emulation="criself crisaout" ;;
592    esac
593
594    emulations="$emulations $emulation"
595
596done
597
598if test ${ac_default_x86_relax_relocations} = unset; then
599  ac_default_x86_relax_relocations=1
600fi
601AC_DEFINE_UNQUOTED(DEFAULT_GENERATE_X86_RELAX_RELOCATIONS,
602  $ac_default_x86_relax_relocations,
603  [Define to 1 if you want to generate x86 relax relocations by default.])
604
605if test ${ac_default_elf_stt_common} = unset; then
606  ac_default_elf_stt_common=0
607fi
608AC_DEFINE_UNQUOTED(DEFAULT_GENERATE_ELF_STT_COMMON,
609  $ac_default_elf_stt_common,
610  [Define to 1 if you want to generate ELF common symbols with the
611   STT_COMMON type by default.])
612
613if test x$ac_default_compressed_debug_sections = xyes ; then
614  AC_DEFINE(DEFAULT_FLAG_COMPRESS_DEBUG, 1, [Define if you want compressed debug sections by default.])
615fi
616
617# Turn on all targets if possible
618if test ${all_targets} = "yes"; then
619  case ${target_cpu_type} in
620  i386)
621    case ${obj_format} in
622    aout)
623      emulations="$emulations i386coff i386elf"
624      ;;
625    coff)
626      emulations="$emulations i386aout i386elf"
627    ;;
628    elf)
629      emulations="$emulations i386aout i386coff"
630      ;;
631    esac
632  ;;
633  x86_64)
634    case ${obj_format} in
635    aout)
636      emulations="$emulations i386coff i386elf"
637      ;;
638    coff)
639      emulations="$emulations i386aout i386elf"
640    ;;
641    elf)
642      emulations="$emulations i386aout i386coff"
643      ;;
644    esac
645  ;;
646  esac
647fi
648
649# PE code has way too many macros tweaking behaviour
650case ${te_file} in
651  pe*) emulations="" ;;
652esac
653
654# Assign floating point type.  Most processors with FP support
655# IEEE FP.  On those that don't support FP at all, usually IEEE
656# is emulated.
657case ${target_cpu} in
658  vax | pdp11 )	atof=vax ;;
659  *)		atof=ieee ;;
660esac
661
662case "${obj_format}" in
663  "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
664esac
665
666# Unfortunately the cpu in cpu-opc.h file isn't always $(TARGET_CPU).
667cgen_cpu_prefix=""
668if test $using_cgen = yes ; then
669  case ${target_cpu} in
670    or1knd)
671       cgen_cpu_prefix=or1k ;;
672    *) cgen_cpu_prefix=${target_cpu} ;;
673  esac
674  AC_SUBST(cgen_cpu_prefix)
675  AC_DEFINE(USING_CGEN, 1, [Using cgen code?])
676fi
677
678dnl
679dnl Make sure the desired support files exist.
680dnl
681
682if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
683  AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
684fi
685
686if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
687  AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
688fi
689
690# Some COFF configurations want these random other flags set.
691case ${obj_format} in
692  coff)
693    case ${target_cpu_type} in
694      i386) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
695      m68k) AC_DEFINE(M68KCOFF, 1, [Using m68k COFF?]) ;;
696      m88k) AC_DEFINE(M88KCOFF, 1, [Using m88k COFF?]) ;;
697      x86_64) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
698    esac
699    ;;
700esac
701
702# Getting this done right is going to be a bitch.  Each configuration specified
703# with --enable-targets=... should be checked for environment, format, cpu
704# setting.
705#
706# For each configuration, the necessary object file support code must be linked
707# in.  This might be only one, it might be up to four.  The necessary emulation
708# code needs to be provided, too.
709#
710# And then there's "--enable-targets=all"....
711#
712# For now, just always do it for MIPS ELF configurations.  Sigh.
713
714formats="${obj_format}"
715emfiles=""
716EMULATIONS=""
717GAS_UNIQ(emulations)
718for em in . $emulations ; do
719  case $em in
720    .)	continue ;;
721    mipsbelf | mipslelf | mipself)
722	fmt=elf   file=mipself ;;
723    *coff)
724	fmt=coff  file=$em ;;
725    *aout)
726	fmt=aout file=$em ;;
727    *elf)
728	fmt=elf file=$em ;;
729  esac
730  formats="$formats $fmt"
731  emfiles="$emfiles e-$file.o"
732  EMULATIONS="$EMULATIONS &$em,"
733done
734GAS_UNIQ(formats)
735GAS_UNIQ(emfiles)
736if test `set . $formats ; shift ; echo $#` -gt 1 ; then
737  for fmt in $formats ; do
738    case $fmt in
739      aout)	AC_DEFINE(OBJ_MAYBE_AOUT, 1,    [a.out support?])   ;;
740      bout)	AC_DEFINE(OBJ_MAYBE_BOUT, 1,    [b.out support?])   ;;
741      coff)	AC_DEFINE(OBJ_MAYBE_COFF, 1,    [COFF support?])    ;;
742      ecoff)	AC_DEFINE(OBJ_MAYBE_ECOFF, 1,   [ECOFF support?])   ;;
743      elf)	AC_DEFINE(OBJ_MAYBE_ELF, 1,     [ELF support?])     ;;
744      generic)	AC_DEFINE(OBJ_MAYBE_GENERIC, 1, [generic support?]) ;;
745      som)	AC_DEFINE(OBJ_MAYBE_SOM, 1,     [SOM support?])     ;;
746    esac
747    extra_objects="$extra_objects obj-$fmt.o"
748  done
749  obj_format=multi
750fi
751if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
752  DEFAULT_EMULATION=`set . $emulations ; echo $2`
753  # e-mipself has more than one emulation per file, e-i386* has just one at the
754  # moment.  If only one emulation is specified, then don't define
755  # USE_EMULATIONS or include any of the e-files as they will only be bloat.
756  case "${obj_format}${emfiles}" in
757    multi* | *mipself*)
758      extra_objects="$extra_objects $emfiles"
759      AC_DEFINE(USE_EMULATIONS, 1, [Use emulation support?]) ;;
760  esac
761fi
762AC_SUBST(extra_objects)
763AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS, [Supported emulations.])
764AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION",
765		   [Default emulation.])
766
767reject_dev_configs=yes
768
769case ${reject_dev_configs}-${dev} in
770  yes-yes) # Oops.
771    AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
772    ;;
773esac
774
775AC_SUBST(target_cpu_type)
776AC_SUBST(obj_format)
777AC_SUBST(te_file)
778AC_SUBST(install_tooldir)
779AC_SUBST(atof)
780dnl AC_SUBST(emulation)
781
782# do we need the opcodes library?
783case "${need_opcodes}" in
784yes)
785  OPCODES_LIB=../opcodes/libopcodes.la
786  ;;
787esac
788
789AC_SUBST(OPCODES_LIB)
790
791AC_DEFINE_UNQUOTED(TARGET_ALIAS,	"${target_alias}", [Target alias.])
792AC_DEFINE_UNQUOTED(TARGET_CANONICAL,	"${target}",       [Canonical target.])
793AC_DEFINE_UNQUOTED(TARGET_CPU,		"${target_cpu}",   [Target CPU.])
794AC_DEFINE_UNQUOTED(TARGET_VENDOR,	"${target_vendor}", [Target vendor.])
795AC_DEFINE_UNQUOTED(TARGET_OS,		"${target_os}",    [Target OS.])
796
797AC_PROG_YACC
798AM_PROG_LEX
799
800ALL_LINGUAS="fr tr es rw id ru fi ja zh_CN sv"
801ZW_GNU_GETTEXT_SISTER_DIR
802AM_PO_SUBDIRS
803
804AM_MAINTAINER_MODE
805AM_CONDITIONAL(GENINSRC_NEVER, false)
806AC_EXEEXT
807
808AC_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)
809ACX_HEADER_STRING
810
811# Put this here so that autoconf's "cross-compiling" message doesn't confuse
812# people who are not cross-compiling but are compiling cross-assemblers.
813AC_MSG_CHECKING(whether compiling a cross-assembler)
814if test "${host}" = "${target}"; then
815  cross_gas=no
816else
817  cross_gas=yes
818  AC_DEFINE(CROSS_COMPILE, 1, [Compiling cross-assembler?])
819fi
820AC_MSG_RESULT($cross_gas)
821
822dnl ansidecl.h will deal with const
823dnl AC_C_CONST
824AC_FUNC_ALLOCA
825AC_C_INLINE
826
827# VMS doesn't have unlink.
828AC_CHECK_FUNCS(unlink remove, break)
829AC_CHECK_FUNCS(sbrk setlocale)
830AC_CHECK_FUNCS(strsignal)
831
832AM_LC_MESSAGES
833
834# do we need the math library?
835case "${need_libm}" in
836yes)
837  LT_LIB_M
838  AC_SUBST(LIBM)
839  ;;
840esac
841
842# Some non-ANSI preprocessors botch requoting inside strings.  That's bad
843# enough, but on some of those systems, the assert macro relies on requoting
844# working properly!
845GAS_WORKING_ASSERT
846
847# On some systems, the system header files may not declare malloc, realloc,
848# and free.  There are places where gas needs these functions to have been
849# declared -- such as when taking their addresses.
850gas_test_headers="
851#ifdef HAVE_MEMORY_H
852#include <memory.h>
853#endif
854#ifdef HAVE_STRING_H
855#include <string.h>
856#else
857#ifdef HAVE_STRINGS_H
858#include <strings.h>
859#endif
860#endif
861#ifdef HAVE_STDLIB_H
862#include <stdlib.h>
863#endif
864#ifdef HAVE_UNISTD_H
865#include <unistd.h>
866#endif
867"
868
869# Does errno.h declare errno, or do we have to add a separate declaration
870# for it?
871GAS_CHECK_DECL_NEEDED(errno, f, int f, [
872#ifdef HAVE_ERRNO_H
873#include <errno.h>
874#endif
875])
876
877AC_MSG_CHECKING(for a known getopt prototype in unistd.h)
878AC_CACHE_VAL(gas_cv_decl_getopt_unistd_h,
879[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <unistd.h>], [extern int getopt (int, char *const*, const char *);])],
880gas_cv_decl_getopt_unistd_h=yes, gas_cv_decl_getopt_unistd_h=no)])
881AC_MSG_RESULT($gas_cv_decl_getopt_unistd_h)
882if test $gas_cv_decl_getopt_unistd_h = yes; then
883  AC_DEFINE([HAVE_DECL_GETOPT], 1,
884	    [Is the prototype for getopt in <unistd.h> in the expected format?])
885fi
886
887GAS_CHECK_DECL_NEEDED(environ, f, char **f, $gas_test_headers)
888GAS_CHECK_DECL_NEEDED(ffs, f, int (*f)(int), $gas_test_headers)
889GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
890GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
891GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
892GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
893
894AC_CHECK_DECLS([free, getenv, malloc, mempcpy, realloc, stpcpy, strstr, vsnprintf, asprintf])
895
896BFD_BINARY_FOPEN
897
898# Link in zlib if we can.  This allows us to write compressed debug sections.
899AM_ZLIB
900
901# Support for VMS timestamps via cross compile
902
903if test "$ac_cv_header_time_h" = yes; then
904  GAS_HAVE_TIME_TYPE_MEMBER(struct tm, tm_gmtoff)
905fi
906
907if test "$ac_cv_header_sys_stat_h" = yes; then
908    GAS_HAVE_SYS_STAT_TYPE_MEMBER(struct stat, st_mtim, tv_sec)
909    GAS_HAVE_SYS_STAT_TYPE_MEMBER(struct stat, st_mtim, tv_nsec)
910fi
911
912
913dnl Required for html, pdf, install-pdf and install-html targets.
914AC_SUBST(datarootdir)
915AC_SUBST(docdir)
916AC_SUBST(htmldir)
917AC_SUBST(pdfdir)
918
919dnl This must come last.
920
921dnl We used to make symlinks to files in the source directory, but now
922dnl we just use the right name for .c files, and create .h files in
923dnl the build directory which include the right .h file.  Make sure
924dnl the old symlinks don't exist, so that a reconfigure in an existing
925dnl directory behaves reasonably.
926
927AC_CONFIG_FILES(Makefile doc/Makefile po/Makefile.in:po/Make-in)
928AC_CONFIG_COMMANDS([default],
929[rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
930 echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
931 echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
932 echo '#include "te-'"${te_file}"'.h"' > targ-env.h
933 echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
934 if test "x$cgen_cpu_prefix" != x ; then
935   echo '#include "opcodes/'"${cgen_cpu_prefix}"'-desc.h"' > cgen-desc.h
936 fi],
937[target_cpu_type=${target_cpu_type}
938 cgen_cpu_prefix=${cgen_cpu_prefix}
939 obj_format=${obj_format}
940 te_file=${te_file}])
941
942AC_OUTPUT
943