# Copyright 2019 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("${dawn_root}/generator/dawn_generator.gni")
import("${dawn_root}/scripts/dawn_component.gni")

###############################################################################
# Dawn C++ wrapper
###############################################################################

dawn_json_generator("cpp_gen") {
  target = "cpp"
  outputs = [ "src/dawn/webgpu_cpp.cpp" ]
}

source_set("cpp") {
  public_deps = [ "${dawn_root}/include/dawn:cpp_headers" ]
  deps = [ ":cpp_gen" ]
  sources = get_target_outputs(":cpp_gen")
}

###############################################################################
# Dawn proc
###############################################################################

dawn_json_generator("proc_gen") {
  target = "proc"
  outputs = [
    "src/dawn/dawn_proc.c",
    "src/dawn/dawn_thread_dispatch_proc.cpp",
  ]
}

dawn_component("proc") {
  DEFINE_PREFIX = "WGPU"

  public_deps = [ "${dawn_root}/include/dawn:headers" ]
  deps = [ ":proc_gen" ]
  sources = get_target_outputs(":proc_gen")
  sources += [
    "${dawn_root}/include/dawn/dawn_proc.h",
    "${dawn_root}/include/dawn/dawn_thread_dispatch_proc.h",
  ]
}

###############################################################################
# Other generated files (upstream header, emscripten header, emscripten bits)
###############################################################################

dawn_json_generator("webgpu_headers_gen") {
  target = "webgpu_headers"
  outputs = [ "webgpu-headers/webgpu.h" ]
}

dawn_json_generator("emscripten_bits_gen") {
  target = "emscripten_bits"
  outputs = [
    "emscripten-bits/webgpu.h",
    "emscripten-bits/webgpu_cpp.h",
    "emscripten-bits/webgpu_cpp.cpp",
    "emscripten-bits/webgpu_struct_info.json",
    "emscripten-bits/library_webgpu_enum_tables.js",
  ]
}
