@@ -730,7 +730,8 @@ function(_add_swift_library_single target name)
730
730
OBJECT_LIBRARY
731
731
SHARED
732
732
STATIC
733
- TARGET_LIBRARY )
733
+ TARGET_LIBRARY
734
+ INSTALL_WITH_SHARED )
734
735
set (SWIFTLIB_SINGLE_single_parameter_options
735
736
ARCHITECTURE
736
737
DEPLOYMENT_VERSION_IOS
@@ -1085,18 +1086,24 @@ function(_add_swift_library_single target name)
1085
1086
BINARY_DIR ${SWIFT_RUNTIME_OUTPUT_INTDIR}
1086
1087
LIBRARY_DIR ${SWIFT_LIBRARY_OUTPUT_INTDIR} )
1087
1088
1089
+ if (SWIFTLIB_INSTALL_WITH_SHARED )
1090
+ set (swift_lib_dir ${SWIFTLIB_DIR} )
1091
+ else ()
1092
+ set (swift_lib_dir ${SWIFTSTATICLIB_DIR} )
1093
+ endif ()
1094
+
1088
1095
foreach (config ${CMAKE_CONFIGURATION_TYPES} )
1089
1096
string (TOUPPER ${config} config_upper )
1090
1097
escape_path_for_xcode (
1091
- "${config} " "${SWIFTSTATICLIB_DIR } " config_lib_dir )
1098
+ "${config} " "${swift_lib_dir } " config_lib_dir )
1092
1099
set_target_properties (${target_static} PROPERTIES
1093
1100
LIBRARY_OUTPUT_DIRECTORY_${config_upper} ${config_lib_dir} /${SWIFTLIB_SINGLE_SUBDIR}
1094
1101
ARCHIVE_OUTPUT_DIRECTORY_${config_upper} ${config_lib_dir} /${SWIFTLIB_SINGLE_SUBDIR} )
1095
1102
endforeach ()
1096
1103
1097
1104
set_target_properties (${target_static} PROPERTIES
1098
- LIBRARY_OUTPUT_DIRECTORY ${SWIFTSTATICLIB_DIR } /${SWIFTLIB_SINGLE_SUBDIR}
1099
- ARCHIVE_OUTPUT_DIRECTORY ${SWIFTSTATICLIB_DIR } /${SWIFTLIB_SINGLE_SUBDIR} )
1105
+ LIBRARY_OUTPUT_DIRECTORY ${swift_lib_dir } /${SWIFTLIB_SINGLE_SUBDIR}
1106
+ ARCHIVE_OUTPUT_DIRECTORY ${swift_lib_dir } /${SWIFTLIB_SINGLE_SUBDIR} )
1100
1107
endif ()
1101
1108
1102
1109
set_target_properties (${target}
@@ -1347,8 +1354,14 @@ function(_add_swift_library_single target name)
1347
1354
set_property (TARGET "${target_static} " APPEND_STRING PROPERTY
1348
1355
COMPILE_FLAGS " ${c_compile_flags} " )
1349
1356
# FIXME: The fallback paths here are going to be dynamic libraries.
1357
+
1358
+ if (SWIFTLIB_INSTALL_WITH_SHARED )
1359
+ set (search_base_dir ${SWIFTLIB_DIR} )
1360
+ else ()
1361
+ set (search_base_dir ${SWIFTSTATICLIB_DIR} )
1362
+ endif ()
1350
1363
set (library_search_directories
1351
- "${SWIFTSTATICLIB_DIR } /${SWIFTLIB_SINGLE_SUBDIR} "
1364
+ "${search_base_dir } /${SWIFTLIB_SINGLE_SUBDIR} "
1352
1365
"${SWIFT_NATIVE_SWIFT_TOOLS_PATH} /../lib/swift/${SWIFTLIB_SINGLE_SUBDIR} "
1353
1366
"${SWIFT_NATIVE_SWIFT_TOOLS_PATH} /../lib/swift/${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK} _LIB_SUBDIR}" )
1354
1367
swift_target_link_search_directories ("${target_static} " "${library_search_directories} " )
@@ -1477,6 +1490,7 @@ endfunction()
1477
1490
# [IS_STDLIB]
1478
1491
# [IS_STDLIB_CORE]
1479
1492
# [TARGET_LIBRARY]
1493
+ # [INSTALL_WITH_SHARED]
1480
1494
# INSTALL_IN_COMPONENT comp
1481
1495
# DEPLOYMENT_VERSION_OSX version
1482
1496
# DEPLOYMENT_VERSION_IOS version
@@ -1583,6 +1597,9 @@ endfunction()
1583
1597
# DEPLOYMENT_VERSION_WATCHOS
1584
1598
# The minimum deployment version to build for if this is an WATCHOS library.
1585
1599
#
1600
+ # INSTALL_WITH_SHARED
1601
+ # Install a static library target alongside shared libraries
1602
+ #
1586
1603
# source1 ...
1587
1604
# Sources to add into this library.
1588
1605
function (add_swift_target_library name )
@@ -1597,7 +1614,8 @@ function(add_swift_target_library name)
1597
1614
OBJECT_LIBRARY
1598
1615
SHARED
1599
1616
STATIC
1600
- TARGET_LIBRARY )
1617
+ TARGET_LIBRARY
1618
+ INSTALL_WITH_SHARED )
1601
1619
set (SWIFTLIB_single_parameter_options
1602
1620
DEPLOYMENT_VERSION_IOS
1603
1621
DEPLOYMENT_VERSION_OSX
@@ -1882,6 +1900,7 @@ function(add_swift_target_library name)
1882
1900
${SWIFTLIB_SHARED_keyword}
1883
1901
${SWIFTLIB_STATIC_keyword}
1884
1902
${SWIFTLIB_OBJECT_LIBRARY_keyword}
1903
+ ${SWIFTLIB_INSTALL_WITH_SHARED_keyword}
1885
1904
${SWIFTLIB_SOURCES}
1886
1905
MODULE_TARGET ${MODULE_VARIANT_NAME}
1887
1906
SDK ${sdk}
@@ -1996,7 +2015,7 @@ function(add_swift_target_library name)
1996
2015
set (resource_dir_sdk_subdir "${SWIFT_SDK_${sdk} _LIB_SUBDIR}" )
1997
2016
precondition (resource_dir_sdk_subdir )
1998
2017
1999
- if (SWIFTLIB_SHARED )
2018
+ if (SWIFTLIB_SHARED OR SWIFTLIB_INSTALL_WITH_SHARED )
2000
2019
set (resource_dir "swift" )
2001
2020
set (file_permissions
2002
2021
OWNER_READ OWNER_WRITE OWNER_EXECUTE
@@ -2058,10 +2077,18 @@ function(add_swift_target_library name)
2058
2077
list (APPEND THIN_INPUT_TARGETS_STATIC "${TARGET} -static" )
2059
2078
endforeach ()
2060
2079
2080
+ if (SWIFTLIB_INSTALL_WITH_SHARED )
2081
+ set (install_subdir "swift" )
2082
+ set (universal_subdir ${SWIFTLIB_DIR} )
2083
+ else ()
2084
+ set (install_subdir "swift_static" )
2085
+ set (universal_subdir ${SWIFTSTATICLIB_DIR} )
2086
+ endif ()
2087
+
2061
2088
set (lipo_target_static
2062
2089
"${name} -${SWIFT_SDK_${sdk} _LIB_SUBDIR}-static" )
2063
2090
set (UNIVERSAL_LIBRARY_NAME
2064
- "${SWIFTSTATICLIB_DIR } /${SWIFT_SDK_${sdk} _LIB_SUBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${name}${CMAKE_STATIC_LIBRARY_SUFFIX} " )
2091
+ "${universal_subdir } /${SWIFT_SDK_${sdk} _LIB_SUBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${name}${CMAKE_STATIC_LIBRARY_SUFFIX} " )
2065
2092
_add_swift_lipo_target (SDK
2066
2093
${sdk}
2067
2094
TARGET
@@ -2070,7 +2097,7 @@ function(add_swift_target_library name)
2070
2097
"${UNIVERSAL_LIBRARY_NAME} "
2071
2098
${THIN_INPUT_TARGETS_STATIC} )
2072
2099
swift_install_in_component (FILES "${UNIVERSAL_LIBRARY_NAME} "
2073
- DESTINATION "lib${LLVM_LIBDIR_SUFFIX} /swift_static /${resource_dir_sdk_subdir} "
2100
+ DESTINATION "lib${LLVM_LIBDIR_SUFFIX} /${install_subdir} /${resource_dir_sdk_subdir} "
2074
2101
PERMISSIONS
2075
2102
OWNER_READ OWNER_WRITE
2076
2103
GROUP_READ
0 commit comments