cdata.set('HAVE_' + os_name.to_upper(), 1)
-foreach attr : ['malloc', 'nonnull', 'warn_unused_result']
- cc.has_function_attribute(attr)
+foreach attr : ['malloc', 'nonnull', 'warn_unused_result', 'packed', 'format']
+ if cc.has_function_attribute(attr)
+ cdata.set('HAVE_ATTR_' + attr.to_upper(), 1,
+ description: '__attribute__((__@0@__))'.format(attr))
+ endif
endforeach
if cc.compiles('''
check_functions = [
'asprintf',
'daemon',
+ 'explicit_bzero',
+ 'explicit_memset',
'fchmod',
'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']
endif
endforeach
+src_getopt = []
if not cdata.has('HAVE_GETOPT_H') or not cc.has_function('getopt_long', prefix: have_prefix, args: cc_defs)
- src_lib_common += ['getopt.c', 'getopt1.c']
+ src_getopt = ['getopt.c', 'getopt1.c']
+ src_lib_common += src_getopt
endif
if not opt_miniupnpc.disabled()
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
exe_sptps_test = executable(
'sptps_test',
- sources: 'sptps_test.c',
+ sources: [src_getopt, 'sptps_test.c'],
dependencies: deps_lib_common,
link_with: lib_common,
implicit_include_directories: false,
exe_sptps_keypair = executable(
'sptps_keypair',
- sources: 'sptps_keypair.c',
+ sources: [src_getopt, 'sptps_keypair.c'],
dependencies: deps_lib_common,
link_with: lib_common,
implicit_include_directories: false,