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