/
interface.go
229 lines (215 loc) · 5.51 KB
/
interface.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
package build
import (
gb "go/build"
"io"
)
// Assembler provides access to the `go tool asm` tool.
type Assembler interface {
// Assemble runs the asm tool.
Assemble(args AssembleArgs) error
}
// AssembleArgs passed to Assemble.
type AssembleArgs struct {
Context gb.Context
WorkingDirectory string
Stdout io.Writer
Stderr io.Writer
// Files to assemble.
Files []string
// TrimPath is "-trimpath string"
TrimPath string
// OutputFile is "-o string"
OutputFile string
// IncludeDirs is "-I string [-I string ...]"
IncludeDirs []string
// Defines is "-D string [-D string ...]"
Defines []string
// GenSymABIs is "-gensymabis"
GenSymABIs bool
// Shared is "-shared"
Shared bool
// DynamicLink is "-dynlink"
DynamicLink bool
}
// Compiler provides access to the `go tool compile` tool.
type Compiler interface {
// Compile runs the compile tool.
Compile(args CompileArgs) error
}
// CompileArgs passed to Compile.
type CompileArgs struct {
Context gb.Context
WorkingDirectory string
Stdout io.Writer
Stderr io.Writer
// Files to compile.
Files []string
// TrimPath is "-trimpath string"
TrimPath string
// OutputFile is "-o string"
OutputFile string
// BuildID is "-buildid string"
BuildID string
// DisableBoundsChecking is "-B"
DisableBoundsChecking bool
// CompilingRuntimeLibrary is "-+"
CompilingRuntimeLibrary bool
// DisableOptimizations is "-N"
DisableOptimizations bool
// RelativeImportPath is "-D string"
RelativeImportPath string
// IncludeDirs is "-I string [-I string ...]"
IncludeDirs []string
// Concurrency is "-c=int"
Concurrency int
// AsmHeaderFile is "-asmhdr string"
AsmHeaderFile string
// Complete is "-complete"
Complete bool
// DynamicLink is "-dynlink"
DynamicLink bool
// GoVersion is "-goversion string"
GoVersion string
// HaltOnError is "-h"
HaltOnError bool
// ImportConfigFile is "-importcfg string"
ImportConfigFile string
// ImportMap is "-importmap string [-importmap string ...]"
ImportMap []string
// InstallSuffix is "-installsuffix string"
InstallSuffix string
// DisableInlining is "-l"
DisableInlining bool
// LinkObjectOutputFile is "-linkobj path"
LinkObjectOutputFile string
// MSan is "-msan"
MSan bool
// NoLocalImports is "-nolocalimports"
NoLocalImports bool
// PackageImportPath is "-p string"
PackageImportPath string
// Pack is "-pack"
Pack bool
// Race is "-race"
Race bool
// Shared is "-shared"
Shared bool
// SmallFrames is "-smallframes"
SmallFrames bool
// CompilingStandardLibrary is "-std"
CompilingStandardLibrary bool
// SymABIsFile is "-symabis string"
SymABIsFile string
}
// Linker provides access to the `go tool link` tool.
type Linker interface {
// Link runs the link tool.
Link(args LinkArgs) error
}
// LinkArgs passed to Link.
type LinkArgs struct {
Context gb.Context
WorkingDirectory string
Stdout io.Writer
Stderr io.Writer
// Files to link.
Files []string
// EntrySymbolName is "-E string"
EntrySymbolName string
// HeaderType is "-H string"
HeaderType string
// ELFDynamicLinker is "-I string"
ELFDynamicLinker string
// LibraryPaths is "-L string [-L string ...]"
LibraryPaths []string
// StringDefines is "-X string [-X string ...]"
StringDefines []string
// BuildID is "-buildid string"
BuildID string
// BuildMode is "-buildmode string"
BuildMode string
// ExternalTar is "-extar string"
ExternalTar string
// ExternalLinker is "-extld string"
ExternalLinker string
// ExternalLinkerFlags is "-extldflags string"
ExternalLinkerFlags string
// IgnoreVersionMismatch is "-f"
IgnoreVersionMismatch bool
// DisableGoPackageDataChecks is "-g"
DisableGoPackageDataChecks bool
// HaltOnError is "-h"
HaltOnError bool
// ImportConfigFile is "-importcfg string"
ImportConfigFile string
// InstallSuffix is "-installsuffix string"
InstallSuffix string
// FieldTrackingSymbol is "-k string"
FieldTrackingSymbol string
// LibGCC is "-libgcc string"
LibGCC string
// LinkMode is "-linkmode string"
LinkMode string
// LinkShared is "-linkshared"
LinkShared bool
// MSan is "-msan"
MSan bool
// OutputFile is "-o string"
OutputFile string
// PluginPath is "-pluginpath string"
PluginPath string
// Race is "-race"
Race bool
// TempDir is "-tmpdir string"
TempDir string
// RejectUnsafePackages is "-u"
RejectUnsafePackages bool
}
// Packer provides access to the `go tool pack` tool.
type Packer interface {
// Pack runs the link pack.
Pack(args PackArgs) error
}
// PackOp is the operation to perform on the object file.
type PackOp int
const (
_ = iota
// AppendNew passes the operation "c"
AppendNew = iota
// Print passes the operation "p"
Print = iota
// Append passes the operation "r"
Append = iota
// List passes the operation "t"
List = iota
// Extract passes the operation "x"
Extract = iota
)
// PackArgs passed to Pack.
type PackArgs struct {
Context gb.Context
WorkingDirectory string
Stdout io.Writer
Stderr io.Writer
// Op the operation to perform on the object file.
Op PackOp
// ObjectFile to operate on
ObjectFile string
// Names to pass to the operation.
Names []string
}
// BuildIDer can read and write BuildID
type BuildIDer interface {
// BuildID either reads or write the BuildID
BuildID(args BuildIDArgs) (string, error)
}
// BuildIDArgs passed to BuildID
type BuildIDArgs struct {
Context gb.Context
WorkingDirectory string
Stderr io.Writer
// ObjectFile to read or write BuildID
ObjectFile string
// Write is "-w"
Write bool
}