<div dir="ltr">Please send patches to cfe-commits.</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Jul 25, 2014 at 9:38 AM, Dan Albert <span dir="ltr"><<a href="mailto:danalbert@google.com" target="_blank">danalbert@google.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5">On Thu, Jul 24, 2014 at 3:13 PM,  <span dir="ltr"><<a href="mailto:eatnumber1@google.com" target="_blank">eatnumber1@google.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

From: Russell Harmon <<a href="mailto:eatnumber1@google.com" target="_blank">eatnumber1@google.com</a>><br>
<br>
This will detect if you are building libcxx in-tree and libcxxabi is available.<br>
If so, it will default to using the in-tree libcxxabi by setting LIBCXX_CXX_ABI<br>
to "libcxxabi", LIBCXX_LIBCXXABI_INCLUDE_PATHS to<br>
"${CMAKE_SOURCE_DIR}/projects/libcxxabi/include" and will add "cxxabi" as a<br>
proper dependency.<br>
---<br>
 CMakeLists.txt | 19 ++++++++++++++++++-<br>
 1 file changed, 18 insertions(+), 1 deletion(-)<br>
<br>
diff --git a/CMakeLists.txt b/CMakeLists.txt<br>
index c20e5d1..a6253fa 100644<br>
--- a/CMakeLists.txt<br>
+++ b/CMakeLists.txt<br>
@@ -28,6 +28,11 @@ MACRO_ENSURE_OUT_OF_SOURCE_BUILD(<br>
<br>
 if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)<br>
   set(LIBCXX_BUILT_STANDALONE 1)<br>
+else ()<br>
+  set(libcxxabi_intree_path "${CMAKE_SOURCE_DIR}/projects/libcxxabi")<br>
+  if (NOT IS_DIRECTORY ${libcxxabi_intree_path})<br>
+    unset (libcxxabi_intree_path)<br>
+  endif ()<br>
 endif()</blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
 #===============================================================================<br>
@@ -46,7 +51,11 @@ option(LIBCXX_INSTALL_SUPPORT_HEADERS "Install libc++ support headers." ON)<br>
<div><br>
 set(CXXABIS none libcxxabi libcxxrt libstdc++ libsupc++)<br>
</div> if (NOT DEFINED LIBCXX_CXX_ABI)<br>
-  set(LIBCXX_CXX_ABI "none")<br>
+  if (DEFINED libcxxabi_intree_path)<br>
+    set(LIBCXX_CXX_ABI "libcxxabi")<br>
+  else ()<br>
+    set(LIBCXX_CXX_ABI "none")<br>
+  endif ()</blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"> endif()<br>
 set(LIBCXX_CXX_ABI "${LIBCXX_CXX_ABI}" CACHE STRING<br>
     "Specify C++ ABI library to use." FORCE)<br>
@@ -146,9 +155,17 @@ if ("${LIBCXX_CXX_ABI}" STREQUAL "libstdc++" OR<br>
     "${_LIBSUPCXX_LIBNAME}" "${_LIBSUPCXX_INCLUDE_FILES}" "bits"<br>
     )<br>
<div> elseif ("${LIBCXX_CXX_ABI}" STREQUAL "libcxxabi")<br>
</div>+  if (DEFINED libcxxabi_intree_path)<br>
+    set(LIBCXX_LIBCXXABI_INCLUDE_PATHS "${libcxxabi_intree_path}/include")<br>
+  endif ()<br>
<div>+<br></div></blockquote><div> </div></div></div><div>I think the above three changes could be merged. The second block could be replaced by something like:</div><div><br></div><div>if (NOT DEFINED LIBCXX_CXX_ABI)<br>

</div>

<div>  if (NOT DEFINED LIBCXX_BUILT_STANDALONE AND IS_DIRECTORY "${CMAKE_SOURCE_DIR}/projects/libcxxabi")</div><div>    set(LIBCXX_CXX_ABI "libcxxabi")</div><div>    set(LIBCXX_LIBCXXABI_INCLUDE_PATHS "${CMAKE_SOURCE_DIR}/projects/libcxxabi")<br>



  else()<br>    set(LIBCXX_CXX_ABI "none")<br>  endif()<br></div><div>endif()</div><div><br></div><div>Or something similar. I haven't tested it though.</div><div class=""><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">



<div>
   setup_abi_lib("LIBCXX_LIBCXXABI_INCLUDE_PATHS" ""<br>
     "c++abi" "cxxabi.h" ""<br>
     )<br>
+<br>
</div>+  if (DEFINED libcxxabi_intree_path)<br>
+    add_dependencies(LIBCXX_CXX_ABI_DEPS cxxabi)<br>
+  endif ()<br></blockquote><div> </div></div><div>Good call. I had forgotten to mention this gripe.</div><div class=""><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">




<div><div> elseif ("${LIBCXX_CXX_ABI}" STREQUAL "libcxxrt")<br>
   setup_abi_lib("LIBCXX_LIBCXXRT_INCLUDE_PATHS" "-DLIBCXXRT"<br>
     "cxxrt" "cxxabi.h;unwind.h;unwind-arm.h;unwind-itanium.h" ""<br>
--<br>
2.0.0.526.g5318336<br>
<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</div></div></blockquote></div></div><br></div></div>
<br>_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div><br></div>