From 543092f9cc77c88120264a72f2d40707e59dd6e5 Mon Sep 17 00:00:00 2001 From: Mihai Fufezan Date: Sat, 20 Apr 2024 14:56:01 +0300 Subject: [PATCH] Meson & Nix: add hyprwayland-scanner --- flake.lock | 24 ++++++++++++++++++++++++ flake.nix | 6 ++++++ nix/default.nix | 2 ++ nix/overlays.nix | 1 + protocols/meson.build | 29 ++++++++++++++++++++++++++--- 5 files changed, 59 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index c237ba74..1c260ca9 100644 --- a/flake.lock +++ b/flake.lock @@ -72,6 +72,29 @@ "type": "github" } }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "systems": [ + "systems" + ] + }, + "locked": { + "lastModified": 1713612394, + "narHash": "sha256-uWA8iPYzrdpCT9d8I9YHrxkjBdooqOZIH6ZOHoQiOUc=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "f58a3f56e89857dc7ab7166cff2f971345026634", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1712963716, @@ -93,6 +116,7 @@ "hyprcursor": "hyprcursor", "hyprland-protocols": "hyprland-protocols", "hyprlang": "hyprlang", + "hyprwayland-scanner": "hyprwayland-scanner", "nixpkgs": "nixpkgs", "systems": "systems", "wlroots": "wlroots", diff --git a/flake.nix b/flake.nix index 9cb17179..ba09acb7 100644 --- a/flake.nix +++ b/flake.nix @@ -34,6 +34,12 @@ inputs.systems.follows = "systems"; }; + hyprwayland-scanner = { + url = "github:hyprwm/hyprwayland-scanner"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.systems.follows = "systems"; + }; + xdph = { url = "github:hyprwm/xdg-desktop-portal-hyprland"; inputs.nixpkgs.follows = "nixpkgs"; diff --git a/nix/default.nix b/nix/default.nix index a7679672..2d86366a 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -12,6 +12,7 @@ hyprcursor, hyprland-protocols, hyprlang, + hyprwayland-scanner, jq, libGL, libdrm, @@ -86,6 +87,7 @@ in ''; nativeBuildInputs = [ + hyprwayland-scanner jq makeWrapper meson diff --git a/nix/overlays.nix b/nix/overlays.nix index 97e66912..fe5a5ed6 100644 --- a/nix/overlays.nix +++ b/nix/overlays.nix @@ -24,6 +24,7 @@ in { inputs.hyprcursor.overlays.default inputs.hyprland-protocols.overlays.default inputs.hyprlang.overlays.default + inputs.hyprwayland-scanner.overlays.default self.overlays.wlroots-hyprland self.overlays.udis86 # Hyprland packages themselves diff --git a/protocols/meson.build b/protocols/meson.build index 857df50f..76dbcacb 100644 --- a/protocols/meson.build +++ b/protocols/meson.build @@ -17,6 +17,11 @@ wayland_scanner = find_program( wayland_scanner_dep.get_variable('wayland_scanner'), native: true, ) +hyprwayland_scanner_dep = dependency('hyprwayland-scanner', native: true) +hyprwayland_scanner = find_program( + hyprwayland_scanner_dep.get_variable('hyprwayland_scanner'), + native: true, +) protocols = [ [wl_protocol_dir, 'stable/xdg-shell/xdg-shell.xml'], @@ -25,7 +30,6 @@ protocols = [ [wl_protocol_dir, 'unstable/xdg-output/xdg-output-unstable-v1.xml'], [wl_protocol_dir, 'staging/fractional-scale/fractional-scale-v1.xml'], [wl_protocol_dir, 'staging/cursor-shape/cursor-shape-v1.xml'], - [wl_protocol_dir, 'staging/tearing-control/tearing-control-v1.xml'], ['wlr-foreign-toplevel-management-unstable-v1.xml'], ['wlr-layer-shell-unstable-v1.xml'], ['wlr-output-power-management-unstable-v1.xml'], @@ -36,8 +40,14 @@ protocols = [ [hl_protocol_dir, 'protocols/hyprland-toplevel-export-v1.xml'], [hl_protocol_dir, 'protocols/hyprland-global-shortcuts-v1.xml'] ] + +new_protocols = [ + [wl_protocol_dir, 'staging/tearing-control/tearing-control-v1.xml'], +] + wl_protos_src = [] wl_protos_headers = [] + foreach p : protocols xml = join_paths(p) wl_protos_src += custom_target( @@ -56,15 +66,28 @@ foreach p : protocols ) endforeach +new_wl_protos = [] +foreach p : new_protocols + xml = join_paths(p) + new_wl_protos += custom_target( + xml.underscorify(), + input: xml, + install: true, + install_dir: [false, join_paths(get_option('includedir'), 'hyprland/protocols')], + output: ['@BASENAME@.cpp', '@BASENAME@.hpp'], + command: [hyprwayland_scanner, '@INPUT@', '@OUTDIR@'], + ) +endforeach + wayland_server = dependency('wayland-server', version: '>=1.20.0') lib_server_protos = static_library( 'server_protos', - wl_protos_src + wl_protos_headers, + wl_protos_src + wl_protos_headers + new_wl_protos, dependencies: wayland_server.partial_dependency(compile_args: true), ) server_protos = declare_dependency( link_with: lib_server_protos, - sources: wl_protos_headers, + sources: wl_protos_headers + new_wl_protos, )