#!/usr/bin/bash
# Container build script for xu4 Linux & Windows packages.

TAG=$(git describe --tags)
if [[ "$TAG" == *-g* ]]; then
	VERSION=DR-${TAG#*-g}
else
	VERSION=${TAG#v}
fi

if [ ! -s project.tar.gz ]; then
	sed -i "s/DR-1.0/${VERSION}/" project.b
	copr -a -t mingw "os_api:'glfw"
fi


TIME=$(date +%H%M%S)
SCRIPT=build-$TIME
ID=${SCRIPT}
HDIR=/tmp
CDIR=/tmp
ARC_DIR=/tmp/xu4-${VERSION}
SDK_DIR=dist/sdk
FAUN_VER=0.2.3

if [ ! -d ${SDK_DIR} ]; then
	echo "Library archive ${SDK_DIR} not found!"
	echo "Run \"make -C dist cbuild-sdks\""
	exit
fi

clean_dir () {
	if [ -d "$1" ]; then rm -rf "$1"/*; else mkdir -p "$1"; fi
}

case $1 in
windows)
	cat >$HDIR/${SCRIPT} <<EOF
  unzip /tmp/glfw-3.4.bin.WIN64.zip
  mv glfw-3.4.bin.WIN64 usr
  mv usr/lib-mingw-w64 usr/lib
  unzip /tmp/boron-x86_64-w64-mingw32-static-2.0.8.zip
  unzip /tmp/faun-x86_64-w64-mingw32-static-${FAUN_VER}.zip -d usr
  mkdir u4
  cd u4
  tar xf /tmp/project.tar.gz
  copr -t mingw make_util:false
EOF

	podman run -d -it --name=$ID xu4/f41-mingw /bin/bash || exit
	podman cp ${SDK_DIR}/glfw-3.4.bin.WIN64.zip $ID:$CDIR
	podman cp ${SDK_DIR}/boron-x86_64-w64-mingw32-static-2.0.8.zip $ID:$CDIR
	podman cp ${SDK_DIR}/faun-x86_64-w64-mingw32-static-${FAUN_VER}.zip $ID:$CDIR
	podman cp project.tar.gz $ID:$CDIR
	podman cp $HDIR/${SCRIPT} $ID:$CDIR/${SCRIPT}
	podman exec -it -u build $ID /bin/bash $CDIR/${SCRIPT}
	podman cp $ID:/home/build/u4/xu4.exe /tmp/xu4.exe-$TIME || exit

	# Build zip archive.
	if [ "$2" != "-b" ]; then
		clean_dir ${ARC_DIR}

		FAUN_BIN=/home/build/usr/bin
		for LIB in libogg-0.dll libvorbis-0.dll libvorbisfile-3.dll
		do podman cp $ID:${FAUN_BIN}/${LIB} ${ARC_DIR}; done

		MINGW_BIN=/usr/x86_64-w64-mingw32/sys-root/mingw/bin
		for LIB in libgcc_s_seh-1.dll libpng16-16.dll libssp-0.dll libwinpthread-1.dll zlib1.dll
		do podman cp $ID:${MINGW_BIN}/${LIB} ${ARC_DIR}; done

		cp /tmp/xu4.exe-$TIME ${ARC_DIR}/xu4.exe
		cp render.pak Ultima-IV.mod U4-Upgrade.mod ${ARC_DIR}
		cp COPYING ${ARC_DIR}/COPYING.txt
		cp README.md ${ARC_DIR}/README.txt
		cd ${ARC_DIR%/*}; zip -r xu4-win32.zip ${ARC_DIR##*/}
	fi
	;;

linux)
	cat >$HDIR/${SCRIPT} <<EOF
  tar xjf /tmp/boron-x86_64-static-2.0.8.tar.bz2
  tar xjf /tmp/faun-x86_64-static-${FAUN_VER}.tar.bz2 -C boron --strip-components=1
  mkdir u4
  cd u4
  tar xf /tmp/project.tar.gz
  copr "os_api:'glv" make_util:false sdk_dir:%../boron
EOF

	podman run -d -it --name=$ID xu4/f33-gcc /bin/bash || exit
	podman cp ${SDK_DIR}/boron-x86_64-static-2.0.8.tar.bz2 $ID:$CDIR
	podman cp ${SDK_DIR}/faun-x86_64-static-${FAUN_VER}.tar.bz2 $ID:$CDIR
	podman cp project.tar.gz $ID:$CDIR
	podman cp $HDIR/${SCRIPT} $ID:$CDIR/${SCRIPT}
	podman exec -it $ID /bin/bash $CDIR/${SCRIPT}
	podman cp $ID:/home/build/u4/xu4 /tmp/xu4-$TIME || exit

	# Build archive.
	if [ "$2" != "-b" ]; then
		clean_dir ${ARC_DIR}
		cp /tmp/xu4-$TIME ${ARC_DIR}/xu4
		cp render.pak Ultima-IV.mod U4-Upgrade.mod COPYING dist/setup ${ARC_DIR}
		cp README.md ${ARC_DIR}/README
		mkdir ${ARC_DIR}/desktop
		cp icons/xu4.png dist/xu4.desktop ${ARC_DIR}/desktop
		tar czf /tmp/xu4-linux.tar.gz -C ${ARC_DIR%/*} ${ARC_DIR##*/}
	fi
	;;

*)
	echo "Usage: $0 {linux|windows} [-b]"
	echo -e '\nOptions:'
	echo '  -b    Build binary only; do not create archive.'
	exit 1
esac

echo "$SCRIPT done!"
podman stop $ID
