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() {
return "Static library";
case COPY_FILES:
return "Copy";
- case CUSTOM:
- return "Custom";
+ case ACTION:
+ return "Action";
+ case ACTION_FOREACH:
+ return "ActionForEach";
default:
return "";
}
// pulled from G to A in case G has configs directly on it).
PullDependentTargetInfo(&unique_configs);
}
+ PullForwardedDependentConfigs();
+ PullRecursiveHardDeps();
}
bool Target::IsLinkable() const {
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++) {
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());
+ }
+}