xref: /aosp_15_r20/external/bazelbuild-rules_go/go/tools/gopackagesdriver/build_context.go (revision 9bb1b549b6a84214c53be0924760be030e66b93a)
1package main
2
3import (
4	"go/build"
5	"path/filepath"
6	"strings"
7)
8
9var buildContext = makeBuildContext()
10
11func makeBuildContext() *build.Context {
12	bctx := build.Default
13	bctx.BuildTags = strings.Split(getenvDefault("GOTAGS", ""), ",")
14
15	return &bctx
16}
17
18func filterSourceFilesForTags(files []string) []string {
19	ret := make([]string, 0, len(files))
20
21	for _, f := range files {
22		dir, filename := filepath.Split(f)
23		ext := filepath.Ext(f)
24
25		match, _ := buildContext.MatchFile(dir, filename)
26		// MatchFile filters out anything without a file extension. In the
27		// case of CompiledGoFiles (in particular gco processed files from
28		// the cache), we want them.
29		if match || ext == "" {
30			ret = append(ret, f)
31		}
32	}
33	return ret
34}
35