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