#!/bin/bash

# SlackBuild for wails

PRGNAM=wails
VERSION=${VERSION:-2.10.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_snuk}

CWD=$(pwd)
TMP=${TMP:-/var/cache/snukware/tmp}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/var/cache/snukware/d}

ARCH=${ARCH:-$(uname -m)}

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

SLKLDFLAGS=${SLKLDFLAGS:-}

GO=${GO:-/usr/lib64/go1.26.5/go/bin/go}

if [ ! -x "$GO" ]; then
  echo "ERROR: Go compiler not found: $GO"
  exit 1
fi

rm -rf "$PKG"
mkdir -p "$PKG"

cd "$TMP" || exit 1
rm -rf "$PRGNAM-$VERSION"
tar xvf "$CWD/$PRGNAM-$VERSION.tar.xz" || exit 1
cd "$PRGNAM-$VERSION" || exit 1

# Go build environment
export PATH="/usr/lib64/go1.26.5/go/bin:$PATH"

export GOPATH="$TMP/go"
export GOMODCACHE="$GOPATH/pkg/mod"

mkdir -p "$GOPATH" "$GOMODCACHE"

export CGO_ENABLED=1
export CGO_CFLAGS="$SLKCFLAGS"
export CGO_CXXFLAGS="$SLKCFLAGS"
export CGO_LDFLAGS="$SLKLDFLAGS"

export GOFLAGS="-buildmode=pie -trimpath -mod=readonly -modcacherw"

# build wails CLI
$GO build \
  -v \
  -buildmode=pie \
  -trimpath \
  -ldflags="-linkmode external -s -w" \
  -o build/wails \
  ./cmd/wails

install -Dm755 build/wails \
  "$PKG/usr/bin/wails"


# Dokumentation
mkdir -p "$PKG/usr/doc/$PRGNAM-$VERSION"

cp -a \
  README.md LICENSE* \
  "$PKG/usr/doc/$PRGNAM-$VERSION" 2>/dev/null || true


# Slackware package metadata
mkdir -p "$PKG/install"

cat > "$PKG/install/slack-desc" <<EOF
wails: wails (Go desktop application framework CLI)
wails:
wails: Wails is a framework for building desktop applications using Go
wails: and web technologies.
wails:
wails: This package contains the wails command line tool.
wails:
EOF


cd "$PKG" || exit 1

/sbin/makepkg \
  -l y \
  -c n \
  "$OUTPUT/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.txz"
