diff --git a/target.go b/target.go index fb73d677..7dcaa968 100644 --- a/target.go +++ b/target.go @@ -15,6 +15,11 @@ import ( "strings" ) +// TINYGOROOT is the path to the final location for checking tinygo files. If +// unset (by a -X ldflag), then sourceDir() will fallback to the original build +// directory. +var TINYGOROOT string + // Target specification for a given target. Used for bare metal targets. // // The target specification is mostly inspired by Rust: @@ -270,6 +275,14 @@ func sourceDir() string { return root } + if TINYGOROOT != "" { + if !isSourceDir(TINYGOROOT) { + fmt.Fprintln(os.Stderr, "error: TINYGOROOT was not set to the correct root") + os.Exit(1) + } + return TINYGOROOT + } + // Find root from executable path. path, err := os.Executable() if err != nil {