xcode-archive-cache 0.0.10.pre.1 → 0.0.10.pre.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ea58d5804a6b809038af9c443a49426935c3f1b82673ce4029cadcd5dcdb21a2
4
- data.tar.gz: edae37d1c99f73465be2486e910e32bb4b445811d4ef8dd4db91e45853f34a6e
3
+ metadata.gz: de08375420b8d97642ead0ec3ebc63a78f9f2c372347038054f3b66927d7cad4
4
+ data.tar.gz: 3712950c9e6038a5193a0db108127a5e89cb29edea098929e527346db24d838c
5
5
  SHA512:
6
- metadata.gz: a753ce67b8129209b5da8e0afbdbd542da9660651ae47559fcfacbcf25ed9d35bedc45dbc05d23f13b33b1e4d05885f54bb43aaea2d3e2b4085f3fc1e960be63
7
- data.tar.gz: c90dee530d492db4c3986c0e0ca6d651e0099a8f0348cdb4f5fa0110a32d143932809bdfce295ab4dc36e8180456320a208ff9f927cc2478f9b8d086cc016c32
6
+ metadata.gz: 8e6f791d1a84b4835981617e9092e5a24db3beaa6ee3119b351c47ff99cbed1a222c0168659e5b2bc89c3bc999fb57fd47611c0eb6daf601ef50985ef4959469
7
+ data.tar.gz: 588243bf92bf878d5020296f69252a83bc99eb58da5150237b62881a9e023539f6365e630e191b1f39bfc6681dbfeda87d321ce915459b1f624280e65c6ce3af
@@ -23,6 +23,28 @@ module XcodeArchiveCache
23
23
  end
24
24
  end
25
25
 
26
+ # @param [Xcodeproj::Project::Object::XCBuildConfiguration] build_configuration
27
+ # @param [XcodeArchiveCache::BuildGraph::Node] node
28
+ #
29
+ def add_static_lib_linker_flag(build_configuration, node)
30
+ flag = get_linker_flag(node)
31
+ if flag
32
+ debug("using ld flag #{flag}")
33
+ add_linker_flag(build_configuration, flag)
34
+ end
35
+ end
36
+
37
+ # @param [Xcodeproj::Project::Object::XCBuildConfiguration] build_configuration
38
+ # @param [XcodeArchiveCache::BuildGraph::Node] node
39
+ #
40
+ def add_static_lib_libtool_flag(build_configuration, node)
41
+ flag = get_linker_flag(node)
42
+ if flag
43
+ debug("using libtool flag #{flag}")
44
+ add_libtool_flag(build_configuration, flag)
45
+ end
46
+ end
47
+
26
48
  # @param [Xcodeproj::Project::Object::XCBuildConfiguration] build_configuration
27
49
  # @param [XcodeArchiveCache::BuildGraph::Node] node
28
50
  #
@@ -93,6 +115,7 @@ module XcodeArchiveCache
93
115
  OTHER_CFLAGS_KEY = "OTHER_CFLAGS"
94
116
  OTHER_CPLUSPLUSFLAGS_KEY = "OTHER_CPLUSPLUSFLAGS"
95
117
  OTHER_LDFLAGS_KEY = "OTHER_LDFLAGS"
118
+ OTHER_LIBTOOLFLAGS_KEY = "OTHER_LIBTOOLFLAGS"
96
119
  OTHER_SWIFT_FLAGS_KEY = "OTHER_SWIFT_FLAGS"
97
120
  INHERITED_SETTINGS_VALUE = "$(inherited)"
98
121
 
@@ -103,6 +126,13 @@ module XcodeArchiveCache
103
126
  add_flag_to_configuration(build_configuration, OTHER_LDFLAGS_KEY, flag)
104
127
  end
105
128
 
129
+ # @param [Xcodeproj::Project::Object::XCBuildConfiguration] build_configuration
130
+ # @param [String] flag
131
+ #
132
+ def add_libtool_flag(build_configuration, flag)
133
+ add_flag_to_configuration(build_configuration, OTHER_LIBTOOLFLAGS_KEY, flag)
134
+ end
135
+
106
136
  # @param [Xcodeproj::Project::Object::XCBuildConfiguration] build_configuration
