Skip to content

Commit 36f77a8

Browse files
committed
build: hoist architecture independent variables (NFC)
Hoist out the some of the architecture independent variables outside of the inner loop. This should simplify the logic for the function and improve generation times. (NFC)
1 parent a28c9d6 commit 36f77a8

File tree

1 file changed

+94
-88
lines changed

1 file changed

+94
-88
lines changed

cmake/modules/AddSwift.cmake

Lines changed: 94 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -1606,6 +1606,98 @@ function(add_swift_library name)
16061606

16071607
set(THIN_INPUT_TARGETS)
16081608

1609+
# Collect architecture agnostic SDK module dependencies
1610+
set(swiftlib_module_depends_flattened ${SWIFTLIB_SWIFT_MODULE_DEPENDS})
1611+
if(${sdk} STREQUAL OSX)
1612+
list(APPEND swiftlib_module_depends_flattened
1613+
${SWIFTLIB_SWIFT_MODULE_DEPENDS_OSX})
1614+
elseif(${sdk} STREQUAL IOS OR ${sdk} STREQUAL IOS_SIMULATOR)
1615+
list(APPEND swiftlib_module_depends_flattened
1616+
${SWIFTLIB_SWIFT_MODULE_DEPENDS_IOS})
1617+
elseif(${sdk} STREQUAL TVOS OR ${sdk} STREQUAL TVOS_SIMULATOR)
1618+
list(APPEND swiftlib_module_depends_flattened
1619+
${SWIFTLIB_SWIFT_MODULE_DEPENDS_TVOS})
1620+
elseif(${sdk} STREQUAL WATCHOS OR ${sdk} STREQUAL WATCHOS_SIMULATOR)
1621+
list(APPEND swiftlib_module_depends_flattened
1622+
${SWIFTLIB_SWIFT_MODULE_DEPENDS_WATCHOS})
1623+
elseif(${sdk} STREQUAL FREEBSD)
1624+
list(APPEND swiftlib_module_depends_flattened
1625+
${SWIFTLIB_SWIFT_MODULE_DEPENDS_FREEBSD})
1626+
elseif(${sdk} STREQUAL LINUX OR ${sdk} STREQUAL ANDROID)
1627+
list(APPEND swiftlib_module_depends_flattened
1628+
${SWIFTLIB_SWIFT_MODULE_DEPENDS_LINUX})
1629+
elseif(${sdk} STREQUAL CYGWIN)
1630+
list(APPEND swiftlib_module_depends_flattened
1631+
${SWIFTLIB_SWIFT_MODULE_DEPENDS_CYGWIN})
1632+
elseif(${sdk} STREQUAL HAIKU)
1633+
list(APPEND swiftlib_module_depends_flattened
1634+
${SWIFTLIB_SWIFT_MODULE_DEPENDS_HAIKU})
1635+
endif()
1636+
1637+
# Collect architecture agnostic SDK framework dependencies
1638+
set(swiftlib_framework_depends_flattened ${SWIFTLIB_FRAMEWORK_DEPENDS})
1639+
if(${sdk} STREQUAL OSX)
1640+
list(APPEND swiftlib_framework_depends_flattened
1641+
${SWIFTLIB_FRAMEWORK_DEPENDS_OSX})
1642+
elseif(${sdk} STREQUAL IOS OR ${sdk} STREQUAL IOS_SIMULATOR OR
1643+
${sdk} STREQUAL TVOS OR ${sdk} STREQUAL TVOS_SIMULATOR)
1644+
list(APPEND swiftlib_framework_depends_flattened
1645+
${SWIFTLIB_FRAMEWORK_DEPENDS_IOS_TVOS})
1646+
endif()
1647+
1648+
# Collect architecutre agnostic compiler flags
1649+
set(swiftlib_swift_compile_flags_all ${SWIFTLIB_SWIFT_COMPILE_FLAGS})
1650+
if(${sdk} STREQUAL OSX)
1651+
list(APPEND swiftlib_swift_compile_flags_all
1652+
${SWIFTLIB_SWIFT_COMPILE_FLAGS_OSX})
1653+
elseif(${sdk} STREQUAL IOS OR ${sdk} STREQUAL IOS_SIMULATOR)
1654+
list(APPEND swiftlib_swift_compile_flags_all
1655+
${SWIFTLIB_SWIFT_COMPILE_FLAGS_IOS})
1656+
elseif(${sdk} STREQUAL TVOS OR ${sdk} STREQUAL TVOS_SIMULATOR)
1657+
list(APPEND swiftlib_swift_compile_flags_all
1658+
${SWIFTLIB_SWIFT_COMPILE_FLAGS_TVOS})
1659+
elseif(${sdk} STREQUAL WATCHOS OR ${sdk} STREQUAL WATCHOS_SIMULATOR)
1660+
list(APPEND swiftlib_swift_compile_flags_all
1661+
${SWIFTLIB_SWIFT_COMPILE_FLAGS_WATCHOS})
1662+
elseif(${sdk} STREQUAL WINDOWS)
1663+
# FIXME(SR2005) static and shared are not mutually exclusive; however
1664+
# since we do a single build of the sources, this doesn't work for
1665+
# building both simultaneously. Effectively, only shared builds are
1666+
# supported on windows currently.
1667+
if(SWIFTLIB_SHARED)
1668+
list(APPEND swiftlib_swift_compile_flags_all -D_USRDLL)
1669+
if(SWIFTLIB_IS_STDLIB_CORE)
1670+
list(APPEND swiftlib_swift_compile_flags_all -DswiftCore_EXPORTS)
1671+
endif()
1672+
elseif(SWIFTLIB_STATIC)
1673+
list(APPEND swiftlib_swift_compile_flags_all -D_LIB)
1674+
endif()
1675+
endif()
1676+
1677+
1678+
# Collect architecture agnostic SDK linker flags
1679+
set(swiftlib_link_flags_all ${SWIFTLIB_LINK_FLAGS})
1680+
if(${sdk} STREQUAL IOS_SIMULATOR)
1681+
if(${name} STREQUAL swiftMediaPlayer)
1682+
# message("DISABLING AUTOLINK FOR swiftMediaPlayer")
1683+
list(APPEND swiftlib_link_flags_all "-Xlinker" "-ignore_auto_link")
1684+
endif()
1685+
endif()
1686+
1687+
# We unconditionally removed "-z,defs" from CMAKE_SHARED_LINKER_FLAGS in
1688+
# swift_common_standalone_build_config_llvm within
1689+
# SwiftSharedCMakeConfig.cmake, where it was added by a call to
1690+
# HandleLLVMOptions.
1691+
#
1692+
# Rather than applying it to all targets and libraries, we here add it
1693+
# back to supported targets and libraries only. This is needed for ELF
1694+
# targets only; however, RemoteMirror needs to build with undefined
1695+
# symbols.
1696+
if(${SWIFT_SDK_${sdk}_OBJECT_FORMAT} STREQUAL ELF AND
1697+
NOT ${name} STREQUAL swiftRemoteMirror)
1698+
list(APPEND swiftlib_link_flags_all "-Wl,-z,defs")
1699+
endif()
1700+
16091701
# For each architecture supported by this SDK
16101702
foreach(arch ${SWIFT_SDK_${sdk}_ARCHITECTURES})
16111703
# Configure variables for this subdirectory.
@@ -1624,33 +1716,6 @@ function(add_swift_library name)
16241716
endif()
16251717
endforeach()
16261718

