diff --git a/CMakeLists.txt b/CMakeLists.txt index 25bf8d5894b43..0c5760dd81f1a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -578,6 +578,8 @@ else() set(SWIFT_HOST_VARIANT_SDK_default "WINDOWS") elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Haiku") set(SWIFT_HOST_VARIANT_SDK_default "HAIKU") + elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Android") + set(SWIFT_HOST_VARIANT_SDK_default "ANDROID") elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin") set(SWIFT_HOST_VARIANT_SDK_default "OSX") else() @@ -702,6 +704,15 @@ elseif("${SWIFT_HOST_VARIANT_SDK}" STREQUAL "HAIKU") set(SWIFT_PRIMARY_VARIANT_SDK_default "${SWIFT_HOST_VARIANT_SDK}") set(SWIFT_PRIMARY_VARIANT_ARCH_default "${SWIFT_HOST_VARIANT_ARCH}") +elseif("${SWIFT_HOST_VARIANT_SDK}" STREQUAL "ANDROID") + + set(SWIFT_HOST_VARIANT "android" CACHE STRING + "Deployment OS for Swift host tools (the compiler) [android].") + + configure_sdk_unix("Android" "${SWIFT_HOST_VARIANT_ARCH}") + set(SWIFT_PRIMARY_VARIANT_SDK_default "${SWIFT_HOST_VARIANT_SDK}") + set(SWIFT_PRIMARY_VARIANT_ARCH_default "${SWIFT_HOST_VARIANT_ARCH}") + elseif("${SWIFT_HOST_VARIANT_SDK}" MATCHES "(OSX|IOS*|TVOS*|WATCHOS*)") set(SWIFT_HOST_VARIANT "macosx" CACHE STRING @@ -746,7 +757,10 @@ endif() # Should we cross-compile the standard library for Android? is_sdk_requested(ANDROID swift_build_android) -if(swift_build_android AND NOT "${SWIFT_ANDROID_NDK_PATH}" STREQUAL "") +if(swift_build_android AND NOT "${SWIFT_HOST_VARIANT_SDK}" STREQUAL "ANDROID") + if ("${SWIFT_ANDROID_NDK_PATH}" STREQUAL "") + message(FATAL_ERROR "You must set SWIFT_ANDROID_NDK_PATH to cross-compile the Swift runtime for Android") + endif() if (NOT ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Darwin" OR "${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Linux")) message(FATAL_ERROR "A Darwin or Linux host is required to build the Swift runtime for Android") endif() diff --git a/cmake/modules/AddSwift.cmake b/cmake/modules/AddSwift.cmake index 4722f8318e0c6..bea5d64c0f878 100644 --- a/cmake/modules/AddSwift.cmake +++ b/cmake/modules/AddSwift.cmake @@ -467,12 +467,14 @@ function(_add_variant_link_flags) endif() if(NOT "${SWIFT_${LFLAGS_SDK}_${LFLAGS_ARCH}_ICU_UC}" STREQUAL "") - get_filename_component(SWIFT_${sdk}_${arch}_ICU_UC_LIBDIR "${SWIFT_${sdk}_${arch}_ICU_UC}" DIRECTORY) - list(APPEND library_search_directories "${SWIFT_${sdk}_${arch}_ICU_UC_LIBDIR}") + get_filename_component(SWIFT_${LFLAGS_SDK}_${LFLAGS_ARCH}_ICU_UC_LIBDIR + "${SWIFT_${LFLAGS_SDK}_${LFLAGS_ARCH}_ICU_UC}" DIRECTORY) + list(APPEND library_search_directories "${SWIFT_${LFLAGS_SDK}_${LFLAGS_ARCH}_ICU_UC_LIBDIR}") endif() if(NOT "${SWIFT_${LFLAGS_SDK}_${LFLAGS_ARCH}_ICU_I18N}" STREQUAL "") - get_filename_component(SWIFT_${sdk}_${arch}_ICU_I18N_LIBDIR "${SWIFT_${sdk}_${arch}_ICU_I18N}" DIRECTORY) - list(APPEND library_search_directories "${SWIFT_${sdk}_${arch}_ICU_I18N_LIBDIR}") + get_filename_component(SWIFT_${LFLAGS_SDK}_${LFLAGS_ARCH}_ICU_I18N_LIBDIR + "${SWIFT_${LFLAGS_SDK}_${LFLAGS_ARCH}_ICU_I18N}" DIRECTORY) + list(APPEND library_search_directories "${SWIFT_${LFLAGS_SDK}_${LFLAGS_ARCH}_ICU_I18N_LIBDIR}") endif() if(NOT SWIFT_COMPILER_IS_MSVC_LIKE) diff --git a/tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake b/tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake index c1535aa2d3402..1f7eebe40f028 100644 --- a/tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake +++ b/tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake @@ -66,7 +66,9 @@ function(add_sourcekit_default_compiler_flags target) ENABLE_LTO "${SWIFT_TOOLS_ENABLE_LTO}" LTO_OBJECT_NAME "${target}-${sdk}-${arch}" ANALYZE_CODE_COVERAGE "${analyze_code_coverage}" - RESULT_VAR_NAME link_flags) + RESULT_VAR_NAME link_flags + LINK_LIBRARIES_VAR_NAME link_libraries + LIBRARY_SEARCH_DIRECTORIES_VAR_NAME library_search_directories) # Convert variables to space-separated strings. _list_escape_for_shell("${c_compile_flags}" c_compile_flags) @@ -77,6 +79,8 @@ function(add_sourcekit_default_compiler_flags target) COMPILE_FLAGS " ${c_compile_flags} -fblocks") set_property(TARGET "${target}" APPEND_STRING PROPERTY LINK_FLAGS " ${link_flags}") + set_property(TARGET "${target}" APPEND PROPERTY LINK_LIBRARIES ${link_libraries}) + swift_target_link_search_directories("${target}" "${library_search_directories}") endfunction() # Add a new SourceKit library.