diff options
author | Colin Cross <ccross@android.com> | 2015-03-25 14:43:57 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2015-03-26 14:13:49 -0700 |
commit | 68f55102dadc880e2b57c669415771395ac0c3b0 (patch) | |
tree | 1dcbe3dd29a50bdb22d3750ef0633fe29186c3f6 /build.ninja.in | |
parent | f7531f1a21aaa56ef53cb1714e954e487528109f (diff) | |
download | build_soong-68f55102dadc880e2b57c669415771395ac0c3b0.tar.gz build_soong-68f55102dadc880e2b57c669415771395ac0c3b0.tar.bz2 build_soong-68f55102dadc880e2b57c669415771395ac0c3b0.zip |
Support dependencies on environment variables
Ninja can't depend on environment variables, so modifying build
behavior based on environment variables requires coordinating
between the soong script that invokes ninja and the soong_build
manifest generator.
Allow any module to call Config.Getenv to get the contents of an
environment variable while registering a dependency on it.
After all modules have been processed write out the state of
all used environment variables to a JSON file called
.soong.environment. During the next build the soong script
will use the soong_env tool to compare the contents of
.soong.environment to the current environment, and force a
build manifest regeneration by deleting the .soong.environment
file if any variables have changed.
Change-Id: Id0d81933a857bc2fc1cd7a393a3c6cec73dc4824
Diffstat (limited to 'build.ninja.in')
-rw-r--r-- | build.ninja.in | 74 |
1 files changed, 58 insertions, 16 deletions
diff --git a/build.ninja.in b/build.ninja.in index 2b802d43..4fb63250 100644 --- a/build.ninja.in +++ b/build.ninja.in @@ -53,7 +53,7 @@ rule g.bootstrap.link # Variant: # Type: bootstrap_go_binary # Factory: github.com/google/blueprint/bootstrap.newGoBinaryModule -# Defined: build/soong/Blueprints:123:1 +# Defined: build/soong/Blueprints:145:1 build .bootstrap/androidmk/obj/androidmk.a: g.bootstrap.gc $ ${g.bootstrap.srcDir}/build/soong/androidmk/cmd/androidmk/android.go $ @@ -79,7 +79,7 @@ default .bootstrap/bin/androidmk # Variant: # Type: bootstrap_go_package # Factory: github.com/google/blueprint/bootstrap.newGoPackageModule -# Defined: build/soong/Blueprints:136:1 +# Defined: build/soong/Blueprints:158:1 build .bootstrap/androidmk-parser/pkg/android/soong/androidmk/parser.a: $ g.bootstrap.gc $ @@ -295,12 +295,13 @@ build .bootstrap/soong-art/pkg/android/soong/art.a: g.bootstrap.gc $ .bootstrap/blueprint-pathtools/pkg/github.com/google/blueprint/pathtools.a $ .bootstrap/blueprint-deptools/pkg/github.com/google/blueprint/deptools.a $ .bootstrap/blueprint-bootstrap/pkg/github.com/google/blueprint/bootstrap.a $ + .bootstrap/soong-env/pkg/android/soong/env.a $ .bootstrap/soong-glob/pkg/android/soong/glob.a $ .bootstrap/soong-common/pkg/android/soong/common.a $ .bootstrap/soong-config/pkg/android/soong/config.a $ .bootstrap/soong-genrule/pkg/android/soong/genrule.a $ .bootstrap/soong-cc/pkg/android/soong/cc.a - incFlags = -I .bootstrap/blueprint-parser/pkg -I .bootstrap/blueprint-proptools/pkg -I .bootstrap/blueprint/pkg -I .bootstrap/blueprint-pathtools/pkg -I .bootstrap/blueprint-deptools/pkg -I .bootstrap/blueprint-bootstrap/pkg -I .bootstrap/soong-glob/pkg -I .bootstrap/soong-common/pkg -I .bootstrap/soong-config/pkg -I .bootstrap/soong-genrule/pkg -I .bootstrap/soong-cc/pkg + incFlags = -I .bootstrap/blueprint-parser/pkg -I .bootstrap/blueprint-proptools/pkg -I .bootstrap/blueprint/pkg -I .bootstrap/blueprint-pathtools/pkg -I .bootstrap/blueprint-deptools/pkg -I .bootstrap/blueprint-bootstrap/pkg -I .bootstrap/soong-env/pkg -I .bootstrap/soong-glob/pkg -I .bootstrap/soong-common/pkg -I .bootstrap/soong-config/pkg -I .bootstrap/soong-genrule/pkg -I .bootstrap/soong-cc/pkg pkgPath = android/soong/art default .bootstrap/soong-art/pkg/android/soong/art.a @@ -309,7 +310,7 @@ default .bootstrap/soong-art/pkg/android/soong/art.a # Variant: # Type: bootstrap_go_package # Factory: github.com/google/blueprint/bootstrap.newGoPackageModule -# Defined: build/soong/Blueprints:82:1 +# Defined: build/soong/Blueprints:104:1 build .bootstrap/soong-cc/pkg/android/soong/cc.a: g.bootstrap.gc $ ${g.bootstrap.srcDir}/build/soong/cc/builder.go $ @@ -327,11 +328,12 @@ build .bootstrap/soong-cc/pkg/android/soong/cc.a: g.bootstrap.gc $ .bootstrap/blueprint-pathtools/pkg/github.com/google/blueprint/pathtools.a $ .bootstrap/blueprint-deptools/pkg/github.com/google/blueprint/deptools.a $ .bootstrap/blueprint-bootstrap/pkg/github.com/google/blueprint/bootstrap.a $ + .bootstrap/soong-env/pkg/android/soong/env.a $ .bootstrap/soong-glob/pkg/android/soong/glob.a $ .bootstrap/soong-common/pkg/android/soong/common.a $ .bootstrap/soong-config/pkg/android/soong/config.a $ .bootstrap/soong-genrule/pkg/android/soong/genrule.a - incFlags = -I .bootstrap/blueprint-parser/pkg -I .bootstrap/blueprint-proptools/pkg -I .bootstrap/blueprint/pkg -I .bootstrap/blueprint-pathtools/pkg -I .bootstrap/blueprint-deptools/pkg -I .bootstrap/blueprint-bootstrap/pkg -I .bootstrap/soong-glob/pkg -I .bootstrap/soong-common/pkg -I .bootstrap/soong-config/pkg -I .bootstrap/soong-genrule/pkg + incFlags = -I .bootstrap/blueprint-parser/pkg -I .bootstrap/blueprint-proptools/pkg -I .bootstrap/blueprint/pkg -I .bootstrap/blueprint-pathtools/pkg -I .bootstrap/blueprint-deptools/pkg -I .bootstrap/blueprint-bootstrap/pkg -I .bootstrap/soong-env/pkg -I .bootstrap/soong-glob/pkg -I .bootstrap/soong-common/pkg -I .bootstrap/soong-config/pkg -I .bootstrap/soong-genrule/pkg pkgPath = android/soong/cc default .bootstrap/soong-cc/pkg/android/soong/cc.a @@ -340,12 +342,13 @@ default .bootstrap/soong-cc/pkg/android/soong/cc.a # Variant: # Type: bootstrap_go_package # Factory: github.com/google/blueprint/bootstrap.newGoPackageModule -# Defined: build/soong/Blueprints:51:1 +# Defined: build/soong/Blueprints:71:1 build .bootstrap/soong-common/pkg/android/soong/common.a: g.bootstrap.gc $ ${g.bootstrap.srcDir}/build/soong/common/arch.go $ ${g.bootstrap.srcDir}/build/soong/common/checkbuild.go $ ${g.bootstrap.srcDir}/build/soong/common/defs.go $ + ${g.bootstrap.srcDir}/build/soong/common/env.go $ ${g.bootstrap.srcDir}/build/soong/common/glob.go $ ${g.bootstrap.srcDir}/build/soong/common/module.go $ ${g.bootstrap.srcDir}/build/soong/common/paths.go | $ @@ -356,8 +359,9 @@ build .bootstrap/soong-common/pkg/android/soong/common.a: g.bootstrap.gc $ .bootstrap/blueprint-deptools/pkg/github.com/google/blueprint/deptools.a $ .bootstrap/blueprint-pathtools/pkg/github.com/google/blueprint/pathtools.a $ .bootstrap/blueprint-bootstrap/pkg/github.com/google/blueprint/bootstrap.a $ + .bootstrap/soong-env/pkg/android/soong/env.a $ .bootstrap/soong-glob/pkg/android/soong/glob.a - incFlags = -I .bootstrap/blueprint-parser/pkg -I .bootstrap/blueprint-proptools/pkg -I .bootstrap/blueprint/pkg -I .bootstrap/blueprint-deptools/pkg -I .bootstrap/blueprint-pathtools/pkg -I .bootstrap/blueprint-bootstrap/pkg -I .bootstrap/soong-glob/pkg + incFlags = -I .bootstrap/blueprint-parser/pkg -I .bootstrap/blueprint-proptools/pkg -I .bootstrap/blueprint/pkg -I .bootstrap/blueprint-deptools/pkg -I .bootstrap/blueprint-pathtools/pkg -I .bootstrap/blueprint-bootstrap/pkg -I .bootstrap/soong-env/pkg -I .bootstrap/soong-glob/pkg pkgPath = android/soong/common default .bootstrap/soong-common/pkg/android/soong/common.a @@ -366,7 +370,7 @@ default .bootstrap/soong-common/pkg/android/soong/common.a # Variant: # Type: bootstrap_go_package # Factory: github.com/google/blueprint/bootstrap.newGoPackageModule -# Defined: build/soong/Blueprints:69:1 +# Defined: build/soong/Blueprints:91:1 build .bootstrap/soong-config/pkg/android/soong/config.a: g.bootstrap.gc $ ${g.bootstrap.srcDir}/build/soong/config/config.go | $ @@ -377,18 +381,31 @@ build .bootstrap/soong-config/pkg/android/soong/config.a: g.bootstrap.gc $ .bootstrap/blueprint-deptools/pkg/github.com/google/blueprint/deptools.a $ .bootstrap/blueprint-pathtools/pkg/github.com/google/blueprint/pathtools.a $ .bootstrap/blueprint-bootstrap/pkg/github.com/google/blueprint/bootstrap.a $ + .bootstrap/soong-env/pkg/android/soong/env.a $ .bootstrap/soong-glob/pkg/android/soong/glob.a $ .bootstrap/soong-common/pkg/android/soong/common.a - incFlags = -I .bootstrap/blueprint-parser/pkg -I .bootstrap/blueprint-proptools/pkg -I .bootstrap/blueprint/pkg -I .bootstrap/blueprint-deptools/pkg -I .bootstrap/blueprint-pathtools/pkg -I .bootstrap/blueprint-bootstrap/pkg -I .bootstrap/soong-glob/pkg -I .bootstrap/soong-common/pkg + incFlags = -I .bootstrap/blueprint-parser/pkg -I .bootstrap/blueprint-proptools/pkg -I .bootstrap/blueprint/pkg -I .bootstrap/blueprint-deptools/pkg -I .bootstrap/blueprint-pathtools/pkg -I .bootstrap/blueprint-bootstrap/pkg -I .bootstrap/soong-env/pkg -I .bootstrap/soong-glob/pkg -I .bootstrap/soong-common/pkg pkgPath = android/soong/config default .bootstrap/soong-config/pkg/android/soong/config.a # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Module: soong-env +# Variant: +# Type: bootstrap_go_package +# Factory: github.com/google/blueprint/bootstrap.newGoPackageModule +# Defined: build/soong/Blueprints:41:1 + +build .bootstrap/soong-env/pkg/android/soong/env.a: g.bootstrap.gc $ + ${g.bootstrap.srcDir}/build/soong/env/env.go | ${g.bootstrap.gcCmd} + pkgPath = android/soong/env +default .bootstrap/soong-env/pkg/android/soong/env.a + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Module: soong-genrule # Variant: # Type: bootstrap_go_package # Factory: github.com/google/blueprint/bootstrap.newGoPackageModule -# Defined: build/soong/Blueprints:106:1 +# Defined: build/soong/Blueprints:128:1 build .bootstrap/soong-genrule/pkg/android/soong/genrule.a: g.bootstrap.gc $ ${g.bootstrap.srcDir}/build/soong/genrule/genrule.go | $ @@ -399,10 +416,11 @@ build .bootstrap/soong-genrule/pkg/android/soong/genrule.a: g.bootstrap.gc $ .bootstrap/blueprint-pathtools/pkg/github.com/google/blueprint/pathtools.a $ .bootstrap/blueprint-deptools/pkg/github.com/google/blueprint/deptools.a $ .bootstrap/blueprint-bootstrap/pkg/github.com/google/blueprint/bootstrap.a $ + .bootstrap/soong-env/pkg/android/soong/env.a $ .bootstrap/soong-glob/pkg/android/soong/glob.a $ .bootstrap/soong-common/pkg/android/soong/common.a $ .bootstrap/soong-config/pkg/android/soong/config.a - incFlags = -I .bootstrap/blueprint-parser/pkg -I .bootstrap/blueprint-proptools/pkg -I .bootstrap/blueprint/pkg -I .bootstrap/blueprint-pathtools/pkg -I .bootstrap/blueprint-deptools/pkg -I .bootstrap/blueprint-bootstrap/pkg -I .bootstrap/soong-glob/pkg -I .bootstrap/soong-common/pkg -I .bootstrap/soong-config/pkg + incFlags = -I .bootstrap/blueprint-parser/pkg -I .bootstrap/blueprint-proptools/pkg -I .bootstrap/blueprint/pkg -I .bootstrap/blueprint-pathtools/pkg -I .bootstrap/blueprint-deptools/pkg -I .bootstrap/blueprint-bootstrap/pkg -I .bootstrap/soong-env/pkg -I .bootstrap/soong-glob/pkg -I .bootstrap/soong-common/pkg -I .bootstrap/soong-config/pkg pkgPath = android/soong/genrule default .bootstrap/soong-genrule/pkg/android/soong/genrule.a @@ -411,7 +429,7 @@ default .bootstrap/soong-genrule/pkg/android/soong/genrule.a # Variant: # Type: bootstrap_go_package # Factory: github.com/google/blueprint/bootstrap.newGoPackageModule -# Defined: build/soong/Blueprints:40:1 +# Defined: build/soong/Blueprints:60:1 build .bootstrap/soong-glob/pkg/android/soong/glob.a: g.bootstrap.gc $ ${g.bootstrap.srcDir}/build/soong/glob/glob.go | ${g.bootstrap.gcCmd} $ @@ -436,19 +454,20 @@ build .bootstrap/soong_build/obj/soong_build.a: g.bootstrap.gc $ .bootstrap/blueprint-deptools/pkg/github.com/google/blueprint/deptools.a $ .bootstrap/blueprint-pathtools/pkg/github.com/google/blueprint/pathtools.a $ .bootstrap/blueprint-bootstrap/pkg/github.com/google/blueprint/bootstrap.a $ + .bootstrap/soong-env/pkg/android/soong/env.a $ .bootstrap/soong-glob/pkg/android/soong/glob.a $ .bootstrap/soong-common/pkg/android/soong/common.a $ .bootstrap/soong-config/pkg/android/soong/config.a $ .bootstrap/soong-genrule/pkg/android/soong/genrule.a $ .bootstrap/soong-cc/pkg/android/soong/cc.a $ .bootstrap/soong-art/pkg/android/soong/art.a - incFlags = -I .bootstrap/blueprint-parser/pkg -I .bootstrap/blueprint-proptools/pkg -I .bootstrap/blueprint/pkg -I .bootstrap/blueprint-deptools/pkg -I .bootstrap/blueprint-pathtools/pkg -I .bootstrap/blueprint-bootstrap/pkg -I .bootstrap/soong-glob/pkg -I .bootstrap/soong-common/pkg -I .bootstrap/soong-config/pkg -I .bootstrap/soong-genrule/pkg -I .bootstrap/soong-cc/pkg -I .bootstrap/soong-art/pkg + incFlags = -I .bootstrap/blueprint-parser/pkg -I .bootstrap/blueprint-proptools/pkg -I .bootstrap/blueprint/pkg -I .bootstrap/blueprint-deptools/pkg -I .bootstrap/blueprint-pathtools/pkg -I .bootstrap/blueprint-bootstrap/pkg -I .bootstrap/soong-env/pkg -I .bootstrap/soong-glob/pkg -I .bootstrap/soong-common/pkg -I .bootstrap/soong-config/pkg -I .bootstrap/soong-genrule/pkg -I .bootstrap/soong-cc/pkg -I .bootstrap/soong-art/pkg pkgPath = soong_build default .bootstrap/soong_build/obj/soong_build.a build .bootstrap/soong_build/obj/a.out: g.bootstrap.link $ .bootstrap/soong_build/obj/soong_build.a | ${g.bootstrap.linkCmd} - libDirFlags = -L .bootstrap/blueprint-parser/pkg -L .bootstrap/blueprint-proptools/pkg -L .bootstrap/blueprint/pkg -L .bootstrap/blueprint-deptools/pkg -L .bootstrap/blueprint-pathtools/pkg -L .bootstrap/blueprint-bootstrap/pkg -L .bootstrap/soong-glob/pkg -L .bootstrap/soong-common/pkg -L .bootstrap/soong-config/pkg -L .bootstrap/soong-genrule/pkg -L .bootstrap/soong-cc/pkg -L .bootstrap/soong-art/pkg + libDirFlags = -L .bootstrap/blueprint-parser/pkg -L .bootstrap/blueprint-proptools/pkg -L .bootstrap/blueprint/pkg -L .bootstrap/blueprint-deptools/pkg -L .bootstrap/blueprint-pathtools/pkg -L .bootstrap/blueprint-bootstrap/pkg -L .bootstrap/soong-env/pkg -L .bootstrap/soong-glob/pkg -L .bootstrap/soong-common/pkg -L .bootstrap/soong-config/pkg -L .bootstrap/soong-genrule/pkg -L .bootstrap/soong-cc/pkg -L .bootstrap/soong-art/pkg default .bootstrap/soong_build/obj/a.out build .bootstrap/bin/soong_build: g.bootstrap.cp $ @@ -456,11 +475,33 @@ build .bootstrap/bin/soong_build: g.bootstrap.cp $ default .bootstrap/bin/soong_build # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Module: soong_env +# Variant: +# Type: bootstrap_go_binary +# Factory: github.com/google/blueprint/bootstrap.newGoBinaryModule +# Defined: build/soong/Blueprints:31:1 + +build .bootstrap/soong_env/obj/soong_env.a: g.bootstrap.gc $ + ${g.bootstrap.srcDir}/build/soong/cmd/soong_env/soong_env.go | $ + ${g.bootstrap.gcCmd} .bootstrap/soong-env/pkg/android/soong/env.a + incFlags = -I .bootstrap/soong-env/pkg + pkgPath = soong_env +default .bootstrap/soong_env/obj/soong_env.a + +build .bootstrap/soong_env/obj/a.out: g.bootstrap.link $ + .bootstrap/soong_env/obj/soong_env.a | ${g.bootstrap.linkCmd} + libDirFlags = -L .bootstrap/soong-env/pkg +default .bootstrap/soong_env/obj/a.out + +build .bootstrap/bin/soong_env: g.bootstrap.cp .bootstrap/soong_env/obj/a.out +default .bootstrap/bin/soong_env + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Module: soong_glob # Variant: # Type: bootstrap_go_binary # Factory: github.com/google/blueprint/bootstrap.newGoBinaryModule -# Defined: build/soong/Blueprints:30:1 +# Defined: build/soong/Blueprints:50:1 build .bootstrap/soong_glob/obj/soong_glob.a: g.bootstrap.gc $ ${g.bootstrap.srcDir}/build/soong/cmd/soong_glob/soong_glob.go | $ @@ -498,7 +539,8 @@ rule s.bootstrap.minibp build .bootstrap/main.ninja.in: s.bootstrap.bigbp $ ${g.bootstrap.srcDir}/Blueprints | .bootstrap/bin/androidmk $ .bootstrap/bin/bpfmt .bootstrap/bin/bpmodify .bootstrap/bin/minibp $ - .bootstrap/bin/soong_build .bootstrap/bin/soong_glob + .bootstrap/bin/soong_build .bootstrap/bin/soong_env $ + .bootstrap/bin/soong_glob default .bootstrap/main.ninja.in build .bootstrap/notAFile: phony default .bootstrap/notAFile |