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.
116 USE_MAINTAINER_MODE=no
117 AC_ARG_ENABLE(maintainer-mode,
118 [ --enable-maintainer-mode Enable developer functionality.],
119 [case "${enableval}" in
120 yes) MAINT="" USE_MAINTAINER_MODE=yes ;;
122 *) AC_MSG_ERROR("--enable-maintainer-mode does not take a value"); MAINT="#" ;;
124 if test x"$silent" != x"yes" && test x"$MAINT" = x""; then
125 echo "Setting maintainer mode" 6>&1
130 dnl This is a generic option to enable special byte swapping
131 dnl insns on *any* cpu.
132 AC_ARG_ENABLE(sim-bswap,
133 [ --enable-sim-bswap Use Host specific BSWAP instruction.],
134 [case "${enableval}" in
135 yes) sim_bswap="-DWITH_BSWAP=1 -DUSE_BSWAP=1";;
136 no) sim_bswap="-DWITH_BSWAP=0";;
137 *) AC_MSG_ERROR("--enable-sim-bswap does not take a value"); sim_bswap="";;
139 if test x"$silent" != x"yes" && test x"$sim_bswap" != x""; then
140 echo "Setting bswap flags = $sim_bswap" 6>&1
141 fi],[sim_bswap=""])dnl
145 AC_ARG_ENABLE(sim-cflags,
146 [ --enable-sim-cflags=opts Extra CFLAGS for use in building simulator],
147 [case "${enableval}" in
148 yes) sim_cflags="-O2 -fomit-frame-pointer";;
149 trace) AC_MSG_ERROR("Please use --enable-sim-debug instead."); sim_cflags="";;
151 *) sim_cflags=`echo "${enableval}" | sed -e "s/,/ /g"`;;
153 if test x"$silent" != x"yes" && test x"$sim_cflags" != x""; then
154 echo "Setting sim cflags = $sim_cflags" 6>&1
155 fi],[sim_cflags=""])dnl
159 dnl --enable-sim-debug is for developers of the simulator
160 dnl the allowable values are work-in-progress
161 AC_ARG_ENABLE(sim-debug,
162 [ --enable-sim-debug=opts Enable debugging flags],
163 [case "${enableval}" in
164 yes) sim_debug="-DDEBUG=7 -DWITH_DEBUG=7";;
165 no) sim_debug="-DDEBUG=0 -DWITH_DEBUG=0";;
166 *) sim_debug="-DDEBUG='(${enableval})' -DWITH_DEBUG='(${enableval})'";;
168 if test x"$silent" != x"yes" && test x"$sim_debug" != x""; then
169 echo "Setting sim debug = $sim_debug" 6>&1
170 fi],[sim_debug=""])dnl
174 dnl --enable-sim-stdio is for users of the simulator
175 dnl It determines if IO from the program is routed through STDIO (buffered)
176 AC_ARG_ENABLE(sim-stdio,
177 [ --enable-sim-stdio Specify whether to use stdio for console input/output.],
178 [case "${enableval}" in
179 yes) sim_stdio="-DWITH_STDIO=DO_USE_STDIO";;
180 no) sim_stdio="-DWITH_STDIO=DONT_USE_STDIO";;
181 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-stdio"); sim_stdio="";;
183 if test x"$silent" != x"yes" && test x"$sim_stdio" != x""; then
184 echo "Setting stdio flags = $sim_stdio" 6>&1
185 fi],[sim_stdio=""])dnl
189 dnl --enable-sim-trace is for users of the simulator
190 dnl The argument is either a bitmask of things to enable [exactly what is
191 dnl up to the simulator], or is a comma separated list of names of tracing
192 dnl elements to enable. The latter is only supported on simulators that
194 AC_ARG_ENABLE(sim-trace,
195 [ --enable-sim-trace=opts Enable tracing flags],
196 [case "${enableval}" in
197 yes) sim_trace="-DTRACE=1 -DWITH_TRACE=-1";;
198 no) sim_trace="-DTRACE=0 -DWITH_TRACE=0";;
200 sim_trace="-DTRACE='(${enableval})' -DWITH_TRACE='(${enableval})'";;
203 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
204 if test x"$sim_trace" = x; then
205 sim_trace="-DWITH_TRACE='(TRACE_$x"
207 sim_trace="${sim_trace}|TRACE_$x"
210 sim_trace="$sim_trace)'" ;;
212 if test x"$silent" != x"yes" && test x"$sim_trace" != x""; then
213 echo "Setting sim trace = $sim_trace" 6>&1
214 fi],[sim_trace=""])dnl
218 dnl --enable-sim-profile
219 dnl The argument is either a bitmask of things to enable [exactly what is
220 dnl up to the simulator], or is a comma separated list of names of profiling
221 dnl elements to enable. The latter is only supported on simulators that
222 dnl use WITH_PROFILE.
223 AC_ARG_ENABLE(sim-profile,
224 [ --enable-sim-profile=opts Enable profiling flags],
225 [case "${enableval}" in
226 yes) sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1";;
227 no) sim_profile="-DPROFILE=0 -DWITH_PROFILE=0";;
229 sim_profile="-DPROFILE='(${enableval})' -DWITH_PROFILE='(${enableval})'";;
232 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
233 if test x"$sim_profile" = x; then
234 sim_profile="-DWITH_PROFILE='(PROFILE_$x"
236 sim_profile="${sim_profile}|PROFILE_$x"
239 sim_profile="$sim_profile)'" ;;
241 if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
242 echo "Setting sim profile = $sim_profile" 6>&1
243 fi],[sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"])dnl
244 AC_SUBST(sim_profile)
246 ACX_PKGVERSION([GDB])
247 ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
248 AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
249 AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
251 dnl Types used by common code
254 dnl Detect exe extension
257 dnl These are available to append to as desired.
261 dnl Create tconfig.h either from simulator's tconfig.in or default one
263 sim_link_links=tconfig.h
264 if test -f ${srcdir}/tconfig.in
266 sim_link_files=tconfig.in
268 sim_link_files=../common/tconfig.in
271 # targ-vals.def points to the libc macro description file.
273 *-*-*) TARG_VALS_DEF=../common/nltvals.def ;;
275 sim_link_files="${sim_link_files} ${TARG_VALS_DEF}"
276 sim_link_links="${sim_link_links} targ-vals.def"
278 ]) dnl End of SIM_AC_COMMON
281 dnl Additional SIM options that can (optionally) be configured
282 dnl For optional simulator options, a macro SIM_AC_OPTION_* is defined.
283 dnl Simulators that wish to use the relevant option specify the macro
284 dnl in the simulator specific configure.in file between the SIM_AC_COMMON
285 dnl and SIM_AC_OUTPUT lines.
288 dnl Specify the running environment.
289 dnl If the simulator invokes this in its configure.in then without this option
290 dnl the default is the user environment and all are runtime selectable.
291 dnl If the simulator doesn't invoke this, only the user environment is
293 dnl ??? Until there is demonstrable value in doing something more complicated,
295 AC_DEFUN([SIM_AC_OPTION_ENVIRONMENT],
297 AC_ARG_ENABLE(sim-environment,
298 [ --enable-sim-environment=environment Specify mixed, user, virtual or operating environment.],
299 [case "${enableval}" in
300 all | ALL) sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT";;
301 user | USER) sim_environment="-DWITH_ENVIRONMENT=USER_ENVIRONMENT";;
302 virtual | VIRTUAL) sim_environment="-DWITH_ENVIRONMENT=VIRTUAL_ENVIRONMENT";;
303 operating | OPERATING) sim_environment="-DWITH_ENVIRONMENT=OPERATING_ENVIRONMENT";;
304 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-environment");
307 if test x"$silent" != x"yes" && test x"$sim_environment" != x""; then
308 echo "Setting sim environment = $sim_environment" 6>&1
310 [sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT"])dnl
312 AC_SUBST(sim_environment)
315 dnl Specify the alignment restrictions of the target architecture.
316 dnl Without this option all possible alignment restrictions are accommodated.
317 dnl arg[1] is hardwired target alignment
318 dnl arg[2] is default target alignment
319 AC_DEFUN([SIM_AC_OPTION_ALIGNMENT],
320 wire_alignment="[$1]"
321 default_alignment="[$2]"
323 AC_ARG_ENABLE(sim-alignment,
324 [ --enable-sim-alignment=align Specify strict, nonstrict or forced alignment of memory accesses.],
325 [case "${enableval}" in
326 strict | STRICT) sim_alignment="-DWITH_ALIGNMENT=STRICT_ALIGNMENT";;
327 nonstrict | NONSTRICT) sim_alignment="-DWITH_ALIGNMENT=NONSTRICT_ALIGNMENT";;
328 forced | FORCED) sim_alignment="-DWITH_ALIGNMENT=FORCED_ALIGNMENT";;
329 yes) if test x"$wire_alignment" != x; then
330 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
332 if test x"$default_alignment" != x; then
333 sim_alignment="-DWITH_ALIGNMENT=${default_alignment}"
335 echo "No hard-wired alignment for target $target" 1>&6
336 sim_alignment="-DWITH_ALIGNMENT=0"
339 no) if test x"$default_alignment" != x; then
340 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
342 if test x"$wire_alignment" != x; then
343 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${wire_alignment}"
345 echo "No default alignment for target $target" 1>&6
346 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=0"
349 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-alignment"); sim_alignment="";;
351 if test x"$silent" != x"yes" && test x"$sim_alignment" != x""; then
352 echo "Setting alignment flags = $sim_alignment" 6>&1
354 [if test x"$default_alignment" != x; then
355 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
357 if test x"$wire_alignment" != x; then
358 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
364 AC_SUBST(sim_alignment)
367 dnl Conditionally compile in assertion statements.
368 AC_DEFUN([SIM_AC_OPTION_ASSERT],
370 AC_ARG_ENABLE(sim-assert,
371 [ --enable-sim-assert Specify whether to perform random assertions.],
372 [case "${enableval}" in
373 yes) sim_assert="-DWITH_ASSERT=1";;
374 no) sim_assert="-DWITH_ASSERT=0";;
375 *) AC_MSG_ERROR("--enable-sim-assert does not take a value"); sim_assert="";;
377 if test x"$silent" != x"yes" && test x"$sim_assert" != x""; then
378 echo "Setting assert flags = $sim_assert" 6>&1
379 fi],[sim_assert=""])dnl
385 dnl --enable-sim-bitsize is for developers of the simulator
386 dnl It specifies the number of BITS in the target.
387 dnl arg[1] is the number of bits in a word
388 dnl arg[2] is the number assigned to the most significant bit
389 dnl arg[3] is the number of bits in an address
390 dnl arg[4] is the number of bits in an OpenFirmware cell.
391 dnl FIXME: this information should be obtained from bfd/archure
392 AC_DEFUN([SIM_AC_OPTION_BITSIZE],
393 wire_word_bitsize="[$1]"
395 wire_address_bitsize="[$3]"
396 wire_cell_bitsize="[$4]"
397 [AC_ARG_ENABLE(sim-bitsize,
398 [ --enable-sim-bitsize=N Specify target bitsize (32 or 64).],
400 case "${enableval}" in
401 64,63 | 64,63,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63";;
402 32,31 | 32,31,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31";;
403 64,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
404 32,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
405 32) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
406 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31"
408 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0"
410 64) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
411 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63"
413 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=0"
415 *) AC_MSG_ERROR("--enable-sim-bitsize was given $enableval. Expected 32 or 64") ;;
418 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9]]*,*//"`
421 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=32" ;;
422 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=64" ;;
423 * ) AC_MSG_ERROR("--enable-sim-bitsize was given address size $enableval. Expected 32 or 64") ;;
426 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9*]]*,*[[0-9]]*,*//"`
429 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=32" ;;
430 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=64" ;;
431 * ) AC_MSG_ERROR("--enable-sim-bitsize was given cell size $enableval. Expected 32 or 64") ;;
433 if test x"$silent" != x"yes" && test x"$sim_bitsize" != x""; then
434 echo "Setting bitsize flags = $sim_bitsize" 6>&1
437 if test x"$wire_word_bitsize" != x; then
438 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_BITSIZE=$wire_word_bitsize"
440 if test x"$wire_word_msb" != x; then
441 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_MSB=$wire_word_msb"
443 if test x"$wire_address_bitsize" != x; then
444 sim_bitsize="$sim_bitsize -DWITH_TARGET_ADDRESS_BITSIZE=$wire_address_bitsize"
446 if test x"$wire_cell_bitsize" != x; then
447 sim_bitsize="$sim_bitsize -DWITH_TARGET_CELL_BITSIZE=$wire_cell_bitsize"
450 AC_SUBST(sim_bitsize)
454 dnl --enable-sim-endian={yes,no,big,little} is for simulators
455 dnl that support both big and little endian targets.
456 dnl arg[1] is hardwired target endianness.
457 dnl arg[2] is default target endianness.
458 AC_DEFUN([SIM_AC_OPTION_ENDIAN],
461 default_endian="[$2]"
462 AC_ARG_ENABLE(sim-endian,
463 [ --enable-sim-endian=endian Specify target byte endian orientation.],
464 [case "${enableval}" in
465 b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BIG_ENDIAN";;
466 l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=LITTLE_ENDIAN";;
467 yes) if test x"$wire_endian" != x; then
468 sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
470 if test x"$default_endian" != x; then
471 sim_endian="-DWITH_TARGET_BYTE_ORDER=${default_endian}"
473 echo "No hard-wired endian for target $target" 1>&6
474 sim_endian="-DWITH_TARGET_BYTE_ORDER=0"
477 no) if test x"$default_endian" != x; then
478 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
480 if test x"$wire_endian" != x; then
481 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${wire_endian}"
483 echo "No default endian for target $target" 1>&6
484 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=0"
487 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-endian"); sim_endian="";;
489 if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
490 echo "Setting endian flags = $sim_endian" 6>&1
492 [if test x"$default_endian" != x; then
493 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
495 if test x"$wire_endian" != x; then
496 sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
505 dnl --enable-sim-hostendian is for users of the simulator when
506 dnl they find that AC_C_BIGENDIAN does not function correctly
507 dnl (for instance in a canadian cross)
508 AC_DEFUN([SIM_AC_OPTION_HOSTENDIAN],
510 AC_ARG_ENABLE(sim-hostendian,
511 [ --enable-sim-hostendian=end Specify host byte endian orientation.],
512 [case "${enableval}" in
513 no) sim_hostendian="-DWITH_HOST_BYTE_ORDER=0";;
514 b*|B*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN";;
515 l*|L*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN";;
516 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-hostendian"); sim_hostendian="";;
518 if test x"$silent" != x"yes" && test x"$sim_hostendian" != x""; then
519 echo "Setting hostendian flags = $sim_hostendian" 6>&1
521 if test "x$cross_compiling" = "xno"; then
523 if test $ac_cv_c_bigendian = yes; then
524 sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN"
526 sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN"
529 sim_hostendian="-DWITH_HOST_BYTE_ORDER=0"
532 AC_SUBST(sim_hostendian)
535 dnl --enable-sim-float is for developers of the simulator
536 dnl It specifies the presence of hardware floating point
537 dnl And optionally the bitsize of the floating point register.
538 dnl arg[1] specifies the presence (or absence) of floating point hardware
539 dnl arg[2] specifies the number of bits in a floating point register
540 AC_DEFUN([SIM_AC_OPTION_FLOAT],
542 default_sim_float="[$1]"
543 default_sim_float_bitsize="[$2]"
544 AC_ARG_ENABLE(sim-float,
545 [ --enable-sim-float Specify that the target processor has floating point hardware.],
546 [case "${enableval}" in
547 yes | hard) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT";;
548 no | soft) sim_float="-DWITH_FLOATING_POINT=SOFT_FLOATING_POINT";;
549 32) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=32";;
550 64) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=64";;
551 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-float"); sim_float="";;
553 if test x"$silent" != x"yes" && test x"$sim_float" != x""; then
554 echo "Setting float flags = $sim_float" 6>&1
557 if test x"${default_sim_float}" != x""; then
558 sim_float="-DWITH_FLOATING_POINT=${default_sim_float}"
560 if test x"${default_sim_float_bitsize}" != x""; then
561 sim_float="$sim_float -DWITH_TARGET_FLOATING_POINT_BITSIZE=${default_sim_float_bitsize}"
568 dnl The argument is the default cache size if none is specified.
569 AC_DEFUN([SIM_AC_OPTION_SCACHE],
571 default_sim_scache="ifelse([$1],,0,[$1])"
572 AC_ARG_ENABLE(sim-scache,
573 [ --enable-sim-scache=size Specify simulator execution cache size.],
574 [case "${enableval}" in
575 yes) sim_scache="-DWITH_SCACHE=${default_sim_scache}";;
576 no) sim_scache="-DWITH_SCACHE=0" ;;
577 [[0-9]]*) sim_scache="-DWITH_SCACHE=${enableval}";;
578 *) AC_MSG_ERROR("Bad value $enableval passed to --enable-sim-scache");
581 if test x"$silent" != x"yes" && test x"$sim_scache" != x""; then
582 echo "Setting scache size = $sim_scache" 6>&1
583 fi],[sim_scache="-DWITH_SCACHE=${default_sim_scache}"])
588 dnl The argument is the default model if none is specified.
589 AC_DEFUN([SIM_AC_OPTION_DEFAULT_MODEL],
591 default_sim_default_model="ifelse([$1],,0,[$1])"
592 AC_ARG_ENABLE(sim-default-model,
593 [ --enable-sim-default-model=model Specify default model to simulate.],
594 [case "${enableval}" in
595 yes|no) AC_MSG_ERROR("Missing argument to --enable-sim-default-model");;
596 *) sim_default_model="-DWITH_DEFAULT_MODEL='\"${enableval}\"'";;
598 if test x"$silent" != x"yes" && test x"$sim_default_model" != x""; then
599 echo "Setting default model = $sim_default_model" 6>&1
600 fi],[sim_default_model="-DWITH_DEFAULT_MODEL='\"${default_sim_default_model}\"'"])
602 AC_SUBST(sim_default_model)
605 dnl --enable-sim-hardware is for users of the simulator
606 dnl arg[1] Enable sim-hw by default? ("yes", "no", or "always")
607 dnl arg[2] is a space separated list of devices that override the defaults
608 dnl arg[3] is a space separated list of extra target specific devices.
609 AC_DEFUN([SIM_AC_OPTION_HARDWARE],
611 if test x"[$1]" != x"no"; then
612 enable_sim_hardware=yes
614 enable_sim_hardware=no
620 hardware="cfi core pal glue"
622 hardware="$hardware [$3]"
624 sim_hw_cflags="-DWITH_HW=1"
626 sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([[^ ]][[^ ]]*\)/dv-\1.o/g'`"
628 AC_ARG_ENABLE(sim-hardware,
629 [AS_HELP_STRING([--enable-sim-hardware=LIST],
630 [Specify the hardware to be included in the build.])])
631 case ${enable_sim_hardware} in
634 ,*) sim_hw_p=yes; hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
635 *,) sim_hw_p=yes; hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
636 *) sim_hw_p=yes; hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
639 if test "$sim_hw_p" != yes; then
640 if test "[$1]" = "always"; then
641 AC_MSG_ERROR([Sorry, but this simulator requires that hardware support
642 be enabled. Please configure without --disable-hw-support.])
645 sim_hw_cflags="-DWITH_HW=0"
648 sim_hw_cflags="-DWITH_HW=1"
651 sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
652 for i in $hardware ; do
655 *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
658 # mingw does not support sockser
662 *) SIM_DV_SOCKSER_O="dv-sockser.o"
664 [HAVE_DV_SOCKSER], 1, [Define if dv-sockser is usable.])
667 AC_SUBST(SIM_DV_SOCKSER_O)
668 if test x"$silent" != x"yes"; then
669 echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
671 dnl Some devices require extra libraries.
672 case " $hardware " in
673 *" cfi "*) AC_CHECK_LIB(m, log2);;
677 AC_SUBST(sim_hw_cflags)
678 AC_SUBST(sim_hw_objs)
682 dnl --enable-sim-inline is for users that wish to ramp up the simulator's
683 dnl performance by inlining functions.
684 dnl Guarantee that unconfigured simulators do not do any inlining
685 sim_inline="-DDEFAULT_INLINE=0"
686 AC_DEFUN([SIM_AC_OPTION_INLINE],
688 default_sim_inline="ifelse([$1],,,-DDEFAULT_INLINE=[$1])"
689 AC_ARG_ENABLE(sim-inline,
690 [ --enable-sim-inline=inlines Specify which functions should be inlined.],
693 no) sim_inline="-DDEFAULT_INLINE=0";;
694 0) sim_inline="-DDEFAULT_INLINE=0";;
695 yes | 2) sim_inline="-DDEFAULT_INLINE=ALL_C_INLINE";;
696 1) sim_inline="-DDEFAULT_INLINE=INLINE_LOCALS";;
697 *) for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
700 *_INLINE=*) new_flag="-D$x";;
701 *=*) new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
702 *_INLINE) new_flag="-D$x=ALL_C_INLINE";;
703 *) new_flag="-D$x""_INLINE=ALL_C_INLINE";;
705 if test x"$sim_inline" = x""; then
706 sim_inline="$new_flag"
708 sim_inline="$sim_inline $new_flag"
712 if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
713 echo "Setting inline flags = $sim_inline" 6>&1
715 if test "x$cross_compiling" = "xno"; then
716 if test x"$GCC" != "x" -a x"${default_sim_inline}" != "x" ; then
717 sim_inline="${default_sim_inline}"
718 if test x"$silent" != x"yes"; then
719 echo "Setting inline flags = $sim_inline" 6>&1
725 sim_inline="-DDEFAULT_INLINE=0"
731 AC_DEFUN([SIM_AC_OPTION_PACKAGES],
733 AC_ARG_ENABLE(sim-packages,
734 [ --enable-sim-packages=list Specify the packages to be included in the build.],
736 case "${enableval}" in
738 no) AC_MSG_ERROR("List of packages must be specified for --enable-sim-packages"); packages="";;
739 ,*) packages="${packages}${enableval}";;
740 *,) packages="${enableval}${packages}";;
741 *) packages="${enableval}"'';;
743 sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
744 sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
745 if test x"$silent" != x"yes" && test x"$packages" != x""; then
746 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
747 fi],[packages=disklabel
748 sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
749 sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
750 if test x"$silent" != x"yes"; then
751 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
754 AC_SUBST(sim_packages)
757 AC_DEFUN([SIM_AC_OPTION_REGPARM],
759 AC_ARG_ENABLE(sim-regparm,
760 [ --enable-sim-regparm=nr-parm Pass parameters in registers instead of on the stack - x86/GCC specific.],
761 [case "${enableval}" in
762 0*|1*|2*|3*|4*|5*|6*|7*|8*|9*) sim_regparm="-DWITH_REGPARM=${enableval}";;
763 no) sim_regparm="" ;;
764 yes) sim_regparm="-DWITH_REGPARM=3";;
765 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-regparm"); sim_regparm="";;
767 if test x"$silent" != x"yes" && test x"$sim_regparm" != x""; then
768 echo "Setting regparm flags = $sim_regparm" 6>&1
769 fi],[sim_regparm=""])dnl
771 AC_SUBST(sim_regparm)
774 AC_DEFUN([SIM_AC_OPTION_RESERVED_BITS],
776 default_sim_reserved_bits="ifelse([$1],,1,[$1])"
777 AC_ARG_ENABLE(sim-reserved-bits,
778 [ --enable-sim-reserved-bits Specify whether to check reserved bits in instruction.],
779 [case "${enableval}" in
780 yes) sim_reserved_bits="-DWITH_RESERVED_BITS=1";;
781 no) sim_reserved_bits="-DWITH_RESERVED_BITS=0";;
782 *) AC_MSG_ERROR("--enable-sim-reserved-bits does not take a value"); sim_reserved_bits="";;
784 if test x"$silent" != x"yes" && test x"$sim_reserved_bits" != x""; then
785 echo "Setting reserved flags = $sim_reserved_bits" 6>&1
786 fi],[sim_reserved_bits="-DWITH_RESERVED_BITS=${default_sim_reserved_bits}"])dnl
788 AC_SUBST(sim_reserved_bits)
791 AC_DEFUN([SIM_AC_OPTION_SMP],
793 default_sim_smp="ifelse([$1],,5,[$1])"
794 AC_ARG_ENABLE(sim-smp,
795 [ --enable-sim-smp=n Specify number of processors to configure for (default ${default_sim_smp}).],
796 [case "${enableval}" in
797 yes) sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5";;
798 no) sim_smp="-DWITH_SMP=0" ; sim_igen_smp="-N 0";;
799 *) sim_smp="-DWITH_SMP=$enableval" ; sim_igen_smp="-N $enableval";;
801 if test x"$silent" != x"yes" && test x"$sim_smp" != x""; then
802 echo "Setting smp flags = $sim_smp" 6>&1
803 fi],[sim_smp="-DWITH_SMP=${default_sim_smp}" ; sim_igen_smp="-N ${default_sim_smp}"
804 if test x"$silent" != x"yes"; then
805 echo "Setting smp flags = $sim_smp" 6>&1
811 AC_DEFUN([SIM_AC_OPTION_STDCALL],
813 AC_ARG_ENABLE(sim-stdcall,
814 [ --enable-sim-stdcall=type Use an alternative function call/return mechanism - x86/GCC specific.],
815 [case "${enableval}" in
816 no) sim_stdcall="" ;;
817 std*) sim_stdcall="-DWITH_STDCALL=1";;
818 yes) sim_stdcall="-DWITH_STDCALL=1";;
819 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-stdcall"); sim_stdcall="";;
821 if test x"$silent" != x"yes" && test x"$sim_stdcall" != x""; then
822 echo "Setting function call flags = $sim_stdcall" 6>&1
823 fi],[sim_stdcall=""])dnl
825 AC_SUBST(sim_stdcall)
828 AC_DEFUN([SIM_AC_OPTION_XOR_ENDIAN],
830 default_sim_xor_endian="ifelse([$1],,8,[$1])"
831 AC_ARG_ENABLE(sim-xor-endian,
832 [ --enable-sim-xor-endian=n Specify number bytes involved in XOR bi-endian mode (default ${default_sim_xor_endian}).],
833 [case "${enableval}" in
834 yes) sim_xor_endian="-DWITH_XOR_ENDIAN=8";;
835 no) sim_xor_endian="-DWITH_XOR_ENDIAN=0";;
836 *) sim_xor_endian="-DWITH_XOR_ENDIAN=$enableval";;
838 if test x"$silent" != x"yes" && test x"$sim_xor_endian" != x""; then
839 echo "Setting xor-endian flag = $sim_xor_endian" 6>&1
840 fi],[sim_xor_endian="-DWITH_XOR_ENDIAN=${default_sim_xor_endian}"])dnl
842 AC_SUBST(sim_xor_endian)
845 dnl --enable-build-warnings is for developers of the simulator.
846 dnl it enables extra GCC specific warnings.
847 AC_DEFUN([SIM_AC_OPTION_WARNINGS],
849 AC_ARG_ENABLE(werror,
850 AS_HELP_STRING([--enable-werror], [treat compile warnings as errors]),
851 [case "${enableval}" in
852 yes | y) ERROR_ON_WARNING="yes" ;;
853 no | n) ERROR_ON_WARNING="no" ;;
854 *) AC_MSG_ERROR(bad value ${enableval} for --enable-werror) ;;
857 # Enable -Werror by default when using gcc
858 if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
863 if test "${ERROR_ON_WARNING}" = yes ; then
864 # NOTE: Disabled in the sim dir due to most sims generating warnings.
865 # WERROR_CFLAGS="-Werror"
869 # The entries after -Wno-pointer-sign are disabled warnings which may
870 # be enabled in the future, which can not currently be used to build
872 # NOTE: If you change this list, remember to update
873 # gdb/doc/gdbint.texinfo.
874 build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \
875 -Wformat-nonliteral -Wno-pointer-sign \
876 -Wno-unused -Wunused-value -Wunused-function \
877 -Wno-switch -Wno-char-subscripts -Wmissing-prototypes"
879 # Enable -Wno-format by default when using gcc on mingw since many
880 # GCC versions complain about %I64.
882 *-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;;
885 AC_ARG_ENABLE(build-warnings,
886 AS_HELP_STRING([--enable-build-warnings], [enable build-time compiler warnings if gcc is used]),
887 [case "${enableval}" in
889 no) build_warnings="-w";;
890 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
891 build_warnings="${build_warnings} ${t}";;
892 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
893 build_warnings="${t} ${build_warnings}";;
894 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
896 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
897 echo "Setting compiler warning flags = $build_warnings" 6>&1
899 AC_ARG_ENABLE(sim-build-warnings,
900 AS_HELP_STRING([--enable-sim-build-warnings], [enable SIM specific build-time compiler warnings if gcc is used]),
901 [case "${enableval}" in
903 no) build_warnings="-w";;
904 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
905 build_warnings="${build_warnings} ${t}";;
906 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
907 build_warnings="${t} ${build_warnings}";;
908 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
910 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
911 echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
914 if test "x${build_warnings}" != x -a "x$GCC" = xyes
916 AC_MSG_CHECKING(compiler warning flags)
917 # Separate out the -Werror flag as some files just cannot be
918 # compiled with it enabled.
919 for w in ${build_warnings}; do
921 -Werr*) WERROR_CFLAGS=-Werror ;;
922 *) # Check that GCC accepts it
923 saved_CFLAGS="$CFLAGS"
925 AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
926 CFLAGS="$saved_CFLAGS"
929 AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
932 AC_SUBST(WARN_CFLAGS)
933 AC_SUBST(WERROR_CFLAGS)
936 dnl Generate the Makefile in a target specific directory.
937 dnl Substitutions aren't performed on the file in AC_SUBST_FILE,
938 dnl so this is a cover macro to tuck the details away of how we cope.
939 dnl We cope by having autoconf generate two files and then merge them into
940 dnl one afterwards. The two pieces of the common fragment are inserted into
941 dnl the target's fragment at the appropriate points.
943 AC_DEFUN([SIM_AC_OUTPUT],
945 AC_LINK_FILES($sim_link_files, $sim_link_links)
946 dnl Make @cgen_breaks@ non-null only if the sim uses CGEN.
948 if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
949 cgen_breaks="break cgen_rtx_error";
951 AC_SUBST(cgen_breaks)
952 AC_CONFIG_FILES(Makefile.sim:Makefile.in)
953 AC_CONFIG_FILES(Make-common.sim:../common/Make-common.in)
954 AC_CONFIG_FILES(.gdbinit:../common/gdbinit.in)
955 AC_CONFIG_COMMANDS([Makefile],
956 [echo "Merging Makefile.sim+Make-common.sim into Makefile ..."
957 rm -f Makesim1.tmp Makesim2.tmp Makefile
958 sed -n -e '/^## COMMON_PRE_/,/^## End COMMON_PRE_/ p' <Make-common.sim >Makesim1.tmp
959 sed -n -e '/^## COMMON_POST_/,/^## End COMMON_POST_/ p' <Make-common.sim >Makesim2.tmp
960 sed -e '/^## COMMON_PRE_/ r Makesim1.tmp' \
961 -e '/^## COMMON_POST_/ r Makesim2.tmp' \
962 <Makefile.sim >Makefile
963 rm -f Makefile.sim Make-common.sim Makesim1.tmp Makesim2.tmp
965 AC_CONFIG_COMMANDS([stamp-h], [echo > stamp-h])
969 sinclude(../../config/gettext-sister.m4)
970 sinclude(../../config/acx.m4)
972 dnl --enable-cgen-maint support
973 AC_DEFUN([SIM_AC_OPTION_CGEN_MAINT],
976 dnl Default is to use one in build tree.
978 cgendir='$(srcdir)/../../cgen'
979 dnl Having --enable-maintainer-mode take arguments is another way to go.
980 dnl ??? One can argue --with is more appropriate if one wants to specify
981 dnl a directory name, but what we're doing here is an enable/disable kind
982 dnl of thing and specifying both --enable and --with is klunky.
983 dnl If you reeely want this to be --with, go ahead and change it.
984 AC_ARG_ENABLE(cgen-maint,
985 [ --enable-cgen-maint[=DIR] build cgen generated files],
986 [case "${enableval}" in
987 yes) cgen_maint=yes ;;
990 # argument is cgen install directory (not implemented yet).
991 # Having a `share' directory might be more appropriate for the .scm,
993 cgendir=${cgen_maint}/lib/cgen
997 dnl AM_CONDITIONAL(CGEN_MAINT, test x${cgen_maint} != xno)
998 if test x${cgen_maint} != xno ; then
1003 AC_SUBST(CGEN_MAINT)