Project

Profile

Help

How to connect?
Download (13.6 KB) Statistics
| Branch: | Revision:

he / docs / build.html @ f299305b

1
<?xml version="1.0" encoding="utf-8"?>
2
<html xmlns="http://www.w3.org/1999/xhtml">
3
<head>
4
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5
  <title>Building Saxon</title>
6
  <meta name="author" content="Norm Tovey-Walsh" />
7
  <style type="text/css">
8
html {
9
  font-size: 14pt;
10
  max-width: 50em;
11
  line-height: 1.5;
12
}
13
figure {
14
  margin-top: 1em;
15
  margin-bottom: 1em;
16
  padding: 0.5em;
17
  border: 2pt solid #aaaaaa;
18
}
19
figure img {
20
  margin-top: 0.5em;
21
}
22
  </style>
23
</head>
24
<body>
25
<main>
26
<h1>Building Saxon</h1>
27

    
28
<p>The Saxonica <code>build.gradle</code> file builds three products
29
across three platforms. The Java products can be built on any
30
platform. The .NET products can only be built on Windows. Saxon/C can
31
be built for any platform, but only for the platform that you’re on.
32
(In principle, the Linux version of Saxon/C can be built from any
33
platform with a Docker container, but this technique doesn’t extend to
34
the MacOS and Windows versions, so it hasn’t been pursued
35
agressively.)</p>
36

    
37
<section>
38
<h2>Saxon/J</h2>
39

    
40
<p>The default target for building a Java project in Gradle is
41
<code>compileJava</code>. Unfortunately, the Java sources for Saxon
42
need to be preprocessed in a variety of ways that the default task
43
knows nothing about.</p>
44

    
45
<div>
46
<h3>Saxon HE/J</h3>
47

    
48
<p>To compile Saxon, use the following tasks:
49
<code>hejCompile</code>, <code>pejCompile</code>, or <code>eejCompile</code>.
50
The targets
51
<code>hejRelease</code>, <code>pejRelease</code>, and <code>eejRelease</code>
52
build the </p>
53

    
54
<figure>
55
<figcaption>Build dependencies for <code>hejRelease</code></figcaption>
56
<img src="img/hejRelease.png" width="100%"/>
57
</figure>
58

    
59
</div>
60

    
61

    
62

    
63

    
64

    
65
</section>
66

    
67
<section>
68
<h2>Saxon/N</h2>
69

    
70
</section>
71

    
72
<section>
73
<h2>Saxon/C</h2>
74

    
75
</section>
76

    
77
</main>
78
<div id="targets" class="appendix">
79
<h2>Gradle build targets</h2>
80
<p>Build targets as of 14 November 2020.</p>
81

    
82
<ul class="tasklist">
83
<li><code>dockerBuilderContainer</code>: Build the Saxonica builder container</li>
84
<li><code>dockerCoreContainer</code>: Build the CentOS 8 core container</li>
85
<li><code>dotNetInstallers</code>: Builds all of the .NET installers</li>
86
<li><code>dotNetProducts</code>: Builds all of the .NET products</li>
87
<li><code>eecCompile</code>: Compile EE for Saxon/C</li>
88
<li><code>eecJet</code>: Run JET on EE</li>
89
<li><code>eejCompile</code>: Compile EE for Saxon/Java</li>
90
<li><code>eejJar</code>: Build the EE jar file</li>
91
<li><code>eejJarSql</code>: Build the SQL jar file for EE</li>
92
<li><code>eejJarTests</code>: Create the tests jar file for EE</li>
93
<li><code>eejRelease</code>: Build the EE release for Java</li>
94
<li><code>eenCompile</code>: Compile EE for .NET</li>
95
<li><code>eenDll</code>: Build EE .dll with IKVM</li>
96
<li><code>eenInstaller</code>: Build the EE installer for .NET</li>
97
<li><code>eenProduct</code>: Build Saxon EE for .NET</li>
98
<li><code>hecCompile</code>: Compile HE for C</li>
99
<li><code>hecJet</code>: Run JET on HE</li>
100
<li><code>hejCompile</code>: Compile HE for Saxon/Java</li>
101
<li><code>hejJar</code>: Build the HE jar file</li>
102
<li><code>hejJarTests</code>: Create the tests jar file for HE</li>
103
<li><code>hejJarXqj</code>: Build the XQJ jar file for HE</li>
104
<li><code>hejRelease</code>: Build the HE release for Java</li>
105
<li><code>henCompile</code>: Compile HE for .NET</li>
106
<li><code>henDll</code>: Build HE .dll with IKVM</li>
107
<li><code>henInstaller</code>: Build the HE installer for .NET</li>
108
<li><code>henProduct</code>: Build Saxon HE for .NET</li>
109
<li><code>javaRelease</code>: Build all of the Java releases</li>
110
<li><code>pecCompile</code>: Compile PE for C</li>
111
<li><code>pecJet</code>: Run JET on PE</li>
112
<li><code>pejCompile</code>: Compile PE for Saxon/Java</li>
113
<li><code>pejJar</code>: Build the PE jar file</li>
114
<li><code>pejJarSql</code>: Build the SQL jar file for PE</li>
115
<li><code>pejJarTests</code>: Create the tests jar file for PE</li>
116
<li><code>pejRelease</code>: Build the PE release for Java</li>
117
<li><code>penCompile</code>: Compile PE for .NET</li>
118
<li><code>penDll</code>: Build PE .dll with IKVM</li>
119
<li><code>penInstaller</code>: Build the PE installer for .NET</li>
120
<li><code>penProduct</code>: Build Saxon PE for .NET</li>
121
<li><code>processResources</code>: Processes main resources.</li>
122
<li><code>processTestResources</code>: Processes test resources.</li>
123
<li><code>productDlls</code>: Build all the product .dll files with IKVM</li>
124
</ul>
125

    
126
<p>As a general rule, target names that contain an underscore (“_”)
127
are not expected to be used on their own. They’re build tasks that
128
address dependencies for the “real” build tasks.</p>
129

    
130
<ul class="tasklist">
131
<li><code>asm_asm</code>: Run jarjar on asm-5.0.3 classes</li>
132
<li><code>asm_asm-analysis</code>: Run jarjar on asm-analysis-5.0.3 classes</li>
133
<li><code>asm_asm-commons</code>: Run jarjar on asm-commons-5.0.3 classes</li>
134
<li><code>asm_asm-tree</code>: Run jarjar on asm-tree-5.0.3 classes</li>
135
<li><code>asm_asm-util</code>: Run jarjar on asm-util-5.0.3 classes</li>
136
<li><code>asm_createRules</code>: Create the jarjar rules file for the ASM libraries</li>
137
<li><code>asm_jarjar</code>: Placeholder for the ASM jarjar dependencies</li>
138
<li><code>asm_unzip</code>: Extract classes from the asm-xml-5.0.3 jar</li>
139
<li><code>asm_unzipasm</code>: Extract the classes from the asm-{5.0.3} jar</li>
140
<li><code>asm_unzipasm-analysis</code>: Extract the classes from the asm-analysis-{5.0.3} jar</li>
141
<li><code>asm_unzipasm-commons</code>: Extract the classes from the asm-commons-{5.0.3} jar</li>
142
<li><code>asm_unzipasm-tree</code>: Extract the classes from the asm-tree-{5.0.3} jar</li>
143
<li><code>asm_unzipasm-util</code>: Extract the classes from the asm-util-{5.0.3} jar</li>
144
<li><code>docker_setupBuilder</code>: Setup to build the builder container</li>
145
<li><code>docker_setupJdk</code>: Setup the JDK for the builder container</li>
146
<li><code>docker_setupJet</code>: Setup the Jet archive for the builder container</li>
147
<li><code>docker_testJdk</code>: Test that the dockerJdk property has been specified</li>
148
<li><code>docker_testJet</code>: Test that the dockerJet property has been specified</li>
149
<li><code>eec_copyJet</code>: Copy the JET project file for EE</li>
150
<li><code>eec_copyLibs</code>: Copy library jar files into JET build directory</li>
151
<li><code>eec_jar</code>: Build the EE jar file for Saxon/C</li>
152
<li><code>eec_preprocess</code>: Preprocess EE sources</li>
153
<li><code>eec_setupJet</code>: Create JET libsaxoneec.jprof for EE</li>
154
<li><code>eec_setupPreprocess</code>: Copy EE sources for preprocessing EE</li>
155
<li><code>eec_sources</code>: Collect the preprocessed EE sources for compilation</li>
156
<li><code>eej_compileTestDrivers</code>: Compile the test classes for EE</li>
157
<li><code>eej_copyTestDriverResources</code>: Copy test drivers resources for EE</li>
158
<li><code>eej_copyTestDrivers</code>: Copy test driver sources and resources for EE</li>
159
<li><code>eej_copyTestDriverSources</code>: Copy test drivers sources for EE</li>
160
<li><code>eej_icu4j</code>: Copy the ICU4J jar into the EE release directory</li>
161
<li><code>eej_libs</code>: Dependency to make sure library files are copie for EE</li>
162
<li><code>eej_MetaInf</code>: Create META-INF/services/javax.xml.transform.TransformerFactory for EE</li>
163
<li><code>eej_notices</code>: Copy the notices into the EE release directory</li>
164
<li><code>eej_preprocess</code>: Preprocess EE sources</li>
165
<li><code>eej_schemaFactoryMetaInf</code>: Create META-INF/services/javax.xml.validation.SchemaFactory for EE</li>
166
<li><code>eej_setupPreprocess</code>: Copy sources for preprocessing EE</li>
167
<li><code>eej_setupPreprocessBytecode</code>: Copy bytecode sources and fix imports</li>
168
<li><code>eej_setupPreprocessForPej</code>: Copy EE sources for preprocessing PE</li>
169
<li><code>eej_sources</code>: Collect the preprocessed EE sources for compilation</li>
170
<li><code>een_csharpApi</code>: Compile Saxon.Api for EE (Fails on this platform)</li>
171
<li><code>een_csharpQuery</code>: Compile Query.exe for EE (Fails on this platform)</li>
172
<li><code>een_csharpTransform</code>: Compile Tranform.exe for EE (Fails on this platform)</li>
173
<li><code>een_iss</code>: Create the ee.iss file for the .net installer</li>
174
<li><code>een_jar</code>: Build the EE jar file for Saxon .NET</li>
175
<li><code>een_preprocess</code>: Preprocess EE sources</li>
176
<li><code>een_setupDll</code>: Setup the IKVM environment for EE</li>
177
<li><code>een_setupPreprocess</code>: Copy EE sources for preprocessing EE</li>
178
<li><code>een_sources</code>: Collect the preprocessed EE sources for compilation</li>
179
<li><code>hec_copyJet</code>: Copy the JET project file for HE</li>
180
<li><code>hec_copyLibs</code>: Copy library jar files into JET build directory</li>
181
<li><code>hec_jar</code>: Build the HE jar file for Saxon/C</li>
182
<li><code>hec_preprocess</code>: Preprocess HE sources</li>
183
<li><code>hec_setupJet</code>: Create JET libsaxonhec.jprof for HE</li>
184
<li><code>hec_setupPreprocess</code>: Copy HE sources for preprocessing HE</li>
185
<li><code>hec_sources</code>: Collect the preprocessed HE sources for compilation</li>
186
<li><code>hej_compileTestDrivers</code>: Compile the test classes for HE</li>
187
<li><code>hej_copyTestDriverResources</code>: Copy test drivers resources for HE</li>
188
<li><code>hej_copyTestDrivers</code>: Copy test driver sources and resources for HE</li>
189
<li><code>hej_copyTestDriverSources</code>: Copy test drivers sources for HE</li>
190
<li><code>hej_MetaInf</code>: Create META-INF/services/javax.xml.transform.TransformerFactory for HE</li>
191
<li><code>hej_notices</code>: Copy the notices into the HE release directory</li>
192
<li><code>hej_preprocess</code>: Preprocess HE sources</li>
193
<li><code>hej_setupPreprocess</code>: Copy HE sources for preprocessing HE</li>
194
<li><code>hej_setupPreprocessForEej</code>: Copy HE sources for EE build</li>
195
<li><code>hej_setupPreprocessForPej</code>: Copy HE sources for preprocessing PE</li>
196
<li><code>hej_sources</code>: Collect the preprocessed HE sources for compilation</li>
197
<li><code>hen_ApiAssemblyInfo</code>: Create the AssemblyInfo.cs file for the Saxon.Api</li>
198
<li><code>hen_cmdAssemblyInfo</code>: Create the AssemblyInfo.cs file for the Saxon commands</li>
199
<li><code>hen_copyDevelopmentSources</code>: Setup the C# build environment</li>
200
<li><code>hen_copySamples</code>: Copy the HE sample C# files</li>
201
<li><code>hen_copySaxonApi</code>: Copy the Saxon.API C# files</li>
202
<li><code>hen_copySaxonCmd</code>: Copy the cmd C# files</li>
203
<li><code>hen_csharpApi</code>: Compile Saxon.Api for HE (Fails on this platform)</li>
204
<li><code>hen_csharpQuery</code>: Compile Query.exe for HE (Fails on this platform)</li>
205
<li><code>hen_csharpTransform</code>: Compile Tranform.exe for HE (Fails on this platform)</li>
206
<li><code>hen_iss</code>: Create the he.iss file for the .net installer</li>
207
<li><code>hen_jar</code>: Build the HE jar file for Saxon .NET</li>
208
<li><code>hen_preprocess</code>: Preprocess HE sources</li>
209
<li><code>hen_setupDll</code>: Setup the IKVM environment for HE</li>
210
<li><code>hen_setupPreprocess</code>: Copy HE sources for preprocessing HE</li>
211
<li><code>hen_sources</code>: Collect the preprocessed HE sources for compilation</li>
212
<li><code>ikvm_prepareJar</code>: Copy the ICU4J, TagSoup, Mail, and Xerces jars for IKVM</li>
213
<li><code>ikvm_prepareJarAsm</code>: Copy the ASM jars for IKVM</li>
214
<li><code>n_notices</code>: Copy the notices into the staging directory</li>
215
<li><code>pec_copyJet</code>: Copy the JET project file for PE</li>
216
<li><code>pec_copyLibs</code>: Copy library jar files into JET build directory</li>
217
<li><code>pec_jar</code>: Build the PE jar file for Saxon/C</li>
218
<li><code>pec_preprocess</code>: Preprocess PE sources</li>
219
<li><code>pec_setupJet</code>: Create JET libsaxonpec.jprof for PE</li>
220
<li><code>pec_setupPreprocess</code>: Copy PE sources for preprocessing PE</li>
221
<li><code>pec_sources</code>: Collect the preprocessed PE sources for compilation</li>
222
<li><code>pej_compileTestDrivers</code>: Compile the test classes for PE</li>
223
<li><code>pej_copyTestDriverResources</code>: Copy test drivers resources for PE</li>
224
<li><code>pej_copyTestDrivers</code>: Copy test driver sources and resources for PE</li>
225
<li><code>pej_copyTestDriverSources</code>: Copy test drivers sources for PE</li>
226
<li><code>pej_icu4j</code>: Copy the ICU4J jar into the PE release directory</li>
227
<li><code>pej_libs</code>: Dependency to make sure library files are copie for PE</li>
228
<li><code>pej_MetaInf</code>: Create META-INF/services/javax.xml.transform.TransformerFactory for PE</li>
229
<li><code>pej_notices</code>: Copy the notices into the PE release directory</li>
230
<li><code>pej_preprocess</code>: Preprocess HE sources</li>
231
<li><code>pej_setupPreprocess</code>: Copy sources for preprocessing PE</li>
232
<li><code>pej_sources</code>: Collect the preprocessed PE sources for compilation</li>
233
<li><code>pen_csharpApi</code>: Compile Saxon.Api for PE (Fails on this platform)</li>
234
<li><code>pen_csharpQuery</code>: Compile Query.exe for PE (Fails on this platform)</li>
235
<li><code>pen_csharpTransform</code>: Compile Tranform.exe for PE (Fails on this platform)</li>
236
<li><code>pen_iss</code>: Create the pe.iss file for the .net installer</li>
237
<li><code>pen_jar</code>: Build the PE jar file for Saxon .NET</li>
238
<li><code>pen_preprocess</code>: Preprocess PE sources</li>
239
<li><code>pen_setupDll</code>: Setup the IKVM environment for PE</li>
240
<li><code>pen_setupPreprocess</code>: Copy PE sources for preprocessing PE</li>
241
<li><code>pen_sources</code>: Collect the preprocessed PE sources for compilation</li>
242
<li><code>rejar_Xerces</code>: Unjar Xerces and Resolver for .NET build</li>
243
<li><code>test_jetHome</code>: Test that excelsiorJetHome is configured</li>
244
<li><code>unjar_Resolver</code>: Unjar Resolver for .NET build</li>
245
<li><code>unjar_XercesImpl</code>: Unjar XercesImple for .NET build</li>
246
</ul>
247

    
248
</body>
249
</html>
(1-1/3)