Skip to content

Instantly share code, notes, and snippets.

@kkebo
Last active April 5, 2025 16:31
Show Gist options
  • Save kkebo/439b685b34cc3a5b91dc1aeb4ad7b193 to your computer and use it in GitHub Desktop.
Save kkebo/439b685b34cc3a5b91dc1aeb4ad7b193 to your computer and use it in GitHub Desktop.
swift-corelibs-foundation を wasm32-unknown-wasi 向けにビルドするためのスクリプト
#!/bin/bash
set -ex
# 元ファイル: https://github.com/swiftwasm/swiftwasm-build/blob/main/schemes/main/build/build-foundation.sh
# swiftly でツールチェーンをインストール
# swift sdk install で Wasm の Swift SDK をインストール
# swift-collections, swift-foundation, swift-foundation-icu は最新の main ブランチをあらかじめクローンしておく
# libxml2 は https://github.com/swiftwasm/libxml2-wasm/releases/download/2.0.0/libxml2-wasm32-unknown-wasi.tar.gz からダウンロード
DESTINATION_TOOLCHAIN="$HOME/.swiftpm/swift-sdks/swift-wasm-DEVELOPMENT-SNAPSHOT-2025-03-28-a-wasm32-unknown-wasi.artifactbundle/DEVELOPMENT-SNAPSHOT-2025-03-28-a-wasm32-unknown-wasi/wasm32-unknown-wasi/swift.xctoolchain"
LLVM_BIN_DIR="$HOME/.local/share/swiftly/toolchains/main-snapshot-2025-03-28/usr/bin"
CLANG_BIN_DIR="$HOME/.local/share/swiftly/toolchains/main-snapshot-2025-03-28/usr/bin"
SWIFT_BIN_DIR="$HOME/.local/share/swiftly/toolchains/main-snapshot-2025-03-28/usr/bin"
WASI_SYSROOT_PATH="$HOME/.swiftpm/swift-sdks/swift-wasm-DEVELOPMENT-SNAPSHOT-2025-03-28-a-wasm32-unknown-wasi.artifactbundle/DEVELOPMENT-SNAPSHOT-2025-03-28-a-wasm32-unknown-wasi/wasm32-unknown-wasi/WASI.sdk"
TRIPLE="wasm32-unknown-wasi"
SOURCE_PATH="$HOME"
LIBXML2_PATH="$HOME/downloads/libxml2-wasm32-unknown-wasi"
FOUNDATION_BUILD="build"
swift_extra_flags=""
c_extra_flags=""
cmake -G Ninja \
-D CMAKE_SYSROOT="$WASI_SYSROOT_PATH" \
-D CMAKE_Swift_COMPILER="$SWIFT_BIN_DIR/swiftc" \
-D CMAKE_STAGING_PREFIX="$DESTINATION_TOOLCHAIN/usr" \
-D CMAKE_SYSTEM_NAME=WASI \
-D CMAKE_SYSTEM_PROCESSOR=wasm32 \
-D CMAKE_C_COMPILER_TARGET="$TRIPLE" \
-D CMAKE_CXX_COMPILER_TARGET="$TRIPLE" \
-D CMAKE_Swift_COMPILER_TARGET="$TRIPLE" \
-D CMAKE_C_COMPILER="$CLANG_BIN_DIR/clang" \
-D CMAKE_CXX_COMPILER="$CLANG_BIN_DIR/clang++" \
-D CMAKE_AR="$LLVM_BIN_DIR/llvm-ar" \
-D CMAKE_RANLIB="$LLVM_BIN_DIR/llvm-ranlib" \
-D LIBXML2_INCLUDE_DIR="$LIBXML2_PATH/include/libxml2" \
-D LIBXML2_LIBRARY="$LIBXML2_PATH/lib" \
-D BUILD_SHARED_LIBS=OFF \
-D FOUNDATION_BUILD_TOOLS=OFF \
-D CMAKE_Swift_COMPILER_FORCED=ON \
-D CMAKE_C_COMPILER_FORCED=ON \
-D CMAKE_CXX_COMPILER_FORCED=ON \
-D CMAKE_Swift_FLAGS="-sdk $WASI_SYSROOT_PATH -resource-dir $DESTINATION_TOOLCHAIN/usr/lib/swift_static $swift_extra_flags" \
-D CMAKE_C_FLAGS="-resource-dir $DESTINATION_TOOLCHAIN/usr/lib/swift_static/clang -B $LLVM_BIN_DIR $c_extra_flags" \
-D _SwiftCollections_SourceDIR="$SOURCE_PATH/swift-collections" \
-D _SwiftFoundation_SourceDIR="$SOURCE_PATH/swift-foundation" \
-D _SwiftFoundationICU_SourceDIR="$SOURCE_PATH/swift-foundation-icu" \
-D SwiftFoundation_MACRO="$SWIFT_BIN_DIR/../lib/swift/host/plugins" \
-B "$FOUNDATION_BUILD" \
"${SOURCE_PATH}/swift-corelibs-foundation"
cmake --build build
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment