Files
swift-mirror/lib/Demangling/CMakeLists.txt
Alastair Houghton 3f49b8be32 [Demangling] Fix duplicate _gCRAnnotations symbol problems.
Moved the _gCRAnnotations declarations to their own object module,
which will help to avoid duplicate symbol problems (at least with .a
files).

Also tweaked things to make it so that the demangler and runtime
versions of the message setting code will interoperate (and so that
they'll interoperate better with other implementations that might
creep in from somewhere, like the one in LLVMSupport).

rdar://91095592
2022-03-31 13:04:09 +01:00

35 lines
1.2 KiB
CMake

set(swift_demangling_compile_flags
LLVM_DISABLE_ABI_BREAKING_CHECKS_ENFORCING=1
SWIFT_SUPPORT_OLD_MANGLING=1
SWIFT_STDLIB_HAS_TYPE_PRINTING=1)
if(SWIFT_RUNTIME_CRASH_REPORTER_CLIENT)
list(APPEND swift_demangling_compile_flags
"-DSWIFT_HAVE_CRASHREPORTERCLIENT=1")
endif()
add_swift_host_library(swiftDemangling STATIC
Demangler.cpp
Context.cpp
ManglingUtils.cpp
NodeDumper.cpp
NodePrinter.cpp
OldDemangler.cpp
OldRemangler.cpp
Punycode.cpp
Remangler.cpp
Errors.cpp
CrashReporter.cpp)
target_compile_definitions(swiftDemangling PRIVATE
${swift_demangling_compile_flags})
# NOTE: Runtime libraries that depend on swiftDemangling should define
# SWIFT_INLINE_NAMESPACE to specify the identifier that will be used for an
# inline namespace that will be added around the symbols defined by this
# library. This keeps the demangling symbols in those libraries distinct
# from those in the compiler, which prevents ODR violations in certain
# contexts; for example, on platforms that support statically linking the
# Swift standard library, it allows this to happen safely when the binary
# also links in compiler libraries that may not match exactly with the
# runtime version.