66 lines
2.4 KiB
JavaScript
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);
|