Files
Waybar/meson.build
T

641 lines
19 KiB
Meson
Raw Normal View History

2018-08-10 16:37:03 +02:00
project(
'waybar', 'cpp', 'c',
2026-02-06 21:15:03 +01:00
version: '0.15.0',
2018-08-10 16:37:03 +02:00
license: 'MIT',
2024-02-17 00:58:39 -08:00
meson_version: '>= 0.59.0',
2018-08-30 11:30:20 +02:00
default_options : [
2023-07-16 15:05:42 +02:00
'cpp_std=c++20',
2018-11-08 09:57:24 +01:00
'buildtype=release',
'default_library=static'
2018-08-30 11:30:20 +02:00
],
2018-08-10 16:37:03 +02:00
)
2018-08-08 23:54:58 +02:00
2020-02-11 14:38:05 +01:00
compiler = meson.get_compiler('cpp')
2018-12-26 11:13:36 +01:00
cpp_args = []
2018-08-19 13:41:22 +02:00
cpp_link_args = []
2018-08-08 23:54:58 +02:00
2019-05-12 19:53:14 +02:00
if get_option('libcxx')
2018-08-08 23:54:58 +02:00
cpp_args += ['-stdlib=libc++']
cpp_link_args += ['-stdlib=libc++', '-lc++abi']
endif
2018-08-08 23:54:58 +02:00
if compiler.has_link_argument('-lc++fs')
cpp_link_args += ['-lc++fs']
elif compiler.has_link_argument('-lstdc++fs')
2018-08-08 23:54:58 +02:00
cpp_link_args += ['-lstdc++fs']
endif
2020-04-05 16:12:25 +02:00
git = find_program('git', native: true, required: false)
2018-12-26 11:13:36 +01:00
if not git.found()
add_project_arguments('-DVERSION="@0@"'.format(meson.project_version()), language: 'cpp')
else
2024-02-16 23:59:38 -08:00
git_path = run_command(git, 'rev-parse', '--show-toplevel', check: false).stdout().strip()
if meson.project_source_root() == git_path
git_commit_hash = run_command(git, 'describe', '--always', '--tags', check: false).stdout().strip()
git_branch = run_command(git, 'rev-parse', '--abbrev-ref', 'HEAD', check: false).stdout().strip()
version = '"@0@ (branch \'@1@\')"'.format(git_commit_hash, git_branch)
2020-05-24 19:14:27 +02:00
add_project_arguments('-DVERSION=@0@'.format(version), language: 'cpp')
else
add_project_arguments('-DVERSION="@0@"'.format(meson.project_version()), language: 'cpp')
endif
2018-12-26 11:13:36 +01:00
endif
2018-11-08 09:57:24 +01:00
code = '''
#include <langinfo.h>
#include <locale.h>
int main(int argc, char** argv) {
locale_t locale = newlocale(LC_ALL, "en_US.UTF-8", nullptr);
char* str;
str = nl_langinfo_l(_NL_TIME_WEEK_1STDAY, locale);
str = nl_langinfo_l(_NL_TIME_FIRST_WEEKDAY, locale);
freelocale(locale);
return 0;
}
'''
if compiler.links(code, name : 'nl_langinfo with _NL_TIME_WEEK_1STDAY, _NL_TIME_FIRST_WEEKDAY')
add_project_arguments('-DHAVE_LANGINFO_1STDAY', language: 'cpp')
endif
2018-08-08 23:54:58 +02:00
add_global_arguments(cpp_args, language : 'cpp')
add_global_link_arguments(cpp_link_args, language : 'cpp')
2019-08-09 09:52:16 +00:00
is_linux = host_machine.system() == 'linux'
2019-08-09 10:40:33 +00:00
is_dragonfly = host_machine.system() == 'dragonfly'
is_freebsd = host_machine.system() == 'freebsd'
is_netbsd = host_machine.system() == 'netbsd'
is_openbsd = host_machine.system() == 'openbsd'
2019-08-09 09:52:16 +00:00
2018-08-08 23:54:58 +02:00
thread_dep = dependency('threads')
2022-06-24 16:44:06 +03:00
fmt = dependency('fmt', version : ['>=8.1.1'], fallback : ['fmt', 'fmt_dep'])
2025-09-25 21:46:13 +03:00
spdlog = dependency('spdlog', version : ['>=1.15.2'], fallback : ['spdlog', 'spdlog_dep'], default_options : ['std_format=disabled', 'tests=disabled'])
2018-08-08 23:54:58 +02:00
wayland_client = dependency('wayland-client')
wayland_cursor = dependency('wayland-cursor')
wayland_protos = dependency('wayland-protocols')
gtkmm = dependency('gtkmm-3.0', version : ['>=3.22.0'])
2018-10-25 11:47:03 +02:00
dbusmenu_gtk = dependency('dbusmenu-gtk3-0.4', required: get_option('dbusmenu-gtk'))
2024-02-16 23:30:00 -08:00
giounix = dependency('gio-unix-2.0')
2022-11-03 14:08:22 +01:00
jsoncpp = dependency('jsoncpp', version : ['>=1.9.2'], fallback : ['jsoncpp', 'jsoncpp_dep'])
2018-08-08 23:54:58 +02:00
sigcpp = dependency('sigc++-2.0')
libinotify = dependency('libinotify', required: false)
2019-08-09 09:52:16 +00:00
libepoll = dependency('epoll-shim', required: false)
libinput = dependency('libinput', required: get_option('libinput'))
2018-10-21 09:58:35 +00:00
libnl = dependency('libnl-3.0', required: get_option('libnl'))
libnlgen = dependency('libnl-genl-3.0', required: get_option('libnl'))
2022-03-15 17:54:06 +01:00
upower_glib = dependency('upower-glib', required: get_option('upower_glib'))
2023-10-26 23:08:57 +02:00
pipewire = dependency('libpipewire-0.3', required: get_option('pipewire'))
2021-11-01 19:17:29 +01:00
playerctl = dependency('playerctl', version : ['>=2.0.0'], required: get_option('mpris'))
2018-10-21 09:58:35 +00:00
libpulse = dependency('libpulse', required: get_option('pulseaudio'))
libudev = dependency('libudev', required: get_option('libudev'))
2021-02-07 15:05:11 -05:00
libevdev = dependency('libevdev', required: get_option('libevdev'))
2019-04-16 16:34:37 +02:00
libmpdclient = dependency('libmpdclient', required: get_option('mpd'))
2021-07-13 04:33:12 +03:00
xkbregistry = dependency('xkbregistry')
libjack = dependency('jack', required: get_option('jack'))
2024-02-15 09:37:36 +13:00
libwireplumber = dependency('wireplumber-0.5', required: get_option('wireplumber'))
2024-09-20 17:40:43 +02:00
libgps = dependency('libgps', required: get_option('gps'))
2020-09-06 14:44:13 -03:00
libsndio = compiler.find_library('sndio', required: get_option('sndio'))
if libsndio.found()
if not compiler.has_function('sioctl_open', prefix: '#include <sndio.h>', dependencies: libsndio)
if get_option('sndio').enabled()
error('libsndio is too old, required >=1.7.0')
else
warning('libsndio is too old, required >=1.7.0')
libsndio = dependency('', required: false)
endif
endif
endif
gtk_layer_shell = dependency('gtk-layer-shell-0', version: ['>=0.9.0'],
default_options: ['introspection=false', 'vapi=false'],
fallback: ['gtk-layer-shell', 'gtk_layer_shell'])
2019-09-07 19:57:35 +02:00
systemd = dependency('systemd', required: get_option('systemd'))
cpp_lib_chrono = compiler.compute_int('__cpp_lib_chrono', prefix : '#include <chrono>')
2023-11-10 17:57:26 +03:00
have_chrono_timezones = cpp_lib_chrono >= 201611
if have_chrono_timezones
code = '''
#include <chrono>
using namespace std::chrono;
int main(int argc, char** argv) {
const time_zone* tz;
return 0;
}
'''
if not compiler.links(code)
have_chrono_timezones = false
endif
endif
if have_chrono_timezones
tz_dep = declare_dependency()
else
tz_dep = dependency('date',
required: false,
default_options : [ 'use_system_tzdb=true' ],
modules : [ 'date::date', 'date::date-tz' ],
fallback: [ 'date', 'tz_dep' ])
endif
2019-09-07 19:57:35 +02:00
2019-09-10 14:12:52 +02:00
prefix = get_option('prefix')
2019-08-11 10:09:55 +00:00
sysconfdir = get_option('sysconfdir')
conf_data = configuration_data()
2019-09-10 14:12:52 +02:00
conf_data.set('prefix', prefix)
2024-02-17 00:53:45 -08:00
add_project_arguments('-DSYSCONFDIR="@0@"'.format(prefix / sysconfdir), language : 'cpp')
2019-08-11 10:09:55 +00:00
2019-09-07 19:57:35 +02:00
if systemd.found()
2024-02-16 23:59:38 -08:00
user_units_dir = systemd.get_variable(pkgconfig: 'systemduserunitdir')
configure_file(
configuration: conf_data,
input: './resources/waybar.service.in',
output: '@BASENAME@',
install_dir: user_units_dir
)
2019-09-07 19:57:35 +02:00
endif
2018-08-20 17:20:02 +02:00
src_files = files(
'src/factory.cpp',
2019-06-15 14:57:52 +02:00
'src/AModule.cpp',
2018-08-20 17:20:02 +02:00
'src/ALabel.cpp',
'src/AIconLabel.cpp',
2023-07-10 22:50:58 +02:00
'src/AAppIconLabel.cpp',
2018-08-20 17:20:02 +02:00
'src/modules/custom.cpp',
2019-09-23 22:25:54 +02:00
'src/modules/disk.cpp',
2019-08-22 17:04:09 +01:00
'src/modules/idle_inhibitor.cpp',
2022-01-16 23:55:13 +00:00
'src/modules/image.cpp',
2022-12-21 17:44:11 +01:00
'src/modules/load.cpp',
2019-03-13 13:18:08 +01:00
'src/modules/temperature.cpp',
2022-09-30 14:33:23 +03:00
'src/modules/user.cpp',
2023-10-15 11:32:05 -03:00
'src/ASlider.cpp',
2018-08-20 17:20:02 +02:00
'src/main.cpp',
'src/bar.cpp',
2020-01-21 17:48:45 +01:00
'src/client.cpp',
'src/config.cpp',
2021-10-31 23:55:13 +01:00
'src/group.cpp',
2023-09-06 15:19:56 +00:00
'src/util/portal.cpp',
'src/util/enum.cpp',
'src/util/prepare_for_sleep.cpp',
2022-10-09 19:13:54 +02:00
'src/util/ustring_clen.cpp',
2022-10-19 13:25:08 +02:00
'src/util/sanitize_str.cpp',
2023-06-28 23:28:38 +01:00
'src/util/rewrite_string.cpp',
'src/util/gtk_icon.cpp',
'src/util/icon_loader.cpp',
2024-01-21 18:23:46 -08:00
'src/util/regex_collection.cpp',
'src/util/css_reload_helper.cpp',
'src/util/transform_8bit_to_rgba.cpp'
2018-08-20 17:20:02 +02:00
)
man_files = files(
'man/waybar-custom.5.scd',
'man/waybar-disk.5.scd',
'man/waybar-idle-inhibitor.5.scd',
'man/waybar-image.5.scd',
'man/waybar-states.5.scd',
'man/waybar-menu.5.scd',
'man/waybar-temperature.5.scd',
)
2023-04-15 02:36:15 +03:00
inc_dirs = ['include']
if is_linux
2019-08-11 13:10:37 +00:00
add_project_arguments('-DHAVE_CPU_LINUX', language: 'cpp')
2019-08-09 10:40:33 +00:00
add_project_arguments('-DHAVE_MEMORY_LINUX', language: 'cpp')
2024-01-09 18:05:17 +08:00
add_project_arguments('-DHAVE_SYSTEMD_MONITOR', language: 'cpp')
src_files += files(
'src/modules/battery.cpp',
2024-02-19 13:54:46 -08:00
'src/modules/bluetooth.cpp',
'src/modules/cffi.cpp',
2023-07-29 16:27:46 +02:00
'src/modules/cpu.cpp',
2022-12-21 17:45:53 +01:00
'src/modules/cpu_frequency/common.cpp',
'src/modules/cpu_frequency/linux.cpp',
2022-12-21 17:47:06 +01:00
'src/modules/cpu_usage/common.cpp',
'src/modules/cpu_usage/linux.cpp',
2019-08-09 10:40:33 +00:00
'src/modules/memory/common.cpp',
'src/modules/memory/linux.cpp',
2024-02-18 22:06:21 +01:00
'src/modules/power_profiles_daemon.cpp',
2024-01-09 18:05:17 +08:00
'src/modules/systemd_failed_units.cpp',
2019-08-09 10:40:33 +00:00
)
man_files += files(
'man/waybar-battery.5.scd',
2024-02-19 13:54:46 -08:00
'man/waybar-bluetooth.5.scd',
'man/waybar-cffi.5.scd',
'man/waybar-cpu.5.scd',
'man/waybar-memory.5.scd',
'man/waybar-systemd-failed-units.5.scd',
2024-03-01 15:07:58 +01:00
'man/waybar-power-profiles-daemon.5.scd',
)
2019-08-09 10:40:33 +00:00
elif is_dragonfly or is_freebsd or is_netbsd or is_openbsd
2019-08-11 13:10:37 +00:00
add_project_arguments('-DHAVE_CPU_BSD', language: 'cpp')
2019-08-09 10:40:33 +00:00
add_project_arguments('-DHAVE_MEMORY_BSD', language: 'cpp')
src_files += files(
'src/modules/cffi.cpp',
2023-07-29 16:27:46 +02:00
'src/modules/cpu.cpp',
'src/modules/cpu_frequency/bsd.cpp',
'src/modules/cpu_frequency/common.cpp',
2022-12-21 17:47:06 +01:00
'src/modules/cpu_usage/bsd.cpp',
'src/modules/cpu_usage/common.cpp',
2019-08-09 10:40:33 +00:00
'src/modules/memory/bsd.cpp',
'src/modules/memory/common.cpp',
)
man_files += files(
'man/waybar-cffi.5.scd',
'man/waybar-cpu.5.scd',
'man/waybar-memory.5.scd',
)
2022-09-30 21:59:27 +02:00
if is_freebsd
src_files += files('src/modules/battery.cpp')
man_files += files('man/waybar-battery.5.scd')
2022-09-30 21:59:27 +02:00
endif
endif
if true
add_project_arguments('-DHAVE_SWAY', language: 'cpp')
src_files += files(
'src/modules/sway/ipc/client.cpp',
'src/modules/sway/bar.cpp',
'src/modules/sway/mode.cpp',
'src/modules/sway/language.cpp',
'src/modules/sway/window.cpp',
'src/modules/sway/workspaces.cpp',
'src/modules/sway/scratchpad.cpp'
)
man_files += files(
'man/waybar-sway-language.5.scd',
'man/waybar-sway-mode.5.scd',
'man/waybar-sway-scratchpad.5.scd',
'man/waybar-sway-window.5.scd',
'man/waybar-sway-workspaces.5.scd',
)
endif
2018-08-20 17:20:02 +02:00
if true
add_project_arguments('-DHAVE_WLR_TASKBAR', language: 'cpp')
src_files += files('src/modules/wlr/taskbar.cpp')
man_files += files('man/waybar-wlr-taskbar.5.scd')
endif
2025-04-11 08:00:35 +02:00
if wayland_protos.version().version_compare('>=1.39')
add_project_arguments('-DHAVE_EXT_WORKSPACES', language: 'cpp')
2025-04-11 08:00:35 +02:00
src_files += files(
'src/modules/ext/workspace_manager.cpp',
'src/modules/ext/workspace_manager_binding.cpp',
2025-04-11 08:00:35 +02:00
)
man_files += files(
'man/waybar-ext-workspaces.5.scd',
2025-04-11 08:00:35 +02:00
)
endif
2020-06-06 15:41:37 +02:00
if true
add_project_arguments('-DHAVE_RIVER', language: 'cpp')
src_files += files(
'src/modules/river/layout.cpp',
'src/modules/river/mode.cpp',
'src/modules/river/tags.cpp',
'src/modules/river/window.cpp',
)
man_files += files(
'man/waybar-river-layout.5.scd',
'man/waybar-river-mode.5.scd',
'man/waybar-river-tags.5.scd',
'man/waybar-river-window.5.scd',
)
2020-06-06 15:41:37 +02:00
endif
2023-04-11 04:50:21 +03:00
if true
add_project_arguments('-DHAVE_DWL', language: 'cpp')
src_files += files('src/modules/dwl/tags.cpp')
2024-03-14 23:07:45 +03:00
src_files += files('src/modules/dwl/window.cpp')
man_files += files('man/waybar-dwl-tags.5.scd')
2024-03-14 23:07:45 +03:00
man_files += files('man/waybar-dwl-window.5.scd')
2020-06-06 15:41:37 +02:00
endif
2022-07-01 12:46:28 +02:00
if true
add_project_arguments('-DHAVE_HYPRLAND', language: 'cpp')
src_files += files(
'src/modules/hyprland/backend.cpp',
'src/modules/hyprland/language.cpp',
'src/modules/hyprland/submap.cpp',
'src/modules/hyprland/window.cpp',
2024-08-24 00:06:24 +10:00
'src/modules/hyprland/windowcount.cpp',
'src/modules/hyprland/workspace.cpp',
'src/modules/hyprland/workspaces.cpp',
'src/modules/hyprland/windowcreationpayload.cpp',
)
man_files += files(
'man/waybar-hyprland-language.5.scd',
'man/waybar-hyprland-submap.5.scd',
'man/waybar-hyprland-window.5.scd',
'man/waybar-hyprland-workspaces.5.scd',
)
2022-07-01 12:46:28 +02:00
endif
2024-09-13 10:33:50 +03:00
if get_option('niri')
add_project_arguments('-DHAVE_NIRI', language: 'cpp')
src_files += files(
'src/modules/niri/backend.cpp',
'src/modules/niri/language.cpp',
'src/modules/niri/window.cpp',
'src/modules/niri/workspaces.cpp',
)
man_files += files(
'man/waybar-niri-language.5.scd',
'man/waybar-niri-window.5.scd',
'man/waybar-niri-workspaces.5.scd',
)
endif
if true
add_project_arguments('-DHAVE_WAYFIRE', language: 'cpp')
src_files += files(
'src/modules/wayfire/backend.cpp',
'src/modules/wayfire/window.cpp',
'src/modules/wayfire/workspaces.cpp',
)
endif
2025-03-22 18:33:03 +01:00
if get_option('login-proxy')
add_project_arguments('-DHAVE_LOGIN_PROXY', language: 'cpp')
endif
2018-08-20 17:20:02 +02:00
if libnl.found() and libnlgen.found()
add_project_arguments('-DHAVE_LIBNL', language: 'cpp')
src_files += files('src/modules/network.cpp')
man_files += files('man/waybar-network.5.scd')
2018-08-20 17:20:02 +02:00
endif
2024-02-16 23:30:00 -08:00
if not get_option('logind').disabled()
add_project_arguments('-DHAVE_GAMEMODE', '-DHAVE_LOGIND_INHIBITOR', language: 'cpp')
src_files += files(
'src/modules/gamemode.cpp',
'src/modules/inhibitor.cpp',
)
man_files += files(
'man/waybar-gamemode.5.scd',
'man/waybar-inhibitor.5.scd',
)
2022-05-13 21:30:45 +02:00
endif
2024-02-16 23:30:00 -08:00
if (upower_glib.found() and not get_option('logind').disabled())
2022-03-15 17:54:06 +01:00
add_project_arguments('-DHAVE_UPOWER', language: 'cpp')
2024-05-07 11:29:52 +03:00
src_files += files('src/modules/upower.cpp')
man_files += files('man/waybar-upower.5.scd')
2022-03-15 17:54:06 +01:00
endif
2023-10-26 23:08:57 +02:00
if pipewire.found()
2023-10-26 23:08:57 +02:00
add_project_arguments('-DHAVE_PIPEWIRE', language: 'cpp')
src_files += files(
'src/modules/privacy/privacy.cpp',
'src/modules/privacy/privacy_item.cpp',
2024-03-25 19:40:23 +01:00
'src/util/pipewire/pipewire_backend.cpp',
'src/util/pipewire/privacy_node_info.cpp',
)
man_files += files('man/waybar-privacy.5.scd')
2023-10-26 23:08:57 +02:00
endif
if playerctl.found()
2021-11-01 19:17:29 +01:00
add_project_arguments('-DHAVE_MPRIS', language: 'cpp')
src_files += files('src/modules/mpris/mpris.cpp')
man_files += files('man/waybar-mpris.5.scd')
2021-11-01 19:17:29 +01:00
endif
2018-08-20 17:20:02 +02:00
if libpulse.found()
add_project_arguments('-DHAVE_LIBPULSE', language: 'cpp')
src_files += files(
'src/modules/pulseaudio.cpp',
'src/modules/pulseaudio_slider.cpp',
'src/util/audio_backend.cpp',
)
man_files += files(
'man/waybar-pulseaudio.5.scd',
'man/waybar-pulseaudio-slider.5.scd',
)
2018-08-20 17:20:02 +02:00
endif
2018-08-08 23:54:58 +02:00
2022-07-19 19:27:39 -04:00
if libjack.found()
add_project_arguments('-DHAVE_LIBJACK', language: 'cpp')
src_files += files('src/modules/jack.cpp')
man_files += files('man/waybar-jack.5.scd')
endif
2022-11-16 12:23:12 -08:00
if libwireplumber.found()
add_project_arguments('-DHAVE_LIBWIREPLUMBER', language: 'cpp')
src_files += files('src/modules/wireplumber.cpp')
man_files += files('man/waybar-wireplumber.5.scd')
2022-11-16 12:23:12 -08:00
endif
2018-10-25 11:47:03 +02:00
if dbusmenu_gtk.found()
add_project_arguments('-DHAVE_DBUSMENU', language: 'cpp')
src_files += files(
'src/modules/sni/tray.cpp',
2018-11-22 15:47:23 +01:00
'src/modules/sni/watcher.cpp',
'src/modules/sni/host.cpp',
'src/modules/sni/item.cpp'
2018-10-25 11:47:03 +02:00
)
man_files += files(
'man/waybar-tray.5.scd',
)
2018-10-25 11:47:03 +02:00
endif
2019-08-09 09:52:16 +00:00
if libudev.found() and (is_linux or libepoll.found())
add_project_arguments('-DHAVE_LIBUDEV', language: 'cpp')
src_files += files(
'src/modules/backlight.cpp',
'src/modules/backlight_slider.cpp',
'src/util/backlight_backend.cpp',
)
man_files += files(
'man/waybar-backlight.5.scd',
'man/waybar-backlight-slider.5.scd',
)
endif
if libevdev.found() and (is_linux or libepoll.found()) and libinput.found() and (is_linux or libinotify.found())
2021-02-07 15:05:11 -05:00
add_project_arguments('-DHAVE_LIBEVDEV', language: 'cpp')
add_project_arguments('-DHAVE_LIBINPUT', language: 'cpp')
src_files += files('src/modules/keyboard_state.cpp')
man_files += files('man/waybar-keyboard-state.5.scd')
2021-02-07 15:05:11 -05:00
endif
2019-04-16 16:34:37 +02:00
if libmpdclient.found()
add_project_arguments('-DHAVE_LIBMPDCLIENT', language: 'cpp')
src_files += files(
'src/modules/mpd/mpd.cpp',
'src/modules/mpd/state.cpp',
)
man_files += files(
'man/waybar-mpd.5.scd',
)
2019-04-16 16:34:37 +02:00
endif
2020-09-06 14:44:13 -03:00
if libsndio.found()
add_project_arguments('-DHAVE_LIBSNDIO', language: 'cpp')
src_files += files('src/modules/sndio.cpp')
man_files += files('man/waybar-sndio.5.scd')
endif
2022-05-02 18:11:21 +02:00
if get_option('rfkill').enabled() and is_linux
add_project_arguments('-DWANT_RFKILL', language: 'cpp')
src_files += files(
'src/util/rfkill.cpp'
)
2020-08-14 20:56:45 +02:00
endif
if have_chrono_timezones
add_project_arguments('-DHAVE_CHRONO_TIMEZONES', language: 'cpp')
src_files += files('src/modules/clock.cpp')
man_files += files('man/waybar-clock.5.scd')
elif tz_dep.found()
add_project_arguments('-DHAVE_LIBDATE', language: 'cpp')
src_files += files('src/modules/clock.cpp')
man_files += files('man/waybar-clock.5.scd')
else
src_files += files('src/modules/simpleclock.cpp')
man_files += files('man/waybar-clock.5.scd')
endif
2025-11-26 13:26:32 +03:00
cava = dependency('libcava',
version : '>=0.10.7',
2023-04-28 13:38:35 +03:00
required: get_option('cava'),
2025-11-26 13:26:32 +03:00
fallback : ['libcava', 'cava_dep'],
2023-04-28 13:38:35 +03:00
not_found_message: 'cava is not found. Building waybar without cava')
2023-04-15 02:36:15 +03:00
2025-12-07 23:08:55 +03:00
eproxy = dependency('epoxy', required: false)
2023-04-15 02:36:15 +03:00
if cava.found()
add_project_arguments('-DHAVE_LIBCAVA', language: 'cpp')
2025-12-09 18:13:45 +03:00
src_files += files('src/modules/cava/cavaRaw.cpp',
2025-12-07 23:08:55 +03:00
'src/modules/cava/cava_backend.cpp')
man_files += files('man/waybar-cava.5.scd')
2025-12-07 23:08:55 +03:00
if eproxy.found()
add_project_arguments('-DHAVE_LIBCAVAGLSL', language: 'cpp')
src_files += files('src/modules/cava/cavaGLSL.cpp')
endif
2023-04-15 02:36:15 +03:00
endif
2024-09-20 17:40:43 +02:00
if libgps.found()
add_project_arguments('-DHAVE_LIBGPS', language: 'cpp')
src_files += files('src/modules/gps.cpp')
man_files += files('man/waybar-gps.5.scd')
endif
2018-08-08 23:54:58 +02:00
subdir('protocol')
2023-10-26 23:08:57 +02:00
app_resources = []
subdir('resources/icons')
2018-08-08 23:54:58 +02:00
executable(
'waybar',
2023-10-26 23:08:57 +02:00
[src_files, app_resources],
2018-08-08 23:54:58 +02:00
dependencies: [
thread_dep,
client_protos,
wayland_client,
fmt,
2019-05-18 19:44:45 -04:00
spdlog,
2018-08-08 23:54:58 +02:00
sigcpp,
jsoncpp,
wayland_cursor,
gtkmm,
2018-10-04 18:03:01 +02:00
dbusmenu_gtk,
2018-10-26 23:19:58 -07:00
giounix,
libinput,
2018-08-09 16:38:24 +02:00
libnl,
libnlgen,
2022-03-15 17:54:06 +01:00
upower_glib,
2023-10-26 23:08:57 +02:00
pipewire,
2021-11-01 19:17:29 +01:00
playerctl,
2019-02-10 02:35:19 -07:00
libpulse,
libjack,
2022-11-16 12:23:12 -08:00
libwireplumber,
2019-04-16 16:34:37 +02:00
libudev,
libinotify,
2019-08-09 09:52:16 +00:00
libepoll,
libmpdclient,
2021-02-07 15:05:11 -05:00
libevdev,
gtk_layer_shell,
2020-09-06 14:44:13 -03:00
libsndio,
2021-07-13 04:33:12 +03:00
tz_dep,
2023-04-15 02:36:15 +03:00
xkbregistry,
2024-09-20 17:40:43 +02:00
cava,
2025-12-07 23:08:55 +03:00
eproxy,
2024-09-20 17:40:43 +02:00
libgps
2018-08-08 23:54:58 +02:00
],
2023-04-15 02:36:15 +03:00
include_directories: inc_dirs,
2018-08-08 23:54:58 +02:00
install: true,
)
2018-08-09 17:02:30 +02:00
install_data(
2024-02-25 11:33:04 -08:00
'resources/config.jsonc',
'resources/style.css',
2024-02-17 00:53:45 -08:00
install_dir: sysconfdir / 'xdg/waybar'
2018-08-09 17:02:30 +02:00
)
2018-08-16 14:29:41 +02:00
scdoc = dependency('scdoc', version: '>=1.9.2', native: true, required: get_option('man-pages'))
2019-08-22 17:04:09 +01:00
if scdoc.found()
man_files += configure_file(
input: 'man/waybar.5.scd.in',
output: 'waybar.5.scd',
configuration: {
2024-02-17 00:53:45 -08:00
'sysconfdir': prefix / sysconfdir
}
)
2024-04-09 10:02:33 -04:00
man_files += configure_file(
input: 'man/waybar-styles.5.scd.in',
output: 'waybar-styles.5.scd',
configuration: {
'sysconfdir': prefix / sysconfdir
}
)
fs = import('fs')
2019-08-22 17:04:09 +01:00
mandir = get_option('mandir')
foreach file : man_files
basename = fs.name(file)
2020-11-26 15:31:40 -08:00
topic = basename.split('.')[-3]
section = basename.split('.')[-2]
2019-08-22 17:04:09 +01:00
output = '@0@.@1@'.format(topic, section)
custom_target(
output,
input: file,
2019-08-22 17:04:09 +01:00
output: output,
2024-02-17 00:58:39 -08:00
command: scdoc.get_variable('scdoc'),
feed: true,
capture: true,
2019-08-22 17:04:09 +01:00
install: true,
install_dir: '@0@/man@1@'.format(mandir, section)
)
endforeach
endif
2023-07-01 02:23:37 +03:00
catch2 = dependency(
'catch2',
2024-02-17 08:56:43 -08:00
default_options: [ 'tests=false' ],
2023-07-01 02:23:37 +03:00
fallback: ['catch2', 'catch2_dep'],
required: get_option('tests'),
)
if catch2.found()
subdir('test')
endif
2021-08-13 18:33:24 -07:00
2018-08-16 14:29:41 +02:00
clangtidy = find_program('clang-tidy', required: false)
if clangtidy.found()
run_target(
'tidy',
command: [
clangtidy,
'-checks=*,-fuchsia-default-arguments',
2024-02-16 23:59:38 -08:00
'-p', meson.project_build_root()
2018-08-16 14:29:41 +02:00
] + src_files)
endif