diff --git a/config_help.txt b/config_help.txt
index 8eea64e03ae..174187ca03f 100644
--- a/config_help.txt
+++ b/config_help.txt
@@ -167,8 +167,8 @@ Build options:
 
   -pch ................. Use precompiled headers [auto]
   -ltcg ................ Use Link Time Code Generation [no]
-  -linker [bfd,gold,lld] Force use of the GNU ld, GNU gold or LLVM/LLD linker
-                         instead of default one (GCC only)
+  -linker [bfd,gold,lld,link] Force use of the GNU ld, GNU gold, LLVM/LLD linker
+                         or MSVC/link.exe instead of default linker (GCC/clang only)
   -incredibuild-xge .... Use the IncrediBuild XGE [no] (Windows only)
   -ccache .............. Use the ccache compiler cache [no] (Unix only)
   -make-tool <tool> .... Use <tool> to build qmake [nmake] (Windows only)
diff --git a/configure.json b/configure.json
index f7449ec0685..fa0463947b8 100644
--- a/configure.json
+++ b/configure.json
@@ -90,7 +90,7 @@
             "headersclean": "boolean",
             "incredibuild-xge": { "type": "boolean", "name": "incredibuild_xge" },
             "libudev": "boolean",
-            "linker": { "type": "optionalString", "values": [ "bfd", "gold", "lld" ] },
+            "linker": { "type": "optionalString", "values": [ "bfd", "gold", "lld", "link" ] },
             "ltcg": "boolean",
             "make": { "type": "addString", "values": [ "examples", "libs", "tests", "tools" ] },
             "make-tool": "string",
@@ -599,7 +599,12 @@
             "label": "ccache",
             "type": "files",
             "files": [ "ccache" ]
-        }
+        },
+        "has_lld_link": {
+            "label": "lld-link.exe",
+            "type": "files",
+            "files": [ "lld-link.exe" ]
+        },
     },
 
     "features": {
@@ -682,12 +687,20 @@
         },
         "use_lld_linker": {
             "label": "lld",
-            "autoDetect": "false",
+            "autoDetect": "config.clang_cl",
             "enable" : "input.linker == 'lld'",
-            "disable" : "input.linker == 'bfd' || input.linker == 'gold'",
-            "condition": "!config.win32 && !config.integrity && !config.wasm && tests.use_lld_linker",
+            "disable" : "input.linker == 'bfd' || input.linker == 'gold' || input.linker == 'link'",
+            "condition": "(!config.win32 && !config.integrity && !config.wasm && tests.use_lld_linker) || (config.win32 && tests.has_lld_link)",
             "output": [ "privateConfig", "useLLDLinker" ]
         },
+        "use_link_linker": {
+            "label": "MSVC link.exe",
+            "autoDetect": "!config.clang_cl",
+            "enable" : "input.linker == 'link'",
+            "disable" : "input.linker == 'bfd' || input.linker == 'gold' || input.linker == 'lld'",
+            "condition": "config.win32 && tests.has_lld_link",
+            "output": [ "privateConfig" ]
+        },
         "optimize_debug": {
             "label": "Optimize debug build",
             "condition": "!config.msvc && !config.clang && (features.debug || features.debug_and_release) && tests.optimize_debug",
@@ -1424,7 +1437,7 @@ Configure with '-qreal float' to create a build that is binary-compatible with 5
                     "message": "Linker",
                     "type": "firstAvailableFeature",
                     "args": "use_bfd_linker use_gold_linker use_lld_linker",
-                    "condition": "features.use_bfd_linker || features.use_gold_linker || features.use_lld_linker"
+                    "condition": "features.use_bfd_linker || features.use_gold_linker || features.use_lld_linker || features.use_link_linker"
                 },
                 {
                     "type": "feature",
diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf
index 69da78c5b7c..89184c83441 100644
--- a/mkspecs/features/default_post.prf
+++ b/mkspecs/features/default_post.prf
@@ -84,6 +84,7 @@ stack_protector_strong {
     enable_new_dtags: QMAKE_LFLAGS += $$QMAKE_LFLAGS_NEW_DTAGS
     enable_gdb_index: QMAKE_LFLAGS += $$QMAKE_LFLAGS_GDB_INDEX
 }
+win32:use_lld_linker: QMAKE_LINK = lld-link
 
 dll:win32: QMAKE_LFLAGS += $$QMAKE_LFLAGS_DLL
 static:mac: QMAKE_LFLAGS += $$QMAKE_LFLAGS_STATIC_LIB
diff --git a/mkspecs/win32-clang-msvc/qmake.conf b/mkspecs/win32-clang-msvc/qmake.conf
index 9a7f70454d7..c9934169f3a 100644
--- a/mkspecs/win32-clang-msvc/qmake.conf
+++ b/mkspecs/win32-clang-msvc/qmake.conf
@@ -36,7 +36,6 @@ QMAKE_CFLAGS           += -Wno-microsoft-enum-value
 
 QMAKE_CXXFLAGS         += -Wno-microsoft-enum-value
 
-QMAKE_LINK              = lld-link
 QMAKE_LIB               = llvm-lib /NOLOGO
 
 QMAKE_CFLAGS_LTCG       = -flto
