bindings/zig: Fix sample_riscv_zig partial writes and logging #1402
This file contains 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 UC2 | |
on: | |
workflow_dispatch: | |
inputs: | |
buildType: | |
description: 'Build Type' | |
required: false | |
default: '' | |
type: choice | |
options: | |
- 'Debug' | |
- 'Release' | |
push: | |
paths-ignore: | |
- ".gitignore" | |
- "AUTHORS.TXT" | |
- "COPYING" | |
- "COPYING.LGPL2" | |
- "COPYING_GLIB" | |
- "CREDITS.TXT" | |
- "ChangeLog" | |
- "README.md" | |
- "docs/**" | |
pull_request: | |
env: | |
# Specify build type either according to the tag release or manual override | |
BUILD_TYPE: ${{ inputs.buildType != '' && inputs.buildType || startsWith(github.ref, 'refs/tags') && 'Release' || 'Debug' }} | |
jobs: | |
Windows: | |
runs-on: ${{ matrix.config.os }} | |
name: ${{ matrix.config.name }} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- { | |
os: windows-2022, | |
arch: x64, | |
name: 'windows-x64 MINGW64 shared', | |
shared: 'yes', | |
mingw: MINGW64, | |
mingw-arch: x86_64, | |
artifact: 'windows-mingw64-shared.7z', | |
archiver: '7z a', | |
generators: 'Ninja' | |
} | |
- { | |
os: windows-2022, | |
arch: x64, | |
name: 'windows-x64 MINGW64 static', | |
shared: 'no', | |
mingw: MINGW64, | |
mingw-arch: x86_64, | |
artifact: 'windows-mingw64-static.7z', | |
archiver: '7z a', | |
generators: 'Ninja' | |
} | |
- { # This fails randomly which can't be reproduced. | |
os: windows-2022, | |
arch: x64, | |
name: 'windows-x64 MINGW32 shared', | |
shared: "yes", | |
mingw: MINGW32, | |
mingw-arch: i686, | |
artifact: 'windows-mingw32-shared.7z', | |
archiver: '7z a', | |
generators: 'Ninja' | |
} | |
- { # This fails randomly which can't be reproduced. | |
os: windows-2022, | |
arch: x64, | |
name: 'windows-x64 MINGW32 static', | |
shared: "no", | |
mingw: MINGW32, | |
mingw-arch: i686, | |
artifact: 'windows-mingw32-static.7z', | |
archiver: '7z a', | |
generators: 'Ninja' | |
} | |
- { | |
os: windows-2022, | |
arch: x64, | |
name: 'windows-x64 MSVC 64bit shared', | |
msvc-arch: x64, | |
artifact: 'windows-msvc64-shared.7z', | |
shared: 'yes', | |
archiver: '7z a', | |
generators: 'Visual Studio 17 2022' | |
} | |
- { | |
os: windows-2022, | |
arch: x86, | |
name: 'windows-x86 MSVC 32bit shared', | |
msvc-arch: x86, | |
artifact: 'windows-msvc32-shared.7z', | |
shared: 'yes', | |
archiver: '7z a', | |
generators: 'Visual Studio 17 2022' | |
} | |
- { | |
os: windows-2022, | |
arch: x64, | |
name: 'windows-x64 MSVC 64bit static', | |
msvc-arch: x64, | |
artifact: 'windows-msvc64-static.7z', | |
shared: 'no', | |
archiver: '7z a', | |
generators: 'Visual Studio 17 2022' | |
} | |
- { | |
os: windows-2022, | |
arch: x86, | |
name: 'windows-x86 MSVC 32bit static', | |
msvc-arch: x86, | |
artifact: 'windows-msvc32-static.7z', | |
shared: 'no', | |
archiver: '7z a', | |
generators: 'Visual Studio 17 2022' | |
} | |
compiler: [ gcc ] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: '🛠️ Win MINGW setup' | |
if: contains(matrix.config.mingw, 'MINGW') | |
uses: msys2/setup-msys2@v2 | |
with: | |
msystem: ${{ matrix.config.mingw }} | |
install: >- | |
mingw-w64-${{ matrix.config.mingw-arch }}-cmake | |
mingw-w64-${{ matrix.config.mingw-arch }}-ninja | |
mingw-w64-${{ matrix.config.mingw-arch }}-cmocka | |
mingw-w64-${{ matrix.config.mingw-arch }}-${{ matrix.compiler }} | |
mingw-w64-${{ matrix.config.mingw-arch }}-toolchain | |
- name: '🛠️ Win MSVC 64 setup' | |
if: contains(matrix.config.name, 'MSVC 64') | |
uses: microsoft/setup-msbuild@v2 | |
- name: '🛠️ Win MSVC 64 dev cmd setup' | |
if: contains(matrix.config.name, 'MSVC 64') | |
uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
arch: x64 | |
- name: '🚧 Win MSVC 64 build' | |
if: contains(matrix.config.name, 'MSVC 64') | |
shell: bash | |
run: | | |
choco install ninja | |
ninja --version | |
cmake --version | |
mkdir build | |
cmake \ | |
-S . \ | |
-B . \ | |
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ | |
-G "${{ matrix.config.generators }}" \ | |
-DCMAKE_INSTALL_PREFIX:PATH=instdir \ | |
-DBUILD_SHARED_LIBS=${{ matrix.config.shared }} | |
cmake --build . --config ${{ env.BUILD_TYPE }} | |
cmake --install . --strip --config ${{ env.BUILD_TYPE }} | |
ctest -VV -C ${{ env.BUILD_TYPE }} | |
mv Debug instdir | |
- name: '🛠️ Win MSVC 32 setup' | |
if: contains(matrix.config.name, 'MSVC 32') | |
uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
arch: x86 | |
- name: '🚧 Win MSVC 32 build' | |
if: contains(matrix.config.name, 'MSVC 32') | |
shell: bash | |
run: | | |
choco install ninja | |
ninja --version | |
cmake --version | |
mkdir build | |
cmake \ | |
-S . \ | |
-B . \ | |
-A "win32" \ | |
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ | |
-G "${{ matrix.config.generators }}" \ | |
-DCMAKE_INSTALL_PREFIX:PATH=instdir \ | |
-DBUILD_SHARED_LIBS=${{ matrix.config.shared }} | |
cmake --build . --config ${{ env.BUILD_TYPE }} | |
cmake --install . --strip --config ${{ env.BUILD_TYPE }} | |
ctest -VV -C ${{ env.BUILD_TYPE }} | |
mv Debug instdir | |
- name: '🚧 Win MINGW build' | |
if: contains(matrix.config.mingw, 'MINGW') | |
shell: msys2 {0} | |
run: | | |
if [ ${{ matrix.config.mingw }} == 'MINGW32' ]; then | |
export CPPFLAGS=-D__USE_MINGW_ANSI_STDIO=1 | |
#export CC=i686-w64-mingw32-gcc | |
export AR=gcc-ar | |
export RANLIB=gcc-ranlib | |
export CFLAGS="-m32 -static" | |
export LDFLAGS="-m32" | |
export LDFLAGS_STATIC="-m32" | |
export UNICORN_QEMU_FLAGS="--cpu=i386" | |
fi | |
mkdir build | |
mkdir instdir | |
cmake \ | |
-S . \ | |
-B . \ | |
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ | |
-G "${{ matrix.config.generators }}" \ | |
-DCMAKE_INSTALL_PREFIX:PATH=instdir \ | |
-DCMAKE_C_FLAGS:STRING="-static" \ | |
-DBUILD_SHARED_LIBS=${{ matrix.config.shared }} | |
cmake --build . --config ${{ env.BUILD_TYPE }} | |
cmake --install . --strip | |
ctest -VV -C ${{ env.BUILD_TYPE }} | |
- name: '📦 Pack artifact' | |
if: always() | |
shell: bash | |
working-directory: instdir | |
run: | | |
ls -laR | |
${{ matrix.config.archiver }} ../${{ matrix.config.artifact }} . ../test* | |
- name: '📤 Upload artifact' | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
path: ./${{ matrix.config.artifact }} | |
name: ${{ matrix.config.artifact }} | |
Macos: | |
runs-on: ${{ matrix.config.os }} | |
name: ${{ matrix.config.name }} - ${{ matrix.compiler }} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- { | |
os: macos-13, # x64 | |
arch: x64, | |
name: 'macos-x64 cmake shared', | |
shared: 'yes', | |
artifact: 'macos-x64-cmake-shared-x64.7z', | |
archiver: '7za a', | |
generators: 'Ninja' | |
} | |
- { | |
os: macos-13, | |
arch: x64, | |
name: 'macos-x64 cmake static', | |
shared: 'no', | |
artifact: 'macos-x64-cmake-static-x64.7z', | |
archiver: '7za a', | |
generators: 'Ninja' | |
} | |
- { | |
os: macos-14, # arm64 | |
arch: arm64, | |
name: 'macos-arm64 cmake shared', | |
shared: 'yes', | |
artifact: 'macos-arm64-cmake-shared-x64.7z', | |
archiver: '7za a', | |
generators: 'Ninja' | |
} | |
- { | |
os: macos-14, | |
arch: arm64, | |
name: 'macos-arm64 cmake static', | |
shared: 'no', | |
artifact: 'macos-arm64-cmake-static-x64.7z', | |
archiver: '7za a', | |
generators: 'Ninja' | |
} | |
- { | |
os: macos-13, | |
arch: x86_64, | |
name: 'android cmake', | |
artifact: 'Android-x86_64.7z', | |
archiver: '7za a', | |
generators: 'Ninja' | |
} | |
compiler: [ gcc ] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: '🚧 Mac build' | |
if: contains(matrix.config.name, 'macos') | |
shell: bash | |
run: | | |
brew install ninja | |
ninja --version | |
cmake --version | |
mkdir build | |
mkdir instdir | |
cmake \ | |
-S . \ | |
-B . \ | |
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ | |
-G "${{ matrix.config.generators }}" \ | |
-DCMAKE_INSTALL_PREFIX:PATH=instdir \ | |
-DBUILD_SHARED_LIBS=${{ matrix.config.shared }} | |
cmake --build . --config ${{ env.BUILD_TYPE }} | |
cmake --install . --strip | |
ctest -VV -C ${{ env.BUILD_TYPE }} | |
- name: '🚧 Android x86_64 build' | |
if: contains(matrix.config.name, 'android') | |
shell: bash | |
run: | | |
brew install ninja | |
mkdir build | |
mkdir instdir | |
cmake . -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake" \ | |
-DANDROID_PLATFORM=android-28 \ | |
-DANDROID_NDK="$ANDROID_NDK" \ | |
-DANDROID_ABI=${{ matrix.config.arch }} \ | |
-DOLP_SDK_ENABLE_TESTING=NO \ | |
-DOLP_SDK_BUILD_EXAMPLES=ON \ | |
-S . \ | |
-B . \ | |
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ | |
-G "${{ matrix.config.generators }}" \ | |
-DCMAKE_INSTALL_PREFIX:PATH=instdir | |
cmake --build . --config ${{ env.BUILD_TYPE }} | |
cmake --install . --strip | |
- name: '🚧 AVD Cache' | |
if: contains(matrix.config.name, 'android') | |
uses: actions/cache@v4 | |
id: avd-cache | |
with: | |
path: | | |
~/.android/avd/* | |
~/.android/adb* | |
key: avd-28 | |
- name: '🚧 Create x86_64 tests environment' | |
if: contains(matrix.config.name, 'android') && steps.avd-cache.outputs.cache-hit != 'true' | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: 28 | |
arch: ${{ matrix.config.arch }} | |
force-avd-creation: false | |
disable-animations: false | |
target: default | |
profile: Nexus 6 | |
emulator-options: -no-window -gpu swiftshader_indirect -no-snapshot -noaudio -no-boot-anim -verbose -show-kernel | |
script: echo "Generated AVD snapshot for caching." | |
- name: '🚧 Android x86_64 tests' | |
if: contains(matrix.config.name, 'android') | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: 28 | |
force-avd-creation: false | |
disable-animations: true | |
arch: ${{ matrix.config.arch }} | |
target: default | |
profile: Nexus 6 | |
emulator-options: -no-window -gpu swiftshader_indirect -no-snapshot -noaudio -no-boot-anim -verbose -show-kernel | |
script: bash ./adb.sh | |
- name: '📦 Pack artifact' | |
if: always() | |
shell: bash | |
working-directory: instdir | |
run: | | |
ls -laR | |
${{ matrix.config.archiver }} ../${{ matrix.config.artifact }} . ../test* | |
- name: '📤 Upload artifact' | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
path: ./${{ matrix.config.artifact }} | |
name: ${{ matrix.config.artifact }} | |
Linux: | |
runs-on: ${{ matrix.config.os }} | |
name: ${{ matrix.config.name }} - ${{ matrix.compiler }} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- { | |
os: ubuntu-latest, | |
arch: x64, | |
name: 'ubuntu-x64 cmake shared', | |
shared: 'yes', | |
artifact: 'ubuntu-cmake-shared-x64.7z', | |
archiver: '7z a', | |
generators: 'Ninja' | |
} | |
- { | |
os: ubuntu-latest, | |
arch: x86, | |
name: 'ubuntu-x86 cmake shared', | |
shared: 'yes', | |
artifact: 'ubuntu-cmake-shared-x86.7z', | |
archiver: '7z a', | |
generators: 'Ninja' | |
} | |
- { | |
os: ubuntu-latest, | |
arch: x64, | |
name: 'ubuntu-x64 cmake static', | |
shared: 'no', | |
artifact: 'ubuntu-cmake-static-x64.7z', | |
archiver: '7z a', | |
generators: 'Ninja' | |
} | |
- { | |
os: ubuntu-latest, | |
arch: x86, | |
name: 'ubuntu-x86 cmake static', | |
shared: 'no', | |
artifact: 'ubuntu-cmake-static-x86.7z', | |
archiver: '7z a', | |
generators: 'Ninja' | |
} | |
- { | |
os: ubuntu-24.04-arm, | |
arch: aarch64, | |
name: 'ubuntu-aarch64 cmake', | |
artifact: 'ubuntu-cmake-aarch64.7z', | |
archiver: '7z a', | |
generators: 'Ninja', | |
distro: ubuntu24.04 | |
} | |
- { | |
os: ubuntu-22.04, | |
arch: ppc64le, | |
name: 'ubuntu-ppc64le cmake', | |
artifact: 'ubuntu-cmake-ppc64le.7z', | |
archiver: '7z a', | |
generators: 'Ninja', | |
distro: ubuntu22.04 | |
} | |
compiler: [ gcc ] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: '🚧 Linux x64/x86 build' | |
if: contains(matrix.config.arch, 'x64') || contains(matrix.config.arch, 'x86') | |
shell: bash | |
run: | | |
if [ ${{ matrix.config.arch }} == 'x64' ]; then | |
sudo apt-get update -q -y | |
sudo apt install -q -y libcmocka-dev ninja-build | |
else | |
export CFLAGS="-m32" LDFLAGS="-m32" LDFLAGS_STATIC="-m32" UNICORN_QEMU_FLAGS="--cpu=i386" | |
sudo dpkg --add-architecture i386 | |
sudo apt-get update -q -y | |
sudo apt install -q -y lib32ncurses-dev lib32z1-dev lib32gcc-9-dev libc6-dev-i386 gcc-multilib \ | |
libcmocka-dev:i386 libcmocka0:i386 libc6:i386 libgcc-s1:i386 ninja-build | |
fi | |
mkdir build | |
mkdir instdir | |
cmake \ | |
-S . \ | |
-B . \ | |
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ | |
-G "${{ matrix.config.generators }}" \ | |
-DCMAKE_INSTALL_PREFIX:PATH=instdir \ | |
-DBUILD_SHARED_LIBS=${{ matrix.config.shared }} | |
cmake --build . --config ${{ env.BUILD_TYPE }} | |
cmake --install . --strip | |
ctest -VV -C ${{ env.BUILD_TYPE }} | |
- name: '🚧 Linux aarch64 build' | |
if: contains(matrix.config.arch, 'aarch64') | |
shell: bash | |
run: | | |
sudo apt-get update -q -y | |
sudo apt-get install -q -y cmake build-essential automake libcmocka-dev pkg-config ${{ matrix.compiler }} ninja-build | |
mkdir build | |
mkdir instdir | |
cmake \ | |
-S . \ | |
-B . \ | |
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ | |
-G "${{ matrix.config.generators }}" \ | |
-DCMAKE_INSTALL_PREFIX:PATH=instdir | |
cmake --build . --config ${{ env.BUILD_TYPE }} | |
cmake --install . --strip | |
ctest -VV -C ${{ env.BUILD_TYPE }} | |
- name: '🚧 Linux ppc64le build' | |
if: contains(matrix.config.arch, 'ppc64le') | |
uses: uraimo/run-on-arch-action@v3 | |
with: | |
arch: ${{ matrix.config.arch }} | |
distro: ${{ matrix.config.distro }} | |
setup: | | |
mkdir -p "${PWD}/instdir" | |
dockerRunArgs: | | |
--volume "${PWD}/instdir:/instdir" | |
shell: /bin/sh | |
install: | | |
apt-get update -q -y | |
apt-get install -q -y cmake build-essential automake libcmocka-dev pkg-config ${{ matrix.compiler }} ninja-build | |
run: | | |
mkdir build | |
cmake \ | |
-S . \ | |
-B . \ | |
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ | |
-G "${{ matrix.config.generators }}" \ | |
-DCMAKE_INSTALL_PREFIX:PATH=/instdir | |
cmake --build . --config ${{ env.BUILD_TYPE }} | |
cmake --install . --strip | |
ctest -VV -C ${{ env.BUILD_TYPE }} | |
- name: '📦 Pack artifact' | |
if: always() | |
shell: bash | |
working-directory: instdir | |
run: | | |
ls -laR | |
${{ matrix.config.archiver }} ../${{ matrix.config.artifact }} . ../test* | |
- name: '📤 Upload artifact' | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
path: ./${{ matrix.config.artifact }} | |
name: ${{ matrix.config.artifact }} | |
AlpineLinux: | |
runs-on: ${{ matrix.config.os }} | |
name: ${{ matrix.config.name }} - ${{ matrix.compiler }} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- { | |
os: ubuntu-latest, | |
arch: x86_64, | |
name: 'alpine-x86_64 cmake shared', | |
shared: 'yes', | |
artifact: 'alpine-cmake-shared-x86_64.7z', | |
archiver: '7z a', | |
generators: 'Ninja' | |
} | |
- { | |
os: ubuntu-latest, | |
arch: x86_64, | |
name: 'alpine-x86_64 cmake static', | |
shared: 'no', | |
artifact: 'alpine-cmake-static-x86_64.7z', | |
archiver: '7z a', | |
generators: 'Ninja' | |
} | |
- { | |
os: ubuntu-latest, | |
arch: x86, | |
name: 'alpine-x86 cmake shared', | |
shared: 'yes', | |
artifact: 'alpine-cmake-shared-x86.7z', | |
archiver: '7z a', | |
generators: 'Ninja' | |
} | |
- { | |
os: ubuntu-latest, | |
arch: x86, | |
name: 'alpine-x86 cmake static', | |
shared: 'no', | |
artifact: 'alpine-cmake-static-x86.7z', | |
archiver: '7z a', | |
generators: 'Ninja' | |
} | |
- { | |
os: ubuntu-latest, | |
arch: aarch64, | |
name: 'alpine-aarch64 cmake', | |
artifact: 'alpine-cmake-aarch64.7z', | |
archiver: '7z a', | |
generators: 'Ninja', | |
distro: ubuntu24.04 | |
} | |
- { | |
os: ubuntu-latest, | |
arch: ppc64le, | |
name: 'alpine-ppc64le cmake', | |
artifact: 'alpine-cmake-ppc64le.7z', | |
archiver: '7z a', | |
generators: 'Ninja', | |
distro: ubuntu24.04 | |
} | |
compiler: [ gcc ] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: '🚧 Setup Alpine Linux' | |
uses: jirutka/setup-alpine@v1 | |
with: | |
arch: ${{ matrix.config.arch }} | |
packages: cmake build-base automake cmocka-dev pkgconfig ${{ matrix.compiler }} ninja linux-headers | |
- name: '🚧 Linux Alpine build' | |
shell: alpine.sh --root {0} | |
run: | | |
mkdir build | |
mkdir instdir | |
cmake \ | |
-S . \ | |
-B . \ | |
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ | |
-G "${{ matrix.config.generators }}" \ | |
-DCMAKE_INSTALL_PREFIX:PATH=instdir \ | |
-DBUILD_SHARED_LIBS=${{ matrix.config.shared }} | |
cmake --build . --config ${{ env.BUILD_TYPE }} | |
cmake --install . --strip | |
ctest -VV -C ${{ env.BUILD_TYPE }} | |
- name: '📦 Pack artifact' | |
if: always() | |
shell: bash | |
working-directory: instdir | |
run: | | |
ls -laR | |
${{ matrix.config.archiver }} ../${{ matrix.config.artifact }} . ../test* | |
- name: '📤 Upload artifact' | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
path: ./${{ matrix.config.artifact }} | |
name: ${{ matrix.config.artifact }} |