aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorFlorian "sp1rit"​ <[email protected]>2022-06-12 22:57:03 +0200
committerFlorian "sp1rit"​ <[email protected]>2022-06-16 23:30:28 +0200
commitfd0112425f165aff786bcfec8c610114324c37a1 (patch)
tree2f10644bc09eeb9e378f612f59462c2a40d2e3a2
parent354e2651289861bf7027fd02be41088e45fc1c99 (diff)
downloadHyprland-fd0112425f165aff786bcfec8c610114324c37a1.tar.gz
Hyprland-fd0112425f165aff786bcfec8c610114324c37a1.zip
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
-rw-r--r--.gitmodules2
-rw-r--r--CMakeLists.txt2
-rw-r--r--Makefile10
-rw-r--r--example/meson.build2
-rw-r--r--hyprctl/meson.build3
-rw-r--r--meson.build8
-rw-r--r--meson_options.txt1
-rw-r--r--protocols/meson.build51
-rw-r--r--src/helpers/WLClasses.hpp4
-rw-r--r--src/includes.hpp106
-rw-r--r--src/meson.build77
-rw-r--r--src/wlrunstable/wlr_ext_workspace_v1.cpp2
m---------subprojects/wlroots (renamed from wlroots)0
13 files changed, 205 insertions, 63 deletions
diff --git a/.gitmodules b/.gitmodules
index 91f54c59..01c7b0d5 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,3 @@
[submodule "wlroots"]
- path = wlroots
+ path = subprojects/wlroots
url = https://github.com/ThatOneCalculator/wlroots-mirror
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a3b3584e..e78eea0e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -35,7 +35,7 @@ execute_process(
#
#
-include_directories(.)
+include_directories(. PRIVATE "subprojects/wlroots/include/")
add_compile_options(-std=c++20 -DWLR_USE_UNSTABLE )
add_compile_options(-Wall -Wextra -Wno-unused-parameter -Wno-unused-value -Wno-missing-field-initializers -Wno-narrowing)
find_package(Threads REQUIRED)
diff --git a/Makefile b/Makefile
index 425618b4..eb306932 100644
--- a/Makefile
+++ b/Makefile
@@ -129,11 +129,11 @@ protocols: xdg-shell-protocol.o wlr-layer-shell-unstable-v1-protocol.o wlr-scree
config:
make protocols
- sed -i -E 's/(soversion = 11)([^032]|$$)/soversion = 11032/g' ./wlroots/meson.build
+ sed -i -E 's/(soversion = 11)([^032]|$$)/soversion = 11032/g' subprojects/wlroots/meson.build
- rm -rf ./wlroots/build
+ rm -rf ./subprojects/wlroots/build
- cd wlroots && meson ./build --prefix=/usr --buildtype=release
- cd wlroots && ninja -C build/
+ cd subprojects/wlroots && meson ./build --prefix=/usr --buildtype=release
+ cd subprojects/wlroots && ninja -C build/
- cd wlroots && sudo ninja -C build/ install
+ cd subprojects/wlroots && sudo ninja -C build/ install
diff --git a/example/meson.build b/example/meson.build
new file mode 100644
index 00000000..cf4a2ff0
--- /dev/null
+++ b/example/meson.build
@@ -0,0 +1,2 @@
+install_data('hyprland.conf', install_dir: join_paths(get_option('datadir'), 'hyprland'))
+install_data('hyprland.desktop', install_dir: join_paths(get_option('datadir'), 'wayland-sessions'))
diff --git a/hyprctl/meson.build b/hyprctl/meson.build
new file mode 100644
index 00000000..2b941d6d
--- /dev/null
+++ b/hyprctl/meson.build
@@ -0,0 +1,3 @@
+executable('hyprctl', 'main.cpp',
+ install: true
+)
diff --git a/meson.build b/meson.build
new file mode 100644
index 00000000..ea030c23
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,8 @@
+project('Hyprland', 'cpp', 'c',
+ version : '0.1',
+ default_options : ['warning_level=3', 'cpp_std=c++20'])
+
+subdir('protocols')
+subdir('src')
+subdir('hyprctl')
+subdir('example')
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 00000000..d34c6170
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1 @@
+option('xwayland', type: 'feature', value: 'auto', description: 'Enable support for X11 applications')
diff --git a/protocols/meson.build b/protocols/meson.build
new file mode 100644
index 00000000..31a799d8
--- /dev/null
+++ b/protocols/meson.build
@@ -0,0 +1,51 @@
+wayland_protos = dependency('wayland-protocols',
+ version: '>=1.25',
+ fallback: 'wayland-protocols',
+ default_options: ['tests=false'],
+)
+wl_protocol_dir = wayland_protos.get_variable('pkgdatadir')
+
+wayland_scanner_dep = dependency('wayland-scanner', native: true)
+wayland_scanner = find_program(
+ wayland_scanner_dep.get_variable('wayland_scanner'),
+ native: true,
+)
+
+protocols = [
+ [wl_protocol_dir, 'stable/xdg-shell/xdg-shell.xml'],
+ ['wlr-layer-shell-unstable-v1.xml'],
+ ['ext-workspace-unstable-v1.xml'],
+ ['pointer-constraints-unstable-v1.xml'],
+ ['tablet-unstable-v2.xml'],
+ ['idle.xml']
+]
+wl_protos_src = []
+wl_protos_headers = []
+foreach p : protocols
+ xml = join_paths(p)
+ wl_protos_src += custom_target(
+ xml.underscorify() + '_server_c',
+ input: xml,
+ output: '@[email protected]',
+ command: [wayland_scanner, 'private-code', '@INPUT@', '@OUTPUT@'],
+ )
+ wl_protos_headers += custom_target(
+ xml.underscorify() + '_server_h',
+ input: xml,
+ output: '@[email protected]',
+ command: [wayland_scanner, 'server-header', '@INPUT@', '@OUTPUT@'],
+ )
+endforeach
+
+wayland_server = dependency('wayland-server', version: '>=1.20.0')
+
+lib_server_protos = static_library(
+ 'server_protos',
+ wl_protos_src + wl_protos_headers,
+ dependencies: wayland_server.partial_dependency(compile_args: true),
+)
+
+server_protos = declare_dependency(
+ link_with: lib_server_protos,
+ sources: wl_protos_headers,
+)
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 <wlr/backend.h>
+#include <wlr/backend/libinput.h>
+#include <wlr/render/allocator.h>
+#include <wlr/render/wlr_renderer.h>
+#include <wlr/types/wlr_compositor.h>
+#include <wlr/types/wlr_cursor.h>
+#include <wlr/types/wlr_data_control_v1.h>
+#include <wlr/types/wlr_data_device.h>
+#include <wlr/types/wlr_export_dmabuf_v1.h>
+#include <wlr/types/wlr_linux_dmabuf_v1.h>
+#include <wlr/types/wlr_gamma_control_v1.h>
+#include <wlr/types/wlr_idle.h>
+#include <wlr/types/wlr_input_device.h>
+#include <wlr/types/wlr_keyboard.h>
+#include <wlr/types/wlr_layer_shell_v1.h>
+#include <wlr/types/wlr_matrix.h>
+#include <wlr/types/wlr_output.h>
+#include <wlr/types/wlr_output_layout.h>
+#include <wlr/types/wlr_output_management_v1.h>
+#include <wlr/types/wlr_pointer.h>
+#include <wlr/types/wlr_presentation_time.h>
+#include <wlr/types/wlr_primary_selection.h>
+#include <wlr/types/wlr_primary_selection_v1.h>
+#include <wlr/types/wlr_screencopy_v1.h>
+#include <wlr/types/wlr_seat.h>
+#include <wlr/types/wlr_server_decoration.h>
+#include <wlr/types/wlr_viewporter.h>
+#include <wlr/types/wlr_virtual_keyboard_v1.h>
+#include <wlr/types/wlr_xcursor_manager.h>
+#include <wlr/types/wlr_xdg_activation_v1.h>
+#include <wlr/types/wlr_xdg_decoration_v1.h>
+#include <wlr/types/wlr_xdg_output_v1.h>
+#include <wlr/types/wlr_xdg_shell.h>
+#include <wlr/types/wlr_subcompositor.h>
+#include <wlr/types/wlr_scene.h>
+#include <wlr/types/wlr_output_damage.h>
+#include <wlr/types/wlr_input_inhibitor.h>
+#include <wlr/types/wlr_keyboard_shortcuts_inhibit_v1.h>
+#include <wlr/types/wlr_virtual_pointer_v1.h>
+#include <wlr/types/wlr_foreign_toplevel_management_v1.h>
+#include <wlr/util/log.h>
+#include <wlr/xwayland.h>
+#include <wlr/util/region.h>
+#include <wlr/types/wlr_tablet_pad.h>
+#include <wlr/types/wlr_tablet_tool.h>
+#include <wlr/types/wlr_tablet_v2.h>
#include <xkbcommon/xkbcommon.h>
#include <X11/Xproto.h>
-#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 <wlr/render/egl.h>
+#include <wlr/render/gles2.h>
+#include <wlr/render/wlr_texture.h>
+#include <wlr/types/wlr_pointer_constraints_v1.h>
+#include <wlr/types/wlr_relative_pointer_v1.h>
+#include <wlr/interfaces/wlr_keyboard.h>
}
#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 <assert.h>
#include <string.h>
diff --git a/wlroots b/subprojects/wlroots
-Subproject b89ed9015c3fbe8d339e9d65cf70fdca6e5645b
+Subproject b89ed9015c3fbe8d339e9d65cf70fdca6e5645b