Tue Apr 21 16:07:18 1998 Stanislav Brabec <utx@k332.feld.cvut.cz>
[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
e2b4bd2a
ILT
7dnl v2.5 needed for --bindir et al
8AC_PREREQ(2.5)
9AC_INIT(as.h)
10
11AC_CANONICAL_SYSTEM
12
f3aa01e2 13AM_INIT_AUTOMAKE(gas, 2.9.1)
e2b4bd2a
ILT
14
15AM_PROG_LIBTOOL
16
318b02b6 17user_bfd_gas=
b11fb939 18AC_ARG_ENABLE(bfd-assembler,
d7b2038f 19[ --enable-bfd-assembler use BFD back end for writing object files],
b11fb939 20[case "${enableval}" in
318b02b6
KR
21 yes) need_bfd=yes user_bfd_gas=yes ;;
22 no) user_bfd_gas=no ;;
b11fb939
KR
23 *) AC_MSG_ERROR(bad value ${enableval} given for bfd-assembler option) ;;
24esac])dnl
e7757ad0
KR
25AC_ARG_ENABLE(targets,
26[ targets alternative target configurations besides the primary],
27[case "${enableval}" in
28 yes | "") AC_ERROR(enable-targets option must specify target names or 'all')
29 ;;
30 no) enable_targets= ;;
31 *) enable_targets=$enableval ;;
32esac])dnl
2e013bb7
ILT
33AC_ARG_ENABLE(commonbfdlib,
34[ --enable-commonbfdlib build shared BFD/opcodes/libiberty library],
35[case "${enableval}" in
36 yes) commonbfdlib=true ;;
37 no) commonbfdlib=false ;;
38 *) AC_MSG_ERROR([bad value ${enableval} for BFD commonbfdlib option]) ;;
39esac])dnl
b11fb939 40
e2b4bd2a
ILT
41# Generate a header file
42AM_CONFIG_HEADER(config.h:config.in)
7cf4d7ff 43
e7757ad0 44te_file=generic
b678740d 45
e7757ad0
KR
46canon_targets=""
47if test -n "$enable_targets" ; then
48 for t in `echo $enable_targets | sed 's/,/ /g'`; do
ec2f730d 49 result=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $t 2>/dev/null`
e7757ad0
KR
50 if test -n "$result" ; then
51 canon_targets="$canon_targets $result"
52# else
53# # Permit "all", etc. We don't support it yet though.
54# canon_targets="$canon_targets $t"
55 fi
56 done
57 GAS_UNIQ(canon_targets)
58fi
59
60emulations=""
61
62for this_target in $target $canon_targets ; do
63
64556643
FF
64changequote(,)dnl
65 eval `echo $this_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/cpu=\1 vendor=\2 os=\3/'`
66changequote([,])dnl
8cac6ca6 67
e7757ad0 68 # check for architecture variants
2b09622a 69 arch=
6ff87ead 70 endian=
e7757ad0 71 case ${cpu} in
0170f1c3 72 alpha*) cpu_type=alpha ;;
ae09d880
ILT
73 armeb) cpu_type=arm endian=big ;;
74 arm*) cpu_type=arm endian=little ;;
76fb6d2f 75 thumb*) cpu_type=arm endian=little ;;
e7757ad0
KR
76 hppa*) cpu_type=hppa ;;
77changequote(,)dnl
7c2fadd1 78 i[456]86) cpu_type=i386 ;;
e7757ad0
KR
79 m680[012346]0) cpu_type=m68k ;;
80 m68008) cpu_type=m68k ;;
81 m683??) cpu_type=m68k ;;
82changequote([,])dnl
83 m8*) cpu_type=m88k ;;
e16b9537 84 mips*el) cpu_type=mips endian=little ;;
01c655cc 85# start-sanitize-r5900
9587640a 86 mips*5900*) cpu_type=mips endian=little ;;
01c655cc 87# end-sanitize-r5900
e7757ad0
KR
88 mips*) cpu_type=mips endian=big ;;
89 powerpcle*) cpu_type=ppc endian=little ;;
90 powerpc*) cpu_type=ppc endian=big ;;
91 rs6000*) cpu_type=ppc ;;
2b09622a
DE
92 sparclite*) cpu_type=sparc arch=sparclite ;;
93 sparclet*) cpu_type=sparc arch=sparclet ;;
70ee7782 94 sparc64*) cpu_type=sparc arch=v9-64 ;;
307edcc0 95 sparc86x*) cpu_type=sparc arch=sparc86x ;;
2b09622a 96 sparc*) cpu_type=sparc arch=sparclite ;; # ??? See tc-sparc.c.
756adc97 97 v850*) cpu_type=v850 ;;
a1c7c0f3 98 *) cpu_type=${cpu} ;;
e7757ad0
KR
99 esac
100
101 if test ${this_target} = $target ; then
102 target_cpu_type=${cpu_type}
6ff87ead
NC
103 if test x${endian} = xbig; then
104 AC_DEFINE(TARGET_BYTES_BIG_ENDIAN, 1)
105 elif test x${endian} = xlittle; then
106 AC_DEFINE(TARGET_BYTES_BIG_ENDIAN, 0)
107 fi
e7757ad0
KR
108 elif test ${target_cpu_type} != ${cpu_type} ; then
109 continue
110 fi
111
e7757ad0
KR
112 generic_target=${cpu_type}-$vendor-$os
113 dev=no
114 bfd_gas=no
115 em=generic
7cf4d7ff 116
e7757ad0
KR
117 # assign object format
118 case ${generic_target} in
6ff87ead
NC
119 a29k-*-coff) fmt=coff ;;
120 a29k-amd-udi) fmt=coff ;;
121 a29k-amd-ebmon) fmt=coff ;;
122 a29k-nyu-sym1) fmt=coff ;;
e7757ad0
KR
123 a29k-*-vxworks*) fmt=coff ;;
124
0170f1c3
RH
125 alpha*-*-*vms*) fmt=evax ;;
126 alpha*-*-netware*) fmt=ecoff ;;
127 alpha*-*-openbsd*) fmt=ecoff ;;
128 alpha*-*-osf*) fmt=ecoff ;;
129 alpha*-*-linuxecoff*) fmt=ecoff ;;
22d3fbd6
NC
130 alpha*-*-linux-gnu*) fmt=elf em=linux ;;
131 alpha*-*-netbsd*) fmt=elf em=nbsd ;;
816153a3 132
e7757ad0 133 arc-*-elf*) fmt=elf bfd_gas=yes ;;
4181c985 134
6ff87ead
NC
135 arm-*-riscix*) fmt=aout em=riscix ;;
136 arm-*-aout) fmt=aout ;;
76fb6d2f 137 arm-*-coff | thumb-*-coff) fmt=coff ;;
e7757ad0 138 arm-*-riscix*) fmt=aout ;;
22d3fbd6 139 arm-*-pe | thumb-*-pe) fmt=coff em=pe ;;
e7757ad0 140
05a8bf33 141 d10v-*-*) fmt=elf bfd_gas=yes ;;
7d0f8249
MH
142# start-sanitize-d30v
143 d30v-*-*) fmt=elf bfd_gas=yes ;;
144# end-sanitize-d30v
7be9a312 145
e7757ad0
KR
146 hppa-*-*elf*) fmt=elf em=hppa ;;
147 hppa-*-lites*) fmt=elf em=hppa ;;
148 hppa-*-osf*) fmt=som em=hppa ;;
332d5c49 149 hppa-*-rtems*) fmt=elf em=hppa ;;
e7757ad0
KR
150 hppa-*-hpux*) fmt=som em=hppa ;;
151 hppa-*-bsd*) fmt=som em=hppa ;;
152 hppa-*-hiux*) fmt=som em=hppa ;;
153
154 h8300-*-coff) fmt=coff ;;
155
6ff87ead 156 i386-ibm-aix*) fmt=coff 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;;
76fb6d2f 161 i386-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes;;
a1c7c0f3 162 i386-*-linux*aout* | i386-*-linuxoldld) fmt=aout em=linux ;;
6ff87ead 163 i386-*-linux*coff*) fmt=coff em=linux ;;
22d3fbd6 164 i386-*-linux-gnu*) fmt=elf em=linux ;;
6ff87ead 165 i386-*-lynxos*) fmt=coff em=lynx ;;
15ddb4c9 166 i386-*-sysv4* | i386-*-solaris* | i386-*-elf)
e7757ad0 167 fmt=elf ;;
15ddb4c9
AC
168 i386-*-freebsdelf*) fmt=elf ;;
169 i386-*-freebsd*) fmt=aout em=386bsd ;;
6cc7a938
ILT
170 i386-*-coff | i386-*-sysv* | i386-*-sco3.2v5*coff | i386-*-isc*)
171 fmt=coff ;;
172 i386-*-sco3.2v5*) fmt=elf
6ff87ead
NC
173 if test ${this_target} = $target; then
174 AC_DEFINE(SCO_ELF)
175 fi
176 ;;
6cc7a938 177 i386-*-sco3.2*) fmt=coff ;;
e7757ad0 178 i386-*-vsta) fmt=aout ;;
60dc9fb2 179 i386-*-msdosdjgpp* | i386-*-go32* | i386-go32-rtems*)
6ff87ead
NC
180 fmt=coff em=go32;;
181 i386-*-rtems*) fmt=coff ;;
6c186c48
SC
182 i386-*-gnu*) fmt=elf ;;
183 i386-*-mach*)
e7757ad0
KR
184 fmt=aout em=mach bfd_gas=yes ;;
185 i386-*-msdos*) fmt=aout ;;
6c186c48 186 i386-*-moss*) fmt=elf ;;
6ff87ead 187 i386-*-pe) fmt=coff em=pe ;;
0040c1e9
ILT
188 i386-*-cygwin32*) fmt=coff em=pe bfd_gas=yes ;;
189 i386-*-mingw32*) fmt=coff em=pe bfd_gas=yes ;;
190 i386-*-*nt*) fmt=coff em=pe ;;
e7757ad0 191 i960-*-bout) fmt=bout ;;
6ff87ead
NC
192 i960-*-coff) fmt=coff em=ic960 ;;
193 i960-*-rtems*) fmt=coff em=ic960 ;;
e7757ad0
KR
194 i960-*-nindy*) fmt=bout ;;
195 i960-*-vxworks4*) fmt=bout ;;
196 i960-*-vxworks5.0) fmt=bout ;;
6ff87ead 197 i960-*-vxworks5.*) fmt=coff em=ic960 ;;
e7757ad0
KR
198 i960-*-vxworks*) fmt=bout ;;
199
374bdac7
DE
200 m32r-*-*) fmt=elf bfd_gas=yes ;;
201
e7757ad0
KR
202 m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*)
203 fmt=aout em=sun3 ;;
6ff87ead
NC
204 m68k-motorola-sysv*) fmt=coff em=delta ;;
205 m68k-bull-sysv3*) fmt=coff em=dpx2 ;;
206 m68k-apollo-*) fmt=coff em=apollo ;;
fee3e248
ILT
207 m68k-*-sysv4*) # must be before -sysv*
208 fmt=elf em=svr4 ;;
209 m68k-*-elf*) fmt=elf ;;
1c94de4d 210 m68k-*-coff | m68k-*-sysv* | m68k-*-rtems*)
6ff87ead 211 fmt=coff ;;
e7757ad0 212 m68k-*-hpux*) fmt=hp300 em=hp300 ;;
535cfd0f 213 m68k-*-linux*aout*) fmt=aout em=linux ;;
22d3fbd6 214 m68k-*-linux-gnu*) fmt=elf em=linux ;;
6ff87ead 215 m68k-*-lynxos*) fmt=coff em=lynx ;;
e7757ad0 216 m68k-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
76fb6d2f 217 m68k-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
6ff87ead 218 m68k-apple-aux*) fmt=coff em=aux ;;
8a6f53e9 219 m68k-*-psos*) fmt=elf em=psos;;
e7757ad0 220
6ff87ead
NC
221 m88k-motorola-sysv3*) fmt=coff em=delt88 ;;
222 m88k-*-coff*) fmt=coff ;;
e7757ad0
KR
223
224 # don't change em like *-*-bsd does
6ff87ead
NC
225 mips-dec-netbsd*) fmt=elf endian=little ;;
226 mips-dec-openbsd*) fmt=elf endian=little ;;
227 mips-dec-bsd*) fmt=aout ;;
228 mips-sony-bsd*) fmt=ecoff ;;
e7757ad0 229 mips-*-bsd*) AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.) ;;
6ff87ead
NC
230 mips-*-ultrix*) fmt=ecoff endian=little ;;
231 mips-*-osf*) fmt=ecoff endian=little ;;
232 mips-*-ecoff*) fmt=ecoff ;;
233 mips-*-ecoff*) fmt=ecoff ;;
234 mips-*-irix6*) fmt=elf ;;
235 mips-*-irix5*) fmt=elf ;;
236 mips-*-irix*) fmt=ecoff ;;
237 mips-*-lnews*) fmt=ecoff em=lnews ;;
238 mips-*-riscos*) fmt=ecoff ;;
239 mips-*-sysv*) fmt=ecoff ;;
22d3fbd6 240 mips-*-elf* | mips-*-rtems* | mips-*-linux-gnu* | mips-*-gnu* | mips-*-openbsd*)
6ff87ead 241 fmt=elf ;;
ae1b99e4
JL
242 mn10200-*-*) fmt=elf bfd_gas=yes ;;
243 mn10300-*-*) fmt=elf bfd_gas=yes ;;
0ff513d9 244 ppc-*-pe | ppc-*-cygwin32 | ppc-*-winnt*)
6ff87ead 245 fmt=coff em=pe ;;
e7757ad0 246 ppc-*-aix*) fmt=coff ;;
515c7142 247 ppc-*-beos*) fmt=coff ;;
76fb6d2f 248 ppc-*-*bsd* | ppc-*-elf* | ppc-*-eabi* | ppc-*-sysv4*)
6ff87ead 249 fmt=elf ;;
22d3fbd6 250 ppc-*-linux-gnu*) fmt=elf
159e6ef8 251 case "$endian" in
6ff87ead 252 big) ;;
22d3fbd6 253 *) AC_MSG_ERROR(GNU/Linux must be configured big endian) ;;
159e6ef8
MM
254 esac
255 ;;
256 ppc-*-solaris*) fmt=elf
6ff87ead
NC
257 if test ${this_target} = $target; then
258 AC_DEFINE(TARGET_SOLARIS_COMMENT)
259 fi
260 if test x${endian} = xbig; then
261 AC_MSG_ERROR(Solaris must be configured little endian)
262 fi
1c94de4d 263 ;;
6ff87ead 264 ppc-*-rtems*) fmt=elf ;;
880b7429
KR
265 ppc-*-macos* | ppc-*-mpw*)
266 fmt=coff em=macos ;;
e7757ad0
KR
267 ppc-*-netware*) fmt=elf em=ppcnw ;;
268
fed13a5e
ILT
269 sh-*-elf*) fmt=elf ;;
270 sh-*-coff*) fmt=coff ;;
f3aa01e2 271 sh-*-rtems*) fmt=coff ;;
816153a3 272
5f757edc
ILT
273 ns32k-pc532-mach* | ns32k-pc532-ux*) fmt=aout em=pc532mach ;;
274 ns32k-pc532-netbsd* | ns32k-pc532-lites*) fmt=aout em=nbsd532 ;;
76fb6d2f 275 ns32k-pc532-openbsd*) fmt=aout em=nbsd532 ;;
e7757ad0 276
1c94de4d 277 sparc-*-rtems*) fmt=aout ;;
e7757ad0 278 sparc-*-sunos4*) fmt=aout em=sun3 ;;
df586de2 279 sparc-*-aout | sparc*-*-vxworks*)
fed13a5e 280 fmt=aout em=sparcaout ;;
e7757ad0 281 sparc-*-coff) fmt=coff ;;
2e013bb7 282 sparc-*-linux*aout*) fmt=aout em=linux ;;
22d3fbd6 283 sparc-*-linux-gnu*) fmt=elf em=linux ;;
e7757ad0
KR
284 sparc-*-lynxos*) fmt=coff em=lynx ;;
285 sparc-fujitsu-none) fmt=aout ;;
0b27ea39 286 sparc-*-elf | sparc-*-sysv4* | sparc-*-solaris*)
e7757ad0
KR
287 fmt=elf ;;
288 sparc-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
76fb6d2f 289 sparc-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
c6aa56bc 290
0e034c77
ILT
291 tic30-*-*aout*) fmt=aout bfd_gas=yes ;;
292 tic30-*-*coff*) fmt=coff bfd_gas=yes ;;
64556643 293# start-sanitize-tic80
6ff87ead 294 tic80-*-*) fmt=coff ;;
64556643 295# end-sanitize-tic80
103dd764
DE
296
297# start-sanitize-sky
98b155a2 298 dvp-*-*) fmt=elf bfd_gas=yes ;;
103dd764
DE
299# end-sanitize-sky
300
c6aa56bc 301 v850-*-*) fmt=elf bfd_gas=yes ;;
e7757ad0 302
6ff87ead
NC
303# start-sanitize-v850e
304 v850e-*-*) fmt=elf bfd_gas=yes ;;
60dc9fb2 305 v850ea-*-*) fmt=elf bfd_gas=yes ;;
5e4e4739 306# end-sanitize-v850e
e7757ad0
KR
307 vax-*-bsd* | vax-*-ultrix*)
308 fmt=aout ;;
309 vax-*-vms) fmt=vms ;;
310
311 z8k-*-coff | z8k-*-sim)
312 fmt=coff ;;
313
314 w65-*-*) fmt=coff ;;
315
316 *-*-aout | *-*-scout)
317 fmt=aout ;;
318 *-*-nindy*)
319 fmt=bout ;;
320 *-*-bsd*)
321 fmt=aout em=sun3 ;;
322 *-*-generic) fmt=generic ;;
323 *-*-xray | *-*-hms) fmt=coff ;;
324 *-*-sim) fmt=coff ;;
325 *-*-elf | *-*-sysv4* | *-*-solaris*)
6df07e7f 326 AC_MSG_WARN(GAS support for ${generic_target} is incomplete.)
e7757ad0
KR
327 fmt=elf dev=yes ;;
328 *-*-vxworks) fmt=aout ;;
329 *-*-netware) fmt=elf ;;
330 esac
331
332 case ${cpu_type}-${fmt} in
0170f1c3 333 alpha*-*) bfd_gas=yes ;;
e7757ad0
KR
334 arm-*) bfd_gas=yes ;;
335 # not yet
336 # i386-aout) bfd_gas=preferred ;;
337 mips-*) bfd_gas=yes ;;
338 ns32k-*) bfd_gas=yes ;;
339 ppc-*) bfd_gas=yes ;;
340 sparc-*) bfd_gas=yes ;;
341 *-elf) bfd_gas=yes ;;
342 *-ecoff) bfd_gas=yes ;;
343 *-som) bfd_gas=yes ;;
344 *) ;;
345 esac
346
5f757edc
ILT
347# Other random stuff.
348
ae09d880
ILT
349 # do we need the opcodes library?
350 case ${cpu_type} in
0e034c77 351 vax | i386 | tic30)
7c2fadd1
ILT
352 ;;
353 *)
354 need_opcodes=yes
f2e272e0
ILT
355
356 case "${enable_shared}" in
357 yes) shared_opcodes=true ;;
358 *opcodes*) shared_opcodes=true ;;
359 *) shared_opcodes=false ;;
360 esac
159e6ef8 361 if test "${shared_opcodes}" = "true"; then
7c2fadd1
ILT
362 # A shared libopcodes must be linked against libbfd.
363 need_bfd=yes
364 fi
365 ;;
ae09d880
ILT
366 esac
367
5f757edc 368 case ${cpu_type} in
374bdac7
DE
369 m32r)
370 case ${extra_objects} in
371 *cgen.o*) ;;
372 *) extra_objects="$extra_objects cgen.o"
374bdac7
DE
373 AC_DEFINE(USING_CGEN)
374 ;;
375 esac
376 ;;
377
1c9dbb83
ILT
378 m68k)
379 case ${extra_objects} in
380 *m68k-parse.o*) ;;
381 *) extra_objects="$extra_objects m68k-parse.o" ;;
382 esac
383 ;;
efec4a28
DP
384
385 mips)
515c7142 386 echo ${extra_objects} | grep -s "itbl-parse.o"
efec4a28 387 if test $? -ne 0 ; then
515c7142 388 extra_objects="$extra_objects itbl-parse.o"
efec4a28
DP
389 fi
390
515c7142 391 echo ${extra_objects} | grep -s "itbl-lex.o"
efec4a28 392 if test $? -ne 0 ; then
515c7142 393 extra_objects="$extra_objects itbl-lex.o"
efec4a28
DP
394 fi
395
515c7142 396 echo ${extra_objects} | grep -s "itbl-ops.o"
efec4a28 397 if test $? -ne 0 ; then
515c7142 398 extra_objects="$extra_objects itbl-ops.o"
efec4a28
DP
399 fi
400 ;;
401
2b09622a 402 sparc)
e01e18a8
DE
403 if test $this_target = $target ; then
404 AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}")
405 fi
2b09622a
DE
406 ;;
407
efec4a28
DP
408 *)
409 ;;
5f757edc
ILT
410 esac
411
e7757ad0
KR
412# See if we really can support this configuration with the emulation code.
413
414 if test $this_target = $target ; then
415 primary_bfd_gas=$bfd_gas
416 obj_format=$fmt
e7757ad0
KR
417 te_file=$em
418
419 if test $bfd_gas = no ; then
420 # Can't support other configurations this way.
421 break
422 fi
423 elif test $bfd_gas = no ; then
424 # Can't support this configuration.
425 break
426 fi
427
428# From target name and format, produce a list of supported emulations.
429
430 case ${generic_target}-${fmt} in
1cb0d00d 431 mips-*-irix5*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
22d3fbd6 432 mips-*-linux-gnu*-*) case "$endian" in
515c7142
ILT
433 big) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
434 *) emulation="mipslelf mipsbelf mipself mipslecoff mipsbecoff mipsecoff" ;;
435 esac ;;
436 mips-*-lnews*-ecoff) ;;
e7757ad0 437 mips-*-*-ecoff) case "$endian" in
1cb0d00d
KR
438 big) emulation="mipsbecoff mipslecoff mipsecoff" ;;
439 *) emulation="mipslecoff mipsbecoff mipsecoff" ;;
e7757ad0
KR
440 esac ;;
441 mips-*-*-elf) case "$endian" in
1cb0d00d
KR
442 big) emulation="mipsbelf mipslelf mipself" ;;
443 *) emulation="mipslelf mipsbelf mipself" ;;
515c7142
ILT
444 # Uncommenting the next line will turn on support for i386 COFF
445 # in any i386 ELF configuration. This probably doesn't work
446 # correctly.
447 # i386-*-*-elf) emulation="i386coff i386elf" ;;
e7757ad0
KR
448 esac ;;
449 esac
450
451 emulations="$emulations $emulation"
452
e7757ad0 453done
fecd2382 454
8cac6ca6
KR
455# Assign floating point type. Most processors with FP support
456# IEEE FP. On those that don't support FP at all, usually IEEE
457# is emulated.
b678740d 458case ${target_cpu} in
904b6037 459 vax | tahoe ) atof=${target_cpu} ;;
e7757ad0 460 *) atof=ieee ;;
fecd2382
RP
461esac
462
8cac6ca6 463case "${obj_format}" in
b11fb939 464 "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
8cac6ca6 465esac
7cf4d7ff 466
b11fb939
KR
467dnl
468dnl Make sure the desired support files exist.
469dnl
470
bf4bd1fc
ILT
471if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
472 AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
b11fb939
KR
473fi
474
fb589130 475if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
b11fb939 476 AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
7cf4d7ff
KR
477fi
478
e7757ad0 479case ${user_bfd_gas}-${primary_bfd_gas} in
a8285504 480 yes-yes | no-no)
7cf4d7ff
KR
481 # We didn't override user's choice.
482 ;;
a8285504 483 no-yes)
b11fb939 484 AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
7cf4d7ff 485 ;;
a8285504 486 no-preferred)
e7757ad0 487 primary_bfd_gas=no
a8285504
DZ
488 ;;
489 *-preferred)
e7757ad0 490 primary_bfd_gas=yes
a8285504 491 ;;
f2889110 492 yes-*)
e7757ad0 493 primary_bfd_gas=yes
f2889110 494 ;;
a8285504
DZ
495 -*)
496 # User specified nothing.
497 ;;
7cf4d7ff
KR
498esac
499
e7757ad0
KR
500# Some COFF configurations want these random other flags set.
501case ${obj_format} in
502 coff)
503 case ${target_cpu_type} in
504 i386) AC_DEFINE(I386COFF) ;;
505 m68k) AC_DEFINE(M68KCOFF) ;;
506 m88k) AC_DEFINE(M88KCOFF) ;;
507 esac
508 ;;
509esac
510
511# Getting this done right is going to be a bitch. Each configuration specified
512# with --enable-targets=... should be checked for environment, format, cpu, and
513# bfd_gas setting.
514#
515# For each configuration, the necessary object file support code must be linked
516# in. This might be only one, it might be up to four. The necessary emulation
517# code needs to be provided, too.
518#
519# And then there's "--enable-targets=all"....
520#
521# For now, just always do it for MIPS ELF or ECOFF configurations. Sigh.
522
523formats="${obj_format}"
524emfiles=""
525EMULATIONS=""
526GAS_UNIQ(emulations)
527for em in . $emulations ; do
528 case $em in
529 .) continue ;;
530 mipsbelf | mipslelf)
531 fmt=elf file=mipself ;;
532 mipsbecoff | mipslecoff)
533 fmt=ecoff file=mipsecoff ;;
515c7142
ILT
534 i386coff)
535 fmt=coff file=i386coff ;;
536 i386elf)
537 fmt=elf file=i386elf ;;
e7757ad0
KR
538 esac
539 formats="$formats $fmt"
540 emfiles="$emfiles e-$file.o"
541 EMULATIONS="$EMULATIONS &$em,"
542done
543GAS_UNIQ(formats)
544GAS_UNIQ(emfiles)
545if test `set . $formats ; shift ; echo $#` -gt 1 ; then
546 for fmt in $formats ; do
547 case $fmt in
548 aout) AC_DEFINE(OBJ_MAYBE_AOUT) ;;
549 bout) AC_DEFINE(OBJ_MAYBE_BOUT) ;;
550 coff) AC_DEFINE(OBJ_MAYBE_COFF) ;;
551 ecoff) AC_DEFINE(OBJ_MAYBE_ECOFF) ;;
552 elf) AC_DEFINE(OBJ_MAYBE_ELF) ;;
553 generic) AC_DEFINE(OBJ_MAYBE_GENERIC) ;;
554 hp300) AC_DEFINE(OBJ_MAYBE_HP300) ;;
555 ieee) AC_DEFINE(OBJ_MAYBE_IEEE) ;;
556 som) AC_DEFINE(OBJ_MAYBE_SOM) ;;
557 vms) AC_DEFINE(OBJ_MAYBE_VMS) ;;
558 esac
559 extra_objects="$extra_objects obj-$fmt.o"
560 done
561 obj_format=multi
562fi
563if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
564 te_file=multi
565 extra_objects="$extra_objects $emfiles"
566 DEFAULT_EMULATION=`set . $emulations ; echo $2`
567 AC_DEFINE(USE_EMULATIONS)
568fi
569AC_SUBST(extra_objects)
570AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS)
571AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION")
572
bf4bd1fc 573case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
318b02b6
KR
574 yes-*-coff) need_bfd=yes ;;
575 no-*-coff) need_bfd=yes
576 AC_DEFINE(MANY_SEGMENTS) ;;
577esac
578
69ecc03f 579reject_dev_configs=yes
8cac6ca6
KR
580
581case ${reject_dev_configs}-${dev} in
582 yes-yes) # Oops.
b11fb939 583 AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
8cac6ca6
KR
584 ;;
585esac
586
bf4bd1fc 587AC_SUBST(target_cpu_type)
833c46e1 588AC_SUBST(obj_format)
515c7142 589AC_SUBST(te_file)
833c46e1 590AC_SUBST(atof)
e7757ad0 591dnl AC_SUBST(emulation)
833c46e1 592
e7757ad0 593case "${primary_bfd_gas}" in
b11fb939
KR
594 yes) AC_DEFINE(BFD_ASSEMBLER)
595 need_bfd=yes ;;
4f6f4aa8
KR
596esac
597
ae09d880
ILT
598# do we need the opcodes library?
599case "${need_opcodes}" in
1c94de4d 600yes)
e2b4bd2a 601 OPCODES_LIB=../opcodes/libopcodes.la
1c94de4d 602 ;;
ae09d880 603esac
ae09d880 604
b11fb939 605case "${need_bfd}" in
1c94de4d 606yes)
e2b4bd2a 607 BFDLIB=../bfd/libbfd.la
1c94de4d 608 ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h"
1c94de4d 609 ;;
4f6f4aa8 610esac
2e013bb7 611
b11fb939 612AC_SUBST(BFDLIB)
2e013bb7
ILT
613AC_SUBST(OPCODES_LIB)
614
b11fb939 615AC_SUBST(ALL_OBJ_DEPS)
4f6f4aa8 616
b11fb939
KR
617AC_DEFINE_UNQUOTED(TARGET_ALIAS, "${target_alias}")
618AC_DEFINE_UNQUOTED(TARGET_CANONICAL, "${target}")
619AC_DEFINE_UNQUOTED(TARGET_CPU, "${target_cpu}")
620AC_DEFINE_UNQUOTED(TARGET_VENDOR, "${target_vendor}")
621AC_DEFINE_UNQUOTED(TARGET_OS, "${target_os}")
622
b11fb939 623AC_PROG_CC
b11fb939 624
e2b4bd2a
ILT
625AC_PROG_YACC
626AC_PROG_LEX
627AC_DECL_YYTEXT
628
629AM_MAINTAINER_MODE
630AM_CYGWIN32
631AM_EXEEXT
632
b11fb939
KR
633AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
634
bf111c9f
KR
635# Put this here so that autoconf's "cross-compiling" message doesn't confuse
636# people who are not cross-compiling but are compiling cross-assemblers.
637AC_MSG_CHECKING(whether compiling a cross-assembler)
638if test "${host}" = "${target}"; then
f2889110
KR
639 cross_gas=no
640else
bf111c9f
KR
641 cross_gas=yes
642 AC_DEFINE(CROSS_COMPILE)
bf111c9f
KR
643fi
644AC_MSG_RESULT($cross_gas)
645
b11fb939
KR
646dnl ansidecl.h will deal with const
647dnl AC_CONST
648AC_FUNC_ALLOCA
649AC_C_INLINE
650
f2889110
KR
651# VMS doesn't have unlink.
652AC_CHECK_FUNCS(unlink remove, break)
28d3e4a3 653
e63c594d
FF
654# Some systems don't have sbrk().
655AC_CHECK_FUNCS(sbrk)
656
b11fb939
KR
657# Some non-ANSI preprocessors botch requoting inside strings. That's bad
658# enough, but on some of those systems, the assert macro relies on requoting
659# working properly!
bf111c9f 660GAS_WORKING_ASSERT
b11fb939
KR
661
662# On some systems, the system header files may not declare malloc, realloc,
663# and free. There are places where gas needs these functions to have been
664# declared -- such as when taking their addresses.
bf111c9f 665gas_test_headers="
b11fb939
KR
666#ifdef HAVE_MEMORY_H
667#include <memory.h>
668#endif
669#ifdef HAVE_STRING_H
670#include <string.h>
5cece526
ILT
671#else
672#ifdef HAVE_STRINGS_H
673#include <strings.h>
674#endif
b11fb939
KR
675#endif
676#ifdef HAVE_STDLIB_H
677#include <stdlib.h>
678#endif
679#ifdef HAVE_UNISTD_H
680#include <unistd.h>
681#endif
bf111c9f 682"
5cece526 683GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
bf111c9f 684GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
5f757edc 685GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
5cece526 686GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
b11fb939
KR
687
688# Does errno.h declare errno, or do we have to add a separate declaration
689# for it?
bf111c9f 690GAS_CHECK_DECL_NEEDED(errno, f, int f, [
b11fb939
KR
691#ifdef HAVE_ERRNO_H
692#include <errno.h>
693#endif
bf111c9f 694])
b11fb939 695
b11fb939 696dnl This must come last.
515c7142
ILT
697
698dnl We used to make symlinks to files in the source directory, but now
699dnl we just use the right name for .c files, and create .h files in
700dnl the build directory which include the right .h file. Make sure
701dnl the old symlinks don't exist, so that a reconfigure in an existing
702dnl directory behaves reasonably.
703
704AC_OUTPUT(Makefile doc/Makefile .gdbinit:gdbinit.in,
705[rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
706 echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
707 echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
708 echo '#include "te-'"${te_file}"'.h"' > targ-env.h
39ffbb4d
DE
709 echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
710 case ${target_cpu_type} in
711 m32r) echo '#include "opcodes/'"${target_cpu_type}"'-opc.h"' > cgen-opc.h ;;
712 esac],
515c7142
ILT
713[target_cpu_type=${target_cpu_type}
714 obj_format=${obj_format}
715 te_file=${te_file}])
This page took 0.29568 seconds and 4 git commands to generate.