| diff --git a/third_party/libxml/win32/Makefile.msvc b/third_party/libxml/win32/Makefile.msvc | 
 | index 2409905..253c46e 100644 | 
 | --- a/third_party/libxml/win32/Makefile.msvc | 
 | +++ b/third_party/libxml/win32/Makefile.msvc | 
 | @@ -71,6 +71,9 @@ LIBS = $(LIBS) wsock32.lib ws2_32.lib | 
 |  !if "$(WITH_ICONV)" == "1" | 
 |  LIBS = $(LIBS) iconv.lib | 
 |  !endif  | 
 | +!if "$(WITH_ICU)" == "1" | 
 | +LIBS = $(LIBS) icu.lib | 
 | +!endif | 
 |  !if "$(WITH_ZLIB)" == "1" | 
 |  LIBS = $(LIBS) zdll.lib | 
 |  !endif | 
 | diff --git a/third_party/libxml/win32/configure.js b/third_party/libxml/win32/configure.js | 
 | index e71d2af..75def3f 100644 | 
 | --- a/third_party/libxml/win32/configure.js | 
 | +++ b/third_party/libxml/win32/configure.js | 
 | @@ -40,6 +40,7 @@ var withXpath = true; | 
 |  var withXptr = true; | 
 |  var withXinclude = true; | 
 |  var withIconv = true; | 
 | +var withIcu = false; | 
 |  var withIso8859x = false; | 
 |  var withZlib = false; | 
 |  var withDebug = true; | 
 | @@ -124,6 +125,7 @@ function usage() | 
 |  	txt += "  xptr:       Enable XPointer support (" + (withXptr? "yes" : "no")  + ")\n"; | 
 |  	txt += "  xinclude:   Enable XInclude support (" + (withXinclude? "yes" : "no")  + ")\n"; | 
 |  	txt += "  iconv:      Enable iconv support (" + (withIconv? "yes" : "no")  + ")\n"; | 
 | +	txt += "  icu:        Enable icu support (" + (withIcu? "yes" : "no")  + ")\n"; | 
 |  	txt += "  iso8859x:   Enable ISO8859X support (" + (withIso8859x? "yes" : "no")  + ")\n"; | 
 |  	txt += "  zlib:       Enable zlib support (" + (withZlib? "yes" : "no")  + ")\n"; | 
 |  	txt += "  xml_debug:  Enable XML debbugging module (" + (withDebug? "yes" : "no")  + ")\n"; | 
 | @@ -233,6 +235,7 @@ function discoverVersion() | 
 |  	vf.WriteLine("WITH_XPTR=" + (withXptr? "1" : "0")); | 
 |  	vf.WriteLine("WITH_XINCLUDE=" + (withXinclude? "1" : "0")); | 
 |  	vf.WriteLine("WITH_ICONV=" + (withIconv? "1" : "0")); | 
 | +	vf.WriteLine("WITH_ICU=" + (withIcu? "1" : "0")); | 
 |  	vf.WriteLine("WITH_ISO8859X=" + (withIso8859x? "1" : "0")); | 
 |  	vf.WriteLine("WITH_ZLIB=" + (withZlib? "1" : "0")); | 
 |  	vf.WriteLine("WITH_DEBUG=" + (withDebug? "1" : "0")); | 
 | @@ -319,6 +322,8 @@ function configureLibxml() | 
 |  			of.WriteLine(s.replace(/\@WITH_XINCLUDE\@/, withXinclude? "1" : "0")); | 
 |  		} else if (s.search(/\@WITH_ICONV\@/) != -1) { | 
 |  			of.WriteLine(s.replace(/\@WITH_ICONV\@/, withIconv? "1" : "0")); | 
 | +		} else if (s.search(/\@WITH_ICU\@/) != -1) { | 
 | +			of.WriteLine(s.replace(/\@WITH_ICU\@/, withIcu? "1" : "0")); | 
 |  		} else if (s.search(/\@WITH_ISO8859X\@/) != -1) { | 
 |  			of.WriteLine(s.replace(/\@WITH_ISO8859X\@/, withIso8859x? "1" : "0")); | 
 |  		} else if (s.search(/\@WITH_ZLIB\@/) != -1) { | 
 | @@ -462,6 +467,8 @@ for (i = 0; (i < WScript.Arguments.length) && (error == 0); i++) { | 
 |  			withXinclude = strToBool(arg.substring(opt.length + 1, arg.length)); | 
 |  		else if (opt == "iconv") | 
 |  			withIconv = strToBool(arg.substring(opt.length + 1, arg.length)); | 
 | +		else if (opt == "icu") | 
 | +			withIcu = strToBool(arg.substring(opt.length + 1, arg.length)); | 
 |  		else if (opt == "iso8859x") | 
 |  			withIso8859x = strToBool(arg.substring(opt.length + 1, arg.length)); | 
 |  		else if (opt == "zlib") | 
 | @@ -646,6 +653,7 @@ txtOut += "     XPath support: " + boolToStr(withXpath) + "\n"; | 
 |  txtOut += "  XPointer support: " + boolToStr(withXptr) + "\n"; | 
 |  txtOut += "  XInclude support: " + boolToStr(withXinclude) + "\n"; | 
 |  txtOut += "     iconv support: " + boolToStr(withIconv) + "\n"; | 
 | +txtOut += "     icu   support: " + boolToStr(withIcu) + "\n"; | 
 |  txtOut += "  iso8859x support: " + boolToStr(withIso8859x) + "\n"; | 
 |  txtOut += "      zlib support: " + boolToStr(withZlib) + "\n"; | 
 |  txtOut += "  Debugging module: " + boolToStr(withDebug) + "\n"; |