sim: unify target->subdir handling for default tests

The testsuite subdir has a note about unifying the target->subdir logic,
so do just that.  The end goal here is to have `make check` work out of
the box without having to delve into dejagnu internals.

The target-specific logic is split out of the top level configure.ac file
and into a dedicated configure.tgt similar to other subprojects (gdb and
ld and etc...) with the difference that this file has to be included at
the m4 level instead of the shell level.  This is necessary only because
autoconf requires AC_CONFIG_SUBDIRS be given a string literal and not a
variable value.

Then the toplevel and the testsuite configure files pull this in, the sim
subdir gets expanded into testsuite/site.exp, and the default sim run code
uses this info to set the sim path to the local compiled run file if it
hasn't already been specified.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
Mike Frysinger 2010-04-26 16:23:24 +00:00
parent 64af4c92f8
commit 119da46568
11 changed files with 439 additions and 226 deletions

View File

@ -1,3 +1,9 @@
2010-04-26 Mike Frysinger <vapier@gentoo.org>
* configure.ac: Target logic moved out to and included from ...
* configure.tgt: ... this new file.
* configure: Regenerated.
2010-04-12 Mike Frysinger <vapier@gentoo.org> 2010-04-12 Mike Frysinger <vapier@gentoo.org>
* README-HACKING: Add more sections. * README-HACKING: Add more sections.

279
sim/configure vendored
View File

