Files
LNXSDK/lib/datachannel/kincfile.js
2026-10-20 16:37:13 -07:00

66 lines
2.4 KiB
JavaScript

const path = require('path');
let project = new Project('datachannel', __dirname);
project.addFile('cpp/src/datachannel.c');
project.addFile('cpp/src/ssl3.c');
project.addFile('cpp/src/aegis128x4.c');
project.addIncludeDir('cpp/libdatachannel/include');
project.addIncludeDir('cpp/libdatachannel/deps/mbedtls/include');
project.addDefine('RTC_STATIC');
project.addDefine('MBEDTLS_ALLOW_PRIVATE_ACCESS');
project.addDefine('MBEDTLS_SSL_DTLS_SRTP');
if (platform === Platform.Windows) {
project.addLibFor('x64', path.join(__dirname, 'lib/datachannel-static'));
project.addLibFor('x64', path.join(__dirname, 'lib/juice-static'));
project.addLibFor('x64', path.join(__dirname, 'lib/usrsctp'));
project.addLibFor('x64', path.join(__dirname, 'lib/MbedTLS'));
project.addLib('ws2_32');
project.addLib('Crypt32');
project.addLib('bcrypt');
}
else if (platform === Platform.OSX) {
// macOS links prebuilt .a (libdatachannel 0.24.6, mbedtls 3.6.4, OpenSSL backend) with 'brew install openssl@3' for the static ssl/crypto archives below
const isArm64 = arch === 'arm64' || (arch === 'default' && process.arch === 'arm64');
const libdir = path.join(__dirname, 'lib', isArm64 ? 'macos_arm64' : 'macos_x64');
project.addLinkerFlag(path.join(libdir, 'libdatachannel-static.a'));
project.addLinkerFlag(path.join(libdir, 'libjuice-static.a'));
project.addLinkerFlag(path.join(libdir, 'libusrsctp.a'));
project.addLinkerFlag(path.join(libdir, 'libsrtp2.a'));
project.addLinkerFlag(path.join(libdir, 'libMbedTLS.a'));
const odir = '/opt/homebrew/opt/openssl@3/lib';
project.addLinkerFlag(path.join(odir, 'libssl.a'));
project.addLinkerFlag(path.join(odir, 'libcrypto.a'));
}
else if (platform === Platform.Linux) {
// TODO
const libdir = path.join(__dirname, 'lib/linux_x64');
project.addLinkerFlag(path.join(libdir, 'libdatachannel-static.a'));
project.addLinkerFlag(path.join(libdir, 'libjuice-static.a'));
project.addLinkerFlag(path.join(libdir, 'libusrsctp.a'));
project.addLinkerFlag(path.join(libdir, 'libsrtp2.a'));
project.addLinkerFlag(path.join(libdir, 'libMbedTLS.a'));
project.addLinkerFlag('-lssl');
project.addLinkerFlag('-lcrypto');
}
if (parentProject) {
for (let sub of parentProject.subProjects) {
if (sub.name === 'Kha') {
sub.addExclude('hl/include/mbedtls/**');
sub.addExclude('hl/libs/ssl/ssl.c');
sub.includeDirs = sub.includeDirs.filter(
dir => dir !== 'hl/include/mbedtls/include');
break;
}
}
}
resolve(project);