| # 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/bindings/bindings_variables.gni") |
| import("//cobalt/bindings/blink_variables.gni") |
| import("//cobalt/script/v8c/v8c_variables.gni") |
| |
| # Additional files used by the idl compilation scripts. |
| bindings_extra_inputs = [ |
| "//cobalt/bindings/code_generator_cobalt.py", |
| "//cobalt/bindings/expression_generator.py", |
| "//cobalt/bindings/contexts.py", |
| "//cobalt/bindings/idl_compiler_cobalt.py", |
| "//cobalt/bindings/generate_conversion_header.py", |
| "//cobalt/bindings/name_conversion.py", |
| "//cobalt/bindings/overload_context.py", |
| ] |
| bindings_extra_inputs += code_generator_template_files |
| bindings_extra_inputs += engine_bindings_scripts |
| bindings_extra_inputs += idl_lexer_parser_files |
| bindings_extra_inputs += idl_cache_files |
| bindings_extra_inputs += idl_compiler_files |
| |
| # Template definitions. |
| template("idl_compile") { |
| action_foreach(target_name) { |
| script = "//starboard/build/run_bash.py" |
| py_script = engine_idl_compiler |
| |
| public_configs = invoker.public_configs |
| |
| sources = invoker.sources |
| |
| deps = invoker.deps |
| |
| if (defined(invoker.public_deps)) { |
| public_deps = invoker.public_deps |
| } |
| |
| inputs = [ |
| invoker.interfaces_info, |
| invoker.extended_attributes, |
| invoker.component_info, |
| py_script, |
| ] |
| inputs += invoker.bindings_extra_inputs |
| |
| generated_file_path = |
| "$generated_source_output_dir/{{source_root_relative_dir}}" |
| generated_file_name = "${generated_bindings_prefix}_{{source_name_part}}" |
| outputs = [ |
| "$generated_file_path/$generated_file_name.h", |
| "$generated_file_path/$generated_file_name.cc", |
| ] |
| |
| args = [ |
| "python2", |
| rebase_path(py_script, root_build_dir), |
| "--cache-directory", |
| rebase_path(invoker.cache_directory), |
| "--output-directory", |
| rebase_path(invoker.output_directory), |
| "--interfaces-info", |
| rebase_path(invoker.interfaces_info), |
| "--component-info", |
| rebase_path(invoker.component_info), |
| "--extended-attributes", |
| rebase_path(invoker.extended_attributes), |
| "{{source}}", |
| ] |
| } |
| } |
| |
| template("compute_global_objects") { |
| action(target_name) { |
| script = "//starboard/build/run_bash.py" |
| py_script = "$bindings_scripts_dir/compute_global_objects.py" |
| |
| inputs = [ |
| py_script, |
| "$bindings_scripts_dir/utilities.py", |
| ] |
| inputs += invoker.idl_files |
| |
| outputs = [ invoker.global_objects_file ] |
| |
| idl_files_list = "$target_gen_dir/${target_name}_idl_files_list.tmp" |
| write_file(idl_files_list, rebase_path(invoker.idl_files, root_build_dir)) |
| |
| args = [ |
| "python2", |
| rebase_path(py_script, root_build_dir), |
| "--idl-files-list", |
| rebase_path(idl_files_list, root_build_dir), |
| "--", |
| rebase_path(invoker.global_objects_file, root_build_dir), |
| ] |
| } |
| } |
| |
| template("compute_global_constructors_idls") { |
| action(target_name) { |
| script = "//starboard/build/run_bash.py" |
| py_script = "$bindings_scripts_dir/generate_global_constructors.py" |
| |
| deps = invoker.deps |
| |
| inputs = [ |
| py_script, |
| "$bindings_scripts_dir/utilities.py", |
| invoker.global_objects_file, |
| ] |
| inputs += invoker.idl_files |
| |
| outputs = [ |
| invoker.global_names_idl_file, |
| invoker.global_constructors_generated_header_file, |
| ] |
| |
| # Write the file list to a unique temp file to avoid blowing out the |
| # command line length limit. |
| idl_files_list = "$target_gen_dir/${target_name}_static_idl_files_list.tmp" |
| write_file(idl_files_list, rebase_path(invoker.idl_files, root_build_dir)) |
| |
| args = [ |
| "python2", |
| rebase_path(py_script, root_build_dir), |
| "--idl-files-list", |
| rebase_path(idl_files_list, root_build_dir), |
| "--global-objects-file", |
| rebase_path(invoker.global_objects_file, root_build_dir), |
| "--", |
| "Window", |
| rebase_path(invoker.global_names_idl_file, root_build_dir), |
| ] |
| } |
| } |
| |
| template("compute_interfaces_info_individual") { |
| action(target_name) { |
| script = "//starboard/build/run_bash.py" |
| py_script = "$bindings_scripts_dir/compute_interfaces_info_individual.py" |
| |
| deps = invoker.deps |
| |
| inputs = [ |
| py_script, |
| "$bindings_scripts_dir/utilities.py", |
| invoker.extended_attributes, |
| invoker.generated_idl_files, |
| ] |
| inputs += invoker.idl_files |
| |
| outputs = [ |
| invoker.interfaces_info_file, |
| invoker.component_info_file, |
| ] |
| |
| # Write the file list to a unique temp file to avoid blowing out the |
| # command line length limit. |
| idl_files_list = "$target_gen_dir/${target_name}_static_idl_files_list.tmp" |
| write_file(idl_files_list, rebase_path(invoker.idl_files, root_build_dir)) |
| |
| dependency_idl_files_paths = |
| rebase_path(invoker.dependency_idl_files, root_build_dir) |
| dependency_idl_files_list = string_join(" ", dependency_idl_files_paths) |
| args = [ |
| "python2", |
| rebase_path(py_script, root_build_dir), |
| "--cache-directory", |
| rebase_path(invoker.cache_directory, root_build_dir), |
| "--root-directory", |
| rebase_path("//", root_build_dir), |
| "--idl-files-list", |
| rebase_path(idl_files_list, root_build_dir), |
| "--interfaces-info-file", |
| rebase_path(invoker.interfaces_info_file, root_build_dir), |
| "--component-info-file", |
| rebase_path(invoker.component_info_file, root_build_dir), |
| "--extended-attributes", |
| rebase_path(invoker.extended_attributes, root_build_dir), |
| "--dependency-idl-files", |
| dependency_idl_files_list, |
| "--", |
| |
| # Generated files must be passed at command line |
| rebase_path(invoker.generated_idl_files, root_build_dir), |
| ] |
| } |
| } |