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

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

spr=`cat compile/export/conf-sp_root`
category=`cat compile/export/conf-category`
name=`cat compile/export/conf-name`
version=`cat compile/export/conf-version`
major=`echo $version | cut -d. -f1`
minor=`echo $version | cut -d. -f2`
etc=`cat compile/export/conf-etc`

exportit()
{
  dir="$1"
  if test -f "package/$dir.exported" ; then
    if test -f "compile/export/flag-slashpackage" ; then
      dest="$spr/$dir"
      cmd="ln -s"
      srcbase="../package/$category/$name"
      echo "Making links in $dest ..."
    else
      dest=`cat "compile/export/conf-install-$dir"`
      cmd="cp -P"
      srcbase=.
      echo "Copying files to $dest ..."
    fi
    mkdir -p "$dest"
    for i in `cat "package/$dir.exported"` ; do
      rm -f "$dest/$i"'{new}'
      $cmd "$srcbase/$dir/$i" "$dest/$i"'{new}'
      if test "$srcbase" = "." ; then
        if test -g "./$dir/$i" ; then
          chmod g+s "$dest/$i"'{new}'
        fi
        if test -u "./$dir/$i" ; then
          chmod u+s "$dest/$i"'{new}'
        fi
      fi
      mv -f "$dest/$i"'{new}' "$dest/$i"
    done
  fi
}

exportdynlibs()
{
  dir="$1"
  if test -f "package/$dir.exported" ; then
    if test -f compile/export/flag-slashpackage ; then
      dest="$spr/$dir"
      cmd="ln -s"
      srcbase="../package/$category/$name"
      echo "Making links in $dest ..."
    else
      dest=`cat "compile/export/conf-install-$dir"`
      cmd="cp -P"
      srcbase=.
      echo "Copying files to $dest ..."
    fi
    mkdir -p "$dest"
    for i in `cat "package/$dir.exported"`
    do
      rm -f "$dest/$i.$version"'{new}' "$dest/$i.$major.$minor"'{new}' "$dest/$i.$major"'{new}' "$dest/$i"'{new}'
      $cmd "$srcbase/$dir/$i.$version" "$dest/$i.$version"'{new}'
      mv -f "$dest/$i.$version"'{new}' "$dest/$i.$version"
      if test "$version" != "$major.$minor" ; then
        ln -s "$i.$version" "$dest/$i.$major.$minor"'{new}'
        mv -f "$dest/$i.$major.$minor"'{new}' "$dest/$i.$major.$minor"
      fi
      ln -s "$i.$major.$minor" "$dest/$i.$major"'{new}'
      mv -f "$dest/$i.$major"'{new}' "$dest/$i.$major"
      ln -s "$i.$major" "$dest/$i"'{new}'
      mv -f "$dest/$i"'{new}' "$dest/$i"
    done
  fi
}

exportit command
exportit library
test -f compile/export/flag-allstatic || exportdynlibs library.so
exportit include
exportit man
exportit doc
exportit sysdeps
 
if test -d ./etc -a -f package/global ; then
  echo "Installing global files in $etc ..."
  for i in `cat package/global` ; do
    rm -f "$etc/$i"'{new}'
    cp -P ./etc/$i "$etc/$i"'{new}'
    mv -f "$etc/$i"'{new}' "$etc/$i"
  done
fi
