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