package sensorservice
import (
"android/soong/android"
"android/soong/cc"
"fmt"
)
var (
isMiui bool
)
func init() {
// 註冊cc_sensor_library_shared, 指定要調用的方法入口sensorService_LibraryFactory
android.RegisterModuleType( "cc_sensor_library_shared" , sensorService_LibraryFactory)
}
func sensorService_LibraryFactory() (android.Module) {
// 庫編譯要獲取LibrarySharedFactory, 可執行文件編譯要獲取DefaultsFactory(這一步很重要)
module := cc.LibrarySharedFactory()
android.AddLoadHook(module, sensorService_Defaults)
return module
}
func sensorService_Defaults(ctx android.LoadHookContext) {
type props struct {
// 定義Android.bp中的各個字段
Cflags []string
Srcs []string
Include_dirs []string
Shared_libs []string
Local_include_dirs []string
Static_libs []string
Export_shared_lib_headers []string
}
p := &props{}
// 初始化環境配置,做不同版本的判斷
initEnvironment(ctx)
// 獲取scrs配置
p.Srcs = getSrcs(ctx)
// 獲取local_include_dirs配置
p.Local_include_dirs = getLocalIncludeDirs(ctx)
// 獲取local_include_dirs配置
p.Cflags = getCflags(ctx)
// 獲取shared_libs配置
p.Shared_libs = getSharedLibs(ctx)
// 獲取static_libs配置
p.Static_libs = getStaticLibs(ctx)
// 獲取include_dirs配置
p.Include_dirs = getIncludeDirs(ctx)
// 獲取export_shared_lib_headers配置
p.Export_shared_lib_headers = getExportSharedLibHeaders(ctx)
// 上邊寫的配置,不需要全寫在go中,只需要把條件編譯的代碼放進來就可以了,其他的還是配置在Android.bp中
ctx.AppendProperties(p)
}
func initEnvironment(ctx android.LoadHookContext) {
// 判斷該路徑是否存在
v,error := PathExists( "miui/frameworks/base/v29/native/libmqsas" )
// 初始化isMiui變量
if (v && error != nil) {
isMiui = true
fmt.Println( "sensorService = is Miui" )
} else {
isMiui = false
fmt.Println( "sensorService = isn't Miui" )
}
}
func getCflags(ctx android.BaseContext) ([]string) {
var cflags []string
cflags = append(cflags, "-DLOG_TAG=\"SensorService\"" )
cflags = append(cflags, "-Wall" )
cflags = append(cflags, "-Werror" )
cflags = append(cflags, "-Wextra" )
cflags = append(cflags, "-fvisibility=hidden" )
cflags = append(cflags, "-DHAS_SENSOR_CONTROL" )
if (isMiui) {
cflags = append(cflags, "-DSENSOR_DATA_COLLECTION" )
}
return cflags
}
func getExportSharedLibHeaders(ctx android.BaseContext) ([]string) {
var libs []string
libs = append(libs, "libsensor" )
libs = append(libs, "libsensorprivacy" )
return libs
}
func getLocalIncludeDirs(ctx android.BaseContext) ([]string) {
var localDirs []string
localDirs = append(localDirs, "EllipticFusionSensorManager" )
return localDirs
}
func getIncludeDirs(ctx android.BaseContext) ([]string) {
var dirs []string
if (isMiui) {
dirs = append(dirs, "miui/frameworks/base/v29/native/libmqsas" )
}
return dirs
}
func getStaticLibs(ctx android.BaseContext) ([]string) {
var libs []string
libs = append(libs, "[email protected]" )
return libs
}
func getSrcs(ctx android.BaseContext) ([]string) {
var srcs []string
srcs = append(srcs, "BatteryService.cpp" )
srcs = append(srcs, "CorrectedGyroSensor.cpp" )
srcs = append(srcs, "Fusion.cpp" )
srcs = append(srcs, "GravitySensor.cpp" )
srcs = append(srcs, "LinearAccelerationSensor.cpp" )
srcs = append(srcs, "OrientationSensor.cpp" )
srcs = append(srcs, "RecentEventLogger.cpp" )
srcs = append(srcs, "RotationVectorSensor.cpp" )
srcs = append(srcs, "SensorDevice.cpp" )
srcs = append(srcs, "SensorDeviceUtils.cpp" )
srcs = append(srcs, "SensorDirectConnection.cpp" )
srcs = append(srcs, "SensorEventConnection.cpp" )
srcs = append(srcs, "SensorFusion.cpp" )
srcs = append(srcs, "SensorInterface.cpp" )
srcs = append(srcs, "SensorList.cpp" )
srcs = append(srcs, "SensorRecord.cpp" )
srcs = append(srcs, "SensorService.cpp" )
srcs = append(srcs, "SensorServiceUtils.cpp" )
srcs = append(srcs, "EllipticFusionSensorManager/EllipticFusionSensorManager.cpp" )
srcs = append(srcs, "EllipticFusionSensorManager/TableTopSensor.cpp" )
srcs = append(srcs, "EllipticFusionSensorManager/ProximityFusionSensor.cpp" )
srcs = append(srcs, "EllipticFusionSensorManager/SnapFusionSensor.cpp" )
srcs = append(srcs, "EllipticFusionSensorManager/MuteFusionSensor.cpp" )
srcs = append(srcs, "EllipticFusionSensorManager/PhoneMotionSensor.cpp" )
srcs = append(srcs, "EllipticFusionSensorManager/ParseFusionSensorConfig.cpp" )
srcs = append(srcs, "SensorControl.cpp" )
return srcs
}
func getSharedLibs(ctx android.BaseContext) ([]string) {
var libs []string
libs = append(libs, "libcutils" )
libs = append(libs, "libhardware" )
libs = append(libs, "libhardware_legacy" )
libs = append(libs, "libutils" )
libs = append(libs, "liblog" )
libs = append(libs, "libbinder" )
libs = append(libs, "libsensor" )
libs = append(libs, "libsensorprivacy" )
libs = append(libs, "libcrypto" )
libs = append(libs, "libbase" )
libs = append(libs, "libhidlbase" )
libs = append(libs, "libhidltransport" )
libs = append(libs, "libhwbinder" )
libs = append(libs, "libfmq" )
libs = append(libs, "[email protected]" )
libs = append(libs, "[email protected]" )
if (isMiui) {
libs = append(libs, "libmqsas_v29" )
}
return libs
}
|