Skip to content

Commit b3ba457

Browse files
committed
build: make swift_lib_add_single more amenable to cross-compilation
Use the SWIFTLIB_SINGLE_SDK variable rather than the CMAKE_BUILD_SYSTEM variable to determine the target type. This allows us to use the logic for adding libraries for foreign OSes on a build host. This is needed to pave the road to cross-crompiling the standard library for different targets.
1 parent c404785 commit b3ba457

File tree

1 file changed

+20
-8
lines changed

1 file changed

+20
-8
lines changed

cmake/modules/AddSwift.cmake

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -499,7 +499,13 @@ function(_add_swift_library_single target name)
499499
endif()
500500

501501
if (SWIFT_COMPILER_VERSION)
502-
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
502+
if ("${SWIFTLIB_SINGLE_SDK}" STREQUAL "OSX" OR
503+
"${SWIFTLIB_SINGLE_SDK}" STREQUAL "IOS" OR
504+
"${SWIFTLIB_SINGLE_SDK}" STREQUAL "IOS_SIMULATOR" OR
505+
"${SWIFTLIB_SINGLE_SDK}" STREQUAL "TVOS" OR
506+
"${SWIFTLIB_SINGLE_SDK}" STREQUAL "TVOS_SIMULATOR" OR
507+
"${SWIFTLIB_SINGLE_SDK}" STREQUAL "WATCHOS" OR
508+
"${SWIFTLIB_SINGLE_SDK}" STREQUAL "WATCHOS_SIMULATOR")
503509
list(APPEND SWIFTLIB_SINGLE_LINK_FLAGS "-Xlinker" "-current_version" "-Xlinker" "${SWIFT_COMPILER_VERSION}" "-Xlinker" "-compatibility_version" "-Xlinker" "1")
504510
endif()
505511
endif()
@@ -565,8 +571,8 @@ function(_add_swift_library_single target name)
565571
# we add markers for metadata sections in the shared libraries using
566572
# these object files. This wouldn't be necessary if the link was done by
567573
# the swift binary: rdar://problem/19007002
568-
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" OR
569-
"${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD")
574+
if("${SWIFTLIB_SINGLE_SDK}" STREQUAL "LINUX" OR
575+
"${SWIFTLIB_SINGLE_SDK}" STREQUAL "FREEBSD")
570576

571577
if("${libkind}" STREQUAL "SHARED")
572578
set(arch_subdir "${SWIFTLIB_DIR}/${SWIFTLIB_SINGLE_SUBDIR}")
@@ -623,8 +629,8 @@ function(_add_swift_library_single target name)
623629

624630
# The section metadata objects are generated sources, and we need to tell CMake
625631
# not to expect to find them prior to their generation.
626-
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" OR
627-
"${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD")
632+
if("${SWIFTLIB_SINGLE_SDK}" STREQUAL "LINUX" OR
633+
"${SWIFTLIB_SINGLE_SDK}" STREQUAL "FREEBSD")
628634
if("${libkind}" STREQUAL "SHARED")
629635
set_source_files_properties(${SWIFT_SECTIONS_OBJECT_BEGIN} PROPERTIES GENERATED 1)
630636
set_source_files_properties(${SWIFT_SECTIONS_OBJECT_END} PROPERTIES GENERATED 1)
@@ -661,7 +667,13 @@ function(_add_swift_library_single target name)
661667
endforeach()
662668
endif()
663669

664-
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
670+
if("${SWIFTLIB_SINGLE_SDK}" STREQUAL "OSX" OR
671+
"${SWIFTLIB_SINGLE_SDK}" STREQUAL "IOS" OR
672+
"${SWIFTLIB_SINGLE_SDK}" STREQUAL "IOS_SIMULATOR" OR
673+
"${SWIFTLIB_SINGLE_SDK}" STREQUAL "TVOS" OR
674+
"${SWIFTLIB_SINGLE_SDK}" STREQUAL "TVOS_SIMULATOR" OR
675+
"${SWIFTLIB_SINGLE_SDK}" STREQUAL "WATCHOS" OR
676+
"${SWIFTLIB_SINGLE_SDK}" STREQUAL "WATCHOS_SIMULATOR")
665677
set(install_name_dir "@rpath")
666678

667679
if(SWIFTLIB_SINGLE_IS_STDLIB)
@@ -674,11 +686,11 @@ function(_add_swift_library_single target name)
674686
set_target_properties("${target}"
675687
PROPERTIES
676688
INSTALL_NAME_DIR "${install_name_dir}")
677-
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" AND NOT "${SWIFTLIB_SINGLE_SDK}" STREQUAL "ANDROID")
689+
elseif("${SWIFTLIB_SINGLE_SDK}" STREQUAL "LINUX" AND NOT "${SWIFTLIB_SINGLE_SDK}" STREQUAL "ANDROID")
678690
set_target_properties("${target}"
679691
PROPERTIES
680692
INSTALL_RPATH "$ORIGIN:/usr/lib/swift/linux")
681-
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Cygwin")
693+
elseif("${SWIFTLIB_SINGLE_SDK}" STREQUAL "CYGWIN")
682694
set_target_properties("${target}"
683695
PROPERTIES
684696
INSTALL_RPATH "$ORIGIN:/usr/lib/swift/windows")

0 commit comments

Comments
 (0)