diff options
author | Nan Zhang <nanzhang@google.com> | 2017-05-10 13:37:54 -0700 |
---|---|---|
committer | Nan Zhang <nanzhang@google.com> | 2017-05-17 11:26:00 -0700 |
commit | 5323f8e32f9e08def4a68608510062c464ed4c1e (patch) | |
tree | 5c44e3cc7343a74e054171ee72c94856ce6257d1 /python/androidmk.go | |
parent | 2c13abc95e3e2c6c12fff6aa42262ef3296c2a1b (diff) | |
download | android_build_soong-5323f8e32f9e08def4a68608510062c464ed4c1e.tar.gz android_build_soong-5323f8e32f9e08def4a68608510062c464ed4c1e.tar.bz2 android_build_soong-5323f8e32f9e08def4a68608510062c464ed4c1e.zip |
Add python_test_host module.
bug: 31676493
Test: created py_test modules in real folder. and ran 'mma'.
Change-Id: I22aa2fad74b11e4a31ea7a4c4a4f0ea64cd3fc94
Diffstat (limited to 'python/androidmk.go')
-rw-r--r-- | python/androidmk.go | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/python/androidmk.go b/python/androidmk.go new file mode 100644 index 00000000..0a79e736 --- /dev/null +++ b/python/androidmk.go @@ -0,0 +1,74 @@ +// Copyright 2017 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 python + +import ( + "android/soong/android" + "fmt" + "io" + "path/filepath" + "strings" +) + +type subAndroidMkProvider interface { + AndroidMk(*pythonBaseModule, *android.AndroidMkData) +} + +func (p *pythonBaseModule) subAndroidMk(data *android.AndroidMkData, obj interface{}) { + if p.subAndroidMkOnce == nil { + p.subAndroidMkOnce = make(map[subAndroidMkProvider]bool) + } + if androidmk, ok := obj.(subAndroidMkProvider); ok { + if !p.subAndroidMkOnce[androidmk] { + p.subAndroidMkOnce[androidmk] = true + androidmk.AndroidMk(p, data) + } + } +} + +func (p *pythonBaseModule) AndroidMk() (ret android.AndroidMkData, err error) { + p.subAndroidMk(&ret, p.installer) + + return ret, nil +} + +func (p *pythonBinaryHostDecorator) AndroidMk(base *pythonBaseModule, ret *android.AndroidMkData) { + ret.Class = "EXECUTABLES" + base.subAndroidMk(ret, p.pythonDecorator.baseInstaller) +} + +func (p *pythonTestHostDecorator) AndroidMk(base *pythonBaseModule, ret *android.AndroidMkData) { + ret.Class = "NATIVE_TESTS" + base.subAndroidMk(ret, p.pythonDecorator.baseInstaller) +} + +func (installer *pythonInstaller) AndroidMk(base *pythonBaseModule, ret *android.AndroidMkData) { + // Soong installation is only supported for host modules. Have Make + // installation trigger Soong installation. + if base.Target().Os.Class == android.Host { + ret.OutputFile = android.OptionalPathForPath(installer.path) + } + + ret.Extra = append(ret.Extra, func(w io.Writer, outputFile android.Path) error { + path := installer.path.RelPathString() + dir, file := filepath.Split(path) + stem := strings.TrimSuffix(file, filepath.Ext(file)) + + fmt.Fprintln(w, "LOCAL_MODULE_SUFFIX := "+filepath.Ext(file)) + fmt.Fprintln(w, "LOCAL_MODULE_PATH := $(OUT_DIR)/"+filepath.Clean(dir)) + fmt.Fprintln(w, "LOCAL_MODULE_STEM := "+stem) + return nil + }) +} |