diff --git a/swift/CMakeLists.txt b/swift/CMakeLists.txt
index 7490e1df821..9a5ec99cba0 100644
--- a/swift/CMakeLists.txt
+++ b/swift/CMakeLists.txt
@@ -944,7 +944,7 @@
   message(STATUS "Doxygen: enabled")
 endif()
 
-if(SWIFT_BUILD_SYNTAXPARSERLIB OR SWIFT_BUILD_SOURCEKIT)
+if((SWIFT_BUILD_SYNTAXPARSERLIB OR SWIFT_BUILD_SOURCEKIT) AND ${SWIFT_HOST_VARIANT_SDK} MATCHES "OSX|WINDOWS")
   if(NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
     if(CMAKE_C_COMPILER_ID STREQUAL Clang AND
        CMAKE_C_COMPILER_VERSION VERSION_GREATER 3.8
diff --git a/swift/cmake/modules/AddSwift.cmake b/swift/cmake/modules/AddSwift.cmake
index b40bd4d881e..8c51c6b6857 100644
--- a/swift/cmake/modules/AddSwift.cmake
+++ b/swift/cmake/modules/AddSwift.cmake
@@ -480,10 +480,10 @@ function(_add_variant_link_flags)
     list(APPEND library_search_directories
          ${CMAKE_BINARY_DIR}/winsdk_lib_${LFLAGS_ARCH}_symlinks)
   elseif("${LFLAGS_SDK}" STREQUAL "HAIKU")
-    list(APPEND link_libraries "bsd" "atomic")
+    list(APPEND link_libraries "bsd")
     list(APPEND result "-Wl,-Bsymbolic")
   elseif("${LFLAGS_SDK}" STREQUAL "ANDROID")
-    list(APPEND link_libraries "dl" "log" "atomic")
+    list(APPEND link_libraries "dl" "log")
     # We need to add the math library, which is linked implicitly by libc++
     list(APPEND result "-lm")
 
diff --git a/swift/lib/Driver/CMakeLists.txt b/swift/lib/Driver/CMakeLists.txt
index 448f5044b70..e665dfcfefe 100644
--- a/swift/lib/Driver/CMakeLists.txt
+++ b/swift/lib/Driver/CMakeLists.txt
@@ -27,42 +27,3 @@ target_link_libraries(swiftDriver PRIVATE
   swiftAST
   swiftBasic
   swiftOption)
-
-# Generate the static-stdlib-args.lnk file used by -static-stdlib option
-# for 'GenericUnix' (eg linux)
-if(SWIFT_BUILD_STATIC_STDLIB)
-  set(static_stdlib_lnk_file_list)
-  foreach(sdk ${SWIFT_CONFIGURED_SDKS})
-    if("${SWIFT_SDK_${sdk}_OBJECT_FORMAT}" STREQUAL "ELF")
-      string(TOLOWER "${sdk}" lowercase_sdk)
-      if(SWIFT_${SWIFT_HOST_VARIANT_SDK}_${SWIFT_HOST_VARIANT_ARCH}_ICU_STATICLIB)
-        set(ICU_STATICLIB "TRUE")
-      else()
-        set(ICU_STATICLIB "FALSE")
-        find_package(ICU REQUIRED COMPONENTS uc i18n)
-        get_filename_component(ICU_UC_LIBDIR "${ICU_UC_LIBRARIES}" DIRECTORY)
-        get_filename_component(ICU_I18N_LIBDIR "${ICU_I18N_LIBRARIES}" DIRECTORY)
-      endif()
-      set(linkfile "${lowercase_sdk}/static-stdlib-args.lnk")
-      add_custom_command_target(swift_static_stdlib_${sdk}_args
-        COMMAND
-          "${SWIFT_SOURCE_DIR}/utils/gen-static-stdlib-link-args"
-          "${sdk}"
-          "${SWIFTSTATICLIB_DIR}/${linkfile}"
-          "${ICU_STATICLIB}"
-          "${ICU_UC_LIBDIR}"
-          "${ICU_I18N_LIBDIR}"
-        OUTPUT
-          "${SWIFTSTATICLIB_DIR}/${linkfile}"
-        DEPENDS
-          "${SWIFT_SOURCE_DIR}/utils/gen-static-stdlib-link-args")
-
-      list(APPEND static_stdlib_lnk_file_list ${swift_static_stdlib_${sdk}_args})
-      swift_install_in_component(FILES "${SWIFTSTATICLIB_DIR}/${linkfile}"
-                                 DESTINATION "lib/swift_static/${lowercase_sdk}"
-                                 COMPONENT stdlib)
-    endif()
-  endforeach()
-  add_custom_target(swift_static_lnk_args ALL DEPENDS ${static_stdlib_lnk_file_list})
-  add_dependencies(stdlib swift_static_lnk_args)
-endif()
diff --git a/swift/stdlib/CMakeLists.txt b/swift/stdlib/CMakeLists.txt
index 9f3cf240d3d..d2ce14d5f47 100644
--- a/swift/stdlib/CMakeLists.txt
+++ b/swift/stdlib/CMakeLists.txt
@@ -83,6 +83,43 @@ if(SWIFT_BUILD_STATIC_STDLIB)
   else()
     list(APPEND SWIFT_STDLIB_LIBRARY_BUILD_TYPES STATIC)
   endif()
+
+  # Generate the static-stdlib-args.lnk file used by -static-stdlib option
+  # for 'GenericUnix' (eg linux)
+  set(static_stdlib_lnk_file_list)
+  foreach(sdk ${SWIFT_SDKS})
+    if("${SWIFT_SDK_${sdk}_OBJECT_FORMAT}" STREQUAL "ELF")
+      string(TOLOWER "${sdk}" lowercase_sdk)
+      if(SWIFT_${SWIFT_HOST_VARIANT_SDK}_${SWIFT_HOST_VARIANT_ARCH}_ICU_STATICLIB)
+        set(ICU_STATICLIB "TRUE")
+      else()
+        set(ICU_STATICLIB "FALSE")
+        find_package(ICU REQUIRED COMPONENTS uc i18n)
+        get_filename_component(ICU_UC_LIBDIR "${ICU_UC_LIBRARIES}" DIRECTORY)
+        get_filename_component(ICU_I18N_LIBDIR "${ICU_I18N_LIBRARIES}" DIRECTORY)
+      endif()
+      set(linkfile "${lowercase_sdk}/static-stdlib-args.lnk")
+      add_custom_command_target(swift_static_stdlib_${sdk}_args
+        COMMAND
+          "${SWIFT_SOURCE_DIR}/utils/gen-static-stdlib-link-args"
+          "${sdk}"
+          "${SWIFTSTATICLIB_DIR}/${linkfile}"
+          "${ICU_STATICLIB}"
+          "${ICU_UC_LIBDIR}"
+          "${ICU_I18N_LIBDIR}"
+        OUTPUT
+          "${SWIFTSTATICLIB_DIR}/${linkfile}"
+        DEPENDS
+          "${SWIFT_SOURCE_DIR}/utils/gen-static-stdlib-link-args")
+
+      list(APPEND static_stdlib_lnk_file_list ${swift_static_stdlib_${sdk}_args})
+      swift_install_in_component(FILES "${SWIFTSTATICLIB_DIR}/${linkfile}"
+                                 DESTINATION "lib/swift_static/${lowercase_sdk}"
+                                 COMPONENT stdlib)
+    endif()
+  endforeach()
+  add_custom_target(swift_static_lnk_args ALL DEPENDS ${static_stdlib_lnk_file_list})
+  add_dependencies(stdlib swift_static_lnk_args)
 endif()
 
 function(swift_create_stdlib_targets name variant define_all_alias)
diff --git a/swift/stdlib/public/Platform/CMakeLists.txt b/swift/stdlib/public/Platform/CMakeLists.txt
index 8ded40c5791..c811000b1d1 100644
--- a/swift/stdlib/public/Platform/CMakeLists.txt
+++ b/swift/stdlib/public/Platform/CMakeLists.txt
@@ -97,6 +97,7 @@ foreach(sdk ${SWIFT_SDKS})
         OUTPUT "${glibc_modulemap_out}"
         FLAGS
             "-DCMAKE_SDK=${sdk}"
+            "-DTERMUX_INCLUDE_PATH=@TERMUX_PREFIX@/include"
             "-DGLIBC_INCLUDE_PATH=${SWIFT_SDK_${sdk}_ARCH_${arch}_LIBC_INCLUDE_DIRECTORY}"
             "-DGLIBC_ARCH_INCLUDE_PATH=${SWIFT_SDK_${sdk}_ARCH_${arch}_LIBC_ARCHITECTURE_INCLUDE_DIRECTORY}")
 
@@ -106,18 +107,19 @@ foreach(sdk ${SWIFT_SDKS})
     # with its own native sysroot, create a native modulemap without a sysroot
     # prefix. This is the one we'll install instead.
     if(NOT "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_ARCH_${arch}_PATH}" STREQUAL "/" AND
-       NOT (${sdk} STREQUAL ANDROID AND NOT "${SWIFT_ANDROID_NATIVE_SYSROOT}" STREQUAL ""))
+       (${sdk} STREQUAL ANDROID AND NOT "${SWIFT_ANDROID_NATIVE_SYSROOT}" STREQUAL ""))
       set(glibc_sysroot_relative_modulemap_out "${module_dir}/sysroot-relative-modulemaps/glibc.modulemap")
 
