# 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.

declare_args() {
  is_debug = true
  is_clang = true
}

declare_args() {
  ar = "ar"
}

# Platform detection
if (target_os == "") {
  target_os = host_os
}
if (current_os == "") {
  current_os = target_os
}

is_android = current_os == "android"
is_linux = current_os == "linux"
is_linux_host = host_os == "linux"
is_mac = current_os == "mac"

if (target_cpu == "") {
  target_cpu = host_cpu
  if (is_android) {
    target_cpu = "arm"
  }
}
if (current_cpu == "") {
  current_cpu = target_cpu
}

default_configs = [
  "//build:debug_symbols",
  "//build:default",
  "//build:extra_warnings",
  "//build:no_exceptions",
  "//build:no_rtti",
  "//build/libc++:config",
  "//build/sanitizers:sanitizers_cflags",
]

if (!is_debug) {
  default_configs += [ "//build:release" ]
}

set_defaults("source_set") {
  configs = default_configs
}

set_defaults("static_library") {
  configs = default_configs
}

# Realistically the only shared_library that we build right now is libc++.so
# when use_custom_libcxx=true (on Linux). Hence don't add a dependency on
# libc++ itself on these targets.
set_defaults("shared_library") {
  configs = default_configs
  configs += [ "//build:shared_library" ]
}

set_defaults("executable") {
  configs = default_configs
  configs += [ "//build:executable" ]
}

set_default_toolchain("//build/toolchain:gcc_like")
host_toolchain = "//build/toolchain:gcc_like_host"
