diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri
index 564aff9ab930627df6409332018df76601d6e466..72a873235a780c96665e7555dcf10fde0f23d9b5 100644
--- a/src/corelib/tools/tools.pri
+++ b/src/corelib/tools/tools.pri
@@ -122,8 +122,19 @@ contains(QT_CONFIG, zlib) {
 contains(QT_CONFIG,icu) {
     SOURCES += tools/qlocale_icu.cpp
     DEFINES += QT_USE_ICU
-    win32:LIBS_PRIVATE += -licuin -licuuc
-    else:LIBS_PRIVATE += -licui18n -licuuc
+    win32 {
+        CONFIG(static, static|shared) {
+            CONFIG(debug, debug|release) {
+                LIBS_PRIVATE += -lsicuind -lsicuucd -lsicudtd
+            } else {
+                LIBS_PRIVATE += -lsicuin -lsicuuc -lsicudt
+            }
+        } else {
+            LIBS_PRIVATE += -licuin -licuuc
+        }
+    } else {
+        LIBS_PRIVATE += -licui18n -licuuc
+    }
 }
 
 pcre {
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index af470939e9d0b27e8e307c14f141febcad523af8..d19d34e54ee9b6fee3ca3957ccbdb9ae710d6690 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -2017,7 +2017,8 @@ bool Configure::checkAvailability(const QString &part)
 
     else if (part == "ICU")
         available = findFile("unicode/utypes.h") && findFile("unicode/ucol.h") && findFile("unicode/ustring.h")
-                        && (findFile("icuin.lib") || findFile("libicuin.lib")); // libicun.lib if compiled with mingw
+                        && (findFile("icuin.lib") || findFile("sicuin.lib")
+                              || findFile("libicuin.lib") || findFile("libsicuin.lib")); // "lib" prefix for mingw, 's' prefix for static
 
     else if (part == "ANGLE") {
         available = checkAngleAvailability();