#!/bin/bash
#
# Slackware build script for sxwm
#
# Copyright 2026 r1w1s1
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

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

PRGNAM=sxwm
VERSION=${VERSION:-1.8}
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 [ -n "${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}

if [ "$ARCH" = "i586" ]; then
  SLKCFLAGS="-O2 -march=i586 -mtune=i686"
elif [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-O2 -march=i686 -mtune=i686"
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -fPIC"
else
  SLKCFLAGS="-O2"
fi

set -e

rm -rf "$PKG"
mkdir -p "$TMP" "$PKG" "$OUTPUT"
cd "$TMP"
rm -rf "$PRGNAM-$VERSION"
tar xvf "$CWD/$PRGNAM-$VERSION.tar.gz" --no-same-owner
cd "$PRGNAM-$VERSION"
chown -R root:root .
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 {} + \) \)

# The upstream patches are optional and are not applied by default.
if [ "${PATCHES:-no}" = "yes" ]; then
  for p in patches/*.patch; do
    patch --verbose -p1 < "$p"
  done
fi

CFLAGS="$SLKCFLAGS"
LDFLAGS="-lX11 -lXinerama -lXcursor"
CC=${CC:-gcc}

make \
  CC="$CC" \
  CFLAGS="-std=c99 -pedantic -Wall -Wextra $CFLAGS -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=700" \
  LDFLAGS="$LDFLAGS" \
  PREFIX=/usr \
  DESTDIR="$PKG" \
  install

strip "$PKG/usr/bin/$PRGNAM"
install -m 0644 -D docs/sxwm.desktop \
  "$PKG/usr/share/xsessions/$PRGNAM.desktop"
install -m 0755 -D "$CWD/xinitrc.cwm" \
  "$PKG/etc/X11/xinit/xinitrc.$PRGNAM"

PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
mkdir -p "$PKGDOC"
cp -a README.md docs/CHANGELOG.md docs/CONTRIBUTIONS.md \
  docs/SPECIFIC_BUILD.md LICENSE "$PKGDOC"
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"
