Skip to content

Commit b95e3cb

Browse files
committed
Add SwiftDemangling
1 parent bfb7596 commit b95e3cb

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

Runtimes/Core/CMakeLists.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,21 @@ project(SwiftCore LANGUAGES C CXX Swift VERSION 6.1)
77
if(NOT PROJECT_IS_TOP_LEVEL)
88
message(FATAL_ERROR "Swift Core must build as a standalone project")
99
endif()
10+
11+
# FIXME: We should not need to refer back into the compiler sources. This is
12+
# needed by gyb, Demangling, Threading, the runtime (ThreadSanitizer.cpp)
13+
set(SwiftCore_SWIFTC_SOURCE_DIR
14+
"${PROJECT_SOURCE_DIR}/../../"
15+
CACHE FILEPATH "Path to the root source directory of the Swift compiler")
16+
1017
include(CompilerSettings)
1118

19+
option(SwiftCore_ENABLE_CRASH_REPORTER_CLIENT "Enable Apple CrashReporter integration" OFF)
20+
option(SwiftCore_ENABLE_OBJC_INTEROP "Enable runtime ObjC interop" OFF)
21+
option(SwiftCore_ENABLE_TYPE_PRINTING "Enable printing type names" OFF)
22+
1223
include_directories(include)
1324

1425
add_subdirectory(LLVMSupport)
1526
add_subdirectory(SwiftShims/swift/shims)
27+
add_subdirectory(Demangling)
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# FIXME: Refactor demangling library so that we aren't pulling sources from
2+
# the compiler.
3+
add_library(swiftDemangling STATIC
4+
"${SwiftCore_SWIFTC_SOURCE_DIR}/lib/Demangling/Context.cpp"
5+
"${SwiftCore_SWIFTC_SOURCE_DIR}/lib/Demangling/Demangler.cpp"
6+
"${SwiftCore_SWIFTC_SOURCE_DIR}/lib/Demangling/ManglingUtils.cpp"
7+
"${SwiftCore_SWIFTC_SOURCE_DIR}/lib/Demangling/NodePrinter.cpp"
8+
"${SwiftCore_SWIFTC_SOURCE_DIR}/lib/Demangling/Punycode.cpp"
9+
"${SwiftCore_SWIFTC_SOURCE_DIR}/lib/Demangling/Remangler.cpp"
10+
"${SwiftCore_SWIFTC_SOURCE_DIR}/lib/Demangling/NodeDumper.cpp"
11+
"${SwiftCore_SWIFTC_SOURCE_DIR}/lib/Demangling/Errors.cpp")
12+
target_compile_definitions(swiftDemangling PRIVATE swiftCore_EXPORTS)
13+
14+
target_include_directories(swiftDemangling
15+
PRIVATE "${PROJECT_SOURCE_DIR}/../../include")
16+
17+
if(SwiftCore_ENABLE_CRASH_REPORTER_CLIENT)
18+
target_compile_definitions(swiftDemangling PRIVATE SWIFT_HAVE_CRASHREPORTERCLIENT)
19+
target_sources(swiftDemangling PRIVATE "${SwiftCore_SWIFTC_SOURCE_DIR}/lib/Demangling/CrashReporter.cpp")
20+
endif()
21+
22+
if(SwiftCore_ENABLE_OBJC_INTEROP)
23+
target_sources(swiftDemangling PRIVATE
24+
"${SwiftCore_SWIFTC_SOURCE_DIR}/lib/Demangling/OldDemangler.cpp"
25+
"${SwiftCore_SWIFTC_SOURCE_DIR}/lib/Demangling/OldRemangler.cpp")
26+
target_compile_options(swiftDemangling PRIVATE -DSWIFT_SUPPORT_OLD_MANGLING=1)
27+
else()
28+
target_compile_options(swiftDemangling PRIVATE -DSWIFT_SUPPORT_OLD_MANGLING=0)
29+
endif()
30+
31+
if(SwiftCore_ENABLE_TYPE_PRINTING)
32+
target_compile_definitions(swiftDemangling PRIVATE SWIFT_STDLIB_HAS_TYPE_PRINTING)
33+
endif()
34+
35+
if(LINUX OR BSD)
36+
target_compile_options(swiftDemangling PRIVATE -fno-lto)
37+
endif()
38+
39+
if(NOT BUILD_SHARED_LIBS)
40+
install(TARGETS swiftDemangling)
41+
endif()

0 commit comments

Comments
 (0)