safesight/edge/third_party/rknpu2/runtime/Android.go
tian 29d9ef5d0d refactor: 项目结构梳理 - 设备端/管理端对称布局
仓库结构:
  edge/     设备端(原根目录设备端代码整体移入)
  control/  管理端(清理后)
  docs/     文档(PRD 移入 design/)
  README.md 根导航(新增)

清理:
- control/.brainstorm 临时草稿删除
- control 根级重复文档(API表/PRD_04)并入 docs/design/
- control/plan.md -> docs/implementation/control-plan.md
- control/safesightd-linux-arm64 二进制取消版本控制(.gitignore)
- edge/transform 模型转换产物归入 models/,onnx/pt 大源文件取消跟踪(.gitignore)
- Readme.md(PRD) -> docs/design/PRD_Product_v1.2.md(避开 README 大小写冲突)

更新:
- 根 README.md 导航、docs/README.md 文档索引
- deployment.md/检查表路径加 edge/ 前缀
- .gitignore 重写(edge/control 分区规则)
2026-08-02 11:39:54 +08:00

111 lines
2.8 KiB
Go

package librknnrt
import (
"android/soong/android"
"android/soong/cc"
"fmt"
"strings"
)
var SUPPORT_TARGET_PLATFORM = [...]string{
"rk356x",
"rk3588",
}
func init() {
fmt.Println("librknnrt want to conditional Compile")
android.RegisterModuleType("cc_librknnrt_prebuilt_library_shared", LibrknnrtFactory)
// android.RegisterModuleType("librknnrt_headers", LibrknnrtHeadersFactory)
}
func LibrknnrtFactory() (android.Module) {
module := cc.PrebuiltSharedLibraryFactory()
android.AddLoadHook(module, LibrknnrtPrebuiltLibrary)
return module
}
func LibrknnrtPrebuiltLibrary(ctx android.LoadHookContext) {
type props struct {
Multilib struct {
Lib64 struct {
Srcs []string
}
Lib32 struct {
Srcs []string
}
}
Export_include_dirs []string
}
p := &props{}
p.Multilib.Lib64.Srcs = getLibrknnrtLibrary(ctx, "arm64-v8a")
p.Multilib.Lib32.Srcs = getLibrknnrtLibrary(ctx, "armeabi-v7a")
p.Export_include_dirs = getLibrknnrtHeader(ctx)
ctx.AppendProperties(p)
}
// func LibrknnrtHeadersFactory() (android.Module) {
// module := cc.prebuiltLibraryHeaderFactory()
// android.AddLoadHook(module, LibrknnrtHeaders)
// return module
// }
// func LibrknnrtHeaders(ctx android.LoadHookContext) {
// type props struct {
// Export_include_dirs []string
// }
// p := &props{}
// p.Export_include_dirs = getLibrknnrtHeader(ctx)
// ctx.AppendProperties(p)
// }
func checkEnabled(ctx android.LoadHookContext) bool {
var soc string = getTargetSoc(ctx)
for i := 0; i < len(SUPPORT_TARGET_PLATFORM); i++ {
if (strings.EqualFold(SUPPORT_TARGET_PLATFORM[i], soc)) {
fmt.Println("librknnrt enabled on " + soc)
return true
}
}
fmt.Println("librknnrt disabled on " + soc)
return false
}
func getLibrknnrtLibrary(ctx android.LoadHookContext, arch string) ([]string) {
var src []string
var soc string = getTargetSoc(ctx)
var prefix string = soc
if (!checkEnabled(ctx)) {
prefix = "RK356X"
}
// fmt.Println("soc=" + soc + " arch=" + arch)
src = append(src, prefix + "/Android/librknn_api/" + arch + "/librknnrt.so")
return src
}
func getLibrknnrtHeader(ctx android.LoadHookContext) ([]string) {
var src []string
var soc string = getTargetSoc(ctx)
var prefix string = soc
if (!checkEnabled(ctx)) {
prefix = "RK356X"
}
src = append(src, prefix + "/Android/librknn_api/include/")
return src
}
func getTargetSoc(ctx android.LoadHookContext) (string) {
var target_board_platform string = strings.ToUpper(ctx.AConfig().Getenv("TARGET_BOARD_PLATFORM"))
return target_board_platform
}