2001-05-11 Benjamin Kosnik <bkoz@redhat.com>
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 12 May 2001 17:49:16 +0000 (17:49 +0000)
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 12 May 2001 17:49:16 +0000 (17:49 +0000)
* testsuite_flags.in: New, simplified interface.
* testsuite/lib/libstdc++-v3-dg.exp: New test harness.
* testsuite/libstdc++-v3.dg: Add.
* testsuite/libstdc++-v3.dg/dg.exp: Add.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@41999 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp [new file with mode: 0644]
libstdc++-v3/testsuite/libstdc++-v3.dg/dg.exp [new file with mode: 0644]

diff --git a/libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp b/libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp
new file mode 100644 (file)
index 0000000..8f2f832
--- /dev/null
@@ -0,0 +1,132 @@
+#   Copyright (C) 2001 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 2 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 this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+# Define libstdc++-v3 callbacks for dg.exp.
+
+load_lib dg.exp
+load_lib libgloss.exp
+
+proc libstdc++-v3-init { args } {
+    global srcdir
+    global outdir
+    global blddir
+    global cxx
+    global includes
+    global cxxflags
+
+    set blddir   [lookfor_file $outdir libstdc++-v3]
+    set cxx     [exec sh ${blddir}/testsuite_flags --build-cxx]
+    set cxxflags [exec sh ${blddir}/testsuite_flags --cxxflags]
+    set includes [exec sh ${blddir}/testsuite_flags --build-includes]
+
+    # By default, we assume we want to run program images.
+    global dg-do-what-default
+    set dg-do-what-default run
+
+    # Copy any required data files.
+    foreach tst [glob -nocomplain "$srcdir/*/*.tst"] {
+       file copy -force $tst $outdir
+    }
+    foreach txt [glob -nocomplain "$srcdir/*/*.txt"] {
+       file copy -force $txt $outdir
+    }
+}
+
+proc libstdc++-v3-dg-test { prog do_what extra_tool_flags } {
+    # Set up the compiler flags, based on what we're going to do.
+
+    switch $do_what {
+       "preprocess" {
+           set compile_type "preprocess"
+           set output_file "[file rootname [file tail $prog]].i"
+       }
+       "compile" {
+           set compile_type "assembly"
+           set output_file "[file rootname [file tail $prog]].s"
+       }
+       "assemble" {
+           set compile_type "object"
+           set output_file "[file rootname [file tail $prog]].o"
+       }
+       "link" {
+           set compile_type "executable"
+           set output_file "a.out"
+       }
+       "run" {
+           set compile_type "executable"
+           # FIXME: "./" is to cope with "." not being in $PATH.
+           # Should this be handled elsewhere?
+           # YES.
+           set output_file "./a.out"
+           # This is the only place where we care if an executable was
+           # created or not.  If it was, dg.exp will try to run it.
+           remote_file build delete $output_file;
+       }
+       default {
+           perror "$do_what: not a valid dg-do keyword"
+           return ""
+       }
+    }
+    set options ""
+    if { $extra_tool_flags != "" } {
+       lappend options "additional_flags=$extra_tool_flags"
+    }
+
+    set comp_output [libstdc++-v3_target_compile "$prog" "$output_file" "$compile_type" $options];
+
+    return [list $comp_output $output_file]
+}
+
+
+proc libstdc++-v3_target_compile { source dest type options } {
+    global gluefile 
+    global wrap_flags
+    global cxx
+    global cxxflags
+    global includes
+
+    if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } {
+       lappend options "libs=${gluefile}"
+       lappend options "ldflags=${wrap_flags}"
+    }
+
+    set cxx_final $cxx
+    set cxxlibglossflags  [libgloss_link_flags]
+    set cxx_final [concat $cxx_final $cxxlibglossflags]
+    set cxx_final [concat $cxx_final $cxxflags]
+    set cxx_final [concat $cxx_final $includes]
+    lappend options "compiler=$cxx_final";
+
+    return [target_compile $source $dest $type $options]
+}
+
+
+proc libstdc++-v3_exit { args } {
+    global gluefile;
+
+    if [info exists gluefile] {
+       file_on_build delete $gluefile;
+       unset gluefile;
+    }
+}
+
+proc libstdc++-v3-finish { } {
+    # do hacks to remove any check-DEJAGNU errors
+set exit_status 0
+set status 0
+#return 0
+}
+
diff --git a/libstdc++-v3/testsuite/libstdc++-v3.dg/dg.exp b/libstdc++-v3/testsuite/libstdc++-v3.dg/dg.exp
new file mode 100644 (file)
index 0000000..c5c22c3
--- /dev/null
@@ -0,0 +1,47 @@
+#   Copyright (C) 2001 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 2 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 this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+# libstdc++-v3 testsuite that uses the 'dg.exp' driver.
+
+# Load support procs.
+load_lib libstdc++-v3-dg.exp
+
+# If a testcase doesn't have special options, use these.
+global DEFAULT_CXXFLAGS
+if ![info exists DEFAULT_CXXFLAGS] then {
+    set DEFAULT_CXXFLAGS " -DDEBUG_ASSERT"
+}
+
+# Initialize 'dg' last or dejagnu exits with an error...
+libstdc++-v3-init
+dg-init
+
+
+## Set ulimits.  
+## This should normally be handled on a per-test basis through @xxx@-keywords.
+## The following limit is expressed in kilobytes.  For history, have a 
+## look at http://gcc.gnu.org/ml/libstdc++/2000-10/msg00029.html
+set maximum-memory-usage 16384
+set shell-ulimit-command ulimit
+remote_exec host ${shell-ulimit-command} "-d ${maximum-memory-usage}"
+remote_exec host ${shell-ulimit-command} "-v ${maximum-memory-usage}"
+
+# Main loop.
+dg-runtest [lsort [glob -nocomplain $srcdir/*/*.cc]] \
+        "" $DEFAULT_CXXFLAGS
+
+# All done.
+dg-finish