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