# Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

{
    'includes':
    [
        'deqp.gypi',
        '../../gyp/common_defines.gypi',
    ],
    'variables':
    {
        'angle_build_conformance_tests%': '0',

        'rapidjson_include_dir': 'third_party/rapidjson/include',
        'rapidjson_headers':
        [
            'third_party/rapidjson/include/rapidjson/allocators.h',
            'third_party/rapidjson/include/rapidjson/document.h',
            'third_party/rapidjson/include/rapidjson/encodedstream.h',
            'third_party/rapidjson/include/rapidjson/encodings.h',
            'third_party/rapidjson/include/rapidjson/filereadstream.h',
            'third_party/rapidjson/include/rapidjson/filestream.h',
            'third_party/rapidjson/include/rapidjson/filewritestream.h',
            'third_party/rapidjson/include/rapidjson/memorybuffer.h',
            'third_party/rapidjson/include/rapidjson/memorystream.h',
            'third_party/rapidjson/include/rapidjson/prettywriter.h',
            'third_party/rapidjson/include/rapidjson/rapidjson.h',
            'third_party/rapidjson/include/rapidjson/reader.h',
            'third_party/rapidjson/include/rapidjson/stringbuffer.h',
            'third_party/rapidjson/include/rapidjson/writer.h',
            'third_party/rapidjson/include/rapidjson/error/en.h',
            'third_party/rapidjson/include/rapidjson/error/error.h',
            'third_party/rapidjson/include/rapidjson/internal/dtoa.h',
            'third_party/rapidjson/include/rapidjson/internal/itoa.h',
            'third_party/rapidjson/include/rapidjson/internal/meta.h',
            'third_party/rapidjson/include/rapidjson/internal/pow10.h',
            'third_party/rapidjson/include/rapidjson/internal/stack.h',
            'third_party/rapidjson/include/rapidjson/internal/strfunc.h',
            'third_party/rapidjson/include/rapidjson/msinttypes/inttypes.h',
            'third_party/rapidjson/include/rapidjson/msinttypes/stdint.h',
        ],
    },
    'conditions':
    [
        # GoogleTest doesn't support WinRT
        ['angle_build_winrt==0',
        {
            'targets':
            [
                {
                    'target_name': 'angle_test_support',
                    'type': 'none',
                    'dependencies':
                    [
                        'angle_internal_gmock',
                        'angle_internal_gtest',
                    ],
                },
            ],
        }],
        ['angle_build_winrt==0',
        {
            'targets':
            [
                # Hide these targets from Chromium, because it can't
                # find our standalone copy of the gtest/gmock sources.
                {
                    'target_name': 'angle_internal_gtest',
                    'type': 'static_library',
                    'includes': [ '../../gyp/common_defines.gypi', ],
                    'include_dirs':
                    [
                        '<(angle_path)/testing/gtest',
                        '<(angle_path)/testing/gtest/include',
                    ],
                    'sources':
                    [
                        '<(angle_path)/testing/gtest/src/gtest-all.cc',
                    ],
                    'defines':
                    [
                        '_VARIADIC_MAX=10',
                    ],
                    'all_dependent_settings':
                    {
                        'defines':
                        [
                            '_VARIADIC_MAX=10',
                        ],
                        'include_dirs':
                        [
                            '<(angle_path)/testing/gtest',
                            '<(angle_path)/testing/gtest/include',
                        ],
                    },
                },

                {
                    'target_name': 'angle_internal_gmock',
                    'type': 'static_library',
                    'includes': [ '../../gyp/common_defines.gypi', ],
                    'include_dirs':
                    [
                        '<(angle_path)/testing/gmock',
                        '<(angle_path)/testing/gmock/include',
                        '<(angle_path)/testing/gtest/include',
                    ],
                    'sources':
                    [
                        '<(angle_path)/testing/gmock/src/gmock-all.cc',
                    ],
                    'defines':
                    [
                        '_VARIADIC_MAX=10',
                    ],
                    'all_dependent_settings':
                    {
                        'defines':
                        [
                            '_VARIADIC_MAX=10',
                        ],
                        'include_dirs':
                        [
                            '<(angle_path)/testing/gmock',
                            '<(angle_path)/testing/gmock/include',
                            '<(angle_path)/testing/gtest/include',
                        ],
                    },
                },

                # These same target names exist on the Chromium side,
                # which is forbidden, so we make them conditional on
                # ANGLE's standalone build.
                {
                    'target_name': 'angle_unittests',
                    'type': 'executable',
                    'includes':
                    [
                        '../../gyp/common_defines.gypi',
                        'angle_unittests.gypi',
                    ],
                    'sources':
                    [
                        'angle_unittests_main.cpp',
                    ],
                    'msvs_settings':
                    {
                        'VCLinkerTool':
                        {
                            'conditions':
                            [
                                ['angle_build_winrt==1',
                                {
                                    'AdditionalDependencies':
                                    [
                                        'runtimeobject.lib',
                                    ],
                                }],
                            ],
                        },
                    },
                    'msvs_disabled_warnings':
                    [
                        4244, # Conversion from 'type1' to 'type2', possible loss of data
                    ],
                },
                {
                    'target_name': 'angle_end2end_tests',
                    'type': 'executable',
                    'includes':
                    [
                        '../../gyp/common_defines.gypi',
                        'angle_end2end_tests.gypi',
                    ],
                    'sources':
                    [
                        'angle_end2end_tests_main.cpp',
                    ],
                },
                {
                    'target_name': 'angle_white_box_tests',
                    'type': 'executable',
                    'includes':
                    [
                        '../../gyp/common_defines.gypi',
                        'angle_white_box_tests.gypi',
                    ],
                    'sources':
                    [
                        'angle_white_box_tests_main.cpp',
                    ],
                },
                {
                    'target_name': 'angle_perftests',
                    'type': 'executable',
                    'includes':
                    [
                        '../../gyp/common_defines.gypi',
                        'angle_perftests.gypi',
                    ],
                    'sources':
                    [
                        'angle_perftests_main.cpp',
                    ],
                },
            ],
        }],
        ['OS=="win"',
        {
            'conditions':
            [
                ['angle_build_conformance_tests',
                {
                    'variables':
                    {
                        'gles_conformance_tests_output_dir': '<(SHARED_INTERMEDIATE_DIR)/conformance_tests',
                        'gles_conformance_tests_input_dir': 'third_party/gles_conformance_tests/conform/GTF_ES/glsl/GTF',
                        'gles_conformance_tests_generator_script': 'gles_conformance_tests/generate_gles_conformance_tests.py',
                    },
                    'targets':
                    [
                        {
                            'target_name': 'angle_gles2_conformance_tests',
                            'type': 'executable',
                            'includes': [ '../../gyp/common_defines.gypi', ],
                            'dependencies':
                            [
                                '<(angle_path)/src/angle.gyp:libGLESv2',
                                '<(angle_path)/src/angle.gyp:libEGL',
                                'third_party/gles_conformance_tests/conform/GTF_ES/glsl/GTF/es_cts.gyp:es_cts_test_data',
                                'third_party/gles_conformance_tests/conform/GTF_ES/glsl/GTF/es_cts.gyp:es2_cts',
                                'angle_test_support',
                            ],
                            'variables':
                            {
                                'gles2_conformance_tests_input_file': '<(gles_conformance_tests_input_dir)/mustpass_es20.run',
                                'gles2_conformance_tests_generated_file': '<(gles_conformance_tests_output_dir)/generated_gles2_conformance_tests.cpp',
                            },
                            'sources':
                            [
                                'gles_conformance_tests/gles_conformance_tests.cpp',
                                'gles_conformance_tests/gles_conformance_tests.h',
                                'gles_conformance_tests/gles_conformance_tests_main.cpp',
                                '<(gles2_conformance_tests_generated_file)',
                            ],
                            'include_dirs':
                            [
                                '<(angle_path)/include',
                                'gles_conformance_tests',
                            ],
                            'defines':
                            [
                                'CONFORMANCE_TESTS_TYPE=CONFORMANCE_TESTS_ES2',
                            ],
                            'msvs_settings':
                            {
                                'VCCLCompilerTool':
                                {
                                    # MSVS has trouble compiling this due to the obj files becoming too large.
                                    'AdditionalOptions': [ '/bigobj' ],
                                },
                            },
                            'actions':
                            [
                                {
                                    'action_name': 'generate_gles2_conformance_tests',
                                    'message': 'Generating ES2 conformance tests...',
                                    'msvs_cygwin_shell': 0,
                                    'inputs':
                                    [
                                        '<(gles_conformance_tests_generator_script)',
                                        '<(gles2_conformance_tests_input_file)',
                                    ],
                                    'outputs':
                                    [
                                        '<(gles2_conformance_tests_generated_file)',
                                    ],
                                    'action':
                                    [
                                        'python',
                                        '<(gles_conformance_tests_generator_script)',
                                        '<(gles2_conformance_tests_input_file)',
                                        '<(gles_conformance_tests_input_dir)',
                                        '<(gles2_conformance_tests_generated_file)',
                                    ],
                                },
                            ],
                        },
                        {
                            'target_name': 'angle_gles3_conformance_tests',
                            'type': 'executable',
                            'includes': [ '../../gyp/common_defines.gypi', ],
                            'dependencies':
                            [
                                '<(angle_path)/src/angle.gyp:libGLESv2',
                                '<(angle_path)/src/angle.gyp:libEGL',
                                'third_party/gles_conformance_tests/conform/GTF_ES/glsl/GTF/es_cts.gyp:es_cts_test_data',
                                'third_party/gles_conformance_tests/conform/GTF_ES/glsl/GTF/es_cts.gyp:es3_cts',
                                'angle_test_support',
                            ],
                            'variables':
                            {
                                'gles3_conformance_tests_input_file': '<(gles_conformance_tests_input_dir)/mustpass_es30.run',
                                'gles3_conformance_tests_generated_file': '<(gles_conformance_tests_output_dir)/generated_gles3_conformance_tests.cpp',
                            },
                            'sources':
                            [
                                'gles_conformance_tests/gles_conformance_tests.cpp',
                                'gles_conformance_tests/gles_conformance_tests.h',
                                'gles_conformance_tests/gles_conformance_tests_main.cpp',
                                '<(gles3_conformance_tests_generated_file)',
                            ],
                            'include_dirs':
                            [
                                '<(angle_path)/include',
                                'gles_conformance_tests',
                            ],
                            'defines':
                            [
                                'CONFORMANCE_TESTS_TYPE=CONFORMANCE_TESTS_ES3',
                            ],
                            'msvs_settings':
                            {
                                'VCCLCompilerTool':
                                {
                                    # MSVS has trouble compiling this due to the obj files becoming too large.
                                    'AdditionalOptions': [ '/bigobj' ],
                                },
                            },
                            'actions':
                            [
                                {
                                    'action_name': 'generate_gles3_conformance_tests',
                                    'message': 'Generating ES3 conformance tests...',
                                    'msvs_cygwin_shell': 0,
                                    'inputs':
                                    [
                                        '<(gles_conformance_tests_generator_script)',
                                        '<(gles3_conformance_tests_input_file)',
                                    ],
                                    'outputs':
                                    [
                                        '<(gles3_conformance_tests_generated_file)',
                                    ],
                                    'action':
                                    [
                                        'python',
                                        '<(gles_conformance_tests_generator_script)',
                                        '<(gles3_conformance_tests_input_file)',
                                        '<(gles_conformance_tests_input_dir)',
                                        '<(gles3_conformance_tests_generated_file)',
                                    ],
                                },
                            ],
                        },
                    ],
                }],
            ],
        }],
    ],
}
