Android android.bp使用 编译宏
以 hardware 下的android.hardware.bluetooth@1.0-impl.so 为例。android.bp//// Copyright (C) 2016 The Android Open Source Project//// Licensed under the Apache License, Version 2.0 (the "License");// you may n
以 hardware 下的 android.hardware.bluetooth@1.0-impl.so 为例。
android.bp
//
// Copyright (C) 2016 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.
//引入go脚本
bootstrap_go_package {
name: "soong-xxxparser",
pkgPath: "android/soong/xxxparser",
deps: [
"blueprint",
"blueprint-pathtools",
"soong",
"soong-android",
"soong-cc",
"soong-genrule",
],
srcs: [
"xxxparser.go",
],
pluginFor: ["soong_build"],
}
xxxparser_defaults {
name: "xxxparser_defaults",
}
//ANDROIDBP_FUN = ["YES"]
cc_library_shared {
name: "android.hardware.bluetooth@1.0-impl",
defaults: ["hidl_defaults", "xxxparser_defaults",],
//["hidl_defaults"], "xxxparser_defaults",
vendor: true,
relative_install_path: "hw",
//cflags: ["-Wno-error=implicit-function-declaration"],
srcs: [
"bluetooth_hci.cc",
"bluetooth_address.cc",
"vendor_interface.cc",
"multibt_hal.cc",
],
include_dirs: [
"system/bt/hci/include"
],
shared_libs: [
"android.hardware.bluetooth@1.0",
"libbase",
"libcutils",
"libhardware",
"libhidlbase",
"libhidltransport",
"liblog",
"libutils","libutilscallstack"
],
static_libs: [
"android.hardware.bluetooth-async",
"android.hardware.bluetooth-hci",
],
}
cc_library_static {
name: "android.hardware.bluetooth-async",
vendor: true,
defaults: ["hidl_defaults"],
srcs: [
"async_fd_watcher.cc",
],
export_include_dirs: ["."],
shared_libs: [
"liblog",
],
}
cc_library_static {
name: "android.hardware.bluetooth-hci",
vendor: true,
defaults: ["hidl_defaults"],
srcs: [
"hci_packetizer.cc",
"hci_protocol.cc",
"h4_protocol.cc",
"mct_protocol.cc","mycallstack.cpp"
],
export_include_dirs: ["."],
shared_libs: [
"libbase",
"libhidlbase",
"liblog",
"libutils","libutilscallstack"
],
}
//cc_test {
// name: "bluetooth-vendor-interface-unit-tests",
// vendor: true,
// defaults: ["hidl_defaults"],
// srcs: [
// "test/async_fd_watcher_unittest.cc",
// "test/h4_protocol_unittest.cc",
// "test/mct_protocol_unittest.cc",
// ],
// local_include_dirs: [
// "test",
// ],
// shared_libs: [
// "libbase",
// "libhidlbase",
// "liblog",
// "libutils",
// ],
// static_libs: [
// "android.hardware.bluetooth-async",
// "android.hardware.bluetooth-hci",
// "libgmock",
// ],
//}
//cc_test_host {
// name: "bluetooth-address-unit-tests",
// defaults: ["hidl_defaults"],
// srcs: [
// "bluetooth_address.cc",
// "test/bluetooth_address_test.cc",
// "test/properties.cc",
// ],
// local_include_dirs: [
// "test",
// ],
// shared_libs: [
// "libbase",
// "liblog",
// ],
//}
cc_binary {
name: "android.hardware.bluetooth@1.0-service",
defaults: ["hidl_defaults"],
relative_install_path: "hw",
vendor: true,
init_rc: ["android.hardware.bluetooth@1.0-service.rc"],
srcs: ["service.cpp"],
cflags: ["-Wno-error=implicit-function-declaration"],
shared_libs: [
"liblog",
"libcutils",
"libdl",
"libbase",
"libutils",
"libutilscallstack",
"libhardware",
"libhidlbase",
"libhidltransport",
"android.hardware.bluetooth@1.0",
],
}
//cc_binary {
// defaults: ["xxxparser_defaults"],
// name: "AndroidBp",
// srcs: ["main.c"],
// cflags: ["-Wno-error=implicit-function-declaration"],
// shared_libs: [
// "libcutils",
// "liblog",
// "libutils",
// ],
//}
android.bp 同目录下的go文件 xxxparser.go
package xxxparser
import (
"android/soong/android"
"android/soong/cc"
)
func init() {
//resister a module "xxxparser_defaults"
android.RegisterModuleType("xxxparser_defaults", xxxdroidDefaultsFactory)
}
func xxxdroidDefaultsFactory() (android.Module) {
module := cc.DefaultsFactory()
android.AddLoadHook(module, xxxdroidDefaults)
return module
}
func xxxdroidDefaults(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
//if ctx.AConfig().Getenv("ANDROIDBP_FUN") == "YES" {
// cppflags = append(cppflags,"-DXXX")
//}
//export BLUETOOTH_MODULE=BK3515N
if ctx.AConfig().Getenv("BLUETOOTH_MODULE") == "BK3515N" {
cppflags = append(cppflags,"-DUSE_BK3515N")
}
return cppflags
}
编译前 先导出环境变量 export BLUETOOTH_MODULE=BK3515N,
那么就会设置宏定义 USE_BK3515N
没有导出BLUETOOTH_MODULE,就不会定义宏了。
更多推荐
所有评论(0)