]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - sim/common/acinclude.m4
ef4277503f1867c777ff8b0110d1a98949e6bce9
[thirdparty/binutils-gdb.git] / sim / common / acinclude.m4
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.
22 m4_include(../../config/override.m4)
23 sinclude([../../config/zlib.m4])
24 sinclude([../../config/depstand.m4])
25
26 AC_DEFUN([SIM_AC_COMMON],
27 [
28 AC_REQUIRE([AC_PROG_CC])
29 # autoconf.info says this should be called right after AC_INIT.
30 AC_CONFIG_HEADER(ifelse([$1],,config.h,[$1]):config.in)
31 AC_CANONICAL_SYSTEM
32 AC_USE_SYSTEM_EXTENSIONS
33 AC_ARG_PROGRAM
34 AC_PROG_INSTALL
35
36 # Put a plausible default for CC_FOR_BUILD in Makefile.
37 if test "x$cross_compiling" = "xno"; then
38 CC_FOR_BUILD='$(CC)'
39 else
40 CC_FOR_BUILD=gcc
41 fi
42 AC_SUBST(CC_FOR_BUILD)
43
44 AC_SUBST(CFLAGS)
45 AC_SUBST(HDEFINES)
46 AR=${AR-ar}
47 AC_SUBST(AR)
48 AC_PROG_RANLIB
49
50 # Dependency checking.
51 ZW_CREATE_DEPDIR
52 ZW_PROG_COMPILER_DEPENDENCIES([CC])
53
54 # Check for the 'make' the user wants to use.
55 AC_CHECK_PROGS(MAKE, make)
56 MAKE_IS_GNU=
57 case "`$MAKE --version 2>&1 | sed 1q`" in
58 *GNU*)
59 MAKE_IS_GNU=yes
60 ;;
61 esac
62 AM_CONDITIONAL(GMAKE, test "$MAKE_IS_GNU" = yes)
63
64 dnl We don't use gettext, but bfd does. So we do the appropriate checks
65 dnl to see if there are intl libraries we should link against.
66 ALL_LINGUAS=
67 ZW_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*.
72 AC_CHECK_HEADERS(stdlib.h string.h strings.h unistd.h time.h)
73 AC_CHECK_HEADERS(sys/time.h sys/resource.h)
74 AC_CHECK_HEADERS(fcntl.h fpu_control.h)
75 AC_CHECK_HEADERS(dlfcn.h errno.h sys/stat.h)
76 AC_CHECK_FUNCS(getrusage time sigaction __setfpucw)
77
78 # Check for socket libraries
79 AC_CHECK_LIB(socket, bind)
80 AC_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.
84 AM_ZLIB
85
86 . ${srcdir}/../../bfd/configure.host
87
88 dnl Standard (and optional) simulator options.
89 dnl Eventually all simulators will support these.
90 dnl Do not add any here that cannot be supported by all simulators.
91 dnl Do not add similar but different options to a particular simulator,
92 dnl all shall eventually behave the same way.
93
94
95 dnl We don't use automake, but we still want to support
96 dnl --enable-maintainer-mode.
97 USE_MAINTAINER_MODE=no
98 AC_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="#" ;;
104 esac
105 if test x"$silent" != x"yes" && test x"$MAINT" = x""; then
106 echo "Setting maintainer mode" 6>&1
107 fi],[MAINT="#"])dnl
108 AC_SUBST(MAINT)
109
110
111 dnl This is a generic option to enable special byte swapping
112 dnl insns on *any* cpu.
113 AC_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="";;
119 esac
120 if test x"$silent" != x"yes" && test x"$sim_bswap" != x""; then
121 echo "Setting bswap flags = $sim_bswap" 6>&1
122 fi],[sim_bswap=""])dnl
123 AC_SUBST(sim_bswap)
124
125
126 AC_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"`;;
133 esac
134 if test x"$silent" != x"yes" && test x"$sim_cflags" != x""; then
135 echo "Setting sim cflags = $sim_cflags" 6>&1
136 fi],[sim_cflags=""])dnl
137 AC_SUBST(sim_cflags)
138
139
140 dnl --enable-sim-debug is for developers of the simulator
141 dnl the allowable values are work-in-progress
142 AC_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})'";;
148 esac
149 if test x"$silent" != x"yes" && test x"$sim_debug" != x""; then
150 echo "Setting sim debug = $sim_debug" 6>&1
151 fi],[sim_debug=""])dnl
152 AC_SUBST(sim_debug)
153
154
155 dnl --enable-sim-stdio is for users of the simulator
156 dnl It determines if IO from the program is routed through STDIO (buffered)
157 AC_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="";;
163 esac
164 if test x"$silent" != x"yes" && test x"$sim_stdio" != x""; then
165 echo "Setting stdio flags = $sim_stdio" 6>&1
166 fi],[sim_stdio=""])dnl
167 AC_SUBST(sim_stdio)
168
169
170 dnl --enable-sim-trace is for users of the simulator
171 dnl The argument is either a bitmask of things to enable [exactly what is
172 dnl up to the simulator], or is a comma separated list of names of tracing
173 dnl elements to enable. The latter is only supported on simulators that
174 dnl use WITH_TRACE.
175 AC_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})'";;
182 [[[:lower:]]]*)
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)'" ;;
192 esac
193 if test x"$silent" != x"yes" && test x"$sim_trace" != x""; then
194 echo "Setting sim trace = $sim_trace" 6>&1
195 fi],[sim_trace=""])dnl
196 AC_SUBST(sim_trace)
197
198
199 dnl --enable-sim-profile
200 dnl The argument is either a bitmask of things to enable [exactly what is
201 dnl up to the simulator], or is a comma separated list of names of profiling
202 dnl elements to enable. The latter is only supported on simulators that
203 dnl use WITH_PROFILE.
204 AC_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)'" ;;
221 esac
222 if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
223 echo "Setting sim profile = $sim_profile" 6>&1
224 fi],[sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"])dnl
225 AC_SUBST(sim_profile)
226
227 ACX_PKGVERSION([GDB])
228 ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
229 AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
230 AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
231
232 dnl Types used by common code
233 AC_TYPE_SIGNAL
234
235 dnl Detect exe extension
236 AC_EXEEXT
237
238 dnl These are available to append to as desired.
239 sim_link_files=
240 sim_link_links=
241
242 dnl Create tconfig.h either from simulator's tconfig.in or default one
243 dnl in common.
244 sim_link_links=tconfig.h
245 if test -f ${srcdir}/tconfig.in
246 then
247 sim_link_files=tconfig.in
248 else
249 sim_link_files=../common/tconfig.in
250 fi
251
252 # targ-vals.def points to the libc macro description file.
253 case "${target}" in
254 *-*-*) TARG_VALS_DEF=../common/nltvals.def ;;
255 esac
256 sim_link_files="${sim_link_files} ${TARG_VALS_DEF}"
257 sim_link_links="${sim_link_links} targ-vals.def"
258
259 ]) dnl End of SIM_AC_COMMON
260
261
262 dnl Additional SIM options that can (optionally) be configured
263 dnl For optional simulator options, a macro SIM_AC_OPTION_* is defined.
264 dnl Simulators that wish to use the relevant option specify the macro
265 dnl in the simulator specific configure.in file between the SIM_AC_COMMON
266 dnl and SIM_AC_OUTPUT lines.
267
268
269 dnl Specify the running environment.
270 dnl If the simulator invokes this in its configure.in then without this option
271 dnl the default is the user environment and all are runtime selectable.
272 dnl If the simulator doesn't invoke this, only the user environment is
273 dnl supported.
274 dnl ??? Until there is demonstrable value in doing something more complicated,
275 dnl let's not.
276 AC_DEFUN([SIM_AC_OPTION_ENVIRONMENT],
277 [
278 AC_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="";;
287 esac
288 if test x"$silent" != x"yes" && test x"$sim_environment" != x""; then
289 echo "Setting sim environment = $sim_environment" 6>&1
290 fi],
291 [sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT"])dnl
292 ])
293 AC_SUBST(sim_environment)
294
295
296 dnl Specify the alignment restrictions of the target architecture.
297 dnl Without this option all possible alignment restrictions are accommodated.
298 dnl arg[1] is hardwired target alignment
299 dnl arg[2] is default target alignment
300 AC_DEFUN([SIM_AC_OPTION_ALIGNMENT],
301 wire_alignment="[$1]"
302 default_alignment="[$2]"
303 [
304 AC_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="";;
331 esac
332 if test x"$silent" != x"yes" && test x"$sim_alignment" != x""; then
333 echo "Setting alignment flags = $sim_alignment" 6>&1
334 fi],
335 [if test x"$default_alignment" != x; then
336 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
337 else
338 if test x"$wire_alignment" != x; then
339 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
340 else
341 sim_alignment=
342 fi
343 fi])dnl
344 ])dnl
345 AC_SUBST(sim_alignment)
346
347
348 dnl Conditionally compile in assertion statements.
349 AC_DEFUN([SIM_AC_OPTION_ASSERT],
350 [
351 AC_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="";;
357 esac
358 if test x"$silent" != x"yes" && test x"$sim_assert" != x""; then
359 echo "Setting assert flags = $sim_assert" 6>&1
360 fi],[sim_assert=""])dnl
361 ])
362 AC_SUBST(sim_assert)
363
364
365
366 dnl --enable-sim-bitsize is for developers of the simulator
367 dnl It specifies the number of BITS in the target.
368 dnl arg[1] is the number of bits in a word
369 dnl arg[2] is the number assigned to the most significant bit
370 dnl arg[3] is the number of bits in an address
371 dnl arg[4] is the number of bits in an OpenFirmware cell.
372 dnl FIXME: this information should be obtained from bfd/archure
373 AC_DEFUN([SIM_AC_OPTION_BITSIZE],
374 wire_word_bitsize="[$1]"
375 wire_word_msb="[$2]"
376 wire_address_bitsize="[$3]"
377 wire_cell_bitsize="[$4]"
378 [AC_ARG_ENABLE(sim-bitsize,
379 [ --enable-sim-bitsize=N Specify target bitsize (32 or 64).],
380 [sim_bitsize=
381 case "${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") ;;
397 esac
398 # address bitsize
399 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9]]*,*//"`
400 case 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") ;;
405 esac
406 # cell bitsize
407 tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9*]]*,*[[0-9]]*,*//"`
408 case 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") ;;
413 esac
414 if test x"$silent" != x"yes" && test x"$sim_bitsize" != x""; then
415 echo "Setting bitsize flags = $sim_bitsize" 6>&1
416 fi],
417 [sim_bitsize=""
418 if test x"$wire_word_bitsize" != x; then
419 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_BITSIZE=$wire_word_bitsize"
420 fi
421 if test x"$wire_word_msb" != x; then
422 sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_MSB=$wire_word_msb"
423 fi
424 if test x"$wire_address_bitsize" != x; then
425 sim_bitsize="$sim_bitsize -DWITH_TARGET_ADDRESS_BITSIZE=$wire_address_bitsize"
426 fi
427 if test x"$wire_cell_bitsize" != x; then
428 sim_bitsize="$sim_bitsize -DWITH_TARGET_CELL_BITSIZE=$wire_cell_bitsize"
429 fi])dnl
430 ])
431 AC_SUBST(sim_bitsize)
432
433
434
435 dnl --enable-sim-endian={yes,no,big,little} is for simulators
436 dnl that support both big and little endian targets.
437 dnl arg[1] is hardwired target endianness.
438 dnl arg[2] is default target endianness.
439 AC_DEFUN([SIM_AC_OPTION_ENDIAN],
440 [
441 wire_endian="[$1]"
442 default_endian="[$2]"
443 AC_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="";;
469 esac
470 if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
471 echo "Setting endian flags = $sim_endian" 6>&1
472 fi],
473 [if test x"$default_endian" != x; then
474 sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
475 else
476 if test x"$wire_endian" != x; then
477 sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
478 else
479 sim_endian=
480 fi
481 fi])dnl
482 ])
483 AC_SUBST(sim_endian)
484
485
486 dnl --enable-sim-hostendian is for users of the simulator when
487 dnl they find that AC_C_BIGENDIAN does not function correctly
488 dnl (for instance in a canadian cross)
489 AC_DEFUN([SIM_AC_OPTION_HOSTENDIAN],
490 [
491 AC_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="";;
498 esac
499 if test x"$silent" != x"yes" && test x"$sim_hostendian" != x""; then
500 echo "Setting hostendian flags = $sim_hostendian" 6>&1
501 fi],[
502 if 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
509 else
510 sim_hostendian="-DWITH_HOST_BYTE_ORDER=0"
511 fi])dnl
512 ])
513 AC_SUBST(sim_hostendian)
514
515
516 dnl --enable-sim-float is for developers of the simulator
517 dnl It specifies the presence of hardware floating point
518 dnl And optionally the bitsize of the floating point register.
519 dnl arg[1] specifies the presence (or absence) of floating point hardware
520 dnl arg[2] specifies the number of bits in a floating point register
521 AC_DEFUN([SIM_AC_OPTION_FLOAT],
522 [
523 default_sim_float="[$1]"
524 default_sim_float_bitsize="[$2]"
525 AC_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="";;
533 esac
534 if test x"$silent" != x"yes" && test x"$sim_float" != x""; then
535 echo "Setting float flags = $sim_float" 6>&1
536 fi],[
537 sim_float=
538 if test x"${default_sim_float}" != x""; then
539 sim_float="-DWITH_FLOATING_POINT=${default_sim_float}"
540 fi
541 if test x"${default_sim_float_bitsize}" != x""; then
542 sim_float="$sim_float -DWITH_TARGET_FLOATING_POINT_BITSIZE=${default_sim_float_bitsize}"
543 fi
544 ])dnl
545 ])
546 AC_SUBST(sim_float)
547
548
549 dnl The argument is the default cache size if none is specified.
550 AC_DEFUN([SIM_AC_OPTION_SCACHE],
551 [
552 default_sim_scache="ifelse([$1],,0,[$1])"
553 AC_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="";;
561 esac
562 if test x"$silent" != x"yes" && test x"$sim_scache" != x""; then
563 echo "Setting scache size = $sim_scache" 6>&1
564 fi],[sim_scache="-DWITH_SCACHE=${default_sim_scache}"])
565 ])
566 AC_SUBST(sim_scache)
567
568
569 dnl The argument is the default model if none is specified.
570 AC_DEFUN([SIM_AC_OPTION_DEFAULT_MODEL],
571 [
572 default_sim_default_model="ifelse([$1],,0,[$1])"
573 AC_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}\"'";;
578 esac
579 if test x"$silent" != x"yes" && test x"$sim_default_model" != x""; then
580 echo "Setting default model = $sim_default_model" 6>&1
581 fi],[sim_default_model="-DWITH_DEFAULT_MODEL='\"${default_sim_default_model}\"'"])
582 ])
583 AC_SUBST(sim_default_model)
584
585
586 dnl --enable-sim-hardware is for users of the simulator
587 dnl arg[1] Enable sim-hw by default? ("yes" or "no")
588 dnl arg[2] is a space separated list of devices that override the defaults
589 dnl arg[3] is a space separated list of extra target specific devices.
590 AC_DEFUN([SIM_AC_OPTION_HARDWARE],
591 [
592 if test x"[$1]" = x"yes"; then
593 sim_hw_p=yes
594 else
595 sim_hw_p=no
596 fi
597 if test "[$2]"; then
598 hardware="[$2]"
599 else
600 hardware="cfi core pal glue"
601 fi
602 hardware="$hardware [$3]"
603 sim_hw_cflags="-DWITH_HW=1"
604 sim_hw="$hardware"
605 sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([[^ ]][[^ ]]*\)/dv-\1.o/g'`"
606 AC_ARG_ENABLE(sim-hardware,
607 [ --enable-sim-hardware=LIST Specify the hardware to be included in the build.],
608 [
609 case "${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/,/ /'`"'';;
615 esac
616 if test "$sim_hw_p" != yes; then
617 sim_hw_objs=
618 sim_hw_cflags="-DWITH_HW=0"
619 sim_hw=
620 else
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
631 fi
632 if test x"$silent" != x"yes" && test "$sim_hw_p" = "yes"; then
633 echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
634 fi],[
635 if test "$sim_hw_p" != yes; then
636 sim_hw_objs=
637 sim_hw_cflags="-DWITH_HW=0"
638 sim_hw=
639 fi
640 if test x"$silent" != x"yes"; then
641 echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
642 fi])
643 dnl Some devices require extra libraries.
644 case " $hardware " in
645 *" cfi "*) AC_CHECK_LIB(m, log2);;
646 esac
647 ])
648 AC_SUBST(sim_hw_cflags)
649 AC_SUBST(sim_hw_objs)
650 AC_SUBST(sim_hw)
651
652
653 dnl --enable-sim-inline is for users that wish to ramp up the simulator's
654 dnl performance by inlining functions.
655 dnl Guarantee that unconfigured simulators do not do any inlining
656 sim_inline="-DDEFAULT_INLINE=0"
657 AC_DEFUN([SIM_AC_OPTION_INLINE],
658 [
659 default_sim_inline="ifelse([$1],,,-DDEFAULT_INLINE=[$1])"
660 AC_ARG_ENABLE(sim-inline,
661 [ --enable-sim-inline=inlines Specify which functions should be inlined.],
662 [sim_inline=""
663 case "$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;;
682 esac
683 if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
684 echo "Setting inline flags = $sim_inline" 6>&1
685 fi],[
686 if 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
695 else
696 sim_inline="-DDEFAULT_INLINE=0"
697 fi])dnl
698 ])
699 AC_SUBST(sim_inline)
700
701
702 AC_DEFUN([SIM_AC_OPTION_PACKAGES],
703 [
704 AC_ARG_ENABLE(sim-packages,
705 [ --enable-sim-packages=list Specify the packages to be included in the build.],
706 [packages=disklabel
707 case "${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}"'';;
713 esac
714 sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
715 sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
716 if test x"$silent" != x"yes" && test x"$packages" != x""; then
717 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
718 fi],[packages=disklabel
719 sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
720 sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
721 if test x"$silent" != x"yes"; then
722 echo "Setting packages to $sim_pk_src, $sim_pk_obj"
723 fi])dnl
724 ])
725 AC_SUBST(sim_packages)
726
727
728 AC_DEFUN([SIM_AC_OPTION_REGPARM],
729 [
730 AC_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="";;
737 esac
738 if test x"$silent" != x"yes" && test x"$sim_regparm" != x""; then
739 echo "Setting regparm flags = $sim_regparm" 6>&1
740 fi],[sim_regparm=""])dnl
741 ])
742 AC_SUBST(sim_regparm)
743
744
745 AC_DEFUN([SIM_AC_OPTION_RESERVED_BITS],
746 [
747 default_sim_reserved_bits="ifelse([$1],,1,[$1])"
748 AC_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="";;
754 esac
755 if test x"$silent" != x"yes" && test x"$sim_reserved_bits" != x""; then
756 echo "Setting reserved flags = $sim_reserved_bits" 6>&1
757 fi],[sim_reserved_bits="-DWITH_RESERVED_BITS=${default_sim_reserved_bits}"])dnl
758 ])
759 AC_SUBST(sim_reserved_bits)
760
761
762 AC_DEFUN([SIM_AC_OPTION_SMP],
763 [
764 default_sim_smp="ifelse([$1],,5,[$1])"
765 AC_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";;
771 esac
772 if test x"$silent" != x"yes" && test x"$sim_smp" != x""; then
773 echo "Setting smp flags = $sim_smp" 6>&1
774 fi],[sim_smp="-DWITH_SMP=${default_sim_smp}" ; sim_igen_smp="-N ${default_sim_smp}"
775 if test x"$silent" != x"yes"; then
776 echo "Setting smp flags = $sim_smp" 6>&1
777 fi])dnl
778 ])
779 AC_SUBST(sim_smp)
780
781
782 AC_DEFUN([SIM_AC_OPTION_STDCALL],
783 [
784 AC_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="";;
791 esac
792 if test x"$silent" != x"yes" && test x"$sim_stdcall" != x""; then
793 echo "Setting function call flags = $sim_stdcall" 6>&1
794 fi],[sim_stdcall=""])dnl
795 ])
796 AC_SUBST(sim_stdcall)
797
798
799 AC_DEFUN([SIM_AC_OPTION_XOR_ENDIAN],
800 [
801 default_sim_xor_endian="ifelse([$1],,8,[$1])"
802 AC_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";;
808 esac
809 if test x"$silent" != x"yes" && test x"$sim_xor_endian" != x""; then
810 echo "Setting xor-endian flag = $sim_xor_endian" 6>&1
811 fi],[sim_xor_endian="-DWITH_XOR_ENDIAN=${default_sim_xor_endian}"])dnl
812 ])
813 AC_SUBST(sim_xor_endian)
814
815
816 dnl --enable-build-warnings is for developers of the simulator.
817 dnl it enables extra GCC specific warnings.
818 AC_DEFUN([SIM_AC_OPTION_WARNINGS],
819 [
820 AC_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
829 if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
830 ERROR_ON_WARNING=yes
831 fi
832
833 WERROR_CFLAGS=""
834 if 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
838 fi
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.
845 build_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.
852 case "${host}" in
853 *-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;;
854 esac
855
856 AC_ARG_ENABLE(build-warnings,
857 AS_HELP_STRING([--enable-build-warnings], [enable build-time compiler warnings if gcc is used]),
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"`;;
866 esac
867 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
868 echo "Setting compiler warning flags = $build_warnings" 6>&1
869 fi])dnl
870 AC_ARG_ENABLE(sim-build-warnings,
871 AS_HELP_STRING([--enable-sim-build-warnings], [enable SIM specific build-time compiler warnings if gcc is used]),
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"`;;
880 esac
881 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
882 echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
883 fi])dnl
884 WARN_CFLAGS=""
885 if test "x${build_warnings}" != x -a "x$GCC" = xyes
886 then
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
900 AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
901 fi
902 ])
903 AC_SUBST(WARN_CFLAGS)
904 AC_SUBST(WERROR_CFLAGS)
905
906
907 dnl Generate the Makefile in a target specific directory.
908 dnl Substitutions aren't performed on the file in AC_SUBST_FILE,
909 dnl so this is a cover macro to tuck the details away of how we cope.
910 dnl We cope by having autoconf generate two files and then merge them into
911 dnl one afterwards. The two pieces of the common fragment are inserted into
912 dnl the target's fragment at the appropriate points.
913
914 AC_DEFUN([SIM_AC_OUTPUT],
915 [
916 AC_LINK_FILES($sim_link_files, $sim_link_links)
917 dnl Make @cgen_breaks@ non-null only if the sim uses CGEN.
918 cgen_breaks=""
919 if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
920 cgen_breaks="break cgen_rtx_error";
921 fi
922 AC_SUBST(cgen_breaks)
923 AC_CONFIG_FILES(Makefile.sim:Makefile.in)
924 AC_CONFIG_FILES(Make-common.sim:../common/Make-common.in)
925 AC_CONFIG_FILES(.gdbinit:../common/gdbinit.in)
926 AC_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 ])
936 AC_CONFIG_COMMANDS([stamp-h], [echo > stamp-h])
937 AC_OUTPUT
938 ])
939
940 sinclude(../../config/gettext-sister.m4)
941 sinclude(../../config/acx.m4)
942
943 dnl --enable-cgen-maint support
944 AC_DEFUN([SIM_AC_OPTION_CGEN_MAINT],
945 [
946 cgen_maint=no
947 dnl Default is to use one in build tree.
948 cgen=guile
949 cgendir='$(srcdir)/../../cgen'
950 dnl Having --enable-maintainer-mode take arguments is another way to go.
951 dnl ??? One can argue --with is more appropriate if one wants to specify
952 dnl a directory name, but what we're doing here is an enable/disable kind
953 dnl of thing and specifying both --enable and --with is klunky.
954 dnl If you reeely want this to be --with, go ahead and change it.
955 AC_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 ;;
967 esac])dnl
968 dnl AM_CONDITIONAL(CGEN_MAINT, test x${cgen_maint} != xno)
969 if test x${cgen_maint} != xno ; then
970 CGEN_MAINT=''
971 else
972 CGEN_MAINT='#'
973 fi
974 AC_SUBST(CGEN_MAINT)
975 AC_SUBST(cgendir)
976 AC_SUBST(cgen)
977 ])