# Copyright 2014 The Goma Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

proto_out_dir = "prototmp"
generate_compiler_proxy_info = "generate_compiler_proxy_info.py"

import("//testing/libfuzzer/fuzzer_test.gni")
import("//third_party/protobuf/proto_library.gni")

group("client") {
  deps = [
    ":compiler_proxy",
    ":goma_fetch",
    ":gomacc",
  ]

  if (is_official_build) {
    deps += [ ":calc_sha256_checksum" ]
  }
}

# "common" contains sources that will be used in compiler_proxy and gomacc.
static_library("common") {
  sources = [
    "atomic_stats_counter.cc",
    "atomic_stats_counter.h",
    "autolock_timer.cc",
    "autolock_timer.h",
    "callback.h",
    "counterz.cc",
    "counterz.h",
    "env_flags.cc",
    "env_flags.h",
    "file_stat.cc",
    "file_stat.h",
    "goma_flags.cc",
    "goma_ipc_addr.cc",
    "goma_ipc_addr.h",
    "goma_ipc_peer.cc",
    "goma_ipc_peer.h",
    "json_util.cc",
    "json_util.h",
    "machine_info.cc",
    "machine_info.h",
    "mypath.cc",
    "mypath.h",
    "mypath_helper.h",
    "simple_timer.cc",
    "simple_timer.h",
    "spawner.h",
    "util.cc",
    "util.h",
  ]
  public_configs = [ ":client_config" ]

  public_deps = [
    ":counterz_proto",
    "//base",
    "//third_party/jsoncpp",
  ]
  deps = [
    "//lib",
    "//third_party:glog",
    "//third_party/chromium_base:cpu",
  ]
  if (os == "win") {
    sources += [
      "filetime_win.cc",
      "filetime_win.h",
      "mypath_helper_win.cc",
      "named_pipe_client_win.cc",
      "named_pipe_client_win.h",
      "named_pipe_win.cc",
      "named_pipe_win.h",
      "posix_helper_win.cc",
      "posix_helper_win.h",
      "simple_timer_win.cc",
    ]

    public_deps += [ ":rand_util_lib" ]  # posix_helper_win always require this
  }

  if (os == "linux") {
    sources += [
      "mypath_helper_linux.cc",
      "simple_timer_linux.cc",
    ]
    libs = [ "rt" ]
  }
  if (os == "mac") {
    sources += [
      "mypath_helper_mac.mm",
      "simple_timer_mac.cc",
    ]
    libs = [ "Foundation.framework" ]
  }
}

static_library("oauth2_lib") {
  sources = [
    "oauth2.cc",
    "oauth2.h",
  ]
  deps = [
    ":common",
    ":ioutil_lib",
    "//lib",
    "//third_party/abseil",
  ]
}

static_library("subprocess_lib") {
  sources = [
    "subprocess.cc",
    "subprocess.h",
  ]

  if (os == "win") {
    sources += [
      "spawner_win.cc",
      "spawner_win.h",
    ]
  } else {
    sources += [
      "spawner_posix.cc",
      "spawner_posix.h",
    ]
  }

  public_deps = [
    "//base",
    "//lib",
  ]

  deps = [
    ":client_util_lib",
    ":common",
    ":ioutil_lib",
  ]
}

proto_library("compiler_info_data_proto") {
  sources = [
    "compiler_info_data.proto",
  ]
}

proto_library("counterz_proto") {
  sources = [
    "counterz.proto",
  ]
}

proto_library("deps_cache_proto") {
  sources = [
    "deps_cache_data.proto",
  ]
}

proto_library("error_notice") {
  sources = [
    "error_notice.proto",
  ]
}

proto_library("local_output_cache_proto") {
  sources = [
    "local_output_cache_data.proto",
  ]
}

proto_library("subprocess_proto") {
  sources = [
    "subprocess.protodevel",
  ]
}

proto_library("settings_proto") {
  sources = [
    "settings.proto",
  ]
}

config("include_target_gen_dir") {
  include_dirs = [ "$target_gen_dir" ]
}

config("client_config") {
  include_dirs = [ "." ]
}

action("gen_compiler_proxy_info") {
  script = generate_compiler_proxy_info
  outputs = [
    "$target_gen_dir/compiler_proxy_info.h",
  ]
  args = [
    "--out-dir",
    rebase_path("$target_gen_dir"),
  ]
  public_configs = [ ":include_target_gen_dir" ]
}

static_library("gomacc_lib") {
  sources = [
    "goma_ipc.cc",
    "goma_ipc.h",
    "gomacc_argv.cc",
    "gomacc_argv.h",
    "gomacc_common.cc",
    "gomacc_common.h",

    # generated files.
    "$target_gen_dir/compiler_proxy_info.h",
  ]
  deps = [
    ":client_util_lib",
    ":common",
    ":gen_compiler_proxy_info",
    ":ioutil_lib",
    ":subprocess_lib",
    "//lib",
    "//lib:compiler_flag_type_specific",
    "//third_party:glog",
    "//third_party/protobuf:protobuf_lite",
  ]
  include_dirs = [ "." ]
  if (os == "linux") {
    sources += [
      "cros_util.cc",
      "cros_util.h",
    ]
  }
}

static_library("content_lib") {
  sources = [
    "content.cc",
    "content.h",
    "content_cursor.cc",
    "content_cursor.h",
  ]

  public_deps = [
    "//base",
    "//third_party/abseil",
  ]
  deps = [
    "//lib",
  ]
}

