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

umask 022
test -d package -a -d src -a -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-etc || echo /etc > compile/export/conf-etc
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`-`cat compile/export/conf-version` > compile/export/conf-home
test -r compile/export/conf-callpath || echo `cat compile/export/conf-sp_root`/package/`cat compile/export/conf-category`/`cat compile/export/conf-name` > compile/export/conf-callpath
test -r compile/export/conf-install-command || echo /usr/bin > compile/export/conf-install-command
test -r compile/export/conf-install-include || echo /usr/include > compile/export/conf-install-include
test -r compile/export/conf-install-library || echo /usr/lib > compile/export/conf-install-library
test -r compile/export/conf-install-library.so || echo /usr/lib > compile/export/conf-install-library.so
test -r compile/export/conf-install-sysdeps || echo /usr/lib/sysdeps > compile/export/conf-install-sysdeps

for i in `ls -1 conf-compile | grep path-` ; do
  if test ! -r "compile/export/$i" ; then
    : > "compile/export/$i"
    while read line && test -n "$line" ; do
      echo "$line" >> "compile/export/$i"
    done < "conf-compile/$i"
  fi
done
for i in `ls -1 conf-compile | grep flag-` ; do
  : > "compile/export/$i"
done
echo

if test -r conf-compile/import ; then
  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
fi

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
