1 # This file contains common code used by all simulators.
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.
8 # The simulator's configure.in should look like:
10 # dnl Process this file with autoconf to produce a configure script.
12 # AC_INIT(Makefile.in)
13 # sinclude(../common/aclocal.m4)
17 # ... target specific stuff ...
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])
32 AC_DEFUN([SIM_AC_COMMON],
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)
38 AC_USE_SYSTEM_EXTENSIONS
42 # Put a plausible default for CC_FOR_BUILD in Makefile.
43 if test "x$cross_compiling" = "xno"; then
48 AC_SUBST(CC_FOR_BUILD)
56 # Some of the common include files depend on bfd.h, and bfd.h checks
57 # that config.h is included first by testing that the PACKAGE macro
60 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package. ])
63 # Dependency checking.
65 ZW_PROG_COMPILER_DEPENDENCIES([CC])
67 # Check for the 'make' the user wants to use.
68 AC_CHECK_PROGS(MAKE, make)
70 case "`$MAKE --version 2>&1 | sed 1q`" in
75 AM_CONDITIONAL(GMAKE, test "$MAKE_IS_GNU" = yes)
77 dnl We don't use gettext, but bfd does. So we do the appropriate checks
78 dnl to see if there are intl libraries we should link against.
80 ZW_GNU_GETTEXT_SISTER_DIR(../../intl)
82 # Check for common headers.
83 # FIXME: Seems to me this can cause problems for i386-windows hosts.
84 # At one point there were hardcoded AC_DEFINE's if ${host} = i386-*-windows*.
85 AC_CHECK_HEADERS(stdlib.h string.h strings.h unistd.h time.h)
86 AC_CHECK_HEADERS(sys/time.h sys/resource.h)
87 AC_CHECK_HEADERS(fcntl.h fpu_control.h)
88 AC_CHECK_HEADERS(dlfcn.h errno.h sys/stat.h)
89 AC_CHECK_FUNCS(getrusage time sigaction __setfpucw)
91 # Check for socket libraries
92 AC_CHECK_LIB(socket, bind)
93 AC_CHECK_LIB(nsl, gethostbyname)
95 # BFD conditionally uses zlib, so we must link it in if libbfd does, by
96 # using the same condition.
99 # BFD uses libdl when when plugins enabled.
101 AM_CONDITIONAL(PLUGINS, test "$plugins" = yes)
103 AC_SUBST(lt_cv_dlopen_libs)
105 . ${srcdir}/../../bfd/configure.host
107 dnl Standard (and optional) simulator options.
108 dnl Eventually all simulators will support these.
109 dnl Do not add any here that cannot be supported by all simulators.
110 dnl Do not add similar but different options to a particular simulator,
111 dnl all shall eventually behave the same way.
114 dnl We don't use automake, but we still want to support
115 dnl --enable-maintainer-mode.
119 dnl This is a generic option to enable special byte swapping
120 dnl insns on *any* cpu.
121 AC_ARG_ENABLE(sim-bswap,
122 [ --enable-sim-bswap Use Host specific BSWAP instruction.],
123 [case "${enableval}" in
124 yes) sim_bswap="-DWITH_BSWAP=1 -DUSE_BSWAP=1";;
125 no) sim_bswap="-DWITH_BSWAP=0";;
126 *) AC_MSG_ERROR("--enable-sim-bswap does not take a value"); sim_bswap="";;
128 if test x"$silent" != x"yes" && test x"$sim_bswap" != x""; then
129 echo "Setting bswap flags = $sim_bswap" 6>&1
130 fi],[sim_bswap=""])dnl
134 AC_ARG_ENABLE(sim-cflags,
135 [ --enable-sim-cflags=opts Extra CFLAGS for use in building simulator],
136 [case "${enableval}" in
137 yes) sim_cflags="-O2 -fomit-frame-pointer";;
138 trace) AC_MSG_ERROR("Please use --enable-sim-debug instead."); sim_cflags="";;
140 *) sim_cflags=`echo "${enableval}" | sed -e "s/,/ /g"`;;
142 if test x"$silent" != x"yes" && test x"$sim_cflags" != x""; then
143 echo "Setting sim cflags = $sim_cflags" 6>&1
144 fi],[sim_cflags=""])dnl
148 dnl --enable-sim-debug is for developers of the simulator
149 dnl the allowable values are work-in-progress
150 AC_ARG_ENABLE(sim-debug,
151 [ --enable-sim-debug=opts Enable debugging flags],
152 [case "${enableval}" in
153 yes) sim_debug="-DDEBUG=7 -DWITH_DEBUG=7";;
154 no) sim_debug="-DDEBUG=0 -DWITH_DEBUG=0";;
155 *) sim_debug="-DDEBUG='(${enableval})' -DWITH_DEBUG='(${enableval})'";;
157 if test x"$silent" != x"yes" && test x"$sim_debug" != x""; then
158 echo "Setting sim debug = $sim_debug" 6>&1
159 fi],[sim_debug=""])dnl
163 dnl --enable-sim-stdio is for users of the simulator
164 dnl It determines if IO from the program is routed through STDIO (buffered)
165 AC_ARG_ENABLE(sim-stdio,
166 [ --enable-sim-stdio Specify whether to use stdio for console input/output.],
167 [case "${enableval}" in
168 yes) sim_stdio="-DWITH_STDIO=DO_USE_STDIO";;
169 no) sim_stdio="-DWITH_STDIO=DONT_USE_STDIO";;
170 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-stdio"); sim_stdio="";;
172 if test x"$silent" != x"yes" && test x"$sim_stdio" != x""; then
173 echo "Setting stdio flags = $sim_stdio" 6>&1
174 fi],[sim_stdio=""])dnl
178 dnl --enable-sim-trace is for users of the simulator
179 dnl The argument is either a bitmask of things to enable [exactly what is
180 dnl up to the simulator], or is a comma separated list of names of tracing
181 dnl elements to enable. The latter is only supported on simulators that
183 AC_ARG_ENABLE(sim-trace,
184 [ --enable-sim-trace=opts Enable tracing flags],
185 [case "${enableval}" in
186 yes) sim_trace="-DTRACE=1 -DWITH_TRACE=-1";;
187 no) sim_trace="-DTRACE=0 -DWITH_TRACE=0";;
189 sim_trace="-DTRACE='(${enableval})' -DWITH_TRACE='(${enableval})'";;
192 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
193 if test x"$sim_trace" = x; then
194 sim_trace="-DWITH_TRACE='(TRACE_$x"
196 sim_trace="${sim_trace}|TRACE_$x"
199 sim_trace="$sim_trace)'" ;;
201 if test x"$silent" != x"yes" && test x"$sim_trace" != x""; then
202 echo "Setting sim trace = $sim_trace" 6>&1
203 fi],[sim_trace=""])dnl
207 dnl --enable-sim-profile
208 dnl The argument is either a bitmask of things to enable [exactly what is
209 dnl up to the simulator], or is a comma separated list of names of profiling
210 dnl elements to enable. The latter is only supported on simulators that
211 dnl use WITH_PROFILE.
212 AC_ARG_ENABLE(sim-profile,
213 [ --enable-sim-profile=opts Enable profiling flags],
214 [case "${enableval}" in
215 yes) sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1";;
216 no) sim_profile="-DPROFILE=0 -DWITH_PROFILE=0";;
218 sim_profile="-DPROFILE='(${enableval})' -DWITH_PROFILE='(${enableval})'";;
221 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
222 if test x"$sim_profile" = x; then
223 sim_profile="-DWITH_PROFILE='(PROFILE_$x"
225 sim_profile="${sim_profile}|PROFILE_$x"
228 sim_profile="$sim_profile)'" ;;
230 if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
231 echo "Setting sim profile = $sim_profile" 6>&1
232 fi],[sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"])dnl
233 AC_SUBST(sim_profile)
235 ACX_PKGVERSION([GDB])
236 ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
237 AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
238 AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
240 dnl Types used by common code
243 dnl Detect exe extension
246 dnl These are available to append to as desired.
250 dnl Create tconfig.h either from simulator's tconfig.in or default one
252 sim_link_links=tconfig.h
253 if test -f ${srcdir}/tconfig.in
255 sim_link_files=tconfig.in
257 sim_link_files=../common/tconfig.in
260 # targ-vals.def points to the libc macro description file.
262 *-*-*) TARG_VALS_DEF=../common/nltvals.def ;;
264 sim_link_files="${sim_link_files} ${TARG_VALS_DEF}"
265 sim_link_links="${sim_link_links} targ-vals.def"
267 ]) dnl End of SIM_AC_COMMON
270 dnl Additional SIM options that can (optionally) be configured
271 dnl For optional simulator options, a macro SIM_AC_OPTION_* is defined.
272 dnl Simulators that wish to use the relevant option specify the macro
273 dnl in the simulator specific configure.in file between the SIM_AC_COMMON
274 dnl and SIM_AC_OUTPUT lines.
277 dnl Specify the running environment.
278 dnl If the simulator invokes this in its configure.in then without this option
279 dnl the default is the user environment and all are runtime selectable.
280 dnl If the simulator doesn't invoke this, only the user environment is
282 dnl ??? Until there is demonstrable value in doing something more complicated,
284 AC_DEFUN([SIM_AC_OPTION_ENVIRONMENT],
286 AC_ARG_ENABLE(sim-environment,
287 [ --enable-sim-environment=environment Specify mixed, user, virtual or operating environment.],
288 [case "${enableval}" in
289 all | ALL) sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT";;
290 user | USER) sim_environment="-DWITH_ENVIRONMENT=USER_ENVIRONMENT";;
291 virtual | VIRTUAL) sim_environment="-DWITH_ENVIRONMENT=VIRTUAL_ENVIRONMENT";;
292 operating | OPERATING) sim_environment="-DWITH_ENVIRONMENT=OPERATING_ENVIRONMENT";;
293 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-environment");
296 if test x"$silent" != x"yes" && test x"$sim_environment" != x""; then
297 echo "Setting sim environment = $sim_environment" 6>&1
299 [sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT"])dnl
301 AC_SUBST(sim_environment)
304 dnl Specify the alignment restrictions of the target architecture.
305 dnl Without this option all possible alignment restrictions are accommodated.
306 dnl arg[1] is hardwired target alignment
307 dnl arg[2] is default target alignment
308 AC_DEFUN([SIM_AC_OPTION_ALIGNMENT],
309 wire_alignment="[$1]"
310 default_alignment="[$2]"
312 AC_ARG_ENABLE(sim-alignment,
313 [ --enable-sim-alignment=align Specify strict, nonstrict or forced alignment of memory accesses.],
314 [case "${enableval}" in
315 strict | STRICT) sim_alignment="-DWITH_ALIGNMENT=STRICT_ALIGNMENT";;
316 nonstrict | NONSTRICT) sim_alignment="-DWITH_ALIGNMENT=NONSTRICT_ALIGNMENT";;
317 forced | FORCED) sim_alignment="-DWITH_ALIGNMENT=FORCED_ALIGNMENT";;
318 yes) if test x"$wire_alignment" != x; then
319 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
321 if test x"$default_alignment" != x; then
322 sim_alignment="-DWITH_ALIGNMENT=${default_alignment}"
324 echo "No hard-wired alignment for target $target" 1>&6
325 sim_alignment="-DWITH_ALIGNMENT=0"
328 no) if test x"$default_alignment" != x; then
329 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
331 if test x"$wire_alignment" != x; then
332 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${wire_alignment}"
334 echo "No default alignment for target $target" 1>&6
335 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=0"
338 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-alignment"); sim_alignment="";;
340 if test x"$silent" != x"yes" && test x"$sim_alignment" != x""; then
341 echo "Setting alignment flags = $sim_alignment" 6>&1
343 [if test x"$default_alignment" != x; then
344 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
346 if test x"$wire_alignment" != x; then
347 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
353 AC_SUBST(sim_alignment)
356 dnl Conditionally compile in assertion statements.
357 AC_DEFUN([SIM_AC_OPTION_ASSERT],
359 AC_ARG_ENABLE(sim-assert,
360 [ --enable-sim-assert Specify whether to perform random assertions.],
361 [case "${enableval}" in
362 yes) sim_assert="-DWITH_ASSERT=1";;
363 no) sim_assert="-DWITH_ASSERT=0";;
364 *) AC_MSG_ERROR("--enable-sim-assert does not take a value"); sim_assert="";;
366 if test x"$silent" != x"yes" && test x"$sim_assert" != x""; then
367 echo "Setting assert flags = $sim_assert" 6>&1
368 fi],[sim_assert=""])dnl
374 dnl --enable-sim-bitsize is for developers of the simulator
375 dnl It specifies the number of BITS in the target.
376 dnl arg[1] is the number of bits in a word
377 dnl arg[2] is the number assigned to the most significant bit
378 dnl arg[3] is the number of bits in an address
379 dnl arg[4] is the number of bits in an OpenFirmware cell.
380 dnl FIXME: this information should be obtained from bfd/archure
381 AC_DEFUN([SIM_AC_OPTION_BITSIZE],
382 wire_word_bitsize="[$1]"
384 wire_address_bitsize="[$3]"
385 wire_cell_bitsize="[$4]"
386 [AC_ARG_ENABLE(sim-bitsize,
387 [ --enable-sim-bitsize=N Specify target bitsize (32 or 64).],
389 case "${enableval}" in
390 64,63 | 64,63,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63";;
391 32,31 | 32,31,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31";;
392 64,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
393 32,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
394 32) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
395 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31"
397 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0"
399 64) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
400 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63"
402 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=0"
404 *) AC_MSG_ERROR("--enable-sim-bitsize was given $enableval. Expected 32 or 64") ;;
407 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9]]*,*//"`
410 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=32" ;;
411 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=64" ;;
412 * ) AC_MSG_ERROR("--enable-sim-bitsize was given address size $enableval. Expected 32 or 64") ;;
415 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9*]]*,*[[0-9]]*,*//"`
418 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=32" ;;
419 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=64" ;;
420 * ) AC_MSG_ERROR("--enable-sim-bitsize was given cell size $enableval. Expected 32 or 64") ;;
422 if test x"$silent" != x"yes" && test x"$sim_bitsize" != x""; then
423 echo "Setting bitsize flags = $sim_bitsize" 6>&1
426 if test x"$wire_word_bitsize" != x; then
427 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_BITSIZE=$wire_word_bitsize"
429 if test x"$wire_word_msb" != x; then
430 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_MSB=$wire_word_msb"
432 if test x"$wire_address_bitsize" != x; then
433 sim_bitsize="$sim_bitsize -DWITH_TARGET_ADDRESS_BITSIZE=$wire_address_bitsize"
435 if test x"$wire_cell_bitsize" != x; then
436 sim_bitsize="$sim_bitsize -DWITH_TARGET_CELL_BITSIZE=$wire_cell_bitsize"
439 AC_SUBST(sim_bitsize)
443 dnl --enable-sim-endian={yes,no,big,little} is for simulators
444 dnl that support both big and little endian targets.
445 dnl arg[1] is hardwired target endianness.
446 dnl arg[2] is default target endianness.
447 AC_DEFUN([SIM_AC_OPTION_ENDIAN],
450 default_endian="[$2]"
451 AC_ARG_ENABLE(sim-endian,
452 [ --enable-sim-endian=endian Specify target byte endian orientation.],
453 [case "${enableval}" in
454 b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BIG_ENDIAN";;
455 l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=LITTLE_ENDIAN";;
456 yes) if test x"$wire_endian" != x; then
457 sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
459 if test x"$default_endian" != x; then
460 sim_endian="-DWITH_TARGET_BYTE_ORDER=${default_endian}"
462 echo "No hard-wired endian for target $target" 1>&6
463 sim_endian="-DWITH_TARGET_BYTE_ORDER=0"
466 no) if test x"$default_endian" != x; then
467 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
469 if test x"$wire_endian" != x; then
470 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${wire_endian}"
472 echo "No default endian for target $target" 1>&6
473 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=0"
476 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-endian"); sim_endian="";;
478 if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
479 echo "Setting endian flags = $sim_endian" 6>&1
481 [if test x"$default_endian" != x; then
482 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
484 if test x"$wire_endian" != x; then
485 sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
494 dnl --enable-sim-hostendian is for users of the simulator when
495 dnl they find that AC_C_BIGENDIAN does not function correctly
496 dnl (for instance in a canadian cross)
497 AC_DEFUN([SIM_AC_OPTION_HOSTENDIAN],
499 AC_ARG_ENABLE(sim-hostendian,
500 [ --enable-sim-hostendian=end Specify host byte endian orientation.],
501 [case "${enableval}" in
502 no) sim_hostendian="-DWITH_HOST_BYTE_ORDER=0";;
503 b*|B*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN";;
504 l*|L*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN";;
505 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-hostendian"); sim_hostendian="";;
507 if test x"$silent" != x"yes" && test x"$sim_hostendian" != x""; then
508 echo "Setting hostendian flags = $sim_hostendian" 6>&1
510 if test "x$cross_compiling" = "xno"; then
512 if test $ac_cv_c_bigendian = yes; then
513 sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN"
515 sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN"
518 sim_hostendian="-DWITH_HOST_BYTE_ORDER=0"
521 AC_SUBST(sim_hostendian)
524 dnl --enable-sim-float is for developers of the simulator
525 dnl It specifies the presence of hardware floating point
526 dnl And optionally the bitsize of the floating point register.
527 dnl arg[1] specifies the presence (or absence) of floating point hardware
528 dnl arg[2] specifies the number of bits in a floating point register
529 AC_DEFUN([SIM_AC_OPTION_FLOAT],
531 default_sim_float="[$1]"
532 default_sim_float_bitsize="[$2]"
533 AC_ARG_ENABLE(sim-float,
534 [ --enable-sim-float Specify that the target processor has floating point hardware.],
535 [case "${enableval}" in
536 yes | hard) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT";;
537 no | soft) sim_float="-DWITH_FLOATING_POINT=SOFT_FLOATING_POINT";;
538 32) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=32";;
539 64) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=64";;
540 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-float"); sim_float="";;
542 if test x"$silent" != x"yes" && test x"$sim_float" != x""; then
543 echo "Setting float flags = $sim_float" 6>&1
546 if test x"${default_sim_float}" != x""; then
547 sim_float="-DWITH_FLOATING_POINT=${default_sim_float}"
549 if test x"${default_sim_float_bitsize}" != x""; then
550 sim_float="$sim_float -DWITH_TARGET_FLOATING_POINT_BITSIZE=${default_sim_float_bitsize}"
557 dnl The argument is the default cache size if none is specified.
558 AC_DEFUN([SIM_AC_OPTION_SCACHE],
560 default_sim_scache="ifelse([$1],,0,[$1])"
561 AC_ARG_ENABLE(sim-scache,
562 [ --enable-sim-scache=size Specify simulator execution cache size.],
563 [case "${enableval}" in
564 yes) sim_scache="-DWITH_SCACHE=${default_sim_scache}";;
565 no) sim_scache="-DWITH_SCACHE=0" ;;
566 [[0-9]]*) sim_scache="-DWITH_SCACHE=${enableval}";;
567 *) AC_MSG_ERROR("Bad value $enableval passed to --enable-sim-scache");
570 if test x"$silent" != x"yes" && test x"$sim_scache" != x""; then
571 echo "Setting scache size = $sim_scache" 6>&1
572 fi],[sim_scache="-DWITH_SCACHE=${default_sim_scache}"])
577 dnl The argument is the default model if none is specified.
578 AC_DEFUN([SIM_AC_OPTION_DEFAULT_MODEL],
580 default_sim_default_model="ifelse([$1],,0,[$1])"
581 AC_ARG_ENABLE(sim-default-model,
582 [ --enable-sim-default-model=model Specify default model to simulate.],
583 [case "${enableval}" in
584 yes|no) AC_MSG_ERROR("Missing argument to --enable-sim-default-model");;
585 *) sim_default_model="-DWITH_DEFAULT_MODEL='\"${enableval}\"'";;
587 if test x"$silent" != x"yes" && test x"$sim_default_model" != x""; then
588 echo "Setting default model = $sim_default_model" 6>&1
589 fi],[sim_default_model="-DWITH_DEFAULT_MODEL='\"${default_sim_default_model}\"'"])
591 AC_SUBST(sim_default_model)
594 dnl --enable-sim-hardware is for users of the simulator
595 dnl arg[1] Enable sim-hw by default? ("yes", "no", or "always")
596 dnl arg[2] is a space separated list of devices that override the defaults
597 dnl arg[3] is a space separated list of extra target specific devices.
598 AC_DEFUN([SIM_AC_OPTION_HARDWARE],
600 if test x"[$1]" != x"no"; then
601 enable_sim_hardware=yes
603 enable_sim_hardware=no
609 hardware="cfi core pal glue"
611 hardware="$hardware [$3]"
613 sim_hw_cflags="-DWITH_HW=1"
615 sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([[^ ]][[^ ]]*\)/dv-\1.o/g'`"
617 AC_ARG_ENABLE(sim-hardware,
618 [AS_HELP_STRING([--enable-sim-hardware=LIST],
619 [Specify the hardware to be included in the build.])])
620 case ${enable_sim_hardware} in
623 ,*) sim_hw_p=yes; hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
624 *,) sim_hw_p=yes; hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
625 *) sim_hw_p=yes; hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
628 if test "$sim_hw_p" != yes; then
629 if test "[$1]" = "always"; then
630 AC_MSG_ERROR([Sorry, but this simulator requires that hardware support
631 be enabled. Please configure without --disable-hw-support.])
634 sim_hw_cflags="-DWITH_HW=0"
637 sim_hw_cflags="-DWITH_HW=1"
640 sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
641 for i in $hardware ; do
644 *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
647 # mingw does not support sockser
651 *) SIM_DV_SOCKSER_O="dv-sockser.o"
653 [HAVE_DV_SOCKSER], 1, [Define if dv-sockser is usable.])
656 AC_SUBST(SIM_DV_SOCKSER_O)
657 if test x"$silent" != x"yes"; then
658 echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
660 dnl Some devices require extra libraries.
661 case " $hardware " in
662 *" cfi "*) AC_CHECK_LIB(m, log2);;
666 AC_SUBST(sim_hw_cflags)
667 AC_SUBST(sim_hw_objs)
671 dnl --enable-sim-inline is for users that wish to ramp up the simulator's
672 dnl performance by inlining functions.
673 dnl Guarantee that unconfigured simulators do not do any inlining
674 sim_inline="-DDEFAULT_INLINE=0"
675 AC_DEFUN([SIM_AC_OPTION_INLINE],
677 default_sim_inline="ifelse([$1],,,-DDEFAULT_INLINE=[$1])"
678 AC_ARG_ENABLE(sim-inline,
679 [ --enable-sim-inline=inlines Specify which functions should be inlined.],
682 no) sim_inline="-DDEFAULT_INLINE=0";;
683 0) sim_inline="-DDEFAULT_INLINE=0";;
684 yes | 2) sim_inline="-DDEFAULT_INLINE=ALL_C_INLINE";;
685 1) sim_inline="-DDEFAULT_INLINE=INLINE_LOCALS";;
686 *) for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
689 *_INLINE=*) new_flag="-D$x";;
690 *=*) new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
691 *_INLINE) new_flag="-D$x=ALL_C_INLINE";;
692 *) new_flag="-D$x""_INLINE=ALL_C_INLINE";;
694 if test x"$sim_inline" = x""; then
695 sim_inline="$new_flag"
697 sim_inline="$sim_inline $new_flag"
701 if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
702 echo "Setting inline flags = $sim_inline" 6>&1
704 if test "x$cross_compiling" = "xno"; then
705 if test x"$GCC" != "x" -a x"${default_sim_inline}" != "x" ; then
706 sim_inline="${default_sim_inline}"
707 if test x"$silent" != x"yes"; then
708 echo "Setting inline flags = $sim_inline" 6>&1
714 sim_inline="-DDEFAULT_INLINE=0"
720 AC_DEFUN([SIM_AC_OPTION_PACKAGES],
722 AC_ARG_ENABLE(sim-packages,
723 [ --enable-sim-packages=list Specify the packages to be included in the build.],
725 case "${enableval}" in
727 no) AC_MSG_ERROR("List of packages must be specified for --enable-sim-packages"); packages="";;
728 ,*) packages="${packages}${enableval}";;
729 *,) packages="${enableval}${packages}";;
730 *) packages="${enableval}"'';;
732 sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
733 sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
734 if test x"$silent" != x"yes" && test x"$packages" != x""; then
735 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
736 fi],[packages=disklabel
737 sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
738 sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
739 if test x"$silent" != x"yes"; then
740 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
743 AC_SUBST(sim_packages)
746 AC_DEFUN([SIM_AC_OPTION_REGPARM],
748 AC_ARG_ENABLE(sim-regparm,
749 [ --enable-sim-regparm=nr-parm Pass parameters in registers instead of on the stack - x86/GCC specific.],
750 [case "${enableval}" in
751 0*|1*|2*|3*|4*|5*|6*|7*|8*|9*) sim_regparm="-DWITH_REGPARM=${enableval}";;
752 no) sim_regparm="" ;;
753 yes) sim_regparm="-DWITH_REGPARM=3";;
754 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-regparm"); sim_regparm="";;
756 if test x"$silent" != x"yes" && test x"$sim_regparm" != x""; then
757 echo "Setting regparm flags = $sim_regparm" 6>&1
758 fi],[sim_regparm=""])dnl
760 AC_SUBST(sim_regparm)
763 AC_DEFUN([SIM_AC_OPTION_RESERVED_BITS],
765 default_sim_reserved_bits="ifelse([$1],,1,[$1])"
766 AC_ARG_ENABLE(sim-reserved-bits,
767 [ --enable-sim-reserved-bits Specify whether to check reserved bits in instruction.],
768 [case "${enableval}" in
769 yes) sim_reserved_bits="-DWITH_RESERVED_BITS=1";;
770 no) sim_reserved_bits="-DWITH_RESERVED_BITS=0";;
771 *) AC_MSG_ERROR("--enable-sim-reserved-bits does not take a value"); sim_reserved_bits="";;
773 if test x"$silent" != x"yes" && test x"$sim_reserved_bits" != x""; then
774 echo "Setting reserved flags = $sim_reserved_bits" 6>&1
775 fi],[sim_reserved_bits="-DWITH_RESERVED_BITS=${default_sim_reserved_bits}"])dnl
777 AC_SUBST(sim_reserved_bits)
780 AC_DEFUN([SIM_AC_OPTION_SMP],
782 default_sim_smp="ifelse([$1],,5,[$1])"
783 AC_ARG_ENABLE(sim-smp,
784 [ --enable-sim-smp=n Specify number of processors to configure for (default ${default_sim_smp}).],
785 [case "${enableval}" in
786 yes) sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5";;
787 no) sim_smp="-DWITH_SMP=0" ; sim_igen_smp="-N 0";;
788 *) sim_smp="-DWITH_SMP=$enableval" ; sim_igen_smp="-N $enableval";;
790 if test x"$silent" != x"yes" && test x"$sim_smp" != x""; then
791 echo "Setting smp flags = $sim_smp" 6>&1
792 fi],[sim_smp="-DWITH_SMP=${default_sim_smp}" ; sim_igen_smp="-N ${default_sim_smp}"
793 if test x"$silent" != x"yes"; then
794 echo "Setting smp flags = $sim_smp" 6>&1
800 AC_DEFUN([SIM_AC_OPTION_STDCALL],
802 AC_ARG_ENABLE(sim-stdcall,
803 [ --enable-sim-stdcall=type Use an alternative function call/return mechanism - x86/GCC specific.],
804 [case "${enableval}" in
805 no) sim_stdcall="" ;;
806 std*) sim_stdcall="-DWITH_STDCALL=1";;
807 yes) sim_stdcall="-DWITH_STDCALL=1";;
808 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-stdcall"); sim_stdcall="";;
810 if test x"$silent" != x"yes" && test x"$sim_stdcall" != x""; then
811 echo "Setting function call flags = $sim_stdcall" 6>&1
812 fi],[sim_stdcall=""])dnl
814 AC_SUBST(sim_stdcall)
817 AC_DEFUN([SIM_AC_OPTION_XOR_ENDIAN],
819 default_sim_xor_endian="ifelse([$1],,8,[$1])"
820 AC_ARG_ENABLE(sim-xor-endian,
821 [ --enable-sim-xor-endian=n Specify number bytes involved in XOR bi-endian mode (default ${default_sim_xor_endian}).],
822 [case "${enableval}" in
823 yes) sim_xor_endian="-DWITH_XOR_ENDIAN=8";;
824 no) sim_xor_endian="-DWITH_XOR_ENDIAN=0";;
825 *) sim_xor_endian="-DWITH_XOR_ENDIAN=$enableval";;
827 if test x"$silent" != x"yes" && test x"$sim_xor_endian" != x""; then
828 echo "Setting xor-endian flag = $sim_xor_endian" 6>&1
829 fi],[sim_xor_endian="-DWITH_XOR_ENDIAN=${default_sim_xor_endian}"])dnl
831 AC_SUBST(sim_xor_endian)
834 dnl --enable-build-warnings is for developers of the simulator.
835 dnl it enables extra GCC specific warnings.
836 AC_DEFUN([SIM_AC_OPTION_WARNINGS],
838 AC_ARG_ENABLE(werror,
839 AS_HELP_STRING([--enable-werror], [treat compile warnings as errors]),
840 [case "${enableval}" in
841 yes | y) ERROR_ON_WARNING="yes" ;;
842 no | n) ERROR_ON_WARNING="no" ;;
843 *) AC_MSG_ERROR(bad value ${enableval} for --enable-werror) ;;
846 # Enable -Werror by default when using gcc
847 if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
852 if test "${ERROR_ON_WARNING}" = yes ; then
853 # NOTE: Disabled in the sim dir due to most sims generating warnings.
854 # WERROR_CFLAGS="-Werror"
858 # The entries after -Wno-pointer-sign are disabled warnings which may
859 # be enabled in the future, which can not currently be used to build
861 # NOTE: If you change this list, remember to update
862 # gdb/doc/gdbint.texinfo.
863 build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \
865 -Wno-unused -Wunused-value -Wunused-function \
866 -Wno-switch -Wno-char-subscripts -Wmissing-prototypes"
868 # Enable -Wno-format by default when using gcc on mingw since many
869 # GCC versions complain about %I64.
871 *-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;;
872 *) build_warnings="$build_warnings -Wformat-nonliteral" ;;
875 AC_ARG_ENABLE(build-warnings,
876 AS_HELP_STRING([--enable-build-warnings], [enable build-time compiler warnings if gcc is used]),
877 [case "${enableval}" in
879 no) build_warnings="-w";;
880 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
881 build_warnings="${build_warnings} ${t}";;
882 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
883 build_warnings="${t} ${build_warnings}";;
884 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
886 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
887 echo "Setting compiler warning flags = $build_warnings" 6>&1
889 AC_ARG_ENABLE(sim-build-warnings,
890 AS_HELP_STRING([--enable-sim-build-warnings], [enable SIM specific build-time compiler warnings if gcc is used]),
891 [case "${enableval}" in
893 no) build_warnings="-w";;
894 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
895 build_warnings="${build_warnings} ${t}";;
896 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
897 build_warnings="${t} ${build_warnings}";;
898 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
900 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
901 echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
904 if test "x${build_warnings}" != x -a "x$GCC" = xyes
906 AC_MSG_CHECKING(compiler warning flags)
907 # Separate out the -Werror flag as some files just cannot be
908 # compiled with it enabled.
909 for w in ${build_warnings}; do
911 -Werr*) WERROR_CFLAGS=-Werror ;;
912 *) # Check that GCC accepts it
913 saved_CFLAGS="$CFLAGS"
915 AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
916 CFLAGS="$saved_CFLAGS"
919 AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
922 AC_SUBST(WARN_CFLAGS)
923 AC_SUBST(WERROR_CFLAGS)
926 dnl Generate the Makefile in a target specific directory.
927 dnl Substitutions aren't performed on the file in AC_SUBST_FILE,
928 dnl so this is a cover macro to tuck the details away of how we cope.
929 dnl We cope by having autoconf generate two files and then merge them into
930 dnl one afterwards. The two pieces of the common fragment are inserted into
931 dnl the target's fragment at the appropriate points.
933 AC_DEFUN([SIM_AC_OUTPUT],
935 AC_LINK_FILES($sim_link_files, $sim_link_links)
936 dnl Make @cgen_breaks@ non-null only if the sim uses CGEN.
938 if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
939 cgen_breaks="break cgen_rtx_error";
941 AC_SUBST(cgen_breaks)
942 AC_CONFIG_FILES(Makefile.sim:Makefile.in)
943 AC_CONFIG_FILES(Make-common.sim:../common/Make-common.in)
944 AC_CONFIG_FILES(.gdbinit:../common/gdbinit.in)
945 AC_CONFIG_COMMANDS([Makefile],
946 [echo "Merging Makefile.sim+Make-common.sim into Makefile ..."
947 rm -f Makesim1.tmp Makesim2.tmp Makefile
948 sed -n -e '/^## COMMON_PRE_/,/^## End COMMON_PRE_/ p' <Make-common.sim >Makesim1.tmp
949 sed -n -e '/^## COMMON_POST_/,/^## End COMMON_POST_/ p' <Make-common.sim >Makesim2.tmp
950 sed -e '/^## COMMON_PRE_/ r Makesim1.tmp' \
951 -e '/^## COMMON_POST_/ r Makesim2.tmp' \
952 <Makefile.sim >Makefile
953 rm -f Makefile.sim Make-common.sim Makesim1.tmp Makesim2.tmp
955 AC_CONFIG_COMMANDS([stamp-h], [echo > stamp-h])
959 sinclude(../../config/gettext-sister.m4)
960 sinclude(../../config/acx.m4)
962 dnl --enable-cgen-maint support
963 AC_DEFUN([SIM_AC_OPTION_CGEN_MAINT],
966 dnl Default is to use one in build tree.
968 cgendir='$(srcdir)/../../cgen'
969 dnl Having --enable-maintainer-mode take arguments is another way to go.
970 dnl ??? One can argue --with is more appropriate if one wants to specify
971 dnl a directory name, but what we're doing here is an enable/disable kind
972 dnl of thing and specifying both --enable and --with is klunky.
973 dnl If you reeely want this to be --with, go ahead and change it.
974 AC_ARG_ENABLE(cgen-maint,
975 [ --enable-cgen-maint[=DIR] build cgen generated files],
976 [case "${enableval}" in
977 yes) cgen_maint=yes ;;
980 # argument is cgen install directory (not implemented yet).
981 # Having a `share' directory might be more appropriate for the .scm,
983 cgendir=${cgen_maint}/lib/cgen
987 dnl AM_CONDITIONAL(CGEN_MAINT, test x${cgen_maint} != xno)
988 if test x${cgen_maint} != xno ; then