aboutsummaryrefslogtreecommitdiffstats
path: root/java/gen.go
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2015-04-08 13:03:43 -0700
committerColin Cross <ccross@android.com>2015-04-08 16:37:31 -0700
commitc0b06f191f99379d3e8111f3bb149a53b1054422 (patch)
treecee2de58b5b3bfcca311766c91b24ea71deb4766 /java/gen.go
parent6cbb1275648b76377764a96960b7fd206e1a4917 (diff)
downloadbuild_soong-c0b06f191f99379d3e8111f3bb149a53b1054422.tar.gz
build_soong-c0b06f191f99379d3e8111f3bb149a53b1054422.tar.bz2
build_soong-c0b06f191f99379d3e8111f3bb149a53b1054422.zip
Add aidl file support to java builds
Add support for aidl files listed in srcs for java builds, and an aidl_preprocess module type for framework and sdk aidls. Change-Id: I3aa537f4483822e5b534c74d0b35f13a938f8947
Diffstat (limited to 'java/gen.go')
-rw-r--r--java/gen.go79
1 files changed, 79 insertions, 0 deletions
diff --git a/java/gen.go b/java/gen.go
new file mode 100644
index 00000000..0b84d44b
--- /dev/null
+++ b/java/gen.go
@@ -0,0 +1,79 @@
+// Copyright 2015 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package java
+
+// This file generates the final rules for compiling all C/C++. All properties related to
+// compiling should have been translated into builderFlags or another argument to the Transform*
+// functions.
+
+import (
+ "path/filepath"
+ "strings"
+
+ "github.com/google/blueprint"
+ "github.com/google/blueprint/pathtools"
+
+ "android/soong/common"
+)
+
+func init() {
+ pctx.VariableFunc("aidlCmd", func(c interface{}) (string, error) {
+ return c.(common.Config).HostBinTool("aidl")
+ })
+ pctx.VariableConfigMethod("srcDir", common.Config.SrcDir)
+}
+
+var (
+ aidl = pctx.StaticRule("aidl",
+ blueprint.RuleParams{
+ Command: "$aidlCmd -d$depFile $aidlFlags $in $out",
+ Description: "aidl $out",
+ },
+ "depFile", "aidlFlags")
+)
+
+func genAidl(ctx common.AndroidModuleContext, aidlFile, aidlFlags string) string {
+ javaFile := strings.TrimPrefix(aidlFile, common.ModuleSrcDir(ctx))
+ javaFile = filepath.Join(common.ModuleGenDir(ctx), javaFile)
+ javaFile = pathtools.ReplaceExtension(javaFile, "java")
+ depFile := javaFile + ".d"
+
+ ctx.Build(pctx, blueprint.BuildParams{
+ Rule: aidl,
+ Outputs: []string{javaFile},
+ Inputs: []string{aidlFile},
+ Implicits: []string{"$aidlCmd"},
+ Args: map[string]string{
+ "depFile": depFile,
+ "aidlFlags": aidlFlags,
+ },
+ })
+
+ return javaFile
+}
+
+func genSources(ctx common.AndroidModuleContext, srcFiles []string,
+ flags javaBuilderFlags) []string {
+
+ for i, srcFile := range srcFiles {
+ switch filepath.Ext(srcFile) {
+ case ".aidl":
+ javaFile := genAidl(ctx, srcFile, flags.aidlFlags)
+ srcFiles[i] = javaFile
+ }
+ }
+
+ return srcFiles
+}