224d850cd452b96d120ce662dca72273e163edef
[scilab.git] / scilab / build.incl.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Common definitions of Java compilation for Scilab -->
3 <project name="common">
4   <!-- Base of Scilab source tree -->
5   <property name="base.dir" location="../../"/>
6   <!-- Where the module should be created (modules/xxx/jar) -->
7   <property name="build.jar.dir" value="jar/"/>
8   <!-- Where the thirdparty libraries could be found -->
9   <property name="thirdparty.dir" location="${base.dir}/thirdparty/"/>
10   <!-- The building directory -->
11   <property name="build.dir" location="build/"/>
12   <!-- The building test directory -->
13   <property name="build.test.dir" location="${build.dir}/test"/>
14   <!-- Where builded classes will be generated -->
15   <property name="classes.dir" location="${build.dir}/classes"/>
16   <!-- Where builded test classes will be generated -->
17   <property name="classes.test.dir" location="${build.test.dir}/classes"/>
18   <!-- Where we store cache files -->
19   <property name="cache.dir" location="${build.dir}/cachefile"/>
20   <!-- Where we can find the sources -->
21   <property name="src.dir" location="src/java/"/>
22   <!-- Where we can find the test sources -->
23   <property name="src.test.dir" location="tests/java/"/>
24   <!-- Check style definitions -->
25   <property name="checkstyle.config.file" value="${base.dir}/checkstyle/scilab_checkstyle_convention.xml"/>
26   <property name="checkstyle.stylesheet" value="${thirdparty.dir}/checkstyle/contrib/checkstyle-noframes-sorted.xsl"/>
27   <property name="checkstyle.report.dir" value="${build.dir}/checkstyle"/>
28   <property name="checkstyle.xml.report.file" value="${checkstyle.report.dir}/checkstyle_errors.xml"/>
29   <property name="checkstyle.html.report.file" value="${checkstyle.report.dir}/checkstyle_errors.htm"/>
30   <property name="modules.dir" value="${base.dir}/modules"/>
31   <!-- JAR names -->
32   <property file="${base.dir}/scilab-lib.properties"/>
33   <property file="${base.dir}/scilab-lib-doc.properties"/>
34   <!-- Configure ANT flags -->
35   <property file="${base.dir}/scilab.properties"/>
36   <!-- Set ${SCIVERSION} -->
37   <property file="${base.dir}/Version.incl"/>
38   <path id="checkstyle.classpath">
39     <pathelement location="${checkstyle.jar}"/>
40     <pathelement location="${commons-logging.jar}"/>
41     <pathelement location="${commons-beanutils.jar}"/>
42     <pathelement location="${antlr.jar}"/>
43   </path>
44   <path id="unittest.classpath">
45     <pathelement location="${testng.jar}"/>
46     <pathelement location="${jcommander.jar}"/>
47     <pathelement location="${bsh.jar}"/>
48     <pathelement location="${junit.jar}"/>
49     <pathelement location="${qdox.jar}"/>
50   </path>
51   <path id="compile.classpath">
52     <pathelement location="${library.types.dir}/${library.types.name}"/>
53     <pathelement location="${library.types.dir}/${library.output_stream.name}"/>
54     <pathelement location="${library.graph.dir}/${library.graph.name}"/>
55     <pathelement location="${library.xcos.dir}/${library.xcos.name}"/>
56     <pathelement location="${library.hdf5.dir}/${library.hdf5.name}"/>
57     <pathelement location="${library.scinotes.dir}/${library.scinotes.name}"/>
58     <pathelement location="${library.localization.dir}/${library.localization.name}"/>
59     <pathelement location="${library.history_manager.dir}/${library.history_manager.name}"/>
60     <pathelement location="${library.completion.dir}/${library.completion.name}"/>
61     <pathelement location="${library.console.dir}/${library.console.name}"/>
62     <pathelement location="${library.action_binding.dir}/${library.action_binding.name}"/>
63     <pathelement location="${library.gui.dir}/${library.gui.name}"/>
64     <pathelement location="${library.commons.dir}/${library.commons.name}"/>
65     <pathelement location="${library.jvm.dir}/${library.jvm.name}"/>
66     <pathelement location="${library.renderer.dir}/${library.renderer.name}"/>
67     <pathelement location="${library.graphic_export.dir}/${library.graphic_export.name}"/>
68     <pathelement location="${library.core.dir}/${library.core.name}"/>
69     <!-- Not use at build time but used for unitary tests -->
70     <pathelement location="${library.javasci.dir}/${library.javasci.name}"/>
71     <pathelement location="${library.javasci.dir}/${library.javasci-v1.name}"/>
72     <pathelement location="${commons-logging.jar}"/>
73     <pathelement location="${flexdock.jar}"/>
74     <pathelement location="${gluegen.jar}"/>
75     <pathelement location="${jrosetta-API.jar}"/>
76     <pathelement location="${jrosetta-engine.jar}"/>
77     <pathelement location="${jogl.jar}"/>
78     <pathelement location="${jhdf5.jar}"/>
79     <pathelement location="${jhall.jar}"/>
80     <pathelement location="${jgraphx.jar}"/>
81     <!-- Only usefull for the documentation -->
82     <pathelement location="${library.helptools.dir}/${library.helptools.name}"/>
83     <pathelement location="${batik.jar}"/>
84     <pathelement location="${xml_apis_ext.jar}"/>
85     <pathelement location="${saxon.jar}"/>
86     <pathelement location="${xmlgraphics-commons.jar}"/>
87     <pathelement location="${fop.jar}"/>
88     <pathelement location="${jlatexmath-fop.jar}"/>
89     <pathelement location="${avalon-framework.jar}"/>
90     <pathelement location="${avalon-framework-impl.jar}"/>
91     <pathelement location="${jeuclid-core.jar}"/>
92     <pathelement location="${jlatexmath.jar}"/>
93   </path>
94   <taskdef resource="checkstyletask.properties" classpathref="checkstyle.classpath"/>
95   <!-- Checkstyle process -->
96   <target name="checkstyle" depends="checkstyle-init" description="Generates a report of code convention violations.">
97     <checkstyle config="${checkstyle.config.file}" failOnViolation="false">
98       <fileset dir="${src.dir}" includes="**/*.java"/>
99       <!-- Location of cache-file. -->
100       <property key="checkstyle.cache.file" file="${cache.dir}"/>
101       <formatter type="plain"/>
102       <formatter type="xml" toFile="${checkstyle.xml.report.file}"/>
103     </checkstyle>
104     <xslt in="${checkstyle.xml.report.file}" out="${checkstyle.html.report.file}" style="${checkstyle.stylesheet}"/>
105   </target>
106   <!-- Create the build directory -->
107   <target name="checkstyle-init">
108     <mkdir dir="${checkstyle.report.dir}"/>
109   </target>
110   <!-- Delete the build directory -->
111   <target name="checkstyle-clean">
112     <delete dir="${checkstyle.report.dir}"/>
113   </target>
114   <target name="test" depends="existing-tests, compile-test, validate" if="test-present">
115     <taskdef name="testng" classpathref="unittest.classpath" classname="org.testng.TestNGAntTask"/>
116     <testng verbose="2" haltonfailure="true">
117       <classpath>
118         <path refid="unittest.classpath"/>
119         <path refid="compile.classpath"/>
120         <pathelement location="${classes.test.dir}"/>
121       </classpath>
122       <classfileset dir="${build.test.dir}" includes="**/*.class"/>
123       <!-- Where ${basedir} is the module base directory -->
124       <env key="SCI" value="${basedir}/../.."/>
125       <jvmarg value="-DtestngTests=1"/>
126       <jvmarg value="-Djava.library.path=${base.dir}/modules/.libs/:${base.dir}/modules/javasci/.libs/:${base.dir}/modules/types/.libs/:${base.dir}/modules/localization/.libs/:${base.dir}/modules/commons/.libs/:${base.dir}/modules/action_binding/.libs/:${base.dir}/thirdparty/:${base.dir}/bin/:/usr/lib/jni/:/usr/lib64/jni:"/>
127     </testng>
128   </target>
129   <target name="validate">
130     <!-- Empty target to be override by other build.xml -->
131   </target>
132   <target name="init">
133     <!-- Check the version of Java. If it changes after the configure
134          or if there is a mistake in the build system
135      -->
136     <fail message="JDK 1.6 or 1.7 required">
137       <condition>
138         <not>
139           <or>
140             <equals arg1="${ant.java.version}" arg2="1.6"/>
141             <equals arg1="${ant.java.version}" arg2="1.7"/>
142           </or>
143         </not>
144       </condition>
145     </fail>
146     <mkdir dir="${classes.dir}"/>
147     <mkdir dir="${classes.test.dir}"/>
148     <mkdir dir="${build.jar.dir}"/>
149     <!-- Create the time stamp -->
150     <tstamp/>
151   </target>
152   <!-- Clean sources -->
153   <target name="clean" description="Clean built files" depends="clean-test">
154     <delete dir="${build.dir}"/>
155     <delete dir="${build.jar.dir}"/>
156     <delete file="${build.jar.dir}/${library.name}"/>
157   </target>
158   <!-- Clean test -->
159   <target name="clean-test" description="Clean test files">
160     <delete dir="${build.test.dir}"/>
161   </target>
162   <!-- Compile sources -->
163   <target name="compile" description="Build sources" depends="init">
164     <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="compile.classpath" deprecation="on" debug="${build.debug}" verbose="off" listfiles="on" includeAntRuntime="no" source="6" target="6"/>
165   </target>
166   <target name="existing-tests">
167     <available property="test-present" file="${src.test.dir}"/>
168   </target>
169   <!-- Compile test sources -->
170   <target name="compile-test" description="Build tests" depends="existing-tests, clean-test, jar" if="test-present">
171     <!-- clean the test to make sure it will build properly -->
172     <javac srcdir="${src.test.dir}" destdir="${classes.test.dir}" deprecation="on" debug="${build.debug}" verbose="off" listfiles="on" includeAntRuntime="no" source="6" target="6" encoding="UTF-8">
173       <classpath>
174         <path refid="unittest.classpath"/>
175         <path refid="compile.classpath"/>
176       </classpath>
177     </javac>
178   </target>
179   <!-- Create the jar -->
180   <target name="jar" description="Build the jar file" depends="compile">
181     <jar destfile="${build.jar.dir}/${library.name}" basedir="${classes.dir}">
182       <manifest>
183         <attribute name="Built-By" value="${user.name}"/>
184         <section name="org/scilab/modules/${ant.project.name}/">
185           <attribute name="Specification-Title" value="${library.title}"/>
186           <attribute name="Specification-Version" value="${SCIVERSION}"/>
187           <attribute name="Specification-Vendor" value="${library.vendor}"/>
188           <attribute name="Implementation-Title" value="${library.name}"/>
189           <attribute name="Implementation-Version" value="${DSTAMP} ${TSTAMP}"/>
190           <attribute name="Implementation-Vendor" value="${library.vendor}"/>
191           <attribute name="Class-Path" value="${manifest.class-path}"/>
192         </section>
193       </manifest>
194     </jar>
195   </target>
196 </project>