feat: make asan as the debug type feature

This commit is contained in:
DreamMaoMao 2025-08-06 11:49:04 +08:00
parent e03a27e90e
commit 5b93990d5b
2 changed files with 21 additions and 4 deletions

View file

@ -1,5 +1,5 @@
project('mango', ['c', 'cpp'], project('mango', ['c', 'cpp'],
version : '0.8.1' version : '0.8.1',
) )
subdir('protocols') subdir('protocols')
@ -60,14 +60,29 @@ c_args = [
'-Wno-unused-function', '-Wno-unused-function',
'-DWLR_USE_UNSTABLE', '-DWLR_USE_UNSTABLE',
'-D_POSIX_C_SOURCE=200809L', '-D_POSIX_C_SOURCE=200809L',
'-DVERSION="@0@"'.format(version_with_hash), # 版本信息包含 Commit Hash 和最新的 tag '-DVERSION="@0@"'.format(version_with_hash),
'-DSYSCONFDIR="@0@"'.format('/etc'), # 添加 sysconfdir '-DSYSCONFDIR="@0@"'.format('/etc'),
] ]
# 仅在 debug 选项启用时添加调试参数
if get_option('asan')
c_args += [
'-fsanitize=address',
'-fno-omit-frame-pointer',
'-fno-optimize-sibling-calls'
]
endif
if xcb.found() and xlibs.found() if xcb.found() and xlibs.found()
c_args += '-DXWAYLAND' c_args += '-DXWAYLAND'
endif endif
# 链接参数(根据 debug 状态添加 ASAN
link_args = []
if get_option('asan')
link_args += '-fsanitize=address'
endif
executable('mango', executable('mango',
'src/mango.c', 'src/mango.c',
'src/common/util.c', 'src/common/util.c',
@ -85,7 +100,8 @@ executable('mango',
pcre2_dep, pcre2_dep,
], ],
install : true, install : true,
c_args : c_args c_args : c_args,
link_args : link_args,
) )
desktop_install_dir = join_paths(prefix, 'share/wayland-sessions') desktop_install_dir = join_paths(prefix, 'share/wayland-sessions')

View file

@ -1 +1,2 @@
option('xwayland', type : 'feature', value : 'enabled') option('xwayland', type : 'feature', value : 'enabled')
option('asan', type : 'boolean', value : false)