@@ -16,6 +16,7 @@ public struct DiscoveredClangToolSpecInfo: DiscoveredCommandLineToolSpecInfo {
1616 public let toolPath : Path
1717 public let clangVersion : Version ?
1818 public let llvmVersion : Version ?
19+ public let isAppleClang : Bool
1920
2021 public var toolVersion : Version ? { return self . clangVersion }
2122
@@ -79,7 +80,7 @@ public func discoveredClangToolInfo(
7980) async throws -> DiscoveredClangToolSpecInfo {
8081 // Check that we call a clang variant, 'clang', 'clang++' etc. Note that a test sets `CC` to `/usr/bin/yes` so avoid calling that here.
8182 guard toolPath. basename. starts ( with: " clang " ) else {
82- return DiscoveredClangToolSpecInfo ( toolPath: toolPath, clangVersion: nil , llvmVersion: nil , clangCachingBlocklist: nil , toolFeatures: . none)
83+ return DiscoveredClangToolSpecInfo ( toolPath: toolPath, clangVersion: nil , llvmVersion: nil , isAppleClang : false , clangCachingBlocklist: nil , toolFeatures: . none)
8384 }
8485
8586 // Construct the command line to invoke.
@@ -102,6 +103,7 @@ public func discoveredClangToolInfo(
102103
103104 var clangVersion : Version ? = nil
104105 var llvmVersion : Version ? = nil
106+ var isAppleClang = false
105107
106108 for line in outputString. components ( separatedBy: " \n " ) {
107109 if line. hasPrefix ( " #define " ) {
@@ -116,6 +118,7 @@ public func discoveredClangToolInfo(
116118 // "8.1.0 (clang-802.1.38)"
117119 // "12.0.0 (clang-1200.0.22.5) [ptrauth objc isa mode: sign-and-strip]"
118120 if macroName == " __clang_version__ " {
121+ isAppleClang = macroValue. contains ( " Apple " )
119122 if let match: RegEx . MatchResult = clangVersionRe. firstMatch ( in: macroValue) {
120123 llvmVersion = match [ " llvm " ] . map { try ? Version ( $0) } ?? nil
121124 clangVersion = match [ " clang " ] . map { try ? Version ( $0) } ?? nil
@@ -157,6 +160,7 @@ public func discoveredClangToolInfo(
157160 toolPath: toolPath,
158161 clangVersion: clangVersion,
159162 llvmVersion: llvmVersion,
163+ isAppleClang: isAppleClang,
160164 clangCachingBlocklist: getBlocklist ( type: ClangCachingBlockListInfo . self, toolchainFilename: " clang-caching.json " , delegate: delegate) ,
161165 toolFeatures: getFeatures ( at: toolPath)
162166 )
0 commit comments