# Copyright (C) 2017 The Android Open Source Project
#
# 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
#
#      http://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("//gn/standalone/android.gni")
import("//gn/standalone/sanitizers/vars.gni")
import("//gn/standalone/toolchain/llvm.gni")

_sanitizer_lib_base_name = ""
if (is_asan || is_tsan || is_ubsan) {
  if (is_asan) {
    _sanitizer_lib_base_name = "clang_rt.asan"
  }
  if (is_tsan) {
    _sanitizer_lib_base_name = "clang_rt.tsan"
  }
  if (is_ubsan) {
    _sanitizer_lib_base_name = "clang_rt.ubsan"
    if (is_android || is_linux) {
      _sanitizer_lib_base_name += "_standalone"
    }
  }
}

declare_args() {
  sanitizer_lib_dir = ""
  sanitizer_lib = ""
  sanitizer_lib_dir_is_static = false
  if (_sanitizer_lib_base_name != "") {
    if (is_mac) {
      sanitizer_lib = "${_sanitizer_lib_base_name}_osx_dynamic"
      sanitizer_lib_dir = mac_clangrt_dir
    }
    if (is_linux) {
      sanitizer_lib = "lib${_sanitizer_lib_base_name}-x86_64.a"
      sanitizer_lib_dir_is_static = true

      # sanitizer_lib_dir is unused on linux. All usages of sanitizer_lib_dir
      # are gated by an if (!sanitizer_lib_dir_is_static).
    }
    if (is_android) {
      sanitizer_lib = "${_sanitizer_lib_base_name}-${android_llvm_arch}-android"
      sanitizer_lib_dir = android_clangrt_dir
    }
  }
}
