]> Git Repo - binutils.git/blob - gas/configure.in
Move cpu-specific dependencies into Makefile.in, instead of having sometimes
[binutils.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.3)dnl We only need 2.0, but pre-2.3 loses on some AIX version.
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
47                 AC_DEFINE(sparcv9) ;;
48   sparclite*)   cpu_type=sparc ;;
49   *)            cpu_type=${target_cpu} ;;
50 esac
51
52 # do we need the opcodes library?
53 case ${cpu_type} in
54   alpha | vax)
55     ;;
56   *)
57     OPCODES_LIB="../opcodes/libopcodes.a"
58     ;;
59 esac
60 AC_SUBST(OPCODES_LIB)
61
62 gas_target=${cpu_type}
63 generic_target=${cpu_type}-${target_vendor}-${target_os}
64 dev=no
65
66 # assign object format
67 case ${generic_target} in
68   a29k-amd-udi)         obj_format=coff gas_target=ebmon29k ;;
69   a29k-amd-ebmon)       obj_format=coff gas_target=ebmon29k ;;
70   a29k-*-vxworks*)      obj_format=coff ;;
71
72   alpha-*-netware*)     obj_format=ecoff ;;
73   alpha-*-osf*)         obj_format=ecoff ;;
74
75 # start-sanitize-arc
76   arc-*-elf*)           obj_format=elf bfd_gas=yes ;;
77 # end-sanitize-arc
78
79   arm-*-riscix*)        obj_format=aout ;;
80
81   hppa-*-*elf*)         obj_format=elf emulation=hppa ;;
82   hppa-*-osf*)          obj_format=som emulation=hppa ;;
83   hppa-*-hpux*)         obj_format=som emulation=hppa ;;
84   hppa-*-bsd*)          obj_format=som emulation=hppa ;;
85   hppa-*-hiux*)         obj_format=som emulation=hppa ;;
86
87   h8300-*-coff)         obj_format=coff ;;
88
89   i386-ibm-aix*)        obj_format=coff gas_target=i386coff
90                          emulation=i386aix ;;
91   i386-*-bsd*)          obj_format=aout emulation=386bsd ;;
92   i386-*-netbsd0.8)     obj_format=aout emulation=386bsd ;;
93   i386-*-netbsd*)       obj_format=aout emulation=nbsd bfd_gas=yes;;
94   i386-*-linux*aout*)   obj_format=aout  emulation=linux ;;
95   i386-*-linux*coff*)   obj_format=coff emulation=linux
96                          gas_target=i386coff ;;
97   i386-*-linux*)        obj_format=elf emulation=linux ;;
98   i386-*-lynxos*)       obj_format=coff gas_target=i386coff
99                          emulation=lynx ;;
100   i386-*-sysv4* | i386-*-solaris* | i386-*-elf)
101                         obj_format=elf ;;
102   i386-*-coff | i386-*-sysv* | i386-*-sco* | i386-*-isc*)
103                         obj_format=coff gas_target=i386coff ;;
104   i386-*-vsta)          obj_format=aout ;;
105   i386-*-go32)          obj_format=coff gas_target=i386coff ;;
106   i386-*-gnu*elf*)      obj_format=elf ;;
107   i386-*-mach* | i386-*-gnu*)
108                         obj_format=aout emulation=mach bfd_gas=yes ;;
109   i386-*-msdos*)        obj_format=aout ;;
110
111   i960-*-bout)          obj_format=bout ;;
112   i960-*-coff)          obj_format=coff emulation=ic960 gas_target=ic960coff ;;
113   i960-*-nindy*)        obj_format=bout ;;
114   i960-*-vxworks4*)     obj_format=bout ;;
115   i960-*-vxworks5.0)    obj_format=bout ;;
116   i960-*-vxworks5.*)    obj_format=coff emulation=ic960 gas_target=ic960coff ;;
117   i960-*-vxworks*)      obj_format=bout ;;
118
119   m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*)
120                         obj_format=aout emulation=sun3 ;;
121   m68k-motorola-sysv)   obj_format=coff gas_target=m68kcoff emulation=delta ;;
122   m68k-bull-sysv3*)     obj_format=coff gas_target=m68kcoff emulation=dpx2 ;;
123   m68k-apollo-*)        obj_format=coff gas_target=apollo emulation=apollo ;;
124   m68k-*-coff | m68k-*-sysv*)
125                         obj_format=coff gas_target=m68kcoff ;;
126   m68k-*-elf)           obj_format=elf ;;
127   m68k-*-hpux*)         obj_format=hp300 emulation=hp300 ;;
128   m68k-*-lynxos*)       obj_format=coff gas_target=m68kcoff
129                          emulation=lynx ;;
130   m68k-*-netbsd*)       obj_format=aout emulation=nbsd bfd_gas=yes ;;
131
132   m88k-*-coff*)         obj_format=coff gas_target=m88kcoff ;;
133
134   # don't change emulation like *-*-bsd does
135   mips-dec-bsd*)        obj_format=aout gas_target=mips-lit ;;
136   mips-sony-bsd*)       obj_format=ecoff gas_target=mips-big ;;
137   mips-*-bsd*)          AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.) ;;
138   mips-*-ultrix*)       obj_format=ecoff gas_target=mips-lit ;;
139   mips-*-ecoff*)        obj_format=ecoff 
140                         case "$endian" in
141                         big) gas_target=mips-big ;;
142                         *)   gas_target=mips-lit ;;
143                         esac
144                         ;;
145   mips-*-ecoff*)        obj_format=ecoff gas_target=mips-big ;;
146   mips-*-gnu*)          obj_format=aout
147                         case "$endian" in
148                         big) gas_target=mips-big ;;
149                         *)   gas_target=mips-lit ;;
150                         esac
151                         ;;
152   mips-*-irix5*)        obj_format=elf gas_target=mips-big ;;
153   mips-*-irix*)         obj_format=ecoff gas_target=mips-big ;;
154   mips-*-riscos*)       obj_format=ecoff gas_target=mips-big ;;
155   mips-*-sysv*)         obj_format=ecoff gas_target=mips-big ;;
156   mips-*-elf*)          obj_format=elf 
157                         case "$endian" in
158                         big) gas_target=mips-big ;;
159                         *)   gas_target=mips-lit ;;
160                         esac
161                         ;;
162   ppc-*-aix*)           obj_format=coff ;;
163   ppc-*-elf*)           obj_format=elf ;;
164   ppc-*-eabi*)          obj_format=elf ;;
165   ppc-*-netware*)       obj_format=elf emulation=ppcnw ;;
166   ppc-*-sysv4*)         obj_format=elf ;;
167
168   sh-*-coff)            obj_format=coff ;;
169
170 # start-sanitize-rce
171   rce-*-aout)           obj_format=aout ;;
172 # end-sanitize-rce
173
174   ns32k-pc532-mach*)    obj_format=aout emulation=pc532mach ;;
175   ns32k-pc532-netbsd*)  obj_format=aout emulation=nbsd532 ;;
176
177   sparc-*-sunos4*)      obj_format=aout emulation=sun3 ;;
178   sparc-*-aout | sparc*-*-vxworks)
179                         obj_format=aout ;;
180   sparc-*-coff)         obj_format=coff ;;
181   sparc-*-lynxos*)      obj_format=coff emulation=lynx ;;
182   sparc-fujitsu-none)   obj_format=aout ;;
183   sparc-*-elf | sparc*-*-solaris*)
184                         obj_format=elf ;;
185   sparc-*-netbsd*)      obj_format=aout emulation=nbsd bfd_gas=yes ;;
186
187   vax-*-bsd* | vax-*-ultrix*)
188                         obj_format=aout ;;
189   vax-*-vms)            obj_format=vms ;;
190
191   z8k-*-coff | z8k-*-sim)
192                         obj_format=coff ;;
193
194   w65-*-*)              obj_format=coff ;;
195
196   *-*-aout | *-*-scout)
197                         obj_format=aout ;;
198   *-*-nindy*)
199                         obj_format=bout ;;
200   *-*-bsd*)
201                         obj_format=aout emulation=sun3 ;;
202   *-*-generic)          obj_format=generic ;;
203   *-*-xray | *-*-hms)   obj_format=coff ;;
204   *-*-sim)              obj_format=coff ;;
205   *-*-elf | *-*-sysv4* | *-*-solaris*)
206                         AC_MSG_WARN(GAS support for ELF format is incomplete)
207                         obj_format=elf dev=yes ;;
208   *-*-vxworks)          obj_format=aout ;;
209   *-*-netware)          obj_format=elf ;;
210 esac
211
212 # Assign floating point type.  Most processors with FP support
213 # IEEE FP.  On those that don't support FP at all, usually IEEE
214 # is emulated.
215 case ${target_cpu} in
216   vax | tahoe ) atof=${target_cpu} ;;
217   *)                    atof=ieee ;;
218 esac
219
220 case "${obj_format}" in
221   "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
222 esac
223
224 dnl
225 dnl Make sure the desired support files exist.
226 dnl
227
228 if test ! -r ${srcdir}/config/tc-${cpu_type}.c; then
229   AC_MSG_ERROR(GAS does not support target CPU ${cpu_type})
230 fi
231
232 if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
233   AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
234 fi
235
236 # and target makefile frag
237
238 target_frag=${srcdir}/config/${gas_target}.mt
239 if test ! -r ${target_frag}; then
240   target_frag=/dev/null # ick! but subst_file can't be conditionalized
241 fi
242 AC_SUBST_FILE(target_frag)
243
244 case ${cpu_type}-${obj_format} in
245   arm-*)        bfd_gas=yes ;;
246 # not yet
247 # i386-aout)    bfd_gas=preferred ;;
248   mips-*)       bfd_gas=yes ;;
249   ns32k-*)      bfd_gas=yes ;;
250   ppc-*)        bfd_gas=yes ;;
251   sparc-*)      bfd_gas=yes ;;
252   *-elf)        bfd_gas=yes ;;
253   *-ecoff)      bfd_gas=yes ;;
254   *-som)        bfd_gas=yes ;;
255   *)            ;;
256 esac
257
258 case ${user_bfd_gas}-${bfd_gas} in
259   yes-yes | no-no)
260     # We didn't override user's choice.
261     ;;
262   no-yes)
263     AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
264     ;;
265   no-preferred)
266     bfd_gas=no
267     ;;
268   *-preferred)
269     bfd_gas=yes
270     ;;
271   yes-*)
272     bfd_gas=yes
273     ;;
274   -*)
275     # User specified nothing.
276     ;;
277 esac
278
279 case ${bfd_gas}-${cpu_type}-${obj_format} in
280   yes-*-coff)   need_bfd=yes ;;
281   no-*-coff)    need_bfd=yes
282                 AC_DEFINE(MANY_SEGMENTS) ;;
283 esac
284
285 reject_dev_configs=yes
286
287 case ${reject_dev_configs}-${dev} in
288   yes-yes) # Oops.
289     AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
290     ;;
291 esac
292
293 AC_SUBST(cpu_type)
294 AC_SUBST(obj_format)
295 AC_SUBST(atof)
296 AC_SUBST(emulation)
297
298 AC_LINK_FILES(config/tc-${cpu_type}.c   config/tc-${cpu_type}.h \
299         config/obj-${obj_format}.h config/obj-${obj_format}.c \
300         config/te-${emulation}.h config/atof-${atof}.c,
301         targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c)
302
303 case "${bfd_gas}" in
304   yes)  AC_DEFINE(BFD_ASSEMBLER)
305         need_bfd=yes ;;
306 esac
307
308 case "${need_bfd}" in
309   yes)  BFDLIB=../bfd/libbfd.a
310         ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h"
311         ;;
312 esac
313 AC_SUBST(BFDLIB)
314 AC_SUBST(ALL_OBJ_DEPS)
315
316 AC_DEFINE_UNQUOTED(TARGET_ALIAS,        "${target_alias}")
317 AC_DEFINE_UNQUOTED(TARGET_CANONICAL,    "${target}")
318 AC_DEFINE_UNQUOTED(TARGET_CPU,          "${target_cpu}")
319 AC_DEFINE_UNQUOTED(TARGET_VENDOR,       "${target_vendor}")
320 AC_DEFINE_UNQUOTED(TARGET_OS,           "${target_os}")
321
322 AC_PROG_CC
323 AC_PROG_INSTALL
324
325 AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
326
327 # Put this here so that autoconf's "cross-compiling" message doesn't confuse
328 # people who are not cross-compiling but are compiling cross-assemblers.
329 AC_MSG_CHECKING(whether compiling a cross-assembler)
330 if test "${host}" = "${target}"; then
331   cross_gas=no
332 else
333   cross_gas=yes
334   AC_DEFINE(CROSS_COMPILE)
335 fi
336 AC_MSG_RESULT($cross_gas)
337
338 dnl ansidecl.h will deal with const
339 dnl AC_CONST
340 AC_FUNC_ALLOCA
341 AC_C_INLINE
342
343 # VMS doesn't have unlink.
344 AC_CHECK_FUNCS(unlink remove, break)
345
346 # Some non-ANSI preprocessors botch requoting inside strings.  That's bad
347 # enough, but on some of those systems, the assert macro relies on requoting
348 # working properly!
349 GAS_WORKING_ASSERT
350
351 # On some systems, the system header files may not declare malloc, realloc,
352 # and free.  There are places where gas needs these functions to have been
353 # declared -- such as when taking their addresses.
354 gas_test_headers="
355 #ifdef HAVE_MEMORY_H
356 #include <memory.h>
357 #endif
358 #ifdef HAVE_STRING_H
359 #include <string.h>
360 #endif
361 #ifdef HAVE_STDLIB_H
362 #include <stdlib.h>
363 #endif
364 #ifdef HAVE_UNISTD_H
365 #include <unistd.h>
366 #endif
367 "
368 GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
369 GAS_CHECK_DECL_NEEDED(free, f, int f, $gas_test_headers)
370
371 # Does errno.h declare errno, or do we have to add a separate declaration
372 # for it?
373 GAS_CHECK_DECL_NEEDED(errno, f, int f, [
374 #ifdef HAVE_ERRNO_H
375 #include <errno.h>
376 #endif
377 ])
378
379 AC_CONFIG_SUBDIRS(testsuite)
380
381 dnl This must come last.
382 AC_OUTPUT(Makefile doc/Makefile .gdbinit:gdbinit.in)
This page took 0.044517 seconds and 4 git commands to generate.