From be0387eed099dbc2f2bdc92fbf60e04f846c3b2b Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vapier@gentoo.org>
Date: Sat, 19 Jun 2021 19:36:39 -0400
Subject: sim: hw: rework configure option & device selection

The sim-hardware configure option allows builders to select a set of
device models to enable.  But this seems like unnecessary overkill:
the existence of individual device models doesn't affect performance
at all as they are only enabled at runtime if the config uses them,
and individually these are all <5KB a piece.  Stripping off a total
of ~50KB from a ~1MB binary doesn't seem useful, and it's extremely
unlikely anyone will ever bother.

So let's simplify the configure/make logic by turning sim-hardware
into a boolean option like many of the other sim options.  Any ports
that have unique device models will declare them in their Makefile
instead of at configure time.  This will allow us to (eventually)
unify the setting into the common dir.
---
 sim/ChangeLog                    |   8 +++
 sim/README-HACKING               |   4 +-
 sim/aarch64/ChangeLog            |   4 ++
 sim/aarch64/configure            |  64 ++++++++----------
 sim/arm/ChangeLog                |   4 ++
 sim/arm/configure                |  64 ++++++++----------
 sim/avr/ChangeLog                |   4 ++
 sim/avr/configure                |  64 ++++++++----------
 sim/bfin/ChangeLog               |   6 ++
 sim/bfin/Makefile.in             |  33 ++++++++++
 sim/bfin/configure               | 136 +++++++++++++--------------------------
 sim/bfin/configure.ac            |  33 ----------
 sim/bpf/ChangeLog                |   4 ++
 sim/bpf/configure                |  62 +++++++-----------
 sim/common/ChangeLog             |   7 ++
 sim/common/Make-common.in        |  11 ++--
 sim/cr16/ChangeLog               |   4 ++
 sim/cr16/configure               |  64 ++++++++----------
 sim/cris/ChangeLog               |   6 ++
 sim/cris/Makefile.in             |   2 +
 sim/cris/configure               |  90 +++++++++++---------------
 sim/cris/configure.ac            |   1 -
 sim/d10v/ChangeLog               |   4 ++
 sim/d10v/configure               |  64 ++++++++----------
 sim/erc32/ChangeLog              |   4 ++
 sim/erc32/configure              |  64 ++++++++----------
 sim/example-synacor/ChangeLog    |   4 ++
 sim/example-synacor/configure    |  64 ++++++++----------
 sim/frv/ChangeLog                |   4 ++
 sim/frv/configure                |  62 +++++++-----------
 sim/ft32/ChangeLog               |   4 ++
 sim/ft32/configure               |  64 ++++++++----------
 sim/h8300/ChangeLog              |   4 ++
 sim/h8300/configure              |  64 ++++++++----------
 sim/iq2000/ChangeLog             |   4 ++
 sim/iq2000/configure             |  62 +++++++-----------
 sim/lm32/ChangeLog               |   6 ++
 sim/lm32/Makefile.in             |   2 +
 sim/lm32/configure               |  60 +++++++----------
 sim/lm32/configure.ac            |   1 -
 sim/m32c/ChangeLog               |   4 ++
 sim/m32c/configure               |  64 ++++++++----------
 sim/m32r/ChangeLog               |   6 ++
 sim/m32r/Makefile.in             |   2 +
 sim/m32r/configure               |  61 +++++++-----------
 sim/m32r/configure.ac            |   2 -
 sim/m4/sim_ac_option_hardware.m4 |  57 +++++++---------
 sim/m4/sim_ac_output.m4          |   3 -
 sim/m68hc11/ChangeLog            |   6 ++
 sim/m68hc11/Makefile.in          |   2 +
 sim/m68hc11/configure            |  64 +++++++-----------
 sim/m68hc11/configure.ac         |   4 --
 sim/mcore/ChangeLog              |   4 ++
 sim/mcore/configure              |  64 ++++++++----------
 sim/microblaze/ChangeLog         |   4 ++
 sim/microblaze/configure         |  64 ++++++++----------
 sim/mips/ChangeLog               |   6 ++
 sim/mips/Makefile.in             |   1 +
 sim/mips/configure               |  63 +++++++-----------
 sim/mips/configure.ac            |   4 --
 sim/mn10300/ChangeLog            |   6 ++
 sim/mn10300/Makefile.in          |   2 +
 sim/mn10300/configure            |  60 +++++++----------
 sim/mn10300/configure.ac         |   1 -
 sim/moxie/ChangeLog              |   4 ++
 sim/moxie/configure              |  64 ++++++++----------
 sim/msp430/ChangeLog             |   4 ++
 sim/msp430/configure             |  64 ++++++++----------
 sim/or1k/ChangeLog               |   4 ++
 sim/or1k/configure               |  62 +++++++-----------
 sim/pru/ChangeLog                |   4 ++
 sim/pru/configure                |  64 ++++++++----------
 sim/riscv/ChangeLog              |   4 ++
 sim/riscv/configure              |  62 +++++++-----------
 sim/rl78/ChangeLog               |   4 ++
 sim/rl78/configure               |  64 ++++++++----------
 sim/rx/ChangeLog                 |   4 ++
 sim/rx/configure                 |  64 ++++++++----------
 sim/sh/ChangeLog                 |   4 ++
 sim/sh/configure                 |  64 ++++++++----------
 sim/v850/ChangeLog               |   4 ++
 sim/v850/configure               |  62 +++++++-----------
 82 files changed, 1052 insertions(+), 1324 deletions(-)

(limited to 'sim')

diff --git a/sim/ChangeLog b/sim/ChangeLog
index 5ccfdba..bdc0ad8 100644
--- a/sim/ChangeLog
+++ b/sim/ChangeLog
@@ -1,3 +1,11 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* README-HACKING: Change SIM_AC_OPTION_HARDWARE to
+	SIM_EXTRA_HW_DEVICES.
+	* m4/sim_ac_option_hardware.m4: Remove first argument, and change
+	configure option to a boolean.  Delete device list.
+	* m4/sim_ac_output.m4: Delete sim_hw variables.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* README-HACKING (SIM_AC_COMMON): Delete mention.
diff --git a/sim/README-HACKING b/sim/README-HACKING
index 3715467..9bb705e 100644
--- a/sim/README-HACKING
+++ b/sim/README-HACKING
@@ -387,8 +387,8 @@ Hardware Devices
 ================
 
 The simplest simulator doesn't include hardware device support.  Once you're
-ready to move on to the next level, call the common macro in your configure.ac:
-SIM_AC_OPTION_HARDWARE(devone devtwo devthree)
+ready to move on to the next level, declare in your Makefile.in:
+SIM_EXTRA_HW_DEVICES = devone devtwo devthree
 
 The basic hardware API is documented in common/hw-device.h.
 
diff --git a/sim/aarch64/ChangeLog b/sim/aarch64/ChangeLog
index 7ca8219..139e3e5 100644
--- a/sim/aarch64/ChangeLog
+++ b/sim/aarch64/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/aarch64/configure b/sim/aarch64/configure
index b62feb4..f3b1467 100755
--- a/sim/aarch64/configure
+++ b/sim/aarch64/configure
@@ -590,6 +590,10 @@ sim_scache
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,10 +631,7 @@ PACKAGE_VERSION
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL
-sim_hw
-sim_hw_objs
-sim_hw_cflags'
+SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
@@ -1246,8 +1247,7 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1679,12 +1679,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1692,42 +1688,37 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
 fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
 
 
 cgen_breaks=""
