mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Since libDemangling is included in the Swift standard library, ODR violations can occur on platforms that allow statically linking stdlib if Swift code is linked with other compiler libraries that also transitively pull in libDemangling, and if the stdlib version and compiler version do not match exactly (even down to commit drift between releases). This lets the runtime conditionally segregate its copies of the libDemangling symbols from those in the compiler using an inline namespace without affecting usage throughout source.
23 lines
903 B
CMake
23 lines
903 B
CMake
add_swift_host_library(swiftDemangling STATIC
|
|
Demangler.cpp
|
|
Context.cpp
|
|
ManglingUtils.cpp
|
|
NodeDumper.cpp
|
|
NodePrinter.cpp
|
|
OldDemangler.cpp
|
|
OldRemangler.cpp
|
|
Punycode.cpp
|
|
Remangler.cpp)
|
|
target_compile_definitions(swiftDemangling PRIVATE
|
|
LLVM_DISABLE_ABI_BREAKING_CHECKS_ENFORCING=1)
|
|
|
|
# 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.
|