#!/bin/bash
CANONPATH=$(readlink -f "$0")
DIRPATH="$(dirname "$CANONPATH")"
cd "$DIRPATH" || exit

VERSION=
for i in "$@"; do
	case $i in
		--version)
			if [[ -n $2 ]]; then VERSION="$2"; fi
			shift
			shift
			;;
		-*|--*)
			echo "Unknown option $i"
			exit 1
			;;
		*)
			;;
	esac
done

SDL2_CONFIG=$(which sdl2-config)
CONFIG_NAME=
ARCH_PATH=
DYLIB_PATH=

if command -v premake4 &> /dev/null
then
	CONFIG_NAME=release
	DYLIB_PATH=../../../libs/macosx/libeepp.dylib
elif command -v premake5 &> /dev/null
then
    CONFIG_NAME=release_arm64
    ARCH_PATH="arm64/"
    DYLIB_PATH=../../../libs/macosx/"$ARCH_PATH"libeepp.dylib
else
    echo "Neither premake5 nor premake4 is available. Please install one."
    exit 1
fi

rm -rf ../../../libs/macosx
if [ -z "$SDL2_CONFIG" ]; then
echo "Building using frameworks"
../make.sh config=$CONFIG_NAME ecode || exit
else
echo "Building using sdl2-config"
../make_no_fw.sh config=$CONFIG_NAME ecode || exit
fi

RESOURCES_PATH="ecode.app/Contents/Resources"

bash ../../scripts/copy_ecode_assets.sh ../../bin $RESOURCES_PATH || exit
mkdir -p ecode.app/Contents/MacOS/
cp ../../../bin/assets/icon/ecode.icns $RESOURCES_PATH/ecode.icns

VERSIONPATH=../../../src/tools/ecode/version.hpp
ECODE_MAJOR_VERSION=$(grep "define ECODE_MAJOR_VERSION" $VERSIONPATH | awk '{print $3}')
ECODE_MINOR_VERSION=$(grep "define ECODE_MINOR_VERSION" $VERSIONPATH | awk '{print $3}')
ECODE_PATCH_LEVEL=$(grep "define ECODE_PATCH_LEVEL" $VERSIONPATH | awk '{print $3}')

if [ -n "$VERSION" ];
then
ECODE_VERSION="$VERSION"
else
ECODE_VERSION="$ECODE_MAJOR_VERSION"."$ECODE_MINOR_VERSION"."$ECODE_PATCH_LEVEL"
fi

cat Info.plist.tpl | sed "s/ECODE_VERSION_STRING/${ECODE_VERSION}/g" | sed "s/ECODE_MAJOR_VERSION/${ECODE_MAJOR_VERSION}/g"  | sed "s/ECODE_MINOR_VERSION/${ECODE_MINOR_VERSION}/g" > Info.plist
cp Info.plist ecode.app/Contents/
rm Info.plist
cp $DYLIB_PATH ecode.app/Contents/MacOS
cp ../../../bin/ecode ecode.app/Contents/MacOS

if [ -z "$SDL2_CONFIG" ]; then
SDL2_LIB_PATH="/Library/Frameworks/SDL2.framework/Versions/A/"
cp "$SDL2_LIB_PATH/SDL2" ecode.app/Contents/MacOS/SDL2
install_name_tool -change @rpath/SDL2.framework/Versions/A/SDL2 @executable_path/SDL2 ecode.app/Contents/MacOS/libeepp.dylib
codesign --force -s - ecode.app/Contents/MacOS/SDL2
install_name_tool -change @rpath/libeepp.dylib @executable_path/libeepp.dylib ecode.app/Contents/MacOS/ecode
else
SDL2_LIB_PATH=$(sdl2-config --libs | awk '{ print $1 }' | cut -b 3-)
cp "$SDL2_LIB_PATH"/libSDL2-2.0.0.dylib ecode.app/Contents/MacOS
SDL2_LIB_REAL_PATH=$(otool -L ecode.app/Contents/MacOS/libeepp.dylib | grep libSDL2 | awk '{ print $1 }')
install_name_tool -change "$SDL2_LIB_REAL_PATH" @executable_path/libSDL2-2.0.0.dylib ecode.app/Contents/MacOS/libeepp.dylib

# premake4 generates a different location
if [ -z "$ARCH_PATH" ]; then
install_name_tool -change libeepp.dylib @executable_path/libeepp.dylib ecode.app/Contents/MacOS/ecode
else
install_name_tool -change @rpath/libeepp.dylib @executable_path/libeepp.dylib ecode.app/Contents/MacOS/ecode
fi

fi

# Clear quarantine flag recursively (more targeted than -cr)
xattr -d -r com.apple.quarantine ecode.app 2>/dev/null || true

# Clear permissions (basically for libSDL2)
chmod -R u+rwX,go+rX,go-w ecode.app
xattr -cr ecode.app
