You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

267 lines
7.7 KiB

package rkaiqdefaults
import (
"android/soong/android"
"android/soong/cc"
"fmt" // required if we want to print usefull messages on the console
"os"
"strings"
)
type Ex_srcs struct {
Srcs []string
}
type Ex_multilibType struct {
Lib32 Ex_srcs
Lib64 Ex_srcs
}
func rkaiqFlags(ctx android.BaseContext) []string {
var cflags []string
//fmt.Fprintf(os.Stderr, "%s\n", "deviceFlags called") //example prints
//fmt.Fprintf(os.Stderr, "%s\n", ctx.AConfig())
var board string
board = ctx.Config().Getenv("TARGET_BOARD_PLATFORM") //currently using this for reference but you can refer to README for other variables.
if(board == ""){
board = ctx.Config().VendorConfig("core_rockchip").String("platform")
}
fmt.Fprintf(os.Stderr, ">>>>>>>>>>>>>>>>>>>>> %s\n", board)
if board == "rv1126" {
cflags = append(cflags, "-DISP_HW_V20")
}
if board == "rk356x" {
cflags = append(cflags, "-DISP_HW_V21")
}
if board == "rk3588" {
cflags = append(cflags, "-DISP_HW_V30")
}
if board == "rv1106" {
cflags = append(cflags, "-DISP_HW_V32")
}
if board == "rk3562" {
cflags = append(cflags, "-DISP_HW_V32_LITE")
}
if board == "rk3576" {
cflags = append(cflags, "-DISP_HW_V39")
}
return cflags
}
func rkaiq_get_aiq_version(ctx android.BaseContext) string {
var board = ctx.Config().Getenv("TARGET_BOARD_PLATFORM")
if(board == ""){
board = ctx.Config().VendorConfig("core_rockchip").String("platform")
}
// fmt.Fprintf(os.Stderr, ">>>>>>>>>>>>>>>>>>>>> %s\n", board)
return board;
}
func rkaiqDefaults(ctx android.LoadHookContext) {
type props struct {
Target struct {
Android struct {
Cflags []string
Enabled *bool
}
Host struct {
Enabled *bool
}
Not_windows struct {
Cflags []string
}
}
Cflags []string
}
p := &props{}
//p.Cflags = deviceFlags(ctx)
soc := rkaiq_get_aiq_version(ctx)
macros_map := rkaiq_macro_switch(soc)
p.Target.Android.Cflags = rkaiq_getAlgosMacros(macros_map)
cflags := rkaiqFlags(ctx)
p.Target.Android.Cflags = append(p.Target.Android.Cflags, cflags...)
ctx.AppendProperties(p)
}
func rkaiqLibraryShared(ctx android.LoadHookContext) {
type props struct {
Target struct {
Android struct {
Srcs []string
Static_libs []string
Enabled *bool
}
Host struct {
Enabled *bool
}
Not_windows struct {
}
}
Srcs []string
}
p := &props{}
soc := rkaiq_get_aiq_version(ctx)
macros_map := rkaiq_macro_switch(soc)
p.Target.Android.Srcs = rkaiq_getSrcsFiles(soc, macros_map)
p.Target.Android.Static_libs = rkaiq_getAlgosLib(macros_map)
ctx.AppendProperties(p)
}
func rkaiqLibraryStatic(ctx android.LoadHookContext) {
type props struct {
Srcs []string
}
p := &props{}
soc := rkaiq_get_aiq_version(ctx)
macros_map := rkaiq_macro_switch(soc)
p.Srcs = rkaiq_getStaticLibSrcs(ctx.ModuleName(), macros_map)
ctx.AppendProperties(p)
}
func rkaiqPrebuiltStaticLibrary(ctx android.LoadHookContext) {
type props struct {
Compile_multilib *string
Multilib Ex_multilibType
}
p := &props{}
var compile_multilib string = ""
target_arch := ctx.AConfig().DevicePrimaryArchType().String()
if (strings.EqualFold(target_arch,"arm64")) {
compile_multilib = "both"
} else {
compile_multilib = "32"
}
p.Compile_multilib = &compile_multilib
// get static lib
var prefix64 string = ""
var prefix32 string = ""
var srcs []string
var module_name string = ctx.ModuleName()[9:] + ".a"
os := "android/"
soc := rkaiq_get_aiq_version(ctx)
soc +="/"
prefix64 = os + soc
prefix32 = os + soc
prefix64 += "aarch64/clang/"
prefix32 += "arm/clang/"
p.Multilib.Lib32.Srcs = append(srcs, prefix32 + module_name)
p.Multilib.Lib64.Srcs = append(srcs, prefix64 + module_name)
//fmt.Println("arch.arm.srcs:", p.Multilib.Lib32.Srcs)
//fmt.Println("arch.arm64.srcs:", p.Multilib.Lib64.Srcs)
ctx.AppendProperties(p)
}
func smartIrPrebuiltLibraryShared(ctx android.LoadHookContext) {
type props struct {
Compile_multilib *string
Multilib Ex_multilibType
}
p := &props{}
var compile_multilib string = ""
target_arch := ctx.AConfig().DevicePrimaryArchType().String()
if (strings.EqualFold(target_arch,"arm64")) {
compile_multilib = "both"
} else {
compile_multilib = "32"
}
p.Compile_multilib = &compile_multilib
// get static lib
var prefix64 string = ""
var prefix32 string = ""
var srcs []string
var module_name string = ctx.ModuleName()[9:] + ".so"
soc := rkaiq_get_aiq_version(ctx)
prefix64 += "lib/" + soc + "/android/arm64/"
prefix32 += "lib/" + soc + "/android/arm/"
p.Multilib.Lib32.Srcs = append(srcs, prefix32 + module_name)
p.Multilib.Lib64.Srcs = append(srcs, prefix64 + module_name)
//fmt.Println("arch.arm.srcs:", p.Multilib.Lib32.Srcs)
//fmt.Println("arch.arm64.srcs:", p.Multilib.Lib64.Srcs)
if soc != "rk3326" && soc != "rk3399" && soc != "rk3528" {
ctx.AppendProperties(p)
}
}
func rkaiqVersionDefaults(ctx android.LoadHookContext) {
type props struct {
Target struct {
Android struct {
Cflags []string
Enabled *bool
}
Host struct {
Enabled *bool
}
Not_windows struct {
Cflags []string
}
}
Cflags []string
}
p := &props{}
//p.Cflags = deviceFlags(ctx)
p.Target.Android.Cflags = rkaiqFlags(ctx)
ctx.AppendProperties(p)
}
/* This is called from the boot strap process
* We register a module here
*/
func init() {
android.RegisterModuleType("rkaiq_defaults", rkaiqDefaultFactory)
android.RegisterModuleType("cc_rkaiq_library_shared", cc_rkaiq_library_sharedFactory)
android.RegisterModuleType("cc_rkaiq_library_static", cc_rkaiq_library_staticFactory)
android.RegisterModuleType("cc_rkaiq_prebuilt_library_static", cc_rkaiq_prebuilt_library_staticFactory)
android.RegisterModuleType("rkaiq_version_defaults", rkaiqVersionDefaultFactory)
android.RegisterModuleType("cc_smart_ir_prebuilt_library_shared", cc_smart_ir_prebuilt_library_sharedFactory)
}
func rkaiqDefaultFactory() android.Module {
module := cc.DefaultsFactory()
android.AddLoadHook(module, rkaiqDefaults)
return module
}
func cc_rkaiq_library_sharedFactory() android.Module {
module := cc.LibrarySharedFactory()
android.AddLoadHook(module, rkaiqLibraryShared)
return module
}
func cc_rkaiq_library_staticFactory() android.Module {
module := cc.LibraryStaticFactory()
android.AddLoadHook(module, rkaiqLibraryStatic)
return module
}
func cc_rkaiq_prebuilt_library_staticFactory() (android.Module) {
// Register rockchip_prebuilt_libs factory as PrebuiltSharedLibraryFactory
module := cc.PrebuiltStaticLibraryFactory()
// Add Hook for PrebuiltSharedLibraryFactory
android.AddLoadHook(module, rkaiqPrebuiltStaticLibrary)
return module
}
func rkaiqVersionDefaultFactory() android.Module {
module := cc.DefaultsFactory()
android.AddLoadHook(module, rkaiqVersionDefaults)
return module
}
func cc_smart_ir_prebuilt_library_sharedFactory() android.Module {
module := cc.PrebuiltSharedLibraryFactory()
android.AddLoadHook(module, smartIrPrebuiltLibraryShared)
return module
}