Unverified Commit 4a4a8fe4 authored by Samuel Giddins's avatar Samuel Giddins Committed by GitHub

Merge pull request #7603 from jmkk/pods_proj_generator_perf

[Pods Project Generator] Improve performance by removing redundant processing for native target dependencies
parents 8e0f3b09 3207c69f
......@@ -11,6 +11,9 @@ To install release candidates run `[sudo] gem install cocoapods --pre`
* Improve performance of the dependency resolver by removing duplicates for dependency nodes.
[Jacek Suliga](https://github.com/jmkk)
* Improve performance of Pods project generator by skipping native targets for which dependent targets have already been added.
[Jacek Suliga](https://github.com/jmkk)
##### Bug Fixes
* Fix modular header access to header_dir's.
......
......@@ -217,6 +217,8 @@ module Pod
def set_target_dependencies
frameworks_group = project.frameworks_group
test_only_pod_targets = pod_targets.dup
pod_targets_for_deps = Set.new
pod_extension_targets = Set.new
aggregate_targets.each do |aggregate_target|
is_app_extension = !(aggregate_target.user_targets.map(&:symbol_type) &
[:app_extension, :watch_extension, :watch2_extension, :tv_extension, :messages_extension]).empty?
......@@ -239,15 +241,18 @@ module Pod
aggregate_target.native_target.add_dependency(pod_target.native_target)
configure_app_extension_api_only_for_target(pod_target) if is_app_extension
add_dependent_targets_to_native_target(pod_target.dependent_targets,
pod_target.native_target, is_app_extension,
pod_target.requires_frameworks? && !pod_target.static_framework?,
frameworks_group)
if is_app_extension
pod_extension_targets << pod_target
end
pod_targets_for_deps << pod_target
unless pod_target.static_framework?
add_pod_target_test_dependencies(pod_target, frameworks_group)
end
end
end
# Wire up remaining pod targets used only by tests and are not used by any aggregate target.
test_only_pod_targets.each do |pod_target|
unless pod_target.should_build?
......@@ -255,12 +260,20 @@ module Pod
next
end
unless pod_target.static_framework?
add_dependent_targets_to_native_target(pod_target.dependent_targets,
pod_target.native_target, false,
pod_target.requires_frameworks?, frameworks_group)
pod_targets_for_deps << pod_target
add_pod_target_test_dependencies(pod_target, frameworks_group)
end
end
# Actually add the dependent targets
pod_targets_for_deps.each do |pod_target|
is_app_extension = pod_extension_targets.include? pod_target
add_dependent_targets_to_native_target(pod_target.dependent_targets,
pod_target.native_target,
is_app_extension,
pod_target.requires_frameworks? && !pod_target.static_framework?,
frameworks_group)
end
end
# @param [String] pod The root name of the development pod.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment