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

import("//starboard/build/delegated_config.gni")

# =============================================================================
# DEFAULT COMPILER CONFIGS
# =============================================================================

config("compiler_defaults") {
  libs = [
    "EGL",
    "GLESv2",
    "X11",
    "Xcomposite",
    "Xrender",
  ]

  configs = [ "//starboard/linux/shared:compiler_defaults" ]
}

config("compiler_defaults_debug") {
  configs = [ "//starboard/linux/shared:compiler_defaults_debug" ]
}

config("compiler_defaults_devel") {
  configs = [ "//starboard/linux/shared:compiler_defaults_devel" ]
}

config("compiler_defaults_qa") {
  configs = [ "//starboard/linux/shared:compiler_defaults_qa" ]
}

config("compiler_defaults_gold") {
  configs = [ "//starboard/linux/shared:compiler_defaults_gold" ]
}

# =============================================================================
# DELEGATED CONFIGS
# =============================================================================

delegated_config("pedantic_warnings") {
  path = "//starboard/linux/shared"
  generate_default = false
}

delegated_config("optimizations") {
  path = "//starboard/linux/shared"
  prefixes = [ "no", "debuggable", "full" ]
}

delegated_config("rtti") {
  path = "//starboard/linux/shared"
}

config("wexit_time_destructors") {
  configs = [ "//starboard/linux/shared:wexit_time_destructors" ]
}

# =============================================================================
# starboard_platform TARGET
# =============================================================================

static_library("starboard_platform") {
  sources = [
    "//starboard/linux/x64x11/main.cc",
    "//starboard/linux/x64x11/sanitizer_options.cc",
    "//starboard/linux/x64x11/system_get_property.cc",
    "//starboard/shared/starboard/link_receiver.cc",
    "//starboard/shared/x11/application_x11.cc",
    "//starboard/shared/x11/window_create.cc",
    "//starboard/shared/x11/window_destroy.cc",
    "//starboard/shared/x11/window_get_platform_handle.cc",
    "//starboard/shared/x11/window_get_size.cc",
    "//starboard/shared/x11/window_internal.cc",
  ]
  
  defines = [
    # This must be defined when building Starboard, and must not when
    # building Starboard client code.
    "STARBOARD_IMPLEMENTATION",
  ]

  deps = [
    "//starboard/linux/shared:starboard_platform",
  ]
}
