aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2015-04-13 13:52:22 -0700
committerColin Cross <ccross@android.com>2015-04-13 17:31:25 -0700
commitaa8630ba0959840fa159520c3f618ba4f3c4feda (patch)
tree4915451baf6669d1a1f76e29884ed40331729bc8 /java
parentf05fe97df6bd0fb37c0f7338365fa8782fa9c725 (diff)
downloadbuild_soong-aa8630ba0959840fa159520c3f618ba4f3c4feda.tar.gz
build_soong-aa8630ba0959840fa159520c3f618ba4f3c4feda.tar.bz2
build_soong-aa8630ba0959840fa159520c3f618ba4f3c4feda.zip
Move SDK prebuilts to new prebuilt_sdk module type
SDK prebuilts need to be treated differently than other prebuilts. They are used like a normal Java prebuilts when compiling java files, but they are also used as aapt includes when compiling apps, and they provide prebuilt aidl files when compiling aidl sources. Create a new module type so dependers can determine what kind of dependency they are. Change-Id: If426da63cfadcb4b14abda58c7b346554912a07a
Diffstat (limited to 'java')
-rw-r--r--java/java.go72
1 files changed, 50 insertions, 22 deletions
diff --git a/java/java.go b/java/java.go
index a23ca9a6..bbec5b56 100644
--- a/java/java.go
+++ b/java/java.go
@@ -121,7 +121,6 @@ type JavaDependency interface {
ClassJarSpecs() []jarSpec
ResourceJarSpecs() []jarSpec
AidlIncludeDirs() []string
- AidlPreprocessed() string
}
func NewJavaBase(base *javaBase, module JavaModuleType, hod common.HostOrDeviceSupported,
@@ -209,13 +208,15 @@ func (j *javaBase) collectDeps(ctx common.AndroidModuleContext) (classpath []str
} else {
panic(fmt.Errorf("unknown dependency %q for %q", otherName, ctx.ModuleName()))
}
- aidlIncludeDirs = append(aidlIncludeDirs, j.AidlIncludeDirs()...)
- if j.AidlPreprocessed() != "" {
- if aidlPreprocess != "" {
- ctx.ModuleErrorf("multiple dependencies with preprocessed aidls:\n %q\n %q",
- aidlPreprocess, j.AidlPreprocessed())
- } else {
- aidlPreprocess = j.AidlPreprocessed()
+ aidlIncludeDirs = append(aidlIncludeDirs, javaDep.AidlIncludeDirs()...)
+ if sdkDep, ok := module.(sdkDependency); ok {
+ if sdkDep.AidlPreprocessed() != "" {
+ if aidlPreprocess != "" {
+ ctx.ModuleErrorf("multiple dependencies with preprocessed aidls:\n %q\n %q",
+ aidlPreprocess, sdkDep.AidlPreprocessed())
+ } else {
+ aidlPreprocess = sdkDep.AidlPreprocessed()
+ }
}
}
} else {
@@ -358,10 +359,6 @@ func (j *javaBase) AidlIncludeDirs() []string {
return j.exportAidlIncludeDirs
}
-func (j *javaBase) AidlPreprocessed() string {
- return ""
-}
-
var _ logtagsProducer = (*javaBase)(nil)
func (j *javaBase) logtags() []string {
@@ -434,11 +431,9 @@ type JavaPrebuilt struct {
common.AndroidModuleBase
properties struct {
- Srcs []string
- Aidl_preprocessed string
+ Srcs []string
}
- aidlPreprocessed string
classpathFile string
classJarSpecs, resourceJarSpecs []jarSpec
}
@@ -455,9 +450,6 @@ func (j *JavaPrebuilt) GenerateAndroidBuildActions(ctx common.AndroidModuleConte
j.classpathFile = prebuilt
j.classJarSpecs = []jarSpec{classJarSpec}
j.resourceJarSpecs = []jarSpec{resourceJarSpec}
- if j.properties.Aidl_preprocessed != "" {
- j.aidlPreprocessed = filepath.Join(common.ModuleSrcDir(ctx), j.properties.Aidl_preprocessed)
- }
ctx.InstallFileName("framework", ctx.ModuleName()+".jar", j.classpathFile)
}
@@ -479,10 +471,6 @@ func (j *JavaPrebuilt) AidlIncludeDirs() []string {
return nil
}
-func (j *JavaPrebuilt) AidlPreprocessed() string {
- return j.aidlPreprocessed
-}
-
func JavaPrebuiltFactory() (blueprint.Module, []interface{}) {
module := &JavaPrebuilt{}
@@ -490,6 +478,46 @@ func JavaPrebuiltFactory() (blueprint.Module, []interface{}) {
common.MultilibCommon, &module.properties)
}
+//
+// SDK java prebuilts (.jar containing resources plus framework.aidl)
+//
+
+type sdkDependency interface {
+ JavaDependency
+ AidlPreprocessed() string
+}
+
+var _ sdkDependency = (*sdkPrebuilt)(nil)
+
+type sdkPrebuilt struct {
+ JavaPrebuilt
+
+ sdkProperties struct {
+ Aidl_preprocessed string
+ }
+
+ aidlPreprocessed string
+}
+
+func (j *sdkPrebuilt) GenerateAndroidBuildActions(ctx common.AndroidModuleContext) {
+ j.JavaPrebuilt.GenerateAndroidBuildActions(ctx)
+
+ if j.sdkProperties.Aidl_preprocessed != "" {
+ j.aidlPreprocessed = filepath.Join(common.ModuleSrcDir(ctx), j.sdkProperties.Aidl_preprocessed)
+ }
+}
+
+func (j *sdkPrebuilt) AidlPreprocessed() string {
+ return j.aidlPreprocessed
+}
+
+func SdkPrebuiltFactory() (blueprint.Module, []interface{}) {
+ module := &sdkPrebuilt{}
+
+ return common.InitAndroidArchModule(module, common.HostAndDeviceSupported,
+ common.MultilibCommon, &module.properties, &module.sdkProperties)
+}
+
func inList(s string, l []string) bool {
for _, e := range l {
if e == s {