576 lines
18 KiB
YAML
576 lines
18 KiB
YAML
name: Build UC2
|
|
|
|
on:
|
|
push:
|
|
paths-ignore:
|
|
- ".gitignore"
|
|
- "docs/**"
|
|
- "README"
|
|
- "CREDITS.TXT"
|
|
- "COPYING_GLIB"
|
|
- "COPYING.LGPL2"
|
|
- "AUTHORS.TXT"
|
|
- "CHANGELOG"
|
|
- "COPYING"
|
|
pull_request:
|
|
|
|
env:
|
|
CI: true
|
|
|
|
jobs:
|
|
Windows:
|
|
runs-on: ${{ matrix.config.os }}
|
|
name: ${{ matrix.config.name }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
config:
|
|
- {
|
|
os: windows-2019,
|
|
arch: x64,
|
|
python-arch: x64,
|
|
python-ver: '3.8',
|
|
name: 'windows-x64 MINGW64 shared',
|
|
shared: 'yes',
|
|
mingw: MINGW64,
|
|
mingw-arch: x86_64,
|
|
artifact: 'windows_mingw64-shared.7z',
|
|
build_type: 'Debug',
|
|
archiver: '7z a',
|
|
generators: 'Ninja'
|
|
}
|
|
- {
|
|
os: windows-2019,
|
|
arch: x64,
|
|
python-arch: x64,
|
|
python-ver: '3.8',
|
|
name: 'windows-x64 MINGW64 static',
|
|
shared: 'no',
|
|
mingw: MINGW64,
|
|
mingw-arch: x86_64,
|
|
artifact: 'windows_mingw64-static.7z',
|
|
build_type: 'Debug',
|
|
archiver: '7z a',
|
|
generators: 'Ninja'
|
|
}
|
|
# - { # This fails randomly which can't be reproduced.
|
|
# os: windows-2019,
|
|
# arch: x64,
|
|
# python-arch: x64,
|
|
# python-ver: '3.8',
|
|
# name: 'windows-x64 MINGW32 shared',
|
|
# shared: "yes",
|
|
# mingw: MINGW32,
|
|
# mingw-arch: i686,
|
|
# artifact: 'windows_mingw32.7z',
|
|
# build_type: 'Debug',
|
|
# archiver: '7z a',
|
|
# generators: 'Ninja'
|
|
# }
|
|
# - { # This fails randomly which can't be reproduced.
|
|
# os: windows-2019,
|
|
# arch: x64,
|
|
# python-arch: x64,
|
|
# python-ver: '3.8',
|
|
# name: 'windows-x64 MINGW32 static',
|
|
# shared: "no",
|
|
# mingw: MINGW32,
|
|
# mingw-arch: i686,
|
|
# artifact: 'windows_mingw32.7z',
|
|
# build_type: 'Debug',
|
|
# archiver: '7z a',
|
|
# generators: 'Ninja'
|
|
# }
|
|
- {
|
|
os: windows-2019,
|
|
arch: x64,
|
|
python-arch: x64,
|
|
python-ver: '3.8',
|
|
name: 'windows-x64 MSVC 64bit shared',
|
|
msvc-arch: x64,
|
|
artifact: 'windows_msvc64_shared.7z',
|
|
shared: 'yes',
|
|
build_type: 'Debug',
|
|
archiver: '7z a',
|
|
generators: 'Visual Studio 16 2019'
|
|
}
|
|
- {
|
|
os: windows-2019,
|
|
arch: x86,
|
|
python-arch: x86,
|
|
python-ver: '3.8',
|
|
name: 'windows-x86 MSVC 32bit shared',
|
|
msvc-arch: x86,
|
|
artifact: 'windows_msvc32_shared.7z',
|
|
shared: 'yes',
|
|
build_type: 'Debug',
|
|
archiver: '7z a',
|
|
generators: 'Visual Studio 16 2019'
|
|
}
|
|
- {
|
|
os: windows-2019,
|
|
arch: x64,
|
|
python-arch: x64,
|
|
python-ver: '3.8',
|
|
name: 'windows-x64 MSVC 64bit static',
|
|
msvc-arch: x64,
|
|
artifact: 'windows_msvc64_static.7z',
|
|
shared: 'no',
|
|
build_type: 'Debug',
|
|
archiver: '7z a',
|
|
generators: 'Visual Studio 16 2019'
|
|
}
|
|
- {
|
|
os: windows-2019,
|
|
arch: x86,
|
|
python-arch: x86,
|
|
python-ver: '3.8',
|
|
name: 'windows-x86 MSVC 32bit static',
|
|
msvc-arch: x86,
|
|
artifact: 'windows_msvc32_static.7z',
|
|
shared: 'no',
|
|
build_type: 'Debug',
|
|
archiver: '7z a',
|
|
generators: 'Visual Studio 16 2019'
|
|
}
|
|
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: >-
|
|
git
|
|
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 cmake
|
|
ninja --version
|
|
cmake --version
|
|
mkdir build
|
|
cmake \
|
|
-S . \
|
|
-B . \
|
|
-DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \
|
|
-G "${{ matrix.config.generators }}" \
|
|
-DCMAKE_INSTALL_PREFIX:PATH=instdir \
|
|
-DBUILD_SHARED_LIBS=${{ matrix.config.shared }}
|
|
cmake --build . --config ${{ matrix.config.build_type }}
|
|
cmake --install . --strip --config ${{ matrix.config.build_type }}
|
|
ctest -VV -C ${{ matrix.config.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 cmake
|
|
ninja --version
|
|
cmake --version
|
|
mkdir build
|
|
cmake \
|
|
-S . \
|
|
-B . \
|
|
-A "win32" \
|
|
-DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \
|
|
-G "${{ matrix.config.generators }}" \
|
|
-DCMAKE_INSTALL_PREFIX:PATH=instdir \
|
|
-DBUILD_SHARED_LIBS=${{ matrix.config.shared }}
|
|
cmake --build . --config ${{ matrix.config.build_type }}
|
|
cmake --install . --strip --config ${{ matrix.config.build_type }}
|
|
ctest -VV -C ${{ matrix.config.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=${{ matrix.config.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 ${{ matrix.config.build_type }}
|
|
cmake --install . --strip
|
|
ctest -VV -C ${{ matrix.config.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-12, # x64
|
|
arch: x64,
|
|
python-arch: x64,
|
|
python-ver: '3.8',
|
|
name: 'macos-x64 cmake shared',
|
|
shared: 'yes',
|
|
artifact: 'macos-x64-cmake-shared-x64.7z',
|
|
build_type: 'Debug',
|
|
archiver: '7za a',
|
|
generators: 'Ninja'
|
|
}
|
|
- {
|
|
os: macos-12,
|
|
arch: x64,
|
|
python-arch: x64,
|
|
python-ver: '3.8',
|
|
name: 'macos-x64 cmake static',
|
|
shared: 'no',
|
|
artifact: 'macos-x64-cmake-static-x64.7z',
|
|
build_type: 'Debug',
|
|
archiver: '7za a',
|
|
generators: 'Ninja'
|
|
}
|
|
- {
|
|
os: macos-14, # arm64
|
|
arch: arm64,
|
|
python-arch: arm64,
|
|
python-ver: '3.8',
|
|
name: 'macos-arm64 cmake shared',
|
|
shared: 'yes',
|
|
artifact: 'macos-arm64-cmake-shared-x64.7z',
|
|
build_type: 'Debug',
|
|
archiver: '7za a',
|
|
generators: 'Ninja'
|
|
}
|
|
- {
|
|
os: macos-14,
|
|
arch: arm64,
|
|
python-arch: arm64,
|
|
python-ver: '3.8',
|
|
name: 'macos-arm64 cmake static',
|
|
shared: 'no',
|
|
artifact: 'macos-arm64-cmake-static-x64.7z',
|
|
build_type: 'Debug',
|
|
archiver: '7za a',
|
|
generators: 'Ninja'
|
|
}
|
|
- {
|
|
os: macos-12,
|
|
arch: x86_64,
|
|
python-arch: x86_64,
|
|
python-ver: '3.8',
|
|
name: 'android cmake',
|
|
artifact: 'Android-x86_64.7z',
|
|
build_type: 'Debug',
|
|
archiver: '7za a',
|
|
generators: 'Ninja'
|
|
}
|
|
compiler: [ gcc ]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
# - name: '🛠️ Python setup'
|
|
# uses: actions/setup-python@v5
|
|
# with:
|
|
# python-version: ${{ matrix.config.python-ver }}
|
|
|
|
- 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=${{ matrix.config.build_type }} \
|
|
-G "${{ matrix.config.generators }}" \
|
|
-DCMAKE_INSTALL_PREFIX:PATH=instdir \
|
|
-DBUILD_SHARED_LIBS=${{ matrix.config.shared }}
|
|
cmake --build . --config ${{ matrix.config.build_type }}
|
|
cmake --install . --strip
|
|
ctest -VV -C ${{ matrix.config.build_type }}
|
|
|
|
# - name: Setup tmate session
|
|
# if: ${{ failure() }}
|
|
# uses: mxschmitt/action-tmate@v3
|
|
|
|
- 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=${{ matrix.config.build_type }} \
|
|
-G "${{ matrix.config.generators }}" \
|
|
-DCMAKE_INSTALL_PREFIX:PATH=instdir
|
|
cmake --build . --config ${{ matrix.config.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,
|
|
python-arch: x64,
|
|
python-ver: '3.8',
|
|
name: 'ubuntu-x64 cmake shared',
|
|
shared: 'yes',
|
|
artifact: 'ubuntu-cmake-shared-x64.7z',
|
|
build_type: 'Debug',
|
|
archiver: '7z a',
|
|
generators: 'Ninja'
|
|
}
|
|
- {
|
|
os: ubuntu-latest,
|
|
arch: x86,
|
|
python-arch: x86,
|
|
python-ver: '3.8',
|
|
name: 'ubuntu-x86 cmake shared',
|
|
shared: 'yes',
|
|
artifact: 'ubuntu-cmake-shared-x86.7z',
|
|
build_type: 'Debug',
|
|
archiver: '7z a',
|
|
generators: 'Ninja'
|
|
}
|
|
- {
|
|
os: ubuntu-latest,
|
|
arch: x64,
|
|
python-arch: x64,
|
|
python-ver: '3.8',
|
|
name: 'ubuntu-x64 cmake static',
|
|
shared: 'no',
|
|
artifact: 'ubuntu-cmake-static-x64.7z',
|
|
build_type: 'Debug',
|
|
archiver: '7z a',
|
|
generators: 'Ninja'
|
|
}
|
|
- {
|
|
os: ubuntu-latest,
|
|
arch: x86,
|
|
python-arch: x86,
|
|
python-ver: '3.8',
|
|
name: 'ubuntu-x86 cmake static',
|
|
shared: 'no',
|
|
artifact: 'ubuntu-cmake-static-x86.7z',
|
|
build_type: 'Debug',
|
|
archiver: '7z a',
|
|
generators: 'Ninja'
|
|
}
|
|
- {
|
|
os: ubuntu-latest,
|
|
arch: aarch64,
|
|
python-arch: aarch64,
|
|
python-ver: '3.8',
|
|
name: 'ubuntu-aarch64 cmake',
|
|
artifact: 'ubuntu-cmake-aarch64.7z',
|
|
build_type: 'Debug',
|
|
archiver: '7z a',
|
|
generators: 'Ninja',
|
|
distro: ubuntu20.04
|
|
}
|
|
- {
|
|
os: ubuntu-latest,
|
|
arch: ppc64le,
|
|
python-arch: ppc,
|
|
python-ver: '3.8',
|
|
name: 'ubuntu-ppc64le cmake',
|
|
artifact: 'ubuntu-cmake-ppc64le.7z',
|
|
build_type: 'Debug',
|
|
archiver: '7z a',
|
|
generators: 'Ninja',
|
|
distro: ubuntu20.04
|
|
}
|
|
compiler: [ gcc ]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
# - name: '🛠️ Python setup'
|
|
# uses: actions/setup-python@v5
|
|
# with:
|
|
# python-version: ${{ matrix.config.python-ver }}
|
|
|
|
- name: '🚧 Linux x64/x86 build'
|
|
if: contains(matrix.config.arch, 'x64') || contains(matrix.config.arch, 'x86')
|
|
shell: 'script -q -e -c "bash {0}"'
|
|
run: |
|
|
if [ ${{ matrix.config.arch }} == 'x64' ]; then
|
|
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 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=${{ matrix.config.build_type }} \
|
|
-G "${{ matrix.config.generators }}" \
|
|
-DCMAKE_INSTALL_PREFIX:PATH=instdir \
|
|
-DBUILD_SHARED_LIBS=${{ matrix.config.shared }}
|
|
cmake --build . --config ${{ matrix.config.build_type }}
|
|
cmake --install . --strip
|
|
ctest -VV -C ${{ matrix.config.build_type }}
|
|
|
|
- name: '🚧 Linux ppc64le/aarch64 build'
|
|
if: contains(matrix.config.arch, 'ppc64le') || contains(matrix.config.arch, 'aarch64')
|
|
uses: uraimo/run-on-arch-action@v2
|
|
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 git cmake build-essential automake libcmocka-dev pkg-config ${{ matrix.compiler }} ninja-build
|
|
run: |
|
|
mkdir build
|
|
cmake \
|
|
-S . \
|
|
-B . \
|
|
-DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \
|
|
-G "${{ matrix.config.generators }}" \
|
|
-DCMAKE_INSTALL_PREFIX:PATH=/instdir
|
|
cmake --build . --config ${{ matrix.config.build_type }}
|
|
cmake --install . --strip
|
|
ctest -VV -C ${{ matrix.config.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 }} |