]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - sim/common/acinclude.m4
sim: update bug URI to https://
[thirdparty/binutils-gdb.git] / sim / common / acinclude.m4
1 # This file contains common code used by all simulators.
2 #
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.
7 #
8 # The simulator's configure.ac should look like:
9 #
10 # dnl Process this file with autoconf to produce a configure script.
11 # AC_PREREQ(2.64)dnl
12 # AC_INIT(Makefile.in)
13 # sinclude(../common/aclocal.m4)
14 #
15 # SIM_AC_COMMON
16 #
17 # ... target specific stuff ...
18 #
19 # SIM_AC_OUTPUT
20
21 # Include global overrides and fixes for Autoconf.
22 m4_include(../../config/override.m4)
23 sinclude([../../config/zlib.m4])
24 m4_include([../../config/plugins.m4])
25 m4_include([../../libtool.m4])
26 m4_include([../../ltoptions.m4])
27 m4_include([../../ltsugar.m4])
28 m4_include([../../ltversion.m4])
29 m4_include([../../lt~obsolete.m4])
30 sinclude([../../config/depstand.m4])
31
32 AC_DEFUN([SIM_AC_COMMON],
33 [
34 AC_REQUIRE([AC_PROG_CC])
35 # autoconf.info says this should be called right after AC_INIT.
36 AC_CONFIG_HEADER(ifelse([$1],,config.h,[$1]):config.in)
37 AC_CANONICAL_SYSTEM
38 AC_USE_SYSTEM_EXTENSIONS
39 AC_C_BIGENDIAN
40 AC_ARG_PROGRAM
41 AC_PROG_INSTALL
42
43 # Put a plausible default for CC_FOR_BUILD in Makefile.
44 if test -z "$CC_FOR_BUILD"; then
45 if test "x$cross_compiling" = "xno"; then
46 CC_FOR_BUILD='$(CC)'
47 else
48 CC_FOR_BUILD=gcc
49 fi
50 fi
51 AC_SUBST(CC_FOR_BUILD)
52
53 AC_SUBST(CFLAGS)
54 AC_SUBST(HDEFINES)
55 AR=${AR-ar}
56 AC_SUBST(AR)
57 AC_PROG_RANLIB
58
59 # Some of the common include files depend on bfd.h, and bfd.h checks
60 # that config.h is included first by testing that the PACKAGE macro
61 # is defined.
62 PACKAGE=sim
63 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package. ])
64 AC_SUBST(PACKAGE)
65
66 # Dependency checking.
67 ZW_CREATE_DEPDIR
68 ZW_PROG_COMPILER_DEPENDENCIES([CC])
69
70 # Check for the 'make' the user wants to use.
71 AC_CHECK_PROGS(MAKE, make)
72 MAKE_IS_GNU=
73 case "`$MAKE --version 2>&1 | sed 1q`" in
74 *GNU*)
75 MAKE_IS_GNU=yes
76 ;;
77 esac
78 AM_CONDITIONAL(GMAKE, test "$MAKE_IS_GNU" = yes)
79
80 dnl We don't use gettext, but bfd does. So we do the appropriate checks
81 dnl to see if there are intl libraries we should link against.
82 ALL_LINGUAS=
83 ZW_GNU_GETTEXT_SISTER_DIR(../../intl)
84
85 # Check for common headers.
86 # FIXME: Seems to me this can cause problems for i386-windows hosts.
87 # At one point there were hardcoded AC_DEFINE's if ${host} = i386-*-windows*.
88 AC_CHECK_HEADERS(stdlib.h string.h strings.h unistd.h time.h)
89 AC_CHECK_HEADERS(sys/time.h sys/times.h sys/resource.h sys/mman.h)
90 AC_CHECK_HEADERS(fcntl.h fpu_control.h)
91 AC_CHECK_HEADERS(dlfcn.h errno.h sys/stat.h)
92 AC_CHECK_FUNCS(getrusage time sigaction __setfpucw)
93 AC_CHECK_FUNCS(mmap munmap lstat truncate ftruncate posix_fallocate)
94 AC_CHECK_MEMBERS([[struct stat.st_dev], [struct stat.st_ino],
95 [struct stat.st_mode], [struct stat.st_nlink], [struct stat.st_uid],
96 [struct stat.st_gid], [struct stat.st_rdev], [struct stat.st_size],
97 [struct stat.st_blksize], [struct stat.st_blocks], [struct stat.st_atime],
98 [struct stat.st_mtime], [struct stat.st_ctime]], [], [],
99 [[#ifdef HAVE_SYS_TYPES_H
100 #include <sys/types.h>
101 #endif
102 #ifdef HAVE_SYS_STAT_H
103 #include <sys/stat.h>
104 #endif]])
105 AC_CHECK_TYPES(socklen_t, [], [],
106 [#include <sys/types.h>
107 #include <sys/socket.h>
108 ])
109
110 # Check for socket libraries
111 AC_CHECK_LIB(socket, bind)
112 AC_CHECK_LIB(nsl, gethostbyname)
113
114 # BFD conditionally uses zlib, so we must link it in if libbfd does, by
115 # using the same condition.
116 AM_ZLIB
117
118 # BFD uses libdl when when plugins enabled.
119 AC_PLUGINS
120 AM_CONDITIONAL(PLUGINS, test "$plugins" = yes)
121 LT_INIT([dlopen])
122 AC_SUBST(lt_cv_dlopen_libs)
123
124 . ${srcdir}/../../bfd/configure.host
125
126 dnl Standard (and optional) simulator options.
127 dnl Eventually all simulators will support these.
128 dnl Do not add any here that cannot be supported by all simulators.
129 dnl Do not add similar but different options to a particular simulator,
130 dnl all shall eventually behave the same way.
131
132
133 dnl We don't use automake, but we still want to support
134 dnl --enable-maintainer-mode.
135 AM_MAINTAINER_MODE
136
137
138 dnl --enable-sim-debug is for developers of the simulator
139 dnl the allowable values are work-in-progress
140 AC_MSG_CHECKING([for sim debug setting])
141 sim_debug="0"
142 AC_ARG_ENABLE(sim-debug,
143 [AS_HELP_STRING([--enable-sim-debug=opts],
144 [Enable debugging flags (for developers of the sim itself)])],
145 [case "${enableval}" in
146 yes) sim_debug="7";;
147 no) sim_debug="0";;
148 *) sim_debug="($enableval)";;
149 esac])dnl
150 if test "$sim_debug" != "0"; then
151 AC_DEFINE_UNQUOTED([DEBUG], [$sim_debug], [Sim debug setting])
152 fi
153 AC_DEFINE_UNQUOTED([WITH_DEBUG], [$sim_debug], [Sim debug setting])
154 AC_MSG_RESULT($sim_debug)
155
156
157 dnl --enable-sim-stdio is for users of the simulator
158 dnl It determines if IO from the program is routed through STDIO (buffered)
159 AC_MSG_CHECKING([for sim stdio debug behavior])
160 sim_stdio="0"
161 AC_ARG_ENABLE(sim-stdio,
162 [AS_HELP_STRING([--enable-sim-stdio],
163 [Specify whether to use stdio for console input/output])],
164 [case "${enableval}" in
165 yes) sim_stdio="DO_USE_STDIO";;
166 no) sim_stdio="DONT_USE_STDIO";;
167 *) AC_MSG_ERROR([Unknown value $enableval passed to --enable-sim-stdio]);;
168 esac])dnl
169 AC_DEFINE_UNQUOTED([WITH_STDIO], [$sim_stdio], [How to route I/O])
170 AC_MSG_RESULT($sim_stdio)
171
172
173 dnl --enable-sim-trace is for users of the simulator
174 dnl The argument is either a bitmask of things to enable [exactly what is
175 dnl up to the simulator], or is a comma separated list of names of tracing
176 dnl elements to enable. The latter is only supported on simulators that
177 dnl use WITH_TRACE. Default to all tracing but internal debug.
178 AC_MSG_CHECKING([for sim trace settings])
179 sim_trace="~TRACE_debug"
180 AC_ARG_ENABLE(sim-trace,
181 [AS_HELP_STRING([--enable-sim-trace=opts],
182 [Enable tracing of simulated programs])],
183 [case "${enableval}" in
184 yes) sim_trace="-1";;
185 no) sim_trace="0";;
186 [[-0-9]]*)
187 sim_trace="'(${enableval})'";;
188 [[[:lower:]]]*)
189 sim_trace=""
190 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
191 if test x"$sim_trace" = x; then
192 sim_trace="(TRACE_$x"
193 else
194 sim_trace="${sim_trace}|TRACE_$x"
195 fi
196 done
197 sim_trace="$sim_trace)" ;;
198 esac])dnl
199 AC_DEFINE_UNQUOTED([WITH_TRACE], [$sim_trace], [Sim trace settings])
200 AC_MSG_RESULT($sim_trace)
201
202
203 dnl --enable-sim-profile
204 dnl The argument is either a bitmask of things to enable [exactly what is
205 dnl up to the simulator], or is a comma separated list of names of profiling
206 dnl elements to enable. The latter is only supported on simulators that
207 dnl use WITH_PROFILE.
208 AC_MSG_CHECKING([for sim profile settings])
209 profile="1"
210 sim_profile="-1"
211 AC_ARG_ENABLE(sim-profile,
212 [AS_HELP_STRING([--enable-sim-profile=opts], [Enable profiling flags])],
213 [case "${enableval}" in
214 yes) profile="1" sim_profile="-1";;
215 no) profile="0" sim_profile="0";;
216 [[-0-9]]*)
217 profile="(${enableval})" sim_profile="(${enableval})";;
218 [[a-z]]*)
219 profile="1"
220 sim_profile=""
221 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
222 if test x"$sim_profile" = x; then
223 sim_profile="(PROFILE_$x"
224 else
225 sim_profile="${sim_profile}|PROFILE_$x"
226 fi
227 done
228 sim_profile="$sim_profile)" ;;
229 esac])dnl
230 AC_DEFINE_UNQUOTED([PROFILE], [$profile], [Sim profile settings])
231 AC_DEFINE_UNQUOTED([WITH_PROFILE], [$sim_profile], [Sim profile settings])
232 AC_MSG_RESULT($sim_profile)
233
234
235 SIM_AC_OPTION_ASSERT
236 SIM_AC_OPTION_ENVIRONMENT
237 SIM_AC_OPTION_INLINE
238
239 ACX_PKGVERSION([SIM])
240 ACX_BUGURL([https://www.gnu.org/software/gdb/bugs/])
241 AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
242 AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
243
244 dnl Types used by common code
245 AC_TYPE_SIGNAL
246
247 dnl Detect exe extension
248 AC_EXEEXT
249
250 ]) dnl End of SIM_AC_COMMON
251
252
253 dnl Additional SIM options that can (optionally) be configured
254 dnl For optional simulator options, a macro SIM_AC_OPTION_* is defined.
255 dnl Simulators that wish to use the relevant option specify the macro
256 dnl in the simulator specific configure.ac file between the SIM_AC_COMMON
257 dnl and SIM_AC_OUTPUT lines.
258
259
260 dnl Specify the running environment.
261 dnl If the simulator invokes this in its configure.ac then without this option
262 dnl the default is the user environment and all are runtime selectable.
263 dnl If the simulator doesn't invoke this, only the user environment is
264 dnl supported.
265 dnl ??? Until there is demonstrable value in doing something more complicated,
266 dnl let's not.
267 AC_DEFUN([SIM_AC_OPTION_ENVIRONMENT],
268 [
269 AC_MSG_CHECKING([default sim environment setting])
270 sim_environment="ALL_ENVIRONMENT"
271 AC_ARG_ENABLE(sim-environment,
272 [AS_HELP_STRING([--enable-sim-environment=environment],
273 [Specify mixed, user, virtual or operating environment])],
274 [case "${enableval}" in
275 all | ALL) sim_environment="ALL_ENVIRONMENT";;
276 user | USER) sim_environment="USER_ENVIRONMENT";;
277 virtual | VIRTUAL) sim_environment="VIRTUAL_ENVIRONMENT";;
278 operating | OPERATING) sim_environment="OPERATING_ENVIRONMENT";;
279 *) AC_MSG_ERROR([Unknown value $enableval passed to --enable-sim-environment]);;
280 esac])dnl
281 AC_DEFINE_UNQUOTED([WITH_ENVIRONMENT], [$sim_environment], [Sim default environment])
282 AC_MSG_RESULT($sim_environment)
283 ])
284
285
286 dnl Specify the alignment restrictions of the target architecture.
287 dnl Without this option all possible alignment restrictions are accommodated.
288 dnl arg[1] is hardwired target alignment
289 dnl arg[2] is default target alignment
290 AC_DEFUN([SIM_AC_OPTION_ALIGNMENT],
291 wire_alignment="[$1]"
292 default_alignment="[$2]"
293 [
294 AC_ARG_ENABLE(sim-alignment,
295 [AS_HELP_STRING([--enable-sim-alignment=align],
296 [Specify strict, nonstrict or forced alignment of memory accesses])],
297 [case "${enableval}" in
298 strict | STRICT) sim_alignment="-DWITH_ALIGNMENT=STRICT_ALIGNMENT";;
299 nonstrict | NONSTRICT) sim_alignment="-DWITH_ALIGNMENT=NONSTRICT_ALIGNMENT";;
300 forced | FORCED) sim_alignment="-DWITH_ALIGNMENT=FORCED_ALIGNMENT";;
301 yes) if test x"$wire_alignment" != x; then
302 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
303 else
304 if test x"$default_alignment" != x; then
305 sim_alignment="-DWITH_ALIGNMENT=${default_alignment}"
306 else
307 echo "No hard-wired alignment for target $target" 1>&6
308 sim_alignment="-DWITH_ALIGNMENT=0"
309 fi
310 fi;;
311 no) if test x"$default_alignment" != x; then
312 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
313 else
314 if test x"$wire_alignment" != x; then
315 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${wire_alignment}"
316 else
317 echo "No default alignment for target $target" 1>&6
318 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=0"
319 fi
320 fi;;
321 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-alignment"); sim_alignment="";;
322 esac
323 if test x"$silent" != x"yes" && test x"$sim_alignment" != x""; then
324 echo "Setting alignment flags = $sim_alignment" 6>&1
325 fi],
326 [if test x"$default_alignment" != x; then
327 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
328 else
329 if test x"$wire_alignment" != x; then
330 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
331 else
332 sim_alignment=
333 fi
334 fi])dnl
335 ])dnl
336 AC_SUBST(sim_alignment)
337
338
339 dnl Conditionally compile in assertion statements.
340 AC_DEFUN([SIM_AC_OPTION_ASSERT],
341 [
342 AC_MSG_CHECKING([whether to enable sim asserts])
343 sim_assert="1"
344 AC_ARG_ENABLE(sim-assert,
345 [AS_HELP_STRING([--enable-sim-assert],
346 [Specify whether to perform random assertions])],
347 [case "${enableval}" in
348 yes) sim_assert="1";;
349 no) sim_assert="0";;
350 *) AC_MSG_ERROR([--enable-sim-assert does not take a value]);;
351 esac])dnl
352 AC_DEFINE_UNQUOTED([WITH_ASSERT], [$sim_assert], [Sim assert settings])
353 AC_MSG_RESULT($sim_assert)
354 ])
355
356
357
358 dnl --enable-sim-bitsize is for developers of the simulator
359 dnl It specifies the number of BITS in the target.
360 dnl arg[1] is the number of bits in a word
361 dnl arg[2] is the number assigned to the most significant bit
362 dnl arg[3] is the number of bits in an address
363 dnl arg[4] is the number of bits in an OpenFirmware cell.
364 dnl FIXME: this information should be obtained from bfd/archure
365 AC_DEFUN([SIM_AC_OPTION_BITSIZE],
366 wire_word_bitsize="[$1]"
367 wire_word_msb="[$2]"
368 wire_address_bitsize="[$3]"
369 wire_cell_bitsize="[$4]"
370 [AC_ARG_ENABLE(sim-bitsize,
371 [AS_HELP_STRING([--enable-sim-bitsize=N], [Specify target bitsize (32 or 64)])],
372 [sim_bitsize=
373 case "${enableval}" in
374 64,63 | 64,63,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63";;
375 32,31 | 32,31,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31";;
376 64,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
377 32,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
378 32) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
379 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31"
380 else
381 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0"
382 fi ;;
383 64) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
384 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63"
385 else
386 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=0"
387 fi ;;
388 *) AC_MSG_ERROR("--enable-sim-bitsize was given $enableval. Expected 32 or 64") ;;
389 esac
390 # address bitsize
391 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9]]*,*//"`
392 case x"${tmp}" in
393 x ) ;;
394 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=32" ;;
395 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=64" ;;
396 * ) AC_MSG_ERROR("--enable-sim-bitsize was given address size $enableval. Expected 32 or 64") ;;
397 esac
398 # cell bitsize
399 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9*]]*,*[[0-9]]*,*//"`
400 case x"${tmp}" in
401 x ) ;;
402 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=32" ;;
403 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=64" ;;
404 * ) AC_MSG_ERROR("--enable-sim-bitsize was given cell size $enableval. Expected 32 or 64") ;;
405 esac
406 if test x"$silent" != x"yes" && test x"$sim_bitsize" != x""; then
407 echo "Setting bitsize flags = $sim_bitsize" 6>&1
408 fi],
409 [sim_bitsize=""
410 if test x"$wire_word_bitsize" != x; then
411 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_BITSIZE=$wire_word_bitsize"
412 fi
413 if test x"$wire_word_msb" != x; then
414 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_MSB=$wire_word_msb"
415 fi
416 if test x"$wire_address_bitsize" != x; then
417 sim_bitsize="$sim_bitsize -DWITH_TARGET_ADDRESS_BITSIZE=$wire_address_bitsize"
418 fi
419 if test x"$wire_cell_bitsize" != x; then
420 sim_bitsize="$sim_bitsize -DWITH_TARGET_CELL_BITSIZE=$wire_cell_bitsize"
421 fi])dnl
422 ])
423 AC_SUBST(sim_bitsize)
424
425
426
427 dnl --enable-sim-endian={yes,no,big,little} is for simulators
428 dnl that support both big and little endian targets.
429 dnl arg[1] is hardwired target endianness.
430 dnl arg[2] is default target endianness.
431 AC_DEFUN([SIM_AC_OPTION_ENDIAN],
432 [
433 wire_endian="[$1]"
434 default_endian="[$2]"
435 AC_ARG_ENABLE(sim-endian,
436 [AS_HELP_STRING([--enable-sim-endian=endian],
437 [Specify target byte endian orientation])],
438 [case "${enableval}" in
439 b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_BIG";;
440 l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_LITTLE";;
441 yes) if test x"$wire_endian" != x; then
442 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
443 else
444 if test x"$default_endian" != x; then
445 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
446 else
447 echo "No hard-wired endian for target $target" 1>&6
448 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_UNKNOWN"
449 fi
450 fi;;
451 no) if test x"$default_endian" != x; then
452 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
453 else
454 if test x"$wire_endian" != x; then
455 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
456 else
457 echo "No default endian for target $target" 1>&6
458 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_UNKNOWN"
459 fi
460 fi;;
461 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-endian"); sim_endian="";;
462 esac
463 if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
464 echo "Setting endian flags = $sim_endian" 6>&1
465 fi],
466 [if test x"$default_endian" != x; then
467 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
468 else
469 if test x"$wire_endian" != x; then
470 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
471 else
472 sim_endian=
473 fi
474 fi])dnl
475 ])
476 AC_SUBST(sim_endian)
477
478
479 dnl --enable-sim-float is for developers of the simulator
480 dnl It specifies the presence of hardware floating point
481 dnl And optionally the bitsize of the floating point register.
482 dnl arg[1] specifies the presence (or absence) of floating point hardware
483 dnl arg[2] specifies the number of bits in a floating point register
484 AC_DEFUN([SIM_AC_OPTION_FLOAT],
485 [
486 default_sim_float="[$1]"
487 default_sim_float_bitsize="[$2]"
488 AC_ARG_ENABLE(sim-float,
489 [AS_HELP_STRING([--enable-sim-float],
490 [Specify that the target processor has floating point hardware])],
491 [case "${enableval}" in
492 yes | hard) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT";;
493 no | soft) sim_float="-DWITH_FLOATING_POINT=SOFT_FLOATING_POINT";;
494 32) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=32";;
495 64) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=64";;
496 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-float"); sim_float="";;
497 esac
498 if test x"$silent" != x"yes" && test x"$sim_float" != x""; then
499 echo "Setting float flags = $sim_float" 6>&1
500 fi],[
501 sim_float=
502 if test x"${default_sim_float}" != x""; then
503 sim_float="-DWITH_FLOATING_POINT=${default_sim_float}"
504 fi
505 if test x"${default_sim_float_bitsize}" != x""; then
506 sim_float="$sim_float -DWITH_TARGET_FLOATING_POINT_BITSIZE=${default_sim_float_bitsize}"
507 fi
508 ])dnl
509 ])
510 AC_SUBST(sim_float)
511
512
513 dnl The argument is the default cache size if none is specified.
514 AC_DEFUN([SIM_AC_OPTION_SCACHE],
515 [
516 default_sim_scache="ifelse([$1],,0,[$1])"
517 AC_ARG_ENABLE(sim-scache,
518 [AS_HELP_STRING([--enable-sim-scache=size],
519 [Specify simulator execution cache size])],
520 [case "${enableval}" in
521 yes) sim_scache="-DWITH_SCACHE=${default_sim_scache}";;
522 no) sim_scache="-DWITH_SCACHE=0" ;;
523 [[0-9]]*) sim_scache="-DWITH_SCACHE=${enableval}";;
524 *) AC_MSG_ERROR("Bad value $enableval passed to --enable-sim-scache");
525 sim_scache="";;
526 esac
527 if test x"$silent" != x"yes" && test x"$sim_scache" != x""; then
528 echo "Setting scache size = $sim_scache" 6>&1
529 fi],[sim_scache="-DWITH_SCACHE=${default_sim_scache}"])
530 ])
531 AC_SUBST(sim_scache)
532
533
534 dnl The argument is the default model if none is specified.
535 AC_DEFUN([SIM_AC_OPTION_DEFAULT_MODEL],
536 [
537 default_sim_default_model="ifelse([$1],,0,[$1])"
538 AC_ARG_ENABLE(sim-default-model,
539 [AS_HELP_STRING([--enable-sim-default-model=model],
540 [Specify default model to simulate])],
541 [case "${enableval}" in
542 yes|no) AC_MSG_ERROR("Missing argument to --enable-sim-default-model");;
543 *) sim_default_model="-DWITH_DEFAULT_MODEL='\"${enableval}\"'";;
544 esac
545 if test x"$silent" != x"yes" && test x"$sim_default_model" != x""; then
546 echo "Setting default model = $sim_default_model" 6>&1
547 fi],[sim_default_model="-DWITH_DEFAULT_MODEL='\"${default_sim_default_model}\"'"])
548 ])
549 AC_SUBST(sim_default_model)
550
551
552 dnl --enable-sim-hardware is for users of the simulator
553 dnl arg[1] Enable sim-hw by default? ("yes" or "no")
554 dnl arg[2] is a space separated list of devices that override the defaults
555 dnl arg[3] is a space separated list of extra target specific devices.
556 AC_DEFUN([SIM_AC_OPTION_HARDWARE],
557 [
558 if test "[$2]"; then
559 hardware="[$2]"
560 else
561 hardware="cfi core pal glue"
562 fi
563 hardware="$hardware [$3]"
564
565 sim_hw_cflags="-DWITH_HW=1"
566 sim_hw="$hardware"
567 sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([[^ ]][[^ ]]*\)/dv-\1.o/g'`"
568
569 AC_ARG_ENABLE(sim-hardware,
570 [AS_HELP_STRING([--enable-sim-hardware=LIST],
571 [Specify the hardware to be included in the build.])],
572 ,[enable_sim_hardware="[$1]"])
573 case ${enable_sim_hardware} in
574 yes|no) ;;
575 ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
576 *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
577 *) hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
578 esac
579
580 if test "$enable_sim_hardware" = no; then
581 sim_hw_objs=
582 sim_hw_cflags="-DWITH_HW=0"
583 sim_hw=
584 else
585 sim_hw_cflags="-DWITH_HW=1"
586 # remove duplicates
587 sim_hw=""
588 sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
589 for i in $hardware ; do
590 case " $sim_hw " in
591 *" $i "*) ;;
592 *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
593 esac
594 done
595 # mingw does not support sockser
596 case ${host} in
597 *mingw*) ;;
598 *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
599 # that you instatiate. Instead, other code will call into it directly.
600 # At some point, we should convert it over.
601 sim_hw_objs="$sim_hw_objs dv-sockser.o"
602 AC_DEFINE_UNQUOTED(
603 [HAVE_DV_SOCKSER], 1, [Define if dv-sockser is usable.])
604 ;;
605 esac
606 if test x"$silent" != x"yes"; then
607 echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
608 fi
609 dnl Some devices require extra libraries.
610 case " $hardware " in
611 *" cfi "*) AC_CHECK_LIB(m, log2);;
612 esac
613 fi
614 ])
615 AC_SUBST(sim_hw_cflags)
616 AC_SUBST(sim_hw_objs)
617 AC_SUBST(sim_hw)
618
619
620 dnl --enable-sim-inline is for users that wish to ramp up the simulator's
621 dnl performance by inlining functions.
622 dnl Default sims to no inlining.
623 AC_DEFUN([SIM_AC_OPTION_INLINE],
624 [
625 sim_inline="-DDEFAULT_INLINE=m4_ifblank([$1],[0],[$1])"
626 AC_ARG_ENABLE(sim-inline,
627 [AS_HELP_STRING([--enable-sim-inline=inlines],
628 [Specify which functions should be inlined])],
629 [sim_inline=""
630 case "$enableval" in
631 no) sim_inline="-DDEFAULT_INLINE=0";;
632 0) sim_inline="-DDEFAULT_INLINE=0";;
633 yes | 2) sim_inline="-DDEFAULT_INLINE=ALL_C_INLINE";;
634 1) sim_inline="-DDEFAULT_INLINE=INLINE_LOCALS";;
635 *) for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
636 new_flag=""
637 case "$x" in
638 *_INLINE=*) new_flag="-D$x";;
639 *=*) new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
640 *_INLINE) new_flag="-D$x=ALL_C_INLINE";;
641 *) new_flag="-D$x""_INLINE=ALL_C_INLINE";;
642 esac
643 if test x"$sim_inline" = x""; then
644 sim_inline="$new_flag"
645 else
646 sim_inline="$sim_inline $new_flag"
647 fi
648 done;;
649 esac
650 if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
651 echo "Setting inline flags = $sim_inline" 6>&1
652 fi])dnl
653 ])
654 AC_SUBST(sim_inline)
655
656
657 AC_DEFUN([SIM_AC_OPTION_RESERVED_BITS],
658 [
659 default_sim_reserved_bits="ifelse([$1],,1,[$1])"
660 AC_ARG_ENABLE(sim-reserved-bits,
661 [AS_HELP_STRING([--enable-sim-reserved-bits],
662 [Specify whether to check reserved bits in instruction])],
663 [case "${enableval}" in
664 yes) sim_reserved_bits="-DWITH_RESERVED_BITS=1";;
665 no) sim_reserved_bits="-DWITH_RESERVED_BITS=0";;
666 *) AC_MSG_ERROR("--enable-sim-reserved-bits does not take a value"); sim_reserved_bits="";;
667 esac
668 if test x"$silent" != x"yes" && test x"$sim_reserved_bits" != x""; then
669 echo "Setting reserved flags = $sim_reserved_bits" 6>&1
670 fi],[sim_reserved_bits="-DWITH_RESERVED_BITS=${default_sim_reserved_bits}"])dnl
671 ])
672 AC_SUBST(sim_reserved_bits)
673
674
675 AC_DEFUN([SIM_AC_OPTION_SMP],
676 [
677 AC_MSG_CHECKING([number of sim cpus to support])
678 default_sim_smp="ifelse([$1],,5,[$1])"
679 sim_smp="$default_sim_smp""
680 AC_ARG_ENABLE(sim-smp,
681 [AS_HELP_STRING([--enable-sim-smp=n],
682 [Specify number of processors to configure for (default ${default_sim_smp})])],
683 [case "${enableval}" in
684 yes) sim_smp="5";;
685 no) sim_smp="0";;
686 *) sim_smp="$enableval";;
687 esac])dnl
688 sim_igen_smp="-N ${sim_smp}"
689 AC_DEFINE_UNQUOTED([WITH_SMP], [$sim_smp], [Sim SMP settings])
690 AC_MSG_RESULT($sim_smp)
691 ])
692
693
694 AC_DEFUN([SIM_AC_OPTION_XOR_ENDIAN],
695 [
696 AC_MSG_CHECKING([for xor endian support])
697 default_sim_xor_endian="ifelse([$1],,8,[$1])"
698 sim_xor_endian="$default_sim_xor_endian"
699 AC_ARG_ENABLE(sim-xor-endian,
700 [AS_HELP_STRING([--enable-sim-xor-endian=n],
701 [Specify number bytes involved in XOR bi-endian mode (default ${default_sim_xor_endian})])],
702 [case "${enableval}" in
703 yes) sim_xor_endian="8";;
704 no) sim_xor_endian="0";;
705 *) sim_xor_endian="$enableval";;
706 esac])dnl
707 AC_DEFINE_UNQUOTED([WITH_XOR_ENDIAN], [$sim_xor_endian], [Sim XOR endian settings])
708 AC_MSG_RESULT($sim_smp)
709 ])
710
711
712 dnl --enable-build-warnings is for developers of the simulator.
713 dnl it enables extra GCC specific warnings.
714 AC_DEFUN([SIM_AC_OPTION_WARNINGS],
715 [
716 AC_ARG_ENABLE(werror,
717 AS_HELP_STRING([--enable-werror], [treat compile warnings as errors]),
718 [case "${enableval}" in
719 yes | y) ERROR_ON_WARNING="yes" ;;
720 no | n) ERROR_ON_WARNING="no" ;;
721 *) AC_MSG_ERROR(bad value ${enableval} for --enable-werror) ;;
722 esac])
723
724 # Enable -Werror by default when using gcc
725 if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
726 ERROR_ON_WARNING=yes
727 fi
728
729 WERROR_CFLAGS=""
730 if test "${ERROR_ON_WARNING}" = yes ; then
731 # NOTE: Disabled in the sim dir due to most sims generating warnings.
732 # WERROR_CFLAGS="-Werror"
733 true
734 fi
735
736 build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \
737 -Wpointer-sign \
738 -Wno-unused -Wunused-value -Wunused-function \
739 -Wno-switch -Wno-char-subscripts -Wmissing-prototypes
740 -Wdeclaration-after-statement -Wempty-body -Wmissing-parameter-type \
741 -Wold-style-declaration -Wold-style-definition"
742
743 # Enable -Wno-format by default when using gcc on mingw since many
744 # GCC versions complain about %I64.
745 case "${host}" in
746 *-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;;
747 *) build_warnings="$build_warnings -Wformat-nonliteral" ;;
748 esac
749
750 AC_ARG_ENABLE(build-warnings,
751 AS_HELP_STRING([--enable-build-warnings], [enable build-time compiler warnings if gcc is used]),
752 [case "${enableval}" in
753 yes) ;;
754 no) build_warnings="-w";;
755 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
756 build_warnings="${build_warnings} ${t}";;
757 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
758 build_warnings="${t} ${build_warnings}";;
759 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
760 esac
761 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
762 echo "Setting compiler warning flags = $build_warnings" 6>&1
763 fi])dnl
764 AC_ARG_ENABLE(sim-build-warnings,
765 AS_HELP_STRING([--enable-sim-build-warnings], [enable SIM specific build-time compiler warnings if gcc is used]),
766 [case "${enableval}" in
767 yes) ;;
768 no) build_warnings="-w";;
769 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
770 build_warnings="${build_warnings} ${t}";;
771 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
772 build_warnings="${t} ${build_warnings}";;
773 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
774 esac
775 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
776 echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
777 fi])dnl
778 WARN_CFLAGS=""
779 if test "x${build_warnings}" != x -a "x$GCC" = xyes
780 then
781 AC_MSG_CHECKING(compiler warning flags)
782 # Separate out the -Werror flag as some files just cannot be
783 # compiled with it enabled.
784 for w in ${build_warnings}; do
785 case $w in
786 -Werr*) WERROR_CFLAGS=-Werror ;;
787 *) # Check that GCC accepts it
788 saved_CFLAGS="$CFLAGS"
789 CFLAGS="$CFLAGS $w"
790 AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
791 CFLAGS="$saved_CFLAGS"
792 esac
793 done
794 AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
795 fi
796 ])
797 AC_SUBST(WARN_CFLAGS)
798 AC_SUBST(WERROR_CFLAGS)
799
800
801 dnl Generate the Makefile in a target specific directory.
802 dnl Substitutions aren't performed on the file in AC_SUBST_FILE,
803 dnl so this is a cover macro to tuck the details away of how we cope.
804 dnl We cope by having autoconf generate two files and then merge them into
805 dnl one afterwards. The two pieces of the common fragment are inserted into
806 dnl the target's fragment at the appropriate points.
807
808 AC_DEFUN([SIM_AC_OUTPUT],
809 [
810 dnl Make @cgen_breaks@ non-null only if the sim uses CGEN.
811 cgen_breaks=""
812 if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
813 cgen_breaks="break cgen_rtx_error";
814 fi
815 AC_SUBST(cgen_breaks)
816 AC_CONFIG_FILES(Makefile.sim:Makefile.in)
817 AC_CONFIG_FILES(Make-common.sim:../common/Make-common.in)
818 AC_CONFIG_FILES(.gdbinit:../common/gdbinit.in)
819 AC_CONFIG_COMMANDS([Makefile],
820 [echo "Merging Makefile.sim+Make-common.sim into Makefile ..."
821 rm -f Makesim1.tmp Makesim2.tmp Makefile
822 sed -n -e '/^## COMMON_PRE_/,/^## End COMMON_PRE_/ p' <Make-common.sim >Makesim1.tmp
823 sed -n -e '/^## COMMON_POST_/,/^## End COMMON_POST_/ p' <Make-common.sim >Makesim2.tmp
824 sed -e '/^## COMMON_PRE_/ r Makesim1.tmp' \
825 -e '/^## COMMON_POST_/ r Makesim2.tmp' \
826 <Makefile.sim >Makefile
827 rm -f Makefile.sim Make-common.sim Makesim1.tmp Makesim2.tmp
828 ])
829 AC_CONFIG_COMMANDS([stamp-h], [echo > stamp-h])
830 AC_OUTPUT
831 ])
832
833 sinclude(../../config/gettext-sister.m4)
834 sinclude(../../config/acx.m4)
835
836 dnl --enable-cgen-maint support
837 AC_DEFUN([SIM_AC_OPTION_CGEN_MAINT],
838 [
839 cgen_maint=no
840 dnl Default is to use one in build tree.
841 cgen=guile
842 cgendir='$(srcdir)/../../cgen'
843 dnl Having --enable-maintainer-mode take arguments is another way to go.
844 dnl ??? One can argue --with is more appropriate if one wants to specify
845 dnl a directory name, but what we're doing here is an enable/disable kind
846 dnl of thing and specifying both --enable and --with is klunky.
847 dnl If you reeely want this to be --with, go ahead and change it.
848 AC_ARG_ENABLE(cgen-maint,
849 [AS_HELP_STRING([--enable-cgen-maint[=DIR]], [build cgen generated files])],
850 [case "${enableval}" in
851 yes) cgen_maint=yes ;;
852 no) cgen_maint=no ;;
853 *)
854 # Argument is a directory where cgen can be found. In some
855 # future world cgen could be installable, but right now this
856 # is not the case. Instead we assume the directory is a path
857 # to the cgen source tree.
858 cgen_maint=yes
859 if test -r ${enableval}/iformat.scm; then
860 # This looks like a cgen source tree.
861 cgendir=${enableval}
862 else
863 AC_MSG_ERROR(${enableval} doesn't look like a cgen source tree)
864 fi
865 ;;
866 esac])dnl
867 dnl AM_CONDITIONAL(CGEN_MAINT, test x${cgen_maint} != xno)
868 if test x${cgen_maint} != xno ; then
869 CGEN_MAINT=''
870 else
871 CGEN_MAINT='#'
872 fi
873 AC_SUBST(CGEN_MAINT)
874 AC_SUBST(cgendir)
875 AC_SUBST(cgen)
876 ])