<project name="AxisCPPSamples" default="buildSamples" basedir=".">
<description >
This ANT script compiles samples for Axis C++

This script is intended for use with Java 1.4+ and Apache ANT 1.6+.
Ant is available from: http://ant.apache.org/

To allow the automated finding of all available samples, use has been made of the
ant-contrib project offering.  Also, to compile C/C++ code you will require the
cpptasks extension to ANT. You will need to place the JAR files within:
	[ant install dir]/lib
These are available from: http://ant-contrib.sourceforge.net/
{Note: The cpptasks are a seperate download from ant-contrib}

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 following compilers will be required;
	- Windows = Microsoft Visual C++ 6.0
	- Linux   = gcc
	- AIX     = Visual Age
</description>

  <import file="${basedir}/build/buildInitialize.xml"/>
    
  <!--
	  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"/>

  <property environment="env"/>

  <!--
	  Load definition of Additional Tasks and Types
  -->
  <taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
  <taskdef resource="net/sf/antcontrib/antlib.xml"/>

  <!--
	  These properties should be the same for all environments, so have not been
	  included within the property files
  -->
  <property name="dir.samples" value="${basedir}/samples"/>
  <property name="dir.include" value="${basedir}/include"/>
  <property name="dir.wsdls" value="${basedir}/deploy/wsdls"/>
	
  <!--
	  property name="sampleName" value="base"/-->
  <!--
	  Check if an individual samples name has been specified
  -->
  <target name="checkIfIndividualTest">
    <condition property="individualTest">
      <isset property="samples.name"/>
    </condition>
  </target>
	
  <!--
	  Initialize properties
  -->
  <target name="initialize" depends="pre-init, checkIfIndividualTest">
    <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>

    <condition property="dir.xmlParser" value="${env.XERCES_HOME}/bin">
      <and>
        <not>
          <isset property="dir.xmlParser"/>
        </not>
        <isset property="windows"/>
      </and>
    </condition>
    
    <condition property="dir.xmlParser" value="${env.XERCES_HOME}/lib">
      <and>
        <not>
          <isset property="dir.xmlParser"/>
        </not>
        <not>
          <isset property="windows"/>
        </not>
      </and>
    </condition>
		
    <!--
        Load properties from file
    -->
    <property file="${basedir}/build/version.properties"/>
    <property file="${basedir}/build/build.common.properties"/>
    <property file="${basedir}/build/build.${platform}.properties"/>
		
	<!--
	    Get directory to contain log file
    -->
    <dirname file="${results.log}" property="dir.results"/>
		
    <mkdir dir="${dir.obj}/objects"/>
    <mkdir dir="${dir.obj}/samples"/>
  </target>

  <!--
      Use WSDL2Ws to generate stubs from WSDL files
  -->
  <target name="generateStubs" >
    <!--
        Setup classpath for WSDL2Ws
    -->
    <path id ="classPath">
      <fileset dir="${dir.release}-bin/lib/axis" includes="wsdl2ws.jar"/>
      <fileset dir="${dir.axisJARs}" includes="*.jar"/>
    </path>

    <!--
        Run WSDL2Ws
    -->
    <!--java jar="${dir.wsdl2ws}/wsdl2ws.jar" fork="true"-->
    <java classname="org.apache.axis.wsdl.wsdl2ws.WSDL2Ws" fork="true">
      <classpath refid="classPath"/>
      <arg value="${sample.wsdl}"/>
      <arg value="-o${sample.directory}"/>
      <arg value="-l${generated.lang}"/>
      <arg value="-s${client.or.server}"/>
    </java>
  </target>

  <target name="compileSamples">
    <for list="array,base,bench,calculator,doclitfault,element,enumeration,groupB,ref,rpcfault,sslclient,transportProperties" param="samplename">
      <sequential>
        <property name="clientSampleDir" value="client"/>		

        <!--
            Generate Client
        -->
        <echo>Generating client code for  ${dir.wsdls}/@{samplename}.wsdl</echo>
        <antcall target="generateStubs" inheritall="true">
          <param name="sample.wsdl" value="${dir.wsdls}/@{samplename}.wsdl"/>
          <param name="sample.directory" value="${dir.samples}/${clientSampleDir}/@{samplename}"/>
          <param name="generated.lang" value="c++"/>
          <param name="client.or.server" value="client"/>
        </antcall>

        <!--
            Build client
        -->
        <echo>Building client ${clientSampleDir}/@{samplename}</echo>
        <cc failonerror="false" incremental="false"
            outfile="${dir.obj}/samples/@{samplename}"
            objdir="${dir.obj}/objects" 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.obj}/bin" libs="${clientLibraryName}"/>

        <!--
            Files to be compiled
        -->
        <includepath path="${dir.include}"/>
        <fileset dir="${dir.samples}/${clientSampleDir}/@{samplename}">
          <include name="*.cpp"/>
        </fileset>
      </cc>
      <property name="serverSampleDir" value="server"/>		

      <!--
          Generate Client
      -->
      <echo>Generating server code for  ${dir.wsdls}/@{samplename}.wsdl</echo>
      <antcall target="generateStubs" inheritall="true">
        <param name="sample.wsdl" value="${dir.wsdls}/@{samplename}.wsdl"/>
        <param name="sample.directory" value="${dir.samples}/${serverSampleDir}/@{samplename}"/>
        <param name="generated.lang" value="c++"/>
        <param name="client.or.server" value="server"/>
      </antcall>

      <!--
          Build server
      -->		
      <echo>Building server ${serverSampleDir}/@{samplename}</echo>
      <mkdir dir="${dir.obj}/samples/server/@{samplename}/"/>
      <cc failonerror="false" incremental="false"
          outfile="${dir.obj}/samples/server/@{samplename}/@{samplename}"
          objdir="${dir.obj}/objects" exceptions="true"
          outtype="shared" 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.obj}/bin" libs="${serverEngineLibraryName}"/>

         <!--
             Files to be compiled
         -->
         <includepath path="${dir.include}"/>
         <fileset dir="${dir.samples}/${serverSampleDir}/@{samplename}">
           <include name="*.cpp"/>
         </fileset>
       </cc>
     </sequential>
   </for>
  </target>
	
  <!--
      Build samples
  -->
  <target name="buildSamples" unless="runOnly" depends="initialize, compileSamples"
          description="Build all samples"/>	 
  <!--
      Remove all generated samples artifacts
  -->
  <target name="clean" depends="initialize"
          description="Remove all generated samples artifacts">
    <delete dir="${dir.samples.generated}"/>
    <delete dir="${dir.results}"/>
  </target>
</project>
