#!/bin/sh
LUA=moonjit
LPTY=lpty-1.2.1-1

set -e

SYSTEM=`uname`

if [ "$SYSTEM" = "Linux" ]
then
  SYSTEM="linux"
elif [ "$SYSTEM" = "Darwin" ]
then
  SYSTEM="osx"
  export MACOSX_DEPLOYMENT_TARGET="10.7"
else
  echo Unsupported system: $SYSTEM
  exit -1
fi

BRATPATH=`pwd`
SRC=$BRATPATH/src/$SYSTEM
COMMON=$BRATPATH/src/common
LIB=$BRATPATH/lib
STDLIB=$BRATPATH/stdlib
export LUA_SRC_PATH=$BRATPATH/bin/lua/
export LUA_INC_PATH=$BRATPATH/bin/lua/include/moonjit-2.3
export BRAT_LIB_PATH=$LIB
export PATH=$LUA_SRC_PATH/bin:$PATH

cd $SRC

echo Building Lua

#Clear out existing LuaJIT
rm -rf $BRATPATH/bin/lua

#Build Lua
cd $COMMON/$LUA
export DEFAULT_CC=clang

make PREFIX=$BRATPATH/bin/lua

#Copy to bin/lua
make install PREFIX=$BRATPATH/bin/lua

mv -f $BRATPATH/bin/lua/bin/luajit $BRATPATH/bin/lua/bin/lua

#Dev versions of moonjit get this wrong
ln -s $BRATPATH/bin/lua/share/moonjit-2.3.0-dev/ $BRATPATH/bin/lua/share/moonjit-2.2.0

echo Building md5
cd $SRC/md5
make
cp -f md5.so $LIB

echo Building lpty
cd $SRC/$LPTY
make
cp -f lpty.so $LIB

echo Cleaning up...

cd $COMMON/$LUA
make clean

cd $SRC/md5
make clean

cd $SRC/$LPTY
make clean

cd $BRATPATH

set +e

echo Building Brat libraries with minibrat

for f in stdlib/parser/*.brat; do
  echo - $f
  ./minibrat $f
done

for f in stdlib/*.brat; do
  echo - $f
  ./minibrat $f
done

echo Building Brat libraries with fresh Brat

for f in stdlib/parser/*.brat; do
  echo - $f
  ./brat -f $f
done

for f in stdlib/*.brat; do
  echo - $f
  ./brat -f $f
done

set -e

echo Running Brat tests

./brat test/test.brat