1 | /* Configure script for libxml, specific for Windows with Scripting Host.
|
---|
2 | *
|
---|
3 | * This script will configure the libxml build process and create necessary files.
|
---|
4 | * Run it with an 'help', or an invalid option and it will tell you what options
|
---|
5 | * it accepts.
|
---|
6 | *
|
---|
7 | * March 2002, Igor Zlatkovic <[email protected]>
|
---|
8 | */
|
---|
9 |
|
---|
10 | /* The source directory, relative to the one where this file resides. */
|
---|
11 | var srcDirXml = "..";
|
---|
12 | var srcDirUtils = "..";
|
---|
13 | /* Base name of what we are building. */
|
---|
14 | var baseName = "libxml2";
|
---|
15 | /* Configure file which contains the version and the output file where
|
---|
16 | we can store our build configuration. */
|
---|
17 | var configFile = srcDirXml + "\\configure.in";
|
---|
18 | var versionFile = ".\\config.msvc";
|
---|
19 | /* Input and output files regarding the libxml features. */
|
---|
20 | var optsFileIn = srcDirXml + "\\include\\libxml\\xmlversion.h.in";
|
---|
21 | var optsFile = srcDirXml + "\\include\\libxml\\xmlversion.h";
|
---|
22 | /* Version strings for the binary distribution. Will be filled later
|
---|
23 | in the code. */
|
---|
24 | var verMajor;
|
---|
25 | var verMinor;
|
---|
26 | var verMicro;
|
---|
27 | var verMicroSuffix;
|
---|
28 | var verCvs;
|
---|
29 | var useCvsVer = true;
|
---|
30 | /* Libxml features. */
|
---|
31 | var withTrio = false;
|
---|
32 | var withThreads = "native";
|
---|
33 | var withFtp = true;
|
---|
34 | var withHttp = true;
|
---|
35 | var withHtml = true;
|
---|
36 | var withC14n = true;
|
---|
37 | var withCatalog = true;
|
---|
38 | var withDocb = true;
|
---|
39 | var withXpath = true;
|
---|
40 | var withXptr = true;
|
---|
41 | var withXinclude = true;
|
---|
42 | var withIconv = true;
|
---|
43 | var withIso8859x = false;
|
---|
44 | var withZlib = false;
|
---|
45 | var withDebug = true;
|
---|
46 | var withMemDebug = false;
|
---|
47 | var withRunDebug = false;
|
---|
48 | var withSchemas = true;
|
---|
49 | var withSchematron = true;
|
---|
50 | var withRegExps = true;
|
---|
51 | var withModules = true;
|
---|
52 | var withTree = true;
|
---|
53 | var withReader = true;
|
---|
54 | var withWriter = true;
|
---|
55 | var withWalker = true;
|
---|
56 | var withPattern = true;
|
---|
57 | var withPush = true;
|
---|
58 | var withValid = true;
|
---|
59 | var withSax1 = true;
|
---|
60 | var withLegacy = true;
|
---|
61 | var withOutput = true;
|
---|
62 | var withPython = false;
|
---|
63 | /* Win32 build options. */
|
---|
64 | var dirSep = "\\";
|
---|
65 | var compiler = "msvc";
|
---|
66 | var cruntime = "/MD";
|
---|
67 | var dynruntime = true;
|
---|
68 | var vcmanifest = false;
|
---|
69 | var buildDebug = 0;
|
---|
70 | var buildStatic = 0;
|
---|
71 | var buildPrefix = ".";
|
---|
72 | var buildBinPrefix = "";
|
---|
73 | var buildIncPrefix = "";
|
---|
74 | var buildLibPrefix = "";
|
---|
75 | var buildSoPrefix = "";
|
---|
76 | var buildInclude = ".";
|
---|
77 | var buildLib = ".";
|
---|
78 | /* Local stuff */
|
---|
79 | var error = 0;
|
---|
80 |
|
---|
81 | /* Helper function, transforms the option variable into the 'Enabled'
|
---|
82 | or 'Disabled' string. */
|
---|
83 | function boolToStr(opt)
|
---|
84 | {
|
---|
85 | if (opt == false)
|
---|
86 | return "no";
|
---|
87 | else if (opt == true)
|
---|
88 | return "yes";
|
---|
89 | error = 1;
|
---|
90 | return "*** undefined ***";
|
---|
91 | }
|
---|
92 |
|
---|
93 | /* Helper function, transforms the argument string into a boolean
|
---|
94 | value. */
|
---|
95 | function strToBool(opt)
|
---|
96 | {
|
---|
97 | if (opt == 0 || opt == "no")
|
---|
98 | return false;
|
---|
99 | else if (opt == 1 || opt == "yes")
|
---|
100 | return true;
|
---|
101 | error = 1;
|
---|
102 | return false;
|
---|
103 | }
|
---|
104 |
|
---|
105 | /* Displays the details about how to use this script. */
|
---|
106 | function usage()
|
---|
107 | {
|
---|
108 | var txt;
|
---|
109 | txt = "Usage:\n";
|
---|
110 | txt += " cscript " + WScript.ScriptName + " <options>\n";
|
---|
111 | txt += " cscript " + WScript.ScriptName + " help\n\n";
|
---|
112 | txt += "Options can be specified in the form <option>=<value>, where the value is\n";
|
---|
113 | txt += "either 'yes' or 'no', if not stated otherwise.\n\n";
|
---|
114 | txt += "\nXML processor options, default value given in parentheses:\n\n";
|
---|
115 | txt += " trio: Enable TRIO string manipulator (" + (withTrio? "yes" : "no") + ")\n";
|
---|
116 | txt += " threads: Enable thread safety [no|ctls|native|posix] (" + (withThreads) + ") \n";
|
---|
117 | txt += " ftp: Enable FTP client (" + (withFtp? "yes" : "no") + ")\n";
|
---|
118 | txt += " http: Enable HTTP client (" + (withHttp? "yes" : "no") + ")\n";
|
---|
119 | txt += " html: Enable HTML processor (" + (withHtml? "yes" : "no") + ")\n";
|
---|
120 | txt += " c14n: Enable C14N support (" + (withC14n? "yes" : "no") + ")\n";
|
---|
121 | txt += " catalog: Enable catalog support (" + (withCatalog? "yes" : "no") + ")\n";
|
---|
122 | txt += " docb: Enable DocBook support (" + (withDocb? "yes" : "no") + ")\n";
|
---|
123 | txt += " xpath: Enable XPath support (" + (withXpath? "yes" : "no") + ")\n";
|
---|
124 | txt += " xptr: Enable XPointer support (" + (withXptr? "yes" : "no") + ")\n";
|
---|
125 | txt += " xinclude: Enable XInclude support (" + (withXinclude? "yes" : "no") + ")\n";
|
---|
126 | txt += " iconv: Enable iconv support (" + (withIconv? "yes" : "no") + ")\n";
|
---|
127 | txt += " iso8859x: Enable ISO8859X support (" + (withIso8859x? "yes" : "no") + ")\n";
|
---|
128 | txt += " zlib: Enable zlib support (" + (withZlib? "yes" : "no") + ")\n";
|
---|
129 | txt += " xml_debug: Enable XML debbugging module (" + (withDebug? "yes" : "no") + ")\n";
|
---|
130 | txt += " mem_debug: Enable memory debugger (" + (withMemDebug? "yes" : "no") + ")\n";
|
---|
131 | txt += " run_debug: Enable memory debugger (" + (withRunDebug? "yes" : "no") + ")\n";
|
---|
132 | txt += " regexps: Enable regular expressions (" + (withRegExps? "yes" : "no") + ")\n";
|
---|
133 | txt += " modules: Enable module support (" + (withModules? "yes" : "no") + ")\n";
|
---|
134 | txt += " tree: Enable tree api (" + (withTree? "yes" : "no") + ")\n";
|
---|
135 | txt += " reader: Enable xmlReader api (" + (withReader? "yes" : "no") + ")\n";
|
---|
136 | txt += " writer: Enable xmlWriter api (" + (withWriter? "yes" : "no") + ")\n";
|
---|
137 | txt += " walker: Enable xmlDocWalker api (" + (withWalker? "yes" : "no") + ")\n";
|
---|
138 | txt += " pattern: Enable xmlPattern api (" + (withPattern? "yes" : "no") + ")\n";
|
---|
139 | txt += " push: Enable push api (" + (withPush? "yes" : "no") + ")\n";
|
---|
140 | txt += " valid: Enable DTD validation support (" + (withValid? "yes" : "no") + ")\n";
|
---|
141 | txt += " sax1: Enable SAX1 api (" + (withSax1? "yes" : "no") + ")\n";
|
---|
142 | txt += " legacy: Enable Deprecated api's (" + (withLegacy? "yes" : "no") + ")\n";
|
---|
143 | txt += " output: Enable serialization support (" + (withOutput? "yes" : "no") + ")\n";
|
---|
144 | txt += " schemas: Enable XML Schema support (" + (withSchemas? "yes" : "no") + ")\n";
|
---|
145 | txt += " schematron: Enable Schematron support (" + (withSchematron? "yes" : "no") + ")\n";
|
---|
146 | txt += " python: Build Python bindings (" + (withPython? "yes" : "no") + ")\n";
|
---|
147 | txt += "\nWin32 build options, default value given in parentheses:\n\n";
|
---|
148 | txt += " compiler: Compiler to be used [msvc|mingw|bcb] (" + compiler + ")\n";
|
---|
149 | txt += " cruntime: C-runtime compiler option (only msvc) (" + cruntime + ")\n";
|
---|
150 | txt += " dynruntime: Use the dynamic RTL (only bcb) (" + dynruntime + ")\n";
|
---|
151 | txt += " vcmanifest: Embed VC manifest (only msvc) (" + (vcmanifest? "yes" : "no") + ")\n";
|
---|
152 | txt += " debug: Build unoptimised debug executables (" + (buildDebug? "yes" : "no") + ")\n";
|
---|
153 | txt += " static: Link xmllint statically to libxml2 (" + (buildStatic? "yes" : "no") + ")\n";
|
---|
154 | txt += " Note: automatically enabled if cruntime is not /MD or /MDd\n";
|
---|
155 | txt += " prefix: Base directory for the installation (" + buildPrefix + ")\n";
|
---|
156 | txt += " bindir: Directory where xmllint and friends should be installed\n";
|
---|
157 | txt += " (" + buildBinPrefix + ")\n";
|
---|
158 | txt += " incdir: Directory where headers should be installed\n";
|
---|
159 | txt += " (" + buildIncPrefix + ")\n";
|
---|
160 | txt += " libdir: Directory where static and import libraries should be\n";
|
---|
161 | txt += " installed (" + buildLibPrefix + ")\n";
|
---|
162 | txt += " sodir: Directory where shared libraries should be installed\n";
|
---|
163 | txt += " (" + buildSoPrefix + ")\n";
|
---|
164 | txt += " include: Additional search path for the compiler, particularily\n";
|
---|
165 | txt += " where iconv headers can be found (" + buildInclude + ")\n";
|
---|
166 | txt += " lib: Additional search path for the linker, particularily\n";
|
---|
167 | txt += " where iconv library can be found (" + buildLib + ")\n";
|
---|
168 | WScript.Echo(txt);
|
---|
169 | }
|
---|
170 |
|
---|
171 | /* Discovers the version we are working with by reading the apropriate
|
---|
172 | configuration file. Despite its name, this also writes the configuration
|
---|
173 | file included by our makefile. */
|
---|
174 | function discoverVersion()
|
---|
175 | {
|
---|
176 | var fso, cf, vf, ln, s, iDot, iSlash;
|
---|
177 | fso = new ActiveXObject("Scripting.FileSystemObject");
|
---|
178 | verCvs = "";
|
---|
179 | if (useCvsVer && fso.FileExists("..\\CVS\\Entries")) {
|
---|
180 | cf = fso.OpenTextFile("..\\CVS\\Entries", 1);
|
---|
181 | while (cf.AtEndOfStream != true) {
|
---|
182 | ln = cf.ReadLine();
|
---|
183 | s = new String(ln);
|
---|
184 | if (s.search(/^\/ChangeLog\//) != -1) {
|
---|
185 | iDot = s.indexOf(".");
|
---|
186 | iSlash = s.indexOf("/", iDot);
|
---|
187 | verCvs = "CVS" + s.substring(iDot + 1, iSlash);
|
---|
188 | break;
|
---|
189 | }
|
---|
190 | }
|
---|
191 | cf.Close();
|
---|
192 | }
|
---|
193 | cf = fso.OpenTextFile(configFile, 1);
|
---|
194 | if (compiler == "msvc")
|
---|
195 | versionFile = ".\\config.msvc";
|
---|
196 | else if (compiler == "mingw")
|
---|
197 | versionFile = ".\\config.mingw";
|
---|
198 | else if (compiler == "bcb")
|
---|
199 | versionFile = ".\\config.bcb";
|
---|
200 | vf = fso.CreateTextFile(versionFile, true);
|
---|
201 | vf.WriteLine("# " + versionFile);
|
---|
202 | vf.WriteLine("# This file is generated automatically by " + WScript.ScriptName + ".");
|
---|
203 | vf.WriteBlankLines(1);
|
---|
204 | while (cf.AtEndOfStream != true) {
|
---|
205 | ln = cf.ReadLine();
|
---|
206 | s = new String(ln);
|
---|
207 | if (s.search(/^LIBXML_MAJOR_VERSION=/) != -1) {
|
---|
208 | vf.WriteLine(s);
|
---|
209 | verMajor = s.substring(s.indexOf("=") + 1, s.length)
|
---|
210 | } else if(s.search(/^LIBXML_MINOR_VERSION=/) != -1) {
|
---|
211 | vf.WriteLine(s);
|
---|
212 | verMinor = s.substring(s.indexOf("=") + 1, s.length)
|
---|
213 | } else if(s.search(/^LIBXML_MICRO_VERSION=/) != -1) {
|
---|
214 | vf.WriteLine(s);
|
---|
215 | verMicro = s.substring(s.indexOf("=") + 1, s.length)
|
---|
216 | } else if(s.search(/^LIBXML_MICRO_VERSION_SUFFIX=/) != -1) {
|
---|
217 | vf.WriteLine(s);
|
---|
218 | verMicroSuffix = s.substring(s.indexOf("=") + 1, s.length)
|
---|
219 | }
|
---|
220 | }
|
---|
221 | cf.Close();
|
---|
222 | vf.WriteLine("XML_SRCDIR=" + srcDirXml);
|
---|
223 | vf.WriteLine("UTILS_SRCDIR=" + srcDirUtils);
|
---|
224 | vf.WriteLine("WITH_TRIO=" + (withTrio? "1" : "0"));
|
---|
225 | vf.WriteLine("WITH_THREADS=" + withThreads);
|
---|
226 | vf.WriteLine("WITH_FTP=" + (withFtp? "1" : "0"));
|
---|
227 | vf.WriteLine("WITH_HTTP=" + (withHttp? "1" : "0"));
|
---|
228 | vf.WriteLine("WITH_HTML=" + (withHtml? "1" : "0"));
|
---|
229 | vf.WriteLine("WITH_C14N=" + (withC14n? "1" : "0"));
|
---|
230 | vf.WriteLine("WITH_CATALOG=" + (withCatalog? "1" : "0"));
|
---|
231 | vf.WriteLine("WITH_DOCB=" + (withDocb? "1" : "0"));
|
---|
232 | vf.WriteLine("WITH_XPATH=" + (withXpath? "1" : "0"));
|
---|
233 | vf.WriteLine("WITH_XPTR=" + (withXptr? "1" : "0"));
|
---|
234 | vf.WriteLine("WITH_XINCLUDE=" + (withXinclude? "1" : "0"));
|
---|
235 | vf.WriteLine("WITH_ICONV=" + (withIconv? "1" : "0"));
|
---|
236 | vf.WriteLine("WITH_ISO8859X=" + (withIso8859x? "1" : "0"));
|
---|
237 | vf.WriteLine("WITH_ZLIB=" + (withZlib? "1" : "0"));
|
---|
238 | vf.WriteLine("WITH_DEBUG=" + (withDebug? "1" : "0"));
|
---|
239 | vf.WriteLine("WITH_MEM_DEBUG=" + (withMemDebug? "1" : "0"));
|
---|
240 | vf.WriteLine("WITH_RUN_DEBUG=" + (withRunDebug? "1" : "0"));
|
---|
241 | vf.WriteLine("WITH_SCHEMAS=" + (withSchemas? "1" : "0"));
|
---|
242 | vf.WriteLine("WITH_SCHEMATRON=" + (withSchematron? "1" : "0"));
|
---|
243 | vf.WriteLine("WITH_REGEXPS=" + (withRegExps? "1" : "0"));
|
---|
244 | vf.WriteLine("WITH_MODULES=" + (withModules? "1" : "0"));
|
---|
245 | vf.WriteLine("WITH_TREE=" + (withTree? "1" : "0"));
|
---|
246 | vf.WriteLine("WITH_READER=" + (withReader? "1" : "0"));
|
---|
247 | vf.WriteLine("WITH_WRITER=" + (withWriter? "1" : "0"));
|
---|
248 | vf.WriteLine("WITH_WALKER=" + (withWalker? "1" : "0"));
|
---|
249 | vf.WriteLine("WITH_PATTERN=" + (withPattern? "1" : "0"));
|
---|
250 | vf.WriteLine("WITH_PUSH=" + (withPush? "1" : "0"));
|
---|
251 | vf.WriteLine("WITH_VALID=" + (withValid? "1" : "0"));
|
---|
252 | vf.WriteLine("WITH_SAX1=" + (withSax1? "1" : "0"));
|
---|
253 | vf.WriteLine("WITH_LEGACY=" + (withLegacy? "1" : "0"));
|
---|
254 | vf.WriteLine("WITH_OUTPUT=" + (withOutput? "1" : "0"));
|
---|
255 | vf.WriteLine("WITH_PYTHON=" + (withPython? "1" : "0"));
|
---|
256 | vf.WriteLine("DEBUG=" + (buildDebug? "1" : "0"));
|
---|
257 | vf.WriteLine("STATIC=" + (buildStatic? "1" : "0"));
|
---|
258 | vf.WriteLine("PREFIX=" + buildPrefix);
|
---|
259 | vf.WriteLine("BINPREFIX=" + buildBinPrefix);
|
---|
260 | vf.WriteLine("INCPREFIX=" + buildIncPrefix);
|
---|
261 | vf.WriteLine("LIBPREFIX=" + buildLibPrefix);
|
---|
262 | vf.WriteLine("SOPREFIX=" + buildSoPrefix);
|
---|
263 | if (compiler == "msvc") {
|
---|
264 | vf.WriteLine("INCLUDE=$(INCLUDE);" + buildInclude);
|
---|
265 | vf.WriteLine("LIB=$(LIB);" + buildLib);
|
---|
266 | vf.WriteLine("CRUNTIME=" + cruntime);
|
---|
267 | vf.WriteLine("VCMANIFEST=" + (vcmanifest? "1" : "0"));
|
---|
268 | } else if (compiler == "mingw") {
|
---|
269 | vf.WriteLine("INCLUDE+=;" + buildInclude);
|
---|
270 | vf.WriteLine("LIB+=;" + buildLib);
|
---|
271 | } else if (compiler == "bcb") {
|
---|
272 | vf.WriteLine("INCLUDE=" + buildInclude);
|
---|
273 | vf.WriteLine("LIB=" + buildLib);
|
---|
274 | vf.WriteLine("DYNRUNTIME=" + (dynruntime? "1" : "0"));
|
---|
275 | }
|
---|
276 | vf.Close();
|
---|
277 | }
|
---|
278 |
|
---|
279 | /* Configures libxml. This one will generate xmlversion.h from xmlversion.h.in
|
---|
280 | taking what the user passed on the command line into account. */
|
---|
281 | function configureLibxml()
|
---|
282 | {
|
---|
283 | var fso, ofi, of, ln, s;
|
---|
284 | fso = new ActiveXObject("Scripting.FileSystemObject");
|
---|
285 | ofi = fso.OpenTextFile(optsFileIn, 1);
|
---|
286 | of = fso.CreateTextFile(optsFile, true);
|
---|
287 | while (ofi.AtEndOfStream != true) {
|
---|
288 | ln = ofi.ReadLine();
|
---|
289 | s = new String(ln);
|
---|
290 | if (s.search(/\@VERSION\@/) != -1) {
|
---|
291 | of.WriteLine(s.replace(/\@VERSION\@/,
|
---|
292 | verMajor + "." + verMinor + "." + verMicro + verMicroSuffix));
|
---|
293 | } else if (s.search(/\@LIBXML_VERSION_NUMBER\@/) != -1) {
|
---|
294 | of.WriteLine(s.replace(/\@LIBXML_VERSION_NUMBER\@/,
|
---|
295 | verMajor*10000 + verMinor*100 + verMicro*1));
|
---|
296 | } else if (s.search(/\@LIBXML_VERSION_EXTRA\@/) != -1) {
|
---|
297 | of.WriteLine(s.replace(/\@LIBXML_VERSION_EXTRA\@/, verCvs));
|
---|
298 | } else if (s.search(/\@WITH_TRIO\@/) != -1) {
|
---|
299 | of.WriteLine(s.replace(/\@WITH_TRIO\@/, withTrio? "1" : "0"));
|
---|
300 | } else if (s.search(/\@WITH_THREADS\@/) != -1) {
|
---|
301 | of.WriteLine(s.replace(/\@WITH_THREADS\@/, withThreads == "no"? "0" : "1"));
|
---|
302 | } else if (s.search(/\@WITH_FTP\@/) != -1) {
|
---|
303 | of.WriteLine(s.replace(/\@WITH_FTP\@/, withFtp? "1" : "0"));
|
---|
304 | } else if (s.search(/\@WITH_HTTP\@/) != -1) {
|
---|
305 | of.WriteLine(s.replace(/\@WITH_HTTP\@/, withHttp? "1" : "0"));
|
---|
306 | } else if (s.search(/\@WITH_HTML\@/) != -1) {
|
---|
307 | of.WriteLine(s.replace(/\@WITH_HTML\@/, withHtml? "1" : "0"));
|
---|
308 | } else if (s.search(/\@WITH_C14N\@/) != -1) {
|
---|
309 | of.WriteLine(s.replace(/\@WITH_C14N\@/, withC14n? "1" : "0"));
|
---|
310 | } else if (s.search(/\@WITH_CATALOG\@/) != -1) {
|
---|
311 | of.WriteLine(s.replace(/\@WITH_CATALOG\@/, withCatalog? "1" : "0"));
|
---|
312 | } else if (s.search(/\@WITH_DOCB\@/) != -1) {
|
---|
313 | of.WriteLine(s.replace(/\@WITH_DOCB\@/, withDocb? "1" : "0"));
|
---|
314 | } else if (s.search(/\@WITH_XPATH\@/) != -1) {
|
---|
315 | of.WriteLine(s.replace(/\@WITH_XPATH\@/, withXpath? "1" : "0"));
|
---|
316 | } else if (s.search(/\@WITH_XPTR\@/) != -1) {
|
---|
317 | of.WriteLine(s.replace(/\@WITH_XPTR\@/, withXptr? "1" : "0"));
|
---|
318 | } else if (s.search(/\@WITH_XINCLUDE\@/) != -1) {
|
---|
319 | of.WriteLine(s.replace(/\@WITH_XINCLUDE\@/, withXinclude? "1" : "0"));
|
---|
320 | } else if (s.search(/\@WITH_ICONV\@/) != -1) {
|
---|
321 | of.WriteLine(s.replace(/\@WITH_ICONV\@/, withIconv? "1" : "0"));
|
---|
322 | } else if (s.search(/\@WITH_ISO8859X\@/) != -1) {
|
---|
323 | of.WriteLine(s.replace(/\@WITH_ISO8859X\@/, withIso8859x? "1" : "0"));
|
---|
324 | } else if (s.search(/\@WITH_ZLIB\@/) != -1) {
|
---|
325 | of.WriteLine(s.replace(/\@WITH_ZLIB\@/, withZlib? "1" : "0"));
|
---|
326 | } else if (s.search(/\@WITH_DEBUG\@/) != -1) {
|
---|
327 | of.WriteLine(s.replace(/\@WITH_DEBUG\@/, withDebug? "1" : "0"));
|
---|
328 | } else if (s.search(/\@WITH_MEM_DEBUG\@/) != -1) {
|
---|
329 | of.WriteLine(s.replace(/\@WITH_MEM_DEBUG\@/, withMemDebug? "1" : "0"));
|
---|
330 | } else if (s.search(/\@WITH_RUN_DEBUG\@/) != -1) {
|
---|
331 | of.WriteLine(s.replace(/\@WITH_RUN_DEBUG\@/, withRunDebug? "1" : "0"));
|
---|
332 | } else if (s.search(/\@WITH_SCHEMAS\@/) != -1) {
|
---|
333 | of.WriteLine(s.replace(/\@WITH_SCHEMAS\@/, withSchemas? "1" : "0"));
|
---|
334 | } else if (s.search(/\@WITH_SCHEMATRON\@/) != -1) {
|
---|
335 | of.WriteLine(s.replace(/\@WITH_SCHEMATRON\@/, withSchematron? "1" : "0"));
|
---|
336 | } else if (s.search(/\@WITH_REGEXPS\@/) != -1) {
|
---|
337 | of.WriteLine(s.replace(/\@WITH_REGEXPS\@/, withRegExps? "1" : "0"));
|
---|
338 | } else if (s.search(/\@WITH_MODULES\@/) != -1) {
|
---|
339 | of.WriteLine(s.replace(/\@WITH_MODULES\@/, withModules? "1" : "0"));
|
---|
340 | } else if (s.search(/\@MODULE_EXTENSION\@/) != -1) {
|
---|
341 | of.WriteLine(s.replace(/\@MODULE_EXTENSION\@/, ".dll"));
|
---|
342 | } else if (s.search(/\@WITH_TREE\@/) != -1) {
|
---|
343 | of.WriteLine(s.replace(/\@WITH_TREE\@/, withTree? "1" : "0"));
|
---|
344 | } else if (s.search(/\@WITH_READER\@/) != -1) {
|
---|
345 | of.WriteLine(s.replace(/\@WITH_READER\@/, withReader? "1" : "0"));
|
---|
346 | } else if (s.search(/\@WITH_WRITER\@/) != -1) {
|
---|
347 | of.WriteLine(s.replace(/\@WITH_WRITER\@/, withWriter? "1" : "0"));
|
---|
348 | } else if (s.search(/\@WITH_WALKER\@/) != -1) {
|
---|
349 | of.WriteLine(s.replace(/\@WITH_WALKER\@/, withWalker? "1" : "0"));
|
---|
350 | } else if (s.search(/\@WITH_PATTERN\@/) != -1) {
|
---|
351 | of.WriteLine(s.replace(/\@WITH_PATTERN\@/, withPattern? "1" : "0"));
|
---|
352 | } else if (s.search(/\@WITH_PUSH\@/) != -1) {
|
---|
353 | of.WriteLine(s.replace(/\@WITH_PUSH\@/, withPush? "1" : "0"));
|
---|
354 | } else if (s.search(/\@WITH_VALID\@/) != -1) {
|
---|
355 | of.WriteLine(s.replace(/\@WITH_VALID\@/, withValid? "1" : "0"));
|
---|
356 | } else if (s.search(/\@WITH_SAX1\@/) != -1) {
|
---|
357 | of.WriteLine(s.replace(/\@WITH_SAX1\@/, withSax1? "1" : "0"));
|
---|
358 | } else if (s.search(/\@WITH_LEGACY\@/) != -1) {
|
---|
359 | of.WriteLine(s.replace(/\@WITH_LEGACY\@/, withLegacy? "1" : "0"));
|
---|
360 | } else if (s.search(/\@WITH_OUTPUT\@/) != -1) {
|
---|
361 | of.WriteLine(s.replace(/\@WITH_OUTPUT\@/, withOutput? "1" : "0"));
|
---|
362 | } else
|
---|
363 | of.WriteLine(ln);
|
---|
364 | }
|
---|
365 | ofi.Close();
|
---|
366 | of.Close();
|
---|
367 | }
|
---|
368 | /* Configures Python bindings. Otherwise identical to the above */
|
---|
369 | function configureLibxmlPy()
|
---|
370 | {
|
---|
371 | var pyOptsFileIn = srcDirXml + "\\python\\setup.py.in";
|
---|
372 | var pyOptsFile = srcDirXml + "\\python\\setup.py";
|
---|
373 | var fso, ofi, of, ln, s;
|
---|
374 | fso = new ActiveXObject("Scripting.FileSystemObject");
|
---|
375 | ofi = fso.OpenTextFile(pyOptsFileIn, 1);
|
---|
376 | of = fso.CreateTextFile(pyOptsFile, true);
|
---|
377 | while (ofi.AtEndOfStream != true) {
|
---|
378 | ln = ofi.ReadLine();
|
---|
379 | s = new String(ln);
|
---|
380 | if (s.search(/\@LIBXML_VERSION\@/) != -1) {
|
---|
381 | of.WriteLine(s.replace(/\@LIBXML_VERSION\@/,
|
---|
382 | verMajor + "." + verMinor + "." + verMicro));
|
---|
383 | } else if (s.search(/\@prefix\@/) != -1) {
|
---|
384 | of.WriteLine(s.replace(/\@prefix\@/, buildPrefix));
|
---|
385 | } else if (s.search(/\@WITH_THREADS\@/) != -1) {
|
---|
386 | of.WriteLine(s.replace(/\@WITH_THREADS\@/, withThreads == "no"? "0" : "1"));
|
---|
387 | } else
|
---|
388 | of.WriteLine(ln);
|
---|
389 | }
|
---|
390 | ofi.Close();
|
---|
391 | of.Close();
|
---|
392 | }
|
---|
393 |
|
---|
394 | /* Creates the readme file for the binary distribution of 'bname', for the
|
---|
395 | version 'ver' in the file 'file'. This one is called from the Makefile when
|
---|
396 | generating a binary distribution. The parameters are passed by make. */
|
---|
397 | function genReadme(bname, ver, file)
|
---|
398 | {
|
---|
399 | var fso, f;
|
---|
400 | fso = new ActiveXObject("Scripting.FileSystemObject");
|
---|
401 | f = fso.CreateTextFile(file, true);
|
---|
402 | f.WriteLine(" " + bname + " " + ver);
|
---|
403 | f.WriteLine(" --------------");
|
---|
404 | f.WriteBlankLines(1);
|
---|
405 | f.WriteLine(" This is " + bname + ", version " + ver + ", binary package for the native Win32/IA32");
|
---|
406 | f.WriteLine("platform.");
|
---|
407 | f.WriteBlankLines(1);
|
---|
408 | f.WriteLine(" The files in this package do not require any special installation");
|
---|
409 | f.WriteLine("steps. Extract the contents of the archive whereever you wish and");
|
---|
410 | f.WriteLine("make sure that your tools which use " + bname + " can find it.");
|
---|
411 | f.WriteBlankLines(1);
|
---|
412 | f.WriteLine(" For example, if you want to run the supplied utilities from the command");
|
---|
413 | f.WriteLine("line, you can, if you wish, add the 'bin' subdirectory to the PATH");
|
---|
414 | f.WriteLine("environment variable.");
|
---|
415 | f.WriteLine(" If you want to make programmes in C which use " + bname + ", you'll");
|
---|
416 | f.WriteLine("likely know how to use the contents of this package. If you don't, please");
|
---|
417 | f.WriteLine("refer to your compiler's documentation.");
|
---|
418 | f.WriteBlankLines(1);
|
---|
419 | f.WriteLine(" If there is something you cannot keep for yourself, such as a problem,");
|
---|
420 | f.WriteLine("a cheer of joy, a comment or a suggestion, feel free to contact me using");
|
---|
421 | f.WriteLine("the address below.");
|
---|
422 | f.WriteBlankLines(1);
|
---|
423 | f.WriteLine(" Igor Zlatkovic ([email protected])");
|
---|
424 | f.Close();
|
---|
425 | }
|
---|
426 |
|
---|
427 |
|
---|
428 | /*
|
---|
429 | * main(),
|
---|
430 | * Execution begins here.
|
---|
431 | */
|
---|
432 |
|
---|
433 | // Parse the command-line arguments.
|
---|
434 | for (i = 0; (i < WScript.Arguments.length) && (error == 0); i++) {
|
---|
435 | var arg, opt;
|
---|
436 | arg = WScript.Arguments(i);
|
---|
437 | opt = arg.substring(0, arg.indexOf("="));
|
---|
438 | if (opt.length == 0)
|
---|
439 | opt = arg.substring(0, arg.indexOf(":"));
|
---|
440 | if (opt.length > 0) {
|
---|
441 | if (opt == "trio")
|
---|
442 | withTrio = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
443 | else if (opt == "threads")
|
---|
444 | withThreads = arg.substring(opt.length + 1, arg.length);
|
---|
445 | else if (opt == "ftp")
|
---|
446 | withFtp = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
447 | else if (opt == "http")
|
---|
448 | withHttp = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
449 | else if (opt == "html")
|
---|
450 | withHtml = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
451 | else if (opt == "c14n")
|
---|
452 | withC14n = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
453 | else if (opt == "catalog")
|
---|
454 | withCatalog = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
455 | else if (opt == "docb")
|
---|
456 | withDocb = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
457 | else if (opt == "xpath")
|
---|
458 | withXpath = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
459 | else if (opt == "xptr")
|
---|
460 | withXptr = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
461 | else if (opt == "xinclude")
|
---|
462 | withXinclude = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
463 | else if (opt == "iconv")
|
---|
464 | withIconv = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
465 | else if (opt == "iso8859x")
|
---|
466 | withIso8859x = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
467 | else if (opt == "zlib")
|
---|
468 | withZlib = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
469 | else if (opt == "xml_debug")
|
---|
470 | withDebug = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
471 | else if (opt == "mem_debug")
|
---|
472 | withMemDebug = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
473 | else if (opt == "run_debug")
|
---|
474 | withRunDebug = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
475 | else if (opt == "schemas")
|
---|
476 | withSchemas = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
477 | else if (opt == "schematron")
|
---|
478 | withSchematron = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
479 | else if (opt == "regexps")
|
---|
480 | withRegExps = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
481 | else if (opt == "modules")
|
---|
482 | withModules = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
483 | else if (opt == "tree")
|
---|
484 | withTree = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
485 | else if (opt == "reader")
|
---|
486 | withReader = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
487 | else if (opt == "writer")
|
---|
488 | withWriter = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
489 | else if (opt == "walker")
|
---|
490 | withWalker = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
491 | else if (opt == "pattern")
|
---|
492 | withPattern = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
493 | else if (opt == "push")
|
---|
494 | withPush = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
495 | else if (opt == "valid")
|
---|
496 | withValid = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
497 | else if (opt == "sax1")
|
---|
498 | withSax1 = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
499 | else if (opt == "legacy")
|
---|
500 | withLegacy = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
501 | else if (opt == "output")
|
---|
502 | withOutput = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
503 | else if (opt == "python")
|
---|
504 | withPython = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
505 | else if (opt == "compiler")
|
---|
506 | compiler = arg.substring(opt.length + 1, arg.length);
|
---|
507 | else if (opt == "cruntime")
|
---|
508 | cruntime = arg.substring(opt.length + 1, arg.length);
|
---|
509 | else if (opt == "dynruntime")
|
---|
510 | dynruntime = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
511 | else if (opt == "vcmanifest")
|
---|
512 | vcmanifest = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
513 | else if (opt == "debug")
|
---|
514 | buildDebug = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
515 | else if (opt == "static")
|
---|
516 | buildStatic = strToBool(arg.substring(opt.length + 1, arg.length));
|
---|
517 | else if (opt == "prefix")
|
---|
518 | buildPrefix = arg.substring(opt.length + 1, arg.length);
|
---|
519 | else if (opt == "incdir")
|
---|
520 | buildIncPrefix = arg.substring(opt.length + 1, arg.length);
|
---|
521 | else if (opt == "bindir")
|
---|
522 | buildBinPrefix = arg.substring(opt.length + 1, arg.length);
|
---|
523 | else if (opt == "libdir")
|
---|
524 | buildLibPrefix = arg.substring(opt.length + 1, arg.length);
|
---|
525 | else if (opt == "sodir")
|
---|
526 | buildSoPrefix = arg.substring(opt.length + 1, arg.length);
|
---|
527 | else if (opt == "incdir")
|
---|
528 | buildIncPrefix = arg.substring(opt.length + 1, arg.length);
|
---|
529 | else if (opt == "include")
|
---|
530 | buildInclude = arg.substring(opt.length + 1, arg.length);
|
---|
531 | else if (opt == "lib")
|
---|
532 | buildLib = arg.substring(opt.length + 1, arg.length);
|
---|
533 | else if (opt == "release")
|
---|
534 | useCvsVer = false;
|
---|
535 | else
|
---|
536 | error = 1;
|
---|
537 | } else if (i == 0) {
|
---|
538 | if (arg == "genreadme") {
|
---|
539 | // This command comes from the Makefile and will not be checked
|
---|
540 | // for errors, because Makefile will always supply right the parameters.
|
---|
541 | genReadme(WScript.Arguments(1), WScript.Arguments(2), WScript.Arguments(3));
|
---|
542 | WScript.Quit(0);
|
---|
543 | } else if (arg == "help") {
|
---|
544 | usage();
|
---|
545 | WScript.Quit(0);
|
---|
546 | }
|
---|
547 |
|
---|
548 | } else {
|
---|
549 | error = 1;
|
---|
550 | }
|
---|
551 | }
|
---|
552 |
|
---|
553 |
|
---|
554 | // If we fail here, it is because the user supplied an unrecognised argument.
|
---|
555 | if (error != 0) {
|
---|
556 | usage();
|
---|
557 | WScript.Quit(error);
|
---|
558 | }
|
---|
559 |
|
---|
560 | // if user choses to link the c-runtime library statically into libxml2
|
---|
561 | // with /MT and friends, then we need to enable static linking for xmllint
|
---|
562 | if (cruntime == "/MT" || cruntime == "/MTd" ||
|
---|
563 | cruntime == "/ML" || cruntime == "/MLd") {
|
---|
564 | buildStatic = 1;
|
---|
565 | }
|
---|
566 |
|
---|
567 | dirSep = "\\";
|
---|
568 | if (buildBinPrefix == "")
|
---|
569 | buildBinPrefix = "$(PREFIX)" + dirSep + "bin";
|
---|
570 | if (buildIncPrefix == "")
|
---|
571 | buildIncPrefix = "$(PREFIX)" + dirSep + "include";
|
---|
572 | if (buildLibPrefix == "")
|
---|
573 | buildLibPrefix = "$(PREFIX)" + dirSep + "lib";
|
---|
574 | if (buildSoPrefix == "")
|
---|
575 | buildSoPrefix = "$(PREFIX)" + dirSep + "lib";
|
---|
576 |
|
---|
577 | // Discover the version.
|
---|
578 | discoverVersion();
|
---|
579 | if (error != 0) {
|
---|
580 | WScript.Echo("Version discovery failed, aborting.");
|
---|
581 | WScript.Quit(error);
|
---|
582 | }
|
---|
583 |
|
---|
584 | var outVerString = baseName + " version: " + verMajor + "." + verMinor + "." + verMicro;
|
---|
585 | if (verMicroSuffix && verMicroSuffix != "")
|
---|
586 | outVerString += "-" + verMicroSuffix;
|
---|
587 | if (verCvs && verCvs != "")
|
---|
588 | outVerString += "-" + verCvs;
|
---|
589 | WScript.Echo(outVerString);
|
---|
590 |
|
---|
591 | // Configure libxml.
|
---|
592 | configureLibxml();
|
---|
593 | if (error != 0) {
|
---|
594 | WScript.Echo("Configuration failed, aborting.");
|
---|
595 | WScript.Quit(error);
|
---|
596 | }
|
---|
597 |
|
---|
598 | if (withPython == true) {
|
---|
599 | configureLibxmlPy();
|
---|
600 | if (error != 0) {
|
---|
601 | WScript.Echo("Configuration failed, aborting.");
|
---|
602 | WScript.Quit(error);
|
---|
603 | }
|
---|
604 |
|
---|
605 | }
|
---|
606 |
|
---|
607 | // Create the makefile.
|
---|
608 | var fso = new ActiveXObject("Scripting.FileSystemObject");
|
---|
609 | var makefile = ".\\Makefile.msvc";
|
---|
610 | if (compiler == "mingw")
|
---|
611 | makefile = ".\\Makefile.mingw";
|
---|
612 | else if (compiler == "bcb")
|
---|
613 | makefile = ".\\Makefile.bcb";
|
---|
614 | fso.CopyFile(makefile, ".\\Makefile", true);
|
---|
615 | WScript.Echo("Created Makefile.");
|
---|
616 | // Create the config.h.
|
---|
617 | var confighsrc = "..\\include\\win32config.h";
|
---|
618 | var configh = "..\\config.h";
|
---|
619 | var f = fso.FileExists(configh);
|
---|
620 | if (f) {
|
---|
621 | var t = fso.GetFile(configh);
|
---|
622 | t.Attributes =0;
|
---|
623 | }
|
---|
624 | fso.CopyFile(confighsrc, configh, true);
|
---|
625 | WScript.Echo("Created config.h.");
|
---|
626 |
|
---|
627 |
|
---|
628 | // Display the final configuration.
|
---|
629 | var txtOut = "\nXML processor configuration\n";
|
---|
630 | txtOut += "---------------------------\n";
|
---|
631 | txtOut += " Trio: " + boolToStr(withTrio) + "\n";
|
---|
632 | txtOut += " Thread safety: " + withThreads + "\n";
|
---|
633 | txtOut += " FTP client: " + boolToStr(withFtp) + "\n";
|
---|
634 | txtOut += " HTTP client: " + boolToStr(withHttp) + "\n";
|
---|
635 | txtOut += " HTML processor: " + boolToStr(withHtml) + "\n";
|
---|
636 | txtOut += " C14N support: " + boolToStr(withC14n) + "\n";
|
---|
637 | txtOut += " Catalog support: " + boolToStr(withCatalog) + "\n";
|
---|
638 | txtOut += " DocBook support: " + boolToStr(withDocb) + "\n";
|
---|
639 | txtOut += " XPath support: " + boolToStr(withXpath) + "\n";
|
---|
640 | txtOut += " XPointer support: " + boolToStr(withXptr) + "\n";
|
---|
641 | txtOut += " XInclude support: " + boolToStr(withXinclude) + "\n";
|
---|
642 | txtOut += " iconv support: " + boolToStr(withIconv) + "\n";
|
---|
643 | txtOut += " iso8859x support: " + boolToStr(withIso8859x) + "\n";
|
---|
644 | txtOut += " zlib support: " + boolToStr(withZlib) + "\n";
|
---|
645 | txtOut += " Debugging module: " + boolToStr(withDebug) + "\n";
|
---|
646 | txtOut += " Memory debugging: " + boolToStr(withMemDebug) + "\n";
|
---|
647 | txtOut += " Runtime debugging: " + boolToStr(withRunDebug) + "\n";
|
---|
648 | txtOut += " Regexp support: " + boolToStr(withRegExps) + "\n";
|
---|
649 | txtOut += " Module support: " + boolToStr(withModules) + "\n";
|
---|
650 | txtOut += " Tree support: " + boolToStr(withTree) + "\n";
|
---|
651 | txtOut += " Reader support: " + boolToStr(withReader) + "\n";
|
---|
652 | txtOut += " Writer support: " + boolToStr(withWriter) + "\n";
|
---|
653 | txtOut += " Walker support: " + boolToStr(withWalker) + "\n";
|
---|
654 | txtOut += " Pattern support: " + boolToStr(withPattern) + "\n";
|
---|
655 | txtOut += " Push support: " + boolToStr(withPush) + "\n";
|
---|
656 | txtOut += "Validation support: " + boolToStr(withValid) + "\n";
|
---|
657 | txtOut += " SAX1 support: " + boolToStr(withSax1) + "\n";
|
---|
658 | txtOut += " Legacy support: " + boolToStr(withLegacy) + "\n";
|
---|
659 | txtOut += " Output support: " + boolToStr(withOutput) + "\n";
|
---|
660 | txtOut += "XML Schema support: " + boolToStr(withSchemas) + "\n";
|
---|
661 | txtOut += "Schematron support: " + boolToStr(withSchematron) + "\n";
|
---|
662 | txtOut += " Python bindings: " + boolToStr(withPython) + "\n";
|
---|
663 | txtOut += "\n";
|
---|
664 | txtOut += "Win32 build configuration\n";
|
---|
665 | txtOut += "-------------------------\n";
|
---|
666 | txtOut += " Compiler: " + compiler + "\n";
|
---|
667 | if (compiler == "msvc") {
|
---|
668 | txtOut += " C-Runtime option: " + cruntime + "\n";
|
---|
669 | txtOut += " Embed Manifest: " + boolToStr(vcmanifest) + "\n";
|
---|
670 | } else if (compiler == "bcb")
|
---|
671 | txtOut += " Use dynamic RTL: " + dynruntime + "\n";
|
---|
672 | txtOut += " Debug symbols: " + boolToStr(buildDebug) + "\n";
|
---|
673 | txtOut += " Static xmllint: " + boolToStr(buildStatic) + "\n";
|
---|
674 | txtOut += " Install prefix: " + buildPrefix + "\n";
|
---|
675 | txtOut += " Put tools in: " + buildBinPrefix + "\n";
|
---|
676 | txtOut += " Put headers in: " + buildIncPrefix + "\n";
|
---|
677 | txtOut += "Put static libs in: " + buildLibPrefix + "\n";
|
---|
678 | txtOut += "Put shared libs in: " + buildSoPrefix + "\n";
|
---|
679 | txtOut += " Include path: " + buildInclude + "\n";
|
---|
680 | txtOut += " Lib path: " + buildLib + "\n";
|
---|
681 | WScript.Echo(txtOut);
|
---|
682 |
|
---|
683 | //
|
---|
684 |
|
---|