From fd0112425f165aff786bcfec8c610114324c37a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20=22sp1rit=22=E2=80=8B?= Date: Sun, 12 Jun 2022 22:57:03 +0200 Subject: Added meson buildfiles this makes for a far better experience in combination with wlroots, since that whole makefile mess is not required. Additionaly, handling of wayland protocol sources is also slightly better, but could be improved with mesons inbuilt wayland module. To build Hyprland using meson: meson _build -Ddefault_library=static ninja -C _build ninja -C _build install --- src/helpers/WLClasses.hpp | 4 +- src/includes.hpp | 106 +++++++++++++++---------------- src/meson.build | 77 ++++++++++++++++++++++ src/wlrunstable/wlr_ext_workspace_v1.cpp | 2 +- 4 files changed, 133 insertions(+), 56 deletions(-) create mode 100644 src/meson.build (limited to 'src') diff --git a/src/helpers/WLClasses.hpp b/src/helpers/WLClasses.hpp index 534b0de6..2a2d3c93 100644 --- a/src/helpers/WLClasses.hpp +++ b/src/helpers/WLClasses.hpp @@ -2,7 +2,7 @@ #include "../events/Events.hpp" #include "../defines.hpp" -#include "../../wlr-layer-shell-unstable-v1-protocol.h" +#include "wlr-layer-shell-unstable-v1-protocol.h" #include "../Window.hpp" #include "SubsurfaceTree.hpp" #include "AnimatedVariable.hpp" @@ -205,4 +205,4 @@ struct STabletPad { bool operator==(const STabletPad& b) { return wlrTabletPadV2 == b.wlrTabletPadV2; } -}; \ No newline at end of file +}; diff --git a/src/includes.hpp b/src/includes.hpp index 6793604b..3aca4331 100644 --- a/src/includes.hpp +++ b/src/includes.hpp @@ -34,60 +34,60 @@ #define static extern "C" { -#include "../wlroots/include/wlr/backend.h" -#include "../wlroots/include/wlr/backend/libinput.h" -#include "../wlroots/include/wlr/render/allocator.h" -#include "../wlroots/include/wlr/render/wlr_renderer.h" -#include "../wlroots/include/wlr/types/wlr_compositor.h" -#include "../wlroots/include/wlr/types/wlr_cursor.h" -#include "../wlroots/include/wlr/types/wlr_data_control_v1.h" -#include "../wlroots/include/wlr/types/wlr_data_device.h" -#include "../wlroots/include/wlr/types/wlr_export_dmabuf_v1.h" -#include "../wlroots/include/wlr/types/wlr_linux_dmabuf_v1.h" -#include "../wlroots/include/wlr/types/wlr_gamma_control_v1.h" -#include "../wlroots/include/wlr/types/wlr_idle.h" -#include "../wlroots/include/wlr/types/wlr_input_device.h" -#include "../wlroots/include/wlr/types/wlr_keyboard.h" -#include "../wlroots/include/wlr/types/wlr_layer_shell_v1.h" -#include "../wlroots/include/wlr/types/wlr_matrix.h" -#include "../wlroots/include/wlr/types/wlr_output.h" -#include "../wlroots/include/wlr/types/wlr_output_layout.h" -#include "../wlroots/include/wlr/types/wlr_output_management_v1.h" -#include "../wlroots/include/wlr/types/wlr_pointer.h" -#include "../wlroots/include/wlr/types/wlr_presentation_time.h" -#include "../wlroots/include/wlr/types/wlr_primary_selection.h" -#include "../wlroots/include/wlr/types/wlr_primary_selection_v1.h" -#include "../wlroots/include/wlr/types/wlr_screencopy_v1.h" -#include "../wlroots/include/wlr/types/wlr_seat.h" -#include "../wlroots/include/wlr/types/wlr_server_decoration.h" -#include "../wlroots/include/wlr/types/wlr_viewporter.h" -#include "../wlroots/include/wlr/types/wlr_virtual_keyboard_v1.h" -#include "../wlroots/include/wlr/types/wlr_xcursor_manager.h" -#include "../wlroots/include/wlr/types/wlr_xdg_activation_v1.h" -#include "../wlroots/include/wlr/types/wlr_xdg_decoration_v1.h" -#include "../wlroots/include/wlr/types/wlr_xdg_output_v1.h" -#include "../wlroots/include/wlr/types/wlr_xdg_shell.h" -#include "../wlroots/include/wlr/types/wlr_subcompositor.h" -#include "../wlroots/include/wlr/types/wlr_scene.h" -#include "../wlroots/include/wlr/types/wlr_output_damage.h" -#include "../wlroots/include/wlr/types/wlr_input_inhibitor.h" -#include "../wlroots/include/wlr/types/wlr_keyboard_shortcuts_inhibit_v1.h" -#include "../wlroots/include/wlr/types/wlr_virtual_pointer_v1.h" -#include "../wlroots/include/wlr/types/wlr_foreign_toplevel_management_v1.h" -#include "../wlroots/include/wlr/util/log.h" -#include "../wlroots/include/wlr/xwayland.h" -#include "../wlroots/include/wlr/util/region.h" -#include "../wlroots/include/wlr/types/wlr_tablet_pad.h" -#include "../wlroots/include/wlr/types/wlr_tablet_tool.h" -#include "../wlroots/include/wlr/types/wlr_tablet_v2.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include -#include "../wlroots/include/wlr/render/egl.h" -#include "../wlroots/include/wlr/render/gles2.h" -#include "../wlroots/include/wlr/render/wlr_texture.h" -#include "../wlroots/include/wlr/types/wlr_pointer_constraints_v1.h" -#include "../wlroots/include/wlr/types/wlr_relative_pointer_v1.h" -#include "../wlroots/include/wlr/interfaces/wlr_keyboard.h" +#include +#include +#include +#include +#include +#include } #undef class @@ -113,4 +113,4 @@ extern "C" { #include "helpers/Vector2D.hpp" -#include "../ext-workspace-unstable-v1-protocol.h" \ No newline at end of file +#include "ext-workspace-unstable-v1-protocol.h" diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 00000000..6a351b9b --- /dev/null +++ b/src/meson.build @@ -0,0 +1,77 @@ +src = [ + 'config/ConfigManager.cpp', + 'debug/HyprCtl.cpp', + 'debug/HyprDebugOverlay.cpp', + 'debug/Log.cpp', + 'events/Devices.cpp', + 'events/Layers.cpp', + 'events/Misc.cpp', + 'events/Monitors.cpp', + 'events/Popups.cpp', + 'events/Windows.cpp', + 'helpers/Color.cpp', + 'helpers/Vector2D.cpp', + 'helpers/WLListener.cpp', + 'helpers/AnimatedVariable.cpp', + 'helpers/BezierCurve.cpp', + 'helpers/MiscFunctions.cpp', + 'helpers/SubsurfaceTree.cpp', + 'helpers/WLClasses.cpp', + 'helpers/Workspace.cpp', + 'hyprerror/HyprError.cpp', + 'layout/DwindleLayout.cpp', + 'managers/LayoutManager.cpp', + 'managers/ThreadManager.cpp', + 'managers/AnimationManager.cpp', + 'managers/EventManager.cpp', + 'managers/KeybindManager.cpp', + 'managers/XWaylandManager.cpp', + 'managers/input/InputManager.cpp', + 'managers/input/Tablets.cpp', + 'render/Shader.cpp', + 'render/Texture.cpp', + 'render/Framebuffer.cpp', + 'render/OpenGL.cpp', + 'render/Renderer.cpp', + 'render/decorations/CHyprGroupBarDecoration.cpp', + 'render/decorations/IHyprWindowDecoration.cpp', + 'wlrunstable/wlr_ext_workspace_v1.cpp', + 'Compositor.cpp', + 'Window.cpp', + 'init/initHelpers.cpp', + 'main.cpp' +] + +wlroots = subproject('wlroots', default_options: ['examples=false']) +have_xwlr = wlroots.get_variable('features').get('xwayland') +xcb_dep = dependency('xcb', required: get_option('xwayland')) + +if get_option('xwayland').enabled() and not have_xwlr + error('Cannot enable Xwayland in Hyperland: wlroots has been built without Xwayland support') +endif +have_xwayland = xcb_dep.found() and have_xwlr + +if not have_xwayland +add_project_arguments('-DNO_XWAYLAND', language: 'cpp') +endif + +executable('Hyprland', src, + cpp_args: ['-DWLR_USE_UNSTABLE'], + dependencies: [ + server_protos, + wlroots.get_variable('wlroots'), + dependency('cairo'), + dependency('pango'), + dependency('pangocairo'), + dependency('libdrm'), + dependency('egl'), + dependency('xkbcommon'), + dependency('libinput'), + xcb_dep, + + dependency('pixman-1'), + dependency('GL'), + dependency('threads') + ], + install : true +) diff --git a/src/wlrunstable/wlr_ext_workspace_v1.cpp b/src/wlrunstable/wlr_ext_workspace_v1.cpp index 4d6de7ae..50a43c7b 100644 --- a/src/wlrunstable/wlr_ext_workspace_v1.cpp +++ b/src/wlrunstable/wlr_ext_workspace_v1.cpp @@ -2,7 +2,7 @@ #include "../includes.hpp" #include "../helpers/MiscFunctions.hpp" -#include "../../ext-workspace-unstable-v1-protocol.h" +#include "ext-workspace-unstable-v1-protocol.h" #include #include -- cgit v1.2.3 From b3ef1fcc545250b66ae356c4d26e47cbab230b11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20=22sp1rit=22=E2=80=8B?= Date: Mon, 13 Jun 2022 19:09:52 +0200 Subject: replaced source list with globber script See: - https://mesonbuild.com/FAQ.html#why-cant-i-specify-target-files-with-a-wildcard - https://github.com/vaxerski/Hyprland/pull/205#issuecomment-1154158918 --- src/meson.build | 45 ++------------------------------------------- 1 file changed, 2 insertions(+), 43 deletions(-) (limited to 'src') diff --git a/src/meson.build b/src/meson.build index 6a351b9b..87aadbd7 100644 --- a/src/meson.build +++ b/src/meson.build @@ -1,46 +1,5 @@ -src = [ - 'config/ConfigManager.cpp', - 'debug/HyprCtl.cpp', - 'debug/HyprDebugOverlay.cpp', - 'debug/Log.cpp', - 'events/Devices.cpp', - 'events/Layers.cpp', - 'events/Misc.cpp', - 'events/Monitors.cpp', - 'events/Popups.cpp', - 'events/Windows.cpp', - 'helpers/Color.cpp', - 'helpers/Vector2D.cpp', - 'helpers/WLListener.cpp', - 'helpers/AnimatedVariable.cpp', - 'helpers/BezierCurve.cpp', - 'helpers/MiscFunctions.cpp', - 'helpers/SubsurfaceTree.cpp', - 'helpers/WLClasses.cpp', - 'helpers/Workspace.cpp', - 'hyprerror/HyprError.cpp', - 'layout/DwindleLayout.cpp', - 'managers/LayoutManager.cpp', - 'managers/ThreadManager.cpp', - 'managers/AnimationManager.cpp', - 'managers/EventManager.cpp', - 'managers/KeybindManager.cpp', - 'managers/XWaylandManager.cpp', - 'managers/input/InputManager.cpp', - 'managers/input/Tablets.cpp', - 'render/Shader.cpp', - 'render/Texture.cpp', - 'render/Framebuffer.cpp', - 'render/OpenGL.cpp', - 'render/Renderer.cpp', - 'render/decorations/CHyprGroupBarDecoration.cpp', - 'render/decorations/IHyprWindowDecoration.cpp', - 'wlrunstable/wlr_ext_workspace_v1.cpp', - 'Compositor.cpp', - 'Window.cpp', - 'init/initHelpers.cpp', - 'main.cpp' -] +globber = run_command('find', '-name', '*.cpp', check: true) +src = globber.stdout().strip().split('\n') wlroots = subproject('wlroots', default_options: ['examples=false']) have_xwlr = wlroots.get_variable('features').get('xwayland') -- cgit v1.2.3 From c169f948951c63b56a4e39dd2ab921676f65f746 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20=22sp1rit=22=E2=80=8B?= Date: Tue, 14 Jun 2022 11:19:03 +0200 Subject: moved wlroots/xwayland definitions to the main meson file prevents build-failure when xwayland is disabled to to add_project_arguments('-DNO_XWAYLAND', language: 'cpp') beeing called after the required wayland protocols have been built. --- src/meson.build | 13 ------------- 1 file changed, 13 deletions(-) (limited to 'src') diff --git a/src/meson.build b/src/meson.build index 87aadbd7..4e52d65e 100644 --- a/src/meson.build +++ b/src/meson.build @@ -1,19 +1,6 @@ globber = run_command('find', '-name', '*.cpp', check: true) src = globber.stdout().strip().split('\n') -wlroots = subproject('wlroots', default_options: ['examples=false']) -have_xwlr = wlroots.get_variable('features').get('xwayland') -xcb_dep = dependency('xcb', required: get_option('xwayland')) - -if get_option('xwayland').enabled() and not have_xwlr - error('Cannot enable Xwayland in Hyperland: wlroots has been built without Xwayland support') -endif -have_xwayland = xcb_dep.found() and have_xwlr - -if not have_xwayland -add_project_arguments('-DNO_XWAYLAND', language: 'cpp') -endif - executable('Hyprland', src, cpp_args: ['-DWLR_USE_UNSTABLE'], dependencies: [ -- cgit v1.2.3 From 75918c14d767af3a70010c9d57a0e97bd01a3334 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20=22sp1rit=22=E2=80=8B?= Date: Wed, 15 Jun 2022 12:04:42 +0200 Subject: meson: added wayland dependencies to main executable --- src/meson.build | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/meson.build b/src/meson.build index 4e52d65e..5d64188f 100644 --- a/src/meson.build +++ b/src/meson.build @@ -5,6 +5,8 @@ executable('Hyprland', src, cpp_args: ['-DWLR_USE_UNSTABLE'], dependencies: [ server_protos, + dependency('wayland-server'), + dependency('wayland-client'), wlroots.get_variable('wlroots'), dependency('cairo'), dependency('pango'), -- cgit v1.2.3 From 7c3626f15ed25b1d9eb4c14f7e4f887fab2ab62a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20=22sp1rit=22=E2=80=8B?= Date: Sat, 18 Jun 2022 13:09:38 +0200 Subject: meson: ensure non-debug builds will use proper configuration meson will set add -DHYPRLAND_DEBUG to CXXFLAGS during compilation of debug builds. this avoids NDEBUG issues with wlroots and ensures asserts will also work on release builds. --- src/debug/HyprCtl.cpp | 3 +++ src/defines.hpp | 4 ++++ 2 files changed, 7 insertions(+) (limited to 'src') diff --git a/src/debug/HyprCtl.cpp b/src/debug/HyprCtl.cpp index 83656e13..66a8128d 100644 --- a/src/debug/HyprCtl.cpp +++ b/src/debug/HyprCtl.cpp @@ -114,6 +114,9 @@ std::string versionRequest() { #ifndef NDEBUG result += "debug\n"; #endif +#ifdef HYPRLAND_DEBUG + result += "debug\n"; +#endif #ifdef NO_XWAYLAND result += "no xwayland\n"; #endif diff --git a/src/defines.hpp b/src/defines.hpp index 18db3955..80750c23 100644 --- a/src/defines.hpp +++ b/src/defines.hpp @@ -7,10 +7,14 @@ #include "wlrunstable/wlr_ext_workspace_v1.hpp" #ifndef NDEBUG +#ifdef HYPRLAND_DEBUG #define ISDEBUG true #else #define ISDEBUG false #endif +#else +#define ISDEBUG false +#endif #define RIP(format, ... ) { fprintf(stderr, format "\n", ##__VA_ARGS__); exit(EXIT_FAILURE); } -- cgit v1.2.3