95 lines
2.9 KiB
Bash
Executable File
95 lines
2.9 KiB
Bash
Executable File
#! /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"
|