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