diff src/capnproto-git-20161025/c++/setup-ekam.sh @ 133:1ac99bfc383d

Add Cap'n Proto source
author Chris Cannam <cannam@all-day-breakfast.com>
date Tue, 25 Oct 2016 11:17:01 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/capnproto-git-20161025/c++/setup-ekam.sh	Tue Oct 25 11:17:01 2016 +0100
@@ -0,0 +1,94 @@
+#! /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"