You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ha...@apache.org on 2004/09/06 18:31:12 UTC

cvs commit: ws-axis/c build.AIX.properties build.Linux.properties build.Win32.properties build.xml test.xml

hawkeye     2004/09/06 09:31:12

  Added:       c        build.AIX.properties build.Linux.properties
                        build.Win32.properties build.xml test.xml
  Log:
  ANT scripts to build Axis C code, and run all tests.
  
  Submitted by: Adrian Dick
  Reviewed by: Andrew Perry / John Hawkins
  
  Revision  Changes    Path
  1.1                  ws-axis/c/build.AIX.properties
  
  Index: build.AIX.properties
  ===================================================================
  #####################
  # Parser Properties #
  #####################
  
  # Typical values are:
  #	For Xerces, on Windows:
  #		xmlParser = xerces
  #		xmlParserLibrary = xerces-c_2
  #	For Xerces, on Unix:
  #		xmlParser = xerces
  #		xmlParserLibrary = xerces-c
  #	For Expat, on Unix:
  #		xmlParser = expat
  #		xmlParserLibrary = expat
  
  # Parser to be used
  xmlParser = xerces
  
  # Name of parser library to link against
  xmlParserLibrary = xml4c
  
  # Location of parser
  dir.xmlParser = ${basedir}/../../PreReqs/xml4c/AIX
  
  
  #######################################
  # Properties for compiling C/C++ code #
  #######################################
  
  # Directory in which to place compiled libraries
  dir.bin = ${basedir}/../../../obj/bin
  
  # Directory in which to place object files
  dir.objects = ${basedir}/../../../obj/objects
  
  # Names for compiled libraries - excluding any prefix or suffix
  # eg: For Windows :   libaxis_client will produce libaxis_client.dll
  #     For Unix    :   axis_client will produce libaxis_client.so
  clientLibraryName = axis_client
  transportLibraryName = axis_transport
  xmlParserLibraryName = axis_xmlParser
  
  ####################################
  # Properties for compiling WSDL2Ws #
  ####################################
  
  # Location of Axis JARs
  dir.axisJARs = ${basedir}/../../PreReqs
  
  # Directory in which to place compiled Java classes
  dir.classes = ${basedir}/../../../obj/classes
  
  ############################
  # Properties for packaging #
  ############################
  # Base directory for packaging - not used directly within build.xml, just used to simplify this property file
  dir.package = ${basedir}/../../../obj/package
  
  # Directory in which to place DLLs - Only used for Windows platform
  dir.package.bin = ${dir.package}/bin
  
  # Directory in which to place library files
  dir.package.lib = ${dir.package}/lib
  
  # Directory in which to place header files
  dir.package.include = ${dir.package}/include
  
  # Directory in which to place WSDL2Ws JAR files
  dir.package.WSDL2Ws = ${dir.package}/WSDL2Ws
  
  # Directory in which to place Documentation
  dir.package.docs = ${dir.package}/docs
  
  ############################################
  # Properties for building and running test #
  ############################################
  
  # Directory in which to place all generated test artifacts
  # This is also the directory in which code is built and run
  dir.test.generated = ${basedir}/../../../obj/test/generated
  
  # Log files for test results
  results.log = ${dir.test.generated}/results.log
  
  # Prefix and suffix used for executables and libraries
  # Typical values are:
  #   For windows:
  #		executableSuffix = .exe
  #		librarySuffix = .dll
  #		libraryPrefix = 
  #	For unix:
  #		executableSuffix = 
  #		librarySuffix = .so
  #		libraryPrefix = lib
  #	For AIX (as Unix, except):
  #		librarySuffix = .a
  executableSuffix = 
  librarySuffix = .a
  libraryPrefix = lib
  
  # Directory containing Axis C libraries
  # For Windows this should be ${dir.package.bin}
  # For Unix this should be ${dir.package.lib}
  dir.libraries = ${dir.package.lib}
  
  # AXISCPP_DEPLOY directory
  axiscpp_deploy = ${dir.test.generated}
  
  # Details of server to be used for testing clients
  testHost = localhost
  testPort = 9080
  
  
  1.1                  ws-axis/c/build.Linux.properties
  
  Index: build.Linux.properties
  ===================================================================
  #####################
  # Parser Properties #
  #####################
  
  # Typical values are:
  #	For Xerces, on Windows:
  #		xmlParser = xerces
  #		xmlParserLibrary = xerces-c_2
  #	For Xerces, on Unix:
  #		xmlParser = xerces
  #		xmlParserLibrary = xerces-c
  #	For Expat, on Unix:
  #		xmlParser = expat
  #		xmlParserLibrary = expat
  
  # Parser to be used
  xmlParser = xerces
  
  # Name of parser library to link against
  xmlParserLibrary = xml4c
  
  # Location of parser
  dir.xmlParser = ${basedir}/../../PreReqs/xml4c/Linux
  
  
  #######################################
  # Properties for compiling C/C++ code #
  #######################################
  
  # Directory in which to place compiled libraries
  dir.bin = ${basedir}/../../../obj/bin
  
  # Directory in which to place object files
  dir.objects = ${basedir}/../../../obj/objects
  
  # Names for compiled libraries - excluding any prefix or suffix
  # eg: For Windows :   libaxis_client will produce libaxis_client.dll
  #     For Unix    :   axis_client will produce libaxis_client.so
  clientLibraryName = axis_client
  transportLibraryName = axis_transport
  xmlParserLibraryName = axis_xmlparser
  
  ####################################
  # Properties for compiling WSDL2Ws #
  ####################################
  
  # Location of Axis JARs
  dir.axisJARs = ${basedir}/../../PreReqs
  
  # Directory in which to place compiled Java classes
  dir.classes = ${basedir}/../../../obj/classes
  
  ############################
  # Properties for packaging #
  ############################
  # Base directory for packaging - not used directly within build.xml, just used to simplify this property file
  dir.package = ${basedir}/../../../obj/package
  
  # Directory in which to place DLLs - Only used for Windows platform
  dir.package.bin = ${dir.package}/bin
  
  # Directory in which to place library files
  dir.package.lib = ${dir.package}/lib
  
  # Directory in which to place header files
  dir.package.include = ${dir.package}/include
  
  # Directory in which to place WSDL2Ws JAR files
  dir.package.WSDL2Ws = ${dir.package}/WSDL2Ws
  
  # Directory in which to place Documentation
  dir.package.docs = ${dir.package}/docs
  
  ############################################
  # Properties for building and running test #
  ############################################
  
  # Directory in which to place all generated test artifacts
  # This is also the directory in which code is built and run
  dir.test.generated = ${basedir}/../../../obj/test/generated
  
  # Log files for test results
  results.log = ${dir.test.generated}/results.log
  
  # Prefix and suffix used for executables and libraries
  # Typical values are:
  #   For windows:
  #		executableSuffix = .exe
  #		librarySuffix = .dll
  #		libraryPrefix = 
  #	For unix:
  #		executableSuffix = 
  #		librarySuffix = .so
  #		libraryPrefix = lib
  #	For AIX (as Unix, except):
  #		librarySuffix = .a
  executableSuffix = 
  librarySuffix = .so
  libraryPrefix = lib
  
  # Directory containing Axis C libraries
  # For Windows this should be ${dir.package.bin}
  # For Unix this should be ${dir.package.lib}
  dir.libraries = ${dir.package.lib}
  
  # AXISCPP_DEPLOY directory
  axiscpp_deploy = ${dir.test.generated}
  
  # Details of server to be used for testing clients
  testHost = localhost
  testPort = 9080
  
  
  1.1                  ws-axis/c/build.Win32.properties
  
  Index: build.Win32.properties
  ===================================================================
  #####################
  # Parser Properties #
  #####################
  
  # Typical values are:
  #	For Xerces, on Windows:
  #		xmlParser = xerces
  #		xmlParserLibrary = xerces-c_2
  #	For Xerces, on Unix:
  #		xmlParser = xerces
  #		xmlParserLibrary = xerces-c
  #	For Expat, on Unix:
  #		xmlParser = expat
  #		xmlParserLibrary = expat
  
  # Parser to be used
  xmlParser = xerces
  
  # Name of parser library to link against
  xmlParserLibrary = xml4c_5
  
  # Location of parser
  dir.xmlParser = ${basedir}/../../PreReqs/xml4c/Win32
  
  
  #######################################
  # Properties for compiling C/C++ code #
  #######################################
  
  # Directory in which to place compiled libraries
  dir.bin = ${basedir}/../../../obj/bin
  
  # Directory in which to place object files
  dir.objects = ${basedir}/../../../obj/objects
  
  # Names for compiled libraries - excluding any prefix or suffix
  # eg: For Windows :   libaxis_client will produce libaxis_client.dll
  #     For Unix    :   axis_client will produce libaxis_client.so
  clientLibraryName = libaxis_client
  transportLibraryName = libaxis_transport
  xmlParserLibraryName = libaxis_xmlParser
  
  ####################################
  # Properties for compiling WSDL2Ws #
  ####################################
  
  # Location of Axis JARs
  dir.axisJARs = ${basedir}/../../PreReqs
  
  # Directory in which to place compiled Java classes
  dir.classes = ${basedir}/../../../obj/classes
  
  ############################
  # Properties for packaging #
  ############################
  # Base directory for packaging - not used directly within build.xml, just used to simplify this property file
  dir.package = ${basedir}/../../../obj/package
  
  # Directory in which to place DLLs - Only used for Windows platform
  dir.package.bin = ${dir.package}/bin
  
  # Directory in which to place library files
  dir.package.lib = ${dir.package}/lib
  
  # Directory in which to place header files
  dir.package.include = ${dir.package}/include
  
  # Directory in which to place WSDL2Ws JAR files
  dir.package.WSDL2Ws = ${dir.package}/WSDL2Ws
  
  # Directory in which to place Documentation
  dir.package.docs = ${dir.package}/docs
  
  ############################################
  # Properties for building and running test #
  ############################################
  
  # Directory in which to place all generated test artifacts
  # This is also the directory in which code is built and run
  dir.test.generated = ${basedir}/../../../obj/test/generated
  
  # Log files for test results
  results.log = ${dir.test.generated}/results.log
  
  # Prefix and suffix used for executables and libraries
  # Typical values are:
  #   For windows:
  #		executableSuffix = .exe
  #		librarySuffix = .dll
  #		libraryPrefix = 
  #	For unix:
  #		executableSuffix = 
  #		librarySuffix = .so
  #		libraryPrefix = lib
  #	For AIX (as Unix, except):
  #		librarySuffix = .a
  executableSuffix = .exe
  librarySuffix = .dll
  libraryPrefix = 
  
  # Directory containing Axis C libraries
  # For Windows this should be ${dir.package.bin}
  # For Unix this should be ${dir.package.lib}
  dir.libraries = ${dir.package.bin}
  
  # AXISCPP_DEPLOY directory
  axiscpp_deploy = ${dir.test.generated}
  
  # Details of server to be used for testing clients
  testHost = localhost
  testPort = 9080
  
  
  1.1                  ws-axis/c/build.xml
  
  Index: build.xml
  ===================================================================
  <project name="AxisC" default="production" basedir=".">
  	<description>
  This ANT script compiles and packages the Apache AxisC runtime binaries and
  WSDL2Ws tooling.
  
  This script is intended for use with Java 1.4+ and Apache ANT 1.6+.
  Ant is available from: http://ant.apache.org/
  
  To compile C/C++ code you will require the cpptasks extension to ANT, within:
  	[ant install dir]/lib
  This is available from: http://ant-contrib.sourceforge.net/
  {Note: you will require the cpptasks download, not ant-contrib}
  
  It is intended that the default target be used, which compiles and links all code,
  generates documentation and packages ready for distribution.
  
  Associated with this build script are property files for each platform, the script
  will automatically determine the correct one to be used;
  	- build.Win32.properties
  	- build.Linux.properties
  	- build.AIX.properties
  Please use these to configure directories to suit the needs of your system.
  
  Notes:
  * The documentation target requires doxygen be installed and available on the system path
    This is available from: http://www.doxygen.org
  * The following compilers will be required;
  	- Windows = Microsoft Visual C++ 6.0
  	- Linux   = gcc
  	- AIX     = Visual Age
  	</description>
  
  	<!--
  	  Load definition of C/C++ Tasks and Types
  	  To allow the compilation and linking of C/C++ code
  	  -->
  	<taskdef resource="cpptasks.tasks"/>
  	<typedef resource="cpptasks.types"/>
  
  	<!--
  	  These properties will be the same for all environments, so have not been
  	  included within the property files
  	  -->
  	<property name="dir.src" value="${basedir}/src"/>
  	<property name="dir.include" value="${basedir}/include"/>
  
  	<!--
  	  Compiler Definitions
  	  -->
  
  		<!--
  		  Definition of Visual C++ compiler
  		  -->
  		<compiler id="VisualC++" name="msvc" if="windows">
  			<compilerarg value="/nologo"/>
  			<compilerarg value="/MD"/>
  			<!-- Display all warnings -->
  			<compilerarg value="/W3"/>
  			<compilerarg value="/GX"/>
  			<compilerarg value="/Od"/>
  			<includepath path="${dir.include}"/>
  			<defineset>
  				<define name="WIN32"/>
  				<define name="NDEBUG"/>
  				<define name="_WINDOWS"/>
  				<define name="_MBCS"/>
  				<define name="_USRDLL"/>
  				<define name="ENABLE_AXIS_EXCEPTION"/>
  			</defineset>
  			<compilerarg value="/FD"/>
  			<compilerarg value="/c"/>
  		</compiler>
  		
  		<!--
  		  Definition of gcc compile for Linux
  	      -->
  		<compiler id="Linuxgcc" name="g++" if="linux">
  			<compilerarg value="-Wall"/>
  			<compilerarg value="-Wshadow"/>
  			<compilerarg value="-g"/>
  			<compilerarg value="-O2"/>
  			<defineset>
  				<define name="ENABLE_AXIS_EXCEPTION"/>
  				<define name="HAVE_CONFIG_H"/>
  				<define name="PIC"/>
  			</defineset>
  			<includepath path="${dir.include}"/>
  		</compiler>
  		
  		<!--
  		  Definition of xlc compile for AIX
  	      -->
  		<compiler id="AIXxlc" name="xlC" if="aix">
  			<compilerarg value="-g"/>
  			<compilerarg value="-V"/>
  			<compilerarg value="-qstaticinline"/>
  			<defineset>
  				<define name="ENABLE_AXIS_EXCEPTION"/>
  				<define name="HAVE_CONFIG_H"/>
  				<define name="AIX"/>
  			</defineset>
  			<includepath path="${dir.include}"/>
  		</compiler>
  
  	<!--
  	  Linker Definitions
  	  -->
  
  		<!--
  		  Definition of Visual C++ linker
  		  -->
  		<linker id="VisualC++Linker" name="msvc" if="windows">
  			<linkerarg value="/machine:I386"/>
  			<linkerarg value="/nologo"/>
  			<linkerarg value="/pdb:none"/>
  		</linker>
  	
  		<!--
  	      Definition of Linux linker
  	      -->
  		<linker id="LinuxLinker" name="g++" libtool="true" if="linux">
  			<linkerarg value="-g"/>
  			<libset libs="stdc++"/>
  		</linker>
  		
  		<!--
  	      Definition of AIX linker
  	      -->
  		<linker id="AIXLinker" name="xlC" libtool="false" if="aix">
  			<!-- debug is on for all -->
  			<linkerarg value="-g"/>
  			<linkerarg value="-qmkshrobj=104"/>
  	 		<linkerarg value="-brtl"/>
  			<linkerarg value="-C"/>
  			<linkerarg value="-shared"/>
  			<linkerarg value="-G"/>
  			<linkerarg value="-brtl"/>
  			<linkerarg value="-bdynamic"/>
  			<linkerarg value="-bnoentry"/>
  			<linkerarg value="-p10"/>
  			<linkerarg value="-L/usr/lib/threads"/>
  			<linkerarg value="-lpthreads"/>
  			<linkerarg value="-lm"/>
  			<linkerarg value="-lc_r"/>
  			<linkerarg value="-lc"/>
  		</linker>	
  
  	<!--
  	  Determine platform
  	  -->
  	<target name="pre-init">
  		<condition property="windows">
  			<os family="windows"/>
  		</condition>
  		<condition property="aix">
              <os name="AIX"/>
          </condition>
          <condition property="linux">
              <os name="Linux"/>
          </condition>
  	</target>
  	
  	<!--
  	  Initialize properties
        -->
  	<target name="initialize" depends="pre-init">
  		<condition property="platform" value="Win32">
  			<isset property="windows"/>
  		</condition>
  		<condition property="platform" value="Linux">
  			<isset property="linux"/>
  		</condition>
  		<condition property="platform" value="AIX">
  			<isset property="aix"/>
  		</condition>
  		
  		<!-- Load properties from file -->
  		<property file="${basedir}/build.${platform}.properties"/>
  	</target>
  
  	<!--
  	  Compile the Axis Client Library
  	  -->
  	<target name="compileAxisClient" depends="initialize">
  		<mkdir dir="${dir.objects}"/>
  		<mkdir dir="${dir.bin}"/>
  		<cc outfile="${dir.bin}/${clientLibraryName}" objdir="${dir.objects}"
  		 exceptions="true" failonerror="false" outtype="shared" multithreaded="true">
  		  	<!-- Compilers -->
  			<compiler refid="Linuxgcc"/>
  			<compiler refid="AIXxlc"/>
  			<compiler extends="VisualC++">
  				<defineset>
  					<define name="AXISCLIENTDLL_EXPORTS"/>
  				</defineset>
  			</compiler>
  			<!-- Additional compiler flag for Client library on all platforms -->
  			<defineset>
  				<define name="AXIS_CLIENT_LIB"/>
  			</defineset>
  			<!-- Linkers -->
  			<linker refid="LinuxLinker"/>
  			<linker refid="AIXLinker"/>
  			<linker refid="VisualC++Linker"/>
  			<!-- Files to be compiled -->
  			<fileset dir="${dir.src}">
  				<include name="common/*.cpp"/>
  				<include name="engine/*.cpp"/>
  				<include name="engine/client/*.cpp"/>
  				<include name="soap/*.cpp"/>
  				<include name="soap/*.c"/>
  				<include name="wsdd/*.cpp"/>
  				<include name="xml/*.cpp"/>
  				<include name="transport/axis/AxisTransportException.cpp"/>
  				<!-- The following files need to be excluded -->
  				<exclude name="common/Packet.cpp"/>
  				<exclude name="common/AxisSocketUtils.cpp"/>
  			</fileset>
  		</cc>
  	</target>
  
  	<!--
  	  Compile the Axis Transport Library
  	  -->
  	<target name="compileAxisTransport" depends="initialize">
  		<mkdir dir="${dir.objects}"/>
  		<mkdir dir="${dir.bin}"/>
  		<cc outfile="${dir.bin}/${transportLibraryName}" objdir="${dir.objects}"
  		 exceptions="true" failonerror="false" outtype="shared" multithreaded="true">
  			<!-- Compilers -->
  			<compiler refid="Linuxgcc"/>
  			<compiler refid="AIXxlc"/>
  			<compiler extends="VisualC++">
  				<defineset>
  					<define name="AXISTRANSPORTDLL_EXPORTS"/>
  				</defineset>
  			</compiler>
  			<!-- Linkers -->
  			<linker refid="LinuxLinker"/>
  			<linker refid="AIXLinker"/>
  			<linker extends="VisualC++Linker">
  				<syslibset libs="wsock32"/>
  			</linker>
  			<!-- Files to compile -->
  			<fileset dir="${dir.src}">
  				<include name="transport/axis/*.cpp"/>
  				<!-- The following files need to be excluded -->
  				<exclude name="transport/axis/SecureChannel.cpp"/>
  			</fileset>
  		</cc>
  	</target>
  
  	<!--
  	  Compile the Axis XML Parser Library
  	  -->
  	<target name="compileAxisXMLParser" depends="initialize">
  		<mkdir dir="${dir.objects}/${xmlParserLibraryName}"/>
  		<mkdir dir="${dir.bin}"/>
  		<cc outfile="${dir.bin}/${xmlParserLibraryName}" objdir="${dir.objects}"
  		 exceptions="true" failonerror="false" outtype="shared" multithreaded="true">
  		 	<!-- Compilers -->
  			<compiler refid="Linuxgcc"/>
  			<compiler refid="AIXxlc"/>
  			<compiler extends="VisualC++">
  				<defineset>
  					<define name="AXISXMLPARSERXERCES_EXPORTS"/>
  				</defineset>
  			</compiler>
  			<!-- Additional include directory for XML Parser -->
  			<includepath path="${dir.xmlParser}/include"/>
  			<includepath path="${dir.xmlParser}/lib"/>
  			<!-- Linkers -->
  			<linker refid="VisualC++Linker"/>
  			<linker refid="LinuxLinker"/>
  			<linker refid="AIXLinker"/>
  			<!-- Additional library of XMLParser -->
  			<libset dir="${dir.xmlParser}/lib" libs="${xmlParserLibrary}"/>
  			<!-- Files to be compiled -->
  			<fileset dir="${dir.src}">
  				<include name="xml/${xmlParser}/*.cpp"/>
  				<include name="xml/AxisParseException.cpp"/>
  			</fileset>
  		</cc>
  	</target>
  
  	<!--
  	  Compile the WSDL2Ws code
  	  -->
  	<target name="compileWSDL2Ws">
  		<mkdir dir="${dir.classes}"/>
  		<!-- Setup classpath for compiling WSDL2Ws -->
  		<path id ="cp">
  			<fileset dir="${dir.axisJARs}" includes="*.jar"/>
  		</path>
  		<!-- Compile WSDL2Ws -->
  		<javac srcdir="${dir.src}/wsdl" destdir="${dir.classes}" listfiles="true">
        		<classpath refid="cp"/>
      	</javac>
  	</target>
  	
  	<!--
  	  Compile all C/C++ code and WSDL2Ws java code
  	  -->
  	<target name="compile" depends="compileAxisClient, compileAxisTransport, compileAxisXMLParser, compileWSDL2Ws"
  	  description="Compile all C/C++ code and WSDL2Ws java code"/>
  
  	<!--
  	  Generate documention
  	  Note: Requires doxygen be installed and available on the system path
  	  -->
  	<target name="documentation" unless="aix" description="Generate documentation" depends="initialize">
  		<exec executable="doxygen" dir="${basedir}/docs/apidocs">
  			<arg value="${basedir}/docs/apidocs/doxygenconf"/>
  		</exec>
  	</target>
  
  	<!--
  	  Copy across DLLs and library files for windows 
  	  -->
  	<target name="packageBinsWindows" if="windows">
  		<!-- Copy across DLLs -->
  		<mkdir dir="${dir.package.bin}"/>
  		<copy todir="${dir.package.bin}">
  			<fileset dir="${dir.bin}" includes="*.dll" excludes="*_D.dll"/>
  		</copy>
  		<!-- Copy across library files -->
  		<mkdir dir="${dir.package.lib}"/>
  		<copy todir="${dir.package.lib}"
  		 file="${dir.bin}/${clientLibraryName}.lib"/>
  	</target>
  
  	<!--
  	  Copy across the binaries for unix
  	  Create symbolic links to libraries
  	  -->
  	<target name="packageBinsUnix" unless="windows">
  		<!-- Copy across libraries -->
  		<mkdir dir="${dir.package.lib}"/>
  		<copy todir="${dir.package.lib}">
  			<fileset dir="${dir.bin}" includes="*.so"/>
  			<mapper type="glob" from="*.so" to="*.so.0.0.0"/>
  		</copy>
  		<!-- Create symbolic links to Client library -->
  		<symlink link="${dir.package.lib}/lib${clientLibraryName}.so.0"
  		 resource="lib${clientLibraryName}.so.0.0.0" overwrite="true"/>
  		<!-- Create symbolic links to Transport library -->
  		<symlink link="${dir.package.lib}/lib${transportLibraryName}.so.0"
  		 resource="lib${transportLibraryName}.so.0.0.0" overwrite="true"/>
  		<!-- Create symbolic links to XML Parser library -->
  		<symlink link="${dir.package.lib}/lib${xmlParserLibraryName}.so.0"
  		 resource="lib${xmlParserLibraryName}.so.0.0.0" overwrite="true"/>
  	</target>
  
  	<!--
  	  Create additional symbolic links to libraries as required for AIX
  	  -->	
  	<target name="packageBinsAIX" if="aix" depends="packageBinsUnix">
  		<!-- Create symbolic link to Client library -->
  		<symlink link="${dir.package.lib}/lib${clientLibraryName}.a"
  		 resource="lib${clientLibraryName}.so.0.0.0" overwrite="true"/>
  		<!-- Create symbolic link to Transport library -->
  		<symlink link="${dir.package.lib}/lib${transportLibraryName}.a"
  		 resource="lib${transportLibraryName}.so.0.0.0" overwrite="true"/>
  		<!-- Create symbolic link to XML Parser library -->
  		<symlink link="${dir.package.lib}/lib${xmlParserLibraryName}.a"
  		 resource="lib${xmlParserLibraryName}.so.0.0.0" overwrite="true"/>
  	</target>
  
  	<!--
  	  Package compiled binaries ready for distribution
  	  -->
  	<target name="packageBins" depends="packageBinsWindows, packageBinsUnix, packageBinsAIX"/>
  
  	<!--
  	  Copy across the Axis include files
  	  -->
  	<target name="packageIncludeFiles">
  		<mkdir dir="${dir.package.include}"/>
  		<copy todir="${dir.package.include}">
  			<fileset dir="${dir.include}" includes="axis/**"/>
  		</copy>
  	</target>
  
  	<!--
  	  Package WSDL2Ws code into WSDL2Ws.jar
  	  -->
  	<target name="packageWSDL2Ws">
  		<mkdir dir="${dir.package.WSDL2Ws}"/>
  		<jar jarfile="${dir.package.WSDL2Ws}/wsdl2ws.jar" basedir="${dir.classes}">
  			<include name="org/**"/>
  			<manifest>
  				<attribute name="Main-Class"
  				 value="org.apache.axis.wsdl.wsdl2ws.WSDL2Ws"/>
  			</manifest>
  		</jar>
  	</target>
  	
  	<!--
  	  Package Documentation
  	  -->
  	<target name="packageDocumentation">
  		<mkdir dir="${dir.package.docs}"/>
  		<copy todir="${dir.package.docs}">
  			<fileset dir="${basedir}/docs/apidocs">
  				<include name="html/**"/>
  				<include name="latex/**"/>
  			</fileset>
  		</copy>
  	</target>
  
  	<!--
  	  Package all artifacts ready for distribution
  	  -->	
  	<target name="package" depends="packageBins, packageIncludeFiles, packageWSDL2Ws, packageDocumentation"
  	 description="Package all artifacts ready for distribution"/>
  
  	<!--
  	  Validate all artifacts produced for Windows platform
  	  -->
  	<target name="validateWindows" depends="initialize" if="windows">
  		<condition property="missingArtifact">
  			<not>
  				<and>
  					<!-- DLLs -->
  					<available file="${dir.package.bin}/${clientLibraryName}.dll"/>
  					<available file="${dir.package.bin}/${transportLibraryName}.dll"/>
  					<available file="${dir.package.bin}/${xmlParserLibraryName}.dll"/>
  					<available file="${dir.package.lib}/${clientLibraryName}.lib"/>
  				</and>
  			</not>
  		</condition>
  		<fail message="Not all artifacts have been produced for windows" if="missingArtifact"/>
  	</target>
  
  	<!--
  	  Validate all artifacts produced for Unix platform
  	  -->
  	<target name="validateUnix" depends="initialize" unless="windows">
  		<condition property="missingArtifact">
  			<not>
  				<and>
  					<!-- Shared Libraries -->
  					<available file="${dir.package.lib}/lib${clientLibraryName}.so.0"/>
  					<available file="${dir.package.lib}/lib${clientLibraryName}.so.0.0.0"/>
  					<available file="${dir.package.lib}/lib${transportLibraryName}.so.0"/>
  					<available file="${dir.package.lib}/lib${transportLibraryName}.so.0.0.0"/>
  					<available file="${dir.package.lib}/lib${xmlParserLibraryName}.so.0"/>
  					<available file="${dir.package.lib}/lib${xmlParserLibraryName}.so.0.0.0"/>
  				</and>
  			</not>
  		</condition>
  		<fail message="Not all artifacts have been produced for unix" if="missingArtifact"/>
  	</target>
  	
  	<target name="validateAIX" depends="validateUnix" if="aix">
  		<condition property="missingArtifact">
  			<not>
  				<and>
  					<available file="${dir.package.lib}/lib${clientLibraryName}.a"/>
  					<available file="${dir.package.lib}/lib${transportLibraryName}.a"/>
  					<available file="${dir.package.lib}/lib${xmlParserLibraryName}.a"/>
  				</and>
  			</not>
  		</condition>
  		<fail message="Not all artifacts have been produced for AIX" if="missingArtifact"/>
  	</target>
  
  	<!--
  	  Validate all artifacts produced
  	  -->
  	<target name="validate" depends="validateWindows, validateUnix, validateAIX">
  		<condition property="missingArtifact">
  			<not>
  				<and>
  					<!-- WSDL2Ws Tool -->
  					<available file="${dir.package.WSDL2Ws}/wsdl2ws.jar"/>
  					<!-- Header Files -->
  					<available file="${dir.package.include}/axis" type="dir"/>
  					<!-- Documentation -->
  					<available file="${dir.package.docs}" type="dir"/>
  				</and>
  			</not>
  		</condition>
  		<fail message="Not all artifacts have been produced" if="missingArtifact"/>
  	</target>
  
  	<!--
  	  Build and package all artifacts ready for distribution
  	  -->
  	<target name="production" depends="compile, documentation, package, validate"
  	 description="Build and package all artifacts ready for distribution"/>
  
  	<!--
  	  Remove all generated artifaces
  	  -->
  	<target name="clean" depends="initialize" description="Remove all generated artifacts">
  		<!-- Delete compiled C/C++ code -->
  		<delete dir="${dir.bin}"/>
  		<delete dir="${dir.objects}"/>
  		<!-- Delete compiled WSDL2Ws java classes -->
  		<delete dir="${dir.classes}"/>
  		<!-- Delete generated Documentation -->
  		<delete dir="${basedir}/docs/apidocs/html"/>
  		<delete dir="${basedir}/docs/apidocs/latex"/>
  		<!-- Delete packaged artifacts -->
  		<delete dir="${dir.package.bin}"/>
  		<delete dir="${dir.package.lib}"/>
  		<delete dir="${dir.package.include}"/>
  		<delete dir="${dir.package.WSDL2Ws}"/>
  		<delete dir="${dir.package.docs}"/>
  	</target>
  
  </project>
  
  
  1.1                  ws-axis/c/test.xml
  
  Index: test.xml
  ===================================================================
  <project name="AxisCTests" default="testSuite" basedir=".">
  <description >
  This ANT script generates, compiles and runs the client stub tests for Apache.
  
  This script is intended for use with Java 1.4+ and Apache ANT 1.6+.
  Ant is available from: http://ant.apache.org/
  
  To compile C/C++ code you will require the cpptasks extension to ANT, within:
  	[ant install dir]/lib
  This is available from: http://ant-contrib.sourceforge.net/
  {Note: you will require the cpptasks download, not ant-contrib}
  
  It is intended that the default target be used, which compiles and links all code,
  generates documentation and packages ready for distribution.
  
  Associated with this build script are property files for each platform, the script
  will automatically determine the correct one to be used;
  	- build.Win32.properties
  	- build.Linux.properties
  	- build.AIX.properties
  Please use these to configure directories to suit the needs of your system.
  
  Notes:
  * The documentation target requires doxygen be installed and available on the system path
    This is available from: http://www.doxygen.org
  * The following compilers will be required;
  	- Windows = Microsoft Visual C++ 6.0
  	- Linux   = gcc
  	- AIX     = Visual Age
  </description>
  	<!--
  	  Load definition of C/C++ Tasks and Types
  	  To allow the compilation and linking of C/C++ code
  	  -->
  	<taskdef resource="cpptasks.tasks"/>
  	<typedef resource="cpptasks.types"/>
  
  	<!--
  	  Load definition of Additional Tasks and Types
  	  -->
  	<taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
  
  	<!--
  	  These properties should be the same for all environments, so have not been
  	  included within the property files
  	  -->
  	<property name="dir.src" value="${basedir}/tests/auto_build/testcases"/>
  	<property name="dir.include" value="${basedir}/include"/>
  
  	<!--
  	  Compiler definitions
  	  -->
  	  
  		<!--
  		  Definition of Visual C++ compiler
  		  -->
  		<compiler id="VisualC++" name="msvc" if="windows">
  			<compilerarg value="/nologo"/>
  			<compilerarg value="/MD"/>
  			<compilerarg value="/W3"/>
  			<compilerarg value="/GX"/>
  			<compilerarg value="/Od"/>
  			<includepath path="${dir.include}"/>
  			<defineset>
  				<define name="WIN32"/>
  				<define name="NDEBUG"/>
  				<define name="_WINDOWS"/>
  				<define name="_MBCS"/>
  				<define name="_USRDLL"/>
  				<define name="ENABLE_AXIS_EXCEPTION"/>
  			</defineset>
  			<compilerarg value="/FD"/>
  			<compilerarg value="/c"/>
  		</compiler>
  		
  		<!--
  		  Definition of gcc compile for Linux
  		  -->
  		<compiler id="Linuxgcc" name="g++" if="linux">
  			<compilerarg value="-g"/>
  			<defineset>
  				<define name="ENABLE_AXIS_EXCEPTION"/>
  				<define name="HAVE_CONFIG_H"/>
  				<define name="PIC"/>
  			</defineset>
  			<includepath path="${dir.include}"/>
  		</compiler>
  	
  		<!--
  		  Definition of xlc compile for AIX
  		  -->
  		<compiler id="AIXxlc" name="xlC" if="aix">
  			<compilerarg value="-g"/>
  			<compilerarg value="-V"/>
  			<compilerarg value="-qstaticinline"/>
  
  			<defineset>
  				<define name="ENABLE_AXIS_EXCEPTION"/>
  				<define name="HAVE_CONFIG_H"/>
  				<define name="AIX"/>
  			</defineset>
  			<includepath path="${dir.include}"/>
  		</compiler>
  
  	<!--
  	  Linker Definitions
  	  -->
  	
  		<!--
  		  Definition of Visual C++ linker
  		  -->
  		<linker id="VisualC++Linker" name="msvc" if="windows">
  			<linkerarg value="/machine:I386"/>
  			<linkerarg value="/nologo"/>
  			<linkerarg value="/pdb:none"/>
  		</linker>
  	
  		<!--
  		  Definition of Linux linker
  		  -->
  		<linker id="LinuxLinker" name="g++" libtool="true" if="linux">
  			<linkerarg value="-g"/>
  			<libset libs="stdc++"/>
  			<libset libs="dl"/>
  		</linker>
  	
  		<!--
  		  Definition of AIX linker
  		  -->
  		<linker id="AIXLinker" name="xlC" libtool="false" if="aix">
  			<!-- debug is on for all -->
  			<linkerarg value="-g"/>
  		</linker>	
  
  	<!--
  	  Determine platform
  	  -->
  	<target name="pre-init">
  		<condition property="windows">
  			<os family="windows"/>
  		</condition>
  		<condition property="aix">
              <os name="AIX"/>
          </condition>
          <condition property="linux">
              <os name="Linux"/>
          </condition>
  	</target>
  	
  	<!--
  	  Initialize properties
        -->
  	<target name="initialize" depends="pre-init">
  		<condition property="platform" value="Win32">
  			<isset property="windows"/>
  		</condition>
  		<condition property="platform" value="Linux">
  			<isset property="linux"/>
  		</condition>
  		<condition property="platform" value="AIX">
  			<isset property="aix"/>
  		</condition>
  		
  		<!-- Load properties from file -->
  		<property file="${basedir}/build.${platform}.properties"/>
  		
  		<!-- Get directory to contain log file -->
  		<dirname file="${results.log}" property="dir.results"/>
  		
  		<!-- Set location of axiscpp.conf file -->
  		<condition property="axiscpp.conf" value="${axiscpp_deploy}/axiscpp.conf">
  			<isset property="windows"/>
  		</condition>
  		<condition property="axiscpp.conf" value="${axiscpp_deploy}/etc/axiscpp.conf">
  			<not>
  				<isset property="windows"/>
  			</not>
  		</condition>
  	</target>
  
  	<!--
  	  Clear log file
  	  -->
  	<target name="initializeLogFile">
  		<mkdir dir="${dir.results}"/>
   		<echo file="${results.log}" append="false"
   		 message="Test Results${line.separator}${line.separator}"/>
  	</target>
  
  	<target name="compileMonitorUtility">
  		<exec executable="ant" dir="${basedir}/tests/utils/monitor"
  		 failifexecutionfails="false" vmlauncher="false">
  			<arg line="production"/>
  		</exec>
  	</target>
  
  
  
  	<!--
  	  Strip test name from WSDL filename
  	  -->
  	<target name="stripTestName">
  		<basename file="${wsdlFile}" property="testName" suffix=".wsdl"/>
  	</target>
  
  	<!--
  	  Use WSDL2Ws to generate stubs from WSDL files
  	  -->
  	<target name="generateStubs" unless="runOnly" depends="initialize">
  		<!-- Make directory in which all generated code shall be placed -->
  		<mkdir dir="${dir.test.generated}/${testName}"/>
  		<!-- Setup classpath for WSDL2Ws -->
  		<path id ="cp">
  			<fileset dir="${dir.axisJARs}" includes="*.jar"/>
  		</path>
  		<!-- Run WSDL2Ws -->
  		<java jar="${dir.package.WSDL2Ws}/wsdl2ws.jar" fork="true">
  			<classpath refid="cp"/>
  			<arg value="${dir.src}/wsdls/${testName}.wsdl"/>
  			<arg value="-o${dir.test.generated}/${testName}"/>
  			<arg value="-lc++"/>
  			<arg value="-sclient"/>
  		</java>
  	</target>
  
  	<!--
  	  Copy across test client, ready for compiling
  	  -->
  	<target name="copyClient" unless="runOnly">
  		<copy file="${dir.src}/client/cpp/${testName}Client.cpp" todir="${dir.test.generated}/${testName}"/>
  	</target>
  	
  	<!--
  	  Compile test client
  	  -->
  	<target name="compileClient" unless="runOnly">
  		<cc failonerror="false" incremental="false" outfile="${dir.test.generated}/${testName}/${testName}"
  		 objdir="${dir.test.generated}/${testName}" exceptions="true"
  		 outtype="executable" subsystem="console">
  		 	<!-- Compilers -->
  			<compiler refid="VisualC++"/>
  			<compiler refid="Linuxgcc"/>
  			<compiler refid="AIXxlc"/>
  			<!-- Linkers -->
  			<linker refid="VisualC++Linker"/>
  			<linker refid="LinuxLinker"/>
  			<linker refid="AIXLinker"/>
  			<!-- Additional library of Axis Client -->
  			<libset dir="${dir.package.lib}" libs="${clientLibraryName}"/>
  			<!-- Files to be compiled -->
  			<fileset dir="${dir.test.generated}/${testName}">
  				<include name="*.cpp"/>
  			</fileset>
  		</cc>
  	</target>
  
  	<!--
  	  Compile Handler
  	  -->
  	<target name="compileTestHandler" if="isHandler">
  		<mkdir dir="${dir.test.generated}/${testName}/handlers/${handlerLibraryName}"/>
  		<cc incremental="false"
  		 outfile="${dir.test.generated}/${testName}/handlers/${handlerLibraryName}/${handlerLibraryName}"
  		 objdir="${dir.test.generated}/${testName}/handlers/${handlerLibraryName}" exceptions="true"
  		 failonerror="false" outtype="shared" multithreaded="true">
  			<compiler refid="VisualC++"/>
  			<compiler refid="Linuxgcc"/>
  			<compiler refid="AIXxlc"/>
  			<linker refid="VisualC++Linker"/>
  			<linker refid="LinuxLinker"/>
  			<linker refid="AIXLinker"/>
  			<fileset dir="${handlerDir}">
  				<include name="*.cpp"/>
  			</fileset>
  		</cc>
  	</target>
  
  	<!--
  	  Check if this client has any associated Handlers
  	  -->
  	<target name="checkIfHandlersToCompile" if="successfulClientCompilation" unless="runOnly">
  		<condition property="HandlersPresent">
  			<available file="${dir.src}/handlers/${testName}"/>
  		</condition>
  	</target>
  	
  	<!--
  	  Determine if current directory can contain a valid handler
  	  -->
  	<target name="checkIfHandlerRootDirectory">
  		<basename file="${handlerDir}" property="handlerLibraryName"/>
  		<condition property="isHandler">
  			<not>
  				<equals arg1="${handlerLibraryName}" arg2="${testName}"/>
  			</not>
  		</condition>
  	</target>
  
  
  
  
  
  
  
  	<!--
  	  Builds a test handler
  	  -->
  	<target name="buildTestHandler" depends="initialize, checkIfHandlerRootDirectory, compileTestHandler, validateHandlerCompilation, insertEntriesInWSDDFile"/>
  
  	<!--
  	  Locate all Handlers needing to be build for this client
  	  -->
  	<target name="compileTestHandlers" if="HandlersPresent" unless="runOnly">
  		<path id="serviceHandlers">
  			<dirset dir="${dir.src}/handlers/${testName}"/>
  		</path>
  
  		<foreach target="buildTestHandler" param="handlerDir">
  			<path refid="serviceHandlers"/>
  			<param name="testName" value="${testName}"/>
  			<param name="client.wsdd" value="${client.wsdd}"/>
  		</foreach>
  	</target>
  
  
  
  	<!--
  	  Compile Handlers
  	  -->
  	<target name="compileHandlers" depends="checkIfHandlersToCompile, createStartOfWSDDFile, updateConfigurationWithClientWSDDEntry, compileTestHandlers, createEndOfWSDDFile"/>
  	  
  
  	<!--
  	  Build test
  	  -->
  	<target name="buildTest" unless="runOnly" depends="generateStubs, copyClient, compileClient, validateClientCompilation, compileHandlers"/>
  
  	<!--
  	  Create configuration file to use when running test
  	  -->
  	<target name="createConfigurationFile" if="successfulClientCompilation" depends="initialize">
  		<dirname file="${axiscpp.conf}" property="confFileDirectory"/>
  
  		<mkdir dir="${confFileDirectory}"/>
  		<echo file="${axiscpp.conf}">#Available directives are as follows:
  #
  # ClientLogPath:	  The path to the client log
  # ClientWSDDFilePath: The path to the client wsdd
  # Transport_http:	 The HTTP transport library
  # Transport_smtp:	 The SMTP transport library
  # XMLParser:		  The xml parser library
  #
  ClientLogPath:${dir.test.generated}/${testName}/ClientLog
  Transport_http:${dir.libraries}/${libraryPrefix}${transportLibraryName}${librarySuffix}
  XMLParser:${dir.libraries}/${libraryPrefix}${xmlParserLibraryName}${librarySuffix}
  </echo>
  	</target>
  
  	<!--
  	  If this client has associated handlers, update configuration file with
  	  an client.wsdd entry
  	  -->
  	<target name="updateConfigurationWithClientWSDDEntry" if="HandlersPresent" unless="runOnly" depends="createConfigurationFile">
  		<echo file="${axiscpp_deploy}/axiscpp.conf" append="true"
  		 message="ClientWSDDFilePath:${client.wsdd}"/>
  	</target>
  
  	<!--
  	  Create start of WSDD File
  	  -->
  	<target name="createStartOfWSDDFile" if="HandlersPresent">
  		<property name="client.wsdd" value="${dir.test.generated}/${testName}/client.wsdd"/>
  		<copy file="${dir.src}/handlers/templ_head.wsdd" tofile="${client.wsdd}" overwrite="true"/>
  		<replace file="${client.wsdd}" token="XXXX" value="${testName}"/>
  	</target>
  
  	<!--
  	  Add handler entry into WSDD File
  	  -->
  	<target name="insertEntriesInWSDDFile" if="successfulHandlerCompilation">
  		<concat destfile="${client.wsdd}" append="true">
  			<filelist dir="${dir.src}/handlers" files="templ_lib.wsdd"/>
  		</concat>
  		<replace file="${client.wsdd}" token="DDDD" value="${dir.test.generated}/${testName}/handlers/${handlerLibraryName}/"/>
  		<replace file="${client.wsdd}" token="LLLL" value="${handlerLibraryName}"/>
  		<replace file="${client.wsdd}" token="PPP" value="${libraryPrefix}"/>
  		<replace file="${client.wsdd}" token="SSS" value="${librarySuffix}"/>
  	</target>
  
  	<!--
  	  Create end of WSDD file
  	  -->
  	<target name="createEndOfWSDDFile" if="HandlersPresent">
  		<concat destfile="${client.wsdd}" append="true">
  			<filelist dir="${dir.src}/handlers" files="templ_foot.wsdd"/>
  		</concat>
  	</target>
  
  	<!--
  	  Execute the test
  	  -->
  	<target name="executeTest" if="successfulClientCompilation" unless="buildOnly">
  		<property name="results.file" value="${dir.test.generated}/${testName}/${testName}.out"/>
  		<property name="expected.file" value="${dir.src}/output/${testName}.out"/>
  		<property name="r_expected.file" value="${dir.src}/output/${testName}Request.out"/>
  
  		<parallel>
  			<!-- Run Monitor utility to allow validation of message across the wire -->
  			<java classname="org.apache.test.TCPMonitor">
  				<arg line="-l 13260"/>
  				<arg line="-p ${testPort}"/>
  				<arg line="-h ${testHost}"/>
  				<arg line="-o ${dir.test.generated}/${testName}/tcpm.out"/>
  				<classpath>
  					<pathelement location="${basedir}/tests/utils/monitor/monitor.jar"/>
  				</classpath>
  			</java>
  
  			<sequential>
  				<!-- Wait for jvm to start monitor program -->
  				<sleep seconds="5"/>
  				<!-- Run the client test -->
  				<exec executable="${dir.test.generated}/${testName}/${testName}"
  				 dir="${dir.test.generated}/${testName}" output="${results.file}"
  				 error="${dir.test.generated}/${testName}/${testName}.err"
  				 failifexecutionfails="false" vmlauncher="false">
  					<arg line="-p 13260"/>
  					<arg line="-s localhost"/>
  					<env key="PATH" value="${java.library.path}${path.separator}${dir.libraries}${path.separator}${dir.xmlParser}/bin"/>
  					<env key="LD_LIBRARY_PATH" value="${dir.libraries}${path.separator}${dir.xmlParser}/lib"/>
  					<env key="AXISCPP_DEPLOY" value="${axiscpp_deploy}"/>
  				</exec>
  			</sequential>
  		</parallel>
  	</target>
  	
  	<!--
  	  Validate Client was successfully compiled
  	  -->
  	<target name="validateClientCompilationIfBuilding" unless="runOnly">
  		<condition property="clientCompilationStatus" value="FAILED">
  			<not>
  				<available file="${dir.test.generated}/${testName}/${testName}${executableSuffix}"/>
  			</not>
  		</condition>
  		<condition property="clientCompilationStatus" value="PASSED">
  			<available file="${dir.test.generated}/${testName}/${testName}${executableSuffix}"/>
  		</condition>
  		
  		<!-- Set a flag to show compilation was successful -->
  		<condition property="successfulClientCompilation">
  			<equals arg1="${clientCompilationStatus}" arg2="PASSED"/>
  		</condition>
  		
  		<!-- Display Client compilation status -->		
   		<echo file="${results.log}" append="true"
   		 message="${testName} - Client Compilation - ${clientCompilationStatus}${line.separator}"/>
  		<echo message="${testName} - Client Compilation - ${clientCompilationStatus}"/>
  	</target>
  	
  	<!--
  	  Set flag for a successful client compilation, if tests are being run
  	  without building.
  	  -->
  	<target name="validateClientCompilationIfNotBuilding" if="runOnly">
  		<!-- Only running the tests (no build) so assume a previous succesful build -->
  		<property name="successfulClientCompilation" value="true"/>
  	</target>
  	
  	<target name="validateClientCompilation" depends="validateClientCompilationIfBuilding, validateClientCompilationIfNotBuilding"/>
  
  	
  	<!--
  	  Validate test handler was successfully built
  	  -->
  	<target name="validateHandlerCompilation" if="isHandler">
  		<condition property="handlerCompilationStatus" value="FAILED">
  			<not>
  				<available file="${dir.test.generated}/${testName}/handlers/${handlerLibraryName}/${handlerLibraryName}${librarySuffix}"/>
  			</not>
  		</condition>
  		<condition property="handlerCompilationStatus" value="PASSED">
  			<available file="${dir.test.generated}/${testName}/handlers/${handlerLibraryName}/${handlerLibraryName}${librarySuffix}"/>
  		</condition>
  		
  		<!-- Set a flag to show compilation was successful -->
  		<condition property="successfulHandlerCompilation">
  			<equals arg1="${handlerCompilationStatus}" arg2="PASSED"/>
  		</condition>
  		
  		<!-- Display Client compilation status -->		
   		<echo file="${results.log}" append="true"
   		 message="${testName}(${handlerLibraryName}) - Handler Compilation - ${handlerCompilationStatus}${line.separator}"/>
  		<echo message="${testName} (${handlerLibraryName}) - Handler Compilation - ${handlerCompilationStatus}"/>
  	</target>
  	
  	<!--
  	  Validate the test
  	  -->
  	<target name="validateTestClient" if="successfulClientCompilation" unless="buildOnly">
  		<condition property="clientRunStatus" value="PASSED">
  			<filesmatch file1="${results.file}" file2="${expected.file}"/>
  		</condition>
  		<condition property="clientRunStatus" value="FAILED">
  			<not>
  				<filesmatch file1="${results.file}" file2="${expected.file}"/>
  			</not>
  		</condition>
  		
  		<!-- Set a flag to show run was successful -->
  		<condition property="successfulClientRun">
  			<equals arg1="${clientRunStatus}" arg2="PASSED"/>
  		</condition>
  		
  		<!-- Display Client compilation status -->		
   		<echo file="${results.log}" append="true"
   		 message="${testName} - Client Execution - ${clientRunStatus}${line.separator}"/>
  		<echo message="${testName} - Client Execution - ${clientRunStatus}"/>
  	</target>
  
  	<!--
  	  Validate the message on wire is correct
  	  -->
  	<target name="validateMessageOnWire" if="HandlersPresent">
  		<condition property="messageOnWireStatus" value="PASSED">
  				<filesmatch file1="${dir.test.generated}/${testName}/tcpm.out" file2="${r_expected.file}"/>
  		</condition>
  		<condition property="messageOnWireStatus" value="FAILED">
  			<and>
  				<available file="${r_expected.file}"/>
  				<not>
  					<filesmatch file1="${dir.test.generated}/${testName}/tcpm.out" file2="${r_expected.file}"/>
  				</not>
  			</and>
  		</condition>
  
  		<!-- Display Client message status -->		
   		<echo file="${results.log}" append="true"
   		 message="${testName} - Client Execution (Message on Wire) - ${messageOnWireStatus}${line.separator}"/>
  		<echo message="${testName} - Client Execution (Message on Wire) - ${messageOnWireStatus}"/>
  	</target>
  
  	<target name="validateTestRun" depends="validateTestClient, validateMessageOnWire"/>
  
  	<!--
  	  Runs test for a given WSDL file
  	  -->
  	<target name="runTest" depends="initialize, stripTestName, buildTest, executeTest, validateTestRun"/>
  
  	<!--
  	  Locates all test WSDL files, and runs test for each
  	  -->
  	<target name="runAllTests" unless="individualTest">
  		<path id="testWSDLs">
  			<fileset dir="${dir.src}/wsdls" includes="*.wsdl"/>
  		</path>
  		<foreach target="runTest" param="wsdlFile">
  			<path refid="testWSDLs"/>
  		</foreach>
  	</target>
  	
  	<!--
  	  Display all results
  	  -->
  	<target name="displayAllResults">
  		<loadfile property="results" srcFile="${results.log}"/>
  		<echo message="${results}"/>
  	</target>
  	
  	<target name="testSuite" depends="initialize, compileMonitorUtility, initializeLogFile, runAllTests, displayAllResults"
  	 description="Build and Run all tests"/>
  	
  	<!--
  	  Remove all generated test artifacts
  	  -->
  	<target name="clean" depends="initialize" description="Remove all generated test artifacts">
  		<delete dir="${dir.test.generated}"/>
  		<delete dir="${dir.results}"></delete>
  	</target>
  </project>