blob: c416292d21807be769b18d10136d73870e9a8d48 [file] [log] [blame]
<?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="wms" basedir="." default="jar">
<property name="Name" value="wms" />
<property name="name" value="wms" />
<property environment="env"/>
<property name="version" value="1.0.0" />
<property name="final.name" value="${name}-${version}"/>
<property name="revision.dir" value="${basedir}/.revision" />
<property name="revision.properties" value="revision.properties" />
<property file="${basedir}/src/${revision.properties}" />
<property name="javac.target" value="1.6" />
<property name="javac.source" value="1.6" />
<property name="src.dir" value="${basedir}/src" />
<property name="java.src.dir" value="${src.dir}/main/java" />
<property name="lib.dir" value="${basedir}/lib" />
<property name="lib.dir.includes" value="**/*.jar" />
<property name="lib.dir.excludes" value="**/excluded/" />
<!-- prior to ant 1.7.1 fileset always fails if dir doesn't exist
so just point to bin directory and provide settings that exclude
everything - user can change as appropriate -->
<property name="additional.lib.dir" value="bin" />
<property name="additional.lib.dir.includes" value="**/*.jar" />
<property name="additional.lib.dir.excludes" value="**/*.jar" />
<property name="build.dir" value="${basedir}/build" />
<property name="dist.dir" value="${basedir}/distribution" />
<property name="src_generated.dir" value="${src.dir}/java/generated" />
<property name="c.src.dir" value="${src.dir}/main/cpp" />
<property name="csrc_generated.dir" value="${c.src.dir}/src/generated" />
<property name="thirdparty.export.dir" value="${basedir}/thirdparty_export" />
<property name="build.classes" value="${build.dir}/classes"/>
<property name="build.docs" value="${build.dir}/docs" />
<property name="build.javadoc" value="${build.docs}/api" />
<property name="build.javadoc.dev" value="${build.docs}/dev-api"/>
<property name="conf.dir" value="${basedir}/conf"/>
<property name="docs.dir" value="${basedir}/docs"/>
<property name="docs.src" value="${basedir}/src/docs"/>
<property name="javadoc.link.java"
value="http://docs.oracle.com/javase/6/docs/api/" />
<property name="javadoc.packages" value="org.apache.*" />
<property name="thirdparty.dir" value="${basedir}/thirdparty" />
<available file="${c.src.dir}/Makefile" property="Makefile.present"/>
<exec dir="${basedir}" executable="hostname" outputproperty="host.name"/>
<!-- the normal classpath -->
<path id="java.classpath">
<pathelement location="${build.classes}"/>
<!-- allow the user to override (e.g. if there are local versions) -->
<fileset dir="${additional.lib.dir}">
<include name="${additional.lib.dir.includes}" />
<exclude name="${additional.lib.dir.excludes}" />
</fileset>
<fileset dir="${lib.dir}">
<include name="${lib.dir.includes}" />
<exclude name="${lib.dir.excludes}" />
</fileset>
<fileset dir="${ant.home}/lib">
<include name="ant.jar" />
</fileset>
</path>
<!-- ================================================================== -->
<!-- D I S T R I B U T I O N -->
<!-- ================================================================== -->
<target name="package" depends="jar" description="Build distribution">
<mkdir dir="${dist.dir}"/>
<mkdir dir="${dist.dir}/lib"/>
<mkdir dir="${dist.dir}/bin"/>
<mkdir dir="${dist.dir}/docs"/>
<mkdir dir="${dist.dir}/docs/api"/>
<copy todir="${dist.dir}/lib" includeEmptyDirs="false">
<fileset dir="${lib.dir}">
</fileset>
</copy>
<copy todir="${dist.dir}">
<fileset file="${build.dir}/${final.name}.jar"/>
</copy>
<copy todir="${dist.dir}/bin">
<fileset dir="bin"/>
</copy>
<copy todir="${dist.dir}/conf">
<fileset dir="${conf.dir}" excludes="**/*.template"/>
</copy>
<copy todir="${dist.dir}/src" includeEmptyDirs="true">
<fileset dir="src" excludes="**/*.template **/docs/build/**/* **/ivy*.jar"/>
</copy>
<chmod perm="ugo+x" type="file" parallel="false">
<fileset dir="${dist.dir}/bin"/>
</chmod>
</target>
<!-- ================================================================== -->
<!-- Make release tarball -->
<!-- ================================================================== -->
<target name="tar" depends="package" description="Make release tarball">
<macro_tar param.destfile="${build.dir}/${final.name}.tar.gz">
<param.listofitems>
<!-- it's unfortunate that the binaries have to be duplicated
however that's the only way ant currently supports afaik -->
<tarfileset dir="${build.dir}" mode="664">
<exclude name="${final.name}/bin/*" />
<exclude name="${final.name}/contrib/*/bin/*" />
<exclude name="${final.name}/**/compile" />
<exclude name="${final.name}/**/config.guess" />
<exclude name="${final.name}/**/config.sub" />
<exclude name="${final.name}/**/configure" />
<exclude name="${final.name}/**/depcomp" />
<exclude name="${final.name}/**/install-sh" />
<exclude name="${final.name}/**/ltmain.sh" />
<exclude name="${final.name}/**/missing" />
<exclude name="${final.name}/**/*.sh" />
<include name="${final.name}/**" />
</tarfileset>
<tarfileset dir="${build.dir}" mode="755">
<!-- be sure to add to exclude list above if you add here -->
<include name="${final.name}/bin/*" />
<include name="${final.name}/contrib/*/bin/*" />
<!-- autotools related commands -->
<include name="${final.name}/**/compile" />
<include name="${final.name}/**/config.guess" />
<include name="${final.name}/**/config.sub" />
<include name="${final.name}/**/configure" />
<include name="${final.name}/**/depcomp" />
<include name="${final.name}/**/install-sh" />
<include name="${final.name}/**/ltmain.sh" />
<include name="${final.name}/**/missing" />
<!-- any shell scripts -->
<include name="${final.name}/**/*.sh" />
</tarfileset>
</param.listofitems>
</macro_tar>
</target>
<!-- ====================================================== -->
<!-- Generate and compile the Java files -->
<!-- ====================================================== -->
<target name="init">
<mkdir dir="${build.classes}" />
<tstamp>
<format property="build.time" pattern="MM/dd/yyyy HH:mm zz" timezone="GMT"/>
<format property="year" pattern="yyyy" timezone="GMT"/>
</tstamp>
</target>
<target name="avro-gen" >
<java jar="${lib.dir}/avro-tools-1.7.3.jar" fork="true" failonerror="true">
<arg value="idl"/>
<arg value="${src.dir}/workload.avdl"/>
<arg value="${src_generated.dir}/workload.avpr"/>
</java>
<java jar="${lib.dir}/avro-tools-1.7.3.jar" fork="true" failonerror="true">
<arg value="compile"/>
<arg value="protocol"/>
<arg value="${src_generated.dir}/workload.avpr"/>
<arg value="${src_generated.dir}"/>
<classpath>
<pathelement location="${lib.dir}"/>
</classpath>
</java>
</target>
<target name="thrift-gen" >
<mkdir dir="${csrc_generated.dir}"/>
<exec executable="thrift" searchpath="yes" failonerror="yes">
<arg value="-out"/>
<arg value="${csrc_generated.dir}"/>
<arg value="-gen"/>
<arg value="cpp"/>
<arg value="${src.dir}/wms.thrift"/>
</exec>
<exec executable="thrift" searchpath="yes" failonerror="yes">
<arg value="-out"/>
<arg value="${src_generated.dir}"/>
<arg value="-gen"/>
<arg value="java"/>
<arg value="${src.dir}/wms.thrift"/>
</exec>
</target>
<target name="ver-gen" depends="init">
<javac srcdir="${java.src.dir}" destdir="${build.classes}" includeantruntime="false"
target="${javac.target}" source="${javac.source}"
includes="org.trafodion.wms/version/util/**" debug="on" />
</target>
<target name="svn-revision" unless="lastRevision">
<mkdir dir="${revision.dir}" />
<condition property="shell.name" value="cmd" else="sh">
<os family="windows"/>
</condition>
<condition property="revision.cmd.line"
value="/c ${src.dir}\lastRevision.bat" else="${src.dir}/lastRevision.sh">
<os family="windows"/>
</condition>
<exec executable="${shell.name}">
<arg line="${revision.cmd.line} ${revision.dir}${file.separator}${revision.properties}"/>
</exec>
<property file="${revision.dir}/${revision.properties}" />
</target>
<target name="version-info" depends="ver-gen,svn-revision">
<mkdir dir="${src_generated.dir}" />
<java classname="org.trafodion.wms.version.util.VerGen" fork="true"
dir="${src_generated.dir}">
<arg value="${version}" />
<arg value="${lastRevision}" />
<arg value="${build.time}" />
<classpath>
<pathelement path="${build.classes}" />
</classpath>
</java>
</target>
<target name="build-generated" depends="version-info,avro-gen,thrift-gen" >
<javac srcdir="${src_generated.dir}" destdir="${build.classes}" includeantruntime="false"
target="${javac.target}" source="${javac.source}" debug="on" >
<classpath refid="java.classpath"/>
</javac>
</target>
<target name="compile" depends="build-generated">
<javac srcdir="${java.src.dir}" destdir="${build.classes}" includeantruntime="false"
target="${javac.target}" source="${javac.source}" debug="on" >
<classpath refid="java.classpath"/>
<compilerarg value="-Xlint:all"/>
<compilerarg value="-Xlint:-path"/>
</javac>
</target>
<target name="compile-native" depends="" description="Make C binding">
<condition property="shell.name" value="cmd" else="sh">
<os family="windows"/>
</condition>
<exec dir="${c.src.dir}" executable="${shell.name}" searchpath="yes" failonerror="yes">
<arg line="cmake_wmslib.sh"/>
</exec>
</target>
<!-- ====================================================== -->
<!-- Documentation -->
<!-- ====================================================== -->
<!-- Javadoc -->
<target name="javadoc-dev" depends="jar"
description="Generate javadoc for WMS developers">
<mkdir dir="${build.javadoc.dev}"/>
<javadoc
overview="${java.src.dir}/overview.html"
packagenames="org.trafodion.wms.*"
destdir="${build.javadoc.dev}"
author="true"
version="true"
use="true"
windowtitle="${Name} ${version} API"
doctitle="${Name} ${version} API"
bottom="Copyright &amp;copy; ${year} Apache Software Foundation"
>
<packageset dir="${java.src.dir}">
<include name="com/hp/**"/>
</packageset>
<packageset dir="${src_generated.dir}"/>
<link href="${javadoc.link.java}"/>
<classpath refid="java.classpath"/>
</javadoc>
</target>
<!-- ====================================================== -->
<!-- Make wms.jar -->
<!-- ====================================================== -->
<target name="jar" depends="compile,compile-native">
<jar jarfile="${basedir}/${final.name}.jar">
<fileset file="LICENSE.txt" />
<fileset dir="${build.classes}" excludes="**/.generated"/>
<fileset dir="${java.src.dir}"/>
<fileset dir="${src_generated.dir}" excludes="**/.generated"/>
<fileset file="${basedir}/src/wms-default.xml" />
<fileset file="${basedir}/src/trafodion-rms.avsc" />
<fileset file="${basedir}/src/workload.avsc" />
<fileset file="${basedir}/src/platform-stats.avsc" />
<manifest>
<attribute name="Main-Class" value="org.trafodion.wms.server.HwmsServer" />
<attribute name="Built-By" value="${user.name}"/>
<attribute name="Built-At" value="${build.time}"/>
<attribute name="Built-On" value="${host.name}" />
<attribute name="Implementation-Title" value="org.trafodion.wms"/>
<attribute name="Implementation-Version" value="${version}"/>
<attribute name="Implementation-Vendor" value="The Hewlett Packard Company"/>
</manifest>
</jar>
</target>
<!-- ====================================================== -->
<!-- Make wms-sources.jar -->
<!-- ====================================================== -->
<target name="src-jar" depends="build-generated">
<jar jarfile="${basedir}/${final.name}-sources.jar">
<fileset file="LICENSE.txt" />
<fileset dir="${java.src.dir}"/>
<fileset dir="${src_generated.dir}" excludes="**/.generated"/>
<manifest>
<attribute name="Built-By" value="${user.name}"/>
<attribute name="Built-At" value="${build.time}"/>
<attribute name="Built-On" value="${host.name}" />
<attribute name="Implementation-Title" value="org.trafodion.wms"/>
<attribute name="Implementation-Version" value="${version}"/>
<attribute name="Implementation-Vendor" value="The Hewlett Packard Company"/>
</manifest>
</jar>
</target>
<!-- ====================================================== -->
<!-- Clean. Delete the build files, and their directories -->
<!-- ====================================================== -->
<target name="clean" depends=""
description="Clean. Delete the build files, and their directories">
<delete dir="${build.dir}"/>
<delete dir="${docs.src}/build"/>
<delete dir="${src_generated.dir}" />
<delete includeemptydirs="true">
<fileset dir="${c.src.dir}" defaultexcludes="false">
<include name="**/*build*/**"/>
</fileset>
</delete>
<delete dir="${csrc_generated.dir}" />
<delete dir="${dist.dir}"/>
<delete file="${jar.name}" />
<delete dir="${revision.dir}"/>
<delete>
<fileset dir="${basedir}" includes="*.jar,*.tar.gz"/>
</delete>
</target>
</project>