<?xml version="1.0" encoding="utf-8" ?>
<project name="rk2-create-cdrom-components" default="create-cdrom-components">

	<!--
		cd components
		produce components for cdrom distributions, to be picked up and used by cdrk2 release kit
		split components into linux only files (linux) and general files (all)
	-->

	<target name="create-cdrom-components" depends="init,gs2-init">
		<antcall target="compile-cdrom-installer"/> <!-- from init -->

		<!-- clean up -->
		<delete dir="cdrom"/>

		<!-- setup directory structure -->
		<mkdir dir="cdrom/build"/>
		<mkdir dir="cdrom/dist/Software"/>
		<mkdir dir="cdrom/dist/Java/Jars"/>

		<!-- create core component -->
		<mkdir dir="cdrom/dist/Software/core/all"/>
		<mkdir dir="cdrom/dist/Software/core/${rk.os}"/>

		<if><bool><equals arg1="${rk.os}" arg2="windows"/></bool>
		  <mkdir dir="cdrom/dist/Software/core/full-windows"/>
		</if>

		<!-- core linux -->
		<if><bool><equals arg1="${rk.os}" arg2="linux"/></bool>
			<unzip src="components/core.comp" dest="cdrom/dist/Software/core/all" overwrite="true"/>
			<move todir="cdrom/dist/Software/core/linux" overwrite="true">
				<fileset dir="cdrom/dist/Software/core/all">
					<include name="bin/linux"/>
					<include name="bin/linux/**/*"/>
					<include name="bin/windows"/>
					<include name="bin/windows/**/*"/>
					<include name="cgi-bin/library.cgi"/>
					<include name="cgi-bin/oaiserver.cgi"/>
					<include name="*.sh"/>
					<include name="*.csh"/>
					<include name="*.bash"/>
				</fileset>
			</move>
			<!-- delete the apache manual to save space -->
			<delete dir="cdrom/dist/Software/core/linux/apache-httpd/linux/manual"/>

		<!-- core windows -->
		<else><if><bool><equals arg1="${rk.os}" arg2="windows"/></bool>
			<unzip src="components/core.comp" dest="cdrom/dist/Software/core/windows" overwrite="true">
				<patternset>
					<include name="bin/windows"/>
					<include name="bin/windows/**/*"/>
					<include name="server.exe"/>
					<include name="cgi-bin/library.cgi"/>
					<include name="cgi-bin/oaiserver.cgi"/>
					<include name="*.bat"/>
					<include name="gli/*.bat"/>
					<include name="uninstall/*.bat"/>
					<include name="uninstall/*.uninstall"/>
				</patternset>
			</unzip>

			<unzip src="components/core.comp" dest="cdrom/dist/Software/core/full-windows" overwrite="true"/>

		<!-- core mac -->
		<else><if><bool><equals arg1="${rk.os}" arg2="mac"/></bool>
			<unzip src="components/core.comp" dest="cdrom/dist/Software/core/mac" overwrite="true">
				<patternset>
					<include name="bin/darwin"/>
					<include name="bin/darwin/**/*"/>
					<include name="bin/windows"/>
					<include name="bin/windows/**/*"/>
					<include name="cgi-bin/library.cgi"/>
					<include name="cgi-bin/oaiserver.cgi"/>
					<include name="*.sh"/>
					<include name="*.csh"/>
					<include name="*.bash"/>
				</patternset>
			</unzip>
			<!-- delete the httpd manual to save space -->
			<delete dir="cdrom/dist/Software/core/mac/apache-httpd/darwin/manual"/>

		</if></else></if></else></if>

		<!-- imagemagick -->
		<mkdir dir="cdrom/dist/Software/imagemagick/${rk.os}"/>
		<unzip src="components/imagemagick.comp" dest="cdrom/dist/Software/imagemagick/${rk.os}" overwrite="true"/>

		<!-- ghostscript: windows and mac only -->
		<if><bool><or><equals arg1="${rk.os}" arg2="windows"/><equals arg1="${rk.os}" arg2="mac"/></or></bool>
			<mkdir dir="cdrom/dist/Software/ghostscript/${rk.os}"/>
			<unzip src="components/ghostscript.comp" dest="cdrom/dist/Software/ghostscript/${rk.os}" overwrite="true"/>
		</if>
		
		<!-- apache httpd -->
		<unzip src="components/apachehttpd.comp" dest="cdrom/dist/Software" overwrite="true"/>
		
		<!-- jdk linux -->
		<if><bool><equals arg1="${rk.os}" arg2="linux"/></bool>
			<mkdir dir="cdrom/dist/Java/Linux"/>
			<exec executable="cp">
				<arg value="${rk.home}/shared/linux/java_bin${extension_x64}"/>
				<arg value="cdrom/dist/Java/Linux"/>
			</exec>
			<!--
			don't extract to save space
			<exec dir="cdrom/dist/Java/Linux" executable="${rk.home}/shared/linux/java_bin"/>
			<exec dir="cdrom/dist/Java/Linux" executable="tar"><arg value="-xf"/><arg value="java.tar"/></exec>
			<delete file="cdrom/dist/Java/Linux/java.tar"/>
			-->

		<!-- jdk windows -->
		<else><if><bool><or><equals arg1="${rk.os}" arg2="windows"/></or></bool>
			<mkdir dir="cdrom/dist/Java/Windows"/>
			<exec dir="cdrom/dist/Java/Windows" executable="${rk.home}/shared/windows/wrapper/java.exe"/>

		</if></else></if>

		<!-- jar installer: windows and linux only -->
		<if><bool><or><equals arg1="${rk.os}" arg2="windows"/><equals arg1="${rk.os}" arg2="mac"/></or></bool>
			<copy file="installer/cdrom.jar" tofile="cdrom/dist/Java/Jars/${rk.os}.jar"/>
		</if>

		<!-- compile cdrom wrapper -->
		<!-- (windows) -->
		<if><bool><equals arg1="${rk.os}" arg2="windows"/></bool>
			<copy todir="cdrom/build" overwrite="true">
				<fileset dir="${rk.home}/shared/windows/wrapper"/>
				<fileset dir="${rk.home}/shared/core/icon" includes="icon.ico"/>
				<fileset dir="${rk.home}/shared/core/search4j" includes="libsearch4j.cpp,libsearch4j.h"/>
			</copy>
			<exec executable="rc" dir="cdrom/build">
				<arg line="wrapper.rc"/>
			</exec>
			<exec executable="cl" dir="cdrom/build">
				<arg line="/c -GX -DCDROM wrapper.cpp"/>
			</exec>
			<exec executable="link" dir="cdrom/build">
				<arg line="/OUT:../dist/Greenstone-${version}${version-extra}-windows.exe gdi32.lib advapi32.lib shell32.lib user32.lib wrapper.obj wrapper.RES"/>
			</exec>

		<!-- (linux) -->
		<else><if><bool><equals arg1="${rk.os}" arg2="linux"/></bool>
			<copy file="${rk.home}/shared/linux/wrapper.cpp" todir="cdrom/build" overwrite="true"/>

			<echo level="info">compile the cdrom wrapper</echo>
			<exec executable="g++" dir="cdrom/build">
				<arg line="-Wall -static -static-libgcc -c -DCDROM -o wrapper.o wrapper.cpp"/>
			</exec>

			<echo level="info">link the compiled code</echo>
			<exec executable="g++" dir="cdrom/build">
				<arg line="-static -static-libgcc -o ../dist/Greenstone-${version}${version-extra}-linux wrapper.o"/>
			</exec>

		<!-- (mac) -->
		<else><if><bool><equals arg1="${rk.os}" arg2="mac"/></bool>

			<mkdir dir="wrapped-installer/cdrom"/>
			<!-- create app for cdrom installer -->
			<copy todir="cdrom/dist/Greenstone-${version}${version-extra}-MacOS.app"><fileset dir="${rk.home}/shared/mac/Wrapper.app"/></copy>
			<copy todir="cdrom/dist/Greenstone-${version}${version-extra}-MacOS.app/Contents/Resources" file="${rk.home}/shared/core/icon/icon.icns"/>
			<chmod file="cdrom/dist/Greenstone-${version}${version-extra}-MacOS.app/Contents/MacOS/JavaApplicationStub" perm="+x"/>

			<!-- copy bundled files -->
			<copy todir="cdrom/dist/Greenstone-${version}${version-extra}-MacOS.app/Contents/Resources/Java" file="${basedir}/installer/cdrom.jar"/>

			<!-- substitute in real values -->
			<rsr file="cdrom/dist/Greenstone-${version}${version-extra}-MacOS.app/Contents/Info.plist" pattern="@jar@" replacement="cdrom.jar"/>
			<rsr file="cdrom/dist/Greenstone-${version}${version-extra}-MacOS.app/Contents/Info.plist" pattern="@version@" replacement="${version}"/>
			
		</if></else></if></else></if>


		<!-- create cdrom components -archive -->
		<mkdir dir="products"/>
		<!-- (windows) -->
		<if><bool><equals arg1="${rk.os}" arg2="windows"/></bool>
			<tar destfile="products/cdrom-components-${version}${version-extra}-windows.tar.gz" compression="gzip">
				<tarfileset dir="cdrom/dist">
					<include name="**/*"/>
					<exclude name="**/full-windows"/>
					<exclude name="**/full-windows/**/*"/>
				</tarfileset>
			</tar>
			<tar destfile="products/cdrom-components-${version}${version-extra}-full-windows.tar.gz" compression="gzip">
				<tarfileset dir="cdrom/dist">
					<include name="**/*"/>
					<exclude name="**/Software/core/windows"/>
					<exclude name="**/Software/core/windows/**/*"/>
				</tarfileset>
			</tar>

		<!-- (linux and mac) -->
		<else><if><bool><or><equals arg1="${rk.os}" arg2="linux"/><equals arg1="${rk.os}" arg2="mac"/></or></bool>
			<exec dir="cdrom/dist" executable="bash">
				<arg value="-c"/>
				<arg value="tar -czf ../../products/cdrom-components-${version}${version-extra}-${rk.os}${extension-x64}.tar.gz *"/>
			</exec>
		</if></else></if>
	</target>

</project>
