#!/bin/sh -e
# Public domain.

umask 022
test -d package || { echo 'Wrong working directory.'; exit 100; }
test -d src || { echo 'Wrong working directory.'; exit 100; }
test -d conf-compile || { echo 'Wrong working directory.'; exit 100; }

mkdir -p compile/export
echo 'Linking ./src into ./compile...'
for i in `ls src` ; do
  if test -d "src/$i" ; then
    mkdir -p "compile/$i"
    for j in `ls src/$i` ; do
      test -r "compile/$i/$j" || ln -s "../../src/$i/$j" "compile/$i/$j"
    done
  else
    test -r "compile/$i" || ln -s "../src/$i" "compile/$i"
  fi
done
echo

echo 'Importing ./conf-compile files into the build tree...'
echo '(Remove the compile/ subdirectory if conf-compile/ has been modified
since the last build.)'
for i in `ls -1 conf-compile | grep conf-` ; do
  test -r "compile/export/$i" || head -n 1 < "conf-compile/$i" > "compile/export/$i"
done
test -r compile/export/conf-category || cat package/category > compile/export/conf-category
test -r compile/export/conf-name || cat package/name > compile/export/conf-name
test -r compile/export/conf-version || cat package/version > compile/export/conf-version
test -r compile/export/conf-sp_root || echo > compile/export/conf-sp_root
test -r compile/export/conf-home || echo `cat compile/export/conf-sp_root`/package/`cat compile/export/conf-category`/`cat compile/export/conf-name` > compile/export/conf-home
echo

test -r conf-compile/import &&
{
  echo 'Importing external files...'
  spr=`cat compile/export/conf-sp_root`
  for i in `sed "s|\\$SP_ROOT|$spr|" < conf-compile/import` ; do
    if test -d "$i" ; then
      for j in `ls "$i"` ; do
        rm -f "compile/export/$j"
        echo "Importing $i/$j"
        ln -s "$i/$j" "compile/export/$j"
      done
    else
      echo "Wrong import directory: $i"
      exit 100
    fi
  done
  echo
} || true

echo 'Linking include files...'
for i in sys `cat package/subsystems` ; do
  for j in `cat "src/$i/INCLUDE"` ; do
    test -r "compile/export/$j" || ln -s "../$i/$j" "compile/export/$j"
  done
done
echo