@ -554,6 +554,7 @@ ac_unique_file="Makefile.in"
enable_option_checking=no enable_option_checking=no
ac_subst_vars='LTLIBOBJS ac_subst_vars='LTLIBOBJS
LIBOBJS LIBOBJS
sim_arch
subdirs subdirs
CFLAGS_FOR_BUILD CFLAGS_FOR_BUILD
CC_FOR_BUILD CC_FOR_BUILD
@ -3604,6 +3605,9 @@ esac
fi fi
if test "${enable_sim}" != no; then
# WHEN ADDING ENTRIES TO THIS MATRIX: # WHEN ADDING ENTRIES TO THIS MATRIX:
# Make sure that the left side always has two dashes. Otherwise you # Make sure that the left side always has two dashes. Otherwise you
@ -3611,139 +3615,212 @@ fi
# convention, else the table becomes a real mess to understand and # convention, else the table becomes a real mess to understand and
# maintain. # maintain.
if test "${enable_sim}" != no; then
testsuite=no
common=yes sim_testsuite=no
igen=no sim_common=yes
case "${target}" in sim_igen=no
arm*-*-* | thumb*-*-* | strongarm*-*-* | xscale-*-*) sim_arch=
case "${target}" in
arm*-*-* | thumb*-*-* | strongarm*-*-* | xscale-*-*)
sim_arch=arm
subdirs="$subdirs arm" subdirs="$subdirs arm"
testsuite=yes
;;
avr*-*-*)
subdirs="$subdirs avr"
;; sim_testsuite=yes
cr16*-*-*) ;;
subdirs="$subdirs cr16" avr*-*-*)
testsuite=yes sim_arch=avr
;; subdirs="$subdirs avr"
cris-*-* | crisv32-*-*)
subdirs="$subdirs cris"
testsuite=yes
;;
d10v-*-*)
subdirs="$subdirs d10v"
;; ;;
frv-*-*) cr16*-*-*)
subdirs="$subdirs frv"
testsuite=yes sim_arch=cr16
;; subdirs="$subdirs cr16"
h8300*-*-*)
subdirs="$subdirs h8300"
testsuite=yes
;;
iq2000-*-*)
subdirs="$subdirs iq2000"
testsuite=yes sim_testsuite=yes
;; ;;
lm32-*-*) cris-*-* | crisv32-*-*)
subdirs="$subdirs lm32"
testsuite=yes sim_arch=cris
;; subdirs="$subdirs cris"
m32c-*-*)
subdirs="$subdirs m32c"
;;
m32r-*-*)
subdirs="$subdirs m32r"
testsuite=yes sim_testsuite=yes
;; ;;
m68hc11-*-*|m6811-*-*) d10v-*-*)
subdirs="$subdirs m68hc11"
testsuite=yes sim_arch=d10v
;; subdirs="$subdirs d10v"
mcore-*-*)
subdirs="$subdirs mcore"
testsuite=yes
;;
microblaze-*-*)
subdirs="$subdirs microblaze"
testsuite=yes ;;
;; frv-*-*)
mips*-*-*)
subdirs="$subdirs mips"
testsuite=yes sim_arch=frv
igen=yes subdirs="$subdirs frv"
;;
mn10300*-*-*)
subdirs="$subdirs mn10300"
igen=yes
;;
moxie-*-*)
subdirs="$subdirs moxie"
testsuite=yes sim_testsuite=yes
;; ;;
rx-*-*) h8300*-*-*)
subdirs="$subdirs rx"
;; sim_arch=h8300
sh64*-*-*) subdirs="$subdirs h8300"
subdirs="$subdirs sh64"
testsuite=yes
;;
sh*-*-*)
subdirs="$subdirs sh"
testsuite=yes sim_testsuite=yes
;; ;;
sparc-*-rtems*|sparc-*-elf*) iq2000-*-*)
subdirs="$subdirs erc32"
testsuite=yes sim_arch=iq2000
;; subdirs="$subdirs iq2000"
powerpc*-*-* )
subdirs="$subdirs ppc"
;;
v850*-*-* )
subdirs="$subdirs v850"
igen=yes sim_testsuite=yes
testsuite=yes ;;
;; lm32-*-*)
*)
# No simulator subdir, so the subdir "common" isn't needed. sim_arch=lm32
common=no subdirs="$subdirs lm32"
;;
esac
if test "$testsuite" = yes; then sim_testsuite=yes
;;
m32c-*-*)
sim_arch=m32c
subdirs="$subdirs m32c"
;;
m32r-*-*)
sim_arch=m32r
subdirs="$subdirs m32r"
sim_testsuite=yes
;;
m68hc11-*-*|m6811-*-*)
sim_arch=m68hc11
subdirs="$subdirs m68hc11"
sim_testsuite=yes
;;
mcore-*-*)
sim_arch=mcore
subdirs="$subdirs mcore"
sim_testsuite=yes
;;
microblaze-*-*)
sim_arch=microblaze
subdirs="$subdirs microblaze"
sim_testsuite=yes
;;
mips*-*-*)
sim_arch=mips
subdirs="$subdirs mips"
sim_testsuite=yes
sim_igen=yes
;;
mn10300*-*-*)
sim_arch=mn10300
subdirs="$subdirs mn10300"
sim_igen=yes
;;
moxie-*-*)
sim_arch=moxie
subdirs="$subdirs moxie"
sim_testsuite=yes
;;
rx-*-*)
sim_arch=rx
subdirs="$subdirs rx"
;;
sh64*-*-*)
sim_arch=sh64
subdirs="$subdirs sh64"
sim_testsuite=yes
;;
sh*-*-*)
sim_arch=sh
subdirs="$subdirs sh"
sim_testsuite=yes
;;
sparc-*-rtems*|sparc-*-elf*)
sim_arch=erc32
subdirs="$subdirs erc32"
sim_testsuite=yes
;;
powerpc*-*-*)
sim_arch=ppc
subdirs="$subdirs ppc"
;;
v850*-*-*)
sim_arch=v850
subdirs="$subdirs v850"
sim_igen=yes
sim_testsuite=yes
;;
*)
# No simulator subdir, so the subdir "common" isn't needed.
sim_common=no
;;
esac
if test "$sim_testsuite" = yes; then
subdirs="$subdirs testsuite" subdirs="$subdirs testsuite"
fi fi
if test "$common" = yes; then if test "$sim_common" = yes; then
subdirs="$subdirs common" subdirs="$subdirs common"
fi fi
if test "$igen" = yes; then if test "$sim_igen" = yes; then
subdirs="$subdirs igen" subdirs="$subdirs igen"
fi fi

View File