static_library("client_util_lib") {
  sources = [
    "client_util.cc",
    "client_util.h",
  ]
  public_deps = [
    "//base",
    "//third_party/abseil",
  ]
  deps = [
    ":common",
    ":ioutil_lib",
    "//lib",
    "//lib:vc_specific",
    "//third_party:glog",
  ]
}

# compiler_proxy_base contains sources for compiler_proxy.
# This should not depend on language-specific (c/c++ specific, or java specific)
# source code.
static_library("compiler_proxy_base_lib") {
  sources = [
    "descriptor_poller.cc",
    "descriptor_poller.h",
    "framework_path_resolver.cc",
    "framework_path_resolver.h",
    "histogram.cc",
    "histogram.h",
    "linked_unordered_map.h",
    "list_dir_cache.cc",
    "list_dir_cache.h",
    "sha256hash_hasher.h",
    "socket_descriptor.cc",
    "socket_descriptor.h",
    "socket_pool.cc",
    "socket_pool.h",
    "worker_thread.cc",
    "worker_thread.h",
    "worker_thread_manager.cc",
    "worker_thread_manager.h",
  ]

  if (os == "linux") {
    sources += [ "descriptor_poller_epoll.cc" ]
  } else if (os == "mac" || os == "freebsd") {
    sources += [ "descriptor_poller_kqueue.cc" ]
  } else {
    sources += [ "descriptor_poller_select.cc" ]
  }

  deps = [
    ":ioutil_lib",
  ]

  public_deps = [
    ":common",
    ":content_lib",
    "//base",
    "//lib",
    "//lib:goma_hash",
    "//lib:goma_stats_proto",
  ]

  # Do not depend on compiler-type specific libraries.
  assert_no_deps = [
    "//lib:compiler_flag_type_specific",
    "//lib:gcc_specific",
    "//lib:vc_specific",
    "//lib:clang_tidy_specific",
    "//lib:java_specific",
  ]
}

