Skip to content

Commit c23ad00

Browse files
committed
don't add carthage dependency to copy-frameworks script if embed: false
1 parent 2cdf1ce commit c23ad00

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

Sources/XcodeGenKit/PBXProjGenerator.swift

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ public class PBXProjGenerator {
156156

157157
func generateTarget(_ target: Target) throws -> PBXNativeTarget {
158158

159-
let carthageFrameworks = Set(getCarthageFrameworks(target: target))
159+
let carthageDependencies = getAllCarthageDependencies(target: target)
160160

161161
let sourcePaths = target.sources.map { basePath + $0 }
162162
var sourceFilePaths: [Path] = []
@@ -202,7 +202,7 @@ public class PBXProjGenerator {
202202
}
203203

204204
// set Carthage search paths
205-
if !carthageFrameworks.isEmpty {
205+
if !carthageDependencies.isEmpty {
206206
let frameworkSearchPaths = "FRAMEWORK_SEARCH_PATHS"
207207
let carthagePlatformBuildPath = "$(PROJECT_DIR)/" + getCarthageBuildPath(platform: target.platform)
208208
var newSettings: [String] = []
@@ -381,10 +381,13 @@ public class PBXProjGenerator {
381381
buildPhases.append(copyFilesPhase.reference)
382382
}
383383

384-
if !carthageFrameworks.isEmpty {
384+
let carthageFrameworksToEmbed = carthageDependencies
385+
.filter { ($0.embed ?? true) }
386+
.map { $0.reference }
387+
if !carthageFrameworksToEmbed.isEmpty {
385388

386389
if target.type.isApp && target.platform != .macOS {
387-
let inputPaths = carthageFrameworks.map { "$(SRCROOT)/\(carthageBuildPath)/\(target.platform)/\($0)\($0.contains(".") ? "" : ".framework")" }
390+
let inputPaths = Set(carthageFrameworksToEmbed).map { "$(SRCROOT)/\(carthageBuildPath)/\(target.platform)/\($0)\($0.contains(".") ? "" : ".framework")" }
388391
let carthageScript = PBXShellScriptBuildPhase(reference: generateUUID(PBXShellScriptBuildPhase.self, "Carthage" + target.name), files: [], name: "Carthage", inputPaths: inputPaths, outputPaths: [], shellPath: "/bin/sh", shellScript: "/usr/local/bin/carthage copy-frameworks\n")
389392
addObject(carthageScript)
390393
buildPhases.append(carthageScript.reference)
@@ -413,14 +416,15 @@ public class PBXProjGenerator {
413416
return "\(carthagePath)/\(platformName)"
414417
}
415418

416-
func getCarthageFrameworks(target: Target) -> [String] {
417-
var frameworks: [String] = []
419+
func getAllCarthageDependencies(target: Target) -> [Dependency] {
420+
var frameworks: [Dependency] = []
418421
for dependency in target.dependencies {
419422
switch dependency.type {
420-
case .carthage: frameworks.append(dependency.reference)
423+
case .carthage:
424+
frameworks.append(dependency)
421425
case .target:
422426
if let target = spec.getTarget(dependency.reference) {
423-
frameworks += getCarthageFrameworks(target: target)
427+
frameworks += getAllCarthageDependencies(target: target)
424428
}
425429
default: break
426430
}

0 commit comments

Comments
 (0)