Thu Apr 17 13:57:06 1997 Per Fogelstrom <pefo@openbsd.org>
[deliverable/binutils-gdb.git] / gas / configure.in
CommitLineData
b11fb939
KR
1dnl Process this file with autoconf to produce a configure script.
2dnl
3dnl And be careful when changing it! If you must add tests with square
4dnl brackets, be sure changequote invocations surround it.
5dnl
b11fb939 6dnl
1c94de4d 7AC_PREREQ(2.5)dnl v2.5 needed for --bindir et al
28d3e4a3 8AC_INIT(as.h)dnl
b11fb939 9dnl
318b02b6 10user_bfd_gas=
b11fb939 11AC_ARG_ENABLE(bfd-assembler,
d7b2038f 12[ --enable-bfd-assembler use BFD back end for writing object files],
b11fb939 13[case "${enableval}" in
318b02b6
KR
14 yes) need_bfd=yes user_bfd_gas=yes ;;
15 no) user_bfd_gas=no ;;
b11fb939
KR
16 *) AC_MSG_ERROR(bad value ${enableval} given for bfd-assembler option) ;;
17esac])dnl
e7757ad0
KR
18AC_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 ;;
25esac])dnl
1c9dbb83
ILT
26AC_ARG_ENABLE(shared,
27[ --enable-shared build shared BFD library],
28[case "${enableval}" in
159e6ef8 29 yes) shared=true shared_bfd=true shared_opcodes=true ;;
1c9dbb83 30 no) shared=false ;;
159e6ef8
MM
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 ;;
1c9dbb83 36esac])dnl
2e013bb7
ILT
37AC_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]) ;;
43esac])dnl
b11fb939
KR
44
45# Generate a header file -- gets more post-processing by Makefile later.
46AC_CONFIG_HEADER(conf)
47
48dnl For recursion to work right, this must be an absolute pathname.
49AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..)
50AC_CANONICAL_SYSTEM
bf111c9f 51AC_ARG_PROGRAM
7cf4d7ff 52
e7757ad0 53te_file=generic
b678740d 54
e7757ad0
KR
55canon_targets=""
56if test -n "$enable_targets" ; then
57 for t in `echo $enable_targets | sed 's/,/ /g'`; do
ec2f730d 58 result=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $t 2>/dev/null`
e7757ad0
KR
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)
67fi
68
69emulations=""
70
71for this_target in $target $canon_targets ; do
72
64556643
FF
73changequote(,)dnl
74 eval `echo $this_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/cpu=\1 vendor=\2 os=\3/'`
75changequote([,])dnl
8cac6ca6 76
e7757ad0
KR
77 # check for architecture variants
78 case ${cpu} in
ae09d880
ILT
79 armeb) cpu_type=arm endian=big ;;
80 arm*) cpu_type=arm endian=little ;;
e7757ad0
KR
81 hppa*) cpu_type=hppa ;;
82changequote(,)dnl
7c2fadd1 83 i[456]86) cpu_type=i386 ;;
e7757ad0
KR
84 m680[012346]0) cpu_type=m68k ;;
85 m68008) cpu_type=m68k ;;
86 m683??) cpu_type=m68k ;;
87changequote([,])dnl
88 m8*) cpu_type=m88k ;;
e16b9537 89 mips*el) cpu_type=mips endian=little ;;
e7757ad0
KR
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 ;;
6df07e7f 94 sparc64) cpu_type=sparc want_sparc_v9=true ;;
63e4edb5 95 sparc*) cpu_type=sparc ;;
a1c7c0f3 96 *) cpu_type=${cpu} ;;
e7757ad0
KR
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
7cf4d7ff 110
e7757ad0
KR
111 # assign object format
112 case ${generic_target} in
805e36ab 113 a29k-*-coff) fmt=coff targ=ebmon29k ;;
e7757ad0
KR
114 a29k-amd-udi) fmt=coff targ=ebmon29k ;;
115 a29k-amd-ebmon) fmt=coff targ=ebmon29k ;;
880b7429 116 a29k-nyu-sym1) fmt=coff targ=ebmon29k ;;
e7757ad0
KR
117 a29k-*-vxworks*) fmt=coff ;;
118
c6aa56bc 119 alpha-*-*vms*) fmt=evax ;;
e7757ad0
KR
120 alpha-*-netware*) fmt=ecoff ;;
121 alpha-*-osf*) fmt=ecoff ;;
df586de2
ILT
122 alpha-*-linuxecoff*) fmt=ecoff ;;
123 alpha-*-linux*) fmt=elf em=linux ;;
816153a3 124
4181c985 125# start-sanitize-arc
e7757ad0 126 arc-*-elf*) fmt=elf bfd_gas=yes ;;
4181c985
KR
127# end-sanitize-arc
128
7be9a312 129 arm-*-riscix*) fmt=aout targ=arm-lit em=riscix ;;
1cb0d00d
KR
130 arm-*-aout) fmt=aout
131 case "$endian" in
132 big) targ=arm-big ;;
133 *) targ=arm-lit ;;
134 esac
135 ;;
d7b2038f 136 arm-*-coff) fmt=coff ;;
e7757ad0 137 arm-*-riscix*) fmt=aout ;;
1cb0d00d 138 arm-*-pe) fmt=coff targ=armcoff em=pe ;;
e7757ad0 139
05a8bf33 140 d10v-*-*) fmt=elf bfd_gas=yes ;;
7d0f8249
MH
141# start-sanitize-d30v
142 d30v-*-*) fmt=elf bfd_gas=yes ;;
143# end-sanitize-d30v
7be9a312 144
e7757ad0
KR
145 hppa-*-*elf*) fmt=elf em=hppa ;;
146 hppa-*-lites*) fmt=elf em=hppa ;;
147 hppa-*-osf*) fmt=som em=hppa ;;
332d5c49 148 hppa-*-rtems*) fmt=elf em=hppa ;;
e7757ad0
KR
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 ;;
7d0f8249 157 i386-sequent-bsd*) fmt=aout em=dynix bfd_gas=yes ;;
e7757ad0
KR
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;;
a1c7c0f3 161 i386-*-linux*aout* | i386-*-linuxoldld) fmt=aout em=linux ;;
e7757ad0
KR
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 ;;
2ae5f50b 167 i386-*-sysv4* | i386-*-solaris* | i386-*-elf | i386-*-freebsdelf*)
e7757ad0 168 fmt=elf ;;
66b935da 169 i386-*-sco*elf*) fmt=elf targ=sco5 ;;
e7757ad0
KR
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 ;;
1c94de4d 174 i386-*-rtems*) fmt=coff targ=i386coff ;;
6c186c48
SC
175 i386-*-gnu*) fmt=elf ;;
176 i386-*-mach*)
e7757ad0
KR
177 fmt=aout em=mach bfd_gas=yes ;;
178 i386-*-msdos*) fmt=aout ;;
6c186c48 179 i386-*-moss*) fmt=elf ;;
d0352cbb
DE
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 ;;
e7757ad0
KR
183 i960-*-bout) fmt=bout ;;
184 i960-*-coff) fmt=coff em=ic960 targ=ic960coff ;;
1c94de4d 185 i960-*-rtems*) fmt=coff em=ic960 targ=ic960coff ;;
e7757ad0
KR
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
374bdac7
DE
192 m32r-*-*) fmt=elf bfd_gas=yes ;;
193
e7757ad0
KR
194 m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*)
195 fmt=aout em=sun3 ;;
880b7429 196 m68k-motorola-sysv*) fmt=coff targ=m68kcoff em=delta ;;
e7757ad0
KR
197 m68k-bull-sysv3*) fmt=coff targ=m68kcoff em=dpx2 ;;
198 m68k-apollo-*) fmt=coff targ=apollo em=apollo ;;
fee3e248
ILT
199 m68k-*-sysv4*) # must be before -sysv*
200 fmt=elf em=svr4 ;;
201 m68k-*-elf*) fmt=elf ;;
1c94de4d 202 m68k-*-coff | m68k-*-sysv* | m68k-*-rtems*)
e7757ad0 203 fmt=coff targ=m68kcoff ;;
e7757ad0 204 m68k-*-hpux*) fmt=hp300 em=hp300 ;;
535cfd0f
ILT
205 m68k-*-linux*aout*) fmt=aout em=linux ;;
206 m68k-*-linux*) fmt=elf em=linux ;;
e7757ad0
KR
207 m68k-*-lynxos*) fmt=coff targ=m68kcoff
208 em=lynx ;;
209 m68k-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
8a6f53e9
ILT
210 m68k-apple-aux*) fmt=coff targ=m68kcoff em=aux ;;
211 m68k-*-psos*) fmt=elf em=psos;;
e7757ad0 212
880b7429 213 m88k-motorola-sysv3*) fmt=coff targ=m88kcoff em=delt88 ;;
e7757ad0
KR
214 m88k-*-coff*) fmt=coff targ=m88kcoff ;;
215
216 # don't change em like *-*-bsd does
057a4d41 217 mips-dec-netbsd*) fmt=elf targ=mips-lit endian=little ;;
e7757ad0
KR
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.) ;;
70f4dbce 221 mips-*-ultrix*) fmt=ecoff targ=mips-lit endian=little ;;
7be9a312 222 mips-*-osf*) fmt=ecoff targ=mips-lit endian=little ;;
e7757ad0
KR
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 ;;
cbe7dccb 230 mips-*-irix6*) fmt=elf targ=mips-big ;;
e7757ad0
KR
231 mips-*-irix5*) fmt=elf targ=mips-big ;;
232 mips-*-irix*) fmt=ecoff targ=mips-big ;;
515c7142 233 mips-*-lnews*) fmt=ecoff targ=mips-lit em=lnews ;;
e7757ad0
KR
234 mips-*-riscos*) fmt=ecoff targ=mips-big ;;
235 mips-*-sysv*) fmt=ecoff targ=mips-big ;;
6d65a065 236 mips-*-elf* | mips-*-rtems* | mips-*-linux* | mips-*-gnu*)
fed13a5e 237 fmt=elf
e7757ad0
KR
238 case "$endian" in
239 big) targ=mips-big ;;
240 *) targ=mips-lit ;;
241 esac
242 ;;
ae1b99e4
JL
243 mn10200-*-*) fmt=elf bfd_gas=yes ;;
244 mn10300-*-*) fmt=elf bfd_gas=yes ;;
0ff513d9
SC
245 ppc-*-pe | ppc-*-cygwin32 | ppc-*-winnt*)
246 fmt=coff em=pe
85cc2190
KK
247 case "$endian" in
248 big) targ=ppc-big ;;
249 *) targ=ppc-lit ;;
250 esac
251 ;;
e7757ad0 252 ppc-*-aix*) fmt=coff ;;
515c7142 253 ppc-*-beos*) fmt=coff ;;
e7757ad0
KR
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 ;;
159e6ef8
MM
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 ;;
1c94de4d
JM
273 ppc-*-rtems*)
274 fmt=elf
275 case "$endian" in
276 big) targ=ppc-big ;;
277 *) targ=ppc-lit ;;
278 esac
279 ;;
880b7429
KR
280 ppc-*-macos* | ppc-*-mpw*)
281 fmt=coff em=macos ;;
e7757ad0
KR
282 ppc-*-netware*) fmt=elf em=ppcnw ;;
283
fed13a5e
ILT
284 sh-*-elf*) fmt=elf ;;
285 sh-*-coff*) fmt=coff ;;
816153a3 286
5f757edc
ILT
287 ns32k-pc532-mach* | ns32k-pc532-ux*) fmt=aout em=pc532mach ;;
288 ns32k-pc532-netbsd* | ns32k-pc532-lites*) fmt=aout em=nbsd532 ;;
e7757ad0 289
1c94de4d 290 sparc-*-rtems*) fmt=aout ;;
e7757ad0 291 sparc-*-sunos4*) fmt=aout em=sun3 ;;
df586de2 292 sparc-*-aout | sparc*-*-vxworks*)
fed13a5e 293 fmt=aout em=sparcaout ;;
e7757ad0 294 sparc-*-coff) fmt=coff ;;
2e013bb7
ILT
295 sparc-*-linux*aout*) fmt=aout em=linux ;;
296 sparc-*-linux*) fmt=elf em=linux ;;
e7757ad0
KR
297 sparc-*-lynxos*) fmt=coff em=lynx ;;
298 sparc-fujitsu-none) fmt=aout ;;
0b27ea39 299 sparc-*-elf | sparc-*-sysv4* | sparc-*-solaris*)
e7757ad0
KR
300 fmt=elf ;;
301 sparc-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
c6aa56bc 302
64556643 303# start-sanitize-tic80
7d0f8249 304 tic80-*-*) fmt=coff targ=tic80coff;;
64556643 305# end-sanitize-tic80
ec2f730d 306# start-sanitize-v850
c6aa56bc 307 v850-*-*) fmt=elf bfd_gas=yes ;;
e7757ad0 308
ec2f730d 309# end-sanitize-v850
e7757ad0
KR
310 vax-*-bsd* | vax-*-ultrix*)
311 fmt=aout ;;
312 vax-*-vms) fmt=vms ;;
313
314 z8k-*-coff | z8k-*-sim)
315 fmt=coff ;;
316
317 w65-*-*) fmt=coff ;;
318
319 *-*-aout | *-*-scout)
320 fmt=aout ;;
321 *-*-nindy*)
322 fmt=bout ;;
323 *-*-bsd*)
324 fmt=aout em=sun3 ;;
325 *-*-generic) fmt=generic ;;
326 *-*-xray | *-*-hms) fmt=coff ;;
327 *-*-sim) fmt=coff ;;
328 *-*-elf | *-*-sysv4* | *-*-solaris*)
6df07e7f 329 AC_MSG_WARN(GAS support for ${generic_target} is incomplete.)
e7757ad0
KR
330 fmt=elf dev=yes ;;
331 *-*-vxworks) fmt=aout ;;
332 *-*-netware) fmt=elf ;;
333 esac
334
335 case ${cpu_type}-${fmt} in
df586de2 336 alpha-*) bfd_gas=yes ;;
e7757ad0
KR
337 arm-*) bfd_gas=yes ;;
338 # not yet
339 # i386-aout) bfd_gas=preferred ;;
340 mips-*) bfd_gas=yes ;;
341 ns32k-*) bfd_gas=yes ;;
342 ppc-*) bfd_gas=yes ;;
343 sparc-*) bfd_gas=yes ;;
344 *-elf) bfd_gas=yes ;;
345 *-ecoff) bfd_gas=yes ;;
346 *-som) bfd_gas=yes ;;
347 *) ;;
348 esac
349
5f757edc
ILT
350# Other random stuff.
351
ae09d880
ILT
352 # do we need the opcodes library?
353 case ${cpu_type} in
df586de2 354 vax | i386)
7c2fadd1
ILT
355 ;;
356 *)
357 need_opcodes=yes
159e6ef8 358 if test "${shared_opcodes}" = "true"; then
7c2fadd1
ILT
359 # A shared libopcodes must be linked against libbfd.
360 need_bfd=yes
361 fi
362 ;;
ae09d880
ILT
363 esac
364
6df07e7f
DE
365 test -n "$want_sparc_v9" && AC_DEFINE(SPARC_V9)
366
367 case ${cpu}-${vendor}-${os} in
368 sparc64-*-elf*) AC_DEFINE(SPARC_ARCH64) ;;
369 esac
5f757edc
ILT
370
371 case ${cpu_type} in
374bdac7
DE
372 m32r)
373 case ${extra_objects} in
374 *cgen.o*) ;;
375 *) extra_objects="$extra_objects cgen.o"
374bdac7
DE
376 AC_DEFINE(USING_CGEN)
377 ;;
378 esac
379 ;;
380
1c9dbb83
ILT
381 m68k)
382 case ${extra_objects} in
383 *m68k-parse.o*) ;;
384 *) extra_objects="$extra_objects m68k-parse.o" ;;
385 esac
386 ;;
efec4a28
DP
387
388 mips)
515c7142 389 echo ${extra_objects} | grep -s "itbl-parse.o"
efec4a28 390 if test $? -ne 0 ; then
515c7142 391 extra_objects="$extra_objects itbl-parse.o"
efec4a28
DP
392 fi
393
515c7142 394 echo ${extra_objects} | grep -s "itbl-lex.o"
efec4a28 395 if test $? -ne 0 ; then
515c7142 396 extra_objects="$extra_objects itbl-lex.o"
efec4a28
DP
397 fi
398
515c7142 399 echo ${extra_objects} | grep -s "itbl-ops.o"
efec4a28 400 if test $? -ne 0 ; then
515c7142 401 extra_objects="$extra_objects itbl-ops.o"
efec4a28
DP
402 fi
403 ;;
404
405 *)
406 ;;
5f757edc
ILT
407 esac
408
e7757ad0
KR
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
1cb0d00d 429 mips-*-irix5*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
515c7142
ILT
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) ;;
e7757ad0 435 mips-*-*-ecoff) case "$endian" in
1cb0d00d
KR
436 big) emulation="mipsbecoff mipslecoff mipsecoff" ;;
437 *) emulation="mipslecoff mipsbecoff mipsecoff" ;;
e7757ad0
KR
438 esac ;;
439 mips-*-*-elf) case "$endian" in
1cb0d00d
KR
440 big) emulation="mipsbelf mipslelf mipself" ;;
441 *) emulation="mipslelf mipsbelf mipself" ;;
515c7142
ILT
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" ;;
e7757ad0
KR
446 esac ;;
447 esac
448
449 emulations="$emulations $emulation"
450
e7757ad0 451done
fecd2382 452
8cac6ca6
KR
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.
b678740d 456case ${target_cpu} in
904b6037 457 vax | tahoe ) atof=${target_cpu} ;;
e7757ad0 458 *) atof=ieee ;;
fecd2382
RP
459esac
460
8cac6ca6 461case "${obj_format}" in
b11fb939 462 "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
8cac6ca6 463esac
7cf4d7ff 464
b11fb939
KR
465dnl
466dnl Make sure the desired support files exist.
467dnl
468
bf4bd1fc
ILT
469if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
470 AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
b11fb939
KR
471fi
472
fb589130 473if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
b11fb939 474 AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
7cf4d7ff
KR
475fi
476
8a24a37c
SC
477# and target makefile frag
478
b11fb939 479target_frag=${srcdir}/config/${gas_target}.mt
f2889110
KR
480if test ! -r ${target_frag}; then
481 target_frag=/dev/null # ick! but subst_file can't be conditionalized
482fi
b11fb939 483AC_SUBST_FILE(target_frag)
8a24a37c 484
e7757ad0 485case ${user_bfd_gas}-${primary_bfd_gas} in
a8285504 486 yes-yes | no-no)
7cf4d7ff
KR
487 # We didn't override user's choice.
488 ;;
a8285504 489 no-yes)
b11fb939 490 AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
7cf4d7ff 491 ;;
a8285504 492 no-preferred)
e7757ad0 493 primary_bfd_gas=no
a8285504
DZ
494 ;;
495 *-preferred)
e7757ad0 496 primary_bfd_gas=yes
a8285504 497 ;;
f2889110 498 yes-*)
e7757ad0 499 primary_bfd_gas=yes
f2889110 500 ;;
a8285504
DZ
501 -*)
502 # User specified nothing.
503 ;;
7cf4d7ff
KR
504esac
505
e7757ad0
KR
506# Some COFF configurations want these random other flags set.
507case ${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 ;;
515esac
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
529formats="${obj_format}"
530emfiles=""
531EMULATIONS=""
532GAS_UNIQ(emulations)
533for 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 ;;
515c7142
ILT
540 i386coff)
541 fmt=coff file=i386coff ;;
542 i386elf)
543 fmt=elf file=i386elf ;;
e7757ad0
KR
544 esac
545 formats="$formats $fmt"
546 emfiles="$emfiles e-$file.o"
547 EMULATIONS="$EMULATIONS &$em,"
548done
549GAS_UNIQ(formats)
550GAS_UNIQ(emfiles)
551if 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
568fi
569if 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)
574fi
575AC_SUBST(extra_objects)
576AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS)
577AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION")
578
bf4bd1fc 579case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
318b02b6
KR
580 yes-*-coff) need_bfd=yes ;;
581 no-*-coff) need_bfd=yes
582 AC_DEFINE(MANY_SEGMENTS) ;;
583esac
584
69ecc03f 585reject_dev_configs=yes
8cac6ca6
KR
586
587case ${reject_dev_configs}-${dev} in
588 yes-yes) # Oops.
b11fb939 589 AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
8cac6ca6
KR
590 ;;
591esac
592
bf4bd1fc 593AC_SUBST(target_cpu_type)
833c46e1 594AC_SUBST(obj_format)
515c7142 595AC_SUBST(te_file)
833c46e1 596AC_SUBST(atof)
e7757ad0 597dnl AC_SUBST(emulation)
833c46e1 598
e7757ad0 599case "${primary_bfd_gas}" in
b11fb939
KR
600 yes) AC_DEFINE(BFD_ASSEMBLER)
601 need_bfd=yes ;;
4f6f4aa8
KR
602esac
603
ae09d880
ILT
604# do we need the opcodes library?
605case "${need_opcodes}" in
1c94de4d
JM
606yes)
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.
159e6ef8 615 if test "${shared_opcodes}" = "true"; then
ae09d880 616 OPCODES_LIB='-L../opcodes -l`echo opcodes | sed '"'"'$(program_transform_name)'"'"'`'
ae09d880
ILT
617 fi
618 ;;
1c94de4d
JM
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 ;;
ae09d880 633esac
ae09d880 634
b11fb939 635case "${need_bfd}" in
1c94de4d
JM
636yes)
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.
159e6ef8 646 if test "${shared_bfd}" = "true"; then
1c94de4d 647 BFDLIB='-L../bfd -l`echo bfd | sed '"'"'$(program_transform_name)'"'"'`'
ae09d880
ILT
648 fi
649 ;;
1c94de4d
JM
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
2e013bb7
ILT
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
1c94de4d 669 ;;
4f6f4aa8 670esac
2e013bb7 671
1c9dbb83 672AC_SUBST(BFDDEP)
b11fb939 673AC_SUBST(BFDLIB)
2e013bb7
ILT
674AC_SUBST(OPCODES_DEP)
675AC_SUBST(OPCODES_LIB)
676
b11fb939 677AC_SUBST(ALL_OBJ_DEPS)
4f6f4aa8 678
b11fb939
KR
679AC_DEFINE_UNQUOTED(TARGET_ALIAS, "${target_alias}")
680AC_DEFINE_UNQUOTED(TARGET_CANONICAL, "${target}")
681AC_DEFINE_UNQUOTED(TARGET_CPU, "${target_cpu}")
682AC_DEFINE_UNQUOTED(TARGET_VENDOR, "${target_vendor}")
683AC_DEFINE_UNQUOTED(TARGET_OS, "${target_os}")
684
b11fb939
KR
685AC_PROG_CC
686AC_PROG_INSTALL
687
b11fb939
KR
688AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
689
bf111c9f
KR
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.
692AC_MSG_CHECKING(whether compiling a cross-assembler)
693if test "${host}" = "${target}"; then
f2889110
KR
694 cross_gas=no
695else
bf111c9f
KR
696 cross_gas=yes
697 AC_DEFINE(CROSS_COMPILE)
bf111c9f
KR
698fi
699AC_MSG_RESULT($cross_gas)
700
b11fb939
KR
701dnl ansidecl.h will deal with const
702dnl AC_CONST
703AC_FUNC_ALLOCA
704AC_C_INLINE
705
f2889110
KR
706# VMS doesn't have unlink.
707AC_CHECK_FUNCS(unlink remove, break)
28d3e4a3 708
e63c594d
FF
709# Some systems don't have sbrk().
710AC_CHECK_FUNCS(sbrk)
711
b11fb939
KR
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!
bf111c9f 715GAS_WORKING_ASSERT
b11fb939
KR
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.
bf111c9f 720gas_test_headers="
b11fb939
KR
721#ifdef HAVE_MEMORY_H
722#include <memory.h>
723#endif
724#ifdef HAVE_STRING_H
725#include <string.h>
5cece526
ILT
726#else
727#ifdef HAVE_STRINGS_H
728#include <strings.h>
729#endif
b11fb939
KR
730#endif
731#ifdef HAVE_STDLIB_H
732#include <stdlib.h>
733#endif
734#ifdef HAVE_UNISTD_H
735#include <unistd.h>
736#endif
bf111c9f 737"
5cece526 738GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
bf111c9f 739GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
5f757edc 740GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
5cece526 741GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
b11fb939
KR
742
743# Does errno.h declare errno, or do we have to add a separate declaration
744# for it?
bf111c9f 745GAS_CHECK_DECL_NEEDED(errno, f, int f, [
b11fb939
KR
746#ifdef HAVE_ERRNO_H
747#include <errno.h>
748#endif
bf111c9f 749])
b11fb939 750
1c9dbb83 751HLDFLAGS=
fed13a5e 752HLDENV=
1a2f3c3f 753RPATH_ENVVAR=LD_LIBRARY_PATH
1c9dbb83
ILT
754# If we have shared libraries, try to set rpath reasonably.
755if test "${shared}" = "true"; then
756 case "${host}" in
56f9773f
ILT
757 *-*-hpux*)
758 HLDFLAGS='-Wl,+s,+b,$(libdir)'
1a2f3c3f 759 RPATH_ENVVAR=SHLIB_PATH
56f9773f 760 ;;
cbe7dccb 761 *-*-irix5* | *-*-irix6*)
1c9dbb83
ILT
762 HLDFLAGS='-Wl,-rpath,$(libdir)'
763 ;;
764 *-*-linux*aout*)
765 ;;
766 *-*-linux*)
767 HLDFLAGS='-Wl,-rpath,$(libdir)'
768 ;;
fed13a5e 769 *-*-solaris*)
1c9dbb83
ILT
770 HLDFLAGS='-R $(libdir)'
771 ;;
fed13a5e
ILT
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 ;;
1c9dbb83
ILT
775 esac
776fi
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.
781case "${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 :
7925f4d4
ILT
789 elif grep 'do not mix' conftest.t >/dev/null 2>&1; then
790 :
1c9dbb83
ILT
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 ;;
798esac
799AC_SUBST(HLDFLAGS)
fed13a5e 800AC_SUBST(HLDENV)
1a2f3c3f 801AC_SUBST(RPATH_ENVVAR)
1c9dbb83 802
b11fb939 803dnl This must come last.
515c7142
ILT
804
805dnl We used to make symlinks to files in the source directory, but now
806dnl we just use the right name for .c files, and create .h files in
807dnl the build directory which include the right .h file. Make sure
808dnl the old symlinks don't exist, so that a reconfigure in an existing
809dnl directory behaves reasonably.
810
811AC_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
39ffbb4d
DE
816 echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
817 case ${target_cpu_type} in
818 m32r) echo '#include "opcodes/'"${target_cpu_type}"'-opc.h"' > cgen-opc.h ;;
819 esac],
515c7142
ILT
820[target_cpu_type=${target_cpu_type}
821 obj_format=${obj_format}
822 te_file=${te_file}])
This page took 0.250906 seconds and 4 git commands to generate.