aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/goinstall/parse.go
diff options
context:
space:
mode:
authorGustavo Niemeyer <gustavo@niemeyer.net>2011-03-07 12:08:52 -0500
committerRuss Cox <rsc@golang.org>2011-03-07 12:08:52 -0500
commitff40deee6234dc8ad72af0dba1a28c1047f497f6 (patch)
tree43985e1852267145e68887fb5ae02676a3369ee5 /src/cmd/goinstall/parse.go
parent3e042ebb572038c7f680364613e6bbaf8d9c94c5 (diff)
downloadgo-ff40deee6234dc8ad72af0dba1a28c1047f497f6.tar.xz
goinstall: handle .s files with gc
As a data point, with this change goinstall is able to fully build package big out of the box. R=rsc CC=golang-dev https://golang.org/cl/4264049
Diffstat (limited to 'src/cmd/goinstall/parse.go')
-rw-r--r--src/cmd/goinstall/parse.go19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/cmd/goinstall/parse.go b/src/cmd/goinstall/parse.go
index 564ec46bc9..280e9ea4f7 100644
--- a/src/cmd/goinstall/parse.go
+++ b/src/cmd/goinstall/parse.go
@@ -22,6 +22,7 @@ type dirInfo struct {
goFiles []string // .go files within dir (including cgoFiles)
cgoFiles []string // .go files that import "C"
cFiles []string // .c files within dir
+ sFiles []string // .s files within dir
imports []string // All packages imported by goFiles
pkgName string // Name of package within dir
}
@@ -51,6 +52,7 @@ func scanDir(dir string, allowMain bool) (info *dirInfo, err os.Error) {
goFiles := make([]string, 0, len(dirs))
cgoFiles := make([]string, 0, len(dirs))
cFiles := make([]string, 0, len(dirs))
+ sFiles := make([]string, 0, len(dirs))
importsm := make(map[string]bool)
pkgName := ""
for i := range dirs {
@@ -61,13 +63,22 @@ func scanDir(dir string, allowMain bool) (info *dirInfo, err os.Error) {
if !goodOSArch(d.Name) {
continue
}
- if strings.HasSuffix(d.Name, ".c") {
+
+ switch filepath.Ext(d.Name) {
+ case ".go":
+ if strings.HasSuffix(d.Name, "_test.go") {
+ continue
+ }
+ case ".c":
cFiles = append(cFiles, d.Name)
continue
- }
- if !strings.HasSuffix(d.Name, ".go") || strings.HasSuffix(d.Name, "_test.go") {
+ case ".s":
+ sFiles = append(sFiles, d.Name)
+ continue
+ default:
continue
}
+
filename := filepath.Join(dir, d.Name)
pf, err := parser.ParseFile(fset, filename, nil, parser.ImportsOnly)
if err != nil {
@@ -110,7 +121,7 @@ func scanDir(dir string, allowMain bool) (info *dirInfo, err os.Error) {
imports[i] = p
i++
}
- return &dirInfo{goFiles, cgoFiles, cFiles, imports, pkgName}, nil
+ return &dirInfo{goFiles, cgoFiles, cFiles, sFiles, imports, pkgName}, nil
}
// goodOSArch returns false if the filename contains a $GOOS or $GOARCH