diff options
author | Colin Cross <ccross@android.com> | 2015-04-08 13:03:43 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2015-04-08 16:37:31 -0700 |
commit | c0b06f191f99379d3e8111f3bb149a53b1054422 (patch) | |
tree | cee2de58b5b3bfcca311766c91b24ea71deb4766 /java/gen.go | |
parent | 6cbb1275648b76377764a96960b7fd206e1a4917 (diff) | |
download | build_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.go | 79 |
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 +} |