blob: 9fe455250f50c26a09ddafd3dac60d15c541d1d0 [file] [log] [blame]
<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>