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

dawn_root = "../externals/dawn"
import("$dawn_root/generator/dawn_generator.gni")
import("$dawn_root/scripts/dawn_features.gni")

###############################################################################
# Template to wrap the Dawn code generator
###############################################################################

# Template to help with invocation of the Dawn code generator, looks like this:
#
#   dawn_json_generator("my_target_gen") {
#     # Which generator target to output
#     target = "my_target"
#     # The list of expected outputs, generation fails if there's a mismatch
#     outputs = [
#       "MyTarget.cpp",
#       "MyTarget.h",
#     ]
#   }
#
# Using the generated files is done like so:
#
#   shared_library("my_target") {
#     deps = [ ":my_target_gen "]
#     sources = get_target_outputs(":my_target_gen")
#   }
#
###############################################################################
# Common dawn libraries and configs
###############################################################################

config("libdawn_public") {
  include_dirs = [
    target_gen_dir,
    "$dawn_root/src/include",
    "$dawn_root/src",
  ]
}

config("dawn_internal") {
  include_dirs = [ "$dawn_root/src" ]

  defines = []
  if (dawn_always_assert || is_debug) {
    defines += [ "DAWN_ENABLE_ASSERTS" ]
  }

  if (dawn_enable_d3d12) {
    defines += [ "DAWN_ENABLE_BACKEND_D3D12" ]
  }
  if (dawn_enable_metal) {
    defines += [ "DAWN_ENABLE_BACKEND_METAL" ]
  }
  if (dawn_enable_null) {
    defines += [ "DAWN_ENABLE_BACKEND_NULL" ]
  }
  if (dawn_enable_opengl) {
    defines += [ "DAWN_ENABLE_BACKEND_OPENGL" ]
  }
  if (dawn_enable_vulkan) {
    defines += [ "DAWN_ENABLE_BACKEND_VULKAN" ]
  }

  configs = [ ":libdawn_public" ]

  # Only internal Dawn targets can use this config, this means only targets in
  # this BUILD.gn file.
  visibility = [ ":*" ]
}

static_library("dawn_common") {
  sources = rebase_path([
                          "src/common/Assert.cpp",
                          "src/common/Assert.h",
                          "src/common/BitSetIterator.h",
                          "src/common/Compiler.h",
                          "src/common/DynamicLib.cpp",
                          "src/common/DynamicLib.h",
                          "src/common/HashUtils.h",
                          "src/common/Math.cpp",
                          "src/common/Math.h",
                          "src/common/Platform.h",
                          "src/common/Result.cpp",
                          "src/common/Result.h",
                          "src/common/Serial.h",
                          "src/common/SerialMap.h",
                          "src/common/SerialQueue.h",
                          "src/common/SerialStorage.h",
                          "src/common/SwapChainUtils.h",
                          "src/common/vulkan_platform.h",
                          "src/common/windows_with_undefs.h",
                        ],
                        ".",
                        "$dawn_root")

  configs += [ ":dawn_internal" ]
  deps = [
    ":dawn_headers",
  ]
}

###############################################################################
# Dawn headers and libdawn.so
###############################################################################

dawn_json_generator("dawn_headers_gen") {
  target = "dawn_headers"
  outputs = [
    "dawn/dawncpp.h",
    "dawn/dawn.h",
  ]
}

source_set("dawn_headers") {
  public_configs = [ ":libdawn_public" ]
  deps = [
    ":dawn_headers_gen",
  ]

  sources = get_target_outputs(":dawn_headers_gen")
  sources += [
    "src/include/dawn/EnumClassBitmasks.h",
    "src/include/dawn/dawn_export.h",
    "src/include/dawn/dawn_wsi.h",
  ]
}

dawn_json_generator("libdawn_gen") {
  target = "libdawn"
  outputs = [
    "dawn/dawncpp.cpp",
    "dawn/dawn.c",
  ]
}

static_library("libdawn") {
  public_deps = [
    ":dawn_headers",
  ]

  defines = [ "DAWN_IMPLEMENTATION" ]
  deps = [
    ":libdawn_gen",
  ]
  sources = get_target_outputs(":libdawn_gen")
}

###############################################################################
# libdawn_native.so
###############################################################################

