BadVPN – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 #!/usr/bin/env bash
2 #
3 # Compiles udpgw for Linux.
4 # Intended as a convenience if you don't want to deal with CMake.
5  
6 # Input environment vars:
7 # SRCDIR - BadVPN source code
8 # CC - compiler
9 # CFLAGS - compiler compile flags
10 # LDFLAGS - compiler link flags
11 # ENDIAN - "little" or "big"
12 # KERNEL - "2.6" or "2.4", default "2.6"
13 #
14 # Puts object files and the executable in the working directory.
15 #
16  
17 if [[ -z $SRCDIR ]] || [[ ! -e $SRCDIR/CMakeLists.txt ]]; then
18 echo "SRCDIR is wrong"
19 exit 1
20 fi
21  
22 if ! "${CC}" --version &>/dev/null; then
23 echo "CC is wrong"
24 exit 1
25 fi
26  
27 if [[ $ENDIAN != "little" ]] && [[ $ENDIAN != "big" ]]; then
28 echo "ENDIAN is wrong"
29 exit 1
30 fi
31  
32 if [[ -z $KERNEL ]]; then
33 KERNEL="2.6"
34 elif [[ $KERNEL != "2.6" ]] && [[ $KERNEL != "2.4" ]]; then
35 echo "KERNEL is wrong"
36 exit 1
37 fi
38  
39 CFLAGS="${CFLAGS} -std=gnu99"
40 INCLUDES=( "-I${SRCDIR}" )
41 DEFS=( -DBADVPN_THREAD_SAFE=0 -DBADVPN_LINUX -DBADVPN_BREACTOR_BADVPN -D_GNU_SOURCE )
42  
43 [[ $KERNEL = "2.4" ]] && DEFS=( "${DEFS[@]}" -DBADVPN_USE_SELFPIPE -DBADVPN_USE_POLL ) || DEFS=( "${DEFS[@]}" -DBADVPN_USE_SIGNALFD -DBADVPN_USE_EPOLL )
44  
45 [[ $ENDIAN = "little" ]] && DEFS=( "${DEFS[@]}" -DBADVPN_LITTLE_ENDIAN ) || DEFS=( "${DEFS[@]}" -DBADVPN_BIG_ENDIAN )
46  
47 SOURCES="
48 base/BLog_syslog.c
49 system/BReactor_badvpn.c
50 system/BSignal.c
51 system/BConnection_unix.c
52 system/BConnection_common.c
53 system/BDatagram_unix.c
54 system/BTime.c
55 system/BUnixSignal.c
56 system/BNetwork.c
57 flow/StreamRecvInterface.c
58 flow/PacketRecvInterface.c
59 flow/PacketPassInterface.c
60 flow/StreamPassInterface.c
61 flow/SinglePacketBuffer.c
62 flow/BufferWriter.c
63 flow/PacketBuffer.c
64 flow/PacketStreamSender.c
65 flow/PacketProtoFlow.c
66 flow/PacketPassFairQueue.c
67 flow/PacketProtoEncoder.c
68 flow/PacketProtoDecoder.c
69 base/DebugObject.c
70 base/BLog.c
71 base/BPending.c
72 udpgw/udpgw.c
73 "
74  
75 set -e
76 set -x
77  
78 OBJS=()
79 for f in $SOURCES; do
80 obj=$(basename "${f}").o
81 "${CC}" -c ${CFLAGS} "${INCLUDES[@]}" "${DEFS[@]}" "${SRCDIR}/${f}" -o "${obj}"
82 OBJS=( "${OBJS[@]}" "${obj}" )
83 done
84  
85 "${CC}" ${LDFLAGS} "${OBJS[@]}" -o udpgw -lrt -lpthread