blob: ffffd5a5ddb8f05561c957a2c5f4f9b1b7c192a5 [file] [log] [blame]
# 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",
]
}