configure.ac revision 1.6
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_MSG_CHECKING([whether to enable sim asserts])
37sim_assert="1"
38AC_ARG_ENABLE(sim-assert,
39[  --enable-sim-assert			Specify whether to perform random assertions.],
40[case "${enableval}" in
41  yes)	sim_assert="1";;
42  no)	sim_assert="0";;
43  *)	AC_MSG_ERROR([--enable-sim-assert does not take a value]);;
44esac])dnl
45AC_DEFINE_UNQUOTED([WITH_ASSERT], [$sim_assert], [Sim assert settings])
46AC_MSG_RESULT($sim_assert)
47
48
49AC_ARG_ENABLE(sim-bitsize,
50[  --enable-sim-bitsize=n		Specify target bitsize (32 or 64).],
51[case "${enableval}" in
52  32|64) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=$enableval";;
53  *)	 AC_MSG_ERROR("--enable-sim-bitsize was given $enableval.  Expected 32 or 64"); sim_bitsize="";;
54esac
55if test x"$silent" != x"yes" && test x"$sim_bitsize" != x""; then
56  echo "Setting bitsize flags = $sim_bitsize" 6>&1
57fi],[sim_bitsize=""])dnl
58
59
60AC_ARG_ENABLE(sim-config,
61[  --enable-sim-config=file		Override default config file],
62[case "${enableval}" in
63  yes|no)	AC_MSG_ERROR("No value supplied for --enable-sim-config=file");;
64  *)		if test -f "${srcdir}/${enableval}"; then
65		  sim_config="${enableval}";
66		elif test -f "${srcdir}/${enableval}-config.h"; then
67		  sim_config="${enableval}-config.h"
68		else
69		  AC_MSG_ERROR("Config file $enableval was not found");
70		  sim_config=std-config.h
71		fi;;
72esac
73if test x"$silent" != x"yes" && test x"$sim_config" != x""; then
74  echo "Setting config flags = $sim_config" 6>&1
75fi],[sim_config="std-config.h"
76if test x"$silent" != x"yes"; then
77  echo "Setting config flags = $sim_config" 6>&1
78fi])dnl
79
80
81AC_ARG_ENABLE(sim-decode-mechanism,
82[  --enable-sim-decode-mechanism=which		Specify the instruction decode mechanism.],
83[case "${enableval}" in
84  yes|no)	AC_MSG_ERROR("No value supplied for --enable-sim-decode-mechanism=file");;
85  array|switch|padded-switch|goto-switch)	sim_decode_mechanism="-T ${enableval}";;
86  *)		AC_MSG_ERROR("File $enableval is not an opcode rules file");
87		sim_decode_mechanism="switch";;
88esac
89if test x"$silent" != x"yes" && test x"$sim_decode_mechanism" != x""; then
90  echo "Setting decode mechanism flags = $sim_decode_mechanism" 6>&1
91fi],[sim_decode_mechanism=""
92if test x"$silent" != x"yes"; then
93  echo "Setting decode mechanism flags = $sim_decode_mechanism"
94fi])dnl
95
96
97AC_ARG_ENABLE(sim-default-model,
98[  --enable-sim-default-model=which	Specify default PowerPC to model.],
99[case "${enableval}" in
100  yes|no)	AC_MSG_ERROR("No value supplied for --enable-sim-default-model=model");;
101  *)		sim_default_model="-DWITH_DEFAULT_MODEL=${enableval}";;
102esac
103if test x"$silent" != x"yes" && test x"$sim_default_model" != x""; then
104  echo "Setting default-model flags = $sim_default_model" 6>&1
105fi],[sim_default_model=""])dnl
106
107
108AC_ARG_ENABLE(sim-duplicate,
109[  --enable-sim-duplicate		Expand (duplicate) semantic functions.],
110[case "${enableval}" in
111  yes)	sim_dup="-E";;
112  no)	sim_dup="";;
113  *)	AC_MSG_ERROR("--enable-sim-duplicate does not take a value"); sim_dup="";;
114esac
115if test x"$silent" != x"yes" && test x"$sim_dup" != x""; then
116  echo "Setting duplicate flags = $sim_dup" 6>&1
117fi],[sim_dup="-E"
118if test x"$silent" != x"yes"; then
119  echo "Setting duplicate flags = $sim_dup" 6>&1
120fi])dnl
121
122
123AC_ARG_ENABLE(sim-endian,
124[  --enable-sim-endian=endian		Specify target byte endian orientation.],
125[case "${enableval}" in
126  yes)	case "$target" in
127	  *powerpc-*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BIG_ENDIAN";;
128	  *powerpcle-*) sim_endian="-DWITH_TARGET_BYTE_ORDER=LITTLE_ENDIAN";;
129	  *) echo "Unknown target $target" 1>&6; sim_endian="-DWITH_TARGET_BYTE_ORDER=0";;
130	esac;;
131  no)	 sim_endian="-DWITH_TARGET_BYTE_ORDER=0";;
132  b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BIG_ENDIAN";;
133  l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=LITTLE_ENDIAN";;
134  *)	 AC_MSG_ERROR("Unknown value $enableval for --enable-sim-endian"); sim_endian="";;
135esac
136if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
137  echo "Setting endian flags = $sim_endian" 6>&1
138fi],[sim_endian=""])dnl
139
140
141AC_MSG_CHECKING([default sim environment setting])
142sim_env="0"
143AC_ARG_ENABLE(sim-env,
144[  --enable-sim-env=env			Specify target environment (operating, virtual, user).],
145[case "${enableval}" in
146  operating | os | oea)	sim_env="OPERATING_ENVIRONMENT";;
147  virtual | vea)	sim_env="VIRTUAL_ENVIRONMENT";;
148  user | uea)		sim_env="USER_ENVIRONMENT";;
149  no)			sim_env="0";;
150  *)			AC_MSG_ERROR([Unknown value $enableval passed to --enable-sim-env]);;
151esac])dnl
152AC_DEFINE_UNQUOTED([WITH_ENVIRONMENT], [$sim_env], [Sim default environment])
153AC_MSG_RESULT($sim_env)
154
155
156AC_ARG_ENABLE(sim-filter,
157[  --enable-sim-filter=rule		Specify filter rules.],
158[case "${enableval}" in
159  yes)	AC_MSG_ERROR("--enable-sim-filter must be specified with a rule to filter or no"); sim_filter="";;
160  no)	sim_filter="";;
161  *)	sim_filter="-F $enableval";;
162esac
163if test x"$silent" != x"yes" && test x"$sim_filter" != x""; then
164  echo "Setting filter flags = $sim_filter" 6>&1
165fi],[sim_filter="-F 32,f,o"
166if test x"$silent" != x"yes"; then
167  echo "Setting filter flags = $sim_filter" 6>&1
168fi])dnl
169
170
171AC_ARG_ENABLE(sim-float,
172[  --enable-sim-float			Specify whether the target has hard, soft, altivec or e500 floating point.],
173[case "${enableval}" in
174  yes | hard)	sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT";;
175  no | soft)	sim_float="-DWITH_FLOATING_POINT=SOFT_FLOATING_POINT";;
176  altivec)      sim_float="-DWITH_ALTIVEC" ; sim_filter="${sim_filter},av" ;;
177  *spe*|*simd*) sim_float="-DWITH_E500" ; sim_filter="${sim_filter},e500" ;;
178  *)		AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-float"); sim_float="";;
179esac
180if test x"$silent" != x"yes" && test x"$sim_float" != x""; then
181  echo "Setting float flags = $sim_float" 6>&1
182fi],[
183case "${target}" in
184  *altivec*) sim_float="-DWITH_ALTIVEC" ; sim_filter="${sim_filter},av" ;;
185  *spe*|*simd*)	sim_float="-DWITH_E500" ; sim_filter="${sim_filter},e500" ;;
186  *) sim_float=""
187esac
188])dnl
189
190AC_CACHE_CHECK([if union semun defined],
191  ac_cv_HAS_UNION_SEMUN,
192  [AC_TRY_COMPILE([
193#include <sys/types.h>
194#include <sys/ipc.h>
195#include <sys/sem.h>],
196[union semun arg ;],
197[ac_cv_has_union_semun="yes"],
198[ac_cv_has_union_semun="no"])
199AC_MSG_RESULT($ac_cv_has_union_semun)
200])
201
202
203if test "$ac_cv_has_union_semun" = "yes"; then
204  AC_CACHE_CHECK(whether System V semaphores are supported,
205  ac_cv_sysv_sem,
206  [
207  AC_TRY_RUN(
208  [
209  #include <sys/types.h>
210  #include <sys/ipc.h>
211  #include <sys/sem.h>
212  int main () {
213    union semun arg ;
214
215    int id=semget(IPC_PRIVATE,1,IPC_CREAT|0400);
216    if (id == -1)
217      exit(1);
218    arg.val = 0; /* avoid implicit type cast to union */
219    if (semctl(id, 0, IPC_RMID, arg) == -1)
220      exit(1);
221    exit(0);
222  }
223  ],
224  ac_cv_sysv_sem="yes", ac_cv_sysv_sem="no", :)
225  ])
226else  # semun is not defined
227  AC_CACHE_CHECK(whether System V semaphores are supported,
228  ac_cv_sysv_sem,
229  [
230  AC_TRY_RUN(
231  [
232  #include <sys/types.h>
233  #include <sys/ipc.h>
234  #include <sys/sem.h>
235  union semun {
236    int val;
237    struct semid_ds *buf;
238    ushort *array;
239  };
240  int main () {
241    union semun arg ;
242
243    int id=semget(IPC_PRIVATE,1,IPC_CREAT|0400);
244    if (id == -1)
245      exit(1);
246    arg.val = 0; /* avoid implicit type cast to union */
247    if (semctl(id, 0, IPC_RMID, arg) == -1)
248      exit(1);
249    exit(0);
250  }
251  ],
252  ac_cv_sysv_sem="yes", ac_cv_sysv_sem="no", :)
253  ])
254fi
255
256AC_CACHE_CHECK(whether System V shared memory is supported,
257ac_cv_sysv_shm,
258[
259AC_TRY_RUN([
260#include <sys/types.h>
261#include <sys/ipc.h>
262#include <sys/shm.h>
263int main () {
264  int id=shmget(IPC_PRIVATE,1,IPC_CREAT|0400);
265  if (id == -1)
266    exit(1);
267  if (shmctl(id, IPC_RMID, 0) == -1)
268    exit(1);
269  exit(0);
270}
271],
272ac_cv_sysv_shm="yes", ac_cv_sysv_shm="no", :)
273])
274
275if test x"$ac_cv_sysv_shm" = x"yes" -a x"$ac_cv_sysv_sem" = x"yes" ; then
276  sim_sysv_ipc_hw=",sem,shm";
277else
278  sim_sysv_ipc_hw="";
279fi
280
281if test x"$ac_cv_has_union_semun" = x"yes" -a x"$ac_cv_sysv_sem" = x"yes" ; then
282  AC_DEFINE(HAVE_UNION_SEMUN, 1,
283	    [Define if union semun is defined in <sys/sem.h>])
284fi
285
286
287AC_ARG_ENABLE(sim-hardware,
288[  --enable-sim-hardware=list		Specify the hardware to be included in the build.],
289[hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal,com,eeprom,opic,glue,phb,ide${sim_sysv_ipc_hw}"
290case "${enableval}" in
291  yes)	;;
292  no)	AC_MSG_ERROR("List of hardware must be specified for --enable-sim-hardware"); hardware="";;
293  ,*)   hardware="${hardware}${enableval}";;
294  *,)   hardware="${enableval}${hardware}";;
295  *)	hardware="${enableval}"'';;
296esac
297sim_hw_src=`echo $hardware | sed -e 's/,/.c hw_/g' -e 's/^/hw_/' -e s'/$/.c/'`
298sim_hw_obj=`echo $sim_hw_src | sed -e 's/\.c/.o/g'`
299if test x"$silent" != x"yes" && test x"$hardware" != x""; then
300  echo "Setting hardware to $sim_hw_src, $sim_hw_obj"
301fi],[hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal,com,eeprom,opic,glue,phb,ide${sim_sysv_ipc_hw}"
302sim_hw_src=`echo $hardware | sed -e 's/,/.c hw_/g' -e 's/^/hw_/' -e s'/$/.c/'`
303sim_hw_obj=`echo $sim_hw_src | sed -e 's/\.c/.o/g'`
304if test x"$silent" != x"yes"; then
305  echo "Setting hardware to $sim_hw_src, $sim_hw_obj"
306fi])dnl
307
308AC_ARG_ENABLE(sim-hostbitsize,
309[  --enable-sim-hostbitsize=32|64	Specify host bitsize (32 or 64).],
310[case "${enableval}" in
311  32|64) sim_hostbitsize="-DWITH_HOST_WORD_BITSIZE=$enableval";;
312  *)	 AC_MSG_ERROR("--enable-sim-hostbitsize was given $enableval.  Expected 32 or 64"); sim_hostbitsize="";;
313esac
314if test x"$silent" != x"yes" && test x"$sim_hostbitsize" != x""; then
315  echo "Setting hostbitsize flags = $sim_hostbitsize" 6>&1
316fi],[sim_hostbitsize=""])dnl
317
318
319AC_ARG_ENABLE(sim-hostendian,
320[  --enable-sim-hostendian=end		Specify host byte endian orientation.],
321[case "${enableval}" in
322  no)	 sim_hostendian="-DWITH_HOST_BYTE_ORDER=0";;
323  b*|B*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN";;
324  l*|L*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN";;
325  *)	 AC_MSG_ERROR("Unknown value $enableval for --enable-sim-hostendian"); sim_hostendian="";;
326esac
327if test x"$silent" != x"yes" && test x"$sim_hostendian" != x""; then
328  echo "Setting hostendian flags = $sim_hostendian" 6>&1
329fi],[
330if test "x$cross_compiling" = "xno"; then
331  AC_C_BIGENDIAN
332  if test $ac_cv_c_bigendian = yes; then
333    sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN"
334  else
335    sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN"
336  fi
337else
338  sim_hostendian="-DWITH_HOST_BYTE_ORDER=0"
339fi])dnl
340
341
342AC_ARG_ENABLE(sim-icache,
343[  --enable-sim-icache=size		Specify instruction-decode cache size and type.],
344[icache="-R"
345 case "${enableval}" in
346  yes)		icache="1024"; sim_icache="-I $icache";;
347  no)		sim_icache="-R";;
348  *) icache=1024
349     sim_icache="-"
350     for x in `echo "${enableval}" | sed -e "s/,/ /g"`; do
351       case "$x" in
352         define)	sim_icache="${sim_icache}R";;
353         semantic)	sim_icache="${sim_icache}C";;
354	 insn)		sim_icache="${sim_icache}S";;
355	 0*|1*|2*|3*|4*|5*|6*|7*|8*|9*)	icache=$x;;
356         *)		AC_MSG_ERROR("Unknown value $x for --enable-sim-icache"); sim_icache="";;
357       esac
358     done
359     sim_icache="${sim_icache}I $icache";;
360esac
361if test x"$silent" != x"yes" && test x"$icache" != x""; then
362  echo "Setting instruction cache size to $icache ($sim_icache)"
363fi],[sim_icache="-CSRI 1024"
364if test x"$silent" != x"yes"; then
365  echo "Setting instruction cache size to 1024 ($sim_icache)"
366fi])dnl
367
368
369AC_ARG_ENABLE(sim-inline,
370[  --enable-sim-inline=inlines		Specify which functions should be inlined.],
371[sim_inline=""
372case "$enableval" in
373  no)		sim_inline="-DDEFAULT_INLINE=0";;
374  0)		sim_inline="-DDEFAULT_INLINE=0";;
375  yes | 2)	sim_inline="-DDEFAULT_INLINE=ALL_INLINE";;
376  1)		sim_inline="-DDEFAULT_INLINE=PSIM_INLINE_LOCALS";;
377  *) for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
378       new_flag=""
379       case "$x" in
380	 *_INLINE=*)	new_flag="-D$x";;
381	 *=*)		new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
382	 *_INLINE)	new_flag="-D$x=ALL_INLINE";;
383	 *)		new_flag="-D$x""_INLINE=ALL_INLINE";;
384       esac
385       if test x"$sim_inline" = x""; then
386	 sim_inline="$new_flag"
387       else
388	 sim_inline="$sim_inline $new_flag"
389       fi
390     done;;
391esac
392if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
393  echo "Setting inline flags = $sim_inline" 6>&1
394fi],[if test x"$GCC" != ""; then
395  sim_inline="-DDEFAULT_INLINE=PSIM_INLINE_LOCALS"
396  if test x"$silent" != x"yes"; then
397    echo "Setting inline flags = $sim_inline" 6>&1
398  fi
399else
400  sim_inline=""
401fi])dnl
402
403
404AC_ARG_ENABLE(sim-jump,
405[  --enable-sim-jump		Jump between semantic code (instead of call/return).],
406[case "${enableval}" in
407  yes)	sim_jump="-J";;
408  no)	sim_jump="";;
409  *)	AC_MSG_ERROR("--enable-sim-jump does not take a value"); sim_jump="";;
410esac
411if test x"$silent" != x"yes" && test x"$sim_jump" != x""; then
412  echo "Setting jump flag = $sim_jump" 6>&1
413fi],[sim_jump=""
414if test x"$silent" != x"yes"; then
415  echo "Setting jump flag = $sim_jump" 6>&1
416fi])dnl
417
418
419AC_ARG_ENABLE(sim-line-nr,
420[  --enable-sim-line-nr=opts		Generate extra CPP code that references source rather than generated code],
421[case "${enableval}" in
422  yes)	sim_line_nr="";;
423  no)	sim_line_nr="-L";;
424  *)	AC_MSG_ERROR("--enable-sim-line-nr does not take a value"); sim_line_nr="";;
425esac
426if test x"$silent" != x"yes" && test x"$sim_line_nr" != x""; then
427  echo "Setting warning flags = $sim_line_nr" 6>&1
428fi],[sim_line_nr=""])dnl
429
430
431AC_ARG_ENABLE(sim-model,
432[  --enable-sim-model=which		Specify PowerPC to model.],
433[case "${enableval}" in
434  yes|no)	AC_MSG_ERROR("No value supplied for --enable-sim-model=model");;
435  *)		sim_model="-DWITH_MODEL=${enableval}";;
436esac
437if test x"$silent" != x"yes" && test x"$sim_model" != x""; then
438  echo "Setting model flags = $sim_model" 6>&1
439fi],[sim_model=""])dnl
440
441
442AC_ARG_ENABLE(sim-model-issue,
443[  --enable-sim-model-issue		Specify whether to simulate model specific actions],
444[case "${enableval}" in
445  yes)	sim_model_issue="-DWITH_MODEL_ISSUE=MODEL_ISSUE_PROCESS";;
446  no)	sim_model_issue="-DWITH_MODEL_ISSUE=MODEL_ISSUE_IGNORE";;
447  *)	AC_MSG_ERROR("--enable-sim-model-issue does not take a value"); sim_model_issue="";;
448esac
449if test x"$silent" != x"yes"; then
450  echo "Setting model-issue flags = $sim_model_issue" 6>&1
451fi],[sim_model_issue=""])dnl
452
453
454AC_ARG_ENABLE(sim-monitor,
455[  --enable-sim-monitor=mon		Specify whether to enable monitoring events.],
456[case "${enableval}" in
457  yes)		sim_monitor="-DWITH_MON='MONITOR_INSTRUCTION_ISSUE | MONITOR_LOAD_STORE_UNIT'";;
458  no)		sim_monitor="-DWITH_MON=0";;
459  instruction)	sim_monitor="-DWITH_MON=MONITOR_INSTRUCTION_ISSUE";;
460  memory)	sim_monitor="-DWITH_MON=MONITOR_LOAD_STORE_UNIT";;
461  *)		AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-mon"); sim_env="";;
462esac
463if test x"$silent" != x"yes" && test x"$sim_monitor" != x""; then
464  echo "Setting monitor flags = $sim_monitor" 6>&1
465fi],[sim_monitor=""])dnl
466
467
468AC_ARG_ENABLE(sim-opcode,
469[  --enable-sim-opcode=which		Override default opcode lookup.],
470[case "${enableval}" in
471  yes|no)	AC_MSG_ERROR("No value supplied for --enable-sim-opcode=file");;
472  *)		if test -f "${srcdir}/${enableval}"; then
473		  sim_opcode="${enableval}"
474		elif test -f "${srcdir}/dc-${enableval}"; then
475		  sim_opcode="dc-${enableval}"
476		else
477		  AC_MSG_ERROR("File $enableval is not an opcode rules file");
478		  sim_opcode="dc-complex"
479		fi;;
480esac
481if test x"$silent" != x"yes" && test x"$sim_opcode" != x""; then
482  echo "Setting opcode flags = $sim_opcode" 6>&1
483fi],[sim_opcode="dc-complex"
484if test x"$silent" != x"yes"; then
485  echo "Setting opcode flags = $sim_opcode"
486fi])dnl
487
488
489AC_ARG_ENABLE(sim-packages,
490[  --enable-sim-packages=list		Specify the packages to be included in the build.],
491[packages=disklabel
492case "${enableval}" in
493  yes)	;;
494  no)	AC_MSG_ERROR("List of packages must be specified for --enable-sim-packages"); packages="";;
495  ,*)   packages="${packages}${enableval}";;
496  *,)   packages="${enableval}${packages}";;
497  *)	packages="${enableval}"'';;
498esac
499sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
500sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
501if test x"$silent" != x"yes" && test x"$packages" != x""; then
502  echo "Setting packages to $sim_pk_src, $sim_pk_obj"
503fi],[packages=disklabel
504sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
505sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
506if test x"$silent" != x"yes"; then
507  echo "Setting packages to $sim_pk_src, $sim_pk_obj"
508fi])dnl
509
510
511AC_ARG_ENABLE(sim-reserved-bits,
512[  --enable-sim-reserved-bits		Specify whether to check reserved bits in instruction.],
513[case "${enableval}" in
514  yes)	sim_reserved="-DWITH_RESERVED_BITS=1";;
515  no)	sim_reserved="-DWITH_RESERVED_BITS=0";;
516  *)	AC_MSG_ERROR("--enable-sim-reserved-bits does not take a value"); sim_reserved="";;
517esac
518if test x"$silent" != x"yes" && test x"$sim_reserved" != x""; then
519  echo "Setting reserved flags = $sim_reserved" 6>&1
520fi],[sim_reserved=""])dnl
521
522
523AC_ARG_ENABLE(sim-smp,
524[  --enable-sim-smp=n			Specify number of processors to configure for.],
525[case "${enableval}" in
526  yes)	sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5";;
527  no)	sim_smp="-DWITH_SMP=0" ; sim_igen_smp="-N 0";;
528  *)	sim_smp="-DWITH_SMP=$enableval" ; sim_igen_smp="-N $enableval";;
529esac
530if test x"$silent" != x"yes" && test x"$sim_smp" != x""; then
531  echo "Setting smp flags = $sim_smp" 6>&1
532fi],[sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5"
533if test x"$silent" != x"yes"; then
534  echo "Setting smp flags = $sim_smp" 6>&1
535fi])dnl
536
537
538AC_MSG_CHECKING([for sim stdio debug behavior])
539sim_stdio=0
540AC_ARG_ENABLE(sim-stdio,
541[  --enable-sim-stdio			Specify whether to use stdio for console input/output.],
542[case "${enableval}" in
543  yes)	sim_stdio="DO_USE_STDIO";;
544  no)	sim_stdio="DONT_USE_STDIO";;
545  *)	AC_MSG_ERROR([Unknown value $enableval passed to --enable-sim-stdio]);;
546esac])dnl
547AC_DEFINE_UNQUOTED([WITH_STDIO], [$sim_stdio], [How to route I/O])
548AC_MSG_RESULT($sim_stdio)
549
550
551AC_ARG_ENABLE(sim-switch,
552[  --enable-sim-switch			Use a switch instead of a table for instruction call.],
553[case "${enableval}" in
554  yes)	sim_switch="-s";;
555  no)	sim_switch="";;
556  *)	AC_MSG_ERROR("--enable-sim-switch does not take a value"); sim_switch="";;
557esac
558if test x"$silent" != x"yes" && test x"$sim_switch" != x""; then
559  echo "Setting switch flags = $sim_switch" 6>&1
560fi],[sim_switch="";
561if test x"$silent" != x"yes"; then
562  echo "Setting switch flags = $sim_switch" 6>&1
563fi])dnl
564
565
566AC_ARG_ENABLE(sim-timebase,
567[  --enable-sim-timebase			Specify whether the PPC timebase is supported.],
568[case "${enableval}" in
569  yes)	sim_timebase="-DWITH_TIME_BASE=1";;
570  no)	sim_timebase="-DWITH_TIME_BASE=0";;
571  *)	AC_MSG_ERROR("--enable-sim-timebase does not take a value"); sim_timebase="";;
572esac
573if test x"$silent" != x"yes" && test x"$sim_timebase" != x""; then
574  echo "Setting timebase flags = $sim_timebase" 6>&1
575fi],[sim_timebase=""])dnl
576
577
578AC_MSG_CHECKING([for sim trace settings])
579sim_trace="1"
580AC_ARG_ENABLE(sim-trace,
581[  --enable-sim-trace			Specify whether tracing is supported.],
582[case "${enableval}" in
583  yes)	sim_trace="1";;
584  no)	sim_trace="0";;
585  *)	AC_MSG_ERROR([--enable-sim-trace does not take a value]);;
586esac])dnl
587AC_DEFINE_UNQUOTED([WITH_TRACE], [$sim_trace], [Sim trace settings])
588AC_MSG_RESULT($sim_trace)
589
590
591AC_ARG_ENABLE(sim-warnings,
592[  --enable-sim-warnings=opts		Extra CFLAGS for turning on compiler warnings except for idecode.o, semantics.o and psim.o],
593[case "${enableval}" in
594  yes)	sim_warnings="-Werror -Wall -Wpointer-arith -Wmissing-prototypes -Wmissing-declarations ";;
595  no)	sim_warnings="-w";;
596  *)	sim_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
597esac
598if test x"$silent" != x"yes" && test x"$sim_warnings" != x""; then
599  echo "Setting warning flags = $sim_warnings" 6>&1
600fi],[sim_warnings=""])dnl
601
602
603AC_ARG_ENABLE(sim-xor-endian,
604[  --enable-sim-xor-endian=n		Specify number bytes involved in PowerPC XOR bi-endian mode (default 8).],
605[case "${enableval}" in
606  yes)	sim_xor_endian="-DWITH_XOR_ENDIAN=8";;
607  no)	sim_xor_endian="-DWITH_XOR_ENDIAN=0";;
608  *)	sim_xor_endian="-DWITH_XOR_ENDIAN=$enableval";;
609esac
610if test x"$silent" != x"yes" && test x"$sim_xor_endian" != x""; then
611  echo "Setting xor-endian flag = $sim_xor_endian" 6>&1
612fi],[sim_xor_endian=""])dnl
613
614
615ACX_PKGVERSION([GDB])
616ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
617AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
618AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
619
620AC_CANONICAL_SYSTEM
621AC_ARG_PROGRAM
622
623# BFD conditionally uses zlib, so we must link it in if libbfd does, by
624# using the same condition.
625AM_ZLIB
626
627# BFD uses libdl when when plugins enabled.
628AC_PLUGINS
629
630. ${srcdir}/../../bfd/configure.host
631
632case ${host} in
633  *mingw32*)
634    AC_DEFINE(USE_WIN32API, 1,
635              [Define if we should use the Windows API, instead of the 
636	       POSIX API.  On Windows, we use the Windows API when 
637	       building for MinGW, but the POSIX API when building 
638	       for Cygwin.])
639    ;;
640esac	    
641
642AC_CONFIG_HEADER(config.h:config.in)
643
644AC_STRUCT_ST_BLKSIZE
645AC_STRUCT_ST_BLOCKS
646AC_STRUCT_ST_RDEV
647AC_STRUCT_TIMEZONE
648
649AC_TYPE_GETGROUPS
650AC_TYPE_MODE_T
651AC_TYPE_OFF_T
652AC_TYPE_PID_T
653AC_TYPE_SIGNAL
654AC_TYPE_SIZE_T
655AC_TYPE_UID_T
656
657AC_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)
658
659AC_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)
660AC_HEADER_DIRENT
661
662dnl Figure out what type of termio/termios support there is
663sim_termio=""
664AC_MSG_CHECKING(for struct termios)
665AC_CACHE_VAL(ac_cv_termios_struct,
666[AC_TRY_COMPILE([#include <sys/types.h>
667#include <sys/termios.h>],
668[static struct termios x;
669 x.c_iflag = 0;
670 x.c_oflag = 0;
671 x.c_cflag = 0;
672 x.c_lflag = 0;
673 x.c_cc[NCCS] = 0;],
674ac_cv_termios_struct=yes, ac_cv_termios_struct=no)])
675AC_MSG_RESULT($ac_cv_termios_struct)
676if test $ac_cv_termios_struct = yes; then
677  sim_termio="$sim_termio -DHAVE_TERMIOS_STRUCTURE"
678fi
679
680if test "$ac_cv_termios_struct" = "yes"; then
681  AC_MSG_CHECKING(for c_line field in struct termios)
682  AC_CACHE_VAL(ac_cv_termios_cline,
683  [AC_TRY_COMPILE([#include <sys/types.h>
684#include <sys/termios.h>],
685[static struct termios x; x.c_line = 0;],
686  ac_cv_termios_cline=yes, ac_cv_termios_cline=no)])
687
688  AC_MSG_RESULT($ac_cv_termios_cline)
689  if test $ac_cv_termios_cline = yes; then
690    sim_termio="$sim_termio -DHAVE_TERMIOS_CLINE"
691  fi
692else
693  ac_cv_termios_cline=no
694fi
695
696if test "$ac_cv_termios_struct" != "yes"; then
697  AC_MSG_CHECKING(for struct termio)
698  AC_CACHE_VAL(ac_cv_termio_struct,
699  [AC_TRY_COMPILE([#include <sys/types.h>
700#include <sys/termio.h>],
701[static struct termio x;
702 x.c_iflag = 0;
703 x.c_oflag = 0;
704 x.c_cflag = 0;
705 x.c_lflag = 0;
706 x.c_cc[NCC] = 0;],
707ac_cv_termio_struct=yes, ac_cv_termio_struct=no)])
708  AC_MSG_RESULT($ac_cv_termio_struct)
709  if test $ac_cv_termio_struct = yes; then
710    sim_termio="$sim_termio -DHAVE_TERMIO_STRUCTURE"
711  fi
712else
713  ac_cv_termio_struct=no
714fi
715
716if test "$ac_cv_termio_struct" = "yes"; then
717  AC_MSG_CHECKING(for c_line field in struct termio)
718  AC_CACHE_VAL(ac_cv_termio_cline,
719  [AC_TRY_COMPILE([#include <sys/types.h>
720#include <sys/termio.h>],
721[static struct termio x; x.c_line = 0;],
722  ac_cv_termio_cline=yes, ac_cv_termio_cline=no)])
723
724  AC_MSG_RESULT($ac_cv_termio_cline)
725  if test $ac_cv_termio_cline = yes; then
726    sim_termio="$sim_termio -DHAVE_TERMIO_CLINE"
727  fi
728else
729  ac_cv_termio_cline=no
730fi
731
732dnl Check for struct statfs
733AC_MSG_CHECKING(for struct statfs)
734AC_CACHE_VAL(ac_cv_struct_statfs,
735[AC_TRY_COMPILE([#include <sys/types.h>
736#ifdef HAVE_SYS_PARAM_H
737#include <sys/param.h>
738#endif
739#ifdef HAVE_SYS_MOUNT_H
740#include <sys/mount.h>
741#endif
742#ifdef HAVE_SYS_VFS_H
743#include <sys/vfs.h>
744#endif
745#ifdef HAVE_SYS_STATFS_H
746#include <sys/statfs.h>
747#endif],
748[static struct statfs s;],
749ac_cv_struct_statfs=yes, ac_cv_struct_statfs=no)])
750AC_MSG_RESULT($ac_cv_struct_statfs)
751if test $ac_cv_struct_statfs = yes; then
752  AC_DEFINE(HAVE_STRUCT_STATFS, 1,
753	    [Define if struct statfs is defined in <sys/mount.h>])
754fi
755
756AC_CHECK_TYPES(long long)
757
758dnl Figure out if /dev/zero exists or not
759sim_devzero=""
760AC_MSG_CHECKING(for /dev/zero)
761AC_CACHE_VAL(ac_cv_devzero,
762[AC_TRY_RUN([#include <fcntl.h>
763main () {
764  char buf[2048];
765  int i;
766  int fd = open ("/dev/zero", O_RDONLY);
767  if (fd < 0)
768    return 1;
769  for (i = 0; i < sizeof (buf); i++)
770    buf[i] = 1;
771  if (read (fd, buf, sizeof (buf)) != sizeof (buf))
772    return 1;
773  for (i = 0; i < sizeof (buf); i++)
774    if (buf[i])
775      return 1;
776  return 0;
777}],[ac_cv_devzero=yes],[ac_cv_devzero=no],[ac_cv_devzero=no])])
778AC_MSG_RESULT($ac_cv_devzero)
779if test $ac_cv_devzero = yes; then
780  sim_devzero="-DHAVE_DEVZERO"
781else
782  sim_devzero=""
783fi
784
785dnl Figure out if we are in the new Cygnus tree with a common directory or not
786AC_MSG_CHECKING(for common simulator directory)
787if test -f "${srcdir}/../common/callback.c"; then
788  AC_MSG_RESULT(yes)
789  sim_callback="callback.o targ-map.o"
790  sim_targ_vals="targ-vals.h targ-map.c targ-vals.def"
791else
792  AC_MSG_RESULT(no)
793  sim_callback=""
794  sim_targ_vals=""
795fi
796
797AC_MSG_CHECKING(for common simulator directory fpu implementation)
798if test -f "${srcdir}/../common/sim-fpu.c"; then
799  AC_MSG_RESULT(yes)
800  sim_fpu_cflags="-DHAVE_COMMON_FPU -I../common -I${srcdir}/../common"
801  sim_fpu="sim-fpu.o"
802else
803  AC_MSG_RESULT(no)
804  sim_fpu_cflags=
805  sim_fpu=
806fi
807
808# Since we run commands on the build system, we have to create a
809# separate config header for the build system if build != host.
810if test x$host = x$build; then
811  AC_CONFIG_COMMANDS([build-config.h],[cp config.h build-config.h])
812else
813  tempdir=build.$$
814  rm -rf $tempdir
815  mkdir $tempdir
816  cd $tempdir
817  case ${srcdir} in
818  /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
819  *) realsrcdir=../${srcdir};;
820  esac
821  saved_CFLAGS="${CFLAGS}"
822  CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
823  LDFLAGS="${LDFLAGS_FOR_BUILD}" \
824  ${realsrcdir}/configure \
825    --enable-languages=${enable_languages-all} \
826    --target=$target_alias --host=$build_alias --build=$build_alias
827  CFLAGS="${saved_CFLAGS}"
828  mv config.h ../build-config.h
829  cd ..
830  rm -rf $tempdir
831fi
832
833dnl Check for exe extension
834AC_EXEEXT
835
836AC_SUBST(CC_FOR_BUILD)
837AC_SUBST(CFLAGS_FOR_BUILD)
838AC_SUBST(CFLAGS)
839AC_SUBST(HDEFINES)
840AR=${AR-ar}
841AC_SUBST(AR)
842AC_PROG_RANLIB
843AC_SUBST(sim_warnings)
844AC_SUBST(sim_line_nr)
845AC_SUBST(sim_config)
846AC_SUBST(sim_opcode)
847AC_SUBST(sim_switch)
848AC_SUBST(sim_dup)
849AC_SUBST(sim_decode_mechanism)
850AC_SUBST(sim_jump)
851AC_SUBST(sim_filter)
852AC_SUBST(sim_icache)
853AC_SUBST(sim_hw_src)
854AC_SUBST(sim_hw_obj)
855AC_SUBST(sim_pk_src)
856AC_SUBST(sim_pk_obj)
857AC_SUBST(sim_inline)
858AC_SUBST(sim_endian)
859AC_SUBST(sim_xor_endian)
860AC_SUBST(sim_hostendian)
861AC_SUBST(sim_smp)
862AC_SUBST(sim_igen_smp)
863AC_SUBST(sim_bitsize)
864AC_SUBST(sim_hostbitsize)
865AC_SUBST(sim_timebase)
866AC_SUBST(sim_alignment)
867AC_SUBST(sim_float)
868AC_SUBST(sim_reserved)
869AC_SUBST(sim_monitor)
870AC_SUBST(sim_model)
871AC_SUBST(sim_default_model)
872AC_SUBST(sim_model_issue)
873AC_SUBST(sim_termio)
874AC_SUBST(sim_devzero)
875AC_SUBST(sim_callback)
876AC_SUBST(sim_targ_vals)
877AC_SUBST(sim_fpu_cflags)
878AC_SUBST(sim_fpu)
879
880AC_OUTPUT(Makefile,
881[case x$CONFIG_HEADERS in xconfig.h:config.in) echo > stamp-h ;; esac])
882