| # Copyright 2020 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| project('sommelier', 'c', 'cpp') |
| |
| #===============# |
| # Configuration # |
| #===============# |
| |
| includes = [] |
| cpp_args = [] |
| |
| #===============# |
| # Wayland Stuff # |
| #===============# |
| |
| wl_scanner = find_program('wayland-scanner') |
| |
| wl_generators = [ |
| generator( |
| wl_scanner, |
| output: '@BASENAME@-code.c', |
| arguments: ['private-code', '@INPUT@', '@OUTPUT@'] |
| ), |
| generator( |
| wl_scanner, |
| output: '@BASENAME@-client-protocol.h', |
| arguments: ['client-header', '@INPUT@', '@OUTPUT@'] |
| ), |
| generator( |
| wl_scanner, |
| output: '@BASENAME@-server-protocol.h', |
| arguments: ['server-header', '@INPUT@', '@OUTPUT@'] |
| ), |
| ] |
| |
| wl_protocols = [ |
| 'protocol/aura-shell.xml', |
| 'protocol/drm.xml', |
| 'protocol/gaming-input-unstable-v2.xml', |
| 'protocol/gtk-shell.xml', |
| 'protocol/keyboard-extension-unstable-v1.xml', |
| 'protocol/linux-dmabuf-unstable-v1.xml', |
| 'protocol/linux-explicit-synchronization-unstable-v1.xml', |
| 'protocol/pointer-constraints-unstable-v1.xml', |
| 'protocol/relative-pointer-unstable-v1.xml', |
| 'protocol/text-input-unstable-v1.xml', |
| 'protocol/viewporter.xml', |
| 'protocol/xdg-shell.xml', |
| ] |
| |
| wl_outs = [] |
| |
| foreach p : wl_protocols |
| foreach g : wl_generators |
| wl_outs += g.process(p) |
| endforeach |
| endforeach |
| |
| #==========# |
| # Perfetto # |
| #==========# |
| |
| tracing_sources = [] |
| tracing_dependencies = [] |
| |
| if get_option('tracing') |
| tracing_dependencies = [ |
| dependency('threads'), |
| dependency('perfetto'), |
| ] |
| cpp_args += '-DPERFETTO_TRACING' |
| endif |
| |
| #=================# |
| # Gamepad support # |
| #=================# |
| |
| gamepad_sources = [] |
| gamepad_dependencies = [] |
| |
| if get_option('gamepad') |
| gamepad_sources = [ |
| 'sommelier-gaming.cc', |
| ] |
| gamepad_dependencies = [ |
| dependency('libevdev'), |
| ] |
| cpp_args += '-DGAMEPAD_SUPPORT' |
| endif |
| |
| #===========# |
| # Sommelier # |
| #===========# |
| |
| if get_option('commit_loop_fix') |
| cpp_args += '-DCOMMIT_LOOP_FIX' |
| endif |
| |
| sommelier_defines = [ |
| '-D_GNU_SOURCE', |
| '-DWL_HIDE_DEPRECATED', |
| '-DXWAYLAND_PATH="' + get_option('xwayland_path') + '"', |
| '-DXWAYLAND_GL_DRIVER_PATH="' + get_option('xwayland_gl_driver_path') + '"', |
| '-DFRAME_COLOR="' + get_option('frame_color') + '"', |
| '-DDARK_FRAME_COLOR="' + get_option('dark_frame_color') + '"', |
| ] |
| |
| libsommelier = static_library('sommelier', |
| sources: [ |
| 'sommelier-compositor.cc', |
| 'sommelier-ctx.cc', |
| 'sommelier-data-device-manager.cc', |
| 'sommelier-display.cc', |
| 'sommelier-drm.cc', |
| 'sommelier-gtk-shell.cc', |
| 'sommelier-global.cc', |
| 'sommelier-mmap.cc', |
| 'sommelier-output.cc', |
| 'sommelier-pointer-constraints.cc', |
| 'sommelier-relative-pointer-manager.cc', |
| 'sommelier-seat.cc', |
| 'sommelier-shell.cc', |
| 'sommelier-shm.cc', |
| 'sommelier-subcompositor.cc', |
| 'sommelier-text-input.cc', |
| 'sommelier-timing.cc', |
| 'sommelier-tracing.cc', |
| 'sommelier-util.cc', |
| 'sommelier-viewporter.cc', |
| 'sommelier-xdg-shell.cc', |
| 'sommelier.cc', |
| 'sommelier-window.cc', |
| 'virtualization/virtwl_channel.cc', |
| 'virtualization/virtgpu_channel.cc', |
| ] + wl_outs + tracing_sources + gamepad_sources, |
| dependencies: [ |
| meson.get_compiler('cpp').find_library('m'), |
| dependency('gbm'), |
| dependency('libdrm'), |
| dependency('pixman-1'), |
| dependency('wayland-client'), |
| dependency('wayland-server'), |
| dependency('xcb'), |
| dependency('xcb-composite'), |
| dependency('xcb-xfixes'), |
| dependency('xkbcommon'), |
| ] + tracing_dependencies + gamepad_dependencies, |
| cpp_args: cpp_args + sommelier_defines, |
| include_directories: includes, |
| ) |
| |
| executable('sommelier', |
| install: true, |
| sources: [ |
| 'sommelier-main.cc', |
| ] + wl_outs, |
| link_with: libsommelier, |
| cpp_args: cpp_args + sommelier_defines, |
| include_directories: includes, |
| ) |
| |
| if get_option('with_tests') |
| sommelier_test = executable('sommelier_test', |
| install: true, |
| sources: [ |
| 'sommelier_test.cc', |
| ], |
| link_with: libsommelier, |
| dependencies: [ |
| dependency('gtest'), |
| dependency('gmock'), |
| ], |
| cpp_args: cpp_args + sommelier_defines, |
| include_directories: includes, |
| ) |
| |
| test('sommelier_test', sommelier_test) |
| endif |