]> Nutra Git (v2) - gamesguru/feather.git/commitdiff
build: wayland support
authortobtoht <tob@featherwallet.org>
Sun, 3 Nov 2024 16:42:34 +0000 (17:42 +0100)
committertobtoht <tob@featherwallet.org>
Sun, 3 Nov 2024 16:42:34 +0000 (17:42 +0100)
18 files changed:
contrib/depends/packages/libffi.mk [new file with mode: 0644]
contrib/depends/packages/libxkbcommon.mk
contrib/depends/packages/native_expat.mk [new file with mode: 0644]
contrib/depends/packages/native_libffi.mk [new file with mode: 0644]
contrib/depends/packages/native_qt.mk
contrib/depends/packages/native_wayland.mk [new file with mode: 0644]
contrib/depends/packages/packages.mk
contrib/depends/packages/qt.mk
contrib/depends/packages/wayland.mk [new file with mode: 0644]
contrib/depends/patches/native_qt/root_CMakeLists.txt
contrib/depends/patches/native_wayland/toolchain.txt [new file with mode: 0644]
contrib/depends/patches/qt/root_CMakeLists.txt
contrib/depends/patches/wayland/toolchain.txt [new file with mode: 0644]
contrib/flatpak/make_flatpak.sh
contrib/guix/guix-build
contrib/guix/pack.scm
src/CMakeLists.txt
src/main.cpp

diff --git a/contrib/depends/packages/libffi.mk b/contrib/depends/packages/libffi.mk
new file mode 100644 (file)
index 0000000..55707b6
--- /dev/null
@@ -0,0 +1,27 @@
+package := libffi
+$(package)_version := 3.4.2
+$(package)_download_path := https://github.com/libffi/$(package)/releases/download/v$($(package)_version)
+$(package)_file_name := libffi-$($(package)_version).tar.gz
+$(package)_sha256_hash := 540fb721619a6aba3bdeef7d940d8e9e0e6d2c193595bc243241b77ff9e93620
+
+define $(package)_set_vars
+  $(package)_config_opts := --enable-option-checking --disable-dependency-tracking
+  $(package)_config_opts += --disable-shared --enable-static --disable-docs
+  $(package)_config_opts += --disable-multi-os-directory
+endef
+
+define $(package)_config_cmds
+  $($(package)_autoconf)
+endef
+
+define $(package)_build_cmds
+  $(MAKE)
+endef
+
+define $(package)_stage_cmds
+  $(MAKE) DESTDIR=$($(package)_staging_dir) install
+endef
+
+define $(package)_postprocess_cmds
+  rm -rf share
+endef
index b1cb3e88e1f5d9c13a33ea0c1e21c8890014cdad..e3674516403d4f20b6497cb0d9dc0caccd8d939c 100644 (file)
@@ -19,7 +19,7 @@ define $(package)_preprocess_cmds
 endef
 
 define $(package)_config_cmds
-  meson setup --cross-file toolchain.txt build
+  meson setup --cross-file toolchain.txt build -Dxkb-config-root=/usr/share/X11/xkb -Dxkb-config-extra-path=/app/share/X11/xkb
 endef
 
 define $(package)_build_cmds