@ -36,119 +36,19 @@ yes | no) ;;
*) AC_MSG_ERROR(bad value ${enableval} given for --enable-sim option) ;; *) AC_MSG_ERROR(bad value ${enableval} given for --enable-sim option) ;;
esac]) esac])
# WHEN ADDING ENTRIES TO THIS MATRIX: m4_define([SIM_ARCH], [
sim_arch=$1
# Make sure that the left side always has two dashes. Otherwise you AC_CONFIG_SUBDIRS($1)
# can get spurious matches. Even for unambiguous cases, do this as a ])
# convention, else the table becomes a real mess to understand and
# maintain.
if test "${enable_sim}" != no; then if test "${enable_sim}" != no; then
testsuite=no sinclude(configure.tgt)
common=yes if test "$sim_testsuite" = yes; then
igen=no
case "${target}" in
arm*-*-* | thumb*-*-* | strongarm*-*-* | xscale-*-*)
AC_CONFIG_SUBDIRS(arm)
testsuite=yes
;;
avr*-*-*)
AC_CONFIG_SUBDIRS(avr)
;;
cr16*-*-*)
AC_CONFIG_SUBDIRS(cr16)
testsuite=yes
;;
cris-*-* | crisv32-*-*)
AC_CONFIG_SUBDIRS(cris)
testsuite=yes
;;
d10v-*-*)
AC_CONFIG_SUBDIRS(d10v)
;;
frv-*-*)
AC_CONFIG_SUBDIRS(frv)
testsuite=yes
;;
h8300*-*-*)
AC_CONFIG_SUBDIRS(h8300)
testsuite=yes
;;
iq2000-*-*)
AC_CONFIG_SUBDIRS(iq2000)
testsuite=yes
;;
lm32-*-*)
AC_CONFIG_SUBDIRS(lm32)
testsuite=yes
;;
m32c-*-*)
AC_CONFIG_SUBDIRS(m32c)
;;
m32r-*-*)
AC_CONFIG_SUBDIRS(m32r)
testsuite=yes
;;
m68hc11-*-*|m6811-*-*)
AC_CONFIG_SUBDIRS(m68hc11)
testsuite=yes
;;
mcore-*-*)
AC_CONFIG_SUBDIRS(mcore)
testsuite=yes
;;
microblaze-*-*)
AC_CONFIG_SUBDIRS(microblaze)
testsuite=yes
;;
mips*-*-*)
AC_CONFIG_SUBDIRS(mips)
testsuite=yes
igen=yes
;;
mn10300*-*-*)
AC_CONFIG_SUBDIRS(mn10300)
igen=yes
;;
moxie-*-*)
AC_CONFIG_SUBDIRS(moxie)
testsuite=yes
;;
rx-*-*)
AC_CONFIG_SUBDIRS(rx)
;;
sh64*-*-*)
AC_CONFIG_SUBDIRS(sh64)
testsuite=yes
;;
sh*-*-*)
AC_CONFIG_SUBDIRS(sh)
testsuite=yes
;;
sparc-*-rtems*|sparc-*-elf*)
AC_CONFIG_SUBDIRS(erc32)
testsuite=yes
;;
powerpc*-*-* )
AC_CONFIG_SUBDIRS(ppc)
;;
v850*-*-* )
AC_CONFIG_SUBDIRS(v850)
igen=yes
testsuite=yes
;;
*)
# No simulator subdir, so the subdir "common" isn't needed.
common=no
;;
esac
if test "$testsuite" = yes; then
AC_CONFIG_SUBDIRS(testsuite) AC_CONFIG_SUBDIRS(testsuite)
fi fi
if test "$common" = yes; then if test "$sim_common" = yes; then
AC_CONFIG_SUBDIRS(common) AC_CONFIG_SUBDIRS(common)
fi fi
if test "$igen" = yes; then if test "$sim_igen" = yes; then
AC_CONFIG_SUBDIRS(igen) AC_CONFIG_SUBDIRS(igen)
fi fi
fi fi

113
sim/configure.tgt Normal file
View File

