| # 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, |
| |
| # Whether this is an evergreen compatible platform. A compatible platform |
| # can run the elf_loader and launch the evergreen build. |
| 'sb_evergreen_compatible': 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, |
| }, |
| }], |
| ], |
| } |