# 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',
                    ],
                },
            ],
        }],
        ['target_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)',
                                    ],
                                },
                            ],
                        },
                    ],
                }],
            ],
        }],
    ],
}
