This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[libstdc++] new autotools and cleanup: testsuite


As discussed on the library list.  The configury is a lot friendlier if
things are named "libstdc++" rather than "libstdc++-v3".  This brings the
Makefile.am into line with the new tools (but does not regenerate it, that's
coming), and renames files/directories/functions to make dejagnu happier.


2003-08-04  Phil Edwards  <pme@gcc.gnu.org>

	* testsuite/Makefile.am (DEJATOOL,EXPECT,RUNTEST,RUNTESTFLAGS):
	Remove unneeded variable assignments.  Leave them for automake.
	* testsuite/lib/libstdc++-v3.exp:  Rename...
	* testsuite/lib/libstdc++.exp:  ...to this.  Adjust function names
	accordingly.
	* testsuite/libstdc++-v3.dg/dg.exp:  Rename...
	* testsuite/libstdc++-dg/normal.exp:  ...to this.  Adjust function
	names accordingly.


Index: testsuite/Makefile.am
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/testsuite/Makefile.am,v
retrieving revision 1.28
diff -u -3 -p -r1.28 Makefile.am
--- testsuite/Makefile.am	6 Jul 2003 03:14:37 -0000	1.28
+++ testsuite/Makefile.am	5 Aug 2003 01:32:23 -0000
@@ -21,23 +21,12 @@
 ## Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
 ## USA.
 
-AUTOMAKE_OPTIONS =  cygnus dejagnu
+AUTOMAKE_OPTIONS = dejagnu
 
 mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
 
-DEJATOOL = libstdc++-v3
-
-EXPECT = `if [ -f @glibcxx_builddir@/../../expect/expect ] ; then \
-            echo @glibcxx_builddir@/../../expect/expect ; \
-          else echo expect ; fi`
-
-RUNTEST = `if [ -f @glibcxx_srcdir@/../dejagnu/runtest ] ; then \
-	       echo @glibcxx_srcdir@/../dejagnu/runtest ; \
-	    else echo runtest; fi`
-
 AM_MAKEFLAGS = -j1
 AM_RUNTESTFLAGS =
-RUNTESTFLAGS =
 PWD_COMMAND = $${PWDCMD-pwd}
 
 ## CXX is actually a "C" compiler. These are real C++ programs.
