gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / sim / common / acinclude.m4
CommitLineData
9c082ca8
MF
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#
306f4178 8# The simulator's configure.ac should look like:
9c082ca8
MF
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])
6bb11ab3
L
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])
db2e4d67 30sinclude([../../config/depstand.m4])
9c082ca8
MF
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
2232061b 38AC_USE_SYSTEM_EXTENSIONS
0cb8d851 39AC_C_BIGENDIAN
9c082ca8
MF
40AC_ARG_PROGRAM
41AC_PROG_INSTALL
42
43# Put a plausible default for CC_FOR_BUILD in Makefile.
5c887dd5
JB
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
9c082ca8
MF
50fi
51AC_SUBST(CC_FOR_BUILD)
52
53AC_SUBST(CFLAGS)
54AC_SUBST(HDEFINES)
55AR=${AR-ar}
56AC_SUBST(AR)
57AC_PROG_RANLIB
58
5f3ef9d0
JB
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
db2e4d67
MF
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
9c082ca8
MF
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)
936df756 89AC_CHECK_HEADERS(sys/time.h sys/times.h sys/resource.h sys/mman.h)
9c082ca8
MF
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)
936df756
MF
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])
9c082ca8
MF
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
6bb11ab3
L
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
9c082ca8
MF
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.
31e6ad7d 135AM_MAINTAINER_MODE
9c082ca8
MF
136
137
9c082ca8
MF
138dnl --enable-sim-debug is for developers of the simulator
139dnl the allowable values are work-in-progress
ce39bd38
MF
140AC_MSG_CHECKING([for sim debug setting])
141sim_debug="0"
9c082ca8 142AC_ARG_ENABLE(sim-debug,
8d0978fb
MF
143[AS_HELP_STRING([--enable-sim-debug=opts],
144 [Enable debugging flags (for developers of the sim itself)])],
9c082ca8 145[case "${enableval}" in
ce39bd38
MF
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)
9c082ca8
MF
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)
ce39bd38
MF
159AC_MSG_CHECKING([for sim stdio debug behavior])
160sim_stdio="0"
9c082ca8 161AC_ARG_ENABLE(sim-stdio,
8d0978fb
MF
162[AS_HELP_STRING([--enable-sim-stdio],
163 [Specify whether to use stdio for console input/output])],
9c082ca8 164[case "${enableval}" in
ce39bd38
MF
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)
9c082ca8
MF
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
ce39bd38
MF
177dnl use WITH_TRACE. Default to all tracing but internal debug.
178AC_MSG_CHECKING([for sim trace settings])
179sim_trace="~TRACE_debug"
9c082ca8 180AC_ARG_ENABLE(sim-trace,
8d0978fb
MF
181[AS_HELP_STRING([--enable-sim-trace=opts],
182 [Enable tracing of simulated programs])],
9c082ca8 183[case "${enableval}" in
ce39bd38
MF
184 yes) sim_trace="-1";;
185 no) sim_trace="0";;
9c082ca8 186 [[-0-9]]*)
ce39bd38 187 sim_trace="'(${enableval})'";;
509deab2 188 [[[:lower:]]]*)
9c082ca8
MF
189 sim_trace=""
190 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
191 if test x"$sim_trace" = x; then
ce39bd38 192 sim_trace="(TRACE_$x"
9c082ca8
MF
193 else
194 sim_trace="${sim_trace}|TRACE_$x"
195 fi
196 done
ce39bd38
MF
197 sim_trace="$sim_trace)" ;;
198esac])dnl
199AC_DEFINE_UNQUOTED([WITH_TRACE], [$sim_trace], [Sim trace settings])
200AC_MSG_RESULT($sim_trace)
9c082ca8
MF
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.
ce39bd38
MF
208AC_MSG_CHECKING([for sim profile settings])
209profile="1"
210sim_profile="-1"
9c082ca8 211AC_ARG_ENABLE(sim-profile,
8d0978fb 212[AS_HELP_STRING([--enable-sim-profile=opts], [Enable profiling flags])],
9c082ca8 213[case "${enableval}" in
ce39bd38
MF
214 yes) profile="1" sim_profile="-1";;
215 no) profile="0" sim_profile="0";;
9c082ca8 216 [[-0-9]]*)
ce39bd38 217 profile="(${enableval})" sim_profile="(${enableval})";;
9c082ca8 218 [[a-z]]*)
ce39bd38 219 profile="1"
9c082ca8
MF
220 sim_profile=""
221 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
222 if test x"$sim_profile" = x; then
ce39bd38 223 sim_profile="(PROFILE_$x"
9c082ca8
MF
224 else
225 sim_profile="${sim_profile}|PROFILE_$x"
226 fi
227 done
ce39bd38
MF
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
9c082ca8 234
35656e95 235SIM_AC_OPTION_ASSERT
16f7876d 236SIM_AC_OPTION_ENVIRONMENT
347fe5bb
MF
237SIM_AC_OPTION_INLINE
238
bf12d44e 239ACX_PKGVERSION([SIM])
9c082ca8
MF
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
9c082ca8
MF
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
306f4178 256dnl in the simulator specific configure.ac file between the SIM_AC_COMMON
9c082ca8
MF
257dnl and SIM_AC_OUTPUT lines.
258
259
260dnl Specify the running environment.
306f4178 261dnl If the simulator invokes this in its configure.ac then without this option
9c082ca8
MF
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[
ce39bd38
MF
269AC_MSG_CHECKING([default sim environment setting])
270sim_environment="ALL_ENVIRONMENT"
9c082ca8 271AC_ARG_ENABLE(sim-environment,
8d0978fb
MF
272[AS_HELP_STRING([--enable-sim-environment=environment],
273 [Specify mixed, user, virtual or operating environment])],
9c082ca8 274[case "${enableval}" in
ce39bd38
MF
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)
9c082ca8 283])
9c082ca8
MF
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,
8d0978fb
MF
295[AS_HELP_STRING([--enable-sim-alignment=align],
296 [Specify strict, nonstrict or forced alignment of memory accesses])],
9c082ca8
MF
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[
ce39bd38
MF
342AC_MSG_CHECKING([whether to enable sim asserts])
343sim_assert="1"
9c082ca8 344AC_ARG_ENABLE(sim-assert,
8d0978fb
MF
345[AS_HELP_STRING([--enable-sim-assert],
346 [Specify whether to perform random assertions])],
9c082ca8 347[case "${enableval}" in
ce39bd38
MF
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)
9c082ca8 354])
9c082ca8
MF
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,
8d0978fb 371[AS_HELP_STRING([--enable-sim-bitsize=N], [Specify target bitsize (32 or 64)])],
9c082ca8
MF
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,
8d0978fb
MF
436[AS_HELP_STRING([--enable-sim-endian=endian],
437 [Specify target byte endian orientation])],
9c082ca8 438[case "${enableval}" in
1ac72f06
MF
439 b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_BIG";;
440 l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_LITTLE";;
9c082ca8 441 yes) if test x"$wire_endian" != x; then
1ac72f06 442 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
9c082ca8 443 else
1ac72f06
MF
444 if test x"$default_endian" != x; then
445 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
9c082ca8
MF
446 else
447 echo "No hard-wired endian for target $target" 1>&6
1ac72f06 448 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_UNKNOWN"
9c082ca8
MF
449 fi
450 fi;;
451 no) if test x"$default_endian" != x; then
1ac72f06 452 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
9c082ca8
MF
453 else
454 if test x"$wire_endian" != x; then
1ac72f06 455 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
9c082ca8
MF
456 else
457 echo "No default endian for target $target" 1>&6
1ac72f06 458 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_UNKNOWN"
9c082ca8
MF
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
1ac72f06 467 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
9c082ca8
MF
468else
469 if test x"$wire_endian" != x; then
1ac72f06 470 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
9c082ca8
MF
471 else
472 sim_endian=
473 fi
474fi])dnl
475])
476AC_SUBST(sim_endian)
477
478
9c082ca8
MF
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,
8d0978fb
MF
489[AS_HELP_STRING([--enable-sim-float],
490 [Specify that the target processor has floating point hardware])],
9c082ca8
MF
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,
8d0978fb
MF
518[AS_HELP_STRING([--enable-sim-scache=size],
519 [Specify simulator execution cache size])],
9c082ca8
MF
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,
8d0978fb
MF
539[AS_HELP_STRING([--enable-sim-default-model=model],
540 [Specify default model to simulate])],
9c082ca8
MF
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
64dd13df 553dnl arg[1] Enable sim-hw by default? ("yes" or "no")
9c082ca8
MF
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[
9c082ca8
MF
558if test "[$2]"; then
559 hardware="[$2]"
560else
561 hardware="cfi core pal glue"
562fi
563hardware="$hardware [$3]"
1517bd27 564
9c082ca8
MF
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'`"
1517bd27 568
9c082ca8 569AC_ARG_ENABLE(sim-hardware,
1517bd27 570 [AS_HELP_STRING([--enable-sim-hardware=LIST],
30452bbe
MF
571 [Specify the hardware to be included in the build.])],
572 ,[enable_sim_hardware="[$1]"])
1517bd27 573case ${enable_sim_hardware} in
64dd13df
MF
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/,/ /'`"'';;
9c082ca8 578esac
1517bd27 579
64dd13df 580if test "$enable_sim_hardware" = no; then
9c082ca8
MF
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
3fd38161 595 # mingw does not support sockser
3fd38161
JS
596 case ${host} in
597 *mingw*) ;;
49cd1634
MF
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"
3fd38161
JS
602 AC_DEFINE_UNQUOTED(
603 [HAVE_DV_SOCKSER], 1, [Define if dv-sockser is usable.])
604 ;;
605 esac
1517bd27
MF
606 if test x"$silent" != x"yes"; then
607 echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
3fd38161 608 fi
1517bd27
MF
609 dnl Some devices require extra libraries.
610 case " $hardware " in
611 *" cfi "*) AC_CHECK_LIB(m, log2);;
612 esac
9c082ca8 613fi
9c082ca8
MF
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.
347fe5bb 622dnl Default sims to no inlining.
9c082ca8
MF
623AC_DEFUN([SIM_AC_OPTION_INLINE],
624[
347fe5bb 625sim_inline="-DDEFAULT_INLINE=m4_ifblank([$1],[0],[$1])"
9c082ca8 626AC_ARG_ENABLE(sim-inline,
8d0978fb
MF
627[AS_HELP_STRING([--enable-sim-inline=inlines],
628 [Specify which functions should be inlined])],
9c082ca8
MF
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
9c082ca8
MF
652fi])dnl
653])
654AC_SUBST(sim_inline)
655
656
9c082ca8
MF
657AC_DEFUN([SIM_AC_OPTION_RESERVED_BITS],
658[
659default_sim_reserved_bits="ifelse([$1],,1,[$1])"
660AC_ARG_ENABLE(sim-reserved-bits,
8d0978fb
MF
661[AS_HELP_STRING([--enable-sim-reserved-bits],
662 [Specify whether to check reserved bits in instruction])],
9c082ca8
MF
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[
ce39bd38 677AC_MSG_CHECKING([number of sim cpus to support])
9c082ca8 678default_sim_smp="ifelse([$1],,5,[$1])"
ce39bd38 679sim_smp="$default_sim_smp""
9c082ca8 680AC_ARG_ENABLE(sim-smp,
8d0978fb
MF
681[AS_HELP_STRING([--enable-sim-smp=n],
682 [Specify number of processors to configure for (default ${default_sim_smp})])],
9c082ca8 683[case "${enableval}" in
ce39bd38
MF
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)
9c082ca8 691])
9c082ca8
MF
692
693
9c082ca8
MF
694AC_DEFUN([SIM_AC_OPTION_XOR_ENDIAN],
695[
ce39bd38 696AC_MSG_CHECKING([for xor endian support])
9c082ca8 697default_sim_xor_endian="ifelse([$1],,8,[$1])"
ce39bd38 698sim_xor_endian="$default_sim_xor_endian"
9c082ca8 699AC_ARG_ENABLE(sim-xor-endian,
8d0978fb
MF
700[AS_HELP_STRING([--enable-sim-xor-endian=n],
701 [Specify number bytes involved in XOR bi-endian mode (default ${default_sim_xor_endian})])],
9c082ca8 702[case "${enableval}" in
ce39bd38
MF
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)
9c082ca8 709])
9c082ca8
MF
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[
ac0aacdf
MF
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
9c082ca8 734fi
ac0aacdf 735
ac0aacdf 736build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \
1a8a700e 737-Wpointer-sign \
ac0aacdf 738-Wno-unused -Wunused-value -Wunused-function \
1a8a700e
MF
739-Wno-switch -Wno-char-subscripts -Wmissing-prototypes
740-Wdeclaration-after-statement -Wempty-body -Wmissing-parameter-type \
741-Wold-style-declaration -Wold-style-definition"
ac0aacdf
MF
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" ;;
d3685d60 747 *) build_warnings="$build_warnings -Wformat-nonliteral" ;;
ac0aacdf
MF
748esac
749
9c082ca8 750AC_ARG_ENABLE(build-warnings,
ac0aacdf 751AS_HELP_STRING([--enable-build-warnings], [enable build-time compiler warnings if gcc is used]),
9c082ca8
MF
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,
ac0aacdf 765AS_HELP_STRING([--enable-sim-build-warnings], [enable SIM specific build-time compiler warnings if gcc is used]),
9c082ca8
MF
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=""
9c082ca8
MF
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
ac0aacdf 794 AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
9c082ca8
MF
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[
9c082ca8
MF
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,
8d0978fb 849[AS_HELP_STRING([--enable-cgen-maint[=DIR]], [build cgen generated files])],
9c082ca8
MF
850[case "${enableval}" in
851 yes) cgen_maint=yes ;;
852 no) cgen_maint=no ;;
853 *)
7fb45a68
AB
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
9c082ca8
MF
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.438032 seconds and 4 git commands to generate.