<?xml version="1.0"?>

<project name="vaadin-client-compiled" basedir="." default="publish-local" xmlns:ivy="antlib:org.apache.ivy.ant">
	<description>
		Compiled (JS+HTML) version of client side 
	</description>

	<include file="../common.xml" as="common" />
	<include file="../build.xml" as="vaadin" />
	<include file="../gwt-files.xml" as="gwtfiles" />

	<!-- global properties -->
	<property name="module.name" value="vaadin-client-compiled" />
	<property name="result.dir" value="result" />
	<property name="gwtar.dir" location="${result.dir}/gwtar" />
	<property name="work.dir" location="${result.dir}/work" />
	<property name="module.output.dir" location="${result.dir}/VAADIN/widgetsets" />
	<property name="compiled.jar" location="${result.dir}/lib/${module.name}-${vaadin.version}.jar" />
	<property name="compiled-cache.jar" location="${result.dir}/lib/${module.name}-cache-${vaadin.version}.jar" />

	<target name="default-widgetset-cache">
		<antcall target="compile-module-cache">
			<param name="module" value="com.vaadin.DefaultWidgetSet" />
		</antcall>
	</target>

	<target name="default-widgetset">
		<antcall target="compile-module">
			<param name="module" value="com.vaadin.DefaultWidgetSet" />
		</antcall>
	</target>


	<target name="compile-module-cache">
		<fail unless="module" message="You must give the module to compile in the 'module' parameter" />
		<ivy:resolve resolveid="common" conf="compile-module" />
		<ivy:cachepath pathid="classpath.compile.widgetset" conf="compile-module" />
		<echo>Creating gwtar files for ${module} in ${gwtar.dir}</echo>

		<!-- Produce gwtar files for the separate JAR -->
		<java classname="com.google.gwt.dev.CompileModule" classpathref="classpath.compile.widgetset" failonerror="yes" fork="yes" maxmemory="512m">
			<arg value="-out" />
			<arg value="${gwtar.dir}" />
			<arg value="-strict" />
			<arg value="${module}" />

			<jvmarg value="-Xss8M" />
			<jvmarg value="-XX:MaxPermSize=256M" />
			<jvmarg value="-Djava.awt.headless=true" />
		</java>
	</target>

	<target name="compile-module">
		<fail unless="module" message="You must give the module to compile in the 'module' parameter" />
		<property name="style" value="OBF" />
		<property name="localWorkers" value="2" />
		<property name="extraParams" value="" />

		<ivy:resolve resolveid="common" conf="compile-module" />
		<ivy:cachepath pathid="classpath.compile.widgetset" conf="compile-module" />

		<mkdir dir="${module.output.dir}" />

		<echo>Compiling ${module} to ${module.output.dir}</echo>

		<!-- compile the module -->
		<java classname="com.google.gwt.dev.Compiler" classpathref="classpath.compile.widgetset" failonerror="yes" fork="yes" maxmemory="512m">
			<classpath location="${compiled-cache.jar}" />
			<arg value="-workDir" />
			<arg value="${work.dir}" />
			<arg value="-logLevel" />
			<arg value="TRACE" />
			<arg value="-war" />
			<arg value="${module.output.dir}" />
			<arg value="-style" />
			<arg value="${style}" />

			<arg value="-localWorkers" />
			<arg value="${localWorkers}" />
			<arg value="-strict" />
			<arg line="${extraParams}" />
			<arg value="${module}" />

			<sysproperty key="vFailIfNotSerializable" value="true" />

			<jvmarg value="-Xss8M" />
			<jvmarg value="-XX:MaxPermSize=256M" />
			<jvmarg value="-Djava.awt.headless=true" />
		</java>

	</target>

	<target name="client-compiled-cache.jar" depends="default-widgetset-cache">
		<jar file="${compiled-cache.jar}" compress="true">
			<fileset dir="${gwtar.dir}">
				<include name="**/*.gwtar" />
			</fileset>
			<union refid="client-compiled-cache.gwt.includes" />
			<fileset refid="common.files.for.all.jars" />
		</jar>
	</target>

	<target name="client-compiled.jar" depends="default-widgetset">
		<antcall target="common.pom.xml">
		</antcall>

		<jar file="${compiled.jar}" compress="true">
			<manifest>
				<attribute name="Implementation-Vendor" value="Vaadin Ltd" />
				<attribute name="Implementation-URL" value="http://vaadin.com" />
				<attribute name="Implementation-Version" value="${vaadin.version}" />
			</manifest>
			<fileset dir="${result.dir}">
				<include name="VAADIN/widgetsets/com.vaadin*/**" />
			</fileset>
			<fileset refid="common.files.for.all.jars" />
		</jar>


	</target>

	<target name="publish-local" depends="client-compiled.jar">
		<antcall target="common.publish-local">
			<param name="conf" value="build" />
		</antcall>
	</target>

	<target name="clean">
		<antcall target="common.clean" />
	</target>

	<target name="tests">
		<!--<antcall target="common.tests.run" />-->
		<echo>WHAT? No tests for ${module.name}!</echo>
	</target>

</project>