| Index: tools/gn/target.h
|
| diff --git a/tools/gn/target.h b/tools/gn/target.h
|
| index 572333d925f7086459139619a5e0eeba603327a3..f0301e9f1c4e8d01088198a9458353d3133254bf 100644
|
| --- a/tools/gn/target.h
|
| +++ b/tools/gn/target.h
|
| @@ -20,6 +20,7 @@
|
| #include "tools/gn/label_ptr.h"
|
| #include "tools/gn/ordered_set.h"
|
| #include "tools/gn/source_file.h"
|
| +#include "tools/gn/unique_vector.h"
|
|
|
| class InputFile;
|
| class Settings;
|
| @@ -105,38 +106,38 @@ class Target : public Item {
|
|
|
| // List of configs that this class inherits settings from. Once a target is
|
| // resolved, this will also list all- and direct-dependent configs.
|
| - const LabelConfigVector& configs() const { return configs_; }
|
| - LabelConfigVector& configs() { return configs_; }
|
| + const UniqueVector<LabelConfigPair>& configs() const { return configs_; }
|
| + UniqueVector<LabelConfigPair>& configs() { return configs_; }
|
|
|
| // List of configs that all dependencies (direct and indirect) of this
|
| // target get. These configs are not added to this target. Note that due
|
| // to the way this is computed, there may be duplicates in this list.
|
| - const LabelConfigVector& all_dependent_configs() const {
|
| + const UniqueVector<LabelConfigPair>& all_dependent_configs() const {
|
| return all_dependent_configs_;
|
| }
|
| - LabelConfigVector& all_dependent_configs() {
|
| + UniqueVector<LabelConfigPair>& all_dependent_configs() {
|
| return all_dependent_configs_;
|
| }
|
|
|
| // List of configs that targets depending directly on this one get. These
|
| // configs are not added to this target.
|
| - const LabelConfigVector& direct_dependent_configs() const {
|
| + const UniqueVector<LabelConfigPair>& direct_dependent_configs() const {
|
| return direct_dependent_configs_;
|
| }
|
| - LabelConfigVector& direct_dependent_configs() {
|
| + UniqueVector<LabelConfigPair>& direct_dependent_configs() {
|
| return direct_dependent_configs_;
|
| }
|
|
|
| // A list of a subset of deps where we'll re-export direct_dependent_configs
|
| // as direct_dependent_configs of this target.
|
| - const LabelTargetVector& forward_dependent_configs() const {
|
| + const UniqueVector<LabelTargetPair>& forward_dependent_configs() const {
|
| return forward_dependent_configs_;
|
| }
|
| - LabelTargetVector& forward_dependent_configs() {
|
| + UniqueVector<LabelTargetPair>& forward_dependent_configs() {
|
| return forward_dependent_configs_;
|
| }
|
|
|
| - const std::set<const Target*>& inherited_libraries() const {
|
| + const UniqueVector<const Target*>& inherited_libraries() const {
|
| return inherited_libraries_;
|
| }
|
|
|
| @@ -157,7 +158,7 @@ class Target : public Item {
|
| private:
|
| // Pulls necessary information from dependencies to this one when all
|
| // dependencies have been resolved.
|
| - void PullDependentTargetInfo(std::set<const Config*>* unique_configs);
|
| + void PullDependentTargetInfo();
|
|
|
| // These each pull specific things from dependencies to this one when all
|
| // deps have been resolved.
|
| @@ -190,10 +191,10 @@ class Target : public Item {
|
| LabelTargetVector deps_;
|
| LabelTargetVector datadeps_;
|
|
|
| - LabelConfigVector configs_;
|
| - LabelConfigVector all_dependent_configs_;
|
| - LabelConfigVector direct_dependent_configs_;
|
| - LabelTargetVector forward_dependent_configs_;
|
| + UniqueVector<LabelConfigPair> configs_;
|
| + UniqueVector<LabelConfigPair> all_dependent_configs_;
|
| + UniqueVector<LabelConfigPair> direct_dependent_configs_;
|
| + UniqueVector<LabelTargetPair> forward_dependent_configs_;
|
|
|
| bool external_;
|
|
|
| @@ -202,7 +203,7 @@ class Target : public Item {
|
| // sets do not get pushed beyond static library boundaries, and neither
|
| // source sets nor static libraries get pushed beyond sahred library
|
| // boundaries.
|
| - std::set<const Target*> inherited_libraries_;
|
| + UniqueVector<const Target*> inherited_libraries_;
|
|
|
| // These libs and dirs are inherited from statically linked deps and all
|
| // configs applying to this target.
|
| @@ -219,4 +220,20 @@ class Target : public Item {
|
| DISALLOW_COPY_AND_ASSIGN(Target);
|
| };
|
|
|
| +namespace BASE_HASH_NAMESPACE {
|
| +
|
| +#if defined(COMPILER_GCC)
|
| +template<> struct hash<const Target*> {
|
| + std::size_t operator()(const Target* t) const {
|
| + return reinterpret_cast<std::size_t>(t);
|
| + }
|
| +};
|
| +#elif defined(COMPILER_MSVC)
|
| +inline size_t hash_value(const Target* t) {
|
| + return reinterpret_cast<size_t>(t);
|
| +}
|
| +#endif // COMPILER...
|
| +
|
| +} // namespace BASE_HASH_NAMESPACE
|
| +
|
| #endif // TOOLS_GN_TARGET_H_
|
|
|