<?xml version="1.0"?>
<!--
 ! Copyright 2009-2013 by The Regents of the University of California
 ! Licensed 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 from
 ! 
 !     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="asterix" default="build" basedir=".">

    <target name="init">
        <condition property="isWindows">
            <os family="windows" />
        </condition>
        <condition property="isUnix">
            <os family="unix" />
        </condition>
    </target>

    <target name="win" depends="init" if="isWindows">
        <property name="os.family" value="windows" />
        <property name="source.ext" value=".cmd" />
        <property name="target.ext" value=".cmd" />
    </target>

    <target name="unix" depends="init" if="isUnix">
        <property name="os.family" value="unix" />
        <property name="source.ext" value=".sh" />
        <property name="target.ext" value="" />
    </target>

    <target name="build" depends="win,unix">
        <mkdir dir="${target.dir}"/>
        <pathconvert targetos="${os.family}" property="classpath">
          <path>
            <pathelement path="${script.classpath}"/>
          </path>
        </pathconvert>
        <copy file="${source}${source.ext}" tofile="${target.dir}/${target}${target.ext}">
            <filterset>
                <filter token="main.class" value="${main.class}"/>
                <filter token="classpath" value="${classpath}"/>
                <filter token="jvm.params" value="${jvm.params}"/>
                <filter token="program.params" value="${program.params}"/>
            </filterset>
        </copy>
        <chmod perm="ugo+x">
            <fileset dir="${target.dir}"/>
        </chmod>
    </target>

</project>
