BadVPN – Blame information for rev 1
?pathlinks?
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 |