From 9eaa07a4b141bc80a46cb7ab2dc94048f126fa8c Mon Sep 17 00:00:00 2001 From: William McKinnon Date: Tue, 11 Jul 2023 00:44:26 -0400 Subject: added more scene dependencies, added tinywl --- meson.build | 174 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 meson.build (limited to 'meson.build') diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..d94b871 --- /dev/null +++ b/meson.build @@ -0,0 +1,174 @@ +project( + 'scenefx', + 'c', + version: '0.1', + license: 'MIT', + meson_version: '>=0.59.0', + default_options: [ + 'c_std=c11', + 'warning_level=2', + 'werror=true', + ], +) + +# When doing a major or minor release, *always* increase soversion. This isn't +# necessary for bugfix releases. Increasing soversion is required because +# wlroots never guarantees ABI stability -- only API stability is guaranteed +# between minor releases. +soversion = 1 + +little_endian = target_machine.endian() == 'little' +big_endian = target_machine.endian() == 'big' + +add_project_arguments([ + '-DWLR_USE_UNSTABLE', + '-DWLR_LITTLE_ENDIAN=@0@'.format(little_endian.to_int()), + '-DWLR_BIG_ENDIAN=@0@'.format(big_endian.to_int()), +], language: 'c') + +cc = meson.get_compiler('c') + +add_project_arguments(cc.get_supported_arguments([ + '-Wundef', + '-Wlogical-op', + '-Wmissing-include-dirs', + '-Wold-style-definition', + '-Wpointer-arith', + '-Winit-self', + '-Wstrict-prototypes', + '-Wimplicit-fallthrough=2', + '-Wendif-labels', + '-Wstrict-aliasing=2', + '-Woverflow', + '-Wmissing-prototypes', + '-Walloca', + + '-Wno-missing-braces', + '-Wno-missing-field-initializers', + '-Wno-unused-parameter', +]), language: 'c') + +# Compute the relative path used by compiler invocations. +source_root = meson.current_source_dir().split('/') +build_root = meson.global_build_root().split('/') +relative_dir_parts = [] +i = 0 +in_prefix = true +foreach p : build_root + if i >= source_root.length() or not in_prefix or p != source_root[i] + in_prefix = false + relative_dir_parts += '..' + endif + i += 1 +endforeach +i = 0 +in_prefix = true +foreach p : source_root + if i >= build_root.length() or not in_prefix or build_root[i] != p + in_prefix = false + relative_dir_parts += p + endif + i += 1 +endforeach +relative_dir = join_paths(relative_dir_parts) + '/' + +# Strip relative path prefixes from the code if possible, otherwise hide them. +if cc.has_argument('-fmacro-prefix-map=/prefix/to/hide=') + add_project_arguments( + '-fmacro-prefix-map=@0@='.format(relative_dir), + language: 'c', + ) +else + add_project_arguments( + '-DWLR_REL_SRC_DIR="@0@"'.format(relative_dir), + language: 'c', + ) +endif + +features = { + 'drm-backend': false, + 'x11-backend': false, + 'libinput-backend': false, + 'xwayland': false, + 'gles2-renderer': false, + 'vulkan-renderer': false, + 'gbm-allocator': false, +} +internal_features = { + 'xcb-errors': false, + 'egl': false, +} + +wayland_project_options = ['tests=false', 'documentation=false'] +wayland_server = dependency('wayland-server', + version: '>=1.21', + fallback: 'wayland', + default_options: wayland_project_options, +) + +drm = dependency('libdrm', + version: '>=2.4.113', + fallback: 'libdrm', + default_options: [ + 'intel=disabled', + 'radeon=disabled', + 'amdgpu=disabled', + 'nouveau=disabled', + 'vmwgfx=disabled', + 'omap=disabled', + 'exynos=disabled', + 'freedreno=disabled', + 'tegra=disabled', + 'vc4=disabled', + 'etnaviv=disabled', + 'cairo-tests=disabled', + 'man-pages=disabled', + 'valgrind=disabled', + 'tests=false', + ], +) +xkbcommon = dependency('xkbcommon') +udev = dependency('libudev') +pixman = dependency('pixman-1') +math = cc.find_library('m') +rt = cc.find_library('rt') + +wlr_files = [] +wlr_deps = [ + wayland_server, + drm, + xkbcommon, + udev, + pixman, + math, + rt, +] + +subdir('protocol') + +subdir('types') +subdir('util') + +subdir('include') + +foreach name, have : internal_features + add_project_arguments( + '-DHAS_@0@=@1@'.format(name.underscorify().to_upper(), have.to_int()), + language: 'c', + ) +endforeach + +symbols_file = 'wlroots.syms' +symbols_flag = '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), symbols_file) + +wlr_vars = {} +foreach name, have : features + wlr_vars += { 'have_' + name.underscorify(): have.to_string() } +endforeach + +summary(features + internal_features, bool_yn: true) + +if get_option('examples') + # TODO: subdir('examples') + subdir('tinywl') +endif -- cgit v1.2.3