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
#! /usr/bin/env bash
set -euo pipefail
if ! uname | grep -iq Linux; then
echo "Sorry, Ekam only works on Linux right now." >&2
exit 1
fi
echo -n "Looking for compiler... "
if [ "x${CXX:-}" == "x" ]; then
if ! (g++ --version | grep -q ' 4[.][789][.]'); then
if which g++-4.7 > /dev/null; then
CXX=g++-4.7
elif which g++-4.8 > /dev/null; then
CXX=g++-4.8
else
echo "none"
echo "Please install G++ 4.7 or better. Or, set the environment variable CXX " >&2
echo "to a compiler that you think will work." >&2
exit 1
fi
else
CXX=g++
fi
fi
echo "$CXX"
export CXX
if [ ! -e .ekam ]; then
echo "================================================================================"
echo "Fetching Ekam and Protobuf code..."
echo "================================================================================"
hg clone https://code.google.com/p/kentons-code/ .ekam
# You don't want these.
rm -rf .ekam/src/modc .ekam/src/evlan
fi
if [ ! -e .ekam/src/protobuf ]; then
echo "================================================================================"
echo "Fetching Protobuf code..."
echo "================================================================================"
svn checkout http://protobuf.googlecode.com/svn/tags/2.5.0/ .ekam/src/protobuf
fi
if [ ! -e .ekam/src/protobuf/src/config.h ]; then
echo "================================================================================"
echo "Configuring Protobuf..."
echo "================================================================================"
pushd .ekam/src/protobuf > /dev/null
./autogen.sh
./configure
cp config.h src
make maintainer-clean
popd
fi
if ! which ekam > /dev/null; then
if [ ! -e .ekam/bin/ekam ]; then
echo "================================================================================"
echo "Bootstrapping Ekam..."
echo "================================================================================"
pushd .ekam > /dev/null
./bootstrap.sh
popd
fi
else
echo "================================================================================"
echo "Using already-installed ekam binary: $(which ekam)"
echo "================================================================================"
fi
if [ ! -e src/base ]; then
ln -s ../.ekam/src/base src/base
fi
if [ ! -e src/os ]; then
ln -s ../.ekam/src/os src/os
fi
if [ ! -e src/ekam ]; then
ln -s ../.ekam/src/ekam src/ekam
fi
if [ ! -e src/protobuf ]; then
ln -s ../.ekam/src/protobuf src/protobuf
fi
echo "================================================================================"
echo "All done..."
echo "================================================================================"
echo "Try:"
echo " make -f Makefile.ekam once"
echo " make -f Makefile.ekam continuous"
echo " make -f Makefile.ekam continuous-opt"