1627-
set(swiftlib_module_depends_flattened ${SWIFTLIB_SWIFT_MODULE_DEPENDS})
1628-
if("${sdk}" STREQUAL "OSX")
1629-
list(APPEND swiftlib_module_depends_flattened
1630-
${SWIFTLIB_SWIFT_MODULE_DEPENDS_OSX})
1631-
elseif("${sdk}" STREQUAL "IOS" OR "${sdk}" STREQUAL "IOS_SIMULATOR")
1632-
list(APPEND swiftlib_module_depends_flattened
1633-
${SWIFTLIB_SWIFT_MODULE_DEPENDS_IOS})
1634-
elseif("${sdk}" STREQUAL "TVOS" OR "${sdk}" STREQUAL "TVOS_SIMULATOR")
1635-
list(APPEND swiftlib_module_depends_flattened
1636-
${SWIFTLIB_SWIFT_MODULE_DEPENDS_TVOS})
1637-
elseif("${sdk}" STREQUAL "WATCHOS" OR "${sdk}" STREQUAL "WATCHOS_SIMULATOR")
1638-
list(APPEND swiftlib_module_depends_flattened
1639-
${SWIFTLIB_SWIFT_MODULE_DEPENDS_WATCHOS})
1640-
elseif("${sdk}" STREQUAL "FREEBSD")
1641-
list(APPEND swiftlib_module_depends_flattened
1642-
${SWIFTLIB_SWIFT_MODULE_DEPENDS_FREEBSD})
1643-
elseif("${sdk}" STREQUAL "LINUX" OR "${sdk}" STREQUAL "ANDROID")
1644-
list(APPEND swiftlib_module_depends_flattened
1645-
${SWIFTLIB_SWIFT_MODULE_DEPENDS_LINUX})
1646-
elseif("${sdk}" STREQUAL "CYGWIN")
1647-
list(APPEND swiftlib_module_depends_flattened
1648-
${SWIFTLIB_SWIFT_MODULE_DEPENDS_CYGWIN})
1649-
elseif("${sdk}" STREQUAL "HAIKU")
1650-
list(APPEND swiftlib_module_depends_flattened
1651-
${SWIFTLIB_SWIFT_MODULE_DEPENDS_HAIKU})
1652-
endif()
1653-
16541719
# Swift compiles depend on swift modules, while links depend on
16551720
# linked libraries. Find targets for both of these here.
16561721
set(swiftlib_module_dependency_targets)
@@ -1692,69 +1757,10 @@ function(add_swift_library name)
16921757
endif()
16931758
endforeach()
16941759

