sim: unify target->subdir handling for default tests
authorMike Frysinger <vapier@gentoo.org>
Mon, 26 Apr 2010 16:23:24 +0000 (16:23 +0000)
committerMike Frysinger <vapier@gentoo.org>
Mon, 26 Apr 2010 16:23:24 +0000 (16:23 +0000)
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>
sim/ChangeLog
sim/configure
sim/configure.ac
sim/configure.tgt [new file with mode: 0644]
sim/testsuite/ChangeLog
sim/testsuite/Makefile.in
sim/testsuite/configure
sim/testsuite/configure.ac
sim/testsuite/lib/sim-defs.exp
sim/testsuite/sim/mips/ChangeLog
sim/testsuite/sim/mips/basic.exp

index f0a8287..15bcaff 100644 (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>
 
        * README-HACKING: Add more sections.
index be5e348..b6488e2 100755 (executable)
@@ -554,6 +554,7 @@ ac_unique_file="Makefile.in"
 enable_option_checking=no
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
+sim_arch
 subdirs
 CFLAGS_FOR_BUILD
 CC_FOR_BUILD
@@ -3604,6 +3605,9 @@ esac
 fi
 
 
+
+if test "${enable_sim}" != no; then
+
 # WHEN ADDING ENTRIES TO THIS MATRIX:
 
 # Make sure that the left side always has two dashes.  Otherwise you
 # convention, else the table becomes a real mess to understand and
 # maintain.
 
-if test "${enable_sim}" != no; then
-   testsuite=no
-   common=yes
-   igen=no
-   case "${target}" in
-       arm*-*-* | thumb*-*-* | strongarm*-*-* | xscale-*-*)
+
+
+sim_testsuite=no
+sim_common=yes
+sim_igen=no
+sim_arch=
+case "${target}" in
+   arm*-*-* | thumb*-*-* | strongarm*-*-* | xscale-*-*)
+
+  sim_arch=arm
 
 
 subdirs="$subdirs arm"
 
-          testsuite=yes
-          ;;
-       avr*-*-*)
-           subdirs="$subdirs avr"
-
-          ;;
-       cr16*-*-*)
-          subdirs="$subdirs cr16"
-
-          testsuite=yes
-          ;;
-       cris-*-* | crisv32-*-*)
-          subdirs="$subdirs cris"
-
-          testsuite=yes
-          ;;
-       d10v-*-*)
-           subdirs="$subdirs d10v"
-
-          ;;
-       frv-*-*)
-           subdirs="$subdirs frv"
-
-          testsuite=yes
-          ;;
-       h8300*-*-*)
-           subdirs="$subdirs h8300"
-
-          testsuite=yes
-          ;;
-       iq2000-*-*)
-           subdirs="$subdirs iq2000"
-
-          testsuite=yes
-          ;;
-       lm32-*-*)
-           subdirs="$subdirs lm32"
-
-          testsuite=yes
-           ;;
-       m32c-*-*)
-           subdirs="$subdirs m32c"
-
-           ;;
-       m32r-*-*)
-           subdirs="$subdirs m32r"
-
-          testsuite=yes
-          ;;
-       m68hc11-*-*|m6811-*-*)
-           subdirs="$subdirs m68hc11"
-
-          testsuite=yes
-          ;;
-       mcore-*-*)
-           subdirs="$subdirs mcore"
-
-          testsuite=yes
-          ;;
-       microblaze-*-*)
-           subdirs="$subdirs microblaze"
-
-          testsuite=yes
-          ;;
-       mips*-*-*)
-           subdirs="$subdirs mips"
-
-          testsuite=yes
-          igen=yes
-          ;;
-       mn10300*-*-*)
-           subdirs="$subdirs mn10300"
-
-          igen=yes
-          ;;
-       moxie-*-*)
-          subdirs="$subdirs moxie"
-
-          testsuite=yes
-          ;;
-       rx-*-*)
-           subdirs="$subdirs rx"
-
-          ;;
-       sh64*-*-*)
-           subdirs="$subdirs sh64"
-
-          testsuite=yes
-          ;;
-       sh*-*-*)
-           subdirs="$subdirs sh"
-
-          testsuite=yes
-          ;;
-       sparc-*-rtems*|sparc-*-elf*)
-          subdirs="$subdirs erc32"
-
-          testsuite=yes
-          ;;
-       powerpc*-*-* )
-           subdirs="$subdirs ppc"
-
-          ;;
-       v850*-*-* )
-           subdirs="$subdirs v850"
-
-          igen=yes
-          testsuite=yes
-          ;;
-       *)
-          # No simulator subdir, so the subdir "common" isn't needed.
-          common=no
-          ;;
-   esac
-   if test "$testsuite" = yes; then
+
+       sim_testsuite=yes
+       ;;
+   avr*-*-*)
+
+  sim_arch=avr
+  subdirs="$subdirs avr"
+
+
+       ;;
+   cr16*-*-*)
+
+  sim_arch=cr16
+  subdirs="$subdirs cr16"
+
+
+       sim_testsuite=yes
+       ;;
+   cris-*-* | crisv32-*-*)
+
+  sim_arch=cris
+  subdirs="$subdirs cris"
+
+
+       sim_testsuite=yes
+       ;;
+   d10v-*-*)
+
+  sim_arch=d10v
+  subdirs="$subdirs d10v"
+
+
+       ;;
+   frv-*-*)
+
+  sim_arch=frv
+  subdirs="$subdirs frv"
+
+
+       sim_testsuite=yes
+       ;;
+   h8300*-*-*)
+
+  sim_arch=h8300
+  subdirs="$subdirs h8300"
+
+
+       sim_testsuite=yes
+       ;;
+   iq2000-*-*)
+
+  sim_arch=iq2000
+  subdirs="$subdirs iq2000"
+
+
+       sim_testsuite=yes
+       ;;
+   lm32-*-*)
+
+  sim_arch=lm32
+  subdirs="$subdirs lm32"
+
+
+       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"
 
    fi
