1*4882a593Smuzhiyunpackage rkaiqdefaults 2*4882a593Smuzhiyun 3*4882a593Smuzhiyunimport ( 4*4882a593Smuzhiyun "android/soong/android" 5*4882a593Smuzhiyun "android/soong/cc" 6*4882a593Smuzhiyun "fmt" // required if we want to print usefull messages on the console 7*4882a593Smuzhiyun "os" 8*4882a593Smuzhiyun) 9*4882a593Smuzhiyun 10*4882a593Smuzhiyunfunc rkaiqFlags(ctx android.BaseContext) []string { 11*4882a593Smuzhiyun var cflags []string 12*4882a593Smuzhiyun //fmt.Fprintf(os.Stderr, "%s\n", "deviceFlags called") //example prints 13*4882a593Smuzhiyun //fmt.Fprintf(os.Stderr, "%s\n", ctx.AConfig()) 14*4882a593Smuzhiyun board := ctx.Config().Getenv("TARGET_BOARD_PLATFORM") //currently using this for reference but you can refer to README for other variables. 15*4882a593Smuzhiyun fmt.Fprintf(os.Stderr, ">>>>>>>>>>>>>>>>>>>>> %s\n", board) 16*4882a593Smuzhiyun if board == "rv1126" { 17*4882a593Smuzhiyun cflags = append(cflags, "-DISP_HW_V20") 18*4882a593Smuzhiyun } 19*4882a593Smuzhiyun if board == "rk356x" { 20*4882a593Smuzhiyun cflags = append(cflags, "-DISP_HW_V21") 21*4882a593Smuzhiyun } 22*4882a593Smuzhiyun if board == "rk3588" { 23*4882a593Smuzhiyun cflags = append(cflags, "-DISP_HW_V30") 24*4882a593Smuzhiyun } 25*4882a593Smuzhiyun if board == "rv1106" { 26*4882a593Smuzhiyun cflags = append(cflags, "-DISP_HW_V32") 27*4882a593Smuzhiyun } 28*4882a593Smuzhiyun if board == "rk3562" { 29*4882a593Smuzhiyun cflags = append(cflags, "-DISP_HW_V32_LITE") 30*4882a593Smuzhiyun } 31*4882a593Smuzhiyun return cflags 32*4882a593Smuzhiyun} 33*4882a593Smuzhiyun 34*4882a593Smuzhiyunfunc rkaiq_get_aiq_version(ctx android.BaseContext) string { 35*4882a593Smuzhiyun board := ctx.Config().Getenv("TARGET_BOARD_PLATFORM") 36*4882a593Smuzhiyun // fmt.Fprintf(os.Stderr, ">>>>>>>>>>>>>>>>>>>>> %s\n", board) 37*4882a593Smuzhiyun return board; 38*4882a593Smuzhiyun} 39*4882a593Smuzhiyun 40*4882a593Smuzhiyunfunc rkaiqDefaults(ctx android.LoadHookContext) { 41*4882a593Smuzhiyun type props struct { 42*4882a593Smuzhiyun Target struct { 43*4882a593Smuzhiyun Android struct { 44*4882a593Smuzhiyun Cflags []string 45*4882a593Smuzhiyun Enabled *bool 46*4882a593Smuzhiyun } 47*4882a593Smuzhiyun Host struct { 48*4882a593Smuzhiyun Enabled *bool 49*4882a593Smuzhiyun } 50*4882a593Smuzhiyun Not_windows struct { 51*4882a593Smuzhiyun Cflags []string 52*4882a593Smuzhiyun } 53*4882a593Smuzhiyun } 54*4882a593Smuzhiyun Cflags []string 55*4882a593Smuzhiyun } 56*4882a593Smuzhiyun p := &props{} 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun //p.Cflags = deviceFlags(ctx) 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun soc := rkaiq_get_aiq_version(ctx) 61*4882a593Smuzhiyun macros_map := rkaiq_macro_switch(soc) 62*4882a593Smuzhiyun p.Target.Android.Cflags = rkaiq_getAlgosMacros(macros_map) 63*4882a593Smuzhiyun cflags := rkaiqFlags(ctx) 64*4882a593Smuzhiyun p.Target.Android.Cflags = append(p.Target.Android.Cflags, cflags...) 65*4882a593Smuzhiyun ctx.AppendProperties(p) 66*4882a593Smuzhiyun} 67*4882a593Smuzhiyun 68*4882a593Smuzhiyunfunc rkaiqLibraryShared(ctx android.LoadHookContext) { 69*4882a593Smuzhiyun type props struct { 70*4882a593Smuzhiyun Target struct { 71*4882a593Smuzhiyun Android struct { 72*4882a593Smuzhiyun Srcs []string 73*4882a593Smuzhiyun Static_libs []string 74*4882a593Smuzhiyun Enabled *bool 75*4882a593Smuzhiyun } 76*4882a593Smuzhiyun Host struct { 77*4882a593Smuzhiyun Enabled *bool 78*4882a593Smuzhiyun } 79*4882a593Smuzhiyun Not_windows struct { 80*4882a593Smuzhiyun } 81*4882a593Smuzhiyun } 82*4882a593Smuzhiyun Srcs []string 83*4882a593Smuzhiyun } 84*4882a593Smuzhiyun p := &props{} 85*4882a593Smuzhiyun soc := rkaiq_get_aiq_version(ctx) 86*4882a593Smuzhiyun macros_map := rkaiq_macro_switch(soc) 87*4882a593Smuzhiyun p.Target.Android.Srcs = rkaiq_getSrcsFiles(soc, macros_map) 88*4882a593Smuzhiyun p.Target.Android.Static_libs = rkaiq_getAlgosLib(macros_map) 89*4882a593Smuzhiyun ctx.AppendProperties(p) 90*4882a593Smuzhiyun} 91*4882a593Smuzhiyun 92*4882a593Smuzhiyunfunc rkaiqLibraryStatic(ctx android.LoadHookContext) { 93*4882a593Smuzhiyun type props struct { 94*4882a593Smuzhiyun Srcs []string 95*4882a593Smuzhiyun } 96*4882a593Smuzhiyun p := &props{} 97*4882a593Smuzhiyun soc := rkaiq_get_aiq_version(ctx) 98*4882a593Smuzhiyun macros_map := rkaiq_macro_switch(soc) 99*4882a593Smuzhiyun p.Srcs = rkaiq_getStaticLibSrcs(ctx.ModuleName(), macros_map) 100*4882a593Smuzhiyun ctx.AppendProperties(p) 101*4882a593Smuzhiyun} 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun/* This is called from the boot strap process 104*4882a593Smuzhiyun * We register a module here 105*4882a593Smuzhiyun*/ 106*4882a593Smuzhiyunfunc init() { 107*4882a593Smuzhiyun android.RegisterModuleType("rkaiq_defaults", rkaiqDefaultFactory) 108*4882a593Smuzhiyun android.RegisterModuleType("cc_rkaiq_library_shared", cc_rkaiq_library_sharedFactory) 109*4882a593Smuzhiyun android.RegisterModuleType("cc_rkaiq_library_static", cc_rkaiq_library_staticFactory) 110*4882a593Smuzhiyun} 111*4882a593Smuzhiyun 112*4882a593Smuzhiyunfunc rkaiqDefaultFactory() android.Module { 113*4882a593Smuzhiyun module := cc.DefaultsFactory() 114*4882a593Smuzhiyun android.AddLoadHook(module, rkaiqDefaults) 115*4882a593Smuzhiyun return module 116*4882a593Smuzhiyun} 117*4882a593Smuzhiyun 118*4882a593Smuzhiyunfunc cc_rkaiq_library_sharedFactory() android.Module { 119*4882a593Smuzhiyun module := cc.LibrarySharedFactory() 120*4882a593Smuzhiyun android.AddLoadHook(module, rkaiqLibraryShared) 121*4882a593Smuzhiyun return module 122*4882a593Smuzhiyun} 123*4882a593Smuzhiyun 124*4882a593Smuzhiyunfunc cc_rkaiq_library_staticFactory() android.Module { 125*4882a593Smuzhiyun module := cc.LibraryStaticFactory() 126*4882a593Smuzhiyun android.AddLoadHook(module, rkaiqLibraryStatic) 127*4882a593Smuzhiyun return module 128*4882a593Smuzhiyun} 129