# 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",
    ":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("constants") {
  sources = [
    "chrome_elf_constants.cc",
    "chrome_elf_constants.h",
  ]
}

source_set("common") {
  deps = [
    ":constants",
  ]
  sources = [
    "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",
  ]
}

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",
    "elf_imports_unittest.cc",
  ]
  include_dirs = [ "$target_gen_dir" ]
  deps = [
    ":blacklist",
    ":blacklist_test_main_dll",
    "//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",
  ]
}
