# 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 The Cobalt Authors. 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))
