Skip to content

Commit 14b040b

Browse files
[SwiftScan] Fix headerDependencies in SwiftPrebuiltExternalModuleDetails
Due to C API renaming, swift-driver failed to record the bridging header path from a binary swift module dependencies. Fix the issue by supporting both old and new C APIs for querying bridging header path. rdar://129703095
1 parent ebfddde commit 14b040b

File tree

4 files changed

+17
-3
lines changed

4 files changed

+17
-3
lines changed

Sources/CSwiftScan/include/swiftscan_header.h

+6-2
Original file line numberDiff line numberDiff line change
@@ -165,15 +165,19 @@ typedef struct {
165165
(*swiftscan_swift_binary_detail_get_module_doc_path)(swiftscan_module_details_t);
166166
swiftscan_string_ref_t
167167
(*swiftscan_swift_binary_detail_get_module_source_info_path)(swiftscan_module_details_t);
168-
swiftscan_string_set_t *
169-
(*swiftscan_swift_binary_detail_get_header_dependencies)(swiftscan_module_details_t);
168+
swiftscan_string_ref_t
169+
(*swiftscan_swift_binary_detail_get_header_dependency)(swiftscan_module_details_t);
170170
bool
171171
(*swiftscan_swift_binary_detail_get_is_framework)(swiftscan_module_details_t);
172172
swiftscan_string_ref_t
173173
(*swiftscan_swift_binary_detail_get_module_cache_key)(swiftscan_module_details_t);
174174
swiftscan_string_set_t *
175175
(*swiftscan_swift_binary_detail_get_header_dependency_module_dependencies)(swiftscan_module_details_t);
176176

177+
//=== Swift Binary Module Details deprecated APIs--------------------------===//
178+
swiftscan_string_set_t *
179+
(*swiftscan_swift_binary_detail_get_header_dependencies)(swiftscan_module_details_t);
180+
177181
//=== Swift Placeholder Module Details query APIs -------------------------===//
178182
swiftscan_string_ref_t
179183
(*swiftscan_swift_placeholder_detail_get_compiled_module_path)(swiftscan_module_details_t);

Sources/SwiftDriver/ExplicitModuleBuilds/InterModuleDependencies/InterModuleDependencyOracle.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ public class InterModuleDependencyOracle {
150150
guard let swiftScan = swiftScanLibInstance else {
151151
fatalError("Attempting to query supported scanner API with no scanner instance.")
152152
}
153-
return swiftScan.supportsBinaryModuleHeaderDependencies
153+
return swiftScan.supportsBinaryModuleHeaderDependencies || swiftScan.supportsBinaryModuleHeaderDependency
154154
}
155155

156156
@_spi(Testing) public func supportsBridgingHeaderPCHCommand() throws -> Bool {

Sources/SwiftDriver/SwiftScan/DependencyGraphBuilder.swift

+4
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,10 @@ private extension SwiftScan {
264264
if supportsBinaryModuleHeaderDependencies {
265265
headerDependencies = try getOptionalPathArrayDetail(from: moduleDetailsRef,
266266
using: api.swiftscan_swift_binary_detail_get_header_dependencies)
267+
} else if supportsBinaryModuleHeaderDependency,
268+
let header = try getOptionalPathDetail(from: moduleDetailsRef,
269+
using: api.swiftscan_swift_binary_detail_get_header_dependency) {
270+
headerDependencies = [header]
267271
} else {
268272
headerDependencies = nil
269273
}

Sources/SwiftDriver/SwiftScan/SwiftScan.swift

+6
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,10 @@ private extension String {
298298
return api.swiftscan_swift_binary_detail_get_header_dependencies != nil
299299
}
300300

301+
@_spi(Testing) public var supportsBinaryModuleHeaderDependency : Bool {
302+
return api.swiftscan_swift_binary_detail_get_header_dependency != nil
303+
}
304+
301305
@_spi(Testing) public var supportsStringDispose : Bool {
302306
return api.swiftscan_string_dispose != nil
303307
}
@@ -655,6 +659,8 @@ private extension swiftscan_functions_t {
655659
// Header dependencies of binary modules
656660
self.swiftscan_swift_binary_detail_get_header_dependencies =
657661
try loadOptional("swiftscan_swift_binary_detail_get_header_dependencies")
662+
self.swiftscan_swift_binary_detail_get_header_dependency =
663+
try loadOptional("swiftscan_swift_binary_detail_get_header_dependency")
658664

659665
// Per-scan-query diagnostic output
660666
self.swiftscan_dependency_graph_get_diagnostics =

0 commit comments

Comments
 (0)