cocoapods 1.5.2 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|