| # 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", | 
 |   ] | 
 | } |