Skip to content

Build Chiaki with Visual Studio #2

Build Chiaki with Visual Studio

Build Chiaki with Visual Studio #2

name: Build Chiaki with Visual Studio
on:
workflow_call:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
build-win_x64: # only win_x64 so far :)
name: Build Chiaki win_x64 (VC)
runs-on: windows-2022
defaults:
run:
shell: powershell
steps:
- name: Clean Workspace Action
uses: yumis-coconudge/[email protected]
- name: Checkout code
uses: actions/checkout@v2
with:
submodules: "recursive"
- name: Setup NASM
run: |
$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -UseBasicParsing -Uri "https://www.nasm.us/pub/nasm/releasebuilds/2.16/win64/nasm-2.16-win64.zip" -OutFile ".\nasm-2.16-win64.zip"
Expand-Archive -LiteralPath "nasm-2.16-win64.zip" -DestinationPath "."
Rename-Item "nasm-2.16" "nasm"
Write-Output "${{ github.workspace }}\nasm" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Setup ffmpeg
run: |
$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -UseBasicParsing -Uri "https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl-shared.zip" -OutFile ".\ffmpeg-master-latest-win64-gpl-shared.zip"
Expand-Archive -LiteralPath "ffmpeg-master-latest-win64-gpl-shared.zip" -DestinationPath "."
Rename-Item "ffmpeg-master-latest-win64-gpl-shared" "ffmpeg"
Write-Output "${{ github.workspace }}\ffmpeg" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append
- name: Setup Protoc
uses: arduino/setup-protoc@v1
- name: Setup nanopb
run: |
$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -UseBasicParsing -Uri "https://jpa.kapsi.fi/nanopb/download/nanopb-0.4.6-windows-x86.zip" -OutFile ".\nanopb-0.4.6-windows-x86.zip"
Expand-Archive -LiteralPath "nanopb-0.4.6-windows-x86.zip" -DestinationPath "."
Rename-Item "nanopb-0.4.6-windows-x86" "nanopb"
- name: Setup OpenSSL
run: |
$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -UseBasicParsing -Uri "https://www.openssl.org/source/old/1.1.1/openssl-1.1.1p.tar.gz" -OutFile ".\openssl-1.1.1p.tar.gz"
Expand-Archive -LiteralPath "openssl-1.1.1p.tar.gz" -DestinationPath "."
Expand-Archive -LiteralPath "openssl-1.1.1p.tar" -DestinationPath "."
Rename-Item "openssl-1.1.1p" "openssl"
Write-Output "${{ github.workspace }}\openssl" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append
- name: Setup SDL2
run: |
$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -UseBasicParsing -Uri "https://www.libsdl.org/release/SDL2-devel-2.28.3-VC.zip" -OutFile ".\SDL2-devel-2.28.3-VC.zip"
Expand-Archive -LiteralPath "SDL2-devel-2.28.3-VC.zip" -DestinationPath "."
Rename-Item "SDL2-2.28.3" "SDL2"
$nix_path = "${{ github.workspace }}" -replace "\\", "/"
Write-Output "SDL2_DIR=${{ github.workspace }}\SDL2" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
Set-Content -Path "${{ github.workspace }}\SDL2\sdl2-config.cmake" -Value 'set(TARGET_NAME SDL2::SDL2)'
Add-Content -Path "${{ github.workspace }}\SDL2\sdl2-config.cmake" -Value 'add_library(${TARGET_NAME} SHARED IMPORTED)'
Add-Content -Path "${{ github.workspace }}\SDL2\sdl2-config.cmake" -Value 'set_target_properties(${TARGET_NAME} PROPERTIES'
Add-Content -Path "${{ github.workspace }}\SDL2\sdl2-config.cmake" -Value ' IMPORTED_LOCATION "${SDL2_LIBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}SDL2${CMAKE_SHARED_LIBRARY_SUFFIX}"'
Add-Content -Path "${{ github.workspace }}\SDL2\sdl2-config.cmake" -Value ' INTERFACE_INCLUDE_DIRECTORIES "$ENV{SDL2_DIR}/include"'
Add-Content -Path "${{ github.workspace }}\SDL2\sdl2-config.cmake" -Value ' INTERFACE_LINK_LIBRARIES "$ENV{SDL2_DIR}/lib/x64/SDL2.lib;$ENV{SDL2_DIR}/lib/x64/SDL2main.lib"'
Add-Content -Path "${{ github.workspace }}\SDL2\sdl2-config.cmake" -Value ' IMPORTED_LINK_INTERFACE_LANGUAGES "C"'
Add-Content -Path "${{ github.workspace }}\SDL2\sdl2-config.cmake" -Value ')'
Add-Content -Path "${{ github.workspace }}\SDL2\sdl2-config.cmake" -Value 'set_target_properties(SDL2::SDL2 PROPERTIES IMPORTED_IMPLIB "$ENV{SDL2_DIR}/lib/x64/SDL2.lib")'
Get-Content -Path "${{ github.workspace }}\SDL2\sdl2-config.cmake"
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: "3.x"
architecture: "x64"
- name: Install pip dependencies
run: |
python3 -m pip install --upgrade setuptools wheel
python3 -m pip install --user --upgrade scons protobuf grpcio-tools pyinstaller
python3 -c 'import google.protobuf; print(google.protobuf.__file__)'
- name: Setup Qt
uses: jurplel/install-qt-action@v2
with:
arch: win64_msvc2019_64
- name: Setup MSVC
uses: ilammy/msvc-dev-cmd@v1
with:
arch: "x86_64"
toolset: "14"
- name: Configure & Build Opus
run: |
git clone https://github.com/xiph/opus.git
cd opus
mkdir build
cmake `
-S . `
-B build `
-G "Visual Studio 17 2022" -A x64 `
-DCMAKE_C_COMPILER=cl `
-DCMAKE_BUILD_TYPE=Release `
-DCMAKE_INSTALL_PREFIX="${{ github.workspace }}\opus-prefix"
cmake --build build --config Release
cmake --install build
- name: Configure Chiaki
working-directory: chiaki
run: |
cmake `
-S . `
-B build `
-G "Visual Studio 17 2022" -A x64 `
-DCMAKE_C_COMPILER=cl `
-DCMAKE_C_FLAGS="-we4013" `
-DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE `
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
-DCHIAKI_ENABLE_CLI=OFF `
-DCHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER=ON `
-DPYTHON_EXECUTABLE="${{ env.pythonLocation }}\python.exe" `
-DCMAKE_PREFIX_PATH="${{ github.workspace }}\nanopb;${{ github.workspace }}\ffmpeg;${{ github.workspace }}\opus-prefix;${{ github.workspace }}\openssl\x64;${{ github.workspace }}\SDL2;${{ env.Qt5_Dir }}"
- name: Build Chiaki
working-directory: chiaki
run: |
cmake --build build --config Release --clean-first --target chiaki
- name: Prepare Qt deployment package
working-directory: chiaki
run: |
mkdir Chiaki-VC
cp build\gui\Release\chiaki.exe Chiaki-VC
cp "${{ github.workspace }}\openssl\x64\bin\libcrypto-1_1-x64.dll" Chiaki-VC
cp "${{ github.workspace }}\openssl\x64\bin\libssl-1_1-x64.dll" Chiaki-VC
cp "${{ github.workspace }}\SDL2\lib\x64\SDL2.dll" Chiaki-VC
cp "${{ github.workspace }}\ffmpeg\bin\swresample-4.dll" Chiaki-VC
cp "${{ github.workspace }}\ffmpeg\bin\avcodec-59.dll" Chiaki-VC
cp "${{ github.workspace }}\ffmpeg\bin\avutil-57.dll" Chiaki-VC
windeployqt.exe --no-translations Chiaki-VC\chiaki.exe
- name: Package Chiaki
working-directory: chiaki
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-win_x64-VC-$CHIAKI_VERSION_MAJOR.$CHIAKI_VERSION_MINOR.$CHIAKI_VERSION_PATCH.zip"
Compress-Archive Chiaki-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 Artifact
uses: actions/upload-artifact@v3
with:
name: Chiaki-win_x64-VC-Release
path: ${{ env.RELEASE_PACKAGE_PATH }}
if-no-files-found: error
retention-days: 1