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