@@ -1752,9 +1743,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/arm/ChangeLog b/sim/arm/ChangeLog
index 164c785..9abf461 100644
--- a/sim/arm/ChangeLog
+++ b/sim/arm/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/arm/configure b/sim/arm/configure
index b62feb4..f3b1467 100755
--- a/sim/arm/configure
+++ b/sim/arm/configure
@@ -590,6 +590,10 @@ sim_scache
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,10 +631,7 @@ PACKAGE_VERSION
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL
-sim_hw
-sim_hw_objs
-sim_hw_cflags'
+SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
@@ -1246,8 +1247,7 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1679,12 +1679,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1692,42 +1688,37 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
 fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
 
 
 cgen_breaks=""
@@ -1752,9 +1743,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/avr/ChangeLog b/sim/avr/ChangeLog
index e200f20..9a7ed85 100644
--- a/sim/avr/ChangeLog
+++ b/sim/avr/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/avr/configure b/sim/avr/configure
index b62feb4..f3b1467 100755
--- a/sim/avr/configure
+++ b/sim/avr/configure
@@ -590,6 +590,10 @@ sim_scache
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,10 +631,7 @@ PACKAGE_VERSION
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL
-sim_hw
-sim_hw_objs
-sim_hw_cflags'
+SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
@@ -1246,8 +1247,7 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1679,12 +1679,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1692,42 +1688,37 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
 fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
 
 
 cgen_breaks=""
@@ -1752,9 +1743,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/bfin/ChangeLog b/sim/bfin/ChangeLog
index e3e352a..7c34a4f 100644
--- a/sim/bfin/ChangeLog
+++ b/sim/bfin/ChangeLog
@@ -1,3 +1,9 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* Makefile.in (SIM_EXTRA_HW_DEVICES): Define.
+	* configure.ac (SIM_AC_OPTION_HARDWARE): Delete call.
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/bfin/Makefile.in b/sim/bfin/Makefile.in
index e353615..57b9b5e 100644
--- a/sim/bfin/Makefile.in
+++ b/sim/bfin/Makefile.in
@@ -26,6 +26,39 @@ SIM_OBJS = \
 	machs.o \
 	sim-resume.o
 
+SIM_EXTRA_HW_DEVICES = \
+	bfin_cec \
+	bfin_ctimer \
+	bfin_dma \
+	bfin_dmac \
+	bfin_ebiu_amc \
+	bfin_ebiu_ddrc \
+	bfin_ebiu_sdc \
+	bfin_emac \
+	bfin_eppi \
+	bfin_evt \
+	bfin_gpio \
+	bfin_gpio2 \
+	bfin_gptimer \
+	bfin_jtag \
+	bfin_mmu \
+	bfin_nfc \
+	bfin_otp \
+	bfin_pfmon \
+	bfin_pint \
+	bfin_pll \
+	bfin_ppi \
+	bfin_rtc \
+	bfin_sic \
+	bfin_spi \
+	bfin_trace \
+	bfin_twi \
+	bfin_uart \
+	bfin_uart2 \
+	bfin_wdog \
+	bfin_wp \
+	eth_phy
+
 SIM_EXTRA_CFLAGS = @SDL_CFLAGS@
 SIM_EXTRA_LIBS = @SDL_LIBS@ -lm
 
diff --git a/sim/bfin/configure b/sim/bfin/configure
index 0453bae..a8a383a 100755
--- a/sim/bfin/configure
+++ b/sim/bfin/configure
@@ -589,6 +589,10 @@ sim_scache
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 OBJEXT
 EXEEXT
 ac_ct_CC
@@ -639,9 +643,6 @@ PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
 SHELL
-sim_hw
-sim_hw_objs
-sim_hw_cflags
 sim_default_model'
 ac_subst_files=''
 ac_user_opts='
@@ -1271,8 +1272,7 @@ Optional Features:
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
   --enable-sim-default-model=model
                           Specify default model to simulate
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Some influential environment variables:
   PKG_CONFIG  path to pkg-config utility
@@ -1824,88 +1824,6 @@ fi
 
 
 
-hardware="cfi core pal glue \
-	bfin_cec \
-	bfin_ctimer \
-	bfin_dma \
-	bfin_dmac \
-	bfin_ebiu_amc \
-	bfin_ebiu_ddrc \
-	bfin_ebiu_sdc \
-	bfin_emac \
-	bfin_eppi \
-	bfin_evt \
-	bfin_gpio \
-	bfin_gpio2 \
-	bfin_gptimer \
-	bfin_jtag \
-	bfin_mmu \
-	bfin_nfc \
-	bfin_otp \
-	bfin_pfmon \
-	bfin_pint \
-	bfin_pll \
-	bfin_ppi \
-	bfin_rtc \
-	bfin_sic \
-	bfin_spi \
-	bfin_trace \
-	bfin_twi \
-	bfin_uart \
-	bfin_uart2 \
-	bfin_wdog \
-	bfin_wp \
-	eth_phy \
-"
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
-# Check whether --enable-sim-hardware was given.
-if test "${enable_sim_hardware+set}" = set; then :
-  enableval=$enable_sim_hardware;
-else
-  enable_sim_hardware="yes"
-fi
-
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
-if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
-  sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
-  sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
-  # mingw does not support sockser
-  case ${host} in
-    *mingw*) ;;
-    *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
-       # that you instatiate.  Instead, other code will call into it directly.
-       # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
-       sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
-       ;;
-  esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
-fi
-
-
 
 
 
@@ -2960,6 +2878,47 @@ fi
 
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
+# Check whether --enable-sim-hardware was given.
+if test "${enable_sim_hardware+set}" = set; then :
+  enableval=$enable_sim_hardware;
+else
+  enable_sim_hardware="yes"
+fi
+
+sim_hw_sockser=
+if test "$enable_sim_hardware" = no; then
+  sim_hw_cflags="-DWITH_HW=0"
+elif test "$enable_sim_hardware" = yes; then
+  sim_hw_cflags="-DWITH_HW=1"
+  # mingw does not support sockser
+  case ${host} in
+    *mingw*) ;;
+    *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
+       # that you instatiate.  Instead, other code will call into it directly.
+       # At some point, we should convert it over.
+       sim_hw_sockser="dv-sockser.o"
+       sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
+       ;;
+  esac
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
+fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
+
 
 cgen_breaks=""
 if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
@@ -2983,9 +2942,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/bfin/configure.ac b/sim/bfin/configure.ac
index 4e31c6f..ab3bd5b 100644
--- a/sim/bfin/configure.ac
+++ b/sim/bfin/configure.ac
@@ -3,39 +3,6 @@ AC_INIT(Makefile.in)
 AC_CONFIG_MACRO_DIRS([../m4 ../.. ../../config])
 
 SIM_AC_OPTION_DEFAULT_MODEL(bf537)
