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/times.h sys/resource.h sys/mman.h)
88 AC_CHECK_HEADERS(fcntl.h fpu_control.h)
89 AC_CHECK_HEADERS(dlfcn.h errno.h sys/stat.h)
90 AC_CHECK_FUNCS(getrusage time sigaction __setfpucw)
91 AC_CHECK_FUNCS(mmap munmap lstat truncate ftruncate posix_fallocate)
92 AC_CHECK_MEMBERS([[struct stat.st_dev], [struct stat.st_ino],
93 [struct stat.st_mode], [struct stat.st_nlink], [struct stat.st_uid],
94 [struct stat.st_gid], [struct stat.st_rdev], [struct stat.st_size],
95 [struct stat.st_blksize], [struct stat.st_blocks], [struct stat.st_atime],
96 [struct stat.st_mtime], [struct stat.st_ctime]], [], [],
97 [[#ifdef HAVE_SYS_TYPES_H
98 #include <sys/types.h>
100 #ifdef HAVE_SYS_STAT_H
101 #include <sys/stat.h>
103 AC_CHECK_TYPES(socklen_t, [], [],
104 [#include <sys/types.h>
105 #include <sys/socket.h>
108 # Check for socket libraries
109 AC_CHECK_LIB(socket, bind)
110 AC_CHECK_LIB(nsl, gethostbyname)
112 # BFD conditionally uses zlib, so we must link it in if libbfd does, by
113 # using the same condition.
116 # BFD uses libdl when when plugins enabled.
118 AM_CONDITIONAL(PLUGINS, test "$plugins" = yes)
120 AC_SUBST(lt_cv_dlopen_libs)
122 . ${srcdir}/../../bfd/configure.host
124 dnl Standard (and optional) simulator options.
125 dnl Eventually all simulators will support these.
126 dnl Do not add any here that cannot be supported by all simulators.
127 dnl Do not add similar but different options to a particular simulator,
128 dnl all shall eventually behave the same way.
131 dnl We don't use automake, but we still want to support
132 dnl --enable-maintainer-mode.
136 dnl --enable-sim-debug is for developers of the simulator
137 dnl the allowable values are work-in-progress
138 AC_ARG_ENABLE(sim-debug,
139 [AS_HELP_STRING([--enable-sim-debug=opts],
140 [Enable debugging flags (for developers of the sim itself)])],
141 [case "${enableval}" in
142 yes) sim_debug="-DDEBUG=7 -DWITH_DEBUG=7";;
143 no) sim_debug="-DDEBUG=0 -DWITH_DEBUG=0";;
144 *) sim_debug="-DDEBUG='(${enableval})' -DWITH_DEBUG='(${enableval})'";;
146 if test x"$silent" != x"yes" && test x"$sim_debug" != x""; then
147 echo "Setting sim debug = $sim_debug" 6>&1
148 fi],[sim_debug=""])dnl
152 dnl --enable-sim-stdio is for users of the simulator
153 dnl It determines if IO from the program is routed through STDIO (buffered)
154 AC_ARG_ENABLE(sim-stdio,
155 [AS_HELP_STRING([--enable-sim-stdio],
156 [Specify whether to use stdio for console input/output])],
157 [case "${enableval}" in
158 yes) sim_stdio="-DWITH_STDIO=DO_USE_STDIO";;
159 no) sim_stdio="-DWITH_STDIO=DONT_USE_STDIO";;
160 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-stdio"); sim_stdio="";;
162 if test x"$silent" != x"yes" && test x"$sim_stdio" != x""; then
163 echo "Setting stdio flags = $sim_stdio" 6>&1
164 fi],[sim_stdio=""])dnl
168 dnl --enable-sim-trace is for users of the simulator
169 dnl The argument is either a bitmask of things to enable [exactly what is
170 dnl up to the simulator], or is a comma separated list of names of tracing
171 dnl elements to enable. The latter is only supported on simulators that
173 AC_ARG_ENABLE(sim-trace,
174 [AS_HELP_STRING([--enable-sim-trace=opts],
175 [Enable tracing of simulated programs])],
176 [case "${enableval}" in
177 yes) sim_trace="-DWITH_TRACE=-1";;
178 no) sim_trace="-DWITH_TRACE=0";;
180 sim_trace="-DWITH_TRACE='(${enableval})'";;
183 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
184 if test x"$sim_trace" = x; then
185 sim_trace="-DWITH_TRACE='(TRACE_$x"
187 sim_trace="${sim_trace}|TRACE_$x"
190 sim_trace="$sim_trace)'" ;;
192 if test x"$silent" != x"yes" && test x"$sim_trace" != x""; then
193 echo "Setting sim trace = $sim_trace" 6>&1
194 fi],[sim_trace=""])dnl
198 dnl --enable-sim-profile
199 dnl The argument is either a bitmask of things to enable [exactly what is
200 dnl up to the simulator], or is a comma separated list of names of profiling
201 dnl elements to enable. The latter is only supported on simulators that
202 dnl use WITH_PROFILE.
203 AC_ARG_ENABLE(sim-profile,
204 [AS_HELP_STRING([--enable-sim-profile=opts], [Enable profiling flags])],
205 [case "${enableval}" in
206 yes) sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1";;
207 no) sim_profile="-DPROFILE=0 -DWITH_PROFILE=0";;
209 sim_profile="-DPROFILE='(${enableval})' -DWITH_PROFILE='(${enableval})'";;
212 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
213 if test x"$sim_profile" = x; then
214 sim_profile="-DWITH_PROFILE='(PROFILE_$x"
216 sim_profile="${sim_profile}|PROFILE_$x"
219 sim_profile="$sim_profile)'" ;;
221 if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
222 echo "Setting sim profile = $sim_profile" 6>&1
223 fi],[sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"])dnl
224 AC_SUBST(sim_profile)
228 ACX_PKGVERSION([SIM])
229 ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
230 AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
231 AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
233 dnl Types used by common code
236 dnl Detect exe extension
239 dnl These are available to append to as desired.
243 # targ-vals.def points to the libc macro description file.
245 *-*-*) TARG_VALS_DEF=../common/nltvals.def ;;
247 sim_link_files="${sim_link_files} ${TARG_VALS_DEF}"
248 sim_link_links="${sim_link_links} targ-vals.def"
250 ]) dnl End of SIM_AC_COMMON
253 dnl Additional SIM options that can (optionally) be configured
254 dnl For optional simulator options, a macro SIM_AC_OPTION_* is defined.
255 dnl Simulators that wish to use the relevant option specify the macro
256 dnl in the simulator specific configure.ac file between the SIM_AC_COMMON
257 dnl and SIM_AC_OUTPUT lines.
260 dnl Specify the running environment.
261 dnl If the simulator invokes this in its configure.ac then without this option
262 dnl the default is the user environment and all are runtime selectable.
263 dnl If the simulator doesn't invoke this, only the user environment is
265 dnl ??? Until there is demonstrable value in doing something more complicated,
267 AC_DEFUN([SIM_AC_OPTION_ENVIRONMENT],
269 AC_ARG_ENABLE(sim-environment,
270 [AS_HELP_STRING([--enable-sim-environment=environment],
271 [Specify mixed, user, virtual or operating environment])],
272 [case "${enableval}" in
273 all | ALL) sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT";;
274 user | USER) sim_environment="-DWITH_ENVIRONMENT=USER_ENVIRONMENT";;
275 virtual | VIRTUAL) sim_environment="-DWITH_ENVIRONMENT=VIRTUAL_ENVIRONMENT";;
276 operating | OPERATING) sim_environment="-DWITH_ENVIRONMENT=OPERATING_ENVIRONMENT";;
277 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-environment");
280 if test x"$silent" != x"yes" && test x"$sim_environment" != x""; then
281 echo "Setting sim environment = $sim_environment" 6>&1
283 [sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT"])dnl
285 AC_SUBST(sim_environment)
288 dnl Specify the alignment restrictions of the target architecture.
289 dnl Without this option all possible alignment restrictions are accommodated.
290 dnl arg[1] is hardwired target alignment
291 dnl arg[2] is default target alignment
292 AC_DEFUN([SIM_AC_OPTION_ALIGNMENT],
293 wire_alignment="[$1]"
294 default_alignment="[$2]"
296 AC_ARG_ENABLE(sim-alignment,
297 [AS_HELP_STRING([--enable-sim-alignment=align],
298 [Specify strict, nonstrict or forced alignment of memory accesses])],
299 [case "${enableval}" in
300 strict | STRICT) sim_alignment="-DWITH_ALIGNMENT=STRICT_ALIGNMENT";;
301 nonstrict | NONSTRICT) sim_alignment="-DWITH_ALIGNMENT=NONSTRICT_ALIGNMENT";;
302 forced | FORCED) sim_alignment="-DWITH_ALIGNMENT=FORCED_ALIGNMENT";;
303 yes) if test x"$wire_alignment" != x; then
304 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
306 if test x"$default_alignment" != x; then
307 sim_alignment="-DWITH_ALIGNMENT=${default_alignment}"
309 echo "No hard-wired alignment for target $target" 1>&6
310 sim_alignment="-DWITH_ALIGNMENT=0"
313 no) if test x"$default_alignment" != x; then
314 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
316 if test x"$wire_alignment" != x; then
317 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${wire_alignment}"
319 echo "No default alignment for target $target" 1>&6
320 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=0"
323 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-alignment"); sim_alignment="";;
325 if test x"$silent" != x"yes" && test x"$sim_alignment" != x""; then
326 echo "Setting alignment flags = $sim_alignment" 6>&1
328 [if test x"$default_alignment" != x; then
329 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
331 if test x"$wire_alignment" != x; then
332 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
338 AC_SUBST(sim_alignment)
341 dnl Conditionally compile in assertion statements.
342 AC_DEFUN([SIM_AC_OPTION_ASSERT],
344 AC_ARG_ENABLE(sim-assert,
345 [AS_HELP_STRING([--enable-sim-assert],
346 [Specify whether to perform random assertions])],
347 [case "${enableval}" in
348 yes) sim_assert="-DWITH_ASSERT=1";;
349 no) sim_assert="-DWITH_ASSERT=0";;
350 *) AC_MSG_ERROR("--enable-sim-assert does not take a value"); sim_assert="";;
352 if test x"$silent" != x"yes" && test x"$sim_assert" != x""; then
353 echo "Setting assert flags = $sim_assert" 6>&1
354 fi],[sim_assert=""])dnl
360 dnl --enable-sim-bitsize is for developers of the simulator
361 dnl It specifies the number of BITS in the target.
362 dnl arg[1] is the number of bits in a word
363 dnl arg[2] is the number assigned to the most significant bit
364 dnl arg[3] is the number of bits in an address
365 dnl arg[4] is the number of bits in an OpenFirmware cell.
366 dnl FIXME: this information should be obtained from bfd/archure
367 AC_DEFUN([SIM_AC_OPTION_BITSIZE],
368 wire_word_bitsize="[$1]"
370 wire_address_bitsize="[$3]"
371 wire_cell_bitsize="[$4]"
372 [AC_ARG_ENABLE(sim-bitsize,
373 [AS_HELP_STRING([--enable-sim-bitsize=N], [Specify target bitsize (32 or 64)])],
375 case "${enableval}" in
376 64,63 | 64,63,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63";;
377 32,31 | 32,31,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31";;
378 64,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
379 32,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
380 32) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
381 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31"
383 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0"
385 64) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
386 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63"
388 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=0"
390 *) AC_MSG_ERROR("--enable-sim-bitsize was given $enableval. Expected 32 or 64") ;;
393 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9]]*,*//"`
396 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=32" ;;
397 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=64" ;;
398 * ) AC_MSG_ERROR("--enable-sim-bitsize was given address size $enableval. Expected 32 or 64") ;;
401 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9*]]*,*[[0-9]]*,*//"`
404 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=32" ;;
405 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=64" ;;
406 * ) AC_MSG_ERROR("--enable-sim-bitsize was given cell size $enableval. Expected 32 or 64") ;;
408 if test x"$silent" != x"yes" && test x"$sim_bitsize" != x""; then
409 echo "Setting bitsize flags = $sim_bitsize" 6>&1
412 if test x"$wire_word_bitsize" != x; then
413 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_BITSIZE=$wire_word_bitsize"
415 if test x"$wire_word_msb" != x; then
416 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_MSB=$wire_word_msb"
418 if test x"$wire_address_bitsize" != x; then
419 sim_bitsize="$sim_bitsize -DWITH_TARGET_ADDRESS_BITSIZE=$wire_address_bitsize"
421 if test x"$wire_cell_bitsize" != x; then
422 sim_bitsize="$sim_bitsize -DWITH_TARGET_CELL_BITSIZE=$wire_cell_bitsize"
425 AC_SUBST(sim_bitsize)
429 dnl --enable-sim-endian={yes,no,big,little} is for simulators
430 dnl that support both big and little endian targets.
431 dnl arg[1] is hardwired target endianness.
432 dnl arg[2] is default target endianness.
433 AC_DEFUN([SIM_AC_OPTION_ENDIAN],
436 default_endian="[$2]"
437 AC_ARG_ENABLE(sim-endian,
438 [AS_HELP_STRING([--enable-sim-endian=endian],
439 [Specify target byte endian orientation])],
440 [case "${enableval}" in
441 b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_BIG";;
442 l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_LITTLE";;
443 yes) if test x"$wire_endian" != x; then
444 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
446 if test x"$default_endian" != x; then
447 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
449 echo "No hard-wired endian for target $target" 1>&6
450 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_UNKNOWN"
453 no) if test x"$default_endian" != x; then
454 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
456 if test x"$wire_endian" != x; then
457 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
459 echo "No default endian for target $target" 1>&6
460 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_UNKNOWN"
463 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-endian"); sim_endian="";;
465 if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
466 echo "Setting endian flags = $sim_endian" 6>&1
468 [if test x"$default_endian" != x; then
469 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
471 if test x"$wire_endian" != x; then
472 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
481 dnl --enable-sim-float is for developers of the simulator
482 dnl It specifies the presence of hardware floating point
483 dnl And optionally the bitsize of the floating point register.
484 dnl arg[1] specifies the presence (or absence) of floating point hardware
485 dnl arg[2] specifies the number of bits in a floating point register
486 AC_DEFUN([SIM_AC_OPTION_FLOAT],
488 default_sim_float="[$1]"
489 default_sim_float_bitsize="[$2]"
490 AC_ARG_ENABLE(sim-float,
491 [AS_HELP_STRING([--enable-sim-float],
492 [Specify that the target processor has floating point hardware])],
493 [case "${enableval}" in
494 yes | hard) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT";;
495 no | soft) sim_float="-DWITH_FLOATING_POINT=SOFT_FLOATING_POINT";;
496 32) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=32";;
497 64) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=64";;
498 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-float"); sim_float="";;
500 if test x"$silent" != x"yes" && test x"$sim_float" != x""; then
501 echo "Setting float flags = $sim_float" 6>&1
504 if test x"${default_sim_float}" != x""; then
505 sim_float="-DWITH_FLOATING_POINT=${default_sim_float}"
507 if test x"${default_sim_float_bitsize}" != x""; then
508 sim_float="$sim_float -DWITH_TARGET_FLOATING_POINT_BITSIZE=${default_sim_float_bitsize}"
515 dnl The argument is the default cache size if none is specified.
516 AC_DEFUN([SIM_AC_OPTION_SCACHE],
518 default_sim_scache="ifelse([$1],,0,[$1])"
519 AC_ARG_ENABLE(sim-scache,
520 [AS_HELP_STRING([--enable-sim-scache=size],
521 [Specify simulator execution cache size])],
522 [case "${enableval}" in
523 yes) sim_scache="-DWITH_SCACHE=${default_sim_scache}";;
524 no) sim_scache="-DWITH_SCACHE=0" ;;
525 [[0-9]]*) sim_scache="-DWITH_SCACHE=${enableval}";;
526 *) AC_MSG_ERROR("Bad value $enableval passed to --enable-sim-scache");
529 if test x"$silent" != x"yes" && test x"$sim_scache" != x""; then
530 echo "Setting scache size = $sim_scache" 6>&1
531 fi],[sim_scache="-DWITH_SCACHE=${default_sim_scache}"])
536 dnl The argument is the default model if none is specified.
537 AC_DEFUN([SIM_AC_OPTION_DEFAULT_MODEL],
539 default_sim_default_model="ifelse([$1],,0,[$1])"
540 AC_ARG_ENABLE(sim-default-model,
541 [AS_HELP_STRING([--enable-sim-default-model=model],
542 [Specify default model to simulate])],
543 [case "${enableval}" in
544 yes|no) AC_MSG_ERROR("Missing argument to --enable-sim-default-model");;
545 *) sim_default_model="-DWITH_DEFAULT_MODEL='\"${enableval}\"'";;
547 if test x"$silent" != x"yes" && test x"$sim_default_model" != x""; then
548 echo "Setting default model = $sim_default_model" 6>&1
549 fi],[sim_default_model="-DWITH_DEFAULT_MODEL='\"${default_sim_default_model}\"'"])
551 AC_SUBST(sim_default_model)
554 dnl --enable-sim-hardware is for users of the simulator
555 dnl arg[1] Enable sim-hw by default? ("yes" or "no")
556 dnl arg[2] is a space separated list of devices that override the defaults
557 dnl arg[3] is a space separated list of extra target specific devices.
558 AC_DEFUN([SIM_AC_OPTION_HARDWARE],
563 hardware="cfi core pal glue"
565 hardware="$hardware [$3]"
567 sim_hw_cflags="-DWITH_HW=1"
569 sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([[^ ]][[^ ]]*\)/dv-\1.o/g'`"
571 AC_ARG_ENABLE(sim-hardware,
572 [AS_HELP_STRING([--enable-sim-hardware=LIST],
573 [Specify the hardware to be included in the build.])],
574 ,[enable_sim_hardware="[$1]"])
575 case ${enable_sim_hardware} in
577 ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
578 *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
579 *) hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
582 if test "$enable_sim_hardware" = no; then
584 sim_hw_cflags="-DWITH_HW=0"
587 sim_hw_cflags="-DWITH_HW=1"
590 sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
591 for i in $hardware ; do
594 *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
597 # mingw does not support sockser
600 *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
601 # that you instatiate. Instead, other code will call into it directly.
602 # At some point, we should convert it over.
603 sim_hw_objs="$sim_hw_objs dv-sockser.o"
605 [HAVE_DV_SOCKSER], 1, [Define if dv-sockser is usable.])
608 if test x"$silent" != x"yes"; then
609 echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
611 dnl Some devices require extra libraries.
612 case " $hardware " in
613 *" cfi "*) AC_CHECK_LIB(m, log2);;
617 AC_SUBST(sim_hw_cflags)
618 AC_SUBST(sim_hw_objs)
622 dnl --enable-sim-inline is for users that wish to ramp up the simulator's
623 dnl performance by inlining functions.
624 dnl Default sims to no inlining.
625 AC_DEFUN([SIM_AC_OPTION_INLINE],
627 sim_inline="-DDEFAULT_INLINE=m4_ifblank([$1],[0],[$1])"
628 AC_ARG_ENABLE(sim-inline,
629 [AS_HELP_STRING([--enable-sim-inline=inlines],
630 [Specify which functions should be inlined])],
633 no) sim_inline="-DDEFAULT_INLINE=0";;
634 0) sim_inline="-DDEFAULT_INLINE=0";;
635 yes | 2) sim_inline="-DDEFAULT_INLINE=ALL_C_INLINE";;
636 1) sim_inline="-DDEFAULT_INLINE=INLINE_LOCALS";;
637 *) for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
640 *_INLINE=*) new_flag="-D$x";;
641 *=*) new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
642 *_INLINE) new_flag="-D$x=ALL_C_INLINE";;
643 *) new_flag="-D$x""_INLINE=ALL_C_INLINE";;
645 if test x"$sim_inline" = x""; then
646 sim_inline="$new_flag"
648 sim_inline="$sim_inline $new_flag"
652 if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
653 echo "Setting inline flags = $sim_inline" 6>&1
659 AC_DEFUN([SIM_AC_OPTION_PACKAGES],
661 AC_ARG_ENABLE(sim-packages,
662 [AS_HELP_STRING([--enable-sim-packages=list],
663 [Specify the packages to be included in the build])],
665 case "${enableval}" in
667 no) AC_MSG_ERROR("List of packages must be specified for --enable-sim-packages"); packages="";;
668 ,*) packages="${packages}${enableval}";;
669 *,) packages="${enableval}${packages}";;
670 *) packages="${enableval}"'';;
672 sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
673 sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
674 if test x"$silent" != x"yes" && test x"$packages" != x""; then
675 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
676 fi],[packages=disklabel
677 sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
678 sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
679 if test x"$silent" != x"yes"; then
680 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
683 AC_SUBST(sim_packages)
686 AC_DEFUN([SIM_AC_OPTION_RESERVED_BITS],
688 default_sim_reserved_bits="ifelse([$1],,1,[$1])"
689 AC_ARG_ENABLE(sim-reserved-bits,
690 [AS_HELP_STRING([--enable-sim-reserved-bits],
691 [Specify whether to check reserved bits in instruction])],
692 [case "${enableval}" in
693 yes) sim_reserved_bits="-DWITH_RESERVED_BITS=1";;
694 no) sim_reserved_bits="-DWITH_RESERVED_BITS=0";;
695 *) AC_MSG_ERROR("--enable-sim-reserved-bits does not take a value"); sim_reserved_bits="";;
697 if test x"$silent" != x"yes" && test x"$sim_reserved_bits" != x""; then
698 echo "Setting reserved flags = $sim_reserved_bits" 6>&1
699 fi],[sim_reserved_bits="-DWITH_RESERVED_BITS=${default_sim_reserved_bits}"])dnl
701 AC_SUBST(sim_reserved_bits)
704 AC_DEFUN([SIM_AC_OPTION_SMP],
706 default_sim_smp="ifelse([$1],,5,[$1])"
707 AC_ARG_ENABLE(sim-smp,
708 [AS_HELP_STRING([--enable-sim-smp=n],
709 [Specify number of processors to configure for (default ${default_sim_smp})])],
710 [case "${enableval}" in
711 yes) sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5";;
712 no) sim_smp="-DWITH_SMP=0" ; sim_igen_smp="-N 0";;
713 *) sim_smp="-DWITH_SMP=$enableval" ; sim_igen_smp="-N $enableval";;
715 if test x"$silent" != x"yes" && test x"$sim_smp" != x""; then
716 echo "Setting smp flags = $sim_smp" 6>&1
717 fi],[sim_smp="-DWITH_SMP=${default_sim_smp}" ; sim_igen_smp="-N ${default_sim_smp}"
718 if test x"$silent" != x"yes"; then
719 echo "Setting smp flags = $sim_smp" 6>&1
725 AC_DEFUN([SIM_AC_OPTION_XOR_ENDIAN],
727 default_sim_xor_endian="ifelse([$1],,8,[$1])"
728 AC_ARG_ENABLE(sim-xor-endian,
729 [AS_HELP_STRING([--enable-sim-xor-endian=n],
730 [Specify number bytes involved in XOR bi-endian mode (default ${default_sim_xor_endian})])],
731 [case "${enableval}" in
732 yes) sim_xor_endian="-DWITH_XOR_ENDIAN=8";;
733 no) sim_xor_endian="-DWITH_XOR_ENDIAN=0";;
734 *) sim_xor_endian="-DWITH_XOR_ENDIAN=$enableval";;
736 if test x"$silent" != x"yes" && test x"$sim_xor_endian" != x""; then
737 echo "Setting xor-endian flag = $sim_xor_endian" 6>&1
738 fi],[sim_xor_endian="-DWITH_XOR_ENDIAN=${default_sim_xor_endian}"])dnl
740 AC_SUBST(sim_xor_endian)
743 dnl --enable-build-warnings is for developers of the simulator.
744 dnl it enables extra GCC specific warnings.
745 AC_DEFUN([SIM_AC_OPTION_WARNINGS],
747 AC_ARG_ENABLE(werror,
748 AS_HELP_STRING([--enable-werror], [treat compile warnings as errors]),
749 [case "${enableval}" in
750 yes | y) ERROR_ON_WARNING="yes" ;;
751 no | n) ERROR_ON_WARNING="no" ;;
752 *) AC_MSG_ERROR(bad value ${enableval} for --enable-werror) ;;
755 # Enable -Werror by default when using gcc
756 if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
761 if test "${ERROR_ON_WARNING}" = yes ; then
762 # NOTE: Disabled in the sim dir due to most sims generating warnings.
763 # WERROR_CFLAGS="-Werror"
767 build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \
769 -Wno-unused -Wunused-value -Wunused-function \
770 -Wno-switch -Wno-char-subscripts -Wmissing-prototypes
771 -Wdeclaration-after-statement -Wempty-body -Wmissing-parameter-type \
772 -Wold-style-declaration -Wold-style-definition"
774 # Enable -Wno-format by default when using gcc on mingw since many
775 # GCC versions complain about %I64.
777 *-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;;
778 *) build_warnings="$build_warnings -Wformat-nonliteral" ;;
781 AC_ARG_ENABLE(build-warnings,
782 AS_HELP_STRING([--enable-build-warnings], [enable build-time compiler warnings if gcc is used]),
783 [case "${enableval}" in
785 no) build_warnings="-w";;
786 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
787 build_warnings="${build_warnings} ${t}";;
788 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
789 build_warnings="${t} ${build_warnings}";;
790 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
792 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
793 echo "Setting compiler warning flags = $build_warnings" 6>&1
795 AC_ARG_ENABLE(sim-build-warnings,
796 AS_HELP_STRING([--enable-sim-build-warnings], [enable SIM specific build-time compiler warnings if gcc is used]),
797 [case "${enableval}" in
799 no) build_warnings="-w";;
800 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
801 build_warnings="${build_warnings} ${t}";;
802 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
803 build_warnings="${t} ${build_warnings}";;
804 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
806 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
807 echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
810 if test "x${build_warnings}" != x -a "x$GCC" = xyes
812 AC_MSG_CHECKING(compiler warning flags)
813 # Separate out the -Werror flag as some files just cannot be
814 # compiled with it enabled.
815 for w in ${build_warnings}; do
817 -Werr*) WERROR_CFLAGS=-Werror ;;
818 *) # Check that GCC accepts it
819 saved_CFLAGS="$CFLAGS"
821 AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
822 CFLAGS="$saved_CFLAGS"
825 AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
828 AC_SUBST(WARN_CFLAGS)
829 AC_SUBST(WERROR_CFLAGS)
832 dnl Generate the Makefile in a target specific directory.
833 dnl Substitutions aren't performed on the file in AC_SUBST_FILE,
834 dnl so this is a cover macro to tuck the details away of how we cope.
835 dnl We cope by having autoconf generate two files and then merge them into
836 dnl one afterwards. The two pieces of the common fragment are inserted into
837 dnl the target's fragment at the appropriate points.
839 AC_DEFUN([SIM_AC_OUTPUT],
841 AC_LINK_FILES($sim_link_files, $sim_link_links)
842 dnl Make @cgen_breaks@ non-null only if the sim uses CGEN.
844 if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
845 cgen_breaks="break cgen_rtx_error";
847 AC_SUBST(cgen_breaks)
848 AC_CONFIG_FILES(Makefile.sim:Makefile.in)
849 AC_CONFIG_FILES(Make-common.sim:../common/Make-common.in)
850 AC_CONFIG_FILES(.gdbinit:../common/gdbinit.in)
851 AC_CONFIG_COMMANDS([Makefile],
852 [echo "Merging Makefile.sim+Make-common.sim into Makefile ..."
853 rm -f Makesim1.tmp Makesim2.tmp Makefile
854 sed -n -e '/^## COMMON_PRE_/,/^## End COMMON_PRE_/ p' <Make-common.sim >Makesim1.tmp
855 sed -n -e '/^## COMMON_POST_/,/^## End COMMON_POST_/ p' <Make-common.sim >Makesim2.tmp
856 sed -e '/^## COMMON_PRE_/ r Makesim1.tmp' \
857 -e '/^## COMMON_POST_/ r Makesim2.tmp' \
858 <Makefile.sim >Makefile
859 rm -f Makefile.sim Make-common.sim Makesim1.tmp Makesim2.tmp
861 AC_CONFIG_COMMANDS([stamp-h], [echo > stamp-h])
865 sinclude(../../config/gettext-sister.m4)
866 sinclude(../../config/acx.m4)
868 dnl --enable-cgen-maint support
869 AC_DEFUN([SIM_AC_OPTION_CGEN_MAINT],
872 dnl Default is to use one in build tree.
874 cgendir='$(srcdir)/../../cgen'
875 dnl Having --enable-maintainer-mode take arguments is another way to go.
876 dnl ??? One can argue --with is more appropriate if one wants to specify
877 dnl a directory name, but what we're doing here is an enable/disable kind
878 dnl of thing and specifying both --enable and --with is klunky.
879 dnl If you reeely want this to be --with, go ahead and change it.
880 AC_ARG_ENABLE(cgen-maint,
881 [AS_HELP_STRING([--enable-cgen-maint[=DIR]], [build cgen generated files])],
882 [case "${enableval}" in
883 yes) cgen_maint=yes ;;
886 # argument is cgen install directory (not implemented yet).
887 # Having a `share' directory might be more appropriate for the .scm,
889 cgendir=${cgen_maint}/lib/cgen
893 dnl AM_CONDITIONAL(CGEN_MAINT, test x${cgen_maint} != xno)
894 if test x${cgen_maint} != xno ; then