1 Star 0 Fork 0

systechn/tinc

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
meson.build 4.33 KB
一键复制 编辑 原始数据 按行查看 历史
project('tinc', 'c',
version: '1.1pre18',
license: 'GPL-2.0-or-later',
meson_version: '>=0.51',
default_options: [
'c_std=c11',
'warning_level=3',
'buildtype=debugoptimized',
],
)
dir_run_state = get_option('runstatedir')
opt_crypto = get_option('crypto')
opt_curses = get_option('curses')
opt_debug = get_option('debug')
opt_docs = get_option('docs')
opt_harden = get_option('hardening')
opt_jumbograms = get_option('jumbograms')
opt_lz4 = get_option('lz4')
opt_lzo = get_option('lzo')
opt_miniupnpc = get_option('miniupnpc')
opt_readline = get_option('readline')
opt_sandbox = get_option('sandbox')
opt_static = get_option('static')
opt_systemd = get_option('systemd')
opt_tests = get_option('tests')
opt_tunemu = get_option('tunemu')
opt_uml = get_option('uml')
opt_vde = get_option('vde')
opt_zlib = get_option('zlib')
meson_version = meson.version()
cc = meson.get_compiler('c')
os_name = host_machine.system()
cpu_family = host_machine.cpu_family()
cc_name = cc.get_id()
python = find_program('python3', required: false)
if python.found()
if meson_version.version_compare('>=0.55')
python_path = python.full_path()
else
python_path = python.path()
endif
else
python_path = ''
endif
cc_defs = ['-D_GNU_SOURCE']
if os_name == 'sunos'
cc_defs += '-D__EXTENSIONS__'
endif
cc_flags = [cc_defs]
ld_flags = []
if cc_name != 'msvc'
cc_flags += [
'-Wbad-function-cast',
'-Wduplicated-branches',
'-Wduplicated-cond',
'-Wformat-overflow=2',
'-Wformat-truncation=1', # 2 prints too much noise
'-Wformat=2',
'-Wlogical-op',
'-Wmissing-declarations',
'-Wmissing-noreturn',
'-Wmissing-prototypes',
'-Wno-embedded-directive',
'-Wold-style-definition',
'-Wredundant-decls',
'-Wreturn-type',
'-Wstrict-prototypes',
'-Wswitch-enum',
'-Wtrampolines', # may require executable stack which is disabled
'-Wvla', # VLAs are not supported by MSVC
'-Wwrite-strings',
'-fdiagnostics-show-option',
'-fno-strict-overflow',
'-fstrict-aliasing',
]
endif
if opt_static.auto()
static = os_name == 'windows'
else
static = opt_static.enabled()
endif
if static and cc_name != 'msvc'
ld_flags += '-static'
endif
if opt_harden
if cc_name == 'msvc'
# Most of these flags are already ON by default in the latest version of MSVC.
# Add anyway in case someone is building using an old toolchain.
cc_flags += ['/guard:cf', '/GS']
ld_flags += [
'/guard:cf',
'/NXCOMPAT',
'/DYNAMICBASE',
cpu_family.endswith('64') ? '/HIGHENTROPYVA' : '/SAFESEH',
]
else
cc_flags += [
'-D_FORTIFY_SOURCE=2',
'-fcf-protection=full',
'-fstack-protector-strong',
]
ld_flags += ['-Wl,-z,relro', '-Wl,-z,now', '-Wl,-z,noexecstack']
if os_name == 'windows'
ld_flags += ['-Wl,--dynamicbase', '-Wl,--nxcompat']
else
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90458
cc_flags += '-fstack-clash-protection'
endif
endif
endif
cc_flags = cc.get_supported_arguments(cc_flags)
ld_flags = cc.get_supported_link_arguments(ld_flags)
add_project_arguments(cc_flags, language: 'c')
add_project_link_arguments(ld_flags, language: 'c')
build_root = meson.current_build_dir()
src_root = meson.current_source_dir()
prefix = get_option('prefix')
dir_bin = prefix / get_option('bindir')
dir_data = prefix / get_option('datadir')
dir_info = prefix / get_option('infodir')
dir_lib = prefix / get_option('libdir')
dir_local_state = prefix / get_option('localstatedir')
dir_locale = prefix / get_option('localedir')
dir_man = prefix / get_option('mandir')
dir_sbin = prefix / get_option('sbindir')
dir_sysconf = prefix / get_option('sysconfdir')
if dir_run_state == ''
dir_run_state = dir_local_state / 'run'
endif
if not opt_docs.disabled()
subdir('doc')
endif
subdir('src')
if not opt_tests.disabled()
subdir('test')
endif
subdir('bash_completion.d')
if os_name == 'linux' and not opt_systemd.disabled()
subdir('systemd')
endif
if python.found()
run_target('reformat', command: [
python,
'@SOURCE_ROOT@/lint.py',
'--fix',
])
run_target('lint', command: [
python,
'@SOURCE_ROOT@/lint.py',
])
endif
if meson_version.version_compare('>=0.53')
summary({
'prefix': prefix,
'sandbox': cdata.has('HAVE_SANDBOX'),
'watchdog': cdata.has('HAVE_WATCHDOG'),
}, bool_yn: true, section: 'System')
endif
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/systechn/tinc.git
git@gitee.com:systechn/tinc.git
systechn
tinc
tinc
1.1

搜索帮助

0d507c66 1850385 C8b1a773 1850385