#!/bin/bash

# Slackware build script for aMule

# Copyright 2026 Antonio Leal, Porto Salvo, Oeiras, Portugal
# Copyright 2011-2022 Ozan Türkyılmaz ozan.turkyilmaz@gmial.com
# Copyright 2010 Iskar Enev (<iskar.enev[@]gmail.com>)
# 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=aMule
VERSION=${VERSION:-3.0.0}
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}

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

if [ "$DAEMON" = "yes" ]; then
  AMULE_DAEMON="yes"
else
  AMULE_DAEMON="no"
fi

if [ "$REMOTEGUI" = "yes" ]; then
  AMULE_REMOTEGUI="yes"
else
  AMULE_REMOTEGUI="no"
fi

if [ "$WEBSERVER" = "yes" ]; then
  AMULE_WEBSERVER="yes"
else
  AMULE_WEBSERVER="no"
fi

if [ "$CMD" = "yes" ]; then
  AMULE_CMD="yes"
else
  AMULE_CMD="no"
fi

if [ "$ED2K" = "yes" ]; then
  AMULE_ED2K="yes"
else
  AMULE_ED2K="no"
fi

if [ "$ALC" = "yes" ]; then
  AMULE_ALC="yes"
else
  AMULE_ALC="no"
fi

if [ "$ALCC" = "yes" ]; then
  AMULE_ALCC="yes"
else
  AMULE_ALCC="no"
fi

if [ "$CAS" = "yes" ]; then
  AMULE_CAS="yes"
else
  AMULE_CAS="no"
fi

if [ "$WXCAS" = "yes" ]; then
  AMULE_WXCAS="yes"
else
  AMULE_WXCAS="no"
fi

if  [ "$FILEVIEW" = "yes" ]; then
  AMULE_FILEVIEW="yes"
else
  AMULE_FILEVIEW="no"
fi

if [ "$TESTING" = "yes" ]; then
  AMULE_TESTING="yes"
else
  AMULE_TESTING="no"
fi

if [ "$NLS" = "yes" ]; then
  AMULE_NLS="yes"
else
  AMULE_NLS="no"
fi

if [ "$UPNP" = "yes" ]; then
  AMULE_UPNP="yes"
else
  AMULE_UPNP="no"
fi

if [ "$IP2COUNTRY" = "yes" ]; then
  AMULE_IP2COUNTRY="yes"
else
  AMULE_IP2COUNTRY="no"
fi

if [ "$MMAP" = "yes" ]; then
  AMULE_MMAP="yes"
else
  AMULE_MMAP="no"
fi


set -e

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf ${PRGNAM,,}-$VERSION
tar xvf $CWD/${PRGNAM,,}-$VERSION.tar.gz
cd ${PRGNAM,,}-$VERSION
chown -R root:root .
find -L . \
 \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
 -exec chmod 755 {} \; -o \
 \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
 -exec chmod 644 {} \;

export CFLAGS="$SLKCFLAGS"
export CXXFLAGS="$SLKCFLAGS -std=gnu++14"

/opt/cmake-opt/bin/cmake -B build \
    -DBUILD_MONOLITHIC=YES \
    -DBUILD_DAEMON=$AMULE_DAEMON \
    -DBUILD_REMOTEGUI=$AMULE_REMOTEGUI \
    -DBUILD_WEBSERVER=$AMULE_WEBSERVER \
    -DBUILD_AMULECMD=$AMULE_CMD \
    -DBUILD_ED2K=$AMULE_ED2K \
    -DBUILD_ALC=$AMULE_ALC \
    -DBUILD_ALCC=$AMULE_ALCC \
    -DBUILD_CAS=$AMULE_CAS \
    -DBUILD_WXCAS=$AMULE_WXCAS \
    -DBUILD_FILEVIEW=$AMULE_FILEVIEW \
    -DBUILD_TESTING=$AMULE_TESTING \
    -DENABLE_NLS=$AMULE_NLS \
    -DENABLE_UPNP=$AMULE_UPNP \
    -DENABLE_IP2COUNTRY=$AMULE_IP2COUNTRY \
    -DENABLE_MMAP=$AMULE_MMAP
#    -DBUILD_EVERYTHING=YES

/opt/cmake-opt/bin/cmake --build build -j"$(nproc)"
/opt/cmake-opt/bin/cmake --install build --prefix=$PKG

# Crappy workaround to change "share" folder. Install prefix seems not to be working...
mkdir -p $PKG/usr
mv $PKG/share $PKG/usr/share

find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
  | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true

(
    mkdir -p $PKG/usr/man/man1
    cd $PKG/usr/share/man/man1
    for f in `ls -1 *.1`
    do
        cat $f | gzip > $PKG/usr/man/man1/$f.gz
    done
    rm -rf $PKG/usr/share/man
)

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
mv $PKG/usr/share/doc/* $PKG/usr/doc/$PRGNAM-$VERSION
rm -rf $PKG/usr/share/doc
mv $PKG/usr/share/LICENSE.md $PKG/usr/doc/$PRGNAM-$VERSION/
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

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

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