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])
25 AC_DEFUN([SIM_AC_COMMON],
27 AC_REQUIRE([AC_PROG_CC])
28 # autoconf.info says this should be called right after AC_INIT.
29 AC_CONFIG_HEADER(ifelse([$1],,config.h,[$1]):config.in)
34 # Put a plausible default for CC_FOR_BUILD in Makefile.
35 if test "x$cross_compiling" = "xno"; then
40 AC_SUBST(CC_FOR_BUILD)
48 dnl We don't use gettext, but bfd does. So we do the appropriate checks
49 dnl to see if there are intl libraries we should link against.
51 ZW_GNU_GETTEXT_SISTER_DIR(../../intl)
53 # Check for common headers.
54 # FIXME: Seems to me this can cause problems for i386-windows hosts.
55 # At one point there were hardcoded AC_DEFINE's if ${host} = i386-*-windows*.
56 AC_CHECK_HEADERS(stdlib.h string.h strings.h unistd.h time.h)
57 AC_CHECK_HEADERS(sys/time.h sys/resource.h)
58 AC_CHECK_HEADERS(fcntl.h fpu_control.h)
59 AC_CHECK_HEADERS(dlfcn.h errno.h sys/stat.h)
60 AC_CHECK_FUNCS(getrusage time sigaction __setfpucw)
62 # Check for socket libraries
63 AC_CHECK_LIB(socket, bind)
64 AC_CHECK_LIB(nsl, gethostbyname)
66 # BFD conditionally uses zlib, so we must link it in if libbfd does, by
67 # using the same condition.
70 . ${srcdir}/../../bfd/configure.host
72 dnl Standard (and optional) simulator options.
73 dnl Eventually all simulators will support these.
74 dnl Do not add any here that cannot be supported by all simulators.
75 dnl Do not add similar but different options to a particular simulator,
76 dnl all shall eventually behave the same way.
79 dnl We don't use automake, but we still want to support
80 dnl --enable-maintainer-mode.
81 USE_MAINTAINER_MODE=no
82 AC_ARG_ENABLE(maintainer-mode,
83 [ --enable-maintainer-mode Enable developer functionality.],
84 [case "${enableval}" in
85 yes) MAINT="" USE_MAINTAINER_MODE=yes ;;
87 *) AC_MSG_ERROR("--enable-maintainer-mode does not take a value"); MAINT="#" ;;
89 if test x"$silent" != x"yes" && test x"$MAINT" = x""; then
90 echo "Setting maintainer mode" 6>&1
95 dnl This is a generic option to enable special byte swapping
96 dnl insns on *any* cpu.
97 AC_ARG_ENABLE(sim-bswap,
98 [ --enable-sim-bswap Use Host specific BSWAP instruction.],
99 [case "${enableval}" in
100 yes) sim_bswap="-DWITH_BSWAP=1 -DUSE_BSWAP=1";;
101 no) sim_bswap="-DWITH_BSWAP=0";;
102 *) AC_MSG_ERROR("--enable-sim-bswap does not take a value"); sim_bswap="";;
104 if test x"$silent" != x"yes" && test x"$sim_bswap" != x""; then
105 echo "Setting bswap flags = $sim_bswap" 6>&1
106 fi],[sim_bswap=""])dnl
110 AC_ARG_ENABLE(sim-cflags,
111 [ --enable-sim-cflags=opts Extra CFLAGS for use in building simulator],
112 [case "${enableval}" in
113 yes) sim_cflags="-O2 -fomit-frame-pointer";;
114 trace) AC_MSG_ERROR("Please use --enable-sim-debug instead."); sim_cflags="";;
116 *) sim_cflags=`echo "${enableval}" | sed -e "s/,/ /g"`;;
118 if test x"$silent" != x"yes" && test x"$sim_cflags" != x""; then
119 echo "Setting sim cflags = $sim_cflags" 6>&1
120 fi],[sim_cflags=""])dnl
124 dnl --enable-sim-debug is for developers of the simulator
125 dnl the allowable values are work-in-progress
126 AC_ARG_ENABLE(sim-debug,
127 [ --enable-sim-debug=opts Enable debugging flags],
128 [case "${enableval}" in
129 yes) sim_debug="-DDEBUG=7 -DWITH_DEBUG=7";;
130 no) sim_debug="-DDEBUG=0 -DWITH_DEBUG=0";;
131 *) sim_debug="-DDEBUG='(${enableval})' -DWITH_DEBUG='(${enableval})'";;
133 if test x"$silent" != x"yes" && test x"$sim_debug" != x""; then
134 echo "Setting sim debug = $sim_debug" 6>&1
135 fi],[sim_debug=""])dnl
139 dnl --enable-sim-stdio is for users of the simulator
140 dnl It determines if IO from the program is routed through STDIO (buffered)
141 AC_ARG_ENABLE(sim-stdio,
142 [ --enable-sim-stdio Specify whether to use stdio for console input/output.],
143 [case "${enableval}" in
144 yes) sim_stdio="-DWITH_STDIO=DO_USE_STDIO";;
145 no) sim_stdio="-DWITH_STDIO=DONT_USE_STDIO";;
146 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-stdio"); sim_stdio="";;
148 if test x"$silent" != x"yes" && test x"$sim_stdio" != x""; then
149 echo "Setting stdio flags = $sim_stdio" 6>&1
150 fi],[sim_stdio=""])dnl
154 dnl --enable-sim-trace is for users of the simulator
155 dnl The argument is either a bitmask of things to enable [exactly what is
156 dnl up to the simulator], or is a comma separated list of names of tracing
157 dnl elements to enable. The latter is only supported on simulators that
159 AC_ARG_ENABLE(sim-trace,
160 [ --enable-sim-trace=opts Enable tracing flags],
161 [case "${enableval}" in
162 yes) sim_trace="-DTRACE=1 -DWITH_TRACE=-1";;
163 no) sim_trace="-DTRACE=0 -DWITH_TRACE=0";;
165 sim_trace="-DTRACE='(${enableval})' -DWITH_TRACE='(${enableval})'";;
168 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
169 if test x"$sim_trace" = x; then
170 sim_trace="-DWITH_TRACE='(TRACE_$x"
172 sim_trace="${sim_trace}|TRACE_$x"
175 sim_trace="$sim_trace)'" ;;
177 if test x"$silent" != x"yes" && test x"$sim_trace" != x""; then
178 echo "Setting sim trace = $sim_trace" 6>&1
179 fi],[sim_trace=""])dnl
183 dnl --enable-sim-profile
184 dnl The argument is either a bitmask of things to enable [exactly what is
185 dnl up to the simulator], or is a comma separated list of names of profiling
186 dnl elements to enable. The latter is only supported on simulators that
187 dnl use WITH_PROFILE.
188 AC_ARG_ENABLE(sim-profile,
189 [ --enable-sim-profile=opts Enable profiling flags],
190 [case "${enableval}" in
191 yes) sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1";;
192 no) sim_profile="-DPROFILE=0 -DWITH_PROFILE=0";;
194 sim_profile="-DPROFILE='(${enableval})' -DWITH_PROFILE='(${enableval})'";;
197 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
198 if test x"$sim_profile" = x; then
199 sim_profile="-DWITH_PROFILE='(PROFILE_$x"
201 sim_profile="${sim_profile}|PROFILE_$x"
204 sim_profile="$sim_profile)'" ;;
206 if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
207 echo "Setting sim profile = $sim_profile" 6>&1
208 fi],[sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"])dnl
209 AC_SUBST(sim_profile)
211 ACX_PKGVERSION([GDB])
212 ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
213 AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
214 AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
216 dnl Types used by common code
219 dnl Detect exe extension
222 dnl These are available to append to as desired.
226 dnl Create tconfig.h either from simulator's tconfig.in or default one
228 sim_link_links=tconfig.h
229 if test -f ${srcdir}/tconfig.in
231 sim_link_files=tconfig.in
233 sim_link_files=../common/tconfig.in
236 # targ-vals.def points to the libc macro description file.
238 *-*-*) TARG_VALS_DEF=../common/nltvals.def ;;
240 sim_link_files="${sim_link_files} ${TARG_VALS_DEF}"
241 sim_link_links="${sim_link_links} targ-vals.def"
243 ]) dnl End of SIM_AC_COMMON
246 dnl Additional SIM options that can (optionally) be configured
247 dnl For optional simulator options, a macro SIM_AC_OPTION_* is defined.
248 dnl Simulators that wish to use the relevant option specify the macro
249 dnl in the simulator specific configure.in file between the SIM_AC_COMMON
250 dnl and SIM_AC_OUTPUT lines.
253 dnl Specify the running environment.
254 dnl If the simulator invokes this in its configure.in then without this option
255 dnl the default is the user environment and all are runtime selectable.
256 dnl If the simulator doesn't invoke this, only the user environment is
258 dnl ??? Until there is demonstrable value in doing something more complicated,
260 AC_DEFUN([SIM_AC_OPTION_ENVIRONMENT],
262 AC_ARG_ENABLE(sim-environment,
263 [ --enable-sim-environment=environment Specify mixed, user, virtual or operating environment.],
264 [case "${enableval}" in
265 all | ALL) sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT";;
266 user | USER) sim_environment="-DWITH_ENVIRONMENT=USER_ENVIRONMENT";;
267 virtual | VIRTUAL) sim_environment="-DWITH_ENVIRONMENT=VIRTUAL_ENVIRONMENT";;
268 operating | OPERATING) sim_environment="-DWITH_ENVIRONMENT=OPERATING_ENVIRONMENT";;
269 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-environment");
272 if test x"$silent" != x"yes" && test x"$sim_environment" != x""; then
273 echo "Setting sim environment = $sim_environment" 6>&1
275 [sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT"])dnl
277 AC_SUBST(sim_environment)
280 dnl Specify the alignment restrictions of the target architecture.
281 dnl Without this option all possible alignment restrictions are accommodated.
282 dnl arg[1] is hardwired target alignment
283 dnl arg[2] is default target alignment
284 AC_DEFUN([SIM_AC_OPTION_ALIGNMENT],
285 wire_alignment="[$1]"
286 default_alignment="[$2]"
288 AC_ARG_ENABLE(sim-alignment,
289 [ --enable-sim-alignment=align Specify strict, nonstrict or forced alignment of memory accesses.],
290 [case "${enableval}" in
291 strict | STRICT) sim_alignment="-DWITH_ALIGNMENT=STRICT_ALIGNMENT";;
292 nonstrict | NONSTRICT) sim_alignment="-DWITH_ALIGNMENT=NONSTRICT_ALIGNMENT";;
293 forced | FORCED) sim_alignment="-DWITH_ALIGNMENT=FORCED_ALIGNMENT";;
294 yes) if test x"$wire_alignment" != x; then
295 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
297 if test x"$default_alignment" != x; then
298 sim_alignment="-DWITH_ALIGNMENT=${default_alignment}"
300 echo "No hard-wired alignment for target $target" 1>&6
301 sim_alignment="-DWITH_ALIGNMENT=0"
304 no) if test x"$default_alignment" != x; then
305 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
307 if test x"$wire_alignment" != x; then
308 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${wire_alignment}"
310 echo "No default alignment for target $target" 1>&6
311 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=0"
314 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-alignment"); sim_alignment="";;
316 if test x"$silent" != x"yes" && test x"$sim_alignment" != x""; then
317 echo "Setting alignment flags = $sim_alignment" 6>&1
319 [if test x"$default_alignment" != x; then
320 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
322 if test x"$wire_alignment" != x; then
323 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
329 AC_SUBST(sim_alignment)
332 dnl Conditionally compile in assertion statements.
333 AC_DEFUN([SIM_AC_OPTION_ASSERT],
335 AC_ARG_ENABLE(sim-assert,
336 [ --enable-sim-assert Specify whether to perform random assertions.],
337 [case "${enableval}" in
338 yes) sim_assert="-DWITH_ASSERT=1";;
339 no) sim_assert="-DWITH_ASSERT=0";;
340 *) AC_MSG_ERROR("--enable-sim-assert does not take a value"); sim_assert="";;
342 if test x"$silent" != x"yes" && test x"$sim_assert" != x""; then
343 echo "Setting assert flags = $sim_assert" 6>&1
344 fi],[sim_assert=""])dnl
350 dnl --enable-sim-bitsize is for developers of the simulator
351 dnl It specifies the number of BITS in the target.
352 dnl arg[1] is the number of bits in a word
353 dnl arg[2] is the number assigned to the most significant bit
354 dnl arg[3] is the number of bits in an address
355 dnl arg[4] is the number of bits in an OpenFirmware cell.
356 dnl FIXME: this information should be obtained from bfd/archure
357 AC_DEFUN([SIM_AC_OPTION_BITSIZE],
358 wire_word_bitsize="[$1]"
360 wire_address_bitsize="[$3]"
361 wire_cell_bitsize="[$4]"
362 [AC_ARG_ENABLE(sim-bitsize,
363 [ --enable-sim-bitsize=N Specify target bitsize (32 or 64).],
365 case "${enableval}" in
366 64,63 | 64,63,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63";;
367 32,31 | 32,31,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31";;
368 64,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
369 32,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
370 32) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
371 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31"
373 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0"
375 64) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
376 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63"
378 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=0"
380 *) AC_MSG_ERROR("--enable-sim-bitsize was given $enableval. Expected 32 or 64") ;;
383 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9]]*,*//"`
386 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=32" ;;
387 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=64" ;;
388 * ) AC_MSG_ERROR("--enable-sim-bitsize was given address size $enableval. Expected 32 or 64") ;;
391 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9*]]*,*[[0-9]]*,*//"`
394 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=32" ;;
395 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=64" ;;
396 * ) AC_MSG_ERROR("--enable-sim-bitsize was given cell size $enableval. Expected 32 or 64") ;;
398 if test x"$silent" != x"yes" && test x"$sim_bitsize" != x""; then
399 echo "Setting bitsize flags = $sim_bitsize" 6>&1
402 if test x"$wire_word_bitsize" != x; then
403 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_BITSIZE=$wire_word_bitsize"
405 if test x"$wire_word_msb" != x; then
406 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_MSB=$wire_word_msb"
408 if test x"$wire_address_bitsize" != x; then
409 sim_bitsize="$sim_bitsize -DWITH_TARGET_ADDRESS_BITSIZE=$wire_address_bitsize"
411 if test x"$wire_cell_bitsize" != x; then
412 sim_bitsize="$sim_bitsize -DWITH_TARGET_CELL_BITSIZE=$wire_cell_bitsize"
415 AC_SUBST(sim_bitsize)
419 dnl --enable-sim-endian={yes,no,big,little} is for simulators
420 dnl that support both big and little endian targets.
421 dnl arg[1] is hardwired target endianness.
422 dnl arg[2] is default target endianness.
423 AC_DEFUN([SIM_AC_OPTION_ENDIAN],
426 default_endian="[$2]"
427 AC_ARG_ENABLE(sim-endian,
428 [ --enable-sim-endian=endian Specify target byte endian orientation.],
429 [case "${enableval}" in
430 b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BIG_ENDIAN";;
431 l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=LITTLE_ENDIAN";;
432 yes) if test x"$wire_endian" != x; then
433 sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
435 if test x"$default_endian" != x; then
436 sim_endian="-DWITH_TARGET_BYTE_ORDER=${default_endian}"
438 echo "No hard-wired endian for target $target" 1>&6
439 sim_endian="-DWITH_TARGET_BYTE_ORDER=0"
442 no) if test x"$default_endian" != x; then
443 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
445 if test x"$wire_endian" != x; then
446 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${wire_endian}"
448 echo "No default endian for target $target" 1>&6
449 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=0"
452 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-endian"); sim_endian="";;
454 if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
455 echo "Setting endian flags = $sim_endian" 6>&1
457 [if test x"$default_endian" != x; then
458 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
460 if test x"$wire_endian" != x; then
461 sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
470 dnl --enable-sim-hostendian is for users of the simulator when
471 dnl they find that AC_C_BIGENDIAN does not function correctly
472 dnl (for instance in a canadian cross)
473 AC_DEFUN([SIM_AC_OPTION_HOSTENDIAN],
475 AC_ARG_ENABLE(sim-hostendian,
476 [ --enable-sim-hostendian=end Specify host byte endian orientation.],
477 [case "${enableval}" in
478 no) sim_hostendian="-DWITH_HOST_BYTE_ORDER=0";;
479 b*|B*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN";;
480 l*|L*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN";;
481 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-hostendian"); sim_hostendian="";;
483 if test x"$silent" != x"yes" && test x"$sim_hostendian" != x""; then
484 echo "Setting hostendian flags = $sim_hostendian" 6>&1
486 if test "x$cross_compiling" = "xno"; then
488 if test $ac_cv_c_bigendian = yes; then
489 sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN"
491 sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN"
494 sim_hostendian="-DWITH_HOST_BYTE_ORDER=0"
497 AC_SUBST(sim_hostendian)
500 dnl --enable-sim-float is for developers of the simulator
501 dnl It specifies the presence of hardware floating point
502 dnl And optionally the bitsize of the floating point register.
503 dnl arg[1] specifies the presence (or absence) of floating point hardware
504 dnl arg[2] specifies the number of bits in a floating point register
505 AC_DEFUN([SIM_AC_OPTION_FLOAT],
507 default_sim_float="[$1]"
508 default_sim_float_bitsize="[$2]"
509 AC_ARG_ENABLE(sim-float,
510 [ --enable-sim-float Specify that the target processor has floating point hardware.],
511 [case "${enableval}" in
512 yes | hard) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT";;
513 no | soft) sim_float="-DWITH_FLOATING_POINT=SOFT_FLOATING_POINT";;
514 32) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=32";;
515 64) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=64";;
516 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-float"); sim_float="";;
518 if test x"$silent" != x"yes" && test x"$sim_float" != x""; then
519 echo "Setting float flags = $sim_float" 6>&1
522 if test x"${default_sim_float}" != x""; then
523 sim_float="-DWITH_FLOATING_POINT=${default_sim_float}"
525 if test x"${default_sim_float_bitsize}" != x""; then
526 sim_float="$sim_float -DWITH_TARGET_FLOATING_POINT_BITSIZE=${default_sim_float_bitsize}"
533 dnl The argument is the default cache size if none is specified.
534 AC_DEFUN([SIM_AC_OPTION_SCACHE],
536 default_sim_scache="ifelse([$1],,0,[$1])"
537 AC_ARG_ENABLE(sim-scache,
538 [ --enable-sim-scache=size Specify simulator execution cache size.],
539 [case "${enableval}" in
540 yes) sim_scache="-DWITH_SCACHE=${default_sim_scache}";;
541 no) sim_scache="-DWITH_SCACHE=0" ;;
542 [[0-9]]*) sim_scache="-DWITH_SCACHE=${enableval}";;
543 *) AC_MSG_ERROR("Bad value $enableval passed to --enable-sim-scache");
546 if test x"$silent" != x"yes" && test x"$sim_scache" != x""; then
547 echo "Setting scache size = $sim_scache" 6>&1
548 fi],[sim_scache="-DWITH_SCACHE=${default_sim_scache}"])
553 dnl The argument is the default model if none is specified.
554 AC_DEFUN([SIM_AC_OPTION_DEFAULT_MODEL],
556 default_sim_default_model="ifelse([$1],,0,[$1])"
557 AC_ARG_ENABLE(sim-default-model,
558 [ --enable-sim-default-model=model Specify default model to simulate.],
559 [case "${enableval}" in
560 yes|no) AC_MSG_ERROR("Missing argument to --enable-sim-default-model");;
561 *) sim_default_model="-DWITH_DEFAULT_MODEL='\"${enableval}\"'";;
563 if test x"$silent" != x"yes" && test x"$sim_default_model" != x""; then
564 echo "Setting default model = $sim_default_model" 6>&1
565 fi],[sim_default_model="-DWITH_DEFAULT_MODEL='\"${default_sim_default_model}\"'"])
567 AC_SUBST(sim_default_model)
570 dnl --enable-sim-hardware is for users of the simulator
571 dnl arg[1] Enable sim-hw by default? ("yes" or "no")
572 dnl arg[2] is a space separated list of devices that override the defaults
573 dnl arg[3] is a space separated list of extra target specific devices.
574 AC_DEFUN([SIM_AC_OPTION_HARDWARE],
576 if test x"[$1]" = x"yes"; then
584 hardware="cfi core pal glue"
586 hardware="$hardware [$3]"
587 sim_hw_cflags="-DWITH_HW=1"
589 sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([[^ ]][[^ ]]*\)/dv-\1.o/g'`"
590 AC_ARG_ENABLE(sim-hardware,
591 [ --enable-sim-hardware=LIST Specify the hardware to be included in the build.],
593 case "${enableval}" in
596 ,*) sim_hw_p=yes; hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
597 *,) sim_hw_p=yes; hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
598 *) sim_hw_p=yes; hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
600 if test "$sim_hw_p" != yes; then
602 sim_hw_cflags="-DWITH_HW=0"
605 sim_hw_cflags="-DWITH_HW=1"
608 sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
609 for i in $hardware ; do
612 *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
616 if test x"$silent" != x"yes" && test "$sim_hw_p" = "yes"; then
617 echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
619 if test "$sim_hw_p" != yes; then
621 sim_hw_cflags="-DWITH_HW=0"
624 if test x"$silent" != x"yes"; then
625 echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
628 AC_SUBST(sim_hw_cflags)
629 AC_SUBST(sim_hw_objs)
633 dnl --enable-sim-inline is for users that wish to ramp up the simulator's
634 dnl performance by inlining functions.
635 dnl Guarantee that unconfigured simulators do not do any inlining
636 sim_inline="-DDEFAULT_INLINE=0"
637 AC_DEFUN([SIM_AC_OPTION_INLINE],
639 default_sim_inline="ifelse([$1],,,-DDEFAULT_INLINE=[$1])"
640 AC_ARG_ENABLE(sim-inline,
641 [ --enable-sim-inline=inlines Specify which functions should be inlined.],
644 no) sim_inline="-DDEFAULT_INLINE=0";;
645 0) sim_inline="-DDEFAULT_INLINE=0";;
646 yes | 2) sim_inline="-DDEFAULT_INLINE=ALL_C_INLINE";;
647 1) sim_inline="-DDEFAULT_INLINE=INLINE_LOCALS";;
648 *) for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
651 *_INLINE=*) new_flag="-D$x";;
652 *=*) new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
653 *_INLINE) new_flag="-D$x=ALL_C_INLINE";;
654 *) new_flag="-D$x""_INLINE=ALL_C_INLINE";;
656 if test x"$sim_inline" = x""; then
657 sim_inline="$new_flag"
659 sim_inline="$sim_inline $new_flag"
663 if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
664 echo "Setting inline flags = $sim_inline" 6>&1
666 if test "x$cross_compiling" = "xno"; then
667 if test x"$GCC" != "x" -a x"${default_sim_inline}" != "x" ; then
668 sim_inline="${default_sim_inline}"
669 if test x"$silent" != x"yes"; then
670 echo "Setting inline flags = $sim_inline" 6>&1
676 sim_inline="-DDEFAULT_INLINE=0"
682 AC_DEFUN([SIM_AC_OPTION_PACKAGES],
684 AC_ARG_ENABLE(sim-packages,
685 [ --enable-sim-packages=list Specify the packages to be included in the build.],
687 case "${enableval}" in
689 no) AC_MSG_ERROR("List of packages must be specified for --enable-sim-packages"); packages="";;
690 ,*) packages="${packages}${enableval}";;
691 *,) packages="${enableval}${packages}";;
692 *) packages="${enableval}"'';;
694 sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
695 sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
696 if test x"$silent" != x"yes" && test x"$packages" != x""; then
697 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
698 fi],[packages=disklabel
699 sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
700 sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
701 if test x"$silent" != x"yes"; then
702 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
705 AC_SUBST(sim_packages)
708 AC_DEFUN([SIM_AC_OPTION_REGPARM],
710 AC_ARG_ENABLE(sim-regparm,
711 [ --enable-sim-regparm=nr-parm Pass parameters in registers instead of on the stack - x86/GCC specific.],
712 [case "${enableval}" in
713 0*|1*|2*|3*|4*|5*|6*|7*|8*|9*) sim_regparm="-DWITH_REGPARM=${enableval}";;
714 no) sim_regparm="" ;;
715 yes) sim_regparm="-DWITH_REGPARM=3";;
716 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-regparm"); sim_regparm="";;
718 if test x"$silent" != x"yes" && test x"$sim_regparm" != x""; then
719 echo "Setting regparm flags = $sim_regparm" 6>&1
720 fi],[sim_regparm=""])dnl
722 AC_SUBST(sim_regparm)
725 AC_DEFUN([SIM_AC_OPTION_RESERVED_BITS],
727 default_sim_reserved_bits="ifelse([$1],,1,[$1])"
728 AC_ARG_ENABLE(sim-reserved-bits,
729 [ --enable-sim-reserved-bits Specify whether to check reserved bits in instruction.],
730 [case "${enableval}" in
731 yes) sim_reserved_bits="-DWITH_RESERVED_BITS=1";;
732 no) sim_reserved_bits="-DWITH_RESERVED_BITS=0";;
733 *) AC_MSG_ERROR("--enable-sim-reserved-bits does not take a value"); sim_reserved_bits="";;
735 if test x"$silent" != x"yes" && test x"$sim_reserved_bits" != x""; then
736 echo "Setting reserved flags = $sim_reserved_bits" 6>&1
737 fi],[sim_reserved_bits="-DWITH_RESERVED_BITS=${default_sim_reserved_bits}"])dnl
739 AC_SUBST(sim_reserved_bits)
742 AC_DEFUN([SIM_AC_OPTION_SMP],
744 default_sim_smp="ifelse([$1],,5,[$1])"
745 AC_ARG_ENABLE(sim-smp,
746 [ --enable-sim-smp=n Specify number of processors to configure for (default ${default_sim_smp}).],
747 [case "${enableval}" in
748 yes) sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5";;
749 no) sim_smp="-DWITH_SMP=0" ; sim_igen_smp="-N 0";;
750 *) sim_smp="-DWITH_SMP=$enableval" ; sim_igen_smp="-N $enableval";;
752 if test x"$silent" != x"yes" && test x"$sim_smp" != x""; then
753 echo "Setting smp flags = $sim_smp" 6>&1
754 fi],[sim_smp="-DWITH_SMP=${default_sim_smp}" ; sim_igen_smp="-N ${default_sim_smp}"
755 if test x"$silent" != x"yes"; then
756 echo "Setting smp flags = $sim_smp" 6>&1
762 AC_DEFUN([SIM_AC_OPTION_STDCALL],
764 AC_ARG_ENABLE(sim-stdcall,
765 [ --enable-sim-stdcall=type Use an alternative function call/return mechanism - x86/GCC specific.],
766 [case "${enableval}" in
767 no) sim_stdcall="" ;;
768 std*) sim_stdcall="-DWITH_STDCALL=1";;
769 yes) sim_stdcall="-DWITH_STDCALL=1";;
770 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-stdcall"); sim_stdcall="";;
772 if test x"$silent" != x"yes" && test x"$sim_stdcall" != x""; then
773 echo "Setting function call flags = $sim_stdcall" 6>&1
774 fi],[sim_stdcall=""])dnl
776 AC_SUBST(sim_stdcall)
779 AC_DEFUN([SIM_AC_OPTION_XOR_ENDIAN],
781 default_sim_xor_endian="ifelse([$1],,8,[$1])"
782 AC_ARG_ENABLE(sim-xor-endian,
783 [ --enable-sim-xor-endian=n Specify number bytes involved in XOR bi-endian mode (default ${default_sim_xor_endian}).],
784 [case "${enableval}" in
785 yes) sim_xor_endian="-DWITH_XOR_ENDIAN=8";;
786 no) sim_xor_endian="-DWITH_XOR_ENDIAN=0";;
787 *) sim_xor_endian="-DWITH_XOR_ENDIAN=$enableval";;
789 if test x"$silent" != x"yes" && test x"$sim_xor_endian" != x""; then
790 echo "Setting xor-endian flag = $sim_xor_endian" 6>&1
791 fi],[sim_xor_endian="-DWITH_XOR_ENDIAN=${default_sim_xor_endian}"])dnl
793 AC_SUBST(sim_xor_endian)
796 dnl --enable-build-warnings is for developers of the simulator.
797 dnl it enables extra GCC specific warnings.
798 AC_DEFUN([SIM_AC_OPTION_WARNINGS],
800 # NOTE: Don't add -Wall or -Wunused, they both include
801 # -Wunused-parameter which reports bogus warnings.
802 # NOTE: If you add to this list, remember to update
803 # gdb/doc/gdbint.texinfo.
804 build_warnings="-Wimplicit -Wreturn-type -Wcomment -Wtrigraphs \
805 -Wformat -Wparentheses -Wpointer-arith"
806 # GCC supports -Wuninitialized only with -O or -On, n != 0.
807 if test x${CFLAGS+set} = xset; then
811 build_warnings="${build_warnings} -Wuninitialized"
815 build_warnings="${build_warnings} -Wuninitialized"
817 # Up for debate: -Wswitch -Wcomment -trigraphs -Wtrigraphs
818 # -Wunused-function -Wunused-label -Wunused-variable -Wunused-value
819 # -Wchar-subscripts -Wtraditional -Wshadow -Wcast-qual
820 # -Wcast-align -Wwrite-strings -Wconversion -Wstrict-prototypes
821 # -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls
822 # -Woverloaded-virtual -Winline -Werror"
823 AC_ARG_ENABLE(build-warnings,
824 [ --enable-build-warnings Enable build-time compiler warnings if gcc is used],
825 [case "${enableval}" in
827 no) build_warnings="-w";;
828 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
829 build_warnings="${build_warnings} ${t}";;
830 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
831 build_warnings="${t} ${build_warnings}";;
832 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
834 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
835 echo "Setting compiler warning flags = $build_warnings" 6>&1
837 AC_ARG_ENABLE(sim-build-warnings,
838 [ --enable-gdb-build-warnings Enable SIM specific build-time compiler warnings if gcc is used],
839 [case "${enableval}" in
841 no) build_warnings="-w";;
842 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
843 build_warnings="${build_warnings} ${t}";;
844 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
845 build_warnings="${t} ${build_warnings}";;
846 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
848 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
849 echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
853 if test "x${build_warnings}" != x -a "x$GCC" = xyes
855 AC_MSG_CHECKING(compiler warning flags)
856 # Separate out the -Werror flag as some files just cannot be
857 # compiled with it enabled.
858 for w in ${build_warnings}; do
860 -Werr*) WERROR_CFLAGS=-Werror ;;
861 *) # Check that GCC accepts it
862 saved_CFLAGS="$CFLAGS"
864 AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
865 CFLAGS="$saved_CFLAGS"
868 AC_MSG_RESULT(${WARN_CFLAGS}${WERROR_CFLAGS})
871 AC_SUBST(WARN_CFLAGS)
872 AC_SUBST(WERROR_CFLAGS)
875 dnl Generate the Makefile in a target specific directory.
876 dnl Substitutions aren't performed on the file in AC_SUBST_FILE,
877 dnl so this is a cover macro to tuck the details away of how we cope.
878 dnl We cope by having autoconf generate two files and then merge them into
879 dnl one afterwards. The two pieces of the common fragment are inserted into
880 dnl the target's fragment at the appropriate points.
882 AC_DEFUN([SIM_AC_OUTPUT],
884 AC_LINK_FILES($sim_link_files, $sim_link_links)
885 dnl Make @cgen_breaks@ non-null only if the sim uses CGEN.
887 if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
888 cgen_breaks="break cgen_rtx_error";
890 AC_SUBST(cgen_breaks)
891 AC_CONFIG_FILES(Makefile.sim:Makefile.in)
892 AC_CONFIG_FILES(Make-common.sim:../common/Make-common.in)
893 AC_CONFIG_FILES(.gdbinit:../common/gdbinit.in)
894 AC_CONFIG_COMMANDS([Makefile],
895 [echo "Merging Makefile.sim+Make-common.sim into Makefile ..."
896 rm -f Makesim1.tmp Makesim2.tmp Makefile
897 sed -n -e '/^## COMMON_PRE_/,/^## End COMMON_PRE_/ p' <Make-common.sim >Makesim1.tmp
898 sed -n -e '/^## COMMON_POST_/,/^## End COMMON_POST_/ p' <Make-common.sim >Makesim2.tmp
899 sed -e '/^## COMMON_PRE_/ r Makesim1.tmp' \
900 -e '/^## COMMON_POST_/ r Makesim2.tmp' \
901 <Makefile.sim >Makefile
902 rm -f Makefile.sim Make-common.sim Makesim1.tmp Makesim2.tmp
904 AC_CONFIG_COMMANDS([stamp-h], [echo > stamp-h])
908 sinclude(../../config/gettext-sister.m4)
909 sinclude(../../config/acx.m4)
911 dnl --enable-cgen-maint support
912 AC_DEFUN([SIM_AC_OPTION_CGEN_MAINT],
915 dnl Default is to use one in build tree.
917 cgendir='$(srcdir)/../../cgen'
918 dnl Having --enable-maintainer-mode take arguments is another way to go.
919 dnl ??? One can argue --with is more appropriate if one wants to specify
920 dnl a directory name, but what we're doing here is an enable/disable kind
921 dnl of thing and specifying both --enable and --with is klunky.
922 dnl If you reeely want this to be --with, go ahead and change it.
923 AC_ARG_ENABLE(cgen-maint,
924 [ --enable-cgen-maint[=DIR] build cgen generated files],
925 [case "${enableval}" in
926 yes) cgen_maint=yes ;;
929 # argument is cgen install directory (not implemented yet).
930 # Having a `share' directory might be more appropriate for the .scm,
932 cgendir=${cgen_maint}/lib/cgen
936 dnl AM_CONDITIONAL(CGEN_MAINT, test x${cgen_maint} != xno)
937 if test x${cgen_maint} != xno ; then