107
137
  # @param [String] flag
108
138
  #
@@ -191,6 +221,18 @@ module XcodeArchiveCache
191
221
  "-framework \"#{framework_name}\""
192
222
  end
193
223
 
224
+ # @param [XcodeArchiveCache::BuildGraph::Node] node
225
+ #
226
+ # @return [String]
227
+ #
228
+ # libSomething.a -> -lSomething
229
+ #
230
+ def get_linker_flag(node)
231
+ return unless node.product_file_name
232
+
233
+ node.product_file_name.gsub(/^lib/, "-l").gsub(/\.a$/, "")
234
+ end
235
+
194
236
  # @param [Hash] build_settings
195
237
  # @param [String] flags_key
196
238
  # @param [Array<String>] old_modulemap_names
@@ -12,11 +12,21 @@ module XcodeArchiveCache
12
12
  debug("removing #{prebuilt_target.name} from #{dependent_target.display_name}")
13
13
 
14
14
  remove_from_dependencies(prebuilt_target, dependent_target)
15
+ remove_from_linking(prebuilt_node, dependent_target)
15
16
  remove_from_schemes(prebuilt_target, dependent_target)
16
17
 
17
18
  debug("finished removing #{prebuilt_target.name} from #{dependent_target.display_name}")
18
19
  end
19
20
 
21
+ # @param [XcodeArchiveCache::BuildGraph::Node] prebuilt_node
22
+ # @param [Xcodeproj::Project::Object::PBXNativeTarget] dependent_target
23
+ #
24
+ # @return [Boolean]
25
+ #
26
+ def is_linked(prebuilt_node, dependent_target)
27
+ !find_linked(prebuilt_node, dependent_target).empty?
28
+ end
29
+
20
30
  private
21
31
 
22
32
  # @param [Xcodeproj::Project::Object::PBXNativeTarget] prebuilt_target
@@ -46,7 +56,7 @@ module XcodeArchiveCache
46
56
  #
47
57
  def remove_from_linking(prebuilt_node, dependent_target)
48
58
  debug("product name is #{prebuilt_node.product_file_name}")
49
- frameworks = dependent_target.frameworks_build_phase.files.select {|file| file.display_name == prebuilt_node.product_file_name}
59
+ frameworks = find_linked(prebuilt_node, dependent_target)
50
60
  debug("found #{frameworks.length} linked products")
51
61
 
52
62
  frameworks.each do |framework|
@@ -67,6 +77,17 @@ module XcodeArchiveCache
67
77
  end
68
78
  end
69
79
 
80
+ # @param [Xcodeproj::Project::Object::PBXNativeTarget] dependent_target
81
+ # @param [XcodeArchiveCache::BuildGraph::Node] prebuilt_node
82
+ #
83
+ # @return [Array<PBXBuildFile>]
84
+ #
85
+ def find_linked(prebuilt_node, dependent_target)
86
+ return [] unless dependent_target.frameworks_build_phase
87
+
88
+ dependent_target.frameworks_build_phase.files.select {|file| file.display_name == prebuilt_node.product_file_name}
89
+ end
90
+
70
91
  # @param [Xcodeproj::Project::Object::PBXNativeTarget] target
71
92
  #
72
93
  # @return [Array<Xcodeproj::XCScheme>]
@@ -43,7 +43,7 @@ module XcodeArchiveCache
43
43
  modulemap_fixer.fix_modulemap(node)
44
44
  end
45
45
 
46
- add_as_prebuilt_dependency(node, target, node.is_root)
46
+ add_as_prebuilt_dependency(node, target)
47
47
  remove_native_target_from_project(node)
48
48
  end
49
49
 
@@ -146,8 +146,7 @@ module XcodeArchiveCache
146
146
  .all_dependent_nodes
147
147
  .select(&:waiting_for_rebuild)
148
148
  dependent_to_rebuild.each do |dependent_node|
