sim: testsuite: regenerate configure
[deliverable/binutils-gdb.git] / sim / mips / configure.ac
CommitLineData
c906108c 1dnl Process this file with autoconf to produce a configure script.
b7026657 2AC_PREREQ(2.59)dnl
c906108c 3AC_INIT(Makefile.in)
35695fd6 4AC_CONFIG_HEADER(config.h:config.in)
c906108c 5
f0569246 6sinclude(../common/aclocal.m4)
c906108c 7
35695fd6
AC
8# Bugs in autoconf 2.59 break the call to SIM_AC_COMMON, hack around
9# it by inlining the macro's contents.
10sinclude(../common/common.m4)
11
c906108c
SS
12dnl Options available in this module
13SIM_AC_OPTION_INLINE()
14SIM_AC_OPTION_ALIGNMENT(NONSTRICT_ALIGNMENT)
15SIM_AC_OPTION_HOSTENDIAN
16SIM_AC_OPTION_WARNINGS
e6c674b8 17SIM_AC_OPTION_RESERVED_BITS(1)
c906108c
SS
18
19# DEPRECATED
20#
21# Instead of defining a `subtarget' macro, code should be checking
22# the value of {STATE,CPU}_ARCHITECTURE to identify the architecture
23# in question.
24#
25case "${target}" in
4c54fc26 26 mips64vr*-*-*) SIM_SUBTARGET="-DTARGET_ENABLE_FR=1" ;;
c906108c 27 mips*tx39*) SIM_SUBTARGET="-DSUBTARGET_R3900=1";;
109ad085 28 mips*-sde-elf*) SIM_SUBTARGET="-DTARGET_ENABLE_FR=1";;
1e799e28
CD
29 mipsisa32*-*-*) SIM_SUBTARGET="-DTARGET_ENABLE_FR=1";;
30 mipsisa64*-*-*) SIM_SUBTARGET="-DTARGET_ENABLE_FR=1";;
c906108c
SS
31 *) SIM_SUBTARGET="";;
32esac
33AC_SUBST(SIM_SUBTARGET)
34
35
36
37#
38# Select the byte order of the target
39#
40mips_endian=
41default_endian=
42case "${target}" in
43 mips64el*-*-*) mips_endian=LITTLE_ENDIAN ;;
7a292a7a 44 mips64vr*el-*-*) default_endian=LITTLE_ENDIAN ;;
c906108c
SS
45 mips64*-*-*) default_endian=BIG_ENDIAN ;;
46 mips16*-*-*) default_endian=BIG_ENDIAN ;;
1e799e28
CD
47 mipsisa32*-*-*) default_endian=BIG_ENDIAN ;;
48 mipsisa64*-*-*) default_endian=BIG_ENDIAN ;;
c906108c
SS
49 mips*-*-*) default_endian=BIG_ENDIAN ;;
50 *) default_endian=BIG_ENDIAN ;;
51esac
52SIM_AC_OPTION_ENDIAN($mips_endian,$default_endian)
53
54
55
56#
57# Select the bitsize of the target
58#
59mips_addr_bitsize=
60case "${target}" in
4b5d35ee 61 mips*-sde-elf*) mips_bitsize=64 ; mips_msb=63 ;;
c906108c
SS
62 mips64*-*-*) mips_bitsize=64 ; mips_msb=63 ;;
63 mips16*-*-*) mips_bitsize=64 ; mips_msb=63 ;;
1e799e28
CD
64 mipsisa32*-*-*) mips_bitsize=32 ; mips_msb=31 ;;
65 mipsisa64*-*-*) mips_bitsize=64 ; mips_msb=63 ;;
c906108c
SS
66 mips*-*-*) mips_bitsize=32 ; mips_msb=31 ;;
67 *) mips_bitsize=64 ; mips_msb=63 ;;
68esac
69SIM_AC_OPTION_BITSIZE($mips_bitsize,$mips_msb,$mips_addr_bitsize)
70
71
72
73#
74# Select the floating hardware support of the target
75#
76mips_fpu=HARDWARE_FLOATING_POINT
77mips_fpu_bitsize=
78case "${target}" in
4b5d35ee
TS
79 mips*tx39*) mips_fpu=HARD_FLOATING_POINT ; mips_fpu_bitsize=32 ;;
80 mips*-sde-elf*) mips_fpu=HARD_FLOATING_POINT ; mips_fpu_bitsize=64 ;;
c906108c
SS
81 mips64*-*-*) mips_fpu=HARD_FLOATING_POINT ;;
82 mips16*-*-*) mips_fpu=HARD_FLOATING_POINT ;;
1e799e28
CD
83 mipsisa32*-*-*) mips_fpu=HARD_FLOATING_POINT ; mips_fpu_bitsize=64 ;;
84 mipsisa64*-*-*) mips_fpu=HARD_FLOATING_POINT ; mips_fpu_bitsize=64 ;;
c906108c
SS
85 mips*-*-*) mips_fpu=HARD_FLOATING_POINT ; mips_fpu_bitsize=32 ;;
86 *) mips_fpu=HARD_FLOATING_POINT ;;
87esac
88SIM_AC_OPTION_FLOAT($mips_fpu,$mips_fpu_bitsize)
89
90
91
92#
93# Select the level of SMP support
94#
95case "${target}" in
96 *) mips_smp=0 ;;
97esac
98SIM_AC_OPTION_SMP($mips_smp)
99
100
101
102#
103# Select the IGEN architecture
104#
105sim_gen=IGEN
106sim_igen_machine="-M mipsIV"
139181c8 107sim_m16_machine="-M mips16,mipsIII"
c906108c
SS
108sim_igen_filter="32,64,f"
109sim_m16_filter="16"
4c54fc26
CD
110sim_mach_default="mips8000"
111
c906108c
SS
112case "${target}" in
113 mips*tx39*) sim_gen=IGEN
114 sim_igen_filter="32,f"
115 sim_igen_machine="-M r3900"
116 ;;
117 mips64vr43*-*-*) sim_gen=IGEN
118 sim_igen_machine="-M mipsIV"
4c54fc26 119 sim_mach_default="mips8000"
c906108c
SS
120 ;;
121 mips64vr5*-*-*) sim_gen=IGEN
122 sim_igen_machine="-M vr5000"
4c54fc26 123 sim_mach_default="mips5000"
c906108c
SS
124 ;;
125 mips64vr41*) sim_gen=M16
126 sim_igen_machine="-M vr4100"
127 sim_m16_machine="-M vr4100"
128 sim_igen_filter="32,64,f"
129 sim_m16_filter="16"
4c54fc26 130 sim_mach_default="mips4100"
c906108c 131 ;;
4c54fc26
CD
132 mips64vr-*-* | mips64vrel-*-*)
133 sim_gen=MULTI
134 sim_multi_configs="\
135 vr4100:mipsIII,mips16,vr4100:32,64:mips4100,mips4111\
136 vr4120:mipsIII,mips16,vr4120:32,64:mips4120\
137 vr5000:mipsIV:32,64,f:mips4300,mips5000\
138 vr5400:mipsIV,vr5400:32,64,f:mips5400\
139 vr5500:mipsIV,vr5500:32,64,f:mips5500"
140 sim_multi_default=mips5000
141 ;;
3669427c 142 mips*-sde-elf*) sim_gen=M16
8b082fb1 143 sim_igen_machine="-M mips64r2,mips3d,mips16,mips16e,mdmx,dsp,dsp2,smartmips"
3669427c
TS
144 sim_m16_machine="-M mips16,mips16e,mips64r2"
145 sim_igen_filter="32,64,f"
146 sim_mach_default="mipsisa64r2"
147 ;;
c906108c
SS
148 mips64*-*-*) sim_igen_filter="32,64,f"
149 sim_gen=IGEN
150 ;;
151 mips16*-*-*) sim_gen=M16
152 sim_igen_filter="32,64,f"
153 sim_m16_filter="16"
154 ;;
d5fb0879
RS
155 mipsisa32r2*-*-*) sim_gen=M16
156 sim_igen_machine="-M mips32r2,mips16,mips16e,mdmx,dsp,dsp2,smartmips"
157 sim_m16_machine="-M mips16,mips16e,mips32r2"
158 sim_igen_filter="32,f"
159 sim_mach_default="mipsisa32r2"
e70cb6cd 160 ;;
d5fb0879
RS
161 mipsisa32*-*-*) sim_gen=M16
162 sim_igen_machine="-M mips32,mips16,mips16e,smartmips"
163 sim_m16_machine="-M mips16,mips16e,mips32"
164 sim_igen_filter="32,f"
165 sim_mach_default="mipsisa32"
1e799e28 166 ;;
d5fb0879
RS
167 mipsisa64r2*-*-*) sim_gen=M16
168 sim_igen_machine="-M mips64r2,mips3d,mips16,mips16e,mdmx,dsp,dsp2"
169 sim_m16_machine="-M mips16,mips16e,mips64r2"
170 sim_igen_filter="32,64,f"
171 sim_mach_default="mipsisa64r2"
e70cb6cd 172 ;;
7cbea089 173 mipsisa64sb1*-*-*) sim_gen=IGEN
109ad085 174 sim_igen_machine="-M mips64,mips3d,sb1"
7cbea089 175 sim_igen_filter="32,64,f"
4c54fc26 176 sim_mach_default="mips_sb1"
7cbea089 177 ;;
d5fb0879
RS
178 mipsisa64*-*-*) sim_gen=M16
179 sim_igen_machine="-M mips64,mips3d,mips16,mips16e,mdmx"
180 sim_m16_machine="-M mips16,mips16e,mips64"
181 sim_igen_filter="32,64,f"
182 sim_mach_default="mipsisa64"
1e799e28 183 ;;
109ad085 184 mips*lsi*) sim_gen=M16
c906108c
SS
185 sim_igen_machine="-M mipsIII,mips16"
186 sim_m16_machine="-M mips16,mipsIII"
187 sim_igen_filter="32,f"
188 sim_m16_filter="16"
4c54fc26 189 sim_mach_default="mips4000"
109ad085 190 ;;
c906108c
SS
191 mips*-*-*) sim_gen=IGEN
192 sim_igen_filter="32,f"
193 ;;
194esac
4c54fc26
CD
195
196# The MULTI generator can combine several simulation engines into one.
197# executable. A configuration which uses the MULTI should set two
198# variables: ${sim_multi_configs} and ${sim_multi_default}.
199#
200# ${sim_multi_configs} is the list of engines to build. Each
201# space-separated entry has the form NAME:MACHINE:FILTER:BFDMACHS,
202# where:
203#
204# - NAME is a C-compatible prefix for the engine,
205# - MACHINE is a -M argument,
206# - FILTER is a -F argument, and
207# - BFDMACHS is a comma-separated list of bfd machines that the
208# simulator can run.
209#
210# Each entry will have a separate simulation engine whose prefix is
211# m32<NAME>. If the machine list includes "mips16", there will also
212# be a mips16 engine, prefix m16<NAME>. The mips16 engine will be
213# generated using the same machine list as the 32-bit version,
214# but the filter will be "16" instead of FILTER.
215#
216# The simulator compares the bfd mach against BFDMACHS to decide
217# which engine to use. Entries in BFDMACHS should be bfd_mach
218# values with "bfd_mach_" removed. ${sim_multi_default} says
219# which entry should be the default.
220if test ${sim_gen} = MULTI; then
221
222 # Simple sanity check.
223 if test -z "${sim_multi_configs}" || test -z "${sim_multi_default}"; then
224 AC_MSG_ERROR(Error in configure.in: MULTI simulator not set up correctly)
225 fi
226
227 # Start in a known state.
228 rm -f multi-include.h multi-run.c
229 sim_multi_flags=
230 sim_multi_src=
231 sim_multi_obj=multi-run.o
232 sim_multi_igen_configs=
233 sim_seen_default=no
234
235 cat << __EOF__ > multi-run.c
236/* Main entry point for MULTI simulators.
dc3cf14f 237 Copyright (C) 2003, 2007, 2010 Free Software Foundation, Inc.
4c54fc26
CD
238
239 This program is free software; you can redistribute it and/or modify
240 it under the terms of the GNU General Public License as published by
35ee6e1e 241 the Free Software Foundation; either version 3 of the License, or
4c54fc26
CD
242 (at your option) any later version.
243
244 This program is distributed in the hope that it will be useful,
245 but WITHOUT ANY WARRANTY; without even the implied warranty of
246 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
247 GNU General Public License for more details.
248
249 You should have received a copy of the GNU General Public License
35ee6e1e 250 along with this program. If not, see <http://www.gnu.org/licenses/>.
4c54fc26
CD
251
252 --
253
254 This file was generated by sim/mips/configure. */
255
256#include "sim-main.h"
257#include "multi-include.h"
258
259#define SD sd
260#define CPU cpu
261
262void
263sim_engine_run (SIM_DESC sd,
264 int next_cpu_nr,
265 int nr_cpus,
266 int signal) /* ignore */
267{
268 int mach;
269
270 if (STATE_ARCHITECTURE (sd) == NULL)
271 mach = bfd_mach_${sim_multi_default};
272 else
273 mach = STATE_ARCHITECTURE (SD)->mach;
274
275 switch (mach)
276 {
277__EOF__
278
279 for fc in ${sim_multi_configs}; do
280
281 # Split up the entry. ${c} contains the first three elements.
282 # Note: outer sqaure brackets are m4 quotes.
283 c=`echo ${fc} | sed ['s/:[^:]*$//']`
284 bfdmachs=`echo ${fc} | sed 's/.*://'`
285 name=`echo ${c} | sed 's/:.*//'`
286 machine=`echo ${c} | sed 's/.*:\(.*\):.*/\1/'`
287 filter=`echo ${c} | sed 's/.*://'`
288
289 # Build the following lists:
290 #
291 # sim_multi_flags: all -M and -F flags used by the simulator
292 # sim_multi_src: all makefile-generated source files
293 # sim_multi_obj: the objects for ${sim_multi_src}
294 # sim_multi_igen_configs: igen configuration strings.
295 #
296 # Each entry in ${sim_multi_igen_configs} is a prefix (m32
297 # or m16) followed by the NAME, MACHINE and FILTER part of
298 # the ${sim_multi_configs} entry.
299 sim_multi_flags="${sim_multi_flags} -F ${filter} -M ${machine}"
300
301 # Check whether mips16 handling is needed.
302 case ${c} in
303 *:*mips16*:*)
304 # Run igen twice, once for normal mode and once for mips16.
305 ws="m32 m16"
306
307 # The top-level function for the mips16 simulator is
308 # in a file m16${name}_run.c, generated by the
309 # tmp-run-multi Makefile rule.
310 sim_multi_src="${sim_multi_src} m16${name}_run.c"
311 sim_multi_obj="${sim_multi_obj} m16${name}_run.o"
312 sim_multi_flags="${sim_multi_flags} -F 16"
313 ;;
314 *)
315 ws=m32
316 ;;
317 esac
318
319 # Now add the list of igen-generated files to ${sim_multi_src}
320 # and ${sim_multi_obj}.
321 for w in ${ws}; do
322 for base in engine icache idecode model semantics support; do
323 sim_multi_src="${sim_multi_src} ${w}${name}_${base}.c"
324 sim_multi_src="${sim_multi_src} ${w}${name}_${base}.h"
325 sim_multi_obj="${sim_multi_obj} ${w}${name}_${base}.o"
326 done
327 sim_multi_igen_configs="${sim_multi_igen_configs} ${w}${c}"
328 done
329
330 # Add an include for the engine.h file. This file declares the
331 # top-level foo_engine_run() function.
332 echo "#include \"${w}${name}_engine.h\"" >> multi-include.h
333
334 # Add case statements for this engine to sim_engine_run().
335 for mach in `echo ${bfdmachs} | sed 's/,/ /g'`; do
336 echo " case bfd_mach_${mach}:" >> multi-run.c
337 if test ${mach} = ${sim_multi_default}; then
338 echo " default:" >> multi-run.c
339 sim_seen_default=yes
340 fi
341 done
342 echo " ${w}${name}_engine_run (sd, next_cpu_nr, nr_cpus, signal);" \
343 >> multi-run.c
344 echo " break;" >> multi-run.c
345 done
346
347 # Check whether we added a 'default:' label.
348 if test ${sim_seen_default} = no; then
349 AC_MSG_ERROR(Error in configure.in: \${sim_multi_configs} doesn't have an entry for \${sim_multi_default})
350 fi
351
352 cat << __EOF__ >> multi-run.c
353 }
354}
355
356int
357mips_mach_multi (SIM_DESC sd)
358{
359 if (STATE_ARCHITECTURE (sd) == NULL)
360 return bfd_mach_${sim_multi_default};
361
362 switch (STATE_ARCHITECTURE (SD)->mach)
363 {
364__EOF__
365
366 # Add case statements for this engine to mips_mach_multi().
367 for fc in ${sim_multi_configs}; do
368
369 # Split up the entry. ${c} contains the first three elements.
370 # Note: outer sqaure brackets are m4 quotes.
371 c=`echo ${fc} | sed ['s/:[^:]*$//']`
372 bfdmachs=`echo ${fc} | sed 's/.*://'`
373
374 for mach in `echo ${bfdmachs} | sed 's/,/ /g'`; do
375 echo " case bfd_mach_${mach}:" >> multi-run.c
376 done
377 done
378
379 cat << __EOF__ >> multi-run.c
380 return (STATE_ARCHITECTURE (SD)->mach);
381 default:
382 return bfd_mach_${sim_multi_default};
383 }
384}
385__EOF__
386
387 SIM_SUBTARGET="$SIM_SUBTARGET -DMIPS_MACH_MULTI"
388else
389 # For clean-extra
390 sim_multi_src=doesnt-exist.c
391
392 if test x"${sim_mach_default}" = x""; then
393 AC_MSG_ERROR(Error in configure.in: \${sim_mach_default} not defined)
394 fi
395 SIM_SUBTARGET="$SIM_SUBTARGET -DMIPS_MACH_DEFAULT=bfd_mach_${sim_mach_default}"
396fi
c906108c
SS
397sim_igen_flags="-F ${sim_igen_filter} ${sim_igen_machine} ${sim_igen_smp}"
398sim_m16_flags=" -F ${sim_m16_filter} ${sim_m16_machine} ${sim_igen_smp}"
399AC_SUBST(sim_igen_flags)
400AC_SUBST(sim_m16_flags)
401AC_SUBST(sim_gen)
4c54fc26
CD
402AC_SUBST(sim_multi_flags)
403AC_SUBST(sim_multi_igen_configs)
404AC_SUBST(sim_multi_src)
405AC_SUBST(sim_multi_obj)
c906108c
SS
406
407
408#
409# Add simulated hardware devices
410#
411hw_enabled=no
412case "${target}" in
413 mips*tx39*)
414 hw_enabled=yes
415 hw_extra_devices="tx3904cpu tx3904irc tx3904tmr tx3904sio"
416 mips_extra_objs="dv-sockser.o"
417 SIM_SUBTARGET="$SIM_SUBTARGET -DTARGET_TX3904=1"
418 ;;
419 *)
420 mips_extra_objs=""
421 ;;
422esac
423SIM_AC_OPTION_HARDWARE($hw_enabled,$hw_devices,$hw_extra_devices)
424AC_SUBST(mips_extra_objs)
425
426
427# Choose simulator engine
428case "${target}" in
429 *) mips_igen_engine="engine.o"
430 ;;
431esac
432AC_SUBST(mips_igen_engine)
433
434
435AC_PATH_X
436mips_extra_libs=""
437AC_SUBST(mips_extra_libs)
438
439AC_CHECK_HEADERS(string.h strings.h stdlib.h stdlib.h)
440AC_CHECK_LIB(m, fabs)
441AC_CHECK_FUNCS(aint anint sqrt)
442
443SIM_AC_OUTPUT
This page took 0.504197 seconds and 4 git commands to generate.