# Copyright 2020 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

import("//build_overrides/pigweed.gni")

import("$dir_pw_build/defaults.gni")
import("$dir_pw_toolchain/clang_tools.gni")

declare_args() {
  # Sets the sanitizer to pass to clang. Valid values are "address", "memory",
  # "thread", "undefined", "undefined_heuristic".
  pw_toolchain_SANITIZERS = []

  # Indicates if this toolchain supports generating coverage reports from
  # pw_test targets.
  #
  # For example, the static analysis toolchains that run `clang-tidy` instead
  # of the test binary itself cannot generate coverage reports.
  #
  # This is typically set by individual toolchains and not by GN args.
  pw_toolchain_COVERAGE_ENABLED = false

  # List of source files to selectively collect coverage.
  pw_toolchain_PROFILE_SOURCE_FILES = []

  # Indicates if this toolchain supports building fuzzers. This is typically
  # set by individual toolchains and not by GN args.
  pw_toolchain_FUZZING_ENABLED = false

  # Indicates if this build is a part of OSS-Fuzz, which needs to be able to
  # provide its own compiler and flags. This violates the build hermeticisim and
  # should only be used for OSS-Fuzz.
  pw_toolchain_OSS_FUZZ_ENABLED = false
}

# Specifies the tools used by host Clang toolchains.
_host_clang_toolchain = {
  forward_variables_from(pw_toolchain_clang_tools, "*")
  is_host_toolchain = true
  static_analysis = {
    # Enable static analysis for host clang based toolchains.
    enabled = true
  }
}

# Common default scope shared by all host Clang toolchains.
_defaults = {
  # TODO: b/234888755 - amend toolchain declaration process to
  # remove this hack.
  default_configs = []
  default_configs = pigweed_default_configs + [
                      "$dir_pw_build:extra_debugging",
                      "$dir_pw_toolchain/host_clang:no_system_libcpp",
                      "$dir_pw_toolchain/host_clang:xcode_sysroot",
                      "$dir_pw_toolchain/host_clang:no_ms_compatibility",
                    ]

  # OSS-Fuzz uses -stdlib=libc++, which isn't included in the CIPD-provided
  # Linux sysroot (it instead provides libstdc++).
  if (!pw_toolchain_OSS_FUZZ_ENABLED) {
    default_configs += [ "$dir_pw_toolchain/host_clang:linux_sysroot" ]
  }

  pw_build_LINK_DEPS = [ dir_pw_libc ]
}

