sim: move from common.m4 to SIM_AC_COMMON
[deliverable/binutils-gdb.git] / sim / common / aclocal.m4
CommitLineData
c906108c
SS
1# This file contains common code used by all simulators.
2#
3# SIM_AC_COMMON invokes AC macros used by all simulators and by the common
4# directory. It is intended to be invoked before any target specific stuff.
5# SIM_AC_OUTPUT is a cover function to AC_OUTPUT to generate the Makefile.
6# It is intended to be invoked last.
7#
8# The simulator's configure.in should look like:
9#
10# dnl Process this file with autoconf to produce a configure script.
6ffe910a 11# AC_PREREQ(2.64)dnl
c906108c 12# AC_INIT(Makefile.in)
63042524 13# sinclude(../common/aclocal.m4)
c906108c
SS
14#
15# SIM_AC_COMMON
16#
17# ... target specific stuff ...
18#
19# SIM_AC_OUTPUT
20
d6416cdc
RW
21# Include global overrides and fixes for Autoconf.
22m4_include(../../config/override.m4)
5912fadd 23sinclude([../../config/zlib.m4])
d6416cdc 24
6878aceb 25AC_DEFUN([SIM_AC_COMMON],
c906108c 26[
24a6c33d 27AC_REQUIRE([AC_PROG_CC])
c906108c
SS
28# autoconf.info says this should be called right after AC_INIT.
29AC_CONFIG_HEADER(ifelse([$1],,config.h,[$1]):config.in)
c906108c
SS
30AC_CANONICAL_SYSTEM
31AC_ARG_PROGRAM
c906108c
SS
32AC_PROG_INSTALL
33
34# Put a plausible default for CC_FOR_BUILD in Makefile.
35if test "x$cross_compiling" = "xno"; then
36 CC_FOR_BUILD='$(CC)'
37else
38 CC_FOR_BUILD=gcc
39fi
40AC_SUBST(CC_FOR_BUILD)
41
42AC_SUBST(CFLAGS)
43AC_SUBST(HDEFINES)
44AR=${AR-ar}
45AC_SUBST(AR)
46AC_PROG_RANLIB
47
48dnl We don't use gettext, but bfd does. So we do the appropriate checks
49dnl to see if there are intl libraries we should link against.
50ALL_LINGUAS=
e85e3205 51ZW_GNU_GETTEXT_SISTER_DIR(../../intl)
c906108c
SS
52
53# Check for common headers.
54# FIXME: Seems to me this can cause problems for i386-windows hosts.
55# At one point there were hardcoded AC_DEFINE's if ${host} = i386-*-windows*.
56AC_CHECK_HEADERS(stdlib.h string.h strings.h unistd.h time.h)
57AC_CHECK_HEADERS(sys/time.h sys/resource.h)
58AC_CHECK_HEADERS(fcntl.h fpu_control.h)
59AC_CHECK_HEADERS(dlfcn.h errno.h sys/stat.h)
60AC_CHECK_FUNCS(getrusage time sigaction __setfpucw)
61
62# Check for socket libraries
63AC_CHECK_LIB(socket, bind)
64AC_CHECK_LIB(nsl, gethostbyname)
65
4a99173d
MF
66# BFD conditionally uses zlib, so we must link it in if libbfd does, by
67# using the same condition.
68AM_ZLIB
69
c906108c
SS
70. ${srcdir}/../../bfd/configure.host
71
72dnl Standard (and optional) simulator options.
73dnl Eventually all simulators will support these.
74dnl Do not add any here that cannot be supported by all simulators.
75dnl Do not add similar but different options to a particular simulator,
76dnl all shall eventually behave the same way.
77
78
79dnl We don't use automake, but we still want to support
80dnl --enable-maintainer-mode.
81USE_MAINTAINER_MODE=no
82AC_ARG_ENABLE(maintainer-mode,
83[ --enable-maintainer-mode Enable developer functionality.],
84[case "${enableval}" in
85 yes) MAINT="" USE_MAINTAINER_MODE=yes ;;
86 no) MAINT="#" ;;
87 *) AC_MSG_ERROR("--enable-maintainer-mode does not take a value"); MAINT="#" ;;
88esac
89if test x"$silent" != x"yes" && test x"$MAINT" = x""; then
90 echo "Setting maintainer mode" 6>&1
91fi],[MAINT="#"])dnl
92AC_SUBST(MAINT)
93
94
95dnl This is a generic option to enable special byte swapping
96dnl insns on *any* cpu.
97AC_ARG_ENABLE(sim-bswap,
98[ --enable-sim-bswap Use Host specific BSWAP instruction.],
99[case "${enableval}" in
100 yes) sim_bswap="-DWITH_BSWAP=1 -DUSE_BSWAP=1";;
101 no) sim_bswap="-DWITH_BSWAP=0";;
102 *) AC_MSG_ERROR("--enable-sim-bswap does not take a value"); sim_bswap="";;
103esac
104if test x"$silent" != x"yes" && test x"$sim_bswap" != x""; then
105 echo "Setting bswap flags = $sim_bswap" 6>&1
106fi],[sim_bswap=""])dnl
107AC_SUBST(sim_bswap)
108
109
110AC_ARG_ENABLE(sim-cflags,
111[ --enable-sim-cflags=opts Extra CFLAGS for use in building simulator],
112[case "${enableval}" in
113 yes) sim_cflags="-O2 -fomit-frame-pointer";;
114 trace) AC_MSG_ERROR("Please use --enable-sim-debug instead."); sim_cflags="";;
115 no) sim_cflags="";;
116 *) sim_cflags=`echo "${enableval}" | sed -e "s/,/ /g"`;;
117esac
118if test x"$silent" != x"yes" && test x"$sim_cflags" != x""; then
119 echo "Setting sim cflags = $sim_cflags" 6>&1
120fi],[sim_cflags=""])dnl
121AC_SUBST(sim_cflags)
122
123
124dnl --enable-sim-debug is for developers of the simulator
125dnl the allowable values are work-in-progress
126AC_ARG_ENABLE(sim-debug,
127[ --enable-sim-debug=opts Enable debugging flags],
128[case "${enableval}" in
129 yes) sim_debug="-DDEBUG=7 -DWITH_DEBUG=7";;
130 no) sim_debug="-DDEBUG=0 -DWITH_DEBUG=0";;
131 *) sim_debug="-DDEBUG='(${enableval})' -DWITH_DEBUG='(${enableval})'";;
132esac
133if test x"$silent" != x"yes" && test x"$sim_debug" != x""; then
134 echo "Setting sim debug = $sim_debug" 6>&1
135fi],[sim_debug=""])dnl
136AC_SUBST(sim_debug)
137
138
139dnl --enable-sim-stdio is for users of the simulator
140dnl It determines if IO from the program is routed through STDIO (buffered)
141AC_ARG_ENABLE(sim-stdio,
142[ --enable-sim-stdio Specify whether to use stdio for console input/output.],
143[case "${enableval}" in
144 yes) sim_stdio="-DWITH_STDIO=DO_USE_STDIO";;
145 no) sim_stdio="-DWITH_STDIO=DONT_USE_STDIO";;
146 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-stdio"); sim_stdio="";;
147esac
148if test x"$silent" != x"yes" && test x"$sim_stdio" != x""; then
149 echo "Setting stdio flags = $sim_stdio" 6>&1
150fi],[sim_stdio=""])dnl
151AC_SUBST(sim_stdio)
152
153
154dnl --enable-sim-trace is for users of the simulator
155dnl The argument is either a bitmask of things to enable [exactly what is
156dnl up to the simulator], or is a comma separated list of names of tracing
157dnl elements to enable. The latter is only supported on simulators that
158dnl use WITH_TRACE.
159AC_ARG_ENABLE(sim-trace,
160[ --enable-sim-trace=opts Enable tracing flags],
161[case "${enableval}" in
162 yes) sim_trace="-DTRACE=1 -DWITH_TRACE=-1";;
163 no) sim_trace="-DTRACE=0 -DWITH_TRACE=0";;
164 [[-0-9]]*)
165 sim_trace="-DTRACE='(${enableval})' -DWITH_TRACE='(${enableval})'";;
166 [[a-z]]*)
167 sim_trace=""
168 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
169 if test x"$sim_trace" = x; then
170 sim_trace="-DWITH_TRACE='(TRACE_$x"
171 else
172 sim_trace="${sim_trace}|TRACE_$x"
173 fi
174 done
175 sim_trace="$sim_trace)'" ;;
176esac
177if test x"$silent" != x"yes" && test x"$sim_trace" != x""; then
178 echo "Setting sim trace = $sim_trace" 6>&1
179fi],[sim_trace=""])dnl
180AC_SUBST(sim_trace)
181
182
183dnl --enable-sim-profile
184dnl The argument is either a bitmask of things to enable [exactly what is
185dnl up to the simulator], or is a comma separated list of names of profiling
186dnl elements to enable. The latter is only supported on simulators that
187dnl use WITH_PROFILE.
188AC_ARG_ENABLE(sim-profile,
189[ --enable-sim-profile=opts Enable profiling flags],
190[case "${enableval}" in
191 yes) sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1";;
192 no) sim_profile="-DPROFILE=0 -DWITH_PROFILE=0";;
193 [[-0-9]]*)
194 sim_profile="-DPROFILE='(${enableval})' -DWITH_PROFILE='(${enableval})'";;
195 [[a-z]]*)
196 sim_profile=""
197 for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
198 if test x"$sim_profile" = x; then
199 sim_profile="-DWITH_PROFILE='(PROFILE_$x"
200 else
201 sim_profile="${sim_profile}|PROFILE_$x"
202 fi
203 done
204 sim_profile="$sim_profile)'" ;;
205esac
206if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
207 echo "Setting sim profile = $sim_profile" 6>&1
eb2d80b4 208fi],[sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"])dnl
c906108c
SS
209AC_SUBST(sim_profile)
210
4a99173d
MF
211ACX_PKGVERSION([GDB])
212ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
213AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
214AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
c906108c
SS
215
216dnl Types used by common code
217AC_TYPE_SIGNAL
218
219dnl Detect exe extension
cd0fc7c3 220AC_EXEEXT
c906108c
SS
221
222dnl These are available to append to as desired.
223sim_link_files=
224sim_link_links=
225
226dnl Create tconfig.h either from simulator's tconfig.in or default one
227dnl in common.
228sim_link_links=tconfig.h
229if test -f ${srcdir}/tconfig.in
230then
231 sim_link_files=tconfig.in
232else
233 sim_link_files=../common/tconfig.in
234fi
235
236# targ-vals.def points to the libc macro description file.
237case "${target}" in
238*-*-*) TARG_VALS_DEF=../common/nltvals.def ;;
239esac
240sim_link_files="${sim_link_files} ${TARG_VALS_DEF}"
241sim_link_links="${sim_link_links} targ-vals.def"
242
243]) dnl End of SIM_AC_COMMON
244
245
246dnl Additional SIM options that can (optionally) be configured
247dnl For optional simulator options, a macro SIM_AC_OPTION_* is defined.
248dnl Simulators that wish to use the relevant option specify the macro
249dnl in the simulator specific configure.in file between the SIM_AC_COMMON
250dnl and SIM_AC_OUTPUT lines.
251
252
253dnl Specify the running environment.
254dnl If the simulator invokes this in its configure.in then without this option
255dnl the default is the user environment and all are runtime selectable.
256dnl If the simulator doesn't invoke this, only the user environment is
257dnl supported.
258dnl ??? Until there is demonstrable value in doing something more complicated,
259dnl let's not.
6878aceb 260AC_DEFUN([SIM_AC_OPTION_ENVIRONMENT],
c906108c
SS
261[
262AC_ARG_ENABLE(sim-environment,
263[ --enable-sim-environment=environment Specify mixed, user, virtual or operating environment.],
264[case "${enableval}" in
265 all | ALL) sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT";;
266 user | USER) sim_environment="-DWITH_ENVIRONMENT=USER_ENVIRONMENT";;
267 virtual | VIRTUAL) sim_environment="-DWITH_ENVIRONMENT=VIRTUAL_ENVIRONMENT";;
268 operating | OPERATING) sim_environment="-DWITH_ENVIRONMENT=OPERATING_ENVIRONMENT";;
269 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-environment");
270 sim_environment="";;
271esac
272if test x"$silent" != x"yes" && test x"$sim_environment" != x""; then
273 echo "Setting sim environment = $sim_environment" 6>&1
274fi],
275[sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT"])dnl
276])
277AC_SUBST(sim_environment)
278
279
280dnl Specify the alignment restrictions of the target architecture.
281dnl Without this option all possible alignment restrictions are accommodated.
282dnl arg[1] is hardwired target alignment
283dnl arg[2] is default target alignment
6878aceb 284AC_DEFUN([SIM_AC_OPTION_ALIGNMENT],
c906108c
SS
285wire_alignment="[$1]"
286default_alignment="[$2]"
287[
288AC_ARG_ENABLE(sim-alignment,
289[ --enable-sim-alignment=align Specify strict, nonstrict or forced alignment of memory accesses.],
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.
6878aceb 333AC_DEFUN([SIM_AC_OPTION_ASSERT],
c906108c
SS
334[
335AC_ARG_ENABLE(sim-assert,
336[ --enable-sim-assert Specify whether to perform random assertions.],
337[case "${enableval}" in
338 yes) sim_assert="-DWITH_ASSERT=1";;
339 no) sim_assert="-DWITH_ASSERT=0";;
340 *) AC_MSG_ERROR("--enable-sim-assert does not take a value"); sim_assert="";;
341esac
342if test x"$silent" != x"yes" && test x"$sim_assert" != x""; then
343 echo "Setting assert flags = $sim_assert" 6>&1
344fi],[sim_assert=""])dnl
345])
346AC_SUBST(sim_assert)
347
348
349
350dnl --enable-sim-bitsize is for developers of the simulator
351dnl It specifies the number of BITS in the target.
352dnl arg[1] is the number of bits in a word
353dnl arg[2] is the number assigned to the most significant bit
354dnl arg[3] is the number of bits in an address
355dnl arg[4] is the number of bits in an OpenFirmware cell.
356dnl FIXME: this information should be obtained from bfd/archure
6878aceb 357AC_DEFUN([SIM_AC_OPTION_BITSIZE],
c906108c
SS
358wire_word_bitsize="[$1]"
359wire_word_msb="[$2]"
360wire_address_bitsize="[$3]"
361wire_cell_bitsize="[$4]"
362[AC_ARG_ENABLE(sim-bitsize,
363[ --enable-sim-bitsize=N Specify target bitsize (32 or 64).],
364[sim_bitsize=
365case "${enableval}" in
366 64,63 | 64,63,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63";;
367 32,31 | 32,31,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31";;
368 64,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
369 32,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
370 32) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
371 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31"
372 else
373 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0"
374 fi ;;
375 64) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
376 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63"
377 else
378 sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=0"
379 fi ;;
380 *) AC_MSG_ERROR("--enable-sim-bitsize was given $enableval. Expected 32 or 64") ;;
381esac
382# address bitsize
383tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9]]*,*//"`
384case x"${tmp}" in
385 x ) ;;
386 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=32" ;;
387 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=64" ;;
388 * ) AC_MSG_ERROR("--enable-sim-bitsize was given address size $enableval. Expected 32 or 64") ;;
389esac
390# cell bitsize
391tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9*]]*,*[[0-9]]*,*//"`
392case x"${tmp}" in
393 x ) ;;
394 x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=32" ;;
395 x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=64" ;;
396 * ) AC_MSG_ERROR("--enable-sim-bitsize was given cell size $enableval. Expected 32 or 64") ;;
397esac
398if test x"$silent" != x"yes" && test x"$sim_bitsize" != x""; then
399 echo "Setting bitsize flags = $sim_bitsize" 6>&1
400fi],
401[sim_bitsize=""
402if test x"$wire_word_bitsize" != x; then
403 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_BITSIZE=$wire_word_bitsize"
404fi
405if test x"$wire_word_msb" != x; then
406 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_MSB=$wire_word_msb"
407fi
408if test x"$wire_address_bitsize" != x; then
409 sim_bitsize="$sim_bitsize -DWITH_TARGET_ADDRESS_BITSIZE=$wire_address_bitsize"
410fi
411if test x"$wire_cell_bitsize" != x; then
412 sim_bitsize="$sim_bitsize -DWITH_TARGET_CELL_BITSIZE=$wire_cell_bitsize"
413fi])dnl
414])
415AC_SUBST(sim_bitsize)
416
417
418
419dnl --enable-sim-endian={yes,no,big,little} is for simulators
420dnl that support both big and little endian targets.
421dnl arg[1] is hardwired target endianness.
422dnl arg[2] is default target endianness.
6878aceb 423AC_DEFUN([SIM_AC_OPTION_ENDIAN],
c906108c
SS
424[
425wire_endian="[$1]"
426default_endian="[$2]"
427AC_ARG_ENABLE(sim-endian,
428[ --enable-sim-endian=endian Specify target byte endian orientation.],
429[case "${enableval}" in
430 b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BIG_ENDIAN";;
431 l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=LITTLE_ENDIAN";;
432 yes) if test x"$wire_endian" != x; then
433 sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
434 else
435 if test x"$default_endian" != x; then
436 sim_endian="-DWITH_TARGET_BYTE_ORDER=${default_endian}"
437 else
438 echo "No hard-wired endian for target $target" 1>&6
439 sim_endian="-DWITH_TARGET_BYTE_ORDER=0"
440 fi
441 fi;;
442 no) if test x"$default_endian" != x; then
443 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
444 else
445 if test x"$wire_endian" != x; then
446 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${wire_endian}"
447 else
448 echo "No default endian for target $target" 1>&6
449 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=0"
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
458 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
459else
460 if test x"$wire_endian" != x; then
461 sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
462 else
463 sim_endian=
464 fi
465fi])dnl
466])
467AC_SUBST(sim_endian)
468
469
470dnl --enable-sim-hostendian is for users of the simulator when
471dnl they find that AC_C_BIGENDIAN does not function correctly
472dnl (for instance in a canadian cross)
6878aceb 473AC_DEFUN([SIM_AC_OPTION_HOSTENDIAN],
c906108c
SS
474[
475AC_ARG_ENABLE(sim-hostendian,
476[ --enable-sim-hostendian=end Specify host byte endian orientation.],
477[case "${enableval}" in
478 no) sim_hostendian="-DWITH_HOST_BYTE_ORDER=0";;
479 b*|B*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN";;
480 l*|L*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN";;
481 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-hostendian"); sim_hostendian="";;
482esac
483if test x"$silent" != x"yes" && test x"$sim_hostendian" != x""; then
484 echo "Setting hostendian flags = $sim_hostendian" 6>&1
485fi],[
486if test "x$cross_compiling" = "xno"; then
487 AC_C_BIGENDIAN
488 if test $ac_cv_c_bigendian = yes; then
489 sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN"
490 else
491 sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN"
492 fi
493else
494 sim_hostendian="-DWITH_HOST_BYTE_ORDER=0"
495fi])dnl
496])
497AC_SUBST(sim_hostendian)
498
499
500dnl --enable-sim-float is for developers of the simulator
501dnl It specifies the presence of hardware floating point
502dnl And optionally the bitsize of the floating point register.
503dnl arg[1] specifies the presence (or absence) of floating point hardware
504dnl arg[2] specifies the number of bits in a floating point register
6878aceb 505AC_DEFUN([SIM_AC_OPTION_FLOAT],
c906108c
SS
506[
507default_sim_float="[$1]"
508default_sim_float_bitsize="[$2]"
509AC_ARG_ENABLE(sim-float,
510[ --enable-sim-float Specify that the target processor has floating point hardware.],
511[case "${enableval}" in
512 yes | hard) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT";;
513 no | soft) sim_float="-DWITH_FLOATING_POINT=SOFT_FLOATING_POINT";;
514 32) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=32";;
515 64) sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=64";;
516 *) AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-float"); sim_float="";;
517esac
518if test x"$silent" != x"yes" && test x"$sim_float" != x""; then
519 echo "Setting float flags = $sim_float" 6>&1
520fi],[
521sim_float=
522if test x"${default_sim_float}" != x""; then
523 sim_float="-DWITH_FLOATING_POINT=${default_sim_float}"
524fi
525if test x"${default_sim_float_bitsize}" != x""; then
526 sim_float="$sim_float -DWITH_TARGET_FLOATING_POINT_BITSIZE=${default_sim_float_bitsize}"
527fi
528])dnl
529])
530AC_SUBST(sim_float)
531
532
533dnl The argument is the default cache size if none is specified.
6878aceb 534AC_DEFUN([SIM_AC_OPTION_SCACHE],
c906108c
SS
535[
536default_sim_scache="ifelse([$1],,0,[$1])"
537AC_ARG_ENABLE(sim-scache,
538[ --enable-sim-scache=size Specify simulator execution cache size.],
539[case "${enableval}" in
540 yes) sim_scache="-DWITH_SCACHE=${default_sim_scache}";;
541 no) sim_scache="-DWITH_SCACHE=0" ;;
9397fcbf 542 [[0-9]]*) sim_scache="-DWITH_SCACHE=${enableval}";;
c906108c
SS
543 *) AC_MSG_ERROR("Bad value $enableval passed to --enable-sim-scache");
544 sim_scache="";;
545esac
546if test x"$silent" != x"yes" && test x"$sim_scache" != x""; then
547 echo "Setting scache size = $sim_scache" 6>&1
548fi],[sim_scache="-DWITH_SCACHE=${default_sim_scache}"])
549])
550AC_SUBST(sim_scache)
551
552
553dnl The argument is the default model if none is specified.
6878aceb 554AC_DEFUN([SIM_AC_OPTION_DEFAULT_MODEL],
c906108c
SS
555[
556default_sim_default_model="ifelse([$1],,0,[$1])"
557AC_ARG_ENABLE(sim-default-model,
558[ --enable-sim-default-model=model Specify default model to simulate.],
559[case "${enableval}" in
560 yes|no) AC_MSG_ERROR("Missing argument to --enable-sim-default-model");;
561 *) sim_default_model="-DWITH_DEFAULT_MODEL='\"${enableval}\"'";;
562esac
563if test x"$silent" != x"yes" && test x"$sim_default_model" != x""; then
564 echo "Setting default model = $sim_default_model" 6>&1
565fi],[sim_default_model="-DWITH_DEFAULT_MODEL='\"${default_sim_default_model}\"'"])
566])
567AC_SUBST(sim_default_model)
568
569
570dnl --enable-sim-hardware is for users of the simulator
571dnl arg[1] Enable sim-hw by default? ("yes" or "no")
572dnl arg[2] is a space separated list of devices that override the defaults
573dnl arg[3] is a space separated list of extra target specific devices.
6878aceb 574AC_DEFUN([SIM_AC_OPTION_HARDWARE],
c906108c
SS
575[
576if test x"[$1]" = x"yes"; then
577 sim_hw_p=yes
578else
579 sim_hw_p=no
580fi
581if test "[$2]"; then
cb11d1f4 582 hardware="[$2]"
c906108c 583else
66ee2731 584 hardware="cfi core pal glue"
c906108c 585fi
cb11d1f4 586hardware="$hardware [$3]"
c906108c
SS
587sim_hw_cflags="-DWITH_HW=1"
588sim_hw="$hardware"
589sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([[^ ]][[^ ]]*\)/dv-\1.o/g'`"
590AC_ARG_ENABLE(sim-hardware,
591[ --enable-sim-hardware=LIST Specify the hardware to be included in the build.],
592[
593case "${enableval}" in
594 yes) sim_hw_p=yes;;
595 no) sim_hw_p=no;;
596 ,*) sim_hw_p=yes; hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
597 *,) sim_hw_p=yes; hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
598 *) sim_hw_p=yes; hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
599esac
600if test "$sim_hw_p" != yes; then
601 sim_hw_objs=
602 sim_hw_cflags="-DWITH_HW=0"
603 sim_hw=
604else
605 sim_hw_cflags="-DWITH_HW=1"
606 # remove duplicates
607 sim_hw=""
608 sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
ea696909
HPN
609 for i in $hardware ; do
610 case " $sim_hw " in
c906108c
SS
611 *" $i "*) ;;
612 *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
613 esac
614 done
615fi
616if test x"$silent" != x"yes" && test "$sim_hw_p" = "yes"; then
617 echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
618fi],[
619if test "$sim_hw_p" != yes; then
620 sim_hw_objs=
621 sim_hw_cflags="-DWITH_HW=0"
622 sim_hw=
623fi
624if test x"$silent" != x"yes"; then
625 echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
626fi])dnl
627])
628AC_SUBST(sim_hw_cflags)
629AC_SUBST(sim_hw_objs)
630AC_SUBST(sim_hw)
631
632
633dnl --enable-sim-inline is for users that wish to ramp up the simulator's
634dnl performance by inlining functions.
635dnl Guarantee that unconfigured simulators do not do any inlining
636sim_inline="-DDEFAULT_INLINE=0"
6878aceb 637AC_DEFUN([SIM_AC_OPTION_INLINE],
c906108c
SS
638[
639default_sim_inline="ifelse([$1],,,-DDEFAULT_INLINE=[$1])"
640AC_ARG_ENABLE(sim-inline,
641[ --enable-sim-inline=inlines Specify which functions should be inlined.],
642[sim_inline=""
643case "$enableval" in
644 no) sim_inline="-DDEFAULT_INLINE=0";;
645 0) sim_inline="-DDEFAULT_INLINE=0";;
646 yes | 2) sim_inline="-DDEFAULT_INLINE=ALL_C_INLINE";;
647 1) sim_inline="-DDEFAULT_INLINE=INLINE_LOCALS";;
648 *) for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
649 new_flag=""
650 case "$x" in
651 *_INLINE=*) new_flag="-D$x";;
652 *=*) new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
653 *_INLINE) new_flag="-D$x=ALL_C_INLINE";;
654 *) new_flag="-D$x""_INLINE=ALL_C_INLINE";;
655 esac
656 if test x"$sim_inline" = x""; then
657 sim_inline="$new_flag"
658 else
659 sim_inline="$sim_inline $new_flag"
660 fi
661 done;;
662esac
663if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
664 echo "Setting inline flags = $sim_inline" 6>&1
665fi],[
666if test "x$cross_compiling" = "xno"; then
667 if test x"$GCC" != "x" -a x"${default_sim_inline}" != "x" ; then
668 sim_inline="${default_sim_inline}"
669 if test x"$silent" != x"yes"; then
670 echo "Setting inline flags = $sim_inline" 6>&1
671 fi
672 else
673 sim_inline=""
674 fi
675else
676 sim_inline="-DDEFAULT_INLINE=0"
677fi])dnl
678])
679AC_SUBST(sim_inline)
680
681
6878aceb 682AC_DEFUN([SIM_AC_OPTION_PACKAGES],
c906108c
SS
683[
684AC_ARG_ENABLE(sim-packages,
685[ --enable-sim-packages=list Specify the packages to be included in the build.],
686[packages=disklabel
687case "${enableval}" in
688 yes) ;;
689 no) AC_MSG_ERROR("List of packages must be specified for --enable-sim-packages"); packages="";;
690 ,*) packages="${packages}${enableval}";;
691 *,) packages="${enableval}${packages}";;
692 *) packages="${enableval}"'';;
693esac
694sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
695sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
696if test x"$silent" != x"yes" && test x"$packages" != x""; then
697 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
698fi],[packages=disklabel
699sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
700sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
701if test x"$silent" != x"yes"; then
702 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
703fi])dnl
704])
705AC_SUBST(sim_packages)
706
707
6878aceb 708AC_DEFUN([SIM_AC_OPTION_REGPARM],
c906108c
SS
709[
710AC_ARG_ENABLE(sim-regparm,
711[ --enable-sim-regparm=nr-parm Pass parameters in registers instead of on the stack - x86/GCC specific.],
712[case "${enableval}" in
713 0*|1*|2*|3*|4*|5*|6*|7*|8*|9*) sim_regparm="-DWITH_REGPARM=${enableval}";;
714 no) sim_regparm="" ;;
715 yes) sim_regparm="-DWITH_REGPARM=3";;
716 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-regparm"); sim_regparm="";;
717esac
718if test x"$silent" != x"yes" && test x"$sim_regparm" != x""; then
719 echo "Setting regparm flags = $sim_regparm" 6>&1
720fi],[sim_regparm=""])dnl
721])
722AC_SUBST(sim_regparm)
723
724
6878aceb 725AC_DEFUN([SIM_AC_OPTION_RESERVED_BITS],
c906108c
SS
726[
727default_sim_reserved_bits="ifelse([$1],,1,[$1])"
728AC_ARG_ENABLE(sim-reserved-bits,
729[ --enable-sim-reserved-bits Specify whether to check reserved bits in instruction.],
730[case "${enableval}" in
731 yes) sim_reserved_bits="-DWITH_RESERVED_BITS=1";;
732 no) sim_reserved_bits="-DWITH_RESERVED_BITS=0";;
733 *) AC_MSG_ERROR("--enable-sim-reserved-bits does not take a value"); sim_reserved_bits="";;
734esac
735if test x"$silent" != x"yes" && test x"$sim_reserved_bits" != x""; then
736 echo "Setting reserved flags = $sim_reserved_bits" 6>&1
737fi],[sim_reserved_bits="-DWITH_RESERVED_BITS=${default_sim_reserved_bits}"])dnl
738])
739AC_SUBST(sim_reserved_bits)
740
741
6878aceb 742AC_DEFUN([SIM_AC_OPTION_SMP],
c906108c
SS
743[
744default_sim_smp="ifelse([$1],,5,[$1])"
745AC_ARG_ENABLE(sim-smp,
746[ --enable-sim-smp=n Specify number of processors to configure for (default ${default_sim_smp}).],
747[case "${enableval}" in
748 yes) sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5";;
749 no) sim_smp="-DWITH_SMP=0" ; sim_igen_smp="-N 0";;
750 *) sim_smp="-DWITH_SMP=$enableval" ; sim_igen_smp="-N $enableval";;
751esac
752if test x"$silent" != x"yes" && test x"$sim_smp" != x""; then
753 echo "Setting smp flags = $sim_smp" 6>&1
754fi],[sim_smp="-DWITH_SMP=${default_sim_smp}" ; sim_igen_smp="-N ${default_sim_smp}"
755if test x"$silent" != x"yes"; then
756 echo "Setting smp flags = $sim_smp" 6>&1
757fi])dnl
758])
759AC_SUBST(sim_smp)
760
761
6878aceb 762AC_DEFUN([SIM_AC_OPTION_STDCALL],
c906108c
SS
763[
764AC_ARG_ENABLE(sim-stdcall,
765[ --enable-sim-stdcall=type Use an alternative function call/return mechanism - x86/GCC specific.],
766[case "${enableval}" in
767 no) sim_stdcall="" ;;
768 std*) sim_stdcall="-DWITH_STDCALL=1";;
769 yes) sim_stdcall="-DWITH_STDCALL=1";;
770 *) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-stdcall"); sim_stdcall="";;
771esac
772if test x"$silent" != x"yes" && test x"$sim_stdcall" != x""; then
773 echo "Setting function call flags = $sim_stdcall" 6>&1
774fi],[sim_stdcall=""])dnl
775])
776AC_SUBST(sim_stdcall)
777
778
6878aceb 779AC_DEFUN([SIM_AC_OPTION_XOR_ENDIAN],
c906108c
SS
780[
781default_sim_xor_endian="ifelse([$1],,8,[$1])"
782AC_ARG_ENABLE(sim-xor-endian,
783[ --enable-sim-xor-endian=n Specify number bytes involved in XOR bi-endian mode (default ${default_sim_xor_endian}).],
784[case "${enableval}" in
785 yes) sim_xor_endian="-DWITH_XOR_ENDIAN=8";;
786 no) sim_xor_endian="-DWITH_XOR_ENDIAN=0";;
787 *) sim_xor_endian="-DWITH_XOR_ENDIAN=$enableval";;
788esac
789if test x"$silent" != x"yes" && test x"$sim_xor_endian" != x""; then
790 echo "Setting xor-endian flag = $sim_xor_endian" 6>&1
791fi],[sim_xor_endian="-DWITH_XOR_ENDIAN=${default_sim_xor_endian}"])dnl
792])
793AC_SUBST(sim_xor_endian)
794
795
796dnl --enable-build-warnings is for developers of the simulator.
797dnl it enables extra GCC specific warnings.
6878aceb 798AC_DEFUN([SIM_AC_OPTION_WARNINGS],
c906108c 799[
c8cca39f
AC
800# NOTE: Don't add -Wall or -Wunused, they both include
801# -Wunused-parameter which reports bogus warnings.
802# NOTE: If you add to this list, remember to update
803# gdb/doc/gdbint.texinfo.
804build_warnings="-Wimplicit -Wreturn-type -Wcomment -Wtrigraphs \
51216631
JB
805-Wformat -Wparentheses -Wpointer-arith"
806# GCC supports -Wuninitialized only with -O or -On, n != 0.
807if test x${CFLAGS+set} = xset; then
808 case "${CFLAGS}" in
809 *"-O0"* ) ;;
810 *"-O"* )
811 build_warnings="${build_warnings} -Wuninitialized"
812 ;;
813 esac
814else
815 build_warnings="${build_warnings} -Wuninitialized"
816fi
c8cca39f
AC
817# Up for debate: -Wswitch -Wcomment -trigraphs -Wtrigraphs
818# -Wunused-function -Wunused-label -Wunused-variable -Wunused-value
819# -Wchar-subscripts -Wtraditional -Wshadow -Wcast-qual
820# -Wcast-align -Wwrite-strings -Wconversion -Wstrict-prototypes
821# -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls
822# -Woverloaded-virtual -Winline -Werror"
c906108c 823AC_ARG_ENABLE(build-warnings,
c8cca39f
AC
824[ --enable-build-warnings Enable build-time compiler warnings if gcc is used],
825[case "${enableval}" in
c906108c
SS
826 yes) ;;
827 no) build_warnings="-w";;
828 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
c8cca39f 829 build_warnings="${build_warnings} ${t}";;
c906108c 830 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
c8cca39f
AC
831 build_warnings="${t} ${build_warnings}";;
832 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
c906108c
SS
833esac
834if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
c8cca39f
AC
835 echo "Setting compiler warning flags = $build_warnings" 6>&1
836fi])dnl
837AC_ARG_ENABLE(sim-build-warnings,
838[ --enable-gdb-build-warnings Enable SIM specific build-time compiler warnings if gcc is used],
839[case "${enableval}" in
840 yes) ;;
841 no) build_warnings="-w";;
842 ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
843 build_warnings="${build_warnings} ${t}";;
844 *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
845 build_warnings="${t} ${build_warnings}";;
846 *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
847esac
848if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
849 echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
850fi])dnl
d4f3574e
SS
851WARN_CFLAGS=""
852WERROR_CFLAGS=""
853if test "x${build_warnings}" != x -a "x$GCC" = xyes
854then
c8cca39f
AC
855 AC_MSG_CHECKING(compiler warning flags)
856 # Separate out the -Werror flag as some files just cannot be
857 # compiled with it enabled.
858 for w in ${build_warnings}; do
859 case $w in
860 -Werr*) WERROR_CFLAGS=-Werror ;;
861 *) # Check that GCC accepts it
862 saved_CFLAGS="$CFLAGS"
863 CFLAGS="$CFLAGS $w"
864 AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
865 CFLAGS="$saved_CFLAGS"
866 esac
867 done
868 AC_MSG_RESULT(${WARN_CFLAGS}${WERROR_CFLAGS})
869fi
c906108c 870])
d4f3574e
SS
871AC_SUBST(WARN_CFLAGS)
872AC_SUBST(WERROR_CFLAGS)
c906108c
SS
873
874
875dnl Generate the Makefile in a target specific directory.
876dnl Substitutions aren't performed on the file in AC_SUBST_FILE,
877dnl so this is a cover macro to tuck the details away of how we cope.
878dnl We cope by having autoconf generate two files and then merge them into
879dnl one afterwards. The two pieces of the common fragment are inserted into
880dnl the target's fragment at the appropriate points.
881
6878aceb 882AC_DEFUN([SIM_AC_OUTPUT],
c906108c
SS
883[
884AC_LINK_FILES($sim_link_files, $sim_link_links)
119860e5
HPN
885dnl Make @cgen_breaks@ non-null only if the sim uses CGEN.
886cgen_breaks=""
887if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
888cgen_breaks="break cgen_rtx_error";
889fi
890AC_SUBST(cgen_breaks)
38f48d72
AC
891AC_CONFIG_FILES(Makefile.sim:Makefile.in)
892AC_CONFIG_FILES(Make-common.sim:../common/Make-common.in)
893AC_CONFIG_FILES(.gdbinit:../common/gdbinit.in)
894AC_CONFIG_COMMANDS([Makefile],
895[echo "Merging Makefile.sim+Make-common.sim into Makefile ..."
896 rm -f Makesim1.tmp Makesim2.tmp Makefile
897 sed -n -e '/^## COMMON_PRE_/,/^## End COMMON_PRE_/ p' <Make-common.sim >Makesim1.tmp
898 sed -n -e '/^## COMMON_POST_/,/^## End COMMON_POST_/ p' <Make-common.sim >Makesim2.tmp
899 sed -e '/^## COMMON_PRE_/ r Makesim1.tmp' \
c906108c
SS
900 -e '/^## COMMON_POST_/ r Makesim2.tmp' \
901 <Makefile.sim >Makefile
38f48d72 902 rm -f Makefile.sim Make-common.sim Makesim1.tmp Makesim2.tmp
c906108c 903])
38f48d72
AC
904AC_CONFIG_COMMANDS([stamp-h], [echo > stamp-h])
905AC_OUTPUT
c906108c
SS
906])
907
20e95c23 908sinclude(../../config/gettext-sister.m4)
6efef468 909sinclude(../../config/acx.m4)
c906108c
SS
910
911dnl --enable-cgen-maint support
6878aceb 912AC_DEFUN([SIM_AC_OPTION_CGEN_MAINT],
c906108c
SS
913[
914cgen_maint=no
915dnl Default is to use one in build tree.
b2ac51e4 916cgen=guile
c906108c
SS
917cgendir='$(srcdir)/../../cgen'
918dnl Having --enable-maintainer-mode take arguments is another way to go.
919dnl ??? One can argue --with is more appropriate if one wants to specify
920dnl a directory name, but what we're doing here is an enable/disable kind
921dnl of thing and specifying both --enable and --with is klunky.
922dnl If you reeely want this to be --with, go ahead and change it.
923AC_ARG_ENABLE(cgen-maint,
924[ --enable-cgen-maint[=DIR] build cgen generated files],
925[case "${enableval}" in
926 yes) cgen_maint=yes ;;
927 no) cgen_maint=no ;;
928 *)
929 # argument is cgen install directory (not implemented yet).
930 # Having a `share' directory might be more appropriate for the .scm,
931 # .cpu, etc. files.
932 cgendir=${cgen_maint}/lib/cgen
b2ac51e4 933 cgen=guile
c906108c
SS
934 ;;
935esac])dnl
936dnl AM_CONDITIONAL(CGEN_MAINT, test x${cgen_maint} != xno)
937if test x${cgen_maint} != xno ; then
938 CGEN_MAINT=''
939else
940 CGEN_MAINT='#'
941fi
942AC_SUBST(CGEN_MAINT)
943AC_SUBST(cgendir)
944AC_SUBST(cgen)
945])
This page took 0.582009 seconds and 4 git commands to generate.