config("libdawn_native_internal") {
  configs = [ ":dawn_internal" ]
  defines = [ "DAWN_NATIVE_IMPLEMENTATION" ]

  # Suppress warnings that Metal isn't in the deployment target of Chrome
  if (is_mac) {
    cflags_objcc = [ "-Wno-unguarded-availability" ]
  }
}

dawn_json_generator("libdawn_native_utils_gen") {
  target = "dawn_native_utils"
  outputs = [
    "dawn_native/ProcTable.cpp",
    "dawn_native/dawn_structs_autogen.h",
    "dawn_native/dawn_structs_autogen.cpp",
    "dawn_native/ValidationUtils_autogen.h",
    "dawn_native/ValidationUtils_autogen.cpp",
  ]
}

if (dawn_enable_opengl) {
  dawn_generator("libdawn_native_opengl_loader_gen") {
    script = "${dawn_root}/generator/opengl_loader_generator.py"
    args = [
      "--gl-xml",
      rebase_path("../externals/opengl-registry/xml/gl.xml", root_build_dir),
    ]
    outputs = [
      "dawn_native/opengl/OpenGLFunctionsBase_autogen.cpp",
      "dawn_native/opengl/OpenGLFunctionsBase_autogen.h",
      "dawn_native/opengl/opengl_platform_autogen.h",
    ]
  }
}

# Public libdawn_native headers so they can be publically visible for
# dependencies of libdawn_native
source_set("libdawn_native_headers") {
  public_deps = [
    ":dawn_headers",
  ]
  sources = rebase_path(
          [
            "src/include/dawn_native/DawnNative.h",
            "src/include/dawn_native/dawn_native_export.h",

            # Include all backend's public headers so that dependencies can include
            # them even when the backends are disabled.
            "src/include/dawn_native/D3D12Backend.h",
            "src/include/dawn_native/MetalBackend.h",
            "src/include/dawn_native/NullBackend.h",
            "src/include/dawn_native/OpenGLBackend.h",
            "src/include/dawn_native/VulkanBackend.h",
          ],
          ".",
          "$dawn_root")
}