-      string(REPLACE "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_ARCH_${arch}_PATH}"
-        "" absolute_libc_include_path "${SWIFT_SDK_${sdk}_ARCH_${arch}_LIBC_INCLUDE_DIRECTORY}")
-      string(REPLACE "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_ARCH_${arch}_PATH}"
-        "" absolute_libc_arch_include_path ${SWIFT_SDK_${sdk}_ARCH_${arch}_LIBC_ARCHITECTURE_INCLUDE_DIRECTORY})
+      string(REPLACE "${SWIFT_SDK_${sdk}_ARCH_${arch}_PATH}/usr"
+        "@TERMUX_PREFIX@" absolute_libc_include_path "${SWIFT_SDK_${sdk}_ARCH_${arch}_LIBC_INCLUDE_DIRECTORY}")
+      string(REPLACE "${SWIFT_SDK_${sdk}_ARCH_${arch}_PATH}/usr"
+        "@TERMUX_PREFIX@" absolute_libc_arch_include_path ${SWIFT_SDK_${sdk}_ARCH_${arch}_LIBC_ARCHITECTURE_INCLUDE_DIRECTORY})
 
       handle_gyb_source_single(glibc_modulemap_native_target
         SOURCE "${glibc_modulemap_source}"
         OUTPUT "${glibc_sysroot_relative_modulemap_out}"
         FLAGS "-DCMAKE_SDK=${sdk}"
+              "-DTERMUX_INCLUDE_PATH=@TERMUX_PREFIX@/include"
               "-DGLIBC_INCLUDE_PATH=${absolute_libc_include_path}"
               "-DGLIBC_ARCH_INCLUDE_PATH=${absolute_libc_arch_include_path}")
 
