blob: c0dfb8b0c0d6ab13c69f43e3f2a658471b6d49b1 [file] [log] [blame]
# 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.
#####################################################################
# If you modify this file, PLEASE REMEMBER TO UPDATE
# //starboard/build/config/base.gni AS WELL
#####################################################################
# This contains the defaults and documentation for all Starboard-defined GYP
# variables. Applications that build on top of Starboard are likely to have
# their own base configuration, as well.
#
# starboard/build/gyp_runner includes this file automatically in all .gyp files
# that it processes.
{
'variables': {
# We need to define some variables inside of an inner 'variables' scope
# so that they can be referenced by other outer variables here. Also, it
# allows for the specification of default values that get referenced by
# a top level scope.
'variables': {
'sb_enable_lib%': 0,
# TODO: Remove the "data" subdirectory.
'sb_static_contents_output_data_dir%': '<(PRODUCT_DIR)/content/data',
'sb_deploy_output_dir%': '<(PRODUCT_DIR)/deploy',
},
# Enables the yasm compiler to be used to compile .asm files.
'yasm_exists%': 0,
# Where yasm can be found on the target device.
'path_to_yasm%': "yasm",
# Enabling this variable enables pedantic levels of warnings for the current
# toolchain.
'sb_pedantic_warnings%': 0,
# Enables embedding Cobalt as a shared library within another app. This
# requires a 'lib' starboard implementation for the corresponding platform.
'sb_enable_lib%': '<(sb_enable_lib)',
# When this is set to true, the web bindings for the microphone
# are disabled
'sb_disable_microphone_idl%': 0,
# Directory path to static contents' data.
'sb_static_contents_output_data_dir%': '<(sb_static_contents_output_data_dir)',
# Top-level directory for staging deploy build output. Platform deploy
# actions should use <(target_deploy_dir) defined in deploy.gypi to place
# artifacts for each deploy target in its own subdirectoy.
'sb_deploy_output_dir%': '<(sb_deploy_output_dir)',
# Contains the name of the hosting OS. The value is defined by the gyp
# wrapper script.
'host_os%': 'win',
# The target platform id as a string, like 'linux-x64x11', 'win32', etc..
'sb_target_platform': '',
# Whether this is an evergreen build.
'sb_evergreen': 0,
# The operating system of the target, separate from the target_arch. In many
# cases, an 'unknown' value is fine, but, if set to 'linux', then we can
# assume some things, and it'll save us some configuration time.
'target_os%': 'unknown',
# The variables allow changing the target type on platforms where the
# native code may require an additional packaging step (ex. Android).
'gtest_target_type%': 'executable',
'final_executable_type%': 'executable',
# Halt execution on failure to allocate memory.
'abort_on_allocation_failure%': 1,
# The relative path from src/ to the directory containing the
# starboard_platform.gyp file. It is currently set to
# 'starboard/<(target_arch)' to make semi-starboard platforms work.
# TODO: Set the default value to '' once all semi-starboard platforms are
# moved to starboard.
'starboard_path%': 'starboard/<(target_arch)',
# The source of EGL and GLES headers and libraries.
# Valid values (case and everything sensitive!):
# 'none' - No EGL + GLES implementation is available on this platform.
# 'system_gles3' - Use the system implementation of EGL + GLES3. The
# headers and libraries must be on the system include and
# link paths.
# 'system_gles2' - Use the system implementation of EGL + GLES2. The
# headers and libraries must be on the system include and
# link paths.
# 'glimp' - Cobalt's own EGL + GLES2 implementation. This requires a
# valid Glimp implementation for the platform.
# 'angle' - A DirectX-to-OpenGL adaptation layer. This requires a valid
# ANGLE implementation for the platform.
# Choosing an unsupported value will result in a GYP error:
# "cobalt/renderer/egl_and_gles/egl_and_gles_<gl_type>.gyp not found"
'gl_type%': 'system_gles2',
# Temporary indicator for Tizen - should eventually move to feature defines.
'tizen_os%': 0,
# The event polling mechanism available on this platform to support libevent.
# Platforms may redefine to 'poll' if necessary.
# Other mechanisms, e.g. devpoll, kqueue, select, are not yet supported.
'sb_libevent_method%': 'epoll',
# Used to indicate that the player is filter based.
'sb_filter_based_player%': 1,
# Used to enable benchmarks.
'sb_enable_benchmark%': 0,
# This variable dictates whether a given gyp target should be compiled with
# optimization flags for size vs. speed.
'optimize_target_for_speed%': 0,
# Compiler configuration.
# The following variables are used to specify compiler and linker
# flags by build configuration. Platform specific .gypi includes and
# .gyp targets can use them to add additional flags.
'compiler_flags%': [],
'linker_flags%': [],
# TODO: Replace linker_flags_(config) with linker_shared_flags_(config)
# and linker_executable_flags_(config) to distinguish the flags for
# SharedLibraryLinker and ExecutableLinker.
'compiler_flags_debug%': [],
'compiler_flags_c_debug%': [],
'compiler_flags_cc_debug%': [],
'linker_flags_debug%': [],
'defines_debug%': [],
'compiler_flags_devel%': [],
'compiler_flags_c_devel%': [],
'compiler_flags_cc_devel%': [],
'linker_flags_devel%': [],
'defines_devel%': [],
# For qa and gold configs, different compiler flags may be specified for
# gyp targets that should be built for size than for speed. Targets which
# specify 'optimize_target_for_speed == 1', will compile with flags:
# ['compiler_flags_*<config>', 'compiler_flags_*<config>_speed'].
# Otherwise, targets will use compiler flags:
# ['compiler_flags_*<config>', 'compiler_flags_*<config>_size'].
# Platforms may decide to use the same optimization flags for both
# target types by leaving the '*_size' and '*_speed' variables empty.
'compiler_flags_qa%': [],
'compiler_flags_qa_size%': [],
'compiler_flags_qa_speed%': [],
'compiler_flags_c_qa%': [],
'compiler_flags_c_qa_size%': [],
'compiler_flags_c_qa_speed%': [],
'compiler_flags_cc_qa%': [],
'compiler_flags_cc_qa_size%': [],
'compiler_flags_cc_qa_speed%': [],
'linker_flags_qa%': [],
'defines_qa%': [],
'compiler_flags_gold%': [],
'compiler_flags_gold_size%': [],
'compiler_flags_gold_speed%': [],
'compiler_flags_c_gold%': [],
'compiler_flags_c_gold_size%': [],
'compiler_flags_c_gold_speed%': [],
'compiler_flags_cc_gold%': [],
'compiler_flags_cc_gold_size%': [],
'compiler_flags_cc_gold_speed%': [],
'linker_flags_gold%': [],
'defines_gold%': [],
'compiler_flags_host%': [],
'compiler_flags_c_host%': [],
'defines_host%': [],
'platform_libraries%': [],
# TODO: Remove these compatibility variables from Starboard.
# List of platform-specific targets that get compiled into cobalt.
'cobalt_platform_dependencies%': [],
'conditions': [
['host_os=="linux"', {
'conditions': [
['target_arch=="arm" or target_arch=="ia32" or target_arch=="x32"\
or target_arch=="mips" or target_arch=="mipsel" or\
target_arch=="ppc"', {
# All the 32 bit CPU architectures v8 supports.
'compiler_flags_cc_host%': [
'-m32',
'--std=gnu++11',
],
'linker_flags_host%': [
'-target', 'i386-unknown-linux-gnu',
'-pthread',
],
}, {
'compiler_flags_cc_host%': [
'--std=gnu++11',
],
'linker_flags_host%': [
'-pthread',
],
}],
],
}, {
'compiler_flags_cc_host%': [],
'linker_flags_host%': [],
}],
],
},
'target_defaults': {
'variables': {
# The condition that operates on sb_pedantic_warnings is in a
# target_conditions section, and will not have access to the default
# fallback value of sb_pedantic_warnings at the top of this file,
# or to the sb_pedantic_warnings variable placed at the root
# variables scope of .gyp files, because those variables are not set at
# target scope. As a workaround, if sb_pedantic_warnings is not
# set at target scope, define it in target scope to contain whatever
# value it has during early variable expansion. That's enough to make
# it available during target conditional processing.
'sb_pedantic_warnings%': '<(sb_pedantic_warnings)',
# This workaround is used to surface the default setting for the variable
# 'optimize_target_for_speed' if the gyp target does not explicitly set
# it.
'optimize_target_for_speed%': '<(optimize_target_for_speed)',
},
'cflags': [ '<@(compiler_flags)' ],
'ldflags': [ '<@(linker_flags)' ],
'cflags_host': [ '<@(compiler_flags_host)', ],
'cflags_c_host': [ '<@(compiler_flags_c_host)', ],
'cflags_cc_host': [ '<@(compiler_flags_cc_host)', ],
'ldflags_host': [ '<@(linker_flags_host)' ],
# Location of Cygwin which is used by the build system when running on a
# Windows platform.
'msvs_cygwin_dirs': ['<(DEPTH)/third_party/cygwin'],
# Allows any source file to include files relative to the source tree.
'include_dirs': [ '<(DEPTH)' ],
'libraries': [ '<@(platform_libraries)' ],
'conditions': [
['final_executable_type=="shared_library"', {
'target_conditions': [
['_toolset=="target"', {
'defines': [
# Rewrite main() functions into StarboardMain. TODO: This is a
# hack, it would be better to be more surgical, here.
'main=StarboardMain',
],
'cflags': [
# To link into a shared library on Linux and similar platforms,
# the compiler must be told to generate Position Independent Code.
# This appears to cause errors when linking the code statically,
# however.
'-fPIC',
],
}],
],
}],
['OS == "starboard"', {
'target_conditions': [
['_toolset=="target"', {
# Keeps common Starboard target changes in the starboard project.
'includes': [
'../../starboard/starboard_base_target.gypi',
],
}],
],
}], # OS == "starboard"
],
# TODO: Revisit and remove unused configurations.
'configurations': {
'debug_base': {
'abstract': 1,
# no optimization, include symbols:
'cflags': [ '<@(compiler_flags_debug)' ],
'cflags_c': [ '<@(compiler_flags_c_debug)' ],
'cflags_cc': [ '<@(compiler_flags_cc_debug)' ],
'ldflags': [ '<@(linker_flags_debug)' ],
'defines': [
'<@(defines_debug)',
'STARBOARD_BUILD_TYPE_DEBUG',
'_DEBUG',
],
}, # end of debug_base
'devel_base': {
'abstract': 1,
# optimize, include symbols:
'cflags': [ '<@(compiler_flags_devel)' ],
'cflags_c': [ '<@(compiler_flags_c_devel)' ],
'cflags_cc': [ '<@(compiler_flags_cc_devel)' ],
'ldflags': [ '<@(linker_flags_devel)' ],
'defines': [
'<@(defines_devel)',
'STARBOARD_BUILD_TYPE_DEVEL',
'_DEBUG',
],
}, # end of devel_base
'qa_base': {
'abstract': 1,
# optimize:
'target_conditions': [
['optimize_target_for_speed==1', {
'cflags': [
'<@(compiler_flags_qa)',
'<@(compiler_flags_qa_speed)',
],
'cflags_c': [
'<@(compiler_flags_c_qa)',
'<@(compiler_flags_c_qa_speed)',
],
'cflags_cc': [
'<@(compiler_flags_cc_qa)',
'<@(compiler_flags_cc_qa_speed)',
],
}, {
'cflags': [
'<@(compiler_flags_qa)',
'<@(compiler_flags_qa_size)',
],
'cflags_c': [
'<@(compiler_flags_c_qa)',
'<@(compiler_flags_c_qa_size)',
],
'cflags_cc': [
'<@(compiler_flags_cc_qa)',
'<@(compiler_flags_cc_qa_size)',
],
}]
],
'ldflags': [ '<@(linker_flags_qa)' ],
'defines': [
'<@(defines_qa)',
'STARBOARD_BUILD_TYPE_QA',
'NDEBUG',
],
}, # end of devel_base
'gold_base': {
'abstract': 1,
# optimize:
'target_conditions': [
['optimize_target_for_speed==1', {
'cflags': [
'<@(compiler_flags_gold)',
'<@(compiler_flags_gold_speed)',
],
'cflags_c': [
'<@(compiler_flags_c_gold)',
'<@(compiler_flags_c_gold_speed)',
],
'cflags_cc': [
'<@(compiler_flags_cc_gold)',
'<@(compiler_flags_cc_gold_speed)',
],
}, {
'cflags': [
'<@(compiler_flags_gold)',
'<@(compiler_flags_gold_size)',
],
'cflags_c': [
'<@(compiler_flags_c_gold)',
'<@(compiler_flags_c_gold_size)',
],
'cflags_cc': [
'<@(compiler_flags_cc_gold)',
'<@(compiler_flags_cc_gold_size)',
],
}]
],
'ldflags': [ '<@(linker_flags_gold)' ],
'defines': [
'<@(defines_gold)',
'STARBOARD_BUILD_TYPE_GOLD',
'NDEBUG',
],
}, # end of gold_base
}, # end of configurations
}, # end of target_defaults
'conditions': [
['cobalt_config != "gold"', {
'variables' : {
'sb_allows_memory_tracking': 1,
},
},
{
'variables' : {
'sb_allows_memory_tracking': 0,
},
}],
],
}