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