Move config into common and provide helper
Using ctx.Config().(Config) everywhere is a mouthful, and it is
inefficient to do the type assertion. Put the Config interface into
the context, and provide an AConfig() to return the Config already
converted to the right type.
Change-Id: I301a1fd7d2a005580aabca7866a37c5d42ad8c69
diff --git a/Blueprints b/Blueprints
index 945d2f4..84c9913 100644
--- a/Blueprints
+++ b/Blueprints
@@ -18,7 +18,6 @@
"soong-art",
"soong-cc",
"soong-common",
- "soong-config",
"soong-env",
"soong-genrule",
"soong-java",
@@ -81,6 +80,7 @@
srcs: [
"common/arch.go",
"common/checkbuild.go",
+ "common/config.go",
"common/defs.go",
"common/env.go",
"common/glob.go",
@@ -90,26 +90,12 @@
}
bootstrap_go_package {
- name: "soong-config",
- pkgPath: "android/soong/config",
- deps: [
- "blueprint",
- "blueprint-bootstrap",
- "soong-common",
- ],
- srcs: [
- "config/config.go",
- ],
-}
-
-bootstrap_go_package {
name: "soong-cc",
pkgPath: "android/soong/cc",
deps: [
"blueprint",
"blueprint-pathtools",
"soong-common",
- "soong-config",
"soong-genrule",
],
srcs: [
@@ -134,7 +120,6 @@
"blueprint",
"blueprint-pathtools",
"soong-common",
- "soong-config",
],
srcs: [
"genrule/genrule.go",
@@ -155,7 +140,6 @@
"blueprint",
"blueprint-pathtools",
"soong-common",
- "soong-config",
],
srcs: [
"java/builder.go",
diff --git a/build.ninja.in b/build.ninja.in
index 81f6522..2f8fe50 100644
--- a/build.ninja.in
+++ b/build.ninja.in
@@ -53,7 +53,7 @@
# Variant:
# Type: bootstrap_go_binary
# Factory: github.com/google/blueprint/bootstrap.newGoBinaryModule
-# Defined: build/soong/Blueprints:171:1
+# Defined: build/soong/Blueprints:155:1
build .bootstrap/androidmk/obj/androidmk.a: g.bootstrap.gc $
${g.bootstrap.srcDir}/build/soong/androidmk/cmd/androidmk/android.go $
@@ -79,7 +79,7 @@
# Variant:
# Type: bootstrap_go_package
# Factory: github.com/google/blueprint/bootstrap.newGoPackageModule
-# Defined: build/soong/Blueprints:184:1
+# Defined: build/soong/Blueprints:168:1
build .bootstrap/androidmk-parser/pkg/android/soong/androidmk/parser.a: $
g.bootstrap.gc $
@@ -298,10 +298,9 @@
.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-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
+ 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-genrule/pkg -I .bootstrap/soong-cc/pkg
pkgPath = android/soong/art
default .bootstrap/soong-art/pkg/android/soong/art.a
@@ -310,7 +309,7 @@
# Variant:
# Type: bootstrap_go_package
# Factory: github.com/google/blueprint/bootstrap.newGoPackageModule
-# Defined: build/soong/Blueprints:105:1
+# Defined: build/soong/Blueprints:92:1
build .bootstrap/soong-cc/pkg/android/soong/cc.a: g.bootstrap.gc $
${g.bootstrap.srcDir}/build/soong/cc/builder.go $
@@ -332,9 +331,8 @@
.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-env/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-genrule/pkg
pkgPath = android/soong/cc
default .bootstrap/soong-cc/pkg/android/soong/cc.a
@@ -343,11 +341,12 @@
# Variant:
# Type: bootstrap_go_package
# Factory: github.com/google/blueprint/bootstrap.newGoPackageModule
-# Defined: build/soong/Blueprints:72: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/config.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 $
@@ -367,34 +366,11 @@
default .bootstrap/soong-common/pkg/android/soong/common.a
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-# Module: soong-config
-# Variant:
-# Type: bootstrap_go_package
-# Factory: github.com/google/blueprint/bootstrap.newGoPackageModule
-# Defined: build/soong/Blueprints:92:1
-
-build .bootstrap/soong-config/pkg/android/soong/config.a: g.bootstrap.gc $
- ${g.bootstrap.srcDir}/build/soong/config/config.go | $
- ${g.bootstrap.gcCmd} $
- .bootstrap/blueprint-parser/pkg/github.com/google/blueprint/parser.a $
- .bootstrap/blueprint-proptools/pkg/github.com/google/blueprint/proptools.a $
- .bootstrap/blueprint/pkg/github.com/google/blueprint.a $
- .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-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:42:1
+# 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}
@@ -406,7 +382,7 @@
# Variant:
# Type: bootstrap_go_package
# Factory: github.com/google/blueprint/bootstrap.newGoPackageModule
-# Defined: build/soong/Blueprints:130:1
+# Defined: build/soong/Blueprints:116:1
build .bootstrap/soong-genrule/pkg/android/soong/genrule.a: g.bootstrap.gc $
${g.bootstrap.srcDir}/build/soong/genrule/genrule.go | $
@@ -419,9 +395,8 @@
.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-env/pkg -I .bootstrap/soong-glob/pkg -I .bootstrap/soong-common/pkg -I .bootstrap/soong-config/pkg
+ .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-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
pkgPath = android/soong/genrule
default .bootstrap/soong-genrule/pkg/android/soong/genrule.a
@@ -430,7 +405,7 @@
# Variant:
# Type: bootstrap_go_package
# Factory: github.com/google/blueprint/bootstrap.newGoPackageModule
-# Defined: build/soong/Blueprints:61: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} $
@@ -444,7 +419,7 @@
# Variant:
# Type: bootstrap_go_package
# Factory: github.com/google/blueprint/bootstrap.newGoPackageModule
-# Defined: build/soong/Blueprints:151:1
+# Defined: build/soong/Blueprints:136:1
build .bootstrap/soong-java/pkg/android/soong/java.a: g.bootstrap.gc $
${g.bootstrap.srcDir}/build/soong/java/builder.go $
@@ -459,9 +434,8 @@
.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-env/pkg -I .bootstrap/soong-glob/pkg -I .bootstrap/soong-common/pkg -I .bootstrap/soong-config/pkg
+ .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-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
pkgPath = android/soong/java
default .bootstrap/soong-java/pkg/android/soong/java.a
@@ -484,18 +458,17 @@
.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 $
.bootstrap/soong-java/pkg/android/soong/java.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-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 -I .bootstrap/soong-java/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-genrule/pkg -I .bootstrap/soong-cc/pkg -I .bootstrap/soong-art/pkg -I .bootstrap/soong-java/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-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 -L .bootstrap/soong-java/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-genrule/pkg -L .bootstrap/soong-cc/pkg -L .bootstrap/soong-art/pkg -L .bootstrap/soong-java/pkg
default .bootstrap/soong_build/obj/a.out
build .bootstrap/bin/soong_build: g.bootstrap.cp $
@@ -507,7 +480,7 @@
# Variant:
# Type: bootstrap_go_binary
# Factory: github.com/google/blueprint/bootstrap.newGoBinaryModule
-# Defined: build/soong/Blueprints:32:1
+# 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 | $
@@ -529,7 +502,7 @@
# Variant:
# Type: bootstrap_go_binary
# Factory: github.com/google/blueprint/bootstrap.newGoBinaryModule
-# Defined: build/soong/Blueprints:51: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 | $
@@ -554,7 +527,7 @@
# Variant:
# Type: bootstrap_go_binary
# Factory: github.com/google/blueprint/bootstrap.newGoBinaryModule
-# Defined: build/soong/Blueprints:144:1
+# Defined: build/soong/Blueprints:129:1
build .bootstrap/soong_jar/obj/soong_jar.a: g.bootstrap.gc $
${g.bootstrap.srcDir}/build/soong/cmd/soong_jar/soong_jar.go | $
diff --git a/cc/builder.go b/cc/builder.go
index 8fc428c..ccf04f2 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -109,8 +109,8 @@
func TransformSourceToObj(ctx common.AndroidModuleContext, subdir string, srcFiles []string,
flags builderFlags, deps []string) (objFiles []string) {
- srcRoot := ctx.Config().(Config).SrcDir()
- intermediatesRoot := ctx.Config().(Config).IntermediatesDir()
+ srcRoot := ctx.AConfig().SrcDir()
+ intermediatesRoot := ctx.AConfig().IntermediatesDir()
objFiles = make([]string, len(srcFiles))
objDir := common.ModuleObjDir(ctx)
diff --git a/cc/cc.go b/cc/cc.go
index b0dd792..a5af73e 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -30,15 +30,9 @@
"android/soong/genrule"
)
-type Config interface {
- SrcDir() string
- IntermediatesDir() string
- PrebuiltOS() string
-}
-
var (
- HostPrebuiltTag = pctx.VariableConfigMethod("HostPrebuiltTag", Config.PrebuiltOS)
- SrcDir = pctx.VariableConfigMethod("SrcDir", Config.SrcDir)
+ HostPrebuiltTag = pctx.VariableConfigMethod("HostPrebuiltTag", common.Config.PrebuiltOS)
+ SrcDir = pctx.VariableConfigMethod("SrcDir", common.Config.SrcDir)
LibcRoot = pctx.StaticVariable("LibcRoot", "${SrcDir}/bionic/libc")
LibmRoot = pctx.StaticVariable("LibmRoot", "${SrcDir}/bionic/libm")
@@ -443,7 +437,7 @@
}
}
- flags.IncludeDirs = pathtools.PrefixPaths(c.properties.Include_dirs, ctx.Config().(Config).SrcDir())
+ flags.IncludeDirs = pathtools.PrefixPaths(c.properties.Include_dirs, ctx.AConfig().SrcDir())
localIncludeDirs := pathtools.PrefixPaths(c.properties.Local_include_dirs, common.ModuleSrcDir(ctx))
flags.IncludeDirs = append(flags.IncludeDirs, localIncludeDirs...)
@@ -769,7 +763,7 @@
flags.IncludeDirs = append(flags.IncludeDirs, "${SrcDir}/bionic/libstdc++/include")
}
case "ndk_system":
- ndkSrcRoot := ctx.Config().(Config).SrcDir() + "/prebuilts/ndk/current/sources/"
+ ndkSrcRoot := ctx.AConfig().SrcDir() + "/prebuilts/ndk/current/sources/"
flags.IncludeDirs = append(flags.IncludeDirs, ndkSrcRoot+"cxx-stl/system/include")
case "ndk_libc++_shared", "ndk_libc++_static":
// TODO(danalbert): This really shouldn't be here...
@@ -1311,7 +1305,7 @@
// TODO(danalbert): Make gtest export its dependencies.
flags.IncludeDirs = append(flags.IncludeDirs,
- filepath.Join(ctx.Config().(Config).SrcDir(), "external/gtest/include"))
+ filepath.Join(ctx.AConfig().SrcDir(), "external/gtest/include"))
return flags
}
@@ -1468,7 +1462,7 @@
func getNdkLibDir(ctx common.AndroidModuleContext, toolchain Toolchain, version string) string {
return fmt.Sprintf("%s/prebuilts/ndk/current/platforms/android-%s/arch-%s/usr/lib",
- ctx.Config().(Config).SrcDir(), version, toolchain.Name())
+ ctx.AConfig().SrcDir(), version, toolchain.Name())
}
type ndkPrebuiltLibrary struct {
@@ -1555,7 +1549,7 @@
}
if libDir != "" {
- ndkSrcRoot := ctx.Config().(Config).SrcDir() + "/prebuilts/ndk/current/sources"
+ ndkSrcRoot := ctx.AConfig().SrcDir() + "/prebuilts/ndk/current/sources"
return fmt.Sprintf("%s/%s/%s", ndkSrcRoot, libDir, ctx.Arch().Abi)
}
diff --git a/cmd/soong_build/main.go b/cmd/soong_build/main.go
index 01740d1..a1a4ce0 100644
--- a/cmd/soong_build/main.go
+++ b/cmd/soong_build/main.go
@@ -26,7 +26,6 @@
"android/soong/art"
"android/soong/cc"
"android/soong/common"
- "android/soong/config"
"android/soong/genrule"
"android/soong/java"
)
@@ -78,7 +77,7 @@
ctx.RegisterSingletonType("checkbuild", common.CheckbuildSingleton)
ctx.RegisterSingletonType("env", common.EnvSingleton)
- configuration, err := config.New(srcDir)
+ configuration, err := common.NewConfig(srcDir)
if err != nil {
fmt.Fprintf(os.Stderr, "%s", err)
os.Exit(1)
@@ -87,5 +86,5 @@
// Temporary hack
//ctx.SetIgnoreUnknownModuleTypes(true)
- bootstrap.Main(ctx, configuration, config.ConfigFileName)
+ bootstrap.Main(ctx, configuration, common.ConfigFileName)
}
diff --git a/config/config.go b/common/config.go
similarity index 81%
rename from config/config.go
rename to common/config.go
index e324e42..695e27d 100644
--- a/config/config.go
+++ b/common/config.go
@@ -12,10 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package config
+package common
import (
- "android/soong/common"
"encoding/json"
"fmt"
"os"
@@ -23,7 +22,18 @@
"runtime"
)
-var _ common.Config = (*Config)(nil)
+type Config interface {
+ CpPreserveSymlinksFlags() string
+ SrcDir() string
+ IntermediatesDir() string
+ Getenv(string) string
+ EnvDeps() map[string]string
+ DeviceOut() string
+ HostOut() string
+ PrebuiltOS() string
+ HostBinTool(string) (string, error)
+ HostJavaTool(string) (string, error)
+}
// The configuration file name
const ConfigFileName = "soong.config"
@@ -39,7 +49,7 @@
}
// A Config object represents the entire build configuration for Blue.
-type Config struct {
+type config struct {
FileConfigurableOptions
srcDir string // the path of the root source directory
@@ -47,7 +57,7 @@
}
// loads configuration options from a JSON file in the cwd.
-func loadFromConfigFile(config *Config) error {
+func loadFromConfigFile(config *config) error {
// Make a proxy config
var configProxy FileConfigurableOptions
@@ -103,9 +113,9 @@
// 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 New(srcDir string) (*Config, error) {
+func NewConfig(srcDir string) (Config, error) {
// Make a config with default options
- config := &Config{
+ config := &config{
srcDir: srcDir,
envDeps: make(map[string]string),
}
@@ -119,21 +129,21 @@
return config, nil
}
-func (c *Config) SrcDir() string {
+func (c *config) SrcDir() string {
return c.srcDir
}
-func (c *Config) IntermediatesDir() string {
+func (c *config) IntermediatesDir() string {
return ".intermediates"
}
// HostGoOS returns the OS of the system that the Go toolchain is being run on.
-func (c *Config) HostGoOS() string {
+func (c *config) HostGoOS() string {
return runtime.GOOS
}
// PrebuiltOS returns the name of the host OS used in prebuilts directories
-func (c *Config) PrebuiltOS() string {
+func (c *config) PrebuiltOS() string {
switch runtime.GOOS {
case "linux":
return "linux-x86"
@@ -145,11 +155,11 @@
}
// GoRoot returns the path to the root directory of the Go toolchain.
-func (c *Config) GoRoot() string {
+func (c *config) GoRoot() string {
return fmt.Sprintf("%s/prebuilts/go/%s", c.srcDir, c.PrebuiltOS())
}
-func (c *Config) CpPreserveSymlinksFlags() string {
+func (c *config) CpPreserveSymlinksFlags() string {
switch c.HostGoOS() {
case "darwin":
return "-R"
@@ -160,7 +170,7 @@
}
}
-func (c *Config) Getenv(key string) string {
+func (c *config) Getenv(key string) string {
var val string
var exists bool
if val, exists = c.envDeps[key]; !exists {
@@ -170,42 +180,42 @@
return val
}
-func (c *Config) EnvDeps() map[string]string {
+func (c *config) EnvDeps() map[string]string {
return c.envDeps
}
// DeviceName returns the name of the current device target
// TODO: take an AndroidModuleContext to select the device name for multi-device builds
-func (c *Config) DeviceName() string {
+func (c *config) DeviceName() string {
return "unset"
}
// DeviceOut returns the path to out directory for device targets
-func (c *Config) DeviceOut() string {
+func (c *config) DeviceOut() string {
return filepath.Join("target/product", c.DeviceName())
}
// HostOut returns the path to out directory for host targets
-func (c *Config) HostOut() string {
+func (c *config) HostOut() string {
return filepath.Join("host", c.PrebuiltOS())
}
// HostBin returns the path to bin directory for host targets
-func (c *Config) HostBin() string {
+func (c *config) HostBin() string {
return filepath.Join(c.HostOut(), "bin")
}
// HostBinTool returns the path to a host tool in the bin directory for host targets
-func (c *Config) HostBinTool(tool string) (string, error) {
+func (c *config) HostBinTool(tool string) (string, error) {
return filepath.Join(c.HostBin(), tool), nil
}
// HostJavaDir returns the path to framework directory for host targets
-func (c *Config) HostJavaDir() string {
+func (c *config) HostJavaDir() string {
return filepath.Join(c.HostOut(), "framework")
}
// HostJavaTool returns the path to a host tool in the frameworks directory for host targets
-func (c *Config) HostJavaTool(tool string) (string, error) {
+func (c *config) HostJavaTool(tool string) (string, error) {
return filepath.Join(c.HostJavaDir(), tool), nil
}
diff --git a/common/module.go b/common/module.go
index e61d313..d497076 100644
--- a/common/module.go
+++ b/common/module.go
@@ -20,16 +20,6 @@
"github.com/google/blueprint"
)
-type Config interface {
- CpPreserveSymlinksFlags() string
- SrcDir() string
- IntermediatesDir() string
- Getenv(string) string
- EnvDeps() map[string]string
- DeviceOut() string
- HostOut() string
-}
-
var (
DeviceSharedLibrary = "shared_library"
DeviceStaticLibrary = "static_library"
@@ -44,6 +34,7 @@
Host() bool
Device() bool
Debug() bool
+ AConfig() Config
}
type AndroidBaseContext interface {
@@ -299,7 +290,8 @@
actx := &androidDynamicDependerContext{
DynamicDependerModuleContext: ctx,
androidBaseContextImpl: androidBaseContextImpl{
- arch: a.commonProperties.CompileArch,
+ arch: a.commonProperties.CompileArch,
+ config: ctx.Config().(Config),
},
}
@@ -314,7 +306,8 @@
androidCtx := &androidModuleContext{
ModuleContext: ctx,
androidBaseContextImpl: androidBaseContextImpl{
- arch: a.commonProperties.CompileArch,
+ arch: a.commonProperties.CompileArch,
+ config: ctx.Config().(Config),
},
installDeps: a.computeInstallDeps(ctx),
installFiles: a.installFiles,
@@ -340,8 +333,9 @@
}
type androidBaseContextImpl struct {
- arch Arch
- debug bool
+ arch Arch
+ debug bool
+ config Config
}
type androidModuleContext struct {
@@ -382,10 +376,14 @@
return a.debug
}
+func (a *androidBaseContextImpl) AConfig() Config {
+ return a.config
+}
+
func (a *androidModuleContext) InstallFileName(installPath, name, srcPath string,
deps ...string) string {
- config := a.Config().(Config)
+ config := a.AConfig()
var fullInstallPath string
if a.arch.HostOrDevice.Device() {
// TODO: replace unset with a device name once we have device targeting
diff --git a/common/paths.go b/common/paths.go
index b052fef..bcd6d8c 100644
--- a/common/paths.go
+++ b/common/paths.go
@@ -16,21 +16,18 @@
import (
"path/filepath"
-
- "github.com/google/blueprint"
)
// ModuleOutDir returns the path to the module-specific output directory.
func ModuleOutDir(ctx AndroidModuleContext) string {
- config := ctx.Config().(Config)
- return filepath.Join(config.IntermediatesDir(), ctx.ModuleDir(), ctx.ModuleName(), ctx.ModuleSubDir())
+ return filepath.Join(ctx.AConfig().IntermediatesDir(),
+ ctx.ModuleDir(), ctx.ModuleName(), ctx.ModuleSubDir())
}
// ModuleSrcDir returns the path of the directory that all source file paths are
// specified relative to.
-func ModuleSrcDir(ctx blueprint.ModuleContext) string {
- config := ctx.Config().(Config)
- return filepath.Join(config.SrcDir(), ctx.ModuleDir())
+func ModuleSrcDir(ctx AndroidModuleContext) string {
+ return filepath.Join(ctx.AConfig().SrcDir(), ctx.ModuleDir())
}
// ModuleBinDir returns the path to the module- and architecture-specific binary
diff --git a/genrule/genrule.go b/genrule/genrule.go
index e2b6c7d..589758d 100644
--- a/genrule/genrule.go
+++ b/genrule/genrule.go
@@ -23,16 +23,12 @@
"android/soong/common"
)
-type Config interface {
- SrcDir() string
-}
-
var (
pctx = blueprint.NewPackageContext("android/soong/genrule")
)
func init() {
- pctx.VariableConfigMethod("srcDir", Config.SrcDir)
+ pctx.VariableConfigMethod("srcDir", common.Config.SrcDir)
}
type SourceFileGenerator interface {
diff --git a/java/builder.go b/java/builder.go
index f0cfeae..4eb03c2 100644
--- a/java/builder.go
+++ b/java/builder.go
@@ -85,10 +85,10 @@
pctx.StaticVariable("javacCmd", "javac -J-Xmx1024M $commonJdkFlags")
pctx.StaticVariable("jarCmd", filepath.Join(bootstrap.BinDir, "soong_jar"))
pctx.VariableFunc("dxCmd", func(c interface{}) (string, error) {
- return c.(Config).HostBinTool("dx")
+ return c.(common.Config).HostBinTool("dx")
})
pctx.VariableFunc("jarjarCmd", func(c interface{}) (string, error) {
- return c.(Config).HostJavaTool("jarjar.jar")
+ return c.(common.Config).HostJavaTool("jarjar.jar")
})
}
diff --git a/java/java.go b/java/java.go
index f934721..8750dbf 100644
--- a/java/java.go
+++ b/java/java.go
@@ -29,14 +29,6 @@
"android/soong/common"
)
-type Config interface {
- SrcDir() string
- PrebuiltOS() string
- HostBinTool(string) (string, error)
- HostJavaTool(string) (string, error)
- Getenv(string) string
-}
-
// TODO:
// Autogenerated files:
// AIDL
@@ -266,11 +258,11 @@
dxFlags = append(dxFlags, "--no-locals")
}
- if ctx.Config().(Config).Getenv("NO_OPTIMIZE_DX") != "" {
+ if ctx.AConfig().Getenv("NO_OPTIMIZE_DX") != "" {
dxFlags = append(dxFlags, "--no-optimize")
}
- if ctx.Config().(Config).Getenv("GENERATE_DEX_DEBUG") != "" {
+ if ctx.AConfig().Getenv("GENERATE_DEX_DEBUG") != "" {
dxFlags = append(dxFlags,
"--debug",
"--verbose",