diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3d5998a..48e86ea 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -332,6 +332,23 @@ jobs: - name: Archive artifacts uses: actions/upload-artifact@v4 + if: runner.os == 'Windows' with: name: ${{ runner.os }}-package path: ${{ steps.strings.outputs.build-output-dir }}/bin + + flatpak: + name: "Flatpak" + runs-on: ubuntu-latest + container: + image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-48 + options: --privileged + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 + with: + bundle: astra.flatpak + manifest-path: zone.xiv.novus.yml + cache-key: flatpak-builder-${{ github.sha }} diff --git a/README.md b/README.md index ae0147b..2529cd2 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Here is an exhaustive list of tooling available here: ## Usage -There are no releases at the moment, but experimental builds are currently available for Windows and Linux via [GitHub Actions](https://github.com/redstrate/Novus/actions). Note that the Linux binaries may not be completely portable. +There are no releases at the moment, but we have Windows binaries and Flatpaks built for each commit via [GitHub Actions](https://github.com/redstrate/Novus/actions). ## Building diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt index 59be721..e84cc36 100644 --- a/extern/CMakeLists.txt +++ b/extern/CMakeLists.txt @@ -21,7 +21,10 @@ add_subdirectory(tinygltf EXCLUDE_FROM_ALL) add_subdirectory(imgui EXCLUDE_FROM_ALL) add_subdirectory(dxbc EXCLUDE_FROM_ALL) -# For some reason, FFXIV uses a *32-bit* Lua compiler. We have to build it as 32-bit or else loading the bytecode fails. -add_compile_options(-m32) -add_link_options(-m32) -add_subdirectory(luadec51 EXCLUDE_FROM_ALL) +# TODO: Enable in the Flatpak, it's a bit annoying though as we would have to build it separately +if (NOT BUILD_FLATPAK) + # For some reason, FFXIV uses a *32-bit* Lua compiler. We have to build it as 32-bit or else loading the bytecode fails. + add_compile_options(-m32) + add_link_options(-m32) + add_subdirectory(luadec51 EXCLUDE_FROM_ALL) +endif() diff --git a/parts/luab/CMakeLists.txt b/parts/luab/CMakeLists.txt index 64b293b..b93e1b2 100644 --- a/parts/luab/CMakeLists.txt +++ b/parts/luab/CMakeLists.txt @@ -11,6 +11,8 @@ target_link_libraries(luabpart Qt6::Widgets) target_include_directories(luabpart PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_compile_definitions(luabpart PRIVATE TRANSLATION_DOMAIN="novus") -add_dependencies(luabpart luadec) +if (NOT BUILD_FLATPAK) + add_dependencies(luabpart luadec) +endif() -add_library(Novus::LuabPart ALIAS luabpart) \ No newline at end of file +add_library(Novus::LuabPart ALIAS luabpart) diff --git a/zone.xiv.novus.yml b/zone.xiv.novus.yml index 9f3871e..1c6a004 100644 --- a/zone.xiv.novus.yml +++ b/zone.xiv.novus.yml @@ -4,6 +4,8 @@ runtime-version: '6.8' sdk: org.kde.Sdk sdk-extensions: - org.freedesktop.Sdk.Extension.rust-stable + - org.freedesktop.Sdk.Compat.i386 + - org.freedesktop.Sdk.Extension.toolchain-i386 command: novus-launcher build-options: append-path: /usr/lib/sdk/rust-stable/bin @@ -20,6 +22,11 @@ finish-args: - --socket=wayland - --share=network - --device=dri + - --allow=multiarch +add-extensions: + org.freedesktop.Platform.Compat.i386: + directory: lib/i386-linux-gnu + version: '24.08' modules: - name: qt6-qthttpserver buildsystem: cmake-ninja @@ -34,12 +41,16 @@ modules: sha256: 2d9517c1049a5b330831f7adc1de26d8db5357fdebe616c0a29e9ae1d8900692 - name: glm buildsystem: cmake-ninja + config-opts: + - -DBUILD_TESTING=OFF sources: - type: archive url: https://github.com/g-truc/glm/archive/efec5db081e3aad807d0731e172ac597f6a39447.zip sha256: e7a1abc208278cc3f0dba59c5170d83863b3375f98136d588b8beb74825e503c - name: json buildsystem: cmake-ninja + config-opts: + - -DBUILD_TESTING=OFF sources: - type: archive url: "https://github.com/nlohmann/json/archive/refs/tags/v3.11.3.tar.gz"