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