| Index: chrome/installer/mini_installer/BUILD.gn
 | 
| diff --git a/chrome/installer/mini_installer/BUILD.gn b/chrome/installer/mini_installer/BUILD.gn
 | 
| index 8f8cb406fb7a16dee6a0727b3525d83acc2aa740..a5f9c71081dfc568542f1b0b62d6d8c55f048cf5 100644
 | 
| --- a/chrome/installer/mini_installer/BUILD.gn
 | 
| +++ b/chrome/installer/mini_installer/BUILD.gn
 | 
| @@ -2,8 +2,10 @@
 | 
|  # Use of this source code is governed by a BSD-style license that can be
 | 
|  # found in the LICENSE file.
 | 
|  
 | 
| +import("//build/config/compiler/compiler.gni")
 | 
|  import("//build/config/features.gni")
 | 
|  import("//build/config/ui.gni")
 | 
| +import("//build/config/win/visual_studio_version.gni")
 | 
|  import("//build_overrides/v8.gni")
 | 
|  import("//chrome/test/mini_installer/mini_installer_test.gni")
 | 
|  import("//chrome/version.gni")
 | 
| @@ -72,8 +74,6 @@ source_set("unit_tests") {
 | 
|    ]
 | 
|  }
 | 
|  
 | 
| -packed_files_rc_file = "$target_gen_dir/packed_files.rc"
 | 
| -
 | 
|  # The runtime deps are used to tell create_installer_archive what component
 | 
|  # DLLs need to be packaged in a component build.
 | 
|  chrome_runtime_deps = "$root_gen_dir/chrome_component.runtime_deps"
 | 
| @@ -93,145 +93,176 @@ group("setup_runtime_deps") {
 | 
|    ]
 | 
|  }
 | 
|  
 | 
