xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/rkaiq.go (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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