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