# Copyright 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
{
  'variables': {
    'chromium_code': 1,
  },
  'includes': [
    '../build/util/version.gypi',
    '../build/win_precompile.gypi',
    'blacklist.gypi',
    'dll_hash.gypi',
  ],
  'targets': [
    ##--------------------------------------------------------------------------
    ## chrome_elf
    ##--------------------------------------------------------------------------
    {
      'target_name': 'chrome_elf_resources',
      'type': 'none',
      'variables': {
        'output_dir': 'chrome_elf',
        'branding_path': '../chrome/app/theme/<(branding_path_component)/BRANDING',
        'template_input_path': '../chrome/app/chrome_version.rc.version',
      },
      'sources': [
        'chrome_elf.ver',
      ],
      'includes': [
        '../chrome/version_resource_rules.gypi',
      ],
    },
    {
      'target_name': 'chrome_elf',
      'type': 'shared_library',
      'include_dirs': [
        '..',
      ],
      'sources': [
        'chrome_elf.def',
        'chrome_elf_main.cc',
        'chrome_elf_main.h',
        '<(SHARED_INTERMEDIATE_DIR)/chrome_elf/chrome_elf_version.rc',
      ],
      'dependencies': [
        '../chrome/chrome.gyp:install_static_util',
        'blacklist',
        'chrome_elf_crash',
        'chrome_elf_hook_util',
        'chrome_elf_resources',
        'chrome_elf_security',
        'nt_registry/nt_registry.gyp:chrome_elf_nt_registry',
      ],
      'msvs_settings': {
        'VCLinkerTool': {
          'conditions': [
            ['target_arch=="ia32"', {
              # Don't set an x64 base address (to avoid breaking HE-ASLR).
              'BaseAddress': '0x01c20000',
            }],
          ],
          # Set /SUBSYSTEM:WINDOWS.
          'SubSystem': '2',
          'AdditionalDependencies!': [
            'user32.lib',
          ],
          'IgnoreDefaultLibraryNames': [
            'user32.lib',
          ],
        },
      },
    },
    ##--------------------------------------------------------------------------
    ## chrome_elf sub targets
    ##--------------------------------------------------------------------------
    {
      'target_name': 'chrome_elf_constants',
      'type': 'static_library',
      'include_dirs': [
        '..',
      ],
      'sources': [
        'chrome_elf_constants.cc',
        'chrome_elf_constants.h',
      ],
    },
    {
      'target_name': 'chrome_elf_crash',
      'type': 'static_library',
      'include_dirs': [
        '..',
      ],
      'sources': [
        '../chrome/app/chrome_crash_reporter_client_win.cc',
        '../chrome/app/chrome_crash_reporter_client_win.h',
        '../chrome/common/chrome_result_codes.h',
        'crash/crash_helper.cc',
        'crash/crash_helper.h',
      ],
      'dependencies': [
        '../base/base.gyp:base', # This needs to go.
        '../base/base.gyp:base_static', # pe_image
        '../chrome/chrome.gyp:install_static_util',
        '../components/components.gyp:crash_component',
        '../components/components.gyp:crash_core_common', #crash_keys
        'chrome_elf_hook_util',
      ],
    },
    {
      'target_name': 'chrome_elf_hook_util',
      'type': 'static_library',
      'include_dirs': [
        '..',
      ],
      'sources': [
        '../base/macros.h',
        'hook_util/hook_util.cc',
        'hook_util/hook_util.h',
      ],
      'dependencies': [
        '../base/base.gyp:base_static', # pe_image
        '../sandbox/sandbox.gyp:sandbox',
      ],
    },
    {
      'target_name': 'chrome_elf_security',
      'type': 'static_library',
      'include_dirs': [
        '..',
      ],
      'sources': [
        'chrome_elf_security.cc',
        'chrome_elf_security.h',
      ],
      'dependencies': [
        'chrome_elf_constants',
        'nt_registry/nt_registry.gyp:chrome_elf_nt_registry',
      ]
    },
    ##--------------------------------------------------------------------------
    ## tests
    ##--------------------------------------------------------------------------
    {
      'target_name': 'chrome_elf_unittests_exe',
      'product_name': 'chrome_elf_unittests',
      'type': 'executable',
      'sources': [
        'blacklist/test/blacklist_test.cc',
        'chrome_elf_util_unittest.cc',
        'elf_imports_unittest.cc',
        'run_all_unittests.cc',
      ],
      'include_dirs': [
        '..',
        '<(SHARED_INTERMEDIATE_DIR)',
      ],
      'dependencies': [
        '../base/base.gyp:base',
        '../base/base.gyp:run_all_unittests',
        '../base/base.gyp:test_support_base',
        '../chrome/chrome.gyp:install_static_util',
        '../sandbox/sandbox.gyp:sandbox',
        '../testing/gtest.gyp:gtest',
        'blacklist',
        'blacklist_test_dll_1',
        'blacklist_test_dll_2',
        'blacklist_test_dll_3',
        'blacklist_test_main_dll',
        'chrome_elf_crash',
        'chrome_elf_hook_util',
        'chrome_elf_security',
        'nt_registry/nt_registry.gyp:chrome_elf_nt_registry',
      ],
      'msvs_settings': {
        'VCLinkerTool': {
          'DelayLoadDLLs': [
            'dbghelp.dll',
            'ole32.dll',
            'psapi.dll',
            'rpcrt4.dll',
            'shell32.dll',
            'shlwapi.dll',
            'user32.dll',
            'winhttp.dll',
            'winmm.dll',
            'ws2_32.dll',
          ],
        },
      },
    },
    {
      # A dummy target to ensure that chrome_elf.dll and chrome.exe gets built
      # when building chrome_elf_unittests.exe without introducing an
      # explicit runtime dependency.
      'target_name': 'chrome_elf_unittests',
      'type': 'none',
      'dependencies': [
        '../chrome/chrome.gyp:chrome',
        '../chrome/chrome.gyp:install_static_util',
        'chrome_elf',
        'chrome_elf_unittests_exe',
      ],
    },
  ], # targets
  ##----------------------------------------------------------------------------
  ## conditionals
  ##----------------------------------------------------------------------------
  'conditions': [
    ['test_isolation_mode != "noop"', {
      'targets': [
        {
          'target_name': 'chrome_elf_unittests_run',
          'type': 'none',
          'dependencies': [
            'chrome_elf_unittests',
          ],
          'includes': [ '../build/isolate.gypi' ],
          'sources': [ 'chrome_elf_unittests.isolate' ],
        },
      ],
    }],
  ],
}
