sim: testsuite: support basic vars in flags
authorMike Frysinger <vapier@gentoo.org>
Mon, 9 Nov 2015 06:14:57 +0000 (01:14 -0500)
committerMike Frysinger <vapier@gentoo.org>
Sun, 15 Nov 2015 05:43:48 +0000 (00:43 -0500)
Sometimes in tests, we need supplemental files like linker scripts or
board helper files.  There's no way to set those flags in the tests
currently and relative paths don't work (breaks out of tree builds).

Update the main option parser to replace some strings on the fly.  Now
tests can do things like:

Long term we'll want to switch the framework to use the dejagnu helpers
like dg-xxx that gcc & gdb utilize.  But that'll require more rework.

sim/testsuite/ChangeLog
sim/testsuite/lib/sim-defs.exp

index 509dc1f6bedf370558185f55f6b5bb073d2d0f54..e6525a9f71cbfdbba741bc530f4bac06a065ee3d 100644 (file)
@@ -1,6 +1,11 @@
+2015-11-14  Mike Frysinger  <vapier@gentoo.org>
+
+       * lib/sim-defs.exp (slurp_options): Pull in global subdir/srcdir.
+       Replace $srcdir and $subdir in the read option.
+
 2015-04-13  Hans-Peter Nilsson  <hp@axis.com>
 
-       * sim-defs.exp (sim_init): Unset target ldscript here.
+       * lib/sim-defs.exp (sim_init): Unset target ldscript here.
 
 2015-03-30  Mike Frysinger  <vapier@gentoo.org>
 
index 2faf5dcab8d96d56115720eff6f12b595220d9e1..b8ce230f13c375f2ee6085080d6522f24d65575d 100644 (file)
@@ -1,4 +1,5 @@
 # Simulator dejagnu utilities.
+# TODO: Switch to using dg-xxx helpers rather than parsing the files directly.
 
 # Communicate simulator path from sim_init to sim_version.
 # For some reason [board_info target sim] doesn't work in sim_version.
@@ -423,6 +424,7 @@ proc run_sim_test { name requested_machs } {
 # Subroutine of run_sim_test to process options in FILE.
 
 proc slurp_options { file } {
+    global subdir srcdir
     if [catch { set f [open $file r] } x] {
        #perror "couldn't open `$file': $x"
        perror "$x"
@@ -442,6 +444,10 @@ proc slurp_options { file } {
        # Whitespace here is space-tab.
        if [regexp $pat $line xxx opt_name opt_machs opt_val] {
            # match!
+           set opt_val [string map [list \
+               {$srcdir} "$srcdir" \
+               {$subdir} "$subdir" \
+           ] "$opt_val"]
            lappend opt_array [list $opt_name $opt_machs $opt_val]
            set seen_opt 1
        } else {