@ -0,0 +1,113 @@
dnl Note that this file is intended to be included at the m4 level and not
dnl the shell level, so use sinclude(...) to pull it in.
# WHEN ADDING ENTRIES TO THIS MATRIX:
# Make sure that the left side always has two dashes. Otherwise you
# can get spurious matches. Even for unambiguous cases, do this as a
# convention, else the table becomes a real mess to understand and
# maintain.
dnl glue to avoid code duplication at top level
m4_ifndef([SIM_ARCH], [AC_DEFUN([SIM_ARCH],[sim_arch=$1])])
sim_testsuite=no
sim_common=yes
sim_igen=no
sim_arch=
case "${target}" in
arm*-*-* | thumb*-*-* | strongarm*-*-* | xscale-*-*)
SIM_ARCH(arm)
sim_testsuite=yes
;;
avr*-*-*)
SIM_ARCH(avr)
;;
cr16*-*-*)
SIM_ARCH(cr16)
sim_testsuite=yes
;;
cris-*-* | crisv32-*-*)
SIM_ARCH(cris)
sim_testsuite=yes
;;
d10v-*-*)
SIM_ARCH(d10v)
;;
frv-*-*)
SIM_ARCH(frv)
sim_testsuite=yes
;;
h8300*-*-*)
SIM_ARCH(h8300)
sim_testsuite=yes
;;
iq2000-*-*)
SIM_ARCH(iq2000)
sim_testsuite=yes
;;
lm32-*-*)
SIM_ARCH(lm32)
sim_testsuite=yes
;;
m32c-*-*)
SIM_ARCH(m32c)
;;
m32r-*-*)
SIM_ARCH(m32r)
sim_testsuite=yes
;;
m68hc11-*-*|m6811-*-*)
SIM_ARCH(m68hc11)
sim_testsuite=yes
;;
mcore-*-*)
SIM_ARCH(mcore)
sim_testsuite=yes
;;
microblaze-*-*)
SIM_ARCH(microblaze)
sim_testsuite=yes
;;
mips*-*-*)
SIM_ARCH(mips)
sim_testsuite=yes
sim_igen=yes
;;
mn10300*-*-*)
SIM_ARCH(mn10300)
sim_igen=yes
;;
moxie-*-*)
SIM_ARCH(moxie)
sim_testsuite=yes
;;
rx-*-*)
SIM_ARCH(rx)
;;
sh64*-*-*)
SIM_ARCH(sh64)
sim_testsuite=yes
;;
sh*-*-*)
SIM_ARCH(sh)
sim_testsuite=yes
;;
sparc-*-rtems*|sparc-*-elf*)
SIM_ARCH(erc32)
sim_testsuite=yes
;;
powerpc*-*-*)
SIM_ARCH(ppc)
;;
v850*-*-*)
SIM_ARCH(v850)
sim_igen=yes
sim_testsuite=yes
;;
*)
# No simulator subdir, so the subdir "common" isn't needed.
sim_common=no
;;
esac
AC_SUBST(sim_arch)

View File

@ -1,3 +1,10 @@
2010-04-26 Mike Frysinger <vapier@gentoo.org>
* Makefile.in (arch): Set to @sim_arch@.
* configure.ac: Delete arch logic and include ../configure.tgt.
* configure: Regenerated.
* lib/sim-defs.exp (sim_run): Default sim to ../arch/run.
2009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> 2009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* configure: Regenerate. * configure: Regenerate.

View File

@ -30,7 +30,7 @@ target_canonical = @target@
target_alias = @target_alias@ target_alias = @target_alias@
program_transform_name = @program_transform_name@ program_transform_name = @program_transform_name@
arch = @arch@ arch = @sim_arch@
SHELL = /bin/sh SHELL = /bin/sh
SUBDIRS = @subdirs@ SUBDIRS = @subdirs@

View File

