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