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)
25
26AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/../..)
27AC_CANONICAL_SYSTEM
28AC_ARG_PROGRAM
29AC_PROG_CC
30AC_PROG_INSTALL
31
32# Put a plausible default for CC_FOR_BUILD in Makefile.
33if test "x$cross_compiling" = "xno"; then
34  CC_FOR_BUILD='$(CC)'
35else
36  CC_FOR_BUILD=gcc
37fi
38AC_SUBST(CC_FOR_BUILD)
39
40AC_SUBST(CFLAGS)
41AC_SUBST(HDEFINES)
42AR=${AR-ar}
43AC_SUBST(AR)
44AC_PROG_RANLIB
45
46dnl We don't use gettext, but bfd does.  So we do the appropriate checks
47dnl to see if there are intl libraries we should link against.
48ALL_LINGUAS=
49CY_GNU_GETTEXT
50
51# Check for common headers.
52# FIXME: Seems to me this can cause problems for i386-windows hosts.
53# At one point there were hardcoded AC_DEFINE's if ${host} = i386-*-windows*.
54AC_CHECK_HEADERS(stdlib.h string.h strings.h unistd.h time.h)
55AC_CHECK_HEADERS(sys/time.h sys/resource.h)
56AC_CHECK_HEADERS(fcntl.h fpu_control.h)
57AC_CHECK_HEADERS(dlfcn.h errno.h sys/stat.h)
58AC_CHECK_FUNCS(getrusage time sigaction __setfpucw)
59
60# Check for socket libraries
61AC_CHECK_LIB(socket, bind)
62AC_CHECK_LIB(nsl, gethostbyname)
63
64. ${srcdir}/../../bfd/configure.host
65
66dnl Standard (and optional) simulator options.
67dnl Eventually all simulators will support these.
68dnl Do not add any here that cannot be supported by all simulators.
69dnl Do not add similar but different options to a particular simulator,
70dnl all shall eventually behave the same way.
71
72
73dnl We don't use automake, but we still want to support
74dnl --enable-maintainer-mode.
75USE_MAINTAINER_MODE=no
76AC_ARG_ENABLE(maintainer-mode,
77[  --enable-maintainer-mode		Enable developer functionality.],
78[case "${enableval}" in
79  yes)	MAINT="" USE_MAINTAINER_MODE=yes ;;
80  no)	MAINT="#" ;;
81  *)	AC_MSG_ERROR("--enable-maintainer-mode does not take a value"); MAINT="#" ;;
82esac
83if test x"$silent" != x"yes" && test x"$MAINT" = x""; then
84  echo "Setting maintainer mode" 6>&1
85fi],[MAINT="#"])dnl
86AC_SUBST(MAINT)
87
88
89dnl This is a generic option to enable special byte swapping
90dnl insns on *any* cpu.
91AC_ARG_ENABLE(sim-bswap,
92[  --enable-sim-bswap			Use Host specific BSWAP instruction.],
93[case "${enableval}" in
94  yes)	sim_bswap="-DWITH_BSWAP=1 -DUSE_BSWAP=1";;
95  no)	sim_bswap="-DWITH_BSWAP=0";;
96  *)	AC_MSG_ERROR("--enable-sim-bswap does not take a value"); sim_bswap="";;
97esac
98if test x"$silent" != x"yes" && test x"$sim_bswap" != x""; then
99  echo "Setting bswap flags = $sim_bswap" 6>&1
100fi],[sim_bswap=""])dnl
101AC_SUBST(sim_bswap)
102
103
104AC_ARG_ENABLE(sim-cflags,
105[  --enable-sim-cflags=opts		Extra CFLAGS for use in building simulator],
106[case "${enableval}" in
107  yes)	 sim_cflags="-O2 -fomit-frame-pointer";;
108  trace) AC_MSG_ERROR("Please use --enable-sim-debug instead."); sim_cflags="";;
109  no)	 sim_cflags="";;
110  *)	 sim_cflags=`echo "${enableval}" | sed -e "s/,/ /g"`;;
111esac
112if test x"$silent" != x"yes" && test x"$sim_cflags" != x""; then
113  echo "Setting sim cflags = $sim_cflags" 6>&1
114fi],[sim_cflags=""])dnl
115AC_SUBST(sim_cflags)
116
117
118dnl --enable-sim-debug is for developers of the simulator
119dnl the allowable values are work-in-progress
120AC_ARG_ENABLE(sim-debug,
121[  --enable-sim-debug=opts		Enable debugging flags],
122[case "${enableval}" in
123  yes) sim_debug="-DDEBUG=7 -DWITH_DEBUG=7";;
124  no)  sim_debug="-DDEBUG=0 -DWITH_DEBUG=0";;
125  *)   sim_debug="-DDEBUG='(${enableval})' -DWITH_DEBUG='(${enableval})'";;
126esac
127if test x"$silent" != x"yes" && test x"$sim_debug" != x""; then
128  echo "Setting sim debug = $sim_debug" 6>&1
129fi],[sim_debug=""])dnl
130AC_SUBST(sim_debug)
131
132
133dnl --enable-sim-stdio is for users of the simulator
134dnl It determines if IO from the program is routed through STDIO (buffered)
135AC_ARG_ENABLE(sim-stdio,
136[  --enable-sim-stdio			Specify whether to use stdio for console input/output.],
137[case "${enableval}" in
138  yes)	sim_stdio="-DWITH_STDIO=DO_USE_STDIO";;
139  no)	sim_stdio="-DWITH_STDIO=DONT_USE_STDIO";;
140  *)	AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-stdio"); sim_stdio="";;
141esac
142if test x"$silent" != x"yes" && test x"$sim_stdio" != x""; then
143  echo "Setting stdio flags = $sim_stdio" 6>&1
144fi],[sim_stdio=""])dnl
145AC_SUBST(sim_stdio)
146
147
148dnl --enable-sim-trace is for users of the simulator
149dnl The argument is either a bitmask of things to enable [exactly what is
150dnl up to the simulator], or is a comma separated list of names of tracing
151dnl elements to enable.  The latter is only supported on simulators that
152dnl use WITH_TRACE.
153AC_ARG_ENABLE(sim-trace,
154[  --enable-sim-trace=opts		Enable tracing flags],
155[case "${enableval}" in
156  yes)	sim_trace="-DTRACE=1 -DWITH_TRACE=-1";;
157  no)	sim_trace="-DTRACE=0 -DWITH_TRACE=0";;
158  [[-0-9]]*)
159	sim_trace="-DTRACE='(${enableval})' -DWITH_TRACE='(${enableval})'";;
160  [[a-z]]*)
161	sim_trace=""
162	for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
163	  if test x"$sim_trace" = x; then
164	    sim_trace="-DWITH_TRACE='(TRACE_$x"
165	  else
166	    sim_trace="${sim_trace}|TRACE_$x"
167	  fi
168	done
169	sim_trace="$sim_trace)'" ;;
170esac
171if test x"$silent" != x"yes" && test x"$sim_trace" != x""; then
172  echo "Setting sim trace = $sim_trace" 6>&1
173fi],[sim_trace=""])dnl
174AC_SUBST(sim_trace)
175
176
177dnl --enable-sim-profile
178dnl The argument is either a bitmask of things to enable [exactly what is
179dnl up to the simulator], or is a comma separated list of names of profiling
180dnl elements to enable.  The latter is only supported on simulators that
181dnl use WITH_PROFILE.
182AC_ARG_ENABLE(sim-profile,
183[  --enable-sim-profile=opts		Enable profiling flags],
184[case "${enableval}" in
185  yes)	sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1";;
186  no)	sim_profile="-DPROFILE=0 -DWITH_PROFILE=0";;
187  [[-0-9]]*)
188	sim_profile="-DPROFILE='(${enableval})' -DWITH_PROFILE='(${enableval})'";;
189  [[a-z]]*)
190	sim_profile=""
191	for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
192	  if test x"$sim_profile" = x; then
193	    sim_profile="-DWITH_PROFILE='(PROFILE_$x"
194	  else
195	    sim_profile="${sim_profile}|PROFILE_$x"
196	  fi
197	done
198	sim_profile="$sim_profile)'" ;;
199esac
200if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
201  echo "Setting sim profile = $sim_profile" 6>&1
202fi],[sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"])dnl
203AC_SUBST(sim_profile)
204
205
206dnl Types used by common code
207AC_TYPE_SIGNAL
208
209dnl Detect exe extension
210AC_EXEEXT
211
212dnl These are available to append to as desired.
213sim_link_files=
214sim_link_links=
215
216dnl Create tconfig.h either from simulator's tconfig.in or default one
217dnl in common.
218sim_link_links=tconfig.h
219if test -f ${srcdir}/tconfig.in
220then
221  sim_link_files=tconfig.in
222else
223  sim_link_files=../common/tconfig.in
224fi
225
226# targ-vals.def points to the libc macro description file.
227case "${target}" in
228*-*-*) TARG_VALS_DEF=../common/nltvals.def ;;
229esac
230sim_link_files="${sim_link_files} ${TARG_VALS_DEF}"
231sim_link_links="${sim_link_links} targ-vals.def"
232
233]) dnl End of SIM_AC_COMMON
234
235
236dnl Additional SIM options that can (optionally) be configured
237dnl For optional simulator options, a macro SIM_AC_OPTION_* is defined.
238dnl Simulators that wish to use the relevant option specify the macro
239dnl in the simulator specific configure.in file between the SIM_AC_COMMON
240dnl and SIM_AC_OUTPUT lines.
241
242
243dnl Specify the running environment.
244dnl If the simulator invokes this in its configure.in then without this option
245dnl the default is the user environment and all are runtime selectable.
246dnl If the simulator doesn't invoke this, only the user environment is
247dnl supported.
248dnl ??? Until there is demonstrable value in doing something more complicated,
249dnl let's not.
250AC_DEFUN(SIM_AC_OPTION_ENVIRONMENT,
251[
252AC_ARG_ENABLE(sim-environment,
253[  --enable-sim-environment=environment	Specify mixed, user, virtual or operating environment.],
254[case "${enableval}" in
255  all | ALL)             sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT";;
256  user | USER)           sim_environment="-DWITH_ENVIRONMENT=USER_ENVIRONMENT";;
257  virtual | VIRTUAL)     sim_environment="-DWITH_ENVIRONMENT=VIRTUAL_ENVIRONMENT";;
258  operating | OPERATING) sim_environment="-DWITH_ENVIRONMENT=OPERATING_ENVIRONMENT";;
259  *)   AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-environment");
260       sim_environment="";;
261esac
262if test x"$silent" != x"yes" && test x"$sim_environment" != x""; then
263  echo "Setting sim environment = $sim_environment" 6>&1
264fi],
265[sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT"])dnl
266])
267AC_SUBST(sim_environment)
268
269
270dnl Specify the alignment restrictions of the target architecture.
271dnl Without this option all possible alignment restrictions are accommodated.
272dnl arg[1] is hardwired target alignment
273dnl arg[2] is default target alignment
274AC_DEFUN(SIM_AC_OPTION_ALIGNMENT,
275wire_alignment="[$1]"
276default_alignment="[$2]"
277[
278AC_ARG_ENABLE(sim-alignment,
279[  --enable-sim-alignment=align		Specify strict,  nonstrict or forced alignment of memory accesses.],
280[case "${enableval}" in
281  strict | STRICT)       sim_alignment="-DWITH_ALIGNMENT=STRICT_ALIGNMENT";;
282  nonstrict | NONSTRICT) sim_alignment="-DWITH_ALIGNMENT=NONSTRICT_ALIGNMENT";;
283  forced | FORCED)       sim_alignment="-DWITH_ALIGNMENT=FORCED_ALIGNMENT";;
284  yes) if test x"$wire_alignment" != x; then
285	 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
286       else
287         if test x"$default_alignment" != x; then
288           sim_alignment="-DWITH_ALIGNMENT=${default_alignment}"
289         else
290	   echo "No hard-wired alignment for target $target" 1>&6
291	   sim_alignment="-DWITH_ALIGNMENT=0"
292         fi
293       fi;;
294  no)  if test x"$default_alignment" != x; then
295	 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
296       else
297         if test x"$wire_alignment" != x; then
298	   sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${wire_alignment}"
299         else
300           echo "No default alignment for target $target" 1>&6
301           sim_alignment="-DWITH_DEFAULT_ALIGNMENT=0"
302         fi
303       fi;;
304  *)   AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-alignment"); sim_alignment="";;
305esac
306if test x"$silent" != x"yes" && test x"$sim_alignment" != x""; then
307  echo "Setting alignment flags = $sim_alignment" 6>&1
308fi],
309[if test x"$default_alignment" != x; then
310  sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
311else
312  if test x"$wire_alignment" != x; then
313    sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
314  else
315    sim_alignment=
316  fi
317fi])dnl
318])dnl
319AC_SUBST(sim_alignment)
320
321
322dnl Conditionally compile in assertion statements.
323AC_DEFUN(SIM_AC_OPTION_ASSERT,
324[
325AC_ARG_ENABLE(sim-assert,
326[  --enable-sim-assert			Specify whether to perform random assertions.],
327[case "${enableval}" in
328  yes)	sim_assert="-DWITH_ASSERT=1";;
329  no)	sim_assert="-DWITH_ASSERT=0";;
330  *)	AC_MSG_ERROR("--enable-sim-assert does not take a value"); sim_assert="";;
331esac
332if test x"$silent" != x"yes" && test x"$sim_assert" != x""; then
333  echo "Setting assert flags = $sim_assert" 6>&1
334fi],[sim_assert=""])dnl
335])
336AC_SUBST(sim_assert)
337
338
339
340dnl --enable-sim-bitsize is for developers of the simulator
341dnl It specifies the number of BITS in the target.
342dnl arg[1] is the number of bits in a word
343dnl arg[2] is the number assigned to the most significant bit
344dnl arg[3] is the number of bits in an address
345dnl arg[4] is the number of bits in an OpenFirmware cell.
346dnl FIXME: this information should be obtained from bfd/archure
347AC_DEFUN(SIM_AC_OPTION_BITSIZE,
348wire_word_bitsize="[$1]"
349wire_word_msb="[$2]"
350wire_address_bitsize="[$3]"
351wire_cell_bitsize="[$4]"
352[AC_ARG_ENABLE(sim-bitsize,
353[  --enable-sim-bitsize=N		Specify target bitsize (32 or 64).],
354[sim_bitsize=
355case "${enableval}" in
356  64,63 | 64,63,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63";;
357  32,31 | 32,31,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31";;
358  64,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
359  32,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
360  32) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
361        sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31"
362      else
363        sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0"
364      fi ;;
365  64) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
366        sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63"
367      else
368        sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=0"
369      fi ;;
370  *)  AC_MSG_ERROR("--enable-sim-bitsize was given $enableval.  Expected 32 or 64") ;;
371esac
372# address bitsize
373tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9]]*,*//"`
374case x"${tmp}" in
375  x ) ;;
376  x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=32" ;;
377  x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=64" ;;
378  * ) AC_MSG_ERROR("--enable-sim-bitsize was given address size $enableval.  Expected 32 or 64") ;;
379esac
380# cell bitsize
381tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9*]]*,*[[0-9]]*,*//"`
382case x"${tmp}" in
383  x ) ;;
384  x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=32" ;;
385  x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=64" ;;
386  * ) AC_MSG_ERROR("--enable-sim-bitsize was given cell size $enableval.  Expected 32 or 64") ;;
387esac
388if test x"$silent" != x"yes" && test x"$sim_bitsize" != x""; then
389  echo "Setting bitsize flags = $sim_bitsize" 6>&1
390fi],
391[sim_bitsize=""
392if test x"$wire_word_bitsize" != x; then
393  sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_BITSIZE=$wire_word_bitsize"
394fi
395if test x"$wire_word_msb" != x; then
396  sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_MSB=$wire_word_msb"
397fi
398if test x"$wire_address_bitsize" != x; then
399  sim_bitsize="$sim_bitsize -DWITH_TARGET_ADDRESS_BITSIZE=$wire_address_bitsize"
400fi
401if test x"$wire_cell_bitsize" != x; then
402  sim_bitsize="$sim_bitsize -DWITH_TARGET_CELL_BITSIZE=$wire_cell_bitsize"
403fi])dnl
404])
405AC_SUBST(sim_bitsize)
406
407
408
409dnl --enable-sim-endian={yes,no,big,little} is for simulators
410dnl that support both big and little endian targets.
411dnl arg[1] is hardwired target endianness.
412dnl arg[2] is default target endianness.
413AC_DEFUN(SIM_AC_OPTION_ENDIAN,
414[
415wire_endian="[$1]"
416default_endian="[$2]"
417AC_ARG_ENABLE(sim-endian,
418[  --enable-sim-endian=endian		Specify target byte endian orientation.],
419[case "${enableval}" in
420  b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BIG_ENDIAN";;
421  l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=LITTLE_ENDIAN";;
422  yes)	 if test x"$wire_endian" != x; then
423	   sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
424	 else
425           if test x"$default_endian" != x; then
426	     sim_endian="-DWITH_TARGET_BYTE_ORDER=${default_endian}"
427	   else
428	     echo "No hard-wired endian for target $target" 1>&6
429	     sim_endian="-DWITH_TARGET_BYTE_ORDER=0"
430	   fi
431	 fi;;
432  no)	 if test x"$default_endian" != x; then
433	   sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
434	 else
435	   if test x"$wire_endian" != x; then
436	     sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${wire_endian}"
437	   else
438	     echo "No default endian for target $target" 1>&6
439	     sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=0"
440	   fi
441	 fi;;
442  *)	 AC_MSG_ERROR("Unknown value $enableval for --enable-sim-endian"); sim_endian="";;
443esac
444if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
445  echo "Setting endian flags = $sim_endian" 6>&1
446fi],
447[if test x"$default_endian" != x; then
448  sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
449else
450  if test x"$wire_endian" != x; then
451    sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
452  else
453    sim_endian=
454  fi
455fi])dnl
456])
457AC_SUBST(sim_endian)
458
459
460dnl --enable-sim-hostendian is for users of the simulator when
461dnl they find that AC_C_BIGENDIAN does not function correctly
462dnl (for instance in a canadian cross)
463AC_DEFUN(SIM_AC_OPTION_HOSTENDIAN,
464[
465AC_ARG_ENABLE(sim-hostendian,
466[  --enable-sim-hostendian=end		Specify host byte endian orientation.],
467[case "${enableval}" in
468  no)	 sim_hostendian="-DWITH_HOST_BYTE_ORDER=0";;
469  b*|B*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN";;
470  l*|L*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN";;
471  *)	 AC_MSG_ERROR("Unknown value $enableval for --enable-sim-hostendian"); sim_hostendian="";;
472esac
473if test x"$silent" != x"yes" && test x"$sim_hostendian" != x""; then
474  echo "Setting hostendian flags = $sim_hostendian" 6>&1
475fi],[
476if test "x$cross_compiling" = "xno"; then
477  AC_C_BIGENDIAN
478  if test $ac_cv_c_bigendian = yes; then
479    sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN"
480  else
481    sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN"
482  fi
483else
484  sim_hostendian="-DWITH_HOST_BYTE_ORDER=0"
485fi])dnl
486])
487AC_SUBST(sim_hostendian)
488
489
490dnl --enable-sim-float is for developers of the simulator
491dnl It specifies the presence of hardware floating point
492dnl And optionally the bitsize of the floating point register.
493dnl arg[1] specifies the presence (or absence) of floating point hardware
494dnl arg[2] specifies the number of bits in a floating point register
495AC_DEFUN(SIM_AC_OPTION_FLOAT,
496[
497default_sim_float="[$1]"
498default_sim_float_bitsize="[$2]"
499AC_ARG_ENABLE(sim-float,
500[  --enable-sim-float			Specify that the target processor has floating point hardware.],
501[case "${enableval}" in
502  yes | hard)	sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT";;
503  no | soft)	sim_float="-DWITH_FLOATING_POINT=SOFT_FLOATING_POINT";;
504  32)           sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=32";;
505  64)           sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT -DWITH_TARGET_FLOATING_POINT_BITSIZE=64";;
506  *)		AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-float"); sim_float="";;
507esac
508if test x"$silent" != x"yes" && test x"$sim_float" != x""; then
509  echo "Setting float flags = $sim_float" 6>&1
510fi],[
511sim_float=
512if test x"${default_sim_float}" != x""; then
513  sim_float="-DWITH_FLOATING_POINT=${default_sim_float}"
514fi
515if test x"${default_sim_float_bitsize}" != x""; then
516  sim_float="$sim_float -DWITH_TARGET_FLOATING_POINT_BITSIZE=${default_sim_float_bitsize}"
517fi
518])dnl
519])
520AC_SUBST(sim_float)
521
522
523dnl The argument is the default cache size if none is specified.
524AC_DEFUN(SIM_AC_OPTION_SCACHE,
525[
526default_sim_scache="ifelse([$1],,0,[$1])"
527AC_ARG_ENABLE(sim-scache,
528[  --enable-sim-scache=size		Specify simulator execution cache size.],
529[case "${enableval}" in
530  yes)	sim_scache="-DWITH_SCACHE=${default_sim_scache}";;
531  no)	sim_scache="-DWITH_SCACHE=0" ;;
532  [[0-9]]*) sim_scache="-DWITH_SCACHE=${enableval}";;
533  *)	AC_MSG_ERROR("Bad value $enableval passed to --enable-sim-scache");
534	sim_scache="";;
535esac
536if test x"$silent" != x"yes" && test x"$sim_scache" != x""; then
537  echo "Setting scache size = $sim_scache" 6>&1
538fi],[sim_scache="-DWITH_SCACHE=${default_sim_scache}"])
539])
540AC_SUBST(sim_scache)
541
542
543dnl The argument is the default model if none is specified.
544AC_DEFUN(SIM_AC_OPTION_DEFAULT_MODEL,
545[
546default_sim_default_model="ifelse([$1],,0,[$1])"
547AC_ARG_ENABLE(sim-default-model,
548[  --enable-sim-default-model=model	Specify default model to simulate.],
549[case "${enableval}" in
550  yes|no) AC_MSG_ERROR("Missing argument to --enable-sim-default-model");;
551  *)	sim_default_model="-DWITH_DEFAULT_MODEL='\"${enableval}\"'";;
552esac
553if test x"$silent" != x"yes" && test x"$sim_default_model" != x""; then
554  echo "Setting default model = $sim_default_model" 6>&1
555fi],[sim_default_model="-DWITH_DEFAULT_MODEL='\"${default_sim_default_model}\"'"])
556])
557AC_SUBST(sim_default_model)
558
559
560dnl --enable-sim-hardware is for users of the simulator
561dnl arg[1] Enable sim-hw by default? ("yes" or "no")
562dnl arg[2] is a space separated list of devices that override the defaults
563dnl arg[3] is a space separated list of extra target specific devices.
564AC_DEFUN(SIM_AC_OPTION_HARDWARE,
565[
566if test x"[$1]" = x"yes"; then
567  sim_hw_p=yes
568else
569  sim_hw_p=no
570fi
571if test "[$2]"; then
572  hardware="core pal glue"
573else
574  hardware="core pal glue [$3]"
575fi
576sim_hw_cflags="-DWITH_HW=1"
577sim_hw="$hardware"
578sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([[^ ]][[^ ]]*\)/dv-\1.o/g'`"
579AC_ARG_ENABLE(sim-hardware,
580[  --enable-sim-hardware=LIST		Specify the hardware to be included in the build.],
581[
582case "${enableval}" in
583  yes)	sim_hw_p=yes;;
584  no)	sim_hw_p=no;;
585  ,*)   sim_hw_p=yes; hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
586  *,)   sim_hw_p=yes; hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
587  *)	sim_hw_p=yes; hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
588esac
589if test "$sim_hw_p" != yes; then
590  sim_hw_objs=
591  sim_hw_cflags="-DWITH_HW=0"
592  sim_hw=
593else
594  sim_hw_cflags="-DWITH_HW=1"
595  # remove duplicates
596  sim_hw=""
597  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
598  for i in x $hardware ; do
599    case " $f " in
600      x) ;;
601      *" $i "*) ;;
602      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
603    esac
604  done
605fi
606if test x"$silent" != x"yes" && test "$sim_hw_p" = "yes"; then
607  echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
608fi],[
609if test "$sim_hw_p" != yes; then
610  sim_hw_objs=
611  sim_hw_cflags="-DWITH_HW=0"
612  sim_hw=
613fi
614if test x"$silent" != x"yes"; then
615  echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
616fi])dnl
617])
618AC_SUBST(sim_hw_cflags)
619AC_SUBST(sim_hw_objs)
620AC_SUBST(sim_hw)
621
622
623dnl --enable-sim-inline is for users that wish to ramp up the simulator's
624dnl performance by inlining functions.
625dnl Guarantee that unconfigured simulators do not do any inlining
626sim_inline="-DDEFAULT_INLINE=0"
627AC_DEFUN(SIM_AC_OPTION_INLINE,
628[
629default_sim_inline="ifelse([$1],,,-DDEFAULT_INLINE=[$1])"
630AC_ARG_ENABLE(sim-inline,
631[  --enable-sim-inline=inlines		Specify which functions should be inlined.],
632[sim_inline=""
633case "$enableval" in
634  no)		sim_inline="-DDEFAULT_INLINE=0";;
635  0)		sim_inline="-DDEFAULT_INLINE=0";;
636  yes | 2)	sim_inline="-DDEFAULT_INLINE=ALL_C_INLINE";;
637  1)		sim_inline="-DDEFAULT_INLINE=INLINE_LOCALS";;
638  *) for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
639       new_flag=""
640       case "$x" in
641	 *_INLINE=*)	new_flag="-D$x";;
642	 *=*)		new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
643	 *_INLINE)	new_flag="-D$x=ALL_C_INLINE";;
644	 *)		new_flag="-D$x""_INLINE=ALL_C_INLINE";;
645       esac
646       if test x"$sim_inline" = x""; then
647	 sim_inline="$new_flag"
648       else
649	 sim_inline="$sim_inline $new_flag"
650       fi
651     done;;
652esac
653if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
654  echo "Setting inline flags = $sim_inline" 6>&1
655fi],[
656if test "x$cross_compiling" = "xno"; then
657  if test x"$GCC" != "x" -a x"${default_sim_inline}" != "x" ; then
658    sim_inline="${default_sim_inline}"
659    if test x"$silent" != x"yes"; then
660      echo "Setting inline flags = $sim_inline" 6>&1
661    fi
662  else
663    sim_inline=""
664  fi
665else
666  sim_inline="-DDEFAULT_INLINE=0"
667fi])dnl
668])
669AC_SUBST(sim_inline)
670
671
672AC_DEFUN(SIM_AC_OPTION_PACKAGES,
673[
674AC_ARG_ENABLE(sim-packages,
675[  --enable-sim-packages=list		Specify the packages to be included in the build.],
676[packages=disklabel
677case "${enableval}" in
678  yes)	;;
679  no)	AC_MSG_ERROR("List of packages must be specified for --enable-sim-packages"); packages="";;
680  ,*)   packages="${packages}${enableval}";;
681  *,)   packages="${enableval}${packages}";;
682  *)	packages="${enableval}"'';;
683esac
684sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
685sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
686if test x"$silent" != x"yes" && test x"$packages" != x""; then
687  echo "Setting packages to $sim_pk_src, $sim_pk_obj"
688fi],[packages=disklabel
689sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
690sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
691if test x"$silent" != x"yes"; then
692  echo "Setting packages to $sim_pk_src, $sim_pk_obj"
693fi])dnl
694])
695AC_SUBST(sim_packages)
696
697
698AC_DEFUN(SIM_AC_OPTION_REGPARM,
699[
700AC_ARG_ENABLE(sim-regparm,
701[  --enable-sim-regparm=nr-parm		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="";;
707esac
708if test x"$silent" != x"yes" && test x"$sim_regparm" != x""; then
709  echo "Setting regparm flags = $sim_regparm" 6>&1
710fi],[sim_regparm=""])dnl
711])
712AC_SUBST(sim_regparm)
713
714
715AC_DEFUN(SIM_AC_OPTION_RESERVED_BITS,
716[
717default_sim_reserved_bits="ifelse([$1],,1,[$1])"
718AC_ARG_ENABLE(sim-reserved-bits,
719[  --enable-sim-reserved-bits		Specify whether to check reserved bits in instruction.],
720[case "${enableval}" in
721  yes)	sim_reserved_bits="-DWITH_RESERVED_BITS=1";;
722  no)	sim_reserved_bits="-DWITH_RESERVED_BITS=0";;
723  *)	AC_MSG_ERROR("--enable-sim-reserved-bits does not take a value"); sim_reserved_bits="";;
724esac
725if test x"$silent" != x"yes" && test x"$sim_reserved_bits" != x""; then
726  echo "Setting reserved flags = $sim_reserved_bits" 6>&1
727fi],[sim_reserved_bits="-DWITH_RESERVED_BITS=${default_sim_reserved_bits}"])dnl
728])
729AC_SUBST(sim_reserved_bits)
730
731
732AC_DEFUN(SIM_AC_OPTION_SMP,
733[
734default_sim_smp="ifelse([$1],,5,[$1])"
735AC_ARG_ENABLE(sim-smp,
736[  --enable-sim-smp=n			Specify number of processors to configure for (default ${default_sim_smp}).],
737[case "${enableval}" in
738  yes)	sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5";;
739  no)	sim_smp="-DWITH_SMP=0" ; sim_igen_smp="-N 0";;
740  *)	sim_smp="-DWITH_SMP=$enableval" ; sim_igen_smp="-N $enableval";;
741esac
742if test x"$silent" != x"yes" && test x"$sim_smp" != x""; then
743  echo "Setting smp flags = $sim_smp" 6>&1
744fi],[sim_smp="-DWITH_SMP=${default_sim_smp}" ; sim_igen_smp="-N ${default_sim_smp}"
745if test x"$silent" != x"yes"; then
746  echo "Setting smp flags = $sim_smp" 6>&1
747fi])dnl
748])
749AC_SUBST(sim_smp)
750
751
752AC_DEFUN(SIM_AC_OPTION_STDCALL,
753[
754AC_ARG_ENABLE(sim-stdcall,
755[  --enable-sim-stdcall=type		Use an alternative function call/return mechanism - x86/GCC specific.],
756[case "${enableval}" in
757  no)		sim_stdcall="" ;;
758  std*)		sim_stdcall="-DWITH_STDCALL=1";;
759  yes)		sim_stdcall="-DWITH_STDCALL=1";;
760  *)   AC_MSG_ERROR("Unknown value $enableval for --enable-sim-stdcall"); sim_stdcall="";;
761esac
762if test x"$silent" != x"yes" && test x"$sim_stdcall" != x""; then
763  echo "Setting function call flags = $sim_stdcall" 6>&1
764fi],[sim_stdcall=""])dnl
765])
766AC_SUBST(sim_stdcall)
767
768
769AC_DEFUN(SIM_AC_OPTION_XOR_ENDIAN,
770[
771default_sim_xor_endian="ifelse([$1],,8,[$1])"
772AC_ARG_ENABLE(sim-xor-endian,
773[  --enable-sim-xor-endian=n		Specify number bytes involved in XOR bi-endian mode (default ${default_sim_xor_endian}).],
774[case "${enableval}" in
775  yes)	sim_xor_endian="-DWITH_XOR_ENDIAN=8";;
776  no)	sim_xor_endian="-DWITH_XOR_ENDIAN=0";;
777  *)	sim_xor_endian="-DWITH_XOR_ENDIAN=$enableval";;
778esac
779if test x"$silent" != x"yes" && test x"$sim_xor_endian" != x""; then
780  echo "Setting xor-endian flag = $sim_xor_endian" 6>&1
781fi],[sim_xor_endian="-DWITH_XOR_ENDIAN=${default_sim_xor_endian}"])dnl
782])
783AC_SUBST(sim_xor_endian)
784
785
786dnl --enable-build-warnings is for developers of the simulator.
787dnl it enables extra GCC specific warnings.
788AC_DEFUN(SIM_AC_OPTION_WARNINGS,
789[
790# NOTE: Don't add -Wall or -Wunused, they both include
791# -Wunused-parameter which reports bogus warnings.
792# NOTE: If you add to this list, remember to update
793# gdb/doc/gdbint.texinfo.
794build_warnings="-Wimplicit -Wreturn-type -Wcomment -Wtrigraphs \
795-Wformat -Wparentheses -Wpointer-arith -Wuninitialized"
796# Up for debate: -Wswitch -Wcomment -trigraphs -Wtrigraphs
797# -Wunused-function -Wunused-label -Wunused-variable -Wunused-value
798# -Wchar-subscripts -Wtraditional -Wshadow -Wcast-qual
799# -Wcast-align -Wwrite-strings -Wconversion -Wstrict-prototypes
800# -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls
801# -Woverloaded-virtual -Winline -Werror"
802AC_ARG_ENABLE(build-warnings,
803[  --enable-build-warnings Enable build-time compiler warnings if gcc is used],
804[case "${enableval}" in
805  yes)	;;
806  no)	build_warnings="-w";;
807  ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
808        build_warnings="${build_warnings} ${t}";;
809  *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
810        build_warnings="${t} ${build_warnings}";;
811  *)    build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
812esac
813if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
814  echo "Setting compiler warning flags = $build_warnings" 6>&1
815fi])dnl
816AC_ARG_ENABLE(sim-build-warnings,
817[  --enable-gdb-build-warnings Enable SIM specific build-time compiler warnings if gcc is used],
818[case "${enableval}" in
819  yes)	;;
820  no)	build_warnings="-w";;
821  ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
822        build_warnings="${build_warnings} ${t}";;
823  *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
824        build_warnings="${t} ${build_warnings}";;
825  *)    build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
826esac
827if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
828  echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
829fi])dnl
830WARN_CFLAGS=""
831WERROR_CFLAGS=""
832if test "x${build_warnings}" != x -a "x$GCC" = xyes
833then
834    AC_MSG_CHECKING(compiler warning flags)
835    # Separate out the -Werror flag as some files just cannot be
836    # compiled with it enabled.
837    for w in ${build_warnings}; do
838	case $w in
839	-Werr*) WERROR_CFLAGS=-Werror ;;
840	*) # Check that GCC accepts it
841	    saved_CFLAGS="$CFLAGS"
842	    CFLAGS="$CFLAGS $w"
843	    AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
844	    CFLAGS="$saved_CFLAGS"
845	esac
846    done
847    AC_MSG_RESULT(${WARN_CFLAGS}${WERROR_CFLAGS})
848fi
849])
850AC_SUBST(WARN_CFLAGS)
851AC_SUBST(WERROR_CFLAGS)
852
853
854dnl Generate the Makefile in a target specific directory.
855dnl Substitutions aren't performed on the file in AC_SUBST_FILE,
856dnl so this is a cover macro to tuck the details away of how we cope.
857dnl We cope by having autoconf generate two files and then merge them into
858dnl one afterwards.  The two pieces of the common fragment are inserted into
859dnl the target's fragment at the appropriate points.
860
861AC_DEFUN(SIM_AC_OUTPUT,
862[
863AC_LINK_FILES($sim_link_files, $sim_link_links)
864AC_OUTPUT(Makefile.sim:Makefile.in Make-common.sim:../common/Make-common.in .gdbinit:../common/gdbinit.in,
865[case "x$CONFIG_FILES" in
866 xMakefile*)
867   echo "Merging Makefile.sim+Make-common.sim into Makefile ..."
868   rm -f Makesim1.tmp Makesim2.tmp Makefile
869   sed -n -e '/^## COMMON_PRE_/,/^## End COMMON_PRE_/ p' <Make-common.sim >Makesim1.tmp
870   sed -n -e '/^## COMMON_POST_/,/^## End COMMON_POST_/ p' <Make-common.sim >Makesim2.tmp
871   sed -e '/^## COMMON_PRE_/ r Makesim1.tmp' \
872	-e '/^## COMMON_POST_/ r Makesim2.tmp' \
873	<Makefile.sim >Makefile
874   rm -f Makefile.sim Make-common.sim Makesim1.tmp Makesim2.tmp
875   ;;
876 esac
877 case "x$CONFIG_HEADERS" in xconfig.h:config.in) echo > stamp-h ;; esac
878])
879])
880
881# This file is derived from `gettext.m4'.  The difference is that the
882# included macros assume Cygnus-style source and build trees.
883
884# Macro to add for using GNU gettext.
885# Ulrich Drepper <drepper@cygnus.com>, 1995.
886#
887# This file file be copied and used freely without restrictions.  It can
888# be used in projects which are not available under the GNU Public License
889# but which still want to provide support for the GNU gettext functionality.
890# Please note that the actual code is *not* freely available.
891
892# serial 3
893
894AC_DEFUN(CY_WITH_NLS,
895  [AC_MSG_CHECKING([whether NLS is requested])
896    dnl Default is enabled NLS
897    AC_ARG_ENABLE(nls,
898      [  --disable-nls           do not use Native Language Support],
899      USE_NLS=$enableval, USE_NLS=yes)
900    AC_MSG_RESULT($USE_NLS)
901    AC_SUBST(USE_NLS)
902
903    USE_INCLUDED_LIBINTL=no
904
905    dnl If we use NLS figure out what method
906    if test "$USE_NLS" = "yes"; then
907      AC_DEFINE(ENABLE_NLS)
908      AC_MSG_CHECKING([whether included gettext is requested])
909      AC_ARG_WITH(included-gettext,
910        [  --with-included-gettext use the GNU gettext library included here],
911        nls_cv_force_use_gnu_gettext=$withval,
912        nls_cv_force_use_gnu_gettext=no)
913      AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
914
915      nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
916      if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
917        dnl User does not insist on using GNU NLS library.  Figure out what
918        dnl to use.  If gettext or catgets are available (in this order) we
919        dnl use this.  Else we have to fall back to GNU NLS library.
920	dnl catgets is only used if permitted by option --with-catgets.
921	nls_cv_header_intl=
922	nls_cv_header_libgt=
923	CATOBJEXT=NONE
924
925	AC_CHECK_HEADER(libintl.h,
926	  [AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc,
927	    [AC_TRY_LINK([#include <libintl.h>], [return (int) gettext ("")],
928	       gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)])
929
930	   if test "$gt_cv_func_gettext_libc" != "yes"; then
931	     AC_CHECK_LIB(intl, bindtextdomain,
932	       [AC_CACHE_CHECK([for gettext in libintl],
933		 gt_cv_func_gettext_libintl,
934		 [AC_TRY_LINK([], [return (int) gettext ("")],
935		 gt_cv_func_gettext_libintl=yes,
936		 gt_cv_func_gettext_libintl=no)])])
937	   fi
938
939	   if test "$gt_cv_func_gettext_libc" = "yes" \
940	      || test "$gt_cv_func_gettext_libintl" = "yes"; then
941	      AC_DEFINE(HAVE_GETTEXT)
942	      AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
943		[test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
944	      if test "$MSGFMT" != "no"; then
945		AC_CHECK_FUNCS(dcgettext)
946		AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
947		AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
948		  [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
949		AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
950			       return _nl_msg_cat_cntr],
951		  [CATOBJEXT=.gmo
952		   DATADIRNAME=share],
953		  [CATOBJEXT=.mo
954		   DATADIRNAME=lib])
955		INSTOBJEXT=.mo
956	      fi
957	    fi
958	])
959
960	dnl In the standard gettext, we would now check for catgets.
961        dnl However, we never want to use catgets for our releases.
962
963        if test "$CATOBJEXT" = "NONE"; then
964	  dnl Neither gettext nor catgets in included in the C library.
965	  dnl Fall back on GNU gettext library.
966	  nls_cv_use_gnu_gettext=yes
967        fi
968      fi
969
970      if test "$nls_cv_use_gnu_gettext" = "yes"; then
971        dnl Mark actions used to generate GNU NLS library.
972        INTLOBJS="\$(GETTOBJS)"
973        AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
974	  [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt)
975        AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
976        AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
977	  [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
978        AC_SUBST(MSGFMT)
979	USE_INCLUDED_LIBINTL=yes
980        CATOBJEXT=.gmo
981        INSTOBJEXT=.mo
982        DATADIRNAME=share
983	INTLDEPS='$(top_builddir)/../intl/libintl.a'
984	INTLLIBS=$INTLDEPS
985	LIBS=`echo $LIBS | sed -e 's/-lintl//'`
986        nls_cv_header_intl=libintl.h
987        nls_cv_header_libgt=libgettext.h
988      fi
989
990      dnl Test whether we really found GNU xgettext.
991      if test "$XGETTEXT" != ":"; then
992	dnl If it is no GNU xgettext we define it as : so that the
993	dnl Makefiles still can work.
994	if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
995	  : ;
996	else
997	  AC_MSG_RESULT(
998	    [found xgettext programs is not GNU xgettext; ignore it])
999	  XGETTEXT=":"
1000	fi
1001      fi
1002
1003      # We need to process the po/ directory.
1004      POSUB=po
1005    else
1006      DATADIRNAME=share
1007      nls_cv_header_intl=libintl.h
1008      nls_cv_header_libgt=libgettext.h
1009    fi
1010
1011    # If this is used in GNU gettext we have to set USE_NLS to `yes'
1012    # because some of the sources are only built for this goal.
1013    if test "$PACKAGE" = gettext; then
1014      USE_NLS=yes
1015      USE_INCLUDED_LIBINTL=yes
1016    fi
1017
1018    dnl These rules are solely for the distribution goal.  While doing this
1019    dnl we only have to keep exactly one list of the available catalogs
1020    dnl in configure.in.
1021    for lang in $ALL_LINGUAS; do
1022      GMOFILES="$GMOFILES $lang.gmo"
1023      POFILES="$POFILES $lang.po"
1024    done
1025
1026    dnl Make all variables we use known to autoconf.
1027    AC_SUBST(USE_INCLUDED_LIBINTL)
1028    AC_SUBST(CATALOGS)
1029    AC_SUBST(CATOBJEXT)
1030    AC_SUBST(DATADIRNAME)
1031    AC_SUBST(GMOFILES)
1032    AC_SUBST(INSTOBJEXT)
1033    AC_SUBST(INTLDEPS)
1034    AC_SUBST(INTLLIBS)
1035    AC_SUBST(INTLOBJS)
1036    AC_SUBST(POFILES)
1037    AC_SUBST(POSUB)
1038  ])
1039
1040AC_DEFUN(CY_GNU_GETTEXT,
1041  [AC_REQUIRE([AC_PROG_MAKE_SET])dnl
1042   AC_REQUIRE([AC_PROG_CC])dnl
1043   AC_REQUIRE([AC_PROG_RANLIB])dnl
1044   AC_REQUIRE([AC_ISC_POSIX])dnl
1045   AC_REQUIRE([AC_HEADER_STDC])dnl
1046   AC_REQUIRE([AC_C_CONST])dnl
1047   AC_REQUIRE([AC_C_INLINE])dnl
1048   AC_REQUIRE([AC_TYPE_OFF_T])dnl
1049   AC_REQUIRE([AC_TYPE_SIZE_T])dnl
1050   AC_REQUIRE([AC_FUNC_ALLOCA])dnl
1051   AC_REQUIRE([AC_FUNC_MMAP])dnl
1052
1053   AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \
1054unistd.h values.h sys/param.h])
1055   AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \
1056__argz_count __argz_stringify __argz_next])
1057
1058   if test "${ac_cv_func_stpcpy+set}" != "set"; then
1059     AC_CHECK_FUNCS(stpcpy)
1060   fi
1061   if test "${ac_cv_func_stpcpy}" = "yes"; then
1062     AC_DEFINE(HAVE_STPCPY)
1063   fi
1064
1065   AM_LC_MESSAGES
1066   CY_WITH_NLS
1067
1068   if test "x$CATOBJEXT" != "x"; then
1069     if test "x$ALL_LINGUAS" = "x"; then
1070       LINGUAS=
1071     else
1072       AC_MSG_CHECKING(for catalogs to be installed)
1073       NEW_LINGUAS=
1074       for lang in ${LINGUAS=$ALL_LINGUAS}; do
1075         case "$ALL_LINGUAS" in
1076          *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
1077         esac
1078       done
1079       LINGUAS=$NEW_LINGUAS
1080       AC_MSG_RESULT($LINGUAS)
1081     fi
1082
1083     dnl Construct list of names of catalog files to be constructed.
1084     if test -n "$LINGUAS"; then
1085       for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
1086     fi
1087   fi
1088
1089   dnl The reference to <locale.h> in the installed <libintl.h> file
1090   dnl must be resolved because we cannot expect the users of this
1091   dnl to define HAVE_LOCALE_H.
1092   if test $ac_cv_header_locale_h = yes; then
1093     INCLUDE_LOCALE_H="#include <locale.h>"
1094   else
1095     INCLUDE_LOCALE_H="\
1096/* The system does not provide the header <locale.h>.  Take care yourself.  */"
1097   fi
1098   AC_SUBST(INCLUDE_LOCALE_H)
1099
1100   dnl Determine which catalog format we have (if any is needed)
1101   dnl For now we know about two different formats:
1102   dnl   Linux libc-5 and the normal X/Open format
1103   if test -f $srcdir/po2tbl.sed.in; then
1104      if test "$CATOBJEXT" = ".cat"; then
1105	 AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen)
1106
1107	 dnl Transform the SED scripts while copying because some dumb SEDs
1108         dnl cannot handle comments.
1109	 sed -e '/^#/d' $srcdir/$msgformat-msg.sed > po2msg.sed
1110      fi
1111      dnl po2tbl.sed is always needed.
1112      sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \
1113	 $srcdir/po2tbl.sed.in > po2tbl.sed
1114   fi
1115
1116   dnl In the intl/Makefile.in we have a special dependency which makes
1117   dnl only sense for gettext.  We comment this out for non-gettext
1118   dnl packages.
1119   if test "$PACKAGE" = "gettext"; then
1120     GT_NO="#NO#"
1121     GT_YES=
1122   else
1123     GT_NO=
1124     GT_YES="#YES#"
1125   fi
1126   AC_SUBST(GT_NO)
1127   AC_SUBST(GT_YES)
1128
1129   MKINSTALLDIRS="\$(srcdir)/../../mkinstalldirs"
1130   AC_SUBST(MKINSTALLDIRS)
1131
1132   dnl *** For now the libtool support in intl/Makefile is not for real.
1133   l=
1134   AC_SUBST(l)
1135
1136   dnl Generate list of files to be processed by xgettext which will
1137   dnl be included in po/Makefile.  But only do this if the po directory
1138   dnl exists in srcdir.
1139   if test -d $srcdir/po; then
1140      test -d po || mkdir po
1141      if test "x$srcdir" != "x."; then
1142	 if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
1143	    posrcprefix="$srcdir/"
1144	 else
1145	    posrcprefix="../$srcdir/"
1146	 fi
1147      else
1148	 posrcprefix="../"
1149      fi
1150      rm -f po/POTFILES
1151      sed -e "/^#/d" -e "/^\$/d" -e "s,.*,	$posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
1152	 < $srcdir/po/POTFILES.in > po/POTFILES
1153   fi
1154  ])
1155
1156# Search path for a program which passes the given test.
1157# Ulrich Drepper <drepper@cygnus.com>, 1996.
1158#
1159# This file file be copied and used freely without restrictions.  It can
1160# be used in projects which are not available under the GNU Public License
1161# but which still want to provide support for the GNU gettext functionality.
1162# Please note that the actual code is *not* freely available.
1163
1164# serial 1
1165
1166dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
1167dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
1168AC_DEFUN(AM_PATH_PROG_WITH_TEST,
1169[# Extract the first word of "$2", so it can be a program name with args.
1170set dummy $2; ac_word=[$]2
1171AC_MSG_CHECKING([for $ac_word])
1172AC_CACHE_VAL(ac_cv_path_$1,
1173[case "[$]$1" in
1174  /*)
1175  ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
1176  ;;
1177  *)
1178  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
1179  for ac_dir in ifelse([$5], , $PATH, [$5]); do
1180    test -z "$ac_dir" && ac_dir=.
1181    if test -f $ac_dir/$ac_word; then
1182      if [$3]; then
1183	ac_cv_path_$1="$ac_dir/$ac_word"
1184	break
1185      fi
1186    fi
1187  done
1188  IFS="$ac_save_ifs"
1189dnl If no 4th arg is given, leave the cache variable unset,
1190dnl so AC_PATH_PROGS will keep looking.
1191ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
1192])dnl
1193  ;;
1194esac])dnl
1195$1="$ac_cv_path_$1"
1196if test -n "[$]$1"; then
1197  AC_MSG_RESULT([$]$1)
1198else
1199  AC_MSG_RESULT(no)
1200fi
1201AC_SUBST($1)dnl
1202])
1203
1204# Check whether LC_MESSAGES is available in <locale.h>.
1205# Ulrich Drepper <drepper@cygnus.com>, 1995.
1206#
1207# This file file be copied and used freely without restrictions.  It can
1208# be used in projects which are not available under the GNU Public License
1209# but which still want to provide support for the GNU gettext functionality.
1210# Please note that the actual code is *not* freely available.
1211
1212# serial 1
1213
1214AC_DEFUN(AM_LC_MESSAGES,
1215  [if test $ac_cv_header_locale_h = yes; then
1216    AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
1217      [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
1218       am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
1219    if test $am_cv_val_LC_MESSAGES = yes; then
1220      AC_DEFINE(HAVE_LC_MESSAGES)
1221    fi
1222  fi])
1223
1224
1225dnl --enable-cgen-maint support
1226AC_DEFUN(SIM_AC_OPTION_CGEN_MAINT,
1227[
1228cgen_maint=no
1229dnl Default is to use one in build tree.
1230cgen=guile
1231cgendir='$(srcdir)/../../cgen'
1232dnl Having --enable-maintainer-mode take arguments is another way to go.
1233dnl ??? One can argue --with is more appropriate if one wants to specify
1234dnl a directory name, but what we're doing here is an enable/disable kind
1235dnl of thing and specifying both --enable and --with is klunky.
1236dnl If you reeely want this to be --with, go ahead and change it.
1237AC_ARG_ENABLE(cgen-maint,
1238[  --enable-cgen-maint[=DIR]    build cgen generated files],
1239[case "${enableval}" in
1240  yes)	cgen_maint=yes ;;
1241  no)	cgen_maint=no ;;
1242  *)
1243	# argument is cgen install directory (not implemented yet).
1244	# Having a `share' directory might be more appropriate for the .scm,
1245	# .cpu, etc. files.
1246	cgendir=${cgen_maint}/lib/cgen
1247	cgen=guile
1248	;;
1249esac])dnl
1250dnl AM_CONDITIONAL(CGEN_MAINT, test x${cgen_maint} != xno)
1251if test x${cgen_maint} != xno ; then
1252  CGEN_MAINT=''
1253else
1254  CGEN_MAINT='#'
1255fi
1256AC_SUBST(CGEN_MAINT)
1257AC_SUBST(cgendir)
1258AC_SUBST(cgen)
1259])
1260