<?xml version="1.0"?>

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

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

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

    <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">
        <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 ${gwt.codeserver.jar}" />

        <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 & collections & logging -->
            <exclude name="org/apache/commons/codec/**" />
            <exclude name="org/apache/commons/io/**" />
            <exclude name="org/apache/commons/lang/**" />
            <exclude name="org/apache/commons/collections/**" />
            <exclude name="org/apache/commons/logging/**" />
            <!-- apache mime4j -->
            <exclude name="org/apache/james/mime4j/**" />

            <!-- client-compiler-deps -->
            <exclude name="com/gargoylesoftware/" />
            <exclude name="com/google/common/" />
            <exclude name="com/google/debugging/" />
            <exclude name="com/google/gwt/dev/protobuf/" />
            <exclude name="com/google/gwt/thirdparty/debugging/" />
            <exclude name="com/google/gwt/thirdparty/javascript/" />
            <exclude name="com/google/gwt/thirdparty/mozilla/" />
            <exclude name="com/ibm/" />
            <exclude name="externs.zip" />
            <exclude name="java_cup/" />
            <exclude name="javax/annotation/" />
            <exclude name="net/sourceforge/htmlunit/" />
            <exclude name="org/apache/bcel/" />
            <exclude name="org/apache/html/" />
            <exclude name="org/apache/http/" />
            <exclude name="org/apache/NOTICE" />
            <exclude name="org/apache/regexp/" />
            <exclude name="org/apache/tapestry/" />
            <exclude name="org/apache/wml/" />
            <exclude name="org/apache/xalan/" />
            <exclude name="org/apache/xerces/" />
            <exclude name="org/apache/xml/" />
            <exclude name="org/apache/xmlcommons/" />
            <exclude name="org/apache/xpath/" />
            <exclude name="org/cyberneko/" />
            <exclude name="org/eclipse/" />
            <exclude name="org/kohsuke/" />
            <exclude name="org/w3c/" />
            <exclude name="org/xml/" />
            <exclude name="rhino_ast/" />
            <exclude name="rhinoDiff.txt" />
            <exclude name="trax/" />
            <exclude name="unicode-license.txt" />
            <exclude name="org/json" />

            <exclude name="license/NOTICE" />
            <exclude name="license/LICENSE.dom-documentation.txt" />
            <exclude name="license/LICENSE.dom-software.txt" />
            <exclude name="license/LICENSE" />
            <exclude name="license/README.dom.txt" />
            <exclude name="license/README.sax.txt" />

            <!-- 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>
