#! /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"