Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / tools / gn / target.cc
index 635c50e..b6845d0 100644 (file)
@@ -54,8 +54,8 @@ void MergeAllDependentConfigsFrom(const Target* from_target,
 Target::Target(const Settings* settings, const Label& label)
     : Item(settings, label),
       output_type_(UNKNOWN),
-      hard_dep_(false),
-      external_(false) {
+      all_headers_public_(true),
+      hard_dep_(false) {
 }
 
 Target::~Target() {
@@ -76,8 +76,10 @@ const char* Target::GetStringForOutputType(OutputType type) {
       return "Static library";
     case COPY_FILES:
       return "Copy";
-    case CUSTOM:
-      return "Custom";
+    case ACTION:
+      return "Action";
+    case ACTION_FOREACH:
+      return "ActionForEach";
     default:
       return "";
   }
@@ -145,6 +147,8 @@ void Target::OnResolved() {
     // pulled from G to A in case G has configs directly on it).
     PullDependentTargetInfo(&unique_configs);
   }
+  PullForwardedDependentConfigs();
+  PullRecursiveHardDeps();
 }
 
 bool Target::IsLinkable() const {
@@ -179,6 +183,12 @@ void Target::PullDependentTargetInfo(std::set<const Config*>* unique_configs) {
       all_libs_.append(dep->all_libs());
     }
   }
+}
+
+void Target::PullForwardedDependentConfigs() {
+  // Groups implicitly forward all if its dependency's configs.
+  if (output_type() == GROUP)
+    forward_dependent_configs_ = deps_;
 
   // Forward direct dependent configs if requested.
   for (size_t dep = 0; dep < forward_dependent_configs_.size(); dep++) {
@@ -195,3 +205,13 @@ void Target::PullDependentTargetInfo(std::set<const Config*>* unique_configs) {
         from_target->direct_dependent_configs().end());
   }
 }
+
+void Target::PullRecursiveHardDeps() {
+  for (size_t dep_i = 0; dep_i < deps_.size(); dep_i++) {
+    const Target* dep = deps_[dep_i].ptr;
+    if (dep->hard_dep())
+      recursive_hard_deps_.insert(dep);
+    recursive_hard_deps_.insert(dep->recursive_hard_deps().begin(),
+                                dep->recursive_hard_deps().end());
+  }
+}