#!/bin/sh

if [ $# -eq 0 ]; then
	echo Usage: make_images platform
	exit 1
fi

ISE_PLATFORM=$1; export ISE_PLATFORM

# Set up the environment
INIT_DIR=`pwd`
. ./set_aliases
OLD_PATH=$PATH
EIFFEL_SRC=$EXPORT_DIR; export EIFFEL_SRC
ISE_EIFFEL=$FINAL_INSTALL_DIR; export ISE_EIFFEL
INSTALL_DIR=$FINAL_INSTALL_DIR

echo >> $COMPILE_LOG

if [ -z "$ISE_PLATFORM" ]; then
	remtrace Couldnt find environment variable ISE_PLATFORM
	CANCEL
fi

# Check everything's fine
if [ ! -d $EXPORT_DIR ]; then
	remtrace "Could not find the directory with the compressed files [$EXPORT_DIR]."
	CANCEL
fi

if [ -f bin/ecb_ent.tar.bz2 ]; then
	MULTIPLE_EDITIONS="True"
else
	MULTIPLE_EDITIONS=""
fi

unset INCLUDE_GUI
if [ -f bin/ec_gtk3_std.tar.bz2 ]; then
	INCLUDE_GTK3="True"
	INCLUDE_GUI="True"
else
	unset INCLUDE_GTK3
fi
if [ -f bin/ec_gtk2_std.tar.bz2 ]; then
	INCLUDE_GTK2="True"
	INCLUDE_GUI="True"
else
	unset INCLUDE_GTK2
fi

cd $EXPORT_DIR

# Copy runtime files
cp -r runtimes/* $INSTALL_DIR/studio/spec/$ISE_PLATFORM/lib

remtrace Preparing Standard version
if [ -f "$EXPORT_DIR/ecs/ec_gtk2_std.bz2" ]; then
	bunzip2 -c $EXPORT_DIR/ecs/ec_gtk2_std.bz2 > $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk2
fi
if [ -f "$EXPORT_DIR/ecs/ec_gtk3_std.bz2" ]; then
	bunzip2 -c $EXPORT_DIR/ecs/ec_gtk3_std.bz2 > $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk3
fi
bunzip2 -c $EXPORT_DIR/ecs/ecb_std.bz2 > $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ecb

if [ -f "$INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk2" ]; then
	chmod a+rx $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk2
	chmod go-w $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk2
fi
if [ -f "$INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk3" ]; then
	chmod a+rx $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk3
	chmod go-w $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk3
fi
chmod a+rx $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ecb
chmod go-w $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ecb

if [ -f $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-${GTK_DIR} ]; then
	mv $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-${GTK_DIR} $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec
fi

if [ -f licensing/eiffelstudio/license.txt ]; then
	cp licensing/eiffelstudio/license.txt $INSTALL_DIR/LICENSE
fi
case $ISE_PLATFORM in
	macosx*)
			if [ -d osx-launcher ]; then
				remtrace Copy OSX launcher scripts
				cp -rf osx-launcher/*.app $INSTALL_DIR/
				for d in $INSTALL_DIR/*.app/ ; do
					# note: sed on macosx is not GNU sed ... issue with -i
					if [ -f "$d/Contents/Resources/EiffelLauncher" ]; then
						sed -i '' "s/#ISE_PLATFORM#/$ISE_PLATFORM/" "$d/Contents/Resources/EiffelLauncher"
						chmod u+x "$d/Contents/Resources/EiffelLauncher"
					fi
					if [ -f "$d/Contents/MacOS/estudio" ]; then
						chmod u+x "$d/Contents/MacOS/estudio"
					fi
				done				
			fi
		;;
	*)
		;;
esac

if [ -z "$IS_MINIMAL" ]; then
	remtrace Building Standard CD image
else
	remtrace Building MINIMAL Standard CD image
fi
IMAGE_NAME=Eiffel_${STUDIO_VERSION_MAJOR_MINOR}_rev_${BUILD_ID}-$ISE_PLATFORM
pax -w -f ${IMAGE_NAME}.tar Eiffel_${STUDIO_VERSION_MAJOR_MINOR}
bzip2 ${IMAGE_NAME}.tar
if [ -z "$IS_MINIMAL" ]; then
	remtrace "Image: ${IMAGE_NAME}.tar.bz2"
else
	mv ${IMAGE_NAME}.tar.bz2 minimal-${IMAGE_NAME}.tar.bz2
	remtrace "Image (minimal): minimal-${IMAGE_NAME}.tar.bz2"
fi
IMAGE_NAME=

if [ "$MULTIPLE_EDITIONS" ]; then
	if [ ! -z "$IS_MINIMAL" ]; then
		remtrace ERROR Can not build MINIMAL and MULTIPLE_EDITIONS
	fi
	remtrace Preparing Enterprise version
	if [ -f "$EXPORT_DIR/ecs/ec_gtk2_ent.bz2" ]; then
		bunzip2 -c $EXPORT_DIR/ecs/ec_gtk2_ent.bz2 > $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk2
	fi
	if [ -f "$EXPORT_DIR/ecs/ec_gtk3_ent.bz2" ]; then
		bunzip2 -c $EXPORT_DIR/ecs/ec_gtk3_ent.bz2 > $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk3
	fi
	bunzip2 -c $EXPORT_DIR/ecs/ecb_ent.bz2 > $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ecb

	if [ -f "$INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk2" ]; then
		chmod a+rx $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk2
		chmod go-w $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk2
	fi
	if [ -f "$INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk3" ]; then
		chmod a+rx $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk3
		chmod go-w $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk3
	fi
	chmod a+rx $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ecb
	chmod go-w $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ecb

	if [ -f $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-${GTK_DIR} ]; then
		mv $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-${GTK_DIR} $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec
	fi

	if [ -f licensing/eiffelstudio/license.txt ]; then
		cp licensing/eiffelstudio/license.txt $INSTALL_DIR/LICENSE
	fi

	if [ -f "bin/setup" ]; then
		remtrace copying CD key validator
		move bin/setup $INSTALL_DIR/register
		chmod a+rx $INSTALL_DIR/register
		mkdir $INSTALL_DIR/setup
		cp $INSTALL_DIR/studio/bitmaps/png/logo.png $INSTALL_DIR/setup/install_logo.png
		cp $INSTALL_DIR/studio/bitmaps/png/activation.png $INSTALL_DIR/setup/install_left.png
	else
		remtrace SKIP CD key validator
	fi

	remtrace Building Enterprise CD image
	IMAGE_NAME=Eiffel_${STUDIO_VERSION_MAJOR_MINOR}_ent_${BUILD_ID}-$ISE_PLATFORM
	pax -w -f ${IMAGE_NAME}.tar Eiffel_${STUDIO_VERSION_MAJOR_MINOR}
	bzip2 ${IMAGE_NAME}.tar
	IMAGE_NAME=

	remtrace clean previous Enterprise version
	rm $INSTALL_DIR/register

	remtrace Preparing Branded version
	if [ -f "$EXPORT_DIR/ecs/ec_gtk2_branded.bz2" ]; then
		bunzip2 -c $EXPORT_DIR/ecs/ec_gtk2_branded.bz2 > $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk2
	fi
	if [ -f "$EXPORT_DIR/ecs/ec_gtk3_branded.bz2" ]; then
		bunzip2 -c $EXPORT_DIR/ecs/ec_gtk3_branded.bz2 > $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk3
	fi
	bunzip2 -c $EXPORT_DIR/ecs/ecb_branded.bz2 > $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ecb
	if [ -f "$INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk2" ]; then
		chmod a+rx $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk2
		chmod go-w $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk2
	fi
	if [ -f "$INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk3" ]; then
		chmod a+rx $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk3
		chmod go-w $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-gtk3
	fi
	chmod a+rx $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ecb
	chmod go-w $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ecb

	if [ -f $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-${GTK_DIR} ]; then
		mv $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec-${GTK_DIR} $INSTALL_DIR/studio/spec/$ISE_PLATFORM/bin/ec
	fi

	if [ -f licensing/eiffelstudio/license.txt ]; then
		cp licensing/eiffelstudio/license.txt $INSTALL_DIR/LICENSE
	fi

	remtrace copying CD key validator assets
	mkdir $INSTALL_DIR/setup
	cp $INSTALL_DIR/studio/bitmaps/png/logo.png $INSTALL_DIR/setup/install_logo.png
	cp $INSTALL_DIR/studio/bitmaps/png/activation.png $INSTALL_DIR/setup/install_left.png

	remtrace Building Enterprise CD image
	IMAGE_NAME=Eiffel_${STUDIO_VERSION_MAJOR_MINOR}_branded_${BUILD_ID}-$ISE_PLATFORM
	pax -w -f ${IMAGE_NAME}.tar Eiffel_${STUDIO_VERSION_MAJOR_MINOR}
	bzip2 ${IMAGE_NAME}.tar
	IMAGE_NAME=
fi

