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.ac 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
43 # Put a plausible default for CC_FOR_BUILD in Makefile.
44 if test "x$cross_compiling" = "xno"; then
49 AC_SUBST(CC_FOR_BUILD)
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
61 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package. ])
64 # Dependency checking.
66 ZW_PROG_COMPILER_DEPENDENCIES([CC])
68 # Check for the 'make' the user wants to use.
69 AC_CHECK_PROGS(MAKE, make)
71 case "`$MAKE --version 2>&1 | sed 1q`" in
76 AM_CONDITIONAL(GMAKE, test "$MAKE_IS_GNU" = yes)
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.
81 ZW_GNU_GETTEXT_SISTER_DIR(../../intl)
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)
92 # Check for socket libraries
93 AC_CHECK_LIB(socket, bind)
94 AC_CHECK_LIB(nsl, gethostbyname)
96 # BFD conditionally uses zlib, so we must link it in if libbfd does, by
97 # using the same condition.
100 # BFD uses libdl when when plugins enabled.
102 AM_CONDITIONAL(PLUGINS, test "$plugins" = yes)
104 AC_SUBST(lt_cv_dlopen_libs)
106 . ${srcdir}/../../bfd/configure.host
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.
115 dnl We don't use automake, but we still want to support
116 dnl --enable-maintainer-mode.
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="";;
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
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="";;
142 *) sim_cflags=`echo "${enableval}" | sed -e "s/,/ /g"`;;
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
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})'";;
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
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="";;
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
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
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";;
194 sim_trace="-DWITH_TRACE='(${enableval})'";;
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"
201 sim_trace="${sim_trace}|TRACE_$x"
204 sim_trace="$sim_trace)'" ;;
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
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";;
223 sim_profile="-DPROFILE='(${enableval})' -DWITH_PROFILE='(${enableval})'";;
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"
230 sim_profile="${sim_profile}|PROFILE_$x"
233 sim_profile="$sim_profile)'" ;;
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)
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])
245 dnl Types used by common code
248 dnl Detect exe extension
251 dnl These are available to append to as desired.
255 # targ-vals.def points to the libc macro description file.
257 *-*-*) TARG_VALS_DEF=../common/nltvals.def ;;
259 sim_link_files="${sim_link_files} ${TARG_VALS_DEF}"
260 sim_link_links="${sim_link_links} targ-vals.def"
262 ]) dnl End of SIM_AC_COMMON
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.
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
277 dnl ??? Until there is demonstrable value in doing something more complicated,
279 AC_DEFUN([SIM_AC_OPTION_ENVIRONMENT],
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");
292 if test x"$silent" != x"yes" && test x"$sim_environment" != x""; then
293 echo "Setting sim environment = $sim_environment" 6>&1
295 [sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT"])dnl
297 AC_SUBST(sim_environment)
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]"
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}"
318 if test x"$default_alignment" != x; then
319 sim_alignment="-DWITH_ALIGNMENT=${default_alignment}"
321 echo "No hard-wired alignment for target $target" 1>&6
322 sim_alignment="-DWITH_ALIGNMENT=0"
325 no) if test x"$default_alignment" != x; then
326 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
328 if test x"$wire_alignment" != x; then
329 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${wire_alignment}"
331 echo "No default alignment for target $target" 1>&6
332 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=0"
335 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-alignment"); sim_alignment="";;
337 if test x"$silent" != x"yes" && test x"$sim_alignment" != x""; then
338 echo "Setting alignment flags = $sim_alignment" 6>&1
340 [if test x"$default_alignment" != x; then
341 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
343 if test x"$wire_alignment" != x; then
344 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
350 AC_SUBST(sim_alignment)
353 dnl Conditionally compile in assertion statements.
354 AC_DEFUN([SIM_AC_OPTION_ASSERT],
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="";;
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
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]"
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)])],
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"
395 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0"
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"
400 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=0"
402 *) AC_MSG_ERROR("--enable-sim-bitsize was given $enableval. Expected 32 or 64") ;;
405 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9]]*,*//"`
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") ;;
413 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9*]]*,*[[0-9]]*,*//"`
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") ;;
420 if test x"$silent" != x"yes" && test x"$sim_bitsize" != x""; then
421 echo "Setting bitsize flags = $sim_bitsize" 6>&1
424 if test x"$wire_word_bitsize" != x; then
425 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_BITSIZE=$wire_word_bitsize"
427 if test x"$wire_word_msb" != x; then
428 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_MSB=$wire_word_msb"
430 if test x"$wire_address_bitsize" != x; then
431 sim_bitsize="$sim_bitsize -DWITH_TARGET_ADDRESS_BITSIZE=$wire_address_bitsize"
433 if test x"$wire_cell_bitsize" != x; then
434 sim_bitsize="$sim_bitsize -DWITH_TARGET_CELL_BITSIZE=$wire_cell_bitsize"
437 AC_SUBST(sim_bitsize)
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],
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}"
458 if test x"$default_endian" != x; then
459 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
461 echo "No hard-wired endian for target $target" 1>&6
462 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_UNKNOWN"
465 no) if test x"$default_endian" != x; then
466 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
468 if test x"$wire_endian" != x; then
469 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
471 echo "No default endian for target $target" 1>&6
472 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_UNKNOWN"
475 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-endian"); sim_endian="";;
477 if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
478 echo "Setting endian flags = $sim_endian" 6>&1
480 [if test x"$default_endian" != x; then
481 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
483 if test x"$wire_endian" != x; then
484 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
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],
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="";;
512 if test x"$silent" != x"yes" && test x"$sim_float" != x""; then
513 echo "Setting float flags = $sim_float" 6>&1
516 if test x"${default_sim_float}" != x""; then
517 sim_float="-DWITH_FLOATING_POINT=${default_sim_float}"
519 if test x"${default_sim_float_bitsize}" != x""; then
520 sim_float="$sim_float -DWITH_TARGET_FLOATING_POINT_BITSIZE=${default_sim_float_bitsize}"
527 dnl The argument is the default cache size if none is specified.
528 AC_DEFUN([SIM_AC_OPTION_SCACHE],
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");
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}"])
548 dnl The argument is the default model if none is specified.
549 AC_DEFUN([SIM_AC_OPTION_DEFAULT_MODEL],
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}\"'";;
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}\"'"])
563 AC_SUBST(sim_default_model)
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],
575 hardware="cfi core pal glue"
577 hardware="$hardware [$3]"
579 sim_hw_cflags="-DWITH_HW=1"
581 sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([[^ ]][[^ ]]*\)/dv-\1.o/g'`"
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
589 ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
590 *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
591 *) hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
594 if test "$enable_sim_hardware" = no; then
596 sim_hw_cflags="-DWITH_HW=0"
599 sim_hw_cflags="-DWITH_HW=1"
602 sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
603 for i in $hardware ; do
606 *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
609 # mingw does not support sockser
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"
617 [HAVE_DV_SOCKSER], 1, [Define if dv-sockser is usable.])
620 if test x"$silent" != x"yes"; then
621 echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
623 dnl Some devices require extra libraries.
624 case " $hardware " in
625 *" cfi "*) AC_CHECK_LIB(m, log2);;
629 AC_SUBST(sim_hw_cflags)
630 AC_SUBST(sim_hw_objs)
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],
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])],
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
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";;
658 if test x"$sim_inline" = x""; then
659 sim_inline="$new_flag"
661 sim_inline="$sim_inline $new_flag"
665 if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
666 echo "Setting inline flags = $sim_inline" 6>&1
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
678 sim_inline="-DDEFAULT_INLINE=0"
684 AC_DEFUN([SIM_AC_OPTION_PACKAGES],
686 AC_ARG_ENABLE(sim-packages,
687 [AS_HELP_STRING([--enable-sim-packages=list],
688 [Specify the packages to be included in the build])],
690 case "${enableval}" in
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}"'';;
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"
708 AC_SUBST(sim_packages)
711 AC_DEFUN([SIM_AC_OPTION_REGPARM],
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="";;
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
726 AC_SUBST(sim_regparm)
729 AC_DEFUN([SIM_AC_OPTION_RESERVED_BITS],
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="";;
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
744 AC_SUBST(sim_reserved_bits)
747 AC_DEFUN([SIM_AC_OPTION_SMP],
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";;
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
768 AC_DEFUN([SIM_AC_OPTION_STDCALL],
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="";;
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
783 AC_SUBST(sim_stdcall)
786 AC_DEFUN([SIM_AC_OPTION_XOR_ENDIAN],
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";;
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
801 AC_SUBST(sim_xor_endian)
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],
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) ;;
816 # Enable -Werror by default when using gcc
817 if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
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"
828 build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \
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"
835 # Enable -Wno-format by default when using gcc on mingw since many
836 # GCC versions complain about %I64.
838 *-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;;
839 *) build_warnings="$build_warnings -Wformat-nonliteral" ;;
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
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"`;;
853 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
854 echo "Setting compiler warning flags = $build_warnings" 6>&1
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
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"`;;
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
871 if test "x${build_warnings}" != x -a "x$GCC" = xyes
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
878 -Werr*) WERROR_CFLAGS=-Werror ;;
879 *) # Check that GCC accepts it
880 saved_CFLAGS="$CFLAGS"
882 AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
883 CFLAGS="$saved_CFLAGS"
886 AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
889 AC_SUBST(WARN_CFLAGS)
890 AC_SUBST(WERROR_CFLAGS)
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.
900 AC_DEFUN([SIM_AC_OUTPUT],
902 AC_LINK_FILES($sim_link_files, $sim_link_links)
903 dnl Make @cgen_breaks@ non-null only if the sim uses CGEN.
905 if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
906 cgen_breaks="break cgen_rtx_error";
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
922 AC_CONFIG_COMMANDS([stamp-h], [echo > stamp-h])
926 sinclude(../../config/gettext-sister.m4)
927 sinclude(../../config/acx.m4)
929 dnl --enable-cgen-maint support
930 AC_DEFUN([SIM_AC_OPTION_CGEN_MAINT],
933 dnl Default is to use one in build tree.
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 ;;
947 # argument is cgen install directory (not implemented yet).
948 # Having a `share' directory might be more appropriate for the .scm,
950 cgendir=${cgen_maint}/lib/cgen
954 dnl AM_CONDITIONAL(CGEN_MAINT, test x${cgen_maint} != xno)
955 if test x${cgen_maint} != xno ; then