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