mistserver/subprojects/packagefiles/libsrt/meson.build
Thulinma dbafa808b8 Fix Cygwin compilation:
- Fix various incompatibilities and differences between Linux and Cygwin builds
- Make usrsctp an optional dependency
- Fix building without SSL
- Add new secure random bytes function, use it for websockets
- Switch to libsrtp2 v2.6.0 (currently latest release)
- Add patch that makes latest libsrtp2 build in latest Cygwin
- Add patch that makes srt build in latest Cygwin
- Correctly allow linking libsrtp2 and srt to local mbedtls version
2024-04-25 12:44:38 +02:00

83 lines
3 KiB
Meson

project('SRT', 'cpp', 'c', version: '1.5.1')
if host_machine.system() == 'cygwin'
add_project_arguments(['-DENABLE_LOGGING=1', '-O3', '-DNDEBUG', '-DENABLE_MONOTONIC_CLOCK=1', '-DENABLE_NEW_RCVBUFFER=1', '-DENABLE_SOCK_CLOEXEC=1', '-DHAI_ENABLE_SRT=1', '-DHAI_PATCH=1', '-DHAVE_INET_PTON=1', '-DHAVE_PTHREAD_GETNAME_NP=1', '-DHAVE_PTHREAD_SETNAME_NP=1', '-DCYGWIN=1', '-DCYGWIN_USE_POSIX', '-DNDEBUG', '-DSRT_DYNAMIC', '-DSRT_ENABLE_APP_READER', '-DSRT_ENABLE_CLOSE_SYNCH', '-DSRT_ENABLE_ENCRYPTION', '-DSRT_EXPORTS', '-DSRT_VERSION="1.5.1"', '-DUSE_MBEDTLS=1', '-D_GNU_SOURCE'], language: ['cpp','c'])
else
add_project_arguments(['-DENABLE_LOGGING=1', '-O3', '-DNDEBUG', '-DENABLE_MONOTONIC_CLOCK=1', '-DENABLE_NEW_RCVBUFFER=1', '-DENABLE_SOCK_CLOEXEC=1', '-DHAI_ENABLE_SRT=1', '-DHAI_PATCH=1', '-DHAVE_INET_PTON=1', '-DHAVE_PTHREAD_GETNAME_NP=1', '-DHAVE_PTHREAD_SETNAME_NP=1', '-DLINUX=1', '-DNDEBUG', '-DSRT_DYNAMIC', '-DSRT_ENABLE_APP_READER', '-DSRT_ENABLE_BINDTODEVICE', '-DSRT_ENABLE_CLOSE_SYNCH', '-DSRT_ENABLE_ENCRYPTION', '-DSRT_EXPORTS', '-DSRT_VERSION="1.5.1"', '-DUSE_MBEDTLS=1', '-D_GNU_SOURCE'], language: ['cpp','c'])
endif
mbedcrypto_lib = dependency('mbedcrypto', required: false)
mbedx509_lib = dependency('mbedx509', required: false)
mbedtls_lib = dependency('mbedtls', required: false)
if not mbedtls_lib.found()
ccpp = meson.get_compiler('cpp')
mbedtls_lib = ccpp.find_library('mbedtls')
mbedx509_lib = ccpp.find_library('mbedx509')
mbedcrypto_lib = ccpp.find_library('mbedcrypto')
endif
thread_dep = dependency('threads')
header_tgts = []
subdir('srt')
srt_src = files(
'srtcore/api.cpp',
'srtcore/buffer.cpp',
'srtcore/buffer_rcv.cpp',
'srtcore/cache.cpp',
'srtcore/channel.cpp',
'srtcore/common.cpp',
'srtcore/core.cpp',
'srtcore/crypto.cpp',
'srtcore/epoll.cpp',
'srtcore/fec.cpp',
'srtcore/handshake.cpp',
'srtcore/list.cpp',
'srtcore/logger_default.cpp',
'srtcore/logger_defs.cpp',
'srtcore/md5.cpp',
'srtcore/packet.cpp',
'srtcore/packetfilter.cpp',
'srtcore/queue.cpp',
'srtcore/congctl.cpp',
'srtcore/socketconfig.cpp',
'srtcore/srt_c_api.cpp',
'srtcore/strerror_defs.cpp',
'srtcore/sync.cpp',
'srtcore/tsbpd_time.cpp',
'srtcore/window.cpp',
'srtcore/sync_posix.cpp',
'haicrypt/haicrypt_log.cpp',
'srtcore/srt_compat.c',
'haicrypt/cryspr.c',
'haicrypt/cryspr-mbedtls.c',
'haicrypt/hcrypt.c',
'haicrypt/hcrypt_ctx_rx.c',
'haicrypt/hcrypt_ctx_tx.c',
'haicrypt/hcrypt_rx.c',
'haicrypt/hcrypt_sa.c',
'haicrypt/hcrypt_tx.c',
'haicrypt/hcrypt_xpt_srt.c',
'srtcore/srt.h',
'srtcore/logging_api.h',
'srtcore/access_control.h',
'srtcore/platform_sys.h',
'srtcore/udt.h'
)
libsrt = library(
'srt',
sources: [srt_src, versionfile],
dependencies: [mbedtls_lib, mbedx509_lib, mbedcrypto_lib, thread_dep],
include_directories: ['srt', 'haicrypt', 'srtcore']
)
srt_dep = declare_dependency(
link_with : [libsrt],
dependencies: [mbedtls_lib, mbedx509_lib, mbedcrypto_lib, thread_dep],
sources: [header_tgts],
include_directories: include_directories('.'),
)