mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-24 22:36:09 +03:00
321 lines
8.7 KiB
Plaintext
321 lines
8.7 KiB
Plaintext
|
# Copyright 2015 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.
|
||
|
|
||
|
import("//build/config/compiler/compiler.gni")
|
||
|
import("//build/config/features.gni")
|
||
|
import("//build/config/ui.gni")
|
||
|
import("//chrome/process_version_rc_template.gni")
|
||
|
import("//components/nacl/features.gni")
|
||
|
import("//third_party/icu/config.gni")
|
||
|
import("//tools/v8_context_snapshot/v8_context_snapshot.gni")
|
||
|
import("//ui/base/ui_features.gni")
|
||
|
import("//v8/gni/v8.gni")
|
||
|
|
||
|
declare_args() {
|
||
|
# The Chrome archive is compressed in official builds to reduce the size of
|
||
|
# the installer. By default: non-official or component builds, a build mode
|
||
|
# targeting developers, do not compress so as to provide quicker build-test
|
||
|
# cycles.
|
||
|
skip_archive_compression = !is_official_build || is_component_build
|
||
|
}
|
||
|
|
||
|
config("mini_installer_compiler_flags") {
|
||
|
# Disable buffer security checking.
|
||
|
cflags = [ "/GS-" ]
|
||
|
}
|
||
|
|
||
|
source_set("lib") {
|
||
|
sources = [
|
||
|
"appid.h",
|
||
|
"chrome.release",
|
||
|
"chrome_appid.cc",
|
||
|
"configuration.cc",
|
||
|
"configuration.h",
|
||
|
"decompress.cc",
|
||
|
"decompress.h",
|
||
|
"mini_installer.cc",
|
||
|
"mini_installer.h",
|
||
|
"mini_installer.rc",
|
||
|
"mini_installer_constants.cc",
|
||
|
"mini_installer_constants.h",
|
||
|
"mini_installer_resource.h",
|
||
|
"mini_string.cc",
|
||
|
"mini_string.h",
|
||
|
"pe_resource.cc",
|
||
|
"pe_resource.h",
|
||
|
"regkey.cc",
|
||
|
"regkey.h",
|
||
|
]
|
||
|
|
||
|
if (skip_archive_compression) {
|
||
|
defines = [ "SKIP_ARCHIVE_COMPRESSION" ]
|
||
|
}
|
||
|
|
||
|
configs += [ ":mini_installer_compiler_flags" ]
|
||
|
}
|
||
|
|
||
|
process_version_rc_template("version") {
|
||
|
template_file = "mini_installer_exe_version.rc.version"
|
||
|
output = "$root_out_dir/mini_installer_exe_version.rc"
|
||
|
}
|
||
|
|
||
|
source_set("unit_tests") {
|
||
|
testonly = true
|
||
|
|
||
|
sources = [
|
||
|
"configuration_test.cc",
|
||
|
"decompress_test.cc",
|
||
|
"mini_installer_unittest.cc",
|
||
|
"mini_string_test.cc",
|
||
|
]
|
||
|
|
||
|
public_deps = [
|
||
|
":lib",
|
||
|
]
|
||
|
deps = [
|
||
|
"//base",
|
||
|
"//base/test:test_support",
|
||
|
"//chrome/install_static:install_static_util",
|
||
|
"//chrome/installer/util:with_no_strings",
|
||
|
"//testing/gtest",
|
||
|
]
|
||
|
}
|
||
|
|
||
|
# 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"
|
||
|
setup_runtime_deps = "$root_gen_dir/setup.runtime_deps"
|
||
|
|
||
|
group("chrome_runtime_deps") {
|
||
|
write_runtime_deps = chrome_runtime_deps
|
||
|
data_deps = [
|
||
|
"//chrome",
|
||
|
]
|
||
|
}
|
||
|
|
||
|
group("setup_runtime_deps") {
|
||
|
write_runtime_deps = setup_runtime_deps
|
||
|
data_deps = [
|
||
|
"//chrome/installer/setup",
|
||
|
]
|
||
|
}
|
||
|
|
||
|
# Generates a mini installer.
|
||
|
#
|
||
|
# out_dir (required)
|
||
|
# The output directory out_dir where the mini_installer image should be
|
||
|
# written.
|
||
|
#
|
||
|
# chrome_dll_file (required)
|
||
|
# The path to the version of chrome.dll that should be included in the
|
||
|
# installer archive.
|
||
|
#
|
||
|
# chrome_dll_target (required)
|
||
|
# The target that generated chrome_dll_file.
|
||
|
#
|
||
|
# deps (required)
|
||
|
# Normal meaning.
|
||
|
template("generate_mini_installer") {
|
||
|
chrome_dll_file = invoker.chrome_dll_file
|
||
|
chrome_dll_target = invoker.chrome_dll_target
|
||
|
output_dir = invoker.out_dir
|
||
|
|
||
|
packed_files_rc_file = "$target_gen_dir/$target_name/packed_files.rc"
|
||
|
archive_name = target_name + "_archive"
|
||
|
staging_dir = "$target_gen_dir/$target_name"
|
||
|
|
||
|
action(archive_name) {
|
||
|
script = "//chrome/tools/build/win/create_installer_archive.py"
|
||
|
|
||
|
release_file = "chrome.release"
|
||
|
|
||
|
inputs = [
|
||
|
"$chrome_dll_file",
|
||
|
"$root_out_dir/chrome.exe",
|
||
|
"$root_out_dir/locales/en-US.pak",
|
||
|
"$root_out_dir/setup.exe",
|
||
|
"//chrome/tools/build/win/makecab.py",
|
||
|
release_file,
|
||
|
]
|
||
|
|
||
|
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 = [
|
||
|
":chrome_runtime_deps",
|
||
|
":setup_runtime_deps",
|
||
|
"//chrome",
|
||
|
"//chrome/browser/extensions/default_extensions",
|
||
|
"//chrome/installer/setup",
|
||
|
"//third_party/icu:icudata",
|
||
|
chrome_dll_target,
|
||
|
]
|
||
|
|
||
|
if (enable_hidpi) {
|
||
|
args += [ "--enable_hidpi=1" ]
|
||
|
}
|
||
|
if (is_component_build) {
|
||
|
args += [ "--component_build=1" ]
|
||
|
}
|
||
|
|
||
|
if (skip_archive_compression) {
|
||
|
args += [ "--skip_archive_compression" ]
|
||
|
} 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 (v8_use_external_startup_data) {
|
||
|
inputs += [ "$root_out_dir/natives_blob.bin" ]
|
||
|
deps += [ "//v8" ]
|
||
|
if (use_v8_context_snapshot) {
|
||
|
inputs += [ "$root_out_dir/v8_context_snapshot.bin" ]
|
||
|
deps += [ "//tools/v8_context_snapshot" ]
|
||
|
} else {
|
||
|
inputs += [ "$root_out_dir/snapshot_blob.bin" ]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
depfile = "$target_gen_dir/archive.d"
|
||
|
args += [
|
||
|
"--depfile",
|
||
|
rebase_path(depfile, root_build_dir),
|
||
|
]
|
||
|
}
|
||
|
|
||
|
executable(target_name) {
|
||
|
output_name = "mini_installer"
|
||
|
sources = [
|
||
|
"mini_installer_exe_main.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/sanitizers:link_executable",
|
||
|
"//build/config/win:sdk_link",
|
||
|
"//build/config/win:windowed",
|
||
|
]
|
||
|
|
||
|
ldflags = [
|
||
|
"/FIXED:NO",
|
||
|
"/ignore:4199",
|
||
|
"/NXCOMPAT",
|
||
|
]
|
||
|
|
||
|
libs = [ "setupapi.lib" ]
|
||
|
|
||
|
deps = [
|
||
|
":$archive_name",
|
||
|
":lib",
|
||
|
":version",
|
||
|
"//build/win:default_exe_manifest",
|
||
|
]
|
||
|
|
||
|
# In general, mini_installer tries to avoid depending on the C++ standard
|
||
|
# library for size reasons. This is achieved by:
|
||
|
# 1. setting a custom entry point which avoids pulling in the standard
|
||
|
# library via a link dependency.
|
||
|
# 2. setting no_default_deps=true to avoid including the implicit
|
||
|
# dependency on //buildtools/third_party/libc++ in builds that set
|
||
|
# use_custom_libcxx=true.
|
||
|
#
|
||
|
# But in asan builds we need to link against the asan runtime library, which
|
||
|
# in turn depends on the standard library and relies on it to run
|
||
|
# initializers.
|
||
|
if (!is_asan) {
|
||
|
no_default_deps = true
|
||
|
ldflags += [ "/ENTRY:MainEntryPoint" ]
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
generate_mini_installer("mini_installer") {
|
||
|
out_dir = root_out_dir
|
||
|
chrome_dll_file = "$root_out_dir/chrome.dll"
|
||
|
chrome_dll_target = "//chrome:main_dll"
|
||
|
}
|
||
|
|
||
|
# previous_version_mini_installer.exe can't be generated in an x86 Debug
|
||
|
# component build because it requires too much memory.
|
||
|
# TODO(thakis): Enable this in cross builds, https://crbug.com/799827
|
||
|
if (!(is_component_build && is_debug && target_cpu == "x86") &&
|
||
|
host_os == "win") {
|
||
|
action("previous_version_mini_installer") {
|
||
|
script = "generate_previous_version_mini_installer.py"
|
||
|
testonly = true
|
||
|
inputs = [
|
||
|
"$root_out_dir/alternate_version_generator.exe",
|
||
|
"$root_out_dir/mini_installer.exe",
|
||
|
]
|
||
|
outputs = [
|
||
|
"$root_out_dir/$target_name.exe",
|
||
|
]
|
||
|
args = [
|
||
|
"--out",
|
||
|
"$target_name.exe",
|
||
|
]
|
||
|
deps = [
|
||
|
":mini_installer",
|
||
|
"//chrome/installer/test:alternate_version_generator",
|
||
|
]
|
||
|
}
|
||
|
}
|