<project name="Apache Axis C Packaging" default="package" basedir=".">
	<description>
This ANT script packages the Apache AxisC runtime binaries, WSDL2Ws tooling and
documentation.  You will need to use build.xml to produce all binaries, etc.

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

You will require the ant-contrib extensions to ANT, within:
	[ant install dir]/lib
These are available from: http://ant-contrib.sourceforge.net/
{Note: You will require both the cpptasks (v1.0beta3) and ant-contrib (v0.6) downloads }
        
It is intended that the default target be used, produces the complete source and
binary deliverables.

Within the build/ directory are a number of supporting scripts and property files.

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
	- build.SunOS.properties
	- build.OS400.properties
    - build.HP-UX.properties   
Please use these to configure directories to suit the needs of your system.
	</description>
	<import file="${basedir}/build/buildInitialize.xml"/>
	<import file="${basedir}/build/buildClientC.xml"/>

	<target name="copySource">
		<mkdir dir="${dir.release}"/>
		<copy todir="${dir.release}">
			<fileset dir="${basedir}" includes="**" excludes="include/apache*/**"/>
		</copy>
	</target>

	<target name="copyLicense">
		<!-- Copy license into release package -->
		<mkdir dir="${dir.release}"/>
		<copy todir="${dir.release}">
			<fileset dir="${basedir}">
				<include name="LICENSE"/>
				<include name="NOTICE"/>
			</fileset>
		</copy>
	</target>
	
	<target name="copyDeploy">
		<!-- Copy deploy directory into release package -->
		<mkdir dir="${dir.release}/deploy"/>
		<copy todir="${dir.release}/deploy">
			<fileset dir="${basedir}/deploy" includes="**"/>
		</copy>
	</target>
	
	<target name="copyDocumentation">
		<!-- Copy documentation into release package -->
		<mkdir dir="${dir.release}/docs"/>
		<copy todir="${dir.release}/docs">
			<fileset dir="${basedir}/docs">
				<include name="**/*.pdf"/>
				<include name="**/*.html"/>
			</fileset>
		</copy>	
	</target>

	<target name="copyInclude">
		<!-- Copy include files into release package -->
		<mkdir dir="${dir.release}/include"/>
		<copy todir="${dir.release}/include">
			<fileset dir="${basedir}/include" includes="axis/**"/>
		</copy>
	</target>

	<target name="copyLibs">
		<!-- Copy across libs into release package -->
		<mkdir dir="${dir.release}/lib"/>
		<copy todir="${dir.release}/lib">
			<fileset dir="${basedir}/lib" includes="**"/>
		</copy>
	</target>
	
	<target name="copyAxisJars">
		<!-- Copy across Axis Java JARs -->
		<mkdir dir="${dir.release}/lib/axisjava"/>
		<copy todir="${dir.release}/lib/axisjava">
			<fileset dir="${dir.axisJARs}" includes="*.jar"/>
		</copy>
	</target>

	<target name="copyWSDL2Ws">
		<!-- Create JAR file for WSDL2Ws -->
		<mkdir dir="${dir.release}/lib/axis"/>
		<copy todir="${dir.release}/lib/axis" file="${dir.classes}/wsdl2ws.jar"/>
	</target>

	<target name="copySamples">
		<!-- Copy across samples into release package -->
		<mkdir dir="${dir.release}/samples"/>
		<copy todir="${dir.release}/samples">
			<fileset dir="${basedir}/samples" includes="**"/>
		</copy>
	</target>

	<target name="copyTests">
		<!-- Copy across tests into release package -->
		<mkdir dir="${dir.release}/tests"/>
		<copy todir="${dir.release}/tests">
			<fileset dir="${basedir}/tests" includes="**"/>
		</copy>
	</target>

	<target name="copyWindowsLibraries" if="windows">
		<!-- Copy across DLLs into release package -->
		<mkdir dir="${dir.release}/bin"/>
		<copy todir="${dir.release}/bin">
			<fileset dir="${dir.bin}">
				<include name="*.dll"/>
				<include name="*.exe"/>
			</fileset>
		</copy>

		<!-- Copy across LIB file into release package -->
		<mkdir dir="${dir.release}/lib/axis"/>
		<copy todir="${dir.release}/lib/axis">
			<fileset dir="${dir.bin}">
				<include name="${clientLibraryName}.lib"/>
				<include name="${cClientLibraryName}.lib"/>
				<include name="${serverEngineLibraryName}.lib"/>
			</fileset>
		</copy>

		<!-- Copy across MS Visual C++ Project files for samples into release package -->
		<mkdir dir="${dir.release}/vc"/>
		<copy todir="${dir.release}/vc">
			<fileset dir="${basedir}/vc" includes="samples/**"/>
		</copy>	
	</target>

	<target name="copyAndLinkLinuxLibraries" if="linux">
		<basename property="libraryName" file="${fullLibraryName}" suffix=".so"/>
		<mkdir dir="${dir.release}/lib/axis"/>
		<copy file="${dir.bin}/${libraryName}.so" tofile="${dir.release}/lib/axis/${libraryName}.so.${version}"/>

		<symlink link="${dir.release}/lib/axis/${libraryName}.so.${majorVersion}"
		 resource="${libraryName}.so.${version}" overwrite="true"/>
		<symlink link="${dir.release}/lib/axis/${libraryName}.so"
		 resource="${libraryName}.so.${majorVersion}" overwrite="true"/>
	</target>

	<target name="copyAndLinkSolarisLibraries" if="solaris">
		<basename property="libraryName" file="${fullLibraryName}" suffix=".so"/>
		<mkdir dir="${dir.release}/lib/axis"/>
		<copy file="${dir.bin}/${libraryName}.so" tofile="${dir.release}/lib/axis/${libraryName}.so.${version}"/>

		<symlink link="${dir.release}/lib/axis/${libraryName}.so.${majorVersion}"
		 resource="${libraryName}.so.${version}" overwrite="true"/>
		<symlink link="${dir.release}/lib/axis/${libraryName}.so"
		 resource="${libraryName}.so.${majorVersion}" overwrite="true"/>
	</target>

	<target name="copyAndLinkAIXLibraries" if="aix">
		<basename property="libraryName" file="${fullLibraryName}" suffix="${librarySuffix}"/>
		<mkdir dir="${dir.release}/lib/axis"/>
		<copy file="${dir.bin}/${libraryName}${librarySuffix}" tofile="${dir.release}/lib/axis/${libraryName}${version}.so"/>

		<symlink link="${dir.release}/lib/axis/${libraryName}${majorVersion}.so"
		 resource="${libraryName}${version}.so" overwrite="true"/>
		<symlink link="${dir.release}/lib/axis/${libraryName}.so"
		 resource="${libraryName}${majorVersion}.so" overwrite="true"/>
		<symlink link="${dir.release}/lib/axis/${libraryName}.a"
		 resource="${libraryName}.so" overwrite="true"/>
	</target>

	<target name="copyAndLinkUnixLibraries" depends="copyAndLinkLinuxLibraries, copyAndLinkSolarisLibraries, copyAndLinkAIXLibraries"/>

	<target name="copyUnixLibraries" unless="windows">
		<path id="libraries">
			<fileset dir="${dir.bin}" includes="${libraryPrefix}*"/>
		</path>

		<foreach target="copyAndLinkUnixLibraries" param="fullLibraryName" inheritall="true">
			<path refid="libraries"/>
		</foreach>
		
		<if>
			<equals arg1="${server.simpleAxisServer}" arg2="true"/>
			<then>
				<mkdir dir="${dir.release}/bin"/>
				<copy todir="${dir.release}/bin">
					<fileset dir="${dir.bin}" includes="${simpleAxisServerExecutableName}"/>
				</copy>
			    <chmod perm="ugo+x" file="${dir.release}/bin/${simpleAxisServerExecutableName}"/>
			</then>
		</if>
		<if>
			<available file="${dir.bin}/${adminClientExecutableName}${executableSuffix}"/>
			<then>
				<mkdir dir="${dir.release}/bin"/>
				<copy todir="${dir.release}/bin">
					<fileset dir="${dir.bin}" includes="${adminClientExecutableName}${executableSuffix}"/>
				</copy>
				<chmod perm="ugo+x" file="${dir.release}/bin/${adminClientExecutableName}${executableSuffix}"/>
			</then>
		</if>
		<if>
			<available file="${dir.bin}/${axisConfigurationExecutableName}${executableSuffix}"/>
			<then>
				<mkdir dir="${dir.release}/bin"/>
				<copy todir="${dir.release}/bin">
					<fileset dir="${dir.bin}" includes="${axisConfigurationExecutableName}${executableSuffix}"/>
				</copy>
				<chmod perm="ugo+x" file="${dir.release}/bin/${axisConfigurationExecutableName}${executableSuffix}"/>
			</then>
		</if>
	</target>

	<target name="copyLibraries" depends="copyWindowsLibraries, copyUnixLibraries"/>

	<target name="packageWindowsDeliverable" if="windows">
		<mkdir dir="${dir.zips}"/>
		<zip destfile="${dir.zips}/${release}.zip" basedir="${dir.release}/.." includes="${release}/**" />
	</target>
	
	<target name="packageUnixDeliverable" unless="windows">
		<mkdir dir="${dir.zips}"/>
        <exec executable="tar" dir="${dir.release}/..">
                <arg line="-cvf ${dir.zips}/${release}.tar ${release}"/>
        </exec>
        <exec executable="gzip" dir="${dir.zips}">
            <arg line="${release}.tar"/>
        </exec>      
	</target>

	<target name="packageDeliverable" depends="packageWindowsDeliverable, packageUnixDeliverable"/>

	<target name="packageBinaryRelease">
		<antcall target="copyLicense" inheritall="true"/>
		<antcall target="copyDeploy" inheritall="true"/>
		<antcall target="copyDocumentation" inheritall="true"/>
		<antcall target="copyInclude" inheritall="true"/>
		<antcall target="copyLibs" inheritall="true"/>
		<antcall target="copyAxisJars" inheritall="true"/>
		<antcall target="copySamples" inheritall="true"/>
		<antcall target="copyTests" inheritall="true"/>
		<antcall target="copyWSDL2Ws" inheritall="true"/>
		<antcall target="copyLibraries" inheritall="true"/>
		<antcall target="packageDeliverable" inheritall="true"/>
	</target>

	<target name="copyTraceInstrumentedSource" if="trace">
		<!-- Use trace instrumented source -->
		<delete dir="${dir.release}/src"/>
		<mkdir dir="${dir.release}/src"/>
		<copy todir="${dir.release}/src">
			<fileset dir="${dir.src.instrumented}" includes="**"/>
		</copy>
	</target>

	<target name="packageSourceRelease">
		<antcall target="copySource" inheritall="true"/>
		<antcall target="copyWSDL2Ws" inheritall="true"/>
		<antcall target="packageDeliverable" inheritall="true"/>
	</target>

    <target name="package" depends="initialize">
	    <if>
	        <available file="${dir.src.instrumented}" type="dir"/>
	        <then>
	            <antcall target="packageBinaryRelease" inheritall="true">
	                <param name="trace" value="true"/>
	                <param name="release" value="${release}-trace-bin"/>
	                <param name="dir.release" value="${dir.release}-trace-bin"/>
	            </antcall>
	        </then>
	        <else>
				<antcall target="packageBinaryRelease" inheritall="true">
					<param name="release" value="${release}-bin"/>
					<param name="dir.release" value="${dir.release}-bin"/>
				</antcall>
	        </else>
	    </if>
		<antcall target="packageSourceRelease" inheritall="true">
			<param name="release" value="${release}-src"/>
			<param name="dir.release" value="${dir.release}-src"/>
		</antcall>
	</target>

	<target name="clean" depends="initialize" description="Remove built packages">
		<delete dir="${dir.release}-bin"/>
		<delete dir="${dir.release}-src"/>
		<delete dir="${dir.release}-bin-trace"/>
		<delete dir="${dir.release}-src-trace"/>
		<delete>
			<fileset dir="${dir.zips}" includes="${release}**"/>
		</delete>
	</target>

