|  | # Copyright (c) 2013 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("//build/config/jumbo.gni") | 
|  | import("//testing/test.gni") | 
|  | import("//testing/libfuzzer/fuzzer_test.gni") | 
|  |  | 
|  | jumbo_static_library("gn_lib") { | 
|  | configs += [ "//build/config:precompiled_headers" ] | 
|  |  | 
|  | sources = [ | 
|  | "action_target_generator.cc", | 
|  | "action_target_generator.h", | 
|  | "action_values.cc", | 
|  | "action_values.h", | 
|  | "analyzer.cc", | 
|  | "analyzer.h", | 
|  | "args.cc", | 
|  | "args.h", | 
|  | "binary_target_generator.cc", | 
|  | "binary_target_generator.h", | 
|  | "build_settings.cc", | 
|  | "build_settings.h", | 
|  | "builder.cc", | 
|  | "builder.h", | 
|  | "builder_record.cc", | 
|  | "builder_record.h", | 
|  | "bundle_data.cc", | 
|  | "bundle_data.h", | 
|  | "bundle_data_target_generator.cc", | 
|  | "bundle_data_target_generator.h", | 
|  | "bundle_file_rule.cc", | 
|  | "bundle_file_rule.h", | 
|  | "c_include_iterator.cc", | 
|  | "c_include_iterator.h", | 
|  | "command_analyze.cc", | 
|  | "command_args.cc", | 
|  | "command_check.cc", | 
|  | "command_clean.cc", | 
|  | "command_desc.cc", | 
|  | "command_format.cc", | 
|  | "command_format.h", | 
|  | "command_gen.cc", | 
|  | "command_help.cc", | 
|  | "command_ls.cc", | 
|  | "command_path.cc", | 
|  | "command_refs.cc", | 
|  | "commands.cc", | 
|  | "commands.h", | 
|  | "config.cc", | 
|  | "config.h", | 
|  | "config_values.cc", | 
|  | "config_values.h", | 
|  | "config_values_extractors.cc", | 
|  | "config_values_extractors.h", | 
|  | "config_values_generator.cc", | 
|  | "config_values_generator.h", | 
|  | "copy_target_generator.cc", | 
|  | "copy_target_generator.h", | 
|  | "create_bundle_target_generator.cc", | 
|  | "create_bundle_target_generator.h", | 
|  | "deps_iterator.cc", | 
|  | "deps_iterator.h", | 
|  | "desc_builder.cc", | 
|  | "desc_builder.h", | 
|  | "eclipse_writer.cc", | 
|  | "eclipse_writer.h", | 
|  | "err.cc", | 
|  | "err.h", | 
|  | "escape.cc", | 
|  | "escape.h", | 
|  | "exec_process.cc", | 
|  | "exec_process.h", | 
|  | "filesystem_utils.cc", | 
|  | "filesystem_utils.h", | 
|  | "function_exec_script.cc", | 
|  | "function_foreach.cc", | 
|  | "function_forward_variables_from.cc", | 
|  | "function_get_label_info.cc", | 
|  | "function_get_path_info.cc", | 
|  | "function_get_target_outputs.cc", | 
|  | "function_process_file_template.cc", | 
|  | "function_read_file.cc", | 
|  | "function_rebase_path.cc", | 
|  | "function_set_default_toolchain.cc", | 
|  | "function_set_defaults.cc", | 
|  | "function_template.cc", | 
|  | "function_toolchain.cc", | 
|  | "function_write_file.cc", | 
|  | "functions.cc", | 
|  | "functions.h", | 
|  | "functions_target.cc", | 
|  | "group_target_generator.cc", | 
|  | "group_target_generator.h", | 
|  | "header_checker.cc", | 
|  | "header_checker.h", | 
|  | "import_manager.cc", | 
|  | "import_manager.h", | 
|  | "inherited_libraries.cc", | 
|  | "inherited_libraries.h", | 
|  | "input_conversion.cc", | 
|  | "input_conversion.h", | 
|  | "input_file.cc", | 
|  | "input_file.h", | 
|  | "input_file_manager.cc", | 
|  | "input_file_manager.h", | 
|  | "item.cc", | 
|  | "item.h", | 
|  | "json_project_writer.cc", | 
|  | "json_project_writer.h", | 
|  | "label.cc", | 
|  | "label.h", | 
|  | "label_pattern.cc", | 
|  | "label_pattern.h", | 
|  | "label_ptr.h", | 
|  | "lib_file.cc", | 
|  | "lib_file.h", | 
|  | "loader.cc", | 
|  | "loader.h", | 
|  | "location.cc", | 
|  | "location.h", | 
|  | "ninja_action_target_writer.cc", | 
|  | "ninja_action_target_writer.h", | 
|  | "ninja_binary_target_writer.cc", | 
|  | "ninja_binary_target_writer.h", | 
|  | "ninja_build_writer.cc", | 
|  | "ninja_build_writer.h", | 
|  | "ninja_bundle_data_target_writer.cc", | 
|  | "ninja_bundle_data_target_writer.h", | 
|  | "ninja_copy_target_writer.cc", | 
|  | "ninja_copy_target_writer.h", | 
|  | "ninja_create_bundle_target_writer.cc", | 
|  | "ninja_create_bundle_target_writer.h", | 
|  | "ninja_group_target_writer.cc", | 
|  | "ninja_group_target_writer.h", | 
|  | "ninja_target_writer.cc", | 
|  | "ninja_target_writer.h", | 
|  | "ninja_toolchain_writer.cc", | 
|  | "ninja_toolchain_writer.h", | 
|  | "ninja_utils.cc", | 
|  | "ninja_utils.h", | 
|  | "ninja_writer.cc", | 
|  | "ninja_writer.h", | 
|  | "operators.cc", | 
|  | "operators.h", | 
|  | "output_file.cc", | 
|  | "output_file.h", | 
|  | "parse_node_value_adapter.cc", | 
|  | "parse_node_value_adapter.h", | 
|  | "parse_tree.cc", | 
|  | "parse_tree.h", | 
|  | "parser.cc", | 
|  | "parser.h", | 
|  | "path_output.cc", | 
|  | "path_output.h", | 
|  | "pattern.cc", | 
|  | "pattern.h", | 
|  | "pool.cc", | 
|  | "pool.h", | 
|  | "qt_creator_writer.cc", | 
|  | "qt_creator_writer.h", | 
|  | "runtime_deps.cc", | 
|  | "runtime_deps.h", | 
|  | "scheduler.cc", | 
|  | "scheduler.h", | 
|  | "scope.cc", | 
|  | "scope.h", | 
|  | "scope_per_file_provider.cc", | 
|  | "scope_per_file_provider.h", | 
|  | "settings.cc", | 
|  | "settings.h", | 
|  | "setup.cc", | 
|  | "setup.h", | 
|  | "source_dir.cc", | 
|  | "source_dir.h", | 
|  | "source_file.cc", | 
|  | "source_file.h", | 
|  | "source_file_type.cc", | 
|  | "source_file_type.h", | 
|  | "standard_out.cc", | 
|  | "standard_out.h", | 
|  | "string_utils.cc", | 
|  | "string_utils.h", | 
|  | "substitution_list.cc", | 
|  | "substitution_list.h", | 
|  | "substitution_pattern.cc", | 
|  | "substitution_pattern.h", | 
|  | "substitution_type.cc", | 
|  | "substitution_type.h", | 
|  | "substitution_writer.cc", | 
|  | "substitution_writer.h", | 
|  | "switches.cc", | 
|  | "switches.h", | 
|  | "target.cc", | 
|  | "target.h", | 
|  | "target_generator.cc", | 
|  | "target_generator.h", | 
|  | "template.cc", | 
|  | "template.h", | 
|  | "token.cc", | 
|  | "token.h", | 
|  | "tokenizer.cc", | 
|  | "tokenizer.h", | 
|  | "tool.cc", | 
|  | "tool.h", | 
|  | "toolchain.cc", | 
|  | "toolchain.h", | 
|  | "trace.cc", | 
|  | "trace.h", | 
|  | "unique_vector.h", | 
|  | "value.cc", | 
|  | "value.h", | 
|  | "value_extractors.cc", | 
|  | "value_extractors.h", | 
|  | "variables.cc", | 
|  | "variables.h", | 
|  | "visibility.cc", | 
|  | "visibility.h", | 
|  | "visual_studio_utils.cc", | 
|  | "visual_studio_utils.h", | 
|  | "visual_studio_writer.cc", | 
|  | "visual_studio_writer.h", | 
|  | "xcode_object.cc", | 
|  | "xcode_object.h", | 
|  | "xcode_writer.cc", | 
|  | "xcode_writer.h", | 
|  | "xml_element_writer.cc", | 
|  | "xml_element_writer.h", | 
|  | ] | 
|  |  | 
|  | deps = [ | 
|  | "//base", | 
|  | "//base/third_party/dynamic_annotations", | 
|  | ] | 
|  | } | 
|  |  | 
|  | action("last_commit_position") { | 
|  | script = "last_commit_position.py" | 
|  |  | 
|  | # This dependency forces a re-run when the code is synced. | 
|  | inputs = [ | 
|  | "//build/util/LASTCHANGE", | 
|  | ] | 
|  |  | 
|  | outfile = "$target_gen_dir/last_commit_position.h" | 
|  | outputs = [ | 
|  | outfile, | 
|  | ] | 
|  |  | 
|  | args = [ | 
|  | rebase_path("//", root_build_dir), | 
|  | rebase_path(outfile, root_build_dir), | 
|  | "TOOLS_GN_LAST_COMMIT_POSITION_H_", | 
|  | ] | 
|  | } | 
|  |  | 
|  | # Note for Windows debugging: GN is super-multithreaded and uses a lot of STL. | 
|  | # Iterator debugging on Windows does locking for every access, which ends up | 
|  | # slowing down debug runtime from 0:36 to 9:40. If you want to run debug builds | 
|  | # of GN over the large Chrome build, you will want to set the arg: | 
|  | #   enable_iterator_debugging = false | 
|  | executable("gn") { | 
|  | defines = [ "GN_BUILD" ] | 
|  | sources = [ | 
|  | "gn_main.cc", | 
|  | ] | 
|  |  | 
|  | deps = [ | 
|  | ":gn_lib", | 
|  | ":last_commit_position", | 
|  | "//base", | 
|  | "//build/win:default_exe_manifest", | 
|  | ] | 
|  | } | 
|  |  | 
|  | test("gn_unittests") { | 
|  | deps = [ | 
|  | ":gn_unittests_sources", | 
|  | ] | 
|  |  | 
|  | data = [ | 
|  | "format_test_data/", | 
|  | ] | 
|  | } | 
|  |  | 
|  | jumbo_source_set("gn_unittests_sources") { | 
|  | testonly = true | 
|  |  | 
|  | sources = [ | 
|  | "action_target_generator_unittest.cc", | 
|  | "analyzer_unittest.cc", | 
|  | "args_unittest.cc", | 
|  | "builder_unittest.cc", | 
|  | "c_include_iterator_unittest.cc", | 
|  | "command_format_unittest.cc", | 
|  | "config_unittest.cc", | 
|  | "config_values_extractors_unittest.cc", | 
|  | "escape_unittest.cc", | 
|  | "exec_process_unittest.cc", | 
|  | "filesystem_utils_unittest.cc", | 
|  | "function_foreach_unittest.cc", | 
|  | "function_forward_variables_from_unittest.cc", | 
|  | "function_get_label_info_unittest.cc", | 
|  | "function_get_path_info_unittest.cc", | 
|  | "function_get_target_outputs_unittest.cc", | 
|  | "function_process_file_template_unittest.cc", | 
|  | "function_rebase_path_unittest.cc", | 
|  | "function_template_unittest.cc", | 
|  | "function_toolchain_unittest.cc", | 
|  | "function_write_file_unittest.cc", | 
|  | "functions_target_unittest.cc", | 
|  | "functions_unittest.cc", | 
|  | "header_checker_unittest.cc", | 
|  | "inherited_libraries_unittest.cc", | 
|  | "input_conversion_unittest.cc", | 
|  | "label_pattern_unittest.cc", | 
|  | "label_unittest.cc", | 
|  | "loader_unittest.cc", | 
|  | "ninja_action_target_writer_unittest.cc", | 
|  | "ninja_binary_target_writer_unittest.cc", | 
|  | "ninja_build_writer_unittest.cc", | 
|  | "ninja_bundle_data_target_writer_unittest.cc", | 
|  | "ninja_copy_target_writer_unittest.cc", | 
|  | "ninja_create_bundle_target_writer_unittest.cc", | 
|  | "ninja_group_target_writer_unittest.cc", | 
|  | "ninja_target_writer_unittest.cc", | 
|  | "ninja_toolchain_writer_unittest.cc", | 
|  | "operators_unittest.cc", | 
|  | "parse_tree_unittest.cc", | 
|  | "parser_unittest.cc", | 
|  | "path_output_unittest.cc", | 
|  | "pattern_unittest.cc", | 
|  | "runtime_deps_unittest.cc", | 
|  | "scope_per_file_provider_unittest.cc", | 
|  | "scope_unittest.cc", | 
|  | "source_dir_unittest.cc", | 
|  | "source_file_unittest.cc", | 
|  | "string_utils_unittest.cc", | 
|  | "substitution_pattern_unittest.cc", | 
|  | "substitution_writer_unittest.cc", | 
|  | "target_unittest.cc", | 
|  | "template_unittest.cc", | 
|  | "test_with_scheduler.cc", | 
|  | "test_with_scheduler.h", | 
|  | "test_with_scope.cc", | 
|  | "test_with_scope.h", | 
|  | "tokenizer_unittest.cc", | 
|  | "unique_vector_unittest.cc", | 
|  | "value_unittest.cc", | 
|  | "visibility_unittest.cc", | 
|  | "visual_studio_utils_unittest.cc", | 
|  | "visual_studio_writer_unittest.cc", | 
|  | "xcode_object_unittest.cc", | 
|  | "xml_element_writer_unittest.cc", | 
|  | ] | 
|  |  | 
|  | public_deps = [ | 
|  | ":gn_lib", | 
|  | "//base/test:run_all_unittests", | 
|  | "//base/test:test_support", | 
|  | "//testing/gtest", | 
|  | ] | 
|  | } | 
|  |  | 
|  | fuzzer_test("gn_parser_fuzzer") { | 
|  | sources = [ | 
|  | "parser_fuzzer.cc", | 
|  | ] | 
|  | deps = [ | 
|  | ":gn_lib", | 
|  | ] | 
|  | } |