2008-11-18 Joel Sherrill <joel.sherrill@oarcorp.com>
[external/binutils.git] / sim / ppc / configure.ac
1 dnl Process this file with autoconf to produce a configure script.
2 sinclude(../common/aclocal.m4)
3 AC_PREREQ(2.59)dnl
4 AC_INIT(Makefile.in)
5
6 AC_PROG_INSTALL
7 AC_PROG_CC
8
9 # Put a plausible default for CC_FOR_BUILD in Makefile.
10 if test "x$cross_compiling" = "xno"; then
11   CC_FOR_BUILD='$(CC)'
12 else
13   CC_FOR_BUILD=gcc
14 fi
15 CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
16
17 dnl We don't use gettext, but bfd does.  So we do the appropriate checks
18 dnl to see if there are intl libraries we should link against.
19 ALL_LINGUAS=
20 ZW_GNU_GETTEXT_SISTER_DIR(../../intl)
21
22
23 AC_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="";;
30 esac
31 if test x"$silent" != x"yes" && test x"$sim_alignment" != x""; then
32   echo "Setting alignment flags = $sim_alignment" 6>&1
33 fi],[sim_alignment=""])dnl
34
35
36 AC_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="";;
42 esac
43 if test x"$silent" != x"yes" && test x"$sim_assert" != x""; then
44   echo "Setting assert flags = $sim_assert" 6>&1
45 fi],[sim_assert=""])dnl
46
47
48 AC_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="";;
53 esac
54 if test x"$silent" != x"yes" && test x"$sim_bitsize" != x""; then
55   echo "Setting bitsize flags = $sim_bitsize" 6>&1
56 fi],[sim_bitsize=""])dnl
57
58
59 AC_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="";;
65 esac
66 if test x"$silent" != x"yes" && test x"$sim_bswap" != x""; then
67   echo "Setting bswap flags = $sim_bswap" 6>&1
68 fi],[sim_bswap=""])dnl
69
70
71 AC_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"`;;
77 esac
78 if test x"$silent" != x"yes" && test x"$sim_cflags" != x""; then
79   echo "Setting sim cflags = $sim_cflags" 6>&1
80 fi],[sim_cflags=""])dnl
81
82
83 AC_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;;
95 esac
96 if test x"$silent" != x"yes" && test x"$sim_config" != x""; then
97   echo "Setting config flags = $sim_config" 6>&1
98 fi],[sim_config="std-config.h"
99 if test x"$silent" != x"yes"; then
100   echo "Setting config flags = $sim_config" 6>&1
101 fi])dnl
102
103
104 AC_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";;
111 esac
112 if test x"$silent" != x"yes" && test x"$sim_decode_mechanism" != x""; then
113   echo "Setting decode mechanism flags = $sim_decode_mechanism" 6>&1
114 fi],[sim_decode_mechanism=""
115 if test x"$silent" != x"yes"; then
116   echo "Setting decode mechanism flags = $sim_decode_mechanism"
117 fi])dnl
118
119
120 AC_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}";;
125 esac
126 if test x"$silent" != x"yes" && test x"$sim_default_model" != x""; then
127   echo "Setting default-model flags = $sim_default_model" 6>&1
128 fi],[sim_default_model=""])dnl
129
130
131 AC_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="";;
137 esac
138 if test x"$silent" != x"yes" && test x"$sim_dup" != x""; then
139   echo "Setting duplicate flags = $sim_dup" 6>&1
140 fi],[sim_dup="-E"
141 if test x"$silent" != x"yes"; then
142   echo "Setting duplicate flags = $sim_dup" 6>&1
143 fi])dnl
144
145
146 AC_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="";;
158 esac
159 if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
160   echo "Setting endian flags = $sim_endian" 6>&1
161 fi],[sim_endian=""])dnl
162
163
164 AC_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="";;
172 esac
173 if test x"$silent" != x"yes" && test x"$sim_env" != x""; then
174   echo "Setting env flags = $sim_env" 6>&1
175 fi],[sim_env=""])dnl
176
177
178 AC_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";;
184 esac
185 if test x"$silent" != x"yes" && test x"$sim_filter" != x""; then
186   echo "Setting filter flags = $sim_filter" 6>&1
187 fi],[sim_filter="-F 32,f,o"
188 if test x"$silent" != x"yes"; then
189   echo "Setting filter flags = $sim_filter" 6>&1
190 fi])dnl
191
192
193 AC_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="";;
201 esac
202 if test x"$silent" != x"yes" && test x"$sim_float" != x""; then
203   echo "Setting float flags = $sim_float" 6>&1
204 fi],[
205 case "${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=""
209 esac
210 ])dnl
211
212 AC_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"])
221 AC_MSG_RESULT($ac_cv_has_union_semun)
222 ])
223
224
225 if 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   ])
248 else  # 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   ])
276 fi
277
278 AC_CACHE_CHECK(whether System V shared memory is supported,
279 ac_cv_sysv_shm,
280 [
281 AC_TRY_RUN([
282 #include <sys/types.h>
283 #include <sys/ipc.h>
284 #include <sys/shm.h>
285 int 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 ],
294 ac_cv_sysv_shm="yes", ac_cv_sysv_shm="no", :)
295 ])
296
297 if test x"$ac_cv_sysv_shm" = x"yes" -a x"$ac_cv_sysv_sem" = x"yes" ; then
298   sim_sysv_ipc_hw=",sem,shm";
299 else
300   sim_sysv_ipc_hw="";
301 fi
302
303 if test x"$ac_cv_has_union_semun" = x"yes" -a x"$ac_cv_sysv_sem" = x"yes" ; then
304   sim_hwflags="-DHAS_UNION_SEMUN";
305 fi
306
307
308 AC_ARG_ENABLE(sim-hardware,
309 [  --enable-sim-hardware=list           Specify the hardware to be included in the build.],
310 [hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal,com,eeprom,opic,glue,phb,ide${sim_sysv_ipc_hw}"
311 case "${enableval}" in
312   yes)  ;;
313   no)   AC_MSG_ERROR("List of hardware must be specified for --enable-sim-hardware"); hardware="";;
314   ,*)   hardware="${hardware}${enableval}";;
315   *,)   hardware="${enableval}${hardware}";;
316   *)    hardware="${enableval}"'';;
317 esac
318 sim_hw_src=`echo $hardware | sed -e 's/,/.c hw_/g' -e 's/^/hw_/' -e s'/$/.c/'`
319 sim_hw_obj=`echo $sim_hw_src | sed -e 's/\.c/.o/g'`
320 if test x"$silent" != x"yes" && test x"$hardware" != x""; then
321   echo "Setting hardware to $sim_hw_src, $sim_hw_obj"
322 fi],[hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal,com,eeprom,opic,glue,phb,ide${sim_sysv_ipc_hw}"
323 sim_hw_src=`echo $hardware | sed -e 's/,/.c hw_/g' -e 's/^/hw_/' -e s'/$/.c/'`
324 sim_hw_obj=`echo $sim_hw_src | sed -e 's/\.c/.o/g'`
325 if test x"$silent" != x"yes"; then
326   echo "Setting hardware to $sim_hw_src, $sim_hw_obj"
327 fi])dnl
328
329 AC_ARG_ENABLE(sim-hostbitsize,
330 [  --enable-sim-hostbitsize=32|64       Specify host bitsize (32 or 64).],
331 [case "${enableval}" in
332   32|64) sim_hostbitsize="-DWITH_HOST_WORD_BITSIZE=$enableval";;
333   *)     AC_MSG_ERROR("--enable-sim-hostbitsize was given $enableval.  Expected 32 or 64"); sim_hostbitsize="";;
334 esac
335 if test x"$silent" != x"yes" && test x"$sim_hostbitsize" != x""; then
336   echo "Setting hostbitsize flags = $sim_hostbitsize" 6>&1
337 fi],[sim_hostbitsize=""])dnl
338
339
340 AC_ARG_ENABLE(sim-hostendian,
341 [  --enable-sim-hostendian=end          Specify host byte endian orientation.],
342 [case "${enableval}" in
343   no)    sim_hostendian="-DWITH_HOST_BYTE_ORDER=0";;
344   b*|B*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN";;
345   l*|L*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN";;
346   *)     AC_MSG_ERROR("Unknown value $enableval for --enable-sim-hostendian"); sim_hostendian="";;
347 esac
348 if test x"$silent" != x"yes" && test x"$sim_hostendian" != x""; then
349   echo "Setting hostendian flags = $sim_hostendian" 6>&1
350 fi],[
351 if test "x$cross_compiling" = "xno"; then
352   AC_C_BIGENDIAN
353   if test $ac_cv_c_bigendian = yes; then
354     sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN"
355   else
356     sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN"
357   fi
358 else
359   sim_hostendian="-DWITH_HOST_BYTE_ORDER=0"
360 fi])dnl
361
362
363 AC_ARG_ENABLE(sim-icache,
364 [  --enable-sim-icache=size             Specify instruction-decode cache size and type.],
365 [icache="-R"
366  case "${enableval}" in
367   yes)          icache="1024"; sim_icache="-I $icache";;
368   no)           sim_icache="-R";;
369   *) icache=1024
370      sim_icache="-"
371      for x in `echo "${enableval}" | sed -e "s/,/ /g"`; do
372        case "$x" in
373          define)        sim_icache="${sim_icache}R";;
374          semantic)      sim_icache="${sim_icache}C";;
375          insn)          sim_icache="${sim_icache}S";;
376          0*|1*|2*|3*|4*|5*|6*|7*|8*|9*) icache=$x;;
377          *)             AC_MSG_ERROR("Unknown value $x for --enable-sim-icache"); sim_icache="";;
378        esac
379      done
380      sim_icache="${sim_icache}I $icache";;
381 esac
382 if test x"$silent" != x"yes" && test x"$icache" != x""; then
383   echo "Setting instruction cache size to $icache ($sim_icache)"
384 fi],[sim_icache="-CSRI 1024"
385 if test x"$silent" != x"yes"; then
386   echo "Setting instruction cache size to 1024 ($sim_icache)"
387 fi])dnl
388
389
390 AC_ARG_ENABLE(sim-inline,
391 [  --enable-sim-inline=inlines          Specify which functions should be inlined.],
392 [sim_inline=""
393 case "$enableval" in
394   no)           sim_inline="-DDEFAULT_INLINE=0";;
395   0)            sim_inline="-DDEFAULT_INLINE=0";;
396   yes | 2)      sim_inline="-DDEFAULT_INLINE=ALL_INLINE";;
397   1)            sim_inline="-DDEFAULT_INLINE=PSIM_INLINE_LOCALS";;
398   *) for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
399        new_flag=""
400        case "$x" in
401          *_INLINE=*)    new_flag="-D$x";;
402          *=*)           new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
403          *_INLINE)      new_flag="-D$x=ALL_INLINE";;
404          *)             new_flag="-D$x""_INLINE=ALL_INLINE";;
405        esac
406        if test x"$sim_inline" = x""; then
407          sim_inline="$new_flag"
408        else
409          sim_inline="$sim_inline $new_flag"
410        fi
411      done;;
412 esac
413 if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
414   echo "Setting inline flags = $sim_inline" 6>&1
415 fi],[if test x"$GCC" != ""; then
416   sim_inline="-DDEFAULT_INLINE=PSIM_INLINE_LOCALS"
417   if test x"$silent" != x"yes"; then
418     echo "Setting inline flags = $sim_inline" 6>&1
419   fi
420 else
421   sim_inline=""
422 fi])dnl
423
424
425 AC_ARG_ENABLE(sim-jump,
426 [  --enable-sim-jump            Jump between semantic code (instead of call/return).],
427 [case "${enableval}" in
428   yes)  sim_jump="-J";;
429   no)   sim_jump="";;
430   *)    AC_MSG_ERROR("--enable-sim-jump does not take a value"); sim_jump="";;
431 esac
432 if test x"$silent" != x"yes" && test x"$sim_jump" != x""; then
433   echo "Setting jump flag = $sim_jump" 6>&1
434 fi],[sim_jump=""
435 if test x"$silent" != x"yes"; then
436   echo "Setting jump flag = $sim_jump" 6>&1
437 fi])dnl
438
439
440 AC_ARG_ENABLE(sim-line-nr,
441 [  --enable-sim-line-nr=opts            Generate extra CPP code that references source rather than generated code],
442 [case "${enableval}" in
443   yes)  sim_line_nr="";;
444   no)   sim_line_nr="-L";;
445   *)    AC_MSG_ERROR("--enable-sim-line-nr does not take a value"); sim_line_nr="";;
446 esac
447 if test x"$silent" != x"yes" && test x"$sim_line_nr" != x""; then
448   echo "Setting warning flags = $sim_line_nr" 6>&1
449 fi],[sim_line_nr=""])dnl
450
451
452 AC_ARG_ENABLE(sim-model,
453 [  --enable-sim-model=which             Specify PowerPC to model.],
454 [case "${enableval}" in
455   yes|no)       AC_MSG_ERROR("No value supplied for --enable-sim-model=model");;
456   *)            sim_model="-DWITH_MODEL=${enableval}";;
457 esac
458 if test x"$silent" != x"yes" && test x"$sim_model" != x""; then
459   echo "Setting model flags = $sim_model" 6>&1
460 fi],[sim_model=""])dnl
461
462
463 AC_ARG_ENABLE(sim-model-issue,
464 [  --enable-sim-model-issue             Specify whether to simulate model specific actions],
465 [case "${enableval}" in
466   yes)  sim_model_issue="-DWITH_MODEL_ISSUE=MODEL_ISSUE_PROCESS";;
467   no)   sim_model_issue="-DWITH_MODEL_ISSUE=MODEL_ISSUE_IGNORE";;
468   *)    AC_MSG_ERROR("--enable-sim-model-issue does not take a value"); sim_model_issue="";;
469 esac
470 if test x"$silent" != x"yes"; then
471   echo "Setting model-issue flags = $sim_model_issue" 6>&1
472 fi],[sim_model_issue=""])dnl
473
474
475 AC_ARG_ENABLE(sim-monitor,
476 [  --enable-sim-monitor=mon             Specify whether to enable monitoring events.],
477 [case "${enableval}" in
478   yes)          sim_monitor="-DWITH_MON='MONITOR_INSTRUCTION_ISSUE | MONITOR_LOAD_STORE_UNIT'";;
479   no)           sim_monitor="-DWITH_MON=0";;
480   instruction)  sim_monitor="-DWITH_MON=MONITOR_INSTRUCTION_ISSUE";;
481   memory)       sim_monitor="-DWITH_MON=MONITOR_LOAD_STORE_UNIT";;
482   *)            AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-mon"); sim_env="";;
483 esac
484 if test x"$silent" != x"yes" && test x"$sim_monitor" != x""; then
485   echo "Setting monitor flags = $sim_monitor" 6>&1
486 fi],[sim_monitor=""])dnl
487
488
489 AC_ARG_ENABLE(sim-opcode,
490 [  --enable-sim-opcode=which            Override default opcode lookup.],
491 [case "${enableval}" in
492   yes|no)       AC_MSG_ERROR("No value supplied for --enable-sim-opcode=file");;
493   *)            if test -f "${srcdir}/${enableval}"; then
494                   sim_opcode="${enableval}"
495                 elif test -f "${srcdir}/dc-${enableval}"; then
496                   sim_opcode="dc-${enableval}"
497                 else
498                   AC_MSG_ERROR("File $enableval is not an opcode rules file");
499                   sim_opcode="dc-complex"
500                 fi;;
501 esac
502 if test x"$silent" != x"yes" && test x"$sim_opcode" != x""; then
503   echo "Setting opcode flags = $sim_opcode" 6>&1
504 fi],[sim_opcode="dc-complex"
505 if test x"$silent" != x"yes"; then
506   echo "Setting opcode flags = $sim_opcode"
507 fi])dnl
508
509
510 AC_ARG_ENABLE(sim-packages,
511 [  --enable-sim-packages=list           Specify the packages to be included in the build.],
512 [packages=disklabel
513 case "${enableval}" in
514   yes)  ;;
515   no)   AC_MSG_ERROR("List of packages must be specified for --enable-sim-packages"); packages="";;
516   ,*)   packages="${packages}${enableval}";;
517   *,)   packages="${enableval}${packages}";;
518   *)    packages="${enableval}"'';;
519 esac
520 sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
521 sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
522 if test x"$silent" != x"yes" && test x"$packages" != x""; then
523   echo "Setting packages to $sim_pk_src, $sim_pk_obj"
524 fi],[packages=disklabel
525 sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
526 sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
527 if test x"$silent" != x"yes"; then
528   echo "Setting packages to $sim_pk_src, $sim_pk_obj"
529 fi])dnl
530
531
532 AC_ARG_ENABLE(sim-regparm,
533 [  --enable-sim-regparm=nr-parm         Pass parameters in registers instead of on the stack - x86/GCC specific.],
534 [case "${enableval}" in
535   0*|1*|2*|3*|4*|5*|6*|7*|8*|9*) sim_regparm="-DWITH_REGPARM=${enableval}";;
536   no)                            sim_regparm="" ;;
537   yes)                           sim_regparm="-DWITH_REGPARM=3";;
538   *)   AC_MSG_ERROR("Unknown value $enableval for --enable-sim-regparm"); sim_regparm="";;
539 esac
540 if test x"$silent" != x"yes" && test x"$sim_regparm" != x""; then
541   echo "Setting regparm flags = $sim_regparm" 6>&1
542 fi],[sim_regparm=""])dnl
543
544
545 AC_ARG_ENABLE(sim-reserved-bits,
546 [  --enable-sim-reserved-bits           Specify whether to check reserved bits in instruction.],
547 [case "${enableval}" in
548   yes)  sim_reserved="-DWITH_RESERVED_BITS=1";;
549   no)   sim_reserved="-DWITH_RESERVED_BITS=0";;
550   *)    AC_MSG_ERROR("--enable-sim-reserved-bits does not take a value"); sim_reserved="";;
551 esac
552 if test x"$silent" != x"yes" && test x"$sim_reserved" != x""; then
553   echo "Setting reserved flags = $sim_reserved" 6>&1
554 fi],[sim_reserved=""])dnl
555
556
557 AC_ARG_ENABLE(sim-smp,
558 [  --enable-sim-smp=n                   Specify number of processors to configure for.],
559 [case "${enableval}" in
560   yes)  sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5";;
561   no)   sim_smp="-DWITH_SMP=0" ; sim_igen_smp="-N 0";;
562   *)    sim_smp="-DWITH_SMP=$enableval" ; sim_igen_smp="-N $enableval";;
563 esac
564 if test x"$silent" != x"yes" && test x"$sim_smp" != x""; then
565   echo "Setting smp flags = $sim_smp" 6>&1
566 fi],[sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5"
567 if test x"$silent" != x"yes"; then
568   echo "Setting smp flags = $sim_smp" 6>&1
569 fi])dnl
570
571
572 AC_ARG_ENABLE(sim-stdcall,
573 [  --enable-sim-stdcall=type            Use an alternative function call/return mechanism - x86/GCC specific.],
574 [case "${enableval}" in
575   no)           sim_stdcall="" ;;
576   std*)         sim_stdcall="-DWITH_STDCALL=1";;
577   yes)          sim_stdcall="-DWITH_STDCALL=1";;
578   *)   AC_MSG_ERROR("Unknown value $enableval for --enable-sim-stdcall"); sim_stdcall="";;
579 esac
580 if test x"$silent" != x"yes" && test x"$sim_stdcall" != x""; then
581   echo "Setting function call flags = $sim_stdcall" 6>&1
582 fi],[sim_stdcall=""])dnl
583
584
585 AC_ARG_ENABLE(sim-stdio,
586 [  --enable-sim-stdio                   Specify whether to use stdio for console input/output.],
587 [case "${enableval}" in
588   yes)  sim_stdio="-DWITH_STDIO=DO_USE_STDIO";;
589   no)   sim_stdio="-DWITH_STDIO=DONT_USE_STDIO";;
590   *)    AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-stdio"); sim_stdio="";;
591 esac
592 if test x"$silent" != x"yes" && test x"$sim_stdio" != x""; then
593   echo "Setting stdio flags = $sim_stdio" 6>&1
594 fi],[sim_stdio=""])dnl
595
596
597 AC_ARG_ENABLE(sim-switch,
598 [  --enable-sim-switch                  Use a switch instead of a table for instruction call.],
599 [case "${enableval}" in
600   yes)  sim_switch="-s";;
601   no)   sim_switch="";;
602   *)    AC_MSG_ERROR("--enable-sim-switch does not take a value"); sim_switch="";;
603 esac
604 if test x"$silent" != x"yes" && test x"$sim_switch" != x""; then
605   echo "Setting switch flags = $sim_switch" 6>&1
606 fi],[sim_switch="";
607 if test x"$silent" != x"yes"; then
608   echo "Setting switch flags = $sim_switch" 6>&1
609 fi])dnl
610
611
612 AC_ARG_ENABLE(sim-timebase,
613 [  --enable-sim-timebase                        Specify whether the PPC timebase is supported.],
614 [case "${enableval}" in
615   yes)  sim_timebase="-DWITH_TIME_BASE=1";;
616   no)   sim_timebase="-DWITH_TIME_BASE=0";;
617   *)    AC_MSG_ERROR("--enable-sim-timebase does not take a value"); sim_timebase="";;
618 esac
619 if test x"$silent" != x"yes" && test x"$sim_timebase" != x""; then
620   echo "Setting timebase flags = $sim_timebase" 6>&1
621 fi],[sim_timebase=""])dnl
622
623
624 AC_ARG_ENABLE(sim-trace,
625 [  --enable-sim-trace                   Specify whether tracing is supported.],
626 [case "${enableval}" in
627   yes)  sim_trace="-DWITH_TRACE=1";;
628   no)   sim_trace="-DWITH_TRACE=0";;
629   *)    AC_MSG_ERROR("--enable-sim-trace does not take a value"); sim_trace="";;
630 esac
631 if test x"$silent" != x"yes" && test x"$sim_trace" != x""; then
632   echo "Setting trace flags = $sim_trace" 6>&1
633 fi],[sim_trace=""])dnl
634
635
636 AC_ARG_ENABLE(sim-warnings,
637 [  --enable-sim-warnings=opts           Extra CFLAGS for turning on compiler warnings except for idecode.o, semantics.o and psim.o],
638 [case "${enableval}" in
639   yes)  sim_warnings="-Werror -Wall -Wpointer-arith -Wmissing-prototypes -Wmissing-declarations ";;
640   no)   sim_warnings="-w";;
641   *)    sim_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
642 esac
643 if test x"$silent" != x"yes" && test x"$sim_warnings" != x""; then
644   echo "Setting warning flags = $sim_warnings" 6>&1
645 fi],[sim_warnings=""])dnl
646
647
648 AC_ARG_ENABLE(sim-xor-endian,
649 [  --enable-sim-xor-endian=n            Specify number bytes involved in PowerPC XOR bi-endian mode (default 8).],
650 [case "${enableval}" in
651   yes)  sim_xor_endian="-DWITH_XOR_ENDIAN=8";;
652   no)   sim_xor_endian="-DWITH_XOR_ENDIAN=0";;
653   *)    sim_xor_endian="-DWITH_XOR_ENDIAN=$enableval";;
654 esac
655 if test x"$silent" != x"yes" && test x"$sim_xor_endian" != x""; then
656   echo "Setting xor-endian flag = $sim_xor_endian" 6>&1
657 fi],[sim_xor_endian=""])dnl
658
659
660 ACX_PKGVERSION([GDB])
661 ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
662 AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
663 AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
664
665 AC_CANONICAL_SYSTEM
666 AC_ARG_PROGRAM
667
668 # BFD conditionally uses zlib, so we must link it in if libbfd does, by
669 # using the same condition.
670 AC_SEARCH_LIBS(zlibVersion, z, [AC_CHECK_HEADERS(zlib.h)])
671
672 . ${srcdir}/../../bfd/configure.host
673
674 case ${host} in
675   *mingw32*)
676     AC_DEFINE(USE_WIN32API, 1,
677               [Define if we should use the Windows API, instead of the 
678                POSIX API.  On Windows, we use the Windows API when 
679                building for MinGW, but the POSIX API when building 
680                for Cygwin.])
681     ;;
682 esac        
683
684 AC_CONFIG_HEADER(config.h:config.in)
685
686 AC_STRUCT_ST_BLKSIZE
687 AC_STRUCT_ST_BLOCKS
688 AC_STRUCT_ST_RDEV
689 AC_STRUCT_TIMEZONE
690
691 AC_TYPE_GETGROUPS
692 AC_TYPE_MODE_T
693 AC_TYPE_OFF_T
694 AC_TYPE_PID_T
695 AC_TYPE_SIGNAL
696 AC_TYPE_SIZE_T
697 AC_TYPE_UID_T
698
699 AC_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)
700
701 AC_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)
702 AC_HEADER_DIRENT
703
704 dnl Figure out what type of termio/termios support there is
705 sim_termio=""
706 AC_MSG_CHECKING(for struct termios)
707 AC_CACHE_VAL(ac_cv_termios_struct,
708 [AC_TRY_COMPILE([#include <sys/types.h>
709 #include <sys/termios.h>],
710 [static struct termios x;
711  x.c_iflag = 0;
712  x.c_oflag = 0;
713  x.c_cflag = 0;
714  x.c_lflag = 0;
715  x.c_cc[NCCS] = 0;],
716 ac_cv_termios_struct=yes, ac_cv_termios_struct=no)])
717 AC_MSG_RESULT($ac_cv_termios_struct)
718 if test $ac_cv_termios_struct = yes; then
719   sim_termio="$sim_termio -DHAVE_TERMIOS_STRUCTURE"
720 fi
721
722 if test "$ac_cv_termios_struct" = "yes"; then
723   AC_MSG_CHECKING(for c_line field in struct termios)
724   AC_CACHE_VAL(ac_cv_termios_cline,
725   [AC_TRY_COMPILE([#include <sys/types.h>
726 #include <sys/termios.h>],
727 [static struct termios x; x.c_line = 0;],
728   ac_cv_termios_cline=yes, ac_cv_termios_cline=no)])
729
730   AC_MSG_RESULT($ac_cv_termios_cline)
731   if test $ac_cv_termios_cline = yes; then
732     sim_termio="$sim_termio -DHAVE_TERMIOS_CLINE"
733   fi
734 else
735   ac_cv_termios_cline=no
736 fi
737
738 if test "$ac_cv_termios_struct" != "yes"; then
739   AC_MSG_CHECKING(for struct termio)
740   AC_CACHE_VAL(ac_cv_termio_struct,
741   [AC_TRY_COMPILE([#include <sys/types.h>
742 #include <sys/termio.h>],
743 [static struct termio x;
744  x.c_iflag = 0;
745  x.c_oflag = 0;
746  x.c_cflag = 0;
747  x.c_lflag = 0;
748  x.c_cc[NCC] = 0;],
749 ac_cv_termio_struct=yes, ac_cv_termio_struct=no)])
750   AC_MSG_RESULT($ac_cv_termio_struct)
751   if test $ac_cv_termio_struct = yes; then
752     sim_termio="$sim_termio -DHAVE_TERMIO_STRUCTURE"
753   fi
754 else
755   ac_cv_termio_struct=no
756 fi
757
758 if test "$ac_cv_termio_struct" = "yes"; then
759   AC_MSG_CHECKING(for c_line field in struct termio)
760   AC_CACHE_VAL(ac_cv_termio_cline,
761   [AC_TRY_COMPILE([#include <sys/types.h>
762 #include <sys/termio.h>],
763 [static struct termio x; x.c_line = 0;],
764   ac_cv_termio_cline=yes, ac_cv_termio_cline=no)])
765
766   AC_MSG_RESULT($ac_cv_termio_cline)
767   if test $ac_cv_termio_cline = yes; then
768     sim_termio="$sim_termio -DHAVE_TERMIO_CLINE"
769   fi
770 else
771   ac_cv_termio_cline=no
772 fi
773
774 dnl Check for struct statfs
775 AC_MSG_CHECKING(for struct statfs)
776 AC_CACHE_VAL(ac_cv_struct_statfs,
777 [AC_TRY_COMPILE([#include <sys/types.h>
778 #ifdef HAVE_SYS_PARAM_H
779 #include <sys/param.h>
780 #endif
781 #ifdef HAVE_SYS_MOUNT_H
782 #include <sys/mount.h>
783 #endif
784 #ifdef HAVE_SYS_VFS_H
785 #include <sys/vfs.h>
786 #endif
787 #ifdef HAVE_SYS_STATFS_H
788 #include <sys/statfs.h>
789 #endif],
790 [static struct statfs s;],
791 ac_cv_struct_statfs=yes, ac_cv_struct_statfs=no)])
792 AC_MSG_RESULT($ac_cv_struct_statfs)
793 if test $ac_cv_struct_statfs = yes; then
794   AC_DEFINE(HAVE_STRUCT_STATFS, 1,
795             [Define if struct statfs is defined in <sys/mount.h>])
796 fi
797
798 AC_CHECK_TYPES(long long)
799
800 dnl Figure out if /dev/zero exists or not
801 sim_devzero=""
802 AC_MSG_CHECKING(for /dev/zero)
803 AC_CACHE_VAL(ac_cv_devzero,
804 [AC_TRY_RUN([#include <fcntl.h>
805 main () {
806   char buf[2048];
807   int i;
808   int fd = open ("/dev/zero", O_RDONLY);
809   if (fd < 0)
810     return 1;
811   for (i = 0; i < sizeof (buf); i++)
812     buf[i] = 1;
813   if (read (fd, buf, sizeof (buf)) != sizeof (buf))
814     return 1;
815   for (i = 0; i < sizeof (buf); i++)
816     if (buf[i])
817       return 1;
818   return 0;
819 }],[ac_cv_devzero=yes],[ac_cv_devzero=no],[ac_cv_devzero=no])])
820 AC_MSG_RESULT($ac_cv_devzero)
821 if test $ac_cv_devzero = yes; then
822   sim_devzero="-DHAVE_DEVZERO"
823 else
824   sim_devzero=""
825 fi
826
827 dnl Figure out if we are in the new Cygnus tree with a common directory or not
828 AC_MSG_CHECKING(for common simulator directory)
829 if test -f "${srcdir}/../common/callback.c"; then
830   AC_MSG_RESULT(yes)
831   sim_callback="callback.o targ-map.o"
832   sim_targ_vals="targ-vals.h targ-map.c targ-vals.def"
833 else
834   AC_MSG_RESULT(no)
835   sim_callback=""
836   sim_targ_vals=""
837 fi
838
839 AC_MSG_CHECKING(for common simulator directory fpu implementation)
840 if test -f "${srcdir}/../common/sim-fpu.c"; then
841   AC_MSG_RESULT(yes)
842   sim_fpu_cflags="-DHAVE_COMMON_FPU -I../common -I${srcdir}/../common"
843   sim_fpu="sim-fpu.o"
844 else
845   AC_MSG_RESULT(no)
846   sim_fpu_cflags=
847   sim_fpu=
848 fi
849
850 dnl Check for exe extension
851 AC_EXEEXT
852
853 AC_SUBST(CC_FOR_BUILD)
854 AC_SUBST(CFLAGS_FOR_BUILD)
855 AC_SUBST(CFLAGS)
856 AC_SUBST(HDEFINES)
857 AR=${AR-ar}
858 AC_SUBST(AR)
859 AC_PROG_RANLIB
860 AC_SUBST(sim_cflags)
861 AC_SUBST(sim_warnings)
862 AC_SUBST(sim_line_nr)
863 AC_SUBST(sim_config)
864 AC_SUBST(sim_opcode)
865 AC_SUBST(sim_switch)
866 AC_SUBST(sim_dup)
867 AC_SUBST(sim_decode_mechanism)
868 AC_SUBST(sim_jump)
869 AC_SUBST(sim_filter)
870 AC_SUBST(sim_icache)
871 AC_SUBST(sim_hw_src)
872 AC_SUBST(sim_hw_obj)
873 AC_SUBST(sim_pk_src)
874 AC_SUBST(sim_pk_obj)
875 AC_SUBST(sim_inline)
876 AC_SUBST(sim_bswap)
877 AC_SUBST(sim_endian)
878 AC_SUBST(sim_regparm)
879 AC_SUBST(sim_stdcall)
880 AC_SUBST(sim_xor_endian)
881 AC_SUBST(sim_hostendian)
882 AC_SUBST(sim_smp)
883 AC_SUBST(sim_igen_smp)
884 AC_SUBST(sim_bitsize)
885 AC_SUBST(sim_hostbitsize)
886 AC_SUBST(sim_env)
887 AC_SUBST(sim_timebase)
888 AC_SUBST(sim_alignment)
889 AC_SUBST(sim_float)
890 AC_SUBST(sim_trace)
891 AC_SUBST(sim_assert)
892 AC_SUBST(sim_reserved)
893 AC_SUBST(sim_monitor)
894 AC_SUBST(sim_model)
895 AC_SUBST(sim_default_model)
896 AC_SUBST(sim_model_issue)
897 AC_SUBST(sim_stdio)
898 AC_SUBST(sim_termio)
899 AC_SUBST(sim_devzero)
900 AC_SUBST(sim_callback)
901 AC_SUBST(sim_targ_vals)
902 AC_SUBST(sim_fpu_cflags)
903 AC_SUBST(sim_fpu)
904
905 AC_OUTPUT(Makefile,
906 [case x$CONFIG_HEADERS in xconfig.h:config.in) echo > stamp-h ;; esac])