Add Solaris and Linux emulations
[binutils-gdb.git] / sim / ppc / configure.in
index 4ebcefbcf2ffcf326b3a734d1251bc0aea9cb214..fb662a0f322962d823845ddc1ae712c321036873 100644 (file)
@@ -2,97 +2,180 @@ dnl Process this file with autoconf to produce a configure script.
 AC_PREREQ(2.3)dnl
 AC_INIT(Makefile.in)
 
+AC_PROG_CC
+
+# Put a plausible default for CC_FOR_BUILD in Makefile.
+AC_C_CROSS
+if test "x$cross_compiling" = "xno"; then
+  CC_FOR_BUILD='$(CC)'
+else
+  CC_FOR_BUILD=gcc
+fi
+
 AC_ARG_ENABLE(sim-cflags,
 [  --enable-sim-cflags=opts            Extra CFLAGS for use in building simulator],
 [case "${enableval}" in
   yes) sim_cflags="-O2 -fomit-frame-pointer";;
   no)  sim_cflags="";;
   *)   sim_cflags=`echo "${enableval}" | sed -e "s/,/ /g"`;;
-esac],[sim_cflags=""])dnl
+esac
+if test x"$silent" != x"yes" && test x"$sim_cflags" != x""; then
+  echo "Setting sim cflags = $sim_cflags" 6>&1
+fi],[sim_cflags=""])dnl
 
 AC_ARG_ENABLE(sim-warnings,
-[  --enable-sim-warnings=opts          Extra CFLAGS for turning on compiler warnings except for idecode.o and semantics.o],
+[  --enable-sim-warnings=opts          Extra CFLAGS for turning on compiler warnings except for idecode.o, semantics.o and psim.o],
 [case "${enableval}" in
-  yes) sim_warnings="-Wall";;
+  yes) sim_warnings="-Werror -Wall -Wpointer-arith -Wmissing-prototypes";;
   no)  sim_warnings="-w";;
   *)   sim_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
