configure.ac revision 1.5
1dnl Process this file with autoconf to produce a configure script.
2AC_PREREQ(2.59)dnl
3AC_INIT(Makefile.in)
4sinclude(../common/acinclude.m4)
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(../../intl)
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
212AC_CACHE_CHECK([if union semun defined],
213  ac_cv_HAS_UNION_SEMUN,
214  [AC_TRY_COMPILE([
215#include <sys/types.h>
216#include <sys/ipc.h>
217#include <sys/sem.h>],
218[union semun arg ;],
219[ac_cv_has_union_semun="yes"],
220[ac_cv_has_union_semun="no"])
221AC_MSG_RESULT($ac_cv_has_union_semun)
222])
223
224
225if test "$ac_cv_has_union_semun" = "yes"; then
226  AC_CACHE_CHECK(whether System V semaphores are supported,
227  ac_cv_sysv_sem,
228  [
229  AC_TRY_RUN(
230  [
231  #include <sys/types.h>
232  #include <sys/ipc.h>
233  #include <sys/sem.h>
234  int main () {
235    union semun arg ;
236
237    int id=semget(IPC_PRIVATE,1,IPC_CREAT|0400);
238    if (id == -1)
239      exit(1);
240    arg.val = 0; /* avoid implicit type cast to union */
241    if (semctl(id, 0, IPC_RMID, arg) == -1)
242      exit(1);
243    exit(0);
244  }
245  ],
246  ac_cv_sysv_sem="yes", ac_cv_sysv_sem="no", :)
247  ])
248else  # semun is not defined
249  AC_CACHE_CHECK(whether System V semaphores are supported,
250  ac_cv_sysv_sem,
251  [
252  AC_TRY_RUN(
253  [
254  #include <sys/types.h>
255  #include <sys/ipc.h>
256  #include <sys/sem.h>
257  union semun {
258    int val;
259    struct semid_ds *buf;
260    ushort *array;
261  };
262  int main () {
263    union semun arg ;
264
265    int id=semget(IPC_PRIVATE,1,IPC_CREAT|0400);
266    if (id == -1)
267      exit(1);
268    arg.val = 0; /* avoid implicit type cast to union */
269    if (semctl(id, 0, IPC_RMID, arg) == -1)
270      exit(1);
271    exit(0);
272  }
273  ],
274  ac_cv_sysv_sem="yes", ac_cv_sysv_sem="no", :)
275  ])
276fi
277
278AC_CACHE_CHECK(whether System V shared memory is supported,
279ac_cv_sysv_shm,
280[
281AC_TRY_RUN([
282#include <sys/types.h>
283#include <sys/ipc.h>
284#include <sys/shm.h>
285int main () {
286  int id=shmget(IPC_PRIVATE,1,IPC_CREAT|0400);
287  if (id == -1)
288    exit(1);
289  if (shmctl(id, IPC_RMID, 0) == -1)
290    exit(1);
291  exit(0);
292}
293],
294ac_cv_sysv_shm="yes", ac_cv_sysv_shm="no", :)
295])
296
297if test x"$ac_cv_sysv_shm" = x"yes" -a x"$ac_cv_sysv_sem" = x"yes" ; then
298  sim_sysv_ipc_hw=",sem,shm";
299else
300  sim_sysv_ipc_hw="";
301fi
302
303if test x"$ac_cv_has_union_semun" = x"yes" -a x"$ac_cv_sysv_sem" = x"yes" ; then
304  AC_DEFINE(HAVE_UNION_SEMUN, 1,
305	    [Define if union semun is defined in <sys/sem.h>])
306fi
307
308
309AC_ARG_ENABLE(sim-hardware,
310[  --enable-sim-hardware=list		Specify the hardware to be included in the build.],
311[hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal,com,eeprom,opic,glue,phb,ide${sim_sysv_ipc_hw}"
312case "${enableval}" in
313  yes)	;;
314  no)	AC_MSG_ERROR("List of hardware must be specified for --enable-sim-hardware"); hardware="";;
315  ,*)   hardware="${hardware}${enableval}";;
316  *,)   hardware="${enableval}${hardware}";;
317  *)	hardware="${enableval}"'';;
318esac
319sim_hw_src=`echo $hardware | sed -e 's/,/.c hw_/g' -e 's/^/hw_/' -e s'/$/.c/'`
320sim_hw_obj=`echo $sim_hw_src | sed -e 's/\.c/.o/g'`
321if test x"$silent" != x"yes" && test x"$hardware" != x""; then
322  echo "Setting hardware to $sim_hw_src, $sim_hw_obj"
323fi],[hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal,com,eeprom,opic,glue,phb,ide${sim_sysv_ipc_hw}"
324sim_hw_src=`echo $hardware | sed -e 's/,/.c hw_/g' -e 's/^/hw_/' -e s'/$/.c/'`
325sim_hw_obj=`echo $sim_hw_src | sed -e 's/\.c/.o/g'`
326if test x"$silent" != x"yes"; then
327  echo "Setting hardware to $sim_hw_src, $sim_hw_obj"
328fi])dnl
329
330AC_ARG_ENABLE(sim-hostbitsize,
331[  --enable-sim-hostbitsize=32|64	Specify host bitsize (32 or 64).],
332[case "${enableval}" in
333  32|64) sim_hostbitsize="-DWITH_HOST_WORD_BITSIZE=$enableval";;
334  *)	 AC_MSG_ERROR("--enable-sim-hostbitsize was given $enableval.  Expected 32 or 64"); sim_hostbitsize="";;
335esac
336if test x"$silent" != x"yes" && test x"$sim_hostbitsize" != x""; then
337  echo "Setting hostbitsize flags = $sim_hostbitsize" 6>&1
338fi],[sim_hostbitsize=""])dnl
339
340
341AC_ARG_ENABLE(sim-hostendian,
342[  --enable-sim-hostendian=end		Specify host byte endian orientation.],
343[case "${enableval}" in
344  no)	 sim_hostendian="-DWITH_HOST_BYTE_ORDER=0";;
345  b*|B*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN";;
346  l*|L*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN";;
347  *)	 AC_MSG_ERROR("Unknown value $enableval for --enable-sim-hostendian"); sim_hostendian="";;
348esac
349if test x"$silent" != x"yes" && test x"$sim_hostendian" != x""; then
350  echo "Setting hostendian flags = $sim_hostendian" 6>&1
351fi],[
352if test "x$cross_compiling" = "xno"; then
353  AC_C_BIGENDIAN
354  if test $ac_cv_c_bigendian = yes; then
355    sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN"
356  else
357    sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN"
358  fi
359else
360  sim_hostendian="-DWITH_HOST_BYTE_ORDER=0"
361fi])dnl
362
363
364AC_ARG_ENABLE(sim-icache,
365[  --enable-sim-icache=size		Specify instruction-decode cache size and type.],
366[icache="-R"
367 case "${enableval}" in
368  yes)		icache="1024"; sim_icache="-I $icache";;
369  no)		sim_icache="-R";;
370  *) icache=1024
371     sim_icache="-"
372     for x in `echo "${enableval}" | sed -e "s/,/ /g"`; do
373       case "$x" in
374         define)	sim_icache="${sim_icache}R";;
375         semantic)	sim_icache="${sim_icache}C";;
376	 insn)		sim_icache="${sim_icache}S";;
377	 0*|1*|2*|3*|4*|5*|6*|7*|8*|9*)	icache=$x;;
378         *)		AC_MSG_ERROR("Unknown value $x for --enable-sim-icache"); sim_icache="";;
379       esac
380     done
381     sim_icache="${sim_icache}I $icache";;
382esac
383if test x"$silent" != x"yes" && test x"$icache" != x""; then
384  echo "Setting instruction cache size to $icache ($sim_icache)"
385fi],[sim_icache="-CSRI 1024"
386if test x"$silent" != x"yes"; then
387  echo "Setting instruction cache size to 1024 ($sim_icache)"
388fi])dnl
389
390
391AC_ARG_ENABLE(sim-inline,
392[  --enable-sim-inline=inlines		Specify which functions should be inlined.],
393[sim_inline=""
394case "$enableval" in
395  no)		sim_inline="-DDEFAULT_INLINE=0";;
396  0)		sim_inline="-DDEFAULT_INLINE=0";;
397  yes | 2)	sim_inline="-DDEFAULT_INLINE=ALL_INLINE";;
398  1)		sim_inline="-DDEFAULT_INLINE=PSIM_INLINE_LOCALS";;
399  *) for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
400       new_flag=""
401       case "$x" in
402	 *_INLINE=*)	new_flag="-D$x";;
403	 *=*)		new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
404	 *_INLINE)	new_flag="-D$x=ALL_INLINE";;
405	 *)		new_flag="-D$x""_INLINE=ALL_INLINE";;
406       esac
407       if test x"$sim_inline" = x""; then
408	 sim_inline="$new_flag"
409       else
410	 sim_inline="$sim_inline $new_flag"
411       fi
412     done;;
413esac
414if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
415  echo "Setting inline flags = $sim_inline" 6>&1
416fi],[if test x"$GCC" != ""; then
417  sim_inline="-DDEFAULT_INLINE=PSIM_INLINE_LOCALS"
418  if test x"$silent" != x"yes"; then
419    echo "Setting inline flags = $sim_inline" 6>&1
420  fi
421else
422  sim_inline=""
423fi])dnl
424
425
426AC_ARG_ENABLE(sim-jump,
427[  --enable-sim-jump		Jump between semantic code (instead of call/return).],
428[case "${enableval}" in
429  yes)	sim_jump="-J";;
430  no)	sim_jump="";;
431  *)	AC_MSG_ERROR("--enable-sim-jump does not take a value"); sim_jump="";;
432esac
433if test x"$silent" != x"yes" && test x"$sim_jump" != x""; then
434  echo "Setting jump flag = $sim_jump" 6>&1
435fi],[sim_jump=""
436if test x"$silent" != x"yes"; then
437  echo "Setting jump flag = $sim_jump" 6>&1
438fi])dnl
439
440
441AC_ARG_ENABLE(sim-line-nr,
442[  --enable-sim-line-nr=opts		Generate extra CPP code that references source rather than generated code],
443[case "${enableval}" in
444  yes)	sim_line_nr="";;
445  no)	sim_line_nr="-L";;
446  *)	AC_MSG_ERROR("--enable-sim-line-nr does not take a value"); sim_line_nr="";;
447esac
448if test x"$silent" != x"yes" && test x"$sim_line_nr" != x""; then
449  echo "Setting warning flags = $sim_line_nr" 6>&1
450fi],[sim_line_nr=""])dnl
451
452
453AC_ARG_ENABLE(sim-model,
454[  --enable-sim-model=which		Specify PowerPC to model.],
455[case "${enableval}" in
456  yes|no)	AC_MSG_ERROR("No value supplied for --enable-sim-model=model");;
457  *)		sim_model="-DWITH_MODEL=${enableval}";;
458esac
459if test x"$silent" != x"yes" && test x"$sim_model" != x""; then
460  echo "Setting model flags = $sim_model" 6>&1
461fi],[sim_model=""])dnl
462
463
464AC_ARG_ENABLE(sim-model-issue,
465[  --enable-sim-model-issue		Specify whether to simulate model specific actions],
466[case "${enableval}" in
467  yes)	sim_model_issue="-DWITH_MODEL_ISSUE=MODEL_ISSUE_PROCESS";;
468  no)	sim_model_issue="-DWITH_MODEL_ISSUE=MODEL_ISSUE_IGNORE";;
469  *)	AC_MSG_ERROR("--enable-sim-model-issue does not take a value"); sim_model_issue="";;
470esac
471if test x"$silent" != x"yes"; then
472  echo "Setting model-issue flags = $sim_model_issue" 6>&1
473fi],[sim_model_issue=""])dnl
474
475
476AC_ARG_ENABLE(sim-monitor,
477[  --enable-sim-monitor=mon		Specify whether to enable monitoring events.],
478[case "${enableval}" in
479  yes)		sim_monitor="-DWITH_MON='MONITOR_INSTRUCTION_ISSUE | MONITOR_LOAD_STORE_UNIT'";;
480  no)		sim_monitor="-DWITH_MON=0";;
481  instruction)	sim_monitor="-DWITH_MON=MONITOR_INSTRUCTION_ISSUE";;
482  memory)	sim_monitor="-DWITH_MON=MONITOR_LOAD_STORE_UNIT";;
483  *)		AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-mon"); sim_env="";;
484esac
485if test x"$silent" != x"yes" && test x"$sim_monitor" != x""; then
486  echo "Setting monitor flags = $sim_monitor" 6>&1
487fi],[sim_monitor=""])dnl
488
489
490AC_ARG_ENABLE(sim-opcode,
491[  --enable-sim-opcode=which		Override default opcode lookup.],
492[case "${enableval}" in
493  yes|no)	AC_MSG_ERROR("No value supplied for --enable-sim-opcode=file");;
494  *)		if test -f "${srcdir}/${enableval}"; then
495		  sim_opcode="${enableval}"
496		elif test -f "${srcdir}/dc-${enableval}"; then
497		  sim_opcode="dc-${enableval}"
498		else
499		  AC_MSG_ERROR("File $enableval is not an opcode rules file");
500		  sim_opcode="dc-complex"
501		fi;;
502esac
503if test x"$silent" != x"yes" && test x"$sim_opcode" != x""; then
504  echo "Setting opcode flags = $sim_opcode" 6>&1
505fi],[sim_opcode="dc-complex"
506if test x"$silent" != x"yes"; then
507  echo "Setting opcode flags = $sim_opcode"
508fi])dnl
509
510
511AC_ARG_ENABLE(sim-packages,
512[  --enable-sim-packages=list		Specify the packages to be included in the build.],
513[packages=disklabel
514case "${enableval}" in
515  yes)	;;
516  no)	AC_MSG_ERROR("List of packages must be specified for --enable-sim-packages"); packages="";;
517  ,*)   packages="${packages}${enableval}";;
518  *,)   packages="${enableval}${packages}";;
519  *)	packages="${enableval}"'';;
520esac
521sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
522sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
523if test x"$silent" != x"yes" && test x"$packages" != x""; then
524  echo "Setting packages to $sim_pk_src, $sim_pk_obj"
525fi],[packages=disklabel
526sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
527sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
528if test x"$silent" != x"yes"; then
529  echo "Setting packages to $sim_pk_src, $sim_pk_obj"
530fi])dnl
531
532
533AC_ARG_ENABLE(sim-regparm,
534[  --enable-sim-regparm=nr-parm		Pass parameters in registers instead of on the stack - x86/GCC specific.],
535[case "${enableval}" in
536  0*|1*|2*|3*|4*|5*|6*|7*|8*|9*) sim_regparm="-DWITH_REGPARM=${enableval}";;
537  no)                            sim_regparm="" ;;
538  yes)                           sim_regparm="-DWITH_REGPARM=3";;
539  *)   AC_MSG_ERROR("Unknown value $enableval for --enable-sim-regparm"); sim_regparm="";;
540esac
541if test x"$silent" != x"yes" && test x"$sim_regparm" != x""; then
542  echo "Setting regparm flags = $sim_regparm" 6>&1
543fi],[sim_regparm=""])dnl
544
545
546AC_ARG_ENABLE(sim-reserved-bits,
547[  --enable-sim-reserved-bits		Specify whether to check reserved bits in instruction.],
548[case "${enableval}" in
549  yes)	sim_reserved="-DWITH_RESERVED_BITS=1";;
550  no)	sim_reserved="-DWITH_RESERVED_BITS=0";;
551  *)	AC_MSG_ERROR("--enable-sim-reserved-bits does not take a value"); sim_reserved="";;
552esac
553if test x"$silent" != x"yes" && test x"$sim_reserved" != x""; then
554  echo "Setting reserved flags = $sim_reserved" 6>&1
555fi],[sim_reserved=""])dnl
556
557
558AC_ARG_ENABLE(sim-smp,
559[  --enable-sim-smp=n			Specify number of processors to configure for.],
560[case "${enableval}" in
561  yes)	sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5";;
562  no)	sim_smp="-DWITH_SMP=0" ; sim_igen_smp="-N 0";;
563  *)	sim_smp="-DWITH_SMP=$enableval" ; sim_igen_smp="-N $enableval";;
564esac
565if test x"$silent" != x"yes" && test x"$sim_smp" != x""; then
566  echo "Setting smp flags = $sim_smp" 6>&1
567fi],[sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5"
568if test x"$silent" != x"yes"; then
569  echo "Setting smp flags = $sim_smp" 6>&1
570fi])dnl
571
572
573AC_ARG_ENABLE(sim-stdcall,
574[  --enable-sim-stdcall=type		Use an alternative function call/return mechanism - x86/GCC specific.],
575[case "${enableval}" in
576  no)		sim_stdcall="" ;;
577  std*)		sim_stdcall="-DWITH_STDCALL=1";;
578  yes)		sim_stdcall="-DWITH_STDCALL=1";;
579  *)   AC_MSG_ERROR("Unknown value $enableval for --enable-sim-stdcall"); sim_stdcall="";;
580esac
581if test x"$silent" != x"yes" && test x"$sim_stdcall" != x""; then
582  echo "Setting function call flags = $sim_stdcall" 6>&1
583fi],[sim_stdcall=""])dnl
584
585
586AC_ARG_ENABLE(sim-stdio,
587[  --enable-sim-stdio			Specify whether to use stdio for console input/output.],
588[case "${enableval}" in
589  yes)	sim_stdio="-DWITH_STDIO=DO_USE_STDIO";;
590  no)	sim_stdio="-DWITH_STDIO=DONT_USE_STDIO";;
591  *)	AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-stdio"); sim_stdio="";;
592esac
593if test x"$silent" != x"yes" && test x"$sim_stdio" != x""; then
594  echo "Setting stdio flags = $sim_stdio" 6>&1
595fi],[sim_stdio=""])dnl
596
597
598AC_ARG_ENABLE(sim-switch,
599[  --enable-sim-switch			Use a switch instead of a table for instruction call.],
600[case "${enableval}" in
601  yes)	sim_switch="-s";;
602  no)	sim_switch="";;
603  *)	AC_MSG_ERROR("--enable-sim-switch does not take a value"); sim_switch="";;
604esac
605if test x"$silent" != x"yes" && test x"$sim_switch" != x""; then
606  echo "Setting switch flags = $sim_switch" 6>&1
607fi],[sim_switch="";
608if test x"$silent" != x"yes"; then
609  echo "Setting switch flags = $sim_switch" 6>&1
610fi])dnl
611
612
613AC_ARG_ENABLE(sim-timebase,
614[  --enable-sim-timebase			Specify whether the PPC timebase is supported.],
615[case "${enableval}" in
616  yes)	sim_timebase="-DWITH_TIME_BASE=1";;
617  no)	sim_timebase="-DWITH_TIME_BASE=0";;
618  *)	AC_MSG_ERROR("--enable-sim-timebase does not take a value"); sim_timebase="";;
619esac
620if test x"$silent" != x"yes" && test x"$sim_timebase" != x""; then
621  echo "Setting timebase flags = $sim_timebase" 6>&1
622fi],[sim_timebase=""])dnl
623
624
625AC_ARG_ENABLE(sim-trace,
626[  --enable-sim-trace			Specify whether tracing is supported.],
627[case "${enableval}" in
628  yes)	sim_trace="-DWITH_TRACE=1";;
629  no)	sim_trace="-DWITH_TRACE=0";;
630  *)	AC_MSG_ERROR("--enable-sim-trace does not take a value"); sim_trace="";;
631esac
632if test x"$silent" != x"yes" && test x"$sim_trace" != x""; then
633  echo "Setting trace flags = $sim_trace" 6>&1
634fi],[sim_trace=""])dnl
635
636
637AC_ARG_ENABLE(sim-warnings,
638[  --enable-sim-warnings=opts		Extra CFLAGS for turning on compiler warnings except for idecode.o, semantics.o and psim.o],
639[case "${enableval}" in
640  yes)	sim_warnings="-Werror -Wall -Wpointer-arith -Wmissing-prototypes -Wmissing-declarations ";;
641  no)	sim_warnings="-w";;
642  *)	sim_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
643esac
644if test x"$silent" != x"yes" && test x"$sim_warnings" != x""; then
645  echo "Setting warning flags = $sim_warnings" 6>&1
646fi],[sim_warnings=""])dnl
647
648
649AC_ARG_ENABLE(sim-xor-endian,
650[  --enable-sim-xor-endian=n		Specify number bytes involved in PowerPC XOR bi-endian mode (default 8).],
651[case "${enableval}" in
652  yes)	sim_xor_endian="-DWITH_XOR_ENDIAN=8";;
653  no)	sim_xor_endian="-DWITH_XOR_ENDIAN=0";;
654  *)	sim_xor_endian="-DWITH_XOR_ENDIAN=$enableval";;
655esac
656if test x"$silent" != x"yes" && test x"$sim_xor_endian" != x""; then
657  echo "Setting xor-endian flag = $sim_xor_endian" 6>&1
658fi],[sim_xor_endian=""])dnl
659
660
661ACX_PKGVERSION([GDB])
662ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
663AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
664AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
665
666AC_CANONICAL_SYSTEM
667AC_ARG_PROGRAM
668
669# BFD conditionally uses zlib, so we must link it in if libbfd does, by
670# using the same condition.
671AM_ZLIB
672
673# BFD uses libdl when when plugins enabled.
674AC_PLUGINS
675
676. ${srcdir}/../../bfd/configure.host
677
678case ${host} in
679  *mingw32*)
680    AC_DEFINE(USE_WIN32API, 1,
681              [Define if we should use the Windows API, instead of the 
682	       POSIX API.  On Windows, we use the Windows API when 
683	       building for MinGW, but the POSIX API when building 
684	       for Cygwin.])
685    ;;
686esac	    
687
688AC_CONFIG_HEADER(config.h:config.in)
689
690AC_STRUCT_ST_BLKSIZE
691AC_STRUCT_ST_BLOCKS
692AC_STRUCT_ST_RDEV
693AC_STRUCT_TIMEZONE
694
695AC_TYPE_GETGROUPS
696AC_TYPE_MODE_T
697AC_TYPE_OFF_T
698AC_TYPE_PID_T
699AC_TYPE_SIGNAL
700AC_TYPE_SIZE_T
701AC_TYPE_UID_T
702
703AC_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)
704
705AC_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)
706AC_HEADER_DIRENT
707
708dnl Figure out what type of termio/termios support there is
709sim_termio=""
710AC_MSG_CHECKING(for struct termios)
711AC_CACHE_VAL(ac_cv_termios_struct,
712[AC_TRY_COMPILE([#include <sys/types.h>
713#include <sys/termios.h>],
714[static struct termios x;
715 x.c_iflag = 0;
716 x.c_oflag = 0;
717 x.c_cflag = 0;
718 x.c_lflag = 0;
719 x.c_cc[NCCS] = 0;],
720ac_cv_termios_struct=yes, ac_cv_termios_struct=no)])
721AC_MSG_RESULT($ac_cv_termios_struct)
722if test $ac_cv_termios_struct = yes; then
723  sim_termio="$sim_termio -DHAVE_TERMIOS_STRUCTURE"
724fi
725
726if test "$ac_cv_termios_struct" = "yes"; then
727  AC_MSG_CHECKING(for c_line field in struct termios)
728  AC_CACHE_VAL(ac_cv_termios_cline,
729  [AC_TRY_COMPILE([#include <sys/types.h>
730#include <sys/termios.h>],
731[static struct termios x; x.c_line = 0;],
732  ac_cv_termios_cline=yes, ac_cv_termios_cline=no)])
733
734  AC_MSG_RESULT($ac_cv_termios_cline)
735  if test $ac_cv_termios_cline = yes; then
736    sim_termio="$sim_termio -DHAVE_TERMIOS_CLINE"
737  fi
738else
739  ac_cv_termios_cline=no
740fi
741
742if test "$ac_cv_termios_struct" != "yes"; then
743  AC_MSG_CHECKING(for struct termio)
744  AC_CACHE_VAL(ac_cv_termio_struct,
745  [AC_TRY_COMPILE([#include <sys/types.h>
746#include <sys/termio.h>],
747[static struct termio x;
748 x.c_iflag = 0;
749 x.c_oflag = 0;
750 x.c_cflag = 0;
751 x.c_lflag = 0;
752 x.c_cc[NCC] = 0;],
753ac_cv_termio_struct=yes, ac_cv_termio_struct=no)])
754  AC_MSG_RESULT($ac_cv_termio_struct)
755  if test $ac_cv_termio_struct = yes; then
756    sim_termio="$sim_termio -DHAVE_TERMIO_STRUCTURE"
757  fi
758else
759  ac_cv_termio_struct=no
760fi
761
762if test "$ac_cv_termio_struct" = "yes"; then
763  AC_MSG_CHECKING(for c_line field in struct termio)
764  AC_CACHE_VAL(ac_cv_termio_cline,
765  [AC_TRY_COMPILE([#include <sys/types.h>
766#include <sys/termio.h>],
767[static struct termio x; x.c_line = 0;],
768  ac_cv_termio_cline=yes, ac_cv_termio_cline=no)])
769
770  AC_MSG_RESULT($ac_cv_termio_cline)
771  if test $ac_cv_termio_cline = yes; then
772    sim_termio="$sim_termio -DHAVE_TERMIO_CLINE"
773  fi
774else
775  ac_cv_termio_cline=no
776fi
777
778dnl Check for struct statfs
779AC_MSG_CHECKING(for struct statfs)
780AC_CACHE_VAL(ac_cv_struct_statfs,
781[AC_TRY_COMPILE([#include <sys/types.h>
782#ifdef HAVE_SYS_PARAM_H
783#include <sys/param.h>
784#endif
785#ifdef HAVE_SYS_MOUNT_H
786#include <sys/mount.h>
787#endif
788#ifdef HAVE_SYS_VFS_H
789#include <sys/vfs.h>
790#endif
791#ifdef HAVE_SYS_STATFS_H
792#include <sys/statfs.h>
793#endif],
794[static struct statfs s;],
795ac_cv_struct_statfs=yes, ac_cv_struct_statfs=no)])
796AC_MSG_RESULT($ac_cv_struct_statfs)
797if test $ac_cv_struct_statfs = yes; then
798  AC_DEFINE(HAVE_STRUCT_STATFS, 1,
799	    [Define if struct statfs is defined in <sys/mount.h>])
800fi
801
802AC_CHECK_TYPES(long long)
803
804dnl Figure out if /dev/zero exists or not
805sim_devzero=""
806AC_MSG_CHECKING(for /dev/zero)
807AC_CACHE_VAL(ac_cv_devzero,
808[AC_TRY_RUN([#include <fcntl.h>
809main () {
810  char buf[2048];
811  int i;
812  int fd = open ("/dev/zero", O_RDONLY);
813  if (fd < 0)
814    return 1;
815  for (i = 0; i < sizeof (buf); i++)
816    buf[i] = 1;
817  if (read (fd, buf, sizeof (buf)) != sizeof (buf))
818    return 1;
819  for (i = 0; i < sizeof (buf); i++)
820    if (buf[i])
821      return 1;
822  return 0;
823}],[ac_cv_devzero=yes],[ac_cv_devzero=no],[ac_cv_devzero=no])])
824AC_MSG_RESULT($ac_cv_devzero)
825if test $ac_cv_devzero = yes; then
826  sim_devzero="-DHAVE_DEVZERO"
827else
828  sim_devzero=""
829fi
830
831dnl Figure out if we are in the new Cygnus tree with a common directory or not
832AC_MSG_CHECKING(for common simulator directory)
833if test -f "${srcdir}/../common/callback.c"; then
834  AC_MSG_RESULT(yes)
835  sim_callback="callback.o targ-map.o"
836  sim_targ_vals="targ-vals.h targ-map.c targ-vals.def"
837else
838  AC_MSG_RESULT(no)
839  sim_callback=""
840  sim_targ_vals=""
841fi
842
843AC_MSG_CHECKING(for common simulator directory fpu implementation)
844if test -f "${srcdir}/../common/sim-fpu.c"; then
845  AC_MSG_RESULT(yes)
846  sim_fpu_cflags="-DHAVE_COMMON_FPU -I../common -I${srcdir}/../common"
847  sim_fpu="sim-fpu.o"
848else
849  AC_MSG_RESULT(no)
850  sim_fpu_cflags=
851  sim_fpu=
852fi
853
854# Since we run commands on the build system, we have to create a
855# separate config header for the build system if build != host.
856if test x$host = x$build; then
857  AC_CONFIG_COMMANDS([build-config.h],[cp config.h build-config.h])
858else
859  tempdir=build.$$
860  rm -rf $tempdir
861  mkdir $tempdir
862  cd $tempdir
863  case ${srcdir} in
864  /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
865  *) realsrcdir=../${srcdir};;
866  esac
867  saved_CFLAGS="${CFLAGS}"
868  CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
869  LDFLAGS="${LDFLAGS_FOR_BUILD}" \
870  ${realsrcdir}/configure \
871    --enable-languages=${enable_languages-all} \
872    --target=$target_alias --host=$build_alias --build=$build_alias
873  CFLAGS="${saved_CFLAGS}"
874  mv config.h ../build-config.h
875  cd ..
876  rm -rf $tempdir
877fi
878
879dnl Check for exe extension
880AC_EXEEXT
881
882AC_SUBST(CC_FOR_BUILD)
883AC_SUBST(CFLAGS_FOR_BUILD)
884AC_SUBST(CFLAGS)
885AC_SUBST(HDEFINES)
886AR=${AR-ar}
887AC_SUBST(AR)
888AC_PROG_RANLIB
889AC_SUBST(sim_cflags)
890AC_SUBST(sim_warnings)
891AC_SUBST(sim_line_nr)
892AC_SUBST(sim_config)
893AC_SUBST(sim_opcode)
894AC_SUBST(sim_switch)
895AC_SUBST(sim_dup)
896AC_SUBST(sim_decode_mechanism)
897AC_SUBST(sim_jump)
898AC_SUBST(sim_filter)
899AC_SUBST(sim_icache)
900AC_SUBST(sim_hw_src)
901AC_SUBST(sim_hw_obj)
902AC_SUBST(sim_pk_src)
903AC_SUBST(sim_pk_obj)
904AC_SUBST(sim_inline)
905AC_SUBST(sim_bswap)
906AC_SUBST(sim_endian)
907AC_SUBST(sim_regparm)
908AC_SUBST(sim_stdcall)
909AC_SUBST(sim_xor_endian)
910AC_SUBST(sim_hostendian)
911AC_SUBST(sim_smp)
912AC_SUBST(sim_igen_smp)
913AC_SUBST(sim_bitsize)
914AC_SUBST(sim_hostbitsize)
915AC_SUBST(sim_env)
916AC_SUBST(sim_timebase)
917AC_SUBST(sim_alignment)
918AC_SUBST(sim_float)
919AC_SUBST(sim_trace)
920AC_SUBST(sim_assert)
921AC_SUBST(sim_reserved)
922AC_SUBST(sim_monitor)
923AC_SUBST(sim_model)
924AC_SUBST(sim_default_model)
925AC_SUBST(sim_model_issue)
926AC_SUBST(sim_stdio)
927AC_SUBST(sim_termio)
928AC_SUBST(sim_devzero)
929AC_SUBST(sim_callback)
930AC_SUBST(sim_targ_vals)
931AC_SUBST(sim_fpu_cflags)
932AC_SUBST(sim_fpu)
933
934AC_OUTPUT(Makefile,
935[case x$CONFIG_HEADERS in xconfig.h:config.in) echo > stamp-h ;; esac])
936