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