static_library("compiler_proxy_lib") {
  libs = []
  sources = [
    "auto_updater.cc",
    "auto_updater.h",
    "compilation_database_reader.cc",
    "compilation_database_reader.h",
    "compile_service.cc",
    "compile_service.h",
    "compile_stats.cc",
    "compile_stats.h",
    "compile_task.cc",
    "compile_task.h",
    "compiler_flags_util.cc",
    "compiler_flags_util.h",
    "compiler_info_cache.cc",
    "compiler_info_cache.h",
    "compiler_info_state.cc",
    "compiler_info_state.h",
    "compiler_proxy_histogram.cc",
    "compiler_proxy_histogram.h",
    "compiler_type_specific_collection.cc",
    "compiler_type_specific_collection.h",
    "goma_blob.cc",
    "goma_blob.h",
    "goma_file_dump.cc",
    "goma_file_dump.h",
    "goma_file_http.cc",
    "goma_file_http.h",
    "goma_init.cc",
    "goma_init.h",
    "hash_rewrite_parser.cc",
    "hash_rewrite_parser.h",
    "http.cc",
    "http.h",
    "http_init.cc",
    "http_init.h",
    "http_rpc.cc",
    "http_rpc.h",
    "http_rpc_init.cc",
    "http_rpc_init.h",
    "log_cleaner.cc",
    "log_cleaner.h",
    "log_service_client.cc",
    "log_service_client.h",
    "luci_context.cc",
    "luci_context.h",
    "multi_http_rpc.cc",
    "multi_http_rpc.h",
    "oauth2_token.cc",
    "oauth2_token.h",
    "openssl_engine.cc",
    "openssl_engine.h",
    "settings.cc",
    "settings.h",
    "subprocess_controller.cc",
    "subprocess_controller.h",
    "subprocess_controller_client.cc",
    "subprocess_controller_client.h",
    "subprocess_controller_server.cc",
    "subprocess_controller_server.h",
    "subprocess_impl.cc",
    "subprocess_impl.h",
    "subprocess_option_setter.cc",
    "subprocess_option_setter.h",
    "subprocess_task.cc",
    "subprocess_task.h",
    "threadpool_http_server.cc",
    "threadpool_http_server.h",
    "tls_descriptor.cc",
    "tls_descriptor.h",
    "trustedipsmanager.cc",
    "trustedipsmanager.h",
    "watchdog.cc",
    "watchdog.h",

    # generated files.
    "$target_gen_dir/compiler_proxy_info.h",
    "$target_gen_dir/resources/compiler_proxy_contentionz_script.c",
    "$target_gen_dir/resources/compiler_proxy_contentionz_script.h",
    "$target_gen_dir/resources/compiler_proxy_status_html5.c",
    "$target_gen_dir/resources/compiler_proxy_status_html5.h",
    "$target_gen_dir/resources/compiler_proxy_status_script.c",
    "$target_gen_dir/resources/compiler_proxy_status_script.h",
    "$target_gen_dir/resources/compiler_proxy_status_style.c",
    "$target_gen_dir/resources/compiler_proxy_status_style.h",
    "$target_gen_dir/resources/compilerz_html.c",
    "$target_gen_dir/resources/compilerz_html.h",
    "$target_gen_dir/resources/compilerz_script.c",
    "$target_gen_dir/resources/compilerz_script.h",
    "$target_gen_dir/resources/compilerz_style.c",
    "$target_gen_dir/resources/compilerz_style.h",

  ]
  include_dirs = [ "." ]
  deps = [
    ":breakpad_lib",
    ":client_util_lib",
    ":compiler_info_data_proto",
    ":compiler_info_lib",
    ":compiler_type_specific_lib",
    ":content_lib",
    ":deps_cache_lib",
    ":error_notice",
    ":file_hash_cache_lib",
    ":file_stat_cache_lib",
    ":ioutil_lib",
    ":jwt_lib",
    ":local_output_cache_lib",
    ":local_output_cache_proto",  # for compile_task
    ":oauth2_lib",
    ":rand_util_lib",
    ":rand_util_lib",
    ":scoped_tmp_file_lib",
    ":settings_proto",
    ":sha256_hash_cache_lib",
    ":subprocess_lib",
    ":subprocess_proto",
    "//client/clang_tidy:clang_tidy_compiler_info_builder_lib",
    "//client/clang_tidy:clang_tidy_compiler_type_specific",
    "//client/cxx:cxx_compiler_info_lib",
    "//client/cxx:gcc_compiler_info_builder_lib",
    "//client/cxx:gcc_compiler_type_specific",
    "//client/cxx:vc_compiler_info_builder_lib",
    "//client/cxx:vc_compiler_type_specific",
    "//client/cxx/include_processor:cpp_include_processor_lib",
    "//client/cxx/include_processor:directive_filter_lib",
    "//client/cxx/include_processor:include_cache_lib",
    "//client/java:jar_parser_lib",
    "//client/java:java_compiler_info_builder_lib",
    "//client/java:java_compiler_info_lib",
    "//client/java:java_compiler_type_specific",
    "//client/linker/linker_input_processor:arfile_reader_lib",
    "//client/linker/linker_input_processor:linker_input_processor_lib",
    "//client/linker/linker_input_processor:thinlto_import_processor_lib",
    "//lib:compiler_flag_type_specific",
    "//third_party:minizip",
    "//third_party/abseil",
    "//third_party/boringssl",
    "//third_party/chromium_base:cpu",
    "//third_party/jsoncpp",
    "//third_party/protobuf:protobuf_lite",
    "//third_party/tensorflow_core:flat_map",
  ]
  public_deps = [
    ":common",
    ":compiler_proxy_base_lib",
    ":gen_compiler_proxy_info",
    ":subprocess_proto",
    "//client/java:jarfile_reader_lib",
    "//client/resources:gen_compiler_proxy_contentionz_script",
    "//client/resources:gen_compiler_proxy_status_html5",
    "//client/resources:gen_compiler_proxy_status_script",
    "//client/resources:gen_compiler_proxy_status_style",
    "//client/resources:gen_compilerz_html",
    "//client/resources:gen_compilerz_script",
    "//client/resources:gen_compilerz_style",
    "//lib",
    "//lib:goma_file",
    "//lib:goma_hash",
    "//lib:goma_stats_proto",
    "//lib:goma_statz_stats_proto",
    "//third_party:glog",
    "//third_party:gtest_prod",
    "//third_party/jquery:jquery",
    "//third_party/jsoncpp",

  ]

  if (os == "mac") {
    sources += [
      "openssl_engine_helper.h",
      "openssl_engine_helper_mac.cc",
    ]
    libs += [
      "Security.framework",
      "Foundation.framework",
    ]
    deps += [ "//third_party/chromium_base:mac_version" ]
  }
  if (os == "win") {
    sources += [
      "named_pipe_server_win.cc",
      "named_pipe_server_win.h",
      "openssl_engine_helper.h",
      "openssl_engine_helper_win.cc",
    ]
    deps += [ "//client/certs:certs_resource" ]
  }
  if (os != "mac" && os != "win") {
    sources += [
      "openssl_engine_helper.h",
      "openssl_engine_helper_generic.cc",
    ]
    deps += [ "//client/certs" ]
  }
}

static_library("base64_lib") {
  sources = [
    "base64.cc",
    "base64.h",
  ]
  deps = [
    "//base",
  ]
}

static_library("jwt_lib") {
  if (os == "win") {
    cflags = [
      # C4267: conversion from 'size_t' to 'int', possible loss of data
      # Come from passing string::size() to
      # BIO_new_mem_buf(const void*, int len).
      "/wd4267",
    ]
  }

  sources = [
    "jwt.cc",
    "jwt.h",
  ]
  deps = [
    ":base64_lib",
    ":ioutil_lib",
    "//base",
    "//third_party:glog",
    "//third_party:gtest_prod",
    "//third_party/boringssl",
  ]
}

static_library("sha256_hash_cache_lib") {
  sources = [
    "sha256_hash_cache.cc",
    "sha256_hash_cache.h",
  ]
  deps = [
    "//lib:goma_hash",
  ]
  public_deps = [
    ":common",
    "//base",
  ]
}

static_library("compiler_type_specific_lib") {
  sources = [
    "compiler_type_specific.cc",
    "compiler_type_specific.h",
  ]

  public_deps = [
    ":compiler_info_lib",
    ":file_stat_cache_lib",
    "//lib",
    "//third_party/abseil",
  ]
}

static_library("compiler_info_lib") {
  sources = [
    "compiler_info.cc",
    "compiler_info.h",
    "compiler_info_builder.cc",
    "compiler_info_builder.h",
  ]

  deps = [
    ":common",
    ":ioutil_lib",
    ":scoped_tmp_file_lib",
    ":sha256_hash_cache_lib",
    "//client/cxx/include_processor:cpp_directive_lib",
    "//lib:compiler_flag_type_specific",
    "//lib:goma_hash",
    "//third_party/jsoncpp",
    "//third_party/tensorflow_core:flat_map",
  ]

  public_deps = [
    ":compiler_info_data_proto",
    "//lib",
    "//third_party:gtest_prod",
    "//third_party/abseil",
    "//third_party/protobuf:protobuf_lite",
  ]

  public_configs = [ ":client_config" ]
}

