* configure.ac: If build != host, create a separate build-config.h
[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   AC_DEFINE(HAVE_UNION_SEMUN, 1,
305             [Define if union semun is defined in <sys/sem.h>])
306 fi
307
308
309 AC_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}"
312 case "${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}"'';;
318 esac
319 sim_hw_src=`echo $hardware | sed -e 's/,/.c hw_/g' -e 's/^/hw_/' -e s'/$/.c/'`
320 sim_hw_obj=`echo $sim_hw_src | sed -e 's/\.c/.o/g'`
321 if test x"$silent" != x"yes" && test x"$hardware" != x""; then
322   echo "Setting hardware to $sim_hw_src, $sim_hw_obj"
323 fi],[hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal,com,eeprom,opic,glue,phb,ide${sim_sysv_ipc_hw}"
324 sim_hw_src=`echo $hardware | sed -e 's/,/.c hw_/g' -e 's/^/hw_/' -e s'/$/.c/'`
325 sim_hw_obj=`echo $sim_hw_src | sed -e 's/\.c/.o/g'`
326 if test x"$silent" != x"yes"; then
327   echo "Setting hardware to $sim_hw_src, $sim_hw_obj"
328 fi])dnl
329
330 AC_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="";;
335 esac
336 if test x"$silent" != x"yes" && test x"$sim_hostbitsize" != x""; then
337   echo "Setting hostbitsize flags = $sim_hostbitsize" 6>&1
338 fi],[sim_hostbitsize=""])dnl
339
340
341 AC_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="";;
348 esac
349 if test x"$silent" != x"yes" && test x"$sim_hostendian" != x""; then
350   echo "Setting hostendian flags = $sim_hostendian" 6>&1
351 fi],[
352 if 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
359 else
360   sim_hostendian="-DWITH_HOST_BYTE_ORDER=0"
361 fi])dnl
362
363
364 AC_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";;
382 esac
383 if test x"$silent" != x"yes" && test x"$icache" != x""; then
384   echo "Setting instruction cache size to $icache ($sim_icache)"
385 fi],[sim_icache="-CSRI 1024"
386 if test x"$silent" != x"yes"; then
387   echo "Setting instruction cache size to 1024 ($sim_icache)"
388 fi])dnl
389
390
391 AC_ARG_ENABLE(sim-inline,
392 [  --enable-sim-inline=inlines          Specify which functions should be inlined.],
393 [sim_inline=""
394 case "$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;;
413 esac
414 if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
415   echo "Setting inline flags = $sim_inline" 6>&1
416 fi],[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
421 else
422   sim_inline=""
423 fi])dnl
424
425
426 AC_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="";;
432 esac
433 if test x"$silent" != x"yes" && test x"$sim_jump" != x""; then
434   echo "Setting jump flag = $sim_jump" 6>&1
435 fi],[sim_jump=""
436 if test x"$silent" != x"yes"; then
437   echo "Setting jump flag = $sim_jump" 6>&1
438 fi])dnl
439
440
441 AC_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="";;
447 esac
448 if test x"$silent" != x"yes" && test x"$sim_line_nr" != x""; then
449   echo "Setting warning flags = $sim_line_nr" 6>&1
450 fi],[sim_line_nr=""])dnl
451
452
453 AC_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}";;
458 esac
459 if test x"$silent" != x"yes" && test x"$sim_model" != x""; then
460   echo "Setting model flags = $sim_model" 6>&1
461 fi],[sim_model=""])dnl
462
463
464 AC_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="";;
470 esac
471 if test x"$silent" != x"yes"; then
472   echo "Setting model-issue flags = $sim_model_issue" 6>&1
473 fi],[sim_model_issue=""])dnl
474
475
476 AC_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="";;
484 esac
485 if test x"$silent" != x"yes" && test x"$sim_monitor" != x""; then
486   echo "Setting monitor flags = $sim_monitor" 6>&1
487 fi],[sim_monitor=""])dnl
488
489
490 AC_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;;
502 esac
503 if test x"$silent" != x"yes" && test x"$sim_opcode" != x""; then
504   echo "Setting opcode flags = $sim_opcode" 6>&1
505 fi],[sim_opcode="dc-complex"
506 if test x"$silent" != x"yes"; then
507   echo "Setting opcode flags = $sim_opcode"
508 fi])dnl
509
510
511 AC_ARG_ENABLE(sim-packages,
512 [  --enable-sim-packages=list           Specify the packages to be included in the build.],
513 [packages=disklabel
514 case "${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}"'';;
520 esac
521 sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
522 sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
523 if test x"$silent" != x"yes" && test x"$packages" != x""; then
524   echo "Setting packages to $sim_pk_src, $sim_pk_obj"
525 fi],[packages=disklabel
526 sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
527 sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
528 if test x"$silent" != x"yes"; then
529   echo "Setting packages to $sim_pk_src, $sim_pk_obj"
530 fi])dnl
531
532
533 AC_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="";;
540 esac
541 if test x"$silent" != x"yes" && test x"$sim_regparm" != x""; then
542   echo "Setting regparm flags = $sim_regparm" 6>&1
543 fi],[sim_regparm=""])dnl
544
545
546 AC_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="";;
552 esac
553 if test x"$silent" != x"yes" && test x"$sim_reserved" != x""; then
554   echo "Setting reserved flags = $sim_reserved" 6>&1
555 fi],[sim_reserved=""])dnl
556
557
558 AC_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";;
564 esac
565 if test x"$silent" != x"yes" && test x"$sim_smp" != x""; then
566   echo "Setting smp flags = $sim_smp" 6>&1
567 fi],[sim_smp="-DWITH_SMP=5" ; sim_igen_smp="-N 5"
568 if test x"$silent" != x"yes"; then
569   echo "Setting smp flags = $sim_smp" 6>&1
570 fi])dnl
571
572
573 AC_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="";;
580 esac
581 if test x"$silent" != x"yes" && test x"$sim_stdcall" != x""; then
582   echo "Setting function call flags = $sim_stdcall" 6>&1
583 fi],[sim_stdcall=""])dnl
584
585
586 AC_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="";;
592 esac
593 if test x"$silent" != x"yes" && test x"$sim_stdio" != x""; then
594   echo "Setting stdio flags = $sim_stdio" 6>&1
595 fi],[sim_stdio=""])dnl
596
597
598 AC_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="";;
604 esac
605 if test x"$silent" != x"yes" && test x"$sim_switch" != x""; then
606   echo "Setting switch flags = $sim_switch" 6>&1
607 fi],[sim_switch="";
608 if test x"$silent" != x"yes"; then
609   echo "Setting switch flags = $sim_switch" 6>&1
610 fi])dnl
611
612
613 AC_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="";;
619 esac
620 if test x"$silent" != x"yes" && test x"$sim_timebase" != x""; then
621   echo "Setting timebase flags = $sim_timebase" 6>&1
622 fi],[sim_timebase=""])dnl
623
624
625 AC_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="";;
631 esac
632 if test x"$silent" != x"yes" && test x"$sim_trace" != x""; then
633   echo "Setting trace flags = $sim_trace" 6>&1
634 fi],[sim_trace=""])dnl
635
636
637 AC_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"`;;
643 esac
644 if test x"$silent" != x"yes" && test x"$sim_warnings" != x""; then
645   echo "Setting warning flags = $sim_warnings" 6>&1
646 fi],[sim_warnings=""])dnl
647
648
649 AC_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";;
655 esac
656 if test x"$silent" != x"yes" && test x"$sim_xor_endian" != x""; then
657   echo "Setting xor-endian flag = $sim_xor_endian" 6>&1
658 fi],[sim_xor_endian=""])dnl
659
660
661 ACX_PKGVERSION([GDB])
662 ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
663 AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
664 AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
665
666 AC_CANONICAL_SYSTEM
667 AC_ARG_PROGRAM
668
669 # BFD conditionally uses zlib, so we must link it in if libbfd does, by
670 # using the same condition.
671 AC_SEARCH_LIBS(zlibVersion, z, [AC_CHECK_HEADERS(zlib.h)])
672
673 . ${srcdir}/../../bfd/configure.host
674
675 case ${host} in
676   *mingw32*)
677     AC_DEFINE(USE_WIN32API, 1,
678               [Define if we should use the Windows API, instead of the 
679                POSIX API.  On Windows, we use the Windows API when 
680                building for MinGW, but the POSIX API when building 
681                for Cygwin.])
682     ;;
683 esac        
684
685 AC_CONFIG_HEADER(config.h:config.in)
686
687 AC_STRUCT_ST_BLKSIZE
688 AC_STRUCT_ST_BLOCKS
689 AC_STRUCT_ST_RDEV
690 AC_STRUCT_TIMEZONE
691
692 AC_TYPE_GETGROUPS
693 AC_TYPE_MODE_T
694 AC_TYPE_OFF_T
695 AC_TYPE_PID_T
696 AC_TYPE_SIGNAL
697 AC_TYPE_SIZE_T
698 AC_TYPE_UID_T
699
700 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)
701
702 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)
703 AC_HEADER_DIRENT
704
705 dnl Figure out what type of termio/termios support there is
706 sim_termio=""
707 AC_MSG_CHECKING(for struct termios)
708 AC_CACHE_VAL(ac_cv_termios_struct,
709 [AC_TRY_COMPILE([#include <sys/types.h>
710 #include <sys/termios.h>],
711 [static struct termios x;
712  x.c_iflag = 0;
713  x.c_oflag = 0;
714  x.c_cflag = 0;
715  x.c_lflag = 0;
716  x.c_cc[NCCS] = 0;],
717 ac_cv_termios_struct=yes, ac_cv_termios_struct=no)])
718 AC_MSG_RESULT($ac_cv_termios_struct)
719 if test $ac_cv_termios_struct = yes; then
720   sim_termio="$sim_termio -DHAVE_TERMIOS_STRUCTURE"
721 fi
722
723 if test "$ac_cv_termios_struct" = "yes"; then
724   AC_MSG_CHECKING(for c_line field in struct termios)
725   AC_CACHE_VAL(ac_cv_termios_cline,
726   [AC_TRY_COMPILE([#include <sys/types.h>
727 #include <sys/termios.h>],
728 [static struct termios x; x.c_line = 0;],
729   ac_cv_termios_cline=yes, ac_cv_termios_cline=no)])
730
731   AC_MSG_RESULT($ac_cv_termios_cline)
732   if test $ac_cv_termios_cline = yes; then
733     sim_termio="$sim_termio -DHAVE_TERMIOS_CLINE"
734   fi
735 else
736   ac_cv_termios_cline=no
737 fi
738
739 if test "$ac_cv_termios_struct" != "yes"; then
740   AC_MSG_CHECKING(for struct termio)
741   AC_CACHE_VAL(ac_cv_termio_struct,
742   [AC_TRY_COMPILE([#include <sys/types.h>
743 #include <sys/termio.h>],
744 [static struct termio x;
745  x.c_iflag = 0;
746  x.c_oflag = 0;
747  x.c_cflag = 0;
748  x.c_lflag = 0;
749  x.c_cc[NCC] = 0;],
750 ac_cv_termio_struct=yes, ac_cv_termio_struct=no)])
751   AC_MSG_RESULT($ac_cv_termio_struct)
752   if test $ac_cv_termio_struct = yes; then
753     sim_termio="$sim_termio -DHAVE_TERMIO_STRUCTURE"
754   fi
755 else
756   ac_cv_termio_struct=no
757 fi
758
759 if test "$ac_cv_termio_struct" = "yes"; then
760   AC_MSG_CHECKING(for c_line field in struct termio)
761   AC_CACHE_VAL(ac_cv_termio_cline,
762   [AC_TRY_COMPILE([#include <sys/types.h>
763 #include <sys/termio.h>],
764 [static struct termio x; x.c_line = 0;],
765   ac_cv_termio_cline=yes, ac_cv_termio_cline=no)])
766
767   AC_MSG_RESULT($ac_cv_termio_cline)
768   if test $ac_cv_termio_cline = yes; then
769     sim_termio="$sim_termio -DHAVE_TERMIO_CLINE"
770   fi
771 else
772   ac_cv_termio_cline=no
773 fi
774
775 dnl Check for struct statfs
776 AC_MSG_CHECKING(for struct statfs)
777 AC_CACHE_VAL(ac_cv_struct_statfs,
778 [AC_TRY_COMPILE([#include <sys/types.h>
779 #ifdef HAVE_SYS_PARAM_H
780 #include <sys/param.h>
781 #endif
782 #ifdef HAVE_SYS_MOUNT_H
783 #include <sys/mount.h>
784 #endif
785 #ifdef HAVE_SYS_VFS_H
786 #include <sys/vfs.h>
787 #endif
788 #ifdef HAVE_SYS_STATFS_H
789 #include <sys/statfs.h>
790 #endif],
791 [static struct statfs s;],
792 ac_cv_struct_statfs=yes, ac_cv_struct_statfs=no)])
793 AC_MSG_RESULT($ac_cv_struct_statfs)
794 if test $ac_cv_struct_statfs = yes; then
795   AC_DEFINE(HAVE_STRUCT_STATFS, 1,
796             [Define if struct statfs is defined in <sys/mount.h>])
797 fi
798
799 AC_CHECK_TYPES(long long)
800
801 dnl Figure out if /dev/zero exists or not
802 sim_devzero=""
803 AC_MSG_CHECKING(for /dev/zero)
804 AC_CACHE_VAL(ac_cv_devzero,
805 [AC_TRY_RUN([#include <fcntl.h>
806 main () {
807   char buf[2048];
808   int i;
809   int fd = open ("/dev/zero", O_RDONLY);
810   if (fd < 0)
811     return 1;
812   for (i = 0; i < sizeof (buf); i++)
813     buf[i] = 1;
814   if (read (fd, buf, sizeof (buf)) != sizeof (buf))
815     return 1;
816   for (i = 0; i < sizeof (buf); i++)
817     if (buf[i])
818       return 1;
819   return 0;
820 }],[ac_cv_devzero=yes],[ac_cv_devzero=no],[ac_cv_devzero=no])])
821 AC_MSG_RESULT($ac_cv_devzero)
822 if test $ac_cv_devzero = yes; then
823   sim_devzero="-DHAVE_DEVZERO"
824 else
825   sim_devzero=""
826 fi
827
828 dnl Figure out if we are in the new Cygnus tree with a common directory or not
829 AC_MSG_CHECKING(for common simulator directory)
830 if test -f "${srcdir}/../common/callback.c"; then
831   AC_MSG_RESULT(yes)
832   sim_callback="callback.o targ-map.o"
833   sim_targ_vals="targ-vals.h targ-map.c targ-vals.def"
834 else
835   AC_MSG_RESULT(no)
836   sim_callback=""
837   sim_targ_vals=""
838 fi
839
840 AC_MSG_CHECKING(for common simulator directory fpu implementation)
841 if test -f "${srcdir}/../common/sim-fpu.c"; then
842   AC_MSG_RESULT(yes)
843   sim_fpu_cflags="-DHAVE_COMMON_FPU -I../common -I${srcdir}/../common"
844   sim_fpu="sim-fpu.o"
845 else
846   AC_MSG_RESULT(no)
847   sim_fpu_cflags=
848   sim_fpu=
849 fi
850
851 # Since we run commands on the build system, we have to create a
852 # separate config header for the build system if build != host.
853 if test x$host = x$build; then
854   AC_CONFIG_COMMANDS([build-config.h],[cp config.h build-config.h])
855 else
856   tempdir=build.$$
857   rm -rf $tempdir
858   mkdir $tempdir
859   cd $tempdir
860   case ${srcdir} in
861   /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
862   *) realsrcdir=../${srcdir};;
863   esac
864   saved_CFLAGS="${CFLAGS}"
865   CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
866   LDFLAGS="${LDFLAGS_FOR_BUILD}" \
867   ${realsrcdir}/configure \
868     --enable-languages=${enable_languages-all} \
869     --target=$target_alias --host=$build_alias --build=$build_alias
870   CFLAGS="${saved_CFLAGS}"
871   mv config.h ../build-config.h
872   cd ..
873   rm -rf $tempdir
874 fi
875
876 dnl Check for exe extension
877 AC_EXEEXT
878
879 AC_SUBST(CC_FOR_BUILD)
880 AC_SUBST(CFLAGS_FOR_BUILD)
881 AC_SUBST(CFLAGS)
882 AC_SUBST(HDEFINES)
883 AR=${AR-ar}
884 AC_SUBST(AR)
885 AC_PROG_RANLIB
886 AC_SUBST(sim_cflags)
887 AC_SUBST(sim_warnings)
888 AC_SUBST(sim_line_nr)
889 AC_SUBST(sim_config)
890 AC_SUBST(sim_opcode)
891 AC_SUBST(sim_switch)
892 AC_SUBST(sim_dup)
893 AC_SUBST(sim_decode_mechanism)
894 AC_SUBST(sim_jump)
895 AC_SUBST(sim_filter)
896 AC_SUBST(sim_icache)
897 AC_SUBST(sim_hw_src)
898 AC_SUBST(sim_hw_obj)
899 AC_SUBST(sim_pk_src)
900 AC_SUBST(sim_pk_obj)
901 AC_SUBST(sim_inline)
902 AC_SUBST(sim_bswap)
903 AC_SUBST(sim_endian)
904 AC_SUBST(sim_regparm)
905 AC_SUBST(sim_stdcall)
906 AC_SUBST(sim_xor_endian)
907 AC_SUBST(sim_hostendian)
908 AC_SUBST(sim_smp)
909 AC_SUBST(sim_igen_smp)
910 AC_SUBST(sim_bitsize)
911 AC_SUBST(sim_hostbitsize)
912 AC_SUBST(sim_env)
913 AC_SUBST(sim_timebase)
914 AC_SUBST(sim_alignment)
915 AC_SUBST(sim_float)
916 AC_SUBST(sim_trace)
917 AC_SUBST(sim_assert)
918 AC_SUBST(sim_reserved)
919 AC_SUBST(sim_monitor)
920 AC_SUBST(sim_model)
921 AC_SUBST(sim_default_model)
922 AC_SUBST(sim_model_issue)
923 AC_SUBST(sim_stdio)
924 AC_SUBST(sim_termio)
925 AC_SUBST(sim_devzero)
926 AC_SUBST(sim_callback)
927 AC_SUBST(sim_targ_vals)
928 AC_SUBST(sim_fpu_cflags)
929 AC_SUBST(sim_fpu)
930
931 AC_OUTPUT(Makefile,
932 [case x$CONFIG_HEADERS in xconfig.h:config.in) echo > stamp-h ;; esac])