diff --git a/contrib/depends/packages/native_expat.mk b/contrib/depends/packages/native_expat.mk
new file mode 100644 (file)
index 0000000..e0fb5a8
--- /dev/null
@@ -0,0 +1,30 @@
+package=native_expat
+$(package)_version=2.6.3
+$(package)_download_path=https://github.com/libexpat/libexpat/releases/download/R_$(subst .,_,$($(package)_version))/
+$(package)_file_name=expat-$($(package)_version).tar.gz
+$(package)_sha256_hash=17aa6cfc5c4c219c09287abfc10bc13f0c06f30bb654b28bfe6f567ca646eb79
+$(package)_build_subdir=build
+
+define $(package)_set_vars
+  $(package)_config_opts := -DEXPAT_BUILD_TOOLS=OFF
+  $(package)_config_opts += -DEXPAT_BUILD_EXAMPLES=OFF
+  $(package)_config_opts += -DEXPAT_BUILD_TESTS=OFF
+  $(package)_config_opts += -DBUILD_SHARED_LIBS=OFF
+  $(package)_config_opts += -DCMAKE_POSITION_INDEPENDENT_CODE=ON
+endef
+
+define $(package)_config_cmds
+  $($(package)_cmake) -S .. -B .
+endef
+
+define $(package)_build_cmds
+  $(MAKE)
+endef
+
+define $(package)_stage_cmds
+  $(MAKE) DESTDIR=$($(package)_staging_dir) install
+endef
+
+define $(package)_postprocess_cmds
+  rm -rf share lib/cmake
+endef
diff --git a/contrib/depends/packages/native_libffi.mk b/contrib/depends/packages/native_libffi.mk
new file mode 100644 (file)
index 0000000..7adbc09
--- /dev/null
@@ -0,0 +1,27 @@
+package := native_libffi
+$(package)_version := 3.4.2
+$(package)_download_path := https://github.com/libffi/$(package)/releases/download/v$($(package)_version)
+$(package)_file_name := libffi-$($(package)_version).tar.gz
+$(package)_sha256_hash := 540fb721619a6aba3bdeef7d940d8e9e0e6d2c193595bc243241b77ff9e93620
+
+define $(package)_set_vars
+  $(package)_config_opts := --enable-option-checking --disable-dependency-tracking
+  $(package)_config_opts += --enable-shared --disable-static --disable-docs
+  $(package)_config_opts += --disable-multi-os-directory
+endef
+
+define $(package)_config_cmds
+  $($(package)_autoconf)
+endef
+
+define $(package)_build_cmds
+  $(MAKE)
+endef
+
+define $(package)_stage_cmds
+  $(MAKE) DESTDIR=$($(package)_staging_dir) install
+endef
+
+define $(package)_postprocess_cmds
+  rm -rf share
+endef
index ddda112fc411dbbfef2fd26725b00b819a04930e..ade891be0eb065bbb62b4627d129703c975f3f72 100644 (file)
@@ -4,6 +4,7 @@ $(package)_download_path=https://download.qt.io/official_releases/qt/6.8/$($(pac
 $(package)_suffix=everywhere-src-$($(package)_version).tar.xz
 $(package)_file_name=qtbase-$($(package)_suffix)
 $(package)_sha256_hash=1bad481710aa27f872de6c9f72651f89a6107f0077003d0ebfcc9fd15cba3c75
+$(package)_linux_dependencies=native_wayland
 $(package)_qt_libs=corelib network widgets gui plugins testlib
 $(package)_patches  = dont_hardcode_pwd.patch
 $(package)_patches += fast_fixed_dtoa_no_optimize.patch
@@ -24,10 +25,14 @@ $(package)_qtmultimedia_sha256_hash=28766aa562fa7aa7dfa8420defd6ece90a891a0496b8
 $(package)_qtshadertools_file_name=qtshadertools-$($(package)_suffix)
 $(package)_qtshadertools_sha256_hash=44692dc93482374bf3b39e96c881fa08275f0bf82958b68a7e3c796b76d4c4cb
 
+$(package)_qtwayland_file_name=qtwayland-$($(package)_suffix)
+$(package)_qtwayland_sha256_hash=175758591638ebf1c6fbb66ac11c7fa0eb8d4ed52e9243cc59075d06a6a2060a
+
 $(package)_extra_sources += $($(package)_qttools_file_name)
 $(package)_extra_sources += $($(package)_qtsvg_file_name)
 $(package)_extra_sources += $($(package)_qtmultimedia_file_name)
 $(package)_extra_sources += $($(package)_qtshadertools_file_name)
+$(package)_extra_sources += $($(package)_qtwayland_file_name)
 
 define $(package)_set_vars
 $(package)_config_opts_release = -release
@@ -119,7 +124,8 @@ $(call fetch_file,$(package),$($(package)_download_path),$($(package)_download_f
 $(call fetch_file,$(package),$($(package)_download_path),$($(package)_qttools_file_name),$($(package)_qttools_file_name),$($(package)_qttools_sha256_hash)) && \
 $(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtsvg_file_name),$($(package)_qtsvg_file_name),$($(package)_qtsvg_sha256_hash)) && \
 $(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtmultimedia_file_name),$($(package)_qtmultimedia_file_name),$($(package)_qtmultimedia_sha256_hash)) && \
