2018-08-10 14:37:03 +00:00
|
|
|
project(
|
|
|
|
'waybar', 'cpp', 'c',
|
2020-04-11 10:24:49 +00:00
|
|
|
version: '0.9.2',
|
2018-08-10 14:37:03 +00:00
|
|
|
license: 'MIT',
|
2018-08-30 09:30:20 +00:00
|
|
|
default_options : [
|
|
|
|
'cpp_std=c++17',
|
2018-11-08 08:57:24 +00:00
|
|
|
'buildtype=release',
|
|
|
|
'default_library=static'
|
2018-08-30 09:30:20 +00:00
|
|
|
],
|
2018-08-10 14:37:03 +00:00
|
|
|
)
|
2018-08-08 21:54:58 +00:00
|
|
|
|
2020-02-11 13:38:05 +00:00
|
|
|
compiler = meson.get_compiler('cpp')
|
|
|
|
|
2018-12-26 10:13:36 +00:00
|
|
|
cpp_args = []
|
2018-08-19 11:41:22 +00:00
|
|
|
cpp_link_args = []
|
2018-08-08 21:54:58 +00:00
|
|
|
|
2019-05-12 17:53:14 +00:00
|
|
|
if get_option('libcxx')
|
2018-08-08 21:54:58 +00:00
|
|
|
cpp_args += ['-stdlib=libc++']
|
|
|
|
cpp_link_args += ['-stdlib=libc++', '-lc++abi']
|
2019-08-09 10:00:52 +00:00
|
|
|
endif
|
2018-08-08 21:54:58 +00:00
|
|
|
|
2019-08-09 10:00:52 +00:00
|
|
|
if compiler.has_link_argument('-lc++fs')
|
|
|
|
cpp_link_args += ['-lc++fs']
|
|
|
|
elif compiler.has_link_argument('-lc++experimental')
|
|
|
|
cpp_link_args += ['-lc++experimental']
|
|
|
|
elif compiler.has_link_argument('-lstdc++fs')
|
2018-08-08 21:54:58 +00:00
|
|
|
cpp_link_args += ['-lstdc++fs']
|
|
|
|
endif
|
|
|
|
|
2020-04-05 14:12:25 +00:00
|
|
|
git = find_program('git', native: true, required: false)
|
2018-12-26 10:13:36 +00:00
|
|
|
|
|
|
|
if not git.found()
|
|
|
|
add_project_arguments('-DVERSION="@0@"'.format(meson.project_version()), language: 'cpp')
|
|
|
|
else
|
|
|
|
git_commit_hash = run_command([git.path(), 'describe', '--always', '--tags']).stdout().strip()
|
|
|
|
git_branch = run_command([git.path(), 'rev-parse', '--abbrev-ref', 'HEAD']).stdout().strip()
|
|
|
|
version = '"@0@ (" __DATE__ ", branch \'@1@\')"'.format(git_commit_hash, git_branch)
|
|
|
|
add_project_arguments('-DVERSION=@0@'.format(version), language: 'cpp')
|
|
|
|
endif
|
2018-11-08 08:57:24 +00:00
|
|
|
|
|
|
|
if not compiler.has_header('filesystem')
|
2019-05-12 17:53:14 +00:00
|
|
|
if compiler.has_header('experimental/filesystem')
|
|
|
|
add_project_arguments('-DFILESYSTEM_EXPERIMENTAL', language: 'cpp')
|
|
|
|
else
|
|
|
|
add_project_arguments('-DNO_FILESYSTEM', language: 'cpp')
|
|
|
|
warning('No filesystem header found, some modules may not work')
|
|
|
|
endif
|
2018-11-08 08:57:24 +00:00
|
|
|
endif
|
|
|
|
|
2020-02-05 19:02:42 +00:00
|
|
|
code = '''
|
|
|
|
#include <langinfo.h>
|
|
|
|
#include <locale.h>
|
2020-02-04 00:58:18 +00:00
|
|
|
int main(int argc, char** argv) {
|
2020-02-05 19:02:42 +00:00
|
|
|
locale_t locale = newlocale(LC_ALL, "en_US.UTF-8", nullptr);
|
2020-02-04 00:58:18 +00:00
|
|
|
char* str;
|
2020-02-05 19:02:42 +00:00
|
|
|
str = nl_langinfo_l(_NL_TIME_WEEK_1STDAY, locale);
|
|
|
|
str = nl_langinfo_l(_NL_TIME_FIRST_WEEKDAY, locale);
|
|
|
|
freelocale(locale);
|
2020-02-04 00:58:18 +00:00
|
|
|
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 21:54:58 +00:00
|
|
|
add_global_arguments(cpp_args, language : 'cpp')
|
|
|
|
add_global_link_arguments(cpp_link_args, language : 'cpp')
|
|
|
|
|
|
|
|
thread_dep = dependency('threads')
|
2019-04-23 02:40:27 +00:00
|
|
|
fmt = dependency('fmt', version : ['>=5.3.0'], fallback : ['fmt', 'fmt_dep'])
|
2019-05-18 23:44:45 +00:00
|
|
|
spdlog = dependency('spdlog', version : ['>=1.3.1'], fallback : ['spdlog', 'spdlog_dep'])
|
2018-08-08 21:54:58 +00:00
|
|
|
wayland_client = dependency('wayland-client')
|
|
|
|
wayland_cursor = dependency('wayland-cursor')
|
|
|
|
wayland_protos = dependency('wayland-protocols')
|
2019-08-28 03:57:23 +00:00
|
|
|
gtkmm = dependency('gtkmm-3.0', version : ['>=3.22.0'])
|
2018-10-25 09:47:03 +00:00
|
|
|
dbusmenu_gtk = dependency('dbusmenu-gtk3-0.4', required: get_option('dbusmenu-gtk'))
|
2018-10-27 06:19:58 +00:00
|
|
|
giounix = dependency('gio-unix-2.0', required: get_option('dbusmenu-gtk'))
|
2018-08-08 21:54:58 +00:00
|
|
|
jsoncpp = dependency('jsoncpp')
|
|
|
|
sigcpp = dependency('sigc++-2.0')
|
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'))
|
|
|
|
libpulse = dependency('libpulse', required: get_option('pulseaudio'))
|
2019-02-19 04:11:18 +00:00
|
|
|
libudev = dependency('libudev', required: get_option('libudev'))
|
2019-04-16 14:34:37 +00:00
|
|
|
libmpdclient = dependency('libmpdclient', required: get_option('mpd'))
|
2019-08-18 01:12:20 +00:00
|
|
|
gtk_layer_shell = dependency('gtk-layer-shell-0',
|
|
|
|
required: get_option('gtk-layer-shell'),
|
|
|
|
fallback : ['gtk-layer-shell', 'gtk_layer_shell_dep'])
|
2019-09-07 17:57:35 +00:00
|
|
|
systemd = dependency('systemd', required: get_option('systemd'))
|
2020-01-20 23:47:15 +00:00
|
|
|
tz_dep = dependency('date', default_options : [ 'use_system_tzdb=true' ], fallback: [ 'date', 'tz_dep' ])
|
2019-09-07 17:57:35 +00:00
|
|
|
|
2019-09-10 12:12:52 +00:00
|
|
|
prefix = get_option('prefix')
|
build: drop -Dout in favor of --prefix
$ meson --prefix=/tmp/foo _build
$ ninja install -C _build
[49/50] Installing files.
Installing waybar to /tmp/foo/bin
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/mesonbuild/mesonmain.py", line 127, in run
return options.run_func(options)
File "/usr/lib/python3.6/site-packages/mesonbuild/minstall.py", line 514, in run
installer.do_install(datafilename)
File "/usr/lib/python3.6/site-packages/mesonbuild/minstall.py", line 346, in do_install
self.install_data(d)
File "/usr/lib/python3.6/site-packages/mesonbuild/minstall.py", line 375, in install_data
d.dirmaker.makedirs(outdir, exist_ok=True)
File "/usr/lib/python3.6/site-packages/mesonbuild/minstall.py", line 55, in makedirs
os.makedirs(path, exist_ok=exist_ok)
File "/usr/lib/python3.6/os.py", line 210, in makedirs
makedirs(head, mode, exist_ok)
File "/usr/lib/python3.6/os.py", line 220, in makedirs
mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/etc/xdg'
FAILED: meson-install
2019-08-11 10:09:55 +00:00
|
|
|
sysconfdir = get_option('sysconfdir')
|
2019-09-08 12:04:34 +00:00
|
|
|
conf_data = configuration_data()
|
2019-09-10 12:12:52 +00:00
|
|
|
conf_data.set('prefix', prefix)
|
2019-09-08 12:04:34 +00:00
|
|
|
|
build: drop -Dout in favor of --prefix
$ meson --prefix=/tmp/foo _build
$ ninja install -C _build
[49/50] Installing files.
Installing waybar to /tmp/foo/bin
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/mesonbuild/mesonmain.py", line 127, in run
return options.run_func(options)
File "/usr/lib/python3.6/site-packages/mesonbuild/minstall.py", line 514, in run
installer.do_install(datafilename)
File "/usr/lib/python3.6/site-packages/mesonbuild/minstall.py", line 346, in do_install
self.install_data(d)
File "/usr/lib/python3.6/site-packages/mesonbuild/minstall.py", line 375, in install_data
d.dirmaker.makedirs(outdir, exist_ok=True)
File "/usr/lib/python3.6/site-packages/mesonbuild/minstall.py", line 55, in makedirs
os.makedirs(path, exist_ok=exist_ok)
File "/usr/lib/python3.6/os.py", line 210, in makedirs
makedirs(head, mode, exist_ok)
File "/usr/lib/python3.6/os.py", line 220, in makedirs
mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/etc/xdg'
FAILED: meson-install
2019-08-11 10:09:55 +00:00
|
|
|
add_project_arguments('-DSYSCONFDIR="/@0@"'.format(join_paths(prefix, sysconfdir)), language : 'cpp')
|
|
|
|
|
2019-09-07 17:57:35 +00:00
|
|
|
if systemd.found()
|
|
|
|
user_units_dir = systemd.get_pkgconfig_variable('systemduserunitdir')
|
2019-09-08 12:04:34 +00:00
|
|
|
|
|
|
|
configure_file(
|
|
|
|
configuration: conf_data,
|
|
|
|
input: './resources/waybar.service.in',
|
|
|
|
output: '@BASENAME@',
|
|
|
|
install_dir: user_units_dir
|
|
|
|
)
|
2019-09-07 17:57:35 +00:00
|
|
|
endif
|
2018-08-08 21:54:58 +00:00
|
|
|
|
2018-08-20 15:20:02 +00:00
|
|
|
src_files = files(
|
|
|
|
'src/factory.cpp',
|
2019-06-15 12:57:52 +00:00
|
|
|
'src/AModule.cpp',
|
2018-08-20 15:20:02 +00:00
|
|
|
'src/ALabel.cpp',
|
|
|
|
'src/modules/memory.cpp',
|
|
|
|
'src/modules/battery.cpp',
|
2020-01-21 14:46:08 +00:00
|
|
|
'src/modules/bluetooth.cpp',
|
2018-08-20 15:20:02 +00:00
|
|
|
'src/modules/clock.cpp',
|
|
|
|
'src/modules/custom.cpp',
|
|
|
|
'src/modules/cpu.cpp',
|
2019-09-23 20:25:54 +00:00
|
|
|
'src/modules/disk.cpp',
|
2019-08-22 16:04:09 +00:00
|
|
|
'src/modules/idle_inhibitor.cpp',
|
2019-03-13 12:18:08 +00:00
|
|
|
'src/modules/temperature.cpp',
|
2018-08-20 15:20:02 +00:00
|
|
|
'src/main.cpp',
|
|
|
|
'src/bar.cpp',
|
2020-01-21 16:48:45 +00:00
|
|
|
'src/client.cpp',
|
|
|
|
'src/util/rfkill.cpp'
|
2018-08-20 15:20:02 +00:00
|
|
|
)
|
2018-08-08 21:54:58 +00:00
|
|
|
|
2019-03-30 08:15:51 +00:00
|
|
|
if true # find_program('sway', required : false).found()
|
2018-08-20 15:20:02 +00:00
|
|
|
add_project_arguments('-DHAVE_SWAY', language: 'cpp')
|
|
|
|
src_files += [
|
|
|
|
'src/modules/sway/ipc/client.cpp',
|
2018-10-30 12:39:30 +00:00
|
|
|
'src/modules/sway/mode.cpp',
|
2018-08-20 15:20:02 +00:00
|
|
|
'src/modules/sway/window.cpp',
|
|
|
|
'src/modules/sway/workspaces.cpp'
|
|
|
|
]
|
|
|
|
endif
|
|
|
|
|
|
|
|
if libnl.found() and libnlgen.found()
|
|
|
|
add_project_arguments('-DHAVE_LIBNL', language: 'cpp')
|
|
|
|
src_files += 'src/modules/network.cpp'
|
|
|
|
endif
|
|
|
|
|
|
|
|
if libpulse.found()
|
|
|
|
add_project_arguments('-DHAVE_LIBPULSE', language: 'cpp')
|
|
|
|
src_files += 'src/modules/pulseaudio.cpp'
|
|
|
|
endif
|
|
|
|
|
2018-10-25 09:47:03 +00:00
|
|
|
if dbusmenu_gtk.found()
|
|
|
|
add_project_arguments('-DHAVE_DBUSMENU', language: 'cpp')
|
|
|
|
src_files += files(
|
|
|
|
'src/modules/sni/tray.cpp',
|
2018-11-22 14:47:23 +00:00
|
|
|
'src/modules/sni/watcher.cpp',
|
|
|
|
'src/modules/sni/host.cpp',
|
|
|
|
'src/modules/sni/item.cpp'
|
2018-10-25 09:47:03 +00:00
|
|
|
)
|
|
|
|
endif
|
|
|
|
|
2019-02-19 04:11:18 +00:00
|
|
|
if libudev.found()
|
|
|
|
add_project_arguments('-DHAVE_LIBUDEV', language: 'cpp')
|
|
|
|
src_files += 'src/modules/backlight.cpp'
|
|
|
|
endif
|
|
|
|
|
2019-04-16 14:34:37 +00:00
|
|
|
if libmpdclient.found()
|
|
|
|
add_project_arguments('-DHAVE_LIBMPDCLIENT', language: 'cpp')
|
|
|
|
src_files += 'src/modules/mpd.cpp'
|
|
|
|
endif
|
|
|
|
|
2019-08-18 01:12:20 +00:00
|
|
|
if gtk_layer_shell.found()
|
|
|
|
add_project_arguments('-DHAVE_GTK_LAYER_SHELL', language: 'cpp')
|
|
|
|
endif
|
|
|
|
|
2018-08-20 15:20:02 +00:00
|
|
|
subdir('protocol')
|
2018-08-16 12:29:41 +00:00
|
|
|
|
2018-08-08 21:54:58 +00:00
|
|
|
executable(
|
|
|
|
'waybar',
|
2018-08-16 12:29:41 +00:00
|
|
|
src_files,
|
2018-08-08 21:54:58 +00:00
|
|
|
dependencies: [
|
|
|
|
thread_dep,
|
|
|
|
client_protos,
|
|
|
|
wayland_client,
|
|
|
|
fmt,
|
2019-05-18 23:44:45 +00:00
|
|
|
spdlog,
|
2018-08-08 21:54:58 +00:00
|
|
|
sigcpp,
|
|
|
|
jsoncpp,
|
|
|
|
wayland_cursor,
|
|
|
|
gtkmm,
|
2018-10-04 16:03:01 +00:00
|
|
|
dbusmenu_gtk,
|
2018-10-27 06:19:58 +00:00
|
|
|
giounix,
|
2018-08-09 14:38:24 +00:00
|
|
|
libnl,
|
|
|
|
libnlgen,
|
2019-02-10 09:35:19 +00:00
|
|
|
libpulse,
|
2019-04-16 14:34:37 +00:00
|
|
|
libudev,
|
2019-08-18 01:12:20 +00:00
|
|
|
libmpdclient,
|
2020-01-20 23:47:15 +00:00
|
|
|
gtk_layer_shell,
|
|
|
|
tz_dep
|
2018-08-08 21:54:58 +00:00
|
|
|
],
|
|
|
|
include_directories: [include_directories('include')],
|
|
|
|
install: true,
|
|
|
|
)
|
2018-08-09 15:02:30 +00:00
|
|
|
|
|
|
|
install_data(
|
|
|
|
'./resources/config',
|
|
|
|
'./resources/style.css',
|
build: drop -Dout in favor of --prefix
$ meson --prefix=/tmp/foo _build
$ ninja install -C _build
[49/50] Installing files.
Installing waybar to /tmp/foo/bin
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/mesonbuild/mesonmain.py", line 127, in run
return options.run_func(options)
File "/usr/lib/python3.6/site-packages/mesonbuild/minstall.py", line 514, in run
installer.do_install(datafilename)
File "/usr/lib/python3.6/site-packages/mesonbuild/minstall.py", line 346, in do_install
self.install_data(d)
File "/usr/lib/python3.6/site-packages/mesonbuild/minstall.py", line 375, in install_data
d.dirmaker.makedirs(outdir, exist_ok=True)
File "/usr/lib/python3.6/site-packages/mesonbuild/minstall.py", line 55, in makedirs
os.makedirs(path, exist_ok=exist_ok)
File "/usr/lib/python3.6/os.py", line 210, in makedirs
makedirs(head, mode, exist_ok)
File "/usr/lib/python3.6/os.py", line 220, in makedirs
mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/etc/xdg'
FAILED: meson-install
2019-08-11 10:09:55 +00:00
|
|
|
install_dir: sysconfdir + '/xdg/waybar'
|
2018-08-09 15:02:30 +00:00
|
|
|
)
|
2018-08-16 12:29:41 +00:00
|
|
|
|
2019-08-29 10:25:04 +00:00
|
|
|
scdoc = dependency('scdoc', version: '>=1.9.2', native: true, required: get_option('man-pages'))
|
2019-08-22 16:04:09 +00:00
|
|
|
|
|
|
|
if scdoc.found()
|
|
|
|
scdoc_prog = find_program(scdoc.get_pkgconfig_variable('scdoc'), native: true)
|
|
|
|
sh = find_program('sh', native: true)
|
|
|
|
mandir = get_option('mandir')
|
|
|
|
man_files = [
|
|
|
|
'waybar.5.scd',
|
2019-08-24 14:39:46 +00:00
|
|
|
'waybar-backlight.5.scd',
|
2019-08-24 16:44:29 +00:00
|
|
|
'waybar-battery.5.scd',
|
2019-08-26 12:31:57 +00:00
|
|
|
'waybar-clock.5.scd',
|
2019-08-26 12:23:11 +00:00
|
|
|
'waybar-cpu.5.scd',
|
2019-08-26 12:42:59 +00:00
|
|
|
'waybar-custom.5.scd',
|
2019-09-25 07:07:46 +00:00
|
|
|
'waybar-disk.5.scd',
|
2019-08-26 14:06:20 +00:00
|
|
|
'waybar-idle-inhibitor.5.scd',
|
2019-08-26 14:12:42 +00:00
|
|
|
'waybar-memory.5.scd',
|
2019-08-26 14:23:07 +00:00
|
|
|
'waybar-mpd.5.scd',
|
2019-08-26 16:42:30 +00:00
|
|
|
'waybar-network.5.scd',
|
2019-08-26 16:50:16 +00:00
|
|
|
'waybar-pulseaudio.5.scd',
|
2019-08-26 16:55:20 +00:00
|
|
|
'waybar-sway-mode.5.scd',
|
2019-08-26 17:00:46 +00:00
|
|
|
'waybar-sway-window.5.scd',
|
2019-08-26 17:08:06 +00:00
|
|
|
'waybar-sway-workspaces.5.scd',
|
2019-08-26 17:13:48 +00:00
|
|
|
'waybar-temperature.5.scd',
|
2019-08-26 17:15:58 +00:00
|
|
|
'waybar-tray.5.scd',
|
2019-08-26 21:49:04 +00:00
|
|
|
'waybar-states.5.scd',
|
2020-04-28 15:40:44 +00:00
|
|
|
'waybar-bluetooth.5.scd',
|
2019-08-22 16:04:09 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
foreach filename : man_files
|
|
|
|
topic = filename.split('.')[-3].split('/')[-1]
|
|
|
|
section = filename.split('.')[-2]
|
|
|
|
output = '@0@.@1@'.format(topic, section)
|
|
|
|
|
|
|
|
custom_target(
|
|
|
|
output,
|
2019-08-26 12:11:06 +00:00
|
|
|
input: 'man/@0@'.format(filename),
|
2019-08-22 16:04:09 +00:00
|
|
|
output: output,
|
|
|
|
command: [
|
|
|
|
sh, '-c', '@0@ < @INPUT@ > @1@'.format(scdoc_prog.path(), output)
|
|
|
|
],
|
|
|
|
install: true,
|
|
|
|
install_dir: '@0@/man@1@'.format(mandir, section)
|
|
|
|
)
|
|
|
|
endforeach
|
|
|
|
endif
|
|
|
|
|
2018-08-16 12:29:41 +00:00
|
|
|
clangtidy = find_program('clang-tidy', required: false)
|
|
|
|
|
|
|
|
if clangtidy.found()
|
|
|
|
run_target(
|
|
|
|
'tidy',
|
|
|
|
command: [
|
|
|
|
clangtidy,
|
|
|
|
'-checks=*,-fuchsia-default-arguments',
|
|
|
|
'-p', meson.build_root()
|
|
|
|
] + src_files)
|
|
|
|
endif
|