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