1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "gn/ninja_group_target_writer.h" 6 7 #include "base/strings/string_util.h" 8 #include "gn/deps_iterator.h" 9 #include "gn/output_file.h" 10 #include "gn/string_utils.h" 11 #include "gn/target.h" 12 NinjaGroupTargetWriter(const Target * target,std::ostream & out)13NinjaGroupTargetWriter::NinjaGroupTargetWriter(const Target* target, 14 std::ostream& out) 15 : NinjaTargetWriter(target, out) {} 16 17 NinjaGroupTargetWriter::~NinjaGroupTargetWriter() = default; 18 Run()19void NinjaGroupTargetWriter::Run() { 20 // A group rule just generates a stamp file with dependencies on each of 21 // the deps and data_deps in the group. 22 std::vector<OutputFile> output_files; 23 std::vector<OutputFile> data_output_files; 24 for (const auto& pair : target_->GetDeps(Target::DEPS_LINKED)) { 25 if (pair.ptr->IsDataOnly()) { 26 data_output_files.push_back(pair.ptr->dependency_output_file()); 27 } else { 28 output_files.push_back(pair.ptr->dependency_output_file()); 29 } 30 } 31 32 const LabelTargetVector& data_deps = target_->data_deps(); 33 for (const auto& pair : data_deps) 34 data_output_files.push_back(pair.ptr->dependency_output_file()); 35 36 WriteStampForTarget(output_files, data_output_files); 37 } 38