summaryrefslogtreecommitdiffstats
path: root/contrib/java/build-java.xml
blob: ca5cc887951b437ffdc2a38f75f80ad01fd082e0 (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
<!-- This ant build script is called from CMake at configure time -->
<project name="uscxml" default="jar">

<!-- taskdef resource="net/sf/antcontrib/antcontrib.properties">
  <classpath>
    <pathelement location="lib/ant-contrib-1.0b3.jar"/>
  </classpath>
</taskdef -->

<target name="compile" description="Compile the uscxml java code.">
	<echo message="dest: ${build.dir}/src/bindings/swig/java-class/"/>
	<echo message="src:  ${build.dir}/src/bindings/swig/java/"/>
	<echo message="src:  ${src.dir}/src/bindings/swig/java/"/>

  <mkdir dir="${build.dir}/src/bindings/swig/java-class/" />

	<javac destdir="${build.dir}/src/bindings/swig/java-class/" debug="true" includeantruntime="false" target="1.5" source="1.5">
      <src path="${build.dir}/src/bindings/swig/java/" />
      <src path="${src.dir}/src/bindings/swig/java/" />
      <!--classpath>
          <pathelement location="${src.dir}/contrib/java/lib/protobuf-java-2.5.0.jar"/>
      </classpath -->
  </javac>
</target>

<target name="jar" depends="compile" description="Create a bundle of the source code">
	<echo message="library dir:        ${lib.dir}"/>
	<echo message="source dir:         ${src.dir}"/>
	<echo message="build dir:          ${build.dir}"/>
	<echo message="build type:         ${build.type}"/>
	<echo message="exclude debug:      ${exclude.debug}"/>
	<echo message="exclude jni:        ${exclude.jni}"/>

	<condition property="exclude.debug.jar">
		<equals arg1="${exclude.debug}" arg2="ON"/>
	</condition>

	<condition property="exclude.jni.jar">
		<equals arg1="${exclude.jni}" arg2="ON"/>
	</condition>

	<!-- flatten all JNI libraries for inclusion into the fat JAR -->
	<fileset id="all.jni" dir="${lib.dir}">
		<include name="**/*NativeJava*.jnilib"/>
		<include name="**/*NativeJava*.so"/>
		<include name="**/*NativeJava*.dll"/>
		<exclude name="cross-compiled/**"/>
		<exclude name="linux-armv*/**"/>
		<!-- do not include debug builds in release -->
		<!--exclude name="**/*undocoreSwigSwig_d*" if="${exclude.debug.jar}"/ -->
		<!--exclude name="**/*undocoreSwig64_d*" if="${exclude.debug.jar}"/ -->
	</fileset>

	<!-- Copy all JNI libraries as found above into the lib/ directory -->
	<mkdir dir="${lib.dir}/jni" />
	<copy todir="${lib.dir}/jni" flatten="true">
		<fileset refid="all.jni" />
	</copy>
	
  <pathconvert pathsep="${line.separator}|   |-- "             
      property="echo.all.jni"             
      refid="all.jni">
  </pathconvert>
  <echo>${echo.all.jni}</echo>

	<!-- delete an eventual old jar -->
	<delete dir="${lib.dir}/uscxml.jar" />

	<!-- build new jar -->
	<jar destfile="${lib.dir}/uscxml.jar">
		<!-- All the class files we compiled -->
    <fileset dir="${build.dir}/src/bindings/swig/java-class/" >
      <include name="**/*.class" />
    </fileset>
		<!-- Include all source files -->
    <fileset dir="${build.dir}/src/bindings/swig/java/" >
      <include name="**/*.java" />
    </fileset>
    <fileset dir="${src.dir}/src/bindings/swig/java/" >
      <include name="**/*.java" />
    </fileset>
		<!-- The JNI libraries -->
    <fileset dir="${lib.dir}/jni" >
      <include name="**/*" />
	    <exclude name="**/*" if="${exclude.jni.jar}" />
    </fileset>
	</jar>
	<delete dir="${lib.dir}/jni" />
</target>

</project>