OSDN Git Service

c81c108ef9fc4ceba60bfb8690c8615eb8c6407d
[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
17   <!-- needed for running -->
18   <property name="db.dir" value="db"/>
19   <property name="logs.dir" value="logs"/>
20
21   <!-- debug -->
22   <property name="javac.debug" value="true"/>
23
24   <!-- run parameter -->
25   <!-- heap -->
26   <property name="jvm.xms" value="256M"/><!-- initial memory size -->
27   <property name="jvm.xmm" value="512M"/><!-- maximum memory size -->
28   <property name="jvm.newratio" value="2"/>
29   <property name="jvm.gcs" value="incgc"/><!-- GC strategy -->
30
31   <!-- product jar file -->
32   <property name="jar.name" value="nevernote.jar"/>
33
34   <!-- product exec command -->
35   <property name="shell.command" value="nevernote.sh"/>
36   <property name="bat.command" value="nevernote.bat"/>
37
38   <!-- documents -->
39   <property name="doc.changelog" value="changelog.txt"/>
40   <property name="doc.release" value="release.txt"/>
41   <property name="doc.readme" value="README.txt"/>
42
43   <!-- check os -->
44   <condition property="isWindows">
45       <os family="windows" />
46   </condition>
47   <condition property="isLinux">
48       <os name="Linux" arch="i386" />
49   </condition>
50   <condition property="isLinux64">
51       <os name="Linux" arch="amd64" />
52   </condition>
53   <condition property="isMacOSX">
54       <os name="Mac OS X" />
55   </condition>
56
57   <!-- os dependent library path and lib file -->
58   <target name="check_syslib_path" depends="lib-if_windows, lib-if_linux, lib-if_linux64"/>
59
60   <target name="lib-if_windows" if="isWindows">
61       <property name="system.lib.dir" value="D:/NeverNote/lib"/>
62       <property name="qtlib.dir" value="D:/qtjambi-${qtjambi.ver}"/>
63       <property name="qtjambi-platform" value="win32-msvc2005"/>
64   </target>
65
66   <target name="lib-if_linux" if="isLinux">
67       <property name="system.lib.dir" value="/usr/share/java"/>
68       <property name="qtlib.dir" value="/home/miurahr/lib/qtjambi"/>
69       <property name="qtjambi.platform" value="linux32-gcc"/>
70   </target>
71   <target name="lib-if_linux64" if="isLinux64">
72       <property name="system.lib.dir" value="/usr/share/java"/>
73       <property name="qtlib.dir" value="lib"/>
74       <property name="qtjambi.platform" value="linux64-gcc"/>
75   </target>
76   <target name="lib-if_macosx" if="isMacOSX">
77       <property name="system.lib.dir" value="/Library/Java/Extensions"/>
78       <property name="qtlib.dir" value="lib"/>
79       <property name="qtjambi.platform" value="macosx-gcc"/>
80   </target>
81
82   <!-- compiler classpath -->
83   <target name="set_classpath" depends="check_syslib_path">
84     <path id="java.classpath">
85       <!-- system third party library -->
86       <pathelement location="${system.lib.dir}/pdfrenderer.jar"/>
87       <pathelement location="${system.lib.dir}/log4j-1.2.jar"/>
88       <pathelement location="${lib.dir}/h2-1.2.136.jar"/>
89       <!-- bundled library -->
90       <pathelement location="${lib.dir}/evernote.jar"/>
91       <pathelement location="${lib.dir}/libthrift.jar"/>
92       <!-- dependent library -->
93       <pathelement location="${qtlib.dir}/qtjambi-${qtjambi.ver}.jar"/>
94       <pathelement location="${qtlib.dir}/qtjambi-${qtjambi.platform}-${qtjambi.ver}.jar"/>
95       <pathelement location="${qtlib.dir}/qtjambi-util-${qtjambi.ver}.jar"/>
96     </path>
97   </target>
98
99   <!-- build -->
100   <target name="init" depends="set_classpath">
101     <tstamp/>
102     <mkdir dir="${classes.dir}"/>
103   </target>
104
105   <target name="compile" depends="init">
106     <javac srcdir="${src.dir}"
107        destdir="${classes.dir}"
108        debug="${javac.debug}">
109        <classpath refid="java.classpath"/>
110     </javac>
111   </target>
112
113   <target name="resources" depends="init">
114       <mkdir dir="${classes.dir}/cx/fbn/nevernote/icons"/>
115       <copy todir="${classes.dir}/cx/fbn/nevernote/icons">
116           <fileset dir="${src.dir}/cx/fbn/nevernote/icons"/>
117       </copy>
118       <copy file="${src.dir}/com/swabunga/spell/engine/configuration.properties"
119             todir="${classes.dir}/com/swabunga/spell/engine/"/>
120   </target>
121
122   <target name="jar" depends="compile,resources">
123     <jar destfile="${jar.name}" basedir="${classes.dir}"/>
124   </target>
125
126   <!-- make distribution -->
127   <target name="dist-init" depends="init">
128     <mkdir dir="${dist.dir}"/>
129     <mkdir dir="${dist.dir}/lib"/>
130     <mkdir dir="${dist.dir}/bin"/>
131     <mkdir dir="${dist.dir}/doc"/>
132     <mkdir dir="${dist.dir}/db"/>
133     <mkdir dir="${dist.dir}/logs"/>
134   </target>
135
136   <target name="dist" depends="jar, dist-init">
137      <copy file="${bin.dir}/${shell.command}" todir="${dist.dir}/bin"/>
138      <copy file="${bin.dir}/${bat.command}" todir="${dist.dir}/bin"/>
139      <copy todir="${dist.dir}/lib">
140        <fileset file="${jar.name}"/>
141        <fileset dir="${lib.dir}"/>
142      </copy>
143      <copy todir="${dist.dir}/doc">
144        <fileset file="${doc.changelog}"/>
145        <fileset file="${doc.release}"/>
146        <fileset file="${doc.readme}"/>
147        <fileset dir="${doc.dir}"/>
148      </copy>
149      <exec dir="dist" executable="tar">
150          <arg line="czf ../../nevernote-bin.tar.gz ."/>
151      </exec>
152   </target>
153
154   <!-- test run -->
155   <target name="run-init" depends="init, jar">
156     <tstamp/>
157     <mkdir dir="${logs.dir}"/>
158     <mkdir dir="${db.dir}"/>
159     <mkdir dir="res"/>
160   </target>
161
162   <target name="run" depends="run-init">
163     <java classname="cx.fbn.nevernote.NeverNote"
164       fork="yes" maxmemory="${jvm.xmm}"
165       classpathref="java.classpath" classpath="${jar.name}">
166       <jvmarg value="-XX:NewRatio=${jvm.newratio}"/>
167       <jvmarg value="-X${jvm.gcs}"/>
168     </java>
169   </target>
170
171   <!-- script test run -->
172   <target name="run-script" depends="run-if_windows, run-if_linux, run-if_linux64"
173    description="run starter script">
174   </target>
175
176   <target name="run-if_windows" depends="run-init" if="isWindows">
177     <exec dir="." executable="cmd" os="Windows NT">
178         <arg line="/c ${bin.dir}\${batch.command}"/>
179     </exec>
180   </target>
181   <target name="run-if_linux" depends="run-init" if="isLinux">
182     <exec executable="${bin.dir}/${shell.command}"/>
183   </target>
184   <target name="run-if_linux64" depends="run-init" if="isLinux64">
185     <exec executable="${bin.dir}/${shell.command}"/>
186   </target>
187
188   <!-- clean up -->
189   <target name="clean"
190    description="clean up without classes and run env" >
191     <delete dir="${dist.dir}" />
192     <delete file="${jar.name}"/>
193   </target>
194
195   <target name="all-clean" depends="clean"
196    description="clean up all" >
197     <delete dir="${classes.dir}" />
198     <delete dir="${logs.dir}" />
199     <delete dir="${db.dir}" />
200     <delete file="secure.txt"/>
201     <delete dir="res"/>
202   </target>
203
204 </project>