// swift-tools-version: 5.8
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "Snikket",
platforms: [
.iOS(.v13),
.macOS(.v10_15),
.tvOS(.v12),
],
products: [
.library(
name: "Snikket",
targets: ["Snikket"]),
],
dependencies: [
.package(url: "https://github.com/apple/swift-docc-plugin", branch: "main"),
.package(url: "https://github.com/krzyzanowskim/OpenSSL-Package", from: "3.3.3000"),
.package(url: "https://github.com/alta/swift-opus", branch: "main"),
],
targets: [
// Targets are the basic building blocks of a package, defining a module or a test suite.
// Targets can depend on other targets in this package and products from dependencies.
.target(
name: "strophe",
dependencies: [.product(name: "OpenSSL", package: "OpenSSL-Package")],
exclude: [
"libstrophe/src/compression_dummy.c",
"libstrophe/src/parser_expat.c",
"libstrophe/src/tls_gnutls.c",
"libstrophe/src/tls_schannel.c",
"libstrophe/src/tls_dummy.c"
],
sources: ["libstrophe/src"],
linkerSettings: [
.linkedLibrary("resolv")
]
),
.target(
name: "usrsctp",
dependencies: [],
exclude: [
"usrsctp/.github",
"usrsctp/programs",
"usrsctp/fuzzer",
"usrsctp/cmake",
"usrsctp/usrsctplib/netinet6/meson.build"
],
cxxSettings: [
CXXSetting.headerSearchPath("usrsctp/usrsctplib"),
CXXSetting.define("HAVE_NETINET_IP_ICMP_H"),
CXXSetting.define("HAVE_SA_LEN"),
CXXSetting.define("HAVE_SCONN_LEN"),
CXXSetting.define("HAVE_SIN6_LEN"),
CXXSetting.define("HAVE_SIN_LEN"),
CXXSetting.define("HAVE_STDATOMIC_H"),
CXXSetting.define("HAVE_SYS_QUEUE_H"),
CXXSetting.define("INET"),
CXXSetting.define("INET6"),
CXXSetting.define("SCTP_DEBUG"),
CXXSetting.define("SCTP_PROCESS_LEVEL_LOCKS"),
CXXSetting.define("SCTP_SIMPLE_ALLOCATOR"),
CXXSetting.define("__APPLE_USE_RFC_2292", .when(platforms: [.iOS, .macOS, .tvOS, .watchOS])),
CXXSetting.define("__Userspace__"),
]
),
.target(
name: "libdatachannel",
dependencies: [.product(name: "OpenSSL", package: "OpenSSL-Package"), "usrsctp"],
exclude: [
"libdatachannel/test",
"libdatachannel/src/websocketserver.cpp",
"libdatachannel/src/impl/websocketserver.cpp",
"libdatachannel/deps/libsrtp/crypto/test",
"libdatachannel/deps/libsrtp/crypto/Makefile.in",
"libdatachannel/deps/libsrtp/crypto/hash/hmac.c",
"libdatachannel/deps/libsrtp/crypto/hash/hmac_mbedtls.c",
"libdatachannel/deps/libsrtp/crypto/hash/hmac_nss.c",
"libdatachannel/deps/libsrtp/crypto/cipher/aes.c",
"libdatachannel/deps/libsrtp/crypto/cipher/aes_icm.c",
"libdatachannel/deps/libsrtp/crypto/cipher/aes_icm_nss.c",
"libdatachannel/deps/libsrtp/crypto/cipher/aes_gcm_nss.c",
"libdatachannel/deps/libsrtp/crypto/cipher/aes_icm_mbedtls.c",
"libdatachannel/deps/libsrtp/crypto/cipher/aes_gcm_mbedtls.c",
],
sources: ["libdatachannel/src", "libdatachannel/deps/libsrtp/crypto", "libdatachannel/deps/libsrtp/srtp", "libdatachannel/deps/libjuice/src"],
cxxSettings: [
CXXSetting.headerSearchPath("include/rtc"),
CXXSetting.headerSearchPath("libdatachannel/src"),
CXXSetting.headerSearchPath("libdatachannel/deps/plog/include"),
CXXSetting.headerSearchPath("libdatachannel/deps/libsrtp/include"),
CXXSetting.headerSearchPath("libdatachannel/deps/libsrtp"),
CXXSetting.headerSearchPath("libdatachannel/deps/libsrtp/crypto/include"),
CXXSetting.headerSearchPath("libdatachannel/deps/libjuice/include"),
CXXSetting.headerSearchPath("libdatachannel/deps/libjuice/include/juice"),
CXXSetting.define("OPENSSL"),
CXXSetting.define("GCM"),
CXXSetting.define("RTC_ENABLE_MEDIA=1"),
CXXSetting.define("RTC_ENABLE_WEBSOCKET=0"),
CXXSetting.define("RTC_EXPORTS"),
CXXSetting.define("HAVE_CONFIG_H"),
CXXSetting.define("HAVE_ARPA_INET_H"),
CXXSetting.define("HAVE_INTTYPES_H"),
CXXSetting.define("HAVE_MACHINE_TYPES_H"),
CXXSetting.define("HAVE_NETINET_IN_H"),
CXXSetting.define("HAVE_STDINT_H"),
CXXSetting.define("HAVE_STDLIB_H"),
CXXSetting.define("HAVE_SYS_SOCKET_H"),
CXXSetting.define("HAVE_SYS_TYPES_H"),
CXXSetting.define("HAVE_UNISTD_H"),
CXXSetting.define("HAVE_INET_ATON"),
CXXSetting.define("HAVE_INET_PTON"),
CXXSetting.define("HAVE_SIGACTION"),
CXXSetting.define("HAVE_USLEEP"),
CXXSetting.define("HAVE_UINT8_T"),
CXXSetting.define("HAVE_UINT16_T"),
CXXSetting.define("HAVE_UINT32_T"),
CXXSetting.define("HAVE_UINT64_T"),
CXXSetting.define("HAVE_INT32_T"),
CXXSetting.define("SIZEOF_UNSIGNED_LONG=8"),
CXXSetting.define("SIZEOF_UNSIGNED_LONG_LONG=8"),
CXXSetting.define("HAVE_INLINE"),
CXXSetting.define("PACKAGE_VERSION=\"2.5.0\""),
CXXSetting.define("PACKAGE_STRING=\"libsrtp2 2.5.0\""),
]
),
.target(
name: "libpcre2-8",
exclude: [
"pcre2/deps",
"pcre2/maint",
"pcre2/src/pcre2demo.c",
"pcre2/src/pcre2test.c",
"pcre2/src/pcre2grep.c",
"pcre2/src/pcre2posix.c",
"pcre2/src/pcre2_jit_compile.c",
"pcre2/src/pcre2_jit_test.c",
"pcre2/src/pcre2_dftables.c",
"pcre2/src/pcre2test.c",
"pcre2/src/pcre2posix_test.c",
"pcre2/src/pcre2_jit_test.c",
"pcre2/src/pcre2_fuzzsupport.c",
],
cSettings: [
CSetting.headerSearchPath("pcre2/src"),
CSetting.define("PCRE2_CODE_UNIT_WIDTH=8"),
CSetting.define("SUPPORT_PCRE2_8"),
CSetting.define("HAVE_CONFIG_H"),
CSetting.define("SUPPORT_UNICODE"),
]
),
.target(
name: "libpcre2-16",
exclude: [
"pcre2/deps",
"pcre2/maint",
"pcre2/src/pcre2demo.c",
"pcre2/src/pcre2test.c",
"pcre2/src/pcre2grep.c",
"pcre2/src/pcre2posix.c",
"pcre2/src/pcre2_dftables.c",
"pcre2/src/pcre2test.c",
"pcre2/src/pcre2posix_test.c",
"pcre2/src/pcre2_jit_test.c",
"pcre2/src/pcre2_fuzzsupport.c",
],
cSettings: [
CSetting.headerSearchPath("pcre2/src"),
CSetting.define("PCRE2_CODE_UNIT_WIDTH=16"),
CSetting.define("SUPPORT_PCRE2_16"),
CSetting.define("HAVE_CONFIG_H"),
CSetting.define("SUPPORT_UNICODE"),
]
),
.target(
name: "c_snikket",
dependencies: ["strophe", "libdatachannel", "libpcre2-8", "libpcre2-16", .product(name: "Copus", package: "swift-opus")],
cSettings: [
CSetting.headerSearchPath("iinclude"),
CSetting.define("HX_SMART_STRINGS=1"),
CSetting.define("HXCPP_M64"),
CSetting.define("HXCPP_VISIT_ALLOCS"),
CSetting.define("HXCPP_API_LEVEL=430"),
CSetting.define("HXCPP_ALIGN_ALLOC=1"),
CSetting.define("SQLITE_NOHAVE_SYSTEM", .when(platforms: [.iOS, .tvOS, .watchOS])),
CSetting.define("IPHONE", .when(platforms: [.iOS])),
CSetting.define("APPLETV", .when(platforms: [.tvOS])),
CSetting.define("HX_APPLEWATCH", .when(platforms: [.watchOS])),
CSetting.define("HX_MACOS", .when(platforms: [.macOS])),
]
),
.target(name: "Snikket", dependencies: ["c_snikket"]),
],
cLanguageStandard: CLanguageStandard.c17,
cxxLanguageStandard: CXXLanguageStandard.cxx17
)