<?xml version="1.0"?>
<!--
 
 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="TestClient" default="build">
    <!--
		Properties that come from master build file
		- build.dir: root directory for build
		- build.debug: true if building debug release
		- build.defines: variables to define during build
    -->

    <target name="build">
        <csc target="exe" 
				define="${build.defines}" 
            debug="${build.debug}"
            unsafe="true"
				output="${build.dir}/${project::get-name()}.exe">
			
			<sources>
			   <include name="**/*.cs" />
         </sources>
         <references>
            <include name="${build.dir}\Apache.Qpid.Integration.Tests.dll"/>
         </references>
        </csc>
    </target>
</project>