-esac],[sim_warnings=""])dnl
+esac
+if test x"$silent" != x"yes" && test x"$sim_warnings" != x""; then
+  echo "Setting warning flags = $sim_warnings" 6>&1
+fi],[sim_warnings=""])dnl
 
 AC_ARG_ENABLE(sim-config,
 [  --enable-sim-config=file            Override default config file],
 [case "${enableval}" in
-  yes) sim_config="std-config.h";;
-  no)  sim_config="std-config.h";;
-  *)   sim_config="${enableval}";;
-esac],[sim_config="std-config.h]")dnl
+  yes|no)      AC_MSG_ERROR("No value supplied for --enable-sim-config=file");;
+  *)           if test -f "${srcdir}/${enableval}"; then
+                 sim_config="${enableval}";
+               elif test -f "${srcdir}/${enableval}-config.h"; then
+                 sim_config="${enableval}-config.h"
+               else
+                 AC_MSG_ERROR("Config file $enableval was not found");
+                 sim_config=std-config.h
+               fi;;
+esac
+if test x"$silent" != x"yes" && test x"$sim_config" != x""; then
+  echo "Setting config flags = $sim_config" 6>&1
+fi],[sim_config="std-config.h"
+if test x"$silent" != x"yes"; then
+  echo "Setting config flags = $sim_config" 6>&1
+fi])dnl
 
 AC_ARG_ENABLE(sim-opcode,
 [  --enable-sim-opcode=which           Override default opcode lookup.],
 [case "${enableval}" in
-  yes) sim_opcode="ppc-opcode-simple";;
-  no)  sim_opcode="ppc-opcode-simple";;
-  *)   sim_opcode="ppc-opcode-${enableval}";;
-esac],[sim_opcode="ppc-opcode-simple"])dnl
+  yes|no)      AC_MSG_ERROR("No value supplied for --enable-sim-opcode=file");;
+  *)           if test -f "${srcdir}/${enableval}"; then
+                 sim_opcode="${enableval}"
+               elif test -f "${srcdir}/ppc-opcode-${enableval}"; then
+                 sim_opcode="ppc-opcode-${enableval}"
+               else
+                 AC_MSG_ERROR("File $enableval is not an opcode rules file");
+                 sim_opcode="ppc-opcode-complex"
+               fi;;
+esac
+if test x"$silent" != x"yes" && test x"$sim_opcode" != x""; then
+  echo "Setting opcode flags = $sim_opcode" 6>&1
+fi],[sim_opcode="ppc-opcode-complex"
+if test x"$silent" != x"yes"; then
+  echo "Setting opcode flags = $sim_opcode"
+fi])dnl
 
 AC_ARG_ENABLE(sim-switch,
 [  --enable-sim-switch                 Use a switch instead of a table for instruction call.],
 [case "${enableval}" in
   yes) sim_switch="-s";;
-  *)   sim_switch="";;
-esac],[sim_switch=""])dnl
+  no)  sim_switch="";;
+  *)   AC_MSG_ERROR("--enable-sim-switch does not take a value"); sim_switch="";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_switch" != x""; then
+  echo "Setting switch flags = $sim_switch" 6>&1
+fi],[sim_switch="";
+if test x"$silent" != x"yes"; then
+  echo "Setting switch flags = $sim_switch" 6>&1
+fi])dnl
 
 AC_ARG_ENABLE(sim-duplicate,
 [  --enable-sim-duplicate              Expand (duplicate) semantic functions.],
 [case "${enableval}" in
-   yes)        sim_dup="-e";;
-   *)  sim_dup="";;
-esac],[sim_dup=""])dnl
+  yes) sim_dup="-e";;
+  no)  sim_dup="";;
+  *)   AC_MSG_ERROR("--enable-sim-duplicate does not take a value"); sim_dup="";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_dup" != x""; then
+  echo "Setting duplicate flags = $sim_dup" 6>&1
+fi],[sim_dup="-e"
+if test x"$silent" != x"yes"; then
+  echo "Setting duplicate flags = $sim_dup" 6>&1
+fi])dnl
 
 AC_ARG_ENABLE(sim-filter,
 [  --enable-sim-filter=rule            Specify filter rules.],
 [case "${enableval}" in
-   yes)        sim_filter="";;
-   *)  sim_filter="-f $enableval";;
-esac],[sim_filter="-f 64"])dnl
+  yes) AC_MSG_ERROR("--enable-sim-filter must be specified with a rule to filter or no"); sim_filter="";;
+  no)  sim_filter="";;
+  *)   sim_filter="-f $enableval";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_filter" != x""; then
+  echo "Setting filter flags = $sim_filter" 6>&1
+fi],[sim_filter="-f 64"
+if test x"$silent" != x"yes"; then
+  echo "Setting filter flags = $sim_filter" 6>&1
+fi])dnl
 
 AC_ARG_ENABLE(sim-icache,
 [  --enable-sim-icache=size            Specify instruction cache size.],
+icache=""
 [case "${enableval}" in
-   yes)        sim_icache="-r 1024";;
-   *)  sim_icache="";;
-esac],[sim_icache=""])dnl
+  yes)         sim_icache="-r 1024"; icache="1024";;
+  define)      sim_icache="-r 1024 -R"; icache="1024";;
+  no)          sim_icache="";;
+  *)           sim_icache="-r ${enableval}"; icache="${enableval}";;
+esac
+if test x"$silent" != x"yes" && test x"$icache" != x""; then
+  echo "Setting instruction cache size to $icache"
+fi],[sim_icache="-r 1024"
+if test x"$silent" != x"yes"; then
+  echo "Setting instruction cache size to 1024"
+fi])dnl
 
 AC_ARG_ENABLE(sim-inline,
 [  --enable-sim-inline=inlines         Specify which functions should be inlined.],
 [sim_inline=""
 case "$enableval" in
-  no)          sim_inline="";;
+  no)          sim_inline="-DDEFAULT_INLINE=0";;
   0)           sim_inline="-DDEFAULT_INLINE=0";;
-  yes | 2)     sim_inline="-DDEFAULT_INLINE=2";;
-  1)           sim_inline="-DDEFAULT_INLINE=1";;
+  yes | 2)     sim_inline="-DDEFAULT_INLINE=ALL_INLINE";;
+  1)           sim_inline="-DDEFAULT_INLINE=INLINE_LOCALS";;
   *) for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
        new_flag=""
        case "$x" in
         *_INLINE=*)    new_flag="-D$x";;
