• Views
  • Iteration Report
  • My Iteration Report
  •  
OMERO.server
  • Login
  • Help/Guide
  • About Trac
  • Preferences
  • Wiki
  • Timeline
  • Roadmap
  • Browse Source
  • View Tickets
  • Search

Context Navigation

  • Last Change
  • Annotate
  • Revision Log

root/trunk/components/blitz/build.xml

Revision 2966, 7.4 kB (checked in by jmoore, 3 months ago)

ticket:1106 - Splitting compilation in blitz/ for memory reasons.

  • Property svn:keywords set to Id
Line 
1<?xml version="1.0" encoding="utf-8"?>
2<project name="blitz" default="install" basedir=".">
3
4    <property name="import.dir" value="${basedir}/../antlib/resources"/>
5    <import file="${import.dir}/global.xml"/>
6    <import file="${import.dir}/dependencies.xml"/>
7    <import file="${import.dir}/lifecycle.xml"/>
8
9    <!-- Class that will be called via "java -jar" on this artifact -->
10    <property name="main.class" value="ome.services.blitz.Entry"/>
11
12        <target name="clean" depends="lifecycle.clean">
13            <delete dir="${basedir}/generated"/>
14        </target>
15
16        <target name="compile" depends="generate" unless="skip.compile">
17                <hard-wire file="ome/services/blitz/fire/SessionManagerI.java"
18                    token="&quot;ome.security.basic.BasicSecurityWiring&quot;"/>
19
20                <!-- WORKAROUND: Attempting to compile mutually dependent directories
21                     via javac is quite complicated. Moving the difficult file out of the way -->
22                <property name="file.real.sessionmanager" value="${src.dest}/ome/services/blitz/fire/SessionManagerI.java"/>
23                <property name="file.fake.sessionmanager" value="${src.dest}/ome/services/blitz/fire/SessionManagerI.fake"/>
24                <move file="${file.real.sessionmanager}" tofile="${file.fake.sessionmanager}"/>
25                <myjavac>
26                    <src path="${src.dir}"/>
27                    <src path="${src.dest}"/>
28                    <src path="${basedir}/generated"/>
29                    <include name="omero/**"/>
30                    <include name="omero/model/**"/>
31                </myjavac>
32                <myjavac>
33                    <src path="${src.dir}"/>
34                    <src path="${src.dest}"/>
35                    <src path="${basedir}/generated"/>
36                    <exclude name="omero/**"/>
37                    <exclude name="omero/model/**"/>
38                </myjavac>
39                <move file="${file.fake.sessionmanager}" tofile="${file.real.sessionmanager}"/>
40                <myjavac>
41                    <include name="**/SessionManagerI.java"/>
42                    <src path="${src.dest}"/>
43                </myjavac>
44                <delete file="${file.real.sessionmanager}"/>
45                <delete file="${file.fake.sessionmanager}"/><!-- Just in case -->
46        </target>
47
48        <target name="generate" depends="lifecycle.generate,icegen"/>
49
50        <target name="install" depends="lifecycle.install">
51                <standalone conf="server"/>
52                <useServices dir="${target.dir}/standalone"/>
53        </target>
54
55    <!-- = = = = = = = = = = = = = = = = =
56          generate model
57         = = = = = = = = = = = = = = = = = -->
58
59        <macrodef name="split-combined">
60            <attribute name="all" default="all"/>
61            <attribute name="prefix"/>
62            <element name="mappers" implicit="true"/>
63            <sequential>
64            <copy todir="${basedir}/generated">
65                <fileset dir="${basedir}/generated" includes="**/*.combined"/>
66                <filterchain>
67                    <linecontainsregexp>
68                        <regexp pattern="^\[@{all}\]|^\[@{prefix}\]"/>
69                    </linecontainsregexp>
70                    <tokenfilter>
71                        <replaceregex pattern="^\[@{all}\]\s?" replace=""/>
72                        <replaceregex pattern="^\[@{prefix}\]\s?" replace=""/>
73                    </tokenfilter>
74                </filterchain>
75                <mappers/>
76            </copy>
77            </sequential>
78        </macrodef>
79
80        <target name="icegen">
81            <property name="gen.dir" value="${basedir}/generated"/>
82            <mkdir dir="${gen.dir}/omero/api"/>
83            <mkdir dir="${gen.dir}/omero/model"/>
84            <antcall target="_icegen" inheritAll="true" inheritRefs="true"/>
85            <!-- Now it's time to run scons to do the actual slice2* calls -->
86            <scons_py>
87                <arg value="-Q"/>
88            </scons_py>
89        </target>
90
91        <target name="_icegen" depends="prepare">
92                <taskdef classname="ome.dsl.DSLTask" classpathref="omero.classpath" name="dsl"/>
93                <dsl template="${resrc.dir}/templates/combined.vm" filepattern="${gen.dir}/{class-name}I.combined">
94                        <fileset dir="${model.comp}/resources" includes="${dsl.pat}"/>
95                </dsl>
96                <dsl template="${resrc.dir}/templates/java_ice_map.vm" filepattern="${gen.dir}/omero/util/IceMap.java">
97                        <fileset dir="${model.comp}/resources" includes="${dsl.pat}"/>
98                </dsl>
99                <dsl template="${resrc.dir}/templates/java_obj_reg.vm" filepattern="${gen.dir}/omero/util/ObjectFactoryRegistrar.java">
100                        <fileset dir="${model.comp}/resources" includes="${dsl.pat}"/>
101                </dsl>
102                <dsl template="${resrc.dir}/templates/cpp_obj_reg.vm" filepattern="${gen.dir}/omero/ObjectFactoryRegistrar.cpp">
103                        <fileset dir="${model.comp}/resources" includes="${dsl.pat}"/>
104                </dsl>
105                <dsl template="${resrc.dir}/templates/factorymap.vm" filepattern="${gen.dir}/omero/util/FactoryMap.combined">
106                        <fileset dir="${model.comp}/resources" includes="${dsl.pat}"/>
107                </dsl>
108
109                <!--
110                    This section takes the output of the combined.vm template and splits it into
111                    the various sections. All of these files represent the Ice model and our
112                    specializations of it
113                -->
114                <split-combined prefix="hdr">
115                        <!-- resources/*I.combined => ../../src/cpp/generated/*I.h -->
116                        <regexpmapper from="(.*?)I[.]combined" to="omero/model/\1I.h"/>
117                </split-combined>
118                <split-combined prefix="cpp">
119                        <regexpmapper from="(.*?)I[.]combined" to="omero/model/\1I.cpp"/>
120                </split-combined>
121                <split-combined prefix="jav">
122                        <regexpmapper from="(.*?)I[.]combined" to="omero/model/\1I.java"/>
123                </split-combined>
124                <split-combined prefix="pyc">
125                        <regexpmapper from="(.*?)I[.]combined" to="omero_model_\1I.py"/>
126                </split-combined>
127                <split-combined prefix="ice">
128                        <regexpmapper from="(.*?)I[.]combined" to="omero/model/\1.ice"/>
129                </split-combined>
130                <!--
131                    This does the same fore the factorymap.vm template.
132                -->
133                <split-combined prefix="pyc">
134                        <regexpmapper from="omero/util/FactoryMap.combined" to="omero/util/FactoryMap.py"/>
135                </split-combined>
136
137                <!--
138                    By deleting from the target directory what already exists under
139                    src/ or resources/ it is possible to override code generation.
140                -->
141                <delete>
142                        <fileset dir="${gen.dir}" includes="**/*.java">
143                                <present present="both" targetdir="${src.dir}"/>
144                        </fileset>
145                        <fileset dir="${gen.dir}" includes="**/*.ice">
146                                <present present="both" targetdir="${resrc.dir}"/>
147                        </fileset>
148                        <fileset dir="${gen.dir}" includes="**/*.ice">
149                                <present present="both" targetdir="${resrc.dir}"/>
150                        </fileset>
151                        <fileset dir="${gen.dir}" includes="**/*.h">
152                                <present present="both" targetdir="${src.dir}/cpp"/>
153                        </fileset>
154                        <fileset dir="${gen.dir}" includes="**/*.cpp">
155                                <present present="both" targetdir="${src.dir}/cpp"/>
156                        </fileset>
157
158                        <!-- Deleting all *.combined files to cleanup -->
159                        <fileset dir="${gen.dir}" includes="**/*.combined"/>
160                </delete>
161        </target>
162
163        <target name="dist" depends="package,install" unless="skip.compile"><!-- install for standalone -->
164          <copy todir="${dist.dir}/bin">
165            <fileset dir="${basedir}/bin" includes="**/*"/>
166          </copy>
167          <copy todir="${dist.dir}/etc">
168            <fileset dir="${basedir}/etc" includes="**/*"/>
169            <fileset dir="${resrc.dir}" includes="*.config"/>
170            <flattenmapper/>
171          </copy>
172          <copy todir="${dist.dir}/include">
173            <fileset dir="${resrc.dest}" includes="**/*.h"/>
174            <fileset dir="${resrc.dir}"  includes="**/*.ice"/>
175            <fileset dir="${resrc.dest}" includes="**/*.ice,**/*.h"/>
176          </copy>
177          <copy todir="${dist.dir}/blitz">
178            <fileset dir="${target.dir}/standalone" includes="**/*"/>
179          </copy>
180        </target>
181
182</project>
Note: See TracBrowser for help on using the browser.

Download in other formats:

  • Plain Text
  • Original Format

Trac Powered

Powered by Trac 0.11
By Edgewall Software.

Visit the Trac open source project at
http://trac.edgewall.org/