gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / sim / common / acinclude.m4
... / ...
CommitLineData
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.
22m4_include(../../config/override.m4)
23sinclude([../../config/zlib.m4])
24m4_include([../../config/plugins.m4])
25m4_include([../../libtool.m4])
26m4_include([../../ltoptions.m4])
27m4_include([../../ltsugar.m4])
28m4_include([../../ltversion.m4])
29m4_include([../../lt~obsolete.m4])
30sinclude([../../config/depstand.m4])
31
32AC_DEFUN([SIM_AC_COMMON],
33[
34AC_REQUIRE([AC_PROG_CC])
35# autoconf.info says this should be called right after AC_INIT.
36AC_CONFIG_HEADER(ifelse([$1],,config.h,[$1]):config.in)
37AC_CANONICAL_SYSTEM
38AC_USE_SYSTEM_EXTENSIONS
39AC_C_BIGENDIAN
40AC_ARG_PROGRAM
41AC_PROG_INSTALL
42
43# Put a plausible default for CC_FOR_BUILD in Makefile.
44if 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
50fi
51AC_SUBST(CC_FOR_BUILD)
52
53AC_SUBST(CFLAGS)
54AC_SUBST(HDEFINES)
55AR=${AR-ar}
56AC_SUBST(AR)
57AC_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.
62PACKAGE=sim
63AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package. ])
64AC_SUBST(PACKAGE)
65
66# Dependency checking.
67ZW_CREATE_DEPDIR
68ZW_PROG_COMPILER_DEPENDENCIES([CC])
69
70# Check for the 'make' the user wants to use.
71AC_CHECK_PROGS(MAKE, make)
72MAKE_IS_GNU=
73case "`$MAKE --version 2>&1 | sed 1q`" in
74 *GNU*)
75 MAKE_IS_GNU=yes
76 ;;
77esac
78AM_CONDITIONAL(GMAKE, test "$MAKE_IS_GNU" = yes)
79
80dnl We don't use gettext, but bfd does. So we do the appropriate checks
81dnl to see if there are intl libraries we should link against.
82ALL_LINGUAS=
83ZW_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*.
88AC_CHECK_HEADERS(stdlib.h string.h strings.h unistd.h time.h)
89AC_CHECK_HEADERS(sys/time.h sys/times.h sys/resource.h sys/mman.h)
90AC_CHECK_HEADERS(fcntl.h fpu_control.h)
91AC_CHECK_HEADERS(dlfcn.h errno.h sys/stat.h)
92AC_CHECK_FUNCS(getrusage time sigaction __setfpucw)
93AC_CHECK_FUNCS(mmap munmap lstat truncate ftruncate posix_fallocate)
94AC_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]])
105AC_CHECK_TYPES(socklen_t, [], [],
106[#include <sys/types.h>
107#include <sys/socket.h>
108])
109
110# Check for socket libraries
111AC_CHECK_LIB(socket, bind)
112AC_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.
116AM_ZLIB
117
118# BFD uses libdl when when plugins enabled.
119AC_PLUGINS
120AM_CONDITIONAL(PLUGINS, test "$plugins" = yes)
121LT_INIT([dlopen])
122AC_SUBST(lt_cv_dlopen_libs)
123
124. ${srcdir}/../../bfd/configure.host
125
126dnl Standard (and optional) simulator options.
127dnl Eventually all simulators will support these.
128dnl Do not add any here that cannot be supported by all simulators.
129dnl Do not add similar but different options to a particular simulator,
130dnl all shall eventually behave the same way.
131
132
133dnl We don't use automake, but we still want to support
134dnl --enable-maintainer-mode.
135AM_MAINTAINER_MODE
136
137
138dnl --enable-sim-debug is for developers of the simulator
139dnl the allowable values are work-in-progress
140AC_MSG_CHECKING([for sim debug setting])
141sim_debug="0"
142AC_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)";;
149esac])dnl
150if test "$sim_debug" != "0"; then
151 AC_DEFINE_UNQUOTED([DEBUG], [$sim_debug], [Sim debug setting])
152fi
153AC_DEFINE_UNQUOTED([WITH_DEBUG], [$sim_debug], [Sim debug setting])
154AC_MSG_RESULT($sim_debug)
155
156
157dnl --enable-sim-stdio is for users of the simulator
158dnl It determines if IO from the program is routed through STDIO (buffered)
159AC_MSG_CHECKING([for sim stdio debug behavior])
160sim_stdio="0"
161AC_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]);;
168esac])dnl
169AC_DEFINE_UNQUOTED([WITH_STDIO], [$sim_stdio], [How to route I/O])
170AC_MSG_RESULT($sim_stdio)
171
172
173dnl --enable-sim-trace is for users of the simulator
174dnl The argument is either a bitmask of things to enable [exactly what is
175dnl up to the simulator], or is a comma separated list of names of tracing
176dnl elements to enable. The latter is only supported on simulators that
177dnl use WITH_TRACE. Default to all tracing but internal debug.
178AC_MSG_CHECKING([for sim trace settings])
179sim_trace="~TRACE_debug"
180AC_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)" ;;
198esac])dnl
199AC_DEFINE_UNQUOTED([WITH_TRACE], [$sim_trace], [Sim trace settings])
200AC_MSG_RESULT($sim_trace)
201
202
203dnl --enable-sim-profile
204dnl The argument is either a bitmask of things to enable [exactly what is
205dnl up to the simulator], or is a comma separated list of names of profiling
206dnl elements to enable. The latter is only supported on simulators that
207dnl use WITH_PROFILE.
208AC_MSG_CHECKING([for sim profile settings])
209profile="1"
210sim_profile="-1"
211AC_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)" ;;
229esac])dnl
230AC_DEFINE_UNQUOTED([PROFILE], [$profile], [Sim profile settings])
231AC_DEFINE_UNQUOTED([WITH_PROFILE], [$sim_profile], [Sim profile settings])
232AC_MSG_RESULT($sim_profile)
233
234
235SIM_AC_OPTION_ASSERT
236SIM_AC_OPTION_ENVIRONMENT
237SIM_AC_OPTION_INLINE
238
239ACX_PKGVERSION([SIM])
240ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
241AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
242AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
243
244dnl Types used by common code
245AC_TYPE_SIGNAL
246
247dnl Detect exe extension
248AC_EXEEXT
249
250]) dnl End of SIM_AC_COMMON
251
252
253dnl Additional SIM options that can (optionally) be configured
254dnl For optional simulator options, a macro SIM_AC_OPTION_* is defined.
255dnl Simulators that wish to use the relevant option specify the macro
256dnl in the simulator specific configure.ac file between the SIM_AC_COMMON
257dnl and SIM_AC_OUTPUT lines.
258
259
260dnl Specify the running environment.
261dnl If the simulator invokes this in its configure.ac then without this option
262dnl the default is the user environment and all are runtime selectable.
263dnl If the simulator doesn't invoke this, only the user environment is
264dnl supported.
265dnl ??? Until there is demonstrable value in doing something more complicated,
266dnl let's not.
267AC_DEFUN([SIM_AC_OPTION_ENVIRONMENT],
268[
269AC_MSG_CHECKING([default sim environment setting])
270sim_environment="ALL_ENVIRONMENT"
271AC_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]);;
280esac])dnl
281AC_DEFINE_UNQUOTED([WITH_ENVIRONMENT], [$sim_environment], [Sim default environment])
282AC_MSG_RESULT($sim_environment)
283])
284
285
286dnl Specify the alignment restrictions of the target architecture.
287dnl Without this option all possible alignment restrictions are accommodated.
288dnl arg[1] is hardwired target alignment
289dnl arg[2] is default target alignment
290AC_DEFUN([SIM_AC_OPTION_ALIGNMENT],
291wire_alignment="[$1]"
292default_alignment="[$2]"
293[
294AC_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="";;
322esac
323if test x"$silent" != x"yes" && test x"$sim_alignment" != x""; then
324 echo "Setting alignment flags = $sim_alignment" 6>&1
325fi],
326[if test x"$default_alignment" != x; then
327 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
328else
329 if test x"$wire_alignment" != x; then
330 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
331 else
332 sim_alignment=
333 fi
334fi])dnl
335])dnl
336AC_SUBST(sim_alignment)
337
338
339dnl Conditionally compile in assertion statements.
340AC_DEFUN([SIM_AC_OPTION_ASSERT],
341[
342AC_MSG_CHECKING([whether to enable sim asserts])
343sim_assert="1"
344AC_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]);;
351esac])dnl
352AC_DEFINE_UNQUOTED([WITH_ASSERT], [$sim_assert], [Sim assert settings])
353AC_MSG_RESULT($sim_assert)
354])
355
356
357
358dnl --enable-sim-bitsize is for developers of the simulator
359dnl It specifies the number of BITS in the target.
360dnl arg[1] is the number of bits in a word
361dnl arg[2] is the number assigned to the most significant bit
362dnl arg[3] is the number of bits in an address
363dnl arg[4] is the number of bits in an OpenFirmware cell.
364dnl FIXME: this information should be obtained from bfd/archure
365AC_DEFUN([SIM_AC_OPTION_BITSIZE],
366wire_word_bitsize="[$1]"
367wire_word_msb="[$2]"
368wire_address_bitsize="[$3]"
369wire_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=
373case "${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") ;;
389esac
390# address bitsize
391tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9]]*,*//"`
392case 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") ;;
397esac
398# cell bitsize
399tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9*]]*,*[[0-9]]*,*//"`
400case 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") ;;
405esac
406if test x"$silent" != x"yes" && test x"$sim_bitsize" != x""; then
407 echo "Setting bitsize flags = $sim_bitsize" 6>&1
408fi],
409[sim_bitsize=""
410if test x"$wire_word_bitsize" != x; then
411 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_BITSIZE=$wire_word_bitsize"
412fi
413if test x"$wire_word_msb" != x; then
414 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_MSB=$wire_word_msb"
415fi
416if test x"$wire_address_bitsize" != x; then
417 sim_bitsize="$sim_bitsize -DWITH_TARGET_ADDRESS_BITSIZE=$wire_address_bitsize"
418fi
419if test x"$wire_cell_bitsize" != x; then
420 sim_bitsize="$sim_bitsize -DWITH_TARGET_CELL_BITSIZE=$wire_cell_bitsize"
421fi])dnl
422])
423AC_SUBST(sim_bitsize)
424
425
426
427dnl --enable-sim-endian={yes,no,big,little} is for simulators
428dnl that support both big and little endian targets.
429dnl arg[1] is hardwired target endianness.
430dnl arg[2] is default target endianness.
431AC_DEFUN([SIM_AC_OPTION_ENDIAN],
432[
433wire_endian="[$1]"
434default_endian="[$2]"
435AC_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="";;
462esac
463if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
464 echo "Setting endian flags = $sim_endian" 6>&1
465fi],
466[if test x"$default_endian" != x; then
467 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
468else
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
474fi])dnl
475])
476AC_SUBST(sim_endian)
477
478
479dnl --enable-sim-float is for developers of the simulator
480dnl It specifies the presence of hardware floating point
481dnl And optionally the bitsize of the floating point register.
482dnl arg[1] specifies the presence (or absence) of floating point hardware
483dnl arg[2] specifies the number of bits in a floating point register
484AC_DEFUN([SIM_AC_OPTION_FLOAT],
485[
486default_sim_float="[$1]"
487default_sim_float_bitsize="[$2]"
488AC_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="";;
497esac
498if test x"$silent" != x"yes" && test x"$sim_float" != x""; then
499 echo "Setting float flags = $sim_float" 6>&1
500fi],[
501sim_float=
502if test x"${default_sim_float}" != x""; then
503 sim_float="-DWITH_FLOATING_POINT=${default_sim_float}"
504fi
505if test x"${default_sim_float_bitsize}" != x""; then
506 sim_float="$sim_float -DWITH_TARGET_FLOATING_POINT_BITSIZE=${default_sim_float_bitsize}"
507fi
508])dnl
509])
510AC_SUBST(sim_float)
511
512
513dnl The argument is the default cache size if none is specified.
514AC_DEFUN([SIM_AC_OPTION_SCACHE],
515[
516default_sim_scache="ifelse([$1],,0,[$1])"
517AC_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="";;
526esac
527if test x"$silent" != x"yes" && test x"$sim_scache" != x""; then
528 echo "Setting scache size = $sim_scache" 6>&1
529fi],[sim_scache="-DWITH_SCACHE=${default_sim_scache}"])
530])
531AC_SUBST(sim_scache)
532
533
534dnl The argument is the default model if none is specified.
535AC_DEFUN([SIM_AC_OPTION_DEFAULT_MODEL],
536[
537default_sim_default_model="ifelse([$1],,0,[$1])"
538AC_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}\"'";;
544esac
545if test x"$silent" != x"yes" && test x"$sim_default_model" != x""; then
546 echo "Setting default model = $sim_default_model" 6>&1
547fi],[sim_default_model="-DWITH_DEFAULT_MODEL='\"${default_sim_default_model}\"'"])
548])
549AC_SUBST(sim_default_model)
550
551
552dnl --enable-sim-hardware is for users of the simulator
553dnl arg[1] Enable sim-hw by default? ("yes" or "no")
554dnl arg[2] is a space separated list of devices that override the defaults
555dnl arg[3] is a space separated list of extra target specific devices.
556AC_DEFUN([SIM_AC_OPTION_HARDWARE],
557[
558if test "[$2]"; then
559 hardware="[$2]"
560else
561 hardware="cfi core pal glue"
562fi
563hardware="$hardware [$3]"
564
565sim_hw_cflags="-DWITH_HW=1"
566sim_hw="$hardware"
567sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([[^ ]][[^ ]]*\)/dv-\1.o/g'`"
568
569AC_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]"])
573case ${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/,/ /'`"'';;
578esac
579
580if test "$enable_sim_hardware" = no; then
581 sim_hw_objs=
582 sim_hw_cflags="-DWITH_HW=0"
583 sim_hw=
584else
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
613fi
614])
615AC_SUBST(sim_hw_cflags)
616AC_SUBST(sim_hw_objs)
617AC_SUBST(sim_hw)
618
619
620dnl --enable-sim-inline is for users that wish to ramp up the simulator's
621dnl performance by inlining functions.
622dnl Default sims to no inlining.
623AC_DEFUN([SIM_AC_OPTION_INLINE],
624[
625sim_inline="-DDEFAULT_INLINE=m4_ifblank([$1],[0],[$1])"
626AC_ARG_ENABLE(sim-inline,
627[AS_HELP_STRING([--enable-sim-inline=inlines],
628 [Specify which functions should be inlined])],
629[sim_inline=""
630case "$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;;
649esac
650if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
651 echo "Setting inline flags = $sim_inline" 6>&1
652fi])dnl
653])
654AC_SUBST(sim_inline)
655
656
657AC_DEFUN([SIM_AC_OPTION_RESERVED_BITS],
658[
659default_sim_reserved_bits="ifelse([$1],,1,[$1])"
660AC_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="";;
667esac
668if test x"$silent" != x"yes" && test x"$sim_reserved_bits" != x""; then
669 echo "Setting reserved flags = $sim_reserved_bits" 6>&1
670fi],[sim_reserved_bits="-DWITH_RESERVED_BITS=${default_sim_reserved_bits}"])dnl
671])
672AC_SUBST(sim_reserved_bits)
673
674
675AC_DEFUN([SIM_AC_OPTION_SMP],
676[
677AC_MSG_CHECKING([number of sim cpus to support])
678default_sim_smp="ifelse([$1],,5,[$1])"
679sim_smp="$default_sim_smp""
680AC_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";;
687esac])dnl
688sim_igen_smp="-N ${sim_smp}"
689AC_DEFINE_UNQUOTED([WITH_SMP], [$sim_smp], [Sim SMP settings])
690AC_MSG_RESULT($sim_smp)
691])
692
693
694AC_DEFUN([SIM_AC_OPTION_XOR_ENDIAN],
695[
696AC_MSG_CHECKING([for xor endian support])
697default_sim_xor_endian="ifelse([$1],,8,[$1])"
698sim_xor_endian="$default_sim_xor_endian"
699AC_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";;
706esac])dnl
707AC_DEFINE_UNQUOTED([WITH_XOR_ENDIAN], [$sim_xor_endian], [Sim XOR endian settings])
708AC_MSG_RESULT($sim_smp)
709])
710
711
712dnl --enable-build-warnings is for developers of the simulator.
713dnl it enables extra GCC specific warnings.
714AC_DEFUN([SIM_AC_OPTION_WARNINGS],
715[
716AC_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
725if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
726 ERROR_ON_WARNING=yes
727fi
728
729WERROR_CFLAGS=""
730if 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
734fi
735
736build_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.
745case "${host}" in
746 *-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;;
747 *) build_warnings="$build_warnings -Wformat-nonliteral" ;;
748esac
749
750AC_ARG_ENABLE(build-warnings,
751AS_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"`;;
760esac
761if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
762 echo "Setting compiler warning flags = $build_warnings" 6>&1
763fi])dnl
764AC_ARG_ENABLE(sim-build-warnings,
765AS_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"`;;
774esac
775if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
776 echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
777fi])dnl
778WARN_CFLAGS=""
779if test "x${build_warnings}" != x -a "x$GCC" = xyes
780then
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})
795fi
796])
797AC_SUBST(WARN_CFLAGS)
798AC_SUBST(WERROR_CFLAGS)
799
800
801dnl Generate the Makefile in a target specific directory.
802dnl Substitutions aren't performed on the file in AC_SUBST_FILE,
803dnl so this is a cover macro to tuck the details away of how we cope.
804dnl We cope by having autoconf generate two files and then merge them into
805dnl one afterwards. The two pieces of the common fragment are inserted into
806dnl the target's fragment at the appropriate points.
807
808AC_DEFUN([SIM_AC_OUTPUT],
809[
810dnl Make @cgen_breaks@ non-null only if the sim uses CGEN.
811cgen_breaks=""
812if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
813cgen_breaks="break cgen_rtx_error";
814fi
815AC_SUBST(cgen_breaks)
816AC_CONFIG_FILES(Makefile.sim:Makefile.in)
817AC_CONFIG_FILES(Make-common.sim:../common/Make-common.in)
818AC_CONFIG_FILES(.gdbinit:../common/gdbinit.in)
819AC_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])
829AC_CONFIG_COMMANDS([stamp-h], [echo > stamp-h])
830AC_OUTPUT
831])
832
833sinclude(../../config/gettext-sister.m4)
834sinclude(../../config/acx.m4)
835
836dnl --enable-cgen-maint support
837AC_DEFUN([SIM_AC_OPTION_CGEN_MAINT],
838[
839cgen_maint=no
840dnl Default is to use one in build tree.
841cgen=guile
842cgendir='$(srcdir)/../../cgen'
843dnl Having --enable-maintainer-mode take arguments is another way to go.
844dnl ??? One can argue --with is more appropriate if one wants to specify
845dnl a directory name, but what we're doing here is an enable/disable kind
846dnl of thing and specifying both --enable and --with is klunky.
847dnl If you reeely want this to be --with, go ahead and change it.
848AC_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 ;;
866esac])dnl
867dnl AM_CONDITIONAL(CGEN_MAINT, test x${cgen_maint} != xno)
868if test x${cgen_maint} != xno ; then
869 CGEN_MAINT=''
870else
871 CGEN_MAINT='#'
872fi
873AC_SUBST(CGEN_MAINT)
874AC_SUBST(cgendir)
875AC_SUBST(cgen)
876])
This page took 0.025226 seconds and 4 git commands to generate.