# The meat of the compilation for libdawn_native so that we can cheaply have
# shared_library / static_library / component versions of it.
source_set("libdawn_native_sources") {
  deps = [
    ":dawn_common",
    ":libdawn_native_utils_gen",
    "//third_party/spirv-cross:spirv_cross",
    "//third_party/spirv-tools:spvtools_val",
  ]

  # Put the internal config public so that unittests can see internal headers
  public_configs = [ ":libdawn_native_internal" ]

  # Set the headers as a public dependency so they are visible to unittests
  public_deps = [
    ":libdawn_native_headers",
  ]

  libs = []

  sources = rebase_path(get_target_outputs(":libdawn_native_utils_gen"),
                        ".",
                        "$dawn_root")
  sources += rebase_path([
                           "src/dawn_native/Adapter.cpp",
                           "src/dawn_native/Adapter.h",
                           "src/dawn_native/BackendConnection.cpp",
                           "src/dawn_native/BackendConnection.h",
                           "src/dawn_native/BindGroup.cpp",
                           "src/dawn_native/BindGroup.h",
                           "src/dawn_native/BindGroupLayout.cpp",
                           "src/dawn_native/BindGroupLayout.h",
                           "src/dawn_native/Buffer.cpp",
                           "src/dawn_native/Buffer.h",
                           "src/dawn_native/CommandAllocator.cpp",
                           "src/dawn_native/CommandAllocator.h",
                           "src/dawn_native/CommandBuffer.cpp",
                           "src/dawn_native/CommandBuffer.h",
                           "src/dawn_native/CommandBufferStateTracker.cpp",
                           "src/dawn_native/CommandBufferStateTracker.h",
                           "src/dawn_native/CommandEncoder.cpp",
                           "src/dawn_native/CommandEncoder.h",
                           "src/dawn_native/Commands.cpp",
                           "src/dawn_native/Commands.h",
                           "src/dawn_native/ComputePassEncoder.cpp",
                           "src/dawn_native/ComputePassEncoder.h",
                           "src/dawn_native/ComputePipeline.cpp",
                           "src/dawn_native/ComputePipeline.h",
                           "src/dawn_native/DawnNative.cpp",
                           "src/dawn_native/Device.cpp",
                           "src/dawn_native/Device.h",
                           "src/dawn_native/DynamicUploader.cpp",
                           "src/dawn_native/DynamicUploader.h",
                           "src/dawn_native/Device.h",
                           "src/dawn_native/Error.cpp",
                           "src/dawn_native/Error.h",
                           "src/dawn_native/ErrorData.cpp",
                           "src/dawn_native/ErrorData.h",
                           "src/dawn_native/Fence.cpp",
                           "src/dawn_native/Fence.h",
                           "src/dawn_native/FenceSignalTracker.cpp",
                           "src/dawn_native/FenceSignalTracker.h",
                           "src/dawn_native/Format.cpp",
                           "src/dawn_native/Format.h",
                           "src/dawn_native/Forward.h",
                           "src/dawn_native/Instance.cpp",
                           "src/dawn_native/Instance.h",
                           "src/dawn_native/ObjectBase.h",
                           "src/dawn_native/ObjectBase.cpp",
                           "src/dawn_native/PassResourceUsage.h",
                           "src/dawn_native/PerStage.cpp",
                           "src/dawn_native/PerStage.h",
                           "src/dawn_native/Pipeline.cpp",
                           "src/dawn_native/Pipeline.h",
                           "src/dawn_native/PipelineLayout.cpp",
                           "src/dawn_native/PipelineLayout.h",
                           "src/dawn_native/ProgrammablePassEncoder.cpp",
                           "src/dawn_native/ProgrammablePassEncoder.h",
                           "src/dawn_native/Queue.cpp",
                           "src/dawn_native/Queue.h",
                           "src/dawn_native/RefCounted.cpp",
                           "src/dawn_native/RefCounted.h",
                           "src/dawn_native/RenderPassEncoder.cpp",
                           "src/dawn_native/RenderPassEncoder.h",
                           "src/dawn_native/RenderPipeline.cpp",
                           "src/dawn_native/RenderPipeline.h",
                           "src/dawn_native/RingBuffer.cpp",
                           "src/dawn_native/RingBuffer.h",
                           "src/dawn_native/Sampler.cpp",
                           "src/dawn_native/Sampler.h",
                           "src/dawn_native/ShaderModule.cpp",
                           "src/dawn_native/ShaderModule.h",
                           "src/dawn_native/StagingBuffer.cpp",
                           "src/dawn_native/StagingBuffer.h",
                           "src/dawn_native/SwapChain.cpp",
                           "src/dawn_native/SwapChain.h",
                           "src/dawn_native/Texture.cpp",
                           "src/dawn_native/Texture.h",
                           "src/dawn_native/ToBackend.h",
                           "src/dawn_native/dawn_platform.h",
                         ],
                         ".",
                         "$dawn_root")

  if (dawn_enable_d3d12) {
    libs += [ "dxguid.lib" ]
    sources +=
        rebase_path([
                      "src/dawn_native/d3d12/AdapterD3D12.cpp",
                      "src/dawn_native/d3d12/AdapterD3D12.h",
                      "src/dawn_native/d3d12/BackendD3D12.cpp",
                      "src/dawn_native/d3d12/BackendD3D12.h",
                      "src/dawn_native/d3d12/BindGroupD3D12.cpp",
                      "src/dawn_native/d3d12/BindGroupD3D12.h",
                      "src/dawn_native/d3d12/BindGroupLayoutD3D12.cpp",
                      "src/dawn_native/d3d12/BindGroupLayoutD3D12.h",
                      "src/dawn_native/d3d12/BufferD3D12.cpp",
                      "src/dawn_native/d3d12/BufferD3D12.h",
                      "src/dawn_native/d3d12/CommandAllocatorManager.cpp",
                      "src/dawn_native/d3d12/CommandAllocatorManager.h",
                      "src/dawn_native/d3d12/CommandBufferD3D12.cpp",
                      "src/dawn_native/d3d12/CommandBufferD3D12.h",
                      "src/dawn_native/d3d12/ComputePipelineD3D12.cpp",
                      "src/dawn_native/d3d12/ComputePipelineD3D12.h",
                      "src/dawn_native/d3d12/D3D12Backend.cpp",
                      "src/dawn_native/d3d12/D3D12Info.cpp",
                      "src/dawn_native/d3d12/D3D12Info.h",
                      "src/dawn_native/d3d12/DescriptorHeapAllocator.cpp",
                      "src/dawn_native/d3d12/DescriptorHeapAllocator.h",
                      "src/dawn_native/d3d12/DeviceD3D12.cpp",
                      "src/dawn_native/d3d12/DeviceD3D12.h",
                      "src/dawn_native/d3d12/Forward.h",
                      "src/dawn_native/d3d12/NativeSwapChainImplD3D12.cpp",
                      "src/dawn_native/d3d12/NativeSwapChainImplD3D12.h",
                      "src/dawn_native/d3d12/PipelineLayoutD3D12.cpp",
                      "src/dawn_native/d3d12/PipelineLayoutD3D12.h",
                      "src/dawn_native/d3d12/PlatformFunctions.cpp",
                      "src/dawn_native/d3d12/PlatformFunctions.h",
                      "src/dawn_native/d3d12/QueueD3D12.cpp",
                      "src/dawn_native/d3d12/QueueD3D12.h",
                      "src/dawn_native/d3d12/RenderPipelineD3D12.cpp",
                      "src/dawn_native/d3d12/RenderPipelineD3D12.h",
                      "src/dawn_native/d3d12/ResourceAllocator.cpp",
                      "src/dawn_native/d3d12/ResourceAllocator.h",
                      "src/dawn_native/d3d12/SamplerD3D12.cpp",
                      "src/dawn_native/d3d12/SamplerD3D12.h",
                      "src/dawn_native/d3d12/ShaderModuleD3D12.cpp",
                      "src/dawn_native/d3d12/ShaderModuleD3D12.h",
                      "src/dawn_native/d3d12/StagingBufferD3D12.cpp",
                      "src/dawn_native/d3d12/StagingBufferD3D12.h",
                      "src/dawn_native/d3d12/SwapChainD3D12.cpp",
                      "src/dawn_native/d3d12/SwapChainD3D12.h",
                      "src/dawn_native/d3d12/TextureCopySplitter.cpp",
                      "src/dawn_native/d3d12/TextureCopySplitter.h",
                      "src/dawn_native/d3d12/TextureD3D12.cpp",
                      "src/dawn_native/d3d12/TextureD3D12.h",
                      "src/dawn_native/d3d12/UtilsD3D12.cpp",
                      "src/dawn_native/d3d12/UtilsD3D12.h",
                      "src/dawn_native/d3d12/d3d12_platform.h",
                    ],
                    ".",
                    "$dawn_root")
  }

  if (dawn_enable_metal) {
    libs += [
      "Metal.framework",
      "Cocoa.framework",
      "IOKit.framework",
      "IOSurface.framework",
    ]
    sources += rebase_path([
                             "src/dawn_native/metal/BackendMTL.h",
                             "src/dawn_native/metal/BackendMTL.mm",
                             "src/dawn_native/metal/BufferMTL.h",
                             "src/dawn_native/metal/BufferMTL.mm",
                             "src/dawn_native/metal/CommandBufferMTL.h",
                             "src/dawn_native/metal/CommandBufferMTL.mm",
                             "src/dawn_native/metal/ComputePipelineMTL.h",
                             "src/dawn_native/metal/ComputePipelineMTL.mm",
                             "src/dawn_native/metal/DeviceMTL.h",
                             "src/dawn_native/metal/DeviceMTL.mm",
                             "src/dawn_native/metal/Forward.h",
                             "src/dawn_native/metal/MetalBackend.mm",
                             "src/dawn_native/metal/PipelineLayoutMTL.h",
                             "src/dawn_native/metal/PipelineLayoutMTL.mm",
                             "src/dawn_native/metal/QueueMTL.h",
                             "src/dawn_native/metal/QueueMTL.mm",
                             "src/dawn_native/metal/RenderPipelineMTL.h",
                             "src/dawn_native/metal/RenderPipelineMTL.mm",
                             "src/dawn_native/metal/SamplerMTL.h",
                             "src/dawn_native/metal/SamplerMTL.mm",
                             "src/dawn_native/metal/ShaderModuleMTL.h",
                             "src/dawn_native/metal/ShaderModuleMTL.mm",
                             "src/dawn_native/metal/StagingBufferMTL.h",
                             "src/dawn_native/metal/StagingBufferMTL.mm",
                             "src/dawn_native/metal/SwapChainMTL.h",
                             "src/dawn_native/metal/SwapChainMTL.mm",
                             "src/dawn_native/metal/TextureMTL.h",
                             "src/dawn_native/metal/TextureMTL.mm",
                             "src/dawn_native/metal/UtilsMetal.h",
                             "src/dawn_native/metal/UtilsMetal.mm",
                           ],
                           ".",
                           "$dawn_root")
  }

  if (dawn_enable_null) {
    sources += rebase_path([
                             "src/dawn_native/null/DeviceNull.cpp",
                             "src/dawn_native/null/DeviceNull.h",
                             "src/dawn_native/null/NullBackend.cpp",
                           ],
                           ".",
                           "$dawn_root")
  }

  if (dawn_enable_opengl) {
    deps += [ ":libdawn_native_opengl_loader_gen" ]
    sources += get_target_outputs(":libdawn_native_opengl_loader_gen")
    sources +=
        rebase_path([
                      "src/dawn_native/opengl/BackendGL.cpp",
                      "src/dawn_native/opengl/BackendGL.h",
                      "src/dawn_native/opengl/BufferGL.cpp",
                      "src/dawn_native/opengl/BufferGL.h",
                      "src/dawn_native/opengl/CommandBufferGL.cpp",
                      "src/dawn_native/opengl/CommandBufferGL.h",
                      "src/dawn_native/opengl/ComputePipelineGL.cpp",
                      "src/dawn_native/opengl/ComputePipelineGL.h",
                      "src/dawn_native/opengl/DeviceGL.cpp",
                      "src/dawn_native/opengl/DeviceGL.h",
                      "src/dawn_native/opengl/Forward.h",
                      "src/dawn_native/opengl/NativeSwapChainImplGL.cpp",
                      "src/dawn_native/opengl/NativeSwapChainImplGL.h",
                      "src/dawn_native/opengl/OpenGLFunctions.cpp",
                      "src/dawn_native/opengl/OpenGLFunctions.h",
                      "src/dawn_native/opengl/OpenGLBackend.cpp",
                      "src/dawn_native/opengl/PersistentPipelineStateGL.cpp",
                      "src/dawn_native/opengl/PersistentPipelineStateGL.h",
                      "src/dawn_native/opengl/PipelineGL.cpp",
                      "src/dawn_native/opengl/PipelineGL.h",
                      "src/dawn_native/opengl/PipelineLayoutGL.cpp",
                      "src/dawn_native/opengl/PipelineLayoutGL.h",
                      "src/dawn_native/opengl/QueueGL.cpp",
                      "src/dawn_native/opengl/QueueGL.h",
                      "src/dawn_native/opengl/RenderPipelineGL.cpp",
                      "src/dawn_native/opengl/RenderPipelineGL.h",
                      "src/dawn_native/opengl/SamplerGL.cpp",
                      "src/dawn_native/opengl/SamplerGL.h",
                      "src/dawn_native/opengl/ShaderModuleGL.cpp",
                      "src/dawn_native/opengl/ShaderModuleGL.h",
                      "src/dawn_native/opengl/SwapChainGL.cpp",
                      "src/dawn_native/opengl/SwapChainGL.h",
                      "src/dawn_native/opengl/TextureGL.cpp",
                      "src/dawn_native/opengl/TextureGL.h",
                      "src/dawn_native/opengl/UtilsGL.cpp",
                      "src/dawn_native/opengl/UtilsGL.h",
                      "src/dawn_native/opengl/opengl_platform.h",
                    ],
                    ".",
                    "$dawn_root")
  }

  configs -= [ "//gn:warnings" ]
  if (dawn_enable_vulkan) {
    configs += [ "//:our_vulkan_headers" ]
    include_dirs = [ "../.." ]  # for "include/third_party/vulkan/vulkan/vk_platform.h" in vulkan.h
    sources += rebase_path([
                             "src/dawn_native/vulkan/AdapterVk.cpp",
                             "src/dawn_native/vulkan/AdapterVk.h",
                             "src/dawn_native/vulkan/BackendVk.cpp",
                             "src/dawn_native/vulkan/BackendVk.h",
                             "src/dawn_native/vulkan/BindGroupLayoutVk.cpp",
                             "src/dawn_native/vulkan/BindGroupLayoutVk.h",
                             "src/dawn_native/vulkan/BindGroupVk.cpp",
                             "src/dawn_native/vulkan/BindGroupVk.h",
                             "src/dawn_native/vulkan/BufferVk.cpp",
                             "src/dawn_native/vulkan/BufferVk.h",
                             "src/dawn_native/vulkan/CommandBufferVk.cpp",
                             "src/dawn_native/vulkan/CommandBufferVk.h",
                             "src/dawn_native/vulkan/ComputePipelineVk.cpp",
                             "src/dawn_native/vulkan/ComputePipelineVk.h",
                             "src/dawn_native/vulkan/DeviceVk.cpp",
                             "src/dawn_native/vulkan/DeviceVk.h",
                             "src/dawn_native/vulkan/FencedDeleter.cpp",
                             "src/dawn_native/vulkan/FencedDeleter.h",
                             "src/dawn_native/vulkan/Forward.h",
                             "src/dawn_native/vulkan/MemoryAllocator.cpp",
                             "src/dawn_native/vulkan/MemoryAllocator.h",
                             "src/dawn_native/vulkan/NativeSwapChainImplVk.cpp",
                             "src/dawn_native/vulkan/NativeSwapChainImplVk.h",
                             "src/dawn_native/vulkan/PipelineLayoutVk.cpp",
                             "src/dawn_native/vulkan/PipelineLayoutVk.h",
                             "src/dawn_native/vulkan/QueueVk.cpp",
                             "src/dawn_native/vulkan/QueueVk.h",
                             "src/dawn_native/vulkan/RenderPassCache.cpp",
                             "src/dawn_native/vulkan/RenderPassCache.h",
                             "src/dawn_native/vulkan/RenderPipelineVk.cpp",
                             "src/dawn_native/vulkan/RenderPipelineVk.h",
                             "src/dawn_native/vulkan/SamplerVk.cpp",
                             "src/dawn_native/vulkan/SamplerVk.h",
                             "src/dawn_native/vulkan/ShaderModuleVk.cpp",
                             "src/dawn_native/vulkan/ShaderModuleVk.h",
                             "src/dawn_native/vulkan/StagingBufferVk.cpp",
                             "src/dawn_native/vulkan/StagingBufferVk.h",
                             "src/dawn_native/vulkan/SwapChainVk.cpp",
                             "src/dawn_native/vulkan/SwapChainVk.h",
                             "src/dawn_native/vulkan/TextureVk.cpp",
                             "src/dawn_native/vulkan/TextureVk.h",
                             "src/dawn_native/vulkan/UtilsVulkan.cpp",
                             "src/dawn_native/vulkan/UtilsVulkan.h",
                             "src/dawn_native/vulkan/VulkanBackend.cpp",
                             "src/dawn_native/vulkan/VulkanError.cpp",
                             "src/dawn_native/vulkan/VulkanError.h",
                             "src/dawn_native/vulkan/VulkanFunctions.cpp",
                             "src/dawn_native/vulkan/VulkanFunctions.h",
                             "src/dawn_native/vulkan/VulkanInfo.cpp",
                             "src/dawn_native/vulkan/VulkanInfo.h",
                           ],
                           ".",
                           "$dawn_root")
  }
}

# The shared library for libdawn_native for use by samples, tests, etc.
shared_library("libdawn_native") {
  deps = [
    ":libdawn_native_sources",
  ]

  #Make headers publically visible
  public_deps = [
    ":libdawn_native_headers",
  ]
  public_configs = [ ":libdawn_public" ]

  # Tell dependents where to find this shared library
  if (is_mac) {
    ldflags = [
      "-install_name",
      "@rpath/${target_name}.dylib",
    ]
  }
}
