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.8.2)
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
71 armeb) cpu_type=arm endian=big ;;
72 arm*) cpu_type=arm endian=little ;;
73 thumb*) cpu_type=arm endian=little ;;
74 hppa*) cpu_type=hppa ;;
76 i[456]86) cpu_type=i386 ;;
77 m680[012346]0) cpu_type=m68k ;;
78 m68008) cpu_type=m68k ;;
79 m683??) cpu_type=m68k ;;
82 mips*el) cpu_type=mips endian=little ;;
83 mips*5900*) cpu_type=mips endian=little ;;
84 mips*) cpu_type=mips endian=big ;;
85 powerpcle*) cpu_type=ppc endian=little ;;
86 powerpc*) cpu_type=ppc endian=big ;;
87 rs6000*) cpu_type=ppc ;;
88 sparc64) cpu_type=sparc want_sparc_v9=true ;;
89 sparc*) cpu_type=sparc ;;
90 v850*) cpu_type=v850 ;;
94 if test ${this_target} = $target ; then
95 target_cpu_type=${cpu_type}
96 if test x${endian} = xbig; then
97 AC_DEFINE(TARGET_BYTES_BIG_ENDIAN, 1)
98 elif test x${endian} = xlittle; then
99 AC_DEFINE(TARGET_BYTES_BIG_ENDIAN, 0)
101 elif test ${target_cpu_type} != ${cpu_type} ; then
105 generic_target=${cpu_type}-$vendor-$os
110 # assign object format
111 case ${generic_target} in
112 a29k-*-coff) fmt=coff ;;
113 a29k-amd-udi) fmt=coff ;;
114 a29k-amd-ebmon) fmt=coff ;;
115 a29k-nyu-sym1) fmt=coff ;;
116 a29k-*-vxworks*) fmt=coff ;;
118 alpha-*-*vms*) fmt=evax ;;
119 alpha-*-netware*) fmt=ecoff ;;
120 alpha-*-openbsd*) fmt=ecoff ;;
121 alpha-*-osf*) fmt=ecoff ;;
122 alpha-*-linuxecoff*) fmt=ecoff ;;
123 alpha-*-linux*) fmt=elf em=linux ;;
125 arc-*-elf*) fmt=elf bfd_gas=yes ;;
127 arm-*-riscix*) fmt=aout em=riscix ;;
128 arm-*-aout) fmt=aout ;;
129 arm-*-coff | thumb-*-coff) fmt=coff ;;
130 arm-*-riscix*) fmt=aout ;;
131 arm-*-pe) fmt=coff em=pe ;;
133 d10v-*-*) fmt=elf bfd_gas=yes ;;
134 # start-sanitize-d30v
135 d30v-*-*) fmt=elf bfd_gas=yes ;;
138 hppa-*-*elf*) fmt=elf em=hppa ;;
139 hppa-*-lites*) fmt=elf em=hppa ;;
140 hppa-*-osf*) fmt=som em=hppa ;;
141 hppa-*-rtems*) fmt=elf em=hppa ;;
142 hppa-*-hpux*) fmt=som em=hppa ;;
143 hppa-*-bsd*) fmt=som em=hppa ;;
144 hppa-*-hiux*) fmt=som em=hppa ;;
146 h8300-*-coff) fmt=coff ;;
148 i386-ibm-aix*) fmt=coff em=i386aix ;;
149 i386-sequent-bsd*) fmt=aout em=dynix bfd_gas=yes ;;
150 i386-*-bsd*) fmt=aout em=386bsd ;;
151 i386-*-netbsd0.8) fmt=aout em=386bsd ;;
152 i386-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes;;
153 i386-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes;;
154 i386-*-linux*aout* | i386-*-linuxoldld) fmt=aout em=linux ;;
155 i386-*-linux*coff*) fmt=coff em=linux ;;
156 i386-*-linux*) fmt=elf em=linux ;;
157 i386-*-lynxos*) fmt=coff em=lynx ;;
158 i386-*-sysv4* | i386-*-solaris* | i386-*-elf | i386-*-freebsdelf*)
160 i386-*-sco*elf*) fmt=elf
161 if test ${this_target} = $target; then
165 i386-*-coff | i386-*-sysv* | i386-*-sco* | i386-*-isc*)
167 i386-*-vsta) fmt=aout ;;
168 i386-*-msdosdjgpp* | i386-*-go32*)
170 i386-*-rtems*) fmt=coff ;;
171 i386-*-gnu*) fmt=elf ;;
173 fmt=aout em=mach bfd_gas=yes ;;
174 i386-*-msdos*) fmt=aout ;;
175 i386-*-moss*) fmt=elf ;;
176 i386-*-pe) fmt=coff em=pe ;;
177 i386-*-cygwin32) fmt=coff em=pe bfd_gas=yes ;;
178 i386-*-*nt) fmt=coff em=pe ;;
179 i960-*-bout) fmt=bout ;;
180 i960-*-coff) fmt=coff em=ic960 ;;
181 i960-*-rtems*) fmt=coff em=ic960 ;;
182 i960-*-nindy*) fmt=bout ;;
183 i960-*-vxworks4*) fmt=bout ;;
184 i960-*-vxworks5.0) fmt=bout ;;
185 i960-*-vxworks5.*) fmt=coff em=ic960 ;;
186 i960-*-vxworks*) fmt=bout ;;
188 m32r-*-*) fmt=elf bfd_gas=yes ;;
190 m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*)
192 m68k-motorola-sysv*) fmt=coff em=delta ;;
193 m68k-bull-sysv3*) fmt=coff em=dpx2 ;;
194 m68k-apollo-*) fmt=coff em=apollo ;;
195 m68k-*-sysv4*) # must be before -sysv*
197 m68k-*-elf*) fmt=elf ;;
198 m68k-*-coff | m68k-*-sysv* | m68k-*-rtems*)
200 m68k-*-hpux*) fmt=hp300 em=hp300 ;;
201 m68k-*-linux*aout*) fmt=aout em=linux ;;
202 m68k-*-linux*) fmt=elf em=linux ;;
203 m68k-*-lynxos*) fmt=coff em=lynx ;;
204 m68k-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
205 m68k-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
206 m68k-apple-aux*) fmt=coff em=aux ;;
207 m68k-*-psos*) fmt=elf em=psos;;
209 m88k-motorola-sysv3*) fmt=coff em=delt88 ;;
210 m88k-*-coff*) fmt=coff ;;
212 # don't change em like *-*-bsd does
213 mips-dec-netbsd*) fmt=elf endian=little ;;
214 mips-dec-openbsd*) fmt=elf endian=little ;;
215 mips-dec-bsd*) fmt=aout ;;
216 mips-sony-bsd*) fmt=ecoff ;;
217 mips-*-bsd*) AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.) ;;
218 mips-*-ultrix*) fmt=ecoff endian=little ;;
219 mips-*-osf*) fmt=ecoff endian=little ;;
220 mips-*-ecoff*) fmt=ecoff ;;
221 mips-*-ecoff*) fmt=ecoff ;;
222 mips-*-irix6*) fmt=elf ;;
223 mips-*-irix5*) fmt=elf ;;
224 mips-*-irix*) fmt=ecoff ;;
225 mips-*-lnews*) fmt=ecoff em=lnews ;;
226 mips-*-riscos*) fmt=ecoff ;;
227 mips-*-sysv*) fmt=ecoff ;;
228 mips-*-elf* | mips-*-rtems* | mips-*-linux* | mips-*-gnu* | mips-*-openbsd*)
230 mn10200-*-*) fmt=elf bfd_gas=yes ;;
231 mn10300-*-*) fmt=elf bfd_gas=yes ;;
232 ppc-*-pe | ppc-*-cygwin32 | ppc-*-winnt*)
234 ppc-*-aix*) fmt=coff ;;
235 ppc-*-beos*) fmt=coff ;;
236 ppc-*-*bsd* | ppc-*-elf* | ppc-*-eabi* | ppc-*-sysv4*)
238 ppc-*-linux*) fmt=elf
241 *) AC_MSG_ERROR(Linux must be configured big endian) ;;
244 ppc-*-solaris*) fmt=elf
245 if test ${this_target} = $target; then
246 AC_DEFINE(TARGET_SOLARIS_COMMENT)
248 if test x${endian} = xbig; then
249 AC_MSG_ERROR(Solaris must be configured little endian)
252 ppc-*-rtems*) fmt=elf ;;
253 ppc-*-macos* | ppc-*-mpw*)
255 ppc-*-netware*) fmt=elf em=ppcnw ;;
257 sh-*-elf*) fmt=elf ;;
258 sh-*-coff*) fmt=coff ;;
260 ns32k-pc532-mach* | ns32k-pc532-ux*) fmt=aout em=pc532mach ;;
261 ns32k-pc532-netbsd* | ns32k-pc532-lites*) fmt=aout em=nbsd532 ;;
262 ns32k-pc532-openbsd*) fmt=aout em=nbsd532 ;;
264 sparc-*-rtems*) fmt=aout ;;
265 sparc-*-sunos4*) fmt=aout em=sun3 ;;
266 sparc-*-aout | sparc*-*-vxworks*)
267 fmt=aout em=sparcaout ;;
268 sparc-*-coff) fmt=coff ;;
269 sparc-*-linux*aout*) fmt=aout em=linux ;;
270 sparc-*-linux*) fmt=elf em=linux ;;
271 sparc-*-lynxos*) fmt=coff em=lynx ;;
272 sparc-fujitsu-none) fmt=aout ;;
273 sparc-*-elf | sparc-*-sysv4* | sparc-*-solaris*)
275 sparc-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
276 sparc-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
278 # start-sanitize-tic80
279 tic80-*-*) fmt=coff ;;
281 v850-*-*) fmt=elf bfd_gas=yes ;;
283 # start-sanitize-v850e
284 v850e-*-*) fmt=elf bfd_gas=yes ;;
286 # start-sanitize-v850eq
287 v850eq-*-*) fmt=elf bfd_gas=yes ;;
288 # end-sanitize-v850eq
289 vax-*-bsd* | vax-*-ultrix*)
291 vax-*-vms) fmt=vms ;;
293 z8k-*-coff | z8k-*-sim)
298 *-*-aout | *-*-scout)
304 *-*-generic) fmt=generic ;;
305 *-*-xray | *-*-hms) fmt=coff ;;
307 *-*-elf | *-*-sysv4* | *-*-solaris*)
308 AC_MSG_WARN(GAS support for ${generic_target} is incomplete.)
310 *-*-vxworks) fmt=aout ;;
311 *-*-netware) fmt=elf ;;
314 case ${cpu_type}-${fmt} in
315 alpha-*) bfd_gas=yes ;;
316 arm-*) bfd_gas=yes ;;
318 # i386-aout) bfd_gas=preferred ;;
319 mips-*) bfd_gas=yes ;;
320 ns32k-*) bfd_gas=yes ;;
321 ppc-*) bfd_gas=yes ;;
322 sparc-*) bfd_gas=yes ;;
323 *-elf) bfd_gas=yes ;;
324 *-ecoff) bfd_gas=yes ;;
325 *-som) bfd_gas=yes ;;
329 # Other random stuff.
331 # do we need the opcodes library?
337 if test "${shared_opcodes}" = "true"; then
338 # A shared libopcodes must be linked against libbfd.
344 test -n "$want_sparc_v9" && AC_DEFINE(SPARC_V9)
346 case ${cpu}-${vendor}-${os} in
347 sparc64-*-elf*) AC_DEFINE(SPARC_ARCH64) ;;
352 case ${extra_objects} in
354 *) extra_objects="$extra_objects cgen.o"
355 AC_DEFINE(USING_CGEN)
361 case ${extra_objects} in
363 *) extra_objects="$extra_objects m68k-parse.o" ;;
368 echo ${extra_objects} | grep -s "itbl-parse.o"
369 if test $? -ne 0 ; then
370 extra_objects="$extra_objects itbl-parse.o"
373 echo ${extra_objects} | grep -s "itbl-lex.o"
374 if test $? -ne 0 ; then
375 extra_objects="$extra_objects itbl-lex.o"
378 echo ${extra_objects} | grep -s "itbl-ops.o"
379 if test $? -ne 0 ; then
380 extra_objects="$extra_objects itbl-ops.o"
388 # See if we really can support this configuration with the emulation code.
390 if test $this_target = $target ; then
391 primary_bfd_gas=$bfd_gas
395 if test $bfd_gas = no ; then
396 # Can't support other configurations this way.
399 elif test $bfd_gas = no ; then
400 # Can't support this configuration.
404 # From target name and format, produce a list of supported emulations.
406 case ${generic_target}-${fmt} in
407 mips-*-irix5*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
408 mips-*-linux*-*) case "$endian" in
409 big) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
410 *) emulation="mipslelf mipsbelf mipself mipslecoff mipsbecoff mipsecoff" ;;
412 mips-*-lnews*-ecoff) ;;
413 mips-*-*-ecoff) case "$endian" in
414 big) emulation="mipsbecoff mipslecoff mipsecoff" ;;
415 *) emulation="mipslecoff mipsbecoff mipsecoff" ;;
417 mips-*-*-elf) case "$endian" in
418 big) emulation="mipsbelf mipslelf mipself" ;;
419 *) emulation="mipslelf mipsbelf mipself" ;;
420 # Uncommenting the next line will turn on support for i386 COFF
421 # in any i386 ELF configuration. This probably doesn't work
423 # i386-*-*-elf) emulation="i386coff i386elf" ;;
427 emulations="$emulations $emulation"
431 # Assign floating point type. Most processors with FP support
432 # IEEE FP. On those that don't support FP at all, usually IEEE
434 case ${target_cpu} in
435 vax | tahoe ) atof=${target_cpu} ;;
439 case "${obj_format}" in
440 "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
444 dnl Make sure the desired support files exist.
447 if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
448 AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
451 if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
452 AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
455 case ${user_bfd_gas}-${primary_bfd_gas} in
457 # We didn't override user's choice.
460 AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
472 # User specified nothing.
476 # Some COFF configurations want these random other flags set.
477 case ${obj_format} in
479 case ${target_cpu_type} in
480 i386) AC_DEFINE(I386COFF) ;;
481 m68k) AC_DEFINE(M68KCOFF) ;;
482 m88k) AC_DEFINE(M88KCOFF) ;;
487 # Getting this done right is going to be a bitch. Each configuration specified
488 # with --enable-targets=... should be checked for environment, format, cpu, and
491 # For each configuration, the necessary object file support code must be linked
492 # in. This might be only one, it might be up to four. The necessary emulation
493 # code needs to be provided, too.
495 # And then there's "--enable-targets=all"....
497 # For now, just always do it for MIPS ELF or ECOFF configurations. Sigh.
499 formats="${obj_format}"
503 for em in . $emulations ; do
507 fmt=elf file=mipself ;;
508 mipsbecoff | mipslecoff)
509 fmt=ecoff file=mipsecoff ;;
511 fmt=coff file=i386coff ;;
513 fmt=elf file=i386elf ;;
515 formats="$formats $fmt"
516 emfiles="$emfiles e-$file.o"
517 EMULATIONS="$EMULATIONS &$em,"
521 if test `set . $formats ; shift ; echo $#` -gt 1 ; then
522 for fmt in $formats ; do
524 aout) AC_DEFINE(OBJ_MAYBE_AOUT) ;;
525 bout) AC_DEFINE(OBJ_MAYBE_BOUT) ;;
526 coff) AC_DEFINE(OBJ_MAYBE_COFF) ;;
527 ecoff) AC_DEFINE(OBJ_MAYBE_ECOFF) ;;
528 elf) AC_DEFINE(OBJ_MAYBE_ELF) ;;
529 generic) AC_DEFINE(OBJ_MAYBE_GENERIC) ;;
530 hp300) AC_DEFINE(OBJ_MAYBE_HP300) ;;
531 ieee) AC_DEFINE(OBJ_MAYBE_IEEE) ;;
532 som) AC_DEFINE(OBJ_MAYBE_SOM) ;;
533 vms) AC_DEFINE(OBJ_MAYBE_VMS) ;;
535 extra_objects="$extra_objects obj-$fmt.o"
539 if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
541 extra_objects="$extra_objects $emfiles"
542 DEFAULT_EMULATION=`set . $emulations ; echo $2`
543 AC_DEFINE(USE_EMULATIONS)
545 AC_SUBST(extra_objects)
546 AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS)
547 AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION")
549 case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
550 yes-*-coff) need_bfd=yes ;;
551 no-*-coff) need_bfd=yes
552 AC_DEFINE(MANY_SEGMENTS) ;;
555 reject_dev_configs=yes
557 case ${reject_dev_configs}-${dev} in
559 AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
563 AC_SUBST(target_cpu_type)
567 dnl AC_SUBST(emulation)
569 case "${primary_bfd_gas}" in
570 yes) AC_DEFINE(BFD_ASSEMBLER)
574 # do we need the opcodes library?
575 case "${need_opcodes}" in
577 OPCODES_LIB=../opcodes/libopcodes.la
581 case "${need_bfd}" in
583 BFDLIB=../bfd/libbfd.la
584 ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h"
589 AC_SUBST(OPCODES_LIB)
591 AC_SUBST(ALL_OBJ_DEPS)
593 AC_DEFINE_UNQUOTED(TARGET_ALIAS, "${target_alias}")
594 AC_DEFINE_UNQUOTED(TARGET_CANONICAL, "${target}")
595 AC_DEFINE_UNQUOTED(TARGET_CPU, "${target_cpu}")
596 AC_DEFINE_UNQUOTED(TARGET_VENDOR, "${target_vendor}")
597 AC_DEFINE_UNQUOTED(TARGET_OS, "${target_os}")
610 AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
612 # Put this here so that autoconf's "cross-compiling" message doesn't confuse
613 # people who are not cross-compiling but are compiling cross-assemblers.
614 AC_MSG_CHECKING(whether compiling a cross-assembler)
615 if test "${host}" = "${target}"; then
619 AC_DEFINE(CROSS_COMPILE)
621 AC_MSG_RESULT($cross_gas)
623 dnl ansidecl.h will deal with const
628 # VMS doesn't have unlink.
629 AC_CHECK_FUNCS(unlink remove, break)
631 # Some systems don't have sbrk().
634 # Some non-ANSI preprocessors botch requoting inside strings. That's bad
635 # enough, but on some of those systems, the assert macro relies on requoting
639 # On some systems, the system header files may not declare malloc, realloc,
640 # and free. There are places where gas needs these functions to have been
641 # declared -- such as when taking their addresses.
649 #ifdef HAVE_STRINGS_H
660 GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
661 GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
662 GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
663 GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
665 # Does errno.h declare errno, or do we have to add a separate declaration
667 GAS_CHECK_DECL_NEEDED(errno, f, int f, [
673 dnl This must come last.
675 dnl We used to make symlinks to files in the source directory, but now
676 dnl we just use the right name for .c files, and create .h files in
677 dnl the build directory which include the right .h file. Make sure
678 dnl the old symlinks don't exist, so that a reconfigure in an existing
679 dnl directory behaves reasonably.
681 AC_OUTPUT(Makefile doc/Makefile .gdbinit:gdbinit.in,
682 [rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
683 echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
684 echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
685 echo '#include "te-'"${te_file}"'.h"' > targ-env.h
686 echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
687 case ${target_cpu_type} in
688 m32r) echo '#include "opcodes/'"${target_cpu_type}"'-opc.h"' > cgen-opc.h ;;
690 [target_cpu_type=${target_cpu_type}
691 obj_format=${obj_format}