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