#!/bin/bash

pidfile=/tmp/CompileServer.pid
waittime=2
jar=Vona-lite.jar
make_silent="make --silent --no-print-directory"
script_dir=`dirname "$0"`
no_start=$1

jdk_dir=$JAVA_HOME
[[ "${jdk_dir}x" != "x" ]] || jdk_dir=/usr
jdk_bin=$jdk_dir/bin
tools_jar=$jdk_dir/lib/tools.jar

if [[ -f $pidfile ]]; then

pid=`cat $pidfile`
u_pid=`ps -ax -o pid= | grep "$pid" | tr -d ' '`

if [[ "${pid}x" = "${u_pid}x" ]]; then
echo CompileServer OK
else
echo CompileServer BAD
fi

exit

fi # if pidfile

if [[ $no_start ]]; then

echo run this command to start CompileServer:
echo $0
echo CompileServer BAD

exit 1

fi # no_start

if [ -f makefile ]; then

#important: avoid recursion
export NO_COMPILE_SERVER=1
export NO_CACHE_CREATE=1

v=`${make_silent} show-cs-scripts`
[[ "${v}x" != "x" ]] && [[ -f "${v}/${jar}" ]] && script_dir=$v

v=`${make_silent} show-jdk-bin`
[[ "${v}x" != "x" ]] && jdk_bin=$v

v=`${make_silent} show-tools-jar`
[[ "${v}x" != "x" ]] && tools_jar=$v

fi # if makefile

if [[ ! -r $tools_jar ]]; then
if [[ `uname -s` == "Darwin" ]]; then
tools_jar=/Library/Java/JavaVirtualMachines/jdk`javac -version 2>&1 | cut -f2 -d' '`.jdk/Contents/Home/lib/tools.jar
else
f=`which javac`
while [ -L "$f" ]; do f=`ls -l "$f" | awk '{print $NF}'`; done
tools_jar=`dirname $f`/../lib/tools.jar
fi
fi # tools_jar not readable

cp=$tools_jar:$script_dir/$jar

if [[ `uname -s | grep CYGWIN` ]]; then
cp=`cygpath -w -p "$cp"`
waittime=5
fi

if [[ -x ${jdk_bin}/java ]]; then
jva=${jdk_bin}/java
else
jva=java
fi

#verbose="-v"
cmd="$jva -classpath $cp vona.compileserver.CompileServer $verbose"
echo cmd=$cmd

$cmd &

pid=$!

sleep $waittime

u_pid=`ps -ax -o pid= | grep "$pid" | tr -d ' '`

if [[ ${pid} != ${u_pid} ]]; then
CompileServer-kill
rm -f $pidfile
echo CompileServer BAD
exit $?
fi

echo $pid > $pidfile

echo CompileServer OK
