# 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/win/manifest.gni") import("//chrome/version.gni") import("//testing/test.gni") process_version("chrome_elf_resources") { template_file = chrome_version_rc_template sources = [ "chrome_elf.ver", ] output = "$target_gen_dir/chrome_elf_version.rc" } # This manifest matches what GYP produces. It may not even be necessary. windows_manifest("chrome_elf_manifest") { sources = [ as_invoker_manifest, ] type = "dll" } shared_library("chrome_elf") { sources = [ "chrome_elf_main.cc", "chrome_elf_main.h", ] deps = [ ":blacklist", ":breakpad", ":chrome_elf_manifest", ":lib", ":chrome_elf_resources", "//build/config/sanitizers:deps", ] configs += [ "//build/config/win:windowed" ] configs -= [ "//build/config/win:console" ] ldflags = [ "/NODEFAULTLIB:user32.lib", "/DEF:" + rebase_path("chrome_elf.def"), ] if (current_cpu == "x86") { # Don"t set an x64 base address (to avoid breaking HE-ASLR). ldflags += [ "/BASE:0x01c20000" ] } } source_set("lib") { sources = [ "create_file/chrome_create_file.cc", "create_file/chrome_create_file.h", "ntdll_cache.cc", "ntdll_cache.h", ] deps = [ ":common", "//base:base_static", "//sandbox", ] } source_set("constants") { sources = [ "chrome_elf_constants.cc", "chrome_elf_constants.h", ] } source_set("common") { deps = [ ":constants", ] sources = [ "chrome_elf_types.h", "chrome_elf_util.cc", "chrome_elf_util.h", "thunk_getter.cc", "thunk_getter.h", ] } source_set("breakpad") { include_dirs = [ "$target_gen_dir" ] sources = [ "breakpad.cc", "breakpad.h", ] deps = [ ":common", "//breakpad:breakpad_handler", "//chrome/common:version_header", ] } if (is_component_build) { shared_library("chrome_redirects") { sources = [ "chrome_redirects_main.cc", ] deps = [ ":lib", "//build/config/sanitizers:deps", ] configs += [ "//build/config/win:windowed" ] ldflags = [ "/DEF:" + rebase_path("chrome_redirects.def") ] if (current_cpu == "x86") { # Don't set an x64 base address (to avoid breaking HE-ASLR). ldflags += [ "/BASE:0x01c20000" ] } } } source_set("dll_hash") { deps = [ "//base", ] sources = [ "dll_hash/dll_hash.cc", "dll_hash/dll_hash.h", ] } executable("dll_hash_main") { sources = [ "dll_hash/dll_hash_main.cc", ] deps = [ ":dll_hash", "//build/config/sanitizers:deps", ] } static_library("blacklist") { sources = [ "blacklist/blacklist.cc", "blacklist/blacklist.h", "blacklist/blacklist_interceptions.cc", "blacklist/blacklist_interceptions.h", ] deps = [ # Depend on base_static, but do NOT take a dependency on base.gyp:base # as that would risk pulling in base's link-time dependencies which # chrome_elf cannot do. ":breakpad", ":constants", "//base:base_static", "//sandbox:sandbox", ] } test("chrome_elf_unittests") { output_name = "chrome_elf_unittests" sources = [ "blacklist/test/blacklist_test.cc", "chrome_elf_util_unittest.cc", "create_file/chrome_create_file_unittest.cc", "elf_imports_unittest.cc", "ntdll_cache_unittest.cc", ] include_dirs = [ "$target_gen_dir" ] deps = [ ":blacklist", ":blacklist_test_main_dll", ":lib", "//base", "//base/test:run_all_unittests", "//base/test:test_support", "//sandbox", "//testing/gtest", ] data_deps = [ ":blacklist_test_dll_1", ":blacklist_test_dll_2", ":blacklist_test_dll_3", ":chrome_elf", "//chrome", ] } shared_library("blacklist_test_main_dll") { sources = [ "blacklist/test/blacklist_test_main_dll.cc", ] deps = [ ":blacklist", "//base", "//build/config/sanitizers:deps", ] ldflags = [ "/DEF:" + rebase_path("blacklist/test/blacklist_test_main_dll.def", root_build_dir) ] } shared_library("blacklist_test_dll_1") { sources = [ "blacklist/test/blacklist_test_dll_1.cc", ] ldflags = [ "/DEF:" + rebase_path("blacklist/test/blacklist_test_dll_1.def", root_build_dir) ] deps = [ "//build/config/sanitizers:deps", ] } shared_library("blacklist_test_dll_2") { sources = [ "blacklist/test/blacklist_test_dll_2.cc", ] ldflags = [ "/DEF:" + rebase_path("blacklist/test/blacklist_test_dll_2.def", root_build_dir) ] deps = [ "//build/config/sanitizers:deps", ] } shared_library("blacklist_test_dll_3") { sources = [ "blacklist/test/blacklist_test_dll_3.cc", ] deps = [ "//build/config/sanitizers:deps", ] }