]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - sim/common/acinclude.m4
sim: drop unused SIM_AC_OPTION_PACKAGES
[thirdparty/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
35656e95 226SIM_AC_OPTION_ASSERT
16f7876d 227SIM_AC_OPTION_ENVIRONMENT
347fe5bb
MF
228SIM_AC_OPTION_INLINE
229
bf12d44e 230ACX_PKGVERSION([SIM])
9c082ca8
MF
231ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
232AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
233AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
234
235dnl Types used by common code
236AC_TYPE_SIGNAL
237
238dnl Detect exe extension
239AC_EXEEXT
240
9c082ca8
MF
241]) dnl End of SIM_AC_COMMON
242
243
244dnl Additional SIM options that can (optionally) be configured
245dnl For optional simulator options, a macro SIM_AC_OPTION_* is defined.
246dnl Simulators that wish to use the relevant option specify the macro
306f4178 247dnl in the simulator specific configure.ac file between the SIM_AC_COMMON
9c082ca8
MF
248dnl and SIM_AC_OUTPUT lines.
249
250
251dnl Specify the running environment.
306f4178 252dnl If the simulator invokes this in its configure.ac then without this option
9c082ca8
MF
253dnl the default is the user environment and all are runtime selectable.
254dnl If the simulator doesn't invoke this, only the user environment is
255dnl supported.
256dnl ??? Until there is demonstrable value in doing something more complicated,
257dnl let's not.
258AC_DEFUN([SIM_AC_OPTION_ENVIRONMENT],
259[
260AC_ARG_ENABLE(sim-environment,
8d0978fb
MF
261[AS_HELP_STRING([--enable-sim-environment=environment],
262 [Specify mixed, user, virtual or operating environment])],
9c082ca8
MF
263[case "${enableval}" in
264 all | ALL) sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT";;
265 user | USER) sim_environment="-DWITH_ENVIRONMENT=USER_ENVIRONMENT";;
266 virtual | VIRTUAL) sim_environment="-DWITH_ENVIRONMENT=VIRTUAL_ENVIRONMENT";;
267 operating | OPERATING) sim_environment="-DWITH_ENVIRONMENT=OPERATING_ENVIRONMENT";;
268 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-environment");
269 sim_environment="";;
270esac
271if test x"$silent" != x"yes" && test x"$sim_environment" != x""; then
272 echo "Setting sim environment = $sim_environment" 6>&1
273fi],
274[sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT"])dnl
275])
276AC_SUBST(sim_environment)
277
278
279dnl Specify the alignment restrictions of the target architecture.
280dnl Without this option all possible alignment restrictions are accommodated.
281dnl arg[1] is hardwired target alignment
282dnl arg[2] is default target alignment
283AC_DEFUN([SIM_AC_OPTION_ALIGNMENT],
284wire_alignment="[$1]"
285default_alignment="[$2]"
286[
287AC_ARG_ENABLE(sim-alignment,
8d0978fb
MF
288[AS_HELP_STRING([--enable-sim-alignment=align],
289 [Specify strict, nonstrict or forced alignment of memory accesses])],
9c082ca8
MF
290[case "${enableval}" in
291 strict | STRICT) sim_alignment="-DWITH_ALIGNMENT=STRICT_ALIGNMENT";;
292 nonstrict | NONSTRICT) sim_alignment="-DWITH_ALIGNMENT=NONSTRICT_ALIGNMENT";;
293 forced | FORCED) sim_alignment="-DWITH_ALIGNMENT=FORCED_ALIGNMENT";;
294 yes) if test x"$wire_alignment" != x; then
295 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
296 else
297 if test x"$default_alignment" != x; then
298 sim_alignment="-DWITH_ALIGNMENT=${default_alignment}"
299 else
300 echo "No hard-wired alignment for target $target" 1>&6
301 sim_alignment="-DWITH_ALIGNMENT=0"
302 fi
303 fi;;
304 no) if test x"$default_alignment" != x; then
305 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
306 else
307 if test x"$wire_alignment" != x; then
308 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${wire_alignment}"
309 else
310 echo "No default alignment for target $target" 1>&6
311 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=0"
312 fi
313 fi;;
314 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-alignment"); sim_alignment="";;
315esac
316if test x"$silent" != x"yes" && test x"$sim_alignment" != x""; then
317 echo "Setting alignment flags = $sim_alignment" 6>&1
318fi],
319[if test x"$default_alignment" != x; then
320 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
321else
322 if test x"$wire_alignment" != x; then
323 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
324 else
325 sim_alignment=
326 fi
327fi])dnl
328])dnl
329AC_SUBST(sim_alignment)
330
331
332dnl Conditionally compile in assertion statements.
333AC_DEFUN([SIM_AC_OPTION_ASSERT],
334[
335AC_ARG_ENABLE(sim-assert,
8d0978fb
MF
336[AS_HELP_STRING([--enable-sim-assert],
337 [Specify whether to perform random assertions])],
9c082ca8
MF
338[case "${enableval}" in
339 yes) sim_assert="-DWITH_ASSERT=1";;
340 no) sim_assert="-DWITH_ASSERT=0";;
341 *) AC_MSG_ERROR("--enable-sim-assert does not take a value"); sim_assert="";;
342esac
343if test x"$silent" != x"yes" && test x"$sim_assert" != x""; then
344 echo "Setting assert flags = $sim_assert" 6>&1
345fi],[sim_assert=""])dnl
346])
347AC_SUBST(sim_assert)
348
349
350
351dnl --enable-sim-bitsize is for developers of the simulator
352dnl It specifies the number of BITS in the target.
353dnl arg[1] is the number of bits in a word
354dnl arg[2] is the number assigned to the most significant bit
355dnl arg[3] is the number of bits in an address
356dnl arg[4] is the number of bits in an OpenFirmware cell.
357dnl FIXME: this information should be obtained from bfd/archure
358AC_DEFUN([SIM_AC_OPTION_BITSIZE],
359wire_word_bitsize="[$1]"
360wire_word_msb="[$2]"
361wire_address_bitsize="[$3]"
362wire_cell_bitsize="[$4]"
363[AC_ARG_ENABLE(sim-bitsize,
8d0978fb 364[AS_HELP_STRING([--enable-sim-bitsize=N], [Specify target bitsize (32 or 64)])],
9c082ca8
MF
365[sim_bitsize=
366case "${enableval}" in
367 64,63 | 64,63,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63";;
368 32,31 | 32,31,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31";;
369 64,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
370 32,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
371 32) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
372 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31"
373 else
374 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0"
375 fi ;;
376 64) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
377 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63"
378 else
379 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=0"
380 fi ;;
381 *) AC_MSG_ERROR("--enable-sim-bitsize was given $enableval. Expected 32 or 64") ;;
382esac
383# address bitsize
384tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9]]*,*//"`
385case x"${tmp}" in
386 x ) ;;
387 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=32" ;;
388 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=64" ;;
389 * ) AC_MSG_ERROR("--enable-sim-bitsize was given address size $enableval. Expected 32 or 64") ;;
390esac
391# cell bitsize
392tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9*]]*,*[[0-9]]*,*//"`
393case x"${tmp}" in
394 x ) ;;
395 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=32" ;;
396 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=64" ;;
397 * ) AC_MSG_ERROR("--enable-sim-bitsize was given cell size $enableval. Expected 32 or 64") ;;
398esac
399if test x"$silent" != x"yes" && test x"$sim_bitsize" != x""; then
400 echo "Setting bitsize flags = $sim_bitsize" 6>&1
401fi],
402[sim_bitsize=""
403if test x"$wire_word_bitsize" != x; then
404 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_BITSIZE=$wire_word_bitsize"
405fi
406if test x"$wire_word_msb" != x; then
407 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_MSB=$wire_word_msb"
408fi
409if test x"$wire_address_bitsize" != x; then
410 sim_bitsize="$sim_bitsize -DWITH_TARGET_ADDRESS_BITSIZE=$wire_address_bitsize"
411fi
412if test x"$wire_cell_bitsize" != x; then
413 sim_bitsize="$sim_bitsize -DWITH_TARGET_CELL_BITSIZE=$wire_cell_bitsize"
414fi])dnl
415])
416AC_SUBST(sim_bitsize)
417
418
419
420dnl --enable-sim-endian={yes,no,big,little} is for simulators
421dnl that support both big and little endian targets.
422dnl arg[1] is hardwired target endianness.
423dnl arg[2] is default target endianness.
424AC_DEFUN([SIM_AC_OPTION_ENDIAN],
425[
426wire_endian="[$1]"
427default_endian="[$2]"
428AC_ARG_ENABLE(sim-endian,
8d0978fb
MF
429[AS_HELP_STRING([--enable-sim-endian=endian],
430 [Specify target byte endian orientation])],
9c082ca8 431[case "${enableval}" in
1ac72f06
MF
432 b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_BIG";;
433 l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_LITTLE";;
9c082ca8 434 yes) if test x"$wire_endian" != x; then
1ac72f06 435 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
9c082ca8 436 else
1ac72f06
MF
437 if test x"$default_endian" != x; then
438 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
9c082ca8
MF
439 else
440 echo "No hard-wired endian for target $target" 1>&6
1ac72f06 441 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_UNKNOWN"
9c082ca8
MF
442 fi
443 fi;;
444 no) if test x"$default_endian" != x; then
1ac72f06 445 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
9c082ca8
MF
446 else
447 if test x"$wire_endian" != x; then
1ac72f06 448 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
9c082ca8
MF
449 else
450 echo "No default endian for target $target" 1>&6
1ac72f06 451 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_UNKNOWN"
9c082ca8
MF
452 fi
453 fi;;
454 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-endian"); sim_endian="";;
455esac
456if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
457 echo "Setting endian flags = $sim_endian" 6>&1
458fi],
459[if test x"$default_endian" != x; then
1ac72f06 460 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
9c082ca8
MF
461else
462 if test x"$wire_endian" != x; then
1ac72f06 463 sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
9c082ca8
MF
464 else
465 sim_endian=
466 fi
467fi])dnl
468])
469AC_SUBST(sim_endian)
470
471
9c082ca8
MF
472dnl --enable-sim-float is for developers of the simulator
473dnl It specifies the presence of hardware floating point
474dnl And optionally the bitsize of the floating point register.
475dnl arg[1] specifies the presence (or absence) of floating point hardware
476dnl arg[2] specifies the number of bits in a floating point register
477AC_DEFUN([SIM_AC_OPTION_FLOAT],
478[
479default_sim_float="[$1]"
480default_sim_float_bitsize="[$2]"
481AC_ARG_ENABLE(sim-float,
8d0978fb
MF
482[AS_HELP_STRING([--enable-sim-float],
483 [Specify that the target processor has floating point hardware])],
9c082ca8
MF
484[case "${enableval}" in
485 yes | hard) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT";;
486 no | soft) sim_float="-DWITH_FLOATING_POINT=SOFT_FLOATING_POINT";;
487 32) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=32";;
488 64) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=64";;
489 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-float"); sim_float="";;
490esac
491if test x"$silent" != x"yes" && test x"$sim_float" != x""; then
492 echo "Setting float flags = $sim_float" 6>&1
493fi],[
494sim_float=
495if test x"${default_sim_float}" != x""; then
496 sim_float="-DWITH_FLOATING_POINT=${default_sim_float}"
497fi
498if test x"${default_sim_float_bitsize}" != x""; then
499 sim_float="$sim_float -DWITH_TARGET_FLOATING_POINT_BITSIZE=${default_sim_float_bitsize}"
500fi
501])dnl
502])
503AC_SUBST(sim_float)
504
505
506dnl The argument is the default cache size if none is specified.
507AC_DEFUN([SIM_AC_OPTION_SCACHE],
508[
509default_sim_scache="ifelse([$1],,0,[$1])"
510AC_ARG_ENABLE(sim-scache,
8d0978fb
MF
511[AS_HELP_STRING([--enable-sim-scache=size],
512 [Specify simulator execution cache size])],
9c082ca8
MF
513[case "${enableval}" in
514 yes) sim_scache="-DWITH_SCACHE=${default_sim_scache}";;
515 no) sim_scache="-DWITH_SCACHE=0" ;;
516 [[0-9]]*) sim_scache="-DWITH_SCACHE=${enableval}";;
517 *) AC_MSG_ERROR("Bad value $enableval passed to --enable-sim-scache");
518 sim_scache="";;
519esac
520if test x"$silent" != x"yes" && test x"$sim_scache" != x""; then
521 echo "Setting scache size = $sim_scache" 6>&1
522fi],[sim_scache="-DWITH_SCACHE=${default_sim_scache}"])
523])
524AC_SUBST(sim_scache)
525
526
527dnl The argument is the default model if none is specified.
528AC_DEFUN([SIM_AC_OPTION_DEFAULT_MODEL],
529[
530default_sim_default_model="ifelse([$1],,0,[$1])"
531AC_ARG_ENABLE(sim-default-model,
8d0978fb
MF
532[AS_HELP_STRING([--enable-sim-default-model=model],
533 [Specify default model to simulate])],
9c082ca8
MF
534[case "${enableval}" in
535 yes|no) AC_MSG_ERROR("Missing argument to --enable-sim-default-model");;
536 *) sim_default_model="-DWITH_DEFAULT_MODEL='\"${enableval}\"'";;
537esac
538if test x"$silent" != x"yes" && test x"$sim_default_model" != x""; then
539 echo "Setting default model = $sim_default_model" 6>&1
540fi],[sim_default_model="-DWITH_DEFAULT_MODEL='\"${default_sim_default_model}\"'"])
541])
542AC_SUBST(sim_default_model)
543
544
545dnl --enable-sim-hardware is for users of the simulator
64dd13df 546dnl arg[1] Enable sim-hw by default? ("yes" or "no")
9c082ca8
MF
547dnl arg[2] is a space separated list of devices that override the defaults
548dnl arg[3] is a space separated list of extra target specific devices.
549AC_DEFUN([SIM_AC_OPTION_HARDWARE],
550[
9c082ca8
MF
551if test "[$2]"; then
552 hardware="[$2]"
553else
554 hardware="cfi core pal glue"
555fi
556hardware="$hardware [$3]"
1517bd27 557
9c082ca8
MF
558sim_hw_cflags="-DWITH_HW=1"
559sim_hw="$hardware"
560sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([[^ ]][[^ ]]*\)/dv-\1.o/g'`"
1517bd27 561
9c082ca8 562AC_ARG_ENABLE(sim-hardware,
1517bd27 563 [AS_HELP_STRING([--enable-sim-hardware=LIST],
30452bbe
MF
564 [Specify the hardware to be included in the build.])],
565 ,[enable_sim_hardware="[$1]"])
1517bd27 566case ${enable_sim_hardware} in
64dd13df
MF
567 yes|no) ;;
568 ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
569 *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
570 *) hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
9c082ca8 571esac
1517bd27 572
64dd13df 573if test "$enable_sim_hardware" = no; then
9c082ca8
MF
574 sim_hw_objs=
575 sim_hw_cflags="-DWITH_HW=0"
576 sim_hw=
577else
578 sim_hw_cflags="-DWITH_HW=1"
579 # remove duplicates
580 sim_hw=""
581 sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
582 for i in $hardware ; do
583 case " $sim_hw " in
584 *" $i "*) ;;
585 *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
586 esac
587 done
3fd38161 588 # mingw does not support sockser
3fd38161
JS
589 case ${host} in
590 *mingw*) ;;
49cd1634
MF
591 *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
592 # that you instatiate. Instead, other code will call into it directly.
593 # At some point, we should convert it over.
594 sim_hw_objs="$sim_hw_objs dv-sockser.o"
3fd38161
JS
595 AC_DEFINE_UNQUOTED(
596 [HAVE_DV_SOCKSER], 1, [Define if dv-sockser is usable.])
597 ;;
598 esac
1517bd27
MF
599 if test x"$silent" != x"yes"; then
600 echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
3fd38161 601 fi
1517bd27
MF
602 dnl Some devices require extra libraries.
603 case " $hardware " in
604 *" cfi "*) AC_CHECK_LIB(m, log2);;
605 esac
9c082ca8 606fi
9c082ca8
MF
607])
608AC_SUBST(sim_hw_cflags)
609AC_SUBST(sim_hw_objs)
610AC_SUBST(sim_hw)
611
612
613dnl --enable-sim-inline is for users that wish to ramp up the simulator's
614dnl performance by inlining functions.
347fe5bb 615dnl Default sims to no inlining.
9c082ca8
MF
616AC_DEFUN([SIM_AC_OPTION_INLINE],
617[
347fe5bb 618sim_inline="-DDEFAULT_INLINE=m4_ifblank([$1],[0],[$1])"
9c082ca8 619AC_ARG_ENABLE(sim-inline,
8d0978fb
MF
620[AS_HELP_STRING([--enable-sim-inline=inlines],
621 [Specify which functions should be inlined])],
9c082ca8
MF
622[sim_inline=""
623case "$enableval" in
624 no) sim_inline="-DDEFAULT_INLINE=0";;
625 0) sim_inline="-DDEFAULT_INLINE=0";;
626 yes | 2) sim_inline="-DDEFAULT_INLINE=ALL_C_INLINE";;
627 1) sim_inline="-DDEFAULT_INLINE=INLINE_LOCALS";;
628 *) for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
629 new_flag=""
630 case "$x" in
631 *_INLINE=*) new_flag="-D$x";;
632 *=*) new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
633 *_INLINE) new_flag="-D$x=ALL_C_INLINE";;
634 *) new_flag="-D$x""_INLINE=ALL_C_INLINE";;
635 esac
636 if test x"$sim_inline" = x""; then
637 sim_inline="$new_flag"
638 else
639 sim_inline="$sim_inline $new_flag"
640 fi
641 done;;
642esac
643if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
644 echo "Setting inline flags = $sim_inline" 6>&1
9c082ca8
MF
645fi])dnl
646])
647AC_SUBST(sim_inline)
648
649
9c082ca8
MF
650AC_DEFUN([SIM_AC_OPTION_RESERVED_BITS],
651[
652default_sim_reserved_bits="ifelse([$1],,1,[$1])"
653AC_ARG_ENABLE(sim-reserved-bits,
8d0978fb
MF
654[AS_HELP_STRING([--enable-sim-reserved-bits],
655 [Specify whether to check reserved bits in instruction])],
9c082ca8
MF
656[case "${enableval}" in
657 yes) sim_reserved_bits="-DWITH_RESERVED_BITS=1";;
658 no) sim_reserved_bits="-DWITH_RESERVED_BITS=0";;
659 *) AC_MSG_ERROR("--enable-sim-reserved-bits does not take a value"); sim_reserved_bits="";;
660esac
661if test x"$silent" != x"yes" && test x"$sim_reserved_bits" != x""; then
662 echo "Setting reserved flags = $sim_reserved_bits" 6>&1
663fi],[sim_reserved_bits="-DWITH_RESERVED_BITS=${default_sim_reserved_bits}"])dnl
664])
665AC_SUBST(sim_reserved_bits)
666
667
668AC_DEFUN([SIM_AC_OPTION_SMP],
669[
670default_sim_smp="ifelse([$1],,5,[$1])"
671AC_ARG_ENABLE(sim-smp,
8d0978fb
MF
672[AS_HELP_STRING([--enable-sim-smp=n],
673 [Specify number of processors to configure for (default ${default_sim_smp})])],
9c082ca8
MF
674[case "${enableval}" in
675 yes) sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5";;
676 no) sim_smp="-DWITH_SMP=0" ; sim_igen_smp="-N 0";;
677 *) sim_smp="-DWITH_SMP=$enableval" ; sim_igen_smp="-N $enableval";;
678esac
679if test x"$silent" != x"yes" && test x"$sim_smp" != x""; then
680 echo "Setting smp flags = $sim_smp" 6>&1
681fi],[sim_smp="-DWITH_SMP=${default_sim_smp}" ; sim_igen_smp="-N ${default_sim_smp}"
682if test x"$silent" != x"yes"; then
683 echo "Setting smp flags = $sim_smp" 6>&1
684fi])dnl
685])
686AC_SUBST(sim_smp)
687
688
9c082ca8
MF
689AC_DEFUN([SIM_AC_OPTION_XOR_ENDIAN],
690[
691default_sim_xor_endian="ifelse([$1],,8,[$1])"
692AC_ARG_ENABLE(sim-xor-endian,
8d0978fb
MF
693[AS_HELP_STRING([--enable-sim-xor-endian=n],
694 [Specify number bytes involved in XOR bi-endian mode (default ${default_sim_xor_endian})])],
9c082ca8
MF
695[case "${enableval}" in
696 yes) sim_xor_endian="-DWITH_XOR_ENDIAN=8";;
697 no) sim_xor_endian="-DWITH_XOR_ENDIAN=0";;
698 *) sim_xor_endian="-DWITH_XOR_ENDIAN=$enableval";;
699esac
700if test x"$silent" != x"yes" && test x"$sim_xor_endian" != x""; then
701 echo "Setting xor-endian flag = $sim_xor_endian" 6>&1
702fi],[sim_xor_endian="-DWITH_XOR_ENDIAN=${default_sim_xor_endian}"])dnl
703])
704AC_SUBST(sim_xor_endian)
705
706
707dnl --enable-build-warnings is for developers of the simulator.
708dnl it enables extra GCC specific warnings.
709AC_DEFUN([SIM_AC_OPTION_WARNINGS],
710[
ac0aacdf
MF
711AC_ARG_ENABLE(werror,
712 AS_HELP_STRING([--enable-werror], [treat compile warnings as errors]),
713 [case "${enableval}" in
714 yes | y) ERROR_ON_WARNING="yes" ;;
715 no | n) ERROR_ON_WARNING="no" ;;
716 *) AC_MSG_ERROR(bad value ${enableval} for --enable-werror) ;;
717 esac])
718
719# Enable -Werror by default when using gcc
720if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
721 ERROR_ON_WARNING=yes
722fi
723
724WERROR_CFLAGS=""
725if test "${ERROR_ON_WARNING}" = yes ; then
726# NOTE: Disabled in the sim dir due to most sims generating warnings.
727# WERROR_CFLAGS="-Werror"
728 true
9c082ca8 729fi
ac0aacdf 730
ac0aacdf 731build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \
1a8a700e 732-Wpointer-sign \
ac0aacdf 733-Wno-unused -Wunused-value -Wunused-function \
1a8a700e
MF
734-Wno-switch -Wno-char-subscripts -Wmissing-prototypes
735-Wdeclaration-after-statement -Wempty-body -Wmissing-parameter-type \
736-Wold-style-declaration -Wold-style-definition"
ac0aacdf
MF
737
738# Enable -Wno-format by default when using gcc on mingw since many
739# GCC versions complain about %I64.
740case "${host}" in
741 *-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;;
d3685d60 742 *) build_warnings="$build_warnings -Wformat-nonliteral" ;;
ac0aacdf
MF
743esac
744
9c082ca8 745AC_ARG_ENABLE(build-warnings,
ac0aacdf 746AS_HELP_STRING([--enable-build-warnings], [enable build-time compiler warnings if gcc is used]),
9c082ca8
MF
747[case "${enableval}" in
748 yes) ;;
749 no) build_warnings="-w";;
750 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
751 build_warnings="${build_warnings} ${t}";;
752 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
753 build_warnings="${t} ${build_warnings}";;
754 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
755esac
756if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
757 echo "Setting compiler warning flags = $build_warnings" 6>&1
758fi])dnl
759AC_ARG_ENABLE(sim-build-warnings,
ac0aacdf 760AS_HELP_STRING([--enable-sim-build-warnings], [enable SIM specific build-time compiler warnings if gcc is used]),
9c082ca8
MF
761[case "${enableval}" in
762 yes) ;;
763 no) build_warnings="-w";;
764 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
765 build_warnings="${build_warnings} ${t}";;
766 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
767 build_warnings="${t} ${build_warnings}";;
768 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
769esac
770if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
771 echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
772fi])dnl
773WARN_CFLAGS=""
9c082ca8
MF
774if test "x${build_warnings}" != x -a "x$GCC" = xyes
775then
776 AC_MSG_CHECKING(compiler warning flags)
777 # Separate out the -Werror flag as some files just cannot be
778 # compiled with it enabled.
779 for w in ${build_warnings}; do
780 case $w in
781 -Werr*) WERROR_CFLAGS=-Werror ;;
782 *) # Check that GCC accepts it
783 saved_CFLAGS="$CFLAGS"
784 CFLAGS="$CFLAGS $w"
785 AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
786 CFLAGS="$saved_CFLAGS"
787 esac
788 done
ac0aacdf 789 AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
9c082ca8
MF
790fi
791])
792AC_SUBST(WARN_CFLAGS)
793AC_SUBST(WERROR_CFLAGS)
794
795
796dnl Generate the Makefile in a target specific directory.
797dnl Substitutions aren't performed on the file in AC_SUBST_FILE,
798dnl so this is a cover macro to tuck the details away of how we cope.
799dnl We cope by having autoconf generate two files and then merge them into
800dnl one afterwards. The two pieces of the common fragment are inserted into
801dnl the target's fragment at the appropriate points.
802
803AC_DEFUN([SIM_AC_OUTPUT],
804[
9c082ca8
MF
805dnl Make @cgen_breaks@ non-null only if the sim uses CGEN.
806cgen_breaks=""
807if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
808cgen_breaks="break cgen_rtx_error";
809fi
810AC_SUBST(cgen_breaks)
811AC_CONFIG_FILES(Makefile.sim:Makefile.in)
812AC_CONFIG_FILES(Make-common.sim:../common/Make-common.in)
813AC_CONFIG_FILES(.gdbinit:../common/gdbinit.in)
814AC_CONFIG_COMMANDS([Makefile],
815[echo "Merging Makefile.sim+Make-common.sim into Makefile ..."
816 rm -f Makesim1.tmp Makesim2.tmp Makefile
817 sed -n -e '/^## COMMON_PRE_/,/^## End COMMON_PRE_/ p' <Make-common.sim >Makesim1.tmp
818 sed -n -e '/^## COMMON_POST_/,/^## End COMMON_POST_/ p' <Make-common.sim >Makesim2.tmp
819 sed -e '/^## COMMON_PRE_/ r Makesim1.tmp' \
820 -e '/^## COMMON_POST_/ r Makesim2.tmp' \
821 <Makefile.sim >Makefile
822 rm -f Makefile.sim Make-common.sim Makesim1.tmp Makesim2.tmp
823])
824AC_CONFIG_COMMANDS([stamp-h], [echo > stamp-h])
825AC_OUTPUT
826])
827
828sinclude(../../config/gettext-sister.m4)
829sinclude(../../config/acx.m4)
830
831dnl --enable-cgen-maint support
832AC_DEFUN([SIM_AC_OPTION_CGEN_MAINT],
833[
834cgen_maint=no
835dnl Default is to use one in build tree.
836cgen=guile
837cgendir='$(srcdir)/../../cgen'
838dnl Having --enable-maintainer-mode take arguments is another way to go.
839dnl ??? One can argue --with is more appropriate if one wants to specify
840dnl a directory name, but what we're doing here is an enable/disable kind
841dnl of thing and specifying both --enable and --with is klunky.
842dnl If you reeely want this to be --with, go ahead and change it.
843AC_ARG_ENABLE(cgen-maint,
8d0978fb 844[AS_HELP_STRING([--enable-cgen-maint[=DIR]], [build cgen generated files])],
9c082ca8
MF
845[case "${enableval}" in
846 yes) cgen_maint=yes ;;
847 no) cgen_maint=no ;;
848 *)
849 # argument is cgen install directory (not implemented yet).
850 # Having a `share' directory might be more appropriate for the .scm,
851 # .cpu, etc. files.
852 cgendir=${cgen_maint}/lib/cgen
853 cgen=guile
854 ;;
855esac])dnl
856dnl AM_CONDITIONAL(CGEN_MAINT, test x${cgen_maint} != xno)
857if test x${cgen_maint} != xno ; then
858 CGEN_MAINT=''
859else
860 CGEN_MAINT='#'
861fi
862AC_SUBST(CGEN_MAINT)
863AC_SUBST(cgendir)
864AC_SUBST(cgen)
865])