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