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
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 # start-sanitize-r5900
86 mips*5900*) cpu_type=mips endian=little ;;
88 mips*) cpu_type=mips endian=big ;;
89 powerpcle*) cpu_type=ppc endian=little ;;
90 powerpc*) cpu_type=ppc endian=big ;;
91 rs6000*) cpu_type=ppc ;;
92 sparclite*) cpu_type=sparc arch=sparclite ;;
93 sparclet*) cpu_type=sparc arch=sparclet ;;
94 sparc64*) cpu_type=sparc arch=v9-64 ;;
95 sparc*) cpu_type=sparc arch=sparclite ;; # ??? See tc-sparc.c.
96 v850*) cpu_type=v850 ;;
100 if test ${this_target} = $target ; then
101 target_cpu_type=${cpu_type}
102 if test x${endian} = xbig; then
103 AC_DEFINE(TARGET_BYTES_BIG_ENDIAN, 1)
104 elif test x${endian} = xlittle; then
105 AC_DEFINE(TARGET_BYTES_BIG_ENDIAN, 0)
107 elif test ${target_cpu_type} != ${cpu_type} ; then
111 generic_target=${cpu_type}-$vendor-$os
116 # assign object format
117 case ${generic_target} in
118 a29k-*-coff) fmt=coff ;;
119 a29k-amd-udi) fmt=coff ;;
120 a29k-amd-ebmon) fmt=coff ;;
121 a29k-nyu-sym1) fmt=coff ;;
122 a29k-*-vxworks*) fmt=coff ;;
124 alpha*-*-*vms*) fmt=evax ;;
125 alpha*-*-netware*) fmt=ecoff ;;
126 alpha*-*-openbsd*) fmt=ecoff ;;
127 alpha*-*-osf*) fmt=ecoff ;;
128 alpha*-*-linuxecoff*) fmt=ecoff ;;
129 alpha*-*-linux*) fmt=elf em=linux ;;
131 arc-*-elf*) fmt=elf bfd_gas=yes ;;
133 arm-*-riscix*) fmt=aout em=riscix ;;
134 arm-*-aout) fmt=aout ;;
135 arm-*-coff | thumb-*-coff) fmt=coff ;;
136 arm-*-riscix*) fmt=aout ;;
137 arm-*-pe) fmt=coff em=pe ;;
139 d10v-*-*) fmt=elf bfd_gas=yes ;;
140 # start-sanitize-d30v
141 d30v-*-*) fmt=elf bfd_gas=yes ;;
144 hppa-*-*elf*) fmt=elf em=hppa ;;
145 hppa-*-lites*) fmt=elf em=hppa ;;
146 hppa-*-osf*) fmt=som em=hppa ;;
147 hppa-*-rtems*) fmt=elf em=hppa ;;
148 hppa-*-hpux*) fmt=som em=hppa ;;
149 hppa-*-bsd*) fmt=som em=hppa ;;
150 hppa-*-hiux*) fmt=som em=hppa ;;
152 h8300-*-coff) fmt=coff ;;
154 i386-ibm-aix*) fmt=coff em=i386aix ;;
155 i386-sequent-bsd*) fmt=aout em=dynix bfd_gas=yes ;;
156 i386-*-bsd*) fmt=aout em=386bsd ;;
157 i386-*-netbsd0.8) fmt=aout em=386bsd ;;
158 i386-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes;;
159 i386-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes;;
160 i386-*-linux*aout* | i386-*-linuxoldld) fmt=aout em=linux ;;
161 i386-*-linux*coff*) fmt=coff em=linux ;;
162 i386-*-linux*) fmt=elf em=linux ;;
163 i386-*-lynxos*) fmt=coff em=lynx ;;
164 i386-*-sysv4* | i386-*-solaris* | i386-*-elf)
166 i386-*-freebsdelf*) fmt=elf ;;
167 i386-*-freebsd*) fmt=aout em=386bsd ;;
168 i386-*-coff | i386-*-sysv* | i386-*-sco3.2v5*coff | i386-*-isc*)
170 i386-*-sco3.2v5*) fmt=elf
171 if test ${this_target} = $target; then
175 i386-*-sco3.2*) fmt=coff ;;
176 i386-*-vsta) fmt=aout ;;
177 i386-*-msdosdjgpp* | i386-*-go32* | i386-go32-rtems*)
179 i386-*-rtems*) fmt=coff ;;
180 i386-*-gnu*) fmt=elf ;;
182 fmt=aout em=mach bfd_gas=yes ;;
183 i386-*-msdos*) fmt=aout ;;
184 i386-*-moss*) fmt=elf ;;
185 i386-*-pe) fmt=coff em=pe ;;
186 i386-*-cygwin32*) fmt=coff em=pe bfd_gas=yes ;;
187 i386-*-mingw32*) fmt=coff em=pe bfd_gas=yes ;;
188 i386-*-*nt*) fmt=coff em=pe ;;
189 i960-*-bout) fmt=bout ;;
190 i960-*-coff) fmt=coff em=ic960 ;;
191 i960-*-rtems*) fmt=coff em=ic960 ;;
192 i960-*-nindy*) fmt=bout ;;
193 i960-*-vxworks4*) fmt=bout ;;
194 i960-*-vxworks5.0) fmt=bout ;;
195 i960-*-vxworks5.*) fmt=coff em=ic960 ;;
196 i960-*-vxworks*) fmt=bout ;;
198 m32r-*-*) fmt=elf bfd_gas=yes ;;
200 m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*)
202 m68k-motorola-sysv*) fmt=coff em=delta ;;
203 m68k-bull-sysv3*) fmt=coff em=dpx2 ;;
204 m68k-apollo-*) fmt=coff em=apollo ;;
205 m68k-*-sysv4*) # must be before -sysv*
207 m68k-*-elf*) fmt=elf ;;
208 m68k-*-coff | m68k-*-sysv* | m68k-*-rtems*)
210 m68k-*-hpux*) fmt=hp300 em=hp300 ;;
211 m68k-*-linux*aout*) fmt=aout em=linux ;;
212 m68k-*-linux*) fmt=elf em=linux ;;
213 m68k-*-lynxos*) fmt=coff em=lynx ;;
214 m68k-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
215 m68k-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
216 m68k-apple-aux*) fmt=coff em=aux ;;
217 m68k-*-psos*) fmt=elf em=psos;;
219 m88k-motorola-sysv3*) fmt=coff em=delt88 ;;
220 m88k-*-coff*) fmt=coff ;;
222 # don't change em like *-*-bsd does
223 mips-dec-netbsd*) fmt=elf endian=little ;;
224 mips-dec-openbsd*) fmt=elf endian=little ;;
225 mips-dec-bsd*) fmt=aout ;;
226 mips-sony-bsd*) fmt=ecoff ;;
227 mips-*-bsd*) AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.) ;;
228 mips-*-ultrix*) fmt=ecoff endian=little ;;
229 mips-*-osf*) fmt=ecoff endian=little ;;
230 mips-*-ecoff*) fmt=ecoff ;;
231 mips-*-ecoff*) fmt=ecoff ;;
232 mips-*-irix6*) fmt=elf ;;
233 mips-*-irix5*) fmt=elf ;;
234 mips-*-irix*) fmt=ecoff ;;
235 mips-*-lnews*) fmt=ecoff em=lnews ;;
236 mips-*-riscos*) fmt=ecoff ;;
237 mips-*-sysv*) fmt=ecoff ;;
238 mips-*-elf* | mips-*-rtems* | mips-*-linux* | mips-*-gnu* | mips-*-openbsd*)
240 mn10200-*-*) fmt=elf bfd_gas=yes ;;
241 mn10300-*-*) fmt=elf bfd_gas=yes ;;
242 ppc-*-pe | ppc-*-cygwin32 | ppc-*-winnt*)
244 ppc-*-aix*) fmt=coff ;;
245 ppc-*-beos*) fmt=coff ;;
246 ppc-*-*bsd* | ppc-*-elf* | ppc-*-eabi* | ppc-*-sysv4*)
248 ppc-*-linux*) fmt=elf
251 *) AC_MSG_ERROR(Linux must be configured big endian) ;;
254 ppc-*-solaris*) fmt=elf
255 if test ${this_target} = $target; then
256 AC_DEFINE(TARGET_SOLARIS_COMMENT)
258 if test x${endian} = xbig; then
259 AC_MSG_ERROR(Solaris must be configured little endian)
262 ppc-*-rtems*) fmt=elf ;;
263 ppc-*-macos* | ppc-*-mpw*)
265 ppc-*-netware*) fmt=elf em=ppcnw ;;
267 sh-*-elf*) fmt=elf ;;
268 sh-*-coff*) fmt=coff ;;
269 sh-*-rtems*) fmt=elf ;;
271 ns32k-pc532-mach* | ns32k-pc532-ux*) fmt=aout em=pc532mach ;;
272 ns32k-pc532-netbsd* | ns32k-pc532-lites*) fmt=aout em=nbsd532 ;;
273 ns32k-pc532-openbsd*) fmt=aout em=nbsd532 ;;
275 sparc-*-rtems*) fmt=aout ;;
276 sparc-*-sunos4*) fmt=aout em=sun3 ;;
277 sparc-*-aout | sparc*-*-vxworks*)
278 fmt=aout em=sparcaout ;;
279 sparc-*-coff) fmt=coff ;;
280 sparc-*-linux*aout*) fmt=aout em=linux ;;
281 sparc-*-linux*) fmt=elf em=linux ;;
282 sparc-*-lynxos*) fmt=coff em=lynx ;;
283 sparc-fujitsu-none) fmt=aout ;;
284 sparc-*-elf | sparc-*-sysv4* | sparc-*-solaris*)
286 sparc-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
287 sparc-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
289 tic30-*-*aout*) fmt=aout bfd_gas=yes ;;
290 tic30-*-*coff*) fmt=coff bfd_gas=yes ;;
291 # start-sanitize-tic80
292 tic80-*-*) fmt=coff ;;
296 dvp-*-*) fmt=elf bfd_gas=yes ;;
299 v850-*-*) fmt=elf bfd_gas=yes ;;
301 # start-sanitize-v850e
302 v850e-*-*) fmt=elf bfd_gas=yes ;;
303 v850ea-*-*) fmt=elf bfd_gas=yes ;;
305 vax-*-bsd* | vax-*-ultrix*)
307 vax-*-vms) fmt=vms ;;
309 z8k-*-coff | z8k-*-sim)
314 *-*-aout | *-*-scout)
320 *-*-generic) fmt=generic ;;
321 *-*-xray | *-*-hms) fmt=coff ;;
323 *-*-elf | *-*-sysv4* | *-*-solaris*)
324 AC_MSG_WARN(GAS support for ${generic_target} is incomplete.)
326 *-*-vxworks) fmt=aout ;;
327 *-*-netware) fmt=elf ;;
330 case ${cpu_type}-${fmt} in
331 alpha*-*) bfd_gas=yes ;;
332 arm-*) bfd_gas=yes ;;
334 # i386-aout) bfd_gas=preferred ;;
335 mips-*) bfd_gas=yes ;;
336 ns32k-*) bfd_gas=yes ;;
337 ppc-*) bfd_gas=yes ;;
338 sparc-*) bfd_gas=yes ;;
339 *-elf) bfd_gas=yes ;;
340 *-ecoff) bfd_gas=yes ;;
341 *-som) bfd_gas=yes ;;
345 # Other random stuff.
347 # do we need the opcodes library?
354 case "${enable_shared}" in
355 yes) shared_opcodes=true ;;
356 *opcodes*) shared_opcodes=true ;;
357 *) shared_opcodes=false ;;
359 if test "${shared_opcodes}" = "true"; then
360 # A shared libopcodes must be linked against libbfd.
368 case ${extra_objects} in
370 *) extra_objects="$extra_objects cgen.o"
371 AC_DEFINE(USING_CGEN)
377 case ${extra_objects} in
379 *) extra_objects="$extra_objects m68k-parse.o" ;;
384 echo ${extra_objects} | grep -s "itbl-parse.o"
385 if test $? -ne 0 ; then
386 extra_objects="$extra_objects itbl-parse.o"
389 echo ${extra_objects} | grep -s "itbl-lex.o"
390 if test $? -ne 0 ; then
391 extra_objects="$extra_objects itbl-lex.o"
394 echo ${extra_objects} | grep -s "itbl-ops.o"
395 if test $? -ne 0 ; then
396 extra_objects="$extra_objects itbl-ops.o"
401 if test $this_target = $target ; then
402 AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}")
410 # See if we really can support this configuration with the emulation code.
412 if test $this_target = $target ; then
413 primary_bfd_gas=$bfd_gas
417 if test $bfd_gas = no ; then
418 # Can't support other configurations this way.
421 elif test $bfd_gas = no ; then
422 # Can't support this configuration.
426 # From target name and format, produce a list of supported emulations.
428 case ${generic_target}-${fmt} in
429 mips-*-irix5*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
430 mips-*-linux*-*) case "$endian" in
431 big) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
432 *) emulation="mipslelf mipsbelf mipself mipslecoff mipsbecoff mipsecoff" ;;
434 mips-*-lnews*-ecoff) ;;
435 mips-*-*-ecoff) case "$endian" in
436 big) emulation="mipsbecoff mipslecoff mipsecoff" ;;
437 *) emulation="mipslecoff mipsbecoff mipsecoff" ;;
439 mips-*-*-elf) case "$endian" in
440 big) emulation="mipsbelf mipslelf mipself" ;;
441 *) emulation="mipslelf mipsbelf mipself" ;;
442 # Uncommenting the next line will turn on support for i386 COFF
443 # in any i386 ELF configuration. This probably doesn't work
445 # i386-*-*-elf) emulation="i386coff i386elf" ;;
449 emulations="$emulations $emulation"
453 # Assign floating point type. Most processors with FP support
454 # IEEE FP. On those that don't support FP at all, usually IEEE
456 case ${target_cpu} in
457 vax | tahoe ) atof=${target_cpu} ;;
461 case "${obj_format}" in
462 "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
466 dnl Make sure the desired support files exist.
469 if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
470 AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
473 if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
474 AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
477 case ${user_bfd_gas}-${primary_bfd_gas} in
479 # We didn't override user's choice.
482 AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
494 # User specified nothing.
498 # Some COFF configurations want these random other flags set.
499 case ${obj_format} in
501 case ${target_cpu_type} in
502 i386) AC_DEFINE(I386COFF) ;;
503 m68k) AC_DEFINE(M68KCOFF) ;;
504 m88k) AC_DEFINE(M88KCOFF) ;;
509 # Getting this done right is going to be a bitch. Each configuration specified
510 # with --enable-targets=... should be checked for environment, format, cpu, and
513 # For each configuration, the necessary object file support code must be linked
514 # in. This might be only one, it might be up to four. The necessary emulation
515 # code needs to be provided, too.
517 # And then there's "--enable-targets=all"....
519 # For now, just always do it for MIPS ELF or ECOFF configurations. Sigh.
521 formats="${obj_format}"
525 for em in . $emulations ; do
529 fmt=elf file=mipself ;;
530 mipsbecoff | mipslecoff)
531 fmt=ecoff file=mipsecoff ;;
533 fmt=coff file=i386coff ;;
535 fmt=elf file=i386elf ;;
537 formats="$formats $fmt"
538 emfiles="$emfiles e-$file.o"
539 EMULATIONS="$EMULATIONS &$em,"
543 if test `set . $formats ; shift ; echo $#` -gt 1 ; then
544 for fmt in $formats ; do
546 aout) AC_DEFINE(OBJ_MAYBE_AOUT) ;;
547 bout) AC_DEFINE(OBJ_MAYBE_BOUT) ;;
548 coff) AC_DEFINE(OBJ_MAYBE_COFF) ;;
549 ecoff) AC_DEFINE(OBJ_MAYBE_ECOFF) ;;
550 elf) AC_DEFINE(OBJ_MAYBE_ELF) ;;
551 generic) AC_DEFINE(OBJ_MAYBE_GENERIC) ;;
552 hp300) AC_DEFINE(OBJ_MAYBE_HP300) ;;
553 ieee) AC_DEFINE(OBJ_MAYBE_IEEE) ;;
554 som) AC_DEFINE(OBJ_MAYBE_SOM) ;;
555 vms) AC_DEFINE(OBJ_MAYBE_VMS) ;;
557 extra_objects="$extra_objects obj-$fmt.o"
561 if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
563 extra_objects="$extra_objects $emfiles"
564 DEFAULT_EMULATION=`set . $emulations ; echo $2`
565 AC_DEFINE(USE_EMULATIONS)
567 AC_SUBST(extra_objects)
568 AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS)
569 AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION")
571 case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
572 yes-*-coff) need_bfd=yes ;;
573 no-*-coff) need_bfd=yes
574 AC_DEFINE(MANY_SEGMENTS) ;;
577 reject_dev_configs=yes
579 case ${reject_dev_configs}-${dev} in
581 AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
585 AC_SUBST(target_cpu_type)
589 dnl AC_SUBST(emulation)
591 case "${primary_bfd_gas}" in
592 yes) AC_DEFINE(BFD_ASSEMBLER)
596 # do we need the opcodes library?
597 case "${need_opcodes}" in
599 OPCODES_LIB=../opcodes/libopcodes.la
603 case "${need_bfd}" in
605 BFDLIB=../bfd/libbfd.la
606 ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h"
611 AC_SUBST(OPCODES_LIB)
613 AC_SUBST(ALL_OBJ_DEPS)
615 AC_DEFINE_UNQUOTED(TARGET_ALIAS, "${target_alias}")
616 AC_DEFINE_UNQUOTED(TARGET_CANONICAL, "${target}")
617 AC_DEFINE_UNQUOTED(TARGET_CPU, "${target_cpu}")
618 AC_DEFINE_UNQUOTED(TARGET_VENDOR, "${target_vendor}")
619 AC_DEFINE_UNQUOTED(TARGET_OS, "${target_os}")
631 AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
633 # Put this here so that autoconf's "cross-compiling" message doesn't confuse
634 # people who are not cross-compiling but are compiling cross-assemblers.
635 AC_MSG_CHECKING(whether compiling a cross-assembler)
636 if test "${host}" = "${target}"; then
640 AC_DEFINE(CROSS_COMPILE)
642 AC_MSG_RESULT($cross_gas)
644 dnl ansidecl.h will deal with const
649 # VMS doesn't have unlink.
650 AC_CHECK_FUNCS(unlink remove, break)
652 # Some systems don't have sbrk().
655 # Some non-ANSI preprocessors botch requoting inside strings. That's bad
656 # enough, but on some of those systems, the assert macro relies on requoting
660 # On some systems, the system header files may not declare malloc, realloc,
661 # and free. There are places where gas needs these functions to have been
662 # declared -- such as when taking their addresses.
670 #ifdef HAVE_STRINGS_H
681 GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
682 GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
683 GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
684 GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
686 # Does errno.h declare errno, or do we have to add a separate declaration
688 GAS_CHECK_DECL_NEEDED(errno, f, int f, [
694 dnl This must come last.
696 dnl We used to make symlinks to files in the source directory, but now
697 dnl we just use the right name for .c files, and create .h files in
698 dnl the build directory which include the right .h file. Make sure
699 dnl the old symlinks don't exist, so that a reconfigure in an existing
700 dnl directory behaves reasonably.
702 AC_OUTPUT(Makefile doc/Makefile .gdbinit:gdbinit.in,
703 [rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
704 echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
705 echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
706 echo '#include "te-'"${te_file}"'.h"' > targ-env.h
707 echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
708 case ${target_cpu_type} in
709 m32r) echo '#include "opcodes/'"${target_cpu_type}"'-opc.h"' > cgen-opc.h ;;
711 [target_cpu_type=${target_cpu_type}
712 obj_format=${obj_format}