1 dnl Process this file with autoconf to produce a configure script.
3 dnl And be careful when changing it! If you must add tests with square
4 dnl brackets, be sure changequote invocations surround it.
7 dnl v2.5 needed for --bindir et al
13 AM_INIT_AUTOMAKE(gas, 2.9.1)
18 AC_ARG_ENABLE(bfd-assembler,
19 [ --enable-bfd-assembler use BFD back end for writing object files],
20 [case "${enableval}" in
21 yes) need_bfd=yes user_bfd_gas=yes ;;
22 no) user_bfd_gas=no ;;
23 *) AC_MSG_ERROR(bad value ${enableval} given for bfd-assembler option) ;;
25 AC_ARG_ENABLE(targets,
26 [ targets alternative target configurations besides the primary],
27 [case "${enableval}" in
28 yes | "") AC_ERROR(enable-targets option must specify target names or 'all')
30 no) enable_targets= ;;
31 *) enable_targets=$enableval ;;
33 AC_ARG_ENABLE(commonbfdlib,
34 [ --enable-commonbfdlib build shared BFD/opcodes/libiberty library],
35 [case "${enableval}" in
36 yes) commonbfdlib=true ;;
37 no) commonbfdlib=false ;;
38 *) AC_MSG_ERROR([bad value ${enableval} for BFD commonbfdlib option]) ;;
41 # Generate a header file
42 AM_CONFIG_HEADER(config.h:config.in)
47 if test -n "$enable_targets" ; then
48 for t in `echo $enable_targets | sed 's/,/ /g'`; do
49 result=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $t 2>/dev/null`
50 if test -n "$result" ; then
51 canon_targets="$canon_targets $result"
53 # # Permit "all", etc. We don't support it yet though.
54 # canon_targets="$canon_targets $t"
57 GAS_UNIQ(canon_targets)
62 for this_target in $target $canon_targets ; do
65 eval `echo $this_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/cpu=\1 vendor=\2 os=\3/'`
68 # check for architecture variants
72 alpha*) cpu_type=alpha ;;
73 armeb) cpu_type=arm endian=big ;;
74 arm*) cpu_type=arm endian=little ;;
75 thumb*) cpu_type=arm endian=little ;;
76 hppa*) cpu_type=hppa ;;
78 i[456]86) cpu_type=i386 ;;
79 m680[012346]0) cpu_type=m68k ;;
80 m68008) cpu_type=m68k ;;
81 m683??) cpu_type=m68k ;;
84 mips*el) cpu_type=mips endian=little ;;
85 mips*) cpu_type=mips endian=big ;;
86 powerpcle*) cpu_type=ppc endian=little ;;
87 powerpc*) cpu_type=ppc endian=big ;;
88 rs6000*) cpu_type=ppc ;;
89 sparclite*) cpu_type=sparc arch=sparclite ;;
90 sparclet*) cpu_type=sparc arch=sparclet ;;
91 sparc64*) cpu_type=sparc arch=v9-64 ;;
92 sparc*) cpu_type=sparc arch=sparclite ;; # ??? See tc-sparc.c.
93 v850*) cpu_type=v850 ;;
97 if test ${this_target} = $target ; then
98 target_cpu_type=${cpu_type}
99 if test x${endian} = xbig; then
100 AC_DEFINE(TARGET_BYTES_BIG_ENDIAN, 1)
101 elif test x${endian} = xlittle; then
102 AC_DEFINE(TARGET_BYTES_BIG_ENDIAN, 0)
104 elif test ${target_cpu_type} != ${cpu_type} ; then
108 generic_target=${cpu_type}-$vendor-$os
113 # assign object format
114 case ${generic_target} in
115 a29k-*-coff) fmt=coff ;;
116 a29k-amd-udi) fmt=coff ;;
117 a29k-amd-ebmon) fmt=coff ;;
118 a29k-nyu-sym1) fmt=coff ;;
119 a29k-*-vxworks*) fmt=coff ;;
121 alpha*-*-*vms*) fmt=evax ;;
122 alpha*-*-netware*) fmt=ecoff ;;
123 alpha*-*-openbsd*) fmt=ecoff ;;
124 alpha*-*-osf*) fmt=ecoff ;;
125 alpha*-*-linuxecoff*) fmt=ecoff ;;
126 alpha*-*-linux-gnu*) fmt=elf em=linux ;;
127 alpha*-*-netbsd*) fmt=elf em=nbsd ;;
129 arc-*-elf*) fmt=elf bfd_gas=yes ;;
131 arm-*-riscix*) fmt=aout em=riscix ;;
132 arm-*-aout) fmt=aout ;;
133 arm-*-coff | thumb-*-coff) fmt=coff ;;
134 arm-*-riscix*) fmt=aout ;;
135 arm-*-pe | thumb-*-pe) fmt=coff em=pe ;;
137 d10v-*-*) fmt=elf bfd_gas=yes ;;
139 hppa-*-*elf*) fmt=elf em=hppa ;;
140 hppa-*-lites*) fmt=elf em=hppa ;;
141 hppa-*-osf*) fmt=som em=hppa ;;
142 hppa-*-rtems*) fmt=elf em=hppa ;;
143 hppa-*-hpux*) fmt=som em=hppa ;;
144 hppa-*-bsd*) fmt=som em=hppa ;;
145 hppa-*-hiux*) fmt=som em=hppa ;;
147 h8300-*-coff) fmt=coff ;;
149 i386-ibm-aix*) fmt=coff em=i386aix ;;
150 i386-sequent-bsd*) fmt=aout em=dynix bfd_gas=yes ;;
151 i386-*-bsd*) fmt=aout em=386bsd ;;
152 i386-*-netbsd0.8) fmt=aout em=386bsd ;;
153 i386-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes;;
154 i386-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes;;
155 i386-*-linux*aout* | i386-*-linuxoldld) fmt=aout em=linux ;;
156 i386-*-linux*coff*) fmt=coff em=linux ;;
157 i386-*-linux-gnu*) fmt=elf em=linux ;;
158 i386-*-lynxos*) fmt=coff em=lynx ;;
159 i386-*-sysv4* | i386-*-solaris* | i386-*-elf)
161 i386-*-freebsdelf*) fmt=elf em=freebsd;;
162 i386-*-freebsd*) fmt=aout em=freebsd bfd_gas=yes ;;
163 i386-*-coff | i386-*-sysv* | i386-*-sco3.2v5*coff | i386-*-isc*)
165 i386-*-sco3.2v5*) fmt=elf
166 if test ${this_target} = $target; then
170 i386-*-sco3.2*) fmt=coff ;;
171 i386-*-vsta) fmt=aout ;;
172 i386-*-msdosdjgpp* | i386-*-go32* | i386-go32-rtems*)
174 i386-*-rtems*) fmt=coff ;;
175 i386-*-gnu*) fmt=elf ;;
177 fmt=aout em=mach bfd_gas=yes ;;
178 i386-*-msdos*) fmt=aout ;;
179 i386-*-moss*) fmt=elf ;;
180 i386-*-pe) fmt=coff em=pe ;;
181 i386-*-cygwin32*) fmt=coff em=pe bfd_gas=yes ;;
182 i386-*-mingw32*) fmt=coff em=pe bfd_gas=yes ;;
183 i386-*-*nt*) fmt=coff em=pe ;;
184 i960-*-bout) fmt=bout ;;
185 i960-*-coff) fmt=coff em=ic960 ;;
186 i960-*-rtems*) fmt=coff em=ic960 ;;
187 i960-*-nindy*) fmt=bout ;;
188 i960-*-vxworks4*) fmt=bout ;;
189 i960-*-vxworks5.0) fmt=bout ;;
190 i960-*-vxworks5.*) fmt=coff em=ic960 ;;
191 i960-*-vxworks*) fmt=bout ;;
193 m32r-*-*) fmt=elf bfd_gas=yes ;;
195 m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*)
197 m68k-motorola-sysv*) fmt=coff em=delta ;;
198 m68k-bull-sysv3*) fmt=coff em=dpx2 ;;
199 m68k-apollo-*) fmt=coff em=apollo ;;
200 m68k-*-sysv4*) # must be before -sysv*
202 m68k-*-elf*) fmt=elf ;;
203 m68k-*-coff | m68k-*-sysv* | m68k-*-rtems*)
205 m68k-*-hpux*) fmt=hp300 em=hp300 ;;
206 m68k-*-linux*aout*) fmt=aout em=linux ;;
207 m68k-*-linux-gnu*) fmt=elf em=linux ;;
208 m68k-*-lynxos*) fmt=coff em=lynx ;;
209 m68k-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
210 m68k-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
211 m68k-apple-aux*) fmt=coff em=aux ;;
212 m68k-*-psos*) fmt=elf em=psos;;
214 m88k-motorola-sysv3*) fmt=coff em=delt88 ;;
215 m88k-*-coff*) fmt=coff ;;
217 # don't change em like *-*-bsd does
218 mips-dec-netbsd*) fmt=elf endian=little ;;
219 mips-dec-openbsd*) fmt=elf endian=little ;;
220 mips-dec-bsd*) fmt=aout ;;
221 mips-sony-bsd*) fmt=ecoff ;;
222 mips-*-bsd*) AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.) ;;
223 mips-*-ultrix*) fmt=ecoff endian=little ;;
224 mips-*-osf*) fmt=ecoff endian=little ;;
225 mips-*-ecoff*) fmt=ecoff ;;
226 mips-*-ecoff*) fmt=ecoff ;;
227 mips-*-irix6*) fmt=elf ;;
228 mips-*-irix5*) fmt=elf ;;
229 mips-*-irix*) fmt=ecoff ;;
230 mips-*-lnews*) fmt=ecoff em=lnews ;;
231 mips-*-riscos*) fmt=ecoff ;;
232 mips-*-sysv*) fmt=ecoff ;;
233 mips-*-elf* | mips-*-rtems* | mips-*-linux-gnu* | mips-*-gnu* | mips-*-openbsd*)
235 mn10200-*-*) fmt=elf bfd_gas=yes ;;
236 mn10300-*-*) fmt=elf bfd_gas=yes ;;
237 ppc-*-pe | ppc-*-cygwin32 | ppc-*-winnt*)
239 ppc-*-aix*) fmt=coff ;;
240 ppc-*-beos*) fmt=coff ;;
241 ppc-*-*bsd* | ppc-*-elf* | ppc-*-eabi* | ppc-*-sysv4*)
243 ppc-*-linux-gnu*) fmt=elf
246 *) AC_MSG_ERROR(GNU/Linux must be configured big endian) ;;
249 ppc-*-solaris*) fmt=elf
250 if test ${this_target} = $target; then
251 AC_DEFINE(TARGET_SOLARIS_COMMENT)
253 if test x${endian} = xbig; then
254 AC_MSG_ERROR(Solaris must be configured little endian)
257 ppc-*-rtems*) fmt=elf ;;
258 ppc-*-macos* | ppc-*-mpw*)
260 ppc-*-netware*) fmt=elf em=ppcnw ;;
262 sh-*-elf*) fmt=elf ;;
263 sh-*-coff*) fmt=coff ;;
264 sh-*-rtems*) fmt=coff ;;
266 ns32k-pc532-mach* | ns32k-pc532-ux*) fmt=aout em=pc532mach ;;
267 ns32k-pc532-netbsd* | ns32k-pc532-lites*) fmt=aout em=nbsd532 ;;
268 ns32k-pc532-openbsd*) fmt=aout em=nbsd532 ;;
270 sparc-*-rtems*) fmt=aout ;;
271 sparc-*-sunos4*) fmt=aout em=sun3 ;;
272 sparc-*-aout | sparc*-*-vxworks*)
273 fmt=aout em=sparcaout ;;
274 sparc-*-coff) fmt=coff ;;
275 sparc-*-linux*aout*) fmt=aout em=linux ;;
276 sparc-*-linux-gnu*) fmt=elf em=linux ;;
277 sparc-*-lynxos*) fmt=coff em=lynx ;;
278 sparc-fujitsu-none) fmt=aout ;;
279 sparc-*-elf | sparc-*-sysv4* | sparc-*-solaris*)
281 sparc-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
282 sparc-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
284 tic30-*-*aout*) fmt=aout bfd_gas=yes ;;
285 tic30-*-*coff*) fmt=coff bfd_gas=yes ;;
288 v850-*-*) fmt=elf bfd_gas=yes ;;
290 vax-*-bsd* | vax-*-ultrix*)
292 vax-*-vms) fmt=vms ;;
294 z8k-*-coff | z8k-*-sim)
299 *-*-aout | *-*-scout)
305 *-*-generic) fmt=generic ;;
306 *-*-xray | *-*-hms) fmt=coff ;;
308 *-*-elf | *-*-sysv4* | *-*-solaris*)
309 AC_MSG_WARN(GAS support for ${generic_target} is incomplete.)
311 *-*-vxworks) fmt=aout ;;
312 *-*-netware) fmt=elf ;;
315 case ${cpu_type}-${fmt} in
316 alpha*-*) bfd_gas=yes ;;
317 arm-*) bfd_gas=yes ;;
319 # i386-aout) bfd_gas=preferred ;;
320 mips-*) bfd_gas=yes ;;
321 ns32k-*) bfd_gas=yes ;;
322 ppc-*) bfd_gas=yes ;;
323 sparc-*) bfd_gas=yes ;;
324 *-elf) bfd_gas=yes ;;
325 *-ecoff) bfd_gas=yes ;;
326 *-som) bfd_gas=yes ;;
330 # Other random stuff.
332 # do we need the opcodes library?
339 case "${enable_shared}" in
340 yes) shared_opcodes=true ;;
341 *opcodes*) shared_opcodes=true ;;
342 *) shared_opcodes=false ;;
344 if test "${shared_opcodes}" = "true"; then
345 # A shared libopcodes must be linked against libbfd.
353 case ${extra_objects} in
355 *) extra_objects="$extra_objects cgen.o"
356 AC_DEFINE(USING_CGEN)
362 case ${extra_objects} in
364 *) extra_objects="$extra_objects m68k-parse.o" ;;
369 echo ${extra_objects} | grep -s "itbl-parse.o"
370 if test $? -ne 0 ; then
371 extra_objects="$extra_objects itbl-parse.o"
374 echo ${extra_objects} | grep -s "itbl-lex.o"
375 if test $? -ne 0 ; then
376 extra_objects="$extra_objects itbl-lex.o"
379 echo ${extra_objects} | grep -s "itbl-ops.o"
380 if test $? -ne 0 ; then
381 extra_objects="$extra_objects itbl-ops.o"
386 if test $this_target = $target ; then
387 AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}")
395 # See if we really can support this configuration with the emulation code.
397 if test $this_target = $target ; then
398 primary_bfd_gas=$bfd_gas
402 if test $bfd_gas = no ; then
403 # Can't support other configurations this way.
406 elif test $bfd_gas = no ; then
407 # Can't support this configuration.
411 # From target name and format, produce a list of supported emulations.
413 case ${generic_target}-${fmt} in
414 mips-*-irix5*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
415 mips-*-linux-gnu*-*) case "$endian" in
416 big) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
417 *) emulation="mipslelf mipsbelf mipself mipslecoff mipsbecoff mipsecoff" ;;
419 mips-*-lnews*-ecoff) ;;
420 mips-*-*-ecoff) case "$endian" in
421 big) emulation="mipsbecoff mipslecoff mipsecoff" ;;
422 *) emulation="mipslecoff mipsbecoff mipsecoff" ;;
424 mips-*-*-elf) case "$endian" in
425 big) emulation="mipsbelf mipslelf mipself" ;;
426 *) emulation="mipslelf mipsbelf mipself" ;;
427 # Uncommenting the next line will turn on support for i386 COFF
428 # in any i386 ELF configuration. This probably doesn't work
430 # i386-*-*-elf) emulation="i386coff i386elf" ;;
434 emulations="$emulations $emulation"
438 # Assign floating point type. Most processors with FP support
439 # IEEE FP. On those that don't support FP at all, usually IEEE
441 case ${target_cpu} in
442 vax | tahoe ) atof=${target_cpu} ;;
446 case "${obj_format}" in
447 "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
451 dnl Make sure the desired support files exist.
454 if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
455 AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
458 if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
459 AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
462 case ${user_bfd_gas}-${primary_bfd_gas} in
464 # We didn't override user's choice.
467 AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
479 # User specified nothing.
483 # Some COFF configurations want these random other flags set.
484 case ${obj_format} in
486 case ${target_cpu_type} in
487 i386) AC_DEFINE(I386COFF) ;;
488 m68k) AC_DEFINE(M68KCOFF) ;;
489 m88k) AC_DEFINE(M88KCOFF) ;;
494 # Getting this done right is going to be a bitch. Each configuration specified
495 # with --enable-targets=... should be checked for environment, format, cpu, and
498 # For each configuration, the necessary object file support code must be linked
499 # in. This might be only one, it might be up to four. The necessary emulation
500 # code needs to be provided, too.
502 # And then there's "--enable-targets=all"....
504 # For now, just always do it for MIPS ELF or ECOFF configurations. Sigh.
506 formats="${obj_format}"
510 for em in . $emulations ; do
514 fmt=elf file=mipself ;;
515 mipsbecoff | mipslecoff)
516 fmt=ecoff file=mipsecoff ;;
518 fmt=coff file=i386coff ;;
520 fmt=elf file=i386elf ;;
522 formats="$formats $fmt"
523 emfiles="$emfiles e-$file.o"
524 EMULATIONS="$EMULATIONS &$em,"
528 if test `set . $formats ; shift ; echo $#` -gt 1 ; then
529 for fmt in $formats ; do
531 aout) AC_DEFINE(OBJ_MAYBE_AOUT) ;;
532 bout) AC_DEFINE(OBJ_MAYBE_BOUT) ;;
533 coff) AC_DEFINE(OBJ_MAYBE_COFF) ;;
534 ecoff) AC_DEFINE(OBJ_MAYBE_ECOFF) ;;
535 elf) AC_DEFINE(OBJ_MAYBE_ELF) ;;
536 generic) AC_DEFINE(OBJ_MAYBE_GENERIC) ;;
537 hp300) AC_DEFINE(OBJ_MAYBE_HP300) ;;
538 ieee) AC_DEFINE(OBJ_MAYBE_IEEE) ;;
539 som) AC_DEFINE(OBJ_MAYBE_SOM) ;;
540 vms) AC_DEFINE(OBJ_MAYBE_VMS) ;;
542 extra_objects="$extra_objects obj-$fmt.o"
546 if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
548 extra_objects="$extra_objects $emfiles"
549 DEFAULT_EMULATION=`set . $emulations ; echo $2`
550 AC_DEFINE(USE_EMULATIONS)
552 AC_SUBST(extra_objects)
553 AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS)
554 AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION")
556 case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
557 yes-*-coff) need_bfd=yes ;;
558 no-*-coff) need_bfd=yes
559 AC_DEFINE(MANY_SEGMENTS) ;;
562 reject_dev_configs=yes
564 case ${reject_dev_configs}-${dev} in
566 AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
570 AC_SUBST(target_cpu_type)
574 dnl AC_SUBST(emulation)
576 case "${primary_bfd_gas}" in
577 yes) AC_DEFINE(BFD_ASSEMBLER)
581 # do we need the opcodes library?
582 case "${need_opcodes}" in
584 OPCODES_LIB=../opcodes/libopcodes.la
588 case "${need_bfd}" in
590 BFDLIB=../bfd/libbfd.la
591 ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h"
596 AC_SUBST(OPCODES_LIB)
598 AC_SUBST(ALL_OBJ_DEPS)
600 AC_DEFINE_UNQUOTED(TARGET_ALIAS, "${target_alias}")
601 AC_DEFINE_UNQUOTED(TARGET_CANONICAL, "${target}")
602 AC_DEFINE_UNQUOTED(TARGET_CPU, "${target_cpu}")
603 AC_DEFINE_UNQUOTED(TARGET_VENDOR, "${target_vendor}")
604 AC_DEFINE_UNQUOTED(TARGET_OS, "${target_os}")
616 AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
618 # Put this here so that autoconf's "cross-compiling" message doesn't confuse
619 # people who are not cross-compiling but are compiling cross-assemblers.
620 AC_MSG_CHECKING(whether compiling a cross-assembler)
621 if test "${host}" = "${target}"; then
625 AC_DEFINE(CROSS_COMPILE)
627 AC_MSG_RESULT($cross_gas)
629 dnl ansidecl.h will deal with const
634 # VMS doesn't have unlink.
635 AC_CHECK_FUNCS(unlink remove, break)
637 # Some systems don't have sbrk().
640 # Some non-ANSI preprocessors botch requoting inside strings. That's bad
641 # enough, but on some of those systems, the assert macro relies on requoting
645 # On some systems, the system header files may not declare malloc, realloc,
646 # and free. There are places where gas needs these functions to have been
647 # declared -- such as when taking their addresses.
655 #ifdef HAVE_STRINGS_H
666 GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
667 GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
668 GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
669 GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
671 # Does errno.h declare errno, or do we have to add a separate declaration
673 GAS_CHECK_DECL_NEEDED(errno, f, int f, [
679 dnl This must come last.
681 dnl We used to make symlinks to files in the source directory, but now
682 dnl we just use the right name for .c files, and create .h files in
683 dnl the build directory which include the right .h file. Make sure
684 dnl the old symlinks don't exist, so that a reconfigure in an existing
685 dnl directory behaves reasonably.
687 AC_OUTPUT(Makefile doc/Makefile .gdbinit:gdbinit.in,
688 [rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
689 echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
690 echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
691 echo '#include "te-'"${te_file}"'.h"' > targ-env.h
692 echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
693 case ${target_cpu_type} in
694 m32r) echo '#include "opcodes/'"${target_cpu_type}"'-opc.h"' > cgen-opc.h ;;
696 [target_cpu_type=${target_cpu_type}
697 obj_format=${obj_format}