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
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 [AS_HELP_STRING([--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 [AS_HELP_STRING([--enable-sim-cflags=opts],
136 [Extra CFLAGS for use in building simulator])],
137 [case "${enableval}" in
138 yes) sim_cflags="-O2 -fomit-frame-pointer";;
139 trace) AC_MSG_ERROR("Please use --enable-sim-debug instead."); sim_cflags="";;
141 *) sim_cflags=`echo "${enableval}" | sed -e "s/,/ /g"`;;
143 if test x"$silent" != x"yes" && test x"$sim_cflags" != x""; then
144 echo "Setting sim cflags = $sim_cflags" 6>&1
145 fi],[sim_cflags=""])dnl
149 dnl --enable-sim-debug is for developers of the simulator
150 dnl the allowable values are work-in-progress
151 AC_ARG_ENABLE(sim-debug,
152 [AS_HELP_STRING([--enable-sim-debug=opts],
153 [Enable debugging flags (for developers of the sim itself)])],
154 [case "${enableval}" in
155 yes) sim_debug="-DDEBUG=7 -DWITH_DEBUG=7";;
156 no) sim_debug="-DDEBUG=0 -DWITH_DEBUG=0";;
157 *) sim_debug="-DDEBUG='(${enableval})' -DWITH_DEBUG='(${enableval})'";;
159 if test x"$silent" != x"yes" && test x"$sim_debug" != x""; then
160 echo "Setting sim debug = $sim_debug" 6>&1
161 fi],[sim_debug=""])dnl
165 dnl --enable-sim-stdio is for users of the simulator
166 dnl It determines if IO from the program is routed through STDIO (buffered)
167 AC_ARG_ENABLE(sim-stdio,
168 [AS_HELP_STRING([--enable-sim-stdio],
169 [Specify whether to use stdio for console input/output])],
170 [case "${enableval}" in
171 yes) sim_stdio="-DWITH_STDIO=DO_USE_STDIO";;
172 no) sim_stdio="-DWITH_STDIO=DONT_USE_STDIO";;
173 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-stdio"); sim_stdio="";;
175 if test x"$silent" != x"yes" && test x"$sim_stdio" != x""; then
176 echo "Setting stdio flags = $sim_stdio" 6>&1
177 fi],[sim_stdio=""])dnl
181 dnl --enable-sim-trace is for users of the simulator
182 dnl The argument is either a bitmask of things to enable [exactly what is
183 dnl up to the simulator], or is a comma separated list of names of tracing
184 dnl elements to enable. The latter is only supported on simulators that
186 AC_ARG_ENABLE(sim-trace,
187 [AS_HELP_STRING([--enable-sim-trace=opts],
188 [Enable tracing of simulated programs])],
189 [case "${enableval}" in
190 yes) sim_trace="-DWITH_TRACE=-1";;
191 no) sim_trace="-DWITH_TRACE=0";;
193 sim_trace="-DWITH_TRACE='(${enableval})'";;
196 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
197 if test x"$sim_trace" = x; then
198 sim_trace="-DWITH_TRACE='(TRACE_$x"
200 sim_trace="${sim_trace}|TRACE_$x"
203 sim_trace="$sim_trace)'" ;;
205 if test x"$silent" != x"yes" && test x"$sim_trace" != x""; then
206 echo "Setting sim trace = $sim_trace" 6>&1
207 fi],[sim_trace=""])dnl
211 dnl --enable-sim-profile
212 dnl The argument is either a bitmask of things to enable [exactly what is
213 dnl up to the simulator], or is a comma separated list of names of profiling
214 dnl elements to enable. The latter is only supported on simulators that
215 dnl use WITH_PROFILE.
216 AC_ARG_ENABLE(sim-profile,
217 [AS_HELP_STRING([--enable-sim-profile=opts], [Enable profiling flags])],
218 [case "${enableval}" in
219 yes) sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1";;
220 no) sim_profile="-DPROFILE=0 -DWITH_PROFILE=0";;
222 sim_profile="-DPROFILE='(${enableval})' -DWITH_PROFILE='(${enableval})'";;
225 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
226 if test x"$sim_profile" = x; then
227 sim_profile="-DWITH_PROFILE='(PROFILE_$x"
229 sim_profile="${sim_profile}|PROFILE_$x"
232 sim_profile="$sim_profile)'" ;;
234 if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
235 echo "Setting sim profile = $sim_profile" 6>&1
236 fi],[sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"])dnl
237 AC_SUBST(sim_profile)
239 ACX_PKGVERSION([SIM])
240 ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
241 AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
242 AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
244 dnl Types used by common code
247 dnl Detect exe extension
250 dnl These are available to append to as desired.
254 # targ-vals.def points to the libc macro description file.
256 *-*-*) TARG_VALS_DEF=../common/nltvals.def ;;
258 sim_link_files="${sim_link_files} ${TARG_VALS_DEF}"
259 sim_link_links="${sim_link_links} targ-vals.def"
261 ]) dnl End of SIM_AC_COMMON
264 dnl Additional SIM options that can (optionally) be configured
265 dnl For optional simulator options, a macro SIM_AC_OPTION_* is defined.
266 dnl Simulators that wish to use the relevant option specify the macro
267 dnl in the simulator specific configure.ac file between the SIM_AC_COMMON
268 dnl and SIM_AC_OUTPUT lines.
271 dnl Specify the running environment.
272 dnl If the simulator invokes this in its configure.ac then without this option
273 dnl the default is the user environment and all are runtime selectable.
274 dnl If the simulator doesn't invoke this, only the user environment is
276 dnl ??? Until there is demonstrable value in doing something more complicated,
278 AC_DEFUN([SIM_AC_OPTION_ENVIRONMENT],
280 AC_ARG_ENABLE(sim-environment,
281 [AS_HELP_STRING([--enable-sim-environment=environment],
282 [Specify mixed, user, virtual or operating environment])],
283 [case "${enableval}" in
284 all | ALL) sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT";;
285 user | USER) sim_environment="-DWITH_ENVIRONMENT=USER_ENVIRONMENT";;
286 virtual | VIRTUAL) sim_environment="-DWITH_ENVIRONMENT=VIRTUAL_ENVIRONMENT";;
287 operating | OPERATING) sim_environment="-DWITH_ENVIRONMENT=OPERATING_ENVIRONMENT";;
288 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-environment");
291 if test x"$silent" != x"yes" && test x"$sim_environment" != x""; then
292 echo "Setting sim environment = $sim_environment" 6>&1
294 [sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT"])dnl
296 AC_SUBST(sim_environment)
299 dnl Specify the alignment restrictions of the target architecture.
300 dnl Without this option all possible alignment restrictions are accommodated.
301 dnl arg[1] is hardwired target alignment
302 dnl arg[2] is default target alignment
303 AC_DEFUN([SIM_AC_OPTION_ALIGNMENT],
304 wire_alignment="[$1]"
305 default_alignment="[$2]"
307 AC_ARG_ENABLE(sim-alignment,
308 [AS_HELP_STRING([--enable-sim-alignment=align],
309 [Specify strict, nonstrict or forced alignment of memory accesses])],
310 [case "${enableval}" in
311 strict | STRICT) sim_alignment="-DWITH_ALIGNMENT=STRICT_ALIGNMENT";;
312 nonstrict | NONSTRICT) sim_alignment="-DWITH_ALIGNMENT=NONSTRICT_ALIGNMENT";;
313 forced | FORCED) sim_alignment="-DWITH_ALIGNMENT=FORCED_ALIGNMENT";;
314 yes) if test x"$wire_alignment" != x; then
315 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
317 if test x"$default_alignment" != x; then
318 sim_alignment="-DWITH_ALIGNMENT=${default_alignment}"
320 echo "No hard-wired alignment for target $target" 1>&6
321 sim_alignment="-DWITH_ALIGNMENT=0"
324 no) if test x"$default_alignment" != x; then
325 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
327 if test x"$wire_alignment" != x; then
328 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${wire_alignment}"
330 echo "No default alignment for target $target" 1>&6
331 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=0"
334 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-alignment"); sim_alignment="";;
336 if test x"$silent" != x"yes" && test x"$sim_alignment" != x""; then
337 echo "Setting alignment flags = $sim_alignment" 6>&1
339 [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_ALIGNMENT=${wire_alignment}"
349 AC_SUBST(sim_alignment)
352 dnl Conditionally compile in assertion statements.
353 AC_DEFUN([SIM_AC_OPTION_ASSERT],
355 AC_ARG_ENABLE(sim-assert,
356 [AS_HELP_STRING([--enable-sim-assert],
357 [Specify whether to perform random assertions])],
358 [case "${enableval}" in
359 yes) sim_assert="-DWITH_ASSERT=1";;
360 no) sim_assert="-DWITH_ASSERT=0";;
361 *) AC_MSG_ERROR("--enable-sim-assert does not take a value"); sim_assert="";;
363 if test x"$silent" != x"yes" && test x"$sim_assert" != x""; then
364 echo "Setting assert flags = $sim_assert" 6>&1
365 fi],[sim_assert=""])dnl
371 dnl --enable-sim-bitsize is for developers of the simulator
372 dnl It specifies the number of BITS in the target.
373 dnl arg[1] is the number of bits in a word
374 dnl arg[2] is the number assigned to the most significant bit
375 dnl arg[3] is the number of bits in an address
376 dnl arg[4] is the number of bits in an OpenFirmware cell.
377 dnl FIXME: this information should be obtained from bfd/archure
378 AC_DEFUN([SIM_AC_OPTION_BITSIZE],
379 wire_word_bitsize="[$1]"
381 wire_address_bitsize="[$3]"
382 wire_cell_bitsize="[$4]"
383 [AC_ARG_ENABLE(sim-bitsize,
384 [AS_HELP_STRING([--enable-sim-bitsize=N], [Specify target bitsize (32 or 64)])],
386 case "${enableval}" in
387 64,63 | 64,63,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63";;
388 32,31 | 32,31,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31";;
389 64,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
390 32,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
391 32) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
392 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31"
394 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0"
396 64) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
397 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63"
399 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=0"
401 *) AC_MSG_ERROR("--enable-sim-bitsize was given $enableval. Expected 32 or 64") ;;
404 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9]]*,*//"`
407 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=32" ;;
408 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=64" ;;
409 * ) AC_MSG_ERROR("--enable-sim-bitsize was given address size $enableval. Expected 32 or 64") ;;
412 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9*]]*,*[[0-9]]*,*//"`
415 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=32" ;;
416 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=64" ;;
417 * ) AC_MSG_ERROR("--enable-sim-bitsize was given cell size $enableval. Expected 32 or 64") ;;
419 if test x"$silent" != x"yes" && test x"$sim_bitsize" != x""; then
420 echo "Setting bitsize flags = $sim_bitsize" 6>&1
423 if test x"$wire_word_bitsize" != x; then
424 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_BITSIZE=$wire_word_bitsize"
426 if test x"$wire_word_msb" != x; then
427 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_MSB=$wire_word_msb"
429 if test x"$wire_address_bitsize" != x; then
430 sim_bitsize="$sim_bitsize -DWITH_TARGET_ADDRESS_BITSIZE=$wire_address_bitsize"
432 if test x"$wire_cell_bitsize" != x; then
433 sim_bitsize="$sim_bitsize -DWITH_TARGET_CELL_BITSIZE=$wire_cell_bitsize"
436 AC_SUBST(sim_bitsize)
440 dnl --enable-sim-endian={yes,no,big,little} is for simulators
441 dnl that support both big and little endian targets.
442 dnl arg[1] is hardwired target endianness.
443 dnl arg[2] is default target endianness.
444 AC_DEFUN([SIM_AC_OPTION_ENDIAN],
447 default_endian="[$2]"
448 AC_ARG_ENABLE(sim-endian,
449 [AS_HELP_STRING([--enable-sim-endian=endian],
450 [Specify target byte endian orientation])],
451 [case "${enableval}" in
452 b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BIG_ENDIAN";;
453 l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=LITTLE_ENDIAN";;
454 yes) if test x"$wire_endian" != x; then
455 sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
457 if test x"$default_endian" != x; then
458 sim_endian="-DWITH_TARGET_BYTE_ORDER=${default_endian}"
460 echo "No hard-wired endian for target $target" 1>&6
461 sim_endian="-DWITH_TARGET_BYTE_ORDER=0"
464 no) if test x"$default_endian" != x; then
465 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
467 if test x"$wire_endian" != x; then
468 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${wire_endian}"
470 echo "No default endian for target $target" 1>&6
471 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=0"
474 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-endian"); sim_endian="";;
476 if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
477 echo "Setting endian flags = $sim_endian" 6>&1
479 [if test x"$default_endian" != x; then
480 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
482 if test x"$wire_endian" != x; then
483 sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
492 dnl --enable-sim-hostendian is for users of the simulator when
493 dnl they find that AC_C_BIGENDIAN does not function correctly
494 dnl (for instance in a canadian cross)
495 AC_DEFUN([SIM_AC_OPTION_HOSTENDIAN],
497 AC_ARG_ENABLE(sim-hostendian,
498 [AS_HELP_STRING([--enable-sim-hostendian=end],
499 [Specify host byte endian orientation])],
500 [case "${enableval}" in
501 no) sim_hostendian="-DWITH_HOST_BYTE_ORDER=0";;
502 b*|B*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN";;
503 l*|L*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN";;
504 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-hostendian"); sim_hostendian="";;
506 if test x"$silent" != x"yes" && test x"$sim_hostendian" != x""; then
507 echo "Setting hostendian flags = $sim_hostendian" 6>&1
509 if test "x$cross_compiling" = "xno"; then
511 if test $ac_cv_c_bigendian = yes; then
512 sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN"
514 sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN"
517 sim_hostendian="-DWITH_HOST_BYTE_ORDER=0"
520 AC_SUBST(sim_hostendian)
523 dnl --enable-sim-float is for developers of the simulator
524 dnl It specifies the presence of hardware floating point
525 dnl And optionally the bitsize of the floating point register.
526 dnl arg[1] specifies the presence (or absence) of floating point hardware
527 dnl arg[2] specifies the number of bits in a floating point register
528 AC_DEFUN([SIM_AC_OPTION_FLOAT],
530 default_sim_float="[$1]"
531 default_sim_float_bitsize="[$2]"
532 AC_ARG_ENABLE(sim-float,
533 [AS_HELP_STRING([--enable-sim-float],
534 [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 [AS_HELP_STRING([--enable-sim-scache=size],
563 [Specify simulator execution cache size])],
564 [case "${enableval}" in
565 yes) sim_scache="-DWITH_SCACHE=${default_sim_scache}";;
566 no) sim_scache="-DWITH_SCACHE=0" ;;
567 [[0-9]]*) sim_scache="-DWITH_SCACHE=${enableval}";;
568 *) AC_MSG_ERROR("Bad value $enableval passed to --enable-sim-scache");
571 if test x"$silent" != x"yes" && test x"$sim_scache" != x""; then
572 echo "Setting scache size = $sim_scache" 6>&1
573 fi],[sim_scache="-DWITH_SCACHE=${default_sim_scache}"])
578 dnl The argument is the default model if none is specified.
579 AC_DEFUN([SIM_AC_OPTION_DEFAULT_MODEL],
581 default_sim_default_model="ifelse([$1],,0,[$1])"
582 AC_ARG_ENABLE(sim-default-model,
583 [AS_HELP_STRING([--enable-sim-default-model=model],
584 [Specify default model to simulate])],
585 [case "${enableval}" in
586 yes|no) AC_MSG_ERROR("Missing argument to --enable-sim-default-model");;
587 *) sim_default_model="-DWITH_DEFAULT_MODEL='\"${enableval}\"'";;
589 if test x"$silent" != x"yes" && test x"$sim_default_model" != x""; then
590 echo "Setting default model = $sim_default_model" 6>&1
591 fi],[sim_default_model="-DWITH_DEFAULT_MODEL='\"${default_sim_default_model}\"'"])
593 AC_SUBST(sim_default_model)
596 dnl --enable-sim-hardware is for users of the simulator
597 dnl arg[1] Enable sim-hw by default? ("yes" or "no")
598 dnl arg[2] is a space separated list of devices that override the defaults
599 dnl arg[3] is a space separated list of extra target specific devices.
600 AC_DEFUN([SIM_AC_OPTION_HARDWARE],
605 hardware="cfi core pal glue"
607 hardware="$hardware [$3]"
609 sim_hw_cflags="-DWITH_HW=1"
611 sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([[^ ]][[^ ]]*\)/dv-\1.o/g'`"
613 AC_ARG_ENABLE(sim-hardware,
614 [AS_HELP_STRING([--enable-sim-hardware=LIST],
615 [Specify the hardware to be included in the build.])],
616 ,[enable_sim_hardware="[$1]"])
617 case ${enable_sim_hardware} in
619 ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
620 *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
621 *) hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
624 if test "$enable_sim_hardware" = no; then
626 sim_hw_cflags="-DWITH_HW=0"
629 sim_hw_cflags="-DWITH_HW=1"
632 sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
633 for i in $hardware ; do
636 *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
639 # mingw does not support sockser
642 *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
643 # that you instatiate. Instead, other code will call into it directly.
644 # At some point, we should convert it over.
645 sim_hw_objs="$sim_hw_objs dv-sockser.o"
647 [HAVE_DV_SOCKSER], 1, [Define if dv-sockser is usable.])
650 if test x"$silent" != x"yes"; then
651 echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
653 dnl Some devices require extra libraries.
654 case " $hardware " in
655 *" cfi "*) AC_CHECK_LIB(m, log2);;
659 AC_SUBST(sim_hw_cflags)
660 AC_SUBST(sim_hw_objs)
664 dnl --enable-sim-inline is for users that wish to ramp up the simulator's
665 dnl performance by inlining functions.
666 dnl Guarantee that unconfigured simulators do not do any inlining
667 sim_inline="-DDEFAULT_INLINE=0"
668 AC_DEFUN([SIM_AC_OPTION_INLINE],
670 default_sim_inline="ifelse([$1],,,-DDEFAULT_INLINE=[$1])"
671 AC_ARG_ENABLE(sim-inline,
672 [AS_HELP_STRING([--enable-sim-inline=inlines],
673 [Specify which functions should be inlined])],
676 no) sim_inline="-DDEFAULT_INLINE=0";;
677 0) sim_inline="-DDEFAULT_INLINE=0";;
678 yes | 2) sim_inline="-DDEFAULT_INLINE=ALL_C_INLINE";;
679 1) sim_inline="-DDEFAULT_INLINE=INLINE_LOCALS";;
680 *) for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
683 *_INLINE=*) new_flag="-D$x";;
684 *=*) new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
685 *_INLINE) new_flag="-D$x=ALL_C_INLINE";;
686 *) new_flag="-D$x""_INLINE=ALL_C_INLINE";;
688 if test x"$sim_inline" = x""; then
689 sim_inline="$new_flag"
691 sim_inline="$sim_inline $new_flag"
695 if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
696 echo "Setting inline flags = $sim_inline" 6>&1
698 if test "x$cross_compiling" = "xno"; then
699 if test x"$GCC" != "x" -a x"${default_sim_inline}" != "x" ; then
700 sim_inline="${default_sim_inline}"
701 if test x"$silent" != x"yes"; then
702 echo "Setting inline flags = $sim_inline" 6>&1
708 sim_inline="-DDEFAULT_INLINE=0"
714 AC_DEFUN([SIM_AC_OPTION_PACKAGES],
716 AC_ARG_ENABLE(sim-packages,
717 [AS_HELP_STRING([--enable-sim-packages=list],
718 [Specify the packages to be included in the build])],
720 case "${enableval}" in
722 no) AC_MSG_ERROR("List of packages must be specified for --enable-sim-packages"); packages="";;
723 ,*) packages="${packages}${enableval}";;
724 *,) packages="${enableval}${packages}";;
725 *) packages="${enableval}"'';;
727 sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
728 sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
729 if test x"$silent" != x"yes" && test x"$packages" != x""; then
730 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
731 fi],[packages=disklabel
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"; then
735 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
738 AC_SUBST(sim_packages)
741 AC_DEFUN([SIM_AC_OPTION_REGPARM],
743 AC_ARG_ENABLE(sim-regparm,
744 [AS_HELP_STRING([--enable-sim-regparm=nr-parm],
745 [Pass parameters in registers instead of on the stack - x86/GCC specific])],
746 [case "${enableval}" in
747 0*|1*|2*|3*|4*|5*|6*|7*|8*|9*) sim_regparm="-DWITH_REGPARM=${enableval}";;
748 no) sim_regparm="" ;;
749 yes) sim_regparm="-DWITH_REGPARM=3";;
750 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-regparm"); sim_regparm="";;
752 if test x"$silent" != x"yes" && test x"$sim_regparm" != x""; then
753 echo "Setting regparm flags = $sim_regparm" 6>&1
754 fi],[sim_regparm=""])dnl
756 AC_SUBST(sim_regparm)
759 AC_DEFUN([SIM_AC_OPTION_RESERVED_BITS],
761 default_sim_reserved_bits="ifelse([$1],,1,[$1])"
762 AC_ARG_ENABLE(sim-reserved-bits,
763 [AS_HELP_STRING([--enable-sim-reserved-bits],
764 [Specify whether to check reserved bits in instruction])],
765 [case "${enableval}" in
766 yes) sim_reserved_bits="-DWITH_RESERVED_BITS=1";;
767 no) sim_reserved_bits="-DWITH_RESERVED_BITS=0";;
768 *) AC_MSG_ERROR("--enable-sim-reserved-bits does not take a value"); sim_reserved_bits="";;
770 if test x"$silent" != x"yes" && test x"$sim_reserved_bits" != x""; then
771 echo "Setting reserved flags = $sim_reserved_bits" 6>&1
772 fi],[sim_reserved_bits="-DWITH_RESERVED_BITS=${default_sim_reserved_bits}"])dnl
774 AC_SUBST(sim_reserved_bits)
777 AC_DEFUN([SIM_AC_OPTION_SMP],
779 default_sim_smp="ifelse([$1],,5,[$1])"
780 AC_ARG_ENABLE(sim-smp,
781 [AS_HELP_STRING([--enable-sim-smp=n],
782 [Specify number of processors to configure for (default ${default_sim_smp})])],
783 [case "${enableval}" in
784 yes) sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5";;
785 no) sim_smp="-DWITH_SMP=0" ; sim_igen_smp="-N 0";;
786 *) sim_smp="-DWITH_SMP=$enableval" ; sim_igen_smp="-N $enableval";;
788 if test x"$silent" != x"yes" && test x"$sim_smp" != x""; then
789 echo "Setting smp flags = $sim_smp" 6>&1
790 fi],[sim_smp="-DWITH_SMP=${default_sim_smp}" ; sim_igen_smp="-N ${default_sim_smp}"
791 if test x"$silent" != x"yes"; then
792 echo "Setting smp flags = $sim_smp" 6>&1
798 AC_DEFUN([SIM_AC_OPTION_STDCALL],
800 AC_ARG_ENABLE(sim-stdcall,
801 [AS_HELP_STRING([--enable-sim-stdcall=type],
802 [Use an alternative function call/return mechanism - x86/GCC specific])],
803 [case "${enableval}" in
804 no) sim_stdcall="" ;;
805 std*) sim_stdcall="-DWITH_STDCALL=1";;
806 yes) sim_stdcall="-DWITH_STDCALL=1";;
807 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-stdcall"); sim_stdcall="";;
809 if test x"$silent" != x"yes" && test x"$sim_stdcall" != x""; then
810 echo "Setting function call flags = $sim_stdcall" 6>&1
811 fi],[sim_stdcall=""])dnl
813 AC_SUBST(sim_stdcall)
816 AC_DEFUN([SIM_AC_OPTION_XOR_ENDIAN],
818 default_sim_xor_endian="ifelse([$1],,8,[$1])"
819 AC_ARG_ENABLE(sim-xor-endian,
820 [AS_HELP_STRING([--enable-sim-xor-endian=n],
821 [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 build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \
860 -Wno-unused -Wunused-value -Wunused-function \
861 -Wno-switch -Wno-char-subscripts -Wmissing-prototypes
862 -Wdeclaration-after-statement -Wempty-body -Wmissing-parameter-type \
863 -Wold-style-declaration -Wold-style-definition"
865 # Enable -Wno-format by default when using gcc on mingw since many
866 # GCC versions complain about %I64.
868 *-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;;
869 *) build_warnings="$build_warnings -Wformat-nonliteral" ;;
872 AC_ARG_ENABLE(build-warnings,
873 AS_HELP_STRING([--enable-build-warnings], [enable build-time compiler warnings if gcc is used]),
874 [case "${enableval}" in
876 no) build_warnings="-w";;
877 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
878 build_warnings="${build_warnings} ${t}";;
879 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
880 build_warnings="${t} ${build_warnings}";;
881 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
883 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
884 echo "Setting compiler warning flags = $build_warnings" 6>&1
886 AC_ARG_ENABLE(sim-build-warnings,
887 AS_HELP_STRING([--enable-sim-build-warnings], [enable SIM specific build-time compiler warnings if gcc is used]),
888 [case "${enableval}" in
890 no) build_warnings="-w";;
891 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
892 build_warnings="${build_warnings} ${t}";;
893 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
894 build_warnings="${t} ${build_warnings}";;
895 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
897 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
898 echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
901 if test "x${build_warnings}" != x -a "x$GCC" = xyes
903 AC_MSG_CHECKING(compiler warning flags)
904 # Separate out the -Werror flag as some files just cannot be
905 # compiled with it enabled.
906 for w in ${build_warnings}; do
908 -Werr*) WERROR_CFLAGS=-Werror ;;
909 *) # Check that GCC accepts it
910 saved_CFLAGS="$CFLAGS"
912 AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
913 CFLAGS="$saved_CFLAGS"
916 AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
919 AC_SUBST(WARN_CFLAGS)
920 AC_SUBST(WERROR_CFLAGS)
923 dnl Generate the Makefile in a target specific directory.
924 dnl Substitutions aren't performed on the file in AC_SUBST_FILE,
925 dnl so this is a cover macro to tuck the details away of how we cope.
926 dnl We cope by having autoconf generate two files and then merge them into
927 dnl one afterwards. The two pieces of the common fragment are inserted into
928 dnl the target's fragment at the appropriate points.
930 AC_DEFUN([SIM_AC_OUTPUT],
932 AC_LINK_FILES($sim_link_files, $sim_link_links)
933 dnl Make @cgen_breaks@ non-null only if the sim uses CGEN.
935 if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
936 cgen_breaks="break cgen_rtx_error";
938 AC_SUBST(cgen_breaks)
939 AC_CONFIG_FILES(Makefile.sim:Makefile.in)
940 AC_CONFIG_FILES(Make-common.sim:../common/Make-common.in)
941 AC_CONFIG_FILES(.gdbinit:../common/gdbinit.in)
942 AC_CONFIG_COMMANDS([Makefile],
943 [echo "Merging Makefile.sim+Make-common.sim into Makefile ..."
944 rm -f Makesim1.tmp Makesim2.tmp Makefile
945 sed -n -e '/^## COMMON_PRE_/,/^## End COMMON_PRE_/ p' <Make-common.sim >Makesim1.tmp
946 sed -n -e '/^## COMMON_POST_/,/^## End COMMON_POST_/ p' <Make-common.sim >Makesim2.tmp
947 sed -e '/^## COMMON_PRE_/ r Makesim1.tmp' \
948 -e '/^## COMMON_POST_/ r Makesim2.tmp' \
949 <Makefile.sim >Makefile
950 rm -f Makefile.sim Make-common.sim Makesim1.tmp Makesim2.tmp
952 AC_CONFIG_COMMANDS([stamp-h], [echo > stamp-h])
956 sinclude(../../config/gettext-sister.m4)
957 sinclude(../../config/acx.m4)
959 dnl --enable-cgen-maint support
960 AC_DEFUN([SIM_AC_OPTION_CGEN_MAINT],
963 dnl Default is to use one in build tree.
965 cgendir='$(srcdir)/../../cgen'
966 dnl Having --enable-maintainer-mode take arguments is another way to go.
967 dnl ??? One can argue --with is more appropriate if one wants to specify
968 dnl a directory name, but what we're doing here is an enable/disable kind
969 dnl of thing and specifying both --enable and --with is klunky.
970 dnl If you reeely want this to be --with, go ahead and change it.
971 AC_ARG_ENABLE(cgen-maint,
972 [AS_HELP_STRING([--enable-cgen-maint[=DIR]], [build cgen generated files])],
973 [case "${enableval}" in
974 yes) cgen_maint=yes ;;
977 # argument is cgen install directory (not implemented yet).
978 # Having a `share' directory might be more appropriate for the .scm,
980 cgendir=${cgen_maint}/lib/cgen
984 dnl AM_CONDITIONAL(CGEN_MAINT, test x${cgen_maint} != xno)
985 if test x${cgen_maint} != xno ; then