cannam@133
|
1 #! /usr/bin/env bash
|
cannam@133
|
2
|
cannam@133
|
3 set -euo pipefail
|
cannam@133
|
4
|
cannam@133
|
5 if ! uname | grep -iq Linux; then
|
cannam@133
|
6 echo "Sorry, Ekam only works on Linux right now." >&2
|
cannam@133
|
7 exit 1
|
cannam@133
|
8 fi
|
cannam@133
|
9
|
cannam@133
|
10 echo -n "Looking for compiler... "
|
cannam@133
|
11 if [ "x${CXX:-}" == "x" ]; then
|
cannam@133
|
12 if ! (g++ --version | grep -q ' 4[.][789][.]'); then
|
cannam@133
|
13 if which g++-4.7 > /dev/null; then
|
cannam@133
|
14 CXX=g++-4.7
|
cannam@133
|
15 elif which g++-4.8 > /dev/null; then
|
cannam@133
|
16 CXX=g++-4.8
|
cannam@133
|
17 else
|
cannam@133
|
18 echo "none"
|
cannam@133
|
19 echo "Please install G++ 4.7 or better. Or, set the environment variable CXX " >&2
|
cannam@133
|
20 echo "to a compiler that you think will work." >&2
|
cannam@133
|
21 exit 1
|
cannam@133
|
22 fi
|
cannam@133
|
23 else
|
cannam@133
|
24 CXX=g++
|
cannam@133
|
25 fi
|
cannam@133
|
26 fi
|
cannam@133
|
27
|
cannam@133
|
28 echo "$CXX"
|
cannam@133
|
29 export CXX
|
cannam@133
|
30
|
cannam@133
|
31 if [ ! -e .ekam ]; then
|
cannam@133
|
32 echo "================================================================================"
|
cannam@133
|
33 echo "Fetching Ekam and Protobuf code..."
|
cannam@133
|
34 echo "================================================================================"
|
cannam@133
|
35 hg clone https://code.google.com/p/kentons-code/ .ekam
|
cannam@133
|
36
|
cannam@133
|
37 # You don't want these.
|
cannam@133
|
38 rm -rf .ekam/src/modc .ekam/src/evlan
|
cannam@133
|
39 fi
|
cannam@133
|
40
|
cannam@133
|
41 if [ ! -e .ekam/src/protobuf ]; then
|
cannam@133
|
42 echo "================================================================================"
|
cannam@133
|
43 echo "Fetching Protobuf code..."
|
cannam@133
|
44 echo "================================================================================"
|
cannam@133
|
45 svn checkout http://protobuf.googlecode.com/svn/tags/2.5.0/ .ekam/src/protobuf
|
cannam@133
|
46 fi
|
cannam@133
|
47
|
cannam@133
|
48 if [ ! -e .ekam/src/protobuf/src/config.h ]; then
|
cannam@133
|
49 echo "================================================================================"
|
cannam@133
|
50 echo "Configuring Protobuf..."
|
cannam@133
|
51 echo "================================================================================"
|
cannam@133
|
52 pushd .ekam/src/protobuf > /dev/null
|
cannam@133
|
53 ./autogen.sh
|
cannam@133
|
54 ./configure
|
cannam@133
|
55 cp config.h src
|
cannam@133
|
56 make maintainer-clean
|
cannam@133
|
57 popd
|
cannam@133
|
58 fi
|
cannam@133
|
59
|
cannam@133
|
60 if ! which ekam > /dev/null; then
|
cannam@133
|
61 if [ ! -e .ekam/bin/ekam ]; then
|
cannam@133
|
62 echo "================================================================================"
|
cannam@133
|
63 echo "Bootstrapping Ekam..."
|
cannam@133
|
64 echo "================================================================================"
|
cannam@133
|
65 pushd .ekam > /dev/null
|
cannam@133
|
66 ./bootstrap.sh
|
cannam@133
|
67 popd
|
cannam@133
|
68 fi
|
cannam@133
|
69 else
|
cannam@133
|
70 echo "================================================================================"
|
cannam@133
|
71 echo "Using already-installed ekam binary: $(which ekam)"
|
cannam@133
|
72 echo "================================================================================"
|
cannam@133
|
73 fi
|
cannam@133
|
74
|
cannam@133
|
75 if [ ! -e src/base ]; then
|
cannam@133
|
76 ln -s ../.ekam/src/base src/base
|
cannam@133
|
77 fi
|
cannam@133
|
78 if [ ! -e src/os ]; then
|
cannam@133
|
79 ln -s ../.ekam/src/os src/os
|
cannam@133
|
80 fi
|
cannam@133
|
81 if [ ! -e src/ekam ]; then
|
cannam@133
|
82 ln -s ../.ekam/src/ekam src/ekam
|
cannam@133
|
83 fi
|
cannam@133
|
84 if [ ! -e src/protobuf ]; then
|
cannam@133
|
85 ln -s ../.ekam/src/protobuf src/protobuf
|
cannam@133
|
86 fi
|
cannam@133
|
87
|
cannam@133
|
88 echo "================================================================================"
|
cannam@133
|
89 echo "All done..."
|
cannam@133
|
90 echo "================================================================================"
|
cannam@133
|
91 echo "Try:"
|
cannam@133
|
92 echo " make -f Makefile.ekam once"
|
cannam@133
|
93 echo " make -f Makefile.ekam continuous"
|
cannam@133
|
94 echo " make -f Makefile.ekam continuous-opt"
|