Add a new game launcher program #39
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: Main | |
on: | |
push: | |
branches: [ "main" ] | |
pull_request: | |
branches: [ "main" ] | |
env: | |
CMAKE_BUILD_PARALLEL_LEVEL: 2 | |
MAKEFLAGS: '-j 2' | |
jobs: | |
reuse: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: REUSE Compliance Check | |
uses: fsfe/reuse-action@v3 | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [windows-latest, ubuntu-latest] | |
build_type: [Release] | |
c_compiler: [gcc, cl] | |
include: | |
- os: windows-latest | |
c_compiler: cl | |
cpp_compiler: cl | |
- os: ubuntu-latest | |
c_compiler: gcc | |
cpp_compiler: g++ | |
exclude: | |
- os: windows-latest | |
c_compiler: gcc | |
- os: ubuntu-latest | |
c_compiler: cl | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Install Qt | |
uses: jurplel/install-qt-action@v3 | |
with: | |
version: "6.6.*" | |
cache: true | |
modules: 'qthttpserver qtwebsockets' | |
- name: Prepare Vulkan SDK | |
uses: humbletim/[email protected] | |
with: | |
vulkan-query-version: latest | |
vulkan-components: Vulkan-Headers, Vulkan-Loader, SPIRV-Cross, SPIRV-Headers | |
vulkan-use-cache: true | |
- name: Set reusable strings | |
id: strings | |
shell: bash | |
run: | | |
echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" | |
echo "prefix-dir=${{ github.workspace }}/prefix" >> "$GITHUB_OUTPUT" | |
- name: Setup Linux dependencies | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt-get update | |
sudo apt-get install \ | |
gettext \ | |
gperf \ | |
libwayland-dev \ | |
- name: Cache Prefix | |
id: cache-prefix-restore | |
uses: actions/cache/restore@v4 | |
with: | |
path: ${{ steps.strings.outputs.prefix-dir }} | |
key: ${{ runner.os }}-prefix | |
- name: Setup Windows dependencies | |
if: (runner.os == 'Windows') && (steps.cache-prefix-restore.outputs.cache-hit != 'true') | |
shell: powershell | |
run: | | |
$ProgressPreference = 'SilentlyContinue' | |
Invoke-WebRequest https://xiv.zone/distrib/dependencies/gettext.zip -OutFile gettext.zip | |
unzip gettext.zip -d ${{ steps.strings.outputs.prefix-dir }} | |
Invoke-WebRequest https://xiv.zone/distrib/dependencies/iconv.zip -OutFile iconv.zip | |
unzip iconv.zip -d ${{ steps.strings.outputs.prefix-dir }} | |
Invoke-WebRequest https://xiv.zone/distrib/dependencies/gperf.zip -OutFile gperf.zip | |
unzip gperf.zip -d ${{ steps.strings.outputs.prefix-dir }} | |
Invoke-WebRequest https://xiv.zone/distrib/dependencies/icoutils.zip -OutFile icoutils.zip | |
unzip icoutils.zip -d ${{ steps.strings.outputs.prefix-dir }} | |
- name: Build zlib | |
if: (runner.os == 'Windows') && (steps.cache-prefix-restore.outputs.cache-hit != 'true') | |
run: | | |
git clone https://github.com/madler/zlib.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-zlib -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S zlib -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DBUILD_TESTING=OFF | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-zlib --config ${{ matrix.build_type }} --target install | |
- name: Build Extra CMake Modules | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
git clone https://invent.kde.org/frameworks/extra-cmake-modules.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-ECM -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S extra-cmake-modules -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DBUILD_TESTING=OFF | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-ECM --config ${{ matrix.build_type }} --target install | |
cmake --install ${{ steps.strings.outputs.build-output-dir }}-ECM --config ${{ matrix.build_type }} | |
- name: Configure KI18n | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
git clone https://invent.kde.org/frameworks/ki18n.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-ki18n -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S ki18n -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DBUILD_TESTING=OFF | |
- name: Windows KI18n workaround | |
if: (runner.os == 'Windows') && (steps.cache-prefix-restore.outputs.cache-hit != 'true') | |
run: | | |
(Get-Content -ReadCount 0 ${{ steps.strings.outputs.build-output-dir }}-ki18n/cmake/build-pofiles.cmake) -replace 'FATAL_ERROR', 'WARNING' | Set-Content ${{ steps.strings.outputs.build-output-dir }}-ki18n/cmake/build-pofiles.cmake | |
- name: Build KI18n | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-ki18n --config ${{ matrix.build_type }} --target install | |
- name: Build KCoreAddons | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
git clone https://invent.kde.org/frameworks/kcoreaddons.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-kca -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S kcoreaddons -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DBUILD_TESTING=OFF | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-kca --config ${{ matrix.build_type }} --target install | |
- name: Build KConfig | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
git clone https://invent.kde.org/frameworks/kconfig.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-kconfig -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S kconfig -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DBUILD_TESTING=OFF | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-kconfig --config ${{ matrix.build_type }} --target install | |
- name: Build KArchive | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
git clone https://invent.kde.org/frameworks/karchive.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-karchive -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S karchive -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DBUILD_TESTING=OFF -DWITH_BZIP2=OFF -DWITH_LIBLZMA=OFF -DWITH_LIBZSTD=OFF # TODO: enable bzip which we need later | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-karchive --config ${{ matrix.build_type }} --target install | |
- name: Build KItemViews | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
git clone https://invent.kde.org/frameworks/kitemviews.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-kitemviews -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S kitemviews -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DBUILD_TESTING=OFF | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-kitemviews --config ${{ matrix.build_type }} --target install | |
- name: Build KCodecs | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
git clone https://invent.kde.org/frameworks/kcodecs.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-kcodecs -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S kcodecs -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DBUILD_TESTING=OFF | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-kcodecs --config ${{ matrix.build_type }} --target install | |
- name: Build Plasma Wayland Protocols | |
if: (runner.os == 'Linux') && (steps.cache-prefix-restore.outputs.cache-hit != 'true') | |
run: | | |
git clone https://invent.kde.org/libraries/plasma-wayland-protocols.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-plasma-wayland-protocols -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S plasma-wayland-protocols -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DBUILD_TESTING=OFF | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-plasma-wayland-protocols --config ${{ matrix.build_type }} --target install | |
- name: Build KGuiAddons | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
git clone https://invent.kde.org/frameworks/kguiaddons.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-kguiaddons -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S kguiaddons -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DBUILD_TESTING=OFF | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-kguiaddons --config ${{ matrix.build_type }} --target install | |
- name: Build KWidgetsAddons | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
git clone https://invent.kde.org/frameworks/kwidgetsaddons.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-kwidgetsaddons -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S kwidgetsaddons -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DBUILD_TESTING=OFF | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-kwidgetsaddons --config ${{ matrix.build_type }} --target install | |
- name: Configure KColorScheme | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
git clone https://invent.kde.org/frameworks/kcolorscheme.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-kcolorscheme -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S kcolorscheme -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DBUILD_TESTING=OFF | |
- name: Windows KI18n workaround | |
if: (runner.os == 'Windows') && (steps.cache-prefix-restore.outputs.cache-hit != 'true') | |
run: | | |
(Get-Content -ReadCount 0 ${{ steps.strings.outputs.prefix-dir }}/lib/cmake/KF6I18n/build-pofiles.cmake) -replace 'FATAL_ERROR', 'WARNING' | Set-Content ${{ steps.strings.outputs.prefix-dir }}/lib/cmake/KF6I18n/build-pofiles.cmake | |
- name: Build KColorScheme | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-kcolorscheme --config ${{ matrix.build_type }} --target install | |
- name: Build KConfigWidgets | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
git clone https://invent.kde.org/frameworks/kconfigwidgets.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-kconfigwidgets -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S kconfigwidgets -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DBUILD_TESTING=OFF | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-kconfigwidgets --config ${{ matrix.build_type }} --target install | |
- name: Build Breeze Icons | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
continue-on-error: true | |
run: | | |
git clone https://invent.kde.org/frameworks/breeze-icons.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-breeze-icons -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S breeze-icons -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DICONS_LIBRARY=ON -DSKIP_INSTALL_ICONS=ON | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-breeze-icons --config ${{ matrix.build_type }} --target install | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-breeze-icons --config ${{ matrix.build_type }} --target install | |
- name: Build KIconThemes | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
git clone https://invent.kde.org/frameworks/kiconthemes.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-kiconthemes -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S kiconthemes -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DBUILD_TESTING=OFF | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-kiconthemes --config ${{ matrix.build_type }} --target install | |
- name: Build Sonnet | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
git clone https://invent.kde.org/frameworks/sonnet.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-sonnet -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S sonnet -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DBUILD_TESTING=OFF | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-sonnet --config ${{ matrix.build_type }} --target install | |
- name: Build KCompletion | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
git clone https://invent.kde.org/frameworks/kcompletion.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-kcompletion -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S kcompletion -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DBUILD_TESTING=OFF | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-kcompletion --config ${{ matrix.build_type }} --target install | |
- name: Build KTextWidgets | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
git clone https://invent.kde.org/frameworks/ktextwidgets.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-ktextwidgets -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S ktextwidgets -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DBUILD_TESTING=OFF -DWITH_TEXT_TO_SPEECH=OFF | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-ktextwidgets --config ${{ matrix.build_type }} --target install | |
- name: Build KXmlGui | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
git clone https://invent.kde.org/frameworks/kxmlgui.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-kxmlgui -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S kxmlgui -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DBUILD_TESTING=OFF -DFORCE_DISABLE_KGLOBALACCEL=ON | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-kxmlgui --config ${{ matrix.build_type }} --target install | |
- name: Build glm | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
git clone https://github.com/g-truc/glm.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-glm -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S glm -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DGLM_BUILD_TESTS=OFF | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-glm --config ${{ matrix.build_type }} --target install | |
- name: Build Corrosion | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
git clone https://github.com/corrosion-rs/corrosion.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-corrosion -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S corrosion -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DCORROSION_BUILD_TESTS=OFF | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-corrosion --config ${{ matrix.build_type }} --target install | |
- name: Build nlohmann | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
git clone https://github.com/nlohmann/json.git | |
cmake -B ${{ steps.strings.outputs.build-output-dir }}-nlohmann -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -S json -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DJSON_BuildTests=OFF | |
cmake --build ${{ steps.strings.outputs.build-output-dir }}-nlohmann --config ${{ matrix.build_type }} --target install | |
- name: Build stb | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
run: | | |
git clone https://github.com/nothings/stb.git | |
mv stb/* ${{ steps.strings.outputs.prefix-dir }}/include | |
- name: Save Prefix | |
id: cache-prefix-save | |
uses: actions/cache/save@v4 | |
if: steps.cache-prefix-restore.outputs.cache-hit != 'true' | |
with: | |
path: ${{ steps.strings.outputs.prefix-dir }} | |
key: ${{ steps.cache-prefix-restore.outputs.cache-primary-key }} | |
- name: Configure | |
run: > | |
cmake -B ${{ steps.strings.outputs.build-output-dir }} | |
-DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} | |
-DCMAKE_C_COMPILER=${{ matrix.c_compiler }} | |
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} | |
-DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} | |
-DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-output-dir }}/bin | |
-S ${{ github.workspace }} | |
- name: Build | |
run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} --target install | |
- name: Copy required DLLs | |
if: runner.os == 'Windows' | |
run: | | |
Copy-Item -Path ${{ steps.strings.outputs.prefix-dir }}/bin/KF6BreezeIcons.dll -Destination ${{ steps.strings.outputs.build-output-dir }}/bin/bin | |
Copy-Item -Path ${{ steps.strings.outputs.prefix-dir }}/bin/KF6ItemViews.dll -Destination ${{ steps.strings.outputs.build-output-dir }}/bin/bin | |
Copy-Item -Path ${{ steps.strings.outputs.prefix-dir }}/bin/KF6IconWidgets.dll -Destination ${{ steps.strings.outputs.build-output-dir }}/bin/bin | |
Copy-Item -Path ${{ steps.strings.outputs.prefix-dir }}/bin/KF6GuiAddons.dll -Destination ${{ steps.strings.outputs.build-output-dir }}/bin/bin | |
Copy-Item -Path ${{ steps.strings.outputs.prefix-dir }}/bin/KF6ColorScheme.dll -Destination ${{ steps.strings.outputs.build-output-dir }}/bin/bin | |
Copy-Item -Path ${{ steps.strings.outputs.prefix-dir }}/bin/intl-8.dll -Destination ${{ steps.strings.outputs.build-output-dir }}/bin/bin | |
Copy-Item -Path ${{ steps.strings.outputs.prefix-dir }}/bin/KF6IconThemes.dll -Destination ${{ steps.strings.outputs.build-output-dir }}/bin/bin | |
Copy-Item -Path ${{ steps.strings.outputs.prefix-dir }}/bin/iconv.dll -Destination ${{ steps.strings.outputs.build-output-dir }}/bin/bin | |
Copy-Item -Path ${{ steps.strings.outputs.prefix-dir }}/bin/zlib.dll -Destination ${{ steps.strings.outputs.build-output-dir }}/bin/bin | |
Copy-Item -Path $env:Qt6_DIR/bin/Qt6PrintSupport.dll -Destination ${{ steps.strings.outputs.build-output-dir }}/bin/bin | |
- name: Remove extra files | |
if: runner.os == 'Windows' | |
run: | | |
Remove-Item -Path ${{ steps.strings.outputs.build-output-dir }}/bin/bin/opengl32sw.dll | |
Remove-Item -Path ${{ steps.strings.outputs.build-output-dir }}/bin/Release -Force -Recurse | |
Remove-Item -Path ${{ steps.strings.outputs.build-output-dir }}/bin/physis.dll | |
Remove-Item -Path ${{ steps.strings.outputs.build-output-dir }}/bin/physis.pdb | |
- name: Archive artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ runner.os }}-package | |
path: ${{ steps.strings.outputs.build-output-dir }}/bin |