1
2
3
4
5 package imports
6
7 import (
8 "cmd/go/internal/cfg"
9 "sync"
10 )
11
12 var (
13 tags map[string]bool
14 tagsOnce sync.Once
15 )
16
17
18
19
20 func Tags() map[string]bool {
21 tagsOnce.Do(func() {
22 tags = loadTags()
23 })
24 return tags
25 }
26
27 func loadTags() map[string]bool {
28 tags := map[string]bool{
29 cfg.BuildContext.GOOS: true,
30 cfg.BuildContext.GOARCH: true,
31 cfg.BuildContext.Compiler: true,
32 }
33 if cfg.BuildContext.CgoEnabled {
34 tags["cgo"] = true
35 }
36 for _, tag := range cfg.BuildContext.BuildTags {
37 tags[tag] = true
38 }
39 for _, tag := range cfg.BuildContext.ReleaseTags {
40 tags[tag] = true
41 }
42 return tags
43 }
44
45 var (
46 anyTags map[string]bool
47 anyTagsOnce sync.Once
48 )
49
50
51
52
53 func AnyTags() map[string]bool {
54 anyTagsOnce.Do(func() {
55 anyTags = map[string]bool{"*": true}
56 })
57 return anyTags
58 }
59
View as plain text