<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.hoenzb
        {mso-style-name:hoenzb;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">So, how exactly does this work on Windows?  lib/Basic/CMakeLists.txt now regenerates SVNVersion.inc with GetSVN.cmake, which runs GetSourceVersion and GetRepositoryPath,
 which are Unix-y shell scripts.  I end up with empty strings for the revision and repository info.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Thanks,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">--paulr<o:p></o:p></span></p>
<p class="MsoNormal"><a name="_MailEndCompose"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></a></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> cfe-commits-bounces@cs.uiuc.edu [mailto:cfe-commits-bounces@cs.uiuc.edu]
<b>On Behalf Of </b>Zachary Turner<br>
<b>Sent:</b> Thursday, November 20, 2014 5:09 PM<br>
<b>To:</b> Jordan Rose<br>
<b>Cc:</b> cfe-commits@cs.uiuc.edu<br>
<b>Subject:</b> Re: r222393 - [CMake] Always include the Clang repo version, just like the autoconf build.<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Somehow a garbage value ended up in my .git/config, but only for clang.  It somehow added<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">          fetch = :refs/remotes/git-svn<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">to my svn remote config.  Deleting that seems to have resolved the problem.<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Thu, Nov 20, 2014 at 5:03 PM, Jordan Rose <<a href="mailto:jordan_rose@apple.com" target="_blank">jordan_rose@apple.com</a>> wrote:<o:p></o:p></p>
<div>
<div>
<p class="MsoNormal">This sounds like what happens when you run git svn but don't actually have any svn remotes. Do you have a git folder without svn remotes? Do you still have a .git/svn?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:#888888"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:#888888">Jordan<o:p></o:p></span></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal">On Nov 20, 2014, at 16:41, Zachary Turner <<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>> wrote:<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">When I bulid on Ubuntu right now, ninja deadlocks while building clang.<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I'm on Ubuntu 14.04 and I'm generating CMake as follows:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">cmake -G Ninja -DCMAKE_CXX_COMPILER=clang -DCMAKE_C_COMPILER=clang -DCMAKE_SHARED_LINKER_FLAGS="-lstdc++ -lm" -DCMAKE_EXE_LINKER_FLAGS="-lstdc++ -lm" -DCMAKE_INSTALL_PREFIX:PATH=`pwd`/../../install -DCMAKE_BUILD_TYPE=Debug -Wno-dev ../..<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">When I run ninja with -v, it gets to Linking libClangStaticAnalyzerFrontend.a, and then it just hangs.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">If I Ctrl+C and then re-run ninja with -v, I see the following:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">[1/51] cd ~/ssd/src/llvm/build/ninja/tools/clang/lib/Basic && /usr/bin/cmake -DFIRST_SOURCE_DIR=~/ssd/src/llvm -DFIRST_NAME=LLVM -DSECOND_SOURCE_DIR=~/ssd/src/llvm/tools/clang -DSECOND_NAME=SVN -DHEADER_FILE=~/src/llvm/build/ninja/tools/clang/lib/Basic/SVNVersion.inc
 -P ~/ssd/src/llvm/cmake/modules/GetSVN.cmake<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">ps aux | grep cmake shows the following:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">zturner  28671  0.0  0.0  24448  1212 pts/2    S    16:38   0:00 /bin/sh -c cd ~/src/llvm/build/ninja/tools/clang/lib/Basic && /usr/bin/cmake -DFIRST_SOURCE_DIR=~/ssd/src/llvm -DFIRST_NAME=LLVM -DSECOND_SOURCE_DIR=~/ssd/src/llvm/tools/clang
 -DSECOND_NAME=SVN -DHEADER_FILE=~/ssd/src/llvm/build/ninja/tools/clang/lib/Basic/SVNVersion.inc -P ~/ssd/src/llvm/cmake/modules/GetSVN.cmake<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">zturner  28673  0.5  0.0 115752  5828 pts/2    S    16:38   0:00 /usr/bin/cmake -DFIRST_SOURCE_DIR=~/ssd/src/llvm -DFIRST_NAME=LLVM -DSECOND_SOURCE_DIR=~/ssd/src/llvm/tools/clang -DSECOND_NAME=SVN -DHEADER_FILE=~/ssd/src/llvm/build/ninja/tools/clang/lib/Basic/SVNVersion.inc
 -P ~/ssd/src/llvm/cmake/modules/GetSVN.cmake<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Let me know if you need more information or if you have any suggestions.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Wed, Nov 19, 2014 at 5:28 PM, Jordan Rose <<a href="mailto:jordan_rose@apple.com" target="_blank">jordan_rose@apple.com</a>> wrote:<o:p></o:p></p>
<div>
<div>
<p class="MsoNormal">Yup, just found that described online. .svn/entries seems to be the 1.6 version, .svn/wc.db the 1.7 one. As long as wc.db shows up first in the search, we should be good.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:#888888"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:#888888">Jordan<o:p></o:p></span></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal">On Nov 19, 2014, at 17:27, Nico Weber <<a href="mailto:thakis@chromium.org" target="_blank">thakis@chromium.org</a>> wrote:<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">.svn/wc.db seems to get updated on each `svn up` though. This is with "svn, version 1.7.17 (r1591372)" (which I think is the svn bundled with Xcode 6.1).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Wed, Nov 19, 2014 at 5:25 PM, Jordan Rose <<a href="mailto:jordan_rose@apple.com" target="_blank">jordan_rose@apple.com</a>> wrote:<o:p></o:p></p>
<div>
<div>
<p class="MsoNormal">Shoot! And you actually got new revisions? Okay, will poke at this some more tonight.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:#888888"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:#888888">Jordan<o:p></o:p></span></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal">On Nov 19, 2014, at 17:24, Nico Weber <<a href="mailto:thakis@chromium.org" target="_blank">thakis@chromium.org</a>> wrote:<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">Nice!<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">But .svn/entries doesn't seem to be touched when I `svn up` my llvm checkout.<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Wed, Nov 19, 2014 at 2:03 PM, Jordan Rose <<a href="mailto:jordan_rose@apple.com" target="_blank">jordan_rose@apple.com</a>> wrote:<o:p></o:p></p>
<p class="MsoNormal">Author: jrose<br>
Date: Wed Nov 19 16:03:48 2014<br>
New Revision: 222393<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=222393&view=rev" target="_blank">
http://llvm.org/viewvc/llvm-project?rev=222393&view=rev</a><br>
Log:<br>
[CMake] Always include the Clang repo version, just like the autoconf build.<br>
<br>
Now that LLVM's helper script GetSVN.cmake actually works consistently,<br>
there's no reason not to use it. We avoid having to regenerate SVNVersion.inc<br>
every time by marking it as dependent on Git's reflog or SVN's entries file.<br>
<br>
This should end most of the issues of the AST format changing and breaking<br>
old module files: CMake-Clang should now detect that the version changed just<br>
like Autoconf-Clang has.<br>
<br>
Based on r190557. Depends on LLVM r222391.<br>
<br>
Modified:<br>
    cfe/trunk/lib/Basic/CMakeLists.txt<br>
<br>
Modified: cfe/trunk/lib/Basic/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/CMakeLists.txt?rev=222393&r1=222392&r2=222393&view=diff" target="_blank">
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/CMakeLists.txt?rev=222393&r1=222392&r2=222393&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Basic/CMakeLists.txt (original)<br>
+++ cfe/trunk/lib/Basic/CMakeLists.txt Wed Nov 19 16:03:48 2014<br>
@@ -4,6 +4,48 @@ set(LLVM_LINK_COMPONENTS<br>
   Support<br>
   )<br>
<br>
+# Figure out if we can track VC revisions.<br>
+function(find_first_existing_file out_var)<br>
+  foreach(file ${ARGN})<br>
+    if(EXISTS "${file}")<br>
+      set(${out_var} "${file}" PARENT_SCOPE)<br>
+      return()<br>
+    endif()<br>
+  endforeach()<br>
+endfunction()<br>
+<br>
+find_first_existing_file(llvm_vc<br>
+  "${LLVM_MAIN_SRC_DIR}/.git/logs/HEAD"<br>
+  "${LLVM_MAIN_SRC_DIR}/.svn/entries")<br>
+find_first_existing_file(clang_vc<br>
+  "${CLANG_SOURCE_DIR}/.git/logs/HEAD"<br>
+  "${CLANG_SOURCE_DIR}/.svn/entries")<br>
+<br>
+if(DEFINED llvm_vc AND DEFINED clang_vc)<br>
+  # Create custom target to generate the VC revision include.<br>
+  add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc"<br>
+    DEPENDS "${llvm_vc}" "${clang_vc}"<br>
+    COMMAND<br>
+    ${CMAKE_COMMAND} "-DFIRST_SOURCE_DIR=${LLVM_MAIN_SRC_DIR}"<br>
+                     "-DFIRST_NAME=LLVM"<br>
+                     "-DSECOND_SOURCE_DIR=${CLANG_SOURCE_DIR}"<br>
+                     "-DSECOND_NAME=SVN"<br>
+                     "-DHEADER_FILE=${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc"<br>
+                     -P "${LLVM_MAIN_SRC_DIR}/cmake/modules/GetSVN.cmake")<br>
+<br>
+  # Mark the generated header as being generated.<br>
+  set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc"<br>
+    PROPERTIES GENERATED TRUE<br>
+               HEADER_FILE_ONLY TRUE)<br>
+<br>
+  # Tell Version.cpp that it needs to build with -DHAVE_SVN_VERSION_INC.<br>
+  set_source_files_properties(Version.cpp<br>
+    PROPERTIES COMPILE_DEFINITIONS "HAVE_SVN_VERSION_INC")<br>
+  set(version_inc "${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc")<br>
+else()<br>
+  set(version_inc)<br>
+endif()<br>
+<br>
 add_clang_library(clangBasic<br>
   Attributes.cpp<br>
   Builtins.cpp<br>
@@ -29,30 +71,6 @@ add_clang_library(clangBasic<br>
   VersionTuple.cpp<br>
   VirtualFileSystem.cpp<br>
   Warnings.cpp<br>
+  ${version_inc}<br>
   )<br>
<br>
-# Determine Subversion revision.<br>
-# FIXME: This only gets updated when CMake is run, so this revision number<br>
-# may be out-of-date!<br>
-if( NOT IS_SYMLINK "${CLANG_SOURCE_DIR}" )  # See PR 8437<br>
-  find_package(Subversion)<br>
-endif()<br>
-if (Subversion_FOUND AND EXISTS "${CLANG_SOURCE_DIR}/.svn")<br>
-  set(FIRST_SOURCE_DIR ${LLVM_MAIN_SRC_DIR})<br>
-  set(FIRST_REPOSITORY LLVM_REPOSITORY)<br>
-  set(SECOND_SOURCE_DIR ${CLANG_SOURCE_DIR})<br>
-  set(SECOND_REPOSITORY SVN_REPOSITORY)<br>
-  set(HEADER_FILE ${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc)<br>
-  include(GetSVN)<br>
-<br>
-  # Mark the generated header as being generated.<br>
-  message(STATUS "Expecting header to go in ${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc")<br>
-  set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc<br>
-    PROPERTIES GENERATED TRUE<br>
-               HEADER_FILE_ONLY TRUE)<br>
-<br>
-  # Tell Version.cpp that it needs to build with -DHAVE_SVN_VERSION_INC.<br>
-  set_source_files_properties(Version.cpp<br>
-    PROPERTIES COMPILE_DEFINITIONS "HAVE_SVN_VERSION_INC")<br>
-<br>
-endif()<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</body>
</html>