Fix --diable-shared --enable-plugins build breakage
[platform/upstream/binutils.git] / sim / ppc / configure.ac
1 dnl Process this file with autoconf to produce a configure script.
2 AC_PREREQ(2.59)dnl
3 AC_INIT(Makefile.in)
4 sinclude(../common/acinclude.m4)
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 AM_ZLIB
672
673 # BFD uses libdl when when plugins enabled.
674 AC_PLUGINS
675
676 . ${srcdir}/../../bfd/configure.host
677
678 case ${host} in
679   *mingw32*)
680     AC_DEFINE(USE_WIN32API, 1,
681               [Define if we should use the Windows API, instead of the 
682                POSIX API.  On Windows, we use the Windows API when 
683                building for MinGW, but the POSIX API when building 
684                for Cygwin.])
685     ;;
686 esac        
687
688 AC_CONFIG_HEADER(config.h:config.in)
689
690 AC_STRUCT_ST_BLKSIZE
691 AC_STRUCT_ST_BLOCKS
692 AC_STRUCT_ST_RDEV
693 AC_STRUCT_TIMEZONE
694
695 AC_TYPE_GETGROUPS
696 AC_TYPE_MODE_T
697 AC_TYPE_OFF_T
698 AC_TYPE_PID_T
699 AC_TYPE_SIGNAL
700 AC_TYPE_SIZE_T
701 AC_TYPE_UID_T
702
703 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)
704
705 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)
706 AC_HEADER_DIRENT
707
708 dnl Figure out what type of termio/termios support there is
709 sim_termio=""
710 AC_MSG_CHECKING(for struct termios)
711 AC_CACHE_VAL(ac_cv_termios_struct,
712 [AC_TRY_COMPILE([#include <sys/types.h>
713 #include <sys/termios.h>],
714 [static struct termios x;
715  x.c_iflag = 0;
716  x.c_oflag = 0;
717  x.c_cflag = 0;
718  x.c_lflag = 0;
719  x.c_cc[NCCS] = 0;],
720 ac_cv_termios_struct=yes, ac_cv_termios_struct=no)])
721 AC_MSG_RESULT($ac_cv_termios_struct)
722 if test $ac_cv_termios_struct = yes; then
723   sim_termio="$sim_termio -DHAVE_TERMIOS_STRUCTURE"
724 fi
725
726 if test "$ac_cv_termios_struct" = "yes"; then
727   AC_MSG_CHECKING(for c_line field in struct termios)
728   AC_CACHE_VAL(ac_cv_termios_cline,
729   [AC_TRY_COMPILE([#include <sys/types.h>
730 #include <sys/termios.h>],
731 [static struct termios x; x.c_line = 0;],
732   ac_cv_termios_cline=yes, ac_cv_termios_cline=no)])
733
734   AC_MSG_RESULT($ac_cv_termios_cline)
735   if test $ac_cv_termios_cline = yes; then
736     sim_termio="$sim_termio -DHAVE_TERMIOS_CLINE"
737   fi
738 else
739   ac_cv_termios_cline=no
740 fi
741
742 if test "$ac_cv_termios_struct" != "yes"; then
743   AC_MSG_CHECKING(for struct termio)
744   AC_CACHE_VAL(ac_cv_termio_struct,
745   [AC_TRY_COMPILE([#include <sys/types.h>
746 #include <sys/termio.h>],
747 [static struct termio x;
748  x.c_iflag = 0;
749  x.c_oflag = 0;
750  x.c_cflag = 0;
751  x.c_lflag = 0;
752  x.c_cc[NCC] = 0;],
753 ac_cv_termio_struct=yes, ac_cv_termio_struct=no)])
754   AC_MSG_RESULT($ac_cv_termio_struct)
755   if test $ac_cv_termio_struct = yes; then
756     sim_termio="$sim_termio -DHAVE_TERMIO_STRUCTURE"
757   fi
758 else
759   ac_cv_termio_struct=no
760 fi
761
762 if test "$ac_cv_termio_struct" = "yes"; then
763   AC_MSG_CHECKING(for c_line field in struct termio)
764   AC_CACHE_VAL(ac_cv_termio_cline,
765   [AC_TRY_COMPILE([#include <sys/types.h>
766 #include <sys/termio.h>],
767 [static struct termio x; x.c_line = 0;],
768   ac_cv_termio_cline=yes, ac_cv_termio_cline=no)])
769
770   AC_MSG_RESULT($ac_cv_termio_cline)
771   if test $ac_cv_termio_cline = yes; then
772     sim_termio="$sim_termio -DHAVE_TERMIO_CLINE"
773   fi
774 else
775   ac_cv_termio_cline=no
776 fi
777
778 dnl Check for struct statfs
779 AC_MSG_CHECKING(for struct statfs)
780 AC_CACHE_VAL(ac_cv_struct_statfs,
781 [AC_TRY_COMPILE([#include <sys/types.h>
782 #ifdef HAVE_SYS_PARAM_H
783 #include <sys/param.h>
784 #endif
785 #ifdef HAVE_SYS_MOUNT_H
786 #include <sys/mount.h>
787 #endif
788 #ifdef HAVE_SYS_VFS_H
789 #include <sys/vfs.h>
790 #endif
791 #ifdef HAVE_SYS_STATFS_H
792 #include <sys/statfs.h>
793 #endif],
794 [static struct statfs s;],
795 ac_cv_struct_statfs=yes, ac_cv_struct_statfs=no)])
796 AC_MSG_RESULT($ac_cv_struct_statfs)
797 if test $ac_cv_struct_statfs = yes; then
798   AC_DEFINE(HAVE_STRUCT_STATFS, 1,
799             [Define if struct statfs is defined in <sys/mount.h>])
800 fi
801
802 AC_CHECK_TYPES(long long)
803
804 dnl Figure out if /dev/zero exists or not
805 sim_devzero=""
806 AC_MSG_CHECKING(for /dev/zero)
807 AC_CACHE_VAL(ac_cv_devzero,
808 [AC_TRY_RUN([#include <fcntl.h>
809 main () {
810   char buf[2048];
811   int i;
812   int fd = open ("/dev/zero", O_RDONLY);
813   if (fd < 0)
814     return 1;
815   for (i = 0; i < sizeof (buf); i++)
816     buf[i] = 1;
817   if (read (fd, buf, sizeof (buf)) != sizeof (buf))
818     return 1;
819   for (i = 0; i < sizeof (buf); i++)
820     if (buf[i])
821       return 1;
822   return 0;
823 }],[ac_cv_devzero=yes],[ac_cv_devzero=no],[ac_cv_devzero=no])])
824 AC_MSG_RESULT($ac_cv_devzero)
825 if test $ac_cv_devzero = yes; then
826   sim_devzero="-DHAVE_DEVZERO"
827 else
828   sim_devzero=""
829 fi
830
831 dnl Figure out if we are in the new Cygnus tree with a common directory or not
832 AC_MSG_CHECKING(for common simulator directory)
833 if test -f "${srcdir}/../common/callback.c"; then
834   AC_MSG_RESULT(yes)
835   sim_callback="callback.o targ-map.o"
836   sim_targ_vals="targ-vals.h targ-map.c targ-vals.def"
837 else
838   AC_MSG_RESULT(no)
839   sim_callback=""
840   sim_targ_vals=""
841 fi
842
843 AC_MSG_CHECKING(for common simulator directory fpu implementation)
844 if test -f "${srcdir}/../common/sim-fpu.c"; then
845   AC_MSG_RESULT(yes)
846   sim_fpu_cflags="-DHAVE_COMMON_FPU -I../common -I${srcdir}/../common"
847   sim_fpu="sim-fpu.o"
848 else
849   AC_MSG_RESULT(no)
850   sim_fpu_cflags=
851   sim_fpu=
852 fi
853
854 # Since we run commands on the build system, we have to create a
855 # separate config header for the build system if build != host.
856 if test x$host = x$build; then
857   AC_CONFIG_COMMANDS([build-config.h],[cp config.h build-config.h])
858 else
859   tempdir=build.$$
860   rm -rf $tempdir
861   mkdir $tempdir
862   cd $tempdir
863   case ${srcdir} in
864   /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
865   *) realsrcdir=../${srcdir};;
866   esac
867   saved_CFLAGS="${CFLAGS}"
868   CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
869   LDFLAGS="${LDFLAGS_FOR_BUILD}" \
870   ${realsrcdir}/configure \
871     --enable-languages=${enable_languages-all} \
872     --target=$target_alias --host=$build_alias --build=$build_alias
873   CFLAGS="${saved_CFLAGS}"
874   mv config.h ../build-config.h
875   cd ..
876   rm -rf $tempdir
877 fi
878
879 dnl Check for exe extension
880 AC_EXEEXT
881
882 AC_SUBST(CC_FOR_BUILD)
883 AC_SUBST(CFLAGS_FOR_BUILD)
884 AC_SUBST(CFLAGS)
885 AC_SUBST(HDEFINES)
886 AR=${AR-ar}
887 AC_SUBST(AR)
888 AC_PROG_RANLIB
889 AC_SUBST(sim_cflags)
890 AC_SUBST(sim_warnings)
891 AC_SUBST(sim_line_nr)
892 AC_SUBST(sim_config)
893 AC_SUBST(sim_opcode)
894 AC_SUBST(sim_switch)
895 AC_SUBST(sim_dup)
896 AC_SUBST(sim_decode_mechanism)
897 AC_SUBST(sim_jump)
898 AC_SUBST(sim_filter)
899 AC_SUBST(sim_icache)
900 AC_SUBST(sim_hw_src)
901 AC_SUBST(sim_hw_obj)
902 AC_SUBST(sim_pk_src)
903 AC_SUBST(sim_pk_obj)
904 AC_SUBST(sim_inline)
905 AC_SUBST(sim_bswap)
906 AC_SUBST(sim_endian)
907 AC_SUBST(sim_regparm)
908 AC_SUBST(sim_stdcall)
909 AC_SUBST(sim_xor_endian)
910 AC_SUBST(sim_hostendian)
911 AC_SUBST(sim_smp)
912 AC_SUBST(sim_igen_smp)
913 AC_SUBST(sim_bitsize)
914 AC_SUBST(sim_hostbitsize)
915 AC_SUBST(sim_env)
916 AC_SUBST(sim_timebase)
917 AC_SUBST(sim_alignment)
918 AC_SUBST(sim_float)
919 AC_SUBST(sim_trace)
920 AC_SUBST(sim_assert)
921 AC_SUBST(sim_reserved)
922 AC_SUBST(sim_monitor)
923 AC_SUBST(sim_model)
924 AC_SUBST(sim_default_model)
925 AC_SUBST(sim_model_issue)
926 AC_SUBST(sim_stdio)
927 AC_SUBST(sim_termio)
928 AC_SUBST(sim_devzero)
929 AC_SUBST(sim_callback)
930 AC_SUBST(sim_targ_vals)
931 AC_SUBST(sim_fpu_cflags)
932 AC_SUBST(sim_fpu)
933
934 AC_OUTPUT(Makefile,
935 [case x$CONFIG_HEADERS in xconfig.h:config.in) echo > stamp-h ;; esac])