<?xml version="1.0"?>

<project name="GWT files for Vaadin" basedir=".">
	<include file="common.xml" as="common" />

	<property name="gwt.lib.dir" location="${vaadin.basedir}/../gwt-libs" />

	<property name="gwt.user.jar" location="${gwt.lib.dir}/gwt-user.jar" />
	<property name="gwt.dev.jar" location="${gwt.lib.dir}/gwt-dev.jar" />
	<property name="gwt.elemental.jar" location="${gwt.lib.dir}/gwt-elemental.jar" />
	<property name="gwt.codeserver.jar" location="${gwt.lib.dir}/gwt-codeserver.jar" />

	<available file="${gwt.dev.jar}" property="gwt.dev.jar.found" />
	<available file="${gwt.user.jar}" property="gwt.user.jar.found" />
	<available file="${gwt.elemental.jar}" property="gwt.elemental.jar.found" />
	<available file="${gwt.codeserver.jar}" property="gwt.codeserver.jar.found" />

	<fail unless="gwt.dev.jar.found" message="Could not find gwt-dev.jar at ${gwt.dev.jar}" />
	<fail unless="gwt.user.jar.found" message="Could not find gwt-user.jar at ${gwt.user.jar}" />
	<fail unless="gwt.elemental.jar.found" message="Could not find gwt-elemental.jar at ${gwt.elemental.jar}" />
	<fail unless="gwt.codeserver.jar.found" message="Could not find gwt-codeserver.jar at ${gtw.codeserver.jar}" />

	<property name="gwt.unpack.dir" location="${vaadin.basedir}/build/gwt" />

	<property name="gwt.user.jar.files" location="${gwt.unpack.dir}/gwt-user.jar" />
	<property name="gwt.dev.jar.files" location="${gwt.unpack.dir}/gwt-dev.jar" />
	<property name="gwt.elemental.jar.files" location="${gwt.unpack.dir}/gwt-elemental.jar" />
	<property name="gwt.codeserver.jar.files" location="${gwt.unpack.dir}/gwt-codeserver.jar" />

	<target name="unpack.gwt">
		<delete dir="${gwt.unpack.dir}" />

		<mkdir dir="${gwt.user.jar.files}" />
		<mkdir dir="${gwt.dev.jar.files}" />
		<mkdir dir="${gwt.elemental.jar.files}" />
		<mkdir dir="${gwt.codeserver.jar.files}" />

		<unzip dest="${gwt.user.jar.files}" src="${gwt.user.jar}" />
		<unzip dest="${gwt.dev.jar.files}" src="${gwt.dev.jar}" />
		<unzip dest="${gwt.elemental.jar.files}" src="${gwt.elemental.jar}" />
		<unzip dest="${gwt.codeserver.jar.files}" src="${gwt.codeserver.jar}" />
	</target>

	<union id="client-compiler.gwt.includes">
		<!-- GWT development JAR contents including many external dependencies 
            (for now) -->
		<fileset dir="${gwt.dev.jar.files}">
			<exclude name="META-INF/**" />
			<exclude name="license*" />
			<exclude name="LICENSE*" />

			<!-- Packages in vaadin-shared-deps.jar or declared
			as dependencies -->
			<exclude name="com/google/gwt/thirdparty/guava/**" />
			<exclude name="javax/servlet/**" />
			<exclude name="javax/xml/**" />
			<!-- cssparser -->
			<exclude name="com/steadystate/css/**" />
			<!-- Ant & AntLauncher -->
			<exclude name="org/apache/tools/**"/>
			<!-- Jetty & jetty-util -->
			<exclude name="org/mortbay/**"/>
			<!-- Swing Worker-->
			<exclude name="org/jdesktop/swingworker/**"/>
			<!-- Apache commons codec & io & lang -->
			<exclude name="org/apache/commons/codec/**"/>
			<exclude name="org/apache/commons/io/**"/>
			<exclude name="org/apache/commons/lang/**"/>
			<!-- apache mime4j -->
			<exclude name="org/apache/james/mime4j/**"/>

			<!-- Overridden in Vaadin -->
			<exclude name="com/google/gwt/dev/About.properties" />

		</fileset>

		<!-- GWT SuperDevMode -->
		<fileset dir="${gwt.codeserver.jar.files}">
			<exclude name="META-INF/**" />
		</fileset>
	</union>

	<union id="client-compiled-cache.gwt.includes">
		<!-- Precompiled GWT modules (.gwtar file) -->
		<fileset dir="${gwt.user.jar.files}">
			<exclude name="META-INF/**" />

			<!-- precompiled GWT modules (.gwtar) -->
			<include name="**/*.gwtar" />
			<!-- external dependencies -->
			<exclude name="javax/servlet/**" />
			<exclude name="org/w3c/css/sac/**" />

		</fileset>
	</union>

	<union id="client.gwt.includes">
		<fileset dir="${gwt.user.jar.files}">
			<exclude name="META-INF/**" />
			<!-- precompiled GWT modules (.gwtar) goes into client-compiled -->
			<exclude name="**/*.gwtar" />
			<!-- These go into server -->
			<exclude name="com/google/gwt/*/server/**" />
			<!-- These go into shared -->
			<exclude name="com/google/gwt/*/shared/**" />
			<exclude name="com/google/gwt/*/*/shared/**" />
			<exclude name="com/google/web/bindery/*/shared/**" />
			
			<!-- Used by the server, in wrong package in GWT -->
			<exclude name="com/google/gwt/user/client/rpc/IsSerializable.*" />

			<!-- These are in vaadin-shared-deps -->
			<exclude name="com/google/gwt/thirdparty/streamhtmlparser/**" />
			<exclude name="org/w3c/flute/**" />

			<!-- external dependencies -->
			<exclude name="javax/servlet/**" />
			<exclude name="org/w3c/css/sac/**" />
		</fileset>
		<!-- GWT Elemental -->
		<fileset dir="${gwt.elemental.jar.files}">
			<exclude name="META-INF/**" />
		</fileset>
	</union>

	<union id="shared.gwt.includes">
		<fileset dir="${gwt.user.jar.files}">
			<!-- Shared files from user -->
			<include name="com/google/gwt/*/shared/**" />
			<include name="com/google/gwt/*/*/shared/**" />
			<include name="com/google/web/bindery/*/shared/**" />
			<include name="com/google/gwt/user/client/rpc/IsSerializable.*" />

		</fileset>
	</union>

	<union id="server.gwt.includes">
		<fileset dir="${gwt.user.jar.files}">
			<!-- Server files from gwt-user -->
			<include name="com/google/gwt/*/server/**" />
		</fileset>
	</union>
</project>