Build chiaki-ng Windows (VC) #40
Workflow file for this run
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 Chiaki4deck Windows (VC) | |
on: | |
workflow_dispatch: | |
jobs: | |
build-win_x64: | |
name: Build Chiaki4deck 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: 5c1e6da21f108a27b11fad97fd491ddee06ede3c | |
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 Chiaki4deck | |
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 Chiaki4deck | |
run: | | |
cmake --build build --config Release --clean-first --target chiaki | |
- name: Prepare Qt deployment package | |
run: | | |
mkdir Chiaki4deck-VC | |
cp build\gui\chiaki.exe Chiaki4deck-VC | |
cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\libcrypto-*-x64.dll" Chiaki4deck-VC | |
cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\libssl-*-x64.dll" Chiaki4deck-VC | |
cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\SDL2.dll" Chiaki4deck-VC | |
cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\hidapi.dll" Chiaki4deck-VC | |
cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\fftw3.dll" Chiaki4deck-VC | |
cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\opus.dll" Chiaki4deck-VC | |
cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\libspeexdsp.dll" Chiaki4deck-VC | |
cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\lcms2.dll" Chiaki4deck-VC | |
cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\miniupnpc.dll" Chiaki4deck-VC | |
cp "${{ github.workspace }}\vcpkg_installed\${{ env.triplet }}\bin\json-c.dll" Chiaki4deck-VC | |
cp "${{ github.workspace }}\${{ env.dep_folder }}\bin\swresample-*.dll" Chiaki4deck-VC | |
cp "${{ github.workspace }}\${{ env.dep_folder }}\bin\avcodec-*.dll" Chiaki4deck-VC | |
cp "${{ github.workspace }}\${{ env.dep_folder }}\bin\avutil-*.dll" Chiaki4deck-VC | |
cp "${{ github.workspace }}\${{ env.dep_folder }}\bin\avformat-*.dll" Chiaki4deck-VC | |
cp "${{ github.workspace }}\${{ env.dep_folder }}\bin\libplacebo-*.dll" Chiaki4deck-VC | |
cp "${{ github.workspace }}\${{ env.dep_folder }}\bin\shaderc_shared.dll" Chiaki4deck-VC | |
cp "${{ github.workspace }}\${{ env.dep_folder }}\bin\spirv-cross-c-shared.dll" Chiaki4deck-VC | |
windeployqt.exe --no-translations --qmldir=gui/src/qml/ Chiaki4deck-VC\chiaki.exe | |
- name: Package Chiaki4deck | |
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 = "Chiaki4deck-win_x64-VC-$CHIAKI_VERSION_MAJOR.$CHIAKI_VERSION_MINOR.$CHIAKI_VERSION_PATCH.zip" | |
Compress-Archive Chiaki4deck-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 Chiaki4deck Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Chiaki4deck-win_x64-VC-Release | |
path: ${{ env.RELEASE_PACKAGE_PATH }} | |
if-no-files-found: error | |
retention-days: 1 |