#!/bin/bash

# Search for python
python=$(which python python2 python3 | tail -1)

# Define the target build directory
prefix=$(pwd)/build

bypass=
clean=

srcdir=.
while [ $# -gt 0 ]
do
   case "${1}" in
      --srcdir=*)
         srcdir=${1#*=}
      ;;

      --build)
         bypass=":"
      ;;

      --clean)
         clean="yes"
      ;;
   esac
   shift
done

function waf
{
   pkg="$1"
   shift

   mkdir -p ${pkg}
   pushd >/dev/null ${pkg}

   if [ ! -e "waf" ]
   then
      cp -pr "../${srcdir}/${pkg}"/{waf,waflib} .
   fi
   
   for f in "../${srcdir}/${pkg}"/*
   do
      [ ! -e "${f##*/}" ] && ln -s "${f}"
   done

   export CFLAGS="${CFLAGS/++14/11}" # Circumvent travis setting
   export PKG_CONFIG_PATH="${prefix}/lib/pkgconfig"
   export LDFLAGS="${LDFLAGS} -ldl -lm"

   common="--prefix=${prefix} --out=build --destdir=/"

   if [ "${clean}" = "yes" ]
   then
      ${python} waf clean ${common} || exit 1
   else
      ${bypass} ${python} waf configure ${common} $@ || exit 1

      trap "rm -f .build-timestamp" EXIT
      touch .build-timestamp

      ${python} waf build ${common} $@ || exit 1
      if [ -n "$(find . -newer .build-timestamp -type f ! -name compile_commands.json)" ]
      then
         ${python} waf install ${common} $@ || exit 1
      fi

      rm .build-timestamp
      trap - EXIT
   fi

   popd >/dev/null
}

[ ! -e Makefile ] && ln -s "${srcdir}/Makefile"
[ ! -e configure ] && ln -s "${srcdir}/configure"

waf lv2    --no-plugins --no-coverage
waf serd   --static --no-shared --no-coverage --no-utils --largefile
waf sord   --static --no-shared --no-coverage --no-utils
waf sratom --static --no-shared --no-coverage
waf lilv   --static --no-shared --no-coverage --no-utils
waf suil   --static --no-shared

exit 0