diff --git a/stdlib/public/Synchronization/CMakeLists.txt b/stdlib/public/Synchronization/CMakeLists.txt index 299213ac577b3..69754b9fb09be 100644 --- a/stdlib/public/Synchronization/CMakeLists.txt +++ b/stdlib/public/Synchronization/CMakeLists.txt @@ -192,13 +192,24 @@ if(SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB) if(SWIFT_EMBEDDED_STDLIB_SDKS_FOR_TARGET_TRIPLES) set(SWIFT_SDK_embedded_ARCH_${arch}_PATH "${EMBEDDED_STDLIB_SDK_FOR_${triple}}") endif() + + set(SWIFT_SYNCHRONIZATION_EMBEDDED_SOURCES) + + if("${arch}" MATCHES "wasm32") + list(APPEND SWIFT_SYNCHRONIZATION_EMBEDDED_SOURCES ${SWIFT_SYNCHRONIZATION_SOURCES}) + list(APPEND SWIFT_SYNCHRONIZATION_EMBEDDED_SOURCES ${SWIFT_SYNCHRONIZATION_WASM_SOURCES}) + else() + list(APPEND SWIFT_SYNCHRONIZATION_EMBEDDED_SOURCES ${SWIFT_SYNCHRONIZATION_ATOMIC_SOURCES}) + endif() + add_swift_target_library_single( embedded-synchronization-${mod} swiftSynchronization ONLY_SWIFTMODULE IS_FRAGILE - ${SWIFT_SYNCHRONIZATION_ATOMIC_SOURCES} + ${SWIFT_SYNCHRONIZATION_EMBEDDED_SOURCES} + GYB_SOURCES ${SWIFT_SYNCHRONIZATION_GYB_SOURCES} diff --git a/test/embedded/wasm/mutex.swift b/test/embedded/wasm/mutex.swift new file mode 100644 index 0000000000000..04199402ffe22 --- /dev/null +++ b/test/embedded/wasm/mutex.swift @@ -0,0 +1,21 @@ +// RUN: %target-run-simple-swift(-enable-experimental-feature Embedded -parse-as-library -wmo) | %FileCheck %s + +// REQUIRES: executable_test +// REQUIRES: OS=wasip1 +// REQUIRES: swift_feature_Embedded + +import Synchronization +@main struct Main { + static func main() { + let m = Mutex(42) + + m.withLock { + print("Hello \($0)") // CHECK: Hello 42 + $0 = 37 + } + + m.withLock { + print("Hello \($0)") // CHECK: Hello 37 + } + } +}