endif
endforeach
+if cc.compiles('''
+ #include <stdlib.h>
+ 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; }
'sys/ioctl.h',
'sys/mman.h',
'sys/param.h',
+ 'sys/random.h',
'sys/resource.h',
'sys/socket.h',
'sys/stat.h',
check_functions = [
'asprintf',
'daemon',
+ 'explicit_bzero',
+ 'explicit_memset',
'fchmod',
+ 'getentropy',
'gettimeofday',
+ 'memset_s',
'mlockall',
'putenv',
'strsignal',
src_lib_common = [
'conf.c',
+ 'console.c',
'dropin.c',
'keys.c',
'list.c',
+ 'logger.c',
'names.c',
'netutl.c',
+ 'pidfile.c',
'script.c',
'splay_tree.c',
'sptps.c',
'utils.c',
'version.c',
'xoshiro.c',
- 'logger.c',
]
src_tinc = [
'protocol_key.c',
'protocol_misc.c',
'protocol_subnet.c',
+ 'proxy.c',
'raw_socket_device.c',
'route.c',
'subnet.c',
deps_tinc = []
deps_tincd = [cc.find_library('m', required: false)]
+if os_name != 'windows'
+ src_lib_common += 'random.c'
+endif
+
if os_name in ['linux', 'android']
subdir('linux')
elif os_name.endswith('bsd') or os_name in ['dragonfly', 'darwin']
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)
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