1695-
set(swiftlib_framework_depends_flattened ${SWIFTLIB_FRAMEWORK_DEPENDS})
1696-
if("${sdk}" STREQUAL "OSX")
1697-
list(APPEND swiftlib_framework_depends_flattened
1698-
${SWIFTLIB_FRAMEWORK_DEPENDS_OSX})
1699-
elseif("${sdk}" STREQUAL "IOS" OR "${sdk}" STREQUAL "IOS_SIMULATOR" OR "${sdk}" STREQUAL "TVOS" OR "${sdk}" STREQUAL "TVOS_SIMULATOR")
1700-
list(APPEND swiftlib_framework_depends_flattened
1701-
${SWIFTLIB_FRAMEWORK_DEPENDS_IOS_TVOS})
1702-
endif()
1703-
1704-
# Collect compiler flags
1705-
set(swiftlib_swift_compile_flags_all ${SWIFTLIB_SWIFT_COMPILE_FLAGS})
1706-
if("${sdk}" STREQUAL "OSX")
1707-
list(APPEND swiftlib_swift_compile_flags_all
1708-
${SWIFTLIB_SWIFT_COMPILE_FLAGS_OSX})
1709-
elseif("${sdk}" STREQUAL "IOS" OR "${sdk}" STREQUAL "IOS_SIMULATOR")
1710-
list(APPEND swiftlib_swift_compile_flags_all
1711-
${SWIFTLIB_SWIFT_COMPILE_FLAGS_IOS})
1712-
elseif("${sdk}" STREQUAL "TVOS" OR "${sdk}" STREQUAL "TVOS_SIMULATOR")
1713-
list(APPEND swiftlib_swift_compile_flags_all
1714-
${SWIFTLIB_SWIFT_COMPILE_FLAGS_TVOS})
1715-
elseif("${sdk}" STREQUAL "WATCHOS" OR "${sdk}" STREQUAL "WATCHOS_SIMULATOR")
1716-
list(APPEND swiftlib_swift_compile_flags_all
1717-
${SWIFTLIB_SWIFT_COMPILE_FLAGS_WATCHOS})
1718-
elseif("${sdk}" STREQUAL "WINDOWS")
1719-
# FIXME(SR2005) static and shared are not mutually exclusive; however
1720-
# since we do a single build of the sources, this doesn't work for
1721-
# building both simultaneously. Effectively, only shared builds are
1722-
# supported on windows currently.
1723-
if(SWIFTLIB_SHARED)
1724-
list(APPEND swiftlib_swift_compile_flags_all -D_USRDLL)
1725-
if(SWIFTLIB_IS_STDLIB_CORE)
1726-
list(APPEND swiftlib_swift_compile_flags_all -DswiftCore_EXPORTS)
1727-
endif()
1728-
elseif(SWIFTLIB_STATIC)
1729-
list(APPEND swiftlib_swift_compile_flags_all -D_LIB)
1730-
endif()
1731-
endif()
1732-
17331760
# Add PrivateFrameworks, rdar://28466433
1734-
set(swiftlib_link_flags_all ${SWIFTLIB_LINK_FLAGS})
17351761
if(SWIFTLIB_IS_SDK_OVERLAY)
1736-
list(APPEND swiftlib_swift_compile_flags_all "-Fsystem" "${SWIFT_SDK_${sdk}_ARCH_${arch}_PATH}/System/Library/PrivateFrameworks/")
1762+
set(swiftlib_swift_compile_private_frameworks_flag "-Fsystem" "${SWIFT_SDK_${sdk}_ARCH_${arch}_PATH}/System/Library/PrivateFrameworks/")
17371763
endif()
1738-
1739-
if("${sdk}" STREQUAL "IOS_SIMULATOR")
1740-
if("${name}" STREQUAL "swiftMediaPlayer")
1741-
message("DISABLING AUTOLINK FOR swiftMediaPlayer")
1742-
list(APPEND swiftlib_link_flags_all "-Xlinker" "-ignore_auto_link")
1743-
endif()
1744-
endif()
1745-
1746-
# We unconditionally removed "-z,defs" from CMAKE_SHARED_LINKER_FLAGS in
1747-
# swift_common_standalone_build_config_llvm within SwiftSharedCMakeConfig.cmake,
1748-
# where it was added by a call to HandleLLVMOptions.
1749-
#
1750-
# Rather than applying it to all targets and libraries, we here add it back to
1751-
# supported targets and libraries only.
1752-
# This is needed for ELF targets only; however, RemoteMirror needs to build
1753-
# with undefined symbols.
1754-
if("${SWIFT_SDK_${LFLAGS_SDK}_OBJECT_FORMAT}" STREQUAL "ELF"
1755-
AND NOT "${name}" STREQUAL "swiftRemoteMirror")
1756-
list(APPEND swiftlib_link_flags_all "-Wl,-z,defs")
1757-
endif()
17581764

17591765
# Add this library variant.
17601766
_add_swift_library_single(
@@ -1774,7 +1780,7 @@ function(add_swift_library name)
17741780
LLVM_COMPONENT_DEPENDS ${SWIFTLIB_LLVM_COMPONENT_DEPENDS}
17751781
FILE_DEPENDS ${SWIFTLIB_FILE_DEPENDS} ${swiftlib_module_dependency_targets}
17761782
C_COMPILE_FLAGS ${SWIFTLIB_C_COMPILE_FLAGS}
1777-
SWIFT_COMPILE_FLAGS ${swiftlib_swift_compile_flags_all}
1783+
SWIFT_COMPILE_FLAGS ${swiftlib_swift_compile_flags_all} ${swiftlib_swift_compile_private_frameworks_flag}
17781784
LINK_FLAGS ${swiftlib_link_flags_all}
17791785
PRIVATE_LINK_LIBRARIES ${swiftlib_private_link_libraries_targets}
17801786
INCORPORATE_OBJECT_LIBRARIES ${SWIFTLIB_INCORPORATE_OBJECT_LIBRARIES}

0 commit comments

Comments
 (0)