<?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="ARCHIVE Build" default="build" basedir=".">
    <description>Build for ARCHIVE component</description>

    <property name="hy.module" value="archive" />
    <property name="hy.hdk" location="${basedir}/../../deploy" />
    <import file="${hy.hdk}/build/ant/properties.xml" />

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

    <property name="zlib.zip" location="${depends.oss}/zlib_1.2.3.zip" />

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

    <target name="copy-native-includes"
            depends="overlay-oss, copy-zipsup-include, copy-zlib-include" />

    <target name="copy-zlib-include" unless="hy.skip.zlib">
        <copy todir="${hy.hdk}/include" preservelastmodified="true">
            <fileset dir="src/main/native/zlib_dist">
                <include name="zlib.h" />
                <include name="zconf.h" />
            </fileset>
        </copy>
    </target>
	
    <target name="copy-zipsup-include" if="hy.skip.zip.api">
        <copy todir="${hy.hdk}/include" preservelastmodified="true">
            <fileset dir="src/main/native/include/shared">
                <include name="zipsup.h" />
            </fileset>
        </copy>
    </target>
    
    <target name="overlay-oss"
            depends="-extract-props,-unzip-oss,-ascii2ebcdic-conversion"
            unless="hy.skip.zlib" />

    <target name="-extract-props">
        <uptodate property="zlib.uptodate"
                  srcfile="${zlib.zip}"
                  targetfile="src/main/native/zlib_dist/README" />
    </target>

    <target name="-unzip-oss" unless="zlib.uptodate">
        <mkdir dir="src/main/native/zlib_dist" />
        <unzip src="${zlib.zip}" dest="src/main/native/zlib_dist" />
        <chmod dir="src/main/native/zlib_dist" perm="ugo+r" />
        <touch file="src/main/native/zlib_dist/README" />
    </target>

    <target name="-ascii2ebcdic-conversion" if="is.zos" unless="zlib.uptodate">
        <move todir="src/main/native/zlib_dist_ascii">
            <fileset dir="src/main/native/zlib_dist">
                <include name="**/*" />
                <exclude name="**/*.o" />
            </fileset>
        </move>
        <copy todir="src/main/native/zlib_dist" outputencoding="IBM-1047" >
            <fileset dir="src/main/native/zlib_dist_ascii">
                <include name="**/*" />
                <exclude name="**/*.o" />
            </fileset>               
        </copy>
        <fixcrlf srcdir="src/main/native/zlib_dist" includes="**/*"  excludes="**/*.o" eol="unix" />
        <delete dir="src/main/native/zlib_dist_ascii" />
    </target>
    
    <!-- Build native code -->
    <target name="build-native"
            depends="-build-native-zip,-build-native-zlib,-build-native-archive" />

    <target name="-build-native-zip" if="hy.skip.zip.api">
        <make dir="src/main/native/zip/${hy.os.family}" />
    </target>
        
    <target name="-build-native-zlib" unless="hy.skip.zlib">
        <make dir="src/main/native/zlib/${hy.os.family}" />
    </target>
        
    <target name="-build-native-archive">
        <make dir="src/main/native/archive/${hy.os.family}" />
    </target>
    
    <target name="clean-native"
            depends="-clean-native-zip,-clean-native-zlib,clean-native-includes,clean-overlay-oss">
        <make dir="src/main/native/archive/${hy.os.family}" target="clean" />
    </target>

    <target name="-clean-native-zip" if="hy.skip.zip.api">
        <make dir="src/main/native/zip/${hy.os.family}" target="clean" />
    </target>

    <target name="-clean-native-zlib" unless="hy.skip.zlib">
        <make dir="src/main/native/zlib/${hy.os.family}" target="clean" />
    </target>

    <target name="clean-native-includes">
        <delete failonerror="false">
            <fileset dir="${hy.hdk}/include">
                <include name="zipsup.h" />
            </fileset>
        </delete>
    </target>

    <target name="clean-overlay-oss" unless="hy.skip.zlib" >
        <delete dir="src/main/native/zlib_dist" quiet="true" />
    </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, run-tests" />

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

    <target name="clean-test">
        <delete dir="${tests.hdk.dir}" failonerror="false" />
        <delete failonerror="false" dir="bin"/>
    </target>

    <target name="compile-java">
        <echo message="Compiling ${hy.module} classes" />

        <mkdir dir="../../build/classes" />

        <javac sourcepath=""
               srcdir="src/main/java"
               destdir="../../build/classes"
               compiler="${hy.javac.compiler}"
               memoryMaximumSize="${hy.javac.maxmem}"
               source="${hy.javac.source}" 
               target="${hy.javac.target}"
               debug="${hy.javac.debug}">

            <compilerarg line="${build.compilerarg}" />

            <bootclasspath>
                <fileset dir="${hy.jdk}/jre/lib/boot">
                    <include name="**/*.jar" />
                </fileset>
            </bootclasspath>
        </javac>
    </target>

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

    <target name="build-jar" depends="svn-info,class-patternset">
        <jar destfile="${hy.jdk}/jre/lib/boot/archive.jar"
             manifest="META-INF/MANIFEST.MF"
             compress="${hy.jar.compress}">
            <fileset refid="classes" />
            <fileset refid="resources" />
            <manifest>
                <attribute name="Implementation-Version" value="${svn.info}"/> 
            </manifest>

            <metainf refid="hy.required.metainf-files"/>
        </jar>

        <jar destfile="${hy.jdk}/jre/lib/boot/archive-src.jar">
            <fileset dir="src/main/java" />
            <manifest>
                <attribute name="Implementation-Version" value="${svn.info}"/> 
            </manifest>

            <metainf refid="hy.required.metainf-files"/>
        </jar>
    </target>

    <target name="test-jar" depends="svn-info,compile-tests">
        <mkdir dir="${tests.hdk.dir}" />
        
        <copy file="make/run-test.xml" tofile="${tests.hdk.dir}/build.xml" />
        
        <jar destfile="${tests.hdk.dir}/archive_tests.jar">
            <fileset dir="bin/test" />
            <manifest>
                <attribute name="Implementation-Version" value="${svn.info}"/> 
            </manifest>
            <metainf refid="hy.required.metainf-files"/>
        </jar>

        <jar destfile="${tests.hdk.dir}/archive_internal_tests.jar">
            <fileset dir="bin/test-internal" />
            <manifest>
                <attribute name="Implementation-Version" value="${svn.info}"/> 
            </manifest>
            <metainf refid="hy.required.metainf-files"/>
        </jar>

        <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="../../${junit.jar}"
              tofile="${hy.hdk}/build/test/junit.jar" />
    </target>

    <target name="compile-tests">
        <compile-tests description="archive internal tests"
                       destdir="bin/test-internal">
            <javac-elements>
                <src>
                    <pathelement location="src/test/java-internal" />
                </src>
            </javac-elements>
        </compile-tests>
        <compile-tests description="archive api tests">
            <javac-elements>
                <src>
                    <pathelement location="src/test/java" />
                </src>
            </javac-elements>
        </compile-tests>
    </target>

    <target name="run-tests" depends="test-jar">
        <ant dir="${tests.hdk.dir}" target="test-module" />
    </target>

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

</project>
