#!/bin/sh
set -e

FLAVOR=$1
PACKAGE="mu-cite"

if [ -z "${FLAVOR}" ]; then
  echo Need argument to determin FLAVOR of emacsen
  exit 1
fi
if [ -z "${PACKAGE}" ]; then
  echo Internal error: need package name
  exit 1
fi
if [ "X${FLAVOR}" = Xemacs ]; then exit 0; fi
if [ ! -f "/usr/share/$FLAVOR/site-lisp/apel/poem.elc" ]; then exit 0; fi
if [ ! -f "/usr/share/$FLAVOR/site-lisp/flim/std11.elc" ]; then exit 0; fi

ELDIR=/usr/share/emacs/site-lisp/${PACKAGE}
ELCDIR_BASE=/usr/share/${FLAVOR}/site-lisp/${PACKAGE}
TOELDIR_BASE=../../../emacs/site-lisp/$PACKAGE
SITELISP=/usr/share/${FLAVOR}/site-lisp
APEL_DIR_BASE=${SITELISP}/apel
FLIM_DIR_BASE=${SITELISP}/flim

EMACSEN_MULE=${FLAVOR}
EMACSEN_NOMULE=""

FLAVOR_SUFFIX=`echo ${FLAVOR} | cut -s -d - -f 2`
FLAVORTEST=`echo ${FLAVOR} | sed -e s/^s// | cut -c-6`
if [ "X${FLAVORTEST}" = "Xxemacs" ]; then
  FLAVOR_BODY=`echo ${FLAVOR} | cut -d - -f 1`
  if [ "X${FLAVOR_SUFFIX}" = "Xmule" ]; then
    EMACSEN_MULE=`ls /usr/bin/${FLAVOR_BODY}*-mule* 2>/dev/null | head -1`
    if [ -n "${EMACSEN_MULE}" ]; then
      EMACSEN_MULE=`basename ${EMACSEN_MULE}`
    fi
    EMACSEN_NOMULE=""
  elif [ "X${FLAVOR_SUFFIX}" = "Xnomule" ]; then
    EMACSEN_MULE=""
    EMACSEN_NOMULE=`ls /usr/bin/${FLAVOR_BODY}*-nomule* 2>/dev/null | head -1`
    if [ -n "${EMACSEN_NOMULE}" ]; then
      EMACSEN_NOMULE=`basename ${EMACSEN_NOMULE}`
    fi
  else
    FLAVOR_SUFFIX=""
    EMACSEN_MULE=`ls /usr/bin/${FLAVOR}*-mule* 2>/dev/null | head -1`
    if [ -n "${EMACSEN_MULE}" ]; then
      EMACSEN_MULE=`basename ${EMACSEN_MULE}`
    fi
    EMACSEN_NOMULE=`ls /usr/bin/${FLAVOR}*-nomule* 2>/dev/null | head -1`
    if [ -n "${EMACSEN_NOMULE}" ]; then
      EMACSEN_NOMULE=`basename ${EMACSEN_NOMULE}`
    fi
  fi
fi

for EMACSEN in "${EMACSEN_MULE}" "${EMACSEN_NOMULE}"; do
  if [ -n "${EMACSEN}" ]; then
    ELCDIR=${ELCDIR_BASE}
    TOELDIR=$TOELDIR_BASE
    APEL_DIR=${APEL_DIR_BASE}
    FLIM_DIR=${FLIM_DIR_BASE}
    if [ "X${FLAVORTEST}" = "Xxemacs" -a -z "${FLAVOR_SUFFIX}" ]; then
      if [ "X${EMACSEN}" = "X${EMACSEN_MULE}" ]; then
	echo -n "install/${PACKAGE}: Byte-compiling for ${FLAVOR} (mule) ..."
        ELCDIR=${ELCDIR}/mule
	TOELDIR=../$TOELDIR
	if [ -d ${APEL_DIR_BASE}/mule ]; then
	  APEL_DIR=${APEL_DIR_BASE}/mule
	fi
	if [ -d ${FLIM_DIR_BASE}/mule ]; then
	  FLIM_DIR=${FLIM_DIR_BASE}/mule
	fi
      else
	echo -n "install/${PACKAGE}: Byte-compiling for ${FLAVOR} (nomule) ..."
        ELCDIR=${ELCDIR}/nomule
	TOELDIR=../$TOELDIR
	if [ -d ${APEL_DIR_BASE}/nomule ]; then
	  APEL_DIR=${APEL_DIR_BASE}/nomule
	fi
	if [ -d ${FLIM_DIR_BASE}/nomule ]; then
	  FLIM_DIR=${FLIM_DIR_BASE}/nomule
	fi
      fi
    else
      echo -n "install/${PACKAGE}: Byte-compiling for ${FLAVOR} ..."
    fi
    STAMP="${ELCDIR}/compile-stamp"
    if [ ! -e "${STAMP}" ]; then
      if [ "X${FLAVORTEST}" = "Xxemacs" -a -z "${FLAVOR_SUFFIX}" ]; then
	rm -f ${ELCDIR_BASE}/*.el ${ELCDIR_BASE}/*.elc
      fi
      rm -rf ${ELCDIR}
      install -m 755 -d ${ELCDIR}/tmp
      cp -r ${ELDIR}/* ${ELCDIR}/tmp/
      (cd ${ELCDIR}/tmp
	cat << EOF > MU-MK.tmp
(setq load-path (cons "${APEL_DIR}" load-path))
(setq load-path (cons "${FLIM_DIR}" load-path))
(setq load-path (cons "${ELCDIR}/tmp" load-path))
EOF
	cat MU-MK >> MU-MK.tmp
	make EMACS=${EMACSEN} LISPDIR=${ELCDIR}/tmp \
	  FLAGS="-batch -q -no-site-file -l MU-MK.tmp" \
	  > ${ELCDIR}/CompilationLog 2>&1
	rm -f ${ELCDIR}/tmp/mu-bbdb.elc
	mv ${ELCDIR}/tmp/*.elc ${ELCDIR}/
	cd "$ELDIR"
	FILES=`echo *.el`
	cd ${ELCDIR}
	rm -rf ${ELCDIR}/tmp
	for f in $FILES; do
	  ln -sf "$TOELDIR/$f" .
	done
	if [ "X${EMACSEN}" != "X${EMACSEN_MULE}" ]; then
	  rm -f ${ELCDIR}/latex-math-symbol.el*
	fi
      )
      gzip -9 ${ELCDIR}/CompilationLog
      chmod 644 ${ELCDIR}/CompilationLog.gz
      if [ -f ${ELCDIR}/mu-cite.elc ]; then
        touch ${ELCDIR}/*.elc
        chmod 644 ${ELCDIR}/*.elc
#	echo "${VERSION}" > ${STAMP}
#	chmod 644 ${STAMP}
      fi
      cd "$ELCDIR_BASE"
      if [ "X${FLAVORTEST}" = "Xxemacs" -a -z "${FLAVOR_SUFFIX}" ]; then
	if [ -e ./mule/mu-cite.elc ]; then
	  ln -sf ./mule/*.elc ./mule/*.el .
	elif [ -e ./nomule/mu-cite.elc ]; then
	  ln -sf ./nomule/*.elc ./nomule/*.el .
	fi
      fi
      echo " done."
    fi
  fi
done 

exit 0
