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

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

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

    <target name="build" depends="check-depends,compile-java,build-jar" />

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

    <target name="check-depends"
            depends="-check-win-depends,-check-unix-depends" />

    <target name="-check-win-depends" if="is.windows"
            depends="-really-check-win-depends,-ext-props,-ext-jpeg,-ext-png" />

    <target name="-really-check-win-depends" if="is.windows">
        <check-one-file src="${jpeg.url}" dest="${jpeg.tar}" />
        <check-one-file src="${png.url}" dest="${png.tar}" />
    </target>

    <target name="-check-unix-depends" if="is.unix">
        <property name="jpeg.msg"
                  value="libjpeg development package not installed
${line.separator}For Debian/Ubuntu try: apt-get install libjpeg62-dev
${line.separator}For Fedora try: yum install libjpeg-devel" />
        <check-os-file src="${jpeg.home}/include/jconfig.h"
                       message="${jpeg.msg}" />

        <property name="png.msg"
                  value="libpng development package not installed
${line.separator}For Debian/Ubuntu try: apt-get install libpng12-dev
${line.separator}For Fedora try: yum install libpng-devel" />
        <check-os-file src="${png.home}/include/png.h"
                       message="${png.msg}" />
    </target>

    <target name="-ext-props" if="is.windows">
        <uptodate property="jpeg.uptodate"
                  srcfile="${jpeg.tar}"
                  targetfile="${jpeg.testfile}" />
                <uptodate property="png.uptodate"
                  srcfile="${png.tar}"
                  targetfile="${png.testfile}" />
    </target>

    <target name="-ext-jpeg" if="is.windows" unless="jpeg.uptodate">
        <echo>Extracting jpeg dependencies</echo>
        <untar src="${jpeg.tar}" dest="${depends.lib.dir}" compression="gzip" />
        <touch file="${jpeg.testfile}" />
    </target>

    <target name="-ext-png" if="is.windows" unless="png.uptodate">
        <echo>Extracting png dependencies</echo>
        <untar src="${png.tar}" dest="${depends.lib.dir}" compression="gzip" />
        <touch file="${png.testfile}" />
    </target>

    <target name="fetch-depends" if="is.windows">
        <mkdir dir="${jpeg.dir}" />
        <download-one-file src="${jpeg.url}"
                           dest="${jpeg.tar}"
                           md5="${jpeg.md5}" />
        <mkdir dir="${png.dir}" />
        <download-one-file src="${png.url}"
                           dest="${png.tar}"
                           md5="${png.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, run-tests" />

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

    <target name="clean-native">
        <make dir="src/main/native/jpegencoder/${hy.os.family}" target="clean"/>
        <make dir="src/main/native/pngencoder/${hy.os.family}" target="clean" />
    </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 ImageIO 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="build-native" depends="build-native-all" />
    <target name="build-native-all" >
        <make dir="src/main/native/jpegencoder/${hy.os.family}">
            <make-elements>
                <env key="HY_JPEG_VER" value="${jpeg.ver}" />
            </make-elements>
        </make>

        <make dir="src/main/native/pngencoder/${hy.os.family}">
            <make-elements>
                <env key="HY_PNG_VER" value="${png.ver}" />
            </make-elements>
        </make>
    </target>

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

    <target name="build-jar" depends="svn-info,class-patternset">
        <jar destfile="${hy.jdk}/jre/lib/boot/imageio.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/imageio-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}/imageio_tests.jar">
            <fileset dir="bin/test" />
            <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 todir="${tests.resources.hdk.dir}">
            <fileset dir="src/test/resources" />
        </copy>

        <copy file="${junit.jar}" tofile="${hy.hdk}/build/test/junit.jar" />
    </target>

    <target name="compile-tests">
        <compile-tests description="imageio 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>