-SIM_AC_OPTION_HARDWARE(\
-	bfin_cec \
-	bfin_ctimer \
-	bfin_dma \
-	bfin_dmac \
-	bfin_ebiu_amc \
-	bfin_ebiu_ddrc \
-	bfin_ebiu_sdc \
-	bfin_emac \
-	bfin_eppi \
-	bfin_evt \
-	bfin_gpio \
-	bfin_gpio2 \
-	bfin_gptimer \
-	bfin_jtag \
-	bfin_mmu \
-	bfin_nfc \
-	bfin_otp \
-	bfin_pfmon \
-	bfin_pint \
-	bfin_pll \
-	bfin_ppi \
-	bfin_rtc \
-	bfin_sic \
-	bfin_spi \
-	bfin_trace \
-	bfin_twi \
-	bfin_uart \
-	bfin_uart2 \
-	bfin_wdog \
-	bfin_wp \
-	eth_phy \
-)
 
 PKG_PROG_PKG_CONFIG
 PKG_CHECK_MODULES(SDL, sdl, [
diff --git a/sim/bpf/ChangeLog b/sim/bpf/ChangeLog
index e31f509..d4b61ca 100644
--- a/sim/bpf/ChangeLog
+++ b/sim/bpf/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/bpf/configure b/sim/bpf/configure
index e07b470..d6cbb9d 100755
--- a/sim/bpf/configure
+++ b/sim/bpf/configure
@@ -587,6 +587,10 @@ LIBOBJS
 sim_reserved_bits
 sim_float
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -626,9 +630,6 @@ PACKAGE_NAME
 PATH_SEPARATOR
 SHELL
 sim_scache
-sim_hw
-sim_hw_objs
-sim_hw_cflags
 sim_default_model
 sim_bitsize'
 ac_subst_files=''
@@ -1254,8 +1255,7 @@ Optional Features:
                           Specify simulator execution cache size
   --enable-sim-default-model=model
                           Specify default model to simulate
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1782,12 +1782,8 @@ fi
 
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1795,44 +1791,39 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
+fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
 fi
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
+
+
 cgen_breaks=""
 if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
 cgen_breaks="break cgen_rtx_error";
@@ -1855,9 +1846,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
index f3530df..02540a0 100644
--- a/sim/common/ChangeLog
+++ b/sim/common/ChangeLog
@@ -1,3 +1,10 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* Make-common.in (SIM_HW): Delete.
+	(SIM_HW_OBJS): Redefine.
+	(SIM_HW_SOCKSER, SIM_HW_DEVICES): Define.
+	(stamp-hw): Change SIM_HW to SIM_HW_DEVICES.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* Make-common.in (CGENDIR): Delete.
diff --git a/sim/common/Make-common.in b/sim/common/Make-common.in
index ba62c32..6d7c9c4 100644
--- a/sim/common/Make-common.in
+++ b/sim/common/Make-common.in
@@ -73,8 +73,7 @@ SIM_BITSIZE = @sim_bitsize@
 SIM_DEFAULT_MODEL = @sim_default_model@
 SIM_FLOAT = @sim_float@
 SIM_HW_CFLAGS = @sim_hw_cflags@
-SIM_HW_OBJS = @sim_hw_objs@
-SIM_HW = @sim_hw@
+SIM_HW_SOCKSER = @sim_hw_sockser@
 SIM_RESERVED_BITS = @sim_reserved_bits@
 SIM_SCACHE = @sim_scache@
 SIM_WARN_CFLAGS = $(WARN_CFLAGS)
@@ -216,6 +215,10 @@ BUILD_CFLAGS = $(CFLAGS_FOR_BUILD) $(CSEARCH)
 
 COMMON_DEP_CFLAGS = $(CONFIG_CFLAGS) $(CSEARCH) $(SIM_EXTRA_CFLAGS)
 
+SIM_HW_DEVICES = cfi core pal glue $(SIM_EXTRA_HW_DEVICES)
+SIM_HW_OBJS = $(SIM_COMMON_HW_OBJS) $(SIM_HW_DEVICES:%=dv-%.o) $(SIM_HW_SOCKSER)
+@SIM_ENABLE_HW_FALSE@SIM_HW_OBJS =
+
 ZLIB = $(zlibdir) -lz
 LIBIBERTY_LIB = ../../libiberty/libiberty.a
 BFD_LIB = ../../bfd/libbfd.a
@@ -417,12 +420,12 @@ hw-config.h: stamp-hw ; @true
 stamp-hw: Makefile.in $(srccom)/Make-common.in config.status Makefile
 	rm -f tmp-hw.h
 	echo "/* generated by Makefile */" > tmp-hw.h
-	sim_hw="$(SIM_HW)"; \
+	sim_hw="$(SIM_HW_DEVICES)"; \
 	for hw in $$sim_hw ; do \
 	  echo "extern const struct hw_descriptor dv_$${hw}_descriptor[];" ; \
 	done >> tmp-hw.h
 	echo "const struct hw_descriptor *hw_descriptors[] = {" >> tmp-hw.h
-	sim_hw="$(SIM_HW)"; \
+	sim_hw="$(SIM_HW_DEVICES)"; \
 	for hw in $$sim_hw ; do \
 	  echo "  dv_$${hw}_descriptor," ; \
 	done >> tmp-hw.h
diff --git a/sim/cr16/ChangeLog b/sim/cr16/ChangeLog
index 15b31dc..dd2215a 100644
--- a/sim/cr16/ChangeLog
+++ b/sim/cr16/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/cr16/configure b/sim/cr16/configure
index b62feb4..f3b1467 100755
--- a/sim/cr16/configure
+++ b/sim/cr16/configure
@@ -590,6 +590,10 @@ sim_scache
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,10 +631,7 @@ PACKAGE_VERSION
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL
-sim_hw
-sim_hw_objs
-sim_hw_cflags'
+SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
@@ -1246,8 +1247,7 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1679,12 +1679,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1692,42 +1688,37 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
 fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
 
 
 cgen_breaks=""
@@ -1752,9 +1743,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/cris/ChangeLog b/sim/cris/ChangeLog
index 7f2b465..d570ba9 100644
--- a/sim/cris/ChangeLog
+++ b/sim/cris/ChangeLog
@@ -1,3 +1,9 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* Makefile.in (SIM_EXTRA_HW_DEVICES): Define.
+	* configure.ac (SIM_AC_OPTION_HARDWARE): Delete call.
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* traps.c (dump_statistics): Clean up sim_io_eprintf calls, and
diff --git a/sim/cris/Makefile.in b/sim/cris/Makefile.in
index ef83ce8..dfc6d6c 100644
--- a/sim/cris/Makefile.in
+++ b/sim/cris/Makefile.in
@@ -31,6 +31,8 @@ SIM_OBJS = \
 	$(CRISV32F_OBJS) \
 	traps.o
 
+SIM_EXTRA_HW_DEVICES = rv cris cris_900000xx
+
 # Extra headers included by sim-main.h.
 # FIXME: $(srccom)/cgen-ops.h should be in CGEN_INCLUDE_DEPS.
 SIM_EXTRA_DEPS = \
diff --git a/sim/cris/configure b/sim/cris/configure
index 4c45fc6..89a7bee 100755
--- a/sim/cris/configure
+++ b/sim/cris/configure
@@ -588,6 +588,10 @@ sim_reserved_bits
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,16 +631,13 @@ PACKAGE_NAME
 PATH_SEPARATOR
 SHELL
 sim_scache
-sim_hw
-sim_hw_objs
-sim_hw_cflags
 sim_default_model'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
 enable_sim_scache
-enable_sim_hardware
 enable_sim_default_model
+enable_sim_hardware
 '
       ac_precious_vars='build_alias
 host_alias
@@ -1250,10 +1251,9 @@ Optional Features:
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
   --enable-sim-scache=size
                           Specify simulator execution cache size
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
   --enable-sim-default-model=model
                           Specify default model to simulate
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1705,11 +1705,26 @@ fi
 
 
 
-hardware="cfi core pal glue rv cris cris_900000xx"
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
+# The default model shouldn't matter as long as there's a BFD.
+
+default_sim_default_model="crisv32"
+# Check whether --enable-sim-default-model was given.
+if test "${enable_sim_default_model+set}" = set; then :
+  enableval=$enable_sim_default_model; case "${enableval}" in
+  yes|no) as_fn_error $? "\"Missing argument to --enable-sim-default-model\"" "$LINENO" 5;;
+  *)	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 = $sim_default_model" 6>&1
+fi
+else
+  sim_default_model="-DWITH_DEFAULT_MODEL='\"${default_sim_default_model}\"'"
+fi
+
+
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1717,61 +1732,37 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
-fi
-
-
-# The default model shouldn't matter as long as there's a BFD.
-
-default_sim_default_model="crisv32"
-# Check whether --enable-sim-default-model was given.
-if test "${enable_sim_default_model+set}" = set; then :
-  enableval=$enable_sim_default_model; case "${enableval}" in
-  yes|no) as_fn_error $? "\"Missing argument to --enable-sim-default-model\"" "$LINENO" 5;;
-  *)	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 = $sim_default_model" 6>&1
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
 fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
 else
