Mixed bazel/soong build prototype for genrule

With this change, bazel_module is a specifiable property on
genrule module definitions. With bazel-enabled mode, soong_build will
defer to Bazel for information on these modules.

source build/soong/bazelenv.sh to enter bazel-enabled mode.

Test: Manually verified on bionic/libc genrules using aosp_cf_x86_phone-userdebug
Change-Id: I3619848186d50be7273a5eba31c79989b981d408
This commit is contained in:
Chris Parsons
2020-09-29 02:23:17 -04:00
parent 5cc622ad78
commit f3c96efea4
9 changed files with 483 additions and 45 deletions

View File

@@ -85,6 +85,8 @@ type config struct {
// Only available on configs created by TestConfig
TestProductVariables *productVariables
BazelContext BazelContext
PrimaryBuilder string
ConfigFileName string
ProductVariablesFileName string
@@ -248,6 +250,8 @@ func TestConfig(buildDir string, env map[string]string, bp string, fs map[string
// Set testAllowNonExistentPaths so that test contexts don't need to specify every path
// passed to PathForSource or PathForModuleSrc.
testAllowNonExistentPaths: true,
BazelContext: noopBazelContext{},
}
config.deviceConfig = &deviceConfig{
config: config,
@@ -324,6 +328,20 @@ func TestArchConfig(buildDir string, env map[string]string, bp string, fs map[st
return testConfig
}
// Returns a config object which is "reset" for another bootstrap run.
// Only per-run data is reset. Data which needs to persist across multiple
// runs in the same program execution is carried over (such as Bazel context
// or environment deps).
func ConfigForAdditionalRun(c Config) (Config, error) {
newConfig, err := NewConfig(c.srcDir, c.buildDir, c.moduleListFile)
if err != nil {
return Config{}, err
}
newConfig.BazelContext = c.BazelContext
newConfig.envDeps = c.envDeps
return newConfig, nil
}
// New creates a new Config object. The srcDir argument specifies the path to
// the root source directory. It also loads the config file, if found.
func NewConfig(srcDir, buildDir string, moduleListFile string) (Config, error) {
@@ -425,6 +443,10 @@ func NewConfig(srcDir, buildDir string, moduleListFile string) (Config, error) {
Bool(config.productVariables.GcovCoverage) ||
Bool(config.productVariables.ClangCoverage))
config.BazelContext, err = NewBazelContext(config)
if err != nil {
return Config{}, err
}
return Config{config}, nil
}