This is an automated email from the ASF dual-hosted git repository.
jerzy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-newt.git
The following commit(s) were added to refs/heads/master by this push:
new 07e635eb newt: Add possibility to use generated linker script
07e635eb is described below
commit 07e635eb43f25e1d76bc44d1cf7f849f60844143
Author: Michal Gorecki <[email protected]>
AuthorDate: Fri Jan 19 15:28:51 2024 +0100
newt: Add possibility to use generated linker script
Now if "bsp.linkerscript" has value "autogenerated", default linker script
will be passed to the linker.
---
newt/pkg/bsp_package.go | 27 +++++++++++++++++++++++++--
1 file changed, 25 insertions(+), 2 deletions(-)
diff --git a/newt/pkg/bsp_package.go b/newt/pkg/bsp_package.go
index 158ebec2..54b0aaed 100644
--- a/newt/pkg/bsp_package.go
+++ b/newt/pkg/bsp_package.go
@@ -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(
@@ -103,7 +113,15 @@ 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 {
@@ -111,6 +129,12 @@ func (bsp *BspPackage) resolveLinkerScriptSetting(
// Read each linker script from the list.
for _, val := range vals {
+ if val == "autogenerated" {
+ return nil, util.PreNewtError(err,
+ "Both autogenerated and custom linker
scripts cannot be used."+
+ "Newt handles either
autogenerated linker script or a list of custom linker scripts.")
+ }
+
path, err := proj.ResolvePath(ypkg.Repo().Path(), val)
if err != nil {
return nil, util.PreNewtError(err,
@@ -226,7 +250,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