{
  'variables': {
    'version_py': '../../chrome/tools/build/version.py',
    'version_path': '../../chrome/VERSION',
    'lastchange_path': '<(DEPTH)/build/util/LASTCHANGE',
    # 'branding_dir' is set in the 'conditions' section at the bottom.
    'msvs_use_common_release': 0,
    'msvs_use_common_linker_extras': 0,
    'mini_installer_internal_deps%': 0,
    'mini_installer_official_deps%': 0,
  },
  'includes': [
    '../../build/win_precompile.gypi',
  ],
  'conditions': [
    ['OS=="win"', {
      'targets': [
        {
          'target_name': 'mini_installer',
          'type': 'executable',

          'dependencies': [
            '../chrome.gyp:chrome',
            '../chrome.gyp:chrome_nacl_win64',
            '../chrome.gyp:chrome_dll',
            '../chrome.gyp:default_extensions',
            '../chrome.gyp:setup',
          ],
          'include_dirs': [
            '../..',
            '<(INTERMEDIATE_DIR)',
            '<(SHARED_INTERMEDIATE_DIR)/chrome',
          ],
          'sources': [
            'mini_installer/appid.h',
            'mini_installer/chrome.release',
            'mini_installer/chrome_appid.cc',
            'mini_installer/configuration.cc',
            'mini_installer/configuration.h',
            'mini_installer/decompress.cc',
            'mini_installer/decompress.h',
            'mini_installer/mini_installer.cc',
            'mini_installer/mini_installer.h',
            'mini_installer/mini_installer.ico',
            'mini_installer/mini_installer.rc',
            'mini_installer/mini_installer_exe_version.rc.version',
            'mini_installer/mini_installer_resource.h',
            'mini_installer/mini_string.cc',
            'mini_installer/mini_string.h',
            'mini_installer/pe_resource.cc',
            'mini_installer/pe_resource.h',
            '<(INTERMEDIATE_DIR)/packed_files.rc',
          ],
          'msvs_settings': {
            'VCCLCompilerTool': {
              'EnableIntrinsicFunctions': 'true',
              'BufferSecurityCheck': 'false',
              'BasicRuntimeChecks': '0',
              'ExceptionHandling': '0',
            },
            'VCLinkerTool': {
              'RandomizedBaseAddress': '1',
              'DataExecutionPrevention': '0',
              'AdditionalLibraryDirectories': [
                '<(PRODUCT_DIR)/lib'
              ],
              'DelayLoadDLLs': [],
              'EntryPointSymbol': 'MainEntryPoint',
              'IgnoreAllDefaultLibraries': 'true',
              'OptimizeForWindows98': '1',
              'SubSystem': '2',     # Set /SUBSYSTEM:WINDOWS
              'AdditionalDependencies': [
                'shlwapi.lib',
                'setupapi.lib',
              ],
            },
            'VCManifestTool': {
              'AdditionalManifestFiles': [
                '$(ProjectDir)\\mini_installer\\mini_installer.exe.manifest',
              ],
            },
          },
          'configurations': {
            'Debug_Base': {
              'msvs_settings': {
                'VCCLCompilerTool': {
                  'BasicRuntimeChecks': '0',
                  'BufferSecurityCheck': 'false',
                  'ExceptionHandling': '0',
                },
                'VCLinkerTool': {
                  'SubSystem': '2',     # Set /SUBSYSTEM:WINDOWS
                  'AdditionalOptions': [
                    '/safeseh:no',
                    '/dynamicbase:no',
                    '/ignore:4199',
                    '/ignore:4221',
                    '/nxcompat',
                  ],
                },
              },
            },
            'Release_Base': {
              'includes': ['../../build/internal/release_defaults.gypi'],
              'msvs_settings': {
                'VCCLCompilerTool': {
                  'EnableIntrinsicFunctions': 'true',
                  'BasicRuntimeChecks': '0',
                  'BufferSecurityCheck': 'false',
                  'ExceptionHandling': '0',
                },
                'VCLinkerTool': {
                  'SubSystem': '2',     # Set /SUBSYSTEM:WINDOWS
                  'Profile': 'false',   # Conflicts with /FIXED
                  'AdditionalOptions': [
                    '/SAFESEH:NO',
                    '/NXCOMPAT',
                    '/DYNAMICBASE:NO',
                    '/FIXED',
                  ],
                },
              },
            },
          },

          # Disable precompiled headers for this project, to avoid
          # linker errors when building with VS 2008.
          'msvs_precompiled_header': '',
          'msvs_precompiled_source': '',

          # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
          'msvs_disabled_warnings': [ 4267, ],

          'variables': {
            # Opt out the common compatibility manifest to work around
            # crbug.com/272660.
            # TODO(yukawa): Enable the common compatibility manifest again.
            'win_exe_compatibility_manifest': '',
          },
          'rules': [
            {
              'rule_name': 'mini_installer_version',
              'extension': 'version',
              'variables': {
                'template_input_path': 'mini_installer/mini_installer_exe_version.rc.version',
              },
              'inputs': [
                '<(template_input_path)',
                '<(version_path)',
                '<(lastchange_path)',
                '<(branding_dir)/BRANDING',
              ],
              'outputs': [
                '<(PRODUCT_DIR)/mini_installer_exe_version.rc',
              ],
              'action': [
                'python', '<(version_py)',
                '-f', '<(version_path)',
                '-f', '<(lastchange_path)',
                '-f', '<(branding_dir)/BRANDING',
                '<(template_input_path)',
                '<@(_outputs)',
              ],
              'process_outputs_as_sources': 1,
              'message': 'Generating version information'
            },
            {
              'rule_name': 'installer_archive',
              'extension': 'release',
              'variables': {
                'create_installer_archive_py_path':
                  '../tools/build/win/create_installer_archive.py',
              },
              'conditions': [
                ['enable_hidpi == 1', {
                  'variables': {
                    'enable_hidpi_flag': '--enable_hidpi=1',
                  },
                }, {
                  'variables': {
                    'enable_hidpi_flag': '',
                  },
                }],
                ['enable_touch_ui == 1', {
                  'variables': {
                    'enable_touch_ui_flag': '--enable_touch_ui=1',
                  },
                }, {
                  'variables': {
                    'enable_touch_ui_flag': '',
                  },
                }],
                ['component == "shared_library"', {
                  'variables': {
                    'component_build_flag': '--component_build=1',
                  },
                }, {
                  'variables': {
                    'component_build_flag': '',
                  },
                  'outputs': [
                    '<(PRODUCT_DIR)/<(RULE_INPUT_NAME).packed.7z',
                  ],
                }],
                ['disable_nacl==1', {
                  'inputs!': [
                    '<(PRODUCT_DIR)/nacl64.exe',
                    '<(PRODUCT_DIR)/ppGoogleNaClPluginChrome.dll',
                    '<(PRODUCT_DIR)/nacl_irt_x86_32.nexe',
                    '<(PRODUCT_DIR)/nacl_irt_x86_64.nexe',
                  ],
                }],
                ['target_arch=="x64"', {
                  'inputs!': [
                    '<(PRODUCT_DIR)/nacl64.exe',
                    '<(PRODUCT_DIR)/nacl_irt_x86_32.nexe',
                  ],
                  'variables': {
                    'target_arch_flag': '--target_arch=x64',
                  },
                }, {
                  'variables': {
                    'target_arch_flag': '--target_arch=x86',
                  },
                }],
              ],
              'inputs': [
                '<(create_installer_archive_py_path)',
                '<(PRODUCT_DIR)/chrome.exe',
                '<(PRODUCT_DIR)/chrome.dll',
                '<(PRODUCT_DIR)/nacl64.exe',
                '<(PRODUCT_DIR)/ppGoogleNaClPluginChrome.dll',
                '<(PRODUCT_DIR)/nacl_irt_x86_32.nexe',
                '<(PRODUCT_DIR)/nacl_irt_x86_64.nexe',
                '<(PRODUCT_DIR)/locales/en-US.pak',
                '<(PRODUCT_DIR)/icudt.dll',
              ],
              'outputs': [
                # Also note that chrome.packed.7z is defined as an output in a
                # conditional above.
                'xxx2.out',
                '<(PRODUCT_DIR)/<(RULE_INPUT_NAME).7z',
                '<(PRODUCT_DIR)/setup.ex_',
                '<(INTERMEDIATE_DIR)/packed_files.rc',
              ],
              'action': [
                'python',
                '<(create_installer_archive_py_path)',
                '--build_dir', '<(PRODUCT_DIR)',
                '--staging_dir', '<(INTERMEDIATE_DIR)',
                '--input_file', '<(RULE_INPUT_PATH)',
                '--resource_file_path', '<(INTERMEDIATE_DIR)/packed_files.rc',
                '<(enable_hidpi_flag)',
                '<(enable_touch_ui_flag)',
                '<(component_build_flag)',
                '<(target_arch_flag)',
                # TODO(sgk):  may just use environment variables
                #'--distribution=$(CHROMIUM_BUILD)',
                '--distribution=_google_chrome',
                # Optional arguments to generate diff installer
                #'--last_chrome_installer=C:/Temp/base',
                #'--setup_exe_format=DIFF',
                #'--diff_algorithm=COURGETTE',
              ],
              'message': 'Create installer archive',
              'msvs_cygwin_shell': 1,
            },
          ],
          # TODO(mark):  <(branding_dir) should be defined by the
          # global condition block at the bottom of the file, but
          # this doesn't work due to the following issue:
          #
          #   http://code.google.com/p/gyp/issues/detail?id=22
          #
          # Remove this block once the above issue is fixed.
          'conditions': [
            [ 'branding == "Chrome"', {
              'variables': {
                 'branding_dir': '../app/theme/google_chrome',
              },
            }, { # else branding!="Chrome"
              'variables': {
                 'branding_dir': '../app/theme/chromium',
              },
            }],
          ],
        },
      ],
      'conditions': [
        ['test_isolation_mode != "noop"', {
          'targets': [
            {
              'target_name': 'mini_installer_tests_run',
              'type': 'none',
              'dependencies': [
                'mini_installer',
              ],
              'includes': [
                '../../build/isolate.gypi',
                'mini_installer_tests.isolate',
              ],
              'sources': [
                'mini_installer_tests.isolate',
              ],
            },
          ],
        }],
      ],
    }],
    [ 'branding == "Chrome"', {
      'variables': {
         'branding_dir': '../app/theme/google_chrome',
      },
    }, { # else branding!="Chrome"
      'variables': {
         'branding_dir': '../app/theme/chromium',
      },
    }],
  ],
}