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

# Platform specific configuration for Android on Starboard.  Automatically
# included by gyp_cobalt in all .gyp files by Cobalt together with base.gypi.
#
{
  'variables': {
    'target_os': 'android',
    'final_executable_type': 'shared_library',
    'gtest_target_type': 'shared_library',
    'sb_widevine_platform' : 'android',

    'gl_type': 'system_gles2',
    'enable_remote_debugging': 0,

    'linker_flags': [
      # The NDK default "ld" is actually the gold linker for all architectures
      # except arm64 (aarch64) where it's the bfd linker. Don't use either of
      # those, rather use lld everywhere. See release notes for NDK 19:
      # https://developer.android.com/ndk/downloads/revision_history
      '-fuse-ld=lld',
    ],

    # Define platform specific compiler and linker flags.
    # Refer to base.gypi for a list of all available variables.
    'compiler_flags_host': [
      '-O2',
    ],
    'compiler_flags_debug': [
      '-frtti',
      '-O0',
    ],
    'compiler_flags_devel': [
      '-frtti',
      '-O2',
    ],
    'compiler_flags_qa': [
      '-fno-rtti',
      '-gline-tables-only',
    ],
    'compiler_flags_qa_size': [
      '-Os',
    ],
    'compiler_flags_qa_speed': [
      '-O2',
    ],
    'compiler_flags_gold': [
      '-fno-rtti',
      '-gline-tables-only',
    ],
    'compiler_flags_gold_size': [
      '-Os',
    ],
    'compiler_flags_gold_speed': [
      '-O2',
    ],
    'platform_libraries': [
      '-lEGL',
      '-lGLESv2',
      '-lOpenSLES',
      '-landroid',
      '-llog',
      '-lmediandk',
    ],
    'conditions': [
      ['cobalt_fastbuild==0', {
        'compiler_flags_debug': [
          '-g',
        ],
        'compiler_flags_devel': [
          '-g',
        ],
        'compiler_flags_qa': [
          '-gline-tables-only',
        ],
        'compiler_flags_gold': [
          '-gline-tables-only',
        ],
      }],
    ],
  },

  'target_defaults': {
    'target_conditions': [
      ['sb_pedantic_warnings==1', {
        'cflags': [
          '-Wall',
          '-Wextra',
          '-Wunreachable-code',
          # Don't get pedantic about warnings from base macros. These must be
          # disabled after the -Wall above, so this has to be done here rather
          # than in the platform's target toolchain.
          # TODO: Rebase base and use static_assert instead of COMPILE_ASSERT
          '-Wno-unused-local-typedef',  # COMPILE_ASSERT
          '-Wno-missing-field-initializers',  # LAZY_INSTANCE_INITIALIZER
          # It's OK not to use some input parameters. Note that the order
          # matters: Wall implies Wunused-parameter and Wno-unused-parameter
          # has no effect if specified before Wall.
          '-Wno-unused-parameter',
        ],
      }],
      ['_type=="executable"', {
        # Android Lollipop+ requires relocatable executables.
        'cflags': [
          '-fPIE',
        ],
        'ldflags': [
          '-pie',
        ],
      },{
        # Android requires relocatable shared libraries.
        'cflags': [
          '-fPIC',
        ],
      }],
      ['use_asan==1', {
        'cflags': [
          '-fsanitize=address',
          '-fno-omit-frame-pointer',
        ],
        'ldflags': [
          '-fsanitize=address',
          # Force linking of the helpers in sanitizer_options.cc
          '-Wl,-u_sanitizer_options_link_helper',
        ],
        'defines': [
          'ADDRESS_SANITIZER',
        ],
      }],
      ['use_tsan==1', {
        'cflags': [
          '-fsanitize=thread',
          '-fno-omit-frame-pointer',
        ],
        'ldflags': [
          '-fsanitize=thread',
        ],
        'defines': [
          'THREAD_SANITIZER',
        ],
      }],
    ],
  }, # end of target_defaults
}
