From 44796362ed6379954317c9d24911bfbc311e6b6c Mon Sep 17 00:00:00 2001 From: Egor Zhdan Date: Tue, 12 Dec 2023 16:28:29 +0100 Subject: [PATCH] [cxx-interop] Do not pass the C++ standard if C++ interop is not enabled (#7188) This fixes the Swift PR testing failures. ### Motivation: If C++ interop is not enabled, SwiftPM should not pass `-Xcc -std=c++17` flags. ### Result: Only pass these flags if C++ interop is enabled. (cherry picked from commit 351222f5b0d7dc9b1bbdffe6c86c1ec97659b36b) --- .../BuildDescription/SwiftTargetBuildDescription.swift | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Sources/Build/BuildDescription/SwiftTargetBuildDescription.swift b/Sources/Build/BuildDescription/SwiftTargetBuildDescription.swift index 2884851691f..67d1d5b2c9e 100644 --- a/Sources/Build/BuildDescription/SwiftTargetBuildDescription.swift +++ b/Sources/Build/BuildDescription/SwiftTargetBuildDescription.swift @@ -545,12 +545,14 @@ public final class SwiftTargetBuildDescription { let dependencySwiftFlags = dependencyScope.evaluate(.OTHER_SWIFT_FLAGS) if let interopModeFlag = dependencySwiftFlags.first(where: { $0.hasPrefix("-cxx-interoperability-mode=") }) { args += [interopModeFlag] + if interopModeFlag != "-cxx-interoperability-mode=off" { + if let cxxStandard = self.package.manifest.cxxLanguageStandard { + args += ["-Xcc", "-std=\(cxxStandard)"] + } + } break } } - if let cxxStandard = self.package.manifest.cxxLanguageStandard { - args += ["-Xcc", "-std=\(cxxStandard)"] - } default: break }