diff options
author | Bernhard Reutner-Fischer <aldot@gcc.gnu.org> | 2012-03-15 17:55:12 +0100 |
---|---|---|
committer | Bernhard Reutner-Fischer <aldot@gcc.gnu.org> | 2012-03-15 17:55:12 +0100 |
commit | 28eccf2d94aa9a1e3c11db6f7ebcbaf8968718b6 (patch) | |
tree | 1a55580f1958ef68156148f1984b8a4d3883e2ed | |
parent | df7965e4144004831703ce7ed1d7ea67509c1028 (diff) | |
download | gcc-28eccf2d94aa9a1e3c11db6f7ebcbaf8968718b6.zip gcc-28eccf2d94aa9a1e3c11db6f7ebcbaf8968718b6.tar.gz gcc-28eccf2d94aa9a1e3c11db6f7ebcbaf8968718b6.tar.bz2 |
fortran-modules.exp: New file which was forgotten in r185430.
2012-03-15 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
* lib/fortran-modules.exp: New file which was forgotten in r185430.
From-SVN: r185439
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/lib/fortran-modules.exp | 98 |
2 files changed, 102 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b41781f..f54a307 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2012-03-15 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> + + * lib/fortran-modules.exp: New file which was forgotten in r185430. + 2012-03-15 Ira Rosen <irar@il.ibm.com> Ulrich Weigand <ulrich.weigand@linaro.org> diff --git a/gcc/testsuite/lib/fortran-modules.exp b/gcc/testsuite/lib/fortran-modules.exp new file mode 100644 index 0000000..4069fb2 --- /dev/null +++ b/gcc/testsuite/lib/fortran-modules.exp @@ -0,0 +1,98 @@ +# Copyright (C) 2012 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. + +# helper to deal with fortran modules + +# Remove files for specified Fortran modules. +proc cleanup-modules { modlist } { + global clean + foreach mod [concat $modlist $clean] { + set m [string tolower $mod].mod + verbose "cleanup-module `$m'" 2 + if [is_remote host] { + remote_file host delete $m + } + remote_file build delete $m + } +} + +proc keep-modules { modlist } { + global clean + # if the modlist is empty, keep everything + if {[llength $modlist] < 1} { + set clean {} + } else { + set cleansed {} + foreach cl $clean { + if {[lsearch $cl $modlist] < 0} { + lappend cleansed $cl + } + } + if {[llength $clean] == [llength $cleansed]} { + warning "keep-modules had no effect?! Possible typo in module name." + } + set clean $cleansed + } +} + +# collect all module names from a source-file +proc list-module-names { files } { + global clean + set clean {} + foreach file $files { + foreach mod [list-module-names-1 $file] { + if {[lsearch $clean $mod] < 0} { + lappend clean $mod + } + } + } + return [join $clean " "] +} + +proc list-module-names-1 { file } { + set result {} + set tmp [grep $file "^\[ \t\]*((#)?\[ \t\]*include|\[mM\]\[oO\]\[dD\]\[uU\]\[lL\]\[eE\](?!\[ \t\]+\[pP\]\[rR\]\[oO\]\[cC\]\[eE\]\[dD\]\[uU\]\[rR\]\[eE\]\[ \t\]+))\[ \t\]+.*" line] + if {![string match "" $tmp]} { + foreach i $tmp { + regexp "(\[0-9\]+)\[ \t\]+(?:(?:#)?\[ \t\]*include\[ \t\]+)\[\"\](\[^\"\]*)\[\"\]" $i dummy lineno include_file + if {[info exists include_file]} { + set dir [file dirname $file] + set inc "$dir/$include_file" + unset include_file + if {![file readable $inc]} { + warning "Line $lineno includes unreadable file `$inc'" + continue + } + verbose "Line $lineno includes `$inc'" 3 + foreach mod [list-module-names-1 $inc] { + if {[lsearch $result $mod] < 0} { + lappend result $mod + } + } + continue + } + regexp "(\[0-9\]+)\[ \t\]+(?:(\[mM\]\[oO\]\[dD\]\[uU\]\[lL\]\[eE\]\[ \t\]+(?!\[pP\]\[rR\]\[oO\]\[cC\]\[eE\]\[dD\]\[uU\]\[rR\]\[eE\]\[ \t\]+)))(\[^ \t;\]*)" $i i lineno keyword mod + if {![info exists lineno]} { + continue + } + verbose "Line $lineno mentions module `$mod'" 3 + if {[lsearch $result $mod] < 0} { + lappend result $mod + } + } + } + return $result +} |