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

# This file was initially generated by starboard/tools/create_derived_build.py,
# though it may have been modified since its creation.

{
  'variables': {
    'sb_evergreen': 1,
    'sb_speech_supported': 0,

    'enable_vr': 0,
    'default_renderer_options_dependency': '<(DEPTH)/cobalt/renderer/default_options_starboard.gyp:default_options',
    'javascript_engine': 'v8',
    'cobalt_v8_buildtime_snapshot': 1,
    'cobalt_v8_enable_embedded_builtins': 1,

    'cobalt_font_package': 'minimal',

    # Override that omits the "data" subdirectory.
    # TODO: Remove when omitted for all platforms in base_configuration.gypi.
    'sb_static_contents_output_data_dir': '<(PRODUCT_DIR)/content',

    'final_executable_type': 'shared_library',
    'gtest_target_type': 'shared_library',

    # Using an inner scope for 'variables' so that it can be made a default
    # (and so overridden elsewhere), but yet still used immediately in this
    # file.
    'variables': {
      'use_dlmalloc_allocator%': 0,
    },
  },
  'target_defaults': {
    'defines' : [
      '_LIBCPP_HAS_MUSL_LIBC',
      '__STDC_FORMAT_MACROS', # so that we get PRI*

      # File format of the shared object we will generate.
      '__ELF__',

      # Use scalar portable implementations instead of Clang/GCC vector
      # extensions in SkVx.h.
      'SKNX_NO_SIMD',
    ],
  },
  'includes': [
    '<(DEPTH)/starboard/evergreen/sabi/sabi_flags.gypi',
    '<(DEPTH)/starboard/sabi/sabi.gypi',
  ],
}
