cocoapods-podtarget-optimize 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 09b713fe460bbd094e70c82f8787cecf122e82d7
4
+ data.tar.gz: fa286c9102b6d240dd2817ee61a619651d6313d4
5
+ SHA512:
6
+ metadata.gz: d244d69f127f60660c0e4ca1be75b478db60936313444596d284a8d2463b929012fe9f58330d761987839e9f6fb02ed81b47b6be6cfa34d1e7b469ca0d178689
7
+ data.tar.gz: f228a65ce2804555eebbb2e4d38e59d29cca12a35ede1aa3b9958e3db06b7598085ca7f72a53193999bc6d021afe6c0cb968f137a31cecc6207de316b7371c0b
@@ -0,0 +1,152 @@
1
+ require "cocoapods-podtarget-optimize/version"
2
+
3
+ module Pod
4
+ class Installer
5
+ # Creates the target for the Pods libraries in the Pods project and the
6
+ # relative support files.
7
+ #
8
+ class PodTargetInstaller < TargetInstaller
9
+ # Creates the target in the Pods project and the relative support files.
10
+ #
11
+ # @return [void]
12
+ #
13
+ def install!
14
+ UI.message "- Installing target `#{target.name}` #{target.platform}" do
15
+ add_target
16
+ create_support_files_dir
17
+ add_files_to_build_phases
18
+ add_resources_bundle_targets
19
+ create_xcconfig_file
20
+ ########################## Added ##########################
21
+ # if the souce build only have dummy.m, ignore this target
22
+ if native_target.source_build_phase.files.count > 0
23
+ create_prefix_header
24
+ else
25
+ project.targets.pop
26
+ target.native_target = nil
27
+ @native_target = nil
28
+ end
29
+ ########################## Added ##########################
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+
37
+
38
+ module Pod
39
+ class Installer
40
+ def install_libraries
41
+ UI.message '- Installing targets' do
42
+ pod_targets.sort_by(&:name).each do |pod_target|
43
+ next if pod_target.target_definition.dependencies.empty?
44
+ target_installer = PodTargetInstaller.new(sandbox, pod_target)
45
+ target_installer.install!
46
+ end
47
+
48
+ aggregate_targets.sort_by(&:name).each do |target|
49
+ next if target.target_definition.dependencies.empty?
50
+ target_installer = AggregateTargetInstaller.new(sandbox, target)
51
+ target_installer.install!
52
+ end
53
+
54
+ # TODO
55
+ # Move and add specs
56
+ pod_targets.sort_by(&:name).each do |pod_target|
57
+ pod_target.file_accessors.each do |file_accessor|
58
+ file_accessor.spec_consumer.frameworks.each do |framework|
59
+ ########################## Added ############################
60
+ # only config when the target is exist
61
+ next if pod_target.native_target.nil?
62
+ ########################## Added ############################
63
+ pod_target.native_target.add_system_framework(framework)
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+
70
+ def set_target_dependencies
71
+ aggregate_targets.each do |aggregate_target|
72
+ aggregate_target.pod_targets.each do |pod_target|
73
+ ########################## Added ############################
74
+ # only config when the target is exist
75
+ next if pod_target.native_target.nil?
76
+ ########################## Added ############################
77
+ aggregate_target.native_target.add_dependency(pod_target.native_target)
78
+ pod_target.dependencies.each do |dep|
79
+
80
+ unless dep == pod_target.pod_name
81
+ pod_dependency_target = aggregate_target.pod_targets.find { |target| target.pod_name == dep }
82
+ # TODO remove me
83
+ unless pod_dependency_target
84
+ puts "[BUG] DEP: #{dep}"
85
+ end
86
+ ########################## Added ############################
87
+ # only config when the target is exist
88
+ next if pod_dependency_target.native_target.nil?
89
+ ########################## Added ############################
90
+ pod_target.native_target.add_dependency(pod_dependency_target.native_target)
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
98
+
99
+
100
+ module Pod
101
+ module Generator
102
+ module XCConfig
103
+ # Generates the xcconfigs for the aggregate targets.
104
+ #
105
+ class AggregateXCConfig
106
+ def generate
107
+ header_search_path_flags = target.sandbox.public_headers.search_paths(target.platform)
108
+ @xcconfig = Xcodeproj::Config.new(
109
+ 'OTHER_LDFLAGS' => XCConfigHelper.default_ld_flags(target),
110
+ 'OTHER_LIBTOOLFLAGS' => '$(OTHER_LDFLAGS)',
111
+ 'HEADER_SEARCH_PATHS' => XCConfigHelper.quote(header_search_path_flags),
112
+ 'PODS_ROOT' => target.relative_pods_root,
113
+ 'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) COCOAPODS=1',
114
+ 'OTHER_CFLAGS' => '$(inherited) ' + XCConfigHelper.quote(header_search_path_flags, '-isystem')
115
+ )
116
+
117
+ target.pod_targets.each do |pod_target|
118
+ next unless pod_target.include_in_build_config?(@configuration_name)
119
+
120
+ pod_target.file_accessors.each do |file_accessor|
121
+ XCConfigHelper.add_spec_build_settings_to_xcconfig(file_accessor.spec_consumer, @xcconfig)
122
+ file_accessor.vendored_frameworks.each do |vendored_framework|
123
+ XCConfigHelper.add_framework_build_settings(vendored_framework, @xcconfig, target.sandbox.root)
124
+ end
125
+ file_accessor.vendored_libraries.each do |vendored_library|
126
+ XCConfigHelper.add_library_build_settings(vendored_library, @xcconfig, target.sandbox.root)
127
+ end
128
+ end
129
+
130
+ # Add pod static lib to list of libraries that are to be linked with
131
+ # the user’s project.
132
+
133
+ ########################## Added ############################
134
+ # only config when the target is exist
135
+ next if pod_target.native_target.nil?
136
+ ########################## Added ############################
137
+
138
+ @xcconfig.merge!('OTHER_LDFLAGS' => %(-l "#{pod_target.name}"))
139
+ end
140
+
141
+ # TODO Need to decide how we are going to ensure settings like these
142
+ # are always excluded from the user's project.
143
+ #
144
+ # See https://github.com/CocoaPods/CocoaPods/issues/1216
145
+ @xcconfig.attributes.delete('USE_HEADERMAP')
146
+
147
+ @xcconfig
148
+ end
149
+ end
150
+ end
151
+ end
152
+ end
@@ -0,0 +1,3 @@
1
+ module CocoapodsPodtargetOptimize
2
+ VERSION = "0.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cocoapods-podtarget-optimize
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - 晨燕
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-01-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: cocoapods
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '0.35'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '0.35'
55
+ description: 将只有dummySource的target忽略掉,加快build速度
56
+ email:
57
+ - chenyan.mnn@taobao.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - lib/cocoapods-podtarget-optimize/version.rb
63
+ - lib/cocoapods-podtarget-optimize.rb
64
+ homepage: https://github.com/mahaiyannn/cocoapods-podtarget-optimize.git
65
+ licenses:
66
+ - MIT
67
+ metadata: {}
68
+ post_install_message:
69
+ rdoc_options: []
70
+ require_paths:
71
+ - lib
72
+ required_ruby_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ required_rubygems_version: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - '>='
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ requirements: []
83
+ rubyforge_project:
84
+ rubygems_version: 2.0.14
85
+ signing_key:
86
+ specification_version: 4
87
+ summary: pod target 的优化
88
+ test_files: []
89
+ has_rdoc: