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