summaryrefslogtreecommitdiff
path: root/common/build-module.xml
blob: 57c320af6271b5113893514f97b2804805bc5ad0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<!--
 -
 - 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="AMQ Common" default="build">

  <import file="../module.xml"/>

  <property name="cluster.asl" value="resources/cluster.asl"/>
  <property name="stylesheet" value="stylesheets/framing.xsl"/>
  <property name="registry_stylesheet" value="stylesheets/registry.xsl"/>
  <property name="registry_template" value="resources/registry.template"/>
  <property name="saxon.jar" value="lib/saxon/saxon8.jar"/>
  <property name="generated.package" value="org/apache/qpid/framing"/>
  <property name="generated.dir" value="${module.precompiled}/${generated.package}"/>
  <property name="proto_version" value="${generated.dir}/ProtocolVersionList.java"/>
  
  <macrodef name="saxon">
    <attribute name="out"/>
    <attribute name="src"/>
    <attribute name="xsl"/>
    <element name="args" implicit="true" optional="true"/>
    <sequential>
      <java jar="${saxon.jar}" fork="true">
        <arg value="-o"/>
        <arg value="@{out}"/>
        <arg value="@{src}"/>
        <arg value="@{xsl}"/>
        <args/>
      </java>
    </sequential>
  </macrodef>

  <macrodef name="amqp">
    <attribute name="ver"/>
    <sequential>
      <!-- Check for the existence of the AMQP specification file -->
      <property name="amqpspecfile-@{ver}" value="${project.root}/../specs/amqp-@{ver}.xml"/>
      <available file="${project.root}/../specs/amqp-@{ver}.xml"
              property="amqpspecfile.present-@{ver}"/>
      <fail unless="amqpspecfile.present-@{ver}"
              message="ERROR: AMQP specification file ${project.root}/../specs/amqp-@{ver}.xml not found."/>
      
      <!-- Read in the file as a set of properties; extract the amqp version -->
      <xmlproperty prefix="@{ver}" file="${project.root}/../specs/amqp-@{ver}.xml"/>
      <echo>Found AMQP specification file "${project.root}/../specs/amqp-@{ver}.xml"; major=${@{ver}.amqp(major)} minor=${@{ver}.amqp(minor)}</echo>

      <!-- Add the version to the ProtocolVersionList.java file -->
      <replaceregexp file="${proto_version}" match=" // !VER!"
              replace=",${line.separator}        {${@{ver}.amqp(major)}, ${@{ver}.amqp(minor)}} // !VER!"
              flags="s" byline="true"/>
      <replaceregexp file="${proto_version}" match=" // !VER1!"
              replace="{${@{ver}.amqp(major)}, ${@{ver}.amqp(minor)}} // !VER!"
              flags="s" byline="true"/>

      <!-- Create directory; generate from specification file -->
      <mkdir dir="${generated.dir}_${@{ver}.amqp(major)}_${@{ver}.amqp(minor)}"/>
      <saxon out="${generated.dir}_${@{ver}.amqp(major)}_${@{ver}.amqp(minor)}/results.out"
             src="${project.root}/../specs/amqp-@{ver}.xml" 
             xsl="${stylesheet}">
        <arg value="major=${@{ver}.amqp(major)}"/>
        <arg value="minor=${@{ver}.amqp(minor)}"/>
        <arg value="registry_name=MainRegistry"/>
      </saxon>
      <!--  -->
      <saxon out="${generated.dir}_${@{ver}.amqp(major)}_${@{ver}.amqp(minor)}/cluster.out"
             src="${cluster.asl}"
             xsl="${stylesheet}">
        <arg value="major=${@{ver}.amqp(major)}"/>
        <arg value="minor=${@{ver}.amqp(minor)}"/>
        <arg value="registry_name=ClusterRegistry"/>
      </saxon>
      <saxon out="${generated.dir}_${@{ver}.amqp(major)}_${@{ver}.amqp(minor)}/registry.out"
             src="${registry_template}"
             xsl="${registry_stylesheet}">
        <arg value="major=${@{ver}.amqp(major)}"/>
        <arg value="minor=${@{ver}.amqp(minor)}"/>
      </saxon>
    </sequential>
  </macrodef>

<!--  <uptodate property="generated" targetfile="${generated.dir}/results.out"
            srcfile="${amqp.xml}"/> -->

<!--  <target name="generate" unless="generated"> -->
  <target name="generate">
    <mkdir dir="${generated.dir}"/>
    <copy file="resources/ProtocolVersionList.java" tofile="${proto_version}"
            overwrite="true"/>
    <!--
    NOTE: Set the AMQP version numbers to be supported in this build here.
    The last version in this list will be the version returned when a protocol
    ProtocolInitiation NAK frame is returned by the broker. Usually this is the
    highest or most recent version.
    -->
    <!-- <amqp ver="0.8"/>
    <amqp ver="0.9"/>
    <amqp ver="0.10"/> -->
    <amqp ver="8.0"/>
    
<!--     <saxon out="${generated.dir}/results.out" src="${amqp.xml}"
           xsl="${stylesheet}">
      <arg value="asl_base=${asl.base}"/>
      <arg value="registry_name=MainRegistry"/>
    </saxon>
    <saxon out="${generated.dir}/cluster.out" src="${cluster.asl}"
           xsl="${stylesheet}">
      <arg value="registry_name=ClusterRegistry"/>
    </saxon>
    <saxon out="${generated.dir}/registry.out" src="${registry_template}"
           xsl="${registry_stylesheet}"/> -->
  </target>

  <target name="precompile" depends="generate"/>

</project>