]> Git Repo - binutils.git/blob - gas/configure.in
* config/tc-arm.c (md_atof): Fix debugging printf, and leave it
[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_type=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=${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       arm-*-aout)           fmt=aout
142                             case "$endian" in
143                               big)      targ=arm-big ;;
144                               *)        targ=arm-lit ;;
145                             esac
146                             ;;
147       arm-*-riscix*)        fmt=aout ;;
148       arm-*-pe)             fmt=coff targ=armcoff em=pe ;;
149
150       hppa-*-*elf*)         fmt=elf em=hppa ;;
151       hppa-*-lites*)        fmt=elf em=hppa ;;
152       hppa-*-osf*)          fmt=som em=hppa ;;
153       hppa-*-hpux*)         fmt=som em=hppa ;;
154       hppa-*-bsd*)          fmt=som em=hppa ;;
155       hppa-*-hiux*)         fmt=som em=hppa ;;
156
157       h8300-*-coff)         fmt=coff ;;
158
159       i386-ibm-aix*)        fmt=coff targ=i386coff
160                              em=i386aix ;;
161       i386-*-bsd*)          fmt=aout em=386bsd ;;
162       i386-*-netbsd0.8)     fmt=aout em=386bsd ;;
163       i386-*-netbsd*)       fmt=aout em=nbsd bfd_gas=yes;;
164       i386-*-linux*aout* | i386-*-linuxoldld)   fmt=aout em=linux ;;
165       i386-*-linux*coff*)   fmt=coff em=linux
166                              targ=i386coff ;;
167       i386-*-linux*)        fmt=elf em=linux ;;
168       i386-*-lynxos*)       fmt=coff targ=i386coff
169                              em=lynx ;;
170       i386-*-sysv4* | i386-*-solaris* | i386-*-elf)
171                             fmt=elf ;;
172       i386-*-coff | i386-*-sysv* | i386-*-sco* | i386-*-isc*)
173                             fmt=coff targ=i386coff ;;
174       i386-*-vsta)          fmt=aout ;;
175       i386-*-go32)          fmt=coff targ=i386coff ;;
176       i386-*-gnu*)          fmt=elf ;;
177       i386-*-mach*)
178                             fmt=aout em=mach bfd_gas=yes ;;
179       i386-*-msdos*)        fmt=aout ;;
180       i386-*-moss*)         fmt=elf ;;
181       i386-*-pe)            fmt=coff targ=i386coff em=pe ;;
182       i386-*-win32)         fmt=coff targ=i386coff em=pe ;;
183       i386-*-*nt)           fmt=coff targ=i386coff em=pe ;;
184       i960-*-bout)          fmt=bout ;;
185       i960-*-coff)          fmt=coff em=ic960 targ=ic960coff ;;
186       i960-*-nindy*)        fmt=bout ;;
187       i960-*-vxworks4*)     fmt=bout ;;
188       i960-*-vxworks5.0)    fmt=bout ;;
189       i960-*-vxworks5.*)    fmt=coff em=ic960 targ=ic960coff ;;
190       i960-*-vxworks*)      fmt=bout ;;
191
192       m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*)
193                             fmt=aout em=sun3 ;;
194       m68k-motorola-sysv)   fmt=coff targ=m68kcoff em=delta ;;
195       m68k-bull-sysv3*)     fmt=coff targ=m68kcoff em=dpx2 ;;
196       m68k-apollo-*)        fmt=coff targ=apollo em=apollo ;;
197       m68k-*-coff | m68k-*-sysv*)
198                             fmt=coff targ=m68kcoff ;;
199       m68k-*-elf)           fmt=elf ;;
200       m68k-*-hpux*)         fmt=hp300 em=hp300 ;;
201       m68k-*-lynxos*)       fmt=coff targ=m68kcoff
202                              em=lynx ;;
203       m68k-*-netbsd*)       fmt=aout em=nbsd bfd_gas=yes ;;
204
205       m88k-*-coff*)         fmt=coff targ=m88kcoff ;;
206
207       # don't change em like *-*-bsd does
208       mips-dec-bsd*)        fmt=aout targ=mips-lit ;;
209       mips-sony-bsd*)       fmt=ecoff targ=mips-big ;;
210       mips-*-bsd*)          AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.) ;;
211       mips-*-ultrix*)       fmt=ecoff targ=mips-lit ;;
212       mips-*-ecoff*)        fmt=ecoff 
213                             case "$endian" in
214                             big) targ=mips-big ;;
215                             *)   targ=mips-lit ;;
216                             esac
217                             ;;
218       mips-*-ecoff*)        fmt=ecoff targ=mips-big ;;
219       mips-*-gnu*)          fmt=aout
220                             case "$endian" in
221                             big) targ=mips-big ;;
222                             *)   targ=mips-lit ;;
223                             esac
224                             ;;
225       mips-*-irix5*)        fmt=elf targ=mips-big ;;
226       mips-*-irix*)         fmt=ecoff targ=mips-big ;;
227       mips-*-riscos*)       fmt=ecoff targ=mips-big ;;
228       mips-*-sysv*)         fmt=ecoff targ=mips-big ;;
229       mips-*-elf*)          fmt=elf 
230                             case "$endian" in
231                             big) targ=mips-big ;;
232                             *)   targ=mips-lit ;;
233                             esac
234                             ;;
235       ppc-*-aix*)           fmt=coff ;;
236       ppc-*-elf* | ppc-*-eabi* | ppc-*-sysv4*)
237                             fmt=elf
238                             case "$endian" in
239                             big)  targ=ppc-big ;;
240                             *)    targ=ppc-lit ;;
241                             esac
242                             ;;
243       ppc-*-netware*)       fmt=elf em=ppcnw ;;
244
245       sh-*-coff)            fmt=coff ;;
246
247 # start-sanitize-rce
248       rce-*-aout)           fmt=aout ;;
249 # end-sanitize-rce
250
251       ns32k-pc532-mach*)    fmt=aout em=pc532mach ;;
252       ns32k-pc532-netbsd*)  fmt=aout em=nbsd532 ;;
253
254       sparc-*-sunos4*)      fmt=aout em=sun3 ;;
255       sparc-*-aout | sparc*-*-vxworks)
256                             fmt=aout ;;
257       sparc-*-coff)         fmt=coff ;;
258       sparc-*-lynxos*)      fmt=coff em=lynx ;;
259       sparc-fujitsu-none)   fmt=aout ;;
260       sparc-*-elf | sparc*-*-solaris*)
261                             fmt=elf ;;
262       sparc-*-netbsd*)      fmt=aout em=nbsd bfd_gas=yes ;;
263
264       vax-*-bsd* | vax-*-ultrix*)
265                             fmt=aout ;;
266       vax-*-vms)            fmt=vms ;;
267
268       z8k-*-coff | z8k-*-sim)
269                             fmt=coff ;;
270
271       w65-*-*)              fmt=coff ;;
272
273       *-*-aout | *-*-scout)
274                             fmt=aout ;;
275       *-*-nindy*)
276                             fmt=bout ;;
277       *-*-bsd*)
278                             fmt=aout em=sun3 ;;
279       *-*-generic)          fmt=generic ;;
280       *-*-xray | *-*-hms)   fmt=coff ;;
281       *-*-sim)              fmt=coff ;;
282       *-*-elf | *-*-sysv4* | *-*-solaris*)
283                             AC_MSG_WARN(GAS support for ELF format is incomplete.)
284                             fmt=elf dev=yes ;;
285       *-*-vxworks)          fmt=aout ;;
286       *-*-netware)          fmt=elf ;;
287     esac
288
289     case ${cpu_type}-${fmt} in
290       arm-*)    bfd_gas=yes ;;
291     # not yet
292     # i386-aout)        bfd_gas=preferred ;;
293       mips-*)   bfd_gas=yes ;;
294       ns32k-*)  bfd_gas=yes ;;
295       ppc-*)    bfd_gas=yes ;;
296       sparc-*)  bfd_gas=yes ;;
297       *-elf)    bfd_gas=yes ;;
298       *-ecoff)  bfd_gas=yes ;;
299       *-som)    bfd_gas=yes ;;
300       *)                ;;
301     esac
302
303 # See if we really can support this configuration with the emulation code.
304
305     if test $this_target = $target ; then
306       primary_bfd_gas=$bfd_gas
307       obj_format=$fmt
308       gas_target=$targ
309       te_file=$em
310
311       if test $bfd_gas = no ; then
312         # Can't support other configurations this way.
313         break
314       fi
315     elif test $bfd_gas = no ; then
316       # Can't support this configuration.
317       break
318     fi
319
320 # From target name and format, produce a list of supported emulations.
321
322     case ${generic_target}-${fmt} in
323       mips-*-irix5*-*)  emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
324       mips-*-*-ecoff)   case "$endian" in
325                         big)    emulation="mipsbecoff mipslecoff mipsecoff" ;;
326                         *)      emulation="mipslecoff mipsbecoff mipsecoff" ;;
327                         esac ;;
328       mips-*-*-elf)     case "$endian" in
329                         big)    emulation="mipsbelf mipslelf mipself" ;;
330                         *)      emulation="mipslelf mipsbelf mipself" ;;
331                         esac ;;
332     esac
333
334     emulations="$emulations $emulation"
335
336 # Other random stuff.
337
338     test -n "$want_sparcv9" && AC_DEFINE(sparcv9)
339
340     case ${cpu_type} in
341       m68k) extra_objects="$extra_objects m68k-parse.o" ;;
342     esac
343
344 done
345
346 # Assign floating point type.  Most processors with FP support
347 # IEEE FP.  On those that don't support FP at all, usually IEEE
348 # is emulated.
349 case ${target_cpu} in
350   vax | tahoe ) atof=${target_cpu} ;;
351   *)            atof=ieee ;;
352 esac
353
354 case "${obj_format}" in
355   "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
356 esac
357
358 dnl
359 dnl Make sure the desired support files exist.
360 dnl
361
362 if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
363   AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
364 fi
365
366 if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
367   AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
368 fi
369
370 # and target makefile frag
371
372 target_frag=${srcdir}/config/${gas_target}.mt
373 if test ! -r ${target_frag}; then
374   target_frag=/dev/null # ick! but subst_file can't be conditionalized
375 fi
376 AC_SUBST_FILE(target_frag)
377
378 case ${user_bfd_gas}-${primary_bfd_gas} in
379   yes-yes | no-no)
380     # We didn't override user's choice.
381     ;;
382   no-yes)
383     AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
384     ;;
385   no-preferred)
386     primary_bfd_gas=no
387     ;;
388   *-preferred)
389     primary_bfd_gas=yes
390     ;;
391   yes-*)
392     primary_bfd_gas=yes
393     ;;
394   -*)
395     # User specified nothing.
396     ;;
397 esac
398
399 # Some COFF configurations want these random other flags set.
400 case ${obj_format} in
401   coff)
402     case ${target_cpu_type} in
403       i386) AC_DEFINE(I386COFF) ;;
404       m68k) AC_DEFINE(M68KCOFF) ;;
405       m88k) AC_DEFINE(M88KCOFF) ;;
406     esac
407     ;;
408 esac
409
410 # Getting this done right is going to be a bitch.  Each configuration specified
411 # with --enable-targets=... should be checked for environment, format, cpu, and
412 # bfd_gas setting.
413 #
414 # For each configuration, the necessary object file support code must be linked
415 # in.  This might be only one, it might be up to four.  The necessary emulation
416 # code needs to be provided, too.
417 #
418 # And then there's "--enable-targets=all"....
419 #
420 # For now, just always do it for MIPS ELF or ECOFF configurations.  Sigh.
421
422 formats="${obj_format}"
423 emfiles=""
424 EMULATIONS=""
425 GAS_UNIQ(emulations)
426 for em in . $emulations ; do
427   case $em in
428     .)  continue ;;
429     mipsbelf | mipslelf)
430         fmt=elf   file=mipself ;;
431     mipsbecoff | mipslecoff)
432         fmt=ecoff file=mipsecoff ;;
433   esac
434   formats="$formats $fmt"
435   emfiles="$emfiles e-$file.o"
436   EMULATIONS="$EMULATIONS &$em,"
437 done
438 GAS_UNIQ(formats)
439 GAS_UNIQ(emfiles)
440 if test `set . $formats ; shift ; echo $#` -gt 1 ; then
441   for fmt in $formats ; do
442     case $fmt in
443       aout)     AC_DEFINE(OBJ_MAYBE_AOUT)    ;;
444       bout)     AC_DEFINE(OBJ_MAYBE_BOUT)    ;;
445       coff)     AC_DEFINE(OBJ_MAYBE_COFF)    ;;
446       ecoff)    AC_DEFINE(OBJ_MAYBE_ECOFF)   ;;
447       elf)      AC_DEFINE(OBJ_MAYBE_ELF)     ;;
448       generic)  AC_DEFINE(OBJ_MAYBE_GENERIC) ;;
449       hp300)    AC_DEFINE(OBJ_MAYBE_HP300)   ;;
450       ieee)     AC_DEFINE(OBJ_MAYBE_IEEE)    ;;
451       som)      AC_DEFINE(OBJ_MAYBE_SOM)     ;;
452       vms)      AC_DEFINE(OBJ_MAYBE_VMS)     ;;
453     esac
454     extra_objects="$extra_objects obj-$fmt.o"
455   done
456   obj_format=multi
457 fi
458 if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
459   te_file=multi
460   extra_objects="$extra_objects $emfiles"
461   DEFAULT_EMULATION=`set . $emulations ; echo $2`
462   AC_DEFINE(USE_EMULATIONS)
463 fi
464 AC_SUBST(extra_objects)
465 AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS)
466 AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION")
467
468 files="config/tc-${target_cpu_type}.c config/tc-${target_cpu_type}.h \
469         config/obj-${obj_format}.h config/obj-${obj_format}.c \
470         config/te-${te_file}.h config/atof-${atof}.c \
471         $extra_files"
472 links="targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c \
473         $extra_links"
474
475 case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
476   yes-*-coff)   need_bfd=yes ;;
477   no-*-coff)    need_bfd=yes
478                 AC_DEFINE(MANY_SEGMENTS) ;;
479 esac
480
481 reject_dev_configs=yes
482
483 case ${reject_dev_configs}-${dev} in
484   yes-yes) # Oops.
485     AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
486     ;;
487 esac
488
489 AC_SUBST(target_cpu_type)
490 AC_SUBST(obj_format)
491 AC_SUBST(atof)
492 dnl AC_SUBST(emulation)
493
494 AC_LINK_FILES($files, $links)
495
496 case "${primary_bfd_gas}" in
497   yes)  AC_DEFINE(BFD_ASSEMBLER)
498         need_bfd=yes ;;
499 esac
500
501 case "${need_bfd}" in
502   yes)  BFDLIB=../bfd/libbfd.a
503         ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h"
504         ;;
505 esac
506 AC_SUBST(BFDLIB)
507 AC_SUBST(ALL_OBJ_DEPS)
508
509 AC_DEFINE_UNQUOTED(TARGET_ALIAS,        "${target_alias}")
510 AC_DEFINE_UNQUOTED(TARGET_CANONICAL,    "${target}")
511 AC_DEFINE_UNQUOTED(TARGET_CPU,          "${target_cpu}")
512 AC_DEFINE_UNQUOTED(TARGET_VENDOR,       "${target_vendor}")
513 AC_DEFINE_UNQUOTED(TARGET_OS,           "${target_os}")
514
515 AC_PROG_CC
516 AC_PROG_INSTALL
517
518 AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
519
520 # Put this here so that autoconf's "cross-compiling" message doesn't confuse
521 # people who are not cross-compiling but are compiling cross-assemblers.
522 AC_MSG_CHECKING(whether compiling a cross-assembler)
523 if test "${host}" = "${target}"; then
524   cross_gas=no
525 else
526   cross_gas=yes
527   AC_DEFINE(CROSS_COMPILE)
528 fi
529 AC_MSG_RESULT($cross_gas)
530
531 dnl ansidecl.h will deal with const
532 dnl AC_CONST
533 AC_FUNC_ALLOCA
534 AC_C_INLINE
535
536 # VMS doesn't have unlink.
537 AC_CHECK_FUNCS(unlink remove, break)
538
539 # Some systems don't have sbrk().
540 AC_CHECK_FUNCS(sbrk)
541
542 # Some non-ANSI preprocessors botch requoting inside strings.  That's bad
543 # enough, but on some of those systems, the assert macro relies on requoting
544 # working properly!
545 GAS_WORKING_ASSERT
546
547 # On some systems, the system header files may not declare malloc, realloc,
548 # and free.  There are places where gas needs these functions to have been
549 # declared -- such as when taking their addresses.
550 gas_test_headers="
551 #ifdef HAVE_MEMORY_H
552 #include <memory.h>
553 #endif
554 #ifdef HAVE_STRING_H
555 #include <string.h>
556 #endif
557 #ifdef HAVE_STDLIB_H
558 #include <stdlib.h>
559 #endif
560 #ifdef HAVE_UNISTD_H
561 #include <unistd.h>
562 #endif
563 "
564 GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
565 GAS_CHECK_DECL_NEEDED(free, f, int f, $gas_test_headers)
566
567 # Does errno.h declare errno, or do we have to add a separate declaration
568 # for it?
569 GAS_CHECK_DECL_NEEDED(errno, f, int f, [
570 #ifdef HAVE_ERRNO_H
571 #include <errno.h>
572 #endif
573 ])
574
575 AC_CONFIG_SUBDIRS(testsuite)
576
577 dnl This must come last.
578 AC_OUTPUT(Makefile doc/Makefile .gdbinit:gdbinit.in)
This page took 0.055271 seconds and 4 git commands to generate.