<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">I get that CMake does something different for PRIVATE, but the way we use CMake in LLVM we really can't make a private distinction reasonable. Because we don't sub-divide our headers per library, we don't support per-dependency include paths in LLVM or Clang's libraries.<div class=""><br class=""></div><div class="">This behavior also assumes you are using `target_include_directories` to assign PRIVATE | PUBLIC | INTERFACE to include directories, which we don't generally do in LLVM (a quick grep showed one place in LLVM code excluding our google benchmark drop). We do generally use `include_directories` which always treats things as PRIVATE, so they don't cascade to dependencies.</div><div class=""><br class=""></div><div class="">-Chris<br class=""><div class=""><div class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Jul 12, 2019, at 7:16 PM, Shoaib Meenai <<a href="mailto:smeenai@fb.com" class="">smeenai@fb.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="WordSection1" style="page: WordSection1; caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">I struggled for a while thinking why PRIVATE might be useful in a target_link_libraries call for a shared library, and then I found<span class="Apple-converted-space"> </span><a href="https://cmake.org/pipermail/cmake/2016-May/063400.html" style="color: purple; text-decoration: underline;" class="">https://cmake.org/pipermail/cmake/2016-May/063400.html</a>. The relevant bit is:<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">If you were paying careful attention, you would have noticed that when A<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">links in B as PRIVATE, the include directories of B never propagate to<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">something linking to A, but if A is a static library, then the *linking* of<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">B behaves as though the relationship was PUBLIC. This<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">PRIVATE-becomes-PUBLIC behaviour for static libraries only applies to the<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">*linking*, not to the other dependencies (compiler options/flags and<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">include search paths).<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">So PRIVATE/INTERFACE/PUBLIC doesn’t make any difference as far as the actual linking goes, but it does affect propagation of other options, and I think it’s valid to want to have a PRIVATE dependency for a static library.<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div><div style="border-style: solid none none; border-top-width: 1pt; border-top-color: rgb(181, 196, 223); padding: 3pt 0in 0in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 12pt;" class="">From:<span class="Apple-converted-space"> </span></span></b><span style="font-size: 12pt;" class=""><<a href="mailto:cbieneman@apple.com" class="">cbieneman@apple.com</a>> on behalf of Chris Bieneman <<a href="mailto:beanz@apple.com" class="">beanz@apple.com</a>><br class=""><b class="">Date:<span class="Apple-converted-space"> </span></b>Friday, July 12, 2019 at 9:08 AM<br class=""><b class="">To:<span class="Apple-converted-space"> </span></b>Shoaib Meenai <<a href="mailto:smeenai@fb.com" class="">smeenai@fb.com</a>><br class=""><b class="">Cc:<span class="Apple-converted-space"> </span></b>Alex Bradbury <<a href="mailto:asb@lowrisc.org" class="">asb@lowrisc.org</a>>, cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org" class="">cfe-commits@lists.llvm.org</a>><br class=""><b class="">Subject:<span class="Apple-converted-space"> </span></b>Re: r365825 - [clang-shlib] Fix clang-shlib for PRIVATE dependencies<o:p class=""></o:p></span></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Ah! I see what is going on here. This is kinda a silliness of CMake. `PRIVATE` linkage for a static archive is silly, and shouldn't be possible. All link dependencies for static archives are really `INTERFACE` dependencies, and it looks like CMake is doing something kinda silly instead of producing a reasonable error or warning like it probably should do.<o:p class=""></o:p></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">For context, `PRIVATE` linkage in the context of that change would mean DirectoryWalker links something, but things that link DirectoryWalker don't. That just isn't possible with static archives, so they become interface dependencies (and CMake seems to insert a generator expression to make that work).<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">In `llvm_add_library` we always use `PRIVATE` linkage for shared libraries, and `INTERFACE` for static, which does the right thing.<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Unless there is a better reason than a new patch coming in, I think the right fix is to revert this back and expect the new patch to correct its linkage behavior.<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">-Chris<o:p class=""></o:p></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><br class=""><br class=""><o:p class=""></o:p></div><blockquote style="margin-top: 5pt; margin-bottom: 5pt;" class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">On Jul 12, 2019, at 8:53 AM, Shoaib Meenai <<a href="mailto:smeenai@fb.com" style="color: purple; text-decoration: underline;" class="">smeenai@fb.com</a>> wrote:<o:p class=""></o:p></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">See<span class="apple-converted-space"> </span><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__reviews.llvm.org_D58418-231577670&d=DwMFAg&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=BaInVCyhXHMyre_oyIEnYhuQC5zsW6p65QBgZLR7ujc&s=7bhRDMtKEyVqFDlMWzo361mQT2N8lcOt-YDh-XGjZok&e=" style="color: purple; text-decoration: underline;" class=""><span style="color: purple;" class="">https://reviews.llvm.org/D58418#1577670</span></a>. More generally it would appear for any static library with a PRIVATE dependency though.<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">I guess an alternative would be to use the LINK_LIBRARIES property (which should be free of generator expressions, I believe) to propagate dependencies instead of INTERFACE_LINK_LIBRARIES, and just assume that no one is gonna set an INTERFACE dependency on a static library. (Supporting PRIVATE dependencies on a static library definitely seems more valuable than supporting INTERFACE dependencies.)<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div><div style="border-style: solid none none; border-top-width: 1pt; border-top-color: rgb(181, 196, 223); padding: 3pt 0in 0in;" class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 12pt;" class="">From:<span class="apple-converted-space"> </span></span></b><span style="font-size: 12pt;" class=""><<a href="mailto:cbieneman@apple.com" style="color: purple; text-decoration: underline;" class="">cbieneman@apple.com</a>> on behalf of Chris Bieneman <<a href="mailto:beanz@apple.com" style="color: purple; text-decoration: underline;" class="">beanz@apple.com</a>><br class=""><b class="">Date:<span class="apple-converted-space"> </span></b>Friday, July 12, 2019 at 8:49 AM<br class=""><b class="">To:<span class="apple-converted-space"> </span></b>Shoaib Meenai <<a href="mailto:smeenai@fb.com" style="color: purple; text-decoration: underline;" class="">smeenai@fb.com</a>><br class=""><b class="">Cc:<span class="apple-converted-space"> </span></b>Alex Bradbury <<a href="mailto:asb@lowrisc.org" style="color: purple; text-decoration: underline;" class="">asb@lowrisc.org</a>>, cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org" style="color: purple; text-decoration: underline;" class="">cfe-commits@lists.llvm.org</a>><br class=""><b class="">Subject:<span class="apple-converted-space"> </span></b>Re: r365825 - [clang-shlib] Fix clang-shlib for PRIVATE dependencies</span><o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div></div><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">One of the benefits of the object library approach for generating the clang dylib is that it was compatible with BUILD_SHARED_LIBS. We had lots of issues with libLLVM where people using BUILD_SHARED_LIBS would make changes that broke it, so I was trying to make the clang dylib in a way that it could always be enabled.<o:p class=""></o:p></div></div><div class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Do we know where the nested generator expression was coming from?<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">-Chris<o:p class=""></o:p></div></div><div class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><br class=""><br class=""><br class=""><o:p class=""></o:p></div></div><blockquote style="margin-top: 5pt; margin-bottom: 5pt;" class=""><div class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">On Jul 12, 2019, at 8:32 AM, Shoaib Meenai <<a href="mailto:smeenai@fb.com" style="color: purple; text-decoration: underline;" class=""><span style="color: purple;" class="">smeenai@fb.com</span></a>> wrote:<o:p class=""></o:p></div></div></div><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div><div class=""><div class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Oops, sorry about the breakage.<o:p class=""></o:p></div></div><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Chris, aren't BUILD_SHARED_LIBS and the combined Clang dylib incompatible? Should we disable building the latter if the former is set?<o:p class=""></o:p></div></div><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div><div style="border-style: solid none none; border-top-width: 1pt; border-top-color: rgb(181, 196, 223); padding: 3pt 0in 0in;" class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 12pt;" class="">From:<span class="apple-converted-space"> </span></span></b><span style="font-size: 12pt;" class="">Alex Bradbury <<a href="mailto:asb@lowrisc.org" style="color: purple; text-decoration: underline;" class=""><span style="color: purple;" class="">asb@lowrisc.org</span></a>><br class=""><b class="">Date:<span class="apple-converted-space"> </span></b>Friday, July 12, 2019 at 2:02 AM<br class=""><b class="">To:<span class="apple-converted-space"> </span></b>Shoaib Meenai <<a href="mailto:smeenai@fb.com" style="color: purple; text-decoration: underline;" class=""><span style="color: purple;" class="">smeenai@fb.com</span></a>><br class=""><b class="">Cc:<span class="apple-converted-space"> </span></b>cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org" style="color: purple; text-decoration: underline;" class=""><span style="color: purple;" class="">cfe-commits@lists.llvm.org</span></a>><br class=""><b class="">Subject:<span class="apple-converted-space"> </span></b>Re: r365825 - [clang-shlib] Fix clang-shlib for PRIVATE dependencies</span><o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">On Thu, 11 Jul 2019 at 22:20, Shoaib Meenai via cfe-commits<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><<a href="mailto:cfe-commits@lists.llvm.org" style="color: purple; text-decoration: underline;" class=""><span style="color: purple;" class="">cfe-commits@lists.llvm.org</span></a>> wrote:<o:p class=""></o:p></div></div></div><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="border-style: none none none solid; border-left-width: 4.5pt; border-left-color: rgb(181, 196, 223); padding: 0in 0in 0in 4pt; margin: 5pt 0in 5pt 3.75pt;" class=""><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Author: smeenai<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Date: Thu Jul 11 14:20:38 2019<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">New Revision: 365825<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">URL:<span class="apple-converted-space"> </span><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D365825-26view-3Drev&d=DwIBaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=ETCU2JhfBcjWz-nbe6LUVSRQR0T1f3wCzxLIhKlMmQo&s=R9NSZG1XQDVSiE0wJUgb1kMUrG6bJkG3v5GDcTdkpAk&e=" style="color: purple; text-decoration: underline;" class=""><span style="color: purple;" class="">https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D365825-26view-3Drev&d=DwIBaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=ETCU2JhfBcjWz-nbe6LUVSRQR0T1f3wCzxLIhKlMmQo&s=R9NSZG1XQDVSiE0wJUgb1kMUrG6bJkG3v5GDcTdkpAk&e=</span></a><o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Log:<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">[clang-shlib] Fix clang-shlib for PRIVATE dependencies<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Any static library with a PRIVATE dependency ends up with a<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">$<LINK_ONLY:...> generator expression in its INTERFACE_LINK_LIBRARIES,<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">which won't be evaluated by the $<TARGET_PROPERTY:...>, so we end up<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">with an unevaluated generator expression in the generated build file and<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Ninja chokes on the dollar sign. Just use the static library directly<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">for its dependencies instead of trying to propagate dependencies<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">manually.<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Differential Revision:<span class="apple-converted-space"> </span><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__reviews.llvm.org_D64579&d=DwIBaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=ETCU2JhfBcjWz-nbe6LUVSRQR0T1f3wCzxLIhKlMmQo&s=mutN2zF1KixMEVFjNzG_Q7iVJzG5ECbrU4tX3AKWLVQ&e=" style="color: purple; text-decoration: underline;" class=""><span style="color: purple;" class="">https://urldefense.proofpoint.com/v2/url?u=https-3A__reviews.llvm.org_D64579&d=DwIBaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=ETCU2JhfBcjWz-nbe6LUVSRQR0T1f3wCzxLIhKlMmQo&s=mutN2zF1KixMEVFjNzG_Q7iVJzG5ECbrU4tX3AKWLVQ&e=</span></a><o:p class=""></o:p></div></div></div></blockquote><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">This seems to break a -DBUILD_SHARED_LIBS build for me. It fails at<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">the point of linking lib/libclang_shared.so.9svn with errors like:<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">ld.lld: error: undefined symbol: llvm::llvm_unreachable_internal(char<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">const*, char const*, unsigned int)<o:p class=""></o:p></div></div></div><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="border-style: none none none solid; border-left-width: 4.5pt; border-left-color: rgb(181, 196, 223); padding: 0in 0in 0in 4pt; margin: 5pt 0in 5pt 3.75pt;" class=""><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="border-style: none none none solid; border-left-width: 4.5pt; border-left-color: rgb(181, 196, 223); padding: 0in 0in 0in 4pt; margin: 5pt 0in 5pt 3.75pt;" class=""><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="border-style: none none none solid; border-left-width: 4.5pt; border-left-color: rgb(181, 196, 223); padding: 0in 0in 0in 4pt; margin: 5pt 0in 5pt 3.75pt;" class=""><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">referenced by Attributes.cpp:34 (/home/asb/llvm-project/clang/lib/Basic/Attributes.cpp:34)<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">               tools/clang/lib/Basic/CMakeFiles/obj.clangBasic.dir/Attributes.cpp.o:(clang::attr::getSubjectMatchRuleSpelling(clang::attr::SubjectMatchRule))<o:p class=""></o:p></div></div></div></blockquote></blockquote></blockquote><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">ld.lld: error: undefined symbol: llvm::llvm_unreachable_internal(char<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">const*, char const*, unsigned int)<o:p class=""></o:p></div></div></div><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="border-style: none none none solid; border-left-width: 4.5pt; border-left-color: rgb(181, 196, 223); padding: 0in 0in 0in 4pt; margin: 5pt 0in 5pt 3.75pt;" class=""><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="border-style: none none none solid; border-left-width: 4.5pt; border-left-color: rgb(181, 196, 223); padding: 0in 0in 0in 4pt; margin: 5pt 0in 5pt 3.75pt;" class=""><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="border-style: none none none solid; border-left-width: 4.5pt; border-left-color: rgb(181, 196, 223); padding: 0in 0in 0in 4pt; margin: 5pt 0in 5pt 3.75pt;" class=""><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">referenced by TargetCXXABI.h:168 (/home/asb/llvm-project/clang/include/clang/Basic/TargetCXXABI.h:168)<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">               tools/clang/lib/Basic/CMakeFiles/obj.clangBasic.dir/Attributes.cpp.o:(clang::TargetCXXABI::isMicrosoft() const)<o:p class=""></o:p></div></div></div></blockquote></blockquote></blockquote><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">ld.lld: error: undefined symbol: llvm::llvm_unreachable_internal(char<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">const*, char const*, unsigned int)<o:p class=""></o:p></div></div></div><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="border-style: none none none solid; border-left-width: 4.5pt; border-left-color: rgb(181, 196, 223); padding: 0in 0in 0in 4pt; margin: 5pt 0in 5pt 3.75pt;" class=""><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="border-style: none none none solid; border-left-width: 4.5pt; border-left-color: rgb(181, 196, 223); padding: 0in 0in 0in 4pt; margin: 5pt 0in 5pt 3.75pt;" class=""><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="border-style: none none none solid; border-left-width: 4.5pt; border-left-color: rgb(181, 196, 223); padding: 0in 0in 0in 4pt; margin: 5pt 0in 5pt 3.75pt;" class=""><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">referenced by TargetCXXABI.h:149 (/home/asb/llvm-project/clang/include/clang/Basic/TargetCXXABI.h:149)<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">               tools/clang/lib/Basic/CMakeFiles/obj.clangBasic.dir/Attributes.cpp.o:(clang::TargetCXXABI::isItaniumFamily() const)<o:p class=""></o:p></div></div></div></blockquote></blockquote></blockquote><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">ld.lld: error: undefined symbol: llvm::EnableABIBreakingChecks<o:p class=""></o:p></div></div></div><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="border-style: none none none solid; border-left-width: 4.5pt; border-left-color: rgb(181, 196, 223); padding: 0in 0in 0in 4pt; margin: 5pt 0in 5pt 3.75pt;" class=""><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="border-style: none none none solid; border-left-width: 4.5pt; border-left-color: rgb(181, 196, 223); padding: 0in 0in 0in 4pt; margin: 5pt 0in 5pt 3.75pt;" class=""><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="border-style: none none none solid; border-left-width: 4.5pt; border-left-color: rgb(181, 196, 223); padding: 0in 0in 0in 4pt; margin: 5pt 0in 5pt 3.75pt;" class=""><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">referenced by Attributes.cpp<o:p class=""></o:p></div></div></div><div class=""><div style="margin-left: 1in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">               tools/clang/lib/Basic/CMakeFiles/obj.clangBasic.dir/Attributes.cpp.o:(llvm::VerifyEnableABIBreakingChecks)</div></div></div></blockquote></blockquote></blockquote></div></div></blockquote></div></div></div></blockquote></div></div></div></div></blockquote></div><br class=""></div></div></div></body></html>