This is an automated email from the ASF dual-hosted git repository.

marko 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 064a5ca  newt; fix flag use when building dependencies. Specifically, 
need the missing asflags when using clang to build sim.
     new cf1e699  Merge pull request #421 from mkiiskila/fix_dep_flags
064a5ca is described below

commit 064a5ca1a950d4cef1430cc60166548f59317343
Author: Marko Kiiskila <ma...@apache.org>
AuthorDate: Mon Nov 23 15:41:49 2020 +0200

    newt; fix flag use when building dependencies.
    Specifically, need the missing asflags when using clang to build sim.
---
 newt/toolchain/compiler.go | 28 ++++++++++++++++++++++++----
 newt/toolchain/deps.go     |  6 +++---
 2 files changed, 27 insertions(+), 7 deletions(-)

diff --git a/newt/toolchain/compiler.go b/newt/toolchain/compiler.go
index cf0531a..ad264ac 100644
--- a/newt/toolchain/compiler.go
+++ b/newt/toolchain/compiler.go
@@ -487,19 +487,39 @@ func (c *Compiler) CompileFileCmd(file string, 
compilerType int) (
        return cmd, nil
 }
 
-// Generates a dependency Makefile (.d) for the specified source C file.
+// Generates a dependency Makefile (.d) for the specified source file.
 //
 // @param file                  The name of the source file.
-func (c *Compiler) GenDepsForFile(file string) error {
+func (c *Compiler) GenDepsForFile(file string, compilerType int) error {
        depPath := c.dstFilePath(file) + ".d"
        depDir := filepath.Dir(depPath)
        if util.NodeNotExist(depDir) {
                os.MkdirAll(depDir, 0755)
        }
 
+       var cmdName string
+       var flags []string
+       switch compilerType {
+        case COMPILER_TYPE_C:
+                cmdName = c.ccPath
+                flags = c.cflagsStrings()
+        case COMPILER_TYPE_ASM:
+                cmdName = c.asPath
+
+                // Include both the compiler flags and the assembler flags.
+                // XXX: This is not great.  We don't have a way of specifying 
compiler
+                // flags without also passing them to the assembler.
+                flags = append(c.cflagsStrings(), c.aflagsStrings()...)
+        case COMPILER_TYPE_CPP:
+                cmdName = c.cppPath
+                flags = append(c.cflagsStrings(), c.cxxflagsStrings()...)
+        default:
+                return util.NewNewtError("Unknown compiler type")
+       }
+
        srcPath := strings.TrimPrefix(file, c.baseDir+"/")
-       cmd := []string{c.ccPath}
-       cmd = append(cmd, c.cflagsStrings()...)
+       cmd := []string{cmdName}
+       cmd = append(cmd, flags...)
        cmd = append(cmd, c.includesStrings()...)
        cmd = append(cmd, []string{"-MM", "-MG", srcPath}...)
 
diff --git a/newt/toolchain/deps.go b/newt/toolchain/deps.go
index 48b5462..ee6bc62 100644
--- a/newt/toolchain/deps.go
+++ b/newt/toolchain/deps.go
@@ -206,7 +206,7 @@ func (tracker *DepTracker) CompileRequired(srcFile string,
 
        if commandHasChanged(objPath, cmd) {
                logRebuildReqdCmdChanged(srcFile)
-               err := tracker.compiler.GenDepsForFile(srcFile)
+               err := tracker.compiler.GenDepsForFile(srcFile, compilerType)
                if err != nil {
                        return false, err
                }
@@ -214,7 +214,7 @@ func (tracker *DepTracker) CompileRequired(srcFile string,
        }
 
        if util.NodeNotExist(depPath) {
-               err := tracker.compiler.GenDepsForFile(srcFile)
+               err := tracker.compiler.GenDepsForFile(srcFile, compilerType)
                if err != nil {
                        return false, err
                }
@@ -246,7 +246,7 @@ func (tracker *DepTracker) CompileRequired(srcFile string,
        }
 
        if srcModTime.After(depModTime) {
-               err := tracker.compiler.GenDepsForFile(srcFile)
+               err := tracker.compiler.GenDepsForFile(srcFile, compilerType)
                if err != nil {
                        return false, err
                }

Reply via email to