Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .github/workflows/pr-code-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@ jobs:
contents: read

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
name: checkout code
- uses: oven-sh/setup-bun@v2
name: setup bun
- name: install quilt
run: brew install quilt
- name: install zig
run: brew install zig
- uses: nttld/setup-ndk@v1.6.0
id: setup-ndk
with:
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/publish-npm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
with:
app-id: ${{ secrets.GHA_CICD_APPID }}
private-key: ${{ secrets.GHA_CICD_PKEY }}
- uses: actions/checkout@v4
- uses: actions/checkout@v6
name: checkout code
with:
token: ${{ steps.app-token.outputs.token }}
Expand All @@ -36,6 +36,8 @@ jobs:
run: npm i -g npm@^11.14
- name: install quilt
run: brew install quilt
- name: install zig
run: brew install zig
- uses: nttld/setup-ndk@v1.6.0
id: setup-ndk
with:
Expand Down
11 changes: 9 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,22 @@
],
"scripts": {
"clean": "rm -rf prebuilds build",
"build": "bun run build:ios-arm64 && bun run build:android && bun run mobile:copy-prebuilds",
"build": "bun run build:ios-arm64 && bun run build:android && bun run build:linux-arm64 && bun run build:linux-x64 && bun run build:darwin-arm64 && bun run mobile:copy-prebuilds",
"build:ios-arm64": "bare-make generate --platform ios --arch arm64 --build build/ios-arm64 --define CMAKE_POLICY_VERSION_MINIMUM=3.5 && sh patch-wasm3.sh && bare-make build --build build/ios-arm64 && bare-make install --build build/ios-arm64",
"build:ios-arm64-simulator": "bare-make generate --platform ios --arch arm64 --simulator --build build/ios-arm64-simulator --define CMAKE_POLICY_VERSION_MINIMUM=3.5 && sh patch-wasm3.sh && bare-make build --build build/ios-arm64-simulator && bare-make install --build build/ios-arm64-simulator",
"build:android": "bun run build:android-arm64",
"build:android-arm64": "bare-make generate --define CMAKE_POLICY_VERSION_MINIMUM=3.5 --platform android --arch arm64 --build build/android-arm64 && sh patch-wasm3.sh && bare-make build --build build/android-arm64 && bare-make install --build build/android-arm64",
"build:linux-arm64": "ZIG_TARGET=aarch64-linux-gnu sh -c 'bare-make generate --define CMAKE_POLICY_VERSION_MINIMUM=3.5 --define clang=$(pwd)/scripts/zig-cc --define clang++=$(pwd)/scripts/zig-c++ --platform linux --arch arm64 --build build/linux-arm64 && sh patch-wasm3.sh && bare-make build --build build/linux-arm64 && bare-make install --build build/linux-arm64'",
"build:linux-x64": "ZIG_TARGET=x86_64-linux-gnu sh -c 'bare-make generate --define CMAKE_POLICY_VERSION_MINIMUM=3.5 --define clang=$(pwd)/scripts/zig-cc --define clang++=$(pwd)/scripts/zig-c++ --platform linux --arch x64 --build build/linux-x64 && sh patch-wasm3.sh && bare-make build --build build/linux-x64 && bare-make install --build build/linux-x64'",
"build:darwin-arm64": "ZIG_TARGET=aarch64-macos sh -c 'bare-make generate --define CMAKE_POLICY_VERSION_MINIMUM=3.5 --define clang=$(pwd)/scripts/zig-cc --define clang++=$(pwd)/scripts/zig-c++ --platform darwin --arch arm64 --build build/darwin-arm64 && sh patch-wasm3.sh && bare-make build --build build/darwin-arm64 && bare-make install --build build/darwin-arm64'",
"mobile:copy-prebuilds": "cp -r prebuilds/android-arm64 prebuilds/android-arm || echo 'android-arm prebuilds already present' && cp -r prebuilds/android-arm64 prebuilds/android-ia32 || echo 'android-ia32 prebuilds already present' && cp -r prebuilds/android-arm64 prebuilds/android-x64 || echo 'android-x64 prebuilds already present' && cp -r prebuilds/ios-arm64 prebuilds/ios-arm64-simulator || echo 'ios-arm64-simulator prebuilds already present' && cp -r prebuilds/ios-arm64 prebuilds/ios-x64-simulator || echo 'ios-x64-simulator prebuilds already present'",
"dev:build": "bun run dev:build:ios-arm64 && bun run dev:build:android-arm64 && bun run mobile:copy-prebuilds",
"dev:build": "bun run dev:build:ios-arm64 && bun run dev:build:android && bun run dev:build:linux-arm64 && bun run dev:build:linux-x64 && bun run dev:build:darwin-arm64 && bun run mobile:copy-prebuilds",
"dev:build:ios-arm64": "bare-make generate --platform ios --arch arm64 --build build/ios-arm64 --define CMAKE_POLICY_VERSION_MINIMUM=3.5 --define CMAKE_C_FLAGS=-DBW3_DBG_ENABLED=1 && sh patch-wasm3.sh && bare-make build --build build/ios-arm64 && bare-make install --build build/ios-arm64",
"dev:build:android": "bun run dev:build:android-arm64",
"dev:build:android-arm64": "bare-make generate --define CMAKE_POLICY_VERSION_MINIMUM=3.5 --define CMAKE_C_FLAGS=-DBW3_DBG_ENABLED=1 --platform android --arch arm64 --build build/android-arm64 && sh patch-wasm3.sh && bare-make build --build build/android-arm64 && bare-make install --build build/android-arm64",
"dev:build:linux-arm64": "ZIG_TARGET=aarch64-linux-gnu sh -c 'bare-make generate --define CMAKE_POLICY_VERSION_MINIMUM=3.5 --define CMAKE_C_FLAGS=-DBW3_DBG_ENABLED=1 --define clang=$(pwd)/scripts/zig-cc --define clang++=$(pwd)/scripts/zig-c++ --platform linux --arch arm64 --build build/linux-arm64 && sh patch-wasm3.sh && bare-make build --build build/linux-arm64 && bare-make install --build build/linux-arm64'",
"dev:build:linux-x64": "ZIG_TARGET=x86_64-linux-gnu sh -c 'bare-make generate --define CMAKE_POLICY_VERSION_MINIMUM=3.5 --define CMAKE_C_FLAGS=-DBW3_DBG_ENABLED=1 --define clang=$(pwd)/scripts/zig-cc --define clang++=$(pwd)/scripts/zig-c++ --platform linux --arch x64 --build build/linux-x64 && sh patch-wasm3.sh && bare-make build --build build/linux-x64 && bare-make install --build build/linux-x64'",
"dev:build:darwin-arm64": "ZIG_TARGET=aarch64-macos sh -c 'bare-make generate --define CMAKE_POLICY_VERSION_MINIMUM=3.5 --define CMAKE_C_FLAGS=-DBW3_DBG_ENABLED=1 --define clang=$(pwd)/scripts/zig-cc --define clang++=$(pwd)/scripts/zig-c++ --platform darwin --arch arm64 --build build/darwin-arm64 && sh patch-wasm3.sh && bare-make build --build build/darwin-arm64 && bare-make install --build build/darwin-arm64'",
"dev:link": "bun node_modules/react-native-bare-kit/ios/link.mjs"
},
"devDependencies": {
Expand Down
3 changes: 2 additions & 1 deletion patch-wasm3.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ set -e

BASE="$(cd "$(dirname "$0")" && pwd)"

for build_dir in "build/ios-arm64" "build/ios-arm64-simulator" "build/android-arm64"; do
for build_dir in build/*/; do
build_dir="${build_dir%/}"
src="$BASE/$build_dir/_deps/github+wasm3+wasm3-src/source"
if [ ! -d "$src" ]; then
echo " [patch] skipping $build_dir (not yet generated)"
Expand Down
28 changes: 28 additions & 0 deletions scripts/zig-c++
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/bin/bash
# zig c++ cross-compiler wrapper. Set ZIG_TARGET before invoking cmake.
# - Strips --target=... (CMake injects the toolchain target; ZIG_TARGET overrides it)
# - Filters -Xlinker --dependency-file=... which zig's lld doesn't support.
args=()
i=0
argv=("$@")
while [ $i -lt ${#argv[@]} ]; do
arg="${argv[$i]}"
case "$arg" in
--target=*)
i=$((i+1))
continue
;;
esac
if [ "$arg" = "-Xlinker" ] && [ $((i+1)) -lt ${#argv[@]} ]; then
next="${argv[$((i+1))]}"
case "$next" in
--dependency-file=*)
i=$((i+2))
continue
;;
esac
fi
args+=("$arg")
i=$((i+1))
done
exec zig c++ -target "$ZIG_TARGET" "${args[@]}"
28 changes: 28 additions & 0 deletions scripts/zig-cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/bin/bash
# zig cc cross-compiler wrapper. Set ZIG_TARGET before invoking cmake.
# - Strips --target=... (CMake injects the toolchain target; ZIG_TARGET overrides it)
# - Filters -Xlinker --dependency-file=... which zig's lld doesn't support.
args=()
i=0
argv=("$@")
while [ $i -lt ${#argv[@]} ]; do
arg="${argv[$i]}"
case "$arg" in
--target=*)
i=$((i+1))
continue
;;
esac
if [ "$arg" = "-Xlinker" ] && [ $((i+1)) -lt ${#argv[@]} ]; then
next="${argv[$((i+1))]}"
case "$next" in
--dependency-file=*)
i=$((i+2))
continue
;;
esac
fi
args+=("$arg")
i=$((i+1))
done
exec zig cc -target "$ZIG_TARGET" "${args[@]}"