summaryrefslogtreecommitdiff
path: root/meson.build
diff options
context:
space:
mode:
authorWilliam McKinnon <[email protected]>2023-07-11 00:44:26 -0400
committerWilliam McKinnon <[email protected]>2023-07-11 00:44:26 -0400
commit9eaa07a4b141bc80a46cb7ab2dc94048f126fa8c (patch)
treec78cb64199476b94d9ee2f403f1e31ff4d3c5a69 /meson.build
parent74e85d896e4e0964a93113cd9ef31bfb10747b28 (diff)
added more scene dependencies, added tinywl
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build174
1 files changed, 174 insertions, 0 deletions
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