| -action("archive") {
 | 
| -  script = "//chrome/tools/build/win/create_installer_archive.py"
 | 
| +# Generates a mini installer.
 | 
| +#
 | 
| +#   out_dir (required)
 | 
| +#     The output directory out_dir where the mini_installer image should be
 | 
| +#     written.
 | 
| +#
 | 
| +#   deps (required)
 | 
| +#     Normal meaning.
 | 
| +template("generate_mini_installer") {
 | 
| +  custom_deps = invoker.deps
 | 
| +  output_dir = invoker.out_dir
 | 
|  
 | 
| -  release_file = "chrome.release"
 | 
| +  packed_files_rc_file = "$target_gen_dir/$target_name/packed_files.rc"
 | 
| +  archive_name = target_name + "_archive"
 | 
| +  staging_dir = "$target_gen_dir/$target_name"
 | 
|  
 | 
| -  inputs = [
 | 
| -    "$root_out_dir/chrome.exe",
 | 
| -    "$root_out_dir/chrome.dll",
 | 
| -    "$root_out_dir/locales/en-US.pak",
 | 
| -    "$root_out_dir/setup.exe",
 | 
| -    release_file,
 | 
| -  ]
 | 
| +  action(archive_name) {
 | 
| +    script = "//chrome/tools/build/win/create_installer_archive.py"
 | 
|  
 | 
| -  outputs = [
 | 
| -    # See also chrome.packed.7z conditionally added below.
 | 
| -    "$root_out_dir/chrome.7z",
 | 
| -    "$root_out_dir/setup.ex_",
 | 
| -    packed_files_rc_file,
 | 
| -  ]
 | 
| -  args = [
 | 
| -    "--build_dir",
 | 
| -    rebase_path(root_out_dir, root_build_dir),
 | 
| -    "--staging_dir",
 | 
| -    rebase_path(root_gen_dir, root_build_dir),
 | 
| -    "--input_file",
 | 
| -    rebase_path(release_file, root_build_dir),
 | 
| -    "--resource_file_path",
 | 
| -    rebase_path(packed_files_rc_file, root_build_dir),
 | 
| -    "--target_arch=$current_cpu",
 | 
| -    "--distribution=_google_chrome",
 | 
| -    "--chrome_runtime_deps",
 | 
| -    rebase_path(chrome_runtime_deps, root_build_dir),
 | 
| -    "--setup_runtime_deps",
 | 
| -    rebase_path(setup_runtime_deps, root_build_dir),
 | 
| -
 | 
| -    # Optional arguments to generate diff installer.
 | 
| -    #'--last_chrome_installer=C:/Temp/base',
 | 
| -    #'--setup_exe_format=DIFF',
 | 
| -    #'--diff_algorithm=COURGETTE',
 | 
| -
 | 
| -    # Optional argument for verbose archiving output.
 | 
| -    #'--verbose',
 | 
| -  ]
 | 
| +    release_file = "chrome.release"
 | 
|  
 | 
| -  deps = [
 | 
| -    ":chrome_runtime_deps",
 | 
| -    ":setup_runtime_deps",
 | 
| -    "//chrome",
 | 
| -    "//chrome:main_dll",
 | 
| -    "//chrome/browser/extensions/default_extensions",
 | 
| -    "//chrome/installer/setup",
 | 
| -    "//third_party/icu:icudata",
 | 
| -  ]
 | 
| +    inputs = [
 | 
| +      "$output_dir/chrome.dll",
 | 
| +      "$root_out_dir/chrome.exe",
 | 
| +      "$root_out_dir/locales/en-US.pak",
 | 
| +      "$root_out_dir/setup.exe",
 | 
| +      release_file,
 | 
| +    ]
 | 
|  
 | 
| -  if (enable_hidpi) {
 | 
| -    args += [ "--enable_hidpi=1" ]
 | 
| -  }
 | 
| -  if (is_component_build) {
 | 
| -    args += [ "--component_build=1" ]
 | 
| -  } else {
 | 
| -    outputs += [ "$root_out_dir/chrome.packed.7z" ]
 | 
| -  }
 | 
| +    outputs = [
 | 
| +      # See also chrome.packed.7z conditionally added below.
 | 
| +      "$output_dir/chrome.7z",
 | 
| +      "$output_dir/setup.ex_",
 | 
| +      packed_files_rc_file,
 | 
| +    ]
 | 
| +    args = [
 | 
| +      "--build_dir",
 | 
| +      rebase_path(root_out_dir, root_build_dir),
 | 
| +      "--staging_dir",
 | 
| +      rebase_path(staging_dir, root_build_dir),
 | 
| +      "--input_file",
 | 
| +      rebase_path(release_file, root_build_dir),
 | 
| +      "--resource_file_path",
 | 
| +      rebase_path(packed_files_rc_file, root_build_dir),
 | 
| +      "--target_arch=$current_cpu",
 | 
| +      "--distribution=_google_chrome",
 | 
| +      "--output_dir",
 | 
| +      rebase_path(output_dir, root_build_dir),
 | 
| +      "--chrome_runtime_deps",
 | 
| +      rebase_path(chrome_runtime_deps, root_build_dir),
 | 
| +      "--setup_runtime_deps",
 | 
| +      rebase_path(setup_runtime_deps, root_build_dir),
 | 
| +
 | 
| +      # Optional arguments to generate diff installer.
 | 
| +      #'--last_chrome_installer=C:/Temp/base',
 | 
| +      #'--setup_exe_format=DIFF',
 | 
| +      #'--diff_algorithm=COURGETTE',
 | 
| +
 | 
| +      # Optional argument for verbose archiving output.
 | 
| +      #'--verbose',
 | 
| +    ]
 | 
| +
 | 
| +    deps = custom_deps + [
 | 
| +             ":chrome_runtime_deps",
 | 
| +             ":setup_runtime_deps",
 | 
| +             "//chrome",
 | 
| +             "//chrome/browser/extensions/default_extensions",
 | 
| +             "//chrome/installer/setup",
 | 
| +             "//third_party/icu:icudata",
 | 
| +           ]
 | 
| +
 | 
| +    if (enable_hidpi) {
 | 
| +      args += [ "--enable_hidpi=1" ]
 | 
| +    }
 | 
| +    if (is_component_build) {
 | 
| +      args += [ "--component_build=1" ]
 | 
| +    } else {
 | 
| +      outputs += [ "$output_dir/chrome.packed.7z" ]
 | 
| +    }
 | 
| +
 | 
| +    if (enable_nacl) {
 | 
| +      inputs += [ "$root_out_dir/nacl_irt_x86_64.nexe" ]
 | 
| +      deps += [ "//ppapi/native_client:irt" ]
 | 
| +      if (current_cpu == "x86") {
 | 
| +        inputs += [
 | 
| +          "$root_out_dir/nacl64.exe",
 | 
| +          "$root_out_dir/nacl_irt_x86_32.nexe",
 | 
| +        ]
 | 
| +        deps += [ "//components/nacl/broker:nacl64" ]
 | 
| +      }
 | 
| +    }
 | 
| +
 | 
| +    if (icu_use_data_file) {
 | 
| +      inputs += [ "$root_out_dir/icudtl.dat" ]
 | 
| +    } else {
 | 
| +      inputs += [ "$root_out_dir/icudt.dll" ]
 | 
| +    }
 | 
|  
 | 
| -  if (enable_nacl) {
 | 
| -    inputs += [ "$root_out_dir/nacl_irt_x86_64.nexe" ]
 | 
| -    deps += [ "//ppapi/native_client:irt" ]
 | 
| -    if (current_cpu == "x86") {
 | 
| +    if (v8_use_external_startup_data) {
 | 
|        inputs += [
 | 
| -        "$root_out_dir/nacl64.exe",
 | 
| -        "$root_out_dir/nacl_irt_x86_32.nexe",
 | 
| +        "$root_out_dir/natives_blob.bin",
 | 
| +        "$root_out_dir/snapshot_blob.bin",
 | 
|        ]
 | 
| -      deps += [ "//components/nacl/broker:nacl64" ]
 | 
| +      deps += [ "//v8" ]
 | 
|      }
 | 
| -  }
 | 
| -
 | 
| -  if (icu_use_data_file) {
 | 
| -    inputs += [ "$root_out_dir/icudtl.dat" ]
 | 
| -  } else {
 | 
| -    inputs += [ "$root_out_dir/icudt.dll" ]
 | 
| -  }
 | 
|  
 | 
| -  if (v8_use_external_startup_data) {
 | 
| -    inputs += [
 | 
| -      "$root_out_dir/natives_blob.bin",
 | 
| -      "$root_out_dir/snapshot_blob.bin",
 | 
| +    depfile = "$target_gen_dir/archive.d"
 | 
| +    args += [
 | 
| +      "--depfile",
 | 
| +      rebase_path(depfile, root_build_dir),
 | 
|      ]
 | 
| -    deps += [ "//v8" ]
 | 
|    }
 | 
|  
 | 
| -  depfile = "$target_gen_dir/archive.d"
 | 
| -  args += [
 | 
| -    "--depfile",
 | 
| -    rebase_path(depfile, root_build_dir),
 | 
| -  ]
 | 
| -}
 | 
| +  executable(target_name) {
 | 
| +    output_name = "mini_installer"
 | 
| +    sources = [
 | 
| +      "mini_installer.cc",
 | 
| +      packed_files_rc_file,
 | 
| +    ]
 | 
|  
 | 
| -executable("mini_installer") {
 | 
| -  sources = [
 | 
| -    "mini_installer.cc",
 | 
| -    packed_files_rc_file,
 | 
| -  ]
 | 
| +    # This target is special so we manually override most linker flags and
 | 
| +    # specify our own to keep the size down. Also make sure that we don't use
 | 
| +    # WPO as it's not supported by the mini installer.
 | 
| +    configs -= [
 | 
| +      "//build/config/compiler:default_optimization",
 | 
| +      "//build/config:executable_config",
 | 
| +      "//build/config/win:console",
 | 
| +    ]
 | 
| +    configs += [
 | 
| +      ":mini_installer_compiler_flags",
 | 
| +      "//build/config/compiler:optimize_no_wpo",
 | 
| +      "//build/config/win:sdk_link",
 | 
| +      "//build/config/win:windowed",
 | 
| +    ]
 | 
|  
 | 
| -  # This target is special so we manually override most linker flags and
 | 
| -  # specify our own to keep the size down. Also make sure that we don't use
 | 
| -  # WPO as it's not supported by the mini installer.
 | 
| -  configs -= [
 | 
| -    "//build/config/compiler:default_optimization",
 | 
| -    "//build/config:executable_config",
 | 
| -    "//build/config/win:console",
 | 
| -  ]
 | 
| -  configs += [
 | 
| -    ":mini_installer_compiler_flags",
 | 
| -    "//build/config/win:sdk_link",
 | 
| -    "//build/config/win:windowed",
 | 
| -  ]
 | 
| -  if (!is_debug) {
 | 
| -    configs += [ "//build/config/compiler:optimize_no_wpo" ]
 | 
| -  } else {
 | 
| -    configs += [ "//build/config/compiler:no_optimize" ]
 | 
| -  }
 | 
| +    ldflags = [
 | 
| +      "/ENTRY:MainEntryPoint",
 | 
| +      "/FIXED:NO",
 | 
| +      "/ignore:4199",
 | 
| +      "/NXCOMPAT",
 | 
| +    ]
 | 
|  
 | 
| -  ldflags = [
 | 
| -    "/ENTRY:MainEntryPoint",
 | 
| -    "/FIXED:NO",
 | 
| -    "/ignore:4199",
 | 
| -    "/NXCOMPAT",
 | 
| -  ]
 | 
| +    libs = [ "setupapi.lib" ]
 | 
|  
 | 
| -  libs = [ "setupapi.lib" ]
 | 
| +    deps = [
 | 
| +      ":$archive_name",
 | 
| +      ":lib",
 | 
| +      ":version",
 | 
| +      "//build/config/sanitizers:deps",
 | 
| +      "//build/win:default_exe_manifest",
 | 
| +    ]
 | 
| +  }
 | 
| +}
 | 
|  
 | 
| +generate_mini_installer("mini_installer") {
 | 
| +  out_dir = root_out_dir
 | 
|    deps = [
 | 
| -    ":archive",
 | 
| -    ":lib",
 | 
| -    ":version",
 | 
| -    "//build/config/sanitizers:deps",
 | 
| -    "//build/win:default_exe_manifest",
 | 
| +    "//chrome:main_dll",
 | 
|    ]
 | 
|  }
 | 
|  
 | 
| +if (syzygy_optimize) {
 | 
| +  generate_mini_installer("mini_installer_syzygy") {
 | 
| +    out_dir = "$root_out_dir/syzygy/"
 | 
| +    deps = [
 | 
| +      "//chrome/tools/build/win/syzygy:chrome_dll_syzygy",
 | 
| +    ]
 | 
| +  }
 | 
| +}
 | 
| +
 | 
|  # next_version_mini_installer.exe can't be generated in an x86 Debug component
 | 
|  # build because it requires too much memory.
 | 
|  if (!(is_component_build && is_debug && target_cpu == "x86")) {
 | 
| 
 |