以 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,就不会定义宏了。
|