#!/bin/bash
###############################################################################
# BRLTTY - A background process providing access to the console screen (when in
#          text mode) for a blind person using a refreshable braille display.
#
# Copyright (C) 1995-2023 by The BRLTTY Developers.
#
# BRLTTY comes with ABSOLUTELY NO WARRANTY.
#
# This is free software, placed under the terms of the
# GNU Lesser General Public License, as published by the Free Software
# Foundation; either version 2.1 of the License, or (at your option) any
# later version. Please see the file LICENSE-LGPL for details.
#
# Web Page: http://brltty.app/
#
# This software is maintained by Dave Mielke <dave@mielke.cc>.
###############################################################################

readonly configureOptions=(
   --without-libbraille
   --without-flite
   --without-mikropuhe
   --without-speechd
   --without-swift
   --without-theta
)

. "`dirname "${0}"`/prologue.sh"

[ "${#}" -gt 0 ] || syntaxError "missing source root"
sourceRoot="${1}"
shift
cd "${sourceRoot}" || exit "${?}"
sourceRoot="`pwd`"

if [ "${#}" -eq 0 ]
then
   archiveName="`basename "${sourceRoot}"`"
else
   archiveName="${1}"
   shift
fi

if [ "${#}" -eq 0 ]
then
   archiveFile="${archiveName}.tar"
else
   archiveFile="${1}"
   shift
fi
[ "${archiveFile#/}" = "${archiveFile}" ] && archiveFile="${initialDirectory}/${archiveFile}"

[ "${#}" -eq 0 ] || syntaxError "too many parameters"

needTemporaryDirectory
set -e

cp -p -r -- "${sourceRoot}" "${archiveName}"
cd "${archiveName}"

"${sourceRoot}/getrevid" "${sourceRoot}" >REVISION
./autogen
./configure --quiet "${configureOptions[@]}"

(  set -e
   cd "${documentsSubdirectory}"
   make -s clean
   make -s all
)
"${sourceRoot}/mkdocs" -o "doc" -s "${sourceRoot}" -b "."

specFile="brltty.spec"
mv -- "${specFile}" "${temporaryDirectory}"
make -s distclean
mv -- "${temporaryDirectory}/${specFile}" .

rm -f -r -- .git
find . -name .gitignore -exec rm {} \;
rm -f -r -- .svn

cd ..
tar --create --no-anchored --file "${archiveFile}" "${archiveName}"
exit 0
