]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gas/configure.in
* config/tc-m32r.[ch]: New files.
[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 extra_files=../opcodes/${cpu_type}-opc.h
375 extra_links=cgen-opc.h
376 AC_DEFINE(USING_CGEN)
377 ;;
378 esac
379 ;;
380
381 m68k)
382 case ${extra_objects} in
383 *m68k-parse.o*) ;;
384 *) extra_objects="$extra_objects m68k-parse.o" ;;
385 esac
386 ;;
387
388 mips)
389 echo ${extra_objects} | grep -s "itbl-parse.o"
390 if test $? -ne 0 ; then
391 extra_objects="$extra_objects itbl-parse.o"
392 fi
393
394 echo ${extra_objects} | grep -s "itbl-lex.o"
395 if test $? -ne 0 ; then
396 extra_objects="$extra_objects itbl-lex.o"
397 fi
398
399 echo ${extra_objects} | grep -s "itbl-ops.o"
400 if test $? -ne 0 ; then
401 extra_objects="$extra_objects itbl-ops.o"
402 fi
403 ;;
404
405 *)
406 ;;
407 esac
408
409 # See if we really can support this configuration with the emulation code.
410
411 if test $this_target = $target ; then
412 primary_bfd_gas=$bfd_gas
413 obj_format=$fmt
414 gas_target=$targ
415 te_file=$em
416
417 if test $bfd_gas = no ; then
418 # Can't support other configurations this way.
419 break
420 fi
421 elif test $bfd_gas = no ; then
422 # Can't support this configuration.
423 break
424 fi
425
426 # From target name and format, produce a list of supported emulations.
427
428 case ${generic_target}-${fmt} in
429 mips-*-irix5*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
430 mips-*-linux*-*) case "$endian" in
431 big) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
432 *) emulation="mipslelf mipsbelf mipself mipslecoff mipsbecoff mipsecoff" ;;
433 esac ;;
434 mips-*-lnews*-ecoff) ;;
435 mips-*-*-ecoff) case "$endian" in
436 big) emulation="mipsbecoff mipslecoff mipsecoff" ;;
437 *) emulation="mipslecoff mipsbecoff mipsecoff" ;;
438 esac ;;
439 mips-*-*-elf) case "$endian" in
440 big) emulation="mipsbelf mipslelf mipself" ;;
441 *) emulation="mipslelf mipsbelf mipself" ;;
442 # Uncommenting the next line will turn on support for i386 COFF
443 # in any i386 ELF configuration. This probably doesn't work
444 # correctly.
445 # i386-*-*-elf) emulation="i386coff i386elf" ;;
446 esac ;;
447 esac
448
449 emulations="$emulations $emulation"
450
451 done
452
453 # Assign floating point type. Most processors with FP support
454 # IEEE FP. On those that don't support FP at all, usually IEEE
455 # is emulated.
456 case ${target_cpu} in
457 vax | tahoe ) atof=${target_cpu} ;;
458 *) atof=ieee ;;
459 esac
460
461 case "${obj_format}" in
462 "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
463 esac
464
465 dnl
466 dnl Make sure the desired support files exist.
467 dnl
468
469 if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
470 AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
471 fi
472
473 if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
474 AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
475 fi
476
477 # and target makefile frag
478
479 target_frag=${srcdir}/config/${gas_target}.mt
480 if test ! -r ${target_frag}; then
481 target_frag=/dev/null # ick! but subst_file can't be conditionalized
482 fi
483 AC_SUBST_FILE(target_frag)
484
485 case ${user_bfd_gas}-${primary_bfd_gas} in
486 yes-yes | no-no)
487 # We didn't override user's choice.
488 ;;
489 no-yes)
490 AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
491 ;;
492 no-preferred)
493 primary_bfd_gas=no
494 ;;
495 *-preferred)
496 primary_bfd_gas=yes
497 ;;
498 yes-*)
499 primary_bfd_gas=yes
500 ;;
501 -*)
502 # User specified nothing.
503 ;;
504 esac
505
506 # Some COFF configurations want these random other flags set.
507 case ${obj_format} in
508 coff)
509 case ${target_cpu_type} in
510 i386) AC_DEFINE(I386COFF) ;;
511 m68k) AC_DEFINE(M68KCOFF) ;;
512 m88k) AC_DEFINE(M88KCOFF) ;;
513 esac
514 ;;
515 esac
516
517 # Getting this done right is going to be a bitch. Each configuration specified
518 # with --enable-targets=... should be checked for environment, format, cpu, and
519 # bfd_gas setting.
520 #
521 # For each configuration, the necessary object file support code must be linked
522 # in. This might be only one, it might be up to four. The necessary emulation
523 # code needs to be provided, too.
524 #
525 # And then there's "--enable-targets=all"....
526 #
527 # For now, just always do it for MIPS ELF or ECOFF configurations. Sigh.
528
529 formats="${obj_format}"
530 emfiles=""
531 EMULATIONS=""
532 GAS_UNIQ(emulations)
533 for em in . $emulations ; do
534 case $em in
535 .) continue ;;
536 mipsbelf | mipslelf)
537 fmt=elf file=mipself ;;
538 mipsbecoff | mipslecoff)
539 fmt=ecoff file=mipsecoff ;;
540 i386coff)
541 fmt=coff file=i386coff ;;
542 i386elf)
543 fmt=elf file=i386elf ;;
544 esac
545 formats="$formats $fmt"
546 emfiles="$emfiles e-$file.o"
547 EMULATIONS="$EMULATIONS &$em,"
548 done
549 GAS_UNIQ(formats)
550 GAS_UNIQ(emfiles)
551 if test `set . $formats ; shift ; echo $#` -gt 1 ; then
552 for fmt in $formats ; do
553 case $fmt in
554 aout) AC_DEFINE(OBJ_MAYBE_AOUT) ;;
555 bout) AC_DEFINE(OBJ_MAYBE_BOUT) ;;
556 coff) AC_DEFINE(OBJ_MAYBE_COFF) ;;
557 ecoff) AC_DEFINE(OBJ_MAYBE_ECOFF) ;;
558 elf) AC_DEFINE(OBJ_MAYBE_ELF) ;;
559 generic) AC_DEFINE(OBJ_MAYBE_GENERIC) ;;
560 hp300) AC_DEFINE(OBJ_MAYBE_HP300) ;;
561 ieee) AC_DEFINE(OBJ_MAYBE_IEEE) ;;
562 som) AC_DEFINE(OBJ_MAYBE_SOM) ;;
563 vms) AC_DEFINE(OBJ_MAYBE_VMS) ;;
564 esac
565 extra_objects="$extra_objects obj-$fmt.o"
566 done
567 obj_format=multi
568 fi
569 if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
570 te_file=multi
571 extra_objects="$extra_objects $emfiles"
572 DEFAULT_EMULATION=`set . $emulations ; echo $2`
573 AC_DEFINE(USE_EMULATIONS)
574 fi
575 AC_SUBST(extra_objects)
576 AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS)
577 AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION")
578
579 case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
580 yes-*-coff) need_bfd=yes ;;
581 no-*-coff) need_bfd=yes
582 AC_DEFINE(MANY_SEGMENTS) ;;
583 esac
584
585 reject_dev_configs=yes
586
587 case ${reject_dev_configs}-${dev} in
588 yes-yes) # Oops.
589 AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
590 ;;
591 esac
592
593 AC_SUBST(target_cpu_type)
594 AC_SUBST(obj_format)
595 AC_SUBST(te_file)
596 AC_SUBST(atof)
597 dnl AC_SUBST(emulation)
598
599 case "${primary_bfd_gas}" in
600 yes) AC_DEFINE(BFD_ASSEMBLER)
601 need_bfd=yes ;;
602 esac
603
604 # do we need the opcodes library?
605 case "${need_opcodes}" in
606 yes)
607 OPCODES_DEP=../opcodes/libopcodes.a
608 OPCODES_LIB='-L../opcodes -lopcodes'
609
610 # We need to handle some special cases for shared libraries.
611 case "${host}" in
612 *-*-sunos*)
613 # On SunOS, we must link against the name we are going to install,
614 # not -lbfd, since SunOS does not support SONAME.
615 if test "${shared_opcodes}" = "true"; then
616 OPCODES_LIB='-L../opcodes -l`echo opcodes | sed '"'"'$(program_transform_name)'"'"'`'
617 fi
618 ;;
619 alpha*-*-osf*)
620 # On Alpha OSF/1, the native linker searches all the -L
621 # directories for any LIB.so files, and only then searches for any
622 # LIB.a files. That means that if there is an installed
623 # libbfd.so, but this build is not done with --enable-shared, the
624 # link will wind up being against the install libbfd.so rather
625 # than the newly built libbfd. To avoid this, we must explicitly
626 # link against libbfd.a when --enable-shared is not used.
627 if test "${shared_opcodes}" != "true"; then
628 OPCODES_LIB='../opcodes/libopcodes.a'
629 fi
630 ;;
631 esac
632 ;;
633 esac
634
635 case "${need_bfd}" in
636 yes)
637 BFDDEP=../bfd/libbfd.a
638 BFDLIB='-L../bfd -lbfd'
639 ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h"
640
641 # We need to handle some special cases for shared libraries
642 case "${host}" in
643 *-*-sunos*)
644 # On SunOS, we must link against the name we are going to install,
645 # not -lbfd, since SunOS does not support SONAME.
646 if test "${shared_bfd}" = "true"; then
647 BFDLIB='-L../bfd -l`echo bfd | sed '"'"'$(program_transform_name)'"'"'`'
648 fi
649 ;;
650 alpha*-*-osf*)
651 # On Alpha OSF/1, the native linker searches all the -L
652 # directories for any LIB.so files, and only then searches for any
653 # LIB.a files. That means that if there is an installed
654 # libbfd.so, but this build is not done with --enable-shared, the
655 # link will wind up being against the install libbfd.so rather
656 # than the newly built libbfd. To avoid this, we must explicitly
657 # link against libbfd.a when --enable-shared is not used.
658 if test "${shared_bfd}" != "true"; then
659 BFDLIB='../bfd/libbfd.a'
660 fi
661 ;;
662 esac
663
664 if test "${commonbfdlib}" = "true"; then
665 # when a shared libbfd is built with --enable-commonbfdlib,
666 # all of libopcodes is available in libbfd.so
667 OPCODES_LIB=
668 fi
669 ;;
670 esac
671
672 AC_SUBST(BFDDEP)
673 AC_SUBST(BFDLIB)
674 AC_SUBST(OPCODES_DEP)
675 AC_SUBST(OPCODES_LIB)
676
677 AC_SUBST(ALL_OBJ_DEPS)
678
679 AC_DEFINE_UNQUOTED(TARGET_ALIAS, "${target_alias}")
680 AC_DEFINE_UNQUOTED(TARGET_CANONICAL, "${target}")
681 AC_DEFINE_UNQUOTED(TARGET_CPU, "${target_cpu}")
682 AC_DEFINE_UNQUOTED(TARGET_VENDOR, "${target_vendor}")
683 AC_DEFINE_UNQUOTED(TARGET_OS, "${target_os}")
684
685 AC_PROG_CC
686 AC_PROG_INSTALL
687
688 AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
689
690 # Put this here so that autoconf's "cross-compiling" message doesn't confuse
691 # people who are not cross-compiling but are compiling cross-assemblers.
692 AC_MSG_CHECKING(whether compiling a cross-assembler)
693 if test "${host}" = "${target}"; then
694 cross_gas=no
695 else
696 cross_gas=yes
697 AC_DEFINE(CROSS_COMPILE)
698 fi
699 AC_MSG_RESULT($cross_gas)
700
701 dnl ansidecl.h will deal with const
702 dnl AC_CONST
703 AC_FUNC_ALLOCA
704 AC_C_INLINE
705
706 # VMS doesn't have unlink.
707 AC_CHECK_FUNCS(unlink remove, break)
708
709 # Some systems don't have sbrk().
710 AC_CHECK_FUNCS(sbrk)
711
712 # Some non-ANSI preprocessors botch requoting inside strings. That's bad
713 # enough, but on some of those systems, the assert macro relies on requoting
714 # working properly!
715 GAS_WORKING_ASSERT
716
717 # On some systems, the system header files may not declare malloc, realloc,
718 # and free. There are places where gas needs these functions to have been
719 # declared -- such as when taking their addresses.
720 gas_test_headers="
721 #ifdef HAVE_MEMORY_H
722 #include <memory.h>
723 #endif
724 #ifdef HAVE_STRING_H
725 #include <string.h>
726 #else
727 #ifdef HAVE_STRINGS_H
728 #include <strings.h>
729 #endif
730 #endif
731 #ifdef HAVE_STDLIB_H
732 #include <stdlib.h>
733 #endif
734 #ifdef HAVE_UNISTD_H
735 #include <unistd.h>
736 #endif
737 "
738 GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
739 GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
740 GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
741 GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
742
743 # Does errno.h declare errno, or do we have to add a separate declaration
744 # for it?
745 GAS_CHECK_DECL_NEEDED(errno, f, int f, [
746 #ifdef HAVE_ERRNO_H
747 #include <errno.h>
748 #endif
749 ])
750
751 HLDFLAGS=
752 HLDENV=
753 RPATH_ENVVAR=LD_LIBRARY_PATH
754 # If we have shared libraries, try to set rpath reasonably.
755 if test "${shared}" = "true"; then
756 case "${host}" in
757 *-*-hpux*)
758 HLDFLAGS='-Wl,+s,+b,$(libdir)'
759 RPATH_ENVVAR=SHLIB_PATH
760 ;;
761 *-*-irix5* | *-*-irix6*)
762 HLDFLAGS='-Wl,-rpath,$(libdir)'
763 ;;
764 *-*-linux*aout*)
765 ;;
766 *-*-linux*)
767 HLDFLAGS='-Wl,-rpath,$(libdir)'
768 ;;
769 *-*-solaris*)
770 HLDFLAGS='-R $(libdir)'
771 ;;
772 *-*-sysv4*)
773 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;'
774 ;;
775 esac
776 fi
777
778 # On SunOS, if the linker supports the -rpath option, use it to
779 # prevent ../bfd and ../opcodes from being included in the run time
780 # search path.
781 case "${host}" in
782 *-*-sunos*)
783 echo 'main () { }' > conftest.c
784 ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t
785 if grep 'unrecognized' conftest.t >/dev/null 2>&1; then
786 :
787 elif grep 'No such file' conftest.t >/dev/null 2>&1; then
788 :
789 elif grep 'do not mix' conftest.t >/dev/null 2>&1; then
790 :
791 elif test "${shared}" = "true"; then
792 HLDFLAGS='-Wl,-rpath=$(libdir)'
793 else
794 HLDFLAGS='-Wl,-rpath='
795 fi
796 rm -f conftest.t conftest.c conftest
797 ;;
798 esac
799 AC_SUBST(HLDFLAGS)
800 AC_SUBST(HLDENV)
801 AC_SUBST(RPATH_ENVVAR)
802
803 dnl This must come last.
804
805 dnl We used to make symlinks to files in the source directory, but now
806 dnl we just use the right name for .c files, and create .h files in
807 dnl the build directory which include the right .h file. Make sure
808 dnl the old symlinks don't exist, so that a reconfigure in an existing
809 dnl directory behaves reasonably.
810
811 AC_OUTPUT(Makefile doc/Makefile .gdbinit:gdbinit.in,
812 [rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
813 echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
814 echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
815 echo '#include "te-'"${te_file}"'.h"' > targ-env.h
816 echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h],
817 [target_cpu_type=${target_cpu_type}
818 obj_format=${obj_format}
819 te_file=${te_file}])