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

# Modifications Copyright 2017 Google Inc. All Rights Reserved.
#
# 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.

# =============================================================================
# WHAT IS THIS FILE?
# =============================================================================
#
# This is the master GN build configuration. This file is loaded after the
# build args (args.gn) for the build directory and after the toplevel ".gn"
# file (which points to this file as the build configuration).
#
# This file will be executed and the resulting context will be used to execute
# every other file in the build. So variables declared here (that don't start
# with an underscore) will be implicitly global. Note that unlike in GYP, in
# GN the practice is to limit the number of global variables and define
# variables in .gni files instead.
#
# YOU SHOULD ALMOST NEVER NEED TO ADD FLAGS TO THIS FILE. GN allows any file in
# the build to declare build flags.
#
# - If you want to add a new per-platform variable (e.g. javascript_engine,
#   enable_map_to_mesh, etc.), add that to //cobalt/build/config/base.gni or
#   //starboard/build/config/base.gni.
#
# - If you want to add an actual build arg (i.e. something a developer would
#   specify at compile time, such as cobalt_use_fastbuild or use_asan):
#
#    - If your build arg will only be used in a single target, say //cobalt/foo,
#      you can put a declare_args() block in //cobalt/foo/BUILD.gn and use it
#      there.  Nobody else in the build needs to see the flag.
#
#    - Otherwise, you can put the argument in a .gni file. This should be put in
#      the lowest level of the build that knows about this feature (which should
#      almost always be outside of "build" directories!).
#
# - If your flag toggles a target on and off or toggles between different
#   versions of similar things, write a "group" target that forwards to the
#   right target (or no target) depending on the value of the build flag. This
#   group can be in the same BUILD.gn file as the build flag, and targets can
#   depend unconditionally on the group rather than duplicating flag checks
#   across many targets.

# =============================================================================
# PLATFORM SELECTION
# =============================================================================
#
# There are two main things to set: "cobalt_config" and "target_platform".
# These are set via `gn args`. The starboard platform path is then calculated
# from target_platform. Finally, we import a file containing platform-specific
# configuration (such as the default toolchain and target OS/architecture) that
# must be set in BUILDCONFIG.gn.

declare_args() {
  # The current build configuration.
  cobalt_config = "gold"

  # The platform we are building for.
  target_platform = ""
}
assert(target_platform != "", "You must specify a target platform")

# The relative path from // to the directory containing the
# BUILD.gn file defining the starboard_platform target
starboard_path = rebase_path(exec_script("//cobalt/build/get_starboard_path.py",
                                         [ target_platform ],
                                         "trim string"),
                             "//")

# Import platform-specific build config variables
import("//$starboard_path/buildconfig.gni")

# =============================================================================
# THE TARGET OS AND ARCHITECTURE
# =============================================================================
#
# GN has three families of built in variables:
#  - host_os, host_cpu, host_toolchain
#  - target_os, target_cpu, default_toolchain
#  - current_os, current_cpu, current_toolchain.
#
# There are three different types of each of these things: The "host"
# represents the computer doing the compile and never changes. The "target"
# represents the main thing we're trying to build. The "current" represents
# which configuration is currently being defined, which can be either the
# host, the target, or even (in theory) something completely different. GN will
# run the same build file multiple times for the different required
# configuration in the same build.
#
# Note the default_toolchain isn't symmetrical (you would expect
# target_toolchain). This is because the "default" toolchain is a GN built-in
# concept, and "target" is something our build sets up that's symmetrical with
# its GYP counterpart. Potentially the built-in default_toolchain variable
# could be renamed in the future.
#
# When writing build files, to do something only for the host:
#   if (current_toolchain == host_toolchain) { ...

if (defined(target_os_)) {
  target_os = target_os_
} else {
  target_os = "unknown"
}
target_cpu = target_cpu_

if (current_os == "") {
  current_os = target_os
}
if (current_cpu == "") {
  current_cpu = target_cpu
}

# =============================================================================
# TARGET DEFAULTS
# =============================================================================
#
# Set up the default configuration for every build target of the given type.
# The values configured here will be automatically set on the scope of the
# corresponding target. Target definitions can add or remove to the settings
# here as needed.

# All binary targets will get this list of configs by default.
_shared_binary_target_configs = [
  "//cobalt/build/config:compiler_defaults",
  "//cobalt/build/config:compiler_defaults_$cobalt_config",

  "//starboard/build/config:compiler_defaults",
  "//$starboard_path:compiler_defaults",
  "//$starboard_path:compiler_defaults_$cobalt_config",

  "//cobalt/build/config:final_executable_target_config",

  "//starboard/build/config:no_pedantic_warnings",
  "//starboard/build/config:default_rtti",
  "//starboard/build/config:default_optimizations",
]

# Apply that default list to the binary target types.
set_defaults("executable") {
  configs = _shared_binary_target_configs
}
set_defaults("static_library") {
  configs = _shared_binary_target_configs
}
set_defaults("shared_library") {
  configs = _shared_binary_target_configs
}
set_defaults("source_set") {
  configs = _shared_binary_target_configs
}

# =============================================================================
# TARGET TYPE SETUP
# =============================================================================

# Define some additional target types. These are useful on platforms where the
# native code may require an additional packaging step (ex. Android).

if (!defined(test_target_type)) {
  test_target_type = "executable"
}
template("test") {
  target(test_target_type, target_name) {
    # Explicitly forward visibility, implicitly forward everything else.
    # Forwarding "*" doesn't recurse into nested scopes (to avoid copying all
    # globals into each template invocation), so won't pick up file-scoped
    # variables. Normally this isn't too bad, but visibility is commonly
    # defined at the file scope. Explicitly forwarding visibility and then
    # excluding it from the "*" set works around this problem.
    # See http://crbug.com/594610
    forward_variables_from(invoker, [ "visibility" ])
    forward_variables_from(invoker, "*", [ "visibility" ])
  }
}

if (!defined(final_executable_type)) {
  final_executable_type = "executable"
}
template("final_executable") {
  target(final_executable_type, target_name) {
    # See comment above
    forward_variables_from(invoker, [ "visibility" ])
    forward_variables_from(invoker, "*", [ "visibility" ])
  }
}

# Set the default toolchain and the host toolchain
set_default_toolchain(target_toolchain)
assert(defined(host_toolchain))
