X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=meson.build;h=488230e8fc43eaa5e78051d1f6722f97414e6253;hb=b9a7444b9fa216d16d91f34d2e12f51fc4d60e46;hp=38062a9ca69b94ded357f0d99c30f99cd4093c11;hpb=3b117ab744100ca48f257ec6c9df83757cad8224;p=tinc diff --git a/meson.build b/meson.build index 38062a9c..488230e8 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('tinc', 'c', - version: run_command('./src/git_tag.sh', check: true).stdout().strip(), + version: run_command([find_program('python3'), 'version.py', 'short'], check: true).stdout(), license: 'GPL-2.0-or-later', meson_version: '>=0.51', default_options: [ @@ -12,6 +12,7 @@ project('tinc', 'c', 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') @@ -31,8 +32,16 @@ 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') +if meson_version.version_compare('>=0.55') + python_path = python.full_path() +else + python_path = python.path() +endif + cc_defs = ['-D_GNU_SOURCE'] if os_name == 'sunos' cc_defs += '-D__EXTENSIONS__' @@ -47,33 +56,45 @@ else static = opt_static.enabled() endif -if static +if static and cc_name != 'msvc' ld_flags += '-static' endif if opt_harden - cc_flags += [ - '-D_FORTIFY_SOURCE=2', - '-fwrapv', - '-fno-strict-overflow', - '-Wreturn-type', - '-Wold-style-definition', - '-Wmissing-declarations', - '-Wmissing-prototypes', - '-Wstrict-prototypes', - '-Wredundant-decls', - '-Wbad-function-cast', - '-Wwrite-strings', - '-fdiagnostics-show-option', - '-fstrict-aliasing', - '-Wmissing-noreturn', - ] - if cc_name == 'clang' - cc_flags += '-Qunused-arguments' - endif - ld_flags += ['-Wl,-z,relro', '-Wl,-z,now'] - if os_name == 'windows' - ld_flags += ['-Wl,--dynamicbase', '-Wl,--nxcompat'] + 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', + '-fwrapv', + '-fno-strict-overflow', + '-Wreturn-type', + '-Wold-style-definition', + '-Wmissing-declarations', + '-Wmissing-prototypes', + '-Wstrict-prototypes', + '-Wredundant-decls', + '-Wbad-function-cast', + '-Wwrite-strings', + '-fdiagnostics-show-option', + '-fstrict-aliasing', + '-Wmissing-noreturn', + ] + if cc_name == 'clang' + cc_flags += '-Qunused-arguments' + endif + ld_flags += ['-Wl,-z,relro', '-Wl,-z,now'] + if os_name == 'windows' + ld_flags += ['-Wl,--dynamicbase', '-Wl,--nxcompat'] + endif endif endif @@ -117,12 +138,7 @@ if os_name == 'linux' and not opt_systemd.disabled() subdir('systemd') endif -prog_reformat = find_program('astyle', native: true, required: false) -if prog_reformat.found() - run_target('reformat', command: [ - prog_reformat, - '--options=@SOURCE_ROOT@/.astylerc', '--recursive', - '@SOURCE_ROOT@/*.c', '@SOURCE_ROOT@/*.h', - ]) -endif - +run_target('reformat', command: [ + find_program('python3'), + '@SOURCE_ROOT@/reformat.py', +])