<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at
  
       http://www.apache.org/licenses/LICENSE-2.0
  
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->

<project name="LUNI Build" default="build" basedir=".">
    <description>Build for LUNI component</description>

    <property name="hy.component" value="classlib" />
    <property name="hy.module" value="luni" />
    <property name="hy.target" location="${basedir}/../../target" />
    <import file="${hy.target}/hdk/build/ant/properties.xml" />
    <import file="${hy.hdk}/build/ant/depends.xml" />

    <property file="../../make/depends.properties" />

    <property name="fdlibm.dist"
              location="${hy.target}/depends/native/fdlibm_dist"/>

    <target name="build" depends="-build-no-check"/>
    <target name="-build-no-check" depends="-build-jar,-test-jar" />

    <target name="clean" depends="-clean-java,-clean-native,-clean-test" />

    <target name="check-depends"
            depends="-check-depends,-unzip-oss,-copy-includes,
                     -ascii2ebcdic-conversion" />
    <target name="-check-depends">
        <check-one-file src="${fdlibm.url}" dest="${fdlibm.tar}" />
    </target>

    <target name="-copy-includes" unless="skip.native.build">
        <copy todir="${hy.hdk}/include" preservelastmodified="true">
            <fileset dir="src/main/native/include">
                <include name="vmi.h" />
                <include name="hyvmls.h" />
                <include name="hysocket.h" />
                <include name="gp.h" />
                <include name="fdlibm.h" />
                <include name="hymagic.h" />
                <include name="vmizip.h"/>
            </fileset>
        </copy>
    </target>

    <!-- Build native code -->
    <target name="-build-native" unless="skip.native.build"
            depends="-build-native-core, -build-native-secondary" />

    <!-- Build the core luni native components -->
    <target name="-build-native-core" unless="skip.native.build">

        <!-- Build vmi dll -->
        <make dir="src/main/native/vmi/${hy.os.family}" />

        <!-- On Linux we want to copy the libvmi.so into the
             deploy/lib directory so that the natives can link
             against it. This is only used at build time - at
             runtime the libvmi.so provided by the VM
             implementation is loaded
          -->
        <copy todir="${hy.hdk}/lib" flatten="true" preservelastmodified="true">
            <fileset dir="${hy.build.mod}/native/vmi">
                <include name="libvmi${shlib.suffix}"/>
                <!-- Copy link exports file on z/OS -->
                <include name="${hy.os.family}/*${linklib.suffix}"
                         if="is.zos" />
            </fileset>
        </copy>
    </target>

    <!-- Build secondary native luni components -->
    <target name="-build-native-secondary" unless="skip.native.build"
        depends="-build-native-secondary1,-build-hyzip,-build-native-secondary2"
        />

    <target name="-build-native-secondary1" unless="skip.native.build">

        <!-- Build fdlibm lib -->
        <make dir="src/main/native/fdlibm/${hy.os.family}" />

        <!-- Build luni dll -->
        <make dir="src/main/native/luni/${hy.os.family}" />

        <!-- Build vmls lib -->
        <make dir="src/main/native/vmls/${hy.os.family}" />
    </target>

    <target name="-build-hyzip" unless="hy.skip.zip.api">
        <!-- TOFIX: should add property for: unless="skip.native.build" -->
        <!-- Build hyzip lib -->
        <make dir="src/main/native/hyzip/${hy.os.family}" />
    </target>

    <target name="-build-native-secondary2" unless="skip.native.build">
        <!-- Build launcher executables -->
        <make dir="src/main/native/launcher/${hy.os.family}" />
    </target>

    <!-- Overlay OSS packages into their required locations -->
    <target name="-unzip-oss" unless="skip.native.build">
        <mkdir dir="${fdlibm.dist}"/>
        <untar src="${fdlibm.tar}" compression="gzip" dest="${fdlibm.dist}">
            <patternset>
                <exclude name="fdlibm53"/>
            </patternset>
            <mapper type="flatten"/>
        </untar>

        <!-- These files are not used by Harmony, rename them in case misused -->
        <move todir="${fdlibm.dist}">
            <fileset dir="${fdlibm.dist}" >
                <include name="fdlibm.h"/>
                <include name="s_lib_version.c"/>
                <include name="configure"/>
                <include name="configure.in"/>
                <include name="Makefile"/>
                <include name="Makefile.in"/>
            </fileset>
            <mapper type="glob" from="*" to="*.orig" />
        </move>

        <chmod dir="${fdlibm.dist}" perm="ugo+r" />
    </target>

    <target name="-ascii2ebcdic-conversion" unless="skip.native.build"
            if="is.zos">
        <move todir="src/main/native/fdlibm_dist_ascii">
            <fileset dir="src/main/native/fdlibm_dist">
                <include name="**/*" />
                <exclude name="**/*.o" />
            </fileset>
        </move>
        <copy todir="src/main/native/fdlibm_dist" outputencoding="IBM-1047" >
            <fileset dir="src/main/native/fdlibm_dist_ascii">
                <include name="**/*" />
                <exclude name="**/*.o" />
            </fileset>               
        </copy>
        <fixcrlf srcdir="src/main/native/fdlibm_dist" includes="**/*" excludes="**/*.o" eol="unix" />
        <delete dir="src/main/native/fdlibm_dist_ascii" />
    </target>

    <target name="fetch-depends" >
        <mkdir dir="${fdlibm.dir}" />
        <download-one-file src="${fdlibm.url}" dest="${fdlibm.tar}"
                           md5="${fdlibm.md5}" />
    </target>

    <target name="test" depends="-test-module">
        <fail message="Some tests failed">
            <condition>
                <or>
                    <isset property="test.failures" />
                    <isset property="test.errors" />
                </or>
            </condition>
        </fail>
    </target>

    <!-- internal target for local and global test run sequence -->
    <target name="-test-module" depends="build,-test-jar,-run-tests" />

    <target name="-clean-java" unless="skip.java.build"
            depends="-class-patternset">
        <delete file="${hy.jdk}/jre/lib/boot/${hy.module}.jar" />
        <delete file="${hy.jdk}/jre/lib/boot/${hy.module}-src.jar" />
        <delete failonerror="false">
            <fileset refid="classes" />
        </delete>
        <delete-patternset module="${hy.module}" />
    </target>

    <target name="-clean-native" unless="skip.native.build"
            depends="-clean-native-includes,-clean-overlay-oss">
        <make dir="src/main/native/fdlibm/${hy.os.family}" target="clean" />
        <make dir="src/main/native/vmi/${hy.os.family}" target="clean" />
        <make dir="src/main/native/luni/${hy.os.family}" target="clean" />
        <make dir="src/main/native/vmls/${hy.os.family}" target="clean" />
        <make dir="src/main/native/hyzip/${hy.os.family}" target="clean" />
        <make dir="src/main/native/launcher/${hy.os.family}" target="clean" />
    </target>

    <target name="-clean-native-includes" unless="skip.native.build">
        <delete failonerror="false">
            <fileset dir="${hy.hdk}/include">
                <include name="vmi.h" />
                <include name="hyvmls.h" />
                <include name="hysocket.h" />
                <include name="gp.h" />
                <include name="fdlibm.h" />
                <include name="hymagic.h" />
            </fileset>
        </delete>
    </target>

    <!-- Clean overlaid OSS packages -->
    <target name="-clean-overlay-oss" unless="skip.native.build">
        <delete dir="src/main/native/fdlibm_dist" quiet="true" />
    </target>

    <target name="-clean-test" unless="skip.test.build">
        <delete dir="${tests.hdk.dir}" failonerror="false" />
        <delete failonerror="false" dir="${hy.build.mod}/test"/>
    </target>

    <target name="-compile-java" unless="skip.java.build">
        <compile-classes description="${hy.module} classes">
            <javac-elements>
                <src path="src/main/java" />
            </javac-elements>
        </compile-classes>
    </target>

    <target name="findbugs" depends="-build-jar">
        <run-findBugs
            jarFile="${hy.jdk}/jre/lib/boot/${hy.module}.jar"
            excludeFilter="make/findbugs-exclude-filter.xml"
            outputFile="${findBugs.report}/${hy.module}.xml"/>
    </target>

    <target name="-build-jar" unless="skip.java.build"
            depends="-svn-info,-compile-java,-class-patternset">
        <hy.jar.bin destfile="${hy.jdk}/jre/lib/boot/${hy.module}.jar"
                    manifest="META-INF/MANIFEST.MF">
            <fileset refid="classes" />
            <fileset refid="resources" />
        </hy.jar.bin>

        <hy.jar.src destfile="${hy.jdk}/jre/lib/boot/${hy.module}-src.jar">
            <fileset dir="src/main/java" />
        </hy.jar.src>
    </target>

    <target name="-test-jar" unless="skip.test.build"
            depends="-compile-tests">
        <mkdir dir="${tests.hdk.dir}"/>

        <copy file="make/run-test.xml"
              tofile="${tests.hdk.dir}/build.xml" />

        <hy.jar.bin destfile="${tests.hdk.dir}/${hy.module}_tests_api.jar">
            <fileset dir="${hy.build.mod}/test/api" />
        </hy.jar.bin>

        <hy.jar.bin destfile="${tests.hdk.dir}/${hy.module}_tests_impl.jar">
            <fileset dir="${hy.build.mod}/test/impl" />
        </hy.jar.bin>

        <copy todir="${tests.resources.hdk.dir}">
            <fileset dir="src/test/resources" >
                <include name="org/**/*"/>
                <include name="net.resources/**/*"/>
            </fileset>
        </copy>

        <mkdir dir="${tests.resources.hdk.dir}/config"/>
        <copy file="../../support/src/test/resources/config/testing.policy"
              todir="${hy.hdk}/build/test" outputencoding="UTF-8" />
        <copy file="../../support/src/test/resources/config/localhosttest.ini"
              todir="${tests.resources.hdk.dir}/config"/>

        <copy todir="${tests.resources.hdk.dir}">
            <fileset dir="src/test/resources" >
                <include name="serialization/**/*"/>
            </fileset>
        </copy>

        <mkdir dir="${tests.excludes.hdk.dir}"/>
        <copy todir="${tests.excludes.hdk.dir}">
            <fileset dir="make" includes="exclude*"/>
            <filterchain>
                <tokenfilter>
                    <replaceregex pattern="\.java" replace="\.class" flags="g"/>
                </tokenfilter>
            </filterchain>
        </copy>
        <copy file="${jetty.jar}" todir="${hy.hdk}/build/test" />
    </target>

    <!-- compile both api tests and impl tests-->
    <target name="-compile-tests" unless="skip.test.build">
        <compile-tests description="${hy.module} api tests"
                       destdir="${hy.build.mod}/test/api">
            <javac-elements>
                <src>
                    <pathelement location="src/test/api/common" />
                    <pathelement location="src/test/api/${hy.os.family}" />
                </src>
                <include name="**/*.java" />
                <classpath location="${hy.hdk}/build/test/jetty-6.0.0.jar" />
                <classpath location="${hy.hdk}/build/test/jetty-util-6.0.0.jar" />
                <classpath location="${hy.hdk}/build/test/servlet-api-2.5-6.0.0.jar" />
            </javac-elements>
        </compile-tests>
        <compile-tests description="${hy.module} impl tests"
                       destdir="${hy.build.mod}/test/impl">
            <javac-elements>
                <src>
                   <pathelement location="src/test/impl/common" />
                   <pathelement location="src/test/impl/${hy.os.family}" />
                </src>
                <include name="**/*.java" />
            </javac-elements>
        </compile-tests>
    </target>
    
    <!-- run both api tests and impl tests -->
    <target name="-run-tests" depends="-test-jar">
        <ant dir="${tests.hdk.dir}" target="test-module" />
    </target>

    <target name="-class-patternset" unless="skip.java.build">
        <make-patternset module="${hy.module}" />
    </target>

</project>
