Basic GDB remote protocol scaffolding #678
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and test | |
on: | |
pull_request: | |
push: | |
branches: [main] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
jobs: | |
build-macos: | |
strategy: | |
matrix: | |
include: | |
# Swift 6.0 | |
- os: macos-14 | |
xcode: Xcode_16.2 | |
development-toolchain-tag: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a | |
wasi-swift-sdk-download: "https://download.swift.org/development/wasm-sdk/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm.artifactbundle.tar.gz" | |
wasi-swift-sdk-id: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm | |
wasi-swift-sdk-checksum: "b64dfad9e1c9ccdf06f35cf9b1a00317e000df0c0de0b3eb9f49d6db0fcba4d9" | |
test-args: "" | |
# Swift 6.1 | |
- os: macos-15 | |
xcode: Xcode_16.4 | |
development-toolchain-tag: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a | |
wasi-swift-sdk-download: "https://download.swift.org/development/wasm-sdk/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm.artifactbundle.tar.gz" | |
wasi-swift-sdk-id: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm | |
wasi-swift-sdk-checksum: "b64dfad9e1c9ccdf06f35cf9b1a00317e000df0c0de0b3eb9f49d6db0fcba4d9" | |
test-args: "--sanitize address" | |
# Swift 6.2 | |
- os: macos-15 | |
xcode: Xcode_26.0 | |
development-toolchain-tag: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a | |
wasi-swift-sdk-download: "https://download.swift.org/development/wasm-sdk/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm.artifactbundle.tar.gz" | |
wasi-swift-sdk-id: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm | |
wasi-swift-sdk-checksum: "b64dfad9e1c9ccdf06f35cf9b1a00317e000df0c0de0b3eb9f49d6db0fcba4d9" | |
test-args: "--sanitize address" | |
runs-on: ${{ matrix.os }} | |
name: "build-macos (${{ matrix.xcode }})" | |
steps: | |
- uses: actions/checkout@v4 | |
- id: setup-development | |
run: | | |
toolchain_path="/Library/Developer/Toolchains/${{ matrix.development-toolchain-tag }}.xctoolchain" | |
pkg="$(mktemp -d)/InstallMe.pkg" | |
development_toolchain_download="https://download.swift.org/development/xcode/${{ matrix.development-toolchain-tag }}/${{ matrix.development-toolchain-tag }}-osx.pkg" | |
curl -L "$development_toolchain_download" -o $pkg | |
sudo installer -pkg $pkg -target / | |
echo "toolchain-path=$toolchain_path" >> $GITHUB_OUTPUT | |
"$toolchain_path/usr/bin/swift" sdk install "${{ matrix.wasi-swift-sdk-download }}" --checksum "${{ matrix.wasi-swift-sdk-checksum }}" | |
wasi_sdk_path=$("$toolchain_path/usr/bin/swift" sdk configure --show-configuration "${{ matrix.wasi-swift-sdk-id }}" wasm32-unknown-wasi | grep sdkRootPath: | cut -d: -f2) | |
echo "wasi-swift-sdk-path=$(dirname $wasi_sdk_path)" >> $GITHUB_OUTPUT | |
- name: Select Xcode version | |
run: sudo xcode-select -switch /Applications/${{ matrix.xcode }}.app | |
- name: Configure Tests/default.json | |
run: | | |
cat <<EOS > Tests/default.json | |
{ | |
"swiftExecutablePath": "${{ steps.setup-development.outputs.toolchain-path }}/usr/bin/swift", | |
"wasiSwiftSDKPath": "${{ steps.setup-development.outputs.wasi-swift-sdk-path }}", | |
"hostSwiftExecutablePath": "$(xcrun --find swift)", | |
"hostSdkRootPath": "$(xcrun --show-sdk-path --sdk macosx)" | |
} | |
EOS | |
- run: ./Vendor/checkout-dependency | |
- run: swift test ${{ matrix.test-args }} | |
build-xcode: | |
runs-on: macos-15 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Prepare Xcode platforms | |
run: | | |
set -euxo pipefail | |
sudo xcode-select -s /Applications/Xcode_26.0.app | |
sudo xcodebuild -runFirstLaunch || true | |
for PLAT in iOS tvOS watchOS visionOS; do | |
if ! xcodebuild -showsdks | grep -q "$PLAT"; then | |
echo "Downloading $PLAT platform..." | |
sudo xcodebuild -downloadPlatform "$PLAT" | |
fi | |
done | |
xcodebuild -showsdks | |
xcodebuild -scheme WasmKit-Package -showdestinations || true | |
- run: xcrun xcodebuild -skipMacroValidation -skipPackagePluginValidation build -scheme WasmKit-Package -destination generic/platform=macOS | |
- run: xcrun xcodebuild -skipMacroValidation -skipPackagePluginValidation build -scheme WasmKit-Package -destination generic/platform=iOS | |
- run: xcrun xcodebuild -skipMacroValidation -skipPackagePluginValidation build -scheme WasmKit-Package -destination generic/platform=watchOS | |
- run: xcrun xcodebuild -skipMacroValidation -skipPackagePluginValidation build -scheme WasmKit-Package -destination generic/platform=tvOS | |
- run: xcrun xcodebuild -skipMacroValidation -skipPackagePluginValidation build -scheme WasmKit-Package -destination generic/platform=visionOS | |
build-linux: | |
strategy: | |
matrix: | |
include: | |
- swift: "swift:6.0-jammy" | |
development-toolchain-download: "https://download.swift.org/development/ubuntu2204/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a-ubuntu22.04.tar.gz" | |
wasi-swift-sdk-download: "https://download.swift.org/development/wasm-sdk/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm.artifactbundle.tar.gz" | |
wasi-swift-sdk-id: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm | |
wasi-swift-sdk-checksum: "b64dfad9e1c9ccdf06f35cf9b1a00317e000df0c0de0b3eb9f49d6db0fcba4d9" | |
- swift: "swift:6.1-noble" | |
development-toolchain-download: "https://download.swift.org/development/ubuntu2404/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a-ubuntu24.04.tar.gz" | |
wasi-swift-sdk-download: "https://download.swift.org/development/wasm-sdk/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm.artifactbundle.tar.gz" | |
wasi-swift-sdk-id: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm | |
wasi-swift-sdk-checksum: "b64dfad9e1c9ccdf06f35cf9b1a00317e000df0c0de0b3eb9f49d6db0fcba4d9" | |
- swift: "swift:6.2-amazonlinux2" | |
development-toolchain-download: "https://download.swift.org/development/amazonlinux2/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a-amazonlinux2.tar.gz" | |
wasi-swift-sdk-download: "https://download.swift.org/development/wasm-sdk/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm.artifactbundle.tar.gz" | |
wasi-swift-sdk-id: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm | |
wasi-swift-sdk-checksum: "b64dfad9e1c9ccdf06f35cf9b1a00317e000df0c0de0b3eb9f49d6db0fcba4d9" | |
- swift: "swift:6.2-noble" | |
development-toolchain-download: "https://download.swift.org/development/ubuntu2404/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a-ubuntu24.04.tar.gz" | |
wasi-swift-sdk-download: "https://download.swift.org/development/wasm-sdk/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm.artifactbundle.tar.gz" | |
wasi-swift-sdk-id: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm | |
wasi-swift-sdk-checksum: "b64dfad9e1c9ccdf06f35cf9b1a00317e000df0c0de0b3eb9f49d6db0fcba4d9" | |
test-args: "--enable-code-coverage" | |
build-dev-dashboard: true | |
- swift: "swiftlang/swift:nightly-main-noble" | |
development-toolchain-download: "https://download.swift.org/development/ubuntu2404/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a-ubuntu24.04.tar.gz" | |
wasi-swift-sdk-download: "https://download.swift.org/development/wasm-sdk/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm.artifactbundle.tar.gz" | |
wasi-swift-sdk-id: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm | |
wasi-swift-sdk-checksum: "b64dfad9e1c9ccdf06f35cf9b1a00317e000df0c0de0b3eb9f49d6db0fcba4d9" | |
test-args: "-Xswiftc -DWASMKIT_CI_TOOLCHAIN_NIGHTLY" | |
runs-on: ubuntu-24.04 | |
name: "build-linux (${{ matrix.swift }})" | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Configure container | |
run: | | |
docker run -dit --name build-container -v $PWD:/workspace -w /workspace ${{ matrix.swift }} | |
echo 'docker exec -i build-container "$@"' > ./build-exec | |
chmod +x ./build-exec | |
- name: Install Development toolchain | |
id: setup-development | |
run: | | |
toolchain_path="/opt/swiftwasm" | |
./build-exec mkdir -p "$toolchain_path" | |
curl -L ${{ matrix.development-toolchain-download }} | ./build-exec tar xz --strip-component 1 -C "$toolchain_path" | |
echo "toolchain-path=$toolchain_path" >> $GITHUB_OUTPUT | |
./build-exec "$toolchain_path/usr/bin/swift" sdk install "${{ matrix.wasi-swift-sdk-download }}" --checksum "${{ matrix.wasi-swift-sdk-checksum }}" | |
wasi_sdk_path=$(./build-exec "$toolchain_path/usr/bin/swift" sdk configure --show-configuration "${{ matrix.wasi-swift-sdk-id }}" wasm32-unknown-wasi | grep sdkRootPath: | cut -d: -f2) | |
echo "wasi-swift-sdk-path=$(dirname $wasi_sdk_path)" >> $GITHUB_OUTPUT | |
- name: Configure Tests/default.json | |
run: | | |
cat <<EOS > Tests/default.json | |
{ | |
"swiftExecutablePath": "${{ steps.setup-development.outputs.toolchain-path }}/usr/bin/swift", | |
"wasiSwiftSDKPath": "${{ steps.setup-development.outputs.wasi-swift-sdk-path }}", | |
"hostSwiftExecutablePath": "/usr/bin/swift" | |
} | |
EOS | |
- run: ./build-exec ./CI/install-wabt.sh | |
- run: ./Vendor/checkout-dependency | |
- run: ./build-exec swift test ${{ matrix.test-args }} | |
- if: matrix.build-dev-dashboard | |
run: ./build-exec ./CI/build-dev-dashboard.sh | |
- if: matrix.build-dev-dashboard | |
name: Relax artifact permissions | |
run: sudo chown -R $USER .build/html | |
- if: matrix.build-dev-dashboard | |
id: deployment | |
uses: actions/upload-pages-artifact@v3 | |
with: | |
path: .build/html | |
deploy-dev-dashboard: | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
runs-on: ubuntu-latest | |
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
needs: build-linux | |
permissions: | |
id-token: write | |
pages: write | |
steps: | |
- id: deployment | |
uses: actions/deploy-pages@v4 | |
build-musl: | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
include: | |
- swift: 6.2-noble | |
musl-swift-sdk-download: "https://download.swift.org/swift-6.2-release/static-sdk/swift-6.2-RELEASE/swift-6.2-RELEASE_static-linux-0.0.1.artifactbundle.tar.gz" | |
musl-swift-sdk-checksum: "d2225840e592389ca517bbf71652f7003dbf45ac35d1e57d98b9250368769378" | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Configure container | |
run: | | |
docker run -dit --name build-container -v $PWD:/workspace -w /workspace swift:${{ matrix.swift }} | |
echo 'docker exec -i build-container "$@"' > ./build-exec | |
chmod +x ./build-exec | |
- name: Install Static Linux SDK | |
run: ./build-exec swift sdk install "${{ matrix.musl-swift-sdk-download }}" --checksum "${{ matrix.musl-swift-sdk-checksum }}" | |
- name: Build (x86_64-swift-linux-musl) | |
run: ./build-exec swift build --swift-sdk x86_64-swift-linux-musl | |
- name: Build (aarch64-swift-linux-musl) | |
run: ./build-exec swift build --swift-sdk aarch64-swift-linux-musl | |
build-android: | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Run Tests on Android emulator | |
uses: skiptools/swift-android-action@v2 | |
build-windows: | |
runs-on: windows-latest | |
steps: | |
- uses: compnerd/gha-setup-swift@main | |
with: | |
swift-version: swift-6.2-release | |
swift-build: 6.2-RELEASE | |
- uses: actions/checkout@v4 | |
- run: python3 ./Vendor/checkout-dependency | |
# FIXME: CMake build is failing on CI due to "link: extra operand '/OUT:lib\\libXXXX.a'" error | |
# # Check Windows build with CMake | |
# - uses: Cyberboss/install-winget@v1 | |
# - run: winget install Ninja-build.Ninja Kitware.CMake --disable-interactivity --accept-source-agreements | |
# - run: | | |
# echo "$env:LOCALAPPDATA\Microsoft\WinGet\Links" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
# echo "$env:ProgramFiles\CMake\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
# - run: cmake -G Ninja -B .build/cmake | |
# - run: cmake --build .build/cmake | |
# Run tests with SwiftPM | |
- name: Run tests with SwiftPM | |
run: swift test | |
build-cmake: | |
runs-on: ubuntu-24.04 | |
container: | |
image: "swiftlang/swift:nightly-main-noble" | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Ninja | |
run: apt-get update && apt-get install -y ninja-build | |
- name: Install CMake | |
run: | | |
apt-get install -y curl | |
curl -L https://github.com/Kitware/CMake/releases/download/v3.29.2/cmake-3.29.2-linux-x86_64.tar.gz | tar xz --strip-component 1 -C /usr/local/ | |
- run: cmake -G Ninja -B ./build | |
- run: cmake --build ./build | |
- run: ./build/bin/wasmkit-cli --version | |
build-wasi: | |
runs-on: ubuntu-24.04 | |
container: | |
image: swift:6.2-noble | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install jq | |
run: apt-get update && apt-get install -y jq | |
- name: Install Swift SDK | |
run: swift sdk install https://download.swift.org/swift-6.2-release/wasm/swift-6.2-RELEASE/swift-6.2-RELEASE_wasm.artifactbundle.tar.gz --checksum fe4e8648309fce86ea522e9e0d1dc48e82df6ba6e5743dbf0c53db8429fb5224 | |
- name: Build with the Swift SDK | |
run: swift build --swift-sdk "$(swiftc -print-target-info | jq -r '.swiftCompilerTag')_wasm" --product wasmkit-cli | |