# Copyright 2018 The Dawn Authors
#
# 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("../scripts/dawn_overrides_with_defaults.gni")
import("../scripts/dawn_features.gni")
import("//build_overrides/build.gni")

is_msvc = is_win && !is_clang

###############################################################################
# Third-party dependencies needed by libdawn_native
###############################################################################

# SPIRV-Cross
spirv_cross_dir = dawn_spirv_cross_dir

config("spirv_cross_public") {
  include_dirs = [ "${spirv_cross_dir}/.." ]
  defines = [ "SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS" ]
}

config("spirv_cross_internal") {
  if (!is_msvc) {
    cflags_cc = [
      "-Wno-implicit-fallthrough",
      "-Wno-return-type",
      "-Wno-sign-compare",
    ]
  } else {
    # Disable "not all control paths return a value" warning.
    cflags_cc = [ "/wd4715" ]
  }
}

static_library("spirv_cross") {
  public_configs = [ ":spirv_cross_public" ]
  configs += [ ":spirv_cross_internal" ]

  sources = [
    "${spirv_cross_dir}/GLSL.std.450.h",
    "${spirv_cross_dir}/spirv.hpp",
    "${spirv_cross_dir}/spirv_cfg.cpp",
    "${spirv_cross_dir}/spirv_cfg.hpp",
    "${spirv_cross_dir}/spirv_common.hpp",
    "${spirv_cross_dir}/spirv_cross.cpp",
    "${spirv_cross_dir}/spirv_cross.hpp",
    "${spirv_cross_dir}/spirv_cross_parsed_ir.cpp",
    "${spirv_cross_dir}/spirv_cross_parsed_ir.hpp",
    "${spirv_cross_dir}/spirv_parser.cpp",
    "${spirv_cross_dir}/spirv_parser.hpp",
  ]

  need_glsl_cross = dawn_enable_opengl

  if (dawn_enable_d3d12) {
    sources += [
      "${spirv_cross_dir}/spirv_hlsl.cpp",
      "${spirv_cross_dir}/spirv_hlsl.hpp",
    ]
    need_glsl_cross = true
  }

  if (dawn_enable_metal) {
    sources += [
      "${spirv_cross_dir}/spirv_msl.cpp",
      "${spirv_cross_dir}/spirv_msl.hpp",
    ]
    need_glsl_cross = true
  }

  if (need_glsl_cross) {
    sources += [
      "${spirv_cross_dir}/spirv_glsl.cpp",
      "${spirv_cross_dir}/spirv_glsl.hpp",
    ]
  }
}

static_library("spirv_cross_full_for_fuzzers") {
  public_configs = [ ":spirv_cross_public" ]
  configs += [ ":spirv_cross_internal" ]

  sources = [
    "${spirv_cross_dir}/GLSL.std.450.h",
    "${spirv_cross_dir}/spirv.hpp",
    "${spirv_cross_dir}/spirv_cfg.cpp",
    "${spirv_cross_dir}/spirv_cfg.hpp",
    "${spirv_cross_dir}/spirv_common.hpp",
    "${spirv_cross_dir}/spirv_cross.cpp",
    "${spirv_cross_dir}/spirv_cross.hpp",
    "${spirv_cross_dir}/spirv_cross_parsed_ir.cpp",
    "${spirv_cross_dir}/spirv_cross_parsed_ir.hpp",
    "${spirv_cross_dir}/spirv_glsl.cpp",
    "${spirv_cross_dir}/spirv_glsl.hpp",
    "${spirv_cross_dir}/spirv_hlsl.cpp",
    "${spirv_cross_dir}/spirv_hlsl.hpp",
    "${spirv_cross_dir}/spirv_msl.cpp",
    "${spirv_cross_dir}/spirv_msl.hpp",
    "${spirv_cross_dir}/spirv_parser.cpp",
    "${spirv_cross_dir}/spirv_parser.hpp",
  ]
}

# Empty targets to add the include dirs and list the sources of Khronos headers for header inclusion check.
config("khronos_headers_public") {
  include_dirs = [ "khronos" ]
}

config("vulkan_headers_config") {
  include_dirs = [ "khronos" ]
  if (is_win) {
    defines = [ "VK_USE_PLATFORM_WIN32_KHR" ]
  }
  if (is_linux && !is_chromeos) {
    defines = [ "VK_USE_PLATFORM_XCB_KHR" ]
  }
  if (is_android) {
    defines = [ "VK_USE_PLATFORM_ANDROID_KHR" ]
  }
  if (is_fuchsia) {
    defines = [ "VK_USE_PLATFORM_FUCHSIA" ]
  }
}

source_set("vulkan_headers") {
  sources = [
    "khronos/vulkan/vk_icd.h",
    "khronos/vulkan/vk_layer.h",
    "khronos/vulkan/vk_platform.h",
    "khronos/vulkan/vk_sdk_platform.h",
    "khronos/vulkan/vulkan.h",
    "khronos/vulkan/vulkan_core.h",
  ]

  public_configs = [ ":vulkan_headers_config" ]
}

source_set("khronos_platform") {
  sources = [
    "khronos/KHR/khrplatform.h",
  ]

  public_configs = [ ":khronos_headers_public" ]
}

###############################################################################
# Gtest Gmock - Handle building inside and outside of Chromium.
###############################################################################

# When building outside of Chromium we need to define our own targets for GTest
# and GMock. However when compiling inside of Chromium we need to reuse the
# existing targets, both because Chromium has a special harness for swarming
# and because otherwise the "gn check" fails.

if (!build_with_chromium) {
  # When we aren't in Chromium we define out own targets based on the location
  # of the googletest repo.
  googletest_dir = dawn_googletest_dir

  config("gtest_config") {
    include_dirs = [
      "${googletest_dir}/googletest",
      "${googletest_dir}/googletest/include",
    ]
  }

  static_library("gtest") {
    testonly = true
    sources = [
      "${googletest_dir}/googletest/src/gtest-all.cc",
    ]
    public_configs = [ ":gtest_config" ]
  }

  config("gmock_config") {
    include_dirs = [
      "${googletest_dir}/googlemock",
      "${googletest_dir}/googlemock/include",
      "${googletest_dir}/googletest/include",
    ]
  }

  static_library("gmock") {
    testonly = true
    sources = [
      "${googletest_dir}/googlemock/src/gmock-all.cc",
    ]
    public_configs = [ ":gmock_config" ]
  }

  group("gmock_and_gtest") {
    testonly = true
    public_deps = [
      ":gmock",
      ":gtest",
    ]
  }
} else {
  # When we are in Chromium we reuse its targets, and also add some deps that
  # are needed to launch the test in swarming mode.
  group("gmock_and_gtest") {
    testonly = true
    public_deps = [
      "//base",
      "//base/test:test_support",
      "//testing/gmock",
      "//testing/gtest",
    ]
  }
}

###############################################################################
# GLFW - good enough build targets
###############################################################################

glfw_dir = dawn_glfw_dir

config("glfw_public") {
  include_dirs = [ "${glfw_dir}/include" ]

  if (is_win) {
    defines = [ "_GLFW_WIN32" ]
  }

  if (is_mac) {
    defines = [ "_GLFW_COCOA" ]
  }

  if (is_linux) {
    defines = [ "_GLFW_X11" ]
  }
}

static_library("glfw") {
  public_configs = [ ":glfw_public" ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [ "//build/config/compiler:no_chromium_code" ]

  if (is_msvc) {
    # nonstandard extension, function/data pointer conversion in expression
    cflags_c = [ "/wd4152" ]
  } else {
    cflags_c = [
      "-Wno-sign-compare",
      "-Wno-missing-field-initializers",
    ]
  }

  sources = [
    "${glfw_dir}/include/GLFW/glfw3.h",
    "${glfw_dir}/include/GLFW/glfw3native.h",
    "${glfw_dir}/src/context.c",
    "${glfw_dir}/src/egl_context.c",
    "${glfw_dir}/src/egl_context.h",
    "${glfw_dir}/src/init.c",
    "${glfw_dir}/src/input.c",
    "${glfw_dir}/src/internal.h",
    "${glfw_dir}/src/monitor.c",
    "${glfw_dir}/src/osmesa_context.c",
    "${glfw_dir}/src/osmesa_context.h",
    "${glfw_dir}/src/vulkan.c",
    "${glfw_dir}/src/window.c",
  ]
  libs = []

  if (is_win) {
    sources += [
      "${glfw_dir}/src/wgl_context.c",
      "${glfw_dir}/src/wgl_context.h",
      "${glfw_dir}/src/win32_init.c",
      "${glfw_dir}/src/win32_joystick.c",
      "${glfw_dir}/src/win32_joystick.h",
      "${glfw_dir}/src/win32_monitor.c",
      "${glfw_dir}/src/win32_platform.h",
      "${glfw_dir}/src/win32_thread.c",
      "${glfw_dir}/src/win32_time.c",
      "${glfw_dir}/src/win32_window.c",
    ]
  }

  if (is_linux || is_mac) {
    sources += [
      "${glfw_dir}/src/posix_thread.c",
      "${glfw_dir}/src/posix_thread.h",
    ]
  }

  if (is_linux) {
    sources += [
      "${glfw_dir}/src/glx_context.c",
      "${glfw_dir}/src/glx_context.h",
      "${glfw_dir}/src/linux_joystick.c",
      "${glfw_dir}/src/linux_joystick.h",
      "${glfw_dir}/src/posix_time.c",
      "${glfw_dir}/src/posix_time.h",
      "${glfw_dir}/src/x11_init.c",
      "${glfw_dir}/src/x11_monitor.c",
      "${glfw_dir}/src/x11_platform.h",
      "${glfw_dir}/src/x11_window.c",
      "${glfw_dir}/src/xkb_unicode.c",
      "${glfw_dir}/src/xkb_unicode.h",
    ]

    libs += [
      "rt",
      "dl",
      "X11",
      "Xcursor",
      "Xinerama",
      "Xrandr",
    ]
  }

  if (is_mac) {
    sources += [
      "${glfw_dir}/src/cocoa_init.m",
      "${glfw_dir}/src/cocoa_joystick.h",
      "${glfw_dir}/src/cocoa_joystick.m",
      "${glfw_dir}/src/cocoa_monitor.m",
      "${glfw_dir}/src/cocoa_platform.h",
      "${glfw_dir}/src/cocoa_time.c",
      "${glfw_dir}/src/cocoa_window.m",
      "${glfw_dir}/src/nsgl_context.h",
      "${glfw_dir}/src/nsgl_context.m",
    ]
    libs += [
      "Cocoa.framework",
      "IOKit.framework",
      "CoreFoundation.framework",
      "CoreVideo.framework",
    ]
    cflags_objc = [
      "-Wno-sign-compare",
      "-Wno-unguarded-availability",
    ]
  }
}

###############################################################################
# Header-only dependencies for samples
###############################################################################

if (dawn_standalone) {
  # GLM
  config("glm_public_config") {
    include_dirs = [ "glm" ]
  }
  source_set("glm") {
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]

    public_configs = [ ":glm_public_config" ]

    # GLM is header only but has too many files to list them.
  }
}
