<?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="etch-examples" basedir="." default="help">
    <description>Etch Examples</description>
    <property name="Etch.basedir" location="${basedir}/.." />
    <import file="${Etch.basedir}/build-support/etch.includes.xml" />

    <property name="target" location="${basedir}/target" />
    
    <target name="do-clean">
        <build_example dir="chat" logdir="${basedir}/target/logs" />
        <build_example dir="distmap" logdir="${basedir}/target/logs" />
        <build_example dir="example" logdir="${basedir}/target/logs" />
        <build_example dir="example_mixin" logdir="${basedir}/target/logs" />
        <build_example dir="perf" logdir="${basedir}/target/logs" />
        <build_example dir="helloworld" logdir="${basedir}/target/logs" />
        <delete dir="${target}" failonerror="false" quiet="true" />
    </target>
    
    <target name="do-init">
        <delete dir="${target}" failonerror="false" quiet="true" />
        <mkdir dir="${target}" />
    </target>
    
    <target name="do-build">
        <build_example dir="chat" logdir="${basedir}/target/logs" />
        <build_example dir="distmap" logdir="${basedir}/target/logs" />
        <build_example dir="example" logdir="${basedir}/target/logs" />
        <build_example dir="example_mixin" logdir="${basedir}/target/logs" />
        <build_example dir="perf" logdir="${basedir}/target/logs" />
        <build_example dir="helloworld" logdir="${basedir}/target/logs" />
    </target>
    
    <target name="do-postbuild">
    </target>
    
    <target name="do-help">
    </target>

</project>