Index: testsuite/lib/libstdc++-v3.exp
===================================================================
RCS file: testsuite/lib/libstdc++-v3.exp
diff -N testsuite/lib/libstdc++-v3.exp
--- testsuite/lib/libstdc++-v3.exp	1 Aug 2003 00:49:14 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,240 +0,0 @@
-# Copyright (C) 2001, 2002, 2003 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
-load_lib prune.exp
-
-# Called once, by libstdc++-v3-init below.  "Static" to this file.
-proc libstdc++-v3-copy-files {srcfiles dstdir} {
-    foreach f $srcfiles {
-	if { [catch { set symlink [file readlink $f] } x] } then {
-	    file copy -force $f $dstdir
-	} else {
-	    if { [regexp "^/" "$symlink"] } then {
-		file copy -force $symlink $dstdir
-	    } else {
-		set dirname [file dirname $f]
-		file copy -force $dirname/$symlink $dstdir
-	    }
-	}
-    }
-}
-
-# Called once, from libstdc++-v3.dg/dg.exp.
-proc libstdc++-v3-init { args } {
-    global srcdir
-    global outdir
-    global blddir
-    global cxx
-    global includes
-    global cxxflags
-    global objdir
-    global gluefile wrap_flags
-    global ld_library_path
-    global tool_root_dir
-
-    set blddir [lookfor_file [get_multilibs] libstdc++-v3]
-
-    # 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.
-    libstdc++-v3-copy-files [glob -nocomplain "$srcdir/data/*.tst"] $outdir
-    libstdc++-v3-copy-files [glob -nocomplain "$srcdir/data/*.txt"] $outdir
-
-    # set LD_LIBRARY_PATH so that libgcc_s, libstdc++ binaries can be found.
-    # locate libgcc.a so we don't need to account for different values of
-    # SHLIB_EXT on different platforms
-    set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a]
-    if {$gccdir != ""} {
-	set gccdir [file dirname $gccdir]
-    }
-
-    set ld_library_path "."
-    append ld_library_path ":${gccdir}"
-    set compiler ${gccdir}/g++
-    if { [is_remote host] == 0 && [which $compiler] != 0 } {
-      foreach i "[exec $compiler --print-multi-lib]" {
-	set mldir ""
-	regexp -- "\[a-z0-9=/\.-\]*;" $i mldir
-	set mldir [string trimright $mldir "\;@"]
-	if { "$mldir" == "." } {
-	  continue
-	}
-	if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.so.*]] == 1 } {
-	  append ld_library_path ":${gccdir}/${mldir}"
-	}
-      }
-    }
-    append ld_library_path ":${blddir}/src/.libs"
-
-    # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but
-    # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH
-    # (for the 64-bit ABI).  The right way to do this would be to modify
-    # unix.exp -- but that's not an option since it's part of DejaGNU
-    # proper, so we do it here.  We really only need to do 
-    # this on IRIX, but it shouldn't hurt to do it anywhere else.
-    setenv  LD_LIBRARY_PATH     $ld_library_path
-    setenv  SHLIB_PATH          $ld_library_path
-    setenv  LD_LIBRARYN32_PATH  $ld_library_path
-    setenv  LD_LIBRARY64_PATH   $ld_library_path
-    setenv  LD_RUN_PATH         $ld_library_path
-    verbose -log "Set LD_*_PATHs to ${ld_library_path}"
-
-    # Do a bunch of handstands and backflips for cross compiling and
-    # finding simulators...
-    if [is_remote host] {
-        set header [remote_download host ${blddir}/testsuite/testsuite_hooks.h]
-        if { $header == "" } {
-            verbose -log "Unable to download ${blddir}/testsuite/testsuite_hooks.h to host."
-            return "untested"
-        }
-      set cxx [transform "g++"]
-      set cxxflags "-ggdb3 -D_GLIBCXX_ASSERT"
-      set includes "-I./"
-    } else {
-        # If we find a testsuite_flags file, we're testing in the build dir.
-        set flags_file "${blddir}/scripts/testsuite_flags"
-        if { [file exists $flags_file] } {
-            set cxx [exec sh $flags_file --build-cxx]
-            set cxxflags [exec sh $flags_file --cxxflags]
-            set includes [exec sh $flags_file --build-includes]
-        } else {
-            set cxx [transform "g++"]
-            set cxxflags "-ggdb3 -D_GLIBCXX_ASSERT"
-            set includes "-I${srcdir}"
-        }
-    }
-
-    if { [target_info needs_status_wrapper]!=""} {
-      file delete ${objdir}/testglue.o;
-      set gluefile ${objdir}/testglue.o;
-      set result [build_wrapper $gluefile];
-      if { $result != "" } {
-          set gluefile [lindex $result 0];
-          set wrap_flags [lindex $result 1];
-      } else {
-          unset gluefile
-      }
-    }
-}
-
-# Callback from system dg-test.
-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 "./[file rootname [file tail $prog]].exe"
-	}
-	"run" {
-	    set compile_type "executable"
-	    # FIXME: "./" is to cope with "." not being in $PATH.
-	    # Should this be handled elsewhere?
-	    # YES.
-	    set output_file "./[file rootname [file tail $prog]].exe"
-	    # 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];
-    set comp_output [ prune_g++_output $comp_output ];
-
-    return [list $comp_output $output_file]
-}
-
-# Called from libstdc++-v3-dg-test above.  Calls back into system's
-# target_compile to actually do the work.
-proc libstdc++-v3_target_compile { source dest type options } {
-    global gluefile 
-    global wrap_flags
-    global cxx
-    global cxxflags
-    global includes
-    global blddir
-
-    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"
-
-    # Picks up the freshly-built testsuite library corresponding to the
-    # multilib under test.
-    lappend options "ldflags=-L${blddir}/testsuite"
-    lappend options "libs=-lv3test"
-
-    return [target_compile $source $dest $type $options]
-}
-
-
-# Called once, from libstdc++-v3.dg/dg.exp.
-proc v3-list-tests { filename } {
-    global srcdir
-    global outdir
-    
-    set tests_file "${outdir}/${filename}"
-    set sfiles ""
-
-    # If there is a testsuite_file, use it. 
-    if { [file exists $tests_file] } {
-	set f [open $tests_file]
-	while { ! [eof $f] } {
-	    set t [gets $f]
-	    if { [string length "$t"] != 0 } {
-		lappend sfiles  ${srcdir}/${t}
-	    }
-	} 
-	close $f
-    } else {
-	verbose "cannot open $tests_file"
-    }
-    return $sfiles
-}
Index: testsuite/lib/libstdc++.exp
===================================================================
RCS file: testsuite/lib/libstdc++.exp
diff -N testsuite/lib/libstdc++.exp
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ testsuite/lib/libstdc++.exp	5 Aug 2003 01:32:23 -0000
@@ -0,0 +1,240 @@
+# Copyright (C) 2001, 2002, 2003 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 callbacks for dg.exp.  This file is loaded early.
+
+load_lib dg.exp
+load_lib libgloss.exp
+load_lib prune.exp
+
+# Called by v3-init below.  "Static" to this file.
+proc v3-copy-files {srcfiles dstdir} {
+    foreach f $srcfiles {
+        if { [catch { set symlink [file readlink $f] } x] } then {
+            file copy -force $f $dstdir
+        } else {
+            if { [regexp "^/" "$symlink"] } then {
+                file copy -force $symlink $dstdir
+            } else {
+                set dirname [file dirname $f]
+                file copy -force $dirname/$symlink $dstdir
+            }
+        }
+    }
+}
+
+# Called once, from libstdc++/dg.exp.
+proc v3-init { args } {
+    global srcdir
+    global outdir
+    global blddir
+    global cxx
+    global includes
+    global cxxflags
+    global objdir
+    global gluefile wrap_flags
+    global ld_library_path
+    global tool_root_dir
+
+    set blddir [lookfor_file [get_multilibs] libstdc++-v3]
+
+    # 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.
+    v3-copy-files [glob -nocomplain "$srcdir/data/*.tst"] $outdir
+    v3-copy-files [glob -nocomplain "$srcdir/data/*.txt"] $outdir
+
+    # set LD_LIBRARY_PATH so that libgcc_s, libstdc++ binaries can be found.
+    # locate libgcc.a so we don't need to account for different values of
+    # SHLIB_EXT on different platforms
+    set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a]
+    if {$gccdir != ""} {
+        set gccdir [file dirname $gccdir]
+    }
+
+    set ld_library_path "."
+    append ld_library_path ":${gccdir}"
+    set compiler ${gccdir}/g++
+    if { [is_remote host] == 0 && [which $compiler] != 0 } {
+      foreach i "[exec $compiler --print-multi-lib]" {
+        set mldir ""
+        regexp -- "\[a-z0-9=/\.-\]*;" $i mldir
+        set mldir [string trimright $mldir "\;@"]
+        if { "$mldir" == "." } {
+          continue
+        }
+        if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.so.*]] == 1 } {
+          append ld_library_path ":${gccdir}/${mldir}"
+        }
+      }
+    }
+    append ld_library_path ":${blddir}/src/.libs"
+
+    # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but
+    # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH
+    # (for the 64-bit ABI).  The right way to do this would be to modify
+    # unix.exp -- but that's not an option since it's part of DejaGNU
+    # proper, so we do it here.  We really only need to do 
+    # this on IRIX, but it shouldn't hurt to do it anywhere else.
+    setenv  LD_LIBRARY_PATH     $ld_library_path
+    setenv  SHLIB_PATH          $ld_library_path
+    setenv  LD_LIBRARYN32_PATH  $ld_library_path
+    setenv  LD_LIBRARY64_PATH   $ld_library_path
+    setenv  LD_RUN_PATH         $ld_library_path
+    verbose -log "Set LD_*_PATHs to ${ld_library_path}"
+
+    # Do a bunch of handstands and backflips for cross compiling and
+    # finding simulators...
+    if [is_remote host] {
+        set header [remote_download host ${blddir}/testsuite/testsuite_hooks.h]
+        if { $header == "" } {
+            verbose -log "Unable to download ${blddir}/testsuite/testsuite_hooks.h to host."
+            return "untested"
+        }
+      set cxx [transform "g++"]
+      set cxxflags "-ggdb3 -D_GLIBCXX_ASSERT"
+      set includes "-I./"
+    } else {
+        # If we find a testsuite_flags file, we're testing in the build dir.
+        set flags_file "${blddir}/scripts/testsuite_flags"
+        if { [file exists $flags_file] } {
+            set cxx [exec sh $flags_file --build-cxx]
+            set cxxflags [exec sh $flags_file --cxxflags]
+            set includes [exec sh $flags_file --build-includes]
+        } else {
+            set cxx [transform "g++"]
+            set cxxflags "-ggdb3 -D_GLIBCXX_ASSERT"
+            set includes "-I${srcdir}"
+        }
+    }
+
+    if { [target_info needs_status_wrapper]!=""} {
+      file delete ${objdir}/testglue.o;
+      set gluefile ${objdir}/testglue.o;
+      set result [build_wrapper $gluefile];
+      if { $result != "" } {
+          set gluefile [lindex $result 0];
+          set wrap_flags [lindex $result 1];
+      } else {
+          unset gluefile
+      }
+    }
+}
+
+# Callback from system dg-test.
+proc libstdc++-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 "./[file rootname [file tail $prog]].exe"
+        }
+        "run" {
+            set compile_type "executable"
+            # FIXME: "./" is to cope with "." not being in $PATH.
+            # Should this be handled elsewhere?
+            # YES.
+            set output_file "./[file rootname [file tail $prog]].exe"
+            # 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 [v3_target_compile "$prog" "$output_file" "$compile_type" $options];
+    set comp_output [ prune_g++_output $comp_output ];
+
+    return [list $comp_output $output_file]
+}
+
+# Called from libstdc++-dg-test above.  Calls back into system's
+# target_compile to actually do the work.
+proc v3_target_compile { source dest type options } {
+    global gluefile 
+    global wrap_flags
+    global cxx
+    global cxxflags
+    global includes
+    global blddir
+
+    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"
+
+    # Picks up the freshly-built testsuite library corresponding to the
+    # multilib under test.
+    lappend options "ldflags=-L${blddir}/testsuite"
+    lappend options "libs=-lv3test"
+
+    return [target_compile $source $dest $type $options]
+}
+
+
+# Called once, from libstdc++*/dg.exp.
+proc v3-list-tests { filename } {
+    global srcdir
+    global outdir
+    
+    set tests_file "${outdir}/${filename}"
+    set sfiles ""
+
+    # If there is a testsuite_file, use it. 
+    if { [file exists $tests_file] } {
+        set f [open $tests_file]
+        while { ! [eof $f] } {
+            set t [gets $f]
+            if { [string length "$t"] != 0 } {
+                lappend sfiles  ${srcdir}/${t}
+            }
+        } 
+        close $f
+    } else {
+        verbose "cannot open $tests_file"
+    }
+    return $sfiles
+}
Index: testsuite/libstdc++-dg/normal.exp
===================================================================
RCS file: testsuite/libstdc++-dg/normal.exp
diff -N testsuite/libstdc++-dg/normal.exp
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ testsuite/libstdc++-dg/normal.exp	5 Aug 2003 01:32:23 -0000
@@ -0,0 +1,34 @@
+#   Copyright (C) 2001, 2002, 2003 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.
+
+# If a testcase doesn't have special options, use these.
+global DEFAULT_CXXFLAGS
+if ![info exists DEFAULT_CXXFLAGS] then {
+    set DEFAULT_CXXFLAGS "-D_GLIBCXX_ASSERT"
+}
+
+# Initialization.
+dg-init
+v3-init
+
+# Main loop.
+dg-runtest [v3-list-tests testsuite_files] "" $DEFAULT_CXXFLAGS
+#dg-runtest [v3-list-tests testsuite_files_interactive] "" $DEFAULT_CXXFLAGS
+
+# All done.
+dg-finish
Index: testsuite/libstdc++-v3.dg/dg.exp
===================================================================
RCS file: testsuite/libstdc++-v3.dg/dg.exp
diff -N testsuite/libstdc++-v3.dg/dg.exp
--- testsuite/libstdc++-v3.dg/dg.exp	1 Aug 2003 00:49:14 -0000	1.7
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,34 +0,0 @@
-#   Copyright (C) 2001, 2002, 2003 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.
-
-# If a testcase doesn't have special options, use these.
-global DEFAULT_CXXFLAGS
-if ![info exists DEFAULT_CXXFLAGS] then {
-    set DEFAULT_CXXFLAGS "-D_GLIBCXX_ASSERT"
-}
-
-# Initialization.
-dg-init
-libstdc++-v3-init
-
-# Main loop.
-dg-runtest [v3-list-tests testsuite_files] "" $DEFAULT_CXXFLAGS
-#dg-runtest [v3-list-tests testsuite_files_interactive] "" $DEFAULT_CXXFLAGS
-
-# All done.
-dg-finish


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]