Documentation: Update CMake.md to use the ABI entry point
The SwiftPM entry point is unstable and the new ABIv0 entry point has already been added to the library.
Motivation:
Using the SwiftPM entry point when building tests from a CMake project as recommended in the documentation is outdated and unwise.
Modifications:
Replace the example with one using the new ABIv0 entry point.
Result:
CMake projects should stop relying on the SwiftPM entry point.
Checklist:
- [ ] Code and documentation should follow the style of the Style Guide.
- [ ] If public symbols are renamed or modified, DocC references should be updated.
cc @compnerd
Hm. Chatting with Jonathan on Slack some more, it seems like the fact that this works with the Swift OSS toolchain on linux is a toolchain bug: we shouldn't be able to access the private module from user code.
Another alternative (with -enable-experimental-feature Extern) looks like this:
import Foundation
typealias EntryPoint = @convention(thin) @Sendable (_ configurationJSON: UnsafeRawBufferPointer?, _ recordHandler: @escaping @Sendable (_ recordJSON: UnsafeRawBufferPointer) -> Void) async throws -> Bool
@_extern(c, "swt_abiv0_getEntryPoint")
func swt_abiv0_getEntryPoint() -> UnsafeRawPointer
@main struct Runner {
static func main() async throws {
let configurationJSON: UnsafeRawBufferPointer? = nil
let recordHandler: @Sendable (UnsafeRawBufferPointer) -> Void = { _ in }
let entryPoint = unsafeBitCast(swt_abiv0_getEntryPoint(), to: EntryPoint.self)
if try await entryPoint(configurationJSON, recordHandler) {
exit(EXIT_SUCCESS)
} else {
exit(EXIT_FAILURE)
}
}
}
@ADKaster Did you want to proceed with this PR?
@grynspan I've updated the PR to address your two comments and other discussions we had on slack. I'm not 100% sure on the formatting, but the example code as-is does work.
@ADKaster Can you update us on the state of this PR?
Okay, if you're satisfied with the changes you've made here, we can merge them any time. If you don't have a Squash and merge button in GitHub, @stmontgomery can do it.
Yeah I'm all set with this. There's other sections of this file don't seem quite right, but that's for a separate PR. I don't have merge permissions though.
Hi, let me catch up with this discussion and PR this morning and I will hopefully merge it