Do unlink/delete test properly.
[deliverable/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(1.118)dnl
8 AC_INIT(as.h)dnl
9 dnl
10 bfd_gas=no
11 user_bfd_gas=
12 AC_ARG_ENABLE(bfd-assembler,
13 [ bfd-assembler use BFD back end for writing object files],
14 [case "${enableval}" in
15 yes) need_bfd=yes user_bfd_gas=yes ;;
16 no) user_bfd_gas=no ;;
17 *) AC_MSG_ERROR(bad value ${enableval} given for bfd-assembler option) ;;
18 esac])dnl
19
20 # Generate a header file -- gets more post-processing by Makefile later.
21 AC_CONFIG_HEADER(conf)
22
23 dnl For recursion to work right, this must be an absolute pathname.
24 AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..)
25 AC_CANONICAL_SYSTEM
26 AC_ARG_PROGRAM
27
28 emulation=generic
29
30 # assign cpu type
31
32 # check for architecture variants
33 case ${target_cpu} in
34 hppa*) cpu_type=hppa ;;
35 changequote(,)dnl
36 i[45]86) cpu_type=i386 ;;
37 m680[012346]0) cpu_type=m68k ;;
38 m68008) cpu_type=m68k ;;
39 m683??) cpu_type=m68k ;;
40 changequote([,])dnl
41 m8*) cpu_type=m88k ;;
42 mips*el) cpu_type=mips endian=little;;
43 mips*) cpu_type=mips endian=big ;;
44 powerpc*) cpu_type=ppc ;;
45 rs6000*) cpu_type=ppc ;;
46 sparc64) cpu_type=sparc obj_format=elf AC_DEFINE(sparcv9) ;;
47 sparclite*) cpu_type=sparc ;;
48 *) cpu_type=${target_cpu} ;;
49 esac
50
51 # do we need the opcodes library?
52 case ${cpu_type} in
53 alpha | vax)
54 ;;
55 *)
56 OPCODES_LIB="../opcodes/libopcodes.a"
57 ;;
58 esac
59 AC_SUBST(OPCODES_LIB)
60
61 gas_target=${cpu_type}
62 generic_target=${cpu_type}-${target_vendor}-${target_os}
63 dev=no
64
65 # assign object format
66 case ${generic_target} in
67 a29k-amd-udi) obj_format=coff gas_target=ebmon29k ;;
68 a29k-amd-ebmon) obj_format=coff gas_target=ebmon29k ;;
69
70 alpha-*-netware*) obj_format=ecoff ;;
71 alpha-*-osf*) obj_format=ecoff ;;
72
73 arm-*-riscix*) obj_format=aout bfd_gas=yes ;;
74
75 hppa-*-*elf*) obj_format=elf emulation=hppa ;;
76 hppa-*-osf*) obj_format=som emulation=hppa ;;
77 hppa-*-hpux*) obj_format=som emulation=hppa ;;
78 hppa-*-bsd*) obj_format=som emulation=hppa ;;
79 hppa-*-hiux*) obj_format=som emulation=hppa ;;
80
81 h8300-*-coff) obj_format=coff ;;
82
83 i386-ibm-aix*) obj_format=coff gas_target=i386coff
84 emulation=i386aix ;;
85 i386-*-bsd*) obj_format=aout emulation=386bsd ;;
86 i386-*-netbsd0.8) obj_format=aout emulation=386bsd ;;
87 i386-*-netbsd*) obj_format=aout emulation=netbsd ;;
88 i386-*-linux*elf*) obj_format=elf emulation=linux ;;
89 i386-*-linux*coff*) obj_format=coff emulation=linux
90 gas_target=i386coff ;;
91 i386-*-linux*) obj_format=aout emulation=linux ;;
92 i386-*-lynxos*) obj_format=coff gas_target=i386coff
93 emulation=lynx ;;
94 i386-*-sysv4* | i386-*-solaris* | i386-*-elf)
95 obj_format=elf ;;
96 i386-*-coff | i386-*-sysv* | i386-*-sco* | i386-*-isc*)
97 obj_format=coff gas_target=i386coff ;;
98 i386-*-vsta) obj_format=aout ;;
99 i386-*-go32) obj_format=coff gas_target=i386coff ;;
100 i386-*-mach* | i386-*-gnu*)
101 obj_format=aout emulation=mach bfd_gas=yes ;;
102
103 i960-*-bout) obj_format=bout ;;
104 i960-*-coff) obj_format=coff emulation=ic960 gas_target=ic960coff ;;
105 i960-*-nindy*) obj_format=bout ;;
106 i960-*-vxworks4*) obj_format=bout ;;
107 i960-*-vxworks5.0) obj_format=bout ;;
108 i960-*-vxworks5.*) obj_format=coff emulation=ic960 gas_target=ic960coff ;;
109 i960-*-vxworks*) obj_format=bout ;;
110
111 m68k-wrs-vxworks | m68k-ericsson-ose | m68k-*-sunos*)
112 obj_format=aout emulation=sun3 ;;
113 m68k-motorola-sysv) obj_format=coff gas_target=m68kcoff emulation=delta ;;
114 m68k-bull-sysv3*) obj_format=coff gas_target=m68kcoff emulation=dpx2 ;;
115 m68k-apollo-*) obj_format=coff gas_target=apollo emulation=apollo ;;
116 m68k-*-coff | m68k-*-sysv*)
117 obj_format=coff gas_target=m68kcoff ;;
118 m68k-*-hpux) obj_format=hp300 emulation=hp300 ;;
119 m68k-*-lynxos*) obj_format=coff gas_target=m68kcoff
120 emulation=lynx ;;
121
122 m88k-*-coff*) obj_format=coff gas_target=m88kcoff ;;
123
124 # don't change emulation like *-*-bsd does
125 mips-*-bsd*) bfd_gas=yes obj_format=aout gas_target=mips-lit ;;
126 mips-*-ultrix*) obj_format=ecoff gas_target=mips-lit ;;
127 mips-*-ecoff*) obj_format=ecoff
128 case "$endian" in
129 big) gas_target=mips-big ;;
130 *) gas_target=mips-lit ;;
131 esac
132 ;;
133 mips-*-ecoff*) obj_format=ecoff gas_target=mips-big ;;
134 mips-*-irix5*) obj_format=elf gas_target=mips-big ;;
135 mips-*-irix*) obj_format=ecoff gas_target=mips-big ;;
136 mips-*-riscos*) obj_format=ecoff gas_target=mips-big ;;
137 mips-*-sysv*) obj_format=ecoff gas_target=mips-big ;;
138 mips-*-elf*) obj_format=elf
139 case "$endian" in
140 big) gas_target=mips-big ;;
141 *) gas_target=mips-lit ;;
142 esac
143 ;;
144 ppc-*-aix*) obj_format=coff bfd_gas=yes ;;
145 ppc-*-elf*) obj_format=elf bfd_gas=yes ;;
146 ppc-*-netware*) obj_format=elf emulation=ppcnw ;;
147 ppc-*-sysv4*) obj_format=elf bfd_gas=yes ;;
148
149 sh-*-coff) obj_format=coff ;;
150
151 ns32k-pc532-mach*) obj_format=aout emulation=pc532 bfd_gas=yes ;;
152 ns32k-pc532-netbsd*) obj_format=aout emulation=netbsd532 bfd_gas=yes ;;
153
154 sparc*-*-sunos4*) obj_format=aout emulation=sun3 bfd_gas=yes ;;
155 sparc*-*-aout | sparc*-*-vxworks)
156 obj_format=aout bfd_gas=yes ;;
157 sparc*-*-coff) obj_format=coff bfd_gas=yes ;;
158 sparc*-*-lynxos*) obj_format=coff bfd_gas=yes emulation=lynx ;;
159 sparc*-fujitsu-none) obj_format=aout bfd_gas=yes ;;
160 sparc*-*-elf | sparc*-*-solaris*)
161 obj_format=elf ;;
162
163 vax-*-bsd* | vax-*-ultrix*)
164 obj_format=aout ;;
165 vax-*-vms) obj_format=vms ;;
166
167 z8k-*-coff | z8k-*-sim)
168 obj_format=coff ;;
169
170 *-*-aout | *-*-scout)
171 obj_format=aout ;;
172 *-*-nindy*)
173 obj_format=bout ;;
174 *-*-bsd*)
175 obj_format=aout emulation=sun3 ;;
176 *-*-generic) obj_format=generic ;;
177 *-*-xray | *-*-hms) obj_format=coff ;;
178 *-*-sim) obj_format=coff ;;
179 *-*-elf | *-*-sysv4* | *-*-solaris*)
180 AC_MSG_WARN(GAS support for ELF format is incomplete)
181 obj_format=elf dev=yes ;;
182 *-*-vxworks) obj_format=aout ;;
183 *-*-netware) obj_format=elf ;;
184 esac
185
186 # Assign floating point type. Most processors with FP support
187 # IEEE FP. On those that don't support FP at all, usually IEEE
188 # is emulated.
189 case ${target_cpu} in
190 vax | tahoe ) atof=${target_cpu} ;;
191 *) atof=ieee ;;
192 esac
193
194 case "${obj_format}" in
195 "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
196 esac
197
198 dnl
199 dnl Make sure the desired support files exist.
200 dnl
201
202 if test ! -r ${srcdir}/config/tc-${cpu_type}.c; then
203 AC_MSG_ERROR(GAS does not support target CPU ${cpu_type})
204 fi
205
206 if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
207 AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
208 fi
209
210 # and target makefile frag
211
212 target_frag=${srcdir}/config/${gas_target}.mt
213 AC_SUBST_FILE(target_frag)
214
215 case ${cpu_type}-${obj_format} in
216 # not yet
217 # i386-aout) bfd_gas=preferred ;;
218 *-elf) bfd_gas=yes ;;
219 *-ecoff) bfd_gas=yes ;;
220 *-som) bfd_gas=yes ;;
221 *) ;;
222 esac
223
224 case ${user_bfd_gas}-${bfd_gas} in
225 yes-yes | no-no)
226 # We didn't override user's choice.
227 ;;
228 no-yes)
229 AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
230 ;;
231 no-preferred)
232 bfd_gas=no
233 ;;
234 *-preferred)
235 bfd_gas=yes
236 ;;
237 -*)
238 # User specified nothing.
239 ;;
240 esac
241
242 case ${bfd_gas}-${cpu_type}-${obj_format} in
243 yes-*-coff) need_bfd=yes ;;
244 no-*-coff) need_bfd=yes
245 AC_DEFINE(MANY_SEGMENTS) ;;
246 esac
247
248 reject_dev_configs=yes
249
250 case ${reject_dev_configs}-${dev} in
251 yes-yes) # Oops.
252 AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
253 ;;
254 esac
255
256 AC_LINK_FILES(config/tc-${cpu_type}.c config/tc-${cpu_type}.h \
257 config/obj-${obj_format}.h config/obj-${obj_format}.c \
258 config/te-${emulation}.h config/atof-${atof}.c,
259 targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c)
260
261 case "${bfd_gas}" in
262 yes) AC_DEFINE(BFD_ASSEMBLER)
263 need_bfd=yes ;;
264 esac
265
266 case "${need_bfd}" in
267 yes) BFDLIB=../bfd/libbfd.a
268 ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h"
269 ;;
270 esac
271 AC_SUBST(BFDLIB)
272 AC_SUBST(ALL_OBJ_DEPS)
273
274 AC_DEFINE_UNQUOTED(TARGET_ALIAS, "${target_alias}")
275 AC_DEFINE_UNQUOTED(TARGET_CANONICAL, "${target}")
276 AC_DEFINE_UNQUOTED(TARGET_CPU, "${target_cpu}")
277 AC_DEFINE_UNQUOTED(TARGET_VENDOR, "${target_vendor}")
278 AC_DEFINE_UNQUOTED(TARGET_OS, "${target_os}")
279
280 case ${host} in
281 rs6000-*-*)
282 # The IBM compiler mis-compiles some expressions used in gas.
283 # This will tell gas to work around this lossage.
284 AC_DEFINE(IBM_COMPILER_SUX) ;;
285 i386-*-go32)
286 # Using fopen(..., "w") for a binary file breaks under DOS.
287 AC_DEFINE(WANT_FOPEN_BIN) ;;
288 esac
289
290 AC_PROG_CC
291 AC_PROG_INSTALL
292
293 AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
294
295 # Put this here so that autoconf's "cross-compiling" message doesn't confuse
296 # people who are not cross-compiling but are compiling cross-assemblers.
297 AC_MSG_CHECKING(whether compiling a cross-assembler)
298 if test "${host}" = "${target}"; then
299 cross_gas=yes
300 AC_DEFINE(CROSS_COMPILE)
301 else
302 cross_gas=no
303 fi
304 AC_MSG_RESULT($cross_gas)
305
306 dnl ansidecl.h will deal with const
307 dnl AC_CONST
308 AC_FUNC_ALLOCA
309 AC_C_INLINE
310
311 # VMS needs this.
312 AC_CHECK_FUNCS(unlink delete, break)
313
314 # Some non-ANSI preprocessors botch requoting inside strings. That's bad
315 # enough, but on some of those systems, the assert macro relies on requoting
316 # working properly!
317 GAS_WORKING_ASSERT
318
319 # On some systems, the system header files may not declare malloc, realloc,
320 # and free. There are places where gas needs these functions to have been
321 # declared -- such as when taking their addresses.
322 gas_test_headers="
323 #ifdef HAVE_MEMORY_H
324 #include <memory.h>
325 #endif
326 #ifdef HAVE_STRING_H
327 #include <string.h>
328 #endif
329 #ifdef HAVE_STDLIB_H
330 #include <stdlib.h>
331 #endif
332 #ifdef HAVE_UNISTD_H
333 #include <unistd.h>
334 #endif
335 "
336 GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
337 GAS_CHECK_DECL_NEEDED(free, f, int f, $gas_test_headers)
338
339 # Does errno.h declare errno, or do we have to add a separate declaration
340 # for it?
341 GAS_CHECK_DECL_NEEDED(errno, f, int f, [
342 #ifdef HAVE_ERRNO_H
343 #include <errno.h>
344 #endif
345 ])
346
347 AC_CONFIG_SUBDIRS(testsuite)
348
349 dnl This must come last.
350 dnl Apparently symlinks are checked for in the directory containing
351 dnl the last Makefile. Thus the order used here...
352 AC_OUTPUT(Makefile doc/Makefile .gdbinit:gdbinit.in)
This page took 0.037529 seconds and 5 git commands to generate.