]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - sim/common/acinclude.m4
sim: drop host endian configure option
[thirdparty/binutils-gdb.git] / sim / common / acinclude.m4
1 # This file contains common code used by all simulators.
2 #
3 # SIM_AC_COMMON invokes AC macros used by all simulators and by the common
4 # directory. It is intended to be invoked before any target specific stuff.
5 # SIM_AC_OUTPUT is a cover function to AC_OUTPUT to generate the Makefile.
6 # It is intended to be invoked last.
7 #
8 # The simulator's configure.ac should look like:
9 #
10 # dnl Process this file with autoconf to produce a configure script.
11 # AC_PREREQ(2.64)dnl
12 # AC_INIT(Makefile.in)
13 # sinclude(../common/aclocal.m4)
14 #
15 # SIM_AC_COMMON
16 #
17 # ... target specific stuff ...
18 #
19 # SIM_AC_OUTPUT
20
21 # Include global overrides and fixes for Autoconf.
22 m4_include(../../config/override.m4)
23 sinclude([../../config/zlib.m4])
24 m4_include([../../config/plugins.m4])
25 m4_include([../../libtool.m4])
26 m4_include([../../ltoptions.m4])
27 m4_include([../../ltsugar.m4])
28 m4_include([../../ltversion.m4])
29 m4_include([../../lt~obsolete.m4])
30 sinclude([../../config/depstand.m4])
31
32 AC_DEFUN([SIM_AC_COMMON],
33 [
34 AC_REQUIRE([AC_PROG_CC])
35 # autoconf.info says this should be called right after AC_INIT.
36 AC_CONFIG_HEADER(ifelse([$1],,config.h,[$1]):config.in)
37 AC_CANONICAL_SYSTEM
38 AC_USE_SYSTEM_EXTENSIONS
39 AC_C_BIGENDIAN
40 AC_ARG_PROGRAM
41 AC_PROG_INSTALL
42
43 # Put a plausible default for CC_FOR_BUILD in Makefile.
44 if test "x$cross_compiling" = "xno"; then
45 CC_FOR_BUILD='$(CC)'
46 else
47 CC_FOR_BUILD=gcc
48 fi
49 AC_SUBST(CC_FOR_BUILD)
50
51 AC_SUBST(CFLAGS)
52 AC_SUBST(HDEFINES)
53 AR=${AR-ar}
54 AC_SUBST(AR)
55 AC_PROG_RANLIB
56
57 # Some of the common include files depend on bfd.h, and bfd.h checks
58 # that config.h is included first by testing that the PACKAGE macro
59 # is defined.
60 PACKAGE=sim
61 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package. ])
62 AC_SUBST(PACKAGE)
63
64 # Dependency checking.
65 ZW_CREATE_DEPDIR
66 ZW_PROG_COMPILER_DEPENDENCIES([CC])
67
68 # Check for the 'make' the user wants to use.
69 AC_CHECK_PROGS(MAKE, make)
70 MAKE_IS_GNU=
71 case "`$MAKE --version 2>&1 | sed 1q`" in
72 *GNU*)
73 MAKE_IS_GNU=yes
74 ;;
75 esac
76 AM_CONDITIONAL(GMAKE, test "$MAKE_IS_GNU" = yes)
77
78 dnl We don't use gettext, but bfd does. So we do the appropriate checks
79 dnl to see if there are intl libraries we should link against.
80 ALL_LINGUAS=
81 ZW_GNU_GETTEXT_SISTER_DIR(../../intl)
82
83 # Check for common headers.
84 # FIXME: Seems to me this can cause problems for i386-windows hosts.
85 # At one point there were hardcoded AC_DEFINE's if ${host} = i386-*-windows*.
86 AC_CHECK_HEADERS(stdlib.h string.h strings.h unistd.h time.h)
87 AC_CHECK_HEADERS(sys/time.h sys/resource.h)
88 AC_CHECK_HEADERS(fcntl.h fpu_control.h)
89 AC_CHECK_HEADERS(dlfcn.h errno.h sys/stat.h)
90 AC_CHECK_FUNCS(getrusage time sigaction __setfpucw)
91
92 # Check for socket libraries
93 AC_CHECK_LIB(socket, bind)
94 AC_CHECK_LIB(nsl, gethostbyname)
95
96 # BFD conditionally uses zlib, so we must link it in if libbfd does, by
97 # using the same condition.
98 AM_ZLIB
99
100 # BFD uses libdl when when plugins enabled.
101 AC_PLUGINS
102 AM_CONDITIONAL(PLUGINS, test "$plugins" = yes)
103 LT_INIT([dlopen])
104 AC_SUBST(lt_cv_dlopen_libs)
105
106 . ${srcdir}/../../bfd/configure.host
107
108 dnl Standard (and optional) simulator options.
109 dnl Eventually all simulators will support these.
110 dnl Do not add any here that cannot be supported by all simulators.
111 dnl Do not add similar but different options to a particular simulator,
112 dnl all shall eventually behave the same way.
113
114
115 dnl We don't use automake, but we still want to support
116 dnl --enable-maintainer-mode.
117 AM_MAINTAINER_MODE
118
119
120 dnl This is a generic option to enable special byte swapping
121 dnl insns on *any* cpu.
122 AC_ARG_ENABLE(sim-bswap,
123 [AS_HELP_STRING([--enable-sim-bswap], [Use Host specific BSWAP instruction])],
124 [case "${enableval}" in
125 yes) sim_bswap="-DWITH_BSWAP=1 -DUSE_BSWAP=1";;
126 no) sim_bswap="-DWITH_BSWAP=0";;
127 *) AC_MSG_ERROR("--enable-sim-bswap does not take a value"); sim_bswap="";;
128 esac
129 if test x"$silent" != x"yes" && test x"$sim_bswap" != x""; then
130 echo "Setting bswap flags = $sim_bswap" 6>&1
131 fi],[sim_bswap=""])dnl
132 AC_SUBST(sim_bswap)
133
134
135 AC_ARG_ENABLE(sim-cflags,
136 [AS_HELP_STRING([--enable-sim-cflags=opts],
137 [Extra CFLAGS for use in building simulator])],
138 [case "${enableval}" in
139 yes) sim_cflags="-O2 -fomit-frame-pointer";;
140 trace) AC_MSG_ERROR("Please use --enable-sim-debug instead."); sim_cflags="";;
141 no) sim_cflags="";;
142 *) sim_cflags=`echo "${enableval}" | sed -e "s/,/ /g"`;;
143 esac
144 if test x"$silent" != x"yes" && test x"$sim_cflags" != x""; then
145 echo "Setting sim cflags = $sim_cflags" 6>&1
146 fi],[sim_cflags=""])dnl
147 AC_SUBST(sim_cflags)
148
149
150 dnl --enable-sim-debug is for developers of the simulator
151 dnl the allowable values are work-in-progress
152 AC_ARG_ENABLE(sim-debug,
153 [AS_HELP_STRING([--enable-sim-debug=opts],
154 [Enable debugging flags (for developers of the sim itself)])],
155 [case "${enableval}" in
156 yes) sim_debug="-DDEBUG=7 -DWITH_DEBUG=7";;
157 no) sim_debug="-DDEBUG=0 -DWITH_DEBUG=0";;
158 *) sim_debug="-DDEBUG='(${enableval})' -DWITH_DEBUG='(${enableval})'";;
159 esac
160 if test x"$silent" != x"yes" && test x"$sim_debug" != x""; then
161 echo "Setting sim debug = $sim_debug" 6>&1
162 fi],[sim_debug=""])dnl
163 AC_SUBST(sim_debug)
164
165
166 dnl --enable-sim-stdio is for users of the simulator
167 dnl It determines if IO from the program is routed through STDIO (buffered)
168 AC_ARG_ENABLE(sim-stdio,
169 [AS_HELP_STRING([--enable-sim-stdio],
170 [Specify whether to use stdio for console input/output])],
171 [case "${enableval}" in
172 yes) sim_stdio="-DWITH_STDIO=DO_USE_STDIO";;
173 no) sim_stdio="-DWITH_STDIO=DONT_USE_STDIO";;
174 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-stdio"); sim_stdio="";;
175 esac
176 if test x"$silent" != x"yes" && test x"$sim_stdio" != x""; then
177 echo "Setting stdio flags = $sim_stdio" 6>&1
178 fi],[sim_stdio=""])dnl
179 AC_SUBST(sim_stdio)
180
181
182 dnl --enable-sim-trace is for users of the simulator
183 dnl The argument is either a bitmask of things to enable [exactly what is
184 dnl up to the simulator], or is a comma separated list of names of tracing
185 dnl elements to enable. The latter is only supported on simulators that
186 dnl use WITH_TRACE.
187 AC_ARG_ENABLE(sim-trace,
188 [AS_HELP_STRING([--enable-sim-trace=opts],
189 [Enable tracing of simulated programs])],
190 [case "${enableval}" in
191 yes) sim_trace="-DWITH_TRACE=-1";;
192 no) sim_trace="-DWITH_TRACE=0";;
193 [[-0-9]]*)
194 sim_trace="-DWITH_TRACE='(${enableval})'";;
195 [[[:lower:]]]*)
196 sim_trace=""
197 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
198 if test x"$sim_trace" = x; then
199 sim_trace="-DWITH_TRACE='(TRACE_$x"
200 else
201 sim_trace="${sim_trace}|TRACE_$x"
202 fi
203 done
204 sim_trace="$sim_trace)'" ;;
205 esac
206 if test x"$silent" != x"yes" && test x"$sim_trace" != x""; then
207 echo "Setting sim trace = $sim_trace" 6>&1
208 fi],[sim_trace=""])dnl
209 AC_SUBST(sim_trace)
210
211
212 dnl --enable-sim-profile
213 dnl The argument is either a bitmask of things to enable [exactly what is
214 dnl up to the simulator], or is a comma separated list of names of profiling
215 dnl elements to enable. The latter is only supported on simulators that
216 dnl use WITH_PROFILE.
217 AC_ARG_ENABLE(sim-profile,
218 [AS_HELP_STRING([--enable-sim-profile=opts], [Enable profiling flags])],
219 [case "${enableval}" in
220 yes) sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1";;
221 no) sim_profile="-DPROFILE=0 -DWITH_PROFILE=0";;
222 [[-0-9]]*)
223 sim_profile="-DPROFILE='(${enableval})' -DWITH_PROFILE='(${enableval})'";;
224 [[a-z]]*)
225 sim_profile=""
226 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
227 if test x"$sim_profile" = x; then
228 sim_profile="-DWITH_PROFILE='(PROFILE_$x"
229 else
230 sim_profile="${sim_profile}|PROFILE_$x"
231 fi
232 done
233 sim_profile="$sim_profile)'" ;;
234 esac
235 if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
236 echo "Setting sim profile = $sim_profile" 6>&1
237 fi],[sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"])dnl
238 AC_SUBST(sim_profile)
239
240 ACX_PKGVERSION([SIM])
241 ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
242 AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
243 AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
244
245 dnl Types used by common code
246 AC_TYPE_SIGNAL
247
248 dnl Detect exe extension
249 AC_EXEEXT
250
251 dnl These are available to append to as desired.
252 sim_link_files=
253 sim_link_links=
254
255 # targ-vals.def points to the libc macro description file.
256 case "${target}" in
257 *-*-*) TARG_VALS_DEF=../common/nltvals.def ;;
258 esac
259 sim_link_files="${sim_link_files} ${TARG_VALS_DEF}"
260 sim_link_links="${sim_link_links} targ-vals.def"
261
262 ]) dnl End of SIM_AC_COMMON
263
264
265 dnl Additional SIM options that can (optionally) be configured
266 dnl For optional simulator options, a macro SIM_AC_OPTION_* is defined.
267 dnl Simulators that wish to use the relevant option specify the macro
268 dnl in the simulator specific configure.ac file between the SIM_AC_COMMON
269 dnl and SIM_AC_OUTPUT lines.
270
271
272 dnl Specify the running environment.
273 dnl If the simulator invokes this in its configure.ac then without this option
274 dnl the default is the user environment and all are runtime selectable.
275 dnl If the simulator doesn't invoke this, only the user environment is
276 dnl supported.
277 dnl ??? Until there is demonstrable value in doing something more complicated,
278 dnl let's not.
279 AC_DEFUN([SIM_AC_OPTION_ENVIRONMENT],
280 [
281 AC_ARG_ENABLE(sim-environment,
282 [AS_HELP_STRING([--enable-sim-environment=environment],
283 [Specify mixed, user, virtual or operating environment])],
284 [case "${enableval}" in
285 all | ALL) sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT";;
286 user | USER) sim_environment="-DWITH_ENVIRONMENT=USER_ENVIRONMENT";;
287 virtual | VIRTUAL) sim_environment="-DWITH_ENVIRONMENT=VIRTUAL_ENVIRONMENT";;
288 operating | OPERATING) sim_environment="-DWITH_ENVIRONMENT=OPERATING_ENVIRONMENT";;
289 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-environment");
290 sim_environment="";;
291 esac
292 if test x"$silent" != x"yes" && test x"$sim_environment" != x""; then
293 echo "Setting sim environment = $sim_environment" 6>&1
294 fi],
295 [sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT"])dnl
296 ])
297 AC_SUBST(sim_environment)
298
299
300 dnl Specify the alignment restrictions of the target architecture.
301 dnl Without this option all possible alignment restrictions are accommodated.
302 dnl arg[1] is hardwired target alignment
303 dnl arg[2] is default target alignment
304 AC_DEFUN([SIM_AC_OPTION_ALIGNMENT],
305 wire_alignment="[$1]"
306 default_alignment="[$2]"
307 [
308 AC_ARG_ENABLE(sim-alignment,
309 [AS_HELP_STRING([--enable-sim-alignment=align],
310 [Specify strict, nonstrict or forced alignment of memory accesses])],
311 [case "${enableval}" in
312 strict | STRICT) sim_alignment="-DWITH_ALIGNMENT=STRICT_ALIGNMENT";;
313 nonstrict | NONSTRICT) sim_alignment="-DWITH_ALIGNMENT=NONSTRICT_ALIGNMENT";;
314 forced | FORCED) sim_alignment="-DWITH_ALIGNMENT=FORCED_ALIGNMENT";;
315 yes) if test x"$wire_alignment" != x; then
316 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
317 else
318 if test x"$default_alignment" != x; then
319 sim_alignment="-DWITH_ALIGNMENT=${default_alignment}"
320 else
321 echo "No hard-wired alignment for target $target" 1>&6
322 sim_alignment="-DWITH_ALIGNMENT=0"
323 fi
324 fi;;
325 no) if test x"$default_alignment" != x; then
326 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
327 else
328 if test x"$wire_alignment" != x; then
329 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${wire_alignment}"
330 else
331 echo "No default alignment for target $target" 1>&6
332 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=0"
333 fi
334 fi;;
335 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-alignment"); sim_alignment="";;
336 esac
337 if test x"$silent" != x"yes" && test x"$sim_alignment" != x""; then
338 echo "Setting alignment flags = $sim_alignment" 6>&1
339 fi],
340 [if test x"$default_alignment" != x; then
341 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
342 else
343 if test x"$wire_alignment" != x; then
344 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
345 else
346 sim_alignment=
347 fi
348 fi])dnl
349 ])dnl
350 AC_SUBST(sim_alignment)
351
352
353 dnl Conditionally compile in assertion statements.
354 AC_DEFUN([SIM_AC_OPTION_ASSERT],
355 [
356 AC_ARG_ENABLE(sim-assert,
357 [AS_HELP_STRING([--enable-sim-assert],
358 [Specify whether to perform random assertions])],
359 [case "${enableval}" in
360 yes) sim_assert="-DWITH_ASSERT=1";;
361 no) sim_assert="-DWITH_ASSERT=0";;
362 *) AC_MSG_ERROR("--enable-sim-assert does not take a value"); sim_assert="";;
363 esac
364 if test x"$silent" != x"yes" && test x"$sim_assert" != x""; then
365 echo "Setting assert flags = $sim_assert" 6>&1
366 fi],[sim_assert=""])dnl
367 ])
368 AC_SUBST(sim_assert)
369
370
371
372 dnl --enable-sim-bitsize is for developers of the simulator
373 dnl It specifies the number of BITS in the target.
374 dnl arg[1] is the number of bits in a word
375 dnl arg[2] is the number assigned to the most significant bit
376 dnl arg[3] is the number of bits in an address
377 dnl arg[4] is the number of bits in an OpenFirmware cell.
378 dnl FIXME: this information should be obtained from bfd/archure
379 AC_DEFUN([SIM_AC_OPTION_BITSIZE],
380 wire_word_bitsize="[$1]"
381 wire_word_msb="[$2]"
382 wire_address_bitsize="[$3]"
383 wire_cell_bitsize="[$4]"
384 [AC_ARG_ENABLE(sim-bitsize,
385 [AS_HELP_STRING([--enable-sim-bitsize=N], [Specify target bitsize (32 or 64)])],
386 [sim_bitsize=
387 case "${enableval}" in
388 64,63 | 64,63,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63";;
389 32,31 | 32,31,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31";;
390 64,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
391 32,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
392 32) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
393 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31"
394 else
395 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0"
396 fi ;;
397 64) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
398 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63"
399 else
400 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=0"
401 fi ;;
402 *) AC_MSG_ERROR("--enable-sim-bitsize was given $enableval. Expected 32 or 64") ;;
403 esac
404 # address bitsize
405 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9]]*,*//"`
406 case x"${tmp}" in
407 x ) ;;
408 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=32" ;;
409 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=64" ;;
410 * ) AC_MSG_ERROR("--enable-sim-bitsize was given address size $enableval. Expected 32 or 64") ;;
411 esac
412 # cell bitsize
413 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9*]]*,*[[0-9]]*,*//"`
414 case x"${tmp}" in
415 x ) ;;
416 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=32" ;;
417 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=64" ;;
418 * ) AC_MSG_ERROR("--enable-sim-bitsize was given cell size $enableval. Expected 32 or 64") ;;
419 esac
420 if test x"$silent" != x"yes" && test x"$sim_bitsize" != x""; then
421 echo "Setting bitsize flags = $sim_bitsize" 6>&1
422 fi],
423 [sim_bitsize=""
424 if test x"$wire_word_bitsize" != x; then
425 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_BITSIZE=$wire_word_bitsize"
426 fi
427 if test x"$wire_word_msb" != x; then
428 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_MSB=$wire_word_msb"
429 fi
430 if test x"$wire_address_bitsize" != x; then
431 sim_bitsize="$sim_bitsize -DWITH_TARGET_ADDRESS_BITSIZE=$wire_address_bitsize"
432 fi
433 if test x"$wire_cell_bitsize" != x; then
434 sim_bitsize="$sim_bitsize -DWITH_TARGET_CELL_BITSIZE=$wire_cell_bitsize"
435 fi])dnl
436 ])
437 AC_SUBST(sim_bitsize)
438
439
440
441 dnl --enable-sim-endian={yes,no,big,little} is for simulators
442 dnl that support both big and little endian targets.
443 dnl arg[1] is hardwired target endianness.
444 dnl arg[2] is default target endianness.
445 AC_DEFUN([SIM_AC_OPTION_ENDIAN],
446 [
447 wire_endian="[$1]"
448 default_endian="[$2]"
449 AC_ARG_ENABLE(sim-endian,
450 [AS_HELP_STRING([--enable-sim-endian=endian],
451 [Specify target byte endian orientation])],
452 [case "${enableval}" in
453 b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_BIG";;
454 l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_LITTLE";;
455 yes) if test x"$wire_endian" != x; then
456 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
457 else
458 if test x"$default_endian" != x; then
459 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
460 else
461 echo "No hard-wired endian for target $target" 1>&6
462 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_UNKNOWN"
463 fi
464 fi;;
465 no) if test x"$default_endian" != x; then
466 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
467 else
468 if test x"$wire_endian" != x; then
469 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
470 else
471 echo "No default endian for target $target" 1>&6
472 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_UNKNOWN"
473 fi
474 fi;;
475 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-endian"); sim_endian="";;
476 esac
477 if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
478 echo "Setting endian flags = $sim_endian" 6>&1
479 fi],
480 [if test x"$default_endian" != x; then
481 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
482 else
483 if test x"$wire_endian" != x; then
484 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
485 else
486 sim_endian=
487 fi
488 fi])dnl
489 ])
490 AC_SUBST(sim_endian)
491
492
493 dnl --enable-sim-float is for developers of the simulator
494 dnl It specifies the presence of hardware floating point
495 dnl And optionally the bitsize of the floating point register.
496 dnl arg[1] specifies the presence (or absence) of floating point hardware
497 dnl arg[2] specifies the number of bits in a floating point register
498 AC_DEFUN([SIM_AC_OPTION_FLOAT],
499 [
500 default_sim_float="[$1]"
501 default_sim_float_bitsize="[$2]"
502 AC_ARG_ENABLE(sim-float,
503 [AS_HELP_STRING([--enable-sim-float],
504 [Specify that the target processor has floating point hardware])],
505 [case "${enableval}" in
506 yes | hard) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT";;
507 no | soft) sim_float="-DWITH_FLOATING_POINT=SOFT_FLOATING_POINT";;
508 32) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=32";;
509 64) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=64";;
510 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-float"); sim_float="";;
511 esac
512 if test x"$silent" != x"yes" && test x"$sim_float" != x""; then
513 echo "Setting float flags = $sim_float" 6>&1
514 fi],[
515 sim_float=
516 if test x"${default_sim_float}" != x""; then
517 sim_float="-DWITH_FLOATING_POINT=${default_sim_float}"
518 fi
519 if test x"${default_sim_float_bitsize}" != x""; then
520 sim_float="$sim_float -DWITH_TARGET_FLOATING_POINT_BITSIZE=${default_sim_float_bitsize}"
521 fi
522 ])dnl
523 ])
524 AC_SUBST(sim_float)
525
526
527 dnl The argument is the default cache size if none is specified.
528 AC_DEFUN([SIM_AC_OPTION_SCACHE],
529 [
530 default_sim_scache="ifelse([$1],,0,[$1])"
531 AC_ARG_ENABLE(sim-scache,
532 [AS_HELP_STRING([--enable-sim-scache=size],
533 [Specify simulator execution cache size])],
534 [case "${enableval}" in
535 yes) sim_scache="-DWITH_SCACHE=${default_sim_scache}";;
536 no) sim_scache="-DWITH_SCACHE=0" ;;
537 [[0-9]]*) sim_scache="-DWITH_SCACHE=${enableval}";;
538 *) AC_MSG_ERROR("Bad value $enableval passed to --enable-sim-scache");
539 sim_scache="";;
540 esac
541 if test x"$silent" != x"yes" && test x"$sim_scache" != x""; then
542 echo "Setting scache size = $sim_scache" 6>&1
543 fi],[sim_scache="-DWITH_SCACHE=${default_sim_scache}"])
544 ])
545 AC_SUBST(sim_scache)
546
547
548 dnl The argument is the default model if none is specified.
549 AC_DEFUN([SIM_AC_OPTION_DEFAULT_MODEL],
550 [
551 default_sim_default_model="ifelse([$1],,0,[$1])"
552 AC_ARG_ENABLE(sim-default-model,
553 [AS_HELP_STRING([--enable-sim-default-model=model],
554 [Specify default model to simulate])],
555 [case "${enableval}" in
556 yes|no) AC_MSG_ERROR("Missing argument to --enable-sim-default-model");;
557 *) sim_default_model="-DWITH_DEFAULT_MODEL='\"${enableval}\"'";;
558 esac
559 if test x"$silent" != x"yes" && test x"$sim_default_model" != x""; then
560 echo "Setting default model = $sim_default_model" 6>&1
561 fi],[sim_default_model="-DWITH_DEFAULT_MODEL='\"${default_sim_default_model}\"'"])
562 ])
563 AC_SUBST(sim_default_model)
564
565
566 dnl --enable-sim-hardware is for users of the simulator
567 dnl arg[1] Enable sim-hw by default? ("yes" or "no")
568 dnl arg[2] is a space separated list of devices that override the defaults
569 dnl arg[3] is a space separated list of extra target specific devices.
570 AC_DEFUN([SIM_AC_OPTION_HARDWARE],
571 [
572 if test "[$2]"; then
573 hardware="[$2]"
574 else
575 hardware="cfi core pal glue"
576 fi
577 hardware="$hardware [$3]"
578
579 sim_hw_cflags="-DWITH_HW=1"
580 sim_hw="$hardware"
581 sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([[^ ]][[^ ]]*\)/dv-\1.o/g'`"
582
583 AC_ARG_ENABLE(sim-hardware,
584 [AS_HELP_STRING([--enable-sim-hardware=LIST],
585 [Specify the hardware to be included in the build.])],
586 ,[enable_sim_hardware="[$1]"])
587 case ${enable_sim_hardware} in
588 yes|no) ;;
589 ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
590 *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
591 *) hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
592 esac
593
594 if test "$enable_sim_hardware" = no; then
595 sim_hw_objs=
596 sim_hw_cflags="-DWITH_HW=0"
597 sim_hw=
598 else
599 sim_hw_cflags="-DWITH_HW=1"
600 # remove duplicates
601 sim_hw=""
602 sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
603 for i in $hardware ; do
604 case " $sim_hw " in
605 *" $i "*) ;;
606 *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
607 esac
608 done
609 # mingw does not support sockser
610 case ${host} in
611 *mingw*) ;;
612 *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
613 # that you instatiate. Instead, other code will call into it directly.
614 # At some point, we should convert it over.
615 sim_hw_objs="$sim_hw_objs dv-sockser.o"
616 AC_DEFINE_UNQUOTED(
617 [HAVE_DV_SOCKSER], 1, [Define if dv-sockser is usable.])
618 ;;
619 esac
620 if test x"$silent" != x"yes"; then
621 echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
622 fi
623 dnl Some devices require extra libraries.
624 case " $hardware " in
625 *" cfi "*) AC_CHECK_LIB(m, log2);;
626 esac
627 fi
628 ])
629 AC_SUBST(sim_hw_cflags)
630 AC_SUBST(sim_hw_objs)
631 AC_SUBST(sim_hw)
632
633
634 dnl --enable-sim-inline is for users that wish to ramp up the simulator's
635 dnl performance by inlining functions.
636 dnl Guarantee that unconfigured simulators do not do any inlining
637 sim_inline="-DDEFAULT_INLINE=0"
638 AC_DEFUN([SIM_AC_OPTION_INLINE],
639 [
640 default_sim_inline="ifelse([$1],,,-DDEFAULT_INLINE=[$1])"
641 AC_ARG_ENABLE(sim-inline,
642 [AS_HELP_STRING([--enable-sim-inline=inlines],
643 [Specify which functions should be inlined])],
644 [sim_inline=""
645 case "$enableval" in
646 no) sim_inline="-DDEFAULT_INLINE=0";;
647 0) sim_inline="-DDEFAULT_INLINE=0";;
648 yes | 2) sim_inline="-DDEFAULT_INLINE=ALL_C_INLINE";;
649 1) sim_inline="-DDEFAULT_INLINE=INLINE_LOCALS";;
650 *) for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
651 new_flag=""
652 case "$x" in
653 *_INLINE=*) new_flag="-D$x";;
654 *=*) new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
655 *_INLINE) new_flag="-D$x=ALL_C_INLINE";;
656 *) new_flag="-D$x""_INLINE=ALL_C_INLINE";;
657 esac
658 if test x"$sim_inline" = x""; then
659 sim_inline="$new_flag"
660 else
661 sim_inline="$sim_inline $new_flag"
662 fi
663 done;;
664 esac
665 if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
666 echo "Setting inline flags = $sim_inline" 6>&1
667 fi],[
668 if test "x$cross_compiling" = "xno"; then
669 if test x"$GCC" != "x" -a x"${default_sim_inline}" != "x" ; then
670 sim_inline="${default_sim_inline}"
671 if test x"$silent" != x"yes"; then
672 echo "Setting inline flags = $sim_inline" 6>&1
673 fi
674 else
675 sim_inline=""
676 fi
677 else
678 sim_inline="-DDEFAULT_INLINE=0"
679 fi])dnl
680 ])
681 AC_SUBST(sim_inline)
682
683
684 AC_DEFUN([SIM_AC_OPTION_PACKAGES],
685 [
686 AC_ARG_ENABLE(sim-packages,
687 [AS_HELP_STRING([--enable-sim-packages=list],
688 [Specify the packages to be included in the build])],
689 [packages=disklabel
690 case "${enableval}" in
691 yes) ;;
692 no) AC_MSG_ERROR("List of packages must be specified for --enable-sim-packages"); packages="";;
693 ,*) packages="${packages}${enableval}";;
694 *,) packages="${enableval}${packages}";;
695 *) packages="${enableval}"'';;
696 esac
697 sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
698 sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
699 if test x"$silent" != x"yes" && test x"$packages" != x""; then
700 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
701 fi],[packages=disklabel
702 sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
703 sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
704 if test x"$silent" != x"yes"; then
705 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
706 fi])dnl
707 ])
708 AC_SUBST(sim_packages)
709
710
711 AC_DEFUN([SIM_AC_OPTION_REGPARM],
712 [
713 AC_ARG_ENABLE(sim-regparm,
714 [AS_HELP_STRING([--enable-sim-regparm=nr-parm],
715 [Pass parameters in registers instead of on the stack - x86/GCC specific])],
716 [case "${enableval}" in
717 0*|1*|2*|3*|4*|5*|6*|7*|8*|9*) sim_regparm="-DWITH_REGPARM=${enableval}";;
718 no) sim_regparm="" ;;
719 yes) sim_regparm="-DWITH_REGPARM=3";;
720 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-regparm"); sim_regparm="";;
721 esac
722 if test x"$silent" != x"yes" && test x"$sim_regparm" != x""; then
723 echo "Setting regparm flags = $sim_regparm" 6>&1
724 fi],[sim_regparm=""])dnl
725 ])
726 AC_SUBST(sim_regparm)
727
728
729 AC_DEFUN([SIM_AC_OPTION_RESERVED_BITS],
730 [
731 default_sim_reserved_bits="ifelse([$1],,1,[$1])"
732 AC_ARG_ENABLE(sim-reserved-bits,
733 [AS_HELP_STRING([--enable-sim-reserved-bits],
734 [Specify whether to check reserved bits in instruction])],
735 [case "${enableval}" in
736 yes) sim_reserved_bits="-DWITH_RESERVED_BITS=1";;
737 no) sim_reserved_bits="-DWITH_RESERVED_BITS=0";;
738 *) AC_MSG_ERROR("--enable-sim-reserved-bits does not take a value"); sim_reserved_bits="";;
739 esac
740 if test x"$silent" != x"yes" && test x"$sim_reserved_bits" != x""; then
741 echo "Setting reserved flags = $sim_reserved_bits" 6>&1
742 fi],[sim_reserved_bits="-DWITH_RESERVED_BITS=${default_sim_reserved_bits}"])dnl
743 ])
744 AC_SUBST(sim_reserved_bits)
745
746
747 AC_DEFUN([SIM_AC_OPTION_SMP],
748 [
749 default_sim_smp="ifelse([$1],,5,[$1])"
750 AC_ARG_ENABLE(sim-smp,
751 [AS_HELP_STRING([--enable-sim-smp=n],
752 [Specify number of processors to configure for (default ${default_sim_smp})])],
753 [case "${enableval}" in
754 yes) sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5";;
755 no) sim_smp="-DWITH_SMP=0" ; sim_igen_smp="-N 0";;
756 *) sim_smp="-DWITH_SMP=$enableval" ; sim_igen_smp="-N $enableval";;
757 esac
758 if test x"$silent" != x"yes" && test x"$sim_smp" != x""; then
759 echo "Setting smp flags = $sim_smp" 6>&1
760 fi],[sim_smp="-DWITH_SMP=${default_sim_smp}" ; sim_igen_smp="-N ${default_sim_smp}"
761 if test x"$silent" != x"yes"; then
762 echo "Setting smp flags = $sim_smp" 6>&1
763 fi])dnl
764 ])
765 AC_SUBST(sim_smp)
766
767
768 AC_DEFUN([SIM_AC_OPTION_STDCALL],
769 [
770 AC_ARG_ENABLE(sim-stdcall,
771 [AS_HELP_STRING([--enable-sim-stdcall=type],
772 [Use an alternative function call/return mechanism - x86/GCC specific])],
773 [case "${enableval}" in
774 no) sim_stdcall="" ;;
775 std*) sim_stdcall="-DWITH_STDCALL=1";;
776 yes) sim_stdcall="-DWITH_STDCALL=1";;
777 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-stdcall"); sim_stdcall="";;
778 esac
779 if test x"$silent" != x"yes" && test x"$sim_stdcall" != x""; then
780 echo "Setting function call flags = $sim_stdcall" 6>&1
781 fi],[sim_stdcall=""])dnl
782 ])
783 AC_SUBST(sim_stdcall)
784
785
786 AC_DEFUN([SIM_AC_OPTION_XOR_ENDIAN],
787 [
788 default_sim_xor_endian="ifelse([$1],,8,[$1])"
789 AC_ARG_ENABLE(sim-xor-endian,
790 [AS_HELP_STRING([--enable-sim-xor-endian=n],
791 [Specify number bytes involved in XOR bi-endian mode (default ${default_sim_xor_endian})])],
792 [case "${enableval}" in
793 yes) sim_xor_endian="-DWITH_XOR_ENDIAN=8";;
794 no) sim_xor_endian="-DWITH_XOR_ENDIAN=0";;
795 *) sim_xor_endian="-DWITH_XOR_ENDIAN=$enableval";;
796 esac
797 if test x"$silent" != x"yes" && test x"$sim_xor_endian" != x""; then
798 echo "Setting xor-endian flag = $sim_xor_endian" 6>&1
799 fi],[sim_xor_endian="-DWITH_XOR_ENDIAN=${default_sim_xor_endian}"])dnl
800 ])
801 AC_SUBST(sim_xor_endian)
802
803
804 dnl --enable-build-warnings is for developers of the simulator.
805 dnl it enables extra GCC specific warnings.
806 AC_DEFUN([SIM_AC_OPTION_WARNINGS],
807 [
808 AC_ARG_ENABLE(werror,
809 AS_HELP_STRING([--enable-werror], [treat compile warnings as errors]),
810 [case "${enableval}" in
811 yes | y) ERROR_ON_WARNING="yes" ;;
812 no | n) ERROR_ON_WARNING="no" ;;
813 *) AC_MSG_ERROR(bad value ${enableval} for --enable-werror) ;;
814 esac])
815
816 # Enable -Werror by default when using gcc
817 if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
818 ERROR_ON_WARNING=yes
819 fi
820
821 WERROR_CFLAGS=""
822 if test "${ERROR_ON_WARNING}" = yes ; then
823 # NOTE: Disabled in the sim dir due to most sims generating warnings.
824 # WERROR_CFLAGS="-Werror"
825 true
826 fi
827
828 build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \
829 -Wpointer-sign \
830 -Wno-unused -Wunused-value -Wunused-function \
831 -Wno-switch -Wno-char-subscripts -Wmissing-prototypes
832 -Wdeclaration-after-statement -Wempty-body -Wmissing-parameter-type \
833 -Wold-style-declaration -Wold-style-definition"
834
835 # Enable -Wno-format by default when using gcc on mingw since many
836 # GCC versions complain about %I64.
837 case "${host}" in
838 *-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;;
839 *) build_warnings="$build_warnings -Wformat-nonliteral" ;;
840 esac
841
842 AC_ARG_ENABLE(build-warnings,
843 AS_HELP_STRING([--enable-build-warnings], [enable build-time compiler warnings if gcc is used]),
844 [case "${enableval}" in
845 yes) ;;
846 no) build_warnings="-w";;
847 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
848 build_warnings="${build_warnings} ${t}";;
849 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
850 build_warnings="${t} ${build_warnings}";;
851 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
852 esac
853 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
854 echo "Setting compiler warning flags = $build_warnings" 6>&1
855 fi])dnl
856 AC_ARG_ENABLE(sim-build-warnings,
857 AS_HELP_STRING([--enable-sim-build-warnings], [enable SIM specific build-time compiler warnings if gcc is used]),
858 [case "${enableval}" in
859 yes) ;;
860 no) build_warnings="-w";;
861 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
862 build_warnings="${build_warnings} ${t}";;
863 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
864 build_warnings="${t} ${build_warnings}";;
865 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
866 esac
867 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
868 echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
869 fi])dnl
870 WARN_CFLAGS=""
871 if test "x${build_warnings}" != x -a "x$GCC" = xyes
872 then
873 AC_MSG_CHECKING(compiler warning flags)
874 # Separate out the -Werror flag as some files just cannot be
875 # compiled with it enabled.
876 for w in ${build_warnings}; do
877 case $w in
878 -Werr*) WERROR_CFLAGS=-Werror ;;
879 *) # Check that GCC accepts it
880 saved_CFLAGS="$CFLAGS"
881 CFLAGS="$CFLAGS $w"
882 AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
883 CFLAGS="$saved_CFLAGS"
884 esac
885 done
886 AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
887 fi
888 ])
889 AC_SUBST(WARN_CFLAGS)
890 AC_SUBST(WERROR_CFLAGS)
891
892
893 dnl Generate the Makefile in a target specific directory.
894 dnl Substitutions aren't performed on the file in AC_SUBST_FILE,
895 dnl so this is a cover macro to tuck the details away of how we cope.
896 dnl We cope by having autoconf generate two files and then merge them into
897 dnl one afterwards. The two pieces of the common fragment are inserted into
898 dnl the target's fragment at the appropriate points.
899
900 AC_DEFUN([SIM_AC_OUTPUT],
901 [
902 AC_LINK_FILES($sim_link_files, $sim_link_links)
903 dnl Make @cgen_breaks@ non-null only if the sim uses CGEN.
904 cgen_breaks=""
905 if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
906 cgen_breaks="break cgen_rtx_error";
907 fi
908 AC_SUBST(cgen_breaks)
909 AC_CONFIG_FILES(Makefile.sim:Makefile.in)
910 AC_CONFIG_FILES(Make-common.sim:../common/Make-common.in)
911 AC_CONFIG_FILES(.gdbinit:../common/gdbinit.in)
912 AC_CONFIG_COMMANDS([Makefile],
913 [echo "Merging Makefile.sim+Make-common.sim into Makefile ..."
914 rm -f Makesim1.tmp Makesim2.tmp Makefile
915 sed -n -e '/^## COMMON_PRE_/,/^## End COMMON_PRE_/ p' <Make-common.sim >Makesim1.tmp
916 sed -n -e '/^## COMMON_POST_/,/^## End COMMON_POST_/ p' <Make-common.sim >Makesim2.tmp
917 sed -e '/^## COMMON_PRE_/ r Makesim1.tmp' \
918 -e '/^## COMMON_POST_/ r Makesim2.tmp' \
919 <Makefile.sim >Makefile
920 rm -f Makefile.sim Make-common.sim Makesim1.tmp Makesim2.tmp
921 ])
922 AC_CONFIG_COMMANDS([stamp-h], [echo > stamp-h])
923 AC_OUTPUT
924 ])
925
926 sinclude(../../config/gettext-sister.m4)
927 sinclude(../../config/acx.m4)
928
929 dnl --enable-cgen-maint support
930 AC_DEFUN([SIM_AC_OPTION_CGEN_MAINT],
931 [
932 cgen_maint=no
933 dnl Default is to use one in build tree.
934 cgen=guile
935 cgendir='$(srcdir)/../../cgen'
936 dnl Having --enable-maintainer-mode take arguments is another way to go.
937 dnl ??? One can argue --with is more appropriate if one wants to specify
938 dnl a directory name, but what we're doing here is an enable/disable kind
939 dnl of thing and specifying both --enable and --with is klunky.
940 dnl If you reeely want this to be --with, go ahead and change it.
941 AC_ARG_ENABLE(cgen-maint,
942 [AS_HELP_STRING([--enable-cgen-maint[=DIR]], [build cgen generated files])],
943 [case "${enableval}" in
944 yes) cgen_maint=yes ;;
945 no) cgen_maint=no ;;
946 *)
947 # argument is cgen install directory (not implemented yet).
948 # Having a `share' directory might be more appropriate for the .scm,
949 # .cpu, etc. files.
950 cgendir=${cgen_maint}/lib/cgen
951 cgen=guile
952 ;;
953 esac])dnl
954 dnl AM_CONDITIONAL(CGEN_MAINT, test x${cgen_maint} != xno)
955 if test x${cgen_maint} != xno ; then
956 CGEN_MAINT=''
957 else
958 CGEN_MAINT='#'
959 fi
960 AC_SUBST(CGEN_MAINT)
961 AC_SUBST(cgendir)
962 AC_SUBST(cgen)
963 ])