diff --git a/android/config.go b/android/config.go index d3db68fd2..1482e5d78 100644 --- a/android/config.go +++ b/android/config.go @@ -555,12 +555,10 @@ var _ bootstrap.ConfigStopBefore = (*config)(nil) // BlueprintToolLocation returns the directory containing build system tools // from Blueprint, like soong_zip and merge_zips. -func (c *config) BlueprintToolLocation() string { +func (c *config) HostToolDir() string { return filepath.Join(c.soongOutDir, "host", c.PrebuiltOS(), "bin") } -var _ bootstrap.ConfigBlueprintToolLocation = (*config)(nil) - func (c *config) HostToolPath(ctx PathContext, tool string) Path { return PathForOutput(ctx, "host", c.PrebuiltOS(), "bin", tool) } diff --git a/cmd/soong_build/Android.bp b/cmd/soong_build/Android.bp index 9f0922449..703a8759a 100644 --- a/cmd/soong_build/Android.bp +++ b/cmd/soong_build/Android.bp @@ -16,7 +16,7 @@ package { default_applicable_licenses: ["Android-Apache-2.0"], } -bootstrap_go_binary { +blueprint_go_binary { name: "soong_build", deps: [ "blueprint", diff --git a/tests/bootstrap_test.sh b/tests/bootstrap_test.sh index 610e42771..b37a7f82a 100755 --- a/tests/bootstrap_test.sh +++ b/tests/bootstrap_test.sh @@ -144,7 +144,7 @@ EOF run_soong local ninja_mtime1=$(stat -c "%y" out/soong/build.ninja) - local glob_deps_file=out/soong/.bootstrap/globs/0.d + local glob_deps_file=out/soong/globs/build/0.d if [ -e "$glob_deps_file" ]; then fail "Glob deps file unexpectedly written on first build" diff --git a/ui/build/config.go b/ui/build/config.go index 6a05f4fc4..6de7a050b 100644 --- a/ui/build/config.go +++ b/ui/build/config.go @@ -739,6 +739,20 @@ func (c *configImpl) SoongOutDir() string { return filepath.Join(c.OutDir(), "soong") } +func (c *configImpl) PrebuiltOS() string { + switch runtime.GOOS { + case "linux": + return "linux-x86" + case "darwin": + return "darwin-x86" + default: + panic("Unknown GOOS") + } +} +func (c *configImpl) HostToolDir() string { + return filepath.Join(c.SoongOutDir(), "host", c.PrebuiltOS(), "bin") +} + func (c *configImpl) MainNinjaFile() string { return shared.JoinPath(c.SoongOutDir(), "build.ninja") } diff --git a/ui/build/soong.go b/ui/build/soong.go index 726b5418b..a627daed6 100644 --- a/ui/build/soong.go +++ b/ui/build/soong.go @@ -71,11 +71,16 @@ func writeEnvironmentFile(ctx Context, envFile string, envDeps map[string]string // A tiny struct used to tell Blueprint that it's in bootstrap mode. It would // probably be nicer to use a flag in bootstrap.Args instead. type BlueprintConfig struct { + toolDir string soongOutDir string outDir string debugCompilation bool } +func (c BlueprintConfig) HostToolDir() string { + return c.toolDir +} + func (c BlueprintConfig) SoongOutDir() string { return c.soongOutDir } @@ -151,7 +156,7 @@ func bootstrapBlueprint(ctx Context, config Config) { } soongBuildArgs := []string{ - "--globListDir", "globs", + "--globListDir", "build", "--globFile", bootstrapGlobFile, } @@ -167,7 +172,7 @@ func bootstrapBlueprint(ctx Context, config Config) { bp2buildArgs := []string{ "--bp2build_marker", config.Bp2BuildMarkerFile(), - "--globListDir", "globs.bp2build", + "--globListDir", "bp2build", "--globFile", bp2buildGlobFile, } @@ -183,7 +188,7 @@ func bootstrapBlueprint(ctx Context, config Config) { moduleGraphArgs := []string{ "--module_graph_file", config.ModuleGraphFile(), - "--globListDir", "globs.modulegraph", + "--globListDir", "modulegraph", "--globFile", moduleGraphGlobFile, } @@ -207,6 +212,7 @@ func bootstrapBlueprint(ctx Context, config Config) { blueprintCtx.SetIgnoreUnknownModuleTypes(true) blueprintConfig := BlueprintConfig{ soongOutDir: config.SoongOutDir(), + toolDir: config.HostToolDir(), outDir: config.OutDir(), debugCompilation: os.Getenv("SOONG_DELVE") != "", } @@ -282,7 +288,7 @@ func runSoong(ctx Context, config Config) { } }() - runMicrofactory(ctx, config, ".bootstrap/bpglob", "github.com/google/blueprint/bootstrap/bpglob", + runMicrofactory(ctx, config, filepath.Join(config.HostToolDir(), "bpglob"), "github.com/google/blueprint/bootstrap/bpglob", map[string]string{"github.com/google/blueprint": "build/blueprint"}) ninja := func(name, ninjaFile string, targets ...string) {