diff --git a/swift/stdlib/public/SwiftShims/CMakeLists.txt b/swift/stdlib/public/SwiftShims/CMakeLists.txt
index 23ac72bcda5..23aecfc9bc5 100644
--- a/swift/stdlib/public/SwiftShims/CMakeLists.txt
+++ b/swift/stdlib/public/SwiftShims/CMakeLists.txt
@@ -207,13 +207,13 @@ endif()
 
 swift_install_symlink_component(clang-resource-dir-symlink
   LINK_NAME clang
-  TARGET ../clang/${CLANG_VERSION}
+  TARGET ../clang/$ENV{TERMUX_CLANG_VERSION}
   DESTINATION "lib/swift")
 
 if(SWIFT_BUILD_STATIC_STDLIB)
   swift_install_symlink_component(clang-resource-dir-symlink
     LINK_NAME clang
-    TARGET ../clang/${CLANG_VERSION}
+    TARGET ../clang/$ENV{TERMUX_CLANG_VERSION}
     DESTINATION "lib/swift_static")
 endif()
 
diff --git a/swift/tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake b/swift/tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake
index 7a77e125f95..7eddfea2054 100644
--- a/swift/tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake
+++ b/swift/tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake
@@ -79,6 +79,9 @@ function(add_sourcekit_default_compiler_flags target)
   endif()
   target_compile_options(${target} PRIVATE
     ${c_compile_flags} -fblocks)