-  sim_default_model="-DWITH_DEFAULT_MODEL='\"${default_sim_default_model}\"'"
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
 fi
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
 
 
 cgen_breaks=""
@@ -1796,9 +1787,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/cris/configure.ac b/sim/cris/configure.ac
index 13500a0..57a2d5f 100644
--- a/sim/cris/configure.ac
+++ b/sim/cris/configure.ac
@@ -3,7 +3,6 @@ AC_INIT(Makefile.in)
 AC_CONFIG_MACRO_DIRS([../m4 ../.. ../../config])
 
 SIM_AC_OPTION_SCACHE(16384)
-SIM_AC_OPTION_HARDWARE(rv cris cris_900000xx)
 
 # The default model shouldn't matter as long as there's a BFD.
 SIM_AC_OPTION_DEFAULT_MODEL(crisv32)
diff --git a/sim/d10v/ChangeLog b/sim/d10v/ChangeLog
index e0c518c..4aa7608 100644
--- a/sim/d10v/ChangeLog
+++ b/sim/d10v/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/d10v/configure b/sim/d10v/configure
index b62feb4..f3b1467 100755
--- a/sim/d10v/configure
+++ b/sim/d10v/configure
@@ -590,6 +590,10 @@ sim_scache
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,10 +631,7 @@ PACKAGE_VERSION
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL
-sim_hw
-sim_hw_objs
-sim_hw_cflags'
+SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
@@ -1246,8 +1247,7 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1679,12 +1679,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1692,42 +1688,37 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
 fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
 
 
 cgen_breaks=""
@@ -1752,9 +1743,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/erc32/ChangeLog b/sim/erc32/ChangeLog
index ef7025f..75446a9 100644
--- a/sim/erc32/ChangeLog
+++ b/sim/erc32/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/erc32/configure b/sim/erc32/configure
index cc8c9be..474a782 100755
--- a/sim/erc32/configure
+++ b/sim/erc32/configure
@@ -591,6 +591,10 @@ sim_scache
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 READLINE_CFLAGS
 READLINE
 TERMCAP
@@ -641,10 +645,7 @@ PACKAGE_VERSION
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL
-sim_hw
-sim_hw_objs
-sim_hw_cflags'
+SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
@@ -1266,8 +1267,7 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Some influential environment variables:
   CC          C compiler command
@@ -3032,12 +3032,8 @@ fi
 fi
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -3045,42 +3041,37 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
 fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
 
 
 cgen_breaks=""
@@ -3105,9 +3096,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/example-synacor/ChangeLog b/sim/example-synacor/ChangeLog
index ef2e97d..ed8ddc3 100644
--- a/sim/example-synacor/ChangeLog
+++ b/sim/example-synacor/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/example-synacor/configure b/sim/example-synacor/configure
index b62feb4..f3b1467 100755
--- a/sim/example-synacor/configure
+++ b/sim/example-synacor/configure
@@ -590,6 +590,10 @@ sim_scache
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,10 +631,7 @@ PACKAGE_VERSION
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL
-sim_hw
-sim_hw_objs
-sim_hw_cflags'
+SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
@@ -1246,8 +1247,7 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1679,12 +1679,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1692,42 +1688,37 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
 fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
 
 
 cgen_breaks=""
@@ -1752,9 +1743,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/frv/ChangeLog b/sim/frv/ChangeLog
index 99d24c3..6bdcc60 100644
--- a/sim/frv/ChangeLog
+++ b/sim/frv/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/frv/configure b/sim/frv/configure
index f332cd1..922b937 100755
--- a/sim/frv/configure
+++ b/sim/frv/configure
@@ -588,6 +588,10 @@ sim_reserved_bits
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 sim_trapdump
 target_alias
 host_alias
@@ -628,9 +632,6 @@ PACKAGE_NAME
 PATH_SEPARATOR
 SHELL
 sim_scache
-sim_hw
-sim_hw_objs
-sim_hw_cflags
 sim_default_model'
 ac_subst_files=''
 ac_user_opts='
@@ -1255,8 +1256,7 @@ Optional Features:
   --enable-sim-default-model=model
                           Specify default model to simulate
   --enable-sim-trapdump   Make unknown traps dump the registers
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1742,12 +1742,8 @@ else
 fi
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1755,44 +1751,39 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
+fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
 fi
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
+
+
 cgen_breaks=""
 if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
 cgen_breaks="break cgen_rtx_error";
@@ -1815,9 +1806,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/ft32/ChangeLog b/sim/ft32/ChangeLog
index ba229fc..c8a4629 100644
--- a/sim/ft32/ChangeLog
+++ b/sim/ft32/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/ft32/configure b/sim/ft32/configure
index b62feb4..f3b1467 100755
--- a/sim/ft32/configure
+++ b/sim/ft32/configure
@@ -590,6 +590,10 @@ sim_scache
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,10 +631,7 @@ PACKAGE_VERSION
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL
-sim_hw
-sim_hw_objs
-sim_hw_cflags'
+SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
@@ -1246,8 +1247,7 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1679,12 +1679,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1692,42 +1688,37 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
 fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
 
 
 cgen_breaks=""
@@ -1752,9 +1743,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/h8300/ChangeLog b/sim/h8300/ChangeLog
index a495f5f..94b6f3b 100644
--- a/sim/h8300/ChangeLog
+++ b/sim/h8300/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/h8300/configure b/sim/h8300/configure
index b62feb4..f3b1467 100755
--- a/sim/h8300/configure
+++ b/sim/h8300/configure
@@ -590,6 +590,10 @@ sim_scache
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,10 +631,7 @@ PACKAGE_VERSION
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL
-sim_hw
-sim_hw_objs
-sim_hw_cflags'
+SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
@@ -1246,8 +1247,7 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1679,12 +1679,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1692,42 +1688,37 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
 fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
 
 
 cgen_breaks=""
@@ -1752,9 +1743,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/iq2000/ChangeLog b/sim/iq2000/ChangeLog
index 2b1416b..d54be42 100644
--- a/sim/iq2000/ChangeLog
+++ b/sim/iq2000/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/iq2000/configure b/sim/iq2000/configure
index d191f2e..72799ce 100755
--- a/sim/iq2000/configure
+++ b/sim/iq2000/configure
@@ -588,6 +588,10 @@ sim_reserved_bits
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,9 +631,6 @@ PACKAGE_NAME
 PATH_SEPARATOR
 SHELL
 sim_scache
