From f32f3bc7c674e3bf817ebc478452bba100fe5430 Mon Sep 17 00:00:00 2001 From: Yuta Saito Date: Fri, 28 Mar 2025 08:59:33 +0000 Subject: [PATCH 1/2] Effectively revert the trait-based manifest change Revert f9b3973044cb2cde6a335f09ddcb7c958c97a798 --- Package.swift | 42 ++++++++-------- Package@swift-6.0.swift | 104 ---------------------------------------- 2 files changed, 22 insertions(+), 124 deletions(-) delete mode 100644 Package@swift-6.0.swift diff --git a/Package.swift b/Package.swift index cf88b3db..fcf40524 100644 --- a/Package.swift +++ b/Package.swift @@ -1,8 +1,9 @@ -// swift-tools-version:6.1 +// swift-tools-version:6.0 import PackageDescription // NOTE: needed for embedded customizations, ideally this will not be necessary at all in the future, or can be replaced with traits +let shouldBuildForEmbedded = Context.environment["JAVASCRIPTKIT_EXPERIMENTAL_EMBEDDED_WASM"].flatMap(Bool.init) ?? false let useLegacyResourceBundling = Context.environment["JAVASCRIPTKIT_USE_LEGACY_RESOURCE_BUNDLING"].flatMap(Bool.init) ?? false @@ -15,23 +16,22 @@ let package = Package( .library(name: "JavaScriptEventLoopTestSupport", targets: ["JavaScriptEventLoopTestSupport"]), .plugin(name: "PackageToJS", targets: ["PackageToJS"]), ], - traits: [ - "Embedded" - ], targets: [ .target( name: "JavaScriptKit", dependencies: ["_CJavaScriptKit"], exclude: useLegacyResourceBundling ? [] : ["Runtime"], resources: useLegacyResourceBundling ? [.copy("Runtime")] : [], - cSettings: [ - .unsafeFlags(["-fdeclspec"], .when(traits: ["Embedded"])) - ], - swiftSettings: [ - .enableExperimentalFeature("Embedded", .when(traits: ["Embedded"])), - .enableExperimentalFeature("Extern", .when(traits: ["Embedded"])), - .unsafeFlags(["-Xfrontend", "-emit-empty-object-file"], .when(traits: ["Embedded"])), - ] + cSettings: shouldBuildForEmbedded + ? [ + .unsafeFlags(["-fdeclspec"]) + ] : nil, + swiftSettings: shouldBuildForEmbedded + ? [ + .enableExperimentalFeature("Embedded"), + .enableExperimentalFeature("Extern"), + .unsafeFlags(["-Xfrontend", "-emit-empty-object-file"]), + ] : nil ), .target(name: "_CJavaScriptKit"), .testTarget( @@ -45,10 +45,11 @@ let package = Package( .target( name: "JavaScriptBigIntSupport", dependencies: ["_CJavaScriptBigIntSupport", "JavaScriptKit"], - swiftSettings: [ - .enableExperimentalFeature("Embedded", .when(traits: ["Embedded"])), - .unsafeFlags(["-Xfrontend", "-emit-empty-object-file"], .when(traits: ["Embedded"])), - ] + swiftSettings: shouldBuildForEmbedded + ? [ + .enableExperimentalFeature("Embedded"), + .unsafeFlags(["-Xfrontend", "-emit-empty-object-file"]), + ] : [] ), .target(name: "_CJavaScriptBigIntSupport", dependencies: ["_CJavaScriptKit"]), .testTarget( @@ -59,10 +60,11 @@ let package = Package( .target( name: "JavaScriptEventLoop", dependencies: ["JavaScriptKit", "_CJavaScriptEventLoop"], - swiftSettings: [ - .enableExperimentalFeature("Embedded", .when(traits: ["Embedded"])), - .unsafeFlags(["-Xfrontend", "-emit-empty-object-file"], .when(traits: ["Embedded"])), - ] + swiftSettings: shouldBuildForEmbedded + ? [ + .enableExperimentalFeature("Embedded"), + .unsafeFlags(["-Xfrontend", "-emit-empty-object-file"]), + ] : [] ), .target(name: "_CJavaScriptEventLoop"), .testTarget( diff --git a/Package@swift-6.0.swift b/Package@swift-6.0.swift deleted file mode 100644 index fcf40524..00000000 --- a/Package@swift-6.0.swift +++ /dev/null @@ -1,104 +0,0 @@ -// swift-tools-version:6.0 - -import PackageDescription - -// NOTE: needed for embedded customizations, ideally this will not be necessary at all in the future, or can be replaced with traits -let shouldBuildForEmbedded = Context.environment["JAVASCRIPTKIT_EXPERIMENTAL_EMBEDDED_WASM"].flatMap(Bool.init) ?? false -let useLegacyResourceBundling = - Context.environment["JAVASCRIPTKIT_USE_LEGACY_RESOURCE_BUNDLING"].flatMap(Bool.init) ?? false - -let package = Package( - name: "JavaScriptKit", - products: [ - .library(name: "JavaScriptKit", targets: ["JavaScriptKit"]), - .library(name: "JavaScriptEventLoop", targets: ["JavaScriptEventLoop"]), - .library(name: "JavaScriptBigIntSupport", targets: ["JavaScriptBigIntSupport"]), - .library(name: "JavaScriptEventLoopTestSupport", targets: ["JavaScriptEventLoopTestSupport"]), - .plugin(name: "PackageToJS", targets: ["PackageToJS"]), - ], - targets: [ - .target( - name: "JavaScriptKit", - dependencies: ["_CJavaScriptKit"], - exclude: useLegacyResourceBundling ? [] : ["Runtime"], - resources: useLegacyResourceBundling ? [.copy("Runtime")] : [], - cSettings: shouldBuildForEmbedded - ? [ - .unsafeFlags(["-fdeclspec"]) - ] : nil, - swiftSettings: shouldBuildForEmbedded - ? [ - .enableExperimentalFeature("Embedded"), - .enableExperimentalFeature("Extern"), - .unsafeFlags(["-Xfrontend", "-emit-empty-object-file"]), - ] : nil - ), - .target(name: "_CJavaScriptKit"), - .testTarget( - name: "JavaScriptKitTests", - dependencies: ["JavaScriptKit"], - swiftSettings: [ - .enableExperimentalFeature("Extern") - ] - ), - - .target( - name: "JavaScriptBigIntSupport", - dependencies: ["_CJavaScriptBigIntSupport", "JavaScriptKit"], - swiftSettings: shouldBuildForEmbedded - ? [ - .enableExperimentalFeature("Embedded"), - .unsafeFlags(["-Xfrontend", "-emit-empty-object-file"]), - ] : [] - ), - .target(name: "_CJavaScriptBigIntSupport", dependencies: ["_CJavaScriptKit"]), - .testTarget( - name: "JavaScriptBigIntSupportTests", - dependencies: ["JavaScriptBigIntSupport", "JavaScriptKit"] - ), - - .target( - name: "JavaScriptEventLoop", - dependencies: ["JavaScriptKit", "_CJavaScriptEventLoop"], - swiftSettings: shouldBuildForEmbedded - ? [ - .enableExperimentalFeature("Embedded"), - .unsafeFlags(["-Xfrontend", "-emit-empty-object-file"]), - ] : [] - ), - .target(name: "_CJavaScriptEventLoop"), - .testTarget( - name: "JavaScriptEventLoopTests", - dependencies: [ - "JavaScriptEventLoop", - "JavaScriptKit", - "JavaScriptEventLoopTestSupport", - ], - swiftSettings: [ - .enableExperimentalFeature("Extern") - ] - ), - .target( - name: "JavaScriptEventLoopTestSupport", - dependencies: [ - "_CJavaScriptEventLoopTestSupport", - "JavaScriptEventLoop", - ] - ), - .target(name: "_CJavaScriptEventLoopTestSupport"), - .testTarget( - name: "JavaScriptEventLoopTestSupportTests", - dependencies: [ - "JavaScriptKit", - "JavaScriptEventLoopTestSupport", - ] - ), - .plugin( - name: "PackageToJS", - capability: .command( - intent: .custom(verb: "js", description: "Convert a Swift package to a JavaScript package") - ), - sources: ["Sources"] - ), - ] -) From 8d8dada4a6a053d4ff97618bb0a20eceb5496d14 Mon Sep 17 00:00:00 2001 From: Yuta Saito Date: Fri, 28 Mar 2025 09:00:14 +0000 Subject: [PATCH 2/2] Revert "Update Examples/Embedded to use the new `Embedded` trait" This reverts commit 64fb506b50c6ac1e35118eb01b8e471ed63a6208. --- Examples/Embedded/Package.swift | 4 ++-- Examples/Embedded/build.sh | 3 ++- Plugins/PackageToJS/Sources/PackageToJSPlugin.swift | 5 +++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Examples/Embedded/Package.swift b/Examples/Embedded/Package.swift index aae08002..5ae19adc 100644 --- a/Examples/Embedded/Package.swift +++ b/Examples/Embedded/Package.swift @@ -1,11 +1,11 @@ -// swift-tools-version:6.1 +// swift-tools-version:6.0 import PackageDescription let package = Package( name: "Embedded", dependencies: [ - .package(name: "JavaScriptKit", path: "../../", traits: ["Embedded"]), + .package(name: "JavaScriptKit", path: "../../"), .package(url: "https://github.com/swiftwasm/swift-dlmalloc", branch: "0.1.0"), ], targets: [ diff --git a/Examples/Embedded/build.sh b/Examples/Embedded/build.sh index 81840e76..f807cdbf 100755 --- a/Examples/Embedded/build.sh +++ b/Examples/Embedded/build.sh @@ -1,4 +1,5 @@ #!/bin/bash package_dir="$(cd "$(dirname "$0")" && pwd)" -swift package --package-path "$package_dir" \ +JAVASCRIPTKIT_EXPERIMENTAL_EMBEDDED_WASM=true \ + swift package --package-path "$package_dir" \ -c release --triple wasm32-unknown-none-wasm js diff --git a/Plugins/PackageToJS/Sources/PackageToJSPlugin.swift b/Plugins/PackageToJS/Sources/PackageToJSPlugin.swift index 559022c2..5eb26cdf 100644 --- a/Plugins/PackageToJS/Sources/PackageToJSPlugin.swift +++ b/Plugins/PackageToJS/Sources/PackageToJSPlugin.swift @@ -342,6 +342,11 @@ struct PackageToJSPlugin: CommandPlugin { /// Check if the build is for embedded WebAssembly private func isBuildingForEmbedded(selfPackage: Package) -> Bool { + if let rawValue = ProcessInfo.processInfo.environment["JAVASCRIPTKIT_EXPERIMENTAL_EMBEDDED_WASM"], + let value = Bool(rawValue), value + { + return true + } let coreTarget = selfPackage.targets.first { $0.name == "JavaScriptKit" } guard let swiftTarget = coreTarget as? SwiftSourceModuleTarget else { return false