149
- should_link = prebuilt_node.dependent.include?(dependent_node)
150
- add_as_prebuilt_dependency(prebuilt_node, dependent_node.native_target, should_link)
149
+ add_as_prebuilt_dependency(prebuilt_node, dependent_node.native_target)
151
150
  end
152
151
 
153
152
  remove_native_target_from_project(prebuilt_node)
@@ -164,7 +163,7 @@ module XcodeArchiveCache
164
163
  # @param [XcodeArchiveCache::BuildGraph::Node] prebuilt_node
165
164
  # @param [Xcodeproj::Project::Object::PBXNativeTarget] dependent_target
166
165
  #
167
- def add_as_prebuilt_dependency(prebuilt_node, dependent_target, should_link)
166
+ def add_as_prebuilt_dependency(prebuilt_node, dependent_target)
168
167
  debug("adding #{prebuilt_node.name} as prebuilt to #{dependent_target.display_name}")
169
168
 
170
169
  unless prebuilt_node.has_acceptable_product?
@@ -174,7 +173,7 @@ module XcodeArchiveCache
174
173
  if prebuilt_node.has_framework_product?
175
174
  add_as_prebuilt_framework(prebuilt_node, dependent_target)
176
175
  elsif prebuilt_node.has_static_library_product?
177
- add_as_prebuilt_static_lib(prebuilt_node, dependent_target, should_link)
176
+ add_as_prebuilt_static_lib(prebuilt_node, dependent_target)
178
177
  end
179
178
 
180
179
  debug("done with #{prebuilt_node.name} for #{dependent_target.display_name}")
@@ -190,14 +189,17 @@ module XcodeArchiveCache
190
189
  build_flags_changer.add_framework_search_path(build_configuration, artifact_location)
191
190
  build_flags_changer.add_framework_headers_iquote(build_configuration, artifact_location, prebuilt_node)
192
191
 
192
+ if dependency_remover.is_linked(prebuilt_node, dependent_target)
193
+ build_flags_changer.add_framework_linker_flag(build_configuration, prebuilt_node)
194
+ end
195
+
193
196
  dependency_remover.remove_dependency(prebuilt_node, dependent_target)
194
197
  end
195
198
 
196
199
  # @param [XcodeArchiveCache::BuildGraph::Node] prebuilt_node
197
200
  # @param [Xcodeproj::Project::Object::PBXNativeTarget] dependent_target
198
- # @param [Boolean] should_link
199
201
  #
200
- def add_as_prebuilt_static_lib(prebuilt_node, dependent_target, should_link)
202
+ def add_as_prebuilt_static_lib(prebuilt_node, dependent_target)
201
203
  build_configuration = find_build_configuration(dependent_target)
202
204
 
203
205
  injected_modulemap_file_path = storage.get_modulemap_path(prebuilt_node)
@@ -206,10 +208,16 @@ module XcodeArchiveCache
206
208
  build_flags_changer.fix_module_map_path(build_configuration, modulemap_file_names, injected_modulemap_file_path)
207
209
  end
208
210
 
209
- # if should_link
210
- artifact_location = storage.get_storage_path(prebuilt_node)
211
- build_flags_changer.add_library_search_path(build_configuration, artifact_location)
212
- # end
211
+ artifact_location = storage.get_storage_path(prebuilt_node)
212
+ build_flags_changer.add_library_search_path(build_configuration, artifact_location)
213
+
214
+ if dependency_remover.is_linked(prebuilt_node, dependent_target)
215
+ if dependent_target.product_type == Xcodeproj::Constants::PRODUCT_TYPE_UTI[:static_library]
216
+ build_flags_changer.add_static_lib_libtool_flag(build_configuration, prebuilt_node)
217
+ else
218
+ build_flags_changer.add_static_lib_linker_flag(build_configuration, prebuilt_node)
219
+ end
220
+ end
213
221
 
214
222
  dependency_remover.remove_dependency(prebuilt_node, dependent_target)
215
223
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xcode-archive-cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10.pre.1
4
+ version: 0.0.10.pre.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ilya Dyakonov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-13 00:00:00.000000000 Z
11
+ date: 2020-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xcodeproj