1999-05-28 Martin Dorey <mdorey@madge.com>
[deliverable/binutils-gdb.git] / gas / configure.in
CommitLineData
252b5132
RH
1dnl Process this file with autoconf to produce a configure script.
2dnl
3dnl And be careful when changing it! If you must add tests with square
4dnl brackets, be sure changequote invocations surround it.
5dnl
6dnl
7dnl v2.5 needed for --bindir et al
8AC_PREREQ(2.13)
9AC_INIT(as.h)
10
11AC_CANONICAL_SYSTEM
12
13AM_INIT_AUTOMAKE(gas, 2.9.4)
14
15AM_PROG_LIBTOOL
16
17user_bfd_gas=
18AC_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) ;;
24esac])dnl
25AC_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')
29 ;;
30 no) enable_targets= ;;
31 *) enable_targets=$enableval ;;
32esac])dnl
33AC_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]) ;;
39esac])dnl
40
41using_cgen=no
42
43# Generate a header file
44AM_CONFIG_HEADER(config.h:config.in)
45
46te_file=generic
47
48# Makefile target for installing gas in $(tooldir)/bin.
49install_tooldir=install-exec-tooldir
50
51canon_targets=""
52if test -n "$enable_targets" ; then
53 for t in `echo $enable_targets | sed 's/,/ /g'`; do
54 result=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $t 2>/dev/null`
55 if test -n "$result" ; then
56 canon_targets="$canon_targets $result"
57# else
58# # Permit "all", etc. We don't support it yet though.
59# canon_targets="$canon_targets $t"
60 fi
61 done
62 GAS_UNIQ(canon_targets)
63fi
64
65emulations=""
66
67for this_target in $target $canon_targets ; do
68
69changequote(,)dnl
70 eval `echo $this_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/cpu=\1 vendor=\2 os=\3/'`
71changequote([,])dnl
72
73 # check for architecture variants
74 arch=
75 endian=
76 case ${cpu} in
77 alpha*) cpu_type=alpha ;;
78 armeb) cpu_type=arm endian=big ;;
79 arm*) cpu_type=arm endian=little ;;
80 armb*) cpu_type=arm endian=little ;;
81 armv*l) cpu_type=arm endian=little ;;
82 armv*b) cpu_type=arm endian=big ;;
83 strongarm*) cpu_type=arm endian=little ;;
84 thumb*) cpu_type=arm endian=little ;;
85 hppa*) cpu_type=hppa ;;
86changequote(,)dnl
87 i[456]86) cpu_type=i386 ;;
88 m680[012346]0) cpu_type=m68k ;;
89changequote([,])dnl
90 m68008) cpu_type=m68k ;;
91 m683??) cpu_type=m68k ;;
92 m5200) cpu_type=m68k ;;
93 m8*) cpu_type=m88k ;;
94 mips*el) cpu_type=mips endian=little ;;
95 mips*) cpu_type=mips endian=big ;;
96 powerpcle*) cpu_type=ppc endian=little ;;
97 powerpc*) cpu_type=ppc endian=big ;;
98 rs6000*) cpu_type=ppc ;;
99 sparclite*) cpu_type=sparc arch=sparclite ;;
100 sparclet*) cpu_type=sparc arch=sparclet ;;
101 sparc64*) cpu_type=sparc arch=v9-64 ;;
102 sparc86x*) cpu_type=sparc arch=sparc86x ;;
103 sparc*) cpu_type=sparc arch=sparclite ;; # ??? See tc-sparc.c.
104 v850*) cpu_type=v850 ;;
105 *) cpu_type=${cpu} ;;
106 esac
107
108 if test ${this_target} = $target ; then
109 target_cpu_type=${cpu_type}
110 elif test ${target_cpu_type} != ${cpu_type} ; then
111 continue
112 fi
113
114 generic_target=${cpu_type}-$vendor-$os
115 dev=no
116 bfd_gas=no
117 em=generic
118
119 # assign object format
120 case ${generic_target} in
121 a29k-*-coff) fmt=coff ;;
122 a29k-amd-udi) fmt=coff ;;
123 a29k-amd-ebmon) fmt=coff ;;
124 a29k-nyu-sym1) fmt=coff ;;
125 a29k-*-vxworks*) fmt=coff ;;
126
127 alpha*-*-*vms*) fmt=evax ;;
128 alpha*-*-netware*) fmt=ecoff ;;
129 alpha*-*-openbsd*) fmt=ecoff ;;
130 alpha*-*-osf*) fmt=ecoff ;;
131 alpha*-*-linuxecoff*) fmt=ecoff ;;
132 alpha*-*-linux-gnu*) fmt=elf em=linux ;;
133 alpha*-*-netbsd*) fmt=elf em=nbsd ;;
134
135 arc-*-elf*) fmt=elf bfd_gas=yes ;;
136
137 arm-*-aout) fmt=aout ;;
138 arm-*-coff | thumb-*-coff) fmt=coff ;;
139 arm-*-elf | thumb-*-elf) fmt=elf ;;
140 arm-*-linux*aout*) fmt=aout em=linux ;;
141 arm-*-linux* | armv*-*-linux-gnu) fmt=elf em=linux ;;
142 arm-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
143 arm-*-oabi | thumb-*-oabi) fmt=elf ;;
144 arm-epoc-pe | thumb-epoc-pe) fmt=coff em=epoc-pe ;;
145 arm-*-pe | thumb-*-pe) fmt=coff em=pe ;;
146 arm-*-riscix*) fmt=aout em=riscix ;;
147
148 d10v-*-*) fmt=elf bfd_gas=yes ;;
149 d30v-*-*) fmt=elf bfd_gas=yes ;;
150
151
152 fr30-*-*) fmt=elf bfd_gas=yes ;;
153
154 hppa-*-*elf*) fmt=elf em=hppa ;;
155 hppa-*-lites*) fmt=elf em=hppa ;;
156 hppa-*-osf*) fmt=som em=hppa ;;
157 hppa-*-rtems*) fmt=elf em=hppa ;;
158 hppa-*-hpux*) fmt=som em=hppa ;;
159 hppa-*-mpeix*) fmt=som em=hppa ;;
160 hppa-*-bsd*) fmt=som em=hppa ;;
161 hppa-*-hiux*) fmt=som em=hppa ;;
162
163 h8300-*-coff) fmt=coff ;;
164
165 i386-ibm-aix*) fmt=coff em=i386aix ;;
166 i386-sequent-bsd*) fmt=aout em=dynix bfd_gas=yes ;;
167 i386-*-beospe*) fmt=coff em=pe bfd_gas=yes ;;
168 i386-*-beoself* | i386-*-beos*) fmt=elf bfd_gas=yes ;;
169 i386-*-bsd*) fmt=aout em=386bsd ;;
170 i386-*-netbsd0.8) fmt=aout em=386bsd ;;
171 i386-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes;;
172 i386-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes;;
173 i386-*-linux*aout* | i386-*-linuxoldld) fmt=aout em=linux ;;
174 i386-*-linux*coff*) fmt=coff em=linux ;;
175 i386-*-linux-gnu*) fmt=elf em=linux bfd_gas=yes ;;
176 i386-*-lynxos*) fmt=coff em=lynx ;;
177 i386-*-sysv4* | i386-*-solaris* | i386-*-elf)
178 fmt=elf bfd_gas=yes ;;
179 i386-*-freebsdelf*) fmt=elf bfd_gas=yes ;;
180 i386-*-freebsd*) fmt=aout em=386bsd ;;
181 i386-*-coff | i386-*-sysv* | i386-*-sco3.2v5*coff | i386-*-isc*)
182 fmt=coff ;;
183 i386-*-sco3.2v5*) fmt=elf
184 if test ${this_target} = $target; then
185 AC_DEFINE(SCO_ELF, 1,
186 [Define if defaulting to ELF on SCO 5.])
187 fi
188 ;;
189 i386-*-sco3.2*) fmt=coff ;;
190 i386-*-vsta) fmt=aout ;;
191 i386-*-msdosdjgpp* | i386-*-go32* | i386-go32-rtems*)
192 fmt=coff em=go32;;
53f3de98 193 i386-*-rtemself*) fmt=elf ;;
252b5132
RH
194 i386-*-rtems*) fmt=coff ;;
195 i386-*-gnu*) fmt=elf ;;
196 i386-*-mach*)
197 fmt=aout em=mach bfd_gas=yes ;;
198 i386-*-msdos*) fmt=aout ;;
199 i386-*-moss*) fmt=elf ;;
200 i386-*-pe) fmt=coff em=pe ;;
201 i386-*-cygwin*) fmt=coff em=pe bfd_gas=yes ;;
202 i386-*-mingw32*) fmt=coff em=pe bfd_gas=yes ;;
203 i386-*-*nt*) fmt=coff em=pe ;;
204 i960-*-bout) fmt=bout ;;
205 i960-*-coff) fmt=coff em=ic960 ;;
206 i960-*-rtems*) fmt=coff em=ic960 ;;
207 i960-*-nindy*) fmt=bout ;;
208 i960-*-vxworks4*) fmt=bout ;;
209 i960-*-vxworks5.0) fmt=bout ;;
210 i960-*-vxworks5.*) fmt=coff em=ic960 ;;
211 i960-*-vxworks*) fmt=bout ;;
bedf545c 212 i960-*-elf*) fmt=elf ;;
252b5132
RH
213
214 m32r-*-*) fmt=elf bfd_gas=yes ;;
215
216 m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*)
217 fmt=aout em=sun3 ;;
218 m68k-motorola-sysv*) fmt=coff em=delta ;;
219 m68k-bull-sysv3*) fmt=coff em=dpx2 ;;
220 m68k-apollo-*) fmt=coff em=apollo ;;
221 m68k-*-sysv4*) # must be before -sysv*
222 fmt=elf em=svr4 ;;
223 m68k-*-elf*) fmt=elf ;;
224 m68k-*-coff | m68k-*-sysv* | m68k-*-rtems*)
225 fmt=coff ;;
226 m68k-*-hpux*) fmt=hp300 em=hp300 ;;
227 m68k-*-linux*aout*) fmt=aout em=linux ;;
228 m68k-*-linux-gnu*) fmt=elf em=linux ;;
229 m68k-*-gnu*) fmt=elf ;;
230 m68k-*-lynxos*) fmt=coff em=lynx ;;
231 m68k-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
232 m68k-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
233 m68k-apple-aux*) fmt=coff em=aux ;;
234 m68k-*-psos*) fmt=elf em=psos;;
235
236 m88k-motorola-sysv3*) fmt=coff em=delt88 ;;
237 m88k-*-coff*) fmt=coff ;;
238
239 mcore-*-elf) fmt=elf bfd_gas=yes ;;
240 mcore-*-pe) fmt=coff em=pe bfd_gas=yes ;;
241
242 # don't change em like *-*-bsd does
243 mips-dec-netbsd*) fmt=elf endian=little ;;
244 mips-dec-openbsd*) fmt=elf endian=little ;;
245 mips-dec-bsd*) fmt=aout endian=little ;;
246 mips-sony-bsd*) fmt=ecoff ;;
247 mips-*-bsd*) AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.) ;;
248 mips-*-ultrix*) fmt=ecoff endian=little ;;
249 mips-*-osf*) fmt=ecoff endian=little ;;
250 mips-*-ecoff*) fmt=ecoff ;;
251 mips-*-ecoff*) fmt=ecoff ;;
252 mips-*-irix6*) fmt=elf ;;
253 mips-*-irix5*) fmt=elf ;;
254 mips-*-irix*) fmt=ecoff ;;
255 mips-*-lnews*) fmt=ecoff em=lnews ;;
256 mips-*-riscos*) fmt=ecoff ;;
257 mips-*-sysv*) fmt=ecoff ;;
258 mips-*-elf* | mips-*-rtems* | mips-*-linux-gnu* | mips-*-gnu* | mips-*-openbsd*)
259 fmt=elf ;;
260 mips-*-vxworks*) fmt=elf
261 AC_DEFINE(MIPS_STABS_ELF, 1,
262 [Use ELF stabs for MIPS, not ECOFF stabs])
263 ;;
264 mn10200-*-*) fmt=elf bfd_gas=yes ;;
265 mn10300-*-*) fmt=elf bfd_gas=yes ;;
266 ppc-*-pe | ppc-*-cygwin* | ppc-*-winnt*)
267 fmt=coff em=pe ;;
268 ppc-*-aix*) fmt=coff ;;
269 ppc-*-beos*) fmt=coff ;;
270 ppc-*-*bsd* | ppc-*-elf* | ppc-*-eabi* | ppc-*-sysv4*)
271 fmt=elf ;;
272 ppc-*-linux-gnu*) fmt=elf
273 case "$endian" in
274 big) ;;
275 *) AC_MSG_ERROR(GNU/Linux must be configured big endian) ;;
276 esac
277 ;;
278 ppc-*-solaris*) fmt=elf
279 if test ${this_target} = $target; then
280 AC_DEFINE(TARGET_SOLARIS_COMMENT, 1,
281 [Define if default target is PowerPC Solaris.])
282 fi
283 if test x${endian} = xbig; then
284 AC_MSG_ERROR(Solaris must be configured little endian)
285 fi
286 ;;
287 ppc-*-rtems*) fmt=elf ;;
288 ppc-*-macos* | ppc-*-mpw*)
289 fmt=coff em=macos ;;
290 ppc-*-netware*) fmt=elf em=ppcnw ;;
291
292 sh-*-elf*) fmt=elf ;;
293 sh-*-coff*) fmt=coff ;;
53f3de98 294 sh-*-rtemself*) fmt=elf ;;
252b5132
RH
295 sh-*-rtems*) fmt=coff ;;
296
297 ns32k-pc532-mach* | ns32k-pc532-ux*) fmt=aout em=pc532mach ;;
298 ns32k-pc532-netbsd* | ns32k-pc532-lites*) fmt=aout em=nbsd532 ;;
299 ns32k-pc532-openbsd*) fmt=aout em=nbsd532 ;;
300
301 sparc-*-rtems*) fmt=aout ;;
302 sparc-*-sunos4*) fmt=aout em=sun3 ;;
303 sparc-*-aout | sparc*-*-vxworks*)
304 fmt=aout em=sparcaout ;;
305 sparc-*-coff) fmt=coff ;;
306 sparc-*-linux*aout*) fmt=aout em=linux ;;
307 sparc-*-linux-gnu*) fmt=elf em=linux ;;
308 sparc-*-lynxos*) fmt=coff em=lynx ;;
309 sparc-fujitsu-none) fmt=aout ;;
310 sparc-*-elf | sparc-*-sysv4* | sparc-*-solaris*)
311 fmt=elf ;;
312 sparc-*-netbsd*) fmt=aout em=nbsd ;;
313 sparc-*-openbsd*) fmt=aout em=nbsd ;;
314
315 strongarm-*-coff) fmt=coff ;;
316 strongarm-*-elf) fmt=elf ;;
317
318 tic30-*-*aout*) fmt=aout bfd_gas=yes ;;
319 tic30-*-*coff*) fmt=coff bfd_gas=yes ;;
320 tic80-*-*) fmt=coff ;;
321
322 v850-*-*) fmt=elf bfd_gas=yes ;;
323 v850e-*-*) fmt=elf bfd_gas=yes ;;
324 v850ea-*-*) fmt=elf bfd_gas=yes ;;
325
326 vax-*-bsd* | vax-*-ultrix*)
327 fmt=aout ;;
328 vax-*-vms) fmt=vms ;;
329
330
331 z8k-*-coff | z8k-*-sim)
332 fmt=coff ;;
333
334 w65-*-*) fmt=coff ;;
335
336 *-*-aout | *-*-scout)
337 fmt=aout ;;
338 *-*-nindy*)
339 fmt=bout ;;
340 *-*-bsd*)
341 fmt=aout em=sun3 ;;
342 *-*-generic) fmt=generic ;;
343 *-*-xray | *-*-hms) fmt=coff ;;
344 *-*-sim) fmt=coff ;;
345 *-*-elf | *-*-sysv4* | *-*-solaris*)
346 AC_MSG_WARN(GAS support for ${generic_target} is incomplete.)
347 fmt=elf dev=yes ;;
348 *-*-vxworks) fmt=aout ;;
349 *-*-netware) fmt=elf ;;
350 esac
351
352 if test ${this_target} = $target ; then
353 endian_def=
354 if test x${endian} = xbig; then
355 endian_def=1
356 elif test x${endian} = xlittle; then
357 endian_def=0
358 fi
359 if test x${endian_def} != x; then
360 AC_DEFINE_UNQUOTED(TARGET_BYTES_BIG_ENDIAN, $endian_def,
361 [Define as 1 if big endian.])
362 fi
363 fi
364
365 case ${cpu_type}-${fmt} in
366 alpha*-*) bfd_gas=yes ;;
367 arm-*) bfd_gas=yes ;;
368 # not yet
369 # i386-aout) bfd_gas=preferred ;;
370 mips-*) bfd_gas=yes ;;
371 ns32k-*) bfd_gas=yes ;;
372 ppc-*) bfd_gas=yes ;;
373 sparc-*) bfd_gas=yes ;;
374 strongarm-*) bfd_gas=yes ;;
375 *-elf) bfd_gas=yes ;;
376 *-ecoff) bfd_gas=yes ;;
377 *-som) bfd_gas=yes ;;
378 *) ;;
379 esac
380
381# Other random stuff.
382
383 # Do we need the opcodes library?
384 case ${cpu_type} in
385 vax | i386 | tic30)
386 ;;
387
388 *)
389 need_opcodes=yes
390
391 case "${enable_shared}" in
392 yes) shared_opcodes=true ;;
393 *opcodes*) shared_opcodes=true ;;
394 *) shared_opcodes=false ;;
395 esac
396 if test "${shared_opcodes}" = "true"; then
397 # A shared libopcodes must be linked against libbfd.
398 need_bfd=yes
399 fi
400 ;;
401 esac
402
403 # Any other special object files needed ?
404 case ${cpu_type} in
405 fr30 | m32r)
406 using_cgen=yes
407 ;;
408
409 m68k)
410 case ${extra_objects} in
411 *m68k-parse.o*) ;;
412 *) extra_objects="$extra_objects m68k-parse.o" ;;
413 esac
414 ;;
415
416 mips)
417 echo ${extra_objects} | grep -s "itbl-parse.o"
418 if test $? -ne 0 ; then
419 extra_objects="$extra_objects itbl-parse.o"
420 fi
421
422 echo ${extra_objects} | grep -s "itbl-lex.o"
423 if test $? -ne 0 ; then
424 extra_objects="$extra_objects itbl-lex.o"
425 fi
426
427 echo ${extra_objects} | grep -s "itbl-ops.o"
428 if test $? -ne 0 ; then
429 extra_objects="$extra_objects itbl-ops.o"
430 fi
431 ;;
432
433 sparc)
434 if test $this_target = $target ; then
435 AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
436 fi
437 ;;
438 *)
439 ;;
440 esac
441
442 if test $using_cgen = yes ; then
443 case "x${extra_objects}" in
444 *cgen.o*) ;;
445 *) extra_objects="$extra_objects cgen.o" ;;
446 esac
447 fi
448
449# See if we really can support this configuration with the emulation code.
450
451 if test $this_target = $target ; then
452 primary_bfd_gas=$bfd_gas
453 obj_format=$fmt
454 te_file=$em
455
456 if test $bfd_gas = no ; then
457 # Can't support other configurations this way.
458 break
459 fi
460 elif test $bfd_gas = no ; then
461 # Can't support this configuration.
462 break
463 fi
464
465# From target name and format, produce a list of supported emulations.
466
467 case ${generic_target}-${fmt} in
468 mips-*-irix5*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
469 mips-*-linux-gnu*-*) case "$endian" in
470 big) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
471 *) emulation="mipslelf mipsbelf mipself mipslecoff mipsbecoff mipsecoff" ;;
472 esac ;;
473 mips-*-lnews*-ecoff) ;;
474 mips-*-*-ecoff) case "$endian" in
475 big) emulation="mipsbecoff mipslecoff mipsecoff" ;;
476 *) emulation="mipslecoff mipsbecoff mipsecoff" ;;
477 esac ;;
478 mips-*-*-elf) case "$endian" in
479 big) emulation="mipsbelf mipslelf mipself" ;;
480 *) emulation="mipslelf mipsbelf mipself" ;;
481 # Uncommenting the next line will turn on support for i386 COFF
482 # in any i386 ELF configuration. This probably doesn't work
483 # correctly.
484 # i386-*-*-elf) emulation="i386coff i386elf" ;;
485 esac ;;
486 esac
487
488 emulations="$emulations $emulation"
489
490done
491
492# Assign floating point type. Most processors with FP support
493# IEEE FP. On those that don't support FP at all, usually IEEE
494# is emulated.
495case ${target_cpu} in
496 vax | tahoe ) atof=${target_cpu} ;;
497 *) atof=ieee ;;
498esac
499
500case "${obj_format}" in
501 "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
502esac
503
504# Unfortunately the cpu in cpu-opc.h file isn't always $(TARGET_CPU).
505cgen_cpu_prefix=""
506if test $using_cgen = yes ; then
507 case ${target_cpu} in
508 *) cgen_cpu_prefix=${target_cpu} ;;
509 esac
510 AC_SUBST(cgen_cpu_prefix)
511 AC_DEFINE(USING_CGEN, 1, [Using cgen code?])
512fi
513
514dnl
515dnl Make sure the desired support files exist.
516dnl
517
518if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
519 AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
520fi
521
522if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
523 AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
524fi
525
526case ${user_bfd_gas}-${primary_bfd_gas} in
527 yes-yes | no-no)
528 # We didn't override user's choice.
529 ;;
530 no-yes)
531 AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
532 ;;
533 no-preferred)
534 primary_bfd_gas=no
535 ;;
536 *-preferred)
537 primary_bfd_gas=yes
538 ;;
539 yes-*)
540 primary_bfd_gas=yes
541 ;;
542 -*)
543 # User specified nothing.
544 ;;
545esac
546
547# Some COFF configurations want these random other flags set.
548case ${obj_format} in
549 coff)
550 case ${target_cpu_type} in
551 i386) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
552 m68k) AC_DEFINE(M68KCOFF, 1, [Using m68k COFF?]) ;;
553 m88k) AC_DEFINE(M88KCOFF, 1, [Using m88k COFF?]) ;;
554 esac
555 ;;
556esac
557
558# Getting this done right is going to be a bitch. Each configuration specified
559# with --enable-targets=... should be checked for environment, format, cpu, and
560# bfd_gas setting.
561#
562# For each configuration, the necessary object file support code must be linked
563# in. This might be only one, it might be up to four. The necessary emulation
564# code needs to be provided, too.
565#
566# And then there's "--enable-targets=all"....
567#
568# For now, just always do it for MIPS ELF or ECOFF configurations. Sigh.
569
570formats="${obj_format}"
571emfiles=""
572EMULATIONS=""
573GAS_UNIQ(emulations)
574for em in . $emulations ; do
575 case $em in
576 .) continue ;;
577 mipsbelf | mipslelf)
578 fmt=elf file=mipself ;;
579 mipsbecoff | mipslecoff)
580 fmt=ecoff file=mipsecoff ;;
581 i386coff)
582 fmt=coff file=i386coff ;;
583 i386elf)
584 fmt=elf file=i386elf ;;
585 esac
586 formats="$formats $fmt"
587 emfiles="$emfiles e-$file.o"
588 EMULATIONS="$EMULATIONS &$em,"
589done
590GAS_UNIQ(formats)
591GAS_UNIQ(emfiles)
592if test `set . $formats ; shift ; echo $#` -gt 1 ; then
593 for fmt in $formats ; do
594 case $fmt in
595 aout) AC_DEFINE(OBJ_MAYBE_AOUT, 1, [a.out support?]) ;;
596 bout) AC_DEFINE(OBJ_MAYBE_BOUT, 1, [b.out support?]) ;;
597 coff) AC_DEFINE(OBJ_MAYBE_COFF, 1, [COFF support?]) ;;
598 ecoff) AC_DEFINE(OBJ_MAYBE_ECOFF, 1, [ECOFF support?]) ;;
599 elf) AC_DEFINE(OBJ_MAYBE_ELF, 1, [ELF support?]) ;;
600 generic) AC_DEFINE(OBJ_MAYBE_GENERIC, 1, [generic support?]) ;;
601 hp300) AC_DEFINE(OBJ_MAYBE_HP300, 1, [HP300 support?]) ;;
602 ieee) AC_DEFINE(OBJ_MAYBE_IEEE, 1, [IEEE support?]) ;;
603 som) AC_DEFINE(OBJ_MAYBE_SOM, 1, [SOM support?]) ;;
604 vms) AC_DEFINE(OBJ_MAYBE_VMS, 1, [VMS support?]) ;;
605 esac
606 extra_objects="$extra_objects obj-$fmt.o"
607 done
608 obj_format=multi
609fi
610if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
611 te_file=multi
612 extra_objects="$extra_objects $emfiles"
613 DEFAULT_EMULATION=`set . $emulations ; echo $2`
614 AC_DEFINE(USE_EMULATIONS, 1, [Use emulation support?])
615fi
616AC_SUBST(extra_objects)
617AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS, [Supported emulations.])
618AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION",
619 [Default emulation.])
620
621case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
622 yes-*-coff) need_bfd=yes ;;
623 no-*-coff) need_bfd=yes
624 AC_DEFINE(MANY_SEGMENTS, 1, [old COFF support?]) ;;
625esac
626
627reject_dev_configs=yes
628
629case ${reject_dev_configs}-${dev} in
630 yes-yes) # Oops.
631 AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
632 ;;
633esac
634
635AC_SUBST(target_cpu_type)
636AC_SUBST(obj_format)
637AC_SUBST(te_file)
638AC_SUBST(install_tooldir)
639AC_SUBST(atof)
640dnl AC_SUBST(emulation)
641
642case "${primary_bfd_gas}" in
643 yes) AC_DEFINE(BFD_ASSEMBLER, 1, [Use BFD interface?])
644 need_bfd=yes ;;
645esac
646
647# do we need the opcodes library?
648case "${need_opcodes}" in
649yes)
650 OPCODES_LIB=../opcodes/libopcodes.la
651 ;;
652esac
653
654case "${need_bfd}" in
655yes)
656 BFDLIB=../bfd/libbfd.la
657 ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h"
658 ;;
659esac
660
661AC_SUBST(BFDLIB)
662AC_SUBST(OPCODES_LIB)
663
664AC_SUBST(ALL_OBJ_DEPS)
665
666AC_DEFINE_UNQUOTED(TARGET_ALIAS, "${target_alias}", [Target alias.])
667AC_DEFINE_UNQUOTED(TARGET_CANONICAL, "${target}", [Canonical target.])
668AC_DEFINE_UNQUOTED(TARGET_CPU, "${target_cpu}", [Target CPU.])
669AC_DEFINE_UNQUOTED(TARGET_VENDOR, "${target_vendor}", [Target vendor.])
670AC_DEFINE_UNQUOTED(TARGET_OS, "${target_os}", [Target OS.])
671
672AC_PROG_CC
673
674AC_PROG_YACC
675AM_PROG_LEX
676
677ALL_LINGUAS=
678CY_GNU_GETTEXT
679
680AM_MAINTAINER_MODE
681AC_EXEEXT
682
683AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
684
685# Put this here so that autoconf's "cross-compiling" message doesn't confuse
686# people who are not cross-compiling but are compiling cross-assemblers.
687AC_MSG_CHECKING(whether compiling a cross-assembler)
688if test "${host}" = "${target}"; then
689 cross_gas=no
690else
691 cross_gas=yes
692 AC_DEFINE(CROSS_COMPILE, 1, [Compiling cross-assembler?])
693fi
694AC_MSG_RESULT($cross_gas)
695
696dnl ansidecl.h will deal with const
697dnl AC_CONST
698AC_FUNC_ALLOCA
699AC_C_INLINE
700
701# VMS doesn't have unlink.
702AC_CHECK_FUNCS(unlink remove, break)
703
704# Some systems don't have sbrk().
705AC_CHECK_FUNCS(sbrk)
706
707# Some non-ANSI preprocessors botch requoting inside strings. That's bad
708# enough, but on some of those systems, the assert macro relies on requoting
709# working properly!
710GAS_WORKING_ASSERT
711
712# On some systems, the system header files may not declare malloc, realloc,
713# and free. There are places where gas needs these functions to have been
714# declared -- such as when taking their addresses.
715gas_test_headers="
716#ifdef HAVE_MEMORY_H
717#include <memory.h>
718#endif
719#ifdef HAVE_STRING_H
720#include <string.h>
721#else
722#ifdef HAVE_STRINGS_H
723#include <strings.h>
724#endif
725#endif
726#ifdef HAVE_STDLIB_H
727#include <stdlib.h>
728#endif
729#ifdef HAVE_UNISTD_H
730#include <unistd.h>
731#endif
732"
733GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
734GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
735GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
736GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
737GAS_CHECK_DECL_NEEDED(environ, f, char **f, $gas_test_headers)
738
739# Does errno.h declare errno, or do we have to add a separate declaration
740# for it?
741GAS_CHECK_DECL_NEEDED(errno, f, int f, [
742#ifdef HAVE_ERRNO_H
743#include <errno.h>
744#endif
745])
746
747dnl This must come last.
748
749dnl We used to make symlinks to files in the source directory, but now
750dnl we just use the right name for .c files, and create .h files in
751dnl the build directory which include the right .h file. Make sure
752dnl the old symlinks don't exist, so that a reconfigure in an existing
753dnl directory behaves reasonably.
754
755AC_OUTPUT(Makefile doc/Makefile .gdbinit:gdbinit.in po/Makefile.in:po/Make-in,
756[rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
757 echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
758 echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
759 echo '#include "te-'"${te_file}"'.h"' > targ-env.h
760 echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
761 if test "x$cgen_cpu_prefix" != x ; then
762 echo '#include "opcodes/'"${cgen_cpu_prefix}"'-desc.h"' > cgen-desc.h
763 fi
764
765 sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile],
766[target_cpu_type=${target_cpu_type}
767 cgen_cpu_prefix=${cgen_cpu_prefix}
768 obj_format=${obj_format}
769 te_file=${te_file}])
This page took 0.063157 seconds and 4 git commands to generate.