1 # This file contains common code used by all simulators.
3 # SIM_AC_COMMON invokes AC macros used by all simulators and by the common
4 # directory. It is intended to be invoked before any target specific stuff.
5 # SIM_AC_OUTPUT is a cover function to AC_OUTPUT to generate the Makefile.
6 # It is intended to be invoked last.
8 # The simulator's configure.in should look like:
10 # dnl Process this file with autoconf to produce a configure script.
12 # AC_INIT(Makefile.in)
13 # sinclude(../common/aclocal.m4)
17 # ... target specific stuff ...
21 # Include global overrides and fixes for Autoconf.
22 m4_include(../../config/override.m4)
23 sinclude([../../config/zlib.m4])
24 sinclude([../../config/depstand.m4])
26 AC_DEFUN([SIM_AC_COMMON],
28 AC_REQUIRE([AC_PROG_CC])
29 # autoconf.info says this should be called right after AC_INIT.
30 AC_CONFIG_HEADER(ifelse([$1],,config.h,[$1]):config.in)
32 AC_USE_SYSTEM_EXTENSIONS
36 # Put a plausible default for CC_FOR_BUILD in Makefile.
37 if test "x$cross_compiling" = "xno"; then
42 AC_SUBST(CC_FOR_BUILD)
50 # Dependency checking.
52 ZW_PROG_COMPILER_DEPENDENCIES([CC])
54 # Check for the 'make' the user wants to use.
55 AC_CHECK_PROGS(MAKE, make)
57 case "`$MAKE --version 2>&1 | sed 1q`" in
62 AM_CONDITIONAL(GMAKE, test "$MAKE_IS_GNU" = yes)
64 dnl We don't use gettext, but bfd does. So we do the appropriate checks
65 dnl to see if there are intl libraries we should link against.
67 ZW_GNU_GETTEXT_SISTER_DIR(../../intl)
69 # Check for common headers.
70 # FIXME: Seems to me this can cause problems for i386-windows hosts.
71 # At one point there were hardcoded AC_DEFINE's if ${host} = i386-*-windows*.
72 AC_CHECK_HEADERS(stdlib.h string.h strings.h unistd.h time.h)
73 AC_CHECK_HEADERS(sys/time.h sys/resource.h)
74 AC_CHECK_HEADERS(fcntl.h fpu_control.h)
75 AC_CHECK_HEADERS(dlfcn.h errno.h sys/stat.h)
76 AC_CHECK_FUNCS(getrusage time sigaction __setfpucw)
78 # Check for socket libraries
79 AC_CHECK_LIB(socket, bind)
80 AC_CHECK_LIB(nsl, gethostbyname)
82 # BFD conditionally uses zlib, so we must link it in if libbfd does, by
83 # using the same condition.
86 . ${srcdir}/../../bfd/configure.host
88 dnl Standard (and optional) simulator options.
89 dnl Eventually all simulators will support these.
90 dnl Do not add any here that cannot be supported by all simulators.
91 dnl Do not add similar but different options to a particular simulator,
92 dnl all shall eventually behave the same way.
95 dnl We don't use automake, but we still want to support
96 dnl --enable-maintainer-mode.
97 USE_MAINTAINER_MODE=no
98 AC_ARG_ENABLE(maintainer-mode,
99 [ --enable-maintainer-mode Enable developer functionality.],
100 [case "${enableval}" in
101 yes) MAINT="" USE_MAINTAINER_MODE=yes ;;
103 *) AC_MSG_ERROR("--enable-maintainer-mode does not take a value"); MAINT="#" ;;
105 if test x"$silent" != x"yes" && test x"$MAINT" = x""; then
106 echo "Setting maintainer mode" 6>&1
111 dnl This is a generic option to enable special byte swapping
112 dnl insns on *any* cpu.
113 AC_ARG_ENABLE(sim-bswap,
114 [ --enable-sim-bswap Use Host specific BSWAP instruction.],
115 [case "${enableval}" in
116 yes) sim_bswap="-DWITH_BSWAP=1 -DUSE_BSWAP=1";;
117 no) sim_bswap="-DWITH_BSWAP=0";;
118 *) AC_MSG_ERROR("--enable-sim-bswap does not take a value"); sim_bswap="";;
120 if test x"$silent" != x"yes" && test x"$sim_bswap" != x""; then
121 echo "Setting bswap flags = $sim_bswap" 6>&1
122 fi],[sim_bswap=""])dnl
126 AC_ARG_ENABLE(sim-cflags,
127 [ --enable-sim-cflags=opts Extra CFLAGS for use in building simulator],
128 [case "${enableval}" in
129 yes) sim_cflags="-O2 -fomit-frame-pointer";;
130 trace) AC_MSG_ERROR("Please use --enable-sim-debug instead."); sim_cflags="";;
132 *) sim_cflags=`echo "${enableval}" | sed -e "s/,/ /g"`;;
134 if test x"$silent" != x"yes" && test x"$sim_cflags" != x""; then
135 echo "Setting sim cflags = $sim_cflags" 6>&1
136 fi],[sim_cflags=""])dnl
140 dnl --enable-sim-debug is for developers of the simulator
141 dnl the allowable values are work-in-progress
142 AC_ARG_ENABLE(sim-debug,
143 [ --enable-sim-debug=opts Enable debugging flags],
144 [case "${enableval}" in
145 yes) sim_debug="-DDEBUG=7 -DWITH_DEBUG=7";;
146 no) sim_debug="-DDEBUG=0 -DWITH_DEBUG=0";;
147 *) sim_debug="-DDEBUG='(${enableval})' -DWITH_DEBUG='(${enableval})'";;
149 if test x"$silent" != x"yes" && test x"$sim_debug" != x""; then
150 echo "Setting sim debug = $sim_debug" 6>&1
151 fi],[sim_debug=""])dnl
155 dnl --enable-sim-stdio is for users of the simulator
156 dnl It determines if IO from the program is routed through STDIO (buffered)
157 AC_ARG_ENABLE(sim-stdio,
158 [ --enable-sim-stdio Specify whether to use stdio for console input/output.],
159 [case "${enableval}" in
160 yes) sim_stdio="-DWITH_STDIO=DO_USE_STDIO";;
161 no) sim_stdio="-DWITH_STDIO=DONT_USE_STDIO";;
162 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-stdio"); sim_stdio="";;
164 if test x"$silent" != x"yes" && test x"$sim_stdio" != x""; then
165 echo "Setting stdio flags = $sim_stdio" 6>&1
166 fi],[sim_stdio=""])dnl
170 dnl --enable-sim-trace is for users of the simulator
171 dnl The argument is either a bitmask of things to enable [exactly what is
172 dnl up to the simulator], or is a comma separated list of names of tracing
173 dnl elements to enable. The latter is only supported on simulators that
175 AC_ARG_ENABLE(sim-trace,
176 [ --enable-sim-trace=opts Enable tracing flags],
177 [case "${enableval}" in
178 yes) sim_trace="-DTRACE=1 -DWITH_TRACE=-1";;
179 no) sim_trace="-DTRACE=0 -DWITH_TRACE=0";;
181 sim_trace="-DTRACE='(${enableval})' -DWITH_TRACE='(${enableval})'";;
184 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
185 if test x"$sim_trace" = x; then
186 sim_trace="-DWITH_TRACE='(TRACE_$x"
188 sim_trace="${sim_trace}|TRACE_$x"
191 sim_trace="$sim_trace)'" ;;
193 if test x"$silent" != x"yes" && test x"$sim_trace" != x""; then
194 echo "Setting sim trace = $sim_trace" 6>&1
195 fi],[sim_trace=""])dnl
199 dnl --enable-sim-profile
200 dnl The argument is either a bitmask of things to enable [exactly what is
201 dnl up to the simulator], or is a comma separated list of names of profiling
202 dnl elements to enable. The latter is only supported on simulators that
203 dnl use WITH_PROFILE.
204 AC_ARG_ENABLE(sim-profile,
205 [ --enable-sim-profile=opts Enable profiling flags],
206 [case "${enableval}" in
207 yes) sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1";;
208 no) sim_profile="-DPROFILE=0 -DWITH_PROFILE=0";;
210 sim_profile="-DPROFILE='(${enableval})' -DWITH_PROFILE='(${enableval})'";;
213 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
214 if test x"$sim_profile" = x; then
215 sim_profile="-DWITH_PROFILE='(PROFILE_$x"
217 sim_profile="${sim_profile}|PROFILE_$x"
220 sim_profile="$sim_profile)'" ;;
222 if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
223 echo "Setting sim profile = $sim_profile" 6>&1
224 fi],[sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"])dnl
225 AC_SUBST(sim_profile)
227 ACX_PKGVERSION([GDB])
228 ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
229 AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
230 AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
232 dnl Types used by common code
235 dnl Detect exe extension
238 dnl These are available to append to as desired.
242 dnl Create tconfig.h either from simulator's tconfig.in or default one
244 sim_link_links=tconfig.h
245 if test -f ${srcdir}/tconfig.in
247 sim_link_files=tconfig.in
249 sim_link_files=../common/tconfig.in
252 # targ-vals.def points to the libc macro description file.
254 *-*-*) TARG_VALS_DEF=../common/nltvals.def ;;
256 sim_link_files="${sim_link_files} ${TARG_VALS_DEF}"
257 sim_link_links="${sim_link_links} targ-vals.def"
259 ]) dnl End of SIM_AC_COMMON
262 dnl Additional SIM options that can (optionally) be configured
263 dnl For optional simulator options, a macro SIM_AC_OPTION_* is defined.
264 dnl Simulators that wish to use the relevant option specify the macro
265 dnl in the simulator specific configure.in file between the SIM_AC_COMMON
266 dnl and SIM_AC_OUTPUT lines.
269 dnl Specify the running environment.
270 dnl If the simulator invokes this in its configure.in then without this option
271 dnl the default is the user environment and all are runtime selectable.
272 dnl If the simulator doesn't invoke this, only the user environment is
274 dnl ??? Until there is demonstrable value in doing something more complicated,
276 AC_DEFUN([SIM_AC_OPTION_ENVIRONMENT],
278 AC_ARG_ENABLE(sim-environment,
279 [ --enable-sim-environment=environment Specify mixed, user, virtual or operating environment.],
280 [case "${enableval}" in
281 all | ALL) sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT";;
282 user | USER) sim_environment="-DWITH_ENVIRONMENT=USER_ENVIRONMENT";;
283 virtual | VIRTUAL) sim_environment="-DWITH_ENVIRONMENT=VIRTUAL_ENVIRONMENT";;
284 operating | OPERATING) sim_environment="-DWITH_ENVIRONMENT=OPERATING_ENVIRONMENT";;
285 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-environment");
288 if test x"$silent" != x"yes" && test x"$sim_environment" != x""; then
289 echo "Setting sim environment = $sim_environment" 6>&1
291 [sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT"])dnl
293 AC_SUBST(sim_environment)
296 dnl Specify the alignment restrictions of the target architecture.
297 dnl Without this option all possible alignment restrictions are accommodated.
298 dnl arg[1] is hardwired target alignment
299 dnl arg[2] is default target alignment
300 AC_DEFUN([SIM_AC_OPTION_ALIGNMENT],
301 wire_alignment="[$1]"
302 default_alignment="[$2]"
304 AC_ARG_ENABLE(sim-alignment,
305 [ --enable-sim-alignment=align Specify strict, nonstrict or forced alignment of memory accesses.],
306 [case "${enableval}" in
307 strict | STRICT) sim_alignment="-DWITH_ALIGNMENT=STRICT_ALIGNMENT";;
308 nonstrict | NONSTRICT) sim_alignment="-DWITH_ALIGNMENT=NONSTRICT_ALIGNMENT";;
309 forced | FORCED) sim_alignment="-DWITH_ALIGNMENT=FORCED_ALIGNMENT";;
310 yes) if test x"$wire_alignment" != x; then
311 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
313 if test x"$default_alignment" != x; then
314 sim_alignment="-DWITH_ALIGNMENT=${default_alignment}"
316 echo "No hard-wired alignment for target $target" 1>&6
317 sim_alignment="-DWITH_ALIGNMENT=0"
320 no) if test x"$default_alignment" != x; then
321 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
323 if test x"$wire_alignment" != x; then
324 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${wire_alignment}"
326 echo "No default alignment for target $target" 1>&6
327 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=0"
330 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-alignment"); sim_alignment="";;
332 if test x"$silent" != x"yes" && test x"$sim_alignment" != x""; then
333 echo "Setting alignment flags = $sim_alignment" 6>&1
335 [if test x"$default_alignment" != x; then
336 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
338 if test x"$wire_alignment" != x; then
339 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
345 AC_SUBST(sim_alignment)
348 dnl Conditionally compile in assertion statements.
349 AC_DEFUN([SIM_AC_OPTION_ASSERT],
351 AC_ARG_ENABLE(sim-assert,
352 [ --enable-sim-assert Specify whether to perform random assertions.],
353 [case "${enableval}" in
354 yes) sim_assert="-DWITH_ASSERT=1";;
355 no) sim_assert="-DWITH_ASSERT=0";;
356 *) AC_MSG_ERROR("--enable-sim-assert does not take a value"); sim_assert="";;
358 if test x"$silent" != x"yes" && test x"$sim_assert" != x""; then
359 echo "Setting assert flags = $sim_assert" 6>&1
360 fi],[sim_assert=""])dnl
366 dnl --enable-sim-bitsize is for developers of the simulator
367 dnl It specifies the number of BITS in the target.
368 dnl arg[1] is the number of bits in a word
369 dnl arg[2] is the number assigned to the most significant bit
370 dnl arg[3] is the number of bits in an address
371 dnl arg[4] is the number of bits in an OpenFirmware cell.
372 dnl FIXME: this information should be obtained from bfd/archure
373 AC_DEFUN([SIM_AC_OPTION_BITSIZE],
374 wire_word_bitsize="[$1]"
376 wire_address_bitsize="[$3]"
377 wire_cell_bitsize="[$4]"
378 [AC_ARG_ENABLE(sim-bitsize,
379 [ --enable-sim-bitsize=N Specify target bitsize (32 or 64).],
381 case "${enableval}" in
382 64,63 | 64,63,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63";;
383 32,31 | 32,31,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31";;
384 64,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
385 32,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
386 32) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
387 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31"
389 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0"
391 64) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
392 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63"
394 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=0"
396 *) AC_MSG_ERROR("--enable-sim-bitsize was given $enableval. Expected 32 or 64") ;;
399 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9]]*,*//"`
402 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=32" ;;
403 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=64" ;;
404 * ) AC_MSG_ERROR("--enable-sim-bitsize was given address size $enableval. Expected 32 or 64") ;;
407 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9*]]*,*[[0-9]]*,*//"`
410 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=32" ;;
411 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=64" ;;
412 * ) AC_MSG_ERROR("--enable-sim-bitsize was given cell size $enableval. Expected 32 or 64") ;;
414 if test x"$silent" != x"yes" && test x"$sim_bitsize" != x""; then
415 echo "Setting bitsize flags = $sim_bitsize" 6>&1
418 if test x"$wire_word_bitsize" != x; then
419 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_BITSIZE=$wire_word_bitsize"
421 if test x"$wire_word_msb" != x; then
422 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_MSB=$wire_word_msb"
424 if test x"$wire_address_bitsize" != x; then
425 sim_bitsize="$sim_bitsize -DWITH_TARGET_ADDRESS_BITSIZE=$wire_address_bitsize"
427 if test x"$wire_cell_bitsize" != x; then
428 sim_bitsize="$sim_bitsize -DWITH_TARGET_CELL_BITSIZE=$wire_cell_bitsize"
431 AC_SUBST(sim_bitsize)
435 dnl --enable-sim-endian={yes,no,big,little} is for simulators
436 dnl that support both big and little endian targets.
437 dnl arg[1] is hardwired target endianness.
438 dnl arg[2] is default target endianness.
439 AC_DEFUN([SIM_AC_OPTION_ENDIAN],
442 default_endian="[$2]"
443 AC_ARG_ENABLE(sim-endian,
444 [ --enable-sim-endian=endian Specify target byte endian orientation.],
445 [case "${enableval}" in
446 b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BIG_ENDIAN";;
447 l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=LITTLE_ENDIAN";;
448 yes) if test x"$wire_endian" != x; then
449 sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
451 if test x"$default_endian" != x; then
452 sim_endian="-DWITH_TARGET_BYTE_ORDER=${default_endian}"
454 echo "No hard-wired endian for target $target" 1>&6
455 sim_endian="-DWITH_TARGET_BYTE_ORDER=0"
458 no) if test x"$default_endian" != x; then
459 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
461 if test x"$wire_endian" != x; then
462 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${wire_endian}"
464 echo "No default endian for target $target" 1>&6
465 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=0"
468 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-endian"); sim_endian="";;
470 if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
471 echo "Setting endian flags = $sim_endian" 6>&1
473 [if test x"$default_endian" != x; then
474 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
476 if test x"$wire_endian" != x; then
477 sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
486 dnl --enable-sim-hostendian is for users of the simulator when
487 dnl they find that AC_C_BIGENDIAN does not function correctly
488 dnl (for instance in a canadian cross)
489 AC_DEFUN([SIM_AC_OPTION_HOSTENDIAN],
491 AC_ARG_ENABLE(sim-hostendian,
492 [ --enable-sim-hostendian=end Specify host byte endian orientation.],
493 [case "${enableval}" in
494 no) sim_hostendian="-DWITH_HOST_BYTE_ORDER=0";;
495 b*|B*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN";;
496 l*|L*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN";;
497 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-hostendian"); sim_hostendian="";;
499 if test x"$silent" != x"yes" && test x"$sim_hostendian" != x""; then
500 echo "Setting hostendian flags = $sim_hostendian" 6>&1
502 if test "x$cross_compiling" = "xno"; then
504 if test $ac_cv_c_bigendian = yes; then
505 sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN"
507 sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN"
510 sim_hostendian="-DWITH_HOST_BYTE_ORDER=0"
513 AC_SUBST(sim_hostendian)
516 dnl --enable-sim-float is for developers of the simulator
517 dnl It specifies the presence of hardware floating point
518 dnl And optionally the bitsize of the floating point register.
519 dnl arg[1] specifies the presence (or absence) of floating point hardware
520 dnl arg[2] specifies the number of bits in a floating point register
521 AC_DEFUN([SIM_AC_OPTION_FLOAT],
523 default_sim_float="[$1]"
524 default_sim_float_bitsize="[$2]"
525 AC_ARG_ENABLE(sim-float,
526 [ --enable-sim-float Specify that the target processor has floating point hardware.],
527 [case "${enableval}" in
528 yes | hard) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT";;
529 no | soft) sim_float="-DWITH_FLOATING_POINT=SOFT_FLOATING_POINT";;
530 32) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=32";;
531 64) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=64";;
532 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-float"); sim_float="";;
534 if test x"$silent" != x"yes" && test x"$sim_float" != x""; then
535 echo "Setting float flags = $sim_float" 6>&1
538 if test x"${default_sim_float}" != x""; then
539 sim_float="-DWITH_FLOATING_POINT=${default_sim_float}"
541 if test x"${default_sim_float_bitsize}" != x""; then
542 sim_float="$sim_float -DWITH_TARGET_FLOATING_POINT_BITSIZE=${default_sim_float_bitsize}"
549 dnl The argument is the default cache size if none is specified.
550 AC_DEFUN([SIM_AC_OPTION_SCACHE],
552 default_sim_scache="ifelse([$1],,0,[$1])"
553 AC_ARG_ENABLE(sim-scache,
554 [ --enable-sim-scache=size Specify simulator execution cache size.],
555 [case "${enableval}" in
556 yes) sim_scache="-DWITH_SCACHE=${default_sim_scache}";;
557 no) sim_scache="-DWITH_SCACHE=0" ;;
558 [[0-9]]*) sim_scache="-DWITH_SCACHE=${enableval}";;
559 *) AC_MSG_ERROR("Bad value $enableval passed to --enable-sim-scache");
562 if test x"$silent" != x"yes" && test x"$sim_scache" != x""; then
563 echo "Setting scache size = $sim_scache" 6>&1
564 fi],[sim_scache="-DWITH_SCACHE=${default_sim_scache}"])
569 dnl The argument is the default model if none is specified.
570 AC_DEFUN([SIM_AC_OPTION_DEFAULT_MODEL],
572 default_sim_default_model="ifelse([$1],,0,[$1])"
573 AC_ARG_ENABLE(sim-default-model,
574 [ --enable-sim-default-model=model Specify default model to simulate.],
575 [case "${enableval}" in
576 yes|no) AC_MSG_ERROR("Missing argument to --enable-sim-default-model");;
577 *) sim_default_model="-DWITH_DEFAULT_MODEL='\"${enableval}\"'";;
579 if test x"$silent" != x"yes" && test x"$sim_default_model" != x""; then
580 echo "Setting default model = $sim_default_model" 6>&1
581 fi],[sim_default_model="-DWITH_DEFAULT_MODEL='\"${default_sim_default_model}\"'"])
583 AC_SUBST(sim_default_model)
586 dnl --enable-sim-hardware is for users of the simulator
587 dnl arg[1] Enable sim-hw by default? ("yes" or "no")
588 dnl arg[2] is a space separated list of devices that override the defaults
589 dnl arg[3] is a space separated list of extra target specific devices.
590 AC_DEFUN([SIM_AC_OPTION_HARDWARE],
592 if test x"[$1]" = x"yes"; then
600 hardware="cfi core pal glue"
602 hardware="$hardware [$3]"
603 sim_hw_cflags="-DWITH_HW=1"
605 sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([[^ ]][[^ ]]*\)/dv-\1.o/g'`"
606 AC_ARG_ENABLE(sim-hardware,
607 [ --enable-sim-hardware=LIST Specify the hardware to be included in the build.],
609 case "${enableval}" in
612 ,*) sim_hw_p=yes; hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
613 *,) sim_hw_p=yes; hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
614 *) sim_hw_p=yes; hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
616 if test "$sim_hw_p" != yes; then
618 sim_hw_cflags="-DWITH_HW=0"
621 sim_hw_cflags="-DWITH_HW=1"
624 sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
625 for i in $hardware ; do
628 *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
632 if test x"$silent" != x"yes" && test "$sim_hw_p" = "yes"; then
633 echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
635 if test "$sim_hw_p" != yes; then
637 sim_hw_cflags="-DWITH_HW=0"
640 if test x"$silent" != x"yes"; then
641 echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
643 dnl Some devices require extra libraries.
644 case " $hardware " in
645 *" cfi "*) AC_CHECK_LIB(m, log2);;
648 AC_SUBST(sim_hw_cflags)
649 AC_SUBST(sim_hw_objs)
653 dnl --enable-sim-inline is for users that wish to ramp up the simulator's
654 dnl performance by inlining functions.
655 dnl Guarantee that unconfigured simulators do not do any inlining
656 sim_inline="-DDEFAULT_INLINE=0"
657 AC_DEFUN([SIM_AC_OPTION_INLINE],
659 default_sim_inline="ifelse([$1],,,-DDEFAULT_INLINE=[$1])"
660 AC_ARG_ENABLE(sim-inline,
661 [ --enable-sim-inline=inlines Specify which functions should be inlined.],
664 no) sim_inline="-DDEFAULT_INLINE=0";;
665 0) sim_inline="-DDEFAULT_INLINE=0";;
666 yes | 2) sim_inline="-DDEFAULT_INLINE=ALL_C_INLINE";;
667 1) sim_inline="-DDEFAULT_INLINE=INLINE_LOCALS";;
668 *) for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
671 *_INLINE=*) new_flag="-D$x";;
672 *=*) new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
673 *_INLINE) new_flag="-D$x=ALL_C_INLINE";;
674 *) new_flag="-D$x""_INLINE=ALL_C_INLINE";;
676 if test x"$sim_inline" = x""; then
677 sim_inline="$new_flag"
679 sim_inline="$sim_inline $new_flag"
683 if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
684 echo "Setting inline flags = $sim_inline" 6>&1
686 if test "x$cross_compiling" = "xno"; then
687 if test x"$GCC" != "x" -a x"${default_sim_inline}" != "x" ; then
688 sim_inline="${default_sim_inline}"
689 if test x"$silent" != x"yes"; then
690 echo "Setting inline flags = $sim_inline" 6>&1
696 sim_inline="-DDEFAULT_INLINE=0"
702 AC_DEFUN([SIM_AC_OPTION_PACKAGES],
704 AC_ARG_ENABLE(sim-packages,
705 [ --enable-sim-packages=list Specify the packages to be included in the build.],
707 case "${enableval}" in
709 no) AC_MSG_ERROR("List of packages must be specified for --enable-sim-packages"); packages="";;
710 ,*) packages="${packages}${enableval}";;
711 *,) packages="${enableval}${packages}";;
712 *) packages="${enableval}"'';;
714 sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
715 sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
716 if test x"$silent" != x"yes" && test x"$packages" != x""; then
717 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
718 fi],[packages=disklabel
719 sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
720 sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
721 if test x"$silent" != x"yes"; then
722 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
725 AC_SUBST(sim_packages)
728 AC_DEFUN([SIM_AC_OPTION_REGPARM],
730 AC_ARG_ENABLE(sim-regparm,
731 [ --enable-sim-regparm=nr-parm Pass parameters in registers instead of on the stack - x86/GCC specific.],
732 [case "${enableval}" in
733 0*|1*|2*|3*|4*|5*|6*|7*|8*|9*) sim_regparm="-DWITH_REGPARM=${enableval}";;
734 no) sim_regparm="" ;;
735 yes) sim_regparm="-DWITH_REGPARM=3";;
736 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-regparm"); sim_regparm="";;
738 if test x"$silent" != x"yes" && test x"$sim_regparm" != x""; then
739 echo "Setting regparm flags = $sim_regparm" 6>&1
740 fi],[sim_regparm=""])dnl
742 AC_SUBST(sim_regparm)
745 AC_DEFUN([SIM_AC_OPTION_RESERVED_BITS],
747 default_sim_reserved_bits="ifelse([$1],,1,[$1])"
748 AC_ARG_ENABLE(sim-reserved-bits,
749 [ --enable-sim-reserved-bits Specify whether to check reserved bits in instruction.],
750 [case "${enableval}" in
751 yes) sim_reserved_bits="-DWITH_RESERVED_BITS=1";;
752 no) sim_reserved_bits="-DWITH_RESERVED_BITS=0";;
753 *) AC_MSG_ERROR("--enable-sim-reserved-bits does not take a value"); sim_reserved_bits="";;
755 if test x"$silent" != x"yes" && test x"$sim_reserved_bits" != x""; then
756 echo "Setting reserved flags = $sim_reserved_bits" 6>&1
757 fi],[sim_reserved_bits="-DWITH_RESERVED_BITS=${default_sim_reserved_bits}"])dnl
759 AC_SUBST(sim_reserved_bits)
762 AC_DEFUN([SIM_AC_OPTION_SMP],
764 default_sim_smp="ifelse([$1],,5,[$1])"
765 AC_ARG_ENABLE(sim-smp,
766 [ --enable-sim-smp=n Specify number of processors to configure for (default ${default_sim_smp}).],
767 [case "${enableval}" in
768 yes) sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5";;
769 no) sim_smp="-DWITH_SMP=0" ; sim_igen_smp="-N 0";;
770 *) sim_smp="-DWITH_SMP=$enableval" ; sim_igen_smp="-N $enableval";;
772 if test x"$silent" != x"yes" && test x"$sim_smp" != x""; then
773 echo "Setting smp flags = $sim_smp" 6>&1
774 fi],[sim_smp="-DWITH_SMP=${default_sim_smp}" ; sim_igen_smp="-N ${default_sim_smp}"
775 if test x"$silent" != x"yes"; then
776 echo "Setting smp flags = $sim_smp" 6>&1
782 AC_DEFUN([SIM_AC_OPTION_STDCALL],
784 AC_ARG_ENABLE(sim-stdcall,
785 [ --enable-sim-stdcall=type Use an alternative function call/return mechanism - x86/GCC specific.],
786 [case "${enableval}" in
787 no) sim_stdcall="" ;;
788 std*) sim_stdcall="-DWITH_STDCALL=1";;
789 yes) sim_stdcall="-DWITH_STDCALL=1";;
790 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-stdcall"); sim_stdcall="";;
792 if test x"$silent" != x"yes" && test x"$sim_stdcall" != x""; then
793 echo "Setting function call flags = $sim_stdcall" 6>&1
794 fi],[sim_stdcall=""])dnl
796 AC_SUBST(sim_stdcall)
799 AC_DEFUN([SIM_AC_OPTION_XOR_ENDIAN],
801 default_sim_xor_endian="ifelse([$1],,8,[$1])"
802 AC_ARG_ENABLE(sim-xor-endian,
803 [ --enable-sim-xor-endian=n Specify number bytes involved in XOR bi-endian mode (default ${default_sim_xor_endian}).],
804 [case "${enableval}" in
805 yes) sim_xor_endian="-DWITH_XOR_ENDIAN=8";;
806 no) sim_xor_endian="-DWITH_XOR_ENDIAN=0";;
807 *) sim_xor_endian="-DWITH_XOR_ENDIAN=$enableval";;
809 if test x"$silent" != x"yes" && test x"$sim_xor_endian" != x""; then
810 echo "Setting xor-endian flag = $sim_xor_endian" 6>&1
811 fi],[sim_xor_endian="-DWITH_XOR_ENDIAN=${default_sim_xor_endian}"])dnl
813 AC_SUBST(sim_xor_endian)
816 dnl --enable-build-warnings is for developers of the simulator.
817 dnl it enables extra GCC specific warnings.
818 AC_DEFUN([SIM_AC_OPTION_WARNINGS],
820 AC_ARG_ENABLE(werror,
821 AS_HELP_STRING([--enable-werror], [treat compile warnings as errors]),
822 [case "${enableval}" in
823 yes | y) ERROR_ON_WARNING="yes" ;;
824 no | n) ERROR_ON_WARNING="no" ;;
825 *) AC_MSG_ERROR(bad value ${enableval} for --enable-werror) ;;
828 # Enable -Werror by default when using gcc
829 if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
834 if test "${ERROR_ON_WARNING}" = yes ; then
835 # NOTE: Disabled in the sim dir due to most sims generating warnings.
836 # WERROR_CFLAGS="-Werror"
840 # The entries after -Wno-pointer-sign are disabled warnings which may
841 # be enabled in the future, which can not currently be used to build
843 # NOTE: If you change this list, remember to update
844 # gdb/doc/gdbint.texinfo.
845 build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \
846 -Wformat-nonliteral -Wno-pointer-sign \
847 -Wno-unused -Wunused-value -Wunused-function \
848 -Wno-switch -Wno-char-subscripts -Wmissing-prototypes"
850 # Enable -Wno-format by default when using gcc on mingw since many
851 # GCC versions complain about %I64.
853 *-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;;
856 AC_ARG_ENABLE(build-warnings,
857 AS_HELP_STRING([--enable-build-warnings], [enable 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 compiler warning flags = $build_warnings" 6>&1
870 AC_ARG_ENABLE(sim-build-warnings,
871 AS_HELP_STRING([--enable-sim-build-warnings], [enable SIM specific build-time compiler warnings if gcc is used]),
872 [case "${enableval}" in
874 no) build_warnings="-w";;
875 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
876 build_warnings="${build_warnings} ${t}";;
877 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
878 build_warnings="${t} ${build_warnings}";;
879 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
881 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
882 echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
885 if test "x${build_warnings}" != x -a "x$GCC" = xyes
887 AC_MSG_CHECKING(compiler warning flags)
888 # Separate out the -Werror flag as some files just cannot be
889 # compiled with it enabled.
890 for w in ${build_warnings}; do
892 -Werr*) WERROR_CFLAGS=-Werror ;;
893 *) # Check that GCC accepts it
894 saved_CFLAGS="$CFLAGS"
896 AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
897 CFLAGS="$saved_CFLAGS"
900 AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
903 AC_SUBST(WARN_CFLAGS)
904 AC_SUBST(WERROR_CFLAGS)
907 dnl Generate the Makefile in a target specific directory.
908 dnl Substitutions aren't performed on the file in AC_SUBST_FILE,
909 dnl so this is a cover macro to tuck the details away of how we cope.
910 dnl We cope by having autoconf generate two files and then merge them into
911 dnl one afterwards. The two pieces of the common fragment are inserted into
912 dnl the target's fragment at the appropriate points.
914 AC_DEFUN([SIM_AC_OUTPUT],
916 AC_LINK_FILES($sim_link_files, $sim_link_links)
917 dnl Make @cgen_breaks@ non-null only if the sim uses CGEN.
919 if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
920 cgen_breaks="break cgen_rtx_error";
922 AC_SUBST(cgen_breaks)
923 AC_CONFIG_FILES(Makefile.sim:Makefile.in)
924 AC_CONFIG_FILES(Make-common.sim:../common/Make-common.in)
925 AC_CONFIG_FILES(.gdbinit:../common/gdbinit.in)
926 AC_CONFIG_COMMANDS([Makefile],
927 [echo "Merging Makefile.sim+Make-common.sim into Makefile ..."
928 rm -f Makesim1.tmp Makesim2.tmp Makefile
929 sed -n -e '/^## COMMON_PRE_/,/^## End COMMON_PRE_/ p' <Make-common.sim >Makesim1.tmp
930 sed -n -e '/^## COMMON_POST_/,/^## End COMMON_POST_/ p' <Make-common.sim >Makesim2.tmp
931 sed -e '/^## COMMON_PRE_/ r Makesim1.tmp' \
932 -e '/^## COMMON_POST_/ r Makesim2.tmp' \
933 <Makefile.sim >Makefile
934 rm -f Makefile.sim Make-common.sim Makesim1.tmp Makesim2.tmp
936 AC_CONFIG_COMMANDS([stamp-h], [echo > stamp-h])
940 sinclude(../../config/gettext-sister.m4)
941 sinclude(../../config/acx.m4)
943 dnl --enable-cgen-maint support
944 AC_DEFUN([SIM_AC_OPTION_CGEN_MAINT],
947 dnl Default is to use one in build tree.
949 cgendir='$(srcdir)/../../cgen'
950 dnl Having --enable-maintainer-mode take arguments is another way to go.
951 dnl ??? One can argue --with is more appropriate if one wants to specify
952 dnl a directory name, but what we're doing here is an enable/disable kind
953 dnl of thing and specifying both --enable and --with is klunky.
954 dnl If you reeely want this to be --with, go ahead and change it.
955 AC_ARG_ENABLE(cgen-maint,
956 [ --enable-cgen-maint[=DIR] build cgen generated files],
957 [case "${enableval}" in
958 yes) cgen_maint=yes ;;
961 # argument is cgen install directory (not implemented yet).
962 # Having a `share' directory might be more appropriate for the .scm,
964 cgendir=${cgen_maint}/lib/cgen
968 dnl AM_CONDITIONAL(CGEN_MAINT, test x${cgen_maint} != xno)
969 if test x${cgen_maint} != xno ; then