-sim_hw
-sim_hw_objs
-sim_hw_cflags
 sim_default_model'
 ac_subst_files=''
 ac_user_opts='
@@ -1252,8 +1253,7 @@ Optional Features:
                           Specify simulator execution cache size
   --enable-sim-default-model=model
                           Specify default model to simulate
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1721,12 +1721,8 @@ fi
 
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1734,44 +1730,39 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
+fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
 fi
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
+
+
 cgen_breaks=""
 if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
 cgen_breaks="break cgen_rtx_error";
@@ -1794,9 +1785,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/lm32/ChangeLog b/sim/lm32/ChangeLog
index c731116..00da0a9 100644
--- a/sim/lm32/ChangeLog
+++ b/sim/lm32/ChangeLog
@@ -1,3 +1,9 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* Makefile.in (SIM_EXTRA_HW_DEVICES): Define.
+	* configure.ac (SIM_AC_OPTION_HARDWARE): Delete call.
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/lm32/Makefile.in b/sim/lm32/Makefile.in
index 2688827..bac9861 100644
--- a/sim/lm32/Makefile.in
+++ b/sim/lm32/Makefile.in
@@ -12,6 +12,8 @@ SIM_OBJS = \
         cpu.o decode.o sem.o model.o mloop.o \
         lm32.o traps.o user.o 
 
+SIM_EXTRA_HW_DEVICES = lm32cpu lm32timer lm32uart
+
 # List of extra dependencies.
 # Generally this consists of simulator specific files included by sim-main.h.
 SIM_EXTRA_DEPS = $(CGEN_INCLUDE_DEPS) $(srcdir)/../../opcodes/lm32-desc.h \
diff --git a/sim/lm32/configure b/sim/lm32/configure
index a50fe62..7a2d07c 100755
--- a/sim/lm32/configure
+++ b/sim/lm32/configure
@@ -588,6 +588,10 @@ sim_reserved_bits
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,9 +631,6 @@ PACKAGE_NAME
 PATH_SEPARATOR
 SHELL
 sim_scache
-sim_hw
-sim_hw_objs
-sim_hw_cflags
 sim_default_model'
 ac_subst_files=''
 ac_user_opts='
@@ -1252,8 +1253,7 @@ Optional Features:
                           Specify simulator execution cache size
   --enable-sim-default-model=model
                           Specify default model to simulate
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1721,11 +1721,8 @@ fi
 
 
 
-hardware="cfi core pal glue lm32cpu lm32timer lm32uart"
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1733,44 +1730,38 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
+fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
 fi
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
+
 
 cgen_breaks=""
 if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
@@ -1794,9 +1785,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/lm32/configure.ac b/sim/lm32/configure.ac
index edf7968..96b6f0e 100644
--- a/sim/lm32/configure.ac
+++ b/sim/lm32/configure.ac
@@ -4,6 +4,5 @@ AC_CONFIG_MACRO_DIRS([../m4 ../.. ../../config])
 
 SIM_AC_OPTION_SCACHE(16384)
 SIM_AC_OPTION_DEFAULT_MODEL(lm32)
-SIM_AC_OPTION_HARDWARE(lm32cpu lm32timer lm32uart)
 
 SIM_AC_OUTPUT
diff --git a/sim/m32c/ChangeLog b/sim/m32c/ChangeLog
index aab1e0d..428c348 100644
--- a/sim/m32c/ChangeLog
+++ b/sim/m32c/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/m32c/configure b/sim/m32c/configure
index b62feb4..f3b1467 100755
--- a/sim/m32c/configure
+++ b/sim/m32c/configure
@@ -590,6 +590,10 @@ sim_scache
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,10 +631,7 @@ PACKAGE_VERSION
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL
-sim_hw
-sim_hw_objs
-sim_hw_cflags'
+SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
@@ -1246,8 +1247,7 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1679,12 +1679,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1692,42 +1688,37 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
 fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
 
 
 cgen_breaks=""
@@ -1752,9 +1743,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/m32r/ChangeLog b/sim/m32r/ChangeLog
index 688ff01..87d6a42 100644
--- a/sim/m32r/ChangeLog
+++ b/sim/m32r/ChangeLog
@@ -1,3 +1,9 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* Makefile.in (SIM_EXTRA_HW_DEVICES): Define.
+	* configure.ac (SIM_AC_OPTION_HARDWARE): Delete call.
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/m32r/Makefile.in b/sim/m32r/Makefile.in
index f8ccb97..eb9641e 100644
--- a/sim/m32r/Makefile.in
+++ b/sim/m32r/Makefile.in
@@ -34,6 +34,8 @@ SIM_OBJS = \
 	$(M32R2_OBJS) \
 	$(TRAPS_OBJ)
 
+SIM_EXTRA_HW_DEVICES = m32r_cache m32r_uart
+
 # Extra headers included by sim-main.h.
 SIM_EXTRA_DEPS = \
 	$(CGEN_INCLUDE_DEPS) \
diff --git a/sim/m32r/configure b/sim/m32r/configure
index 79ce485..b115b95 100755
--- a/sim/m32r/configure
+++ b/sim/m32r/configure
@@ -588,6 +588,10 @@ sim_reserved_bits
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 sim_extra_cflags
 traps_obj
 target_alias
@@ -629,9 +633,6 @@ PACKAGE_NAME
 PATH_SEPARATOR
 SHELL
 sim_scache
-sim_hw
-sim_hw_objs
-sim_hw_cflags
 sim_default_model'
 ac_subst_files=''
 ac_user_opts='
@@ -1254,8 +1255,7 @@ Optional Features:
                           Specify simulator execution cache size
   --enable-sim-default-model=model
                           Specify default model to simulate
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1736,12 +1736,8 @@ fi
 
 
 
-
-hardware="cfi core pal glue m32r_cache m32r_uart"
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1749,44 +1745,38 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
+fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
 fi
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
+
 
 cgen_breaks=""
 if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
@@ -1810,9 +1800,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/m32r/configure.ac b/sim/m32r/configure.ac
index a45eebd..f98adb2 100644
--- a/sim/m32r/configure.ac
+++ b/sim/m32r/configure.ac
@@ -18,6 +18,4 @@ SIM_AC_OPTION_DEFAULT_MODEL(m32r/d)
 AC_SUBST(traps_obj)
 AC_SUBST(sim_extra_cflags)
 
-SIM_AC_OPTION_HARDWARE(m32r_cache m32r_uart)
-
 SIM_AC_OUTPUT
diff --git a/sim/m4/sim_ac_option_hardware.m4 b/sim/m4/sim_ac_option_hardware.m4
index 477ab26..1410183 100644
--- a/sim/m4/sim_ac_option_hardware.m4
+++ b/sim/m4/sim_ac_option_hardware.m4
@@ -14,55 +14,42 @@ dnl You should have received a copy of the GNU General Public License
 dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
 dnl
 dnl --enable-sim-hardware is for users of the simulator
