j7b
6 years ago
committed by
Ayke van Laethem
No known key found for this signature in database
GPG Key ID: E97FF5335DFDFDED
3 changed files with
9 additions and
1 deletions
-
compiler/compiler.go
-
main.go
-
target.go
|
|
@ -30,6 +30,7 @@ func init() { |
|
|
|
type Config struct { |
|
|
|
Triple string // LLVM target triple, e.g. x86_64-unknown-linux-gnu (empty string means default)
|
|
|
|
CPU string // LLVM CPU name, e.g. atmega328p (empty string means default)
|
|
|
|
Features []string // LLVM CPU features
|
|
|
|
GOOS string //
|
|
|
|
GOARCH string //
|
|
|
|
GC string // garbage collection strategy
|
|
|
@ -101,7 +102,11 @@ func NewCompiler(pkgName string, config Config) (*Compiler, error) { |
|
|
|
if err != nil { |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
c.machine = target.CreateTargetMachine(config.Triple, config.CPU, "", llvm.CodeGenLevelDefault, llvm.RelocStatic, llvm.CodeModelDefault) |
|
|
|
features := "" |
|
|
|
if len(config.Features) > 0 { |
|
|
|
features = strings.Join(config.Features, `,`) |
|
|
|
} |
|
|
|
c.machine = target.CreateTargetMachine(config.Triple, config.CPU, features, llvm.CodeGenLevelDefault, llvm.RelocStatic, llvm.CodeModelDefault) |
|
|
|
c.targetData = c.machine.CreateTargetData() |
|
|
|
|
|
|
|
c.ctx = llvm.NewContext() |
|
|
|
|
|
@ -94,6 +94,7 @@ func Compile(pkgName, outpath string, spec *TargetSpec, config *BuildConfig, act |
|
|
|
compilerConfig := compiler.Config{ |
|
|
|
Triple: spec.Triple, |
|
|
|
CPU: spec.CPU, |
|
|
|
Features: spec.Features, |
|
|
|
GOOS: spec.GOOS, |
|
|
|
GOARCH: spec.GOARCH, |
|
|
|
GC: config.gc, |
|
|
|
|
|
@ -24,6 +24,7 @@ type TargetSpec struct { |
|
|
|
Inherits []string `json:"inherits"` |
|
|
|
Triple string `json:"llvm-target"` |
|
|
|
CPU string `json:"cpu"` |
|
|
|
Features []string `json:"features"` |
|
|
|
GOOS string `json:"goos"` |
|
|
|
GOARCH string `json:"goarch"` |
|
|
|
BuildTags []string `json:"build-tags"` |
|
|
@ -52,6 +53,7 @@ func (spec *TargetSpec) copyProperties(spec2 *TargetSpec) { |
|
|
|
if spec2.CPU != "" { |
|
|
|
spec.CPU = spec2.CPU |
|
|
|
} |
|
|
|
spec.Features = append(spec.Features, spec2.Features...) |
|
|
|
if spec2.GOOS != "" { |
|
|
|
spec.GOOS = spec2.GOOS |
|
|
|
} |
|
|
|