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

import("//cobalt/browser/browser_bindings_variables.gni")

# Migrated from third_party/blink/Source/bindings/scripts/scripts.gypi
######################################################################
bindings_scripts_dir = "//third_party/blink/Source/bindings/scripts"

# Migrated from third_party/blink/Source/bindings/scripts/scripts.gni
#####################################################################
idl_compiler_files = [
  "//third_party/blink/Source/bindings/scripts/idl_compiler.py",

  # Blink IDL front end (ex-lexer/parser)
  "//third_party/blink/Source/bindings/scripts/idl_definitions.py",
  "//third_party/blink/Source/bindings/scripts/idl_reader.py",
  "//third_party/blink/Source/bindings/scripts/idl_types.py",
  "//third_party/blink/Source/bindings/scripts/idl_validator.py",
  "//third_party/blink/Source/bindings/scripts/interface_dependency_resolver.py",

  # V8 code generator
  "//third_party/blink/Source/bindings/scripts/code_generator.py",
  "//third_party/blink/Source/bindings/scripts/code_generator_v8.py",
  "//third_party/blink/Source/bindings/scripts/code_generator_web_agent_api.py",
  "//third_party/blink/Source/bindings/scripts/v8_attributes.py",
  "//third_party/blink/Source/bindings/scripts/v8_callback_function.py",
  "//third_party/blink/Source/bindings/scripts/v8_callback_interface.py",
  "//third_party/blink/Source/bindings/scripts/v8_dictionary.py",
  "//third_party/blink/Source/bindings/scripts/v8_globals.py",
  "//third_party/blink/Source/bindings/scripts/v8_interface.py",
  "//third_party/blink/Source/bindings/scripts/v8_methods.py",
  "//third_party/blink/Source/bindings/scripts/v8_types.py",
  "//third_party/blink/Source/bindings/scripts/v8_union.py",
  "//third_party/blink/Source/bindings/scripts/v8_utilities.py",
]

idl_cache_files = [ "$bindings_scripts_output_dir/lextab.py" ]

idl_lexer_parser_files =
    get_path_info([
                    # PLY (Python Lex-Yacc)
                    "//third_party/ply/lex.py",
                    "//third_party/ply/yacc.py",

                    # Web IDL lexer/parser (base parser)
                    "//tools/idl_parser/idl_lexer.py",
                    "//tools/idl_parser/idl_node.py",
                    "//tools/idl_parser/idl_parser.py",

                    # Blink IDL lexer/parser/constructor
                    "$bindings_scripts_dir/blink_idl_lexer.py",
                    "$bindings_scripts_dir/blink_idl_parser.py",
                  ],
                  "abspath")
