2022-10-27 10:49:53 +00:00
#!/bin/bash
root = $( dirname " $0 " )
2022-10-28 12:35:56 +00:00
outputFile = " ${ root } /webrtc/usrsctp.nim "
2022-10-27 10:49:53 +00:00
# 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
2022-10-28 12:35:56 +00:00
cd " ${ root } /usrsctp " && ./bootstrap && ./configure && make && cd -
2022-10-27 10:49:53 +00:00
# add prelude
2023-05-09 13:22:34 +00:00
cat " ${ root } /prelude_usrsctp.nim " > " ${ outputFile } "
2022-10-27 10:49:53 +00:00
# assemble list of C files to be compiled
for file in ` find ${ root } /usrsctp/usrsctplib -name '*.c' ` ; do
compile = " ${ compile } --compile= ${ file } "
done
2022-11-03 16:27:01 +00:00
# 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
2022-10-28 12:35:56 +00:00
LIBCFLAGS = " $( grep "^LIBCFLAGS = " " ${ root } /usrsctp/Makefile " | cut -d' ' -f3- | sed 's/-D/--defines=/g' ) "
2022-11-21 16:22:40 +00:00
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
2022-10-28 12:35:56 +00:00
2022-10-27 10:49:53 +00:00
# generate nim wrapper with nimterop
toast \
$compile \
--pnim \
--preprocess \
--noHeader \
2022-10-28 12:35:56 +00:00
$LIBCFLAGS \
2022-10-27 10:49:53 +00:00
--replace= sockaddr = SockAddr \
--replace= SockAddr_storage = Sockaddr_storage \
2022-10-28 12:35:56 +00:00
--replace= SockAddr_in = Sockaddr_in \
--replace= SockAddr_conn = Sockaddr_conn \
2022-10-27 10:49:53 +00:00
--replace= socklen_t = SockLen \
--includeDirs= " ${ root } /usrsctp/usrsctplib " \
2022-10-28 12:35:56 +00:00
" ${ root } /usrsctp/usrsctplib/usrsctp.h " >> " ${ outputFile } "
sed -i 's/\bpassC\b/passc/g' " ${ outputFile } "