-dnl arg[1] is a space separated list of extra target specific devices.
 AC_DEFUN([SIM_AC_OPTION_HARDWARE],
-[
-hardware="cfi core pal glue [$1]"
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([[^ ]][[^ ]]*\)/dv-\1.o/g'`"
-
+[dnl
+AC_MSG_CHECKING([for sim hardware settings])
 AC_ARG_ENABLE(sim-hardware,
-  [AS_HELP_STRING([--enable-sim-hardware=LIST],
-                  [Specify the hardware to be included in the build.])],
+  [AS_HELP_STRING([--enable-sim-hardware],
+		  [Whether to enable hardware/device simulation])],
   ,[enable_sim_hardware="yes"])
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  AC_MSG_ERROR([unknown argument "$enable_sim_hardware"])
 fi
-])
+dnl AM_CONDITIONAL([SIM_ENABLE_HW], [test "$enable_sim_hardware" = "yes"])
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+AC_SUBST(SIM_ENABLE_HW_TRUE)
+AC_SUBST(SIM_ENABLE_HW_FALSE)
+AC_MSG_RESULT(${enable_sim_hardware})
 AC_SUBST(sim_hw_cflags)
-AC_SUBST(sim_hw_objs)
-AC_SUBST(sim_hw)
+AC_SUBST(sim_hw_sockser)
+])
diff --git a/sim/m4/sim_ac_output.m4 b/sim/m4/sim_ac_output.m4
index 98385b9..8d26042 100644
--- a/sim/m4/sim_ac_output.m4
+++ b/sim/m4/sim_ac_output.m4
@@ -51,9 +51,6 @@ AC_SUBST(sim_bitsize)
 AC_SUBST(sim_float)
 AC_SUBST(sim_scache)
 AC_SUBST(sim_default_model)
-AC_SUBST(sim_hw_cflags)
-AC_SUBST(sim_hw_objs)
-AC_SUBST(sim_hw)
 AC_SUBST(sim_reserved_bits)
 
 AC_OUTPUT
diff --git a/sim/m68hc11/ChangeLog b/sim/m68hc11/ChangeLog
index 9f6a877..ea7373a 100644
--- a/sim/m68hc11/ChangeLog
+++ b/sim/m68hc11/ChangeLog
@@ -1,3 +1,9 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* Makefile.in (SIM_EXTRA_HW_DEVICES): Define.
+	* configure.ac (SIM_AC_OPTION_HARDWARE): Delete call.
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/m68hc11/Makefile.in b/sim/m68hc11/Makefile.in
index 8a04491..e7b6686 100644
--- a/sim/m68hc11/Makefile.in
+++ b/sim/m68hc11/Makefile.in
@@ -24,6 +24,8 @@ SIM_OBJS = $(M68HC11_OBJS) \
 	$(SIM_NEW_COMMON_OBJS) \
 	sim-resume.o
 
+SIM_EXTRA_HW_DEVICES = m68hc11 m68hc11sio m68hc11eepr m68hc11tim m68hc11spi nvram
+
 SIM_PROFILE= -DPROFILE=1 -DWITH_PROFILE=-1
 # We must use 32-bit addresses to support memory bank switching.
 # The WORD_BITSIZE is normally 16 but must be switched (temporarily)
diff --git a/sim/m68hc11/configure b/sim/m68hc11/configure
index a1e2842..f3b1467 100755
--- a/sim/m68hc11/configure
+++ b/sim/m68hc11/configure
@@ -590,6 +590,10 @@ sim_scache
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,10 +631,7 @@ PACKAGE_VERSION
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL
-sim_hw
-sim_hw_objs
-sim_hw_cflags'
+SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
@@ -1246,8 +1247,7 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1679,13 +1679,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-hardware="cfi core pal glue \
-  m68hc11 m68hc11sio m68hc11eepr m68hc11tim m68hc11spi nvram"
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1693,42 +1688,36 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
 fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
 
 
 
@@ -1754,9 +1743,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/m68hc11/configure.ac b/sim/m68hc11/configure.ac
index 02eccf0..99370b3 100644
--- a/sim/m68hc11/configure.ac
+++ b/sim/m68hc11/configure.ac
@@ -2,8 +2,4 @@ dnl Process this file with autoconf to produce a configure script.
 AC_INIT(Makefile.in)
 AC_CONFIG_MACRO_DIRS([../m4 ../.. ../../config])
 
-dnl Options available in this module
-SIM_AC_OPTION_HARDWARE(\
-  m68hc11 m68hc11sio m68hc11eepr m68hc11tim m68hc11spi nvram)
-
 SIM_AC_OUTPUT
diff --git a/sim/mcore/ChangeLog b/sim/mcore/ChangeLog
index d2e9b56..f2a862e 100644
--- a/sim/mcore/ChangeLog
+++ b/sim/mcore/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/mcore/configure b/sim/mcore/configure
index b62feb4..f3b1467 100755
--- a/sim/mcore/configure
+++ b/sim/mcore/configure
@@ -590,6 +590,10 @@ sim_scache
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,10 +631,7 @@ PACKAGE_VERSION
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL
-sim_hw
-sim_hw_objs
-sim_hw_cflags'
+SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
@@ -1246,8 +1247,7 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1679,12 +1679,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1692,42 +1688,37 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
 fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
 
 
 cgen_breaks=""
@@ -1752,9 +1743,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/microblaze/ChangeLog b/sim/microblaze/ChangeLog
index 910ed55..d2abcb6 100644
--- a/sim/microblaze/ChangeLog
+++ b/sim/microblaze/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/microblaze/configure b/sim/microblaze/configure
index b62feb4..f3b1467 100755
--- a/sim/microblaze/configure
+++ b/sim/microblaze/configure
@@ -590,6 +590,10 @@ sim_scache
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,10 +631,7 @@ PACKAGE_VERSION
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL
-sim_hw
-sim_hw_objs
-sim_hw_cflags'
+SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
@@ -1246,8 +1247,7 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1679,12 +1679,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1692,42 +1688,37 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
 fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
 
 
 cgen_breaks=""
@@ -1752,9 +1743,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/mips/ChangeLog b/sim/mips/ChangeLog
index a5685c5..168ea0a 100644
--- a/sim/mips/ChangeLog
+++ b/sim/mips/ChangeLog
@@ -1,3 +1,9 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* Makefile.in (SIM_EXTRA_HW_DEVICES): Define.
+	* configure.ac (SIM_AC_OPTION_HARDWARE): Delete call.
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/mips/Makefile.in b/sim/mips/Makefile.in
index 2f79c56..c04736b 100644
--- a/sim/mips/Makefile.in
+++ b/sim/mips/Makefile.in
@@ -69,6 +69,7 @@ SIM_OBJS = \
 	sim-main.o \
 	sim-resume.o \
 
+SIM_EXTRA_HW_DEVICES = tx3904cpu tx3904irc tx3904tmr tx3904sio
 
 # List of flags to always pass to $(CC).
 SIM_SUBTARGET=@SIM_SUBTARGET@
diff --git a/sim/mips/configure b/sim/mips/configure
index 4beb1e9..98ad8d5 100755
--- a/sim/mips/configure
+++ b/sim/mips/configure
@@ -587,6 +587,10 @@ LIBOBJS
 sim_default_model
 sim_scache
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 sim_multi_obj
 sim_multi_src
 sim_multi_igen_configs
@@ -636,9 +640,6 @@ PACKAGE_NAME
 PATH_SEPARATOR
 SHELL
 sim_reserved_bits
-sim_hw
-sim_hw_objs
-sim_hw_cflags
 sim_float
 sim_bitsize'
 ac_subst_files=''
@@ -1265,8 +1266,7 @@ Optional Features:
   --enable-sim-bitsize=N  Specify target bitsize (32 or 64)
   --enable-sim-float      Specify that the target processor has floating point
                           hardware
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -2194,15 +2194,9 @@ sim_micromips_flags=" -F ${sim_micromips_filter}  ${sim_micromips_machine}  ${si
 
 
 
-#
-# Add simulated hardware devices
-#
-
-hardware="cfi core pal glue tx3904cpu tx3904irc tx3904tmr tx3904sio"
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -2210,42 +2204,36 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
 fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
 
 
 