-   if test "$common" = yes; then
+   if test "$sim_common" = yes; then
       subdirs="$subdirs common"
 
    fi
-   if test "$igen" = yes; then
+   if test "$sim_igen" = yes; then
       subdirs="$subdirs igen"
 
    fi
index dad245e..8c1d914 100644 (file)
@@ -36,119 +36,19 @@ yes | no) ;;
 *)     AC_MSG_ERROR(bad value ${enableval} given for --enable-sim option) ;;
 esac])
 
-# 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.
-
+m4_define([SIM_ARCH], [
+  sim_arch=$1
+  AC_CONFIG_SUBDIRS($1)
+])
 if test "${enable_sim}" != no; then
-   testsuite=no
-   common=yes
-   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
+   sinclude(configure.tgt)
+   if test "$sim_testsuite" = yes; then
       AC_CONFIG_SUBDIRS(testsuite)
    fi
-   if test "$common" = yes; then
+   if test "$sim_common" = yes; then
       AC_CONFIG_SUBDIRS(common)
    fi
-   if test "$igen" = yes; then
+   if test "$sim_igen" = yes; then
       AC_CONFIG_SUBDIRS(igen)
    fi
 fi
diff --git a/sim/configure.tgt b/sim/configure.tgt
new file mode 100644 (file)
index 0000000..592bc3c
--- /dev/null
@@ -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)
index 5142221..dac320f 100644 (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>
 
        * configure: Regenerate.
index 6a60f95..bfb721d 100644 (file)
@@ -30,7 +30,7 @@ target_canonical = @target@
 target_alias = @target_alias@
 program_transform_name = @program_transform_name@
 
-arch = @arch@
+arch = @sim_arch@
 
 SHELL = /bin/sh
 SUBDIRS = @subdirs@
index 03db937..da7967e 100755 (executable)
@@ -554,7 +554,7 @@ ac_unique_file="common/bits-tst.c"
 enable_option_checking=no
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
-arch
+sim_arch
 subdirs
 target_os
 target_vendor
@@ -1808,14 +1808,118 @@ subdirs="$subdirs frv-elf"
        ;;
 esac
 
-# Compute the target architecture.
-# FIXME: Will need to canonicalize some values.
-# FIXME: Should be in generally accessable place.
-case $target in
-  *) arch=${target_cpu} ;;
+
+# 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.
+
+
+
+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_config_files="$ac_config_files Makefile"
 
 cat >confcache <<\_ACEOF
index ceaf4ff..ba17a33 100644 (file)
@@ -25,12 +25,6 @@ case ${target} in
        ;;
 esac
 
-# Compute the target architecture.
-# FIXME: Will need to canonicalize some values.
-# FIXME: Should be in generally accessable place.
-case $target in
-  *) arch=${target_cpu} ;;
-esac
-AC_SUBST(arch)
+sinclude(../configure.tgt)
 
 AC_OUTPUT(Makefile)
index 3cef394..1e65817 100644 (file)
@@ -88,6 +88,15 @@ proc sim_run { prog sim_opts prog_opts redir options } {
     verbose "testcase timeout is set to $testcase_timeout" 1
 
     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] {
        set prog [remote_download host $prog]
index 4bb18b1..99a3121 100644 (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>
 
        * testutils.inc: Change license to GPL version 3.
index 14181c7..15caecc 100644 (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
-# board really is a simulator (sim tests don't work on real HW).
-if {[istarget mips*-*-elf] && [board_info target exists is_simulator]} {
+# Only test mips*-*-elf (e.g., no mips*-*-linux)
+if {[istarget mips*-*-elf]} {
 
     set dspmodels ""
     set mdmxmodels ""