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