static_library("file_stat_cache_lib") {
  sources = [
    "file_stat_cache.cc",
    "file_stat_cache.h",
  ]
  public_deps = [
    "//base",
    "//third_party/abseil",
  ]
  deps = [
    ":common",
    "//third_party:glog",
  ]
}

static_library("ioutil_lib") {
  sources = [
    "http_util.cc",
    "http_util.h",
    "ioutil.cc",
    "ioutil.h",
  ]
  public_deps = [
    "//base",
    "//third_party/abseil",
  ]
  deps = [
    ":common",
    "//lib",
    "//third_party:glog",
  ]
}

static_library("rand_util_lib") {
  sources = [
    "rand_util.cc",
    "rand_util.h",
  ]
  deps = [
    "//third_party:glog",
    "//third_party/boringssl",
  ]
}

static_library("cache_file_lib") {
  sources = [
    "cache_file.cc",
    "cache_file.h",
  ]
  public_deps = [
    "//base",
  ]
  deps = [
    "//lib:goma_hash",
  ]
}

static_library("file_hash_cache_lib") {
  sources = [
    "file_hash_cache.cc",
    "file_hash_cache.h",
  ]
  public_deps = [
    ":common",
  ]
  deps = [
    "//third_party:glog",
  ]
}

static_library("deps_cache_lib") {
  sources = [
    "deps_cache.cc",
    "deps_cache.h",
    "filename_id_table.cc",
    "filename_id_table.h",
  ]
  public_deps = [
    ":cache_file_lib",
    ":common",
    ":compiler_proxy_base_lib",
    ":file_stat_cache_lib",
    "//lib:goma_hash",
  ]
  deps = [
    ":compiler_info_lib",
    ":content_lib",
    ":deps_cache_proto",
    ":gen_compiler_proxy_info",
    "//client/cxx:cxx_compiler_info_lib",
    "//client/cxx/include_processor:directive_filter_lib",
    "//client/cxx/include_processor:include_cache_lib",
    "//lib:gcc_specific",
    "//lib:vc_specific",
  ]
}

static_library("local_output_cache_lib") {
  sources = [
    "local_output_cache.cc",
    "local_output_cache.h",
  ]
  deps = [
    ":common",
    ":compiler_proxy_base_lib",
    ":local_output_cache_proto",
    "//lib:compiler_flag_type_specific",
    "//lib:goma_hash",
  ]
}

static_library("scoped_tmp_file_lib") {
  sources = [
    "scoped_tmp_file.cc",
    "scoped_tmp_file.h",
  ]
  public_deps = [
    "//lib",
  ]
  deps = [
    ":common",
    ":rand_util_lib",
    "//base",
  ]
}

static_library("breakpad_lib") {
  sources = [
    "breakpad.h",
  ]
  if (os == "linux") {
    sources += [ "breakpad_linux.cc" ]
    deps = [
      "//base",
      "//third_party:glog",
      "//third_party/breakpad:client",
    ]
  }
  if (os == "mac") {
    sources += [ "breakpad_mac.cc" ]
    deps = [
      "//base",
      "//third_party:glog",
      "//third_party/breakpad:breakpad",
    ]
    libs = [ "Foundation.framework" ]
  }
  if (os == "win") {
    sources += [ "breakpad_win.cc" ]
    deps = [
      "//third_party:glog",
      "//third_party/breakpad:breakpad_handler",
    ]
  }
  include_dirs = [
    "//third_party/breakpad/breakpad/src",

    # For including third_party/lss/linux_syscall_support.h from
    # third_party/breakpad/src/common/memory.h.
    # linux_syscall_support.h do not have .c or .cc file.
    "//",
  ]
}

executable("gomacc") {
  sources = [
    "gomacc.cc",
  ]
  include_dirs = [ "." ]
  deps = [
    ":breakpad_lib",
    ":client_util_lib",
    ":common",
    ":gomacc_lib",
    ":ioutil_lib",
    ":subprocess_lib",
    "//build/config:exe_and_shlib_deps",
    "//lib",
    "//lib:compiler_flag_type_specific",
    "//third_party:glog",
    "//third_party/abseil",
    "//third_party/protobuf:protobuf_lite",
  ]
  if (os == "linux" && may_make_pie) {
    ldflags = [ "-pie" ]
  }
}

executable("compiler_proxy") {
  sources = [
    "compiler_proxy.cc",
  ]
  include_dirs = [ "." ]
  deps = [
    ":breakpad_lib",
    ":compiler_proxy_lib",
    ":deps_cache_lib",
    ":file_hash_cache_lib",
    ":file_stat_cache_lib",
    ":ioutil_lib",
    ":local_output_cache_lib",
    ":oauth2_lib",
    ":rand_util_lib",
    ":subprocess_lib",
    "//build/config:exe_and_shlib_deps",
    "//client/cxx:cxx_compiler_info_builder_lib",
    "//client/cxx/include_processor:cpp_include_processor_lib",
    "//client/cxx/include_processor:include_cache_lib",
    "//client/java:jar_parser_lib",
    "//client/linker/linker_input_processor:arfile_lib",
    "//client/linker/linker_input_processor:arfile_reader_lib",
    "//third_party/boringssl",
    "//third_party/protobuf:protobuf_lite",
  ]

  if (os == "win") {
    deps += [ "//client/certs:certs_resource" ]
  }

  if (os == "linux" && may_make_pie) {
    ldflags = [ "-pie" ]
  }
}

