File tree 3 files changed +52
-0
lines changed
3 files changed +52
-0
lines changed Original file line number Diff line number Diff line change @@ -508,6 +508,34 @@ if("WASI" IN_LIST SWIFT_SDKS)
508
508
DESTINATION "lib/swift_static/${arch_subdir} "
509
509
COMPONENT sdk-overlay)
510
510
endif ()
511
+
512
+ set (wasilibc_apinotes_source "SwiftWASILibc.apinotes" )
513
+ add_custom_command_target(
514
+ copy_wasilibc_apinotes_resource
515
+ COMMAND
516
+ "${CMAKE_COMMAND} " "-E" "make_directory" ${SWIFTLIB_DIR} /apinotes ${SWIFTSTATICLIB_DIR} /apinotes
517
+ COMMAND
518
+ "${CMAKE_COMMAND} " "-E" "copy_if_different"
519
+ "${CMAKE_CURRENT_SOURCE_DIR} /${wasilibc_apinotes_source} " ${SWIFTLIB_DIR} /apinotes
520
+ COMMAND
521
+ "${CMAKE_COMMAND} " "-E" "copy_if_different"
522
+ "${CMAKE_CURRENT_SOURCE_DIR} /${wasilibc_apinotes_source} " ${SWIFTSTATICLIB_DIR} /apinotes
523
+ OUTPUT
524
+ ${SWIFTLIB_DIR} /apinotes/${wasilibc_apinotes_source}
525
+ ${SWIFTSTATICLIB_DIR} /apinotes/${wasilibc_apinotes_source}
526
+ COMMENT "Copying WASILibc API notes to resource directories" )
527
+
528
+ list (APPEND wasilibc_modulemap_target_list ${copy_wasilibc_apinotes_resource} )
529
+ add_dependencies (sdk-overlay ${copy_wasilibc_apinotes_resource} )
530
+ swift_install_in_component(FILES "${wasilibc_apinotes_source} "
531
+ DESTINATION "lib/swift/apinotes"
532
+ COMPONENT sdk-overlay)
533
+ if (SWIFT_BUILD_STATIC_STDLIB)
534
+ swift_install_in_component(FILES "${wasilibc_apinotes_source} "
535
+ DESTINATION "lib/swift_static/apinotes"
536
+ COMPONENT sdk-overlay)
537
+ endif ()
538
+
511
539
endforeach ()
512
540
endif ()
513
541
add_custom_target (wasilibc_modulemap DEPENDS ${wasilibc_modulemap_target_list} )
Original file line number Diff line number Diff line change
1
+ Name: SwiftWASILibc
2
+ Globals:
3
+ # errno macro is importable but we provide explicit Swift wrapper
4
+ - Name: errno
5
+ SwiftPrivate: true
Original file line number Diff line number Diff line change
1
+ // RUN: %target-swift-frontend -typecheck -swift-version 6 %s -verify
2
+ // REQUIRES: executable_test
3
+ // REQUIRES: OS=wasi
4
+
5
+ import WASILibc
6
+
7
+ // errno is a global thread-local variable, so it should be accessible
8
+ // from any context.
9
+
10
+ enum TestErrno {
11
+ static func testSyncContext( ) {
12
+ _ = errno
13
+ errno = 0
14
+ }
15
+ static func testAsyncContext( ) async {
16
+ _ = errno
17
+ errno = 0
18
+ }
19
+ }
You can’t perform that action at this time.
0 commit comments