<?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*" />

			<!-- Used by client and server apparently... -->
			<exclude name="com/google/gwt/thirdparty/guava/**" />

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

			<!-- external dependencies declared in ixy.xml/pom.xml -->
			<exclude name="javax/servlet/**" />
			<exclude name="javax/xml/**" />
		</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="theme-compiler.gwt.includes">
		<!-- This is only temporary. Flute must be packaged separately as it is not in Maven and this version is also modified by the GWT team -->
		<fileset dir="${gwt.user.jar.files}">
			<include name="org/w3c/flute/**" />
		</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/**" />


			<!-- 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/**" />
		</fileset>
		<fileset dir="${gwt.dev.jar.files}">
			<!-- Used by client and server apparently... -->
			<include name="com/google/gwt/thirdparty/guava/**" />
		</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>
