all: support Arduino in the compiler driver

This makes sure the compiler itself can build/link an ELF file that
works on an Arduino.
Этот коммит содержится в:
Ayke van Laethem 2018-09-12 20:55:50 +02:00
родитель 865520b571
коммит 914cd56ca5
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: E97FF5335DFDFDED
3 изменённых файлов: 10 добавлений и 4 удалений

Просмотреть файл

@ -89,7 +89,8 @@ func Compile(pkgName, runtimePath, outpath, target string, printIR, dumpSSA bool
// Link the object file with the system compiler. // Link the object file with the system compiler.
executable := filepath.Join(dir, "main") executable := filepath.Join(dir, "main")
cmd := exec.Command("cc", "-o", executable, objfile) args := append(spec.PreLinkArgs, "-o", executable, objfile)
cmd := exec.Command(spec.Linker, args...)
cmd.Stdout = os.Stdout cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr cmd.Stderr = os.Stderr
err = cmd.Run() err = cmd.Run()

Просмотреть файл

@ -16,6 +16,8 @@ import (
type TargetSpec struct { type TargetSpec struct {
Triple string `json:"llvm-target"` Triple string `json:"llvm-target"`
BuildTags []string `json:"build-tags"` BuildTags []string `json:"build-tags"`
Linker string `json:"linker"`
PreLinkArgs []string `json:"pre-link-args"`
} }
// Load a target specification // Load a target specification
@ -23,6 +25,7 @@ func LoadTarget(target string) (*TargetSpec, error) {
spec := &TargetSpec{ spec := &TargetSpec{
Triple: target, Triple: target,
BuildTags: []string{runtime.GOOS, runtime.GOARCH}, BuildTags: []string{runtime.GOOS, runtime.GOARCH},
Linker: "cc",
} }
// See whether there is a target specification for this target (e.g. // See whether there is a target specification for this target (e.g.

Просмотреть файл

@ -1,4 +1,6 @@
{ {
"llvm-target": "avr-atmel-none", "llvm-target": "avr-atmel-none",
"build-tags": ["avr", "avr8", "atmega", "atmega328p", "js", "wasm"] "build-tags": ["avr", "avr8", "atmega", "atmega328p", "js", "wasm"],
"linker": "avr-gcc",
"pre-link-args": ["-nostdlib", "-T", "avr.ld", "-Wl,--gc-sections", "avr.S"]
} }