From 66290693d13f6199bef4d339ca3f0ab33ff72fb0 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Sun, 17 May 2026 09:40:19 -0400 Subject: [PATCH 1/8] Update dependencies for CI, Flatpak and re-introduce syntax highlighting On Windows specifically where it was disabled for a time. --- .github/workflows/main.yml | 8 ++++---- CMakeLists.txt | 3 +-- apps/sagasu/CMakeLists.txt | 9 ++------- apps/sagasu/src/mainwindow.cpp | 6 ++---- parts/luab/CMakeLists.txt | 9 ++------- parts/luab/luabpart.cpp | 5 ----- parts/shcd/CMakeLists.txt | 9 ++------- parts/shcd/shcdpart.cpp | 4 ---- parts/shcd/shcdpart.h | 4 ---- parts/shpk/CMakeLists.txt | 9 ++------- parts/shpk/shpkpart.cpp | 4 ---- parts/shpk/shpkpart.h | 4 ---- zone.xiv.novus.yml | 10 +++++----- 13 files changed, 20 insertions(+), 64 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 48f01b4b..9115e771 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -5,9 +5,9 @@ on: pull_request: env: - QT_VERSION: 6.10.1 # Keep in sync with CMakeLists.txt - KF_VERSION: v6.21.0 # Ditto - PLASMA_WAYLAND_VERSION: v1.19.0 + QT_VERSION: 6.10.3 # Keep in sync with CMakeLists.txt + KF_VERSION: v6.26.0 # Ditto + PLASMA_WAYLAND_VERSION: v1.21.0 COMMON_CMAKE_OPTIONS: "-DBUILD_TESTING=OFF -DBUILD_PYTHON_BINDINGS=OFF" jobs: @@ -271,7 +271,7 @@ jobs: cmake --build ${{ steps.strings.outputs.build-output-dir }}-kxmlgui --config ${{ matrix.build_type }} --target install - name: Build KSyntaxHighlighting - if: steps.cache-prefix-restore.outputs.cache-hit != 'true' && runner.os != 'Windows' # Re-enable when KSyntaxHighlighting builds on Windows again... + if: steps.cache-prefix-restore.outputs.cache-hit != 'true' run: | git clone --depth 1 --branch ${{ env.KF_VERSION }} https://invent.kde.org/frameworks/syntax-highlighting.git cmake -B ${{ steps.strings.outputs.build-output-dir }}-syntax-highlighting -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 syntax-highlighting -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} ${{ env.COMMON_CMAKE_OPTIONS }} diff --git a/CMakeLists.txt b/CMakeLists.txt index 8800108a..36b5de15 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,8 +40,7 @@ ecm_setup_version(${PROJECT_VERSION} ) find_package(Qt6 ${QT_MIN_VERSION} COMPONENTS Core Widgets Concurrent Sql Network CONFIG REQUIRED) -find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS CoreAddons Config XmlGui Archive I18n) -find_package(KF6SyntaxHighlighting ${KF_MIN_VERSION}) +find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS CoreAddons Config XmlGui Archive I18n KF6SyntaxHighlighting) find_package(Vulkan REQUIRED) find_package(glm REQUIRED) if (NOT TARGET glm::glm) diff --git a/apps/sagasu/CMakeLists.txt b/apps/sagasu/CMakeLists.txt index 5f404aa2..2a99028e 100644 --- a/apps/sagasu/CMakeLists.txt +++ b/apps/sagasu/CMakeLists.txt @@ -10,12 +10,6 @@ target_sources(novus-sagasu src/filetreewindow.cpp src/filepropertieswindow.cpp src/filetreemodel.cpp) -if (TARGET KF6::SyntaxHighlighting) - target_link_libraries(novus-sagasu - PUBLIC - KF6::SyntaxHighlighting) - target_compile_definitions(novus-sagasu PUBLIC HAVE_SYNTAX_HIGHLIGHTING) -endif() target_include_directories(novus-sagasu PRIVATE include) target_link_libraries(novus-sagasu PRIVATE @@ -38,7 +32,8 @@ target_link_libraries(novus-sagasu Novus::TmbPart Novus::ShcdPart Qt6::Concurrent - Qt6::Network) + Qt6::Network + KF6::SyntaxHighlighting) install(TARGETS novus-sagasu ${KF${QT_MAJOR_VERSION}_INSTALL_TARGETS_DEFAULT_ARGS}) install(FILES dataexplorer.rc DESTINATION ${KDE_INSTALL_KXMLGUIDIR}/novus) diff --git a/apps/sagasu/src/mainwindow.cpp b/apps/sagasu/src/mainwindow.cpp index 0f7ef342..874b43f8 100644 --- a/apps/sagasu/src/mainwindow.cpp +++ b/apps/sagasu/src/mainwindow.cpp @@ -38,13 +38,11 @@ #include #include -#ifdef HAVE_SYNTAX_HIGHLIGHTING #include #include #include #include #include -#endif #include "mdlimport.h" #include "openinwidget.h" @@ -416,7 +414,7 @@ void MainWindow::refreshParts(const QString &indexPath, Hash hash, const QString } const auto debugInformationText = new QTextEdit(); debugInformationText->setText(debugInformation); -#ifdef HAVE_SYNTAX_HIGHLIGHTING + // Setup highlighting KSyntaxHighlighting::Repository repository; @@ -427,7 +425,7 @@ void MainWindow::refreshParts(const QString &indexPath, Hash hash, const QString const auto def = repository.definitionForName(QStringLiteral("Rust")); highlighter->setDefinition(def); -#endif + m_partHolder->addTab(debugInformationText, i18nc("@title:tab", "Debug")); } diff --git a/parts/luab/CMakeLists.txt b/parts/luab/CMakeLists.txt index 18173613..efa28611 100644 --- a/parts/luab/CMakeLists.txt +++ b/parts/luab/CMakeLists.txt @@ -9,13 +9,8 @@ target_link_libraries(luabpart KF6::I18n Physis::Physis Qt6::Core - Qt6::Widgets) -if (TARGET KF6::SyntaxHighlighting) - target_link_libraries(luabpart - PUBLIC - KF6::SyntaxHighlighting) - target_compile_definitions(luabpart PUBLIC HAVE_SYNTAX_HIGHLIGHTING) -endif() + Qt6::Widgets + KF6::SyntaxHighlighting) target_include_directories(luabpart PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_compile_definitions(luabpart PRIVATE TRANSLATION_DOMAIN="novus") if (NOT BUILD_FLATPAK) diff --git a/parts/luab/luabpart.cpp b/parts/luab/luabpart.cpp index 8d413511..191a8cc5 100644 --- a/parts/luab/luabpart.cpp +++ b/parts/luab/luabpart.cpp @@ -15,13 +15,10 @@ #include "scriptprocessor.h" -#ifdef HAVE_SYNTAX_HIGHLIGHTING -#include #include #include #include #include -#endif LuabPart::LuabPart(QWidget *parent) : QWidget(parent) @@ -57,7 +54,6 @@ void LuabPart::load(physis_Buffer buffer) ScriptProcessor processor; m_codeEdit->setText(processor.process(QString::fromUtf8(luaDecProcess.readAllStandardOutput()))); -#ifdef HAVE_SYNTAX_HIGHLIGHTING // Setup highlighting KSyntaxHighlighting::Repository repository; @@ -68,7 +64,6 @@ void LuabPart::load(physis_Buffer buffer) const auto def = repository.definitionForName(QStringLiteral("Lua")); highlighter->setDefinition(def); -#endif } } diff --git a/parts/shcd/CMakeLists.txt b/parts/shcd/CMakeLists.txt index 64841ec3..e591acae 100644 --- a/parts/shcd/CMakeLists.txt +++ b/parts/shcd/CMakeLists.txt @@ -16,13 +16,8 @@ target_link_libraries(shcdpart spirv-cross-core spirv-cross-glsl Qt6::Core - Qt6::Widgets) -if (TARGET KF6::SyntaxHighlighting) - target_link_libraries(shcdpart - PUBLIC - KF6::SyntaxHighlighting) - target_compile_definitions(shcdpart PUBLIC HAVE_SYNTAX_HIGHLIGHTING) -endif() + Qt6::Widgets + KF6::SyntaxHighlighting) target_include_directories(shcdpart PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_compile_options(shcdpart PRIVATE -fexceptions) target_compile_definitions(shcdpart PRIVATE TRANSLATION_DOMAIN="novus") diff --git a/parts/shcd/shcdpart.cpp b/parts/shcd/shcdpart.cpp index 1d91ead5..b5eff6a7 100644 --- a/parts/shcd/shcdpart.cpp +++ b/parts/shcd/shcdpart.cpp @@ -11,12 +11,10 @@ #include #include -#ifdef HAVE_SYNTAX_HIGHLIGHTING #include #include #include #include -#endif SHCDPart::SHCDPart(QWidget *parent) : QWidget(parent) @@ -59,7 +57,6 @@ void SHCDPart::load(Platform platform, physis_Buffer buffer) m_shaderTextEdit->setText(QLatin1String(glsl.compile().c_str())); -#ifdef HAVE_SYNTAX_HIGHLIGHTING // Setup highlighting auto highlighter = new KSyntaxHighlighting::SyntaxHighlighter(m_shaderTextEdit->document()); highlighter->setTheme((m_shaderTextEdit->palette().color(QPalette::Base).lightness() < 128) @@ -68,7 +65,6 @@ void SHCDPart::load(Platform platform, physis_Buffer buffer) const auto def = repository.definitionForName(QStringLiteral("GLSL")); highlighter->setDefinition(def); -#endif } catch (const dxvk::DxvkError &exception) { qWarning() << "Failed to load shader:" << exception.message(); } diff --git a/parts/shcd/shcdpart.h b/parts/shcd/shcdpart.h index be692554..ae0deebd 100644 --- a/parts/shcd/shcdpart.h +++ b/parts/shcd/shcdpart.h @@ -3,9 +3,7 @@ #pragma once -#ifdef HAVE_SYNTAX_HIGHLIGHTING #include -#endif #include #include #include @@ -28,7 +26,5 @@ class SHCDPart : public QWidget physis_SHCD m_shcd; QTextEdit *m_shaderTextEdit = nullptr; -#ifdef HAVE_SYNTAX_HIGHLIGHTING KSyntaxHighlighting::Repository repository; -#endif }; diff --git a/parts/shpk/CMakeLists.txt b/parts/shpk/CMakeLists.txt index a6582c4c..604600f4 100644 --- a/parts/shpk/CMakeLists.txt +++ b/parts/shpk/CMakeLists.txt @@ -16,13 +16,8 @@ target_link_libraries(shpkpart spirv-cross-core spirv-cross-glsl Qt6::Core - Qt6::Widgets) -if (TARGET KF6::SyntaxHighlighting) - target_link_libraries(shpkpart - PUBLIC - KF6::SyntaxHighlighting) - target_compile_definitions(shpkpart PUBLIC HAVE_SYNTAX_HIGHLIGHTING) -endif() + Qt6::Widgets + KF6::SyntaxHighlighting) target_include_directories(shpkpart PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_compile_options(shpkpart PRIVATE -fexceptions) target_compile_definitions(shpkpart PRIVATE TRANSLATION_DOMAIN="novus") diff --git a/parts/shpk/shpkpart.cpp b/parts/shpk/shpkpart.cpp index c1466fd3..ebee2a34 100644 --- a/parts/shpk/shpkpart.cpp +++ b/parts/shpk/shpkpart.cpp @@ -14,12 +14,10 @@ #include #include -#ifdef HAVE_SYNTAX_HIGHLIGHTING #include #include #include #include -#endif SHPKPart::SHPKPart(QWidget *parent) : QWidget(parent) @@ -315,7 +313,6 @@ void SHPKPart::loadShader(const QModelIndex &index) m_shadersTextEdit->setText(QLatin1String(glsl.compile().c_str())); -#ifdef HAVE_SYNTAX_HIGHLIGHTING // Setup highlighting auto highlighter = new KSyntaxHighlighting::SyntaxHighlighter(m_shadersTextEdit->document()); highlighter->setTheme((m_shadersTextEdit->palette().color(QPalette::Base).lightness() < 128) @@ -324,7 +321,6 @@ void SHPKPart::loadShader(const QModelIndex &index) const auto def = m_repository.definitionForName(QStringLiteral("GLSL")); highlighter->setDefinition(def); -#endif } catch (const dxvk::DxvkError &exception) { qWarning() << "Failed to load shader:" << exception.message(); } diff --git a/parts/shpk/shpkpart.h b/parts/shpk/shpkpart.h index e83d8bf9..e565a78d 100644 --- a/parts/shpk/shpkpart.h +++ b/parts/shpk/shpkpart.h @@ -3,9 +3,7 @@ #pragma once -#ifdef HAVE_SYNTAX_HIGHLIGHTING #include -#endif #include #include #include @@ -80,7 +78,5 @@ class SHPKPart : public QWidget physis_SHPK m_shpk; -#ifdef HAVE_SYNTAX_HIGHLIGHTING KSyntaxHighlighting::Repository m_repository; -#endif }; diff --git a/zone.xiv.novus.yml b/zone.xiv.novus.yml index 3a4f59b5..aa9694e6 100644 --- a/zone.xiv.novus.yml +++ b/zone.xiv.novus.yml @@ -33,7 +33,7 @@ modules: sources: - type: git url: https://github.com/g-truc/glm.git - tag: 1.0.2 + tag: 1.0.3 - name: json buildsystem: cmake-ninja config-opts: @@ -60,7 +60,7 @@ modules: sources: - type: git url: https://github.com/KhronosGroup/SPIRV-Headers.git - tag: vulkan-sdk-1.4.328.1 + tag: vulkan-sdk-1.4.350.0 - name: spirv-cross buildsystem: cmake-ninja cleanup: @@ -68,7 +68,7 @@ modules: sources: - type: git url: https://github.com/KhronosGroup/SPIRV-Cross.git - tag: vulkan-sdk-1.4.328.1 + tag: vulkan-sdk-1.4.350.0 - name: glslang buildsystem: cmake-ninja config-opts: @@ -80,7 +80,7 @@ modules: sources: - type: git url: https://github.com/KhronosGroup/glslang.git - tag: 16.0.0 + tag: 16.3.0 - name: corrosion buildsystem: cmake-ninja config-opts: @@ -93,7 +93,7 @@ modules: sources: - type: git url: https://github.com/AndrewGaspar/corrosion.git - tag: v0.5.2 + tag: v0.6.1 - name: novus buildsystem: cmake-ninja config-opts: From 93576356c96d2b03a5e3e334d11cb864ebe3dde3 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Sun, 17 May 2026 09:41:22 -0400 Subject: [PATCH 2/8] Remove Ubuntu CI This is already covered by the Flatpak build which is the only supported version anyway. --- .github/workflows/main.yml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9115e771..dbd2fe5e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -33,21 +33,16 @@ jobs: strategy: fail-fast: false matrix: - os: [windows-latest, ubuntu-latest] + os: [windows-latest] build_type: [Release] - c_compiler: [gcc, cl] + c_compiler: [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@v6 From 596ed8baf59a933f22b58c3fa21292bff83ca261 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Sun, 17 May 2026 09:53:25 -0400 Subject: [PATCH 3/8] Misc build system cleanup Removed unused dependencies, re-organized and commented on some of the CMake code. --- .github/workflows/main.yml | 23 ----------------------- CMakeLists.txt | 7 +------ apps/enemyeditor/CMakeLists.txt | 10 +++++----- apps/patchdiff/CMakeLists.txt | 8 ++++---- apps/sagasu/CMakeLists.txt | 13 +++++++++---- common/CMakeLists.txt | 30 +++++++++++++++--------------- extern/CMakeLists.txt | 16 ++++++++++------ parts/dic/CMakeLists.txt | 2 +- parts/luab/CMakeLists.txt | 2 +- parts/scene/CMakeLists.txt | 32 ++++++++++++++++---------------- parts/shcd/CMakeLists.txt | 4 ++-- parts/shpk/CMakeLists.txt | 4 ++-- parts/tmb/CMakeLists.txt | 2 +- renderer/CMakeLists.txt | 12 ++++++------ 14 files changed, 73 insertions(+), 92 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index dbd2fe5e..f8eeb8d2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -7,7 +7,6 @@ on: env: QT_VERSION: 6.10.3 # Keep in sync with CMakeLists.txt KF_VERSION: v6.26.0 # Ditto - PLASMA_WAYLAND_VERSION: v1.21.0 COMMON_CMAKE_OPTIONS: "-DBUILD_TESTING=OFF -DBUILD_PYTHON_BINDINGS=OFF" jobs: @@ -69,21 +68,6 @@ jobs: 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 \ - libhunspell-dev \ - libc6-dev-i386 \ - gcc-multilib \ - g++-multilib - - pip install lxml - - name: Cache Prefix id: cache-prefix-restore uses: actions/cache/restore@v5 @@ -177,13 +161,6 @@ jobs: 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} 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 --depth 1 --branch ${{ env.PLASMA_WAYLAND_VERSION }} 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} - 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: | diff --git a/CMakeLists.txt b/CMakeLists.txt index 36b5de15..2d3d07da 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,18 +40,13 @@ ecm_setup_version(${PROJECT_VERSION} ) find_package(Qt6 ${QT_MIN_VERSION} COMPONENTS Core Widgets Concurrent Sql Network CONFIG REQUIRED) -find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS CoreAddons Config XmlGui Archive I18n KF6SyntaxHighlighting) +find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS CoreAddons Config XmlGui Archive I18n SyntaxHighlighting BreezeIcons) find_package(Vulkan REQUIRED) find_package(glm REQUIRED) if (NOT TARGET glm::glm) add_library(glm::glm ALIAS glm) endif () -# TODO: we should really do this on all platforms anyway -if (WIN32) - find_package(KF6BreezeIcons REQUIRED) -endif () - add_subdirectory(extern) add_subdirectory(renderer) add_subdirectory(parts) diff --git a/apps/enemyeditor/CMakeLists.txt b/apps/enemyeditor/CMakeLists.txt index 9b57cef9..593114cc 100644 --- a/apps/enemyeditor/CMakeLists.txt +++ b/apps/enemyeditor/CMakeLists.txt @@ -5,14 +5,14 @@ add_executable(novus-enemyeditor) set_common_properties(novus-enemyeditor) target_sources(novus-enemyeditor PRIVATE - include/mainwindow.h - include/enemymodel.h include/enemyinfowindow.h + include/enemymodel.h + include/mainwindow.h - src/main.cpp - src/mainwindow.cpp + src/enemyinfowindow.cpp src/enemymodel.cpp - src/enemyinfowindow.cpp) + src/main.cpp + src/mainwindow.cpp) target_include_directories(novus-enemyeditor PUBLIC include) diff --git a/apps/patchdiff/CMakeLists.txt b/apps/patchdiff/CMakeLists.txt index 2958a471..d90ed534 100644 --- a/apps/patchdiff/CMakeLists.txt +++ b/apps/patchdiff/CMakeLists.txt @@ -6,13 +6,13 @@ set_common_properties(novus-patchdiff) target_sources(novus-patchdiff PRIVATE include/mainwindow.h - include/difftreemodel.h include/difftreewidget.h + include/difftreemodel.h - src/main.cpp - src/mainwindow.cpp src/difftreemodel.cpp - src/difftreewidget.cpp) + src/difftreewidget.cpp + src/main.cpp + src/mainwindow.cpp) target_include_directories(novus-patchdiff PUBLIC include) diff --git a/apps/sagasu/CMakeLists.txt b/apps/sagasu/CMakeLists.txt index 2a99028e..d0bfd968 100644 --- a/apps/sagasu/CMakeLists.txt +++ b/apps/sagasu/CMakeLists.txt @@ -5,11 +5,16 @@ add_executable(novus-sagasu) set_common_properties(novus-sagasu) target_sources(novus-sagasu PRIVATE - src/main.cpp - src/mainwindow.cpp - src/filetreewindow.cpp + include/filepropertieswindow.h + include/filetreemodel.h + include/filetreewindow.h + include/mainwindow.h + src/filepropertieswindow.cpp - src/filetreemodel.cpp) + src/filetreemodel.cpp + src/filetreewindow.cpp + src/main.cpp + src/mainwindow.cpp) target_include_directories(novus-sagasu PRIVATE include) target_link_libraries(novus-sagasu PRIVATE diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 3b3c11e9..c5a4c0a3 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -35,35 +35,35 @@ set_common_properties(novus-common) target_sources(novus-common PRIVATE include/aboutdata.h + include/booledit.h + include/editwidget.h + include/enumedit.h include/filecache.h include/filetypes.h + include/hashdatabase.h + include/knownvalues.h + include/openinwidget.h + include/pathedit.h include/quaternionedit.h include/settings.h - include/vec3edit.h - include/pathedit.h - include/enumedit.h - include/editwidget.h include/uintedit.h - include/booledit.h - include/openinwidget.h include/utility.h - include/hashdatabase.h - include/knownvalues.h + include/vec3edit.h src/aboutdata.cpp + src/booledit.cpp + src/editwidget.cpp + src/enumedit.cpp src/filecache.cpp src/filetypes.cpp + src/hashdatabase.cpp + src/openinwidget.cpp + src/pathedit.cpp src/quaternionedit.cpp src/settings.cpp - src/vec3edit.cpp - src/pathedit.cpp - src/enumedit.cpp - src/editwidget.cpp src/uintedit.cpp - src/booledit.cpp - src/openinwidget.cpp src/utility.cpp - src/hashdatabase.cpp + src/vec3edit.cpp launcherconfig.h) target_include_directories(novus-common diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt index a0c4ae72..b01118f5 100644 --- a/extern/CMakeLists.txt +++ b/extern/CMakeLists.txt @@ -8,12 +8,16 @@ if (ENABLE_SANITIZERS) set(Rust_TOOLCHAIN "nightly") endif() -FetchContent_Declare( - Corrosion - GIT_REPOSITORY https://github.com/corrosion-rs/corrosion.git - GIT_TAG v0.5.2 -) -FetchContent_MakeAvailable(Corrosion) + +find_package(Corrosion QUIET) +if (NOT Corrosion_FOUND) + FetchContent_Declare( + Corrosion + GIT_REPOSITORY https://github.com/corrosion-rs/corrosion.git + GIT_TAG v0.6.1 + ) + FetchContent_MakeAvailable(Corrosion) +endif() corrosion_import_crate(MANIFEST_PATH ${CMAKE_CURRENT_SOURCE_DIR}/libphysis/Cargo.toml) target_include_directories(physis INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/libphysis/target/public) diff --git a/parts/dic/CMakeLists.txt b/parts/dic/CMakeLists.txt index bab5b5ba..eed489be 100644 --- a/parts/dic/CMakeLists.txt +++ b/parts/dic/CMakeLists.txt @@ -3,7 +3,7 @@ add_library(dicpart STATIC) set_common_properties(dicpart) -target_sources(dicpart PRIVATE dicpart.cpp) +target_sources(dicpart PRIVATE dicpart.cpp dicpart.h) target_link_libraries(dicpart PUBLIC KF6::I18n diff --git a/parts/luab/CMakeLists.txt b/parts/luab/CMakeLists.txt index efa28611..31f502e8 100644 --- a/parts/luab/CMakeLists.txt +++ b/parts/luab/CMakeLists.txt @@ -3,7 +3,7 @@ add_library(luabpart STATIC) set_common_properties(luabpart) -target_sources(luabpart PRIVATE luabpart.cpp scriptprocessor.cpp) +target_sources(luabpart PRIVATE luabpart.cpp luabpart.h scriptprocessor.cpp scriptprocessor.h) target_link_libraries(luabpart PUBLIC KF6::I18n diff --git a/parts/scene/CMakeLists.txt b/parts/scene/CMakeLists.txt index 43d9642b..7eab2987 100644 --- a/parts/scene/CMakeLists.txt +++ b/parts/scene/CMakeLists.txt @@ -5,31 +5,31 @@ add_library(scenepart STATIC) set_common_properties(scenepart) target_sources(scenepart PRIVATE - scenelistwidget.h - scenelistmodel.h - scenestate.h - scenepart.h - objectpropertieswidget.h + animation.h collapsesection.h + exceledit.h mapview.h + objectidedit.h objectpass.h + objectpropertieswidget.h primitives.h - animation.h - objectidedit.h - exceledit.h + scenelistmodel.h + scenelistwidget.h + scenepart.h + scenestate.h - scenelistwidget.cpp - scenelistmodel.cpp - scenestate.cpp - scenepart.cpp - objectpropertieswidget.cpp + animation.cpp collapsesection.cpp + exceledit.cpp mapview.cpp + objectidedit.cpp objectpass.cpp + objectpropertieswidget.cpp primitives.cpp - animation.cpp - objectidedit.cpp - exceledit.cpp) + scenelistmodel.cpp + scenelistwidget.cpp + scenepart.cpp + scenestate.cpp) target_link_libraries(scenepart PUBLIC Novus::Renderer diff --git a/parts/shcd/CMakeLists.txt b/parts/shcd/CMakeLists.txt index e591acae..dcaf5f2d 100644 --- a/parts/shcd/CMakeLists.txt +++ b/parts/shcd/CMakeLists.txt @@ -7,7 +7,7 @@ find_package(SPIRV-Headers REQUIRED) add_library(shcdpart STATIC) set_common_properties(shcdpart) -target_sources(shcdpart PRIVATE shcdpart.cpp) +target_sources(shcdpart PRIVATE shcdpart.cpp shcdpart.h) target_link_libraries(shcdpart PUBLIC Novus::Common @@ -19,7 +19,7 @@ target_link_libraries(shcdpart Qt6::Widgets KF6::SyntaxHighlighting) target_include_directories(shcdpart PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_compile_options(shcdpart PRIVATE -fexceptions) +target_compile_options(shcdpart PRIVATE -fexceptions) # Needed for SPIRV-Cross target_compile_definitions(shcdpart PRIVATE TRANSLATION_DOMAIN="novus") add_library(Novus::ShcdPart ALIAS shcdpart) diff --git a/parts/shpk/CMakeLists.txt b/parts/shpk/CMakeLists.txt index 604600f4..54ee005f 100644 --- a/parts/shpk/CMakeLists.txt +++ b/parts/shpk/CMakeLists.txt @@ -7,7 +7,7 @@ find_package(SPIRV-Headers REQUIRED) add_library(shpkpart STATIC) set_common_properties(shpkpart) -target_sources(shpkpart PRIVATE shpkpart.cpp) +target_sources(shpkpart PRIVATE shpkpart.cpp shpkpart.h) target_link_libraries(shpkpart PUBLIC Novus::Common @@ -19,7 +19,7 @@ target_link_libraries(shpkpart Qt6::Widgets KF6::SyntaxHighlighting) target_include_directories(shpkpart PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_compile_options(shpkpart PRIVATE -fexceptions) +target_compile_options(shpkpart PRIVATE -fexceptions) # Needed for SPIRV-Cross target_compile_definitions(shpkpart PRIVATE TRANSLATION_DOMAIN="novus") add_library(Novus::ShpkPart ALIAS shpkpart) diff --git a/parts/tmb/CMakeLists.txt b/parts/tmb/CMakeLists.txt index 83ef3b37..c538ab91 100644 --- a/parts/tmb/CMakeLists.txt +++ b/parts/tmb/CMakeLists.txt @@ -3,7 +3,7 @@ add_library(tmbpart STATIC) set_common_properties(tmbpart) -target_sources(tmbpart PRIVATE tmbpart.cpp) +target_sources(tmbpart PRIVATE tmbpart.cpp tmbpart.h) target_link_libraries(tmbpart PUBLIC KF6::I18n diff --git a/renderer/CMakeLists.txt b/renderer/CMakeLists.txt index 1c0b100e..3a219136 100644 --- a/renderer/CMakeLists.txt +++ b/renderer/CMakeLists.txt @@ -4,12 +4,12 @@ find_package(spirv_cross_core REQUIRED) find_package(spirv_cross_glsl REQUIRED) find_package(SPIRV-Headers REQUIRED) -find_package(glslang) # for additional debug information in the GLSL +find_package(glslang) # For additional debug information in the GLSL (currently optional for the Windows CI build) add_library(renderer STATIC) set_target_properties(renderer PROPERTIES - EXCLUDE_FROM_SANITIZERS ON) + EXCLUDE_FROM_SANITIZERS ON) # Excluded from sanitizers because of glslang... set_common_properties(renderer) target_sources(renderer PRIVATE @@ -19,6 +19,7 @@ target_sources(renderer include/device.h include/drawobject.h include/gamerenderer.h + include/pass.h include/rendermanager.h include/scene.h include/shadermanager.h @@ -26,17 +27,16 @@ target_sources(renderer include/simplerenderer.h include/swapchain.h include/texture.h - include/pass.h src/device.cpp src/gamerenderer.cpp src/imguipass.cpp src/imguipass.h src/rendermanager.cpp + src/scene.cpp src/shadermanager.cpp src/simplerenderer.cpp - src/swapchain.cpp - src/scene.cpp) + src/swapchain.cpp) qt_add_resources(renderer "shaders" PREFIX "/" @@ -65,7 +65,7 @@ target_link_libraries(renderer spirv-cross-glsl Novus::Common) target_compile_definitions(renderer PUBLIC GLM_FORCE_RADIANS GLM_FORCE_DEPTH_ZERO_TO_ONE GLM_ENABLE_EXPERIMENTAL) -target_compile_options(renderer PUBLIC -fexceptions) # needed for spirv-cross and dxbc +target_compile_options(renderer PUBLIC -fexceptions) # Exceptions are needed for SPIRV-Cross and DXBC if (glslang_FOUND) target_link_libraries(renderer From 1d075434324c87f572ba2713fd99bf08d38e5332 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Sun, 17 May 2026 09:54:41 -0400 Subject: [PATCH 4/8] Insert Qt and KF versions into cache name This way they get properly regenerated on updates. --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f8eeb8d2..a387c4a7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -73,7 +73,7 @@ jobs: uses: actions/cache/restore@v5 with: path: ${{ steps.strings.outputs.prefix-dir }} - key: ${{ runner.os }}-prefix + key: ${{ runner.os }}-${{ env.QT_VERSION }}-${{ env.KF_VERSION }}-prefix - name: Setup Windows dependencies if: (runner.os == 'Windows') && (steps.cache-prefix-restore.outputs.cache-hit != 'true') From f5fc720350a20235831aebf496e670743988176e Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Sun, 17 May 2026 10:45:37 -0400 Subject: [PATCH 5/8] Other Windows CI workarounds --- .github/workflows/main.yml | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a387c4a7..2bfdfb77 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -107,20 +107,22 @@ jobs: run: | git clone --depth 1 --branch ${{ env.KF_VERSION }} 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} - 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: Build KSyntaxHighlighting + if: steps.cache-prefix-restore.outputs.cache-hit != 'true' + run: | + git clone --depth 1 --branch ${{ env.KF_VERSION }} https://invent.kde.org/frameworks/syntax-highlighting.git + (Get-Content -ReadCount 0 syntax-highlighting/data/CMakeLists.txt).Replace('target_sources(SyntaxHighlightingData PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/themes/theme-data.qrc)', 'qt_add_resources(SyntaxHighlightingData ${CMAKE_CURRENT_SOURCE_DIR}/themes/theme-data.qrc)') | Set-Content syntax-highlighting/data/CMakeLists.txt # Work around this IDK + cmake -B ${{ steps.strings.outputs.build-output-dir }}-syntax-highlighting -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 syntax-highlighting -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} ${{ env.COMMON_CMAKE_OPTIONS }} + cmake --build ${{ steps.strings.outputs.build-output-dir }}-syntax-highlighting --config ${{ matrix.build_type }} --target install + - name: Configure KI18n if: steps.cache-prefix-restore.outputs.cache-hit != 'true' run: | git clone --depth 1 --branch ${{ env.KF_VERSION }} 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} - - 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: | @@ -181,11 +183,6 @@ jobs: git clone --depth 1 --branch ${{ env.KF_VERSION }} 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} - - 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: | @@ -242,13 +239,6 @@ jobs: 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} -DFORCE_DISABLE_KGLOBALACCEL=ON cmake --build ${{ steps.strings.outputs.build-output-dir }}-kxmlgui --config ${{ matrix.build_type }} --target install - - name: Build KSyntaxHighlighting - if: steps.cache-prefix-restore.outputs.cache-hit != 'true' - run: | - git clone --depth 1 --branch ${{ env.KF_VERSION }} https://invent.kde.org/frameworks/syntax-highlighting.git - cmake -B ${{ steps.strings.outputs.build-output-dir }}-syntax-highlighting -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 syntax-highlighting -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} ${{ env.COMMON_CMAKE_OPTIONS }} - cmake --build ${{ steps.strings.outputs.build-output-dir }}-syntax-highlighting --config ${{ matrix.build_type }} --target install - - name: Build glm if: steps.cache-prefix-restore.outputs.cache-hit != 'true' run: | From e74c877a1d65fc2f35d8d46c5c34cd6bcb06453a Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Mon, 18 May 2026 19:35:57 -0400 Subject: [PATCH 6/8] Make KSyntaxHighlighting optional again I can't figure out how to make it build on Windows still :-( --- .github/workflows/main.yml | 8 -------- CMakeLists.txt | 3 ++- apps/sagasu/CMakeLists.txt | 9 +++++++-- apps/sagasu/src/mainwindow.cpp | 6 ++++-- parts/luab/CMakeLists.txt | 9 +++++++-- parts/luab/luabpart.cpp | 5 +++++ parts/shcd/CMakeLists.txt | 9 +++++++-- parts/shcd/shcdpart.cpp | 4 ++++ parts/shcd/shcdpart.h | 4 ++++ parts/shpk/CMakeLists.txt | 9 +++++++-- parts/shpk/shpkpart.cpp | 4 ++++ parts/shpk/shpkpart.h | 4 ++++ 12 files changed, 55 insertions(+), 19 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2bfdfb77..1bad34cc 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -109,14 +109,6 @@ jobs: 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} cmake --install ${{ steps.strings.outputs.build-output-dir }}-ECM --config ${{ matrix.build_type }} - - name: Build KSyntaxHighlighting - if: steps.cache-prefix-restore.outputs.cache-hit != 'true' - run: | - git clone --depth 1 --branch ${{ env.KF_VERSION }} https://invent.kde.org/frameworks/syntax-highlighting.git - (Get-Content -ReadCount 0 syntax-highlighting/data/CMakeLists.txt).Replace('target_sources(SyntaxHighlightingData PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/themes/theme-data.qrc)', 'qt_add_resources(SyntaxHighlightingData ${CMAKE_CURRENT_SOURCE_DIR}/themes/theme-data.qrc)') | Set-Content syntax-highlighting/data/CMakeLists.txt # Work around this IDK - cmake -B ${{ steps.strings.outputs.build-output-dir }}-syntax-highlighting -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 syntax-highlighting -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} ${{ env.COMMON_CMAKE_OPTIONS }} - cmake --build ${{ steps.strings.outputs.build-output-dir }}-syntax-highlighting --config ${{ matrix.build_type }} --target install - - name: Configure KI18n if: steps.cache-prefix-restore.outputs.cache-hit != 'true' run: | diff --git a/CMakeLists.txt b/CMakeLists.txt index 2d3d07da..06620f6e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,7 +40,8 @@ ecm_setup_version(${PROJECT_VERSION} ) find_package(Qt6 ${QT_MIN_VERSION} COMPONENTS Core Widgets Concurrent Sql Network CONFIG REQUIRED) -find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS CoreAddons Config XmlGui Archive I18n SyntaxHighlighting BreezeIcons) +find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS CoreAddons Config XmlGui Archive I18n) +find_package(KF6SyntaxHighlighting ${KF_MIN_VERSION}) find_package(Vulkan REQUIRED) find_package(glm REQUIRED) if (NOT TARGET glm::glm) diff --git a/apps/sagasu/CMakeLists.txt b/apps/sagasu/CMakeLists.txt index d0bfd968..51c3a033 100644 --- a/apps/sagasu/CMakeLists.txt +++ b/apps/sagasu/CMakeLists.txt @@ -15,6 +15,12 @@ target_sources(novus-sagasu src/filetreewindow.cpp src/main.cpp src/mainwindow.cpp) +if (TARGET KF6::SyntaxHighlighting) + target_link_libraries(novus-sagasu + PUBLIC + KF6::SyntaxHighlighting) + target_compile_definitions(novus-sagasu PUBLIC HAVE_SYNTAX_HIGHLIGHTING) +endif() target_include_directories(novus-sagasu PRIVATE include) target_link_libraries(novus-sagasu PRIVATE @@ -37,8 +43,7 @@ target_link_libraries(novus-sagasu Novus::TmbPart Novus::ShcdPart Qt6::Concurrent - Qt6::Network - KF6::SyntaxHighlighting) + Qt6::Network) install(TARGETS novus-sagasu ${KF${QT_MAJOR_VERSION}_INSTALL_TARGETS_DEFAULT_ARGS}) install(FILES dataexplorer.rc DESTINATION ${KDE_INSTALL_KXMLGUIDIR}/novus) diff --git a/apps/sagasu/src/mainwindow.cpp b/apps/sagasu/src/mainwindow.cpp index 874b43f8..0f7ef342 100644 --- a/apps/sagasu/src/mainwindow.cpp +++ b/apps/sagasu/src/mainwindow.cpp @@ -38,11 +38,13 @@ #include #include +#ifdef HAVE_SYNTAX_HIGHLIGHTING #include #include #include #include #include +#endif #include "mdlimport.h" #include "openinwidget.h" @@ -414,7 +416,7 @@ void MainWindow::refreshParts(const QString &indexPath, Hash hash, const QString } const auto debugInformationText = new QTextEdit(); debugInformationText->setText(debugInformation); - +#ifdef HAVE_SYNTAX_HIGHLIGHTING // Setup highlighting KSyntaxHighlighting::Repository repository; @@ -425,7 +427,7 @@ void MainWindow::refreshParts(const QString &indexPath, Hash hash, const QString const auto def = repository.definitionForName(QStringLiteral("Rust")); highlighter->setDefinition(def); - +#endif m_partHolder->addTab(debugInformationText, i18nc("@title:tab", "Debug")); } diff --git a/parts/luab/CMakeLists.txt b/parts/luab/CMakeLists.txt index 31f502e8..f72e88c4 100644 --- a/parts/luab/CMakeLists.txt +++ b/parts/luab/CMakeLists.txt @@ -9,8 +9,13 @@ target_link_libraries(luabpart KF6::I18n Physis::Physis Qt6::Core - Qt6::Widgets - KF6::SyntaxHighlighting) + Qt6::Widgets) +if (TARGET KF6::SyntaxHighlighting) + target_link_libraries(luabpart + PUBLIC + KF6::SyntaxHighlighting) + target_compile_definitions(luabpart PUBLIC HAVE_SYNTAX_HIGHLIGHTING) +endif() target_include_directories(luabpart PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_compile_definitions(luabpart PRIVATE TRANSLATION_DOMAIN="novus") if (NOT BUILD_FLATPAK) diff --git a/parts/luab/luabpart.cpp b/parts/luab/luabpart.cpp index 191a8cc5..8d413511 100644 --- a/parts/luab/luabpart.cpp +++ b/parts/luab/luabpart.cpp @@ -15,10 +15,13 @@ #include "scriptprocessor.h" +#ifdef HAVE_SYNTAX_HIGHLIGHTING +#include #include #include #include #include +#endif LuabPart::LuabPart(QWidget *parent) : QWidget(parent) @@ -54,6 +57,7 @@ void LuabPart::load(physis_Buffer buffer) ScriptProcessor processor; m_codeEdit->setText(processor.process(QString::fromUtf8(luaDecProcess.readAllStandardOutput()))); +#ifdef HAVE_SYNTAX_HIGHLIGHTING // Setup highlighting KSyntaxHighlighting::Repository repository; @@ -64,6 +68,7 @@ void LuabPart::load(physis_Buffer buffer) const auto def = repository.definitionForName(QStringLiteral("Lua")); highlighter->setDefinition(def); +#endif } } diff --git a/parts/shcd/CMakeLists.txt b/parts/shcd/CMakeLists.txt index dcaf5f2d..2d2e6594 100644 --- a/parts/shcd/CMakeLists.txt +++ b/parts/shcd/CMakeLists.txt @@ -16,8 +16,13 @@ target_link_libraries(shcdpart spirv-cross-core spirv-cross-glsl Qt6::Core - Qt6::Widgets - KF6::SyntaxHighlighting) + Qt6::Widgets) +if (TARGET KF6::SyntaxHighlighting) + target_link_libraries(shcdpart + PUBLIC + KF6::SyntaxHighlighting) + target_compile_definitions(shcdpart PUBLIC HAVE_SYNTAX_HIGHLIGHTING) +endif() target_include_directories(shcdpart PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_compile_options(shcdpart PRIVATE -fexceptions) # Needed for SPIRV-Cross target_compile_definitions(shcdpart PRIVATE TRANSLATION_DOMAIN="novus") diff --git a/parts/shcd/shcdpart.cpp b/parts/shcd/shcdpart.cpp index b5eff6a7..1d91ead5 100644 --- a/parts/shcd/shcdpart.cpp +++ b/parts/shcd/shcdpart.cpp @@ -11,10 +11,12 @@ #include #include +#ifdef HAVE_SYNTAX_HIGHLIGHTING #include #include #include #include +#endif SHCDPart::SHCDPart(QWidget *parent) : QWidget(parent) @@ -57,6 +59,7 @@ void SHCDPart::load(Platform platform, physis_Buffer buffer) m_shaderTextEdit->setText(QLatin1String(glsl.compile().c_str())); +#ifdef HAVE_SYNTAX_HIGHLIGHTING // Setup highlighting auto highlighter = new KSyntaxHighlighting::SyntaxHighlighter(m_shaderTextEdit->document()); highlighter->setTheme((m_shaderTextEdit->palette().color(QPalette::Base).lightness() < 128) @@ -65,6 +68,7 @@ void SHCDPart::load(Platform platform, physis_Buffer buffer) const auto def = repository.definitionForName(QStringLiteral("GLSL")); highlighter->setDefinition(def); +#endif } catch (const dxvk::DxvkError &exception) { qWarning() << "Failed to load shader:" << exception.message(); } diff --git a/parts/shcd/shcdpart.h b/parts/shcd/shcdpart.h index ae0deebd..be692554 100644 --- a/parts/shcd/shcdpart.h +++ b/parts/shcd/shcdpart.h @@ -3,7 +3,9 @@ #pragma once +#ifdef HAVE_SYNTAX_HIGHLIGHTING #include +#endif #include #include #include @@ -26,5 +28,7 @@ class SHCDPart : public QWidget physis_SHCD m_shcd; QTextEdit *m_shaderTextEdit = nullptr; +#ifdef HAVE_SYNTAX_HIGHLIGHTING KSyntaxHighlighting::Repository repository; +#endif }; diff --git a/parts/shpk/CMakeLists.txt b/parts/shpk/CMakeLists.txt index 54ee005f..623e894d 100644 --- a/parts/shpk/CMakeLists.txt +++ b/parts/shpk/CMakeLists.txt @@ -16,8 +16,13 @@ target_link_libraries(shpkpart spirv-cross-core spirv-cross-glsl Qt6::Core - Qt6::Widgets - KF6::SyntaxHighlighting) + Qt6::Widgets) +if (TARGET KF6::SyntaxHighlighting) + target_link_libraries(shpkpart + PUBLIC + KF6::SyntaxHighlighting) + target_compile_definitions(shpkpart PUBLIC HAVE_SYNTAX_HIGHLIGHTING) +endif() target_include_directories(shpkpart PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_compile_options(shpkpart PRIVATE -fexceptions) # Needed for SPIRV-Cross target_compile_definitions(shpkpart PRIVATE TRANSLATION_DOMAIN="novus") diff --git a/parts/shpk/shpkpart.cpp b/parts/shpk/shpkpart.cpp index ebee2a34..c1466fd3 100644 --- a/parts/shpk/shpkpart.cpp +++ b/parts/shpk/shpkpart.cpp @@ -14,10 +14,12 @@ #include #include +#ifdef HAVE_SYNTAX_HIGHLIGHTING #include #include #include #include +#endif SHPKPart::SHPKPart(QWidget *parent) : QWidget(parent) @@ -313,6 +315,7 @@ void SHPKPart::loadShader(const QModelIndex &index) m_shadersTextEdit->setText(QLatin1String(glsl.compile().c_str())); +#ifdef HAVE_SYNTAX_HIGHLIGHTING // Setup highlighting auto highlighter = new KSyntaxHighlighting::SyntaxHighlighter(m_shadersTextEdit->document()); highlighter->setTheme((m_shadersTextEdit->palette().color(QPalette::Base).lightness() < 128) @@ -321,6 +324,7 @@ void SHPKPart::loadShader(const QModelIndex &index) const auto def = m_repository.definitionForName(QStringLiteral("GLSL")); highlighter->setDefinition(def); +#endif } catch (const dxvk::DxvkError &exception) { qWarning() << "Failed to load shader:" << exception.message(); } diff --git a/parts/shpk/shpkpart.h b/parts/shpk/shpkpart.h index e565a78d..e83d8bf9 100644 --- a/parts/shpk/shpkpart.h +++ b/parts/shpk/shpkpart.h @@ -3,7 +3,9 @@ #pragma once +#ifdef HAVE_SYNTAX_HIGHLIGHTING #include +#endif #include #include #include @@ -78,5 +80,7 @@ class SHPKPart : public QWidget physis_SHPK m_shpk; +#ifdef HAVE_SYNTAX_HIGHLIGHTING KSyntaxHighlighting::Repository m_repository; +#endif }; From 71ffb65619f428c930eb3787fa26c7bd97ea15f7 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Mon, 18 May 2026 19:43:27 -0400 Subject: [PATCH 7/8] Clean up unused CI matrix --- .github/workflows/main.yml | 120 +++++++++++++++---------------------- 1 file changed, 47 insertions(+), 73 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1bad34cc..1ee490cb 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -24,25 +24,11 @@ jobs: build: name: "Build" - runs-on: ${{ matrix.os }} - + runs-on: windows-latest + # Skip running on PR events that come from the same repository, it will just duplicate the branch action if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name - strategy: - fail-fast: false - matrix: - os: [windows-latest] - build_type: [Release] - c_compiler: [cl] - include: - - os: windows-latest - c_compiler: cl - cpp_compiler: cl - exclude: - - os: windows-latest - c_compiler: gcc - steps: - uses: actions/checkout@v6 with: @@ -76,7 +62,7 @@ jobs: key: ${{ runner.os }}-${{ env.QT_VERSION }}-${{ env.KF_VERSION }}-prefix - name: Setup Windows dependencies - if: (runner.os == 'Windows') && (steps.cache-prefix-restore.outputs.cache-hit != 'true') + if: steps.cache-prefix-restore.outputs.cache-hit != 'true' shell: powershell run: | $ProgressPreference = 'SilentlyContinue' @@ -96,161 +82,154 @@ jobs: pip install lxml - name: Build zlib - if: (runner.os == 'Windows') && (steps.cache-prefix-restore.outputs.cache-hit != 'true') + if: 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} - cmake --build ${{ steps.strings.outputs.build-output-dir }}-zlib --config ${{ matrix.build_type }} --target install + cmake -B ${{ steps.strings.outputs.build-output-dir }}-zlib -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_BUILD_TYPE=Release -S zlib -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} ${{ env.COMMON_CMAKE_OPTIONS }} + cmake --build ${{ steps.strings.outputs.build-output-dir }}-zlib --config Release --target install - name: Build Extra CMake Modules if: steps.cache-prefix-restore.outputs.cache-hit != 'true' run: | git clone --depth 1 --branch ${{ env.KF_VERSION }} 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} - cmake --install ${{ steps.strings.outputs.build-output-dir }}-ECM --config ${{ matrix.build_type }} + cmake -B ${{ steps.strings.outputs.build-output-dir }}-ECM -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_BUILD_TYPE=Release -S extra-cmake-modules -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} ${{ env.COMMON_CMAKE_OPTIONS }} + cmake --install ${{ steps.strings.outputs.build-output-dir }}-ECM --config Release - name: Configure KI18n if: steps.cache-prefix-restore.outputs.cache-hit != 'true' run: | git clone --depth 1 --branch ${{ env.KF_VERSION }} 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} + cmake -B ${{ steps.strings.outputs.build-output-dir }}-ki18n -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_BUILD_TYPE=Release -S ki18n -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} ${{ env.COMMON_CMAKE_OPTIONS }} - 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 + cmake --build ${{ steps.strings.outputs.build-output-dir }}-ki18n --config Release --target install - name: Build KCoreAddons if: steps.cache-prefix-restore.outputs.cache-hit != 'true' run: | git clone --depth 1 --branch ${{ env.KF_VERSION }} 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} - cmake --build ${{ steps.strings.outputs.build-output-dir }}-kca --config ${{ matrix.build_type }} --target install + cmake -B ${{ steps.strings.outputs.build-output-dir }}-kca -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_BUILD_TYPE=Release -S kcoreaddons -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} ${{ env.COMMON_CMAKE_OPTIONS }} + cmake --build ${{ steps.strings.outputs.build-output-dir }}-kca --config Release --target install - name: Build KConfig if: steps.cache-prefix-restore.outputs.cache-hit != 'true' run: | git clone --depth 1 --branch ${{ env.KF_VERSION }} 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} - cmake --build ${{ steps.strings.outputs.build-output-dir }}-kconfig --config ${{ matrix.build_type }} --target install + cmake -B ${{ steps.strings.outputs.build-output-dir }}-kconfig -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_BUILD_TYPE=Release -S kconfig -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} ${{ env.COMMON_CMAKE_OPTIONS }} + cmake --build ${{ steps.strings.outputs.build-output-dir }}-kconfig --config Release --target install - name: Build KArchive if: steps.cache-prefix-restore.outputs.cache-hit != 'true' run: | git clone --depth 1 --branch ${{ env.KF_VERSION }} 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} -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 + cmake -B ${{ steps.strings.outputs.build-output-dir }}-karchive -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_BUILD_TYPE=Release -S karchive -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} ${{ env.COMMON_CMAKE_OPTIONS }} -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 Release --target install - name: Build KItemViews if: steps.cache-prefix-restore.outputs.cache-hit != 'true' run: | git clone --depth 1 --branch ${{ env.KF_VERSION }} 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} - cmake --build ${{ steps.strings.outputs.build-output-dir }}-kitemviews --config ${{ matrix.build_type }} --target install + cmake -B ${{ steps.strings.outputs.build-output-dir }}-kitemviews -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_BUILD_TYPE=Release -S kitemviews -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} ${{ env.COMMON_CMAKE_OPTIONS }} + cmake --build ${{ steps.strings.outputs.build-output-dir }}-kitemviews --config Release --target install - name: Build KCodecs if: steps.cache-prefix-restore.outputs.cache-hit != 'true' run: | git clone --depth 1 --branch ${{ env.KF_VERSION }} 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} - cmake --build ${{ steps.strings.outputs.build-output-dir }}-kcodecs --config ${{ matrix.build_type }} --target install + cmake -B ${{ steps.strings.outputs.build-output-dir }}-kcodecs -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_BUILD_TYPE=Release -S kcodecs -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} ${{ env.COMMON_CMAKE_OPTIONS }} + cmake --build ${{ steps.strings.outputs.build-output-dir }}-kcodecs --config Release --target install - name: Build KGuiAddons if: steps.cache-prefix-restore.outputs.cache-hit != 'true' run: | git clone --depth 1 --branch ${{ env.KF_VERSION }} 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} -DWITH_WAYLAND=OFF -DWITH_X11=OFF - cmake --build ${{ steps.strings.outputs.build-output-dir }}-kguiaddons --config ${{ matrix.build_type }} --target install + cmake -B ${{ steps.strings.outputs.build-output-dir }}-kguiaddons -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_BUILD_TYPE=Release -S kguiaddons -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} ${{ env.COMMON_CMAKE_OPTIONS }} -DWITH_WAYLAND=OFF -DWITH_X11=OFF + cmake --build ${{ steps.strings.outputs.build-output-dir }}-kguiaddons --config Release --target install - name: Build KWidgetsAddons if: steps.cache-prefix-restore.outputs.cache-hit != 'true' run: | git clone --depth 1 --branch ${{ env.KF_VERSION }} 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} - cmake --build ${{ steps.strings.outputs.build-output-dir }}-kwidgetsaddons --config ${{ matrix.build_type }} --target install + cmake -B ${{ steps.strings.outputs.build-output-dir }}-kwidgetsaddons -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_BUILD_TYPE=Release -S kwidgetsaddons -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} ${{ env.COMMON_CMAKE_OPTIONS }} + cmake --build ${{ steps.strings.outputs.build-output-dir }}-kwidgetsaddons --config Release --target install - name: Configure KColorScheme if: steps.cache-prefix-restore.outputs.cache-hit != 'true' run: | git clone --depth 1 --branch ${{ env.KF_VERSION }} 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} + cmake -B ${{ steps.strings.outputs.build-output-dir }}-kcolorscheme -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_BUILD_TYPE=Release -S kcolorscheme -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} ${{ env.COMMON_CMAKE_OPTIONS }} - 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 + cmake --build ${{ steps.strings.outputs.build-output-dir }}-kcolorscheme --config Release --target install - name: Build KConfigWidgets if: steps.cache-prefix-restore.outputs.cache-hit != 'true' run: | git clone --depth 1 --branch ${{ env.KF_VERSION }} 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} - cmake --build ${{ steps.strings.outputs.build-output-dir }}-kconfigwidgets --config ${{ matrix.build_type }} --target install + cmake -B ${{ steps.strings.outputs.build-output-dir }}-kconfigwidgets -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_BUILD_TYPE=Release -S kconfigwidgets -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} ${{ env.COMMON_CMAKE_OPTIONS }} + cmake --build ${{ steps.strings.outputs.build-output-dir }}-kconfigwidgets --config Release --target install - name: Build Breeze Icons if: steps.cache-prefix-restore.outputs.cache-hit != 'true' continue-on-error: true run: | git clone --depth 1 --branch ${{ env.KF_VERSION }} 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 # To workaround some bug + cmake -B ${{ steps.strings.outputs.build-output-dir }}-breeze-icons -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_BUILD_TYPE=Release -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 Release --target install + cmake --build ${{ steps.strings.outputs.build-output-dir }}-breeze-icons --config Release --target install # To workaround some bug - name: Build KIconThemes if: steps.cache-prefix-restore.outputs.cache-hit != 'true' run: | git clone --depth 1 --branch ${{ env.KF_VERSION }} 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} - cmake --build ${{ steps.strings.outputs.build-output-dir }}-kiconthemes --config ${{ matrix.build_type }} --target install + cmake -B ${{ steps.strings.outputs.build-output-dir }}-kiconthemes -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_BUILD_TYPE=Release -S kiconthemes -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} ${{ env.COMMON_CMAKE_OPTIONS }} + cmake --build ${{ steps.strings.outputs.build-output-dir }}-kiconthemes --config Release --target install - name: Build Sonnet if: steps.cache-prefix-restore.outputs.cache-hit != 'true' run: | git clone --depth 1 --branch ${{ env.KF_VERSION }} 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} - cmake --build ${{ steps.strings.outputs.build-output-dir }}-sonnet --config ${{ matrix.build_type }} --target install + cmake -B ${{ steps.strings.outputs.build-output-dir }}-sonnet -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_BUILD_TYPE=Release -S sonnet -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} ${{ env.COMMON_CMAKE_OPTIONS }} + cmake --build ${{ steps.strings.outputs.build-output-dir }}-sonnet --config Release --target install - name: Build KCompletion if: steps.cache-prefix-restore.outputs.cache-hit != 'true' run: | git clone --depth 1 --branch ${{ env.KF_VERSION }} 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} - cmake --build ${{ steps.strings.outputs.build-output-dir }}-kcompletion --config ${{ matrix.build_type }} --target install + cmake -B ${{ steps.strings.outputs.build-output-dir }}-kcompletion -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_BUILD_TYPE=Release -S kcompletion -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} ${{ env.COMMON_CMAKE_OPTIONS }} + cmake --build ${{ steps.strings.outputs.build-output-dir }}-kcompletion --config Release --target install - name: Build KTextWidgets if: steps.cache-prefix-restore.outputs.cache-hit != 'true' run: | git clone --depth 1 --branch ${{ env.KF_VERSION }} 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} -DWITH_TEXT_TO_SPEECH=OFF - cmake --build ${{ steps.strings.outputs.build-output-dir }}-ktextwidgets --config ${{ matrix.build_type }} --target install + cmake -B ${{ steps.strings.outputs.build-output-dir }}-ktextwidgets -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_BUILD_TYPE=Release -S ktextwidgets -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} ${{ env.COMMON_CMAKE_OPTIONS }} -DWITH_TEXT_TO_SPEECH=OFF + cmake --build ${{ steps.strings.outputs.build-output-dir }}-ktextwidgets --config Release --target install - name: Build KXmlGui if: steps.cache-prefix-restore.outputs.cache-hit != 'true' run: | git clone --depth 1 --branch ${{ env.KF_VERSION }} 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 }} ${{ env.COMMON_CMAKE_OPTIONS }} -DFORCE_DISABLE_KGLOBALACCEL=ON - cmake --build ${{ steps.strings.outputs.build-output-dir }}-kxmlgui --config ${{ matrix.build_type }} --target install + cmake -B ${{ steps.strings.outputs.build-output-dir }}-kxmlgui -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_BUILD_TYPE=Release -S kxmlgui -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} ${{ env.COMMON_CMAKE_OPTIONS }} -DFORCE_DISABLE_KGLOBALACCEL=ON + cmake --build ${{ steps.strings.outputs.build-output-dir }}-kxmlgui --config Release --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 + cmake -B ${{ steps.strings.outputs.build-output-dir }}-glm -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_BUILD_TYPE=Release -S glm -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DGLM_BUILD_TESTS=OFF + cmake --build ${{ steps.strings.outputs.build-output-dir }}-glm --config Release --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 + cmake -B ${{ steps.strings.outputs.build-output-dir }}-nlohmann -DCMAKE_PREFIX_PATH=${{ steps.strings.outputs.prefix-dir }} -DCMAKE_BUILD_TYPE=Release -S json -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.prefix-dir }} -DJSON_BuildTests=OFF + cmake --build ${{ steps.strings.outputs.build-output-dir }}-nlohmann --config Release --target install - name: Build stb if: steps.cache-prefix-restore.outputs.cache-hit != 'true' @@ -269,18 +248,15 @@ jobs: - 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_BUILD_TYPE=Release -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 + run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config Release --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 @@ -299,14 +275,12 @@ jobs: Copy-Item -Path "../Qt/${{ env.QT_VERSION }}/msvc2022_64/plugins/sqldrivers/qsqlite.dll" -Destination "${{ steps.strings.outputs.build-output-dir }}/bin/plugins/sqldrivers" - 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 - name: Archive artifacts uses: actions/upload-artifact@v7 - if: runner.os == 'Windows' with: name: ${{ runner.os }}-package path: ${{ steps.strings.outputs.build-output-dir }}/bin From 48f710607b04cb06196315edbdf0200b46e97d57 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Mon, 18 May 2026 20:22:38 -0400 Subject: [PATCH 8/8] Add missing KF6BreezeIcons find_package call --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 06620f6e..7b523474 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,7 +40,7 @@ ecm_setup_version(${PROJECT_VERSION} ) find_package(Qt6 ${QT_MIN_VERSION} COMPONENTS Core Widgets Concurrent Sql Network CONFIG REQUIRED) -find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS CoreAddons Config XmlGui Archive I18n) +find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS CoreAddons Config XmlGui Archive I18n BreezeIcons) find_package(KF6SyntaxHighlighting ${KF_MIN_VERSION}) find_package(Vulkan REQUIRED) find_package(glm REQUIRED)