-        *_INLINE)      new_flag="-D$x=2";;
-        *=*)           new_flag=`sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
-        *)             new_flag="-D$x""_INLINE=2";;
+        *_INLINE)      new_flag="-D$x=ALL_INLINE";;
+        *=*)           new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
+        *)             new_flag="-D$x""_INLINE=ALL_INLINE";;
        esac
-       if x"$sim_inline" = x""; then
+       if test x"$sim_inline" = x""; then
         sim_inline="$new_flag"
        else
-        sim_inline="$flags $new_flag"
+        sim_inline="$sim_inline $new_flag"
        fi
      done;;
-esac],[sim_inline=""])dnl
+esac
+if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
+  echo "Setting inline flags = $sim_inline" 6>&1
+fi],[if test x"$GCC" != ""; then
+  sim_inline="-DDEFAULT_INLINE=INLINE_LOCALS"
+  if test x"$silent" != x"yes"; then
+    echo "Setting inline flags = $sim_inline" 6>&1
+  fi
+else
+  sim_inline=""
+fi])dnl
 
 AC_ARG_ENABLE(sim-bswap,
 [  --enable-sim-bswap                  Use the BSWAP instruction on Intel 486s and Pentiums.],
 [case "${enableval}" in
   yes) sim_bswap="-DWITH_BSWAP=1";;
   no)  sim_bswap="-DWITH_BSWAP=0";;
-  *)   sim_bswap="";;
-esac],[sim_bswap=""])dnl
+  *)   AC_MSG_ERROR("--enable-sim-bswap does not take a value"); sim_bswap="";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_bswap" != x""; then
+  echo "Setting bswap flags = $sim_bswap" 6>&1
+fi],[sim_bswap=""])dnl
 
 AC_ARG_ENABLE(sim-endian,
 [  --enable-sim-endian=endian          Specify target byte endian orientation.],
@@ -105,8 +188,11 @@ AC_ARG_ENABLE(sim-endian,
   no)   sim_endian="-DWITH_TARGET_BYTE_ORDER=0";;
   b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BIG_ENDIAN";;
   l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=LITTLE_ENDIAN";;
-  *)   sim_endian="";;
-esac],[sim_endian=""])dnl
+  *)    AC_MSG_ERROR("Unknown value $enableval for --enable-sim-endian"); sim_endian="";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
+  echo "Setting endian flags = $sim_endian" 6>&1
+fi],[sim_endian=""])dnl
 
 AC_ARG_ENABLE(sim-hostendian,
 [  --enable-sim-hostendain=end         Specify host byte endian orientation.],
@@ -114,32 +200,66 @@ AC_ARG_ENABLE(sim-hostendian,
   no)   sim_hostendian="-DWITH_HOST_BYTE_ORDER=0";;
   b*|B*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN";;
   l*|L*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN";;
-  *)    sim_hostendian="";;
-esac],[sim_hostendian=""])dnl
+  *)    AC_MSG_ERROR("Unknown value $enableval for --enable-sim-hostendian"); sim_hostendian="";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_hostendian" != x""; then
+  echo "Setting hostendian flags = $sim_hostendian" 6>&1
+fi],[
+if test "x$cross_compiling" = "xno"; then
+  AC_C_BIGENDIAN
+  if test $ac_cv_c_bigendian = yes; then
+    sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN"
+  else
+    sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN"
+  fi
+else
+  sim_hostendian="-DWITH_HOST_BYTE_ORDER=0"
+fi])dnl
 
 AC_ARG_ENABLE(sim-smp,
 [  --enable-sim-smp=n                  Specify number of processors to configure for.],
 [case "${enableval}" in
-  yes) sim_smp="-DWITH_SMP=2";;
+  yes) sim_smp="-DWITH_SMP=5";;
   no)  sim_smp="-DWITH_SMP=0";;
   *)   sim_smp="-DWITH_SMP=$enableval";;
-esac],[sim_smp=""])dnl
+esac
+if test x"$silent" != x"yes" && test x"$sim_smp" != x""; then
+  echo "Setting smp flags = $sim_smp" 6>&1
+fi],[sim_smp="-DWITH_SMP=5"
+if test x"$silent" != x"yes"; then
+  echo "Setting smp flags = $sim_smp" 6>&1
+fi])dnl
+
+AC_ARG_ENABLE(sim-xor-endian,
+[  --enable-sim-xor-endian=n           Specify number bytes involved in PowerPC XOR bi-endian mode (default 8).],
+[case "${enableval}" in
+  yes) sim_xor_endian="-DWITH_XOR_ENDIAN=8";;
+  no)  sim_xor_endian="-DWITH_XOR_ENDIAN=0";;
+  *)   sim_xor_endian="-DWITH_XOR_ENDIAN=$enableval";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_xor_endian" != x""; then
+  echo "Setting xor-endian flag = $sim_xor_endian" 6>&1
+fi],[sim_xor_endian=""])dnl
 
 AC_ARG_ENABLE(sim-bitsize,
 [  --enable-sim-bitsize=n              Specify target bitsize (32 or 64).],
 [case "${enableval}" in
-  yes) sim_bitsize="";;
-  no)  sim_bitsize="";;
-  *)   sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=$enableval";;
-esac],[sim_bitsize=""])dnl
+  32|64) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=$enableval";;
+  *)    AC_MSG_ERROR("--enable-sim-bitsize was given $enableval, expected 32 or 64"); sim_bitsize="";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_bitsize" != x""; then
+  echo "Setting bitsize flags = $sim_bitsize" 6>&1
+fi],[sim_bitsize=""])dnl
 
 AC_ARG_ENABLE(sim-hostbitsize,
-[  --enable-sim-hostbitsize=n          Specify host bitsize (32 or 64).],
+[  --enable-sim-hostbitsize=32|64      Specify host bitsize (32 or 64).],
 [case "${enableval}" in
-  yes) sim_hostbitsize="";;
-  no)  sim_hostbitsize="";;
-  *)   sim_hostbitsize="-DWITH_HOST_WORD_BITSIZE=$enableval";;
-esac],[sim_hostbitsize=""])dnl
+  32|64) sim_hostbitsize="-DWITH_HOST_WORD_BITSIZE=$enableval";;
+  *)    AC_MSG_ERROR("--enable-sim-hostbitsize was given $enableval, expected 32 or 64"); sim_hostbitsize="";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_hostbitsize" != x""; then
+  echo "Setting hostbitsize flags = $sim_hostbitsize" 6>&1
+fi],[sim_hostbitsize=""])dnl
 
 AC_ARG_ENABLE(sim-env,
 [  --enable-sim-env=env                        Specify target environment (operating, virtual, user).],
@@ -147,84 +267,134 @@ AC_ARG_ENABLE(sim-env,
   operating | os | oea)        sim_env="-DWITH_ENVIRONMENT=OPERATING_ENVIRONMENT";;
   virtual | vea)       sim_env="-DWITH_ENVIRONMENT=VIRTUAL_ENVIRONMENT";;
   user | uea)          sim_env="-DWITH_ENVIRONMENT=USER_ENVIRONMENT";;
-  *)                   sim_env="";;
-esac],[sim_env=""])dnl
+  no)                  sim_env="-DWITH_ENVIRONMENT=0";;
+  *)                   AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-env"); sim_env="";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_env" != x""; then
+  echo "Setting env flags = $sim_env" 6>&1
+fi],[sim_env=""])dnl
 
 AC_ARG_ENABLE(sim-timebase,
 [  --enable-sim-timebase                       Specify whether the PPC timebase is supported.],
 [case "${enableval}" in
   yes) sim_timebase="-DWITH_TIME_BASE=1";;
   no)  sim_timebase="-DWITH_TIME_BASE=0";;
-  *)   sim_timebase="";;
-esac],[sim_timebase=""])dnl
+  *)   AC_MSG_ERROR("--enable-sim-timebase does not take a value"); sim_timebase="";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_timebase" != x""; then
+  echo "Setting timebase flags = $sim_timebase" 6>&1
+fi],[sim_timebase=""])dnl
 
 AC_ARG_ENABLE(sim-alignment,
 [  --enable-sim-alignment=align                Specify strict or nonstrict alignment.],
 [case "${enableval}" in
   yes | strict | STRICT)       sim_alignment="-DWITH_ALIGNMENT=STRICT_ALIGNMENT";;
-  no | nonstrict | NONSTRICT)  sim_alignment="-DWITH_ALIGNMENT=NOSTRICT_ALIGNMENT";;
-  *)                           sim_alignment="-DWITH_ALIGNMENT=$enableval";;
-esac],[sim_alignment=""])dnl
+  no | nonstrict | NONSTRICT)  sim_alignment="-DWITH_ALIGNMENT=NONSTRICT_ALIGNMENT";;
+  0 | default | DEFAULT)       sim_alignment="-DWITH_ALIGNMENT=0";;
+  *)                           AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-alignment"); sim_alignment="";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_alignment" != x""; then
+  echo "Setting alignment flags = $sim_alignment" 6>&1
+fi],[sim_alignment=""])dnl
 
 AC_ARG_ENABLE(sim-trace,
 [  --enable-sim-trace                  Specify whether tracing is supported.],
 [case "${enableval}" in
   yes) sim_trace="-DWITH_TRACE=1";;
   no)  sim_trace="-DWITH_TRACE=0";;
-  *)   sim_trace="";;
-esac],[sim_trace=""])dnl
+  *)   AC_MSG_ERROR("--enable-sim-trace does not take a value"); sim_trace="";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_trace" != x""; then
+  echo "Setting trace flags = $sim_trace" 6>&1
+fi],[sim_trace=""])dnl
 
 AC_ARG_ENABLE(sim-assert,
 [  --enable-sim-assert                 Specify whether to perform random assertions.],
 [case "${enableval}" in
   yes) sim_assert="-DWITH_ASSERT=1";;
   no)  sim_assert="-DWITH_ASSERT=0";;
-  *)   sim_assert="";;
-esac],[sim_assert=""])dnl
+  *)   AC_MSG_ERROR("--enable-sim-assert does not take a value"); sim_assert="";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_assert" != x""; then
+  echo "Setting assert flags = $sim_assert" 6>&1
+fi],[sim_assert=""])dnl
+
+AC_ARG_ENABLE(sim-reserved-bits,
+[  --enable-sim-reserved-bits          Specify whether to check reserved bits in instruction.],
+[case "${enableval}" in
+  yes) sim_reserved="-DWITH_RESERVED_BITS=1";;
+  no)  sim_reserved="-DWITH_RESERVED_BITS=0";;
+  *)   AC_MSG_ERROR("--enable-sim-reserved-bits does not take a value"); sim_reserved="";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_reserved" != x""; then
+  echo "Setting reserved flags = $sim_reserved" 6>&1
+fi],[sim_reserved=""])dnl
 
 AC_ARG_ENABLE(sim-float,
 [  --enable-sim-float                  Specify whether to use host floating point or simulate.],
 [case "${enableval}" in
   yes | hard)  sim_float="-DWITH_FLOATING_POINT=HARD_FLOATING_POINT";;
   no | soft)   sim_float="-DWITH_FLOATING_POINT=SOFT_FLOATING_POINT";;
-  *)           sim_float="";;
-esac],[sim_float=""])dnl
+  *)           AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-float"); sim_float="";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_float" != x""; then
+  echo "Setting float flags = $sim_float" 6>&1
+fi],[sim_float=""])dnl
 
 AC_ARG_ENABLE(sim-monitor,
 [  --enable-sim-monitor=mon            Specify whether to enable monitoring events.],
 [case "${enableval}" in
-  yes)         sim_mon="-DWITH_MON='MONITOR_INSTRUCTION_ISSUE | MONITOR_LOAD_STORE_UNIT'";;
-  no)          sim_mon="-DWITH_MON=0";;
-  instruction) sim_mon="-DWITH_MON=MONITOR_INSTRUCTION_ISSUE";;
-  memory)      sim_mon="-DWITH_MON=MONITOR_LOAD_STORE_UNIT";;
-  *)           sim_mon="-DWITH_MON='$enableval'";;
-esac],[sim_float=""])dnl
-
-AC_ARG_ENABLE(sim-function-unit,
-[  --enable-sim-function-unit          Specify whether detailed functional unit support is built.],
-[case "${enableval}" in
-  yes) sim_func="-DWITH_FUNCTION_UNIT=1";;
-  no)  sim_func="-DWITH_FUNCTION_UNIT=0";;
-  *)   sim_func="";;
-esac],[sim_func=""])dnl
+  yes)         sim_monitor="-DWITH_MON='MONITOR_INSTRUCTION_ISSUE | MONITOR_LOAD_STORE_UNIT'";;
+  no)          sim_monitor="-DWITH_MON=0";;
+  instruction) sim_monitor="-DWITH_MON=MONITOR_INSTRUCTION_ISSUE";;
+  memory)      sim_monitor="-DWITH_MON=MONITOR_LOAD_STORE_UNIT";;
+  *)           AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-mon"); sim_env="";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_monitor" != x""; then
+  echo "Setting monitor flags = $sim_monitor" 6>&1
+fi],[sim_monitor=""])dnl
 
 AC_ARG_ENABLE(sim-model,
 [  --enable-sim-model=which            Specify PowerPC to model.],
 [case "${enableval}" in
-  yes) sim_model="";;
-  no)  sim_model="";;
-  *)   sim_model="-DWITH_PPC_MODEL=${enableval}";;
-esac],[sim_model=""])dnl
+  yes|no)      AC_MSG_ERROR("No value supplied for --enable-sim-model=model");;
+  *)           sim_model="-DWITH_MODEL=${enableval}";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_model" != x""; then
+  echo "Setting model flags = $sim_model" 6>&1
+fi],[sim_model=""])dnl
 
 AC_ARG_ENABLE(sim-default-model,
 [  --enable-sim-default-model=which    Specify default PowerPC to model.],
 [case "${enableval}" in
-  yes) sim_default_model="";;
-  no)  sim_default_model="";;
-  *)   sim_default_model="-DWITH_DEFAULT_PPC_MODEL=${enableval}";;
-esac],[sim_model=""])dnl
-
-AC_CONFIG_HEADER(config.h:config.in)
+  yes|no)      AC_MSG_ERROR("No value supplied for --enable-sim-default-model=model");;
+  *)           sim_default_model="-DWITH_DEFAULT_MODEL=${enableval}";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_default_model" != x""; then
+  echo "Setting default-model flags = $sim_default_model" 6>&1
+fi],[sim_model=""])dnl
+
+AC_ARG_ENABLE(sim-model-issue,
+[  --enable-sim-model-issue            Specify whether to simulate model specific actions],
+[case "${enableval}" in
+  yes) sim_model_issue="-DWITH_MODEL_ISSUE=MODEL_ISSUE_PROCESS";;
+  no)  sim_model_issue="-DWITH_MODEL_ISSUE=MODEL_ISSUE_IGNORE";;
+  *)   AC_MSG_ERROR("--enable-sim-model-issue does not take a value"); sim_model_issue="";;
+esac
+if test x"$silent" != x"yes"; then
+  echo "Setting model-issue flags = $sim_model_issue" 6>&1
+fi],[sim_model_issue=""])dnl
+
+AC_ARG_ENABLE(sim-stdio,
+[  --enable-sim-stdio                  Specify whether to use stdio for console input/output.],
+[case "${enableval}" in
+  yes) sim_stdio="-DWITH_STDIO=DO_USE_STDIO";;
+  no)  sim_stdio="-DWITH_STDIO=DONT_USE_STDIO";;
+  *)   AC_MSG_ERROR("Unknown value $enableval passed to --enable-sim-stdio"); sim_stdio="";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_stdio" != x""; then
+  echo "Setting stdio flags = $sim_stdio" 6>&1
+fi],[sim_stdio=""])dnl
 
 AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/../..)
 AC_CANONICAL_SYSTEM
@@ -232,7 +402,9 @@ AC_ARG_PROGRAM
 
 . ${srcdir}/../../bfd/configure.host
 
-AC_PROG_CC
+AC_CONFIG_HEADER(config.h:config.in)
+
+AC_SUBST(CC_FOR_BUILD)
 AC_SUBST(CFLAGS)
 AC_SUBST(HDEFINES)
 AR=${AR-ar}
@@ -249,6 +421,7 @@ AC_SUBST(sim_icache)
 AC_SUBST(sim_inline)
 AC_SUBST(sim_bswap)
 AC_SUBST(sim_endian)
+AC_SUBST(sim_xor_endian)
 AC_SUBST(sim_hostendian)
 AC_SUBST(sim_smp)
 AC_SUBST(sim_bitsize)
@@ -259,23 +432,22 @@ AC_SUBST(sim_alignment)
 AC_SUBST(sim_float)
 AC_SUBST(sim_trace)
 AC_SUBST(sim_assert)
+AC_SUBST(sim_reserved)
 AC_SUBST(sim_monitor)
-AC_SUBST(sim_func)
 AC_SUBST(sim_model)
 AC_SUBST(sim_default_model)
+AC_SUBST(sim_model_issue)
+AC_SUBST(sim_stdio)
 
-AC_CHECK_FUNCS(getrusage)
+AC_STRUCT_ST_BLKSIZE
+AC_STRUCT_ST_BLOCKS
+AC_STRUCT_ST_RDEV
+AC_STRUCT_TIMEZONE
 
-# Put a plausible default for CC_FOR_BUILD in Makefile.
-AC_C_CROSS
-if test "x$cross_compiling" = "xno"; then
-  CC_FOR_BUILD='$(CC)'
-else
-  CC_FOR_BUILD=gcc
-fi
-AC_SUBST(CC_FOR_BUILD)
+AC_CHECK_FUNCS(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)
 
-AC_CHECK_HEADERS(string.h strings.h stdlib.h time.h sys/times.h unistd.h sys/resource.h)
+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)
+AC_HEADER_DIRENT
 
 AC_OUTPUT(Makefile,
 [case x$CONFIG_HEADERS in xconfig.h:config.in) echo > stamp-h ;; esac])