blob: 0d89e55873e6e43503747fb7e7d1cc7044b646f6 [file] [log] [blame]
<?xml version="1.0"?>
<project name="common" default="package">
<!-- Static property definitions. These will remain the same for any module or submodule. -->
<property name="project.name" value="ki"/>
<property name="root.base.dir" value="${basedir}"/>
<!-- Allow override of default build properties from properties file. -->
<property file="build.properties"/>
<property file="${root.base.dir}/build.properties"/>
<property file="${user.home}/.ki/build.properties"/>
<!-- Environment variables (e.g. to pickup CATALINA_HOME for test deployment) -->
<property environment="env"/>
<!-- version of the product, see http://apr.apache.org/versioning.html for details on this convention -->
<property name="version.major" value="1"/>
<property name="version.minor" value="0"/>
<property name="version.revision" value="0-SNAPSHOT"/>
<property name="version" value="${version.major}.${version.minor}.${version.revision}"/>
<property name="release.name" value="${project.name}-${version}"/>
<!-- application-wide config files: (all other config files should be in a respective module or submodule) -->
<property name="root.etc.dir" value="${root.base.dir}/etc"/>
<property name="root.dist.dir" value="${root.base.dir}/build/${project.name}-${version}"/>
<!-- All 3rd party libraries are in here: -->
<property name="lib.dir" value="${root.base.dir}/lib"/>
<!-- *RELATIVE* definitions. These properties will reflect a directory structure relative to where the
sbuild is being executed -->
<property name="base.dir" value="."/>
<property name="etc.dir" value="${base.dir}/etc"/>
<property name="src.dir" value="${base.dir}/src"/>
<property name="test.dir" value="${base.dir}/test"/>
<property name="build.dir" value="${base.dir}/build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="test.classes.dir" value="${build.dir}/test-classes"/>
<property name="docs.dir" value="${build.dir}/docs"/>
<property name="test.docs.dir" value="${docs.dir}/test-reports"/>
<property name="api.dir" value="${docs.dir}/api"/>
<property name="dist.dir" value="${root.dist.dir}"/>
<!-- compile flags, can be overridden on the command line using the -D flag -->
<property name="compile.debug" value="true"/>
<property name="compile.deprecation" value="false"/>
<property name="compile.optimize" value="false"/>
<property name="deploy.dir" value="${env.CATALINA_HOME}/webapps"/>
<path id="all.libs">
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
<pathelement location="${classes.dir}"/>
</path>
<path id="test.path">
<path refid="all.libs"/>
<fileset dir="${dist.dir}">
<include name="**/*.jar"/>
</fileset>
</path>
<!-- ===================================================================
- Clean all build files
- =================================================================== -->
<target name="clean" description="Cleans the entire project">
<delete file="${dist.jar}"/>
<delete dir="${build.dir}"/>
</target>
<macrodef name="compileMacro">
<attribute name="classpathref" default="compile.path"/>
<attribute name="srcdir" default="${src.dir}"/>
<attribute name="destdir" default="${classes.dir}"/>
<sequential>
<mkdir dir="@{destdir}"/>
<mkdir dir="@{destdir}/META-INF"/>
<!-- 'compile.path' is expected to be defined in the module build.xml file -->
<javac destdir="@{destdir}"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
optimize="${compile.optimize}"
failonerror="true"
srcdir="@{srcdir}"
classpathref="@{classpathref}">
<!-- <compilerarg value="-Xlint:unchecked"/> -->
</javac>
<copy todir="@{destdir}" preservelastmodified="true">
<fileset dir="@{srcdir}">
<include name="**/*"/>
<exclude name="**/*.java"/>
<exclude name="**/*.tld"/>
</fileset>
</copy>
<copy todir="@{destdir}/META-INF" flatten="true" preservelastmodified="true">
<fileset dir="@{srcdir}">
<include name="**/*.tld"/>
</fileset>
</copy>
</sequential>
</macrodef>
<target name="compile.src" description="Compiles sources">
<!-- defaults are fine: -->
<compileMacro/>
</target>
<target name="compile.test" description="Compiles test sources only">
<compileMacro classpathref="test.path" srcdir="${test.dir}" destdir="${test.classes.dir}"/>
</target>
<target name="compile" depends="compile.src, compile.test" description="Compiles all sources"/>
<target name="jar.jdk15" depends="compile" description="Create module jar file">
<jar jarfile="${dist.jar}">
<fileset dir="${classes.dir}">
<include name="**"/>
<exclude name="META-INF/**"/>
</fileset>
<metainf dir="${classes.dir}/META-INF">
<include name="**"/>
</metainf>
<manifest>
<attribute name="Implementation-Title" value="${project.name}-${module.name}"/>
<attribute name="Implementation-Version" value="${version}"/>
<attribute name="${project.name}-Version" value="${version}"/>
<!-- Allow use of this JAR as a Java agent -->
<!-- <attribute name="Premain-Class" value="org.kiment.InstrumentationSavingAgent" /> -->
</manifest>
</jar>
</target>
<target name="jar.retroweaver" depends="jar.jdk15" description="Create module jar file for JDK 1.3 and 1.4">
<taskdef name="retroweaver" classname="net.sourceforge.retroweaver.ant.RetroWeaverTask"
classpathref="all.libs"/>
<mkdir dir="${dist.dir}/jdk13"/>
<mkdir dir="${dist.dir}/jdk14"/>
<retroweaver target="1.3" inputjar="${dist.jar}"
outputjar="${dist.dir}/jdk13/${project.name}-${module.name}-jdk13-${version}.jar"/>
<retroweaver target="1.4" inputjar="${dist.jar}"
outputjar="${dist.dir}/jdk14/${project.name}-${module.name}-jdk14-${version}.jar"/>
</target>
<target name="jar" depends="jar.retroweaver"/>
<target name="package" depends="jar"/>
</project>