mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-14 07:53:40 +00:00
Added supporting suctom TargetSpec json file via -target flag.
This commit is contained in:
@@ -104,10 +104,18 @@ func (spec *TargetSpec) load(r io.Reader) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// loadFromName loads the given target from the targets/ directory inside the
|
||||
// compiler sources.
|
||||
func (spec *TargetSpec) loadFromName(name string) error {
|
||||
path := filepath.Join(sourceDir(), "targets", strings.ToLower(name)+".json")
|
||||
// loadFromGivenStr loads the TargetSpec from the given string that could be:
|
||||
// - targets/ directory inside the compiler sources
|
||||
// - a relative or absolute path to custom (project specific) target specification .json file;
|
||||
// the Inherits[] could contain the files from target folder (ex. stm32f4disco)
|
||||
// as well as path to custom files (ex. myAwesomeProject.json)
|
||||
func (spec *TargetSpec) loadFromGivenStr(str string) error {
|
||||
path := ""
|
||||
if strings.HasSuffix(str, ".json") {
|
||||
path, _ = filepath.Abs(str)
|
||||
} else {
|
||||
path = filepath.Join(sourceDir(), "targets", strings.ToLower(str)+".json")
|
||||
}
|
||||
fp, err := os.Open(path)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -122,7 +130,7 @@ func (spec *TargetSpec) resolveInherits() error {
|
||||
newSpec := &TargetSpec{}
|
||||
for _, name := range spec.Inherits {
|
||||
subtarget := &TargetSpec{}
|
||||
err := subtarget.loadFromName(name)
|
||||
err := subtarget.loadFromGivenStr(name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -172,7 +180,7 @@ func LoadTarget(target string) (*TargetSpec, error) {
|
||||
// See whether there is a target specification for this target (e.g.
|
||||
// Arduino).
|
||||
spec := &TargetSpec{}
|
||||
err := spec.loadFromName(target)
|
||||
err := spec.loadFromGivenStr(target)
|
||||
if err == nil {
|
||||
// Successfully loaded this target from a built-in .json file. Make sure
|
||||
// it includes all parents as specified in the "inherits" key.
|
||||
|
||||
Reference in New Issue
Block a user