<div dir="ltr">Thanks for fixing this!</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Feb 5, 2014 at 4:02 AM, Jordan Rose <span dir="ltr"><<a href="mailto:jordan_rose@apple.com" target="_blank">jordan_rose@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: jrose<br>
Date: Tue Feb  4 18:02:37 2014<br>
New Revision: 200811<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=200811&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=200811&view=rev</a><br>
Log:<br>
[CMake] Move -stdlib=libc++ handling into its own file.<br>
<br>
r200744 moved this into cmake/config-ix.cmake, so that it would happen very<br>
early in the build process. However, standalone builds of Clang and other<br>
external projects never include this file (which is correct).<br>
<br>
Now, -stdlib=libc++ and the LLVM_COMPILER_IS_GCC_COMPATIBLE option are<br>
both set in a new include file, HandleLLVMStdlib, which is included by<br>
both config-ix.cmake and HandleLLVMOptions.cmake. This preserves existing<br>
behavior for projects relying on HandleLLVMOptions and still does the<br>
right thing for builds of LLVM itself.<br>
<br>
Added:<br>
    llvm/trunk/cmake/modules/HandleLLVMStdlib.cmake<br>
Modified:<br>
    llvm/trunk/CMakeLists.txt<br>
    llvm/trunk/cmake/config-ix.cmake<br>
    llvm/trunk/cmake/modules/HandleLLVMOptions.cmake<br>
<br>
Modified: llvm/trunk/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/CMakeLists.txt?rev=200811&r1=200810&r2=200811&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/CMakeLists.txt?rev=200811&r1=200810&r2=200811&view=diff</a><br>