executable("goma_fetch") {
  sources = [
    "goma_fetch.cc",
  ]
  include_dirs = [ "." ]
  deps = [
    ":compiler_proxy_lib",
    ":ioutil_lib",
    ":oauth2_lib",
    "//build/config:exe_and_shlib_deps",
    "//third_party/protobuf:protobuf_lite",
  ]

  if (os == "win") {
    deps += [ "//client/certs:certs_resource" ]
  }
}

copy("copy_goma_auth_py") {
  sources = [
    "goma_auth.py",
  ]
  outputs = [
    "$root_out_dir/{{source_file_part}}",
  ]
}

copy("copy_goma_ctl_py") {
  sources = [
    "goma_ctl.py",
  ]
  outputs = [
    "$root_out_dir/{{source_file_part}}",
  ]
}

copy("copy_vpython") {
  sources = [
    ".vpython",
  ]
  outputs = [
    "$root_out_dir/{{source_file_part}}",
  ]
}

copy("copy_diagnose_goma_log_py") {
  sources = [
    "diagnose_goma_log.py",
  ]
  outputs = [
    "$root_out_dir/{{source_file_part}}",
  ]
}

if (os != "win") {
  copy("goma_tool") {
    sources = [
      "goma_ctl.sh",
      "report_env.sh",

    ]
    if (os == "linux") {
      sources += [
        # for chromeos
        "goma-make",
        "goma-make_unittest",
        "goma-wrapper",
      ]
    }
    outputs = [
      "$root_out_dir/{{source_file_part}}",
    ]
  }

  action("symlink_gomacc") {
    script = "symlink.py"
    deps = [
      ":gomacc",
    ]
    outputs = [
      "$root_out_dir/g++",
      "$root_out_dir/gcc",
      "$root_out_dir/javac",
      "$root_out_dir/cc",
      "$root_out_dir/c++",
      "$root_out_dir/clang",
      "$root_out_dir/clang++",
    ]
    args = [
             "--force",
             "--target",
             "gomacc",
           ] + rebase_path(outputs)
  }

  if (is_official_build) {
    action("dump_compiler_proxy_symbols") {
      script = "dump_syms.py"
      deps = [
        ":compiler_proxy",
        "//third_party/breakpad:dump_syms",
      ]
      outputs = [
        "$root_out_dir/compiler_proxy.sym",
      ]
      args = [
        "--dump_syms",
        rebase_path("$root_out_dir/dump_syms"),
        "--input",
        rebase_path("$root_out_dir/compiler_proxy"),
        "--output",
        rebase_path("$root_out_dir/compiler_proxy.sym"),
      ]
    }

    action("dump_gomacc_symbols") {
      script = "dump_syms.py"
      deps = [
        ":gomacc",
        "//third_party/breakpad:dump_syms",
      ]
      outputs = [
        "$root_out_dir/gomacc.sym",
      ]
      args = [
        "--dump_syms",
        rebase_path("$root_out_dir/dump_syms"),
        "--input",
        rebase_path("$root_out_dir/gomacc"),
        "--output",
        rebase_path("$root_out_dir/gomacc.sym"),
      ]
    }

    action("calc_sha256_checksum") {
      script = "calculate_sha256.py"
      deps = [
        ":compiler_proxy",
        ":copy_diagnose_goma_log_py",
        ":copy_goma_auth_py",
        ":copy_goma_ctl_py",
        ":copy_vpython",
        ":dump_compiler_proxy_symbols",
        ":dump_gomacc_symbols",
        ":goma_fetch",
        ":goma_tool",
        ":gomacc",
      ]
      outputs = [
        "$root_out_dir/sha256.json",
      ]
      args = [
        "--output",
        rebase_path("$root_out_dir/sha256.json"),
        rebase_path("$root_out_dir/compiler_proxy"),
        rebase_path("$root_out_dir/compiler_proxy.sym"),
        rebase_path("$root_out_dir/diagnose_goma_log.py"),
        rebase_path("$root_out_dir/goma_auth.py"),
        rebase_path("$root_out_dir/gomacc"),
        rebase_path("$root_out_dir/gomacc.sym"),
        rebase_path("$root_out_dir/goma_ctl.py"),
        rebase_path("$root_out_dir/.vpython"),
        rebase_path("$root_out_dir/goma_fetch"),
        rebase_path("$root_out_dir/report_env.sh"),
      ]
    }
  }
} else {  # win
  executable("vcflags") {
    sources = [
      "vcflags.c",
    ]
    deps = [
      "//build/config:exe_and_shlib_deps",
    ]
  }
  copy("goma_tool") {
    sources = [
      "goma_ctl.bat",
    ]
    outputs = [
      "$root_out_dir/{{source_file_part}}",
    ]
  }

  if (is_official_build) {
    action("dump_gomacc_symbols") {
      script = "dump_syms.py"
      deps = [
        ":gomacc",
        "//third_party/breakpad:dump_syms",
      ]
      outputs = [
        "$root_out_dir/gomacc.sym",
      ]
      args = [
        "--dump_syms",
        rebase_path("$root_out_dir/dump_syms.exe"),
        "--input",
        rebase_path("$root_out_dir/gomacc.exe"),
        "--output",
        rebase_path("$root_out_dir/gomacc.sym"),
      ]
    }

    action("dump_compiler_proxy_symbols") {
      script = "dump_syms.py"
      deps = [
        ":compiler_proxy",
        "//third_party/breakpad:dump_syms",
      ]
      outputs = [
        "$root_out_dir/compiler_proxy.sym",
      ]
      args = [
        "--dump_syms",
        rebase_path("$root_out_dir/dump_syms.exe"),
        "--input",
        rebase_path("$root_out_dir/compiler_proxy.exe"),
        "--output",
        rebase_path("$root_out_dir/compiler_proxy.sym"),
      ]
    }

    action("calc_sha256_checksum") {
      script = "calculate_sha256.py"
      deps = [
        ":compiler_proxy",
        ":copy_diagnose_goma_log_py",
        ":copy_goma_auth_py",
        ":copy_goma_ctl_py",
        ":copy_vpython",
        ":dump_compiler_proxy_symbols",
        ":dump_gomacc_symbols",
        ":goma_fetch",
        ":goma_tool",
        ":gomacc",
        ":vcflags",
      ]
      outputs = [
        "$root_out_dir/sha256.json",
      ]
      args = [
        "--output",
        rebase_path("$root_out_dir/sha256.json"),
        rebase_path("$root_out_dir/compiler_proxy.exe"),
        rebase_path("$root_out_dir/compiler_proxy.exe.pdb"),
        rebase_path("$root_out_dir/compiler_proxy.sym"),
        rebase_path("$root_out_dir/diagnose_goma_log.py"),
        rebase_path("$root_out_dir/goma_auth.py"),
        rebase_path("$root_out_dir/gomacc.exe"),
        rebase_path("$root_out_dir/gomacc.exe.pdb"),
        rebase_path("$root_out_dir/gomacc.sym"),
        rebase_path("$root_out_dir/goma_ctl.bat"),
        rebase_path("$root_out_dir/goma_ctl.py"),
        rebase_path("$root_out_dir/.vpython"),
        rebase_path("$root_out_dir/goma_fetch.exe"),
        rebase_path("$root_out_dir/goma_fetch.exe.pdb"),
        rebase_path("$root_out_dir/vcflags.exe"),
        rebase_path("$root_out_dir/vcflags.exe.pdb"),
      ]
    }
  }
}

