Newer
Older
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#!/bin/sh
# This script is used for testing the build, primarily for use
# with travis, but may be used by hand as well.
set -e
set -x
# Test autoconf build
autoconf_build()
{
opts=""
# network
case "$3" in
ON) opts="$opts --enable-network" ;;
*) opts="$opts --disable-network" ;;
esac
# netaccessor
case "$4" in
curl) opts="$opts --enable-netaccessor-curl" ;;
socket) opts="$opts --enable-netaccessor-socket" ;;
cfurl) opts="$opts --enable-netaccessor-cfurl" ;;
winsock) opts="$opts --enable-netaccessor-winsock" ;;
esac
# msgloader
case "$5" in
inmemory) opts="$opts --enable-msgloader-inmemory" ;;
icu) opts="$opts --enable-msgloader-icu" ;;
iconv) opts="$opts --enable-msgloader-iconv" ;;
esac
# transcoder
case "$6" in
# Testing on Linux, it's always GNU iconv
iconv) opts="$opts --enable-transcoder-gnuiconv" ;;
gnuiconv) opts="$opts --enable-transcoder-gnuiconv" ;;
icu) opts="$opts --enable-transcoder-icu" ;;
macosunicodeconverter) opts="$opts --enable-transcoder-macosunicodeconverter" ;;
windows) opts="$opts --enable-transcoder-windows" ;;
esac
autoreconf -ivf
mkdir autoconf-build
cd autoconf-build
echo "Running ../configure --prefix=$(pwd)/../autoconf-install) ${opts}"
../configure --prefix=$(pwd)/../autoconf-install ${opts}
make
make install
make check
}
# Install needed tools
cmake_deps()
{
mkdir -p download
mkdir -p tools
if [ "$(uname -s)" = "Linux" ]; then
cmake_file="cmake-3.8.2-Linux-x86_64.tar.gz"
cmake_hash="574673d3f37b0be6a0813b894a8bce9c4af08c13f1ec25c030a69f42e0e4b349e0192385ef20c8a9271055b7c3b24c5b20fb5009762131a3fba3d17576e641f1"
elif [ "$(uname -s)" = "Darwin" ]; then
cmake_file="cmake-3.8.2-Darwin-x86_64.tar.gz"
cmake_hash="fd1c09dd73fe2b23fdc9ac915a90343d2e27409182dd1f2bf509ddf54ca926f97e1906fc18f119e8ea52797c05d4b919772f43500bffbcf2c3cdc86828d9067e"
fi
cmake_url="https://cmake.org/files/v3.8/${cmake_file}"
if [ "$(uname -s)" = "Linux" ]; then
ninja_file="ninja-linux.zip"
ninja_hash="2dddc52750c5e6f841acd0d978b894c9a6562f12ddb4ba9e5118a213f54265f065682ffe1bc7bc2ac6146760145d17800a4b7373791cd1fbbaf0836faf050e19"
elif [ "$(uname -s)" = "Darwin" ]; then
ninja_file="ninja-mac.zip"
ninja_hash="e008c9814447bbf356be7f2daf6d212657fb22b67e7de3885bd2f27766cd7c8a2ad61a4aace170674464ccf55813cbe2bf311485bc2058e89867f17b692642b9"
fi
ninja_url="https://github.com/ninja-build/ninja/releases/download/v1.7.2/${ninja_file}"
(
cd download
if [ ! -f "$cmake_file" ] || [ "$(shasum -a 512 "$cmake_file")" != "$cmake_hash $cmake_file" ]; then
wget "$cmake_url"
if [ "$(shasum -a 512 "$cmake_file")" != "$cmake_hash $cmake_file" ]; then
echo "Error: cmake download hash mismatch" >&2
exit 1
fi
fi
tar xf "$cmake_file"
cp -a ${cmake_file%.tar.gz}/* ../tools
if [ "$1" = "Ninja" ]; then
if [ ! -f "$ninja_file" ] || [ "$(shasum -a 512 "$ninja_file")" != "$ninja_hash $ninja_file" ]; then
wget "$ninja_url"
if [ "$(shasum -a 512 "$ninja_file")" != "$ninja_hash $ninja_file" ]; then
echo "Error: ninja download hash mismatch" >&2
exit 1
fi
fi
unzip "$ninja_file"
mkdir -p ../tools/bin
mv ninja ../tools/bin
fi
)
}
# Test autoconf build
cmake_build()
{
opts=""
if [ -n "$3" ]; then
opts="$opts -Dnetwork:BOOL=$3"
fi
if [ -n "$4" ]; then
opts="$opts -Dnetwork-accessor=$4"
fi
if [ -n "$5" ]; then
opts="$opts -Dmessage-loader=$5"
fi
if [ -n "$6" ]; then
opts="$opts -Dtranscoder=$6"
fi
PATH="$(pwd)/tools/bin:$PATH"
if [ "$(uname -s)" = "Darwin" ]; then
PATH="$(pwd)/tools/CMake.app/Contents/bin:$PATH"
fi
mkdir cmake-build
cd cmake-build
echo "Running cmake -G "$1" -DCMAKE_BUILD_TYPE="$2" -DCMAKE_INSTALL_PREFIX=../autoconf-install ${opts} .."
cmake -G "$1" -DCMAKE_BUILD_TYPE="$2" -DCMAKE_INSTALL_PREFIX=../autoconf-install ${opts} ..
cmake --build .
cmake --build . --target install
ctest -V
}
build=$1
shift
case $build in
autoconf)
echo "Testing Autoconf build"
autoconf_build "$@"
;;
cmake)
echo "Testing CMake build"
cmake_deps "$@"
cmake_build "$@"
;;
*)
echo "Invalid argument: \"$arg\"" >&2
exit 1
;;
esac
exit 0