File tree Expand file tree Collapse file tree 5 files changed +24
-23
lines changed Expand file tree Collapse file tree 5 files changed +24
-23
lines changed Original file line number Diff line number Diff line change @@ -15,9 +15,7 @@ let package = Package(
1515 " JavaScriptKit " ,
1616 . product( name: " dlmalloc " , package : " swift-dlmalloc " )
1717 ] ,
18- cSettings: [
19- . unsafeFlags( [ " -fdeclspec " ] )
20- ] ,
18+ cSettings: [ . unsafeFlags( [ " -fdeclspec " ] ) ] ,
2119 swiftSettings: [
2220 . enableExperimentalFeature( " Embedded " ) ,
2321 . enableExperimentalFeature( " Extern " ) ,
@@ -29,7 +27,8 @@ let package = Package(
2927 linkerSettings: [
3028 . unsafeFlags( [
3129 " -Xclang-linker " , " -nostdlib " ,
32- " -Xlinker " , " --no-entry "
30+ " -Xlinker " , " --no-entry " ,
31+ " -Xlinker " , " --export-if-defined=__main_argc_argv "
3332 ] )
3433 ]
3534 )
Original file line number Diff line number Diff line change 11#! /bin/bash
22package_dir=" $( cd " $( dirname " $0 " ) " && pwd) "
3- JAVASCRIPTKIT_EXPERIMENTAL_EMBEDDED_WASM=true swift build --package-path " $package_dir " -c release --product EmbeddedApp \
4- --triple wasm32-unknown-none-wasm \
5- -Xswiftc -enable-experimental-feature -Xswiftc Embedded \
6- -Xswiftc -enable-experimental-feature -Xswiftc Extern \
7- -Xcc -D__Embedded -Xcc -fdeclspec \
8- -Xlinker --export-if-defined=__main_argc_argv \
9- -Xlinker --export-if-defined=swjs_call_host_function \
10- -Xswiftc -Xclang-linker -Xswiftc -mexec-model=reactor
3+ JAVASCRIPTKIT_EXPERIMENTAL_EMBEDDED_WASM=true \
4+ swift build --package-path " $package_dir " --product EmbeddedApp \
5+ -c release --triple wasm32-unknown-none-wasm
Original file line number Diff line number Diff line change 1- // swift-tools-version:5.7
1+ // swift-tools-version:5.8
22
33import PackageDescription
4- import Foundation
54
65// NOTE: needed for embedded customizations, ideally this will not be necessary at all in the future, or can be replaced with traits
7- let shouldBuildForEmbedded = ProcessInfo . processInfo . environment [ " JAVASCRIPTKIT_EXPERIMENTAL_EMBEDDED_WASM " ] . flatMap ( Bool . init) ?? false
6+ let shouldBuildForEmbedded = Context . environment [ " JAVASCRIPTKIT_EXPERIMENTAL_EMBEDDED_WASM " ] . flatMap ( Bool . init) ?? false
87
98let package = Package (
109 name: " JavaScriptKit " ,
@@ -19,9 +18,15 @@ let package = Package(
1918 name: " JavaScriptKit " ,
2019 dependencies: [ " _CJavaScriptKit " ] ,
2120 resources: shouldBuildForEmbedded ? [ ] : [ . copy( " Runtime " ) ] ,
21+ cSettings: shouldBuildForEmbedded ? [
22+ . unsafeFlags( [ " -fdeclspec " ] )
23+ ] : nil ,
2224 swiftSettings: shouldBuildForEmbedded
23- ? [ . unsafeFlags( [ " -Xfrontend " , " -emit-empty-object-file " ] ) ]
24- : [ ]
25+ ? [
26+ . enableExperimentalFeature( " Embedded " ) ,
27+ . enableExperimentalFeature( " Extern " ) ,
28+ . unsafeFlags( [ " -Xfrontend " , " -emit-empty-object-file " ] )
29+ ] : nil
2530 ) ,
2631 . target( name: " _CJavaScriptKit " ) ,
2732 . target(
Original file line number Diff line number Diff line change 11#include "_CJavaScriptKit.h"
22#if __wasm32__
3- #if __Embedded
3+ #ifndef __wasi__
44#if __has_include ("malloc.h" )
55#include <malloc.h>
66#endif
@@ -31,8 +31,10 @@ void swjs_cleanup_host_function_call(void *argv_buffer) {
3131 free (argv_buffer );
3232}
3333
34- #ifndef __Embedded
35- // cdecls don't work in Embedded, also @_expose(wasm) can be used with Swift >=6.0
34+ // NOTE: This __wasi__ check is a hack for Embedded compatibility (assuming that if __wasi__ is defined, we are not building for Embedded)
35+ // cdecls don't work in Embedded, but @_expose(wasm) can be used with Swift >=6.0
36+ // the previously used `#if __Embedded` did not play well with SwiftPM (defines needed to be on every target up the chain)
37+ #ifdef __wasi__
3638bool _call_host_function_impl (const JavaScriptHostFuncRef host_func_ref ,
3739 const RawJSValue * argv , const int argc ,
3840 const JavaScriptObjectRef callback_func );
Original file line number Diff line number Diff line change 11#ifndef _CJavaScriptKit_h
22#define _CJavaScriptKit_h
33
4- #if __Embedded
5- #include <stddef.h>
6- #else
4+ #if __has_include ("stdlib.h" )
75#include <stdlib.h>
6+ #else
7+ #include <stddef.h>
88#endif
99#include <stdbool.h>
1010#include <stdint.h>
You can’t perform that action at this time.
0 commit comments