@echo off

call %~dp0init.btm

set EIFFEL_SRC=%TMP_EIFFEL_SRC
set ISE_LIBRARY=%TMP_EIFFEL_SRC
set ISE_SRC=%TMP_EIFFEL_SRC

iff not defined INSTALL_DIR then 
	echo INSTALL_DIR not defined
	CANCEL
endiff

set SVN_VERSION=%@EXECSTR[set_version %EIFFEL_SRC]

remtrace Build Installation for %SVN_VERSION%

cdd %INIT_DIR\install
safe_md %INIT_DIR\install\bin
iff .%ISE_PLATFORM%.==.win64. then
	set IS_WIN64=yes
	set WINNAME=x64
else
	set IS_WIN64=no
	set WINNAME=x86
endiff


iff .%1.==.. then
	remtrace ---------------------------------------------
	remtrace Checkout and compile the hallow tool
	remtrace ---------------------------------------------

	cdd %EIFFEL_SRC\tools
	remtrace Compile finish_freezing Clib
	cd %EIFFEL_SRC\tools\finish_freezing\Clib
	default_make

	cdd %EIFFEL_SRC\tools
	co -r %PUBLIC_SVN_REVISION %DEFAULT_PUBLIC_SVN/Src/tools/hallow hallow
	cd %EIFFEL_SRC\tools\hallow
	clean_project
	finalize hallow.ecf
	cleanup_dotnet_eiffel hallow hallow.exe
	iff not exist libhallow.dll then
		remtrace Couldnt generate hallow.exe
		CANCEL_ON_ERROR
	else
		move hallow.exe %INIT_DIR\install\bin
		move libhallow.dll %INIT_DIR\install\bin
		move eiffelsoftware.runtime.dll %INIT_DIR\install\bin
	endiff

	remtrace --------------------------------------------------
	remtrace Recompile Custom actions for installation program
	remtrace --------------------------------------------------

	iff not defined NO_ENTERPRISE_BUILD then
		cdd %EIFFEL_SRC
		cd tools
		if EXIST %INIT_DIR%\isesvn\tools\setup (
			xcopy %INIT_DIR%\isesvn\tools\setup setup /E /I
		) else (
			co %DEFAULT_ISE_SVN%/Src/tools/setup setup
		)
		cd %EIFFEL_SRC\tools\setup\studio
		clean_project
		finalize setup.ecf
		cleanup_eiffel setup setup.dll
		iff not exist setup.dll then
			remtrace Couldnt generate setup.dll
			QUIT
			CANCEL_ON_ERROR
		endiff
		safe_md %INIT_DIR\install\binaries
		safe_md %INIT_DIR\install\binaries\%WINNAME
		move setup.dll %INIT_DIR\install\binaries\%WINNAME
	endiff
endiff

remtrace ----------------------------------------------
remtrace Building the MSIs
remtrace ----------------------------------------------


cdd %INIT_DIR\install\content\eiffelstudio
safe_md %INSTALL_DIR\setups
safe_md %INSTALL_DIR\setups\gpl
safe_md %INSTALL_DIR\setups\enterprise

remtrace Creating WIX files
espawn -u:%ISE_C_COMPILER_VER% "nmake /nologo clean"
espawn -u:%ISE_C_COMPILER_VER% "nmake /nologo"

iff not NO_GPL_BUILD then
	remtrace Preparing GPL edition
	espawn -u:%ISE_C_COMPILER_VER%  "nmake /nologo gpl_%WINNAME"
	safe_copy %INIT_DIR\install\bin\studio_gpl_%WINNAME\package.msi %INSTALL_DIR\setups\gpl\%STUDIO_NAME%_gpl_%SVN_VERSION-%ISE_PLATFORM%.msi
endiff

iff not NO_ENTERPRISE_BUILD then
	remtrace Preparing Commercial edition
	espawn -u:%ISE_C_COMPILER_VER% "nmake /nologo enterprise_%WINNAME"
	safe_copy %INIT_DIR\install\bin\studio_ent_%WINNAME\package.msi %INSTALL_DIR\setups\enterprise\%STUDIO_NAME%_ent_%SVN_VERSION-%ISE_PLATFORM%.msi
endiff


remtrace ----------------------------------------------
remtrace Building the Zips
remtrace ----------------------------------------------
cdd %INSTALL_DIR
iff not NO_GPL_BUILD then
	ren EiffelStudio %STUDIO_NAME%
	remtrace GPL archive
	safe_copy %INSTALL_DIR\releases\gpl_version\ec.exe %INSTALL_DIR\%STUDIO_NAME%\studio\spec\%ISE_PLATFORM%\bin
	safe_copy %INSTALL_DIR\releases\gpl_version\ecb.exe %INSTALL_DIR\%STUDIO_NAME%\studio\spec\%ISE_PLATFORM%\bin
	iff exist %INSTALL_DIR\releases\gpl_version\LICENSE then
		safe_copy %INSTALL_DIR\releases\gpl_version\LICENSE %INSTALL_DIR\%STUDIO_NAME%\LICENSE
	else
		remtrace Missing GPL license text
	endiff
	7z a -t7z %INSTALL_DIR\setups\gpl\%STUDIO_NAME%_gpl_%SVN_VERSION-%ISE_PLATFORM%.7z %STUDIO_NAME% -mx9 >>& %INSTALL_LOG
endiff

iff not NO_ENTERPRISE_BUILD then
	remtrace Enterprise archive
	safe_copy %INSTALL_DIR\releases\enterprise_version\ec.exe %INSTALL_DIR\%STUDIO_NAME%\studio\spec\%ISE_PLATFORM%\bin
	safe_copy %INSTALL_DIR\releases\enterprise_version\ecb.exe %INSTALL_DIR\%STUDIO_NAME%\studio\spec\%ISE_PLATFORM%\bin
	iff exist %INSTALL_DIR\releases\enterprise_version\LICENSE then
		safe_copy %INSTALL_DIR\releases\enterprise_version\LICENSE %INSTALL_DIR\%STUDIO_NAME%\LICENSE
	else
		remtrace Missing Enterprise license text
	endiff
	7z a -t7z %INSTALL_DIR\setups\enterprise\%STUDIO_NAME%_ent_%SVN_VERSION-%ISE_PLATFORM%.7z %STUDIO_NAME% -mx9 >>& %INSTALL_LOG
endiff

remtrace Restoring the layout to its original state
cdd %INSTALL_DIR
ren %STUDIO_NAME% EiffelStudio

remtrace Uploading packages online
iff not NO_GPL_BUILD then
	cdd %INSTALL_DIR\setups\gpl
	share_delivery %STUDIO_NAME%_gpl_%SVN_VERSION%-%ISE_PLATFORM%.msi 
	share_delivery %STUDIO_NAME%_gpl_%SVN_VERSION%-%ISE_PLATFORM%.7z
endiff

fullrf %INSTALL_DIR\%STUDIO_NAME%\studio\spec\%ISE_PLATFORM%\bin\ec.exe
fullrf %INSTALL_DIR\%STUDIO_NAME%\studio\spec\%ISE_PLATFORM%\bin\ecb.exe

remtrace Your deliveries are now ready
cdd %INIT_DIR
