blob: 29e27b1342bdba4c076c626bb1d9b5449d819fe0 [file] [log] [blame]
rtoy@google.com99b31ea2013-02-01 21:30:291# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
2#
3# Use of this source code is governed by a BSD-style license
4# that can be found in the LICENSE file in the root of the source
5# tree. An additional intellectual property rights grant can be found
6# in the file PATENTS. All contributing project authors may
7# be found in the AUTHORS file in the root of the source tree.
8
9{
10 'variables' : {
11 # Override this value to build with small float FFT tables
12 'big_float_fft%' : 1,
13 },
14 'targets': [
15 {
rtoy@google.com91c96a12013-03-06 17:41:4116 'target_name': 'openmax_dl',
rtoy@google.com99b31ea2013-02-01 21:30:2917 'type': 'static_library',
rtoy@google.com048e6322013-02-05 17:24:0618 'include_dirs': [
19 '../',
20 ],
rtoy@google.com99b31ea2013-02-01 21:30:2921 'sources': [
rtoy@google.com048e6322013-02-05 17:24:0622 'api/omxtypes.h',
rtoy@google.com048e6322013-02-05 17:24:0623 'sp/api/omxSP.h',
rtoy@google.com048e6322013-02-05 17:24:0624 'sp/src/armSP_FFT_F32TwiddleTable.c',
rtoy@google.com99b31ea2013-02-01 21:30:2925 ],
26 'conditions' : [
27 ['big_float_fft == 1', {
28 'defines': [
29 'BIG_FFT_TABLE',
30 ],
31 }],
rtoy@google.comda04d4f2013-11-11 18:55:4232 ['target_arch=="arm"', {
33 'cflags!': [
34 '-mfpu=vfpv3-d16',
35 ],
36 'cflags': [
37 # We enable Neon instructions even with arm_neon==0, to support
38 # runtime detection.
39 '-mfpu=neon',
40 ],
41 'sources': [
42 'api/armCOMM_s.h',
43 'api/armOMX.h',
44 'api/omxtypes_s.h',
45 'sp/api/armSP.h',
rtoy@google.com07622c72013-11-12 00:11:0846 # Common C code for NEON and non-NEON implementations.
47 'sp/src/arm/armSP_FFT_S32TwiddleTable.c',
48 'sp/src/arm/omxSP_FFTGetBufSize_C_SC32.c',
49 'sp/src/arm/omxSP_FFTInit_C_SC32.c',
50 'sp/src/arm/omxSP_FFTGetBufSize_R_S32.c',
51 'sp/src/arm/omxSP_FFTInit_R_S32.c',
52 'sp/src/arm/omxSP_FFTInit_C_SC16.c',
53 'sp/src/arm/omxSP_FFTGetBufSize_C_SC16.c',
54 'sp/src/arm/omxSP_FFTGetBufSize_R_S16.c',
55 'sp/src/arm/omxSP_FFTInit_R_S16.c',
56 'sp/src/arm/omxSP_FFTGetBufSize_R_S16S32.c',
57 'sp/src/arm/omxSP_FFTInit_R_S16S32.c',
58 'sp/src/arm/omxSP_FFTGetBufSize_C_FC32.c',
59 'sp/src/arm/omxSP_FFTInit_C_FC32.c',
60 'sp/src/arm/omxSP_FFTGetBufSize_R_F32.c',
61 'sp/src/arm/omxSP_FFTInit_R_F32.c',
62
63 # NEON-specific implementation
rtoy@google.comda04d4f2013-11-11 18:55:4264 # Complex 32-bit fixed-point FFT.
rtoy@google.com07622c72013-11-12 00:11:0865 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix2_fs_unsafe_s.S',
66 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix2_ls_unsafe_s.S',
67 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix2_fs_unsafe_s.S',
68 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix4_fs_unsafe_s.S',
69 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix4_ls_unsafe_s.S',
70 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix2_unsafe_s.S',
71 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix4_unsafe_s.S',
72 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix8_fs_unsafe_s.S',
73 'sp/src/arm/neon/omxSP_FFTInv_CToC_SC32_Sfs_s.S',
74 'sp/src/arm/neon/omxSP_FFTFwd_CToC_SC32_Sfs_s.S',
rtoy@google.comda04d4f2013-11-11 18:55:4275 # Real 32-bit fixed-point FFT
rtoy@google.com07622c72013-11-12 00:11:0876 'sp/src/arm/neon/armSP_FFTInv_CCSToR_S32_preTwiddleRadix2_unsafe_s.S',
77 'sp/src/arm/neon/omxSP_FFTFwd_RToCCS_S32_Sfs_s.S',
78 'sp/src/arm/neon/omxSP_FFTInv_CCSToR_S32_Sfs_s.S',
rtoy@google.comda04d4f2013-11-11 18:55:4279 # Complex 16-bit fixed-point FFT
rtoy@google.com07622c72013-11-12 00:11:0880 'sp/src/arm/neon/armSP_FFTInv_CCSToR_S16_preTwiddleRadix2_unsafe_s.S',
81 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_fs_unsafe_s.S',
82 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_ls_unsafe_s.S',
83 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_ps_unsafe_s.S',
84 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_unsafe_s.S',
85 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix4_fs_unsafe_s.S',
86 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix4_ls_unsafe_s.S',
87 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix4_unsafe_s.S',
88 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix8_fs_unsafe_s.S',
89 'sp/src/arm/neon/omxSP_FFTFwd_CToC_SC16_Sfs_s.S',
90 'sp/src/arm/neon/omxSP_FFTInv_CToC_SC16_Sfs_s.S',
rtoy@google.comda04d4f2013-11-11 18:55:4291 # Real 16-bit fixed-point FFT
rtoy@google.com07622c72013-11-12 00:11:0892 'sp/src/arm/neon/omxSP_FFTFwd_RToCCS_S16_Sfs_s.S',
93 'sp/src/arm/neon/omxSP_FFTInv_CCSToR_S16_Sfs_s.S',
94 'sp/src/arm/neon/omxSP_FFTFwd_RToCCS_S16S32_Sfs_s.S',
95 'sp/src/arm/neon/omxSP_FFTInv_CCSToR_S32S16_Sfs_s.S',
rtoy@google.comda04d4f2013-11-11 18:55:4296 # Complex floating-point FFT
rtoy@google.com07622c72013-11-12 00:11:0897 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix2_fs_unsafe_s.S',
98 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix2_ls_unsafe_s.S',
99 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix2_fs_unsafe_s.S',
100 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix4_fs_unsafe_s.S',
101 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix4_ls_unsafe_s.S',
102 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix2_unsafe_s.S',
103 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix4_unsafe_s.S',
104 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix8_fs_unsafe_s.S',
105 'sp/src/arm/neon/omxSP_FFTInv_CToC_FC32_Sfs_s.S',
106 'sp/src/arm/neon/omxSP_FFTFwd_CToC_FC32_Sfs_s.S',
rtoy@google.comda04d4f2013-11-11 18:55:42107 # Real floating-point FFT
rtoy@google.com07622c72013-11-12 00:11:08108 'sp/src/arm/neon/armSP_FFTInv_CCSToR_F32_preTwiddleRadix2_unsafe_s.S',
109 'sp/src/arm/neon/omxSP_FFTFwd_RToCCS_F32_Sfs_s.S',
110 'sp/src/arm/neon/omxSP_FFTInv_CCSToR_F32_Sfs_s.S',
rtoy@google.comda04d4f2013-11-11 18:55:42111 ],
112 }],
113 ['target_arch=="ia32" or target_arch=="x64"', {
114 'cflags': [
115 '-msse2',
116 ],
117 'sources': [
118 # Real 32-bit floating-point FFT.
119 'sp/api/x86SP.h',
120 'sp/src/x86/omxSP_FFTFwd_RToCCS_F32_Sfs.c',
121 'sp/src/x86/omxSP_FFTGetBufSize_R_F32.c',
122 'sp/src/x86/omxSP_FFTInit_R_F32.c',
123 'sp/src/x86/omxSP_FFTInv_CCSToR_F32_Sfs.c',
124 'sp/src/x86/x86SP_FFT_CToC_FC32_Fwd_Radix2_fs.c',
125 'sp/src/x86/x86SP_FFT_CToC_FC32_Fwd_Radix2_ls.c',
126 'sp/src/x86/x86SP_FFT_CToC_FC32_Fwd_Radix2_ls_sse.c',
127 'sp/src/x86/x86SP_FFT_CToC_FC32_Fwd_Radix2_ms.c',
128 'sp/src/x86/x86SP_FFT_CToC_FC32_Fwd_Radix4_fs.c',
129 'sp/src/x86/x86SP_FFT_CToC_FC32_Fwd_Radix4_fs_sse.c',
130 'sp/src/x86/x86SP_FFT_CToC_FC32_Fwd_Radix4_ls.c',
131 'sp/src/x86/x86SP_FFT_CToC_FC32_Fwd_Radix4_ls_sse.c',
132 'sp/src/x86/x86SP_FFT_CToC_FC32_Fwd_Radix4_ms.c',
133 'sp/src/x86/x86SP_FFT_CToC_FC32_Fwd_Radix4_ms_sse.c',
134 'sp/src/x86/x86SP_FFT_CToC_FC32_Inv_Radix2_fs.c',
135 'sp/src/x86/x86SP_FFT_CToC_FC32_Inv_Radix2_ls.c',
136 'sp/src/x86/x86SP_FFT_CToC_FC32_Inv_Radix2_ls_sse.c',
137 'sp/src/x86/x86SP_FFT_CToC_FC32_Inv_Radix2_ms.c',
138 'sp/src/x86/x86SP_FFT_CToC_FC32_Inv_Radix4_fs.c',
139 'sp/src/x86/x86SP_FFT_CToC_FC32_Inv_Radix4_fs_sse.c',
140 'sp/src/x86/x86SP_FFT_CToC_FC32_Inv_Radix4_ls.c',
141 'sp/src/x86/x86SP_FFT_CToC_FC32_Inv_Radix4_ls_sse.c',
142 'sp/src/x86/x86SP_FFT_CToC_FC32_Inv_Radix4_ms.c',
143 'sp/src/x86/x86SP_FFT_CToC_FC32_Inv_Radix4_ms_sse.c',
144 'sp/src/x86/x86SP_FFT_F32_radix2_kernel.c',
145 'sp/src/x86/x86SP_FFT_F32_radix4_kernel.c',
146 'sp/src/x86/x86SP_SSE_Math.h',
147 ],
148 }],
rtoy@google.com99b31ea2013-02-01 21:30:29149 ],
150 }]
151}