原Android.dp
// Copyright (C) 2011 The Android Open Source Project
//
// 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.
cc_library_shared {
name: "test",
relative_install_path: "hw",
vendor: true,
srcs: [
"test.c"
],
shared_libs: [
"liblog",
"libcutils",
"libhardware",
],
cflags: [
"-Wall",
"-Wno-unused-parameter",
"-Wno-unused-variable",
"-Wno-logical-op-parentheses",
"-Wno-incompatible-pointer-types-discards-qualifiers",
"-Wno-unused-function",
],
}
define.go檔案建立
package define
import (
"android/soong/android"
"android/soong/cc"
"fmt"
"strings"
)
func init() {
// for DEBUG
fmt.Println("init start")
android.RegisterModuleType("test_defaults", sys_gpsDefaultsFactory)
}
func sys_gpsDefaultsFactory() (android.Module) {
module := cc.DefaultsFactory()
android.AddLoadHook(module, sys_gpsDefaults)
return module
}
func sys_gpsDefaults(ctx android.LoadHookContext) {
type props struct {
Cflags []string
}
p := &props{}
p.Cflags = globalDefaults(ctx)
ctx.AppendProperties(p)
}
func globalDefaults(ctx android.BaseContext) ([]string) {
var cppflags []string
fmt.Println("DeviceName:", ctx.AConfig().DeviceName())
fmt.Println("DeviceName:", strings.Compare(ctx.AConfig().DeviceName(), "chinatsp_s203_p_8q"))
name := ctx.AConfig().DeviceName();
if name == "xxxx" {
cppflags = append(cppflags,
"-DXXXX=\"XXXXXXX\"")
}
if name == "yyyy" {
cppflags = append(cppflags,
"-DYYYY=\"yyyyyyy\"")
}
return cppflags
}
修改後的Android.dp
// Copyright (C) 2011 The Android Open Source Project
//
// 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.
bootstrap_go_package {
// name and pkgPath need to according to your module
name: "soong-sys_define",
pkgPath: "hardware/libhardware/modules/test",
deps: [
"blueprint",
"blueprint-pathtools",
"soong",
"soong-android",
"soong-cc",
"soong-genrule",
],
srcs: [
// include new add .go file
"define.go",
],
pluginFor: ["soong_build"],
}
test_defaults {
name: "test_defaults",
}
cc_library_shared {
name: "test",
relative_install_path: "hw",
vendor: true,
defaults: [
"test_defaults",
],
srcs: [
"test.c"
],
shared_libs: [
"liblog",
"libcutils",
"libhardware",
],
cflags: [
"-Wall",
"-Wno-unused-parameter",
"-Wno-unused-variable",
"-Wno-logical-op-parentheses",
"-Wno-incompatible-pointer-types-discards-qualifiers",
"-Wno-unused-function",
],
}
(參考 build/soong/android/config.go 中對 build/soong/android/module.go中的 androidBaseContext interface的各種函數實作)