diff options
author | Dan Willemsen <dwillemsen@google.com> | 2015-11-17 15:19:46 -0800 |
---|---|---|
committer | Dan Willemsen <dwillemsen@google.com> | 2015-11-17 18:09:57 -0800 |
commit | 322a0a6b59dfe5d059b7075cd033dc0bcb49dc13 (patch) | |
tree | ad310d354966511ee832ef6ac372687d26fc8008 /cc | |
parent | 5602b5888e7c7eb523bd3bc71eadac7324816bce (diff) | |
download | build_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.go | 24 |
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, }, }) } |