Module: Pod::Generator::XCConfig::XCConfigHelper
- Defined in:
- lib/cocoapods-fix-module/patch1.5.rb
Class Method Summary collapse
-
.search_paths_for_dependent_targets(target, dependent_targets, test_xcconfig = false) ⇒ Object
override.
Class Method Details
.search_paths_for_dependent_targets(target, dependent_targets, test_xcconfig = false) ⇒ Object
override
Manually checked the 1.5.3/ 1.5.2/ 1.5.1, they are all the same. So it’s safe. 1.5.0 is slightly different at Line 147 (‘dependent_targets.uniq.combination(2) do |a, b|`) with no `uniq`, but I think it’s not a problem.
163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 |
# File 'lib/cocoapods-fix-module/patch1.5.rb', line 163 def self.search_paths_for_dependent_targets(target, dependent_targets, test_xcconfig = false) ## ---- modified # dependent_targets = dependent_targets.select(&:should_build?) dependent_targets = dependent_targets.select { |target| target.should_build? || target.should_generate_module_map_for_a_pod_should_not_build? } ## ---- modifed end # # contentx below is copied from original method # Filter out dependent targets that are subsets of another target. subset_targets = [] dependent_targets.uniq.combination(2) do |a, b| if (a.specs - b.specs).empty? subset_targets << a elsif (b.specs - a.specs).empty? subset_targets << b end end dependent_targets -= subset_targets # Alias build dirs to avoid recursive definitions for pod targets and depending # on build settings which could be overwritten in the user target. build_settings = { BUILD_DIR_VARIABLE[2..-2] => '${BUILD_DIR}', CONFIGURATION_BUILD_DIR_VARIABLE[2..-2] => "#{BUILD_DIR_VARIABLE}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)", } # Scope pod targets as long as they are not test targets. if !test_xcconfig && target.respond_to?(:configuration_build_dir) build_settings['CONFIGURATION_BUILD_DIR'] = target.configuration_build_dir(CONFIGURATION_BUILD_DIR_VARIABLE) end module_map_files = [] unless dependent_targets.empty? framework_search_paths = [] library_search_paths = [] swift_import_paths = [] dependent_targets.each do |dependent_target| if dependent_target.requires_frameworks? framework_search_paths << dependent_target.configuration_build_dir(CONFIGURATION_BUILD_DIR_VARIABLE) else ### -------------- modified --------------- # library_search_paths << dependent_target.configuration_build_dir(CONFIGURATION_BUILD_DIR_VARIABLE) # --- to ---- if dependent_target.should_build? library_search_paths << dependent_target.configuration_build_dir(CONFIGURATION_BUILD_DIR_VARIABLE) end ### -------------- \modified --------------- if dependent_target.defines_module? module_map_file = if dependent_target.uses_swift? # for swift, we have a custom build phase that copies in the module map, appending the .Swift module "${PODS_CONFIGURATION_BUILD_DIR}/#{dependent_target.label}/#{dependent_target.product_module_name}.modulemap" else "${PODS_ROOT}/#{dependent_target.module_map_path.relative_path_from(dependent_target.sandbox.root)}" end module_map_files << %(-fmodule-map-file="#{module_map_file}") swift_import_paths << dependent_target.configuration_build_dir(CONFIGURATION_BUILD_DIR_VARIABLE) if dependent_target.uses_swift? end end end build_settings['FRAMEWORK_SEARCH_PATHS'] = XCConfigHelper.quote(framework_search_paths.uniq) build_settings['LIBRARY_SEARCH_PATHS'] = XCConfigHelper.quote(library_search_paths.uniq) build_settings['SWIFT_INCLUDE_PATHS'] = XCConfigHelper.quote(swift_import_paths.uniq) end other_swift_flags = module_map_files.tap(&:uniq!).flat_map { |f| ['-Xcc', f] } if target.is_a?(PodTarget) && !target.requires_frameworks? && target.defines_module? && !test_xcconfig # make it possible for a mixed swift/objc static library to be able to import the objc from within swift other_swift_flags += ['-import-underlying-module', '-Xcc', '-fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}"'] end # unconditionally set these, because of (the possibility of) having to add the pod targets own module map file build_settings['OTHER_CFLAGS'] = module_map_files.join(' ') build_settings['OTHER_SWIFT_FLAGS'] = other_swift_flags.join(' ') build_settings end |