<!-- ApacheRelease is used to add md5 files to all zip/tar files created by the packaging scripts.
     +==> (D) initialize
     +==> md5Checksums
           +==> (D) packageWindowsDeliverableName
           +==> (D) packageUnixDeliverableName
           +==> md5Checksum
 -->

  <target name="ApacheRelease" depends="initialize, md5Checksums, ascFiles" description="Once the Apache Client has been packaged, two additional files need to be created for both the source and binary zip/tar files.  These are the 'md5' and 'asc' files.">
  </target>

  <target name="md5Checksums" depends="packageWindowsDeliverableName, packageUnixDeliverableName">
    <antcall target="md5Checksum">
      <param name="zipName" value="${zipNameBin}"/>
    </antcall>
    <antcall target="md5Checksum">
      <param name="zipName" value="${zipNameSrc}"/>
    </antcall>
    <antcall target="md5Checksum">
      <param name="zipName" value="${zipNameTraceBin}"/>
    </antcall>
    <antcall target="md5Checksum">
      <param name="zipName" value="${zipNameTraceSrc}"/>
    </antcall>
  </target>

  <target name="md5Checksum">
    <if>
      <available file="${zipName}"/>
      <then>
        <checksum forceOverwrite="yes" fileext=".md5" file="${zipName}"/>
      </then>
      <else>
        <echo message="Skipping ${zipName}, as it does not exist."/>
      </else>
    </if>
  </target>

  <target name="packageWindowsDeliverableName" if="windows">
    <property name="zipNameBin" value="${dir.zips}/${release}-bin.zip"/>
    <property name="zipNameSrc" value="${dir.zips}/${release}-src.zip"/>
    <property name="zipNameTraceBin" value="${dir.zips}/${release}-trace-bin.zip"/>
    <property name="zipNameTraceSrc" value="${dir.zips}/${release}-trace-src.zip"/>
  </target>
	
  <target name="packageUnixDeliverableName" unless="windows">
    <property name="zipNameBin" value="${dir.zips}/${release}-bin.tar.gz"/>
    <property name="zipNameSrc" value="${dir.zips}/${release}-src.tar.gz"/>
    <property name="zipNameTraceBin" value="${dir.zips}/${release}-trace-bin.tar.gz"/>
    <property name="zipNameTraceSrc" value="${dir.zips}/${release}-trace-src.tar.gz"/>
  </target>

  <target name="ascFiles" depends="initialize, packageWindowsDeliverableName, packageUnixDeliverableName, buildCBindings">
    <if>
      <available file="${basedir}/../../SecurityKeys/Apache_1_6/gpg/KEYS"/>
      <then>
        <copy file="${basedir}/../../SecurityKeys/Apache_1_6/gpg/KEYS" tofile="${basedir}/KEYS"/>
        <copy file="${basedir}/../../SecurityKeys/Apache_1_6/gpg/password_gpg" tofile="${basedir}/password_gpg"/>
        <mkdir dir="${gpgdir}"/>
        <copy todir="${gpgdir}">
          <fileset dir="${basedir}/../../SecurityKeys/Apache_1_6/gpg">
            <exclude name="KEYS"/>
            <exclude name="password_gpg"/>
          </fileset>
        </copy>
        <java classname="org.apache.axis.tools.asc4Ant.asc4Ant" fork="true" failonerror="true">
          <classpath refid="tracecp"/>
          <arg value="${zipNameTraceBin}"/>
          <arg value="${basedir}/password_gpg"/>
        </java>
        <java classname="org.apache.axis.tools.asc4Ant.asc4Ant" fork="true" failonerror="true">
          <classpath refid="tracecp"/>
          <arg value="${zipNameTraceSrc}"/>
          <arg value="${basedir}/password_gpg"/>
        </java>
        <java classname="org.apache.axis.tools.asc4Ant.asc4Ant" fork="true" failonerror="true">
          <classpath refid="tracecp"/>
          <arg value="${zipNameBin}"/>
          <arg value="${basedir}/password_gpg"/>
        </java>
        <java classname="org.apache.axis.tools.asc4Ant.asc4Ant" fork="true" failonerror="true">
          <classpath refid="tracecp"/>
          <arg value="${zipNameSrc}"/>
          <arg value="${basedir}/password_gpg"/>
        </java>
      </then>
    </if>
  </target>

</project>