<?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="Top-Level dependency definitions" default="check" basedir="..">
    <description>
    Confirm that dependencies are present and fetch missing dependencies
    where possible.
    </description>

    <property name="hy.hdk" location="${basedir}/deploy" />

    <import file="${basedir}/make/properties.xml" />
    <import file="${basedir}/make/depends-common.xml" />

    <target name="check" description="Check whether dependencies are available"
            depends="-check,-check-win,-extract" />

    <target name="-check">
        <check-one-file src="${xalan.url}" dest="${xalan.orig.jar}" />
        <check-one-file src="${xerces.url}" dest="${xerces.zip}" />
        <check-one-file src="${xmlsec.url}" dest="${xmlsec.zip}" />
        <check-one-file src="${junit.url}" dest="${junit.jar}" />
        <check-one-file src="${hamcrest-library.url}" dest="${hamcrest-library.jar}" />
        <check-one-file src="${findbugs.url}" dest="${findbugs.zip}" />
        <check-one-file src="${bcprov.url}" dest="${bcprov.jar}" />
        <check-one-file src="${jetty.url}" dest="${jetty.jar}" />
        <check-one-file src="${jetty-util.url}" dest="${jetty-util.jar}" />
        <check-one-file src="${servlet-api.url}" dest="${servlet-api.jar}" />
        <check-one-file src="${icu4j.url}" dest="${icu4j.jar}" />
        <check-one-file src="${icu4j-charsets.url}" dest="${icu4j-charsets.jar}" />    
    </target>

    <target name="-check-win" if="is.windows">
        <property environment="hyenv" />

        <check-one-file src="${msvcr.url}" dest="${msvcr.dll}" />
        <check-one-file src="${msvcp.url}" dest="${msvcp.dll}" />
    </target>

    <target name="-extract"
         depends="-extract-props,-extract-xerces,-fix-xalan-manifest,-extract-findbugs" />

    <target name="-extract-props">
        <uptodate property="xerces.uptodate"
                  srcfile="${xerces.zip}"
                  targetfile="${xerces.dir}/xercesImpl.jar" />
        <uptodate property="xalan.uptodate"
                  srcfile="${xalan.orig.jar}"
                  targetfile="${xalan.jar}" />
        <uptodate property="findbugs.uptodate"
                  srcfile="${findbugs.zip}"
                  targetfile="${findbugs.dir}/uptodate" />
    </target>

    <target name="-extract-xerces" unless="xerces.uptodate">
        <unzip src="${xerces.zip}" dest="${xerces.dir}.tmp" />
        <copy todir="${xerces.dir}" flatten="yes">
            <fileset dir="${xerces.dir}.tmp/xerces-2_9_1">
                <include name="resolver.jar" />
		<include name="xercesImpl.jar" />
		<include name="xml-apis.jar" />
            </fileset>
        </copy>
        <delete dir="${xerces.dir}.tmp" />
	<touch file="${xerces.dir}/xercesImpl.jar" />
    </target>

    <target name="-fix-xalan-manifest" unless="xalan.uptodate">
        <unjar src="${xalan.orig.jar}" dest="${xalan.dir}.tmp" />
        <delete file="${xalan.jar}" />
        <replace file="${xalan.dir}.tmp/META-INF/MANIFEST.MF"
                 token="Class-Path: xercesImpl.jar xml-apis.jar serializer.jar"
                 value="" />
        <jar destfile="${xalan.jar}" basedir="${xalan.dir}.tmp"
             manifest="${xalan.dir}.tmp/META-INF/MANIFEST.MF" />
        <delete dir="${xalan.dir}.tmp" />
    </target>

    <target name="-extract-findbugs" unless="findbugs.uptodate">
        <!-- Note that FindBugs contains a top level dir name -->
        <unzip src="${findbugs.zip}" dest="${findbugs.dir}/.." />
        <touch file="${findbugs.dir}/uptodate" />
    </target>

    <target name="download" description="Download required jars"
            depends="-download,-download-win" />

    <target name="-download">

        <mkdir dir="${xalan.dir}" />
        <download-one-file src="${xalan.url}" dest="${xalan.orig.jar}"
                           md5="${xalan.md5}" />

        <mkdir dir="${xerces.dir}" />
        <download-one-file src="${xerces.url}" dest="${xerces.zip}"
                           md5="${xerces.md5}" />

        <mkdir dir="${xmlsec.dir}" />
        <download-one-file src="${xmlsec.url}" dest="${xmlsec.zip}"
                           md5="${xmlsec.md5}" />

        <mkdir dir="${junit.dir}" />
        <download-one-file src="${junit.url}" dest="${junit.jar}"
                           md5="${junit.md5}" />

        <mkdir dir="${hamcrest-library.dir}" />
        <download-one-file src="${hamcrest-library.url}"
                           dest="${hamcrest-library.jar}"
                           md5="${hamcrest-library.md5}" />

        <mkdir dir="${findbugs.dir}" />
        <download-one-file src="${findbugs.url}"
                           dest="${findbugs.zip}"
                           md5="${findbugs.md5}" />

        <mkdir dir="${bcprov.dir}" />
        <download-one-file src="${bcprov.url}" dest="${bcprov.jar}"
                           md5="${bcprov.md5}" />

        <mkdir dir="${jetty.dir}" />
        <download-one-file src="${jetty.url}" dest="${jetty.jar}"
                           md5="${jetty.md5}" />
 
        <download-one-file src="${jetty-util.url}" dest="${jetty-util.jar}"
                           md5="${jetty-util.md5}" />

        <download-one-file src="${servlet-api.url}" dest="${servlet-api.jar}"
                           md5="${servlet-api.md5}" />

        <mkdir dir="${icu4j.dir}" />
        <download-one-file src="${icu4j.url}"
                           dest="${icu4j.jar}"
                           md5="${icu4j.md5}" />
        <download-one-file src="${icu4j-charsets.url}"
                           dest="${icu4j-charsets.jar}"
                           md5="${icu4j-charsets.md5}" />
    </target>

    <target name="-download-win" if="is.windows">

        <property environment="hyenv" />

        <mkdir dir="${msvcr.dir}" />
        <download-one-file src="${msvcr.url}"
                           dest="${msvcr.dll}"
                           md5="${msvcr.md5}"
                           md5-deprecated="${msvcr.md5.deprecated}" />

        <mkdir dir="${msvcp.dir}" />
        <download-one-file src="${msvcp.url}"
                           dest="${msvcp.dll}"
                           md5="${msvcp.md5}"
                           md5-deprecated="${msvcp.md5.deprecated}" />

    </target>

</project>
