X-Git-Url: https://www.tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fmeson.build;h=6a9fb29aa3dba91737e8d1635d8feafe99ab06ef;hb=9235256116574927657a93944ef1b21e255e771b;hp=d96dd71b4a3b7274a5e7b9ef7c3919f920d1dc60;hpb=0fe69908838248c28624beb540257892db6bdcbd;p=tinc diff --git a/src/meson.build b/src/meson.build index d96dd71b..6a9fb29a 100644 --- a/src/meson.build +++ b/src/meson.build @@ -18,6 +18,15 @@ foreach attr : ['malloc', 'nonnull', 'warn_unused_result', 'packed', 'format'] endif endforeach +if cc.compiles(''' + #include + extern void *make() __attribute__((malloc(free))); + int main(void) { return 0; } +''') + cdata.set('HAVE_ATTR_MALLOC_WITH_ARG', 1, + description: 'support for __attribute__((malloc(deallocator)))') +endif + if cc.compiles(''' _Static_assert(1, "ok"); int main(void) { return 0; } @@ -53,6 +62,7 @@ check_headers = [ 'sys/ioctl.h', 'sys/mman.h', 'sys/param.h', + 'sys/random.h', 'sys/resource.h', 'sys/socket.h', 'sys/stat.h', @@ -73,8 +83,12 @@ endif check_functions = [ 'asprintf', 'daemon', + 'explicit_bzero', + 'explicit_memset', 'fchmod', + 'getentropy', 'gettimeofday', + 'memset_s', 'mlockall', 'putenv', 'strsignal', @@ -103,12 +117,15 @@ subdir('chacha-poly1305') src_lib_common = [ 'conf.c', + 'console.c', 'dropin.c', + 'fs.c', 'keys.c', 'list.c', 'logger.c', 'names.c', 'netutl.c', + 'pidfile.c', 'script.c', 'splay_tree.c', 'sptps.c', @@ -152,11 +169,19 @@ src_tincd = [ 'protocol_key.c', 'protocol_misc.c', 'protocol_subnet.c', + 'proxy.c', 'raw_socket_device.c', 'route.c', 'subnet.c', ] +src_event_select = files('event_select.c') + +if os_name != 'windows' + src_tincd += 'signal.c' +endif + +cc_flags_tinc = cc_flags cc_flags_tincd = cc_flags deps_common = [] @@ -252,6 +277,9 @@ if not opt_curses.disabled() if dep_curses.found() cdata.set('HAVE_CURSES', 1) deps_tinc += dep_curses + if static + cc_flags_tinc += '-DNCURSES_STATIC' + endif endif endif @@ -263,6 +291,9 @@ else if not dep_readline.found() dep_readline = cc.find_library('readline', required: opt_readline, static: static) endif + if not dep_readline.found() + dep_readline = cc.find_library('libedit', required: opt_readline, static: static) + endif if dep_readline.found() and \ cc.has_header('readline/readline.h', dependencies: dep_readline) and \ cc.has_header('readline/history.h', dependencies: dep_readline) @@ -334,16 +365,17 @@ endif subdir(opt_crypto) -if opt_crypto != 'openssl' - src_lib_crypto += 'crypto.c' -endif - if opt_crypto != 'nolegacy' src_lib_crypto += ['cipher.c', 'digest.c'] endif subdir('include') +have_sandbox = cdata.has('HAVE_SANDBOX') +if not have_sandbox + src_lib_common += 'sandbox.c' +endif + lib_crypto = static_library( 'tinc_crypto', sources: src_lib_crypto, @@ -372,6 +404,7 @@ lib_tinc = static_library( sources: src_tinc, dependencies: deps_tinc, link_with: lib_common, + c_args: cc_flags_tinc, implicit_include_directories: false, include_directories: inc_conf, build_by_default: false,