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