You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
capnproto/c++/setup-ekam.sh

95 lines
2.9 KiB
Bash

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