diff options
| author | Gustavo Niemeyer <gustavo@niemeyer.net> | 2011-03-07 12:08:52 -0500 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2011-03-07 12:08:52 -0500 |
| commit | ff40deee6234dc8ad72af0dba1a28c1047f497f6 (patch) | |
| tree | 43985e1852267145e68887fb5ae02676a3369ee5 /src/cmd/goinstall/parse.go | |
| parent | 3e042ebb572038c7f680364613e6bbaf8d9c94c5 (diff) | |
| download | go-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.go | 19 |
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 |
