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