Index: build/secondary/third_party/openmax_dl/dl/BUILD.gn |
diff --git a/build/secondary/third_party/openmax_dl/dl/BUILD.gn b/build/secondary/third_party/openmax_dl/dl/BUILD.gn |
index 067be172ff4e263bae21a2e5603c2a997052914f..158e3f8b0bd1c13c88b002074547a60636854301 100644 |
--- a/build/secondary/third_party/openmax_dl/dl/BUILD.gn |
+++ b/build/secondary/third_party/openmax_dl/dl/BUILD.gn |
@@ -2,6 +2,8 @@ |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
+import("//build/config/arm.gni") |
+ |
declare_args() { |
# Override this value to build with small float FFT tables |
openmax_big_float_fft = true |
@@ -9,6 +11,19 @@ declare_args() { |
config("dl_config") { |
include_dirs = [ ".." ] |
+ if (cpu_arch == "arm") { |
+ if (arm_use_neon) { |
+ # Enable build-time NEON selection. |
+ defines = [ "DL_ARM_NEON" ] |
+ } else if (is_android) { |
+ # Enable run-time NEON selection. |
+ defines = [ "DL_ARM_NEON_OPTIONAL" ] |
+ } |
+ } |
+ else if (cpu_arch == "arm64") { |
+ # Enable build-time NEON selection. |
+ defines = [ "DL_ARM_NEON" ] |
+ } |
} |
# GYP: third_party/openmax_dl/dl/dl.gyp:openmax_dl |
@@ -47,73 +62,76 @@ source_set("dl") { |
} |
if (cpu_arch == "arm") { |
+ if (arm_use_neon || is_android) { |
+ deps += [ |
+ ":openmax_dl_armv7" |
+ ] |
+ } |
configs -= [ "//build/config/compiler:compiler_arm_fpu" ] |
cflags += [ |
"-mfpu=neon" |
] |
- deps += [ |
- ":openmax_dl_armv7" |
- ] |
- |
- sources += [ |
- # Common files that are used by both the NEON and non-NEON code. |
- "api/armCOMM_s.h", |
- "sp/src/arm/omxSP_FFTGetBufSize_C_SC16.c", |
- "sp/src/arm/omxSP_FFTGetBufSize_R_S16.c", |
- "sp/src/arm/omxSP_FFTGetBufSize_R_S16S32.c", |
- "sp/src/arm/omxSP_FFTInit_C_SC16.c", |
- "sp/src/arm/omxSP_FFTInit_C_SC32.c", |
- "sp/src/arm/omxSP_FFTInit_R_S16.c", |
- "sp/src/arm/omxSP_FFTInit_R_S16S32.c", |
- "sp/src/arm/omxSP_FFTInit_R_S32.c", |
- |
- # Complex 32-bit fixed-point FFT. |
- "sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix2_fs_unsafe_s.S", |
- "sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix2_ls_unsafe_s.S", |
- "sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix2_unsafe_s.S", |
- "sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix4_fs_unsafe_s.S", |
- "sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix4_ls_unsafe_s.S", |
- "sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix4_unsafe_s.S", |
- "sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix8_fs_unsafe_s.S", |
- "sp/src/arm/neon/omxSP_FFTFwd_CToC_SC32_Sfs_s.S", |
- "sp/src/arm/neon/omxSP_FFTInv_CToC_SC32_Sfs_s.S", |
- # Real 32-bit fixed-point FFT |
- "sp/src/arm/neon/armSP_FFTInv_CCSToR_S32_preTwiddleRadix2_unsafe_s.S", |
- "sp/src/arm/neon/omxSP_FFTFwd_RToCCS_S32_Sfs_s.S", |
- "sp/src/arm/neon/omxSP_FFTInv_CCSToR_S32_Sfs_s.S", |
- # Complex 16-bit fixed-point FFT |
- "sp/src/arm/neon/armSP_FFTInv_CCSToR_S16_preTwiddleRadix2_unsafe_s.S", |
- "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_fs_unsafe_s.S", |
- "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_ls_unsafe_s.S", |
- "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_ps_unsafe_s.S", |
- "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_unsafe_s.S", |
- "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix4_fs_unsafe_s.S", |
- "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix4_ls_unsafe_s.S", |
- "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix4_unsafe_s.S", |
- "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix8_fs_unsafe_s.S", |
- "sp/src/arm/neon/omxSP_FFTFwd_CToC_SC16_Sfs_s.S", |
- "sp/src/arm/neon/omxSP_FFTInv_CToC_SC16_Sfs_s.S", |
- # Real 16-bit fixed-point FFT |
- "sp/src/arm/neon/omxSP_FFTFwd_RToCCS_S16_Sfs_s.S", |
- "sp/src/arm/neon/omxSP_FFTInv_CCSToR_S16_Sfs_s.S", |
- "sp/src/arm/neon/omxSP_FFTFwd_RToCCS_S16S32_Sfs_s.S", |
- "sp/src/arm/neon/omxSP_FFTInv_CCSToR_S32S16_Sfs_s.S", |
- # Complex floating-point FFT |
- "sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix2_fs_unsafe_s.S", |
- "sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix2_ls_unsafe_s.S", |
- "sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix2_unsafe_s.S", |
- "sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix4_fs_unsafe_s.S", |
- "sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix4_ls_unsafe_s.S", |
- "sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix4_unsafe_s.S", |
- "sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix8_fs_unsafe_s.S", |
- "sp/src/arm/neon/omxSP_FFTFwd_CToC_FC32_Sfs_s.S", |
- "sp/src/arm/neon/omxSP_FFTInv_CToC_FC32_Sfs_s.S", |
- # Real floating-point FFT |
- "sp/src/arm/neon/armSP_FFTInv_CCSToR_F32_preTwiddleRadix2_unsafe_s.S", |
- "sp/src/arm/neon/omxSP_FFTFwd_RToCCS_F32_Sfs_s.S", |
- "sp/src/arm/neon/omxSP_FFTInv_CCSToR_F32_Sfs_s.S", |
- ] |
+ if (arm_use_neon || is_android) { |
+ sources += [ |
+ # Common files that are used by both the NEON and non-NEON code. |
+ "api/armCOMM_s.h", |
+ "sp/src/arm/omxSP_FFTGetBufSize_C_SC16.c", |
+ "sp/src/arm/omxSP_FFTGetBufSize_R_S16.c", |
+ "sp/src/arm/omxSP_FFTGetBufSize_R_S16S32.c", |
+ "sp/src/arm/omxSP_FFTInit_C_SC16.c", |
+ "sp/src/arm/omxSP_FFTInit_C_SC32.c", |
+ "sp/src/arm/omxSP_FFTInit_R_S16.c", |
+ "sp/src/arm/omxSP_FFTInit_R_S16S32.c", |
+ "sp/src/arm/omxSP_FFTInit_R_S32.c", |
+ |
+ # Complex 32-bit fixed-point FFT. |
+ "sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix2_fs_unsafe_s.S", |
+ "sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix2_ls_unsafe_s.S", |
+ "sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix2_unsafe_s.S", |
+ "sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix4_fs_unsafe_s.S", |
+ "sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix4_ls_unsafe_s.S", |
+ "sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix4_unsafe_s.S", |
+ "sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix8_fs_unsafe_s.S", |
+ "sp/src/arm/neon/omxSP_FFTFwd_CToC_SC32_Sfs_s.S", |
+ "sp/src/arm/neon/omxSP_FFTInv_CToC_SC32_Sfs_s.S", |
+ # Real 32-bit fixed-point FFT |
+ "sp/src/arm/neon/armSP_FFTInv_CCSToR_S32_preTwiddleRadix2_unsafe_s.S", |
+ "sp/src/arm/neon/omxSP_FFTFwd_RToCCS_S32_Sfs_s.S", |
+ "sp/src/arm/neon/omxSP_FFTInv_CCSToR_S32_Sfs_s.S", |
+ # Complex 16-bit fixed-point FFT |
+ "sp/src/arm/neon/armSP_FFTInv_CCSToR_S16_preTwiddleRadix2_unsafe_s.S", |
+ "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_fs_unsafe_s.S", |
+ "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_ls_unsafe_s.S", |
+ "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_ps_unsafe_s.S", |
+ "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_unsafe_s.S", |
+ "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix4_fs_unsafe_s.S", |
+ "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix4_ls_unsafe_s.S", |
+ "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix4_unsafe_s.S", |
+ "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix8_fs_unsafe_s.S", |
+ "sp/src/arm/neon/omxSP_FFTFwd_CToC_SC16_Sfs_s.S", |
+ "sp/src/arm/neon/omxSP_FFTInv_CToC_SC16_Sfs_s.S", |
+ # Real 16-bit fixed-point FFT |
+ "sp/src/arm/neon/omxSP_FFTFwd_RToCCS_S16_Sfs_s.S", |
+ "sp/src/arm/neon/omxSP_FFTInv_CCSToR_S16_Sfs_s.S", |
+ "sp/src/arm/neon/omxSP_FFTFwd_RToCCS_S16S32_Sfs_s.S", |
+ "sp/src/arm/neon/omxSP_FFTInv_CCSToR_S32S16_Sfs_s.S", |
+ # Complex floating-point FFT |
+ "sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix2_fs_unsafe_s.S", |
+ "sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix2_ls_unsafe_s.S", |
+ "sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix2_unsafe_s.S", |
+ "sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix4_fs_unsafe_s.S", |
+ "sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix4_ls_unsafe_s.S", |
+ "sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix4_unsafe_s.S", |
+ "sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix8_fs_unsafe_s.S", |
+ "sp/src/arm/neon/omxSP_FFTFwd_CToC_FC32_Sfs_s.S", |
+ "sp/src/arm/neon/omxSP_FFTInv_CToC_FC32_Sfs_s.S", |
+ # Real floating-point FFT |
+ "sp/src/arm/neon/armSP_FFTInv_CCSToR_F32_preTwiddleRadix2_unsafe_s.S", |
+ "sp/src/arm/neon/omxSP_FFTFwd_RToCCS_F32_Sfs_s.S", |
+ "sp/src/arm/neon/omxSP_FFTInv_CCSToR_F32_Sfs_s.S", |
+ ] |
+ } |
} |
if (cpu_arch == "ia32" || cpu_arch == "x64") { |
@@ -203,7 +221,6 @@ if (cpu_arch == "arm") { |
# standalone. Applications must link with openmax_dl. |
source_set("openmax_dl_armv7") { |
configs += [ ":dl_config" ] |
- deps = [ "//third_party/android_tools:cpu_features" ] |
visibility = [ ":*" ] |
#TODO(GYP): |
@@ -211,11 +228,7 @@ if (cpu_arch == "arm") { |
#'-mfpu=neon', |
#], |
- libs = [ "log" ] |
- |
sources = [ |
- # Detection routine |
- "sp/src/arm/detect.c", |
# Complex floating-point FFT |
"sp/src/arm/armv7/armSP_FFT_CToC_FC32_Radix2_fs_unsafe_s.S", |
"sp/src/arm/armv7/armSP_FFT_CToC_FC32_Radix4_fs_unsafe_s.S", |
@@ -228,5 +241,12 @@ if (cpu_arch == "arm") { |
"sp/src/arm/armv7/omxSP_FFTFwd_RToCCS_F32_Sfs_s.S", |
"sp/src/arm/armv7/omxSP_FFTInv_CCSToR_F32_Sfs_s.S", |
] |
+ if (is_android) { |
+ # We only do run-time NEON detection on Android. |
+ deps = [ "//third_party/android_tools:cpu_features" ] |
+ libs = [ "log" ] |
+ # Detection routine |
+ sources += [ "sp/src/arm/detect.c" ] |
+ } |
} |
} |