+  # Look in Termux sysroot for dispatch/dispatch.h from libdispatch
+  target_include_directories("${target}" SYSTEM PRIVATE
+    ${SWIFT_ANDROID_NATIVE_SYSROOT}/usr/include)
   target_link_options(${target} PRIVATE
     ${link_flags})
   target_link_directories(${target} PRIVATE
@@ -165,7 +168,7 @@ macro(add_sourcekit_library name)
     endif()
   endif()
 
-  if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
+  if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" AND NOT "${SWIFT_HOST_VARIANT_SDK}" STREQUAL "ANDROID")
     if(SOURCEKITLIB_SHARED)
       set_target_properties(${name} PROPERTIES BUILD_WITH_INSTALL_RPATH TRUE)
       set_target_properties(${name} PROPERTIES INSTALL_RPATH "$ORIGIN/../lib/swift/linux:/usr/lib/swift/linux")
diff --git a/swift/tools/libSwiftSyntaxParser/CMakeLists.txt b/swift/tools/libSwiftSyntaxParser/CMakeLists.txt
index 42dda212164..2338df9072a 100644
--- a/swift/tools/libSwiftSyntaxParser/CMakeLists.txt
+++ b/swift/tools/libSwiftSyntaxParser/CMakeLists.txt
@@ -13,6 +13,9 @@ add_swift_host_library(libSwiftSyntaxParser SHARED
 if(NOT SWIFT_BUILT_STANDALONE AND NOT CMAKE_C_COMPILER_ID MATCHES Clang)
   add_dependencies(libSwiftSyntaxParser clang)
 endif()
+# Look in Termux sysroot for Block.h from libdispatch
+target_include_directories(libSwiftSyntaxParser SYSTEM PRIVATE
+  ${SWIFT_ANDROID_NATIVE_SYSROOT}/usr/include)
 target_link_libraries(libSwiftSyntaxParser PRIVATE
   swiftParse)
 set_target_properties(libSwiftSyntaxParser
diff --git a/swift/tools/swift-ide-test/CMakeLists.txt b/swift/tools/swift-ide-test/CMakeLists.txt
index 095e97d5f15..dae9946aba8 100644
--- a/swift/tools/swift-ide-test/CMakeLists.txt
+++ b/swift/tools/swift-ide-test/CMakeLists.txt
@@ -13,7 +13,8 @@ target_link_libraries(swift-ide-test
 
 # If libxml2 is available, make it available for swift-ide-test.
 if(LibXml2_FOUND)
-  include_directories(SYSTEM ${LIBXML2_INCLUDE_DIR})
+  # No way to not build this, so look in Termux sysroot for iconv.h from libiconv
+  include_directories(SYSTEM ${LIBXML2_INCLUDE_DIR} ${SWIFT_ANDROID_NATIVE_SYSROOT}/usr/include)
   target_link_libraries(swift-ide-test PRIVATE ${LIBXML2_LIBRARIES})
   target_compile_definitions(swift-ide-test PRIVATE SWIFT_HAVE_LIBXML=1)
   if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "OpenBSD" AND NOT CMAKE_CROSSCOMPILING)
