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