static_library("goma_test_lib") {
  testonly = true
  sources = [
    "unittest_util.cc",
    "unittest_util.h",
  ]
  if (os == "win") {
    sources += [
      "vsvars.cc",
      "vsvars.h",
    ]
  }
  deps = [
    ":common",
    ":ioutil_lib",
    "//base",
    "//base:goma_unittest",
    "//third_party:glog",
  ]
  public_deps = [
    "//third_party:gtest",
  ]
}

static_library("gomacc_test_lib") {
  testonly = true
  sources = [
    "unittest_util.cc",
    "unittest_util.h",
  ]
  deps = [
    ":common",
    ":gomacc_lib",
    ":ioutil_lib",
    "//base:goma_unittest",
    "//lib",
    "//third_party:glog",
    "//third_party:gtest",
  ]
}

executable("atomic_stats_counter_unittest") {
  testonly = true
  sources = [
    "atomic_stats_counter_unittest.cc",
  ]
  deps = [
    ":common",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("base64_unittest") {
  testonly = true
  sources = [
    "base64_unittest.cc",
  ]
  deps = [
    ":base64_lib",
    ":goma_test_lib",
    "//base",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("callback_unittest") {
  testonly = true
  sources = [
    "callback_unittest.cc",
  ]
  deps = [
    ":common",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("goma_blob_unittest") {
  testonly = true
  sources = [
    "goma_blob_unittest.cc",
  ]
  deps = [
    ":common",
    ":compiler_proxy_lib",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("compilation_database_reader_unittest") {
  testonly = true
  sources = [
    "compilation_database_reader_unittest.cc",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("compiler_info_state_unittest") {
  testonly = true
  sources = [
    "compiler_info_state_unittest.cc",
  ]
  deps = [
    ":compiler_info_lib",
    ":compiler_proxy_lib",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
    "//client/cxx/include_processor:cpp_parser_lib",
  ]
}

executable("compiler_info_builder_unittest") {
  testonly = true
  sources = [
    "compiler_info_builder_unittest.cc",
  ]
  deps = [
    ":compiler_info_lib",
    ":compiler_proxy_lib",
    ":goma_test_lib",
    ":subprocess_lib",
    "//build/config:exe_and_shlib_deps",
    "//client/cxx:gcc_compiler_info_builder_lib",
    "//client/cxx/include_processor:cpp_parser_lib",
    "//lib:compiler_flag_type_specific",
  ]
}

executable("compiler_info_cache_unittest") {
  testonly = true
  sources = [
    "compiler_info_cache_unittest.cc",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":goma_test_lib",
    ":subprocess_lib",
    "//build/config:exe_and_shlib_deps",
    "//client/cxx:gcc_compiler_info_builder_lib",
    "//client/cxx/include_processor:cpp_parser_lib",
    "//lib:compiler_flag_type_specific",
  ]
}

executable("content_cursor_unittest") {
  testonly = true
  sources = [
    "content_cursor_unittest.cc",
  ]
  deps = [
    ":content_lib",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("env_flags_unittest") {
  testonly = true
  sources = [
    "env_flags_unittest.cc",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("file_stat_unittest") {
  testonly = true
  sources = [
    "file_stat_unittest.cc",
  ]
  deps = [
    ":common",
    ":goma_test_lib",
    ":scoped_tmp_file_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("goma_ipc_unittest") {
  testonly = true
  sources = [
    "goma_ipc_unittest.cc",
    "mock_socket_factory.cc",
    "mock_socket_factory.h",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":goma_test_lib",
    ":gomacc_lib",
    ":ioutil_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("gomacc_argv_unittest") {
  testonly = true
  sources = [
    "gomacc_argv_unittest.cc",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":goma_test_lib",
    ":gomacc_lib",
    ":ioutil_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("histogram_unittest") {
  testonly = true
  sources = [
    "histogram_unittest.cc",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("http_unittest") {
  testonly = true
  sources = [
    "http_unittest.cc",
    "mock_socket_factory.cc",
    "mock_socket_factory.h",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("http_rpc_unittest") {
  testonly = true
  sources = [
    "fake_tls_engine.cc",
    "fake_tls_engine.h",
    "http_rpc_unittest.cc",
    "mock_socket_factory.cc",
    "mock_socket_factory.h",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":goma_test_lib",
    ":ioutil_lib",
    "//build/config:exe_and_shlib_deps",
    "//third_party:minizip",
  ]
}

executable("http_util_unittest") {
  testonly = true
  sources = [
    "http_util_unittest.cc",
  ]
  deps = [
    ":goma_test_lib",
    ":ioutil_lib",
    "//build/config:exe_and_shlib_deps",
    "//third_party/abseil",
  ]
}

executable("hash_rewrite_parser_unittest") {
  testonly = true
  sources = [
    "hash_rewrite_parser_unittest.cc",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("ioutil_unittest") {
  testonly = true
  sources = [
    "ioutil_unittest.cc",
  ]
  deps = [
    ":common",
    ":goma_test_lib",
    ":ioutil_lib",
    "//base",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("jwt_unittest") {
  testonly = true
  sources = [
    "jwt_unittest.cc",
  ]
  deps = [
    ":base64_lib",
    ":common",
    ":goma_test_lib",
    ":jwt_lib",
    "//base",
    "//build/config:exe_and_shlib_deps",
    "//third_party:glog",
    "//third_party/boringssl",
  ]
}

executable("linked_unordered_map_unittest") {
  testonly = true
  sources = [
    "linked_unordered_map_unittest.cc",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("list_dir_cache_unittest") {
  testonly = true
  sources = [
    "list_dir_cache_unittest.cc",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("log_cleaner_unittest") {
  testonly = true
  sources = [
    "log_cleaner_unittest.cc",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("luci_context_unittest") {
  testonly = true
  sources = [
    "luci_context_unittest.cc",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("machine_info_unittest") {
  testonly = true
  sources = [
    "machine_info_unittest.cc",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("mypath_unittest") {
  testonly = true
  sources = [
    "mypath_unittest.cc",
  ]
  deps = [
    ":common",
    ":goma_test_lib",
    ":ioutil_lib",
    "//base",
    "//build/config:exe_and_shlib_deps",
    "//lib",
    "//third_party:glog",
  ]
}

executable("oauth2_unittest") {
  testonly = true
  sources = [
    "oauth2_unittest.cc",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":goma_test_lib",
    ":oauth2_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("simple_timer_unittest") {
  testonly = true
  sources = [
    "simple_timer_unittest.cc",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("subprocess_task_unittest") {
  testonly = true
  sources = [
    "subprocess_task_unittest.cc",
  ]
  deps = [
    ":breakpad_lib",
    ":compiler_proxy_lib",
    ":goma_test_lib",
    ":scoped_tmp_file_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("threadpool_http_server_unittest") {
  testonly = true
  sources = [
    "threadpool_http_server_unittest.cc",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("trustedipsmanager_unittest") {
  testonly = true
  sources = [
    "trustedipsmanager_unittest.cc",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("worker_thread_unittest") {
  testonly = true
  sources = [
    "worker_thread_unittest.cc",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("worker_thread_manager_unittest") {
  testonly = true
  sources = [
    "mock_socket_factory.cc",
    "mock_socket_factory.h",
    "worker_thread_manager_unittest.cc",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("client_util_unittest") {
  testonly = true
  sources = [
    "client_util_unittest.cc",
  ]
  deps = [
    ":client_util_lib",
    ":common",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
    "//third_party:glog",
  ]
}

executable("util_unittest") {
  testonly = true
  sources = [
    "util_unittest.cc",
  ]
  deps = [
    ":common",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
    "//third_party:glog",
  ]
}

executable("openssl_engine_unittest") {
  testonly = true
  sources = [
    "openssl_engine_unittest.cc",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
    "//third_party/boringssl",
  ]
  if (os == "win") {
    deps += [ "//client/certs:certs_resource" ]
  }
}

executable("rand_util_unittest") {
  testonly = true
  sources = [
    "rand_util_unittest.cc",
  ]
  deps = [
    ":goma_test_lib",
    ":rand_util_lib",
    "//build/config:exe_and_shlib_deps",
    "//third_party/boringssl",
  ]
}

executable("deps_cache_unittest") {
  testonly = true
  sources = [
    "deps_cache_unittest.cc",
  ]
  deps = [
    ":compiler_info_lib",
    ":deps_cache_lib",
    ":deps_cache_proto",
    ":file_hash_cache_lib",
    ":goma_test_lib",
    ":subprocess_lib",
    "//build/config:exe_and_shlib_deps",
    "//client/cxx:cxx_compiler_info_lib",
    "//client/cxx/include_processor:cpp_parser_lib",
    "//client/cxx/include_processor:include_cache_lib",
    "//client/java:java_compiler_info_lib",
    "//lib:compiler_flag_type_specific",
  ]
}

executable("filename_id_table_unittest") {
  testonly = true
  sources = [
    "filename_id_table_unittest.cc",
  ]
  deps = [
    ":deps_cache_lib",
    ":deps_cache_proto",
    ":goma_test_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("compile_task_unittest") {
  testonly = true
  sources = [
    "compile_task_unittest.cc",
  ]
  deps = [
    ":breakpad_lib",
    ":compiler_proxy_lib",
    ":goma_test_lib",
    ":local_output_cache_lib",
    "//build/config:exe_and_shlib_deps",
    "//client/cxx:cxx_compiler_info_builder_lib",
    "//client/cxx/include_processor:cpp_include_processor_lib",
    "//client/java:jar_parser_lib",
    "//lib:compiler_flag_type_specific",
  ]
}

executable("local_output_cache_unittest") {
  testonly = true
  sources = [
    "local_output_cache_unittest.cc",
  ]
  deps = [
    ":compiler_proxy_lib",
    ":content_lib",
    ":goma_test_lib",
    ":local_output_cache_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

executable("sha256_hash_cache_unittest") {
  testonly = true
  sources = [
    "sha256_hash_cache_unittest.cc",
  ]
  deps = [
    ":goma_test_lib",
    ":sha256_hash_cache_lib",
    "//build/config:exe_and_shlib_deps",
  ]
}

if (os == "linux") {
  executable("cros_util_unittest") {
    testonly = true
    sources = [
      "cros_util_unittest.cc",
    ]
    deps = [
      ":gomacc_lib",
      ":gomacc_test_lib",
      "//build/config:exe_and_shlib_deps",
      "//third_party:gtest",
      "//third_party/abseil",
    ]
  }
}

if (os == "win") {
  executable("dump_env") {
    testonly = true
    sources = [
      "dump_env.c",
    ]
    deps = [
      "//build/config:exe_and_shlib_deps",
    ]
  }
  executable("filetime_win_unittest") {
    testonly = true
    sources = [
      "filetime_win_unittest.cc",
    ]
    deps = [
      ":common",
      ":goma_test_lib",
      "//build/config:exe_and_shlib_deps",
      "//third_party:gtest",
      "//third_party/abseil",
    ]
  }
  executable("named_pipe_client_win_unittest") {
    testonly = true
    sources = [
      "named_pipe_client_win_unittest.cc",
    ]
    deps = [
      ":compiler_proxy_lib",
      ":goma_test_lib",
      "//build/config:exe_and_shlib_deps",
      "//third_party/abseil",
    ]
  }
  executable("named_pipe_server_win_unittest") {
    testonly = true
    sources = [
      "named_pipe_server_win_unittest.cc",
    ]
    deps = [
      ":compiler_proxy_lib",
      ":goma_test_lib",
      "//build/config:exe_and_shlib_deps",
    ]
  }
  executable("posix_helper_win_unittest") {
    testonly = true
    sources = [
      "posix_helper_win_unittest.cc",
    ]
    deps = [
      ":compiler_proxy_lib",
      ":goma_test_lib",
      ":ioutil_lib",
      "//build/config:exe_and_shlib_deps",
    ]
  }
  executable("spawner_win_unittest") {
    testonly = true
    sources = [
      "spawner_win_unittest.cc",
    ]
    deps = [
      ":compiler_proxy_lib",
      ":goma_test_lib",
      ":subprocess_lib",
      "//base",
      "//build/config:exe_and_shlib_deps",
      "//third_party/abseil",
    ]
  }
  executable("vstestrun") {
    testonly = true
    sources = [
      "vstestrun.cc",
    ]
    deps = [
      ":compiler_proxy_lib",
      ":goma_test_lib",
      "//build/config:exe_and_shlib_deps",
    ]
  }
} else {
  executable("compiler_flags_util_unittest") {
    testonly = true
    sources = [
      "compiler_flags_util_unittest.cc",
    ]
    deps = [
      ":compiler_info_lib",
      ":compiler_proxy_lib",
      ":goma_test_lib",
      "//build/config:exe_and_shlib_deps",
      "//client/cxx:cxx_compiler_info_lib",
      "//client/cxx/include_processor:cpp_parser_lib",
    ]
  }
  executable("spawner_posix_unittest") {
    testonly = true
    sources = [
      "spawner_posix_unittest.cc",
    ]
    deps = [
      ":gomacc_test_lib",
      ":subprocess_lib",
      "//build/config:exe_and_shlib_deps",
      "//third_party:gtest",
    ]
  }
}

fuzzer_test("base64_fuzzer") {
  sources = [
    "base64_fuzzer.cc",
  ]
  deps = [
    ":common",
    "//base",
  ]
}

fuzzer_test("ioutil_parse_http_response_fuzzer") {
  sources = [
    "ioutil_parse_http_response_fuzzer.cc",
  ]
  deps = [
    ":common",
    "//base",
  ]
  dict = "data/fuzzer_dictionaries/net_url_request_fuzzer.dict"
}

executable("execreq_normalizer_diff") {
  sources = [
    "execreq_normalizer_diff.cc",
  ]

  deps = [
    "//build/config:exe_and_shlib_deps",
    "//lib",
    "//lib:compiler_flag_type_specific",
    "//third_party:glog",
    "//third_party/protobuf:protobuf_lite",
  ]
}
