OSDN Git Service

add qt message catalogs and build rules
[neighbornote/NeighborNote.git] / build.xml
1 <?xml version='1.0' encoding='utf-8'?>
2 <project default="jar" basedir=".">
3   <!-- program name -->
4   <property name="project.name" value="nevernote"/>
5
6   <!-- targeted QtJambi library version  -->
7   <property name="qtjambi.ver" value="4.6.3"/>
8
9   <!-- project directory hierarchy -->
10   <property name="src.dir" value="src"/>
11   <property name="classes.dir" value="build"/>
12   <property name="dist.dir" value="dist"/>
13   <property name="lib.dir" value="lib"/>
14   <property name="bin.dir" value="bin"/>
15   <property name="doc.dir" value="doc"/>
16   <property name="tr.dir" value="translations"/>
17
18   <!-- needed for running -->
19   <property name="db.dir" value="db"/>
20   <property name="logs.dir" value="logs"/>
21
22   <!-- debug -->
23   <property name="javac.debug" value="true"/>
24
25   <!-- run parameter -->
26   <!-- heap -->
27   <property name="jvm.xms" value="256M"/><!-- initial memory size -->
28   <property name="jvm.xmm" value="512M"/><!-- maximum memory size -->
29   <property name="jvm.newratio" value="2"/>
30   <property name="jvm.gcs" value="incgc"/><!-- GC strategy -->
31
32   <!-- product jar file -->
33   <property name="jar.name" value="nevernote.jar"/>
34
35   <!-- product exec command -->
36   <property name="shell.command" value="nevernote.sh"/>
37   <property name="bat.command" value="nevernote.bat"/>
38
39   <!-- qt utils -->
40   <property name="linguist.update" value="lupdate"/>
41   <property name="linguist.release" value="lrelease"/>
42
43   <!-- translations -->
44   <property name="linguist.project" value="nevernote.pro"/>
45
46   <!-- documents -->
47   <property name="doc.changelog" value="changelog.txt"/>
48   <property name="doc.release" value="release.txt"/>
49   <property name="doc.readme" value="README.txt"/>
50
51   <!-- check os -->
52   <condition property="isWindows">
53       <os family="windows" />
54   </condition>
55   <condition property="isLinux">
56       <os name="Linux" arch="i386" />
57   </condition>
58   <condition property="isLinux64">
59       <os name="Linux" arch="amd64" />
60   </condition>
61   <condition property="isMacOSX">
62       <os name="Mac OS X" />
63   </condition>
64
65   <!-- os dependent library path and lib file -->
66   <target name="check_syslib_path" depends="lib-if_windows, lib-if_linux, lib-if_linux64"/>
67
68   <target name="lib-if_windows" if="isWindows">
69       <property name="system.lib.dir" value="D:/NeverNote/lib"/>
70       <property name="qtlib.dir" value="D:/qtjambi-${qtjambi.ver}"/>
71       <property name="qtjambi-platform" value="win32-msvc2005"/>
72   </target>
73
74   <target name="lib-if_linux" if="isLinux">
75       <property name="system.lib.dir" value="/usr/share/java"/>
76       <property name="qtlib.dir" value="/home/miurahr/lib/qtjambi"/>
77       <property name="qtjambi.platform" value="linux32-gcc"/>
78   </target>
79   <target name="lib-if_linux64" if="isLinux64">
80       <property name="system.lib.dir" value="/usr/share/java"/>
81       <property name="qtlib.dir" value="lib"/>
82       <property name="qtjambi.platform" value="linux64-gcc"/>
83   </target>
84   <target name="lib-if_macosx" if="isMacOSX">
85       <property name="system.lib.dir" value="/Library/Java/Extensions"/>
86       <property name="qtlib.dir" value="lib"/>
87       <property name="qtjambi.platform" value="macosx-gcc"/>
88   </target>
89
90   <!-- compiler classpath -->
91   <target name="set_classpath" depends="check_syslib_path">
92     <path id="java.classpath">
93       <!-- system third party library -->
94       <pathelement location="${system.lib.dir}/pdfrenderer.jar"/>
95       <pathelement location="${system.lib.dir}/log4j-1.2.jar"/>
96       <pathelement location="${lib.dir}/h2-1.2.136.jar"/>
97       <!-- bundled library -->
98       <pathelement location="${lib.dir}/evernote.jar"/>
99       <pathelement location="${lib.dir}/libthrift.jar"/>
100       <!-- dependent library -->
101       <pathelement location="${qtlib.dir}/qtjambi-${qtjambi.ver}.jar"/>
102       <pathelement location="${qtlib.dir}/qtjambi-${qtjambi.platform}-${qtjambi.ver}.jar"/>
103       <pathelement location="${qtlib.dir}/qtjambi-util-${qtjambi.ver}.jar"/>
104     </path>
105   </target>
106
107   <target name="init" depends="set_classpath">
108     <tstamp/>
109     <mkdir dir="${classes.dir}"/>
110   </target>
111
112   <!-- translate -->
113   <target name="update-tr" depends="update-tr-if_linux, update-tr-if_linux64, update-tr-if_windows"/>
114   <target name="update-tr-if_windows" depends="init" if="isWindows">
115     <exec dir="." executable="cmd" os="Windows NT">
116         <arg line="/c ${bin.dir}\${linguist.update} ${linguist.project}"/>
117     </exec>
118   </target>
119   <target name="update-tr-if_linux" depends="init" if="isLinux">
120     <exec executable="${linguist.update}">
121         <arg line="${linguist.project}"/>
122     </exec>
123   </target>
124   <target name="update-tr-if_linux64" depends="init" if="isLinux64">
125     <exec executable="${linguist.update}">
126         <arg line="${linguist.project}"/>
127     </exec>
128   </target>
129
130   <target name="release-tr" depends="release-tr-if_linux, release-tr-if_linux64, release-tr-if_windows"/>
131   <target name="release-tr-if_windows" depends="init" if="isWindows">
132     <exec dir="." executable="cmd" os="Windows NT">
133         <arg line="/c ${bin.dir}\${linguist.release} ${linguist.project}"/>
134     </exec>
135   </target>
136   <target name="release-tr-if_linux" depends="init" if="isLinux">
137     <exec executable="${linguist.release}">
138         <arg line="${linguist.project}"/>
139     </exec>
140   </target>
141   <target name="release-tr-if_linux64" depends="init" if="isLinux64">
142     <exec executable="${linguist.release}">
143         <arg line="${linguist.project}"/>
144     </exec>
145   </target>
146
147   <!-- build -->
148   <target name="compile" depends="init">
149     <javac srcdir="${src.dir}"
150        destdir="${classes.dir}"
151        debug="${javac.debug}">
152        <classpath refid="java.classpath"/>
153     </javac>
154   </target>
155
156   <target name="resources" depends="init">
157       <mkdir dir="${classes.dir}/cx/fbn/nevernote/icons"/>
158       <copy todir="${classes.dir}/cx/fbn/nevernote/icons">
159           <fileset dir="${src.dir}/cx/fbn/nevernote/icons"/>
160       </copy>
161       <copy file="${src.dir}/com/swabunga/spell/engine/configuration.properties"
162             todir="${classes.dir}/com/swabunga/spell/engine/"/>
163       <mkdir dir="${classes.dir}/translations"/>
164       <copy todir="${classes.dir}/translations">
165           <fileset file="translations/*.qm"/>
166       </copy>
167   </target>
168
169   <target name="jar" depends="compile,resources,release-tr">
170     <jar destfile="${jar.name}" basedir="${classes.dir}"/>
171   </target>
172
173   <!-- make distribution -->
174   <target name="dist-init" depends="init">
175     <mkdir dir="${dist.dir}"/>
176     <mkdir dir="${dist.dir}/lib"/>
177     <mkdir dir="${dist.dir}/bin"/>
178     <mkdir dir="${dist.dir}/doc"/>
179     <mkdir dir="${dist.dir}/db"/>
180     <mkdir dir="${dist.dir}/logs"/>
181   </target>
182
183   <target name="dist" depends="jar, dist-init">
184      <copy file="${bin.dir}/${shell.command}" todir="${dist.dir}/bin"/>
185      <copy file="${bin.dir}/${bat.command}" todir="${dist.dir}/bin"/>
186      <copy todir="${dist.dir}/lib">
187        <fileset file="${jar.name}"/>
188        <fileset dir="${lib.dir}"/>
189      </copy>
190      <copy todir="${dist.dir}/doc">
191        <fileset file="${doc.changelog}"/>
192        <fileset file="${doc.release}"/>
193        <fileset file="${doc.readme}"/>
194        <fileset dir="${doc.dir}"/>
195      </copy>
196      <exec dir="dist" executable="tar">
197          <arg line="czf ../../nevernote-bin.tar.gz ."/>
198      </exec>
199   </target>
200
201   <!-- test run -->
202   <target name="run-init" depends="init, jar">
203     <tstamp/>
204     <mkdir dir="${logs.dir}"/>
205     <mkdir dir="${db.dir}"/>
206     <mkdir dir="res"/>
207   </target>
208
209   <target name="run" depends="run-init">
210     <java classname="cx.fbn.nevernote.NeverNote"
211       fork="yes" maxmemory="${jvm.xmm}"
212       classpathref="java.classpath" classpath="${jar.name}">
213       <jvmarg value="-XX:NewRatio=${jvm.newratio}"/>
214       <jvmarg value="-X${jvm.gcs}"/>
215     </java>
216   </target>
217
218   <!-- script test run -->
219   <target name="run-script" depends="run-if_windows, run-if_linux, run-if_linux64"
220    description="run starter script">
221   </target>
222
223   <target name="run-if_windows" depends="run-init" if="isWindows">
224     <exec dir="." executable="cmd" os="Windows NT">
225         <arg line="/c ${bin.dir}\${batch.command}"/>
226     </exec>
227   </target>
228   <target name="run-if_linux" depends="run-init" if="isLinux">
229     <exec executable="${bin.dir}/${shell.command}"/>
230   </target>
231   <target name="run-if_linux64" depends="run-init" if="isLinux64">
232     <exec executable="${bin.dir}/${shell.command}"/>
233   </target>
234
235   <!-- clean up -->
236   <target name="clean"
237    description="clean up without classes and run env" >
238     <delete dir="${dist.dir}" />
239     <delete file="${jar.name}"/>
240   </target>
241
242   <target name="all-clean" depends="clean"
243    description="clean up all" >
244     <delete dir="${classes.dir}" />
245     <delete dir="${logs.dir}" />
246     <delete dir="${db.dir}" />
247     <delete file="secure.txt"/>
248     <delete dir="res"/>
249   </target>
250
251 </project>