Skip to content

Commit fa7f8c4

Browse files
authored
Merge pull request swiftlang#23742 from xiaobai/android_compiler
2 parents eaa8ca4 + 822eeb6 commit fa7f8c4

File tree

3 files changed

+26
-6
lines changed

3 files changed

+26
-6
lines changed

CMakeLists.txt

+15-1
Original file line numberDiff line numberDiff line change
@@ -572,6 +572,8 @@ else()
572572
set(SWIFT_HOST_VARIANT_SDK_default "WINDOWS")
573573
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Haiku")
574574
set(SWIFT_HOST_VARIANT_SDK_default "HAIKU")
575+
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Android")
576+
set(SWIFT_HOST_VARIANT_SDK_default "ANDROID")
575577
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
576578
set(SWIFT_HOST_VARIANT_SDK_default "OSX")
577579
else()
@@ -696,6 +698,15 @@ elseif("${SWIFT_HOST_VARIANT_SDK}" STREQUAL "HAIKU")
696698
set(SWIFT_PRIMARY_VARIANT_SDK_default "${SWIFT_HOST_VARIANT_SDK}")
697699
set(SWIFT_PRIMARY_VARIANT_ARCH_default "${SWIFT_HOST_VARIANT_ARCH}")
698700

701+
elseif("${SWIFT_HOST_VARIANT_SDK}" STREQUAL "ANDROID")
702+
703+
set(SWIFT_HOST_VARIANT "android" CACHE STRING
704+
"Deployment OS for Swift host tools (the compiler) [android].")
705+
706+
configure_sdk_unix("Android" "${SWIFT_HOST_VARIANT_ARCH}")
707+
set(SWIFT_PRIMARY_VARIANT_SDK_default "${SWIFT_HOST_VARIANT_SDK}")
708+
set(SWIFT_PRIMARY_VARIANT_ARCH_default "${SWIFT_HOST_VARIANT_ARCH}")
709+
699710
elseif("${SWIFT_HOST_VARIANT_SDK}" MATCHES "(OSX|IOS*|TVOS*|WATCHOS*)")
700711

701712
set(SWIFT_HOST_VARIANT "macosx" CACHE STRING
@@ -740,7 +751,10 @@ endif()
740751

741752
# Should we cross-compile the standard library for Android?
742753
is_sdk_requested(ANDROID swift_build_android)
743-
if(swift_build_android AND NOT "${SWIFT_ANDROID_NDK_PATH}" STREQUAL "")
754+
if(swift_build_android AND NOT "${SWIFT_HOST_VARIANT_SDK}" STREQUAL "ANDROID")
755+
if ("${SWIFT_ANDROID_NDK_PATH}" STREQUAL "")
756+
message(FATAL_ERROR "You must set SWIFT_ANDROID_NDK_PATH to cross-compile the Swift runtime for Android")
757+
endif()
744758
if (NOT ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Darwin" OR "${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Linux"))
745759
message(FATAL_ERROR "A Darwin or Linux host is required to build the Swift runtime for Android")
746760
endif()

cmake/modules/AddSwift.cmake

+6-4
Original file line numberDiff line numberDiff line change
@@ -467,12 +467,14 @@ function(_add_variant_link_flags)
467467
endif()
468468

469469
if(NOT "${SWIFT_${LFLAGS_SDK}_${LFLAGS_ARCH}_ICU_UC}" STREQUAL "")
470-
get_filename_component(SWIFT_${sdk}_${arch}_ICU_UC_LIBDIR "${SWIFT_${sdk}_${arch}_ICU_UC}" DIRECTORY)
471-
list(APPEND library_search_directories "${SWIFT_${sdk}_${arch}_ICU_UC_LIBDIR}")
470+
get_filename_component(SWIFT_${LFLAGS_SDK}_${LFLAGS_ARCH}_ICU_UC_LIBDIR
471+
"${SWIFT_${LFLAGS_SDK}_${LFLAGS_ARCH}_ICU_UC}" DIRECTORY)
472+
list(APPEND library_search_directories "${SWIFT_${LFLAGS_SDK}_${LFLAGS_ARCH}_ICU_UC_LIBDIR}")
472473
endif()
473474
if(NOT "${SWIFT_${LFLAGS_SDK}_${LFLAGS_ARCH}_ICU_I18N}" STREQUAL "")
474-
get_filename_component(SWIFT_${sdk}_${arch}_ICU_I18N_LIBDIR "${SWIFT_${sdk}_${arch}_ICU_I18N}" DIRECTORY)
475-
list(APPEND library_search_directories "${SWIFT_${sdk}_${arch}_ICU_I18N_LIBDIR}")
475+
get_filename_component(SWIFT_${LFLAGS_SDK}_${LFLAGS_ARCH}_ICU_I18N_LIBDIR
476+
"${SWIFT_${LFLAGS_SDK}_${LFLAGS_ARCH}_ICU_I18N}" DIRECTORY)
477+
list(APPEND library_search_directories "${SWIFT_${LFLAGS_SDK}_${LFLAGS_ARCH}_ICU_I18N_LIBDIR}")
476478
endif()
477479

478480
if(NOT SWIFT_COMPILER_IS_MSVC_LIKE)

tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake

+5-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,9 @@ function(add_sourcekit_default_compiler_flags target)
6666
ENABLE_LTO "${SWIFT_TOOLS_ENABLE_LTO}"
6767
LTO_OBJECT_NAME "${target}-${sdk}-${arch}"
6868
ANALYZE_CODE_COVERAGE "${analyze_code_coverage}"
69-
RESULT_VAR_NAME link_flags)
69+
RESULT_VAR_NAME link_flags
70+
LINK_LIBRARIES_VAR_NAME link_libraries
71+
LIBRARY_SEARCH_DIRECTORIES_VAR_NAME library_search_directories)
7072

7173
# Convert variables to space-separated strings.
7274
_list_escape_for_shell("${c_compile_flags}" c_compile_flags)
@@ -77,6 +79,8 @@ function(add_sourcekit_default_compiler_flags target)
7779
COMPILE_FLAGS " ${c_compile_flags} -fblocks")
7880
set_property(TARGET "${target}" APPEND_STRING PROPERTY
7981
LINK_FLAGS " ${link_flags}")
82+
set_property(TARGET "${target}" APPEND PROPERTY LINK_LIBRARIES ${link_libraries})
83+
swift_target_link_search_directories("${target}" "${library_search_directories}")
8084
endfunction()
8185

8286
# Add a new SourceKit library.

0 commit comments

Comments
 (0)