]> Git Repo - binutils.git/blob - gas/configure.in
arm config fix from Richard Earnshaw
[binutils.git] / gas / configure.in
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
7 AC_PREREQ(2.3)dnl We only need 2.0, but pre-2.3 loses on some AIX version.
8 AC_INIT(as.h)dnl
9 dnl
10 user_bfd_gas=
11 AC_ARG_ENABLE(bfd-assembler,
12 [    bfd-assembler      use BFD back end for writing object files],
13 [case "${enableval}" in
14   yes) need_bfd=yes user_bfd_gas=yes ;;
15   no)  user_bfd_gas=no ;;
16   *)   AC_MSG_ERROR(bad value ${enableval} given for bfd-assembler option) ;;
17 esac])dnl
18 AC_ARG_ENABLE(targets,
19 [    targets            alternative target configurations besides the primary],
20 [case "${enableval}" in
21   yes | "") AC_ERROR(enable-targets option must specify target names or 'all')
22             ;;
23   no)       enable_targets= ;;
24   *)        enable_targets=$enableval ;;
25 esac])dnl
26
27 # Generate a header file -- gets more post-processing by Makefile later.
28 AC_CONFIG_HEADER(conf)
29
30 dnl For recursion to work right, this must be an absolute pathname.
31 AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..)
32 AC_CANONICAL_SYSTEM
33 AC_ARG_PROGRAM
34
35 te_file=generic
36
37 # assign cpu type
38
39 # check for architecture variants
40 case ${target_cpu} in
41   armeb)        cpu_type=arm endian=big ;;
42   arm*)         cpu_tpye=arm endian=little ;;
43   hppa*)        cpu_type=hppa ;;
44 changequote(,)dnl
45   i[45]86)      cpu_type=i386 ;;
46   m680[012346]0) cpu_type=m68k ;;
47   m68008)       cpu_type=m68k ;;
48   m683??)       cpu_type=m68k ;;
49 changequote([,])dnl
50   m8*)          cpu_type=m88k ;;
51   mips*el)      cpu_type=mips endian=little;;
52   mips*)        cpu_type=mips endian=big ;;
53   powerpcle*)   cpu_type=ppc endian=little ;;
54   powerpc*)     cpu_type=ppc endian=big ;;
55   rs6000*)      cpu_type=ppc ;;
56   sparc64)      cpu_type=sparc obj_format=elf
57                 AC_DEFINE(sparcv9) ;;
58   sparclite*)   cpu_type=sparc ;;
59   *)            cpu_type=${target_cpu} ;;
60 esac
61
62 # do we need the opcodes library?
63 case ${cpu_type} in
64   alpha | vax)
65     ;;
66   *)
67     OPCODES_LIB="../opcodes/libopcodes.a"
68     ;;
69 esac
70 AC_SUBST(OPCODES_LIB)
71
72 gas_target=${cpu_type}
73 this_target=${generic_target}
74
75 canon_targets=""
76 if test -n "$enable_targets" ; then
77   for t in `echo $enable_targets | sed 's/,/ /g'`; do
78     result=`$ac_config_sub $t 2>/dev/null`
79     if test -n "$result" ; then
80       canon_targets="$canon_targets $result"
81 #    else
82 #      # Permit "all", etc.  We don't support it yet though.
83 #      canon_targets="$canon_targets $t"
84     fi
85   done
86   GAS_UNIQ(canon_targets)
87 fi
88
89 emulations=""
90
91 for this_target in $target $canon_targets ; do
92
93     eval `echo $this_target | sed 's/^\(.*\)-\(.*\)-\(.*\)$/cpu=\1 vendor=\2 os=\3/'`
94
95     # check for architecture variants
96     case ${cpu} in
97       hppa*)            cpu_type=hppa ;;
98 changequote(,)dnl
99       i[45]86)          cpu_type=i386 ;;
100       m680[012346]0)    cpu_type=m68k ;;
101       m68008)           cpu_type=m68k ;;
102       m683??)           cpu_type=m68k ;;
103 changequote([,])dnl
104       m8*)              cpu_type=m88k ;;
105       mips*el)          cpu_type=mips endian=little;;
106       mips*)            cpu_type=mips endian=big ;;
107       powerpcle*)       cpu_type=ppc endian=little ;;
108       powerpc*)         cpu_type=ppc endian=big ;;
109       rs6000*)          cpu_type=ppc ;;
110       sparc64)          cpu_type=sparc obj_format=elf want_sparcv9=true ;;
111       sparclite*)       cpu_type=sparc ;;
112       *)                cpu_type=${target_cpu} ;;
113     esac
114
115     if test ${this_target} = $target ; then
116       target_cpu_type=${cpu_type}
117     elif test ${target_cpu_type} != ${cpu_type} ; then
118       continue
119     fi
120
121     targ=${cpu_type}
122     generic_target=${cpu_type}-$vendor-$os
123     dev=no
124     bfd_gas=no
125     em=generic
126
127     # assign object format
128     case ${generic_target} in
129       a29k-amd-udi)         fmt=coff targ=ebmon29k ;;
130       a29k-amd-ebmon)       fmt=coff targ=ebmon29k ;;
131       a29k-*-vxworks*)      fmt=coff ;;
132
133       alpha-*-netware*)     fmt=ecoff ;;
134       alpha-*-osf*)         fmt=ecoff ;;
135
136 # start-sanitize-arc
137       arc-*-elf*)           fmt=elf bfd_gas=yes ;;
138 # end-sanitize-arc
139
140       arm-*-riscix*)        fmt=aout targ=arm-lit
141                             emulation=riscix ;;
142       arm-*-aout)           fmt=aout
143                             case "$endian" in
144                               big)      targ=arm-big ;;
145                               *)        targ=arm-lit ;;
146                             esac
147                             ;;
148       arm-*-riscix*)        fmt=aout ;;
149       arm-*-pe)             fmt=coff targ=armcoff em=pe ;;
150
151       hppa-*-*elf*)         fmt=elf em=hppa ;;
152       hppa-*-lites*)        fmt=elf em=hppa ;;
153       hppa-*-osf*)          fmt=som em=hppa ;;
154       hppa-*-hpux*)         fmt=som em=hppa ;;
155       hppa-*-bsd*)          fmt=som em=hppa ;;
156       hppa-*-hiux*)         fmt=som em=hppa ;;
157
158       h8300-*-coff)         fmt=coff ;;
159
160       i386-ibm-aix*)        fmt=coff targ=i386coff
161                              em=i386aix ;;
162       i386-*-bsd*)          fmt=aout em=386bsd ;;
163       i386-*-netbsd0.8)     fmt=aout em=386bsd ;;
164       i386-*-netbsd*)       fmt=aout em=nbsd bfd_gas=yes;;
165       i386-*-linux*aout*)   fmt=aout  em=linux ;;
166       i386-*-linux*coff*)   fmt=coff em=linux
167                              targ=i386coff ;;
168       i386-*-linux*)        fmt=elf em=linux ;;
169       i386-*-lynxos*)       fmt=coff targ=i386coff
170                              em=lynx ;;
171       i386-*-sysv4* | i386-*-solaris* | i386-*-elf)
172                             fmt=elf ;;
173       i386-*-coff | i386-*-sysv* | i386-*-sco* | i386-*-isc*)
174                             fmt=coff targ=i386coff ;;
175       i386-*-vsta)          fmt=aout ;;
176       i386-*-go32)          fmt=coff targ=i386coff ;;
177       i386-*-gnu*elf*)      fmt=elf ;;
178       i386-*-mach* | i386-*-gnu*)
179                             fmt=aout em=mach bfd_gas=yes ;;
180       i386-*-msdos*)        fmt=aout ;;
181       i386-*-pe)            fmt=coff targ=i386coff em=pe ;;
182       i386-*-*nt)           fmt=coff targ=i386coff em=pe ;;
183       i960-*-bout)          fmt=bout ;;
184       i960-*-coff)          fmt=coff em=ic960 targ=ic960coff ;;
185       i960-*-nindy*)        fmt=bout ;;
186       i960-*-vxworks4*)     fmt=bout ;;
187       i960-*-vxworks5.0)    fmt=bout ;;
188       i960-*-vxworks5.*)    fmt=coff em=ic960 targ=ic960coff ;;
189       i960-*-vxworks*)      fmt=bout ;;
190
191       m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*)
192                             fmt=aout em=sun3 ;;
193       m68k-motorola-sysv)   fmt=coff targ=m68kcoff em=delta ;;
194       m68k-bull-sysv3*)     fmt=coff targ=m68kcoff em=dpx2 ;;
195       m68k-apollo-*)        fmt=coff targ=apollo em=apollo ;;
196       m68k-*-coff | m68k-*-sysv*)
197                             fmt=coff targ=m68kcoff ;;
198       m68k-*-elf)           fmt=elf ;;
199       m68k-*-hpux*)         fmt=hp300 em=hp300 ;;
200       m68k-*-lynxos*)       fmt=coff targ=m68kcoff
201                              em=lynx ;;
202       m68k-*-netbsd*)       fmt=aout em=nbsd bfd_gas=yes ;;
203
204       m88k-*-coff*)         fmt=coff targ=m88kcoff ;;
205
206       # don't change em like *-*-bsd does
207       mips-dec-bsd*)        fmt=aout targ=mips-lit ;;
208       mips-sony-bsd*)       fmt=ecoff targ=mips-big ;;
209       mips-*-bsd*)          AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.) ;;
210       mips-*-ultrix*)       fmt=ecoff targ=mips-lit ;;
211       mips-*-ecoff*)        fmt=ecoff 
212                             case "$endian" in
213                             big) targ=mips-big ;;
214                             *)   targ=mips-lit ;;
215                             esac
216                             ;;
217       mips-*-ecoff*)        fmt=ecoff targ=mips-big ;;
218       mips-*-gnu*)          fmt=aout
219                             case "$endian" in
220                             big) targ=mips-big ;;
221                             *)   targ=mips-lit ;;
222                             esac
223                             ;;
224       mips-*-irix5*)        fmt=elf targ=mips-big ;;
225       mips-*-irix*)         fmt=ecoff targ=mips-big ;;
226       mips-*-riscos*)       fmt=ecoff targ=mips-big ;;
227       mips-*-sysv*)         fmt=ecoff targ=mips-big ;;
228       mips-*-elf*)          fmt=elf 
229                             case "$endian" in
230                             big) targ=mips-big ;;
231                             *)   targ=mips-lit ;;
232                             esac
233                             ;;
234       ppc-*-aix*)           fmt=coff ;;
235       ppc-*-elf* | ppc-*-eabi* | ppc-*-sysv4*)
236                             fmt=elf
237                             case "$endian" in
238                             big)  targ=ppc-big ;;
239                             *)    targ=ppc-lit ;;
240                             esac
241                             ;;
242       ppc-*-netware*)       fmt=elf em=ppcnw ;;
243
244       sh-*-coff)            fmt=coff ;;
245
246 # start-sanitize-rce
247       rce-*-aout)           fmt=aout ;;
248 # end-sanitize-rce
249
250       ns32k-pc532-mach*)    fmt=aout em=pc532mach ;;
251       ns32k-pc532-netbsd*)  fmt=aout em=nbsd532 ;;
252
253       sparc-*-sunos4*)      fmt=aout em=sun3 ;;
254       sparc-*-aout | sparc*-*-vxworks)
255                             fmt=aout ;;
256       sparc-*-coff)         fmt=coff ;;
257       sparc-*-lynxos*)      fmt=coff em=lynx ;;
258       sparc-fujitsu-none)   fmt=aout ;;
259       sparc-*-elf | sparc*-*-solaris*)
260                             fmt=elf ;;
261       sparc-*-netbsd*)      fmt=aout em=nbsd bfd_gas=yes ;;
262
263       vax-*-bsd* | vax-*-ultrix*)
264                             fmt=aout ;;
265       vax-*-vms)            fmt=vms ;;
266
267       z8k-*-coff | z8k-*-sim)
268                             fmt=coff ;;
269
270       w65-*-*)              fmt=coff ;;
271
272       *-*-aout | *-*-scout)
273                             fmt=aout ;;
274       *-*-nindy*)
275                             fmt=bout ;;
276       *-*-bsd*)
277                             fmt=aout em=sun3 ;;
278       *-*-generic)          fmt=generic ;;
279       *-*-xray | *-*-hms)   fmt=coff ;;
280       *-*-sim)              fmt=coff ;;
281       *-*-elf | *-*-sysv4* | *-*-solaris*)
282                             AC_MSG_WARN(GAS support for ELF format is incomplete.)
283                             fmt=elf dev=yes ;;
284       *-*-vxworks)          fmt=aout ;;
285       *-*-netware)          fmt=elf ;;
286     esac
287
288     case ${cpu_type}-${fmt} in
289       arm-*)    bfd_gas=yes ;;
290     # not yet
291     # i386-aout)        bfd_gas=preferred ;;
292       mips-*)   bfd_gas=yes ;;
293       ns32k-*)  bfd_gas=yes ;;
294       ppc-*)    bfd_gas=yes ;;
295       sparc-*)  bfd_gas=yes ;;
296       *-elf)    bfd_gas=yes ;;
297       *-ecoff)  bfd_gas=yes ;;
298       *-som)    bfd_gas=yes ;;
299       *)                ;;
300     esac
301
302 # See if we really can support this configuration with the emulation code.
303
304     if test $this_target = $target ; then
305       primary_bfd_gas=$bfd_gas
306       obj_format=$fmt
307       gas_target=$targ
308       te_file=$em
309
310       if test $bfd_gas = no ; then
311         # Can't support other configurations this way.
312         break
313       fi
314     elif test $bfd_gas = no ; then
315       # Can't support this configuration.
316       break
317     fi
318
319 # From target name and format, produce a list of supported emulations.
320
321     case ${generic_target}-${fmt} in
322       mips-*-irix5*-*)  emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
323       mips-*-*-ecoff)   case "$endian" in
324                         big)    emulation="mipsbecoff mipslecoff mipsecoff" ;;
325                         *)      emulation="mipslecoff mipsbecoff mipsecoff" ;;
326                         esac ;;
327       mips-*-*-elf)     case "$endian" in
328                         big)    emulation="mipsbelf mipslelf mipself" ;;
329                         *)      emulation="mipslelf mipsbelf mipself" ;;
330                         esac ;;
331     esac
332
333     emulations="$emulations $emulation"
334
335 # Other random stuff.
336
337     test -n "$want_sparcv9" && AC_DEFINE(sparcv9)
338
339 done
340
341 # Assign floating point type.  Most processors with FP support
342 # IEEE FP.  On those that don't support FP at all, usually IEEE
343 # is emulated.
344 case ${target_cpu} in
345   vax | tahoe ) atof=${target_cpu} ;;
346   *)            atof=ieee ;;
347 esac
348
349 case "${obj_format}" in
350   "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
351 esac
352
353 dnl
354 dnl Make sure the desired support files exist.
355 dnl
356
357 if test ! -r ${srcdir}/config/tc-${cpu_type}.c; then
358   AC_MSG_ERROR(GAS does not support target CPU ${cpu_type})
359 fi
360
361 if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
362   AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
363 fi
364
365 # and target makefile frag
366
367 target_frag=${srcdir}/config/${gas_target}.mt
368 if test ! -r ${target_frag}; then
369   target_frag=/dev/null # ick! but subst_file can't be conditionalized
370 fi
371 AC_SUBST_FILE(target_frag)
372
373 case ${user_bfd_gas}-${primary_bfd_gas} in
374   yes-yes | no-no)
375     # We didn't override user's choice.
376     ;;
377   no-yes)
378     AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
379     ;;
380   no-preferred)
381     primary_bfd_gas=no
382     ;;
383   *-preferred)
384     primary_bfd_gas=yes
385     ;;
386   yes-*)
387     primary_bfd_gas=yes
388     ;;
389   -*)
390     # User specified nothing.
391     ;;
392 esac
393
394 # Some COFF configurations want these random other flags set.
395 case ${obj_format} in
396   coff)
397     case ${target_cpu_type} in
398       i386) AC_DEFINE(I386COFF) ;;
399       m68k) AC_DEFINE(M68KCOFF) ;;
400       m88k) AC_DEFINE(M88KCOFF) ;;
401     esac
402     ;;
403 esac
404
405 # Getting this done right is going to be a bitch.  Each configuration specified
406 # with --enable-targets=... should be checked for environment, format, cpu, and
407 # bfd_gas setting.
408 #
409 # For each configuration, the necessary object file support code must be linked
410 # in.  This might be only one, it might be up to four.  The necessary emulation
411 # code needs to be provided, too.
412 #
413 # And then there's "--enable-targets=all"....
414 #
415 # For now, just always do it for MIPS ELF or ECOFF configurations.  Sigh.
416
417 formats="${obj_format}"
418 emfiles=""
419 EMULATIONS=""
420 GAS_UNIQ(emulations)
421 for em in . $emulations ; do
422   case $em in
423     .)  continue ;;
424     mipsbelf | mipslelf)
425         fmt=elf   file=mipself ;;
426     mipsbecoff | mipslecoff)
427         fmt=ecoff file=mipsecoff ;;
428   esac
429   formats="$formats $fmt"
430   emfiles="$emfiles e-$file.o"
431   EMULATIONS="$EMULATIONS &$em,"
432 done
433 GAS_UNIQ(formats)
434 GAS_UNIQ(emfiles)
435 if test `set . $formats ; shift ; echo $#` -gt 1 ; then
436   for fmt in $formats ; do
437     case $fmt in
438       aout)     AC_DEFINE(OBJ_MAYBE_AOUT)    ;;
439       bout)     AC_DEFINE(OBJ_MAYBE_BOUT)    ;;
440       coff)     AC_DEFINE(OBJ_MAYBE_COFF)    ;;
441       ecoff)    AC_DEFINE(OBJ_MAYBE_ECOFF)   ;;
442       elf)      AC_DEFINE(OBJ_MAYBE_ELF)     ;;
443       generic)  AC_DEFINE(OBJ_MAYBE_GENERIC) ;;
444       hp300)    AC_DEFINE(OBJ_MAYBE_HP300)   ;;
445       ieee)     AC_DEFINE(OBJ_MAYBE_IEEE)    ;;
446       som)      AC_DEFINE(OBJ_MAYBE_SOM)     ;;
447       vms)      AC_DEFINE(OBJ_MAYBE_VMS)     ;;
448     esac
449     extra_objects="$extra_objects obj-$fmt.o"
450   done
451   obj_format=multi
452 fi
453 if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
454   te_file=multi
455   extra_objects="$extra_objects $emfiles"
456   DEFAULT_EMULATION=`set . $emulations ; echo $2`
457   AC_DEFINE(USE_EMULATIONS)
458 fi
459 AC_SUBST(extra_objects)
460 AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS)
461 AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION")
462
463 files="config/tc-${cpu_type}.c  config/tc-${cpu_type}.h \
464         config/obj-${obj_format}.h config/obj-${obj_format}.c \
465         config/te-${te_file}.h config/atof-${atof}.c \
466         $extra_files"
467 links="targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c \
468         $extra_links"
469
470 case ${primary_bfd_gas}-${cpu_type}-${obj_format} in
471   yes-*-coff)   need_bfd=yes ;;
472   no-*-coff)    need_bfd=yes
473                 AC_DEFINE(MANY_SEGMENTS) ;;
474 esac
475
476 reject_dev_configs=yes
477
478 case ${reject_dev_configs}-${dev} in
479   yes-yes) # Oops.
480     AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
481     ;;
482 esac
483
484 AC_SUBST(cpu_type)
485 AC_SUBST(obj_format)
486 AC_SUBST(atof)
487 dnl AC_SUBST(emulation)
488
489 AC_LINK_FILES($files, $links)
490
491 case "${primary_bfd_gas}" in
492   yes)  AC_DEFINE(BFD_ASSEMBLER)
493         need_bfd=yes ;;
494 esac
495
496 case "${need_bfd}" in
497   yes)  BFDLIB=../bfd/libbfd.a
498         ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h"
499         ;;
500 esac
501 AC_SUBST(BFDLIB)
502 AC_SUBST(ALL_OBJ_DEPS)
503
504 AC_DEFINE_UNQUOTED(TARGET_ALIAS,        "${target_alias}")
505 AC_DEFINE_UNQUOTED(TARGET_CANONICAL,    "${target}")
506 AC_DEFINE_UNQUOTED(TARGET_CPU,          "${target_cpu}")
507 AC_DEFINE_UNQUOTED(TARGET_VENDOR,       "${target_vendor}")
508 AC_DEFINE_UNQUOTED(TARGET_OS,           "${target_os}")
509
510 AC_PROG_CC
511 AC_PROG_INSTALL
512
513 AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
514
515 # Put this here so that autoconf's "cross-compiling" message doesn't confuse
516 # people who are not cross-compiling but are compiling cross-assemblers.
517 AC_MSG_CHECKING(whether compiling a cross-assembler)
518 if test "${host}" = "${target}"; then
519   cross_gas=no
520 else
521   cross_gas=yes
522   AC_DEFINE(CROSS_COMPILE)
523 fi
524 AC_MSG_RESULT($cross_gas)
525
526 dnl ansidecl.h will deal with const
527 dnl AC_CONST
528 AC_FUNC_ALLOCA
529 AC_C_INLINE
530
531 # VMS doesn't have unlink.
532 AC_CHECK_FUNCS(unlink remove, break)
533
534 # Some non-ANSI preprocessors botch requoting inside strings.  That's bad
535 # enough, but on some of those systems, the assert macro relies on requoting
536 # working properly!
537 GAS_WORKING_ASSERT
538
539 # On some systems, the system header files may not declare malloc, realloc,
540 # and free.  There are places where gas needs these functions to have been
541 # declared -- such as when taking their addresses.
542 gas_test_headers="
543 #ifdef HAVE_MEMORY_H
544 #include <memory.h>
545 #endif
546 #ifdef HAVE_STRING_H
547 #include <string.h>
548 #endif
549 #ifdef HAVE_STDLIB_H
550 #include <stdlib.h>
551 #endif
552 #ifdef HAVE_UNISTD_H
553 #include <unistd.h>
554 #endif
555 "
556 GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
557 GAS_CHECK_DECL_NEEDED(free, f, int f, $gas_test_headers)
558
559 # Does errno.h declare errno, or do we have to add a separate declaration
560 # for it?
561 GAS_CHECK_DECL_NEEDED(errno, f, int f, [
562 #ifdef HAVE_ERRNO_H
563 #include <errno.h>
564 #endif
565 ])
566
567 AC_CONFIG_SUBDIRS(testsuite)
568
569 dnl This must come last.
570 AC_OUTPUT(Makefile doc/Makefile .gdbinit:gdbinit.in)
This page took 0.054983 seconds and 4 git commands to generate.