aboutsummaryrefslogtreecommitdiffstats
path: root/cc
diff options
context:
space:
mode:
authorDan Willemsen <dwillemsen@google.com>2015-11-17 15:19:46 -0800
committerDan Willemsen <dwillemsen@google.com>2015-11-17 18:09:57 -0800
commit322a0a6b59dfe5d059b7075cd033dc0bcb49dc13 (patch)
treead310d354966511ee832ef6ac372687d26fc8008 /cc
parent5602b5888e7c7eb523bd3bc71eadac7324816bce (diff)
downloadbuild_soong-322a0a6b59dfe5d059b7075cd033dc0bcb49dc13.tar.gz
build_soong-322a0a6b59dfe5d059b7075cd033dc0bcb49dc13.tar.bz2
build_soong-322a0a6b59dfe5d059b7075cd033dc0bcb49dc13.zip
Fix and optimize relPwd in cc
We cannot use the PWD trick for any compile on Darwin, since /proc doesn't exist. So instead of checking for darwin host modules, just check runtime.GOOS. And since this isn't a per-module decision, don't pass it along as a variable to every build command, but make it a global variable. Change-Id: Iea8609f49a9d316c58aed527f62d1986c970eaac
Diffstat (limited to 'cc')
-rw-r--r--cc/builder.go24
1 files changed, 13 insertions, 11 deletions
diff --git a/cc/builder.go b/cc/builder.go
index f2170823..3d5bb779 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -47,7 +47,7 @@ var (
Command: "$relPwd $ccCmd -c $cFlags -MD -MF ${out}.d -o $out $in",
Description: "cc $out",
},
- "relPwd", "ccCmd", "cFlags")
+ "ccCmd", "cFlags")
ld = pctx.StaticRule("ld",
blueprint.RuleParams{
@@ -108,6 +108,18 @@ var (
"ccCmd", "cFlags", "libName")
)
+func init() {
+ // We run gcc/clang with PWD=/proc/self/cwd to remove $TOP from the
+ // debug output. That way two builds in two different directories will
+ // create the same output.
+ if runtime.GOOS != "darwin" {
+ pctx.StaticVariable("relPwd", "PWD=/proc/self/cwd")
+ } else {
+ // Darwin doesn't have /proc
+ pctx.StaticVariable("relPwd", "")
+ }
+}
+
type builderFlags struct {
globalFlags string
asFlags string
@@ -128,15 +140,6 @@ func TransformSourceToObj(ctx common.AndroidModuleContext, subdir string, srcFil
srcRoot := ctx.AConfig().SrcDir()
intermediatesRoot := ctx.AConfig().IntermediatesDir()
- // We run gcc/clang with PWD=/proc/self/cwd to remove $TOP from the
- // debug output. That way two builds in two different directories will
- // create the same output.
- relPwd := "PWD=/proc/self/cwd"
- if ctx.Darwin() {
- // /proc doesn't exist on Darwin
- relPwd = ""
- }
-
objFiles = make([]string, len(srcFiles))
objDir := common.ModuleObjDir(ctx)
if subdir != "" {
@@ -209,7 +212,6 @@ func TransformSourceToObj(ctx common.AndroidModuleContext, subdir string, srcFil
Args: map[string]string{
"cFlags": moduleCflags,
"ccCmd": ccCmd,
- "relPwd": relPwd,
},
})
}