@ -554,7 +554,7 @@ ac_unique_file="common/bits-tst.c"
enable_option_checking=no enable_option_checking=no
ac_subst_vars='LTLIBOBJS ac_subst_vars='LTLIBOBJS
LIBOBJS LIBOBJS
arch sim_arch
subdirs subdirs
target_os target_os
target_vendor target_vendor
@ -1808,14 +1808,118 @@ subdirs="$subdirs frv-elf"
;; ;;
esac esac
# Compute the target architecture.
# FIXME: Will need to canonicalize some values. # WHEN ADDING ENTRIES TO THIS MATRIX:
# FIXME: Should be in generally accessable place.
case $target in # Make sure that the left side always has two dashes. Otherwise you
*) arch=${target_cpu} ;; # can get spurious matches. Even for unambiguous cases, do this as a
# convention, else the table becomes a real mess to understand and
# maintain.
sim_testsuite=no
sim_common=yes
sim_igen=no
sim_arch=
case "${target}" in
arm*-*-* | thumb*-*-* | strongarm*-*-* | xscale-*-*)
sim_arch=arm
sim_testsuite=yes
;;
avr*-*-*)
sim_arch=avr
;;
cr16*-*-*)
sim_arch=cr16
sim_testsuite=yes
;;
cris-*-* | crisv32-*-*)
sim_arch=cris
sim_testsuite=yes
;;
d10v-*-*)
sim_arch=d10v
;;
frv-*-*)
sim_arch=frv
sim_testsuite=yes
;;
h8300*-*-*)
sim_arch=h8300
sim_testsuite=yes
;;
iq2000-*-*)
sim_arch=iq2000
sim_testsuite=yes
;;
lm32-*-*)
sim_arch=lm32
sim_testsuite=yes
;;
m32c-*-*)
sim_arch=m32c
;;
m32r-*-*)
sim_arch=m32r
sim_testsuite=yes
;;
m68hc11-*-*|m6811-*-*)
sim_arch=m68hc11
sim_testsuite=yes
;;
mcore-*-*)
sim_arch=mcore
sim_testsuite=yes
;;
microblaze-*-*)
sim_arch=microblaze
sim_testsuite=yes
;;
mips*-*-*)
sim_arch=mips
sim_testsuite=yes
sim_igen=yes
;;
mn10300*-*-*)
sim_arch=mn10300
sim_igen=yes
;;
moxie-*-*)
sim_arch=moxie
sim_testsuite=yes
;;
rx-*-*)
sim_arch=rx
;;
sh64*-*-*)
sim_arch=sh64
sim_testsuite=yes
;;
sh*-*-*)
sim_arch=sh
sim_testsuite=yes
;;
sparc-*-rtems*|sparc-*-elf*)
sim_arch=erc32
sim_testsuite=yes
;;
powerpc*-*-*)
sim_arch=ppc
;;
v850*-*-*)
sim_arch=v850
sim_igen=yes
sim_testsuite=yes
;;
*)
# No simulator subdir, so the subdir "common" isn't needed.
sim_common=no
;;
esac esac
ac_config_files="$ac_config_files Makefile" ac_config_files="$ac_config_files Makefile"
cat >confcache <<\_ACEOF cat >confcache <<\_ACEOF

View File

@ -25,12 +25,6 @@ case ${target} in
;; ;;
esac esac
# Compute the target architecture. sinclude(../configure.tgt)
# FIXME: Will need to canonicalize some values.
# FIXME: Should be in generally accessable place.
case $target in
*) arch=${target_cpu} ;;
esac
AC_SUBST(arch)
AC_OUTPUT(Makefile) AC_OUTPUT(Makefile)

View File

@ -88,6 +88,15 @@ proc sim_run { prog sim_opts prog_opts redir options } {
verbose "testcase timeout is set to $testcase_timeout" 1 verbose "testcase timeout is set to $testcase_timeout" 1
set sim [board_info target sim] set sim [board_info target sim]
if [string equal "" $sim] {
# Special case the simulator. These tests are designed to
# be run inside of the simulator, not on the native host.
# So if the sim target isn't set, default to the target run.
# These global variables come from generated site.exp.
global objdir
global arch
set sim "$objdir/../$arch/run"
}
if [is_remote host] { if [is_remote host] {
set prog [remote_download host $prog] set prog [remote_download host $prog]

View File

@ -1,3 +1,7 @@
2010-04-26 Mike Frysinger <vapier@gentoo.org>
* basic.exp: Delete sim target check.
2007-08-27 Joel Brobecker <brobecker@adacore.com> 2007-08-27 Joel Brobecker <brobecker@adacore.com>
* testutils.inc: Change license to GPL version 3. * testutils.inc: Change license to GPL version 3.

View File

@ -32,9 +32,8 @@ proc run_hilo_test {testfile models nops} {
} }
# Only test mips*-*-elf (e.g., no mips*-*-linux), and only test if the target # Only test mips*-*-elf (e.g., no mips*-*-linux)
# board really is a simulator (sim tests don't work on real HW). if {[istarget mips*-*-elf]} {
if {[istarget mips*-*-elf] && [board_info target exists is_simulator]} {
set dspmodels "" set dspmodels ""
set mdmxmodels "" set mdmxmodels ""