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:
Florian "sp1rit"​ 2022-06-12 22:57:03 +02:00
parent 354e265128
commit fd0112425f
No known key found for this signature in database
GPG key ID: BA579378AC81FB05
13 changed files with 205 additions and 63 deletions

2
.gitmodules vendored
View file

@ -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

View file

@ -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)

View file

@ -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
View 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
View file

@ -0,0 +1,3 @@
executable('hyprctl', 'main.cpp',
install: true
)

8
meson.build Normal file
View 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
View file

@ -0,0 +1 @@
option('xwayland', type: 'feature', value: 'auto', description: 'Enable support for X11 applications')

51
protocols/meson.build Normal file
View 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,
)

View file

@ -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"

View file

@ -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
View 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
)

View file

@ -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>