@@ -1541,34 +1541,21 @@ function(add_swift_library name)
1541
1541
# library itself.
1542
1542
if (SWIFTLIB_HAS_SWIFT_CONTENT AND NOT SWIFTLIB_IS_STDLIB_CORE )
1543
1543
list (APPEND SWIFTLIB_SWIFT_MODULE_DEPENDS Core )
1544
- endif ()
1545
1544
1546
- if ((NOT "${SWIFT_BUILD_STDLIB} " ) AND
1547
- (NOT "${SWIFTLIB_SWIFT_MODULE_DEPENDS} " STREQUAL "" ))
1548
- list (REMOVE_ITEM SWIFTLIB_SWIFT_MODULE_DEPENDS
1549
- Core )
1550
- endif ()
1551
-
1552
- if (SWIFTLIB_HAS_SWIFT_CONTENT AND NOT SWIFTLIB_IS_STDLIB_CORE )
1553
- # All Swift code depends on the SwiftOnoneSupport in non-optimized mode,
1554
- # except for the standard library itself.
1555
- is_build_type_optimized ("${SWIFT_STDLIB_BUILD_TYPE} " optimized )
1556
- if (NOT optimized )
1557
- list (APPEND SWIFTLIB_SWIFT_MODULE_DEPENDS SwiftOnoneSupport )
1545
+ # swiftSwiftOnoneSupport does not depend on itself, obviously.
1546
+ if (NOT ${name} STREQUAL swiftSwiftOnoneSupport )
1547
+ # All Swift code depends on the SwiftOnoneSupport in non-optimized mode,
1548
+ # except for the standard library itself.
1549
+ is_build_type_optimized ("${SWIFT_STDLIB_BUILD_TYPE} " optimized )
1550
+ if (NOT optimized )
1551
+ list (APPEND SWIFTLIB_SWIFT_MODULE_DEPENDS SwiftOnoneSupport )
1552
+ endif ()
1558
1553
endif ()
1559
1554
endif ()
1560
1555
1561
1556
if ((NOT "${SWIFT_BUILD_STDLIB} " ) AND
1562
- (NOT "${SWIFTLIB_SWIFT_MODULE_DEPENDS} " STREQUAL "" ))
1563
- list (REMOVE_ITEM SWIFTLIB_SWIFT_MODULE_DEPENDS
1564
- SwiftOnoneSupport )
1565
- endif ()
1566
-
1567
- # swiftSwiftOnoneSupport does not depend on itself,
1568
- # obviously.
1569
- if ("${name} " STREQUAL "swiftSwiftOnoneSupport" )
1570
- list (REMOVE_ITEM SWIFTLIB_SWIFT_MODULE_DEPENDS
1571
- SwiftOnoneSupport )
1557
+ (NOT "${SWIFTLIB_SWIFT_MODULE_DEPENDS} " STREQUAL "" ))
1558
+ list (REMOVE_ITEM SWIFTLIB_SWIFT_MODULE_DEPENDS Core SwiftOnoneSupport )
1572
1559
endif ()
1573
1560
1574
1561
translate_flags (SWIFTLIB "${SWIFTLIB_options} " )
@@ -1611,6 +1598,98 @@ function(add_swift_library name)
1611
1598
1612
1599
set (THIN_INPUT_TARGETS )
1613
1600
1601
+ # Collect architecture agnostic SDK module dependencies
1602
+ set (swiftlib_module_depends_flattened ${SWIFTLIB_SWIFT_MODULE_DEPENDS} )
1603
+ if (${sdk} STREQUAL OSX )
1604
+ list (APPEND swiftlib_module_depends_flattened
1605
+ ${SWIFTLIB_SWIFT_MODULE_DEPENDS_OSX} )
1606
+ elseif (${sdk} STREQUAL IOS OR ${sdk} STREQUAL IOS_SIMULATOR )
1607
+ list (APPEND swiftlib_module_depends_flattened
1608
+ ${SWIFTLIB_SWIFT_MODULE_DEPENDS_IOS} )
1609
+ elseif (${sdk} STREQUAL TVOS OR ${sdk} STREQUAL TVOS_SIMULATOR )
1610
+ list (APPEND swiftlib_module_depends_flattened
1611
+ ${SWIFTLIB_SWIFT_MODULE_DEPENDS_TVOS} )
1612
+ elseif (${sdk} STREQUAL WATCHOS OR ${sdk} STREQUAL WATCHOS_SIMULATOR )
1613
+ list (APPEND swiftlib_module_depends_flattened
1614
+ ${SWIFTLIB_SWIFT_MODULE_DEPENDS_WATCHOS} )
1615
+ elseif (${sdk} STREQUAL FREEBSD )
1616
+ list (APPEND swiftlib_module_depends_flattened
1617
+ ${SWIFTLIB_SWIFT_MODULE_DEPENDS_FREEBSD} )
1618
+ elseif (${sdk} STREQUAL LINUX OR ${sdk} STREQUAL ANDROID )
1619
+ list (APPEND swiftlib_module_depends_flattened
1620
+ ${SWIFTLIB_SWIFT_MODULE_DEPENDS_LINUX} )
1621
+ elseif (${sdk} STREQUAL CYGWIN )
1622
+ list (APPEND swiftlib_module_depends_flattened
1623
+ ${SWIFTLIB_SWIFT_MODULE_DEPENDS_CYGWIN} )
1624
+ elseif (${sdk} STREQUAL HAIKU )
1625
+ list (APPEND swiftlib_module_depends_flattened
1626
+ ${SWIFTLIB_SWIFT_MODULE_DEPENDS_HAIKU} )
1627
+ endif ()
1628
+
1629
+ # Collect architecture agnostic SDK framework dependencies
1630
+ set (swiftlib_framework_depends_flattened ${SWIFTLIB_FRAMEWORK_DEPENDS} )
1631
+ if (${sdk} STREQUAL OSX )
1632
+ list (APPEND swiftlib_framework_depends_flattened
1633
+ ${SWIFTLIB_FRAMEWORK_DEPENDS_OSX} )
1634
+ elseif (${sdk} STREQUAL IOS OR ${sdk} STREQUAL IOS_SIMULATOR OR
1635
+ ${sdk} STREQUAL TVOS OR ${sdk} STREQUAL TVOS_SIMULATOR )
1636
+ list (APPEND swiftlib_framework_depends_flattened
1637
+ ${SWIFTLIB_FRAMEWORK_DEPENDS_IOS_TVOS} )
1638
+ endif ()
1639
+
1640
+ # Collect architecutre agnostic compiler flags
1641
+ set (swiftlib_swift_compile_flags_all ${SWIFTLIB_SWIFT_COMPILE_FLAGS} )
1642
+ if (${sdk} STREQUAL OSX )
1643
+ list (APPEND swiftlib_swift_compile_flags_all
1644
+ ${SWIFTLIB_SWIFT_COMPILE_FLAGS_OSX} )
1645
+ elseif (${sdk} STREQUAL IOS OR ${sdk} STREQUAL IOS_SIMULATOR )
1646
+ list (APPEND swiftlib_swift_compile_flags_all
1647
+ ${SWIFTLIB_SWIFT_COMPILE_FLAGS_IOS} )
1648
+ elseif (${sdk} STREQUAL TVOS OR ${sdk} STREQUAL TVOS_SIMULATOR )
1649
+ list (APPEND swiftlib_swift_compile_flags_all
1650
+ ${SWIFTLIB_SWIFT_COMPILE_FLAGS_TVOS} )
1651
+ elseif (${sdk} STREQUAL WATCHOS OR ${sdk} STREQUAL WATCHOS_SIMULATOR )
1652
+ list (APPEND swiftlib_swift_compile_flags_all
1653
+ ${SWIFTLIB_SWIFT_COMPILE_FLAGS_WATCHOS} )
1654
+ elseif (${sdk} STREQUAL WINDOWS )
1655
+ # FIXME(SR2005) static and shared are not mutually exclusive; however
1656
+ # since we do a single build of the sources, this doesn't work for
1657
+ # building both simultaneously. Effectively, only shared builds are
1658
+ # supported on windows currently.
1659
+ if (SWIFTLIB_SHARED )
1660
+ list (APPEND swiftlib_swift_compile_flags_all -D_USRDLL )
1661
+ if (SWIFTLIB_IS_STDLIB_CORE )
1662
+ list (APPEND swiftlib_swift_compile_flags_all -DswiftCore_EXPORTS )
1663
+ endif ()
1664
+ elseif (SWIFTLIB_STATIC )
1665
+ list (APPEND swiftlib_swift_compile_flags_all -D_LIB )
1666
+ endif ()
1667
+ endif ()
1668
+
1669
+
1670
+ # Collect architecture agnostic SDK linker flags
1671
+ set (swiftlib_link_flags_all ${SWIFTLIB_LINK_FLAGS} )
1672
+ if (${sdk} STREQUAL IOS_SIMULATOR )
1673
+ if (${name} STREQUAL swiftMediaPlayer )
1674
+ # message("DISABLING AUTOLINK FOR swiftMediaPlayer")
1675
+ list (APPEND swiftlib_link_flags_all "-Xlinker" "-ignore_auto_link" )
1676
+ endif ()
1677
+ endif ()
1678
+
1679
+ # We unconditionally removed "-z,defs" from CMAKE_SHARED_LINKER_FLAGS in
1680
+ # swift_common_standalone_build_config_llvm within
1681
+ # SwiftSharedCMakeConfig.cmake, where it was added by a call to
1682
+ # HandleLLVMOptions.
1683
+ #
1684
+ # Rather than applying it to all targets and libraries, we here add it
1685
+ # back to supported targets and libraries only. This is needed for ELF
1686
+ # targets only; however, RemoteMirror needs to build with undefined
1687
+ # symbols.
1688
+ if (${SWIFT_SDK_${sdk}_OBJECT_FORMAT} STREQUAL ELF AND
1689
+ NOT ${name} STREQUAL swiftRemoteMirror )
1690
+ list (APPEND swiftlib_link_flags_all "-Wl,-z,defs" )
1691
+ endif ()
1692
+
1614
1693
# For each architecture supported by this SDK
1615
1694
foreach (arch ${SWIFT_SDK_${sdk}_ARCHITECTURES} )
1616
1695
# Configure variables for this subdirectory.
@@ -1629,33 +1708,6 @@ function(add_swift_library name)
1629
1708
endif ()
1630
1709
endforeach ()
1631
1710
1632
- set (swiftlib_module_depends_flattened ${SWIFTLIB_SWIFT_MODULE_DEPENDS} )
1633
- if ("${sdk} " STREQUAL "OSX" )
1634
- list (APPEND swiftlib_module_depends_flattened
1635
- ${SWIFTLIB_SWIFT_MODULE_DEPENDS_OSX} )
1636
- elseif ("${sdk} " STREQUAL "IOS" OR "${sdk} " STREQUAL "IOS_SIMULATOR" )
1637
- list (APPEND swiftlib_module_depends_flattened
1638
- ${SWIFTLIB_SWIFT_MODULE_DEPENDS_IOS} )
1639
- elseif ("${sdk} " STREQUAL "TVOS" OR "${sdk} " STREQUAL "TVOS_SIMULATOR" )
1640
- list (APPEND swiftlib_module_depends_flattened
1641
- ${SWIFTLIB_SWIFT_MODULE_DEPENDS_TVOS} )
1642
- elseif ("${sdk} " STREQUAL "WATCHOS" OR "${sdk} " STREQUAL "WATCHOS_SIMULATOR" )
1643
- list (APPEND swiftlib_module_depends_flattened
1644
- ${SWIFTLIB_SWIFT_MODULE_DEPENDS_WATCHOS} )
1645
- elseif ("${sdk} " STREQUAL "FREEBSD" )
1646
- list (APPEND swiftlib_module_depends_flattened
1647
- ${SWIFTLIB_SWIFT_MODULE_DEPENDS_FREEBSD} )
1648
- elseif ("${sdk} " STREQUAL "LINUX" OR "${sdk} " STREQUAL "ANDROID" )
1649
- list (APPEND swiftlib_module_depends_flattened
1650
- ${SWIFTLIB_SWIFT_MODULE_DEPENDS_LINUX} )
1651
- elseif ("${sdk} " STREQUAL "CYGWIN" )
1652
- list (APPEND swiftlib_module_depends_flattened
1653
- ${SWIFTLIB_SWIFT_MODULE_DEPENDS_CYGWIN} )
1654
- elseif ("${sdk} " STREQUAL "HAIKU" )
1655
- list (APPEND swiftlib_module_depends_flattened
1656
- ${SWIFTLIB_SWIFT_MODULE_DEPENDS_HAIKU} )
1657
- endif ()
1658
-
1659
1711
# Swift compiles depend on swift modules, while links depend on
1660
1712
# linked libraries. Find targets for both of these here.
1661
1713
set (swiftlib_module_dependency_targets )
@@ -1697,69 +1749,10 @@ function(add_swift_library name)
1697
1749
endif ()
1698
1750
endforeach ()
1699
1751
1700
- set (swiftlib_framework_depends_flattened ${SWIFTLIB_FRAMEWORK_DEPENDS} )
1701
- if ("${sdk} " STREQUAL "OSX" )
1702
- list (APPEND swiftlib_framework_depends_flattened
1703
- ${SWIFTLIB_FRAMEWORK_DEPENDS_OSX} )
1704
- elseif ("${sdk} " STREQUAL "IOS" OR "${sdk} " STREQUAL "IOS_SIMULATOR" OR "${sdk} " STREQUAL "TVOS" OR "${sdk} " STREQUAL "TVOS_SIMULATOR" )
1705
- list (APPEND swiftlib_framework_depends_flattened
1706
- ${SWIFTLIB_FRAMEWORK_DEPENDS_IOS_TVOS} )
1707
- endif ()
1708
-
1709
- # Collect compiler flags
1710
- set (swiftlib_swift_compile_flags_all ${SWIFTLIB_SWIFT_COMPILE_FLAGS} )
1711
- if ("${sdk} " STREQUAL "OSX" )
1712
- list (APPEND swiftlib_swift_compile_flags_all
1713
- ${SWIFTLIB_SWIFT_COMPILE_FLAGS_OSX} )
1714
- elseif ("${sdk} " STREQUAL "IOS" OR "${sdk} " STREQUAL "IOS_SIMULATOR" )
1715
- list (APPEND swiftlib_swift_compile_flags_all
1716
- ${SWIFTLIB_SWIFT_COMPILE_FLAGS_IOS} )
1717
- elseif ("${sdk} " STREQUAL "TVOS" OR "${sdk} " STREQUAL "TVOS_SIMULATOR" )
1718
- list (APPEND swiftlib_swift_compile_flags_all
1719
- ${SWIFTLIB_SWIFT_COMPILE_FLAGS_TVOS} )
1720
- elseif ("${sdk} " STREQUAL "WATCHOS" OR "${sdk} " STREQUAL "WATCHOS_SIMULATOR" )
1721
- list (APPEND swiftlib_swift_compile_flags_all
1722
- ${SWIFTLIB_SWIFT_COMPILE_FLAGS_WATCHOS} )
1723
- elseif ("${sdk} " STREQUAL "WINDOWS" )
1724
- # FIXME(SR2005) static and shared are not mutually exclusive; however
1725
- # since we do a single build of the sources, this doesn't work for
1726
- # building both simultaneously. Effectively, only shared builds are
1727
- # supported on windows currently.
1728
- if (SWIFTLIB_SHARED )
1729
- list (APPEND swiftlib_swift_compile_flags_all -D_USRDLL )
1730
- if (SWIFTLIB_IS_STDLIB_CORE )
1731
- list (APPEND swiftlib_swift_compile_flags_all -DswiftCore_EXPORTS )
1732
- endif ()
1733
- elseif (SWIFTLIB_STATIC )
1734
- list (APPEND swiftlib_swift_compile_flags_all -D_LIB )
1735
- endif ()
1736
- endif ()
1737
-
1738
1752
# Add PrivateFrameworks, rdar://28466433
1739
- set (swiftlib_link_flags_all ${SWIFTLIB_LINK_FLAGS} )
1740
1753
if (SWIFTLIB_IS_SDK_OVERLAY )
1741
- list ( APPEND swiftlib_swift_compile_flags_all "-Fsystem" "${SWIFT_SDK_${sdk} _ARCH_${arch} _PATH}/System/Library/PrivateFrameworks/" )
1754
+ set ( swiftlib_swift_compile_private_frameworks_flag "-Fsystem" "${SWIFT_SDK_${sdk} _ARCH_${arch} _PATH}/System/Library/PrivateFrameworks/" )
1742
1755
endif ()
1743
-
1744
- if ("${sdk} " STREQUAL "IOS_SIMULATOR" )
1745
- if ("${name} " STREQUAL "swiftMediaPlayer" )
1746
- message ("DISABLING AUTOLINK FOR swiftMediaPlayer" )
1747
- list (APPEND swiftlib_link_flags_all "-Xlinker" "-ignore_auto_link" )
1748
- endif ()
1749
- endif ()
1750
-
1751
- # We unconditionally removed "-z,defs" from CMAKE_SHARED_LINKER_FLAGS in
1752
- # swift_common_standalone_build_config_llvm within SwiftSharedCMakeConfig.cmake,
1753
- # where it was added by a call to HandleLLVMOptions.
1754
- #
1755
- # Rather than applying it to all targets and libraries, we here add it back to
1756
- # supported targets and libraries only.
1757
- # This is needed for ELF targets only; however, RemoteMirror needs to build
1758
- # with undefined symbols.
1759
- if ("${SWIFT_SDK_${LFLAGS_SDK} _OBJECT_FORMAT}" STREQUAL "ELF"
1760
- AND NOT "${name} " STREQUAL "swiftRemoteMirror" )
1761
- list (APPEND swiftlib_link_flags_all "-Wl,-z,defs" )
1762
- endif ()
1763
1756
1764
1757
# Add this library variant.
1765
1758
_add_swift_library_single (
@@ -1779,7 +1772,7 @@ function(add_swift_library name)
1779
1772
LLVM_COMPONENT_DEPENDS ${SWIFTLIB_LLVM_COMPONENT_DEPENDS}
1780
1773
FILE_DEPENDS ${SWIFTLIB_FILE_DEPENDS} ${swiftlib_module_dependency_targets}
1781
1774
C_COMPILE_FLAGS ${SWIFTLIB_C_COMPILE_FLAGS}
1782
- SWIFT_COMPILE_FLAGS ${swiftlib_swift_compile_flags_all}
1775
+ SWIFT_COMPILE_FLAGS ${swiftlib_swift_compile_flags_all} ${swiftlib_swift_compile_private_frameworks_flag}
1783
1776
LINK_FLAGS ${swiftlib_link_flags_all}
1784
1777
PRIVATE_LINK_LIBRARIES ${swiftlib_private_link_libraries_targets}
1785
1778
INCORPORATE_OBJECT_LIBRARIES ${SWIFTLIB_INCORPORATE_OBJECT_LIBRARIES}
@@ -1868,32 +1861,30 @@ function(add_swift_library name)
1868
1861
set (resource_dir_sdk_subdir "${SWIFT_SDK_${sdk} _LIB_SUBDIR}" )
1869
1862
precondition (resource_dir_sdk_subdir )
1870
1863
1871
- if (SWIFTLIB_TARGET_LIBRARY )
1872
- if (SWIFTLIB_SHARED )
1873
- set (resource_dir "swift" )
1874
- set (file_permissions
1875
- OWNER_READ OWNER_WRITE OWNER_EXECUTE
1876
- GROUP_READ GROUP_EXECUTE
1877
- WORLD_READ WORLD_EXECUTE )
1878
- else ()
1879
- set (resource_dir "swift_static" )
1880
- set (file_permissions
1881
- OWNER_READ OWNER_WRITE
1882
- GROUP_READ
1883
- WORLD_READ )
1884
- endif ()
1864
+ if (SWIFTLIB_SHARED )
1865
+ set (resource_dir "swift" )
1866
+ set (file_permissions
1867
+ OWNER_READ OWNER_WRITE OWNER_EXECUTE
1868
+ GROUP_READ GROUP_EXECUTE
1869
+ WORLD_READ WORLD_EXECUTE )
1870
+ else ()
1871
+ set (resource_dir "swift_static" )
1872
+ set (file_permissions
1873
+ OWNER_READ OWNER_WRITE
1874
+ GROUP_READ
1875
+ WORLD_READ )
1876
+ endif ()
1885
1877
1886
- swift_install_in_component ("${SWIFTLIB_INSTALL_IN_COMPONENT} "
1887
- FILES "${UNIVERSAL_LIBRARY_NAME} "
1888
- DESTINATION "lib${LLVM_LIBDIR_SUFFIX} /${resource_dir} /${resource_dir_sdk_subdir} "
1889
- PERMISSIONS ${file_permissions} )
1890
- swift_is_installing_component ("${SWIFTLIB_INSTALL_IN_COMPONENT} " is_installing )
1878
+ swift_install_in_component ("${SWIFTLIB_INSTALL_IN_COMPONENT} "
1879
+ FILES "${UNIVERSAL_LIBRARY_NAME} "
1880
+ DESTINATION "lib${LLVM_LIBDIR_SUFFIX} /${resource_dir} /${resource_dir_sdk_subdir} "
1881
+ PERMISSIONS ${file_permissions} )
1882
+ swift_is_installing_component ("${SWIFTLIB_INSTALL_IN_COMPONENT} " is_installing )
1891
1883
1892
- if (NOT is_installing )
1893
- set_property (GLOBAL APPEND PROPERTY SWIFT_BUILDTREE_EXPORTS ${VARIANT_NAME} )
1894
- else ()
1895
- set_property (GLOBAL APPEND PROPERTY SWIFT_EXPORTS ${VARIANT_NAME} )
1896
- endif ()
1884
+ if (NOT is_installing )
1885
+ set_property (GLOBAL APPEND PROPERTY SWIFT_BUILDTREE_EXPORTS ${VARIANT_NAME} )
1886
+ else ()
1887
+ set_property (GLOBAL APPEND PROPERTY SWIFT_EXPORTS ${VARIANT_NAME} )
1897
1888
endif ()
1898
1889
1899
1890
# If we built static variants of the library, create a lipo target for
@@ -1927,26 +1918,24 @@ function(add_swift_library name)
1927
1918
1928
1919
# Add Swift standard library targets as dependencies to the top-level
1929
1920
# convenience target.
1930
- if (SWIFTLIB_TARGET_LIBRARY )
1931
- set (FILTERED_UNITTESTS
1932
- swiftStdlibCollectionUnittest
1933
- swiftStdlibUnicodeUnittest )
1934
-
1935
- foreach (arch ${SWIFT_SDK_${sdk}_ARCHITECTURES} )
1936
- set (VARIANT_SUFFIX "-${SWIFT_SDK_${sdk} _LIB_SUBDIR}-${arch} " )
1937
- if (TARGET "swift-stdlib${VARIANT_SUFFIX} " AND
1938
- TARGET "swift-test-stdlib${VARIANT_SUFFIX} " )
1939
- add_dependencies ("swift-stdlib${VARIANT_SUFFIX} "
1921
+ set (FILTERED_UNITTESTS
1922
+ swiftStdlibCollectionUnittest
1923
+ swiftStdlibUnicodeUnittest )
1924
+
1925
+ foreach (arch ${SWIFT_SDK_${sdk}_ARCHITECTURES} )
1926
+ set (VARIANT_SUFFIX "-${SWIFT_SDK_${sdk} _LIB_SUBDIR}-${arch} " )
1927
+ if (TARGET "swift-stdlib${VARIANT_SUFFIX} " AND
1928
+ TARGET "swift-test-stdlib${VARIANT_SUFFIX} " )
1929
+ add_dependencies ("swift-stdlib${VARIANT_SUFFIX} "
1930
+ ${lipo_target}
1931
+ ${lipo_target_static} )
1932
+ if (NOT "${name} " IN_LIST FILTERED_UNITTESTS )
1933
+ add_dependencies ("swift-test-stdlib${VARIANT_SUFFIX} "
1940
1934
${lipo_target}
1941
1935
${lipo_target_static} )
1942
- if (NOT "${name} " IN_LIST FILTERED_UNITTESTS )
1943
- add_dependencies ("swift-test-stdlib${VARIANT_SUFFIX} "
1944
- ${lipo_target}
1945
- ${lipo_target_static} )
1946
- endif ()
1947
1936
endif ()
1948
- endforeach ()
1949
- endif ()
1937
+ endif ()
1938
+ endforeach ()
1950
1939
endif ()
1951
1940
endforeach ()
1952
1941
else ()
0 commit comments