# 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/scripts/dawn_features.gni")
import("$dawn_root/generator/dawn_generator.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("${dawn_root}/third_party/khronos/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",
    "third_party: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",
      "third_party:khronos_platform",
    ]
    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) {
    deps += [ "third_party:vulkan_headers" ]
    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",
    ]
  }
}