-$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtshadertools_file_name),$($(package)_qtshadertools_file_name),$($(package)_qtshadertools_sha256_hash))
+$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtshadertools_file_name),$($(package)_qtshadertools_file_name),$($(package)_qtshadertools_sha256_hash)) && \
+$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtwayland_file_name),$($(package)_qtwayland_file_name),$($(package)_qtwayland_sha256_hash))
 endef
 
 define $(package)_extract_cmds
@@ -129,6 +135,7 @@ define $(package)_extract_cmds
   echo "$($(package)_qtsvg_sha256_hash)  $($(package)_source_dir)/$($(package)_qtsvg_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
   echo "$($(package)_qtmultimedia_sha256_hash)  $($(package)_source_dir)/$($(package)_qtmultimedia_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
   echo "$($(package)_qtshadertools_sha256_hash)  $($(package)_source_dir)/$($(package)_qtshadertools_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
+  echo "$($(package)_qtwayland_sha256_hash)  $($(package)_source_dir)/$($(package)_qtwayland_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
   $(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \
   mkdir qtbase && \
   $(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source) -C qtbase && \
@@ -139,7 +146,9 @@ define $(package)_extract_cmds
   mkdir qtmultimedia && \
   $(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtmultimedia_file_name) -C qtmultimedia && \
   mkdir qtshadertools && \
-  $(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtshadertools_file_name) -C qtshadertools
+  $(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtshadertools_file_name) -C qtshadertools && \
+  mkdir qtwayland && \
+  $(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtwayland_file_name) -C qtwayland
 endef
 
 define $(package)_preprocess_cmds
diff --git a/contrib/depends/packages/native_wayland.mk b/contrib/depends/packages/native_wayland.mk
new file mode 100644 (file)
index 0000000..6419ca8
--- /dev/null
@@ -0,0 +1,18 @@
+package := native_wayland
+$(package)_version := 1.23.1
+$(package)_download_path := https://gitlab.freedesktop.org/wayland/wayland/-/releases/$($(package)_version)/downloads/
+$(package)_file_name := wayland-$($(package)_version).tar.xz
+$(package)_sha256_hash := 864fb2a8399e2d0ec39d56e9d9b753c093775beadc6022ce81f441929a81e5ed
+$(package)_dependencies := native_expat native_libffi
+
+define $(package)_config_cmds
+  meson setup build -Dprefix="$(build_prefix)" -Ddtd_validation=false -Ddocumentation=false -Dtests=false
+endef
+
+define $(package)_build_cmds
+  ninja -C build
+endef
+
+define $(package)_stage_cmds
+  DESTDIR=$($(package)_staging_dir) ninja -C build install
+endef
index 431a98cc4a8bc01d77be96af817d7a316bf4ec51..856c1a5c63c95bcb8efec0108554b086591e2969 100644 (file)
@@ -1,8 +1,8 @@
 packages := boost openssl unbound qrencode libsodium polyseed hidapi abseil protobuf libusb zlib libgpg-error libgcrypt expat libzip zxing-cpp
 native_packages := native_qt native_abseil native_protobuf
 
-linux_packages := eudev libfuse libsquashfuse zstd appimage_runtime
-linux_native_packages =
+linux_packages := eudev libfuse libsquashfuse zstd appimage_runtime wayland libffi
+linux_native_packages := native_expat native_libffi native_wayland
 
 x86_64_linux_packages := flatstart
 
index f2cb0a3122926bcbe722546495f8df38a9233f32..72d7726b71c95c84f90656792de2cb55a76802e7 100644 (file)
@@ -6,7 +6,7 @@ $(package)_file_name=qtbase-$($(package)_suffix)
 $(package)_sha256_hash=1bad481710aa27f872de6c9f72651f89a6107f0077003d0ebfcc9fd15cba3c75
 $(package)_darwin_dependencies=openssl native_qt
 $(package)_mingw32_dependencies=openssl native_qt
-$(package)_linux_dependencies=openssl native_qt freetype fontconfig libxcb libxkbcommon libxcb_util libxcb_util_render libxcb_util_keysyms libxcb_util_image libxcb_util_wm libxcb_util_cursor dbus
+$(package)_linux_dependencies=openssl native_qt freetype fontconfig libxcb libxkbcommon libxcb_util libxcb_util_render libxcb_util_keysyms libxcb_util_image libxcb_util_wm libxcb_util_cursor dbus wayland native_wayland
 $(package)_patches += fast_fixed_dtoa_no_optimize.patch
 $(package)_patches += guix_cross_lib_path.patch
 $(package)_patches += qtbase-moc-ignore-gcc-macro.patch
@@ -41,11 +41,15 @@ $(package)_qtmultimedia_sha256_hash=28766aa562fa7aa7dfa8420defd6ece90a891a0496b8
 $(package)_qtshadertools_file_name=qtshadertools-$($(package)_suffix)
 $(package)_qtshadertools_sha256_hash=44692dc93482374bf3b39e96c881fa08275f0bf82958b68a7e3c796b76d4c4cb
 
+$(package)_qtwayland_file_name=qtwayland-$($(package)_suffix)
+$(package)_qtwayland_sha256_hash=175758591638ebf1c6fbb66ac11c7fa0eb8d4ed52e9243cc59075d06a6a2060a
+
 $(package)_extra_sources += $($(package)_qttools_file_name)
 $(package)_extra_sources += $($(package)_qtsvg_file_name)
 $(package)_extra_sources += $($(package)_qtwebsockets_file_name)
 $(package)_extra_sources += $($(package)_qtmultimedia_file_name)
 $(package)_extra_sources += $($(package)_qtshadertools_file_name)
+$(package)_extra_sources += $($(package)_qtwayland_file_name)
 
 define $(package)_set_vars
 $(package)_config_opts += -DQT_HOST_PATH=$(build_prefix)/qt-host
@@ -133,6 +137,15 @@ $(package)_config_opts_linux += -DQT_FEATURE_vulkan=OFF
 $(package)_config_opts_linux += -DQT_FEATURE_backtrace=OFF
 $(package)_config_opts_linux += -DQT_FEATURE_dbus=ON
 $(package)_config_opts_linux += -DQT_FEATURE_dbus_linked=ON
+$(package)_config_opts_linux += -DQT_FEATURE_wayland_client=ON
+$(package)_config_opts_linux += -DQT_FEATURE_wayland_server=OFF
+$(package)_config_opts_linux += -DQT_FEATURE_wayland_drm_egl_server_buffer=OFF
+$(package)_config_opts_linux += -DQT_FEATURE_wayland-shm-emulation-server-buffer=OFF
+$(package)_config_opts_linux += -DQT_FEATURE_wayland-client-fullscreen-shell-v1=OFF
+$(package)_config_opts_linux += -DQT_FEATURE_wayland-client-ivi-shell=OFF
+$(package)_config_opts_linux += -DQT_FEATURE_wayland-client-wl-shell=OFF
+$(package)_config_opts_linux += -DQT_FEATURE_wayland-client-xdg-shell-v5=OFF
+$(package)_config_opts_linux += -DQT_FEATURE_wayland-client-xdg-shell-v6=OFF
 $(package)_config_opts_linux += -DBUILD_WITH_PCH=OFF
 
 $(package)_config_opts_mingw32 += -DQT_QMAKE_TARGET_MKSPEC=win32-g++
@@ -168,7 +181,8 @@ $(call fetch_file,$(package),$($(package)_download_path),$($(package)_qttools_fi
 $(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtsvg_file_name),$($(package)_qtsvg_file_name),$($(package)_qtsvg_sha256_hash)) && \
 $(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtwebsockets_file_name),$($(package)_qtwebsockets_file_name),$($(package)_qtwebsockets_sha256_hash)) && \
 $(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtmultimedia_file_name),$($(package)_qtmultimedia_file_name),$($(package)_qtmultimedia_sha256_hash)) && \
-$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtshadertools_file_name),$($(package)_qtshadertools_file_name),$($(package)_qtshadertools_sha256_hash))
+$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtshadertools_file_name),$($(package)_qtshadertools_file_name),$($(package)_qtshadertools_sha256_hash)) && \
+$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtwayland_file_name),$($(package)_qtwayland_file_name),$($(package)_qtwayland_sha256_hash))
 endef
 
 define $(package)_extract_cmds
@@ -179,6 +193,7 @@ define $(package)_extract_cmds
   echo "$($(package)_qtwebsockets_sha256_hash)  $($(package)_source_dir)/$($(package)_qtwebsockets_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
   echo "$($(package)_qtmultimedia_sha256_hash)  $($(package)_source_dir)/$($(package)_qtmultimedia_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
   echo "$($(package)_qtshadertools_sha256_hash)  $($(package)_source_dir)/$($(package)_qtshadertools_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
+  echo "$($(package)_qtwayland_sha256_hash)  $($(package)_source_dir)/$($(package)_qtwayland_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
   $(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \
   mkdir qtbase && \
   $(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source) -C qtbase && \
@@ -191,7 +206,9 @@ define $(package)_extract_cmds
   mkdir qtmultimedia && \
   $(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtmultimedia_file_name) -C qtmultimedia && \
   mkdir qtshadertools && \
-  $(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtshadertools_file_name) -C qtshadertools
+  $(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtshadertools_file_name) -C qtshadertools && \
+  mkdir qtwayland && \
+  $(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtwayland_file_name) -C qtwayland
 endef
 
 define $(package)_preprocess_cmds
diff --git a/contrib/depends/packages/wayland.mk b/contrib/depends/packages/wayland.mk
new file mode 100644 (file)
index 0000000..5d004f1
--- /dev/null
@@ -0,0 +1,31 @@
+package := wayland
+$(package)_version := 1.23.1
+$(package)_download_path := https://gitlab.freedesktop.org/wayland/wayland/-/releases/$($(package)_version)/downloads/
+$(package)_file_name := wayland-$($(package)_version).tar.xz
+$(package)_sha256_hash := 864fb2a8399e2d0ec39d56e9d9b753c093775beadc6022ce81f441929a81e5ed
+$(package)_dependencies=native_wayland libffi expat
+$(package)_patches = toolchain.txt
+
+define $(package)_preprocess_cmds
+  cp $($(package)_patch_dir)/toolchain.txt toolchain.txt && \
+  sed -i -e 's|@host_prefix@|$(host_prefix)|' \
+         -e 's|@build_prefix@|$(build_prefix)|' \
+         -e 's|@cc@|$($(package)_cc)|' \
+         -e 's|@cxx@|$($(package)_cxx)|' \
+         -e 's|@ar@|$($(package)_ar)|' \
+         -e 's|@strip@|$(host_STRIP)|' \
+         -e 's|@arch@|$(host_arch)|' \
+         toolchain.txt
+endef
+
+define $(package)_config_cmds
+  PKG_CONFIG_LIBDIR="$(host_prefix)/lib/pkgconfig:$(build_prefix)/lib/pkgconfig" PKG_CONFIG_PATH="$(build_prefix)/lib/pkgconfig" meson setup --cross-file toolchain.txt build -Ddtd_validation=false -Ddocumentation=false -Dprefer_static=true -Ddefault_library=static -Dtests=false -Dscanner=false
+endef
+
+define $(package)_build_cmds
+  ninja -C build
+endef
+
+define $(package)_stage_cmds
+  DESTDIR=$($(package)_staging_dir) ninja -C build install
+endef
index 2c2d731a595a15a153688cea1e186647065b391b..2f0798675cdcb2c02ed799184de3d99d46f1cb8c 100644 (file)
@@ -32,7 +32,7 @@ list(APPEND CMAKE_MODULE_PATH "${__qt6_qtbase_src_path}/cmake/3rdparty/kwin")
 set(QT_NO_CREATE_TARGETS TRUE)
 set(QT_SUPERBUILD TRUE)
 
-set(QT_BUILD_SUBMODULES "qtbase;qtsvg;qtshadertools;qtmultimedia" CACHE STRING "Submodules to build")
+set(QT_BUILD_SUBMODULES "qtbase;qtsvg;qtshadertools;qtmultimedia;qtwayland" CACHE STRING "Submodules to build")
 
 foreach(module IN LISTS QT_BUILD_SUBMODULES)
     message(NOTICE "Configuring '${module}'")
diff --git a/contrib/depends/patches/native_wayland/toolchain.txt b/contrib/depends/patches/native_wayland/toolchain.txt
new file mode 100644 (file)
index 0000000..b469171
--- /dev/null
@@ -0,0 +1,20 @@
+[binaries]
+c = '@cc@'
+cpp = '@cxx@'
+ar = '@ar@'
+strip = '@strip@'
+pkgconfig = '/home/user/.guix-profile/bin/pkg-config'
+
+[host_machine]
+system = 'linux'
+cpu_family = '@arch@'
+cpu = '@arch@'
+endian = 'little'
+
+[project options]
+tests = false
+documentation = false
+dtd_validation = false
+
+[built-in options]
+prefix = '@build_prefix@'
index a861c9b8e19cafb2518ae65dd41aa47667629ded..6b7f6a78cbd041290276077f70a02b1c60cbdbb6 100644 (file)
@@ -32,7 +32,7 @@ list(APPEND CMAKE_MODULE_PATH "${__qt6_qtbase_src_path}/cmake/3rdparty/kwin")
 set(QT_NO_CREATE_TARGETS TRUE)
 set(QT_SUPERBUILD TRUE)
 
-set(QT_BUILD_SUBMODULES "qtbase;qtsvg;qtwebsockets;qtshadertools;qtmultimedia" CACHE STRING "Submodules to build")
+set(QT_BUILD_SUBMODULES "qtbase;qtsvg;qtwebsockets;qtshadertools;qtmultimedia;qtwayland" CACHE STRING "Submodules to build")
 
 foreach(module IN LISTS QT_BUILD_SUBMODULES)
     message(NOTICE "Configuring '${module}'")
diff --git a/contrib/depends/patches/wayland/toolchain.txt b/contrib/depends/patches/wayland/toolchain.txt
new file mode 100644 (file)
index 0000000..c0a2d73
--- /dev/null
@@ -0,0 +1,15 @@
+[binaries]
+c = '@cc@'
+cpp = '@cxx@'
+ar = '@ar@'
+strip = '@strip@'
+pkgconfig = '/home/user/.guix-profile/bin/pkg-config'
+
+[host_machine]
+system = 'linux'
+cpu_family = '@arch@'
+cpu = '@arch@'
+endian = 'little'
+
+[built-in options]
+prefix = '@host_prefix@'
index 4f01c83a31881a400c2179ee25f74bf46ed68877..dbb33d7ee9432e03c0208f4393c939fe03b5fca2 100644 (file)
@@ -32,7 +32,7 @@ cd files
 cp /feather/contrib/depends/x86_64-linux-gnu/bin/startup .
 
 # Copy feather binary
-cp /feather-bin feather
+cp /outdir/feather feather
 
 # Copy metadata
 cp -r /feather/contrib/flatpak/share .
@@ -47,6 +47,7 @@ GUIX_PROFILE=$(get_store_path "profile")
 GUIX_GLIBC=$(get_store_path "glibc")
 GUIX_FONTCONFIG=$(get_store_path "fontconfig")
 GUIX_GCC=$(get_store_path "gcc")
+GUIX_KEYBOARD_CONFIG=$(get_store_path "keyboard-config")
 
 # Patch Feather binary
 patchelf --set-interpreter "/${GUIX_GLIBC}/lib/ld-linux-x86-64.so.2" feather
@@ -82,6 +83,8 @@ ln -s "/run/host/fonts-cache" share/fonts-cache
 ln -s "/${GUIX_PROFILE}/share/locale" share/locale
 ln -s "/${GUIX_PROFILE}/share/xml" share/xml
 
+ln -s "/${GUIX_KEYBOARD_CONFIG}/share/X11" share/X11
+
 # Setup profile symlink
 ln -s "/${GUIX_PROFILE}" profile
 
index 9ca564ea282f1ca57370a196084b5cd1bee08fa6..0d04e0afdc5a75e3b69d97b35be71a0454af8485 100755 (executable)
@@ -461,7 +461,7 @@ EOF
 
         case "$OPTIONS" in
             pack)
-                FEATHER_BIN="$(outdir_for_host "$host")/feather"
+                OUTDIR="$(outdir_for_host "$host")"
                 export VERSION=${VERSION}
                 time-machine pack -S /profile=. --manifest="${PWD}/contrib/guix/pack.scm"
                 PACK=$(time-machine pack --manifest="${PWD}/contrib/guix/pack.scm")
@@ -473,7 +473,7 @@ EOF
                                          --share="$PACK"=/pack \
                                          --share="$(outdir_for_host "$host")"=/output \
                                          --share="$LOGDIR_BASE"=/logdir-base \
-                                         --share="$FEATHER_BIN"=/feather-bin \
+                                         --share="$OUTDIR"=/outdir \
                                          --keep-failed \
                                          --fallback \
                                          --user="user" \
index 6341b93deb9b8fced0359accc14d228431508632..dd511e1fd2cb98fb4bff0ba5b9d6879ce0c2a4e9 100644 (file)
@@ -6,7 +6,9 @@
   (guix download)
   ((guix licenses) #:prefix license:)
   (guix packages)
-  (guix utils))
+  (guix utils)
+  (gnu packages xorg)
+  )
 
 (define utf8-locales
   (make-glibc-utf8-locales
@@ -18,4 +20,5 @@
   (append
     (list nss-certs
           fontconfig
-          utf8-locales)))
\ No newline at end of file
+          utf8-locales
+          xkeyboard-config)))
index 059d9965358c24f7c2744bc721d3fcbe98c5ce93..891b865083bbbf9756846f29cb385de906b74e05 100644 (file)
@@ -18,6 +18,10 @@ if (WITH_SCANNER)
             MultimediaWidgets)
 endif()
 
