Files
swift-mirror/lib/Demangling/CMakeLists.txt
Tony Allevato 5b1daa9055 Conditionally wrap (de)mangling symbols in an inline namespace.
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.
2020-06-19 11:20:56 -07:00

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.