-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.xml
92 lines (77 loc) · 3.04 KB
/
build.xml
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
92
<project name="Plinth" default="default">
<description>Builds the Plinth programming language</description>
<property name="platform" value="x86_64-linux"/>
<property name="compiler-src" location="src"/>
<property name="compiler-bin" location="bin"/>
<property name="runtime-src" location="runtime"/>
<property name="runtime-compiled-c" location="runtime/compiled-c"/>
<property name="runtime-binary" location="runtime/runtime.bc"/>
<property name="standard-library-src" location="plinth-src"/>
<property name="standard-library-bin" location="plinth-bin"/>
<property name="test-dir" location="test"/>
<property name="test-script" location="${test-dir}/runtest.py"/>
<target name="init">
<tstamp/>
<mkdir dir="${compiler-bin}"/>
<mkdir dir="${runtime-compiled-c}"/>
<mkdir dir="${standard-library-bin}"/>
</target>
<target name="build-compiler" depends="init">
<javac srcdir="${compiler-src}" destdir="${compiler-bin}" includeantruntime="false" failonerror="true">
<classpath>
<fileset dir="lib" includes="*.jar"/>
</classpath>
</javac>
</target>
<target name="build-runtime" depends="init">
<apply executable="clang" dest="${runtime-compiled-c}" failonerror="true">
<arg value="-emit-llvm"/>
<arg value="-c"/>
<srcfile/>
<arg value="-o"/>
<targetfile/>
<fileset dir="${runtime-src}" includes="**/*.c"/>
<chainedmapper>
<flattenmapper/>
<mapper type="glob" from="*.c" to="*.bc"/>
</chainedmapper>
</apply>
<apply executable="llvm-link" parallel="true" force="true">
<srcfile/>
<arg value="-o"/>
<targetfile/>
<fileset dir="${runtime-compiled-c}" includes="*.bc"/>
<fileset dir="${runtime-src}" includes="**/*.ll"/>
<mergemapper to="${runtime-binary}"/>
</apply>
</target>
<target name="build-standard-library" depends="build-compiler">
<apply executable="java" dir="${compiler-bin}" dest="${standard-library-bin}" parallel="true" force="true" failonerror="true">
<arg value="-cp"/>
<arg value="../lib/jna.jar:."/>
<arg value="eu.bryants.anthony.plinth.compiler.Compiler"/>
<arg value="-o"/>
<targetfile/>
<arg value="-d"/>
<arg file="${standard-library-bin}"/>
<srcfile/>
<fileset dir="${standard-library-src}" includes="**/*.pth"/>
<mergemapper to="plinth.pbc"/>
</apply>
</target>
<target name="run-tests" depends="init, build-compiler, build-runtime, build-standard-library">
<apply executable="${test-script}" force="true" failonerror="true">
<srcfile/>
<fileset dir="${test-dir}" includes="**/*.pth" excludes="*.pth"/>
</apply>
</target>
<target name="clean" depends="init">
<delete>
<fileset dir="${compiler-bin}"/>
<fileset dir="${runtime-compiled-c}"/>
<fileset file="${runtime-binary}"/>
<fileset dir="${standard-library-bin}"/>
</delete>
</target>
<target name="default" depends="init, build-compiler, build-runtime, build-standard-library"/>
</project>