Skip to content

Build chiaki-ng Windows (VC) #42

Build chiaki-ng Windows (VC)

Build chiaki-ng Windows (VC) #42

Workflow file for this run

name: Build chiaki-ng Windows (VC)
on:
workflow_dispatch:
jobs:
build-win_x64:
name: Build chiaki-ng win_x64 (VC)
runs-on: windows-latest
env:
CC: clang-cl.exe
CXX: clang-cl.exe
VULKAN_SDK: C:\VulkanSDK\
triplet: x64-windows
vcpkg_baseline: 42bb0d9e8d4cf33485afb9ee2229150f79f61a1f
VCPKG_INSTALLED_DIR: ./vcpkg_installed/
dep_folder: deps
libplacebo_tag: v7.349.0
defaults:
run:
shell: powershell
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Setup Vulkan
run: |
$ProgressPreference = 'SilentlyContinue'
$ver = (Invoke-WebRequest -Uri "https://vulkan.lunarg.com/sdk/latest.json" | ConvertFrom-Json).windows
echo Version $ver
Invoke-WebRequest -Uri "https://sdk.lunarg.com/sdk/download/$ver/windows/VulkanSDK-$ver-Installer.exe" -OutFile VulkanSDK.exe
echo Downloaded
.\VulkanSDK.exe --root ${{ env.VULKAN_SDK }} --accept-licenses --default-answer --confirm-command install
- name: Set up Ninja
run: choco install ninja
- name: Set up Clang
uses: egor-tensin/setup-clang@v1
with:
version: 18
- name: Setup MSVC
uses: ilammy/msvc-dev-cmd@v1
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
architecture: "x64"
- name: Install pip dependencies
run: |
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade setuptools wheel
python3 -m pip install --user --upgrade scons protobuf grpcio-tools pyinstaller
python3 -m pip install --user --upgrade meson
python3 -c 'import google.protobuf; print(google.protobuf.__file__)'
- name: Setup Qt
uses: jurplel/install-qt-action@v4
with:
version: "6.7.*"
host: 'windows'
target: 'desktop'
arch: 'win64_msvc2019_64'
modules: 'qtwebengine qtpositioning qtwebchannel'
- name: Setup ffmpeg
run: |
$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -UseBasicParsing -Uri "https://github.com/r52/FFmpeg-Builds/releases/download/latest/ffmpeg-n7.0-latest-win64-gpl-shared-7.0.zip" -OutFile ".\ffmpeg-n7.0-latest-win64-gpl-shared-7.0.zip"
Expand-Archive -LiteralPath "ffmpeg-n7.0-latest-win64-gpl-shared-7.0.zip" -DestinationPath "."
Rename-Item "ffmpeg-n7.0-latest-win64-gpl-shared-7.0" "${{ env.dep_folder }}"
- name: Build SPIRV-Cross
run: |
git clone https://github.com/KhronosGroup/SPIRV-Cross.git
cd SPIRV-Cross
cmake `
-DCMAKE_BUILD_TYPE=Release `
-DCMAKE_INSTALL_PREFIX="${{ github.workspace }}\${{ env.dep_folder }}" `
-DSPIRV_CROSS_SHARED=ON `
-S . `
-B build `
-G Ninja
cmake --build build --config Release
cmake --install build
- name: Setup shaderc
run: |
$ProgressPreference = 'SilentlyContinue'
$url = ((Invoke-WebRequest -UseBasicParsing -Uri "https://storage.googleapis.com/shaderc/badges/build_link_windows_vs2019_release.html").Content | Select-String -Pattern 'url=(.*)"').Matches.Groups[1].Value
Invoke-WebRequest -UseBasicParsing -Uri $url -OutFile .\shaderc.zip
Expand-Archive -LiteralPath "shaderc.zip" -DestinationPath "."
cp "./install/*" "./${{ env.dep_folder }}" -Force -Recurse
rm "./install" -r -force
- name: Setup vcpkg
uses: lukka/run-vcpkg@v11
with:
vcpkgGitCommitId: ${{ env.vcpkg_baseline }}
runVcpkgInstall: true
vcpkgJsonGlob: "vcpkg.json"
- name: Build libplacebo
run: |
git clone --recursive https://github.com/haasn/libplacebo.git
cd libplacebo
git checkout --recurse-submodules ${{ env.libplacebo_tag }}
meson setup `
--prefix "${{ github.workspace }}\${{ env.dep_folder }}" `
--native-file ../meson.ini `
"--pkg-config-path=['${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\lib\pkgconfig','${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\share\pkgconfig','${{ github.workspace }}\${{ env.dep_folder }}\lib\pkgconfig']" `
"--cmake-prefix-path=['${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}', '${{ env.VULKAN_SDK }}', '${{ github.workspace }}\${{ env.dep_folder }}']" `
-Dc_args="/I ${{ env.VULKAN_SDK }}Include" `
-Dcpp_args="/I ${{ env.VULKAN_SDK }}Include" `
-Dc_link_args="/LIBPATH:${{ env.VULKAN_SDK }}Lib" `
-Dcpp_link_args="/LIBPATH:${{ env.VULKAN_SDK }}Lib" `
-Ddemos=false `
./build
ninja -C./build
ninja -C./build install
- name: Apply Patches
run: |
git apply --ignore-whitespace --verbose --directory=third-party/gf-complete/ scripts/windows-vc/gf-complete.patch
git apply --ignore-whitespace --verbose scripts/windows-vc/libplacebo-pc.patch
- name: Configure chiaki-ng
run: |
cmake `
-S . `
-B build `
-G Ninja `
-DCMAKE_TOOLCHAIN_FILE:STRING="vcpkg/scripts/buildsystems/vcpkg.cmake" `
-DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE `
-DCMAKE_BUILD_TYPE=Release `
-DCHIAKI_ENABLE_CLI=OFF `
-DCHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER=ON `
-DCHIAKI_ENABLE_STEAMDECK_NATIVE=OFF `
-DCHIAKI_ENABLE_STEAM_SHORTCUT=OFF `
-DPYTHON_EXECUTABLE="${{ env.pythonLocation }}\python.exe" `
-DCMAKE_PREFIX_PATH="${{ github.workspace }}\${{ env.dep_folder }};${{ env.VULKAN_SDK }}"
- name: Build chiaki-ng
run: |
cmake --build build --config Release --clean-first --target chiaki
- name: Prepare Qt deployment package
run: |
mkdir chiaki-ng-VC
cp build\gui\chiaki.exe chiaki-ng-VC
cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\libcrypto-*-x64.dll" chiaki-ng-VC
cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\libssl-*-x64.dll" chiaki-ng-VC
cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\SDL2.dll" chiaki-ng-VC
cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\hidapi.dll" chiaki-ng-VC
cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\fftw3.dll" chiaki-ng-VC
cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\opus.dll" chiaki-ng-VC
cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\libspeexdsp.dll" chiaki-ng-VC
cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\lcms2.dll" chiaki-ng-VC
cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\miniupnpc.dll" chiaki-ng-VC
cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\json-c.dll" chiaki-ng-VC
cp "${{ github.workspace }}\${{ env.dep_folder }}\bin\swresample-*.dll" chiaki-ng-VC
cp "${{ github.workspace }}\${{ env.dep_folder }}\bin\avcodec-*.dll" chiaki-ng-VC
cp "${{ github.workspace }}\${{ env.dep_folder }}\bin\avutil-*.dll" chiaki-ng-VC
cp "${{ github.workspace }}\${{ env.dep_folder }}\bin\avformat-*.dll" chiaki-ng-VC
cp "${{ github.workspace }}\${{ env.dep_folder }}\bin\libplacebo-*.dll" chiaki-ng-VC
cp "${{ github.workspace }}\${{ env.dep_folder }}\bin\shaderc_shared.dll" chiaki-ng-VC
cp "${{ github.workspace }}\${{ env.dep_folder }}\bin\spirv-cross-c-shared.dll" chiaki-ng-VC
windeployqt.exe --no-translations --qmldir=gui/src/qml/ chiaki-ng-VC\chiaki.exe
- name: Package chiaki-ng
run: |
$CHIAKI_VERSION_MAJOR = (Select-String -Path .\CMakeLists.txt -Pattern 'set\(CHIAKI_VERSION_MAJOR ([0-9]+)\)') | %{$_.Matches.Groups[1].value}
$CHIAKI_VERSION_MINOR = (Select-String -Path .\CMakeLists.txt -Pattern 'set\(CHIAKI_VERSION_MINOR ([0-9]+)\)') | %{$_.Matches.Groups[1].value}
$CHIAKI_VERSION_PATCH = (Select-String -Path .\CMakeLists.txt -Pattern 'set\(CHIAKI_VERSION_PATCH ([0-9]+)\)') | %{$_.Matches.Groups[1].value}
$RELEASE_PACKAGE_FILE = "chiaki-ng-win_x64-VC-$CHIAKI_VERSION_MAJOR.$CHIAKI_VERSION_MINOR.$CHIAKI_VERSION_PATCH.zip"
Compress-Archive chiaki-ng-VC $RELEASE_PACKAGE_FILE
$release_filepath = Get-ChildItem $RELEASE_PACKAGE_FILE | %{$_[0].FullName}
echo "RELEASE_PACKAGE_PATH=$release_filepath" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
- name: Upload chiaki-ng Artifact
uses: actions/upload-artifact@v4
with:
name: chiaki-ng-win_x64-VC-Release
path: ${{ env.RELEASE_PACKAGE_PATH }}
if-no-files-found: error
retention-days: 7