#!/bin/bash

# turn on verbose debugging output
set -x
# make errors fatal
set -e

NDOFDEV_VERSION="0.14"
NDOFDEV_SOURCE_DIR="libndofdev-$NDOFDEV_VERSION"

SDL_ARCHIVE_X86="libSDL-2.32.10-linux64-20250904.tar.bz2"
SDL_ARCHIVE_ARM="libSDL-2.32.10-linux-arm64-20250904.tar.bz2"
LIBSSITE="http://sldev.free.fr/libraries/"

script=`readlink -f "$0" || echo "$0"`
top=`dirname "$script" || echo .`
stage="$top/stage"
stage_include="$stage/include"
stage_release="$stage/lib/release"
packages="$top/packages"

arch=`uname -m`
if [ "$arch" == "x86_64" ] ; then
	OS="linux64"
	BUILD_ARCH_FLAGS="-m64"
	BUILD_OPT_FLAGS="-msse2 -mfpmath=sse"
	SDL_ARCHIVE="$SDL_ARCHIVE_X86"
elif [ "$arch" == "aarch64" ] ; then
	OS="linux-arm64"
	BUILD_ARCH_FLAGS=""
	BUILD_OPT_FLAGS="-march=armv8-a+fp+simd"
	SDL_ARCHIVE="$SDL_ARCHIVE_ARM"
else
	echo "Sorry, 64 bits builds only, from now on !"
	exit 1
fi

BUILDFLAGS="$BUILD_ARCH_FLAGS -fPIC -fno-strict-aliasing -fno-stack-protector"
DEBUGFLAGS="-g -gdwarf-2 -gstrict-dwarf -fno-var-tracking-assignments"
OPTFLAGS="-O3 $BUILD_OPT_FLAGS -fno-delete-null-pointer-checks -fno-align-labels -fno-align-loops -fsched-pressure -frename-registers"

cd $top

rm -rf "$stage/"
mkdir -p "$stage_include" "$stage_release" "$stage/LICENSES"

LIBSCACHE="/var/tmp/$(whoami)/install.cache/"
if ! [ -d "$packages/include/SDL" ] ; then
	if  ! [ -f "$LIBSCACHE$SDL_ARCHIVE" ] ; then
		mkdir -p "$LIBSCACHE"
		pushd "$LIBSCACHE"
		wget "$LIBSSITE$SDL_ARCHIVE"
		popd
	fi
	mkdir -p "$packages"
	pushd "$packages"
	tar xjf "$LIBSCACHE$SDL_ARCHIVE"
	popd
fi

pushd "$NDOFDEV_SOURCE_DIR"
export CFLAGS="$BUILDFLAGS $DEBUGFLAGS $OPTFLAGS -I$packages/include"
export LDFLAGS="-L$stage/lib/release"
export USE_SDL2=1
make libndofdev.a
cp -a libndofdev.a "$stage_release/"
cp -a ndofdev_external.h "$stage_include/"
make clean
popd

pushd "$stage"
DATE=`date +%Y%m%d`
tar cjf "../libndofdev-sdl2-$NDOFDEV_VERSION-$OS-$DATE.tar.bz2" .
popd
md5sum "libndofdev-sdl2-$NDOFDEV_VERSION-$OS-$DATE.tar.bz2"
