<?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="module.symbolic" value="com.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" />

    <union id="jar.includes">
        <fileset dir="${result.dir}">
            <include name="VAADIN/widgetsets/com.vaadin*/**" />
        </fileset>
    </union>

    <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 log="download-only" 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="6" />
        <property name="extraParams" value="" />

        <ivy:resolve log="download-only" 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 value="-XenableClosureCompiler" />
            <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">
        <!-- Ensure filtered webcontent files are available -->
        <antcall target="common.filter.webcontent" />

        <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="jar" depends="default-widgetset">
        <antcall target="common.jar">
            <param name="osgi.extra.package.prefixes" value="VAADIN/widgetsets/" />
            <reference torefid="extra.jar.includes" refid="jar.includes" />
        </antcall>
    </target>

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

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

    <target name="checkstyle">
        <echo>No java files in module</echo>
    </target>
    <target name="test" depends="checkstyle">
        <!--<antcall target="common.test.run" /> -->
        <echo>WHAT? No tests for ${module.name}!</echo>
    </target>

</project>
