cocoapods 1.5.2 → 1.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +365 -1
- data/bin/pod +1 -1
- data/lib/cocoapods/command/cache/clean.rb +1 -1
- data/lib/cocoapods/command/init.rb +4 -2
- data/lib/cocoapods/command/install.rb +7 -0
- data/lib/cocoapods/command/lib/lint.rb +8 -1
- data/lib/cocoapods/command/outdated.rb +4 -9
- data/lib/cocoapods/command/repo/add.rb +1 -1
- data/lib/cocoapods/command/repo/list.rb +1 -1
- data/lib/cocoapods/command/repo/push.rb +17 -12
- data/lib/cocoapods/command/repo/remove.rb +1 -1
- data/lib/cocoapods/command/repo/update.rb +1 -1
- data/lib/cocoapods/command/setup.rb +1 -1
- data/lib/cocoapods/command/spec/create.rb +39 -39
- data/lib/cocoapods/command/spec/lint.rb +8 -1
- data/lib/cocoapods/command.rb +3 -1
- data/lib/cocoapods/config.rb +13 -2
- data/lib/cocoapods/downloader/cache.rb +1 -1
- data/lib/cocoapods/executable.rb +3 -3
- data/lib/cocoapods/external_sources/abstract_external_source.rb +23 -13
- data/lib/cocoapods/external_sources.rb +7 -4
- data/lib/cocoapods/gem_version.rb +1 -1
- data/lib/cocoapods/generator/acknowledgements/markdown.rb +6 -0
- data/lib/cocoapods/generator/acknowledgements/plist.rb +13 -2
- data/lib/cocoapods/generator/app_target_helper.rb +141 -17
- data/lib/cocoapods/generator/copy_resources_script.rb +14 -3
- data/lib/cocoapods/generator/dummy_source.rb +14 -5
- data/lib/cocoapods/generator/embed_frameworks_script.rb +37 -20
- data/lib/cocoapods/generator/header.rb +1 -1
- data/lib/cocoapods/generator/info_plist_file.rb +12 -4
- data/lib/cocoapods/generator/prefix_header.rb +2 -2
- data/lib/cocoapods/hooks_manager.rb +28 -17
- data/lib/cocoapods/installer/analyzer/analysis_result.rb +52 -22
- data/lib/cocoapods/installer/analyzer/locking_dependency_analyzer.rb +14 -6
- data/lib/cocoapods/installer/analyzer/pod_variant.rb +4 -5
- data/lib/cocoapods/installer/analyzer/sandbox_analyzer.rb +3 -14
- data/lib/cocoapods/installer/analyzer/specs_state.rb +28 -4
- data/lib/cocoapods/installer/analyzer/target_inspection_result.rb +27 -14
- data/lib/cocoapods/installer/analyzer/target_inspector.rb +17 -11
- data/lib/cocoapods/installer/analyzer.rb +391 -284
- data/lib/cocoapods/installer/installation_options.rb +2 -0
- data/lib/cocoapods/installer/pod_source_installer.rb +31 -43
- data/lib/cocoapods/installer/post_install_hooks_context.rb +72 -47
- data/lib/cocoapods/installer/pre_install_hooks_context.rb +22 -13
- data/lib/cocoapods/installer/source_provider_hooks_context.rb +3 -1
- data/lib/cocoapods/installer/user_project_integrator/target_integrator/xcconfig_integrator.rb +44 -11
- data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +69 -29
- data/lib/cocoapods/installer/user_project_integrator.rb +6 -4
- data/lib/cocoapods/installer/xcode/pods_project_generator/aggregate_target_installer.rb +25 -16
- data/lib/cocoapods/installer/xcode/pods_project_generator/app_host_installer.rb +104 -0
- data/lib/cocoapods/installer/xcode/pods_project_generator/file_references_installer.rb +23 -50
- data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb +296 -177
- data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_integrator.rb +51 -33
- data/lib/cocoapods/installer/xcode/pods_project_generator/target_installation_result.rb +93 -0
- data/lib/cocoapods/installer/xcode/pods_project_generator/target_installer.rb +62 -69
- data/lib/cocoapods/installer/xcode/pods_project_generator/target_installer_helper.rb +72 -0
- data/lib/cocoapods/installer/xcode/pods_project_generator.rb +130 -122
- data/lib/cocoapods/installer/xcode/target_validator.rb +15 -9
- data/lib/cocoapods/installer.rb +140 -63
- data/lib/cocoapods/project.rb +16 -14
- data/lib/cocoapods/resolver/resolver_specification.rb +41 -0
- data/lib/cocoapods/resolver.rb +79 -98
- data/lib/cocoapods/sandbox/file_accessor.rb +11 -6
- data/lib/cocoapods/sandbox/headers_store.rb +9 -8
- data/lib/cocoapods/sandbox/path_list.rb +5 -8
- data/lib/cocoapods/sandbox.rb +31 -43
- data/lib/cocoapods/sources_manager.rb +1 -1
- data/lib/cocoapods/target/aggregate_target.rb +143 -85
- data/lib/cocoapods/target/build_settings.rb +1124 -0
- data/lib/cocoapods/target/framework_paths.rb +36 -0
- data/lib/cocoapods/target/pod_target.rb +198 -295
- data/lib/cocoapods/target.rb +92 -37
- data/lib/cocoapods/user_interface.rb +5 -0
- data/lib/cocoapods/validator.rb +149 -44
- data/lib/cocoapods.rb +0 -1
- metadata +31 -23
- data/lib/cocoapods/generator/xcconfig/aggregate_xcconfig.rb +0 -260
- data/lib/cocoapods/generator/xcconfig/pod_xcconfig.rb +0 -87
- data/lib/cocoapods/generator/xcconfig/xcconfig_helper.rb +0 -558
- data/lib/cocoapods/generator/xcconfig.rb +0 -13
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eloy Duran
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2019-02-21 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: cocoapods-core
|
@@ -19,14 +19,14 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - '='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 1.
|
22
|
+
version: 1.6.1
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - '='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 1.
|
29
|
+
version: 1.6.1
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: claide
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -73,7 +73,7 @@ dependencies:
|
|
73
73
|
requirements:
|
74
74
|
- - ">="
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: 1.2.
|
76
|
+
version: 1.2.2
|
77
77
|
- - "<"
|
78
78
|
- !ruby/object:Gem::Version
|
79
79
|
version: '2.0'
|
@@ -83,7 +83,7 @@ dependencies:
|
|
83
83
|
requirements:
|
84
84
|
- - ">="
|
85
85
|
- !ruby/object:Gem::Version
|
86
|
-
version: 1.2.
|
86
|
+
version: 1.2.2
|
87
87
|
- - "<"
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '2.0'
|
@@ -153,7 +153,7 @@ dependencies:
|
|
153
153
|
requirements:
|
154
154
|
- - ">="
|
155
155
|
- !ruby/object:Gem::Version
|
156
|
-
version: 1.3.
|
156
|
+
version: 1.3.1
|
157
157
|
- - "<"
|
158
158
|
- !ruby/object:Gem::Version
|
159
159
|
version: '2.0'
|
@@ -163,7 +163,7 @@ dependencies:
|
|
163
163
|
requirements:
|
164
164
|
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version: 1.3.
|
166
|
+
version: 1.3.1
|
167
167
|
- - "<"
|
168
168
|
- !ruby/object:Gem::Version
|
169
169
|
version: '2.0'
|
@@ -193,21 +193,21 @@ dependencies:
|
|
193
193
|
requirements:
|
194
194
|
- - "~>"
|
195
195
|
- !ruby/object:Gem::Version
|
196
|
-
version: 0.6.
|
196
|
+
version: 0.6.6
|
197
197
|
type: :runtime
|
198
198
|
prerelease: false
|
199
199
|
version_requirements: !ruby/object:Gem::Requirement
|
200
200
|
requirements:
|
201
201
|
- - "~>"
|
202
202
|
- !ruby/object:Gem::Version
|
203
|
-
version: 0.6.
|
203
|
+
version: 0.6.6
|
204
204
|
- !ruby/object:Gem::Dependency
|
205
205
|
name: xcodeproj
|
206
206
|
requirement: !ruby/object:Gem::Requirement
|
207
207
|
requirements:
|
208
208
|
- - ">="
|
209
209
|
- !ruby/object:Gem::Version
|
210
|
-
version: 1.
|
210
|
+
version: 1.8.1
|
211
211
|
- - "<"
|
212
212
|
- !ruby/object:Gem::Version
|
213
213
|
version: '2.0'
|
@@ -217,7 +217,7 @@ dependencies:
|
|
217
217
|
requirements:
|
218
218
|
- - ">="
|
219
219
|
- !ruby/object:Gem::Version
|
220
|
-
version: 1.
|
220
|
+
version: 1.8.1
|
221
221
|
- - "<"
|
222
222
|
- !ruby/object:Gem::Version
|
223
223
|
version: '2.0'
|
@@ -273,16 +273,22 @@ dependencies:
|
|
273
273
|
name: fourflusher
|
274
274
|
requirement: !ruby/object:Gem::Requirement
|
275
275
|
requirements:
|
276
|
-
- - "
|
276
|
+
- - ">="
|
277
277
|
- !ruby/object:Gem::Version
|
278
|
-
version: 2.0
|
278
|
+
version: 2.2.0
|
279
|
+
- - "<"
|
280
|
+
- !ruby/object:Gem::Version
|
281
|
+
version: '3.0'
|
279
282
|
type: :runtime
|
280
283
|
prerelease: false
|
281
284
|
version_requirements: !ruby/object:Gem::Requirement
|
282
285
|
requirements:
|
283
|
-
- - "
|
286
|
+
- - ">="
|
287
|
+
- !ruby/object:Gem::Version
|
288
|
+
version: 2.2.0
|
289
|
+
- - "<"
|
284
290
|
- !ruby/object:Gem::Version
|
285
|
-
version:
|
291
|
+
version: '3.0'
|
286
292
|
- !ruby/object:Gem::Dependency
|
287
293
|
name: gh_inspector
|
288
294
|
requirement: !ruby/object:Gem::Requirement
|
@@ -317,14 +323,14 @@ dependencies:
|
|
317
323
|
requirements:
|
318
324
|
- - "~>"
|
319
325
|
- !ruby/object:Gem::Version
|
320
|
-
version: '1.
|
326
|
+
version: '1.4'
|
321
327
|
type: :runtime
|
322
328
|
prerelease: false
|
323
329
|
version_requirements: !ruby/object:Gem::Requirement
|
324
330
|
requirements:
|
325
331
|
- - "~>"
|
326
332
|
- !ruby/object:Gem::Version
|
327
|
-
version: '1.
|
333
|
+
version: '1.4'
|
328
334
|
- !ruby/object:Gem::Dependency
|
329
335
|
name: bacon
|
330
336
|
requirement: !ruby/object:Gem::Requirement
|
@@ -454,10 +460,6 @@ files:
|
|
454
460
|
- lib/cocoapods/generator/module_map.rb
|
455
461
|
- lib/cocoapods/generator/prefix_header.rb
|
456
462
|
- lib/cocoapods/generator/umbrella_header.rb
|
457
|
-
- lib/cocoapods/generator/xcconfig.rb
|
458
|
-
- lib/cocoapods/generator/xcconfig/aggregate_xcconfig.rb
|
459
|
-
- lib/cocoapods/generator/xcconfig/pod_xcconfig.rb
|
460
|
-
- lib/cocoapods/generator/xcconfig/xcconfig_helper.rb
|
461
463
|
- lib/cocoapods/hooks_manager.rb
|
462
464
|
- lib/cocoapods/installer.rb
|
463
465
|
- lib/cocoapods/installer/analyzer.rb
|
@@ -483,15 +485,19 @@ files:
|
|
483
485
|
- lib/cocoapods/installer/xcode.rb
|
484
486
|
- lib/cocoapods/installer/xcode/pods_project_generator.rb
|
485
487
|
- lib/cocoapods/installer/xcode/pods_project_generator/aggregate_target_installer.rb
|
488
|
+
- lib/cocoapods/installer/xcode/pods_project_generator/app_host_installer.rb
|
486
489
|
- lib/cocoapods/installer/xcode/pods_project_generator/file_references_installer.rb
|
487
490
|
- lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb
|
488
491
|
- lib/cocoapods/installer/xcode/pods_project_generator/pod_target_integrator.rb
|
492
|
+
- lib/cocoapods/installer/xcode/pods_project_generator/target_installation_result.rb
|
489
493
|
- lib/cocoapods/installer/xcode/pods_project_generator/target_installer.rb
|
494
|
+
- lib/cocoapods/installer/xcode/pods_project_generator/target_installer_helper.rb
|
490
495
|
- lib/cocoapods/installer/xcode/target_validator.rb
|
491
496
|
- lib/cocoapods/open-uri.rb
|
492
497
|
- lib/cocoapods/project.rb
|
493
498
|
- lib/cocoapods/resolver.rb
|
494
499
|
- lib/cocoapods/resolver/lazy_specification.rb
|
500
|
+
- lib/cocoapods/resolver/resolver_specification.rb
|
495
501
|
- lib/cocoapods/sandbox.rb
|
496
502
|
- lib/cocoapods/sandbox/file_accessor.rb
|
497
503
|
- lib/cocoapods/sandbox/headers_store.rb
|
@@ -501,6 +507,8 @@ files:
|
|
501
507
|
- lib/cocoapods/sources_manager.rb
|
502
508
|
- lib/cocoapods/target.rb
|
503
509
|
- lib/cocoapods/target/aggregate_target.rb
|
510
|
+
- lib/cocoapods/target/build_settings.rb
|
511
|
+
- lib/cocoapods/target/framework_paths.rb
|
504
512
|
- lib/cocoapods/target/pod_target.rb
|
505
513
|
- lib/cocoapods/user_interface.rb
|
506
514
|
- lib/cocoapods/user_interface/error_report.rb
|
@@ -526,7 +534,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
526
534
|
version: '0'
|
527
535
|
requirements: []
|
528
536
|
rubyforge_project:
|
529
|
-
rubygems_version: 2.
|
537
|
+
rubygems_version: 2.6.14
|
530
538
|
signing_key:
|
531
539
|
specification_version: 3
|
532
540
|
summary: The Cocoa library package manager.
|
@@ -1,260 +0,0 @@
|
|
1
|
-
module Pod
|
2
|
-
module Generator
|
3
|
-
module XCConfig
|
4
|
-
# Generates the xcconfigs for the aggregate targets.
|
5
|
-
#
|
6
|
-
class AggregateXCConfig
|
7
|
-
# @return [AggregateTarget] the target represented by this xcconfig.
|
8
|
-
#
|
9
|
-
attr_reader :target
|
10
|
-
|
11
|
-
# @return [String] the name of the build configuration to generate this
|
12
|
-
# xcconfig for.
|
13
|
-
#
|
14
|
-
attr_reader :configuration_name
|
15
|
-
|
16
|
-
# Initialize a new instance
|
17
|
-
#
|
18
|
-
# @param [Target] target @see target
|
19
|
-
#
|
20
|
-
# @param [String] configuration_name @see configuration_name
|
21
|
-
#
|
22
|
-
def initialize(target, configuration_name)
|
23
|
-
@target = target
|
24
|
-
@configuration_name = configuration_name
|
25
|
-
end
|
26
|
-
|
27
|
-
# @return [Xcodeproj::Config] The generated xcconfig.
|
28
|
-
#
|
29
|
-
attr_reader :xcconfig
|
30
|
-
|
31
|
-
# Generates and saves the xcconfig to the given path.
|
32
|
-
#
|
33
|
-
# @param [Pathname] path
|
34
|
-
# the path where the xcconfig should be stored.
|
35
|
-
#
|
36
|
-
# @return [void]
|
37
|
-
#
|
38
|
-
def save_as(path)
|
39
|
-
generate.save_as(path)
|
40
|
-
end
|
41
|
-
|
42
|
-
# Generates the xcconfig.
|
43
|
-
#
|
44
|
-
# @note The xcconfig file for a Pods integration target includes the
|
45
|
-
# namespaced xcconfig files for each spec target dependency.
|
46
|
-
# Each namespaced configuration value is merged into the Pod
|
47
|
-
# xcconfig file.
|
48
|
-
#
|
49
|
-
# @todo This doesn't include the specs xcconfigs anymore and now the
|
50
|
-
# logic is duplicated.
|
51
|
-
#
|
52
|
-
# @return [Xcodeproj::Config]
|
53
|
-
#
|
54
|
-
def generate
|
55
|
-
includes_static_libs = !target.requires_frameworks?
|
56
|
-
includes_static_libs ||= pod_targets.flat_map(&:file_accessors).any? { |fa| !fa.vendored_static_artifacts.empty? }
|
57
|
-
config = {
|
58
|
-
'FRAMEWORK_SEARCH_PATHS' => '$(inherited) ',
|
59
|
-
'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) COCOAPODS=1',
|
60
|
-
'HEADER_SEARCH_PATHS' => '$(inherited) ',
|
61
|
-
'LIBRARY_SEARCH_PATHS' => '$(inherited) ',
|
62
|
-
'OTHER_CFLAGS' => '$(inherited) ',
|
63
|
-
'OTHER_LDFLAGS' => '$(inherited) ' + XCConfigHelper.default_ld_flags(target, includes_static_libs),
|
64
|
-
'OTHER_SWIFT_FLAGS' => '$(inherited) ',
|
65
|
-
'PODS_PODFILE_DIR_PATH' => target.podfile_dir_relative_path,
|
66
|
-
'PODS_ROOT' => target.relative_pods_root,
|
67
|
-
'SWIFT_INCLUDE_PATHS' => '$(inherited) ',
|
68
|
-
}.merge(embedded_content_settings)
|
69
|
-
|
70
|
-
@xcconfig = Xcodeproj::Config.new(config)
|
71
|
-
|
72
|
-
@xcconfig.merge!(merged_user_target_xcconfigs)
|
73
|
-
|
74
|
-
generate_settings_to_import_pod_targets
|
75
|
-
|
76
|
-
XCConfigHelper.add_target_specific_settings(target, @xcconfig)
|
77
|
-
|
78
|
-
targets = pod_targets + target.search_paths_aggregate_targets.flat_map(&:pod_targets)
|
79
|
-
XCConfigHelper.generate_vendored_build_settings(target, targets, @xcconfig)
|
80
|
-
XCConfigHelper.generate_other_ld_flags(target, pod_targets, @xcconfig)
|
81
|
-
|
82
|
-
# TODO: Need to decide how we are going to ensure settings like these
|
83
|
-
# are always excluded from the user's project.
|
84
|
-
#
|
85
|
-
# See https://github.com/CocoaPods/CocoaPods/issues/1216
|
86
|
-
@xcconfig.attributes.delete('USE_HEADERMAP')
|
87
|
-
|
88
|
-
# If any of the aggregate target dependencies bring in any vendored dynamic artifacts we should ensure to
|
89
|
-
# update the runpath search paths.
|
90
|
-
vendored_dynamic_artifacts = pod_targets.flat_map(&:file_accessors).flat_map(&:vendored_dynamic_artifacts)
|
91
|
-
|
92
|
-
symbol_type = target.user_targets.map(&:symbol_type).uniq.first
|
93
|
-
test_bundle = symbol_type == :octest_bundle || symbol_type == :unit_test_bundle || symbol_type == :ui_test_bundle
|
94
|
-
XCConfigHelper.generate_ld_runpath_search_paths(target, target.requires_host_target?, test_bundle, @xcconfig) if target.requires_frameworks? || vendored_dynamic_artifacts.count > 0
|
95
|
-
|
96
|
-
@xcconfig
|
97
|
-
end
|
98
|
-
|
99
|
-
#---------------------------------------------------------------------#
|
100
|
-
|
101
|
-
protected
|
102
|
-
|
103
|
-
# @return String the SWIFT_VERSION of the target being integrated
|
104
|
-
#
|
105
|
-
def target_swift_version
|
106
|
-
target.target_definition.swift_version unless target.target_definition.swift_version.blank?
|
107
|
-
end
|
108
|
-
|
109
|
-
EMBED_STANDARD_LIBRARIES_MINIMUM_VERSION = Gem::Version.new('2.3')
|
110
|
-
|
111
|
-
# @return [Hash<String, String>] the build settings necessary for Swift
|
112
|
-
# targets to be correctly embedded in their host.
|
113
|
-
#
|
114
|
-
def embedded_content_settings
|
115
|
-
# For embedded targets, which live in a host target, CocoaPods
|
116
|
-
# copies all of the embedded target's pod_targets its host
|
117
|
-
# target. Therefore, this check will properly require the Swift
|
118
|
-
# libs in the host target, if the embedded target has any pod targets
|
119
|
-
# that use Swift. Setting this for the embedded target would
|
120
|
-
# cause an App Store rejection because frameworks cannot be embedded
|
121
|
-
# in embedded targets.
|
122
|
-
|
123
|
-
swift_version = Gem::Version.new(target_swift_version)
|
124
|
-
should_embed = !target.requires_host_target? && pod_targets.any?(&:uses_swift?)
|
125
|
-
config = {}
|
126
|
-
if should_embed
|
127
|
-
if swift_version >= EMBED_STANDARD_LIBRARIES_MINIMUM_VERSION
|
128
|
-
config['ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'] = 'YES'
|
129
|
-
else
|
130
|
-
config['EMBEDDED_CONTENT_CONTAINS_SWIFT'] = 'YES'
|
131
|
-
end
|
132
|
-
end
|
133
|
-
config
|
134
|
-
end
|
135
|
-
|
136
|
-
# @return [Hash<String, String>] the build settings necessary to import
|
137
|
-
# the pod targets.
|
138
|
-
#
|
139
|
-
def settings_to_import_pod_targets
|
140
|
-
if target.requires_frameworks?
|
141
|
-
build_pod_targets = pod_targets.select(&:should_build?)
|
142
|
-
framework_header_search_paths = build_pod_targets.map do |target|
|
143
|
-
"#{target.build_product_path}/Headers"
|
144
|
-
end
|
145
|
-
build_settings = {
|
146
|
-
# TODO: remove quote imports in CocoaPods 2.0
|
147
|
-
# Make framework headers discoverable by `import "…"`
|
148
|
-
'OTHER_CFLAGS' => XCConfigHelper.quote(framework_header_search_paths, '-iquote'),
|
149
|
-
}
|
150
|
-
if pod_targets.any? { |t| !t.should_build? }
|
151
|
-
# Make library headers discoverable by `#import "…"`
|
152
|
-
library_header_search_paths = target.sandbox.public_headers.search_paths(target.platform)
|
153
|
-
# TODO: remove quote imports in CocoaPods 2.0
|
154
|
-
build_settings['HEADER_SEARCH_PATHS'] = XCConfigHelper.quote(library_header_search_paths)
|
155
|
-
build_settings['OTHER_CFLAGS'] += ' ' + XCConfigHelper.quote(library_header_search_paths, '-isystem')
|
156
|
-
end
|
157
|
-
build_settings
|
158
|
-
else
|
159
|
-
# Make headers discoverable from $PODS_ROOT/Headers directory
|
160
|
-
header_search_paths = target.sandbox.public_headers.search_paths(target.platform)
|
161
|
-
{
|
162
|
-
# TODO: remove quote imports in CocoaPods 2.0
|
163
|
-
# by `#import "…"`
|
164
|
-
'HEADER_SEARCH_PATHS' => XCConfigHelper.quote(header_search_paths),
|
165
|
-
# by `#import <…>`
|
166
|
-
'OTHER_CFLAGS' => XCConfigHelper.quote(header_search_paths, '-isystem'),
|
167
|
-
}
|
168
|
-
end
|
169
|
-
end
|
170
|
-
|
171
|
-
private
|
172
|
-
|
173
|
-
# Add build settings, which ensure that the pod targets can be imported from the integrating target.
|
174
|
-
# For >= 1.5.0 we use modular (stricter) header search paths this means that the integrated target will only be
|
175
|
-
# able to import public headers using `<>` or `@import` notation, but never import any private headers.
|
176
|
-
#
|
177
|
-
# For < 1.5.0 legacy header search paths the same rules apply: It's the wild west.
|
178
|
-
#
|
179
|
-
def generate_settings_to_import_pod_targets
|
180
|
-
@xcconfig.merge! XCConfigHelper.search_paths_for_dependent_targets(target, pod_targets)
|
181
|
-
@xcconfig.merge!(settings_to_import_pod_targets)
|
182
|
-
target.search_paths_aggregate_targets.each do |search_paths_target|
|
183
|
-
generator = AggregateXCConfig.new(search_paths_target, configuration_name)
|
184
|
-
@xcconfig.merge! XCConfigHelper.search_paths_for_dependent_targets(nil, search_paths_target.pod_targets)
|
185
|
-
@xcconfig.merge!(generator.settings_to_import_pod_targets)
|
186
|
-
# Propagate any HEADER_SEARCH_PATHS settings from the search paths.
|
187
|
-
XCConfigHelper.propagate_header_search_paths_from_search_paths(search_paths_target, @xcconfig)
|
188
|
-
end
|
189
|
-
end
|
190
|
-
|
191
|
-
private
|
192
|
-
|
193
|
-
#---------------------------------------------------------------------#
|
194
|
-
|
195
|
-
# !@group Private Helpers
|
196
|
-
|
197
|
-
# Returns the {PodTarget}s which are active for the current
|
198
|
-
# configuration name.
|
199
|
-
#
|
200
|
-
# @return [Array<PodTarget>]
|
201
|
-
#
|
202
|
-
def pod_targets
|
203
|
-
target.pod_targets_for_build_configuration(configuration_name)
|
204
|
-
end
|
205
|
-
|
206
|
-
# Returns the +user_target_xcconfig+ for all pod targets and their spec
|
207
|
-
# consumers grouped by keys
|
208
|
-
#
|
209
|
-
# @return [Hash{String,Hash{Target,String}]
|
210
|
-
#
|
211
|
-
def user_target_xcconfig_values_by_consumer_by_key
|
212
|
-
pod_targets.each_with_object({}) do |target, hash|
|
213
|
-
target.spec_consumers.each do |spec_consumer|
|
214
|
-
spec_consumer.user_target_xcconfig.each do |k, v|
|
215
|
-
(hash[k] ||= {})[spec_consumer] = v
|
216
|
-
end
|
217
|
-
end
|
218
|
-
end
|
219
|
-
end
|
220
|
-
|
221
|
-
# Merges the +user_target_xcconfig+ for all pod targets into the
|
222
|
-
# #xcconfig and warns on conflicting definitions.
|
223
|
-
#
|
224
|
-
# @return [Hash{String, String}]
|
225
|
-
#
|
226
|
-
def merged_user_target_xcconfigs
|
227
|
-
settings = user_target_xcconfig_values_by_consumer_by_key
|
228
|
-
settings.each_with_object({}) do |(key, values_by_consumer), xcconfig|
|
229
|
-
uniq_values = values_by_consumer.values.uniq
|
230
|
-
values_are_bools = uniq_values.all? { |v| v =~ /^(yes|no)$/i }
|
231
|
-
if values_are_bools
|
232
|
-
# Boolean build settings
|
233
|
-
if uniq_values.count > 1
|
234
|
-
UI.warn 'Can\'t merge user_target_xcconfig for pod targets: ' \
|
235
|
-
"#{values_by_consumer.keys.map(&:name)}. Boolean build "\
|
236
|
-
"setting #{key} has different values."
|
237
|
-
else
|
238
|
-
xcconfig[key] = uniq_values.first
|
239
|
-
end
|
240
|
-
elsif key =~ /S$/
|
241
|
-
# Plural build settings
|
242
|
-
xcconfig[key] = uniq_values.join(' ')
|
243
|
-
else
|
244
|
-
# Singular build settings
|
245
|
-
if uniq_values.count > 1
|
246
|
-
UI.warn 'Can\'t merge user_target_xcconfig for pod targets: ' \
|
247
|
-
"#{values_by_consumer.keys.map(&:name)}. Singular build "\
|
248
|
-
"setting #{key} has different values."
|
249
|
-
else
|
250
|
-
xcconfig[key] = uniq_values.first
|
251
|
-
end
|
252
|
-
end
|
253
|
-
end
|
254
|
-
end
|
255
|
-
|
256
|
-
#---------------------------------------------------------------------#
|
257
|
-
end
|
258
|
-
end
|
259
|
-
end
|
260
|
-
end
|
@@ -1,87 +0,0 @@
|
|
1
|
-
module Pod
|
2
|
-
module Generator
|
3
|
-
module XCConfig
|
4
|
-
# Generates the private xcconfigs for the pod targets.
|
5
|
-
#
|
6
|
-
# The xcconfig file for a Pod target merges the pod target
|
7
|
-
# configuration values with the default configuration values
|
8
|
-
# required by CocoaPods.
|
9
|
-
#
|
10
|
-
class PodXCConfig
|
11
|
-
# @return [Target] the target represented by this xcconfig.
|
12
|
-
#
|
13
|
-
attr_reader :target
|
14
|
-
|
15
|
-
# Initialize a new instance
|
16
|
-
#
|
17
|
-
# @param [Target] target @see target
|
18
|
-
#
|
19
|
-
# @param [Boolean] test_xcconfig
|
20
|
-
# whether this is an xcconfig for a test native target.
|
21
|
-
#
|
22
|
-
def initialize(target, test_xcconfig = false)
|
23
|
-
@target = target
|
24
|
-
@test_xcconfig = test_xcconfig
|
25
|
-
end
|
26
|
-
|
27
|
-
# @return [Xcodeproj::Config] The generated xcconfig.
|
28
|
-
#
|
29
|
-
attr_reader :xcconfig
|
30
|
-
|
31
|
-
# Generates and saves the xcconfig to the given path.
|
32
|
-
#
|
33
|
-
# @param [Pathname] path
|
34
|
-
# the path where the prefix header should be stored.
|
35
|
-
#
|
36
|
-
# @return [void]
|
37
|
-
#
|
38
|
-
def save_as(path)
|
39
|
-
generate.save_as(path)
|
40
|
-
end
|
41
|
-
|
42
|
-
# Generates the xcconfig.
|
43
|
-
#
|
44
|
-
# @return [Xcodeproj::Config]
|
45
|
-
#
|
46
|
-
def generate
|
47
|
-
config = {
|
48
|
-
'FRAMEWORK_SEARCH_PATHS' => '$(inherited) ',
|
49
|
-
'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) COCOAPODS=1',
|
50
|
-
'HEADER_SEARCH_PATHS' => '$(inherited) ' + XCConfigHelper.quote(target.header_search_paths(@test_xcconfig)),
|
51
|
-
'LIBRARY_SEARCH_PATHS' => '$(inherited) ',
|
52
|
-
'OTHER_CFLAGS' => '$(inherited) ',
|
53
|
-
'OTHER_LDFLAGS' => XCConfigHelper.default_ld_flags(target, @test_xcconfig),
|
54
|
-
'OTHER_SWIFT_FLAGS' => '$(inherited) ',
|
55
|
-
'PODS_ROOT' => '${SRCROOT}',
|
56
|
-
'PODS_TARGET_SRCROOT' => target.pod_target_srcroot,
|
57
|
-
'PRODUCT_BUNDLE_IDENTIFIER' => 'org.cocoapods.${PRODUCT_NAME:rfc1034identifier}',
|
58
|
-
'SKIP_INSTALL' => 'YES',
|
59
|
-
'SWIFT_ACTIVE_COMPILATION_CONDITIONS' => '$(inherited) ',
|
60
|
-
'SWIFT_INCLUDE_PATHS' => '$(inherited) ',
|
61
|
-
}
|
62
|
-
|
63
|
-
@xcconfig = Xcodeproj::Config.new(config)
|
64
|
-
|
65
|
-
XCConfigHelper.add_settings_for_file_accessors_of_target(nil, target, @xcconfig, true, @test_xcconfig)
|
66
|
-
target.file_accessors.each do |file_accessor|
|
67
|
-
@xcconfig.merge!(file_accessor.spec_consumer.pod_target_xcconfig) if @test_xcconfig == file_accessor.spec.test_specification?
|
68
|
-
end
|
69
|
-
XCConfigHelper.add_target_specific_settings(target, @xcconfig)
|
70
|
-
recursive_dependent_targets = target.recursive_dependent_targets
|
71
|
-
@xcconfig.merge! XCConfigHelper.search_paths_for_dependent_targets(target, recursive_dependent_targets, @test_xcconfig)
|
72
|
-
XCConfigHelper.generate_vendored_build_settings(target, recursive_dependent_targets, @xcconfig, false, @test_xcconfig)
|
73
|
-
if @test_xcconfig
|
74
|
-
test_dependent_targets = [target, *target.recursive_test_dependent_targets].uniq
|
75
|
-
@xcconfig.merge! XCConfigHelper.search_paths_for_dependent_targets(target, test_dependent_targets - recursive_dependent_targets, @test_xcconfig)
|
76
|
-
XCConfigHelper.generate_vendored_build_settings(nil, target.all_dependent_targets, @xcconfig, true, @test_xcconfig)
|
77
|
-
XCConfigHelper.generate_other_ld_flags(nil, target.all_dependent_targets, @xcconfig)
|
78
|
-
XCConfigHelper.generate_ld_runpath_search_paths(target, false, true, @xcconfig)
|
79
|
-
end
|
80
|
-
@xcconfig
|
81
|
-
end
|
82
|
-
|
83
|
-
#-----------------------------------------------------------------------#
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|