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

generated_bindings_prefix = "v8c"

engine_dependencies = [
  "//third_party/v8",
  "//third_party/v8:v8_libplatform",
  "//net",
]

engine_templates_dir = "//cobalt/bindings/v8c/templates"

engine_template_files = [
  "//cobalt/bindings/v8c/templates/callback-interface.cc.template",
  "//cobalt/bindings/v8c/templates/callback-interface.h.template",
  "//cobalt/bindings/v8c/templates/dictionary-conversion.cc.template",
  "//cobalt/bindings/v8c/templates/enumeration-conversion.cc.template",
  "//cobalt/bindings/v8c/templates/generated-types.h.template",
  "//cobalt/bindings/v8c/templates/interface.cc.template",
  "//cobalt/bindings/v8c/templates/interface.h.template",
  "//cobalt/bindings/v8c/templates/macros.cc.template",
]
engine_bindings_scripts = [
  "//cobalt/bindings/v8c/code_generator_v8c.py",
  "//cobalt/bindings/v8c/idl_compiler_v8c.py",
  "//cobalt/bindings/v8c/generate_conversion_header_v8c.py",
]

engine_idl_compiler = "//cobalt/bindings/v8c/idl_compiler_v8c.py"
engine_conversion_header_generator_script =
    "//cobalt/bindings/v8c/generate_conversion_header_v8c.py"
