Skip to content

Commit cf4d825

Browse files
authored
Merge pull request swiftlang#78476 from compnerd/exportation
stdlib,Runtimes: begin preparing for a static stdlib on Windows
2 parents 5ac4a4d + 358be09 commit cf4d825

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

Runtimes/Core/SwiftShims/swift/shims/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,8 @@ add_library(swiftShims INTERFACE)
3333
target_include_directories(swiftShims INTERFACE
3434
$<$<COMPILE_LANGUAGE:C,CXX>:${CMAKE_CURRENT_SOURCE_DIR}/../../>
3535
$<$<COMPILE_LANGUAGE:Swift>:${CMAKE_CURRENT_SOURCE_DIR}>)
36+
target_compile_definitions(swiftShims INTERFACE
37+
$<$<AND:$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>,$<COMPILE_LANGUAGE:C,CXX>>:SWIFT_STATIC_STDLIB>)
3638
target_compile_options(swiftShims INTERFACE
39+
"$<$<AND:$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>,$<COMPILE_LANGUAGE:Swift>>:SHELL:-Xcc -DSWIFT_STATIC_STDLIB>"
3740
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xcc -fmodule-map-file=${CMAKE_CURRENT_SOURCE_DIR}/module.modulemap>")

Runtimes/Core/runtime/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,8 @@ if("${SwiftCore_OBJECT_FORMAT}" STREQUAL "elfx")
152152
install(TARGETS swiftrt DESTINATION "${CMAKE_INSTALL_LIBDIR}/swift")
153153
elseif("${SwiftCore_OBJECT_FORMAT}" STREQUAL "coffx")
154154
add_library(swiftrt OBJECT SwiftRT-COFF.cpp)
155+
target_compile_definitions(swiftrt PRIVATE
156+
$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:SWIFT_STATIC_STDLIB>)
155157
target_link_libraries(swiftrt PRIVATE swiftShims)
156158
install(TARGETS swiftrt DESTINATION "${CMAKE_INSTALL_LIBDIR}/swift")
157159
elseif(NOT "${SwiftCore_OBJECT_FORMAT}" STREQUAL "x")

stdlib/public/SwiftShims/swift/shims/Visibility.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -168,9 +168,13 @@
168168
// FIXME: this #else should be some sort of #elif Windows
169169
#else // !__MACH__ && !__ELF__
170170

171-
// On PE/COFF, we use dllimport and dllexport.
172-
# define SWIFT_ATTRIBUTE_FOR_EXPORTS __declspec(dllexport)
173-
# define SWIFT_ATTRIBUTE_FOR_IMPORTS __declspec(dllimport)
171+
# if defined(SWIFT_STATIC_STDLIB)
172+
# define SWIFT_ATTRIBUTE_FOR_EXPORTS /**/
173+
# define SWIFT_ATTRIBUTE_FOR_IMPORTS /**/
174+
# else
175+
# define SWIFT_ATTRIBUTE_FOR_EXPORTS __declspec(dllexport)
176+
# define SWIFT_ATTRIBUTE_FOR_IMPORTS __declspec(dllimport)
177+
# endif
174178

175179
#endif
176180

0 commit comments

Comments
 (0)