diff --git a/contrib/depends/packages/libffi.mk b/contrib/depends/packages/libffi.mk new file mode 100644 index 0000000..55707b6 --- /dev/null +++ b/contrib/depends/packages/libffi.mk @@ -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 diff --git a/contrib/depends/packages/libxkbcommon.mk b/contrib/depends/packages/libxkbcommon.mk index b1cb3e8..e367451 100644 --- a/contrib/depends/packages/libxkbcommon.mk +++ b/contrib/depends/packages/libxkbcommon.mk @@ -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 index 0000000..e0fb5a8 --- /dev/null +++ b/contrib/depends/packages/native_expat.mk @@ -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 index 0000000..7adbc09 --- /dev/null +++ b/contrib/depends/packages/native_libffi.mk @@ -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 diff --git a/contrib/depends/packages/native_qt.mk b/contrib/depends/packages/native_qt.mk index ddda112..ade891b 100644 --- a/contrib/depends/packages/native_qt.mk +++ b/contrib/depends/packages/native_qt.mk @@ -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 index 0000000..6419ca8 --- /dev/null +++ b/contrib/depends/packages/native_wayland.mk @@ -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 diff --git a/contrib/depends/packages/packages.mk b/contrib/depends/packages/packages.mk index 431a98c..856c1a5 100644 --- a/contrib/depends/packages/packages.mk +++ b/contrib/depends/packages/packages.mk @@ -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 diff --git a/contrib/depends/packages/qt.mk b/contrib/depends/packages/qt.mk index f2cb0a3..72d7726 100644 --- a/contrib/depends/packages/qt.mk +++ b/contrib/depends/packages/qt.mk @@ -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 index 0000000..5d004f1 --- /dev/null +++ b/contrib/depends/packages/wayland.mk @@ -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 diff --git a/contrib/depends/patches/native_qt/root_CMakeLists.txt b/contrib/depends/patches/native_qt/root_CMakeLists.txt index 2c2d731..2f07986 100644 --- a/contrib/depends/patches/native_qt/root_CMakeLists.txt +++ b/contrib/depends/patches/native_qt/root_CMakeLists.txt @@ -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 index 0000000..b469171 --- /dev/null +++ b/contrib/depends/patches/native_wayland/toolchain.txt @@ -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@' diff --git a/contrib/depends/patches/qt/root_CMakeLists.txt b/contrib/depends/patches/qt/root_CMakeLists.txt index a861c9b..6b7f6a7 100644 --- a/contrib/depends/patches/qt/root_CMakeLists.txt +++ b/contrib/depends/patches/qt/root_CMakeLists.txt @@ -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 index 0000000..c0a2d73 --- /dev/null +++ b/contrib/depends/patches/wayland/toolchain.txt @@ -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@' diff --git a/contrib/flatpak/make_flatpak.sh b/contrib/flatpak/make_flatpak.sh index 4f01c83..dbb33d7 100644 --- a/contrib/flatpak/make_flatpak.sh +++ b/contrib/flatpak/make_flatpak.sh @@ -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 diff --git a/contrib/guix/guix-build b/contrib/guix/guix-build index 9ca564e..0d04e0a 100755 --- a/contrib/guix/guix-build +++ b/contrib/guix/guix-build @@ -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" \ diff --git a/contrib/guix/pack.scm b/contrib/guix/pack.scm index 6341b93..dd511e1 100644 --- a/contrib/guix/pack.scm +++ b/contrib/guix/pack.scm @@ -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))) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 059d996..891b865 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -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) diff --git a/src/main.cpp b/src/main.cpp index 9a1b37c..9fbe07e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -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)