1
<project name="JNode-Core" default="all" basedir=".">
2
3
  <typedef file="${basedir}/../all/lib/jnode.xml"/>
4
		
5
  <property name="my-build.dir" value="${basedir}/build"/>
6
  <property name="my-gen.dir" value="${my-build.dir}/gen"/>
7
  <property name="my-gen-plan.dir" value="${my-build.dir}/gen-plan"/>
8
  <property name="my-classes.dir" value="${my-build.dir}/classes"/>
9
  <property name="my-classes-plan.dir" value="${my-build.dir}/classes-plan"/>
10
  <property name="my-src.dir" value="${basedir}/src"/>
11
  <property name="my-non-resources" value="**/*.java,**/package.html"/>
12
	
13
  <!-- Subproject specific classpath -->
14
  <path id="my-cp">
15
    <path refid="cp"/>
16
    <pathelement location="${junit.jar}"/>
17
  	<pathelement location="${mmtk.jar}"/>
18
  	<pathelement location="${mauve.jar}"/>
19
  </path>
20
21
  <!-- the sources that we have to compile -->
22
  <path id="classpath-sources">
23
	<pathelement location="${my-src.dir}/classpath/gnu"/>
24
	<pathelement location="${my-src.dir}/classpath/java"/>
25
	<pathelement location="${my-src.dir}/classpath/javax"/>
26
	<pathelement location="${my-src.dir}/classpath/tools"/>
27
	<pathelement location="${my-src.dir}/openjdk/java"/>
28
	<pathelement location="${my-src.dir}/openjdk/javax"/>
29
	<pathelement location="${my-src.dir}/openjdk/org"/>
30
	<pathelement location="${my-src.dir}/openjdk/com"/>
31
	<pathelement location="${my-src.dir}/openjdk/sun"/>
32
	<pathelement location="${my-src.dir}/openjdk/svm"/>
33
    <pathelement location="${my-src.dir}/icedtea"/>
34
    <pathelement location="${my-src.dir}/classlib"/>
35
  </path>
36
  <path id="classpath-sources-vm">
37
    <pathelement location="${my-src.dir}/classpath/ext"/>  
38
    <pathelement location="${my-src.dir}/classpath/vm"/>
39
    <pathelement location="${my-src.dir}/openjdk/vm"/>
40
  </path>
41
  <path id="classpath-sources-corba">
42
    <pathelement location="${my-src.dir}/openjdk/corba"/>
43
  </path>
44
  <path id="classpath-sources-jaxws">
45
    <pathelement location="${my-src.dir}/openjdk/jaxws"/>
46
  </path>
47
  <path id="classpath-sources-langtools">
48
    <pathelement location="${my-src.dir}/openjdk/langtools"/>
49
  </path>
50
  <path id="my-sources1">
51
	<path refid="classpath-sources-vm"/>
52
	<pathelement location="${my-src.dir}/core"/>
53
	<pathelement location="${my-src.dir}/endorsed/nanoxml"/>
54
	<pathelement location="${my-src.dir}/vmmagic"/>
55
	<pathelement location="${my-src.dir}/mmtk-vm"/>
56
	<pathelement location="${my-src.dir}/driver"/>
57
	<pathelement location="${my-src.dir}/test"/>
58
	<pathelement location="${my-src.dir}/emu"/>
59
  </path>
60
  <path id="my-sources">
61
	<path refid="my-sources1"/>
62
	<pathelement location="${my-gen.dir}"/>
63
  </path>
64
		
65
  <macrodef name="ExpandTest">
66
    <attribute name="classname"/>
67
    <attribute name="type"/>
68
    <attribute name="template" default="${my-src.dir}/test/org/jnode/test/PrimitiveTest.jtemplate"/>
69
    <sequential>
70
      <copy tofile="${my-gen.dir}/org/jnode/test/@{classname}.java" file="@{template}">
71
        <filterset>
72
          <filter token="classname" value="@{classname}"/>
73
          <filter token="type" value="@{type}"/>
74
        </filterset>
75
      </copy>
76
    </sequential>
77
  </macrodef>
78
79
  <macrodef name="CreatePlan">
80
    <attribute name="package"/>
81
    <sequential>
82
      <copy tofile="${my-gen-plan.dir}/@{package}/org/mmtk/vm/Plan.java" 
83
      	    file="${my-src.dir}/mmtk-vm/org/mmtk/vm/Plan.template">
84
        <filterset>
85
          <filter token="PKG" value="@{package}"/>
86
        </filterset>
87
      </copy>
88
      <copy tofile="${my-gen-plan.dir}/@{package}/org/mmtk/vm/PlanConstants.java" 
89
      	    file="${my-src.dir}/mmtk-vm/org/mmtk/vm/PlanConstants.template">
90
        <filterset>
91
          <filter token="PKG" value="@{package}"/>
92
        </filterset>
93
      </copy>
94
      <mkdir dir="${my-classes-plan.dir}/@{package}/"/>
