sim: drop --enable-sim-cflags option
[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
bf12d44e 226ACX_PKGVERSION([SIM])
9c082ca8
MF
227ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
228AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
229AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
230
231dnl Types used by common code
232AC_TYPE_SIGNAL
233
234dnl Detect exe extension
235AC_EXEEXT
236
237dnl These are available to append to as desired.
238sim_link_files=
239sim_link_links=
240
9c082ca8
MF
241# targ-vals.def points to the libc macro description file.
242case "${target}" in
243*-*-*) TARG_VALS_DEF=../common/nltvals.def ;;
244esac
245sim_link_files="${sim_link_files} ${TARG_VALS_DEF}"
246sim_link_links="${sim_link_links} targ-vals.def"
247
248]) dnl End of SIM_AC_COMMON
249
250
251dnl Additional SIM options that can (optionally) be configured
252dnl For optional simulator options, a macro SIM_AC_OPTION_* is defined.
253dnl Simulators that wish to use the relevant option specify the macro
306f4178 254dnl in the simulator specific configure.ac file between the SIM_AC_COMMON
9c082ca8
MF
255dnl and SIM_AC_OUTPUT lines.
256
257
258dnl Specify the running environment.
306f4178 259dnl If the simulator invokes this in its configure.ac then without this option
9c082ca8
MF
260dnl the default is the user environment and all are runtime selectable.
261dnl If the simulator doesn't invoke this, only the user environment is
262dnl supported.
263dnl ??? Until there is demonstrable value in doing something more complicated,
264dnl let's not.
265AC_DEFUN([SIM_AC_OPTION_ENVIRONMENT],
266[
267AC_ARG_ENABLE(sim-environment,
8d0978fb
MF
268[AS_HELP_STRING([--enable-sim-environment=environment],
269 [Specify mixed, user, virtual or operating environment])],
9c082ca8
MF
270[case "${enableval}" in
271 all | ALL) sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT";;
272 user | USER) sim_environment="-DWITH_ENVIRONMENT=USER_ENVIRONMENT";;
273 virtual | VIRTUAL) sim_environment="-DWITH_ENVIRONMENT=VIRTUAL_ENVIRONMENT";;
274 operating | OPERATING) sim_environment="-DWITH_ENVIRONMENT=OPERATING_ENVIRONMENT";;
275 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-environment");
276 sim_environment="";;
277esac
278if test x"$silent" != x"yes" && test x"$sim_environment" != x""; then
279 echo "Setting sim environment = $sim_environment" 6>&1
280fi],
281[sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT"])dnl
282])
283AC_SUBST(sim_environment)
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[
342AC_ARG_ENABLE(sim-assert,
8d0978fb
MF
343[AS_HELP_STRING([--enable-sim-assert],
344 [Specify whether to perform random assertions])],
9c082ca8
MF
345[case "${enableval}" in
346 yes) sim_assert="-DWITH_ASSERT=1";;
347 no) sim_assert="-DWITH_ASSERT=0";;
348 *) AC_MSG_ERROR("--enable-sim-assert does not take a value"); sim_assert="";;
349esac
350if test x"$silent" != x"yes" && test x"$sim_assert" != x""; then
351 echo "Setting assert flags = $sim_assert" 6>&1
352fi],[sim_assert=""])dnl
353])
354AC_SUBST(sim_assert)
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.
622dnl Guarantee that unconfigured simulators do not do any inlining
623sim_inline="-DDEFAULT_INLINE=0"
624AC_DEFUN([SIM_AC_OPTION_INLINE],
625[
626default_sim_inline="ifelse([$1],,,-DDEFAULT_INLINE=[$1])"
627AC_ARG_ENABLE(sim-inline,
8d0978fb
MF
628[AS_HELP_STRING([--enable-sim-inline=inlines],
629 [Specify which functions should be inlined])],
9c082ca8
MF
630[sim_inline=""
631case "$enableval" in
632 no) sim_inline="-DDEFAULT_INLINE=0";;
633 0) sim_inline="-DDEFAULT_INLINE=0";;
634 yes | 2) sim_inline="-DDEFAULT_INLINE=ALL_C_INLINE";;
635 1) sim_inline="-DDEFAULT_INLINE=INLINE_LOCALS";;
636 *) for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
637 new_flag=""
638 case "$x" in
639 *_INLINE=*) new_flag="-D$x";;
640 *=*) new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
641 *_INLINE) new_flag="-D$x=ALL_C_INLINE";;
642 *) new_flag="-D$x""_INLINE=ALL_C_INLINE";;
643 esac
644 if test x"$sim_inline" = x""; then
645 sim_inline="$new_flag"
646 else
647 sim_inline="$sim_inline $new_flag"
648 fi
649 done;;
650esac
651if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
652 echo "Setting inline flags = $sim_inline" 6>&1
653fi],[
654if test "x$cross_compiling" = "xno"; then
655 if test x"$GCC" != "x" -a x"${default_sim_inline}" != "x" ; then
656 sim_inline="${default_sim_inline}"
657 if test x"$silent" != x"yes"; then
658 echo "Setting inline flags = $sim_inline" 6>&1
659 fi
660 else
661 sim_inline=""
662 fi
663else
664 sim_inline="-DDEFAULT_INLINE=0"
665fi])dnl
666])
667AC_SUBST(sim_inline)
668
669
670AC_DEFUN([SIM_AC_OPTION_PACKAGES],
671[
672AC_ARG_ENABLE(sim-packages,
8d0978fb
MF
673[AS_HELP_STRING([--enable-sim-packages=list],
674 [Specify the packages to be included in the build])],
9c082ca8
MF
675[packages=disklabel
676case "${enableval}" in
677 yes) ;;
678 no) AC_MSG_ERROR("List of packages must be specified for --enable-sim-packages"); packages="";;
679 ,*) packages="${packages}${enableval}";;
680 *,) packages="${enableval}${packages}";;
681 *) packages="${enableval}"'';;
682esac
683sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
684sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
685if test x"$silent" != x"yes" && test x"$packages" != x""; then
686 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
687fi],[packages=disklabel
688sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
689sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
690if test x"$silent" != x"yes"; then
691 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
692fi])dnl
693])
694AC_SUBST(sim_packages)
695
696
697AC_DEFUN([SIM_AC_OPTION_REGPARM],
698[
699AC_ARG_ENABLE(sim-regparm,
8d0978fb
MF
700[AS_HELP_STRING([--enable-sim-regparm=nr-parm],
701 [Pass parameters in registers instead of on the stack - x86/GCC specific])],
9c082ca8
MF
702[case "${enableval}" in
703 0*|1*|2*|3*|4*|5*|6*|7*|8*|9*) sim_regparm="-DWITH_REGPARM=${enableval}";;
704 no) sim_regparm="" ;;
705 yes) sim_regparm="-DWITH_REGPARM=3";;
706 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-regparm"); sim_regparm="";;
707esac
708if test x"$silent" != x"yes" && test x"$sim_regparm" != x""; then
709 echo "Setting regparm flags = $sim_regparm" 6>&1
710fi],[sim_regparm=""])dnl
711])
712AC_SUBST(sim_regparm)
713
714
715AC_DEFUN([SIM_AC_OPTION_RESERVED_BITS],
716[
717default_sim_reserved_bits="ifelse([$1],,1,[$1])"
718AC_ARG_ENABLE(sim-reserved-bits,
8d0978fb
MF
719[AS_HELP_STRING([--enable-sim-reserved-bits],
720 [Specify whether to check reserved bits in instruction])],
9c082ca8
MF
721[case "${enableval}" in
722 yes) sim_reserved_bits="-DWITH_RESERVED_BITS=1";;
723 no) sim_reserved_bits="-DWITH_RESERVED_BITS=0";;
724 *) AC_MSG_ERROR("--enable-sim-reserved-bits does not take a value"); sim_reserved_bits="";;
725esac
726if test x"$silent" != x"yes" && test x"$sim_reserved_bits" != x""; then
727 echo "Setting reserved flags = $sim_reserved_bits" 6>&1
728fi],[sim_reserved_bits="-DWITH_RESERVED_BITS=${default_sim_reserved_bits}"])dnl
729])
730AC_SUBST(sim_reserved_bits)
731
732
733AC_DEFUN([SIM_AC_OPTION_SMP],
734[
735default_sim_smp="ifelse([$1],,5,[$1])"
736AC_ARG_ENABLE(sim-smp,
8d0978fb
MF
737[AS_HELP_STRING([--enable-sim-smp=n],
738 [Specify number of processors to configure for (default ${default_sim_smp})])],
9c082ca8
MF
739[case "${enableval}" in
740 yes) sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5";;
741 no) sim_smp="-DWITH_SMP=0" ; sim_igen_smp="-N 0";;
742 *) sim_smp="-DWITH_SMP=$enableval" ; sim_igen_smp="-N $enableval";;
743esac
744if test x"$silent" != x"yes" && test x"$sim_smp" != x""; then
745 echo "Setting smp flags = $sim_smp" 6>&1
746fi],[sim_smp="-DWITH_SMP=${default_sim_smp}" ; sim_igen_smp="-N ${default_sim_smp}"
747if test x"$silent" != x"yes"; then
748 echo "Setting smp flags = $sim_smp" 6>&1
749fi])dnl
750])
751AC_SUBST(sim_smp)
752
753
754AC_DEFUN([SIM_AC_OPTION_STDCALL],
755[
756AC_ARG_ENABLE(sim-stdcall,
8d0978fb
MF
757[AS_HELP_STRING([--enable-sim-stdcall=type],
758 [Use an alternative function call/return mechanism - x86/GCC specific])],
9c082ca8
MF
759[case "${enableval}" in
760 no) sim_stdcall="" ;;
761 std*) sim_stdcall="-DWITH_STDCALL=1";;
762 yes) sim_stdcall="-DWITH_STDCALL=1";;
763 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-stdcall"); sim_stdcall="";;
764esac
765if test x"$silent" != x"yes" && test x"$sim_stdcall" != x""; then
766 echo "Setting function call flags = $sim_stdcall" 6>&1
767fi],[sim_stdcall=""])dnl
768])
769AC_SUBST(sim_stdcall)
770
771
772AC_DEFUN([SIM_AC_OPTION_XOR_ENDIAN],
773[
774default_sim_xor_endian="ifelse([$1],,8,[$1])"
775AC_ARG_ENABLE(sim-xor-endian,
8d0978fb
MF
776[AS_HELP_STRING([--enable-sim-xor-endian=n],
777 [Specify number bytes involved in XOR bi-endian mode (default ${default_sim_xor_endian})])],
9c082ca8
MF
778[case "${enableval}" in
779 yes) sim_xor_endian="-DWITH_XOR_ENDIAN=8";;
780 no) sim_xor_endian="-DWITH_XOR_ENDIAN=0";;
781 *) sim_xor_endian="-DWITH_XOR_ENDIAN=$enableval";;
782esac
783if test x"$silent" != x"yes" && test x"$sim_xor_endian" != x""; then
784 echo "Setting xor-endian flag = $sim_xor_endian" 6>&1
785fi],[sim_xor_endian="-DWITH_XOR_ENDIAN=${default_sim_xor_endian}"])dnl
786])
787AC_SUBST(sim_xor_endian)
788
789
790dnl --enable-build-warnings is for developers of the simulator.
791dnl it enables extra GCC specific warnings.
792AC_DEFUN([SIM_AC_OPTION_WARNINGS],
793[
ac0aacdf
MF
794AC_ARG_ENABLE(werror,
795 AS_HELP_STRING([--enable-werror], [treat compile warnings as errors]),
796 [case "${enableval}" in
797 yes | y) ERROR_ON_WARNING="yes" ;;
798 no | n) ERROR_ON_WARNING="no" ;;
799 *) AC_MSG_ERROR(bad value ${enableval} for --enable-werror) ;;
800 esac])
801
802# Enable -Werror by default when using gcc
803if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
804 ERROR_ON_WARNING=yes
805fi
806
807WERROR_CFLAGS=""
808if test "${ERROR_ON_WARNING}" = yes ; then
809# NOTE: Disabled in the sim dir due to most sims generating warnings.
810# WERROR_CFLAGS="-Werror"
811 true
9c082ca8 812fi
ac0aacdf 813
ac0aacdf 814build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \
1a8a700e 815-Wpointer-sign \
ac0aacdf 816-Wno-unused -Wunused-value -Wunused-function \
1a8a700e
MF
817-Wno-switch -Wno-char-subscripts -Wmissing-prototypes
818-Wdeclaration-after-statement -Wempty-body -Wmissing-parameter-type \
819-Wold-style-declaration -Wold-style-definition"
ac0aacdf
MF
820
821# Enable -Wno-format by default when using gcc on mingw since many
822# GCC versions complain about %I64.
823case "${host}" in
824 *-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;;
d3685d60 825 *) build_warnings="$build_warnings -Wformat-nonliteral" ;;
ac0aacdf
MF
826esac
827
9c082ca8 828AC_ARG_ENABLE(build-warnings,
ac0aacdf 829AS_HELP_STRING([--enable-build-warnings], [enable build-time compiler warnings if gcc is used]),
9c082ca8
MF
830[case "${enableval}" in
831 yes) ;;
832 no) build_warnings="-w";;
833 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
834 build_warnings="${build_warnings} ${t}";;
835 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
836 build_warnings="${t} ${build_warnings}";;
837 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
838esac
839if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
840 echo "Setting compiler warning flags = $build_warnings" 6>&1
841fi])dnl
842AC_ARG_ENABLE(sim-build-warnings,
ac0aacdf 843AS_HELP_STRING([--enable-sim-build-warnings], [enable SIM specific build-time compiler warnings if gcc is used]),
9c082ca8
MF
844[case "${enableval}" in
845 yes) ;;
846 no) build_warnings="-w";;
847 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
848 build_warnings="${build_warnings} ${t}";;
849 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
850 build_warnings="${t} ${build_warnings}";;
851 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
852esac
853if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
854 echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
855fi])dnl
856WARN_CFLAGS=""
9c082ca8
MF
857if test "x${build_warnings}" != x -a "x$GCC" = xyes
858then
859 AC_MSG_CHECKING(compiler warning flags)
860 # Separate out the -Werror flag as some files just cannot be
861 # compiled with it enabled.
862 for w in ${build_warnings}; do
863 case $w in
864 -Werr*) WERROR_CFLAGS=-Werror ;;
865 *) # Check that GCC accepts it
866 saved_CFLAGS="$CFLAGS"
867 CFLAGS="$CFLAGS $w"
868 AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
869 CFLAGS="$saved_CFLAGS"
870 esac
871 done
ac0aacdf 872 AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
9c082ca8
MF
873fi
874])
875AC_SUBST(WARN_CFLAGS)
876AC_SUBST(WERROR_CFLAGS)
877
878
879dnl Generate the Makefile in a target specific directory.
880dnl Substitutions aren't performed on the file in AC_SUBST_FILE,
881dnl so this is a cover macro to tuck the details away of how we cope.
882dnl We cope by having autoconf generate two files and then merge them into
883dnl one afterwards. The two pieces of the common fragment are inserted into
884dnl the target's fragment at the appropriate points.
885
886AC_DEFUN([SIM_AC_OUTPUT],
887[
888AC_LINK_FILES($sim_link_files, $sim_link_links)
889dnl Make @cgen_breaks@ non-null only if the sim uses CGEN.
890cgen_breaks=""
891if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
892cgen_breaks="break cgen_rtx_error";
893fi
894AC_SUBST(cgen_breaks)
895AC_CONFIG_FILES(Makefile.sim:Makefile.in)
896AC_CONFIG_FILES(Make-common.sim:../common/Make-common.in)
897AC_CONFIG_FILES(.gdbinit:../common/gdbinit.in)
898AC_CONFIG_COMMANDS([Makefile],
899[echo "Merging Makefile.sim+Make-common.sim into Makefile ..."
900 rm -f Makesim1.tmp Makesim2.tmp Makefile
901 sed -n -e '/^## COMMON_PRE_/,/^## End COMMON_PRE_/ p' <Make-common.sim >Makesim1.tmp
902 sed -n -e '/^## COMMON_POST_/,/^## End COMMON_POST_/ p' <Make-common.sim >Makesim2.tmp
903 sed -e '/^## COMMON_PRE_/ r Makesim1.tmp' \
904 -e '/^## COMMON_POST_/ r Makesim2.tmp' \
905 <Makefile.sim >Makefile
906 rm -f Makefile.sim Make-common.sim Makesim1.tmp Makesim2.tmp
907])
908AC_CONFIG_COMMANDS([stamp-h], [echo > stamp-h])
909AC_OUTPUT
910])
911
912sinclude(../../config/gettext-sister.m4)
913sinclude(../../config/acx.m4)
914
915dnl --enable-cgen-maint support
916AC_DEFUN([SIM_AC_OPTION_CGEN_MAINT],
917[
918cgen_maint=no
919dnl Default is to use one in build tree.
920cgen=guile
921cgendir='$(srcdir)/../../cgen'
922dnl Having --enable-maintainer-mode take arguments is another way to go.
923dnl ??? One can argue --with is more appropriate if one wants to specify
924dnl a directory name, but what we're doing here is an enable/disable kind
925dnl of thing and specifying both --enable and --with is klunky.
926dnl If you reeely want this to be --with, go ahead and change it.
927AC_ARG_ENABLE(cgen-maint,
8d0978fb 928[AS_HELP_STRING([--enable-cgen-maint[=DIR]], [build cgen generated files])],
9c082ca8
MF
929[case "${enableval}" in
930 yes) cgen_maint=yes ;;
931 no) cgen_maint=no ;;
932 *)
933 # argument is cgen install directory (not implemented yet).
934 # Having a `share' directory might be more appropriate for the .scm,
935 # .cpu, etc. files.
936 cgendir=${cgen_maint}/lib/cgen
937 cgen=guile
938 ;;
939esac])dnl
940dnl AM_CONDITIONAL(CGEN_MAINT, test x${cgen_maint} != xno)
941if test x${cgen_maint} != xno ; then
942 CGEN_MAINT=''
943else
944 CGEN_MAINT='#'
945fi
946AC_SUBST(CGEN_MAINT)
947AC_SUBST(cgendir)
948AC_SUBST(cgen)
949])
This page took 0.267942 seconds and 4 git commands to generate.