| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- #!/bin/bash
- #
- # Compiles udpgw for Linux.
- # Intended as a convenience if you don't want to deal with CMake.
- # Input environment vars:
- # SRCDIR - BadVPN source code
- # CC - compiler
- # CFLAGS - compiler compile flags
- # LDFLAGS - compiler link flags
- # ENDIAN - "little" or "big"
- # KERNEL - "2.6" or "2.4", default "2.6"
- #
- # Puts object files and the executable in the working directory.
- #
- if [[ -z $SRCDIR ]] || [[ ! -e $SRCDIR/CMakeLists.txt ]]; then
- echo "SRCDIR is wrong"
- exit 1
- fi
- if ! "${CC}" --version &>/dev/null; then
- echo "CC is wrong"
- exit 1
- fi
- if [[ $ENDIAN != "little" ]] && [[ $ENDIAN != "big" ]]; then
- echo "ENDIAN is wrong"
- exit 1
- fi
- if [[ -z $KERNEL ]]; then
- KERNEL="2.6"
- elif [[ $KERNEL != "2.6" ]] && [[ $KERNEL != "2.4" ]]; then
- echo "KERNEL is wrong"
- exit 1
- fi
- CFLAGS="${CFLAGS} -std=gnu99"
- INCLUDES=( "-I${SRCDIR}" )
- DEFS=( -DBADVPN_THREAD_SAFE=0 -DBADVPN_LINUX -DBADVPN_BREACTOR_BADVPN -D_GNU_SOURCE )
- [[ $KERNEL = "2.4" ]] && DEFS=( "${DEFS[@]}" -DBADVPN_USE_SELFPIPE -DBADVPN_USE_POLL ) || DEFS=( "${DEFS[@]}" -DBADVPN_USE_SIGNALFD -DBADVPN_USE_EPOLL )
- [[ $ENDIAN = "little" ]] && DEFS=( "${DEFS[@]}" -DBADVPN_LITTLE_ENDIAN ) || DEFS=( "${DEFS[@]}" -DBADVPN_BIG_ENDIAN )
-
- SOURCES="
- base/BLog_syslog.c
- system/BReactor_badvpn.c
- system/BSignal.c
- system/BConnection_unix.c
- system/BDatagram_unix.c
- system/BTime.c
- system/BUnixSignal.c
- system/BNetwork.c
- flow/StreamRecvInterface.c
- flow/PacketRecvInterface.c
- flow/PacketPassInterface.c
- flow/StreamPassInterface.c
- flow/SinglePacketBuffer.c
- flow/BufferWriter.c
- flow/PacketBuffer.c
- flow/PacketStreamSender.c
- flow/PacketProtoFlow.c
- flow/PacketPassFairQueue.c
- flow/PacketProtoEncoder.c
- flow/PacketProtoDecoder.c
- base/DebugObject.c
- base/BLog.c
- base/BPending.c
- udpgw/udpgw.c
- "
- set -e
- set -x
- OBJS=()
- for f in $SOURCES; do
- obj=$(basename "${f}").o
- "${CC}" -c ${CFLAGS} "${INCLUDES[@]}" "${DEFS[@]}" "${SRCDIR}/${f}" -o "${obj}"
- OBJS=( "${OBJS[@]}" "${obj}" )
- done
- "${CC}" ${LDFLAGS} "${OBJS[@]}" -o udpgw -lrt
|