1# Copyright (c) 2012 The ANGLE Project 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{
6    'variables':
7    {
8        'angle_build_conformance_tests%': '0',
9        'angle_build_deqp_tests%': '0',
10    },
11    'targets':
12    [
13        {
14            'target_name': 'gtest',
15            'type': 'static_library',
16            'includes': [ '../build/common_defines.gypi', ],
17            'include_dirs':
18            [
19                'third_party/googletest',
20                'third_party/googletest/include',
21            ],
22            'sources':
23            [
24                'third_party/googletest/src/gtest-all.cc',
25            ],
26            'defines':
27            [
28                '_VARIADIC_MAX=10',
29            ],
30            'direct_dependent_settings':
31            {
32                'defines':
33                [
34                    '_VARIADIC_MAX=10',
35                ],
36            },
37        },
38
39        {
40            'target_name': 'gmock',
41            'type': 'static_library',
42            'includes': [ '../build/common_defines.gypi', ],
43            'include_dirs':
44            [
45                'third_party/googlemock',
46                'third_party/googlemock/include',
47                'third_party/googletest/include',
48            ],
49            'sources':
50            [
51                'third_party/googlemock/src/gmock-all.cc',
52            ],
53            'defines':
54            [
55                '_VARIADIC_MAX=10',
56            ],
57            'direct_dependent_settings':
58            {
59                'defines':
60                [
61                    '_VARIADIC_MAX=10',
62                ],
63            },
64        },
65
66        {
67            'target_name': 'preprocessor_tests',
68            'type': 'executable',
69            'dependencies':
70            [
71                '../src/angle.gyp:preprocessor',
72                'gtest',
73                'gmock',
74            ],
75            'include_dirs':
76            [
77                '../src/compiler/preprocessor',
78                'third_party/googletest/include',
79                'third_party/googlemock/include',
80            ],
81            'includes':
82            [
83                '../build/common_defines.gypi',
84                'preprocessor_tests/preprocessor_tests.gypi',
85            ],
86            'sources':
87            [
88                'preprocessor_tests/preprocessor_test_main.cpp',
89            ],
90        },
91
92        {
93            'target_name': 'compiler_tests',
94            'type': 'executable',
95            'dependencies':
96            [
97                '../src/angle.gyp:translator_static',
98                'gtest',
99            ],
100            'include_dirs':
101            [
102                '../include',
103                '../src',
104                'third_party/googletest/include',
105            ],
106            'includes':
107            [
108                '../build/common_defines.gypi',
109                'compiler_tests/compiler_tests.gypi',
110            ],
111            'sources':
112            [
113                'compiler_tests/compiler_test_main.cpp',
114            ],
115        },
116
117        {
118            'target_name': 'angle_implementation_unit_tests',
119            'type': 'executable',
120            'dependencies':
121            [
122                '../src/angle.gyp:libGLESv2_static',
123                'gtest',
124                'gmock',
125            ],
126            'include_dirs':
127            [
128                '../include',
129                '../src',
130                'third_party/googletest/include',
131                'third_party/googlemock/include',
132            ],
133            'includes':
134            [
135                '../build/common_defines.gypi',
136                'angle_implementation_unit_tests/angle_implementation_unit_tests.gypi',
137            ],
138            'sources':
139            [
140                'angle_implementation_unit_tests/angle_implementation_unit_tests_main.cpp',
141            ],
142        },
143    ],
144
145    'conditions':
146    [
147        ['OS=="win"',
148        {
149            'targets':
150            [
151                {
152                    'target_name': 'angle_tests',
153                    'type': 'executable',
154                    'includes': [ '../build/common_defines.gypi', ],
155                    'dependencies':
156                    [
157                        '../src/angle.gyp:libGLESv2',
158                        '../src/angle.gyp:libEGL',
159                        'gtest',
160                        '../util/util.gyp:angle_util',
161                    ],
162                    'include_dirs':
163                    [
164                        '../include',
165                        'angle_tests',
166                        'third_party/googletest/include',
167                    ],
168                    'sources':
169                    [
170                        '<!@(python <(angle_path)/enumerate_files.py angle_tests -types *.cpp *.h *.inl)'
171                    ],
172                },
173                {
174                    'target_name': 'standalone_tests',
175                    'type': 'executable',
176                    'includes': [ '../build/common_defines.gypi', ],
177                    'dependencies':
178                    [
179                        'gtest',
180                        'gmock',
181                    ],
182                    'include_dirs':
183                    [
184                        '../include',
185                        'angle_tests',
186                        'third_party/googletest/include',
187                        'third_party/googlemock/include',
188                    ],
189                    'sources':
190                    [
191                        '<!@(python <(angle_path)/enumerate_files.py standalone_tests -types *.cpp *.h)'
192                    ],
193                },
194                {
195                    'target_name': 'angle_perf_tests',
196                    'type': 'executable',
197                    'includes': [ '../build/common_defines.gypi', ],
198                    'dependencies':
199                    [
200                        '../src/angle.gyp:libGLESv2',
201                        '../src/angle.gyp:libEGL',
202                        'gtest',
203                        '../util/util.gyp:angle_util',
204                    ],
205                    'include_dirs':
206                    [
207                        '../include',
208                        'third_party/googletest/include',
209                    ],
210                    'sources':
211                    [
212                        'perf_tests/BufferSubData.cpp',
213                        'perf_tests/BufferSubData.h',
214                        'perf_tests/SimpleBenchmark.cpp',
215                        'perf_tests/SimpleBenchmark.h',
216                        'perf_tests/SimpleBenchmarks.cpp',
217                        'perf_tests/TexSubImage.cpp',
218                        'perf_tests/TexSubImage.h',
219                    ],
220                },
221            ],
222            'conditions':
223            [
224                ['angle_build_conformance_tests',
225                {
226                    'variables':
227                    {
228                        'gles_conformance_tests_output_dir': '<(SHARED_INTERMEDIATE_DIR)/conformance_tests',
229                        'gles_conformance_tests_input_dir': 'third_party/gles_conformance_tests/conform/GTF_ES/glsl/GTF',
230                        'gles_conformance_tests_generator_script': 'gles_conformance_tests/generate_gles_conformance_tests.py',
231                    },
232                    'targets':
233                    [
234                        {
235                            'target_name': 'gles2_conformance_tests',
236                            'type': 'executable',
237                            'includes': [ '../build/common_defines.gypi', ],
238                            'dependencies':
239                            [
240                                '../src/angle.gyp:libGLESv2',
241                                '../src/angle.gyp:libEGL',
242                                'gtest',
243                                'third_party/gles_conformance_tests/conform/GTF_ES/glsl/GTF/es_cts.gyp:es_cts_test_data',
244                                'third_party/gles_conformance_tests/conform/GTF_ES/glsl/GTF/es_cts.gyp:es2_cts',
245                            ],
246                            'variables':
247                            {
248                                'gles2_conformance_tests_input_file': '<(gles_conformance_tests_input_dir)/mustpass_es20.run',
249                                'gles2_conformance_tests_generated_file': '<(gles_conformance_tests_output_dir)/generated_gles2_conformance_tests.cpp',
250                            },
251                            'sources':
252                            [
253                                '<!@(python <(angle_path)/enumerate_files.py gles_conformance_tests -types *.cpp *.h *.inl)',
254                                '<(gles2_conformance_tests_generated_file)',
255                            ],
256                            'include_dirs':
257                            [
258                                '../include',
259                                'gles_conformance_tests',
260                                'third_party/googletest/include',
261                            ],
262                            'defines':
263                            [
264                                'CONFORMANCE_TESTS_TYPE=CONFORMANCE_TESTS_ES2',
265                            ],
266                            'actions':
267                            [
268                                {
269                                    'action_name': 'generate_gles2_conformance_tests',
270                                    'message': 'Generating ES2 conformance tests...',
271                                    'msvs_cygwin_shell': 0,
272                                    'inputs':
273                                    [
274                                        '<(gles_conformance_tests_generator_script)',
275                                        '<(gles2_conformance_tests_input_file)',
276                                    ],
277                                    'outputs':
278                                    [
279                                        '<(gles2_conformance_tests_generated_file)',
280                                    ],
281                                    'action':
282                                    [
283                                        'python',
284                                        '<(gles_conformance_tests_generator_script)',
285                                        '<(gles2_conformance_tests_input_file)',
286                                        '<(gles_conformance_tests_input_dir)',
287                                        '<(gles2_conformance_tests_generated_file)',
288                                    ],
289                                },
290                            ],
291                        },
292                        {
293                            'target_name': 'gles3_conformance_tests',
294                            'type': 'executable',
295                            'includes': [ '../build/common_defines.gypi', ],
296                            'dependencies':
297                            [
298                                '../src/angle.gyp:libGLESv2',
299                                '../src/angle.gyp:libEGL',
300                                'gtest',
301                                'third_party/gles_conformance_tests/conform/GTF_ES/glsl/GTF/es_cts.gyp:es_cts_test_data',
302                                'third_party/gles_conformance_tests/conform/GTF_ES/glsl/GTF/es_cts.gyp:es3_cts',
303                            ],
304                            'variables':
305                            {
306                                'gles3_conformance_tests_input_file': '<(gles_conformance_tests_input_dir)/mustpass_es30.run',
307                                'gles3_conformance_tests_generated_file': '<(gles_conformance_tests_output_dir)/generated_gles3_conformance_tests.cpp',
308                            },
309                            'sources':
310                            [
311                                '<!@(python <(angle_path)/enumerate_files.py gles_conformance_tests -types *.cpp *.h *.inl)',
312                                '<(gles3_conformance_tests_generated_file)',
313                            ],
314                            'include_dirs':
315                            [
316                                '../include',
317                                'gles_conformance_tests',
318                                'third_party/googletest/include',
319                            ],
320                            'defines':
321                            [
322                                'CONFORMANCE_TESTS_TYPE=CONFORMANCE_TESTS_ES3',
323                            ],
324                            'msvs_settings':
325                            {
326                                'VCCLCompilerTool':
327                                {
328                                    # MSVS has trouble compiling this due to the obj files becoming too large.
329                                    'AdditionalOptions': [ '/bigobj' ],
330                                },
331                            },
332                            'actions':
333                            [
334                                {
335                                    'action_name': 'generate_gles3_conformance_tests',
336                                    'message': 'Generating ES3 conformance tests...',
337                                    'msvs_cygwin_shell': 0,
338                                    'inputs':
339                                    [
340                                        '<(gles_conformance_tests_generator_script)',
341                                        '<(gles3_conformance_tests_input_file)',
342                                    ],
343                                    'outputs':
344                                    [
345                                        '<(gles3_conformance_tests_generated_file)',
346                                    ],
347                                    'action':
348                                    [
349                                        'python',
350                                        '<(gles_conformance_tests_generator_script)',
351                                        '<(gles3_conformance_tests_input_file)',
352                                        '<(gles_conformance_tests_input_dir)',
353                                        '<(gles3_conformance_tests_generated_file)',
354                                    ],
355                                },
356                            ],
357                        },
358                    ],
359                }],
360                ['angle_build_deqp_tests',
361                {
362                    'targets':
363                    [
364                        {
365                            'target_name': 'deqp_tests',
366                            'type': 'executable',
367                            'includes': [ '../build/common_defines.gypi', ],
368                            'dependencies':
369                            [
370                                '../src/angle.gyp:libGLESv2',
371                                '../src/angle.gyp:libEGL',
372                                'gtest',
373                                'third_party/deqp/src/deqp/modules/gles3/gles3.gyp:deqp-gles3',
374                                'third_party/deqp/src/deqp/framework/platform/platform.gyp:tcutil-platform',
375                            ],
376                            'include_dirs':
377                            [
378                                '../include',
379                                'third_party/googletest/include',
380                                'deqp_tests',
381                            ],
382                            'variables':
383                            {
384                                'deqp_tests_output_dir': '<(SHARED_INTERMEDIATE_DIR)/deqp_tests',
385                                'deqp_tests_input_file': 'deqp_tests/deqp_tests.txt',
386                                'deqp_tests_generated_file': '<(deqp_tests_output_dir)/generated_deqp_tests.cpp',
387                            },
388                            'sources':
389                            [
390                                '<!@(python <(angle_path)/enumerate_files.py deqp_tests -types *.cpp *.h *.inl)',
391                                '<(deqp_tests_generated_file)',
392                            ],
393                            'actions':
394                            [
395                                {
396                                    'action_name': 'generate_deqp_tests',
397                                    'message': 'Generating dEQP tests...',
398                                    'msvs_cygwin_shell': 0,
399                                    'variables':
400                                    {
401                                        'deqp_tests_generator_script': 'deqp_tests/generate_deqp_tests.py',
402                                    },
403                                    'inputs':
404                                    [
405                                        '<(deqp_tests_generator_script)',
406                                        '<(deqp_tests_input_file)',
407                                    ],
408                                    'outputs':
409                                    [
410                                        '<(deqp_tests_generated_file)',
411                                    ],
412                                    'action':
413                                    [
414                                        'python',
415                                        '<(deqp_tests_generator_script)',
416                                        '<(deqp_tests_input_file)',
417                                        '<(deqp_tests_generated_file)',
418                                    ],
419                                },
420                            ],
421                        },
422                    ],
423                }],
424            ],
425        }],
426    ],
427}
428