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.
11 # sinclude(../common/aclocal.m4)
13 # AC_INIT(Makefile.in)
17 # ... target specific stuff ...
21 AC_DEFUN(SIM_AC_COMMON,
23 # autoconf.info says this should be called right after AC_INIT.
24 AC_CONFIG_HEADER(ifelse([$1],,config.h,[$1]):config.in)
26 AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/../..)
32 # Put a plausible default for CC_FOR_BUILD in Makefile.
33 if test "x$cross_compiling" = "xno"; then
38 AC_SUBST(CC_FOR_BUILD)
46 dnl We don't use gettext, but bfd does. So we do the appropriate checks
47 dnl to see if there are intl libraries we should link against.
51 # Check for common headers.
52 # FIXME: Seems to me this can cause problems for i386-windows hosts.
53 # At one point there were hardcoded AC_DEFINE's if ${host} = i386-*-windows*.
54 AC_CHECK_HEADERS(stdlib.h string.h strings.h unistd.h time.h)
55 AC_CHECK_HEADERS(sys/time.h sys/resource.h)
56 AC_CHECK_HEADERS(fcntl.h fpu_control.h)
57 AC_CHECK_FUNCS(getrusage time sigaction __setfpucw)
59 . ${srcdir}/../../bfd/configure.host
61 dnl Standard (and optional) simulator options.
62 dnl Eventually all simulators will support these.
63 dnl Do not add any here that cannot be supported by all simulators.
64 dnl Do not add similar but different options to a particular simulator,
65 dnl all shall eventually behave the same way.
68 dnl We don't use automake, but we still want to support
69 dnl --enable-maintainer-mode.
70 USE_MAINTAINER_MODE=no
71 AC_ARG_ENABLE(maintainer-mode,
72 [ --enable-maintainer-mode Enable developer functionality.],
73 [case "${enableval}" in
74 yes) MAINT="" USE_MAINTAINER_MODE=yes ;;
76 *) AC_MSG_ERROR("--enable-maintainer-mode does not take a value"); MAINT="#" ;;
78 if test x"$silent" != x"yes" && test x"$MAINT" = x""; then
79 echo "Setting maintainer mode" 6>&1
84 dnl This is a generic option to enable special byte swapping
85 dnl insns on *any* cpu.
86 AC_ARG_ENABLE(sim-bswap,
87 [ --enable-sim-bswap Use Host specific BSWAP instruction.],
88 [case "${enableval}" in
89 yes) sim_bswap="-DWITH_BSWAP=1 -DUSE_BSWAP=1";;
90 no) sim_bswap="-DWITH_BSWAP=0";;
91 *) AC_MSG_ERROR("--enable-sim-bswap does not take a value"); sim_bswap="";;
93 if test x"$silent" != x"yes" && test x"$sim_bswap" != x""; then
94 echo "Setting bswap flags = $sim_bswap" 6>&1
95 fi],[sim_bswap=""])dnl
99 AC_ARG_ENABLE(sim-cflags,
100 [ --enable-sim-cflags=opts Extra CFLAGS for use in building simulator],
101 [case "${enableval}" in
102 yes) sim_cflags="-O2 -fomit-frame-pointer";;
103 trace) AC_MSG_ERROR("Please use --enable-sim-debug instead."); sim_cflags="";;
105 *) sim_cflags=`echo "${enableval}" | sed -e "s/,/ /g"`;;
107 if test x"$silent" != x"yes" && test x"$sim_cflags" != x""; then
108 echo "Setting sim cflags = $sim_cflags" 6>&1
109 fi],[sim_cflags=""])dnl
113 dnl --enable-sim-debug is for developers of the simulator
114 dnl the allowable values are work-in-progress
115 AC_ARG_ENABLE(sim-debug,
116 [ --enable-sim-debug=opts Enable debugging flags],
117 [case "${enableval}" in
118 yes) sim_debug="-DDEBUG=7 -DWITH_DEBUG=7";;
119 no) sim_debug="-DDEBUG=0 -DWITH_DEBUG=0";;
120 *) sim_debug="-DDEBUG='(${enableval})' -DWITH_DEBUG='(${enableval})'";;
122 if test x"$silent" != x"yes" && test x"$sim_debug" != x""; then
123 echo "Setting sim debug = $sim_debug" 6>&1
124 fi],[sim_debug=""])dnl
128 dnl --enable-sim-stdio is for users of the simulator
129 dnl It determines if IO from the program is routed through STDIO (buffered)
130 AC_ARG_ENABLE(sim-stdio,
131 [ --enable-sim-stdio Specify whether to use stdio for console input/output.],
132 [case "${enableval}" in
133 yes) sim_stdio="-DWITH_STDIO=DO_USE_STDIO";;
134 no) sim_stdio="-DWITH_STDIO=DONT_USE_STDIO";;
135 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-stdio"); sim_stdio="";;
137 if test x"$silent" != x"yes" && test x"$sim_stdio" != x""; then
138 echo "Setting stdio flags = $sim_stdio" 6>&1
139 fi],[sim_stdio=""])dnl
143 dnl --enable-sim-trace is for users of the simulator
144 dnl The argument is either a bitmask of things to enable [exactly what is
145 dnl up to the simulator], or is a comma separated list of names of tracing
146 dnl elements to enable. The latter is only supported on simulators that
148 AC_ARG_ENABLE(sim-trace,
149 [ --enable-sim-trace=opts Enable tracing flags],
150 [case "${enableval}" in
151 yes) sim_trace="-DTRACE=1 -DWITH_TRACE=-1";;
152 no) sim_trace="-DTRACE=0 -DWITH_TRACE=0";;
154 sim_trace="-DTRACE='(${enableval})' -DWITH_TRACE='(${enableval})'";;
157 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
158 if test x"$sim_trace" = x; then
159 sim_trace="-DWITH_TRACE='(TRACE_$x"
161 sim_trace="${sim_trace}|TRACE_$x"
164 sim_trace="$sim_trace)'" ;;
166 if test x"$silent" != x"yes" && test x"$sim_trace" != x""; then
167 echo "Setting sim trace = $sim_trace" 6>&1
168 fi],[sim_trace=""])dnl
172 dnl --enable-sim-profile
173 dnl The argument is either a bitmask of things to enable [exactly what is
174 dnl up to the simulator], or is a comma separated list of names of profiling
175 dnl elements to enable. The latter is only supported on simulators that
176 dnl use WITH_PROFILE.
177 AC_ARG_ENABLE(sim-profile,
178 [ --enable-sim-profile=opts Enable profiling flags],
179 [case "${enableval}" in
180 yes) sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1";;
181 no) sim_profile="-DPROFILE=0 -DWITH_PROFILE=0";;
183 sim_profile="-DPROFILE='(${enableval})' -DWITH_PROFILE='(${enableval})'";;
186 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
187 if test x"$sim_profile" = x; then
188 sim_profile="-DWITH_PROFILE='(PROFILE_$x"
190 sim_profile="${sim_profile}|PROFILE_$x"
193 sim_profile="$sim_profile)'" ;;
195 if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
196 echo "Setting sim profile = $sim_profile" 6>&1
197 fi],[sim_profile=""])dnl
198 AC_SUBST(sim_profile)
201 dnl Types used by common code
205 dnl These are available to append to as desired.
209 dnl Create tconfig.h either from simulator's tconfig.in or default one
211 sim_link_links=tconfig.h
212 if test -f ${srcdir}/tconfig.in
214 sim_link_files=tconfig.in
216 sim_link_files=../common/tconfig.in
219 # targ-vals.def points to the libc macro description file.
221 *-*-*) TARG_VALS_DEF=../common/nltvals.def ;;
223 sim_link_files="${sim_link_files} ${TARG_VALS_DEF}"
224 sim_link_links="${sim_link_links} targ-vals.def"
226 ]) dnl End of SIM_AC_COMMON
229 dnl Additional SIM options that can (optionally) be configured
230 dnl For optional simulator options, a macro SIM_AC_OPTION_* is defined.
231 dnl Simulators that wish to use the relevant option specify the macro
232 dnl in the simulator specific configure.in file between the SIM_AC_COMMON
233 dnl and SIM_AC_OUTPUT lines.
236 dnl Specify the running environment.
237 dnl If the simulator invokes this in its configure.in then without this option
238 dnl the default is the user environment and all are runtime selectable.
239 dnl If the simulator doesn't invoke this, only the user environment is
241 dnl ??? Until there is demonstrable value in doing something more complicated,
243 AC_DEFUN(SIM_AC_OPTION_ENVIRONMENT,
245 AC_ARG_ENABLE(sim-environment,
246 [ --enable-sim-environment=environment Specify mixed, user, virtual or operating environment.],
247 [case "${enableval}" in
248 all | ALL) sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT";;
249 user | USER) sim_environment="-DWITH_ENVIRONMENT=USER_ENVIRONMENT";;
250 virtual | VIRTUAL) sim_environment="-DWITH_ENVIRONMENT=VIRTUAL_ENVIRONMENT";;
251 operating | OPERATING) sim_environment="-DWITH_ENVIRONMENT=OPERATING_ENVIRONMENT";;
252 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-environment");
255 if test x"$silent" != x"yes" && test x"$sim_environment" != x""; then
256 echo "Setting sim environment = $sim_environment" 6>&1
258 [sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT"])dnl
260 AC_SUBST(sim_environment)
263 dnl Specify the alignment restrictions of the target architecture.
264 dnl Without this option all possible alignment restrictions are accommodated.
265 dnl arg[1] is hardwired target alignment
266 dnl arg[2] is default target alignment
267 AC_DEFUN(SIM_AC_OPTION_ALIGNMENT,
268 wire_alignment="[$1]"
269 default_alignment="[$2]"
271 AC_ARG_ENABLE(sim-alignment,
272 [ --enable-sim-alignment=align Specify strict, nonstrict or forced alignment of memory accesses.],
273 [case "${enableval}" in
274 strict | STRICT) sim_alignment="-DWITH_ALIGNMENT=STRICT_ALIGNMENT";;
275 nonstrict | NONSTRICT) sim_alignment="-DWITH_ALIGNMENT=NONSTRICT_ALIGNMENT";;
276 forced | FORCED) sim_alignment="-DWITH_ALIGNMENT=FORCED_ALIGNMENT";;
277 yes) if test x"$wire_alignment" != x; then
278 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
280 if test x"$default_alignment" != x; then
281 sim_alignment="-DWITH_ALIGNMENT=${default_alignment}"
283 echo "No hard-wired alignment for target $target" 1>&6
284 sim_alignment="-DWITH_ALIGNMENT=0"
287 no) if test x"$default_alignment" != x; then
288 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
290 if test x"$wire_alignment" != x; then
291 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${wire_alignment}"
293 echo "No default alignment for target $target" 1>&6
294 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=0"
297 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-alignment"); sim_alignment="";;
299 if test x"$silent" != x"yes" && test x"$sim_alignment" != x""; then
300 echo "Setting alignment flags = $sim_alignment" 6>&1
302 [if test x"$default_alignment" != x; then
303 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
305 if test x"$wire_alignment" != x; then
306 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
312 AC_SUBST(sim_alignment)
315 dnl Conditionally compile in assertion statements.
316 AC_DEFUN(SIM_AC_OPTION_ASSERT,
318 AC_ARG_ENABLE(sim-assert,
319 [ --enable-sim-assert Specify whether to perform random assertions.],
320 [case "${enableval}" in
321 yes) sim_assert="-DWITH_ASSERT=1";;
322 no) sim_assert="-DWITH_ASSERT=0";;
323 *) AC_MSG_ERROR("--enable-sim-assert does not take a value"); sim_assert="";;
325 if test x"$silent" != x"yes" && test x"$sim_assert" != x""; then
326 echo "Setting assert flags = $sim_assert" 6>&1
327 fi],[sim_assert=""])dnl
333 dnl --enable-sim-bitsize is for developers of the simulator
334 dnl It specifies the number of BITS in the target.
335 dnl arg[1] is the number of bits in a word
336 dnl arg[2] is the number assigned to the most significant bit
337 dnl arg[3] is the number of bits in an address
338 dnl arg[4] is the number of bits in an OpenFirmware cell.
339 dnl FIXME: this information should be obtained from bfd/archure
340 AC_DEFUN(SIM_AC_OPTION_BITSIZE,
341 wire_word_bitsize="[$1]"
343 wire_address_bitsize="[$3]"
344 wire_cell_bitsize="[$4]"
345 [AC_ARG_ENABLE(sim-bitsize,
346 [ --enable-sim-bitsize=N Specify target bitsize (32 or 64).],
348 case "${enableval}" in
349 64,63 | 64,63,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63";;
350 32,31 | 32,31,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31";;
351 64,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
352 32,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
353 32) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
354 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31"
356 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0"
358 64) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
359 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63"
361 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=0"
363 *) AC_MSG_ERROR("--enable-sim-bitsize was given $enableval. Expected 32 or 64") ;;
366 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9]]*,*//"`
369 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=32" ;;
370 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=64" ;;
371 * ) AC_MSG_ERROR("--enable-sim-bitsize was given address size $enableval. Expected 32 or 64") ;;
374 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9*]]*,*[[0-9]]*,*//"`
377 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=32" ;;
378 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=64" ;;
379 * ) AC_MSG_ERROR("--enable-sim-bitsize was given cell size $enableval. Expected 32 or 64") ;;
381 if test x"$silent" != x"yes" && test x"$sim_bitsize" != x""; then
382 echo "Setting bitsize flags = $sim_bitsize" 6>&1
385 if test x"$wire_word_bitsize" != x; then
386 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_BITSIZE=$wire_word_bitsize"
388 if test x"$wire_word_msb" != x; then
389 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_MSB=$wire_word_msb"
391 if test x"$wire_address_bitsize" != x; then
392 sim_bitsize="$sim_bitsize -DWITH_TARGET_ADDRESS_BITSIZE=$wire_address_bitsize"
394 if test x"$wire_cell_bitsize" != x; then
395 sim_bitsize="$sim_bitsize -DWITH_TARGET_CELL_BITSIZE=$wire_cell_bitsize"
398 AC_SUBST(sim_bitsize)
402 dnl --enable-sim-endian={yes,no,big,little} is for simulators
403 dnl that support both big and little endian targets.
404 dnl arg[1] is hardwired target endianness.
405 dnl arg[2] is default target endianness.
406 AC_DEFUN(SIM_AC_OPTION_ENDIAN,
409 default_endian="[$2]"
410 AC_ARG_ENABLE(sim-endian,
411 [ --enable-sim-endian=endian Specify target byte endian orientation.],
412 [case "${enableval}" in
413 b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BIG_ENDIAN";;
414 l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=LITTLE_ENDIAN";;
415 yes) if test x"$wire_endian" != x; then
416 sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
418 if test x"$default_endian" != x; then
419 sim_endian="-DWITH_TARGET_BYTE_ORDER=${default_endian}"
421 echo "No hard-wired endian for target $target" 1>&6
422 sim_endian="-DWITH_TARGET_BYTE_ORDER=0"
425 no) if test x"$default_endian" != x; then
426 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
428 if test x"$wire_endian" != x; then
429 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${wire_endian}"
431 echo "No default endian for target $target" 1>&6
432 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=0"
435 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-endian"); sim_endian="";;
437 if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
438 echo "Setting endian flags = $sim_endian" 6>&1
440 [if test x"$default_endian" != x; then
441 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
443 if test x"$wire_endian" != x; then
444 sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
453 dnl --enable-sim-hostendian is for users of the simulator when
454 dnl they find that AC_C_BIGENDIAN does not function correctly
455 dnl (for instance in a canadian cross)
456 AC_DEFUN(SIM_AC_OPTION_HOSTENDIAN,
458 AC_ARG_ENABLE(sim-hostendian,
459 [ --enable-sim-hostendian=end Specify host byte endian orientation.],
460 [case "${enableval}" in
461 no) sim_hostendian="-DWITH_HOST_BYTE_ORDER=0";;
462 b*|B*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN";;
463 l*|L*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN";;
464 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-hostendian"); sim_hostendian="";;
466 if test x"$silent" != x"yes" && test x"$sim_hostendian" != x""; then
467 echo "Setting hostendian flags = $sim_hostendian" 6>&1
469 if test "x$cross_compiling" = "xno"; then
471 if test $ac_cv_c_bigendian = yes; then
472 sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN"
474 sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN"
477 sim_hostendian="-DWITH_HOST_BYTE_ORDER=0"
480 AC_SUBST(sim_hostendian)
483 dnl --enable-sim-float is for developers of the simulator
484 dnl It specifies the presence of hardware floating point
485 dnl And optionally the bitsize of the floating point register.
486 dnl arg[1] specifies the presence (or absence) of floating point hardware
487 dnl arg[2] specifies the number of bits in a floating point register
488 AC_DEFUN(SIM_AC_OPTION_FLOAT,
490 default_sim_float="[$1]"
491 default_sim_float_bitsize="[$2]"
492 AC_ARG_ENABLE(sim-float,
493 [ --enable-sim-float Specify that the target processor has floating point hardware.],
494 [case "${enableval}" in
495 yes | hard) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT";;
496 no | soft) sim_float="-DWITH_FLOATING_POINT=SOFT_FLOATING_POINT";;
497 32) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=32";;
498 64) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=64";;
499 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-float"); sim_float="";;
501 if test x"$silent" != x"yes" && test x"$sim_float" != x""; then
502 echo "Setting float flags = $sim_float" 6>&1
505 if test x"${default_sim_float}" != x""; then
506 sim_float="-DWITH_FLOATING_POINT=${default_sim_float}"
508 if test x"${default_sim_float_bitsize}" != x""; then
509 sim_float="$sim_float -DWITH_TARGET_FLOATING_POINT_BITSIZE=${default_sim_float_bitsize}"
516 dnl The argument is the default cache size if none is specified.
517 AC_DEFUN(SIM_AC_OPTION_SCACHE,
519 default_sim_scache="ifelse([$1],,0,[$1])"
520 AC_ARG_ENABLE(sim-scache,
521 [ --enable-sim-scache=size 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_cache=${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 [ --enable-sim-default-model=model Specify default model to simulate.],
542 [case "${enableval}" in
543 yes|no) AC_MSG_ERROR("Missing argument to --enable-sim-default-model");;
544 *) sim_default_model="-DWITH_DEFAULT_MODEL='\"${enableval}\"'";;
546 if test x"$silent" != x"yes" && test x"$sim_default_model" != x""; then
547 echo "Setting default model = $sim_default_model" 6>&1
548 fi],[sim_default_model="-DWITH_DEFAULT_MODEL='\"${default_sim_default_model}\"'"])
550 AC_SUBST(sim_default_model)
553 dnl --enable-sim-hardware is for users of the simulator
554 dnl arg[1] is a space separated list of devices that override the defaults
555 dnl arg[2] is a space separated list of extra target specific devices.
556 AC_DEFUN(SIM_AC_OPTION_HARDWARE,
558 sim_hardware="-DWITH_HW=1"
559 sim_hw_obj="hw-device.o hw-ports.o hw-properties.o hw-base.o hw-tree.o sim-hw.o"
560 hardware="ifelse([$1],,[core pal glue],[$1]) ifelse([$2],,,[$2])"
561 AC_ARG_ENABLE(sim-hardware,
562 [ --enable-sim-hardware=LIST Specify the hardware to be included in the build.],
564 case "${enableval}" in
566 no) hardware=""; sim_hardware="-DWITH_HW=0"; sim_hw_obj="";;
567 ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
568 *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
569 *) hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
571 dnl remove duplicates
573 for i in x $hardware ; do
577 *) sim_hw="$sim_hw $i" ;;
580 sim_hw_obj="$sim_hw_obj `echo $sim_hw | sed -e 's/\([[^ ]][[^ ]]*\)/dv-\1.o/g'`"
581 if test x"$silent" != x"yes" && test x"$hardware" != x""; then
582 echo "Setting hardware to $sim_hardware, $sim_hw, $sim_hw_obj"
585 sim_hw_obj="$sim_hw_obj `echo $sim_hw | sed -e 's/\([[^ ]][[^ ]]*\)/dv-\1.o/g'`"
586 if test x"$silent" != x"yes"; then
587 echo "Setting hardware to $sim_hardware, $sim_hw, $sim_hw_obj"
590 AC_SUBST(sim_hardware)
595 dnl --enable-sim-inline is for users that wish to ramp up the simulator's
596 dnl performance by inlining functions.
597 dnl Guarantee that unconfigured simulators do not do any inlining
598 sim_inline="-DDEFAULT_INLINE=0"
599 AC_DEFUN(SIM_AC_OPTION_INLINE,
601 default_sim_inline="ifelse([$1],,,-DDEFAULT_INLINE=[$1])"
602 AC_ARG_ENABLE(sim-inline,
603 [ --enable-sim-inline=inlines Specify which functions should be inlined.],
606 no) sim_inline="-DDEFAULT_INLINE=0";;
607 0) sim_inline="-DDEFAULT_INLINE=0";;
608 yes | 2) sim_inline="-DDEFAULT_INLINE=ALL_C_INLINE";;
609 1) sim_inline="-DDEFAULT_INLINE=INLINE_LOCALS";;
610 *) for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
613 *_INLINE=*) new_flag="-D$x";;
614 *=*) new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
615 *_INLINE) new_flag="-D$x=ALL_C_INLINE";;
616 *) new_flag="-D$x""_INLINE=ALL_C_INLINE";;
618 if test x"$sim_inline" = x""; then
619 sim_inline="$new_flag"
621 sim_inline="$sim_inline $new_flag"
625 if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
626 echo "Setting inline flags = $sim_inline" 6>&1
628 if test "x$cross_compiling" = "xno"; then
629 if test x"$GCC" != "x" -a x"${default_sim_inline}" != "x" ; then
630 sim_inline="${default_sim_inline}"
631 if test x"$silent" != x"yes"; then
632 echo "Setting inline flags = $sim_inline" 6>&1
638 sim_inline="-DDEFAULT_INLINE=0"
644 AC_DEFUN(SIM_AC_OPTION_PACKAGES,
646 AC_ARG_ENABLE(sim-packages,
647 [ --enable-sim-packages=list Specify the packages to be included in the build.],
649 case "${enableval}" in
651 no) AC_MSG_ERROR("List of packages must be specified for --enable-sim-packages"); packages="";;
652 ,*) packages="${packages}${enableval}";;
653 *,) packages="${enableval}${packages}";;
654 *) packages="${enableval}"'';;
656 sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
657 sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
658 if test x"$silent" != x"yes" && test x"$packages" != x""; then
659 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
660 fi],[packages=disklabel
661 sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
662 sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
663 if test x"$silent" != x"yes"; then
664 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
667 AC_SUBST(sim_packages)
670 AC_DEFUN(SIM_AC_OPTION_REGPARM,
672 AC_ARG_ENABLE(sim-regparm,
673 [ --enable-sim-regparm=nr-parm Pass parameters in registers instead of on the stack - x86/GCC specific.],
674 [case "${enableval}" in
675 0*|1*|2*|3*|4*|5*|6*|7*|8*|9*) sim_regparm="-DWITH_REGPARM=${enableval}";;
676 no) sim_regparm="" ;;
677 yes) sim_regparm="-DWITH_REGPARM=3";;
678 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-regparm"); sim_regparm="";;
680 if test x"$silent" != x"yes" && test x"$sim_regparm" != x""; then
681 echo "Setting regparm flags = $sim_regparm" 6>&1
682 fi],[sim_regparm=""])dnl
684 AC_SUBST(sim_regparm)
687 AC_DEFUN(SIM_AC_OPTION_RESERVED_BITS,
689 default_sim_reserved_bits="ifelse([$1],,1,[$1])"
690 AC_ARG_ENABLE(sim-reserved-bits,
691 [ --enable-sim-reserved-bits 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 [ --enable-sim-smp=n Specify number of processors to configure for (default ${default_sim_smp}).],
709 [case "${enableval}" in
710 yes) sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5";;
711 no) sim_smp="-DWITH_SMP=0" ; sim_igen_smp="-N 0";;
712 *) sim_smp="-DWITH_SMP=$enableval" ; sim_igen_smp="-N $enableval";;
714 if test x"$silent" != x"yes" && test x"$sim_smp" != x""; then
715 echo "Setting smp flags = $sim_smp" 6>&1
716 fi],[sim_smp="-DWITH_SMP=${default_sim_smp}" ; sim_igen_smp="-N ${default_sim_smp}"
717 if test x"$silent" != x"yes"; then
718 echo "Setting smp flags = $sim_smp" 6>&1
724 AC_DEFUN(SIM_AC_OPTION_STDCALL,
726 AC_ARG_ENABLE(sim-stdcall,
727 [ --enable-sim-stdcall=type Use an alternative function call/return mechanism - x86/GCC specific.],
728 [case "${enableval}" in
729 no) sim_stdcall="" ;;
730 std*) sim_stdcall="-DWITH_STDCALL=1";;
731 yes) sim_stdcall="-DWITH_STDCALL=1";;
732 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-stdcall"); sim_stdcall="";;
734 if test x"$silent" != x"yes" && test x"$sim_stdcall" != x""; then
735 echo "Setting function call flags = $sim_stdcall" 6>&1
736 fi],[sim_stdcall=""])dnl
738 AC_SUBST(sim_stdcall)
741 AC_DEFUN(SIM_AC_OPTION_XOR_ENDIAN,
743 default_sim_xor_endian="ifelse([$1],,8,[$1])"
744 AC_ARG_ENABLE(sim-xor-endian,
745 [ --enable-sim-xor-endian=n Specify number bytes involved in XOR bi-endian mode (default ${default_sim_xor_endian}).],
746 [case "${enableval}" in
747 yes) sim_xor_endian="-DWITH_XOR_ENDIAN=8";;
748 no) sim_xor_endian="-DWITH_XOR_ENDIAN=0";;
749 *) sim_xor_endian="-DWITH_XOR_ENDIAN=$enableval";;
751 if test x"$silent" != x"yes" && test x"$sim_xor_endian" != x""; then
752 echo "Setting xor-endian flag = $sim_xor_endian" 6>&1
753 fi],[sim_xor_endian="-DWITH_XOR_ENDIAN=${default_sim_xor_endian}"])dnl
755 AC_SUBST(sim_xor_endian)
758 dnl --enable-sim-warnings is for developers of the simulator.
759 dnl it enables extra GCC specific warnings.
760 AC_DEFUN(SIM_AC_OPTION_WARNINGS,
762 AC_ARG_ENABLE(sim-warnings,
763 [ --enable-sim-warnings=opts Extra CFLAGS for turning on compiler warnings],
764 [case "${enableval}" in
765 yes) sim_warnings="-Werror -Wall -Wpointer-arith -Wmissing-prototypes -Wmissing-declarations ";;
766 no) sim_warnings="-w";;
767 *) sim_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
769 if test x"$silent" != x"yes" && test x"$sim_warnings" != x""; then
770 echo "Setting warning flags = $sim_warnings" 6>&1
771 fi],[sim_warnings=""])dnl
773 AC_SUBST(sim_warnings)
776 dnl Generate the Makefile in a target specific directory.
777 dnl Substitutions aren't performed on the file in AC_SUBST_FILE,
778 dnl so this is a cover macro to tuck the details away of how we cope.
779 dnl We cope by having autoconf generate two files and then merge them into
780 dnl one afterwards. The two pieces of the common fragment are inserted into
781 dnl the target's fragment at the appropriate points.
783 AC_DEFUN(SIM_AC_OUTPUT,
785 AC_LINK_FILES($sim_link_files, $sim_link_links)
786 AC_OUTPUT(Makefile.sim:Makefile.in Make-common.sim:../common/Make-common.in .gdbinit:../common/gdbinit.in,
787 [case "x$CONFIG_FILES" in
789 echo "Merging Makefile.sim+Make-common.sim into Makefile ..."
790 rm -f Makesim1.tmp Makesim2.tmp Makefile
791 sed -n -e '/^## COMMON_PRE_/,/^## End COMMON_PRE_/ p' <Make-common.sim >Makesim1.tmp
792 sed -n -e '/^## COMMON_POST_/,/^## End COMMON_POST_/ p' <Make-common.sim >Makesim2.tmp
793 sed -e '/^## COMMON_PRE_/ r Makesim1.tmp' \
794 -e '/^## COMMON_POST_/ r Makesim2.tmp' \
795 <Makefile.sim >Makefile
796 rm -f Makefile.sim Make-common.sim Makesim1.tmp Makesim2.tmp
799 case "x$CONFIG_HEADERS" in xconfig.h:config.in) echo > stamp-h ;; esac
803 # This file is derived from `gettext.m4'. The difference is that the
804 # included macros assume Cygnus-style source and build trees.
806 # Macro to add for using GNU gettext.
807 # Ulrich Drepper <drepper@cygnus.com>, 1995.
809 # This file file be copied and used freely without restrictions. It can
810 # be used in projects which are not available under the GNU Public License
811 # but which still want to provide support for the GNU gettext functionality.
812 # Please note that the actual code is *not* freely available.
816 AC_DEFUN(CY_WITH_NLS,
817 [AC_MSG_CHECKING([whether NLS is requested])
818 dnl Default is enabled NLS
820 [ --disable-nls do not use Native Language Support],
821 USE_NLS=$enableval, USE_NLS=yes)
822 AC_MSG_RESULT($USE_NLS)
825 USE_INCLUDED_LIBINTL=no
827 dnl If we use NLS figure out what method
828 if test "$USE_NLS" = "yes"; then
829 AC_DEFINE(ENABLE_NLS)
830 AC_MSG_CHECKING([whether included gettext is requested])
831 AC_ARG_WITH(included-gettext,
832 [ --with-included-gettext use the GNU gettext library included here],
833 nls_cv_force_use_gnu_gettext=$withval,
834 nls_cv_force_use_gnu_gettext=no)
835 AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
837 nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
838 if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
839 dnl User does not insist on using GNU NLS library. Figure out what
840 dnl to use. If gettext or catgets are available (in this order) we
841 dnl use this. Else we have to fall back to GNU NLS library.
842 dnl catgets is only used if permitted by option --with-catgets.
847 AC_CHECK_HEADER(libintl.h,
848 [AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc,
849 [AC_TRY_LINK([#include <libintl.h>], [return (int) gettext ("")],
850 gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)])
852 if test "$gt_cv_func_gettext_libc" != "yes"; then
853 AC_CHECK_LIB(intl, bindtextdomain,
854 [AC_CACHE_CHECK([for gettext in libintl],
855 gt_cv_func_gettext_libintl,
856 [AC_TRY_LINK([], [return (int) gettext ("")],
857 gt_cv_func_gettext_libintl=yes,
858 gt_cv_func_gettext_libintl=no)])])
861 if test "$gt_cv_func_gettext_libc" = "yes" \
862 || test "$gt_cv_func_gettext_libintl" = "yes"; then
863 AC_DEFINE(HAVE_GETTEXT)
864 AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
865 [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
866 if test "$MSGFMT" != "no"; then
867 AC_CHECK_FUNCS(dcgettext)
868 AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
869 AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
870 [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
871 AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
872 return _nl_msg_cat_cntr],
882 dnl In the standard gettext, we would now check for catgets.
883 dnl However, we never want to use catgets for our releases.
885 if test "$CATOBJEXT" = "NONE"; then
886 dnl Neither gettext nor catgets in included in the C library.
887 dnl Fall back on GNU gettext library.
888 nls_cv_use_gnu_gettext=yes
892 if test "$nls_cv_use_gnu_gettext" = "yes"; then
893 dnl Mark actions used to generate GNU NLS library.
894 INTLOBJS="\$(GETTOBJS)"
895 AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
896 [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt)
897 AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
898 AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
899 [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
901 USE_INCLUDED_LIBINTL=yes
905 INTLDEPS='$(top_builddir)/../intl/libintl.a'
907 LIBS=`echo $LIBS | sed -e 's/-lintl//'`
908 nls_cv_header_intl=libintl.h
909 nls_cv_header_libgt=libgettext.h
912 dnl Test whether we really found GNU xgettext.
913 if test "$XGETTEXT" != ":"; then
914 dnl If it is no GNU xgettext we define it as : so that the
915 dnl Makefiles still can work.
916 if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
920 [found xgettext programs is not GNU xgettext; ignore it])
925 # We need to process the po/ directory.
929 nls_cv_header_intl=libintl.h
930 nls_cv_header_libgt=libgettext.h
933 # If this is used in GNU gettext we have to set USE_NLS to `yes'
934 # because some of the sources are only built for this goal.
935 if test "$PACKAGE" = gettext; then
937 USE_INCLUDED_LIBINTL=yes
940 dnl These rules are solely for the distribution goal. While doing this
941 dnl we only have to keep exactly one list of the available catalogs
943 for lang in $ALL_LINGUAS; do
944 GMOFILES="$GMOFILES $lang.gmo"
945 POFILES="$POFILES $lang.po"
948 dnl Make all variables we use known to autoconf.
949 AC_SUBST(USE_INCLUDED_LIBINTL)
952 AC_SUBST(DATADIRNAME)
962 AC_DEFUN(CY_GNU_GETTEXT,
963 [AC_REQUIRE([AC_PROG_MAKE_SET])dnl
964 AC_REQUIRE([AC_PROG_CC])dnl
965 AC_REQUIRE([AC_PROG_RANLIB])dnl
966 AC_REQUIRE([AC_ISC_POSIX])dnl
967 AC_REQUIRE([AC_HEADER_STDC])dnl
968 AC_REQUIRE([AC_C_CONST])dnl
969 AC_REQUIRE([AC_C_INLINE])dnl
970 AC_REQUIRE([AC_TYPE_OFF_T])dnl
971 AC_REQUIRE([AC_TYPE_SIZE_T])dnl
972 AC_REQUIRE([AC_FUNC_ALLOCA])dnl
973 AC_REQUIRE([AC_FUNC_MMAP])dnl
975 AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \
976 unistd.h values.h sys/param.h])
977 AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \
978 __argz_count __argz_stringify __argz_next])
980 if test "${ac_cv_func_stpcpy+set}" != "set"; then
981 AC_CHECK_FUNCS(stpcpy)
983 if test "${ac_cv_func_stpcpy}" = "yes"; then
984 AC_DEFINE(HAVE_STPCPY)
990 if test "x$CATOBJEXT" != "x"; then
991 if test "x$ALL_LINGUAS" = "x"; then
994 AC_MSG_CHECKING(for catalogs to be installed)
996 for lang in ${LINGUAS=$ALL_LINGUAS}; do
997 case "$ALL_LINGUAS" in
998 *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
1001 LINGUAS=$NEW_LINGUAS
1002 AC_MSG_RESULT($LINGUAS)
1005 dnl Construct list of names of catalog files to be constructed.
1006 if test -n "$LINGUAS"; then
1007 for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
1011 dnl The reference to <locale.h> in the installed <libintl.h> file
1012 dnl must be resolved because we cannot expect the users of this
1013 dnl to define HAVE_LOCALE_H.
1014 if test $ac_cv_header_locale_h = yes; then
1015 INCLUDE_LOCALE_H="#include <locale.h>"
1018 /* The system does not provide the header <locale.h>. Take care yourself. */"
1020 AC_SUBST(INCLUDE_LOCALE_H)
1022 dnl Determine which catalog format we have (if any is needed)
1023 dnl For now we know about two different formats:
1024 dnl Linux libc-5 and the normal X/Open format
1025 if test -f $srcdir/po2tbl.sed.in; then
1026 if test "$CATOBJEXT" = ".cat"; then
1027 AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen)
1029 dnl Transform the SED scripts while copying because some dumb SEDs
1030 dnl cannot handle comments.
1031 sed -e '/^#/d' $srcdir/$msgformat-msg.sed > po2msg.sed
1033 dnl po2tbl.sed is always needed.
1034 sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \
1035 $srcdir/po2tbl.sed.in > po2tbl.sed
1038 dnl In the intl/Makefile.in we have a special dependency which makes
1039 dnl only sense for gettext. We comment this out for non-gettext
1041 if test "$PACKAGE" = "gettext"; then
1051 MKINSTALLDIRS="\$(srcdir)/../../mkinstalldirs"
1052 AC_SUBST(MKINSTALLDIRS)
1054 dnl *** For now the libtool support in intl/Makefile is not for real.
1058 dnl Generate list of files to be processed by xgettext which will
1059 dnl be included in po/Makefile. But only do this if the po directory
1060 dnl exists in srcdir.
1061 if test -d $srcdir/po; then
1062 test -d po || mkdir po
1063 if test "x$srcdir" != "x."; then
1064 if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
1065 posrcprefix="$srcdir/"
1067 posrcprefix="../$srcdir/"
1073 sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
1074 < $srcdir/po/POTFILES.in > po/POTFILES
1078 # Search path for a program which passes the given test.
1079 # Ulrich Drepper <drepper@cygnus.com>, 1996.
1081 # This file file be copied and used freely without restrictions. It can
1082 # be used in projects which are not available under the GNU Public License
1083 # but which still want to provide support for the GNU gettext functionality.
1084 # Please note that the actual code is *not* freely available.
1088 dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
1089 dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
1090 AC_DEFUN(AM_PATH_PROG_WITH_TEST,
1091 [# Extract the first word of "$2", so it can be a program name with args.
1092 set dummy $2; ac_word=[$]2
1093 AC_MSG_CHECKING([for $ac_word])
1094 AC_CACHE_VAL(ac_cv_path_$1,
1097 ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
1100 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
1101 for ac_dir in ifelse([$5], , $PATH, [$5]); do
1102 test -z "$ac_dir" && ac_dir=.
1103 if test -f $ac_dir/$ac_word; then
1105 ac_cv_path_$1="$ac_dir/$ac_word"
1111 dnl If no 4th arg is given, leave the cache variable unset,
1112 dnl so AC_PATH_PROGS will keep looking.
1113 ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
1118 if test -n "[$]$1"; then
1119 AC_MSG_RESULT([$]$1)
1126 # Check whether LC_MESSAGES is available in <locale.h>.
1127 # Ulrich Drepper <drepper@cygnus.com>, 1995.
1129 # This file file be copied and used freely without restrictions. It can
1130 # be used in projects which are not available under the GNU Public License
1131 # but which still want to provide support for the GNU gettext functionality.
1132 # Please note that the actual code is *not* freely available.
1136 AC_DEFUN(AM_LC_MESSAGES,
1137 [if test $ac_cv_header_locale_h = yes; then
1138 AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
1139 [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
1140 am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
1141 if test $am_cv_val_LC_MESSAGES = yes; then
1142 AC_DEFINE(HAVE_LC_MESSAGES)