1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
|
# TODO: clean this up so it's less Apple-specific.
# Detect B&I builds.
set(SWIFT_BNI_OS_BUILD FALSE)
set(SWIFT_BNI_XCODE_BUILD FALSE)
if(DEFINED ENV{RC_XBS})
if((NOT DEFINED ENV{RC_XCODE} OR NOT "$ENV{RC_XCODE}") AND (NOT DEFINED ENV{RC_PLAYGROUNDS} OR NOT "$ENV{RC_PLAYGROUNDS}"))
set(SWIFT_BNI_OS_BUILD TRUE)
else()
set(SWIFT_BNI_XCODE_BUILD TRUE)
endif()
endif()
configure_file("CMakeConfig.h.in"
"${PROJECT_BINARY_DIR}/include/swift/Runtime/CMakeConfig.h"
ESCAPE_QUOTES @ONLY)
add_library(swiftRuntime OBJECT
"${PROJECT_SOURCE_DIR}/CompatibilityOverride/CompatibilityOverride.cpp"
AnyHashableSupport.cpp
Array.cpp
AutoDiffSupport.cpp
Bincompat.cpp
BytecodeLayouts.cpp
Casting.cpp
CrashReporter.cpp
Demangle.cpp
DynamicCast.cpp
Enum.cpp
EnvironmentVariables.cpp
ErrorObjectCommon.cpp
ErrorObjectNative.cpp
Errors.cpp
ErrorDefaultImpls.cpp
Exception.cpp
Exclusivity.cpp
ExistentialContainer.cpp
Float16Support.cpp
FoundationSupport.cpp
FunctionReplacement.cpp
GenericMetadataBuilder.cpp
Heap.cpp
HeapObject.cpp
ImageInspectionCommon.cpp
ImageInspectionMachO.cpp
ImageInspectionELF.cpp
ImageInspectionCOFF.cpp
ImageInspectionStatic.cpp
ImageInspectionWasm.cpp
SymbolInfo.cpp
KeyPaths.cpp
KnownMetadata.cpp
LibPrespecialized.cpp
Metadata.cpp
MetadataLookup.cpp
Numeric.cpp
Once.cpp
Paths.cpp
Portability.cpp
ProtocolConformance.cpp
RefCount.cpp
ReflectionMirror.cpp
RuntimeInvocationsTracking.cpp
SwiftDtoa.cpp
SwiftTLSContext.cpp
ThreadingError.cpp
Tracing.cpp
AccessibleFunction.cpp
Win32.cpp)
if(SwiftCore_ENABLE_RUNTIME_LEAK_CHECKER)
target_sources(swiftRuntime PRIVATE
Leaks.mm)
endif()
# TODO: Probably worth considering putting half of these in a RuntimeConfig.h.in
# file rather than pushing them through macro flags.
target_compile_definitions(swiftRuntime
PRIVATE
-DswiftCore_EXPORTS
-DSWIFT_RUNTIME
-DSWIFT_TARGET_LIBRARY_NAME=swiftRuntime
$<$<BOOL:${SwiftCore_ENABLE_BACKTRACING}>:-DSWIFT_ENABLE_BACKTRACING>
$<$<BOOL:${SwiftCore_ENABLE_OVERRIDABLE_RETAIN_RELEASE}>:-DSWIFT_STDLIB_OVERRIDABLE_RETAIN_RELEASE>
$<$<BOOL:${SwiftCore_ENABLE_MALLOC_TYPE}>:-DSWIFT_STDLIB_HAS_MALLOC_TYPE>
$<$<BOOL:${SwiftCore_BACKTRACER_PATH}>:-DSWIFT_RUNTIME_FIXED_BACKTRACER_PATH="${SwiftCore_BACKTRACER_PATH}">)
target_include_directories(swiftRuntime PRIVATE
"${PROJECT_BINARY_DIR}/include"
"${CMAKE_CURRENT_SOURCE_DIR}")
target_link_libraries(swiftRuntime PRIVATE swiftShims)
# FIXME: Refactor so that we're not pulling sources from the compiler files
target_sources(swiftRuntime PRIVATE
"${SwiftCore_SWIFTC_SOURCE_DIR}/lib/Threading/ThreadSanitizer.cpp")
# FIXME: Private.h uses `Demangler.h` and `TypeLookupError.h` from the compiler
# headers. We should split out the parts that are needed by the runtime
# to avoid pulling in headers from the compiler.
target_include_directories(swiftRuntime PRIVATE
"${SwiftCore_SWIFTC_SOURCE_DIR}/include")
if(SwiftCore_ENABLE_BACKTRACING)
target_sources(swiftRuntime PRIVATE
Backtrace.cpp
BacktraceUtils.cpp
CrashHandlerMacOS.cpp
CrashHandlerLinux.cpp)
endif()
if(SwiftCore_ENABLE_OBJC_INTEROP)
target_sources(swiftRuntime PRIVATE
ErrorObject.mm
SwiftObject.mm
SwiftValue.mm
ReflectionMirrorObjC.mm
ObjCRuntimeGetImageNameFromClass.mm)
endif()
string(TOLOWER "${SwiftCore_OBJECT_FORMAT}x" SwiftCore_OBJECT_FORMAT)
if("${SwiftCore_OBJECT_FORMAT}" STREQUAL "elfx")
add_library(swiftrt OBJECT SwiftRT-ELF-WASM.cpp)
target_compile_definitions(swiftrt PRIVATE
-DSWIFT_ENABLE_BACKTRACING=$<BOOL:${SwiftCore_ENABLE_BACKTRACING}>)
target_include_directories(swiftrt PRIVATE
"${SwiftCore_SWIFTC_SOURCE_DIR}/include"
"${PROJECT_BINARY_DIR}/include")
target_link_libraries(swiftrt PRIVATE swiftShims)
install(TARGETS swiftrt DESTINATION "${CMAKE_INSTALL_LIBDIR}/swift")
elseif("${SwiftCore_OBJECT_FORMAT}" STREQUAL "coffx")
add_library(swiftrt OBJECT SwiftRT-COFF.cpp)
target_link_libraries(swiftrt PRIVATE swiftShims)
install(TARGETS swiftrt DESTINATION "${CMAKE_INSTALL_LIBDIR}/swift")
elseif(NOT "${SwiftCore_OBJECT_FORMAT}" STREQUAL "x")
message(SEND_ERROR "Unknown object format '${SwiftCore_OBJECT_FORMAT}'")
endif()
|