#!/bin/bash

# Slackware build script for mads

# Written by B. Watson (urchlay@slackware.uk)

# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.

# 20261006 bkw: update for v2.1.9.
# 20260926 bkw: update for v2.1.8.
# 20241101 bkw:
# - update for v2.1.6.
# - fix dir case for examples.
# - port batch files in examples to shell scripts.
# - don't include windows or mac executables in examples.
# 20230103 bkw: update for v2.1.5.
# 20210903 bkw: update for v2.1.3.

cd $(dirname $0) ; CWD=$(pwd)

PRGNAM=mads
VERSION=${VERSION:-2.1.9}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}

if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) ARCH=i586 ;;
    arm*) ARCH=arm ;;
       *) ARCH=$( uname -m ) ;;
  esac
fi

if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
  echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
  exit 0
fi

TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

set -e

SRCNAM=Mad-Assembler

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $SRCNAM-$VERSION
tar xvf $CWD/$SRCNAM-$VERSION.tar.gz \
  --exclude '*.exe' \
  --exclude 'bin/*' \
  --no-same-owner
cd $SRCNAM-$VERSION
find . ! -type l    -a \( \
  \(     -perm /111 -a ! -perm 755 -a -exec chmod -f 755 {} + \) -o \
  \(   ! -perm /111 -a ! -perm 644 -a -exec chmod -f 644 {} + \) \)

# 20241102 bkw: patch doesn't change anything that exists, it adds
# shell script ports of all the .bat files in examples/
patch -p1 < $CWD/example_shell_scripts.sh

# Build & install the binary.
fpc -Mdelphi -vh -O3 $PRGNAM.pas
mkdir -p $PKG/usr/bin
install -s -m0755 $PRGNAM $PKG/usr/bin

# Install the syntax highlighting for vim and scite. The other editors
# aren't on SBo (some are Windows-only anyway).
mkdir -p $PKG/usr/share/scite $PKG/usr/share/vim/vimfiles
install -m0644 "syntax/SciTE 1.71/$PRGNAM.properties" $PKG/usr/share/scite
cp -a syntax/vim-mads-master/ftdetect/ syntax/vim-mads-master/syntax/ \
      $PKG/usr/share/vim/vimfiles
cp -a syntax/vim-mads-master/LICENSE \
      $PKG/usr/share/vim/vimfiles/mads.vim.LICENSE

# 20241101 bkw: example code has e.g. ".link ../libraries/printf.obx",
# these dirs need to be lowercased to build the examples on linux.
for i in libraries macros procedures; do
  mv examples/${i^^}/ examples/$i
done

PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
mkdir -p $PKGDOC
rmdir examples/compression/{aplib,lz4}/pc   # empty dirs in 2.1.9
for i in examples readme doc CHANGELOG README.md; do
  [ -e "$i" ] && cp -a "$i" $PKGDOC
done
cat $CWD/README > $PKGDOC/README
cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild

mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc

cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
