File tree 5 files changed +24
-23
lines changed
5 files changed +24
-23
lines changed Original file line number Diff line number Diff line change @@ -15,9 +15,7 @@ let package = Package(
15
15
" JavaScriptKit " ,
16
16
. product( name: " dlmalloc " , package : " swift-dlmalloc " )
17
17
] ,
18
- cSettings: [
19
- . unsafeFlags( [ " -fdeclspec " ] )
20
- ] ,
18
+ cSettings: [ . unsafeFlags( [ " -fdeclspec " ] ) ] ,
21
19
swiftSettings: [
22
20
. enableExperimentalFeature( " Embedded " ) ,
23
21
. enableExperimentalFeature( " Extern " ) ,
@@ -29,7 +27,8 @@ let package = Package(
29
27
linkerSettings: [
30
28
. unsafeFlags( [
31
29
" -Xclang-linker " , " -nostdlib " ,
32
- " -Xlinker " , " --no-entry "
30
+ " -Xlinker " , " --no-entry " ,
31
+ " -Xlinker " , " --export-if-defined=__main_argc_argv "
33
32
] )
34
33
]
35
34
)
Original file line number Diff line number Diff line change 1
1
#! /bin/bash
2
2
package_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
2
2
3
3
import PackageDescription
4
- import Foundation
5
4
6
5
// 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
8
7
9
8
let package = Package (
10
9
name: " JavaScriptKit " ,
@@ -19,9 +18,15 @@ let package = Package(
19
18
name: " JavaScriptKit " ,
20
19
dependencies: [ " _CJavaScriptKit " ] ,
21
20
resources: shouldBuildForEmbedded ? [ ] : [ . copy( " Runtime " ) ] ,
21
+ cSettings: shouldBuildForEmbedded ? [
22
+ . unsafeFlags( [ " -fdeclspec " ] )
23
+ ] : nil ,
22
24
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
25
30
) ,
26
31
. target( name: " _CJavaScriptKit " ) ,
27
32
. target(
Original file line number Diff line number Diff line change 1
1
#include "_CJavaScriptKit.h"
2
2
#if __wasm32__
3
- #if __Embedded
3
+ #ifndef __wasi__
4
4
#if __has_include ("malloc.h" )
5
5
#include <malloc.h>
6
6
#endif
@@ -31,8 +31,10 @@ void swjs_cleanup_host_function_call(void *argv_buffer) {
31
31
free (argv_buffer );
32
32
}
33
33
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__
36
38
bool _call_host_function_impl (const JavaScriptHostFuncRef host_func_ref ,
37
39
const RawJSValue * argv , const int argc ,
38
40
const JavaScriptObjectRef callback_func );
Original file line number Diff line number Diff line change 1
1
#ifndef _CJavaScriptKit_h
2
2
#define _CJavaScriptKit_h
3
3
4
- #if __Embedded
5
- #include <stddef.h>
6
- #else
4
+ #if __has_include ("stdlib.h" )
7
5
#include <stdlib.h>
6
+ #else
7
+ #include <stddef.h>
8
8
#endif
9
9
#include <stdbool.h>
10
10
#include <stdint.h>
You can’t perform that action at this time.
0 commit comments