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