maomaowm/meson.build

113 lines
3 KiB
Meson
Raw Normal View History

2025-07-30 14:54:59 +08:00
project('mango', ['c', 'cpp'],
2025-09-19 11:47:00 +08:00
version : '0.8.8',
2025-02-03 23:18:47 +08:00
)
subdir('protocols')
2025-02-25 20:06:20 +08:00
is_nixos = false
os_release = run_command('cat', '/etc/os-release', check: false)
if os_release.returncode() == 0
if os_release.stdout().contains('ID=nixos')
is_nixos = true
endif
endif
prefix = get_option('prefix')
sysconfdir = get_option('sysconfdir')
# 如果 sysconfdir 以 prefix 开头,去掉 prefix
2025-02-25 20:06:20 +08:00
if sysconfdir.startswith(prefix) and not is_nixos
sysconfdir = sysconfdir.substring(prefix.length())
2025-02-25 20:06:20 +08:00
# 确保 sysconfdir 是绝对路径
if not sysconfdir.startswith('/')
sysconfdir = '/' + sysconfdir
endif
endif
# 打印调试信息,确认 sysconfdir 的值
2025-02-25 20:06:20 +08:00
# message('prefix: ' + prefix)
# message('sysconfdir: ' + sysconfdir)
2025-02-04 13:36:44 +08:00
2025-02-03 23:18:47 +08:00
cc = meson.get_compiler('c')
libm = cc.find_library('m')
xcb = dependency('xcb', required : get_option('xwayland'))
xlibs = dependency('xcb-icccm', required : get_option('xwayland'))
wayland_server_dep = dependency('wayland-server')
2025-06-25 11:05:57 +08:00
wlroots_dep = dependency('wlroots-0.19',version: '>=0.19.0')
2025-02-03 23:18:47 +08:00
xkbcommon_dep = dependency('xkbcommon')
libinput_dep = dependency('libinput')
libwayland_client_dep = dependency('wayland-client')
2025-05-18 18:26:06 +08:00
pcre2_dep = dependency('libpcre2-8')
2025-06-25 11:05:57 +08:00
libscenefx_dep = dependency('scenefx-0.4',version: '>=0.4.1')
2025-02-03 23:18:47 +08:00
2025-03-01 09:17:37 +08:00
# 获取 Git Commit Hash 和最新的 tag
git = find_program('git', required : false)
if git.found()
commit_hash = run_command(git, 'rev-parse', '--short', 'HEAD', check : false).stdout().strip()
latest_tag = run_command(git, 'describe', '--tags', '--abbrev=0', check : false).stdout().strip()
else
commit_hash = 'unknown'
2025-03-01 09:17:37 +08:00
latest_tag = meson.project_version() # 如果 Git 不可用,使用默认版本号
endif
2025-03-01 09:17:37 +08:00
# 将 Commit Hash 和最新的 tag 添加到版本信息中
version_with_hash = '@0@(@1@)'.format(latest_tag, commit_hash)
# 定义编译参数
2025-02-03 23:18:47 +08:00
c_args = [
'-g',
'-Wno-unused-function',
'-DWLR_USE_UNSTABLE',
'-D_POSIX_C_SOURCE=200809L',
'-DVERSION="@0@"'.format(version_with_hash),
'-DSYSCONFDIR="@0@"'.format('/etc'),
2025-02-03 23:18:47 +08:00
]
# 仅在 debug 选项启用时添加调试参数
if get_option('asan')
c_args += [
'-fsanitize=address',
'-fno-omit-frame-pointer',
'-fno-optimize-sibling-calls'
]
endif
2025-02-03 23:18:47 +08:00
if xcb.found() and xlibs.found()
c_args += '-DXWAYLAND'
endif
2025-02-03 23:18:47 +08:00
# 链接参数(根据 debug 状态添加 ASAN
link_args = []
if get_option('asan')
link_args += '-fsanitize=address'
endif
2025-07-30 14:54:59 +08:00
executable('mango',
'src/mango.c',
2025-04-28 09:19:26 +08:00
'src/common/util.c',
'src/ext-protocol/wlr_ext_workspace_v1.c',
2025-02-03 23:18:47 +08:00
wayland_sources,
dependencies : [
libm,
xcb,
xlibs,
libscenefx_dep,
2025-02-03 23:18:47 +08:00
wayland_server_dep,
wlroots_dep,
xkbcommon_dep,
libinput_dep,
libwayland_client_dep,
2025-05-18 18:26:06 +08:00
pcre2_dep,
2025-02-03 23:18:47 +08:00
],
install : true,
c_args : c_args,
link_args : link_args,
2025-02-03 23:18:47 +08:00
)
2025-02-04 07:17:44 +08:00
desktop_install_dir = join_paths(prefix, 'share/wayland-sessions')
2025-07-30 14:54:59 +08:00
install_data('mango.desktop', install_dir : desktop_install_dir)
# 安装 config.conf
2025-07-30 14:54:59 +08:00
install_data('config.conf', install_dir : join_paths(sysconfdir, 'mango'))