Skip to content

Commit

Permalink
[WIP] newt: Use default linker script if it's not specified in bsp.yml
Browse files Browse the repository at this point in the history
Now if "bsp.linkerscript" key is empty default linker script
will be passed to the linker.

IMPORTANT: bsp.linkerscript key still has to be present in the
bsp.yml file. It simply has to exist without any paths specified.
It's done this way to prevent adding linker scripts to
native target's builds.
  • Loading branch information
m-gorecki committed Jan 22, 2024
1 parent 24e6a29 commit b8f9885
Showing 1 changed file with 30 additions and 2 deletions.
32 changes: 30 additions & 2 deletions newt/pkg/bsp_package.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,16 @@ func (bsp *BspPackage) resolvePathSetting(
return path, nil
}

func (bsp *BspPackage) getAutogeneratedLinkerScriptPath() (string, error) {
defaultLinkerScriptPath := "bin/" + bsp.yov.Pkg.Name() + "/generated/link/mynewt.ld"
proj := interfaces.GetProject()
path, err := proj.ResolvePath(proj.Path(), defaultLinkerScriptPath)
if err != nil {
return "", err
}
return path, nil
}

// Interprets a setting as either a single linker script or a list of linker
// scripts.
func (bsp *BspPackage) resolveLinkerScriptSetting(
Expand All @@ -103,14 +113,33 @@ func (bsp *BspPackage) resolveLinkerScriptSetting(
return nil, err
}

if path != "" {
if path == "autogenerated" {
path, err = bsp.getAutogeneratedLinkerScriptPath()
if err != nil {
return nil, util.PreNewtError(err,
"Could not resolve autogenerated linker script path for target \"%s\"",
bsp.yov.Pkg.Name())
}
paths = append(paths, path)
} else if path != "" {
paths = append(paths, path)
}
} else {
proj := interfaces.GetProject()

// Read each linker script from the list.
for _, val := range vals {
if val == "autogenerated" {
path, err := bsp.getAutogeneratedLinkerScriptPath()
if err != nil {
return nil, util.PreNewtError(err,
"Could not resolve autogenerated linker script path for target \"%s\"",
bsp.yov.Pkg.Name())
}
paths = append(paths, path)
continue
}

path, err := proj.ResolvePath(ypkg.Repo().Path(), val)
if err != nil {
return nil, util.PreNewtError(err,
Expand Down Expand Up @@ -226,7 +255,6 @@ func NewBspPackage(lpkg *LocalPackage, yov *BspYCfgOverride) (*BspPackage, error
lpkg.Load()
bsp.LocalPackage = lpkg
bsp.BspV = ycfg.NewYCfg(bsp.BspYamlPath())

err := bsp.Reload(nil)

return bsp, err
Expand Down

0 comments on commit b8f9885

Please sign in to comment.