1dnl Process this file with autoconf to produce a configure script.
2sinclude(../common/aclocal.m4)
3AC_PREREQ(2.59)dnl
4AC_INIT(Makefile.in)
5
6AC_PROG_INSTALL
7AC_PROG_CC
8
9# Put a plausible default for CC_FOR_BUILD in Makefile.
10if test "x$cross_compiling" = "xno"; then
11  CC_FOR_BUILD='$(CC)'
12else
13  CC_FOR_BUILD=gcc
14fi
15CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
16
17dnl We don't use gettext, but bfd does.  So we do the appropriate checks
18dnl to see if there are intl libraries we should link against.
19ALL_LINGUAS=
20ZW_GNU_GETTEXT_SISTER_DIR
21
22
23AC_ARG_ENABLE(sim-alignment,
24[  --enable-sim-alignment=align		Specify strict or nonstrict alignment.],
25[case "${enableval}" in
26  yes | strict | STRICT)	sim_alignment="-DWITH_ALIGNMENT=STRICT_ALIGNMENT";;
27  no | nonstrict | NONSTRICT)	sim_alignment="-DWITH_ALIGNMENT=NONSTRICT_ALIGNMENT";;
28  0 | default | DEFAULT)	sim_alignment="-DWITH_ALIGNMENT=0";;
29  *)				AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-alignment"); sim_alignment="";;
30esac
31if test x"$silent" != x"yes" && test x"$sim_alignment" != x""; then
32  echo "Setting alignment flags = $sim_alignment" 6>&1
33fi],[sim_alignment=""])dnl
34
35
36AC_ARG_ENABLE(sim-assert,
37[  --enable-sim-assert			Specify whether to perform random assertions.],
38[case "${enableval}" in
39  yes)	sim_assert="-DWITH_ASSERT=1";;
40  no)	sim_assert="-DWITH_ASSERT=0";;
41  *)	AC_MSG_ERROR("--enable-sim-assert does not take a value"); sim_assert="";;
42esac
43if test x"$silent" != x"yes" && test x"$sim_assert" != x""; then
44  echo "Setting assert flags = $sim_assert" 6>&1
45fi],[sim_assert=""])dnl
46
47
48AC_ARG_ENABLE(sim-bitsize,
49[  --enable-sim-bitsize=n		Specify target bitsize (32 or 64).],
50[case "${enableval}" in
51  32|64) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=$enableval";;
52  *)	 AC_MSG_ERROR("--enable-sim-bitsize was given $enableval.  Expected 32 or 64"); sim_bitsize="";;
53esac
54if test x"$silent" != x"yes" && test x"$sim_bitsize" != x""; then
55  echo "Setting bitsize flags = $sim_bitsize" 6>&1
56fi],[sim_bitsize=""])dnl
57
58
59AC_ARG_ENABLE(sim-bswap,
60[  --enable-sim-bswap			Use the BSWAP instruction on Intel 486s and Pentiums.],
61[case "${enableval}" in
62  yes)	sim_bswap="-DWITH_BSWAP=1";;
63  no)	sim_bswap="-DWITH_BSWAP=0";;
64  *)	AC_MSG_ERROR("--enable-sim-bswap does not take a value"); sim_bswap="";;
65esac
66if test x"$silent" != x"yes" && test x"$sim_bswap" != x""; then
67  echo "Setting bswap flags = $sim_bswap" 6>&1
68fi],[sim_bswap=""])dnl
69
70
71AC_ARG_ENABLE(sim-cflags,
72[  --enable-sim-cflags=opts		Extra CFLAGS for use in building simulator],
73[case "${enableval}" in
74  yes)	sim_cflags="-O2 -fomit-frame-pointer";;
75  no)	sim_cflags="";;
76  *)	sim_cflags=`echo "${enableval}" | sed -e "s/,/ /g"`;;
77esac
78if test x"$silent" != x"yes" && test x"$sim_cflags" != x""; then
79  echo "Setting sim cflags = $sim_cflags" 6>&1
80fi],[sim_cflags=""])dnl
81
82
83AC_ARG_ENABLE(sim-config,
84[  --enable-sim-config=file		Override default config file],
85[case "${enableval}" in
86  yes|no)	AC_MSG_ERROR("No value supplied for --enable-sim-config=file");;
87  *)		if test -f "${srcdir}/${enableval}"; then
88		  sim_config="${enableval}";
89		elif test -f "${srcdir}/${enableval}-config.h"; then
90		  sim_config="${enableval}-config.h"
91		else
92		  AC_MSG_ERROR("Config file $enableval was not found");
93		  sim_config=std-config.h
94		fi;;
95esac
96if test x"$silent" != x"yes" && test x"$sim_config" != x""; then
97  echo "Setting config flags = $sim_config" 6>&1
98fi],[sim_config="std-config.h"
99if test x"$silent" != x"yes"; then
100  echo "Setting config flags = $sim_config" 6>&1
101fi])dnl
102
103
104AC_ARG_ENABLE(sim-decode-mechanism,
105[  --enable-sim-decode-mechanism=which		Specify the instruction decode mechanism.],
106[case "${enableval}" in
107  yes|no)	AC_MSG_ERROR("No value supplied for --enable-sim-decode-mechanism=file");;
108  array|switch|padded-switch|goto-switch)	sim_decode_mechanism="-T ${enableval}";;
109  *)		AC_MSG_ERROR("File $enableval is not an opcode rules file");
110		sim_decode_mechanism="switch";;
111esac
112if test x"$silent" != x"yes" && test x"$sim_decode_mechanism" != x""; then
113  echo "Setting decode mechanism flags = $sim_decode_mechanism" 6>&1
114fi],[sim_decode_mechanism=""
115if test x"$silent" != x"yes"; then
116  echo "Setting decode mechanism flags = $sim_decode_mechanism"
117fi])dnl
118
119
120AC_ARG_ENABLE(sim-default-model,
121[  --enable-sim-default-model=which	Specify default PowerPC to model.],
122[case "${enableval}" in
123  yes|no)	AC_MSG_ERROR("No value supplied for --enable-sim-default-model=model");;
124  *)		sim_default_model="-DWITH_DEFAULT_MODEL=${enableval}";;
125esac
126if test x"$silent" != x"yes" && test x"$sim_default_model" != x""; then
127  echo "Setting default-model flags = $sim_default_model" 6>&1
128fi],[sim_default_model=""])dnl
129
130
131AC_ARG_ENABLE(sim-duplicate,
132[  --enable-sim-duplicate		Expand (duplicate) semantic functions.],
133[case "${enableval}" in
134  yes)	sim_dup="-E";;
135  no)	sim_dup="";;
136  *)	AC_MSG_ERROR("--enable-sim-duplicate does not take a value"); sim_dup="";;
137esac
138if test x"$silent" != x"yes" && test x"$sim_dup" != x""; then
139  echo "Setting duplicate flags = $sim_dup" 6>&1
140fi],[sim_dup="-E"
141if test x"$silent" != x"yes"; then
142  echo "Setting duplicate flags = $sim_dup" 6>&1
143fi])dnl
144
145
146AC_ARG_ENABLE(sim-endian,
147[  --enable-sim-endian=endian		Specify target byte endian orientation.],
148[case "${enableval}" in
149  yes)	case "$target" in
150	  *powerpc-*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BIG_ENDIAN";;
151	  *powerpcle-*) sim_endian="-DWITH_TARGET_BYTE_ORDER=LITTLE_ENDIAN";;
152	  *) echo "Unknown target $target" 1>&6; sim_endian="-DWITH_TARGET_BYTE_ORDER=0";;
153	esac;;
154  no)	 sim_endian="-DWITH_TARGET_BYTE_ORDER=0";;
155  b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BIG_ENDIAN";;
156  l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=LITTLE_ENDIAN";;
157  *)	 AC_MSG_ERROR("Unknown value $enableval for --enable-sim-endian"); sim_endian="";;
158esac
159if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
160  echo "Setting endian flags = $sim_endian" 6>&1
161fi],[sim_endian=""])dnl
162
163
164AC_ARG_ENABLE(sim-env,
165[  --enable-sim-env=env			Specify target environment (operating, virtual, user).],
166[case "${enableval}" in
167  operating | os | oea)	sim_env="-DWITH_ENVIRONMENT=OPERATING_ENVIRONMENT";;
168  virtual | vea)	sim_env="-DWITH_ENVIRONMENT=VIRTUAL_ENVIRONMENT";;
169  user | uea)		sim_env="-DWITH_ENVIRONMENT=USER_ENVIRONMENT";;
170  no)			sim_env="-DWITH_ENVIRONMENT=0";;
171  *)			AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-env"); sim_env="";;
172esac
173if test x"$silent" != x"yes" && test x"$sim_env" != x""; then
174  echo "Setting env flags = $sim_env" 6>&1
175fi],[sim_env=""])dnl
176
177
178AC_ARG_ENABLE(sim-filter,
179[  --enable-sim-filter=rule		Specify filter rules.],
180[case "${enableval}" in
181  yes)	AC_MSG_ERROR("--enable-sim-filter must be specified with a rule to filter or no"); sim_filter="";;
182  no)	sim_filter="";;
183  *)	sim_filter="-F $enableval";;
184esac
185if test x"$silent" != x"yes" && test x"$sim_filter" != x""; then
186  echo "Setting filter flags = $sim_filter" 6>&1
187fi],[sim_filter="-F 32,f,o"
188if test x"$silent" != x"yes"; then
189  echo "Setting filter flags = $sim_filter" 6>&1
190fi])dnl
191
192
193AC_ARG_ENABLE(sim-float,
194[  --enable-sim-float			Specify whether the target has hard, soft, altivec or e500 floating point.],
195[case "${enableval}" in
196  yes | hard)	sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT";;
197  no | soft)	sim_float="-DWITH_FLOATING_POINT=SOFT_FLOATING_POINT";;
198  altivec)      sim_float="-DWITH_ALTIVEC" ; sim_filter="${sim_filter},av" ;;
199  *spe*|*simd*) sim_float="-DWITH_E500" ; sim_filter="${sim_filter},e500" ;;
200  *)		AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-float"); sim_float="";;
201esac
202if test x"$silent" != x"yes" && test x"$sim_float" != x""; then
203  echo "Setting float flags = $sim_float" 6>&1
204fi],[
205case "${target}" in
206  *altivec*) sim_float="-DWITH_ALTIVEC" ; sim_filter="${sim_filter},av" ;;
207  *spe*|*simd*)	sim_float="-DWITH_E500" ; sim_filter="${sim_filter},e500" ;;
208  *) sim_float=""
209esac
210])dnl
211
212
213AC_ARG_ENABLE(sim-hardware,
214[  --enable-sim-hardware=list		Specify the hardware to be included in the build.],
215[hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal,com,eeprom,opic,glue,phb,ide"
216case "${enableval}" in
217  yes)	;;
218  no)	AC_MSG_ERROR("List of hardware must be specified for --enable-sim-hardware"); hardware="";;
219  ,*)   hardware="${hardware}${enableval}";;
220  *,)   hardware="${enableval}${hardware}";;
221  *)	hardware="${enableval}"'';;
222esac
223sim_hw_src=`echo $hardware | sed -e 's/,/.c hw_/g' -e 's/^/hw_/' -e s'/$/.c/'`
224sim_hw_obj=`echo $sim_hw_src | sed -e 's/\.c/.o/g'`
225if test x"$silent" != x"yes" && test x"$hardware" != x""; then
226  echo "Setting hardware to $sim_hw_src, $sim_hw_obj"
227fi],[hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal,com,eeprom,opic,glue,phb,ide"
228sim_hw_src=`echo $hardware | sed -e 's/,/.c hw_/g' -e 's/^/hw_/' -e s'/$/.c/'`
229sim_hw_obj=`echo $sim_hw_src | sed -e 's/\.c/.o/g'`
230if test x"$silent" != x"yes"; then
231  echo "Setting hardware to $sim_hw_src, $sim_hw_obj"
232fi])dnl
233
234
235AC_ARG_ENABLE(sim-hostbitsize,
236[  --enable-sim-hostbitsize=32|64	Specify host bitsize (32 or 64).],
237[case "${enableval}" in
238  32|64) sim_hostbitsize="-DWITH_HOST_WORD_BITSIZE=$enableval";;
239  *)	 AC_MSG_ERROR("--enable-sim-hostbitsize was given $enableval.  Expected 32 or 64"); sim_hostbitsize="";;
240esac
241if test x"$silent" != x"yes" && test x"$sim_hostbitsize" != x""; then
242  echo "Setting hostbitsize flags = $sim_hostbitsize" 6>&1
243fi],[sim_hostbitsize=""])dnl
244
245
246AC_ARG_ENABLE(sim-hostendian,
247[  --enable-sim-hostendian=end		Specify host byte endian orientation.],
248[case "${enableval}" in
249  no)	 sim_hostendian="-DWITH_HOST_BYTE_ORDER=0";;
250  b*|B*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN";;
251  l*|L*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN";;
252  *)	 AC_MSG_ERROR("Unknown value $enableval for --enable-sim-hostendian"); sim_hostendian="";;
253esac
254if test x"$silent" != x"yes" && test x"$sim_hostendian" != x""; then
255  echo "Setting hostendian flags = $sim_hostendian" 6>&1
256fi],[
257if test "x$cross_compiling" = "xno"; then
258  AC_C_BIGENDIAN
259  if test $ac_cv_c_bigendian = yes; then
260    sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN"
261  else
262    sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN"
263  fi
264else
265  sim_hostendian="-DWITH_HOST_BYTE_ORDER=0"
266fi])dnl
267
268
269AC_ARG_ENABLE(sim-icache,
270[  --enable-sim-icache=size		Specify instruction-decode cache size and type.],
271[icache="-R"
272 case "${enableval}" in
273  yes)		icache="1024"; sim_icache="-I $icache";;
274  no)		sim_icache="-R";;
275  *) icache=1024
276     sim_icache="-"
277     for x in `echo "${enableval}" | sed -e "s/,/ /g"`; do
278       case "$x" in
279         define)	sim_icache="${sim_icache}R";;
280         semantic)	sim_icache="${sim_icache}C";;
281	 insn)		sim_icache="${sim_icache}S";;
282	 0*|1*|2*|3*|4*|5*|6*|7*|8*|9*)	icache=$x;;
283         *)		AC_MSG_ERROR("Unknown value $x for --enable-sim-icache"); sim_icache="";;
284       esac
285     done
286     sim_icache="${sim_icache}I $icache";;
287esac
288if test x"$silent" != x"yes" && test x"$icache" != x""; then
289  echo "Setting instruction cache size to $icache ($sim_icache)"
290fi],[sim_icache="-CSRI 1024"
291if test x"$silent" != x"yes"; then
292  echo "Setting instruction cache size to 1024 ($sim_icache)"
293fi])dnl
294
295
296AC_ARG_ENABLE(sim-inline,
297[  --enable-sim-inline=inlines		Specify which functions should be inlined.],
298[sim_inline=""
299case "$enableval" in
300  no)		sim_inline="-DDEFAULT_INLINE=0";;
301  0)		sim_inline="-DDEFAULT_INLINE=0";;
302  yes | 2)	sim_inline="-DDEFAULT_INLINE=ALL_INLINE";;
303  1)		sim_inline="-DDEFAULT_INLINE=PSIM_INLINE_LOCALS";;
304  *) for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
305       new_flag=""
306       case "$x" in
307	 *_INLINE=*)	new_flag="-D$x";;
308	 *=*)		new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
309	 *_INLINE)	new_flag="-D$x=ALL_INLINE";;
310	 *)		new_flag="-D$x""_INLINE=ALL_INLINE";;
311       esac
312       if test x"$sim_inline" = x""; then
313	 sim_inline="$new_flag"
314       else
315	 sim_inline="$sim_inline $new_flag"
316       fi
317     done;;
318esac
319if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
320  echo "Setting inline flags = $sim_inline" 6>&1
321fi],[if test x"$GCC" != ""; then
322  sim_inline="-DDEFAULT_INLINE=PSIM_INLINE_LOCALS"
323  if test x"$silent" != x"yes"; then
324    echo "Setting inline flags = $sim_inline" 6>&1
325  fi
326else
327  sim_inline=""
328fi])dnl
329
330
331AC_ARG_ENABLE(sim-jump,
332[  --enable-sim-jump		Jump between semantic code (instead of call/return).],
333[case "${enableval}" in
334  yes)	sim_jump="-J";;
335  no)	sim_jump="";;
336  *)	AC_MSG_ERROR("--enable-sim-jump does not take a value"); sim_jump="";;
337esac
338if test x"$silent" != x"yes" && test x"$sim_jump" != x""; then
339  echo "Setting jump flag = $sim_jump" 6>&1
340fi],[sim_jump=""
341if test x"$silent" != x"yes"; then
342  echo "Setting jump flag = $sim_jump" 6>&1
343fi])dnl
344
345
346AC_ARG_ENABLE(sim-line-nr,
347[  --enable-sim-line-nr=opts		Generate extra CPP code that references source rather than generated code],
348[case "${enableval}" in
349  yes)	sim_line_nr="";;
350  no)	sim_line_nr="-L";;
351  *)	AC_MSG_ERROR("--enable-sim-line-nr does not take a value"); sim_line_nr="";;
352esac
353if test x"$silent" != x"yes" && test x"$sim_line_nr" != x""; then
354  echo "Setting warning flags = $sim_line_nr" 6>&1
355fi],[sim_line_nr=""])dnl
356
357
358AC_ARG_ENABLE(sim-model,
359[  --enable-sim-model=which		Specify PowerPC to model.],
360[case "${enableval}" in
361  yes|no)	AC_MSG_ERROR("No value supplied for --enable-sim-model=model");;
362  *)		sim_model="-DWITH_MODEL=${enableval}";;
363esac
364if test x"$silent" != x"yes" && test x"$sim_model" != x""; then
365  echo "Setting model flags = $sim_model" 6>&1
366fi],[sim_model=""])dnl
367
368
369AC_ARG_ENABLE(sim-model-issue,
370[  --enable-sim-model-issue		Specify whether to simulate model specific actions],
371[case "${enableval}" in
372  yes)	sim_model_issue="-DWITH_MODEL_ISSUE=MODEL_ISSUE_PROCESS";;
373  no)	sim_model_issue="-DWITH_MODEL_ISSUE=MODEL_ISSUE_IGNORE";;
374  *)	AC_MSG_ERROR("--enable-sim-model-issue does not take a value"); sim_model_issue="";;
375esac
376if test x"$silent" != x"yes"; then
377  echo "Setting model-issue flags = $sim_model_issue" 6>&1
378fi],[sim_model_issue=""])dnl
379
380
381AC_ARG_ENABLE(sim-monitor,
382[  --enable-sim-monitor=mon		Specify whether to enable monitoring events.],
383[case "${enableval}" in
384  yes)		sim_monitor="-DWITH_MON='MONITOR_INSTRUCTION_ISSUE | MONITOR_LOAD_STORE_UNIT'";;
385  no)		sim_monitor="-DWITH_MON=0";;
386  instruction)	sim_monitor="-DWITH_MON=MONITOR_INSTRUCTION_ISSUE";;
387  memory)	sim_monitor="-DWITH_MON=MONITOR_LOAD_STORE_UNIT";;
388  *)		AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-mon"); sim_env="";;
389esac
390if test x"$silent" != x"yes" && test x"$sim_monitor" != x""; then
391  echo "Setting monitor flags = $sim_monitor" 6>&1
392fi],[sim_monitor=""])dnl
393
394
395AC_ARG_ENABLE(sim-opcode,
396[  --enable-sim-opcode=which		Override default opcode lookup.],
397[case "${enableval}" in
398  yes|no)	AC_MSG_ERROR("No value supplied for --enable-sim-opcode=file");;
399  *)		if test -f "${srcdir}/${enableval}"; then
400		  sim_opcode="${enableval}"
401		elif test -f "${srcdir}/dc-${enableval}"; then
402		  sim_opcode="dc-${enableval}"
403		else
404		  AC_MSG_ERROR("File $enableval is not an opcode rules file");
405		  sim_opcode="dc-complex"
406		fi;;
407esac
408if test x"$silent" != x"yes" && test x"$sim_opcode" != x""; then
409  echo "Setting opcode flags = $sim_opcode" 6>&1
410fi],[sim_opcode="dc-complex"
411if test x"$silent" != x"yes"; then
412  echo "Setting opcode flags = $sim_opcode"
413fi])dnl
414
415
416AC_ARG_ENABLE(sim-packages,
417[  --enable-sim-packages=list		Specify the packages to be included in the build.],
418[packages=disklabel
419case "${enableval}" in
420  yes)	;;
421  no)	AC_MSG_ERROR("List of packages must be specified for --enable-sim-packages"); packages="";;
422  ,*)   packages="${packages}${enableval}";;
423  *,)   packages="${enableval}${packages}";;
424  *)	packages="${enableval}"'';;
425esac
426sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
427sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
428if test x"$silent" != x"yes" && test x"$packages" != x""; then
429  echo "Setting packages to $sim_pk_src, $sim_pk_obj"
430fi],[packages=disklabel
431sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
432sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
433if test x"$silent" != x"yes"; then
434  echo "Setting packages to $sim_pk_src, $sim_pk_obj"
435fi])dnl
436
437
438AC_ARG_ENABLE(sim-regparm,
439[  --enable-sim-regparm=nr-parm		Pass parameters in registers instead of on the stack - x86/GCC specific.],
440[case "${enableval}" in
441  0*|1*|2*|3*|4*|5*|6*|7*|8*|9*) sim_regparm="-DWITH_REGPARM=${enableval}";;
442  no)                            sim_regparm="" ;;
443  yes)                           sim_regparm="-DWITH_REGPARM=3";;
444  *)   AC_MSG_ERROR("Unknown value $enableval for --enable-sim-regparm"); sim_regparm="";;
445esac
446if test x"$silent" != x"yes" && test x"$sim_regparm" != x""; then
447  echo "Setting regparm flags = $sim_regparm" 6>&1
448fi],[sim_regparm=""])dnl
449
450
451AC_ARG_ENABLE(sim-reserved-bits,
452[  --enable-sim-reserved-bits		Specify whether to check reserved bits in instruction.],
453[case "${enableval}" in
454  yes)	sim_reserved="-DWITH_RESERVED_BITS=1";;
455  no)	sim_reserved="-DWITH_RESERVED_BITS=0";;
456  *)	AC_MSG_ERROR("--enable-sim-reserved-bits does not take a value"); sim_reserved="";;
457esac
458if test x"$silent" != x"yes" && test x"$sim_reserved" != x""; then
459  echo "Setting reserved flags = $sim_reserved" 6>&1
460fi],[sim_reserved=""])dnl
461
462
463AC_ARG_ENABLE(sim-smp,
464[  --enable-sim-smp=n			Specify number of processors to configure for.],
465[case "${enableval}" in
466  yes)	sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5";;
467  no)	sim_smp="-DWITH_SMP=0" ; sim_igen_smp="-N 0";;
468  *)	sim_smp="-DWITH_SMP=$enableval" ; sim_igen_smp="-N $enableval";;
469esac
470if test x"$silent" != x"yes" && test x"$sim_smp" != x""; then
471  echo "Setting smp flags = $sim_smp" 6>&1
472fi],[sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5"
473if test x"$silent" != x"yes"; then
474  echo "Setting smp flags = $sim_smp" 6>&1
475fi])dnl
476
477
478AC_ARG_ENABLE(sim-stdcall,
479[  --enable-sim-stdcall=type		Use an alternative function call/return mechanism - x86/GCC specific.],
480[case "${enableval}" in
481  no)		sim_stdcall="" ;;
482  std*)		sim_stdcall="-DWITH_STDCALL=1";;
483  yes)		sim_stdcall="-DWITH_STDCALL=1";;
484  *)   AC_MSG_ERROR("Unknown value $enableval for --enable-sim-stdcall"); sim_stdcall="";;
485esac
486if test x"$silent" != x"yes" && test x"$sim_stdcall" != x""; then
487  echo "Setting function call flags = $sim_stdcall" 6>&1
488fi],[sim_stdcall=""])dnl
489
490
491AC_ARG_ENABLE(sim-stdio,
492[  --enable-sim-stdio			Specify whether to use stdio for console input/output.],
493[case "${enableval}" in
494  yes)	sim_stdio="-DWITH_STDIO=DO_USE_STDIO";;
495  no)	sim_stdio="-DWITH_STDIO=DONT_USE_STDIO";;
496  *)	AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-stdio"); sim_stdio="";;
497esac
498if test x"$silent" != x"yes" && test x"$sim_stdio" != x""; then
499  echo "Setting stdio flags = $sim_stdio" 6>&1
500fi],[sim_stdio=""])dnl
501
502
503AC_ARG_ENABLE(sim-switch,
504[  --enable-sim-switch			Use a switch instead of a table for instruction call.],
505[case "${enableval}" in
506  yes)	sim_switch="-s";;
507  no)	sim_switch="";;
508  *)	AC_MSG_ERROR("--enable-sim-switch does not take a value"); sim_switch="";;
509esac
510if test x"$silent" != x"yes" && test x"$sim_switch" != x""; then
511  echo "Setting switch flags = $sim_switch" 6>&1
512fi],[sim_switch="";
513if test x"$silent" != x"yes"; then
514  echo "Setting switch flags = $sim_switch" 6>&1
515fi])dnl
516
517
518AC_ARG_ENABLE(sim-timebase,
519[  --enable-sim-timebase			Specify whether the PPC timebase is supported.],
520[case "${enableval}" in
521  yes)	sim_timebase="-DWITH_TIME_BASE=1";;
522  no)	sim_timebase="-DWITH_TIME_BASE=0";;
523  *)	AC_MSG_ERROR("--enable-sim-timebase does not take a value"); sim_timebase="";;
524esac
525if test x"$silent" != x"yes" && test x"$sim_timebase" != x""; then
526  echo "Setting timebase flags = $sim_timebase" 6>&1
527fi],[sim_timebase=""])dnl
528
529
530AC_ARG_ENABLE(sim-trace,
531[  --enable-sim-trace			Specify whether tracing is supported.],
532[case "${enableval}" in
533  yes)	sim_trace="-DWITH_TRACE=1";;
534  no)	sim_trace="-DWITH_TRACE=0";;
535  *)	AC_MSG_ERROR("--enable-sim-trace does not take a value"); sim_trace="";;
536esac
537if test x"$silent" != x"yes" && test x"$sim_trace" != x""; then
538  echo "Setting trace flags = $sim_trace" 6>&1
539fi],[sim_trace=""])dnl
540
541
542AC_ARG_ENABLE(sim-warnings,
543[  --enable-sim-warnings=opts		Extra CFLAGS for turning on compiler warnings except for idecode.o, semantics.o and psim.o],
544[case "${enableval}" in
545  yes)	sim_warnings="-Werror -Wall -Wpointer-arith -Wmissing-prototypes -Wmissing-declarations ";;
546  no)	sim_warnings="-w";;
547  *)	sim_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
548esac
549if test x"$silent" != x"yes" && test x"$sim_warnings" != x""; then
550  echo "Setting warning flags = $sim_warnings" 6>&1
551fi],[sim_warnings=""])dnl
552
553
554AC_ARG_ENABLE(sim-xor-endian,
555[  --enable-sim-xor-endian=n		Specify number bytes involved in PowerPC XOR bi-endian mode (default 8).],
556[case "${enableval}" in
557  yes)	sim_xor_endian="-DWITH_XOR_ENDIAN=8";;
558  no)	sim_xor_endian="-DWITH_XOR_ENDIAN=0";;
559  *)	sim_xor_endian="-DWITH_XOR_ENDIAN=$enableval";;
560esac
561if test x"$silent" != x"yes" && test x"$sim_xor_endian" != x""; then
562  echo "Setting xor-endian flag = $sim_xor_endian" 6>&1
563fi],[sim_xor_endian=""])dnl
564
565
566AC_CANONICAL_SYSTEM
567AC_ARG_PROGRAM
568
569. ${srcdir}/../../bfd/configure.host
570
571case ${host} in
572  *mingw32*)
573    AC_DEFINE(USE_WIN32API, 1,
574              [Define if we should use the Windows API, instead of the 
575	       POSIX API.  On Windows, we use the Windows API when 
576	       building for MinGW, but the POSIX API when building 
577	       for Cygwin.])
578    ;;
579esac	    
580
581AC_CONFIG_HEADER(config.h:config.in)
582
583AC_STRUCT_ST_BLKSIZE
584AC_STRUCT_ST_BLOCKS
585AC_STRUCT_ST_RDEV
586AC_STRUCT_TIMEZONE
587
588AC_TYPE_GETGROUPS
589AC_TYPE_MODE_T
590AC_TYPE_OFF_T
591AC_TYPE_PID_T
592AC_TYPE_SIGNAL
593AC_TYPE_SIZE_T
594AC_TYPE_UID_T
595
596AC_CHECK_FUNCS(access cfgetispeed cfgetospeed cfsetispeed cfsetospeed chdir chmod chown dup dup2 fchmod fchown fcntl fstat fstatfs getdirentries getegid geteuid getgid getpid getppid getrusage gettimeofday getuid ioctl kill link lseek lstat mkdir pipe readlink rmdir setreuid setregid stat sigprocmask stat symlink tcgetattr tcsetattr tcsendbreak tcdrain tcflush tcflow tcgetpgrp tcsetpgrp time umask unlink)
597
598AC_CHECK_HEADERS(fcntl.h stdlib.h string.h strings.h sys/ioctl.h sys/mount.h sys/param.h sys/resource.h sys/stat.h sys/termio.h sys/termios.h sys/time.h sys/times.h sys/types.h time.h unistd.h sys/vfs.h sys/statfs.h)
599AC_HEADER_DIRENT
600
601dnl Figure out what type of termio/termios support there is
602sim_termio=""
603AC_MSG_CHECKING(for struct termios)
604AC_CACHE_VAL(ac_cv_termios_struct,
605[AC_TRY_COMPILE([#include <sys/types.h>
606#include <sys/termios.h>],
607[static struct termios x;
608 x.c_iflag = 0;
609 x.c_oflag = 0;
610 x.c_cflag = 0;
611 x.c_lflag = 0;
612 x.c_cc[NCCS] = 0;],
613ac_cv_termios_struct=yes, ac_cv_termios_struct=no)])
614AC_MSG_RESULT($ac_cv_termios_struct)
615if test $ac_cv_termios_struct = yes; then
616  sim_termio="$sim_termio -DHAVE_TERMIOS_STRUCTURE"
617fi
618
619if test "$ac_cv_termios_struct" = "yes"; then
620  AC_MSG_CHECKING(for c_line field in struct termios)
621  AC_CACHE_VAL(ac_cv_termios_cline,
622  [AC_TRY_COMPILE([#include <sys/types.h>
623#include <sys/termios.h>],
624[static struct termios x; x.c_line = 0;],
625  ac_cv_termios_cline=yes, ac_cv_termios_cline=no)])
626
627  AC_MSG_RESULT($ac_cv_termios_cline)
628  if test $ac_cv_termios_cline = yes; then
629    sim_termio="$sim_termio -DHAVE_TERMIOS_CLINE"
630  fi
631else
632  ac_cv_termios_cline=no
633fi
634
635if test "$ac_cv_termios_struct" != "yes"; then
636  AC_MSG_CHECKING(for struct termio)
637  AC_CACHE_VAL(ac_cv_termio_struct,
638  [AC_TRY_COMPILE([#include <sys/types.h>
639#include <sys/termio.h>],
640[static struct termio x;
641 x.c_iflag = 0;
642 x.c_oflag = 0;
643 x.c_cflag = 0;
644 x.c_lflag = 0;
645 x.c_cc[NCC] = 0;],
646ac_cv_termio_struct=yes, ac_cv_termio_struct=no)])
647  AC_MSG_RESULT($ac_cv_termio_struct)
648  if test $ac_cv_termio_struct = yes; then
649    sim_termio="$sim_termio -DHAVE_TERMIO_STRUCTURE"
650  fi
651else
652  ac_cv_termio_struct=no
653fi
654
655if test "$ac_cv_termio_struct" = "yes"; then
656  AC_MSG_CHECKING(for c_line field in struct termio)
657  AC_CACHE_VAL(ac_cv_termio_cline,
658  [AC_TRY_COMPILE([#include <sys/types.h>
659#include <sys/termio.h>],
660[static struct termio x; x.c_line = 0;],
661  ac_cv_termio_cline=yes, ac_cv_termio_cline=no)])
662
663  AC_MSG_RESULT($ac_cv_termio_cline)
664  if test $ac_cv_termio_cline = yes; then
665    sim_termio="$sim_termio -DHAVE_TERMIO_CLINE"
666  fi
667else
668  ac_cv_termio_cline=no
669fi
670
671dnl Check for struct statfs
672AC_MSG_CHECKING(for struct statfs)
673AC_CACHE_VAL(ac_cv_struct_statfs,
674[AC_TRY_COMPILE([#include <sys/types.h>
675#ifdef HAVE_SYS_PARAM_H
676#include <sys/param.h>
677#endif
678#ifdef HAVE_SYS_MOUNT_H
679#include <sys/mount.h>
680#endif
681#ifdef HAVE_SYS_VFS_H
682#include <sys/vfs.h>
683#endif
684#ifdef HAVE_SYS_STATFS_H
685#include <sys/statfs.h>
686#endif],
687[static struct statfs s;],
688ac_cv_struct_statfs=yes, ac_cv_struct_statfs=no)])
689AC_MSG_RESULT($ac_cv_struct_statfs)
690if test $ac_cv_struct_statfs = yes; then
691  AC_DEFINE(HAVE_STRUCT_STATFS, 1,
692	    [Define if struct statfs is defined in <sys/mount.h>])
693fi
694
695AC_CHECK_TYPES(long long)
696
697dnl Figure out if /dev/zero exists or not
698sim_devzero=""
699AC_MSG_CHECKING(for /dev/zero)
700AC_CACHE_VAL(ac_cv_devzero,
701[AC_TRY_RUN([#include <fcntl.h>
702main () {
703  char buf[2048];
704  int i;
705  int fd = open ("/dev/zero", O_RDONLY);
706  if (fd < 0)
707    return 1;
708  for (i = 0; i < sizeof (buf); i++)
709    buf[i] = 1;
710  if (read (fd, buf, sizeof (buf)) != sizeof (buf))
711    return 1;
712  for (i = 0; i < sizeof (buf); i++)
713    if (buf[i])
714      return 1;
715  return 0;
716}],[ac_cv_devzero=yes],[ac_cv_devzero=no],[ac_cv_devzero=no])])
717AC_MSG_RESULT($ac_cv_devzero)
718if test $ac_cv_devzero = yes; then
719  sim_devzero="-DHAVE_DEVZERO"
720else
721  sim_devzero=""
722fi
723
724dnl Figure out if we are in the new Cygnus tree with a common directory or not
725AC_MSG_CHECKING(for common simulator directory)
726if test -f "${srcdir}/../common/callback.c"; then
727  AC_MSG_RESULT(yes)
728  sim_callback="callback.o targ-map.o"
729  sim_targ_vals="targ-vals.h targ-map.c targ-vals.def"
730else
731  AC_MSG_RESULT(no)
732  sim_callback=""
733  sim_targ_vals=""
734fi
735
736AC_MSG_CHECKING(for common simulator directory fpu implementation)
737if test -f "${srcdir}/../common/sim-fpu.c"; then
738  AC_MSG_RESULT(yes)
739  sim_fpu_cflags="-DHAVE_COMMON_FPU -I../common -I${srcdir}/../common"
740  sim_fpu="sim-fpu.o"
741else
742  AC_MSG_RESULT(no)
743  sim_fpu_cflags=
744  sim_fpu=
745fi
746
747dnl Check for exe extension
748AC_EXEEXT
749
750AC_SUBST(CC_FOR_BUILD)
751AC_SUBST(CFLAGS_FOR_BUILD)
752AC_SUBST(CFLAGS)
753AC_SUBST(HDEFINES)
754AR=${AR-ar}
755AC_SUBST(AR)
756AC_PROG_RANLIB
757AC_SUBST(sim_cflags)
758AC_SUBST(sim_warnings)
759AC_SUBST(sim_line_nr)
760AC_SUBST(sim_config)
761AC_SUBST(sim_opcode)
762AC_SUBST(sim_switch)
763AC_SUBST(sim_dup)
764AC_SUBST(sim_decode_mechanism)
765AC_SUBST(sim_jump)
766AC_SUBST(sim_filter)
767AC_SUBST(sim_icache)
768AC_SUBST(sim_hw_src)
769AC_SUBST(sim_hw_obj)
770AC_SUBST(sim_pk_src)
771AC_SUBST(sim_pk_obj)
772AC_SUBST(sim_inline)
773AC_SUBST(sim_bswap)
774AC_SUBST(sim_endian)
775AC_SUBST(sim_regparm)
776AC_SUBST(sim_stdcall)
777AC_SUBST(sim_xor_endian)
778AC_SUBST(sim_hostendian)
779AC_SUBST(sim_smp)
780AC_SUBST(sim_igen_smp)
781AC_SUBST(sim_bitsize)
782AC_SUBST(sim_hostbitsize)
783AC_SUBST(sim_env)
784AC_SUBST(sim_timebase)
785AC_SUBST(sim_alignment)
786AC_SUBST(sim_float)
787AC_SUBST(sim_trace)
788AC_SUBST(sim_assert)
789AC_SUBST(sim_reserved)
790AC_SUBST(sim_monitor)
791AC_SUBST(sim_model)
792AC_SUBST(sim_default_model)
793AC_SUBST(sim_model_issue)
794AC_SUBST(sim_stdio)
795AC_SUBST(sim_termio)
796AC_SUBST(sim_devzero)
797AC_SUBST(sim_callback)
798AC_SUBST(sim_targ_vals)
799AC_SUBST(sim_fpu_cflags)
800AC_SUBST(sim_fpu)
801
802AC_OUTPUT(Makefile,
803[case x$CONFIG_HEADERS in xconfig.h:config.in) echo > stamp-h ;; esac])
804