<!--
 * 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="sample-binding-rmi-calculator-reference-contribution" default="compile">

    <property name="tuscany.home" value="../../../.."/>
    <property name="jar.name"   value="sample-binding-rmi-calculator-reference-contribution.jar" />
    
    <echo>${tuscany.home}</echo>

    <target name="init"> 
      <delete quiet="true" includeemptydirs="true"> 
         <fileset dir="target"/> 
      </delete> 
      <mkdir dir="target/classes"/> 
    </target>
    
    <target name="compile" depends="init">
      <javac srcdir="src/main/java" 
             destdir="target/classes" 
             debug="on"
             source="1.5"
             target="1.5"
             failonerror="true"> 
         <classpath>
            <fileset dir="${tuscany.home}/lib">
               <include name="tuscany-sca-api-*.jar" />
            </fileset>
         </classpath>
      </javac> 
      <copy todir="target/classes"> 
         <fileset dir="src/main/resources"/> 
      </copy> 
      <jar destfile="target/${jar.name}" basedir="target/classes"> 
         <manifest>
            <attribute name="Main-Class" value="${main.class}" /> 
         </manifest>
      </jar>        
    </target>
	
</project> 


