summaryrefslogtreecommitdiff
path: root/qpid/java/common
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/java/common')
-rw-r--r--qpid/java/common/build-generate-sources.xml128
-rw-r--r--qpid/java/common/build.xml65
2 files changed, 140 insertions, 53 deletions
diff --git a/qpid/java/common/build-generate-sources.xml b/qpid/java/common/build-generate-sources.xml
new file mode 100644
index 0000000000..84717ca5a3
--- /dev/null
+++ b/qpid/java/common/build-generate-sources.xml
@@ -0,0 +1,128 @@
+<!--
+ -
+ - 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="Qpid Common Generate Sources" default="generate-sources">
+
+ <fail message="A required property was not set">
+ <condition>
+ <not>
+ <and>
+ <isset property="generated-amqp-0-8-dir"/>
+ <isset property="generated-amqp-0-10-dir"/>
+ <isset property="gentools.classes"/>
+ </and>
+ </not>
+ </condition>
+ </fail>
+
+ <property name="mllib.dir" value="${basedir}/../../python"/>
+ <property name="xml.spec.dir" value="${basedir}/../../specs"/>
+
+ <property name="xml.spec.0-8" value="amqp0-8-qpid.stripped.xml"/>
+ <property name="xml.spec.0-9" value="amqp0-9-qpid.stripped.xml"/>
+ <property name="xml.spec.0-9-1" value="amqp0-9-1.stripped.xml"/>
+ <property name="xml.spec.0-10" value="amqp.0-10-qpid-errata.stripped.xml"/>
+ <property name="xml.spec.deps.0-8" value="${xml.spec.0-8} ${xml.spec.0-9} ${xml.spec.0-9-1}"/>
+ <property name="xml.spec.list.0-8" value='"${xml.spec.dir}/${xml.spec.0-8}" "${xml.spec.dir}/${xml.spec.0-9}" "${xml.spec.dir}/${xml.spec.0-9-1}"'/>
+
+ <property name="gentools.src" value="${basedir}/gentools/src"/>
+ <property name="generated.package" value="org/apache/qpid/framing" />
+
+ <property name="amqp-0-8-generation.timestamp" location="${generated-amqp-0-8-dir}/amqp-0-8-generation.timestamp" />
+ <property name="amqp-0-10-generation.timestamp" location="${generated-amqp-0-10-dir}/amqp-0-10-generation.timestamp" />
+
+ <property name="version.file" location="${basedir}/target/classes/qpidversion.properties"/>
+ <property file="${version.file}" prefix="old."/>
+
+ <target name="check-version">
+ <exec executable="svnversion" spawn="false" failifexecutionfails="false"
+ dir="${basedir}" outputproperty="svnversion.output">
+ <arg line="."/>
+ </exec>
+ <condition property="version.stale">
+ <not>
+ <equals arg1="${svnversion.output}" arg2="${old.qpid.svnversion}"/>
+ </not>
+ </condition>
+ </target>
+
+ <target name="create-version" depends="check-version" if="version.stale">
+ <echo message="Writing new qpidversion.properties file with svnversion: '${svnversion.output}'"/>
+ <!-- Write the version.properties out.-->
+ <!-- Echos exactly as shown, so leave no spaces before/after lines -->
+ <echo file="${version.file}" append="false">qpid.version=${project.version}
+qpid.svnversion=${svnversion.output}
+qpid.name=qpid
+</echo>
+ </target>
+
+ <target name="check-amqp-0-10-generation-required">
+ <uptodate property="amqp-0-10-generation-not-required" targetfile="${amqp-0-10-generation.timestamp}">
+ <srcfiles dir="${xml.spec.dir}" includes="amqp.0-10-qpid-errata.stripped.xml" />
+ </uptodate>
+ </target>
+
+ <target name="amqp-0-10-generation" depends="check-amqp-0-10-generation-required" unless="amqp-0-10-generation-not-required">
+ <mkdir dir="${generated-amqp-0-10-dir}"/>
+ <echo message="Generating AMQP 0-10 protocol classes..."/>
+ <java classname="org.python.util.jython" dir="${generated-amqp-0-10-dir}" fork="true" failonerror="true">
+ <arg value="${basedir}/codegen"/>
+ <arg value="${generated-amqp-0-10-dir}"/>
+ <arg value="${xml.spec.dir}/${xml.spec.0-10}"/>
+ <arg value="${basedir}"/>
+ <classpath>
+ <path refid="source.generation.classpathref"/>
+ </classpath>
+ <sysproperty key="python.path" value ="${mllib.dir}"/>
+ </java>
+ <touch file="${amqp-0-10-generation.timestamp}" />
+ </target>
+
+ <target name="compile-gentools">
+ <mkdir dir="${gentools.classes}"/>
+ <javac srcdir="${gentools.src}" destdir="${gentools.classes}" source="1.5" target="1.5" fork="true" includeantruntime="false">
+ <classpath>
+ <path refid="source.generation.classpathref"/>
+ </classpath>
+ </javac>
+ </target>
+
+ <target name="check-amqp-0-8-generation-required">
+ <uptodate property="amqp-0-8-generation-not-required" targetfile="${amqp-0-8-generation.timestamp}">
+ <srcfiles dir="${xml.spec.dir}" includes="${xml.spec.deps.0-8}" />
+ </uptodate>
+ </target>
+
+ <target name="amqp-0-8-generation" depends="compile-gentools, check-amqp-0-8-generation-required" unless="amqp-0-8-generation-not-required">
+ <mkdir dir="${generated-amqp-0-8-dir}/${generated.package}"/>
+ <echo message="Generating AMQP 0-8/0-9/0-9-1 protocol classes..."/>
+ <java classname="org.apache.qpid.gentools.Main" fork="true" dir="${gentools.classes}" failonerror="true">
+ <arg line='-j -o "${generated-amqp-0-8-dir}/${generated.package}" -t "${basedir}/templates" ${xml.spec.list.0-8}'/>
+ <classpath>
+ <pathelement path="${gentools.classes}" />
+ <path refid="source.generation.classpathref"/>
+ </classpath>
+ </java>
+ <touch file="${amqp-0-8-generation.timestamp}" />
+ </target>
+
+ <target name="generate-sources" depends="amqp-0-8-generation, amqp-0-10-generation, create-version"/>
+
+</project>
diff --git a/qpid/java/common/build.xml b/qpid/java/common/build.xml
index 48d08a0717..184aad1abc 100644
--- a/qpid/java/common/build.xml
+++ b/qpid/java/common/build.xml
@@ -24,62 +24,21 @@
<import file="../module.xml"/>
- <property name="generated.package" value="org/apache/qpid/framing" />
- <property name="framing.generated.dir" location="${module.precompiled}/${generated.package}" />
- <property name="xml.spec.dir" location="${project.root}/../specs" />
- <property name="xml.spec.deps" value="amqp0-8-qpid.stripped.xml amqp0-9-qpid.stripped.xml amqp0-9-1.stripped.xml" />
- <property name="xml.spec.list" value='"${xml.spec.dir}/amqp0-8-qpid.stripped.xml" "${xml.spec.dir}/amqp0-9-qpid.stripped.xml" "${xml.spec.dir}/amqp0-9-1.stripped.xml"' />
- <property name="gentools.timestamp" location="${framing.generated.dir}/gentools.timestamp" />
- <property name="jython.timestamp" location="${framing.generated.dir}/jython.timestamp" />
<property name="selector.output.dir" value="${module.precompiled}/org/apache/qpid/filter/selector"/>
- <target name="check_jython_deps">
- <uptodate property="jython.notRequired" targetfile="${jython.timestamp}">
- <srcfiles dir="${xml.spec.dir}" includes="amqp.0-10-qpid-errata.stripped.xml" />
- </uptodate>
- </target>
-
- <target name="jython" depends="check_jython_deps" unless="jython.notRequired">
- <jython path="${mllib.dir}">
- <args>
- <arg value="${basedir}/codegen"/>
- <arg value="${module.precompiled}"/>
- <arg value="${xml.spec.dir}/amqp.0-10-qpid-errata.stripped.xml"/>
- <arg value="${basedir}"/>
- </args>
- </jython>
- <touch file="${jython.timestamp}" />
- </target>
-
- <target name="compile_gentools">
- <mkdir dir="${gentools.build}/classes"/>
- <javac srcdir="${gentools.home}/src" destdir="${gentools.build}/classes" source="${java.source}" target="${java.target}" fork="true" includeantruntime="false">
- <classpath>
- <fileset dir="${project.root}">
- <include name="${velocity.jar}"/>
- <include name="${velocity-dep.jar}"/>
- </fileset>
- </classpath>
- </javac>
- </target>
-
- <target name="check_gentool_deps">
- <uptodate property="gentools.notRequired" targetfile="${gentools.timestamp}">
- <srcfiles dir="${xml.spec.dir}" includes="${xml.spec.deps}" />
- </uptodate>
- </target>
-
- <target name="gentools" depends="compile_gentools,check_gentool_deps" unless="gentools.notRequired">
- <mkdir dir="${framing.generated.dir}"/>
- <java classname="org.apache.qpid.gentools.Main" fork="true" dir="${gentools.build}/classes" failonerror="true">
- <arg line='-j -o "${framing.generated.dir}" -t "${project.root}/common/templates" ${xml.spec.list}'/>
- <classpath>
- <pathelement path="${gentools.build}/classes" />
+ <path id="common.source.generation.classpathref">
+ <pathelement path="${project.root}/${jython}" />
<pathelement path="${project.root}/${velocity.jar}" />
<pathelement path="${project.root}/${velocity-dep.jar}" />
- </classpath>
- </java>
- <touch file="${gentools.timestamp}" />
+ </path>
+
+ <target name="generate-sources">
+ <ant antfile="build-generate-sources.xml">
+ <reference torefid="source.generation.classpathref" refid="common.source.generation.classpathref" />
+ <property name="generated-amqp-0-8-dir" value="${module.precompiled}"/>
+ <property name="generated-amqp-0-10-dir" value="${module.precompiled}"/>
+ <property name="gentools.classes" value="${build.scratch}/common/gentools/classes"/>
+ </ant>
</target>
<target name="jms-selector">
@@ -94,7 +53,7 @@
javacchome="${module.build}"/>
</target>
- <target name="precompile" depends="gentools,jython,create-version,jms-selector"/>
+ <target name="precompile" depends="generate-sources,jms-selector"/>
<target name="bundle" depends="bundle-tasks"/>