You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by an...@apache.org on 2022/09/14 13:47:12 UTC
[mynewt-newt] branch master updated: syscfg: Write defs for packages included in build
This is an automated email from the ASF dual-hosted git repository.
andk 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 cf3f099 syscfg: Write defs for packages included in build
cf3f099 is described below
commit cf3f09920ad0a36ca9ad1ea614a847e23d139392
Author: Andrzej Kaczmarek <an...@codecoup.pl>
AuthorDate: Fri Sep 2 13:36:56 2022 +0200
syscfg: Write defs for packages included in build
This adds symbols in syscfg.h for each package included in build. The
symbol name has "MYNEWT_PKG_" prefix followed with sanitized package's
full name, i.e. repo designator has "@" stripped and is separated with
"__" from package name, then all illegal characters in resulting name
are replaced with "_".
---
newt/builder/targetbuild.go | 9 +++++----
newt/syscfg/syscfg.go | 32 +++++++++++++++++++++++++++++---
2 files changed, 34 insertions(+), 7 deletions(-)
diff --git a/newt/builder/targetbuild.go b/newt/builder/targetbuild.go
index 532db09..41057d0 100644
--- a/newt/builder/targetbuild.go
+++ b/newt/builder/targetbuild.go
@@ -282,7 +282,8 @@ func (t *TargetBuilder) validateAndWriteCfg() error {
incDir := GeneratedIncludeDir(t.target.FullName())
srcDir := GeneratedSrcDir(t.target.FullName())
- if err := syscfg.EnsureWritten(t.res.Cfg, incDir); err != nil {
+ lpkgs := resolve.RpkgSliceToLpkgSlice(t.res.MasterSet.Rpkgs)
+ if err := syscfg.EnsureWritten(t.res.Cfg, incDir, lpkgs); err != nil {
return err
}
@@ -292,7 +293,7 @@ func (t *TargetBuilder) validateAndWriteCfg() error {
// Generate loader sysinit.
if t.res.LoaderSet != nil {
- lpkgs := resolve.RpkgSliceToLpkgSlice(t.res.LoaderSet.Rpkgs)
+ lpkgs = resolve.RpkgSliceToLpkgSlice(t.res.LoaderSet.Rpkgs)
if err := t.res.SysinitCfg.EnsureWritten(lpkgs, srcDir,
pkg.ShortName(t.target.Package()), true); err != nil {
@@ -301,7 +302,7 @@ func (t *TargetBuilder) validateAndWriteCfg() error {
}
// Generate app sysinit.
- lpkgs := resolve.RpkgSliceToLpkgSlice(t.res.AppSet.Rpkgs)
+ lpkgs = resolve.RpkgSliceToLpkgSlice(t.res.AppSet.Rpkgs)
if err := t.res.SysinitCfg.EnsureWritten(lpkgs, srcDir,
pkg.ShortName(t.target.Package()), false); err != nil {
@@ -310,7 +311,7 @@ func (t *TargetBuilder) validateAndWriteCfg() error {
// Generate loader sysinit.
if t.res.LoaderSet != nil {
- lpkgs := resolve.RpkgSliceToLpkgSlice(t.res.LoaderSet.Rpkgs)
+ lpkgs = resolve.RpkgSliceToLpkgSlice(t.res.LoaderSet.Rpkgs)
if err := t.res.SysdownCfg.EnsureWritten(lpkgs, srcDir,
pkg.ShortName(t.target.Package()), true); err != nil {
diff --git a/newt/syscfg/syscfg.go b/newt/syscfg/syscfg.go
index 2c73f6c..b504a1d 100644
--- a/newt/syscfg/syscfg.go
+++ b/newt/syscfg/syscfg.go
@@ -80,6 +80,8 @@ const SYSCFG_TASK_PRIO_MAX = 0xef
var cfgRefRe = regexp.MustCompile("MYNEWT_VAL\\((\\w+)\\)")
var cfgChoiceValRe = regexp.MustCompile("^[A-Za-z0-9_]+$")
+var cfgPkgRepoName = regexp.MustCompile("^@([A-Za-z0-9-_]+)/")
+var cfgPkgIllegalChar = regexp.MustCompile("[^A-Za-z0-9_]")
type CfgPoint struct {
Value string
@@ -1580,7 +1582,28 @@ func writeReposInfo(w io.Writer) {
}
}
-func write(cfg Cfg, w io.Writer) {
+func sanitizePkgName(name string) string {
+ name = cfgPkgRepoName.ReplaceAllString(name, "${1}__")
+ name = cfgPkgIllegalChar.ReplaceAllLiteralString(name, "_")
+
+ return name
+}
+
+func writePackages(lpkgs []*pkg.LocalPackage, w io.Writer) {
+ pkgs := []string{}
+ for _, lpkg := range lpkgs {
+ pkgs = append(pkgs, sanitizePkgName(lpkg.FullName()))
+ }
+
+ sort.Strings(pkgs)
+
+ fmt.Fprintf(w, "/*** Included packages */\n")
+ for _, name := range pkgs {
+ fmt.Fprintf(w, "#define MYNEWT_PKG_%s 1\n", name)
+ }
+}
+
+func write(cfg Cfg, lpkgs []*pkg.LocalPackage, w io.Writer) {
fmt.Fprintf(w, newtutil.GeneratedPreamble())
fmt.Fprintf(w, "#ifndef H_MYNEWT_SYSCFG_\n")
@@ -1597,10 +1620,13 @@ func write(cfg Cfg, w io.Writer) {
writeSettings(cfg, w)
fmt.Fprintf(w, "\n")
+ writePackages(lpkgs, w)
+ fmt.Fprintf(w, "\n")
+
fmt.Fprintf(w, "#endif\n")
}
-func EnsureWritten(cfg Cfg, includeDir string) error {
+func EnsureWritten(cfg Cfg, includeDir string, lpkgs []*pkg.LocalPackage) error {
// XXX: Detect these problems at error text generation time.
if err := calcPriorities(cfg, CFG_SETTING_TYPE_TASK_PRIO,
SYSCFG_TASK_PRIO_MAX, false); err != nil {
@@ -1609,7 +1635,7 @@ func EnsureWritten(cfg Cfg, includeDir string) error {
}
buf := bytes.Buffer{}
- write(cfg, &buf)
+ write(cfg, lpkgs, &buf)
path := includeDir + "/" + HEADER_PATH