Roll harfbuzz-ng to 1.0.2
[chromium-blink-merge.git] / third_party / opus / opus.gyp
blobf61bc1effbb03f42702a9ed8b7598e7e5259c0a8
1 # Copyright (c) 2012 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.
6   'variables': {
7     'conditions': [
8       ['target_arch=="arm" or target_arch=="arm64"', {
9         'use_opus_fixed_point%': 1,
10       }, {
11         'use_opus_fixed_point%': 0,
12       }],
13       ['target_arch=="arm"', {
14         'use_opus_arm_optimization%': 1,
15       }, {
16         'use_opus_arm_optimization%': 0,
17       }],
18       ['target_arch=="arm" and (OS=="win" or OS=="android" or OS=="linux")', {
19         # Based on the conditions in celt/arm/armcpu.c:
20         # defined(_MSC_VER) || defined(__linux__).
21         'use_opus_rtcd%': 1,
22       }, {
23         'use_opus_rtcd%': 0,
24       }],
25     ],
26   },
27   'target_defaults': {
28     'target_conditions': [
29       ['_type=="executable"', {
30         # All of the executable targets depend on 'opus'. Unfortunately the
31         # 'dependencies' block cannot be inherited via 'target_defaults'.
32         'include_dirs': [
33           'src/celt',
34           'src/silk',
35         ],
36         'conditions': [
37           ['OS == "win"', {
38             'defines': [
39               'inline=__inline',
40             ],
41           }],
42           ['OS=="android"', {
43             'libraries': [
44               '-llog',
45             ],
46           }],
47           ['clang==1', {
48             'cflags': [ '-Wno-absolute-value' ],
49           }]
50         ],
51       }],
52     ],
53   },
54   'targets': [
55     {
56       'target_name': 'opus',
57       'type': 'static_library',
58       'defines': [
59         'OPUS_BUILD',
60         'OPUS_EXPORT=',
61       ],
62       'include_dirs': [
63         'src/celt',
64         'src/include',
65         'src/silk',
66       ],
67       'direct_dependent_settings': {
68         'include_dirs': [
69           'src/include',
70         ],
71       },
72       'includes': [
73         'opus_srcs.gypi',
74         # Disable LTO due to ELF section name out of range
75         # crbug.com/422251
76         '../../build/android/disable_lto.gypi',
77       ],
78       'sources': ['<@(opus_common_sources)'],
79       'conditions': [
80         ['OS!="win"', {
81           'defines': [
82             'HAVE_LRINT',
83             'HAVE_LRINTF',
84             'VAR_ARRAYS',
85           ],
86         }, {
87           'defines': [
88             'USE_ALLOCA',
89             'inline=__inline',
90           ],
91           'msvs_disabled_warnings': [
92             4305,  # Disable truncation warning in celt/pitch.c .
93             4334,  # Disable 32-bit shift warning in src/opus_encoder.c .
94           ],
95         }],
96         ['os_posix==1', {
97           'link_settings': {
98             'libraries': [ '-lm' ],
99           },
100         }],
101         ['os_posix==1 and OS!="android"', {
102           # Suppress a warning given by opus_decoder.c that tells us
103           # optimizations are turned off.
104           'cflags': [
105             '-Wno-#pragma-messages',
106           ],
107           'xcode_settings': {
108             'WARNING_CFLAGS': [
109               '-Wno-#pragma-messages',
110             ],
111           },
112         }],
113         ['os_posix==1 and (target_arch=="arm" or target_arch=="arm64")', {
114           'cflags!': ['-Os'],
115           'cflags': ['-O3'],
116         }],
117         ['use_opus_fixed_point==0', {
118           'include_dirs': [
119             'src/silk/float',
120           ],
121           'sources': ['<@(opus_float_sources)'],
122         }, {
123           'defines': [
124             'FIXED_POINT',
125           ],
126           'direct_dependent_settings': {
127             'defines': [
128               'OPUS_FIXED_POINT',
129             ],
130           },
131           'include_dirs': [
132             'src/silk/fixed',
133           ],
134           'sources': ['<@(opus_fixed_sources)'],
135           'conditions': [
136             ['use_opus_arm_optimization==1', {
137               'defines': [
138                 'OPUS_ARM_ASM',
139                 'OPUS_ARM_INLINE_ASM',
140                 'OPUS_ARM_INLINE_EDSP',
141               ],
142               'includes': [
143                 'opus_srcs_arm.gypi',
144               ],
145               'conditions': [
146                 ['use_opus_rtcd==1', {
147                   'defines': [
148                     'OPUS_ARM_MAY_HAVE_EDSP',
149                     'OPUS_ARM_MAY_HAVE_MEDIA',
150                     'OPUS_ARM_MAY_HAVE_NEON',
151                     'OPUS_HAVE_RTCD',
152                   ],
153                   'includes': [
154                     'opus_srcs_rtcd.gypi',
155                   ],
156                 }],
157               ],
158             }],
159           ],
160         }],
161       ],
162     },  # target opus
163     {
164       'target_name': 'opus_compare',
165       'type': 'executable',
166       'dependencies': [
167         'opus'
168       ],
169       'sources': [
170         'src/src/opus_compare.c',
171       ],
172     },  # target opus_compare
173     {
174       'target_name': 'opus_demo',
175       'type': 'executable',
176       'dependencies': [
177         'opus'
178       ],
179       'sources': [
180         'src/src/opus_demo.c',
181       ],
182     },  # target opus_demo
183     {
184       'target_name': 'test_opus_api',
185       'type': 'executable',
186       'dependencies': [
187         'opus'
188       ],
189       'sources': [
190         'src/tests/test_opus_api.c',
191       ],
192     },  # target test_opus_api
193     {
194       'target_name': 'test_opus_encode',
195       'type': 'executable',
196       'dependencies': [
197         'opus'
198       ],
199       'sources': [
200         'src/tests/test_opus_encode.c',
201       ],
202     },  # target test_opus_encode
203     {
204       'target_name': 'test_opus_decode',
205       'type': 'executable',
206       'dependencies': [
207         'opus'
208       ],
209       'sources': [
210         'src/tests/test_opus_decode.c',
211       ],
212       # test_opus_decode passes a null pointer to opus_decode() for an argument
213       # marked as requiring a non-null value by the nonnull function attribute,
214       # and expects opus_decode() to fail. Disable the -Wnonnull option to avoid
215       # a compilation error if -Werror is specified.
216       'conditions': [
217         ['os_posix==1 and OS!="mac" and OS!="ios"', {
218           'cflags': ['-Wno-nonnull'],
219         }],
220         ['OS=="mac" or OS=="ios"', {
221           'xcode_settings': {
222             'WARNING_CFLAGS': ['-Wno-nonnull'],
223           },
224         }],
225       ],
226     },  # target test_opus_decode
227     {
228       'target_name': 'test_opus_padding',
229       'type': 'executable',
230       'dependencies': [
231         'opus'
232       ],
233       'sources': [
234         'src/tests/test_opus_padding.c',
235       ],
236     },  # target test_opus_padding
237   ]