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