@@ -2271,9 +2259,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/mips/configure.ac b/sim/mips/configure.ac
index a8c16b2..e3a44a0 100644
--- a/sim/mips/configure.ac
+++ b/sim/mips/configure.ac
@@ -400,9 +400,5 @@ AC_SUBST(sim_multi_flags)
 AC_SUBST(sim_multi_igen_configs)
 AC_SUBST(sim_multi_src)
 AC_SUBST(sim_multi_obj)
-#
-# Add simulated hardware devices
-#
-SIM_AC_OPTION_HARDWARE(tx3904cpu tx3904irc tx3904tmr tx3904sio)
 
 SIM_AC_OUTPUT
diff --git a/sim/mn10300/ChangeLog b/sim/mn10300/ChangeLog
index 170d679..99d7a1c 100644
--- a/sim/mn10300/ChangeLog
+++ b/sim/mn10300/ChangeLog
@@ -1,3 +1,9 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* Makefile.in (SIM_EXTRA_HW_DEVICES): Define.
+	* configure.ac (SIM_AC_OPTION_HARDWARE): Delete call.
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/mn10300/Makefile.in b/sim/mn10300/Makefile.in
index ba48273..968378c 100644
--- a/sim/mn10300/Makefile.in
+++ b/sim/mn10300/Makefile.in
@@ -25,6 +25,8 @@ MN10300_OBJS = \
 
 SIM_OBJS = $(MN10300_OBJS) interp.o
 
+SIM_EXTRA_HW_DEVICES = mn103cpu mn103int mn103tim mn103ser mn103iop
+
 SIM_EXTRA_CLEAN = clean-igen
 # Extra dependencies for "sim-main.h"
 SIM_EXTRA_DEPS = mn10300_sim.h itable.h idecode.h
diff --git a/sim/mn10300/configure b/sim/mn10300/configure
index 8efbbc0..126b69a 100755
--- a/sim/mn10300/configure
+++ b/sim/mn10300/configure
@@ -588,6 +588,10 @@ sim_default_model
 sim_scache
 sim_float
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,9 +631,6 @@ PACKAGE_NAME
 PATH_SEPARATOR
 SHELL
 sim_reserved_bits
-sim_hw
-sim_hw_objs
-sim_hw_cflags
 sim_bitsize'
 ac_subst_files=''
 ac_user_opts='
@@ -1252,8 +1253,7 @@ Optional Features:
                           Specify whether to check reserved bits in
                           instruction
   --enable-sim-bitsize=N  Specify target bitsize (32 or 64)
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1761,11 +1761,8 @@ fi
 fi
 
 
-hardware="cfi core pal glue mn103cpu mn103int mn103tim mn103ser mn103iop"
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1773,44 +1770,38 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
+fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
 fi
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
+
 
 cgen_breaks=""
 if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
@@ -1834,9 +1825,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/mn10300/configure.ac b/sim/mn10300/configure.ac
index e531be9..74eb1fa 100644
--- a/sim/mn10300/configure.ac
+++ b/sim/mn10300/configure.ac
@@ -4,6 +4,5 @@ AC_CONFIG_MACRO_DIRS([../m4 ../.. ../../config])
 
 SIM_AC_OPTION_RESERVED_BITS
 SIM_AC_OPTION_BITSIZE(32,31)
-SIM_AC_OPTION_HARDWARE(mn103cpu mn103int mn103tim mn103ser mn103iop)
 
 SIM_AC_OUTPUT
diff --git a/sim/moxie/ChangeLog b/sim/moxie/ChangeLog
index 4c7ee51..2b1dcca 100644
--- a/sim/moxie/ChangeLog
+++ b/sim/moxie/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/moxie/configure b/sim/moxie/configure
index b62feb4..f3b1467 100755
--- a/sim/moxie/configure
+++ b/sim/moxie/configure
@@ -590,6 +590,10 @@ sim_scache
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,10 +631,7 @@ PACKAGE_VERSION
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL
-sim_hw
-sim_hw_objs
-sim_hw_cflags'
+SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
@@ -1246,8 +1247,7 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1679,12 +1679,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1692,42 +1688,37 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
 fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
 
 
 cgen_breaks=""
@@ -1752,9 +1743,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/msp430/ChangeLog b/sim/msp430/ChangeLog
index 7902b88..d2d4cf4 100644
--- a/sim/msp430/ChangeLog
+++ b/sim/msp430/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/msp430/configure b/sim/msp430/configure
index b62feb4..f3b1467 100755
--- a/sim/msp430/configure
+++ b/sim/msp430/configure
@@ -590,6 +590,10 @@ sim_scache
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,10 +631,7 @@ PACKAGE_VERSION
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL
-sim_hw
-sim_hw_objs
-sim_hw_cflags'
+SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
@@ -1246,8 +1247,7 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1679,12 +1679,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1692,42 +1688,37 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
 fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
 
 
 cgen_breaks=""
@@ -1752,9 +1743,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/or1k/ChangeLog b/sim/or1k/ChangeLog
index 6826444..be72b42 100644
--- a/sim/or1k/ChangeLog
+++ b/sim/or1k/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/or1k/configure b/sim/or1k/configure
index 4141f80..270eaaf 100755
--- a/sim/or1k/configure
+++ b/sim/or1k/configure
@@ -587,6 +587,10 @@ LIBOBJS
 sim_reserved_bits
 sim_float
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -626,9 +630,6 @@ PACKAGE_NAME
 PATH_SEPARATOR
 SHELL
 sim_scache
-sim_hw
-sim_hw_objs
-sim_hw_cflags
 sim_default_model
 sim_bitsize'
 ac_subst_files=''
@@ -1254,8 +1255,7 @@ Optional Features:
                           Specify simulator execution cache size
   --enable-sim-default-model=model
                           Specify default model to simulate
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1782,12 +1782,8 @@ fi
 
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1795,44 +1791,39 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
+fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
 fi
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
+
+
 cgen_breaks=""
 if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
 cgen_breaks="break cgen_rtx_error";
@@ -1855,9 +1846,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/pru/ChangeLog b/sim/pru/ChangeLog
index 7be5775..38f482d 100644
--- a/sim/pru/ChangeLog
+++ b/sim/pru/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/pru/configure b/sim/pru/configure
index b62feb4..f3b1467 100755
--- a/sim/pru/configure
+++ b/sim/pru/configure
@@ -590,6 +590,10 @@ sim_scache
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,10 +631,7 @@ PACKAGE_VERSION
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL
-sim_hw
-sim_hw_objs
-sim_hw_cflags'
+SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
@@ -1246,8 +1247,7 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1679,12 +1679,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1692,42 +1688,37 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
 fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
 
 
 cgen_breaks=""
@@ -1752,9 +1743,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/riscv/ChangeLog b/sim/riscv/ChangeLog
index 2bef5e8..f7a4494 100644
--- a/sim/riscv/ChangeLog
+++ b/sim/riscv/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/riscv/configure b/sim/riscv/configure
index 0710edf..c491d1e 100755
--- a/sim/riscv/configure
+++ b/sim/riscv/configure
@@ -588,6 +588,10 @@ sim_reserved_bits
 sim_scache
 sim_float
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -626,9 +630,6 @@ PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
 SHELL
-sim_hw
-sim_hw_objs
-sim_hw_cflags
 sim_default_model
 sim_bitsize'
 ac_subst_files=''
