OLD | NEW |
| (Empty) |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | |
2 # Use of this source code is governed by a BSD-style license that can be | |
3 # found in the LICENSE file. | |
4 | |
5 import("//build/config/arm.gni") | |
6 | |
7 declare_args() { | |
8 # Override this value to build with small float FFT tables | |
9 openmax_big_float_fft = true | |
10 } | |
11 | |
12 config("dl_config") { | |
13 include_dirs = [ ".." ] | |
14 if (cpu_arch == "arm") { | |
15 if (arm_use_neon) { | |
16 # Enable build-time NEON selection. | |
17 defines = [ "DL_ARM_NEON" ] | |
18 } else if (is_android) { | |
19 # Enable run-time NEON selection. | |
20 defines = [ "DL_ARM_NEON_OPTIONAL" ] | |
21 } | |
22 } else if (cpu_arch == "arm64") { | |
23 # Enable build-time NEON selection. | |
24 defines = [ "DL_ARM_NEON" ] | |
25 } | |
26 } | |
27 | |
28 # GYP: third_party/openmax_dl/dl/dl.gyp:openmax_dl | |
29 source_set("dl") { | |
30 public_configs = [ ":dl_config" ] | |
31 sources = [ | |
32 "api/omxtypes.h", | |
33 "sp/api/omxSP.h", | |
34 "sp/src/armSP_FFT_F32TwiddleTable.c", | |
35 ] | |
36 | |
37 cflags = [] | |
38 deps = [] | |
39 defines = [] | |
40 | |
41 if (openmax_big_float_fft) { | |
42 defines += [ "BIG_FFT_TABLE" ] | |
43 } | |
44 | |
45 if (cpu_arch == "arm" || cpu_arch == "arm64") { | |
46 sources += [ | |
47 # Common files that are used by both arm and arm64 code. | |
48 "api/arm/armOMX.h", | |
49 "api/arm/omxtypes_s.h", | |
50 "sp/api/armSP.h", | |
51 "sp/src/arm/armSP_FFT_S32TwiddleTable.c", | |
52 "sp/src/arm/omxSP_FFTGetBufSize_C_FC32.c", | |
53 "sp/src/arm/omxSP_FFTGetBufSize_C_SC32.c", | |
54 "sp/src/arm/omxSP_FFTGetBufSize_R_F32.c", | |
55 "sp/src/arm/omxSP_FFTGetBufSize_R_S32.c", | |
56 "sp/src/arm/omxSP_FFTInit_C_FC32.c", | |
57 "sp/src/arm/omxSP_FFTInit_R_F32.c", | |
58 ] | |
59 } | |
60 | |
61 if (cpu_arch == "arm") { | |
62 if (arm_use_neon || is_android) { | |
63 deps += [ ":openmax_dl_armv7" ] | |
64 } | |
65 configs -= [ "//build/config/compiler:compiler_arm_fpu" ] | |
66 cflags += [ "-mfpu=neon" ] | |
67 | |
68 if (arm_use_neon || is_android) { | |
69 sources += [ | |
70 # Common files that are used by both the NEON and non-NEON code. | |
71 "api/armCOMM_s.h", | |
72 "sp/src/arm/omxSP_FFTGetBufSize_C_SC16.c", | |
73 "sp/src/arm/omxSP_FFTGetBufSize_R_S16.c", | |
74 "sp/src/arm/omxSP_FFTGetBufSize_R_S16S32.c", | |
75 "sp/src/arm/omxSP_FFTInit_C_SC16.c", | |
76 "sp/src/arm/omxSP_FFTInit_C_SC32.c", | |
77 "sp/src/arm/omxSP_FFTInit_R_S16.c", | |
78 "sp/src/arm/omxSP_FFTInit_R_S16S32.c", | |
79 "sp/src/arm/omxSP_FFTInit_R_S32.c", | |
80 | |
81 # Complex 32-bit fixed-point FFT. | |
82 "sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix2_fs_unsafe_s.S", | |
83 "sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix2_ls_unsafe_s.S", | |
84 "sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix2_unsafe_s.S", | |
85 "sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix4_fs_unsafe_s.S", | |
86 "sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix4_ls_unsafe_s.S", | |
87 "sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix4_unsafe_s.S", | |
88 "sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix8_fs_unsafe_s.S", | |
89 "sp/src/arm/neon/omxSP_FFTFwd_CToC_SC32_Sfs_s.S", | |
90 "sp/src/arm/neon/omxSP_FFTInv_CToC_SC32_Sfs_s.S", | |
91 | |
92 # Real 32-bit fixed-point FFT | |
93 "sp/src/arm/neon/armSP_FFTInv_CCSToR_S32_preTwiddleRadix2_unsafe_s.S", | |
94 "sp/src/arm/neon/omxSP_FFTFwd_RToCCS_S32_Sfs_s.S", | |
95 "sp/src/arm/neon/omxSP_FFTInv_CCSToR_S32_Sfs_s.S", | |
96 | |
97 # Complex 16-bit fixed-point FFT | |
98 "sp/src/arm/neon/armSP_FFTInv_CCSToR_S16_preTwiddleRadix2_unsafe_s.S", | |
99 "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_fs_unsafe_s.S", | |
100 "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_ls_unsafe_s.S", | |
101 "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_ps_unsafe_s.S", | |
102 "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_unsafe_s.S", | |
103 "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix4_fs_unsafe_s.S", | |
104 "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix4_ls_unsafe_s.S", | |
105 "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix4_unsafe_s.S", | |
106 "sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix8_fs_unsafe_s.S", | |
107 "sp/src/arm/neon/omxSP_FFTFwd_CToC_SC16_Sfs_s.S", | |
108 "sp/src/arm/neon/omxSP_FFTInv_CToC_SC16_Sfs_s.S", | |
109 | |
110 # Real 16-bit fixed-point FFT | |
111 "sp/src/arm/neon/omxSP_FFTFwd_RToCCS_S16_Sfs_s.S", | |
112 "sp/src/arm/neon/omxSP_FFTInv_CCSToR_S16_Sfs_s.S", | |
113 "sp/src/arm/neon/omxSP_FFTFwd_RToCCS_S16S32_Sfs_s.S", | |
114 "sp/src/arm/neon/omxSP_FFTInv_CCSToR_S32S16_Sfs_s.S", | |
115 | |
116 # Complex floating-point FFT | |
117 "sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix2_fs_unsafe_s.S", | |
118 "sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix2_ls_unsafe_s.S", | |
119 "sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix2_unsafe_s.S", | |
120 "sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix4_fs_unsafe_s.S", | |
121 "sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix4_ls_unsafe_s.S", | |
122 "sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix4_unsafe_s.S", | |
123 "sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix8_fs_unsafe_s.S", | |
124 "sp/src/arm/neon/omxSP_FFTFwd_CToC_FC32_Sfs_s.S", | |
125 "sp/src/arm/neon/omxSP_FFTInv_CToC_FC32_Sfs_s.S", | |
126 | |
127 # Real floating-point FFT | |
128 "sp/src/arm/neon/armSP_FFTInv_CCSToR_F32_preTwiddleRadix2_unsafe_s.S", | |
129 "sp/src/arm/neon/omxSP_FFTFwd_RToCCS_F32_Sfs_s.S", | |
130 "sp/src/arm/neon/omxSP_FFTInv_CCSToR_F32_Sfs_s.S", | |
131 ] | |
132 } | |
133 } | |
134 | |
135 if (cpu_arch == "ia32" || cpu_arch == "x64") { | |
136 cflags += [ "-msse2" ] | |
137 | |
138 sources += [ | |
139 # Real 32-bit floating-point FFT. | |
140 "sp/api/x86SP.h", | |
141 "sp/src/x86/omxSP_FFTFwd_RToCCS_F32_Sfs.c", | |
142 "sp/src/x86/omxSP_FFTGetBufSize_R_F32.c", | |
143 "sp/src/x86/omxSP_FFTInit_R_F32.c", | |
144 "sp/src/x86/omxSP_FFTInv_CCSToR_F32_Sfs.c", | |
145 "sp/src/x86/x86SP_FFT_CToC_FC32_Fwd_Radix2_fs.c", | |
146 "sp/src/x86/x86SP_FFT_CToC_FC32_Fwd_Radix2_ls.c", | |
147 "sp/src/x86/x86SP_FFT_CToC_FC32_Fwd_Radix2_ls_sse.c", | |
148 "sp/src/x86/x86SP_FFT_CToC_FC32_Fwd_Radix2_ms.c", | |
149 "sp/src/x86/x86SP_FFT_CToC_FC32_Fwd_Radix4_fs.c", | |
150 "sp/src/x86/x86SP_FFT_CToC_FC32_Fwd_Radix4_fs_sse.c", | |
151 "sp/src/x86/x86SP_FFT_CToC_FC32_Fwd_Radix4_ls.c", | |
152 "sp/src/x86/x86SP_FFT_CToC_FC32_Fwd_Radix4_ls_sse.c", | |
153 "sp/src/x86/x86SP_FFT_CToC_FC32_Fwd_Radix4_ms.c", | |
154 "sp/src/x86/x86SP_FFT_CToC_FC32_Fwd_Radix4_ms_sse.c", | |
155 "sp/src/x86/x86SP_FFT_CToC_FC32_Inv_Radix2_fs.c", | |
156 "sp/src/x86/x86SP_FFT_CToC_FC32_Inv_Radix2_ls.c", | |
157 "sp/src/x86/x86SP_FFT_CToC_FC32_Inv_Radix2_ls_sse.c", | |
158 "sp/src/x86/x86SP_FFT_CToC_FC32_Inv_Radix2_ms.c", | |
159 "sp/src/x86/x86SP_FFT_CToC_FC32_Inv_Radix4_fs.c", | |
160 "sp/src/x86/x86SP_FFT_CToC_FC32_Inv_Radix4_fs_sse.c", | |
161 "sp/src/x86/x86SP_FFT_CToC_FC32_Inv_Radix4_ls.c", | |
162 "sp/src/x86/x86SP_FFT_CToC_FC32_Inv_Radix4_ls_sse.c", | |
163 "sp/src/x86/x86SP_FFT_CToC_FC32_Inv_Radix4_ms.c", | |
164 "sp/src/x86/x86SP_FFT_CToC_FC32_Inv_Radix4_ms_sse.c", | |
165 "sp/src/x86/x86SP_FFT_F32_radix2_kernel.c", | |
166 "sp/src/x86/x86SP_FFT_F32_radix4_kernel.c", | |
167 "sp/src/x86/x86SP_SSE_Math.h", | |
168 ] | |
169 } | |
170 if (cpu_arch == "arm64") { | |
171 sources += [ | |
172 "api/arm/arm64COMM_s.h", | |
173 | |
174 # Complex floating-point FFT | |
175 "sp/src/arm/arm64/armSP_FFT_CToC_FC32_Radix2_fs_s.S", | |
176 "sp/src/arm/arm64/armSP_FFT_CToC_FC32_Radix2_ls_s.S", | |
177 "sp/src/arm/arm64/armSP_FFT_CToC_FC32_Radix2_s.S", | |
178 "sp/src/arm/arm64/armSP_FFT_CToC_FC32_Radix4_fs_s.S", | |
179 "sp/src/arm/arm64/armSP_FFT_CToC_FC32_Radix4_ls_s.S", | |
180 "sp/src/arm/arm64/armSP_FFT_CToC_FC32_Radix4_s.S", | |
181 "sp/src/arm/arm64/armSP_FFT_CToC_FC32_Radix8_fs_s.S", | |
182 "sp/src/arm/arm64/omxSP_FFTInv_CToC_FC32.c", | |
183 "sp/src/arm/arm64/omxSP_FFTFwd_CToC_FC32.c", | |
184 | |
185 # Real floating-point FFT | |
186 "sp/src/arm/arm64/armSP_FFTInv_CCSToR_F32_preTwiddleRadix2_s.S", | |
187 "sp/src/arm/arm64/omxSP_FFTFwd_RToCCS_F32.c", | |
188 "sp/src/arm/arm64/ComplexToRealFixup.S", | |
189 "sp/src/arm/arm64/omxSP_FFTInv_CCSToR_F32.c", | |
190 ] | |
191 } | |
192 if (cpu_arch == "mipsel") { | |
193 cflags += [ "-std=c99" ] | |
194 sources -= [ "sp/src/armSP_FFT_F32TwiddleTable.c" ] | |
195 | |
196 sources += [ | |
197 "sp/api/mipsSP.h", | |
198 "sp/src/mips/mips_FFTFwd_RToCCS_F32_complex.c", | |
199 "sp/src/mips/mips_FFTFwd_RToCCS_F32_real.c", | |
200 "sp/src/mips/mips_FFTInv_CCSToR_F32_complex.c", | |
201 "sp/src/mips/mips_FFTInv_CCSToR_F32_real.c", | |
202 "sp/src/mips/omxSP_FFT_F32TwiddleTable.c", | |
203 "sp/src/mips/omxSP_FFTFwd_RToCCS_F32_Sfs.c", | |
204 "sp/src/mips/omxSP_FFTGetBufSize_R_F32.c", | |
205 "sp/src/mips/omxSP_FFTInit_R_F32.c", | |
206 "sp/src/mips/omxSP_FFTInv_CCSToR_F32_Sfs.c", | |
207 ] | |
208 } | |
209 } | |
210 | |
211 if (cpu_arch == "arm") { | |
212 # GYP: third_party/openmax_dl/dl/dl.gyp:openmax_dl | |
213 # Non-NEON implementation of FFT. This library is NOT | |
214 # standalone. Applications must link with openmax_dl. | |
215 source_set("openmax_dl_armv7") { | |
216 configs += [ ":dl_config" ] | |
217 visibility = [ ":*" ] | |
218 | |
219 #TODO(GYP): | |
220 #'cflags!': [ | |
221 #'-mfpu=neon', | |
222 #], | |
223 | |
224 sources = [ | |
225 # Complex floating-point FFT | |
226 "sp/src/arm/armv7/armSP_FFT_CToC_FC32_Radix2_fs_unsafe_s.S", | |
227 "sp/src/arm/armv7/armSP_FFT_CToC_FC32_Radix4_fs_unsafe_s.S", | |
228 "sp/src/arm/armv7/armSP_FFT_CToC_FC32_Radix4_unsafe_s.S", | |
229 "sp/src/arm/armv7/armSP_FFT_CToC_FC32_Radix8_fs_unsafe_s.S", | |
230 "sp/src/arm/armv7/omxSP_FFTInv_CToC_FC32_Sfs_s.S", | |
231 "sp/src/arm/armv7/omxSP_FFTFwd_CToC_FC32_Sfs_s.S", | |
232 | |
233 # Real floating-point FFT | |
234 "sp/src/arm/armv7/armSP_FFTInv_CCSToR_F32_preTwiddleRadix2_unsafe_s.S", | |
235 "sp/src/arm/armv7/omxSP_FFTFwd_RToCCS_F32_Sfs_s.S", | |
236 "sp/src/arm/armv7/omxSP_FFTInv_CCSToR_F32_Sfs_s.S", | |
237 ] | |
238 if (is_android) { | |
239 # We only do run-time NEON detection on Android. | |
240 deps = [ | |
241 "//third_party/android_tools:cpu_features", | |
242 ] | |
243 libs = [ "log" ] | |
244 | |
245 # Detection routine | |
246 sources += [ "sp/src/arm/detect.c" ] | |
247 } | |
248 } | |
249 } | |
OLD | NEW |