nim-webrtc/build_usrsctp.sh

46 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
root=$(dirname "$0")
outputFile="${root}/webrtc/usrsctp.nim"
# install nimterop, if not already installed
if ! [ -x "$(command -v toast)" ]; then
nimble install -y nimterop@0.6.11
fi
# run make on usrsctp sources
cd "${root}/usrsctp" && ./bootstrap && ./configure && make && cd -
# add prelude
cat "${root}/prelude_usrsctp.nim" > "${outputFile}"
# assemble list of C files to be compiled
for file in `find ${root}/usrsctp/usrsctplib -name '*.c'`; do
compile="${compile} --compile=${file}"
done
# TODO: Make something more reliable, aka remove this LIBCFLAGS
# and put the different flags on prelude.nim depending on the
# OS we're currently on
LIBCFLAGS="$(grep "^LIBCFLAGS = " "${root}/usrsctp/Makefile" | cut -d' ' -f3- | sed 's/-D/--defines=/g')"
LIBCFLAGS="${LIBCFLAGS}"
for flag in 'STDC_HEADERS=1' 'HAVE_SYS_TYPES_H=1' 'HAVE_SYS_STAT_H=1' 'HAVE_STDLIB_H=1' 'HAVE_STRING_H=1' 'HAVE_MEMORY_H=1' 'HAVE_STRINGS_H=1' 'HAVE_INTTYPES_H=1' 'HAVE_STDINT_H=1' 'HAVE_UNISTD_H=1' 'HAVE_DLFCN_H=1' 'LT_OBJDIR=".libs/"' 'SCTP_DEBUG=1' 'INET=1' 'INET6=1' 'HAVE_SOCKET=1' 'HAVE_INET_ADDR=1' 'HAVE_STDATOMIC_H=1' 'HAVE_SYS_QUEUE_H=1' 'HAVE_LINUX_IF_ADDR_H=1' 'HAVE_LINUX_RTNETLINK_H=1' 'HAVE_NETINET_IP_ICMP_H=1' 'HAVE_NET_ROUTE_H=1' '_GNU_SOURCE'; do
LIBCFLAGS="${LIBCFLAGS} --defines=${flag}"
done
# generate nim wrapper with nimterop
toast \
$compile \
--pnim \
--preprocess \
--noHeader \
$LIBCFLAGS \
--replace=sockaddr=SockAddr \
--replace=SockAddr_storage=Sockaddr_storage \
--replace=SockAddr_in=Sockaddr_in \
--replace=SockAddr_conn=Sockaddr_conn \
--replace=socklen_t=SockLen \
--includeDirs="${root}/usrsctp/usrsctplib" \
"${root}/usrsctp/usrsctplib/usrsctp.h" >> "${outputFile}"
sed -i 's/\bpassC\b/passc/g' "${outputFile}"