@@ -1251,8 +1252,7 @@ Optional Features:
   --enable-sim-default-model=model
                           Specify default model to simulate
   --enable-sim-bitsize=N  Specify target bitsize (32 or 64)
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1773,12 +1773,8 @@ fi
 fi
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1786,44 +1782,39 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
+fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
 fi
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
+
+
 cgen_breaks=""
 if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
 cgen_breaks="break cgen_rtx_error";
@@ -1846,9 +1837,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/rl78/ChangeLog b/sim/rl78/ChangeLog
index 5937c25..8f3a97d 100644
--- a/sim/rl78/ChangeLog
+++ b/sim/rl78/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/rl78/configure b/sim/rl78/configure
index b62feb4..f3b1467 100755
--- a/sim/rl78/configure
+++ b/sim/rl78/configure
@@ -590,6 +590,10 @@ sim_scache
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,10 +631,7 @@ PACKAGE_VERSION
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL
-sim_hw
-sim_hw_objs
-sim_hw_cflags'
+SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
@@ -1246,8 +1247,7 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1679,12 +1679,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1692,42 +1688,37 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
 fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
 
 
 cgen_breaks=""
@@ -1752,9 +1743,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/rx/ChangeLog b/sim/rx/ChangeLog
index f1c0a29..f6f2026 100644
--- a/sim/rx/ChangeLog
+++ b/sim/rx/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* Makefile.in: Rename sim_cycle_accurate_flags to
diff --git a/sim/rx/configure b/sim/rx/configure
index 38e6ed0..5b342b2 100755
--- a/sim/rx/configure
+++ b/sim/rx/configure
@@ -590,6 +590,10 @@ sim_scache
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 sim_rx_cycle_accurate_flags
 target_alias
 host_alias
@@ -628,10 +632,7 @@ PACKAGE_VERSION
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL
-sim_hw
-sim_hw_objs
-sim_hw_cflags'
+SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
@@ -1250,8 +1251,7 @@ Optional Features:
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
   --disable-sim-rx-cycle-accurate
                           Disable cycle accurate simulation (faster runtime)
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1703,12 +1703,8 @@ $as_echo "no" >&6; }
 fi
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1716,42 +1712,37 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
 fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
 
 
 cgen_breaks=""
@@ -1776,9 +1767,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/sh/ChangeLog b/sim/sh/ChangeLog
index 5db5bc7..a2b7ff1 100644
--- a/sim/sh/ChangeLog
+++ b/sim/sh/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/sh/configure b/sim/sh/configure
index b62feb4..f3b1467 100755
--- a/sim/sh/configure
+++ b/sim/sh/configure
@@ -590,6 +590,10 @@ sim_scache
 sim_float
 sim_bitsize
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,10 +631,7 @@ PACKAGE_VERSION
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL
-sim_hw
-sim_hw_objs
-sim_hw_cflags'
+SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
@@ -1246,8 +1247,7 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1679,12 +1679,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1692,42 +1688,37 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
 fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
 
 
 cgen_breaks=""
@@ -1752,9 +1743,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
diff --git a/sim/v850/ChangeLog b/sim/v850/ChangeLog
index 9256eb4..41badac 100644
--- a/sim/v850/ChangeLog
+++ b/sim/v850/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure: Regenerate.
+
 2021-06-20  Mike Frysinger  <vapier@gentoo.org>
 
 	* configure.ac (SIM_AC_COMMON): Delete.
diff --git a/sim/v850/configure b/sim/v850/configure
index c4fbe28..126b69a 100755
--- a/sim/v850/configure
+++ b/sim/v850/configure
@@ -588,6 +588,10 @@ sim_default_model
 sim_scache
 sim_float
 cgen_breaks
+sim_hw_sockser
+sim_hw_cflags
+SIM_ENABLE_HW_FALSE
+SIM_ENABLE_HW_TRUE
 target_alias
 host_alias
 build_alias
@@ -627,9 +631,6 @@ PACKAGE_NAME
 PATH_SEPARATOR
 SHELL
 sim_reserved_bits
-sim_hw
-sim_hw_objs
-sim_hw_cflags
 sim_bitsize'
 ac_subst_files=''
 ac_user_opts='
@@ -1252,8 +1253,7 @@ Optional Features:
                           Specify whether to check reserved bits in
                           instruction
   --enable-sim-bitsize=N  Specify target bitsize (32 or 64)
-  --enable-sim-hardware=LIST
-                          Specify the hardware to be included in the build.
+  --enable-sim-hardware   Whether to enable hardware/device simulation
 
 Report bugs to the package provider.
 _ACEOF
@@ -1761,12 +1761,8 @@ fi
 fi
 
 
-
-hardware="cfi core pal glue "
-sim_hw_cflags="-DWITH_HW=1"
-sim_hw="$hardware"
-sim_hw_objs="\$(SIM_COMMON_HW_OBJS) `echo $sim_hw | sed -e 's/\([^ ][^ ]*\)/dv-\1.o/g'`"
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim hardware settings" >&5
+$as_echo_n "checking for sim hardware settings... " >&6; }
 # Check whether --enable-sim-hardware was given.
 if test "${enable_sim_hardware+set}" = set; then :
   enableval=$enable_sim_hardware;
@@ -1774,44 +1770,39 @@ else
   enable_sim_hardware="yes"
 fi
 
-case ${enable_sim_hardware} in
-  yes|no) ;;
-  ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
-  *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
-  *)  hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
-esac
-
+sim_hw_sockser=
 if test "$enable_sim_hardware" = no; then
-  sim_hw_objs=
   sim_hw_cflags="-DWITH_HW=0"
-  sim_hw=
-else
+elif test "$enable_sim_hardware" = yes; then
   sim_hw_cflags="-DWITH_HW=1"
-  # remove duplicates
-  sim_hw=""
-  sim_hw_objs="\$(SIM_COMMON_HW_OBJS)"
-  for i in $hardware ; do
-    case " $sim_hw " in
-      *" $i "*) ;;
-      *) sim_hw="$sim_hw $i" ; sim_hw_objs="$sim_hw_objs dv-$i.o";;
-    esac
-  done
   # mingw does not support sockser
   case ${host} in
     *mingw*) ;;
     *) # TODO: We don't add dv-sockser to sim_hw as it is not a "real" device
        # that you instatiate.  Instead, other code will call into it directly.
        # At some point, we should convert it over.
-       sim_hw_objs="$sim_hw_objs dv-sockser.o"
+       sim_hw_sockser="dv-sockser.o"
        sim_hw_cflags="$sim_hw_cflags -DHAVE_DV_SOCKSER"
        ;;
   esac
-  if test x"$silent" != x"yes"; then
-    echo "Setting hardware to $sim_hw_cflags, $sim_hw, $sim_hw_objs"
-  fi
+else
+  as_fn_error $? "unknown argument \"$enable_sim_hardware\"" "$LINENO" 5
+fi
+if test "$enable_sim_hardware" = "yes"; then
+  SIM_ENABLE_HW_TRUE=
+  SIM_ENABLE_HW_FALSE='#'
+else
+  SIM_ENABLE_HW_TRUE='#'
+  SIM_ENABLE_HW_FALSE=
 fi
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${enable_sim_hardware}" >&5
+$as_echo "${enable_sim_hardware}" >&6; }
+
+
+
+
 cgen_breaks=""
 if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
 cgen_breaks="break cgen_rtx_error";
@@ -1834,9 +1825,6 @@ ac_config_commands="$ac_config_commands stamp-h"
 
 
 
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
-- 
cgit v1.1