==============================================================================<br>
--- llvm/trunk/CMakeLists.txt (original)<br>
+++ llvm/trunk/CMakeLists.txt Tue Feb  4 18:02:37 2014<br>
@@ -272,14 +272,6 @@ option (LLVM_BUILD_DOCS "Build the llvm<br>
 option (LLVM_INCLUDE_DOCS "Generate build targets for llvm documentation." ON)<br>
 option (LLVM_ENABLE_DOXYGEN "Use doxygen to generate llvm documentation." OFF)<br>
<br>
-if( CMAKE_COMPILER_IS_GNUCXX )<br>
-  set(LLVM_COMPILER_IS_GCC_COMPATIBLE ON)<br>
-elseif( MSVC )<br>
-  set(LLVM_COMPILER_IS_GCC_COMPATIBLE OFF)<br>
-elseif( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" )<br>
-  set(LLVM_COMPILER_IS_GCC_COMPATIBLE ON)<br>
-endif()<br>
-<br>
 # All options referred to from HandleLLVMOptions have to be specified<br>
 # BEFORE this include, otherwise options will not be correctly set on<br>
 # first cmake run<br>
<br>
Modified: llvm/trunk/cmake/config-ix.cmake<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/config-ix.cmake?rev=200811&r1=200810&r2=200811&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/config-ix.cmake?rev=200811&r1=200810&r2=200811&view=diff</a><br>

==============================================================================<br>
--- llvm/trunk/cmake/config-ix.cmake (original)<br>
+++ llvm/trunk/cmake/config-ix.cmake Tue Feb  4 18:02:37 2014<br>
@@ -11,6 +11,8 @@ include(CheckFunctionExists)<br>
 include(CheckCXXSourceCompiles)<br>
 include(TestBigEndian)<br>
<br>
+include(HandleLLVMStdlib)<br>
+<br>
 if( UNIX AND NOT BEOS )<br>
   # Used by check_symbol_exists:<br>
   set(CMAKE_REQUIRED_LIBRARIES m)<br>
@@ -34,25 +36,6 @@ function(check_type_exists type files va<br>
     " ${variable})<br>
 endfunction()<br>
<br>
-function(append_if condition value)<br>
-  if (${condition})<br>
-    foreach(variable ${ARGN})<br>
-      set(${variable} "${${variable}} ${value}" PARENT_SCOPE)<br>
-    endforeach(variable)<br>
-  endif()<br>
-endfunction()<br>
-<br>
-include(CheckCXXCompilerFlag)<br>
-if( LLVM_COMPILER_IS_GCC_COMPATIBLE )<br>
-  if( LLVM_ENABLE_LIBCXX )<br>
-    check_cxx_compiler_flag("-stdlib=libc++" CXX_SUPPORTS_STDLIB)<br>
-    append_if(CXX_SUPPORTS_STDLIB "-stdlib=libc++" CMAKE_CXX_FLAGS)<br>
-    append_if(CXX_SUPPORTS_STDLIB "-stdlib=libc++" CMAKE_EXE_LINKER_FLAGS)<br>
-    append_if(CXX_SUPPORTS_STDLIB "-stdlib=libc++" CMAKE_SHARED_LINKER_FLAGS)<br>
-    append_if(CXX_SUPPORTS_STDLIB "-stdlib=libc++" CMAKE_MODULE_LINKER_FLAGS)<br>
-  endif()<br>
-endif()<br>
-<br>
 # include checks<br>
 check_include_file_cxx(cxxabi.h HAVE_CXXABI_H)<br>
 check_include_file(dirent.h HAVE_DIRENT_H)<br>
<br>
Modified: llvm/trunk/cmake/modules/HandleLLVMOptions.cmake<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/HandleLLVMOptions.cmake?rev=200811&r1=200810&r2=200811&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/HandleLLVMOptions.cmake?rev=200811&r1=200810&r2=200811&view=diff</a><br>

==============================================================================<br>
--- llvm/trunk/cmake/modules/HandleLLVMOptions.cmake (original)<br>
+++ llvm/trunk/cmake/modules/HandleLLVMOptions.cmake Tue Feb  4 18:02:37 2014<br>
@@ -2,6 +2,7 @@<br>
 # options and executing the appropriate CMake commands to realize the users'<br>
 # selections.<br>
<br>
+include(HandleLLVMStdlib)<br>
 include(AddLLVMDefinitions)<br>
 include(CheckCCompilerFlag)<br>
 include(CheckCXXCompilerFlag)<br>
<br>
Added: llvm/trunk/cmake/modules/HandleLLVMStdlib.cmake<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/HandleLLVMStdlib.cmake?rev=200811&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/HandleLLVMStdlib.cmake?rev=200811&view=auto</a><br>

==============================================================================<br>
--- llvm/trunk/cmake/modules/HandleLLVMStdlib.cmake (added)<br>
+++ llvm/trunk/cmake/modules/HandleLLVMStdlib.cmake Tue Feb  4 18:02:37 2014<br>
@@ -0,0 +1,35 @@<br>
+# This CMake module is responsible for setting the standard library to libc++<br>
+# if the user has requested it.<br>
+<br>
+if(NOT DEFINED LLVM_STDLIB_HANDLED)<br>
+  set(LLVM_STDLIB_HANDLED ON)<br>
+<br>
+  if(CMAKE_COMPILER_IS_GNUCXX)<br>
+    set(LLVM_COMPILER_IS_GCC_COMPATIBLE ON)<br>
+  elseif( MSVC )<br>
+    set(LLVM_COMPILER_IS_GCC_COMPATIBLE OFF)<br>
+  elseif( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" )<br>
+    set(LLVM_COMPILER_IS_GCC_COMPATIBLE ON)<br>
+  endif()<br>
+<br>
+  function(append_if condition value)<br>
+    if(${condition})<br>
+      foreach(variable ${ARGN})<br>
+        set(${variable} "${${variable}} ${value}" PARENT_SCOPE)<br>
+      endforeach(variable)<br>
+    endif()<br>
+  endfunction()<br>
+<br>
+  include(CheckCXXCompilerFlag)<br>
+  if(LLVM_ENABLE_LIBCXX)<br>
+    if(LLVM_COMPILER_IS_GCC_COMPATIBLE)<br>
+      check_cxx_compiler_flag("-stdlib=libc++" CXX_SUPPORTS_STDLIB)<br>
+      append_if(CXX_SUPPORTS_STDLIB "-stdlib=libc++" CMAKE_CXX_FLAGS)<br>
+      append_if(CXX_SUPPORTS_STDLIB "-stdlib=libc++" CMAKE_EXE_LINKER_FLAGS)<br>
+      append_if(CXX_SUPPORTS_STDLIB "-stdlib=libc++" CMAKE_SHARED_LINKER_FLAGS)<br>
+      append_if(CXX_SUPPORTS_STDLIB "-stdlib=libc++" CMAKE_MODULE_LINKER_FLAGS)<br>
+    else()<br>
+      message(WARNING "Not sure how to specify libc++ for this compiler")<br>
+    endif()<br>
+  endif()<br>
+endif()<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div>Alexey Samsonov, MSK</div>
</div>