From cb648d8ae1755028deda4143db2fa61419327d8a Mon Sep 17 00:00:00 2001 From: Ron Evans Date: Tue, 11 Dec 2018 10:37:27 +0100 Subject: [PATCH] compiler: pass -cflags and -ldflags to tinygo CLI command Signed-off-by: Ron Evans --- compiler/compiler.go | 3 ++- main.go | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/compiler/compiler.go b/compiler/compiler.go index 2d621249..436544d8 100644 --- a/compiler/compiler.go +++ b/compiler/compiler.go @@ -32,7 +32,8 @@ func init() { type Config struct { Triple string // LLVM target triple, e.g. x86_64-unknown-linux-gnu (empty string means default) GC string // garbage collection strategy - CFlags []string // flags to pass to cgo + CFlags []string // cflags to pass to cgo + LDFlags []string // ldflags to pass to cgo DumpSSA bool // dump Go SSA, for compiler debugging Debug bool // add debug symbols for gdb RootDir string // GOROOT for TinyGo diff --git a/main.go b/main.go index c1a311f2..fb0d7243 100644 --- a/main.go +++ b/main.go @@ -34,6 +34,8 @@ type BuildConfig struct { debug bool printSizes string initInterp bool + cFlags []string + ldFlags []string } // Helper function for Compiler object. @@ -41,10 +43,16 @@ func Compile(pkgName, outpath string, spec *TargetSpec, config *BuildConfig, act if config.gc == "" && spec.GC != "" { config.gc = spec.GC } + + // Append command line passed CFlags and LDFlags + spec.CFlags = append(spec.CFlags, config.cFlags...) + spec.LDFlags = append(spec.LDFlags, config.ldFlags...) + compilerConfig := compiler.Config{ Triple: spec.Triple, GC: config.gc, CFlags: spec.CFlags, + LDFlags: spec.LDFlags, Debug: config.debug, DumpSSA: config.dumpSSA, RootDir: sourceDir(), @@ -497,6 +505,8 @@ func main() { ocdOutput := flag.Bool("ocd-output", false, "print OCD daemon output during debug") initInterp := flag.Bool("initinterp", true, "enable/disable partial evaluator of generated IR") port := flag.String("port", "/dev/ttyACM0", "flash port") + cFlags := flag.String("cflags", "", "additional cflags for compiler") + ldFlags := flag.String("ldflags", "", "additional ldflags for linker") if len(os.Args) < 2 { fmt.Fprintln(os.Stderr, "No command-line arguments supplied.") @@ -516,6 +526,14 @@ func main() { initInterp: *initInterp, } + if *cFlags != "" { + config.cFlags = strings.Split(*cFlags, " ") + } + + if *ldFlags != "" { + config.ldFlags = strings.Split(*ldFlags, " ") + } + os.Setenv("CC", "clang -target="+*target) switch command {