2017-11-29 15:03:12 +01:00
|
|
|
project(
|
|
|
|
'sway',
|
|
|
|
'c',
|
|
|
|
license: 'MIT',
|
|
|
|
default_options: [
|
|
|
|
'c_std=c11',
|
|
|
|
'warning_level=2',
|
|
|
|
'werror=true',
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
2017-12-01 11:42:12 +01:00
|
|
|
add_project_arguments('-Wno-unused-parameter', language: 'c')
|
2018-02-18 17:20:18 +01:00
|
|
|
add_project_arguments('-Wno-unused-function', language: 'c')
|
2018-04-05 21:23:59 +02:00
|
|
|
add_project_arguments('-Wno-unused-result', language: 'c')
|
2018-08-27 08:01:00 +02:00
|
|
|
add_project_arguments('-DWL_HIDE_DEPRECATED', language: 'c')
|
2018-07-30 01:33:54 +02:00
|
|
|
add_project_arguments('-DWLR_USE_UNSTABLE', language: 'c')
|
2017-12-01 11:42:12 +01:00
|
|
|
|
2017-11-29 15:03:12 +01:00
|
|
|
cc = meson.get_compiler('c')
|
|
|
|
|
2017-11-30 14:31:13 +01:00
|
|
|
is_freebsd = host_machine.system().startswith('freebsd')
|
|
|
|
datadir = get_option('datadir')
|
|
|
|
sysconfdir = get_option('sysconfdir')
|
|
|
|
prefix = get_option('prefix')
|
|
|
|
|
2018-04-17 09:54:02 +02:00
|
|
|
swayidle_deps = []
|
|
|
|
|
2018-01-04 16:43:40 +01:00
|
|
|
jsonc = dependency('json-c', version: '>=0.13')
|
2017-11-30 09:41:51 +01:00
|
|
|
pcre = dependency('libpcre')
|
2018-03-12 12:21:46 +01:00
|
|
|
wlroots = dependency('wlroots', fallback: ['wlroots', 'wlroots'])
|
2017-11-29 15:03:12 +01:00
|
|
|
wayland_server = dependency('wayland-server')
|
|
|
|
wayland_client = dependency('wayland-client')
|
2018-03-31 03:38:28 +02:00
|
|
|
wayland_cursor = dependency('wayland-cursor')
|
2017-11-29 15:03:12 +01:00
|
|
|
wayland_egl = dependency('wayland-egl')
|
2018-05-19 00:47:47 +02:00
|
|
|
wayland_protos = dependency('wayland-protocols', version: '>=1.14')
|
2017-11-29 15:03:12 +01:00
|
|
|
xkbcommon = dependency('xkbcommon')
|
2018-03-27 21:25:25 +02:00
|
|
|
cairo = dependency('cairo')
|
2017-11-30 09:41:51 +01:00
|
|
|
pango = dependency('pango')
|
2018-03-27 21:25:25 +02:00
|
|
|
pangocairo = dependency('pangocairo')
|
|
|
|
gdk_pixbuf = dependency('gdk-pixbuf-2.0', required: false)
|
2017-11-30 09:41:51 +01:00
|
|
|
pixman = dependency('pixman-1')
|
2018-08-30 09:40:35 +02:00
|
|
|
libcap = dependency('libcap', required: false)
|
2018-04-08 01:34:12 +02:00
|
|
|
libinput = dependency('libinput', version: '>=1.6.0')
|
2018-05-05 17:28:00 +02:00
|
|
|
libpam = cc.find_library('pam')
|
2018-04-17 09:54:02 +02:00
|
|
|
systemd = dependency('libsystemd', required: false)
|
|
|
|
elogind = dependency('libelogind', required: false)
|
2017-11-29 15:03:12 +01:00
|
|
|
math = cc.find_library('m')
|
2018-03-29 05:04:20 +02:00
|
|
|
rt = cc.find_library('rt')
|
2018-06-18 23:49:28 +02:00
|
|
|
git = find_program('git', required: false)
|
2017-11-30 17:34:44 +01:00
|
|
|
|
2018-03-28 18:21:50 +02:00
|
|
|
conf_data = configuration_data()
|
|
|
|
|
2018-07-24 22:16:06 +02:00
|
|
|
if get_option('enable-xwayland')
|
2018-07-24 23:37:41 +02:00
|
|
|
conf_data.set('HAVE_XWAYLAND', true)
|
2018-08-02 09:36:47 +02:00
|
|
|
xcb = dependency('xcb')
|
2018-07-24 22:16:06 +02:00
|
|
|
else
|
2018-07-24 23:37:41 +02:00
|
|
|
conf_data.set('HAVE_XWAYLAND', false)
|
2018-07-24 22:16:06 +02:00
|
|
|
endif
|
|
|
|
|
2018-03-27 21:25:25 +02:00
|
|
|
if gdk_pixbuf.found()
|
2018-03-28 18:21:50 +02:00
|
|
|
conf_data.set('HAVE_GDK_PIXBUF', true)
|
2018-03-27 21:25:25 +02:00
|
|
|
endif
|
|
|
|
|
2018-04-17 09:54:02 +02:00
|
|
|
if systemd.found()
|
|
|
|
conf_data.set('SWAY_IDLE_HAS_SYSTEMD', true)
|
|
|
|
swayidle_deps += systemd
|
|
|
|
endif
|
|
|
|
|
|
|
|
if elogind.found()
|
|
|
|
conf_data.set('SWAY_IDLE_HAS_ELOGIND', true)
|
|
|
|
swayidle_deps += elogind
|
|
|
|
endif
|
|
|
|
|
2018-05-11 14:39:46 +02:00
|
|
|
scdoc = find_program('scdoc', required: false)
|
|
|
|
|
|
|
|
if scdoc.found()
|
|
|
|
sh = find_program('sh')
|
2017-11-30 17:34:44 +01:00
|
|
|
mandir = get_option('mandir')
|
|
|
|
man_files = [
|
2018-05-11 14:39:46 +02:00
|
|
|
'sway/sway.1.scd',
|
2018-05-12 02:58:34 +02:00
|
|
|
'sway/sway.5.scd',
|
2018-05-12 03:13:43 +02:00
|
|
|
'sway/sway-bar.5.scd',
|
2018-05-12 03:25:05 +02:00
|
|
|
'sway/sway-input.5.scd',
|
2018-05-12 03:39:47 +02:00
|
|
|
'swaylock/swaylock.1.scd',
|
|
|
|
'swaymsg/swaymsg.1.scd',
|
2018-04-17 09:54:02 +02:00
|
|
|
'swayidle/swayidle.1.scd',
|
2018-07-27 17:19:42 +02:00
|
|
|
'swaynag/swaynag.1.scd',
|
2018-07-28 15:34:25 +02:00
|
|
|
'swaynag/swaynag.5.scd',
|
2017-11-30 17:34:44 +01:00
|
|
|
]
|
|
|
|
foreach filename : man_files
|
|
|
|
topic = filename.split('.')[-3].split('/')[-1]
|
|
|
|
section = filename.split('.')[-2]
|
2018-05-11 14:39:46 +02:00
|
|
|
output = '@0@.@1@'.format(topic, section)
|
2017-11-30 17:34:44 +01:00
|
|
|
|
|
|
|
custom_target(
|
2018-05-11 14:39:46 +02:00
|
|
|
output,
|
2017-11-30 17:34:44 +01:00
|
|
|
input: filename,
|
2018-05-11 14:39:46 +02:00
|
|
|
output: output,
|
2017-11-30 17:34:44 +01:00
|
|
|
command: [
|
2018-05-11 14:39:46 +02:00
|
|
|
sh, '-c', '@0@ < @INPUT@ > @1@'.format(scdoc.path(), output)
|
2017-11-30 17:34:44 +01:00
|
|
|
],
|
|
|
|
install: true,
|
|
|
|
install_dir: '@0@/man@1@'.format(mandir, section)
|
|
|
|
)
|
|
|
|
endforeach
|
|
|
|
endif
|
2017-11-29 15:03:12 +01:00
|
|
|
|
2018-08-30 09:44:24 +02:00
|
|
|
add_project_arguments('-DSYSCONFDIR="/@0@/@1@"'.format(prefix, sysconfdir), language : 'c')
|
2017-12-05 10:40:55 +01:00
|
|
|
|
2017-11-30 10:48:08 +01:00
|
|
|
version = get_option('sway_version')
|
|
|
|
if version != ''
|
|
|
|
version = '"@0@"'.format(version)
|
|
|
|
else
|
|
|
|
if not git.found()
|
|
|
|
error('git is required to make the version string')
|
|
|
|
endif
|
|
|
|
|
|
|
|
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)
|
|
|
|
endif
|
2017-11-30 10:29:32 +01:00
|
|
|
add_project_arguments('-DSWAY_VERSION=@0@'.format(version), language: 'c')
|
2017-11-29 15:03:12 +01:00
|
|
|
|
|
|
|
sway_inc = include_directories('include')
|
|
|
|
|
2018-03-28 18:21:50 +02:00
|
|
|
subdir('include')
|
2018-03-27 19:35:34 +02:00
|
|
|
subdir('protocols')
|
2017-11-30 09:39:27 +01:00
|
|
|
subdir('common')
|
|
|
|
subdir('sway')
|
2017-11-30 17:40:49 +01:00
|
|
|
subdir('swaymsg')
|
2018-03-29 05:04:20 +02:00
|
|
|
|
2018-03-27 21:25:25 +02:00
|
|
|
subdir('client')
|
2018-03-27 19:35:34 +02:00
|
|
|
subdir('swaybg')
|
2018-03-29 05:04:20 +02:00
|
|
|
subdir('swaybar')
|
2018-04-03 04:48:13 +02:00
|
|
|
subdir('swaylock')
|
2018-04-17 09:54:02 +02:00
|
|
|
subdir('swayidle')
|
2018-07-27 17:19:42 +02:00
|
|
|
subdir('swaynag')
|
2017-11-29 15:03:12 +01:00
|
|
|
|
2017-11-30 14:31:13 +01:00
|
|
|
config = configuration_data()
|
|
|
|
config.set('sysconfdir', join_paths(prefix, sysconfdir))
|
|
|
|
config.set('datadir', join_paths(prefix, datadir))
|
|
|
|
config.set('prefix', prefix)
|
|
|
|
|
|
|
|
configure_file(
|
|
|
|
configuration: config,
|
|
|
|
input: 'config.in',
|
|
|
|
output: '@BASENAME@',
|
|
|
|
install_dir: sysconfdir + '/sway'
|
|
|
|
)
|
|
|
|
|
|
|
|
if is_freebsd
|
|
|
|
configure_file(
|
|
|
|
configuration: config,
|
|
|
|
input: 'security.d/10-freebsd.in',
|
|
|
|
output: '@BASENAME@',
|
|
|
|
install_dir: sysconfdir + '/sway/security.d'
|
|
|
|
)
|
|
|
|
else
|
|
|
|
configure_file(
|
|
|
|
configuration: config,
|
|
|
|
input: 'security.d/00-defaults.in',
|
|
|
|
output: '@BASENAME@',
|
|
|
|
install_dir: sysconfdir + '/sway/security.d'
|
|
|
|
)
|
|
|
|
endif
|
|
|
|
|
|
|
|
install_data(
|
|
|
|
'sway.desktop',
|
|
|
|
install_dir: datadir + '/wayland-sessions'
|
|
|
|
)
|
|
|
|
|
|
|
|
if (get_option('default_wallpaper'))
|
|
|
|
wallpaper_files = files(
|
|
|
|
'assets/Sway_Wallpaper_Blue_768x1024.png',
|
|
|
|
'assets/Sway_Wallpaper_Blue_768x1024_Portrait.png',
|
|
|
|
'assets/Sway_Wallpaper_Blue_1136x640.png',
|
|
|
|
'assets/Sway_Wallpaper_Blue_1136x640_Portrait.png',
|
|
|
|
'assets/Sway_Wallpaper_Blue_1366x768.png',
|
|
|
|
'assets/Sway_Wallpaper_Blue_1920x1080.png',
|
|
|
|
'assets/Sway_Wallpaper_Blue_2048x1536.png',
|
|
|
|
'assets/Sway_Wallpaper_Blue_2048x1536_Portrait.png',
|
|
|
|
)
|
|
|
|
wallpaper_install_dir = datadir + '/backgrounds/sway'
|
|
|
|
|
|
|
|
install_data(wallpaper_files, install_dir: wallpaper_install_dir)
|
|
|
|
endif
|
2017-11-30 17:51:58 +01:00
|
|
|
|
|
|
|
if (get_option('zsh_completions'))
|
|
|
|
zsh_files = files(
|
|
|
|
'completions/zsh/_sway',
|
|
|
|
'completions/zsh/_swaylock',
|
|
|
|
'completions/zsh/_swaymsg',
|
|
|
|
)
|
|
|
|
zsh_install_dir = datadir + '/zsh/site-functions'
|
|
|
|
|
|
|
|
install_data(zsh_files, install_dir: zsh_install_dir)
|
|
|
|
endif
|
2018-07-27 18:50:33 +02:00
|
|
|
|
|
|
|
if (get_option('bash_completions'))
|
|
|
|
bash_files = files(
|
|
|
|
'completions/bash/sway',
|
|
|
|
'completions/bash/swayidle',
|
|
|
|
'completions/bash/swaylock',
|
|
|
|
'completions/bash/swaymsg',
|
|
|
|
)
|
|
|
|
bash_install_dir = datadir + '/bash-completion/completions'
|
|
|
|
|
|
|
|
install_data(bash_files, install_dir: bash_install_dir)
|
|
|
|
endif
|
2018-08-26 18:27:18 +02:00
|
|
|
|
|
|
|
if (get_option('fish_completions'))
|
|
|
|
fish_files = files(
|
|
|
|
'completions/fish/sway.fish',
|
|
|
|
'completions/fish/swaylock.fish',
|
|
|
|
'completions/fish/swaymsg.fish',
|
|
|
|
)
|
|
|
|
fish_install_dir = datadir + '/fish/completions'
|
|
|
|
|
|
|
|
install_data(fish_files, install_dir: fish_install_dir)
|
|
|
|
endif
|