46 lines
1.7 KiB
Bash
Executable File
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.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}"
|