diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9ecc42a98..f54eae136 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -29,6 +29,7 @@ set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT T
 
 get_filename_component(third_party_loc "Telegram/ThirdParty" REALPATH)
 get_filename_component(submodules_loc "Telegram" REALPATH)
+get_filename_component(cmake_helpers_loc "cmake" REALPATH)
 
 include(cmake/variables.cmake)
 include(cmake/nice_target_sources.cmake)
@@ -37,6 +38,7 @@ include(cmake/target_link_frameworks.cmake)
 include(cmake/init_target.cmake)
 include(cmake/generate_target.cmake)
 include(cmake/nuget.cmake)
+include(cmake/validate_d3d_compiler.cmake)
 
 include(cmake/options.cmake)
 
diff --git a/Telegram/CMakeLists.txt b/Telegram/CMakeLists.txt
index 55dda89e3..22034b21e 100644
--- a/Telegram/CMakeLists.txt
+++ b/Telegram/CMakeLists.txt
@@ -82,50 +82,6 @@ PRIVATE
     desktop-app::external_xxhash
 )
 
-if (LINUX)
-    target_link_libraries(Telegram
-    PRIVATE
-        desktop-app::external_glibmm
-        desktop-app::external_glib
-    )
-
-    if (NOT DESKTOP_APP_DISABLE_DBUS_INTEGRATION)
-        target_link_libraries(Telegram
-        PRIVATE
-            desktop-app::external_statusnotifieritem
-            desktop-app::external_dbusmenu_qt
-        )
-    endif()
-
-    if (NOT DESKTOP_APP_DISABLE_X11_INTEGRATION)
-        target_link_libraries(Telegram
-        PRIVATE
-            desktop-app::external_xcb
-        )
-    endif()
-
-    if (NOT DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION)
-        target_link_libraries(Telegram
-        PRIVATE
-            desktop-app::lib_waylandshells
-            desktop-app::external_kwayland
-        )
-    endif()
-
-    if (NOT DESKTOP_APP_DISABLE_GTK_INTEGRATION)
-        find_package(PkgConfig REQUIRED)
-
-        pkg_check_modules(GTK REQUIRED gtk+-3.0)
-        target_include_directories(Telegram SYSTEM PRIVATE ${GTK_INCLUDE_DIRS})
-
-        if (NOT DESKTOP_APP_DISABLE_X11_INTEGRATION)
-            target_link_libraries(Telegram PRIVATE X11)
-        endif()
-
-        target_link_libraries(Telegram PRIVATE rt)
-    endif()
-endif()
-
 target_precompile_headers(Telegram PRIVATE ${src_loc}/stdafx.h)
 nice_target_sources(Telegram ${src_loc}
 PRIVATE
@@ -1303,6 +1259,48 @@ elseif (APPLE)
             )
         endif()
     endif()
+else()
+    target_link_libraries(Telegram
+    PRIVATE
+        desktop-app::external_glibmm
+        desktop-app::external_glib
+    )
+
+    if (NOT DESKTOP_APP_DISABLE_DBUS_INTEGRATION)
+        target_link_libraries(Telegram
+        PRIVATE
+            desktop-app::external_statusnotifieritem
+            desktop-app::external_dbusmenu_qt
+        )
+    endif()
+
+    if (NOT DESKTOP_APP_DISABLE_X11_INTEGRATION)
+        target_link_libraries(Telegram
+        PRIVATE
+            desktop-app::external_xcb
+        )
+    endif()
+
+    if (NOT DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION)
+        target_link_libraries(Telegram
+        PRIVATE
+            desktop-app::lib_waylandshells
+            desktop-app::external_kwayland
+        )
+    endif()
+
+    if (NOT DESKTOP_APP_DISABLE_GTK_INTEGRATION)
+        find_package(PkgConfig REQUIRED)
+
+        pkg_check_modules(GTK REQUIRED gtk+-3.0)
+        target_include_directories(Telegram SYSTEM PRIVATE ${GTK_INCLUDE_DIRS})
+
+        if (NOT DESKTOP_APP_DISABLE_X11_INTEGRATION)
+            target_link_libraries(Telegram PRIVATE X11)
+        endif()
+
+        target_link_libraries(Telegram PRIVATE rt)
+    endif()
 endif()
 
 if (build_macstore)
diff --git a/cmake b/cmake
index 872027e46..46a49caa2 160000
--- a/cmake
+++ b/cmake
@@ -1 +1 @@
-Subproject commit 872027e466611376db002709ce3db4b6dd432808
+Subproject commit 46a49caa21c16d3cc563798b8c26ba936cdd30e3
diff --git a/docs/building-win.md b/docs/building-win.md
index df9d177f3..b16c15bcf 100644
--- a/docs/building-win.md
+++ b/docs/building-win.md
@@ -35,12 +35,15 @@ Open **x86 Native Tools Command Prompt for VS 2019.bat**, go to ***BuildPath***
     git clone https://github.com/desktop-app/patches.git
     cd patches
     git checkout 87a2e9ee07
-    cd ../
+    cd ..
+
     git clone https://chromium.googlesource.com/external/gyp
     cd gyp
     git checkout 9f2a7bb1
     git apply ../patches/gyp.diff
-    cd ..\..
+    cd ..
+
+    python -m pip install pywin32
 
 Add **GYP**, **Ninja** and **NuGet** to your PATH: