# Copyright 2014 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("//sky/engine/build/scripts/scripts.gni") import("//sky/engine/core/core.gni") import("//mojo/dart/embedder/embedder.gni") visibility = [ "//sky/engine/*" ] rel_sky_core_gen_dir = rebase_path(sky_core_output_dir, root_build_dir) source_set("libraries") { public_deps = [ "//base", "//gpu/command_buffer/client:gles2_c_lib", "//mojo/application", "//mojo/common", "//mojo/public/c/system", "//mojo/public/cpp/bindings", "//mojo/public/cpp/system", "//mojo/public/cpp/utility", "//mojo/public/interfaces/application", "//mojo/services/keyboard/public/interfaces", "//mojo/services/navigation/public/interfaces", "//mojo/services/network/public/interfaces", "//mojo/services/view_manager/public/cpp", "//skia", "//sky/engine/tonic:tonic", "//sky/engine/wtf", "//third_party/angle:translator", "//third_party/iccjpeg", "//third_party/libpng", "//third_party/ots", "//third_party/qcms", "//third_party/zlib", "//url", ] } source_set("prerequisites") { deps = [ ":libraries", ":make_core_generated", "//sky/engine/platform", ] forward_dependent_configs_from = [ ":libraries" ] direct_dependent_configs = [ "//sky/engine:config", "//sky/engine:inside_blink", "//build/config/compiler:wexit_time_destructors", ] } dart_embedder_resources("generate_sky_embedder_service_isolate_resources_cc") { deps = [ "//mojo/dart/embedder:deploy_observatory", ] inputs = [ "//sky/engine/core/script/dart_service_isolate/loader.dart", "//sky/engine/core/script/dart_service_isolate/main.dart", "//sky/engine/core/script/dart_service_isolate/resources.dart", "//sky/engine/core/script/dart_service_isolate/server.dart", ] root_prefix = "//sky/engine/core/script/" input_directory = "$root_out_dir/observatory/deployed/web/" output = "$target_gen_dir/sky_embedder_service_isolate_resources.cc" table_name = "sky_embedder_service_isolate" } static_library("core") { output_name = "sky_core" deps = [ ":core_generated", ":generate_sky_embedder_service_isolate_resources_cc", ":libraries", ":prerequisites", "//sky/engine/platform", "//sky/engine/bindings", "//dart/runtime/bin:embedded_dart_io", "//dart/runtime:libdart", "//dart/runtime/vm:libdart_platform", ] sources = sky_core_files sources += [ "$target_gen_dir/sky_embedder_service_isolate_resources.cc" ] include_dirs = [ # Needed for dart_mirrors_api.h in dart_controller.cc rebase_path("//dart/runtime"), ] forward_dependent_configs_from = [ ":libraries" ] # core and core_generated are really the same thing. allow_circular_includes_from = [ ":core_generated", "//sky/engine/bindings", ] } source_set("testing") { deps = [ ":core", ":core_generated", ":prerequisites", "//sky/engine/platform", "//sky/engine/wtf", ] sources = [ "testing/DummyPageHolder.cpp", "testing/DummyPageHolder.h", "testing/NullExecutionContext.cpp", "testing/NullExecutionContext.h", "testing/URLTestHelpers.cpp", "testing/URLTestHelpers.h", ] } source_set("core_generated") { sources = [ # Generated from CSSTokenizer-in.cpp "$sky_core_output_dir/CSSTokenizer.cpp", # Generated from BisonCSSParser-in.cpp "$sky_core_output_dir/BisonCSSParser.cpp", # Additional .cpp files from the make_core_generated rules. "$sky_core_output_dir/CSSGrammar.cpp", ] configs += [ "..:inside_blink" ] deps = [ ":make_core_generated", ":prerequisites", "//skia", "//sky/engine/platform", "//sky/engine/wtf", "//third_party/iccjpeg", "//third_party/libpng", "//third_party/qcms", "//url", ] include_dirs = [ "$root_build_dir" ] } # core_event_interfaces -------------------------------------------------------- # Calls generate_event_interfaces # # Parameters: # sources = A list of IDL files to process. # output_file = The .in file to write, relative to the sky_gen_dir. # suffix = (Optional) String to be passed to script via --suffix template("generate_event_interfaces") { action(target_name) { # 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}_file_list.tmp" write_file(idl_files_list, rebase_path(invoker.sources, root_build_dir)) inputs = [ "//sky/engine/bindings/scripts/utilities.py", idl_files_list, ] + invoker.sources output_file = "$root_gen_dir/sky/" + invoker.output_file outputs = [ output_file, ] script = "//sky/engine/bindings/scripts/generate_event_interfaces.py" args = [ "--event-idl-files-list", rebase_path(idl_files_list, root_build_dir), "--event-interfaces-file", rebase_path(output_file, root_build_dir), "--write-file-only-if-changed=1", # Always true for Ninja. ] if (defined(invoker.suffix)) { args += [ "--suffix", invoker.suffix, ] } } } generate_event_interfaces("core_event_interfaces") { sources = core_event_idl_files output_file = "core/EventInterfaces.in" } # generated_testing_idls ------------------------------------------------------- group("generated_testing_idls") { deps = [ ":generated_testing_idls_settings", ] } action("generated_testing_idls_settings") { script = "../build/scripts/make_settings.py" inputs = scripts_for_in_files + [ "../build/scripts/make_settings.py", "../build/scripts/templates/SettingsMacros.h.tmpl", "frame/Settings.in", ] outputs = [ "$sky_core_output_dir/SettingsMacros.h", ] args = [ rebase_path("frame/Settings.in", root_build_dir), "--output_dir", rel_sky_core_gen_dir, ] } # make_core_generated ---------------------------------------------------------- group("core_names") { deps = [ ":make_core_generated_css_property_names", ":make_core_generated_event_names", ":make_core_generated_event_target_factory", ":make_core_generated_event_target_names", ":make_core_generated_event_type_names", ":make_core_generated_fetch_initiator_type_names", ":make_core_generated_html_element_factory", ":make_core_generated_media_type_names", ] } group("make_core_generated") { deps = [ ":core_names", ":make_core_generated_bison", ":make_core_generated_css_property_metadata", ":make_core_generated_css_value_keywords", ":make_core_generated_event_factory", ":make_core_generated_html_element_lookup_trie", ":make_core_generated_html_element_type_helpers", ":make_core_generated_make_parser", ":make_core_generated_make_token_matcher", ":make_core_generated_media_feature_names", ":make_core_generated_media_features", ":make_core_generated_media_query_tokenizer_codepoints", ":make_core_generated_style_builder", ":make_core_generated_style_property_shorthand", ] } css_properties("make_core_generated_css_property_names") { script = "../build/scripts/make_css_property_names.py" outputs = [ "$sky_core_output_dir/CSSPropertyNames.cpp", "$sky_core_output_dir/CSSPropertyNames.h", ] } process_in_files("make_core_generated_media_features") { script = "../build/scripts/make_media_features.py" in_files = [ "css/MediaFeatureNames.in" ] other_inputs = [ "../build/scripts/make_media_features.py", "../build/scripts/templates/MediaFeatures.h.tmpl", ] outputs = [ "$sky_core_output_dir/MediaFeatures.h", ] } css_properties("make_core_generated_style_property_shorthand") { script = "../build/scripts/make_style_shorthands.py" other_inputs = [ "../build/scripts/templates/StylePropertyShorthand.cpp.tmpl", "../build/scripts/templates/StylePropertyShorthand.h.tmpl", ] outputs = [ "$sky_core_output_dir/StylePropertyShorthand.cpp", "$sky_core_output_dir/StylePropertyShorthand.h", ] deps = [ ":core_names", ] } css_properties("make_core_generated_style_builder") { script = "../build/scripts/make_style_builder.py" other_inputs = [ "../build/scripts/templates/StyleBuilder.cpp.tmpl", "../build/scripts/templates/StyleBuilderFunctions.cpp.tmpl", "../build/scripts/templates/StyleBuilderFunctions.h.tmpl", ] outputs = [ "$sky_core_output_dir/StyleBuilder.cpp", "$sky_core_output_dir/StyleBuilderFunctions.h", "$sky_core_output_dir/StyleBuilderFunctions.cpp", ] deps = [ ":core_names", ":libraries", ] } css_properties("make_core_generated_css_property_metadata") { script = "../build/scripts/make_css_property_metadata.py" other_inputs = [ "../build/scripts/templates/CSSPropertyMetadata.cpp.tmpl" ] outputs = [ "$sky_core_output_dir/CSSPropertyMetadata.cpp", ] deps = [ ":core_names", ] } process_in_files("make_core_generated_css_value_keywords") { script = "../build/scripts/make_css_value_keywords.py" in_files = [ "css/CSSValueKeywords.in", "css/SVGCSSValueKeywords.in", ] outputs = [ "$sky_core_output_dir/CSSValueKeywords.cpp", "$sky_core_output_dir/CSSValueKeywords.h", ] other_args = [ "--gperf", gperf_exe, ] deps = [ "//sky/engine/wtf", ] } process_in_files("make_core_generated_html_element_factory") { script = "../build/scripts/make_element_factory.py" in_files = [ "html/HTMLTagNames.in", "html/HTMLAttributeNames.in", ] other_inputs = make_element_factory_files outputs = [ "$sky_core_output_dir/HTMLElementFactory.cpp", "$sky_core_output_dir/HTMLElementFactory.h", "$sky_core_output_dir/HTMLNames.cpp", "$sky_core_output_dir/HTMLNames.h", ] deps = [ ":libraries", ] } process_in_files("make_core_generated_html_element_type_helpers") { script = "../build/scripts/make_element_type_helpers.py" in_files = [ "html/HTMLTagNames.in" ] other_inputs = make_element_type_helpers_files outputs = [ "$sky_core_output_dir/HTMLElementTypeHelpers.h", ] } process_in_files("make_core_generated_event_factory") { script = "../build/scripts/make_event_factory.py" in_files = [ "$sky_core_output_dir/EventInterfaces.in", "events/EventAliases.in", ] other_inputs = make_event_factory_files outputs = [ "$sky_core_output_dir/EventHeaders.h", "$sky_core_output_dir/EventInterfaces.h", ] deps = [ ":core_names", ":libraries", ] } process_in_files("make_core_generated_media_feature_names") { script = "../build/scripts/make_media_feature_names.py" in_files = [ "css/MediaFeatureNames.in" ] other_inputs = make_names_files outputs = [ "$sky_core_output_dir/MediaFeatureNames.cpp", "$sky_core_output_dir/MediaFeatureNames.h", ] deps = [ ":libraries", ] } # make_event_factory ----------------------------------------------------------- make_event_factory("make_core_generated_event_target_factory") { in_files = [ "events/EventTargetFactory.in" ] outputs = [ "$sky_core_output_dir/EventTargetHeaders.h", "$sky_core_output_dir/EventTargetInterfaces.h", ] } # make_names ------------------------------------------------------------------- make_names("make_core_generated_media_type_names") { in_files = [ "css/MediaTypeNames.in" ] outputs = [ "$sky_core_output_dir/MediaTypeNames.cpp", "$sky_core_output_dir/MediaTypeNames.h", ] } make_names("make_core_generated_event_names") { in_files = [ "$sky_core_output_dir/EventInterfaces.in" ] outputs = [ "$sky_core_output_dir/EventNames.cpp", "$sky_core_output_dir/EventNames.h", ] } make_names("make_core_generated_event_target_names") { in_files = [ "events/EventTargetFactory.in" ] outputs = [ "$sky_core_output_dir/EventTargetNames.cpp", "$sky_core_output_dir/EventTargetNames.h", ] } make_names("make_core_generated_fetch_initiator_type_names") { in_files = [ "fetch/FetchInitiatorTypeNames.in" ] outputs = [ "$sky_core_output_dir/FetchInitiatorTypeNames.cpp", "$sky_core_output_dir/FetchInitiatorTypeNames.h", ] } make_names("make_core_generated_event_type_names") { in_files = [ "events/EventTypeNames.in" ] outputs = [ "$sky_core_output_dir/EventTypeNames.cpp", "$sky_core_output_dir/EventTypeNames.h", ] } # make_token_matcher ----------------------------------------------------------- make_token_matcher("make_core_generated_make_token_matcher") { input_file = "css/parser/CSSTokenizer-in.cpp" output_file = "$sky_core_output_dir/CSSTokenizer.cpp" } make_token_matcher("make_core_generated_make_parser") { input_file = "css/parser/BisonCSSParser-in.cpp" output_file = "$sky_core_output_dir/BisonCSSParser.cpp" } # One-off scripts -------------------------------------------------------------- action("make_core_generated_media_query_tokenizer_codepoints") { script = "../build/scripts/make_mediaquery_tokenizer_codepoints.py" outputs = [ "$sky_core_output_dir/MediaQueryTokenizerCodepoints.cpp", ] args = [ "--output_dir", rel_sky_core_gen_dir, ] deps = make_core_generated_deps } process_in_files("make_core_generated_html_element_lookup_trie") { script = "../build/scripts/make_element_lookup_trie.py" in_files = [ "html/HTMLTagNames.in" ] other_inputs = [ "../build/scripts/templates/ElementLookupTrie.cpp.tmpl", "../build/scripts/templates/ElementLookupTrie.h.tmpl", ] outputs = [ "$sky_core_output_dir/HTMLElementLookupTrie.cpp", "$sky_core_output_dir/HTMLElementLookupTrie.h", ] deps = [ ":core_names", ":libraries", ] } action_foreach("make_core_generated_bison") { script = "../build/scripts/rule_bison.py" sources = [ "css/parser/CSSGrammar.y", ] outputs = [ "$sky_core_output_dir/{{source_name_part}}.cpp", "$sky_core_output_dir/{{source_name_part}}.h", ] args = [ "{{source}}", rel_sky_core_gen_dir, bison_exe, ] deps = make_core_generated_deps }