| // |
| // Copyright © 2020-2021 ARM Ltd. All rights reserved. |
| // SPDX-License-Identifier: MIT |
| // |
| |
| package arm_compute_library_nn_driver |
| |
| import ( |
| "android/soong/android" |
| "android/soong/cc" |
| "strings" |
| ) |
| |
| func globalFlags(ctx android.BaseContext) []string { |
| var cppflags []string |
| |
| if ctx.AConfig().PlatformVersionName() == "Q" || ctx.AConfig().PlatformVersionName() == "10" || |
| ctx.AConfig().PlatformVersionName() == "R" || ctx.AConfig().PlatformVersionName() == "11" || |
| ctx.AConfig().PlatformVersionName() == "S" || ctx.AConfig().PlatformVersionName() == "12" { |
| cppflags = append(cppflags, "-fno-addrsig") |
| } |
| |
| if ((ctx.AConfig().PlatformVersionName() != "P" || ctx.AConfig().PlatformVersionName() != "9") && (ctx.AConfig().PlatformVersionName() == "R" || ctx.AConfig().PlatformVersionName() == "11")) { |
| if (ctx.AConfig().DevicePrimaryArchType().String() == "armv8-2a") { |
| cppflags = append(cppflags, "-march=armv8.2-a+fp16") |
| } |
| } |
| |
| |
| data_types := strings.Split(ctx.AConfig().GetenvWithDefault("COMPUTE_LIB_DATA_TYPE", "ALL"), ",") |
| |
| for _, x := range data_types { |
| if strings.ToUpper(x) == "ALL" || strings.ToUpper(x) == "INTEGER" { |
| cppflags = append(cppflags, "-DENABLE_INTEGER_KERNELS") |
| } |
| if strings.ToUpper(x) == "ALL" || strings.ToUpper(x) == "QASYMM8" { |
| cppflags = append(cppflags, "-DENABLE_QASYMM8_KERNELS") |
| } |
| if strings.ToUpper(x) == "ALL" || strings.ToUpper(x) == "QASYMM8_SIGNED" { |
| cppflags = append(cppflags, "-DENABLE_QASYMM8_SIGNED_KERNELS") |
| } |
| if strings.ToUpper(x) == "ALL" || strings.ToUpper(x) == "QASYMM16" { |
| cppflags = append(cppflags, "-DENABLE_QASYMM16_KERNELS") |
| } |
| if strings.ToUpper(x) == "ALL" || strings.ToUpper(x) == "QSYMM16" { |
| cppflags = append(cppflags, "-DENABLE_QSYMM16_KERNELS") |
| } |
| if strings.ToUpper(x) == "ALL" || strings.ToUpper(x) == "FP16" { |
| cppflags = append(cppflags, "-DENABLE_FP16_KERNELS") |
| } |
| if strings.ToUpper(x) == "ALL" || strings.ToUpper(x) == "FP32" { |
| cppflags = append(cppflags, "-DENABLE_FP32_KERNELS") |
| } |
| } |
| |
| data_layouts := strings.Split(ctx.AConfig().GetenvWithDefault("COMPUTE_LIB_DATA_LAYOUT", "ALL"), ",") |
| |
| for _, x := range data_layouts { |
| if strings.ToUpper(x) == "ALL" || strings.ToUpper(x) == "NHWC" { |
| cppflags = append(cppflags, "-DENABLE_NHWC_KERNELS") |
| } |
| if strings.ToUpper(x) == "ALL" || strings.ToUpper(x) == "NCHW" { |
| cppflags = append(cppflags, "-DENABLE_NCHW_KERNELS") |
| } |
| } |
| |
| cppflags = append(cppflags, "-ARM_COMPUTE_CPU_ENABLED") |
| cppflags = append(cppflags, "-ARM_COMPUTE_OPENCL_ENABLED") |
| |
| return cppflags |
| } |
| |
| func clframeworkNNDriverDefaults(ctx android.LoadHookContext) { |
| type props struct { |
| Cppflags []string |
| } |
| |
| p := &props{} |
| p.Cppflags = globalFlags(ctx) |
| |
| ctx.AppendProperties(p) |
| } |
| |
| func init() { |
| |
| android.RegisterModuleType("arm_compute_library_defaults", clframeworkNNDriverDefaultsFactory) |
| } |
| |
| func clframeworkNNDriverDefaultsFactory() android.Module { |
| |
| module := cc.DefaultsFactory() |
| android.AddLoadHook(module, clframeworkNNDriverDefaults) |
| return module |
| } |