95
      <jnode.compile destdir="${my-classes-plan.dir}/@{package}/">
96
        <src path="${my-gen-plan.dir}/@{package}/"/>
97
      	<classpath>
98
     		<pathelement location="${classlib.jar}"/>
99
     		<pathelement location="${jnode-code.jar}"/>
100
     		<pathelement location="${mmtk.jar}"/>
101
      	</classpath>
102
      </jnode.compile>
103
    </sequential>
104
  </macrodef>
105
106
  <!-- Initialize all subproject directories -->
107
  <target name="prepare">
108
    <mkdir dir="${my-classes.dir}"/>
109
    <mkdir dir="${my-gen.dir}"/>
110
  	<jnode.copy-descriptors/>
111
112
  	<copy todir="${my-classes.dir}">
113
      <fileset dir="${my-src.dir}/classpath/vm" includes="**/*.security"/>
114
      <fileset dir="${my-src.dir}/openjdk/vm" includes="**/*.jav"/>
115
    </copy>
116
    <ExpandTest classname="PrimitiveIntTest" type="int"/>
117
    <ExpandTest classname="PrimitiveLongTest" type="long"/>
118
    <ExpandTest classname="PrimitiveFloatTest" type="float"/>
119
    <ExpandTest classname="PrimitiveDoubleTest" type="double"/>
120
121
    <taskdef name="template" classname="org.jnode.ant.taskdefs.TemplateTask" classpathref="cp-jnode"/>
122
    <template file="${my-src.dir}/template/org/jnode/vm/VmSystemSettings.java"
123
          tofile="${my-gen.dir}/org/jnode/vm/VmSystemSettings.java">
124
        <token name="@java.home@" value="${jnode.java.home}"/>
125
        <token name="@java.io.tmpdir@" value="${jnode.java.io.tmpdir}"/>
126
        <token name="@user.home@" value="${jnode.user.home}"/>
127
    </template>
128
    <template file="${my-src.dir}/template/org/jnode/security/JNodeSecurityManagerSettings.java"
129
          tofile="${my-gen.dir}/org/jnode/security/JNodeSecurityManagerSettings.java">
130
        <token name="@jnode.security.enabled@" value="${jnode.security.enabled}"/>
131
    </template>
132
  </target>
133
134
  <!-- Compile all subproject java files -->
135
  <target name="compile" depends="prepare">
136
      <!--
137
    <jnode.compile>
138
      <src refid="classpath-sources" />
139
      <classpath refid="my-cp"/>
140
    </jnode.compile>
141
    -->
142
    <parallel >
143
      <jnode.compile>
144
        <src refid="my-sources" />
145
        <classpath refid="my-cp"/>
146
      </jnode.compile>
147
        <!--
148
      <jnode.compile>
149
        <src refid="classpath-sources-corba" />
150
        <classpath refid="my-cp"/>
151
      </jnode.compile>
152
      <jnode.compile>
153
        <src refid="classpath-sources-jaxws" />
154
        <classpath refid="my-cp"/>
155
      </jnode.compile>
156
      <jnode.compile>
157
        <src refid="classpath-sources-langtools" />
158
        <classpath refid="my-cp"/>
159
      </jnode.compile>
160
      -->
161
    </parallel>
162
163
    <!-- Copy all non java files to class dir -->
164
    <copy todir="${my-classes.dir}">
165
	    <fileset dir="${my-src.dir}/classpath/ext" excludes="${my-non-resources}"/>
166
	    <fileset dir="${my-src.dir}/classpath/vm" excludes="${my-non-resources}"/>
167
	    <fileset dir="${my-src.dir}/openjdk/vm" excludes="${my-non-resources}"/>
168
	    <fileset dir="${my-src.dir}/core" excludes="${my-non-resources}"/>
169
	    <fileset dir="${my-src.dir}/endorsed/nanoxml" excludes="${my-non-resources}"/>
170
	    <fileset dir="${my-src.dir}/vmmagic" excludes="${my-non-resources}"/>
171
	    <fileset dir="${my-src.dir}/mmtk-vm" excludes="${my-non-resources}"/>
172
	    <fileset dir="${my-src.dir}/driver" excludes="${my-non-resources}"/>
173
	    <fileset dir="${my-src.dir}/test" excludes="${my-non-resources}"/>
174
    </copy>
175
176
  	<!-- Create & compile plan classes -->
177
	<CreatePlan package="org.jnode.vm.memmgr.mmtk.genrc"/>
178
	<CreatePlan package="org.jnode.vm.memmgr.mmtk.ms"/>
179
	<CreatePlan package="org.jnode.vm.memmgr.mmtk.nogc"/>
180
  </target>
181
	
182
  <!-- Assemble the jarfile -->
183
  <target name="assemble" depends="compile">
184
  </target>
185
186
  <!-- Do it all -->
187
  <target name="all" depends="assemble"/>
188
189
  <!-- Clean everything -->
190
  <target name="clean">
191
  	<jnode.clean/>
192
  </target>
193
194
</project>