~ubuntu-branches/ubuntu/wily/opencollada/wily-proposed

« back to all changes in this revision

Viewing changes to Externals/LibXML/win32/configure.js

  • Committer: Package Import Robot
  • Author(s): Matteo F. Vescovi
  • Date: 2015-05-14 17:23:27 UTC
  • Revision ID: package-import@ubuntu.com-20150514172327-f862u8envms01fra
Tags: upstream-0.1.0~20140703.ddf8f47+dfsg1
ImportĀ upstreamĀ versionĀ 0.1.0~20140703.ddf8f47+dfsg1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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 <igor@zlatkovic.com>
 
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 (igor@zlatkovic.com)");
 
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