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.
This commit is contained in:
Mike Frysinger
2021-06-19 19:36:39 -04:00
parent b4ee29a445
commit be0387eed0
82 changed files with 1060 additions and 1332 deletions

View File

@@ -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.

View File

@@ -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