blob: de899072dcc3c53753ee598b2c20bccfca3925f0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
#!/usr/bin/env zsh
#
# Copyright (C) 2012 Denis Roio <jaromil@dyne.org>
#
# This source code is free software; you can redistribute it and/or
# modify it under the terms of the GNU Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This source code is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# Please refer to the GNU Public License for more details.
#
# You should have received a copy of the GNU Public License along with
# this source code; if not, write to:
# Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
REPO="http://files.dyne.org/leap/openvpn/sources"
TOPSRC=`pwd`
QUIET=0
DEBUG=0
autoload colors; colors
# standard output message routines
# it's always useful to wrap them, in case we change behaviour later
notice() { if [[ $QUIET == 0 ]]; then print "$fg_bold[green][*]$fg_no_bold[default] $1" >&2; fi }
error() { if [[ $QUIET == 0 ]]; then print "$fg[red][!]$fg[default] $1" >&2; fi }
func() { if [[ $DEBUG == 1 ]]; then print "$fg[blue][D]$fg[default] $1" >&2; fi }
act() {
if [[ $QUIET == 0 ]]; then
if [ "$1" = "-n" ]; then
print -n "$fg_bold[white] . $fg_no_bold[default] $2" >&2;
else
print "$fg_bold[white] . $fg_no_bold[default] $1" >&2;
fi
fi
}
notice "OpenVPN build in ${TOPSRC}"
prepare_sources() {
notice "Preparing sources"
# look for a file names "Sources", download and decompress entries
# format of file: name version compression (complete filename when merged)
{ test -r Sources } || {
error "Sources not found, nothing to build here"
return 1
}
for src in `cat Sources | awk '
/^#/ {next}
/^./ { print $1 ";" $2 ";" $3 }'`; do
name="${src[(ws:;:)1]}"
ver="${src[(ws:;:)2]}"
arch="${src[(ws:;:)3]}"
file="${name}${ver}${arch}"
func "preparing source for ${name}${ver}"
# download the file
{ test -r ${file} } || {
act "downloading ${file}"
wget ${REPO}/${file}
}
# decompress the file
{ test -r ${name} } || {
act "decompressing ${name}"
case $arch in
## BARE SOURCE
.tar.gz) tar xfz ${file}; mv ${name}${ver} ${name} ;;
.tar.bz2) tar xfj ${file}; mv ${name}${ver} ${name} ;;
*) error "compression not supported: $arch"
esac
}
act "${name} source ready"
done
}
prepare_sources
# tap windows
{ test -r tap-windows } || { git clone https://github.com/OpenVPN/tap-windows.git }
{ test -r lzo/src/liblzo2.la } || { pushd lzo
./configure --host=i586-mingw32msvc
make; popd }
# openssl
{ test -r openssl/libssl.a } || {
pushd openssl
./Configure --cross-compile-prefix=i586-mingw32msvc- mingw
make; popd }
# openvpn
{ test -r openvpn } || { git clone https://github.com/OpenVPN/openvpn.git }
pushd openvpn
{ test -r configure } || { autoreconf -i }
CFLAGS="-I/usr/i586-mingw32msvc/include/ddk -D_WIN32_WINNT=0x0501" \
LZO_LIBS="${TOPSRC}/lzo/src/liblzo2.la" \
LZO_CFLAGS="-I${TOPSRC}/lzo/include" \
TAP_CFLAGS="-I${TOPSRC}/tap-windows/src" \
OPENSSL_SSL_CFLAGS="-I${TOPSRC}/openssl/include" \
OPENSSL_CRYPTO_CFLAGS="-I${TOPSRC}/openssl/crypto" \
OPENSSL_SSL_LIBS="${TOPSRC}/openssl/libssl.a" \
OPENSSL_CRYPTO_LIBS="${TOPSRC}/openssl/libcrypto.a" \
./configure --host=i586-mingw32msvc
make
popd
|