+IF (UNIX AND NOT APPLE)
+    list(APPEND QT_COMPONENTS WaylandClient)
+endif()
+
 find_package(Qt6 REQUIRED COMPONENTS ${QT_COMPONENTS})
 
 if (CHECK_UPDATES)
@@ -292,12 +296,17 @@ if (WITH_SCANNER)
     )
 endif()
 
+if(UNIX AND NOT APPLE)
+    target_link_libraries(feather PRIVATE Qt::WaylandClient)
+endif()
+
 if(STATIC AND APPLE)
     target_link_libraries(feather PRIVATE Qt6::QDarwinCameraPermissionPlugin)
 endif()
 
 if(STATIC AND UNIX AND NOT APPLE)
     target_link_libraries(feather PRIVATE Qt6::QComposePlatformInputContextPlugin)
+    target_link_libraries(feather PRIVATE Qt6::QWaylandIntegrationPlugin)
 endif()
 
 if(DEPENDS AND UNIX AND NOT APPLE)
@@ -305,6 +314,11 @@ if(DEPENDS AND UNIX AND NOT APPLE)
     find_library(LIBXAU_LIBRARY Xau REQUIRED)
     message(STATUS "libXau: libraries at ${LIBXAU_LIBRARY}")
     target_link_libraries(XCB::XCB INTERFACE ${LIBXAU_LIBRARY})
+
+    # make sure Wayland::Client links to libffi
+    find_library(LIBFFI_LIBRARY ffi REQUIRED)
+    message(STATUS "libffi: libraries at ${LIBFFI_LIBRARY}")
+    target_link_libraries(Wayland::Client INTERFACE ${LIBFFI_LIBRARY})
 endif()
 
 if(STACK_TRACE AND CMAKE_C_COMPILER_ID STREQUAL "GNU")
@@ -339,4 +353,4 @@ if(APPLE)
     file(COPY "${CMAKE_SOURCE_DIR}/src/assets/images/appicons/appicon.icns" DESTINATION "${CMAKE_SOURCE_DIR}/installed/feather.app/Contents/Resources/" )
 endif()
 
-qt_finalize_executable(feather)
\ No newline at end of file
+qt_finalize_executable(feather)
index 9a1b37c404c697e5ee169c2a7fb17fb3240cd4b0..9fbe07ef14f3bfc4e3a1f7a8e2bc2f92e9f1c577 100644 (file)
@@ -29,6 +29,9 @@
 #if defined(Q_OS_LINUX) && defined(STATIC)
 Q_IMPORT_PLUGIN(QXcbIntegrationPlugin)
 Q_IMPORT_PLUGIN(QComposePlatformInputContextPlugin) // Needed for dead keys on Linux
+Q_IMPORT_PLUGIN(QWaylandIntegrationPlugin)
+Q_IMPORT_PLUGIN(QWaylandXdgShellIntegrationPlugin)
+Q_IMPORT_PLUGIN(QWaylandBradientDecorationPlugin)
 #endif
 
 #if defined(Q_OS_MAC) && defined(STATIC)