pw_toolchain_host_clang = {
  debug = {
    name = "host_clang_debug"
    forward_variables_from(_host_clang_toolchain, "*")
    defaults = {
      forward_variables_from(_defaults, "*")
      default_configs += [ "$dir_pw_build:optimize_debugging" ]
      foreach(sanitizer, pw_toolchain_SANITIZERS) {
        default_configs +=
            [ "$dir_pw_toolchain/host_clang:sanitize_$sanitizer" ]
      }
    }
  }

  speed_optimized = {
    name = "host_clang_speed_optimized"
    forward_variables_from(_host_clang_toolchain, "*")
    defaults = {
      forward_variables_from(_defaults, "*")
      default_configs += [ "$dir_pw_build:optimize_speed" ]
      foreach(sanitizer, pw_toolchain_SANITIZERS) {
        default_configs +=
            [ "$dir_pw_toolchain/host_clang:sanitize_$sanitizer" ]
      }
    }
  }

  size_optimized = {
    name = "host_clang_size_optimized"
    forward_variables_from(_host_clang_toolchain, "*")
    defaults = {
      forward_variables_from(_defaults, "*")
      default_configs += [ "$dir_pw_build:optimize_size_clang" ]
      foreach(sanitizer, pw_toolchain_SANITIZERS) {
        default_configs +=
            [ "$dir_pw_toolchain/host_clang:sanitize_$sanitizer" ]
      }
    }
  }

  fuzz = {
    name = "host_clang_fuzz"
    cc = ""
    cxx = ""
    forward_variables_from(_host_clang_toolchain,
                           "*",
                           [
                             "cc",
                             "cxx",
                           ])

    # OSS-Fuzz sets compiler paths. See
    # google.github.io/oss-fuzz/getting-started/new-project-guide/#Requirements.
    if (pw_toolchain_OSS_FUZZ_ENABLED) {
      cc = getenv("CC")
      cxx = getenv("CXX")
    }
    if (cc == "") {
      cc = _host_clang_toolchain.cc
    }
    if (cxx == "") {
      cxx = _host_clang_toolchain.cxx
    }
    defaults = {
      forward_variables_from(_defaults, "*")

      pw_toolchain_FUZZING_ENABLED = true
      if (pw_toolchain_OSS_FUZZ_ENABLED) {
        default_configs += [ "$dir_pw_fuzzer:oss_fuzz_instrumentation" ]
      } else {
        default_configs += [ "$dir_pw_fuzzer:instrumentation" ]
      }

      # Fuzz faster.
      default_configs += [ "$dir_pw_build:optimize_speed" ]

      # Default to ASan for fuzzing, which is what we typically care about.
      if (pw_toolchain_SANITIZERS == []) {
        pw_toolchain_SANITIZERS = [ "address" ]
      }
      foreach(sanitizer, pw_toolchain_SANITIZERS) {
        default_configs +=
            [ "$dir_pw_toolchain/host_clang:sanitize_$sanitizer" ]
      }
    }
  }

  asan = {
    name = "host_clang_asan"
    forward_variables_from(_host_clang_toolchain, "*")
    defaults = {
      forward_variables_from(_defaults, "*")

      # Use debug mode to get proper debug information.
      default_configs += [ "$dir_pw_build:optimize_debugging" ]
      default_configs += [ "$dir_pw_toolchain/host_clang:sanitize_address" ]
    }
  }

  ubsan = {
    name = "host_clang_ubsan"
    forward_variables_from(_host_clang_toolchain, "*")
    defaults = {
      forward_variables_from(_defaults, "*")

      # Use debug mode to get proper debug information.
      default_configs += [ "$dir_pw_build:optimize_debugging" ]
      default_configs += [ "$dir_pw_toolchain/host_clang:sanitize_undefined" ]
    }
  }

  ubsan_heuristic = {
    name = "host_clang_ubsan_heuristic"
    forward_variables_from(_host_clang_toolchain, "*")
    defaults = {
      forward_variables_from(_defaults, "*")

      # Use debug mode to get proper debug information.
      default_configs += [ "$dir_pw_build:optimize_debugging" ]
      default_configs +=
          [ "$dir_pw_toolchain/host_clang:sanitize_undefined_heuristic" ]
    }
  }

  msan = {
    name = "host_clang_msan"
    forward_variables_from(_host_clang_toolchain, "*")
    defaults = {
      forward_variables_from(_defaults, "*")

      # Use debug mode to get proper debug information.
      default_configs += [ "$dir_pw_build:optimize_debugging" ]
      default_configs += [ "$dir_pw_toolchain/host_clang:sanitize_memory" ]
    }
  }

  tsan = {
    name = "host_clang_tsan"
    forward_variables_from(_host_clang_toolchain, "*")
    defaults = {
      forward_variables_from(_defaults, "*")

      # Use debug mode to get proper debug information.
      default_configs += [ "$dir_pw_build:optimize_debugging" ]
      default_configs += [ "$dir_pw_toolchain/host_clang:sanitize_thread" ]
    }
  }

  coverage = {
    name = "host_clang_coverage"
    forward_variables_from(_host_clang_toolchain, "*")
    defaults = {
      forward_variables_from(_defaults, "*")

      # Use debug mode to get proper debug information.
      default_configs += [ "$dir_pw_build:optimize_debugging" ]
      default_configs += [ "$dir_pw_toolchain/host_clang:coverage" ]

      # Enable PW toolchain arguments for coverage. This will only apply to
      # binaries built using this toolchain.
      pw_toolchain_COVERAGE_ENABLED = true
    }
  }
}

# Describes host clang toolchains.
pw_toolchain_host_clang_list = [
  pw_toolchain_host_clang.debug,
  pw_toolchain_host_clang.speed_optimized,
  pw_toolchain_host_clang.size_optimized,
  pw_toolchain_host_clang.fuzz,
  pw_toolchain_host_clang.asan,
  pw_toolchain_host_clang.ubsan,
  pw_toolchain_host_clang.ubsan_heuristic,
  pw_toolchain_host_clang.msan,
  pw_toolchain_host_clang.tsan,
  pw_toolchain_host_clang.coverage,
]
