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',
+ 'fs.c',
'keys.c',
'list.c',
'logger.c',
'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 = []
if dep_curses.found()
cdata.set('HAVE_CURSES', 1)
deps_tinc += dep_curses
+ if static
+ cc_flags_tinc += '-DNCURSES_STATIC'
+ endif
endif
endif
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
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,
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,