mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-25 12:05:58 +01:00
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
This commit is contained in:
parent
354e265128
commit
fd0112425f
13 changed files with 205 additions and 63 deletions
2
.gitmodules
vendored
2
.gitmodules
vendored
|
@ -1,3 +1,3 @@
|
||||||
[submodule "wlroots"]
|
[submodule "wlroots"]
|
||||||
path = wlroots
|
path = subprojects/wlroots
|
||||||
url = https://github.com/ThatOneCalculator/wlroots-mirror
|
url = https://github.com/ThatOneCalculator/wlroots-mirror
|
||||||
|
|
|
@ -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(-std=c++20 -DWLR_USE_UNSTABLE )
|
||||||
add_compile_options(-Wall -Wextra -Wno-unused-parameter -Wno-unused-value -Wno-missing-field-initializers -Wno-narrowing)
|
add_compile_options(-Wall -Wextra -Wno-unused-parameter -Wno-unused-value -Wno-missing-field-initializers -Wno-narrowing)
|
||||||
find_package(Threads REQUIRED)
|
find_package(Threads REQUIRED)
|
||||||
|
|
10
Makefile
10
Makefile
|
@ -129,11 +129,11 @@ protocols: xdg-shell-protocol.o wlr-layer-shell-unstable-v1-protocol.o wlr-scree
|
||||||
config:
|
config:
|
||||||
make protocols
|
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 subprojects/wlroots && meson ./build --prefix=/usr --buildtype=release
|
||||||
cd wlroots && ninja -C build/
|
cd subprojects/wlroots && ninja -C build/
|
||||||
|
|
||||||
cd wlroots && sudo ninja -C build/ install
|
cd subprojects/wlroots && sudo ninja -C build/ install
|
||||||
|
|
2
example/meson.build
Normal file
2
example/meson.build
Normal file
|
@ -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'))
|
3
hyprctl/meson.build
Normal file
3
hyprctl/meson.build
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
executable('hyprctl', 'main.cpp',
|
||||||
|
install: true
|
||||||
|
)
|
8
meson.build
Normal file
8
meson.build
Normal file
|
@ -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')
|
1
meson_options.txt
Normal file
1
meson_options.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
option('xwayland', type: 'feature', value: 'auto', description: 'Enable support for X11 applications')
|
51
protocols/meson.build
Normal file
51
protocols/meson.build
Normal file
|
@ -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: '@BASENAME@-protocol.c',
|
||||||
|
command: [wayland_scanner, 'private-code', '@INPUT@', '@OUTPUT@'],
|
||||||
|
)
|
||||||
|
wl_protos_headers += custom_target(
|
||||||
|
xml.underscorify() + '_server_h',
|
||||||
|
input: xml,
|
||||||
|
output: '@BASENAME@-protocol.h',
|
||||||
|
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,
|
||||||
|
)
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
#include "../events/Events.hpp"
|
#include "../events/Events.hpp"
|
||||||
#include "../defines.hpp"
|
#include "../defines.hpp"
|
||||||
#include "../../wlr-layer-shell-unstable-v1-protocol.h"
|
#include "wlr-layer-shell-unstable-v1-protocol.h"
|
||||||
#include "../Window.hpp"
|
#include "../Window.hpp"
|
||||||
#include "SubsurfaceTree.hpp"
|
#include "SubsurfaceTree.hpp"
|
||||||
#include "AnimatedVariable.hpp"
|
#include "AnimatedVariable.hpp"
|
||||||
|
|
106
src/includes.hpp
106
src/includes.hpp
|
@ -34,60 +34,60 @@
|
||||||
#define static
|
#define static
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#include "../wlroots/include/wlr/backend.h"
|
#include <wlr/backend.h>
|
||||||
#include "../wlroots/include/wlr/backend/libinput.h"
|
#include <wlr/backend/libinput.h>
|
||||||
#include "../wlroots/include/wlr/render/allocator.h"
|
#include <wlr/render/allocator.h>
|
||||||
#include "../wlroots/include/wlr/render/wlr_renderer.h"
|
#include <wlr/render/wlr_renderer.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_compositor.h"
|
#include <wlr/types/wlr_compositor.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_cursor.h"
|
#include <wlr/types/wlr_cursor.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_data_control_v1.h"
|
#include <wlr/types/wlr_data_control_v1.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_data_device.h"
|
#include <wlr/types/wlr_data_device.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_export_dmabuf_v1.h"
|
#include <wlr/types/wlr_export_dmabuf_v1.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_linux_dmabuf_v1.h"
|
#include <wlr/types/wlr_linux_dmabuf_v1.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_gamma_control_v1.h"
|
#include <wlr/types/wlr_gamma_control_v1.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_idle.h"
|
#include <wlr/types/wlr_idle.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_input_device.h"
|
#include <wlr/types/wlr_input_device.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_keyboard.h"
|
#include <wlr/types/wlr_keyboard.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_layer_shell_v1.h"
|
#include <wlr/types/wlr_layer_shell_v1.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_matrix.h"
|
#include <wlr/types/wlr_matrix.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_output.h"
|
#include <wlr/types/wlr_output.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_output_layout.h"
|
#include <wlr/types/wlr_output_layout.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_output_management_v1.h"
|
#include <wlr/types/wlr_output_management_v1.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_pointer.h"
|
#include <wlr/types/wlr_pointer.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_presentation_time.h"
|
#include <wlr/types/wlr_presentation_time.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_primary_selection.h"
|
#include <wlr/types/wlr_primary_selection.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_primary_selection_v1.h"
|
#include <wlr/types/wlr_primary_selection_v1.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_screencopy_v1.h"
|
#include <wlr/types/wlr_screencopy_v1.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_seat.h"
|
#include <wlr/types/wlr_seat.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_server_decoration.h"
|
#include <wlr/types/wlr_server_decoration.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_viewporter.h"
|
#include <wlr/types/wlr_viewporter.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_virtual_keyboard_v1.h"
|
#include <wlr/types/wlr_virtual_keyboard_v1.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_xcursor_manager.h"
|
#include <wlr/types/wlr_xcursor_manager.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_xdg_activation_v1.h"
|
#include <wlr/types/wlr_xdg_activation_v1.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_xdg_decoration_v1.h"
|
#include <wlr/types/wlr_xdg_decoration_v1.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_xdg_output_v1.h"
|
#include <wlr/types/wlr_xdg_output_v1.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_xdg_shell.h"
|
#include <wlr/types/wlr_xdg_shell.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_subcompositor.h"
|
#include <wlr/types/wlr_subcompositor.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_scene.h"
|
#include <wlr/types/wlr_scene.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_output_damage.h"
|
#include <wlr/types/wlr_output_damage.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_input_inhibitor.h"
|
#include <wlr/types/wlr_input_inhibitor.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_keyboard_shortcuts_inhibit_v1.h"
|
#include <wlr/types/wlr_keyboard_shortcuts_inhibit_v1.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_virtual_pointer_v1.h"
|
#include <wlr/types/wlr_virtual_pointer_v1.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_foreign_toplevel_management_v1.h"
|
#include <wlr/types/wlr_foreign_toplevel_management_v1.h>
|
||||||
#include "../wlroots/include/wlr/util/log.h"
|
#include <wlr/util/log.h>
|
||||||
#include "../wlroots/include/wlr/xwayland.h"
|
#include <wlr/xwayland.h>
|
||||||
#include "../wlroots/include/wlr/util/region.h"
|
#include <wlr/util/region.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_tablet_pad.h"
|
#include <wlr/types/wlr_tablet_pad.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_tablet_tool.h"
|
#include <wlr/types/wlr_tablet_tool.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_tablet_v2.h"
|
#include <wlr/types/wlr_tablet_v2.h>
|
||||||
#include <xkbcommon/xkbcommon.h>
|
#include <xkbcommon/xkbcommon.h>
|
||||||
#include <X11/Xproto.h>
|
#include <X11/Xproto.h>
|
||||||
#include "../wlroots/include/wlr/render/egl.h"
|
#include <wlr/render/egl.h>
|
||||||
#include "../wlroots/include/wlr/render/gles2.h"
|
#include <wlr/render/gles2.h>
|
||||||
#include "../wlroots/include/wlr/render/wlr_texture.h"
|
#include <wlr/render/wlr_texture.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_pointer_constraints_v1.h"
|
#include <wlr/types/wlr_pointer_constraints_v1.h>
|
||||||
#include "../wlroots/include/wlr/types/wlr_relative_pointer_v1.h"
|
#include <wlr/types/wlr_relative_pointer_v1.h>
|
||||||
#include "../wlroots/include/wlr/interfaces/wlr_keyboard.h"
|
#include <wlr/interfaces/wlr_keyboard.h>
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef class
|
#undef class
|
||||||
|
@ -113,4 +113,4 @@ extern "C" {
|
||||||
|
|
||||||
#include "helpers/Vector2D.hpp"
|
#include "helpers/Vector2D.hpp"
|
||||||
|
|
||||||
#include "../ext-workspace-unstable-v1-protocol.h"
|
#include "ext-workspace-unstable-v1-protocol.h"
|
||||||
|
|
77
src/meson.build
Normal file
77
src/meson.build
Normal file
|
@ -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
|
||||||
|
)
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
#include "../includes.hpp"
|
#include "../includes.hpp"
|
||||||
#include "../helpers/MiscFunctions.hpp"
|
#include "../helpers/MiscFunctions.hpp"
|
||||||
#include "../../ext-workspace-unstable-v1-protocol.h"
|
#include "ext-workspace-unstable-v1-protocol.h"
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
Loading…
Reference in a new issue