<div dir="ltr">Thanks, Chris!</div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Nov 10, 2016 at 2:22 PM, Todd Fiala <span dir="ltr"><<a href="mailto:tfiala@apple.com" target="_blank">tfiala@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Okay cool, thanks Chris!<span class="HOEnZb"><font color="#888888"><div><br></div><div>-Todd</div></font></span><div><div class="h5"><div><br><div><blockquote type="cite"><div>On Nov 10, 2016, at 1:40 PM, Chris Bieneman <<a href="mailto:beanz@apple.com" target="_blank">beanz@apple.com</a>> wrote:</div><br class="m_1724409216031949822Apple-interchange-newline"><div><div style="word-wrap:break-word">I just pushed r286504, which expects the string to not be quoted. This should solve the bot failures.<div><br></div><div>-Chris</div><div><br><div><blockquote type="cite"><div>On Nov 10, 2016, at 1:30 PM, Todd Fiala <<a href="mailto:todd.fiala@gmail.com" target="_blank">todd.fiala@gmail.com</a>> wrote:</div><br class="m_1724409216031949822Apple-interchange-newline"><div><div dir="ltr">I'm at a point where I can look at it.</div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Nov 10, 2016 at 12:17 PM, Tim Hammerquist <span dir="ltr"><<a href="mailto:penryu@gmail.com" target="_blank">penryu@gmail.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">Looks like the quotes around the lldb version string aren't properly preserved in the xcodeproj file as they are in CMake.<div><br></div><div>Can any of the LLDB devs more comfortable with plumbing the depths of Xcode project configuration provide some guidance here?</div><div><br></div><div><div style="font-size:12.8px"><a href="http://lab.llvm.org:8080/green/job/lldb_build_test/21828/" target="_blank">http://lab.llvm.org:8080/green<wbr>/job/lldb_build_test/21828/</a><br></div></div><div><br></div><div><div>/Users/buildslave/jenkins/shar<wbr>edspace/lldb@2/lldb/source/<wbr>lldb.cpp:63:22: error: unexpected namespace name 'lldb': expected expression</div><div>    g_version_str += LLDB_VERSION_STRING;</div><div>                     ^</div><div>In file included from <built-in>:356:</div><div><command line>:4:29: note: expanded from here</div><div>#define LLDB_VERSION_STRING lldb-360.99.0</div><div>                            ^</div><div>/Users/buildslave/jenkins/shar<wbr>edspace/lldb@2/lldb/source/<wbr>lldb.cpp:63:22: error: invalid suffix '.0' on floating constant</div><div>In file included from <built-in>:356:</div><div><command line>:4:40: note: expanded from here</div><div>#define LLDB_VERSION_STRING lldb-360.99.0</div><div>                                       ^</div><div>2 errors generated.</div></div><div><br></div></div><div class="gmail_extra"><div><div class="m_1724409216031949822h5"><br><div class="gmail_quote">On Thu, Nov 10, 2016 at 9:33 AM, Chris Bieneman via lldb-commits <span dir="ltr"><<a href="mailto:lldb-commits@lists.llvm.org" target="_blank">lldb-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: cbieneman<br>
Date: Thu Nov 10 11:33:19 2016<br>
New Revision: 286479<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=286479&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject?rev=286479&view=rev</a><br>
Log:<br>
Unify Darwin and Non-Darwin printing of version output<br>
<br>
Summary:<br>
This change unifies and simplifies the code paths between the Darwin and non-Darwin code to print the LLDB version information.<br>
<br>
It also introduces a new variable in CMake LLDB_VERSION_STRING which can be used to specify custom version information. On Darwin this value is implicitly set based on the resource/LLDB-Info.plist file.<br>
<br>
With the LLDB_VERSION_STRING variable set to lldb-360.99.0, the -version output is:<br>
<br>
> ./bin/lldb -version<br>
lldb version 4.0.0 (lldb-360.99.0)<br>
  clang revision 286264<br>
  llvm revision 286265<br>
<br>
This behavior is unified across all target platforms.<br>
<br>
Reviewers: lldb-commits<br>
<br>
Subscribers: mgorny, tfiala<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D26478" rel="noreferrer" target="_blank">https://reviews.llvm.org/D2647<wbr>8</a><br>
<br>
Added:<br>
    lldb/trunk/cmake/modules/Embed<wbr>AppleVersion.cmake<br>
Modified:<br>
    lldb/trunk/lldb.xcodeproj/proj<wbr>ect.pbxproj<br>
    lldb/trunk/source/CMakeLists.t<wbr>xt<br>
    lldb/trunk/source/lldb.cpp<br>
<br>
Added: lldb/trunk/cmake/modules/Embed<wbr>AppleVersion.cmake<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/cmake/modules/EmbedAppleVersion.cmake?rev=286479&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/lldb/trunk/cmake/modules<wbr>/EmbedAppleVersion.cmake?rev=2<wbr>86479&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- lldb/trunk/cmake/modules/Embed<wbr>AppleVersion.cmake (added)<br>
+++ lldb/trunk/cmake/modules/Embed<wbr>AppleVersion.cmake Thu Nov 10 11:33:19 2016<br>
@@ -0,0 +1,11 @@<br>
+execute_process(COMMAND /usr/libexec/PlistBuddy -c "Print:CFBundleVersion" ${LLDB_INFO_PLIST}<br>
+                OUTPUT_VARIABLE BundleVersion<br>
+                OUTPUT_STRIP_TRAILING_WHITESPA<wbr>CE)<br>
+<br>
+file(APPEND "${HEADER_FILE}.tmp"<br>
+    "#define LLDB_VERSION_STRING \"lldb-${BundleVersion}\"\n")<br>
+<br>
+execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different<br>
+  "${HEADER_FILE}.tmp" "${HEADER_FILE}")<br>
+<br>
+file(REMOVE "${HEADER_FILE}.tmp")<br>
<br>
Modified: lldb/trunk/lldb.xcodeproj/proj<wbr>ect.pbxproj<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/lldb.xcodeproj/project.pbxproj?rev=286479&r1=286478&r2=286479&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/lldb/trunk/lldb.xcodepro<wbr>j/project.pbxproj?rev=286479&r<wbr>1=286478&r2=286479&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- lldb/trunk/lldb.xcodeproj/proj<wbr>ect.pbxproj (original)<br>
+++ lldb/trunk/lldb.xcodeproj/proj<wbr>ect.pbxproj Thu Nov 10 11:33:19 2016<br>
@@ -8775,6 +8775,20 @@<br>
                                        "\"$(SYSTEM_LIBRARY_DIR)/Priva<wbr>teFrameworks\"",<br>
                                );<br>
                                GCC_INLINES_ARE_PRIVATE_EXTERN = NO;<br>
+                               GCC_PREPROCESSOR_DEFINITIONS = (<br>
+                                       __STDC_CONSTANT_MACROS,<br>
+                                       __STDC_LIMIT_MACROS,<br>
+                                       LLDB_CONFIGURATION_DEBUG,<br>
+                                       "LLDB_VERSION_STRING=\"lldb-$<wbr>{CURRENT_PROJECT_VERSION}\"",<br>
+                               );<br>
+                               "GCC_PREPROCESSOR_DEFINITIONS<wbr>[sdk=iphoneos*][arch=*]" = (<br>
+                                       __STDC_CONSTANT_MACROS,<br>
+                                       __STDC_LIMIT_MACROS,<br>
+                                       LLDB_CONFIGURATION_DEBUG,<br>
+                                       LLDB_DISABLE_PYTHON,<br>
+                                       NO_XPC_SERVICES,<br>
+                                       "LLDB_VERSION_STRING=\"lldb-$<wbr>{CURRENT_PROJECT_VERSION}\"",<br>
+                               );<br>
                                HEADER_SEARCH_PATHS = /usr/include/libxml2;<br>
                                LLDB_COMPRESSION_CFLAGS = "";<br>
                                "LLDB_COMPRESSION_CFLAGS[sdk=m<wbr>acosx10.11]" = "-DHAVE_LIBCOMPRESSION=1";<br>
@@ -8820,6 +8834,20 @@<br>
                                        "\"$(SYSTEM_LIBRARY_DIR)/Priva<wbr>teFrameworks\"",<br>
                                );<br>
                                GCC_INLINES_ARE_PRIVATE_EXTERN = NO;<br>
+                               GCC_PREPROCESSOR_DEFINITIONS = (<br>
+                                       __STDC_CONSTANT_MACROS,<br>
+                                       __STDC_LIMIT_MACROS,<br>
+                                       LLDB_CONFIGURATION_RELEASE,<br>
+                                       "LLDB_VERSION_STRING=\"lldb-$<wbr>{CURRENT_PROJECT_VERSION}\"",<br>
+                               );<br>
+                               "GCC_PREPROCESSOR_DEFINITIONS<wbr>[sdk=iphoneos*][arch=*]" = (<br>
+                                       __STDC_CONSTANT_MACROS,<br>
+                                       __STDC_LIMIT_MACROS,<br>
+                                       LLDB_CONFIGURATION_RELEASE,<br>
+                                       LLDB_DISABLE_PYTHON,<br>
+                                       NO_XPC_SERVICES,<br>
+                                       "LLDB_VERSION_STRING=\"lldb-$<wbr>{CURRENT_PROJECT_VERSION}\"",<br>
+                               );<br>
                                HEADER_SEARCH_PATHS = /usr/include/libxml2;<br>
                                LLDB_COMPRESSION_CFLAGS = "";<br>
                                "LLDB_COMPRESSION_CFLAGS[sdk=m<wbr>acosx10.11]" = "-DHAVE_LIBCOMPRESSION=1";<br>
@@ -8865,6 +8893,20 @@<br>
                                        "\"$(SYSTEM_LIBRARY_DIR)/Priva<wbr>teFrameworks\"",<br>
                                );<br>
                                GCC_INLINES_ARE_PRIVATE_EXTERN = NO;<br>
+                               GCC_PREPROCESSOR_DEFINITIONS = (<br>
+                                       __STDC_CONSTANT_MACROS,<br>
+                                       __STDC_LIMIT_MACROS,<br>
+                                       LLDB_CONFIGURATION_BUILD_AND_<wbr>INTEGRATION,<br>
+                                       "LLDB_VERSION_STRING=\"lldb-$<wbr>{CURRENT_PROJECT_VERSION}\"",<br>
+                               );<br>
+                               "GCC_PREPROCESSOR_DEFINITIONS<wbr>[sdk=iphoneos*][arch=*]" = (<br>
+                                       __STDC_CONSTANT_MACROS,<br>
+                                       __STDC_LIMIT_MACROS,<br>
+                                       LLDB_CONFIGURATION_BUILD_AND_<wbr>INTEGRATION,<br>
+                                       LLDB_DISABLE_PYTHON,<br>
+                                       NO_XPC_SERVICES,<br>
+                                       "LLDB_VERSION_STRING=\"lldb-$<wbr>{CURRENT_PROJECT_VERSION}\"",<br>
+                               );<br>
                                HEADER_SEARCH_PATHS = /usr/include/libxml2;<br>
                                LLDB_COMPRESSION_CFLAGS = "";<br>
                                "LLDB_COMPRESSION_CFLAGS[sdk=m<wbr>acosx10.11]" = "-DHAVE_LIBCOMPRESSION=1";<br>
@@ -9864,6 +9906,20 @@<br>
                                        "\"$(SYSTEM_LIBRARY_DIR)/Priva<wbr>teFrameworks\"",<br>
                                );<br>
                                GCC_INLINES_ARE_PRIVATE_EXTERN = NO;<br>
+                               GCC_PREPROCESSOR_DEFINITIONS = (<br>
+                                       __STDC_CONSTANT_MACROS,<br>
+                                       __STDC_LIMIT_MACROS,<br>
+                                       LLDB_CONFIGURATION_DEBUG,<br>
+                                       "LLDB_VERSION_STRING=\"lldb-$<wbr>{CURRENT_PROJECT_VERSION}\"",<br>
+                               );<br>
+                               "GCC_PREPROCESSOR_DEFINITIONS<wbr>[sdk=iphoneos*][arch=*]" = (<br>
+                                       __STDC_CONSTANT_MACROS,<br>
+                                       __STDC_LIMIT_MACROS,<br>
+                                       LLDB_CONFIGURATION_DEBUG,<br>
+                                       LLDB_DISABLE_PYTHON,<br>
+                                       NO_XPC_SERVICES,<br>
+                                       "LLDB_VERSION_STRING=\"lldb-$<wbr>{CURRENT_PROJECT_VERSION}\"",<br>
+                               );<br>
                                HEADER_SEARCH_PATHS = /usr/include/libxml2;<br>
                                LLDB_COMPRESSION_CFLAGS = "";<br>
                                "LLDB_COMPRESSION_CFLAGS[sdk=m<wbr>acosx10.11]" = "-DHAVE_LIBCOMPRESSION=1";<br>
<br>
Modified: lldb/trunk/source/CMakeLists.t<wbr>xt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/source/CMakeLists.txt?rev=286479&r1=286478&r2=286479&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/lldb/trunk/source/CMakeL<wbr>ists.txt?rev=286479&r1=286478&<wbr>r2=286479&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- lldb/trunk/source/CMakeLists.t<wbr>xt (original)<br>
+++ lldb/trunk/source/CMakeLists.t<wbr>xt Thu Nov 10 11:33:19 2016<br>
@@ -25,21 +25,6 @@ set(lldbBase_SOURCES<br>
     lldb.cpp<br>
   )<br>
<br>
-if (CMAKE_SYSTEM_NAME MATCHES "Darwin")<br>
-  set(LLDB_VERS_GENERATED_FILE ${LLDB_BINARY_DIR}/source/LLDB<wbr>_vers.c)<br>
-  add_custom_command(OUTPUT ${LLDB_VERS_GENERATED_FILE}<br>
-    COMMAND ${LLDB_SOURCE_DIR}/scripts/<a href="http://generate-vers.pl/" rel="noreferrer" target="_blank">gen<wbr>erate-vers.pl</a><br>
-            ${LLDB_SOURCE_DIR}/lldb.xcodep<wbr>roj/project.pbxproj liblldb_core<br>
-            > ${LLDB_VERS_GENERATED_FILE}<br>
-    DEPENDS ${LLDB_SOURCE_DIR}/scripts/<a href="http://generate-vers.pl/" rel="noreferrer" target="_blank">gen<wbr>erate-vers.pl</a><br>
-            ${LLDB_SOURCE_DIR}/lldb.xcodep<wbr>roj/project.pbxproj)<br>
-  set_source_files_properties(${<wbr>LLDB_VERS_GENERATED_FILE} PROPERTIES GENERATED 1)<br>
-  # Add this to lldbBase since lldb.cpp uses the symbol defined here.<br>
-  list(APPEND lldbBase_SOURCES ${LLDB_VERS_GENERATED_FILE})<br>
-  add_custom_target(lldbGenerate<wbr>dVersion<br>
-    DEPENDS ${LLDB_VERS_GENERATED_FILE})<br>
-endif()<br>
-<br>
 foreach(file<br>
         "${LLDB_SOURCE_DIR}/.git/logs<wbr>/HEAD" # Git<br>
         "${LLDB_SOURCE_DIR}/.svn/wc.d<wbr>b"     # SVN 1.7<br>
@@ -75,14 +60,37 @@ if(DEFINED lldb_vc)<br>
   list(APPEND lldbBase_SOURCES ${version_inc})<br>
 endif()<br>
<br>
+if(APPLE)<br>
+  set(apple_version_inc "${CMAKE_CURRENT_BINARY_DIR}/A<wbr>ppleVersion.inc")<br>
+  set(apple_version_script "${LLDB_SOURCE_DIR}/cmake/modu<wbr>les/EmbedAppleVersion.cmake")<br>
+  set(info_plist ${LLDB_SOURCE_DIR}/resources/L<wbr>LDB-Info.plist)<br>
+<br>
+  # Create custom target to generate the VC revision include.<br>
+  add_custom_command(OUTPUT "${apple_version_inc}"<br>
+    DEPENDS "${apple_version_script}" "${info_plist}"<br>
+    COMMAND<br>
+    ${CMAKE_COMMAND} "-DLLDB_INFO_PLIST=${info_plis<wbr>t}"<br>
+                     "-DHEADER_FILE=${apple_versio<wbr>n_inc}"<br>
+                     -P "${apple_version_script}")<br>
+<br>
+  # Mark the generated header as being generated.<br>
+  set_source_files_properties("$<wbr>{apple_version_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(ll<wbr>db.cpp<br>
+    PROPERTIES COMPILE_DEFINITIONS "HAVE_APPLE_VERSION_INC")<br>
+  list(APPEND lldbBase_SOURCES ${apple_version_inc})<br>
+elseif(LLDB_VERSION_STRING)<br>
+  set_source_files_properties(ll<wbr>db.cpp<br>
+    PROPERTIES COMPILE_DEFINITIONS "LLDB_VERSION_STRING=\"${LLDB_<wbr>VERSION_STRING}\"")<br>
+endif()<br>
+<br>
 add_lldb_library(lldbBase<br>
   ${lldbBase_SOURCES}<br>
   )<br>
<br>
-if (CMAKE_SYSTEM_NAME MATCHES "Darwin")<br>
-  add_dependencies(lldbBase lldbGeneratedVersion)<br>
-endif()<br>
-<br>
 add_subdirectory(Breakpoint)<br>
 add_subdirectory(Commands)<br>
 add_subdirectory(Core)<br>
<br>
Modified: lldb/trunk/source/lldb.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/source/lldb.cpp?rev=286479&r1=286478&r2=286479&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/lldb/trunk/source/lldb.c<wbr>pp?rev=286479&r1=286478&r2=286<wbr>479&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- lldb/trunk/source/lldb.cpp (original)<br>
+++ lldb/trunk/source/lldb.cpp Thu Nov 10 11:33:19 2016<br>
@@ -12,16 +12,16 @@<br>
 using namespace lldb;<br>
 using namespace lldb_private;<br>
<br>
-#if defined(__APPLE__)<br>
-extern "C" const unsigned char liblldb_coreVersionString[];<br>
-#else<br>
-<br>
 #include "clang/Basic/Version.h"<br>
<br>
 #ifdef HAVE_SVN_VERSION_INC<br>
 #  include "SVNVersion.inc"<br>
 #endif<br>
<br>
+#ifdef HAVE_APPLE_VERSION_INC<br>
+#  include "AppleVersion.inc"<br>
+#endif<br>
+<br>
 static const char *GetLLDBRevision() {<br>
 #ifdef LLDB_REVISION<br>
   return LLDB_REVISION;<br>
@@ -38,33 +38,8 @@ static const char *GetLLDBRepository() {<br>
 #endif<br>
 }<br>
<br>
-#endif<br>
<br>
 const char *lldb_private::GetVersion() {<br>
-#if defined(__APPLE__)<br>
-  static char g_version_string[32];<br>
-  if (g_version_string[0] == '\0') {<br>
-    const char *version_string =<br>
-        ::strstr((const char *)liblldb_coreVersionString, "PROJECT:");<br>
-<br>
-    if (version_string)<br>
-      version_string += sizeof("PROJECT:") - 1;<br>
-    else<br>
-      version_string = "unknown";<br>
-<br>
-    const char *newline_loc = strchr(version_string, '\n');<br>
-<br>
-    size_t version_len = sizeof(g_version_string) - 1;<br>
-<br>
-    if (newline_loc &&<br>
-        (newline_loc - version_string < static_cast<ptrdiff_t>(version<wbr>_len)))<br>
-      version_len = newline_loc - version_string;<br>
-<br>
-    ::snprintf(g_version_string, version_len + 1, "%s", version_string);<br>
-  }<br>
-<br>
-  return g_version_string;<br>
-#else<br>
   // On platforms other than Darwin, report a version number in the same style<br>
   // as the clang tool.<br>
   static std::string g_version_str;<br>
@@ -81,21 +56,24 @@ const char *lldb_private::GetVersion() {<br>
     if (lldb_rev) {<br>
       g_version_str += " revision ";<br>
       g_version_str += lldb_rev;<br>
+      g_version_str += ")";<br>
     }<br>
+#ifdef LLDB_VERSION_STRING<br>
+    g_version_str += " (";<br>
+    g_version_str += LLDB_VERSION_STRING;<br>
+    g_version_str += ")";<br>
+#endif<br>
     std::string clang_rev(clang::getClangRevis<wbr>ion());<br>
     if (clang_rev.length() > 0) {<br>
-      g_version_str += " clang revision ";<br>
+      g_version_str += "\n  clang revision ";<br>
       g_version_str += clang_rev;<br>
     }<br>
     std::string llvm_rev(clang::getLLVMRevisio<wbr>n());<br>
     if (llvm_rev.length() > 0) {<br>
-      g_version_str += " llvm revision ";<br>
+      g_version_str += "\n  llvm revision ";<br>
       g_version_str += llvm_rev;<br>
     }<br>
-<br>
-    if (lldb_repo)<br>
-      g_version_str += ")";<br>
+<br>
   }<br>
   return g_version_str.c_str();<br>
-#endif<br>
 }<br>
<br>
<br>
______________________________<wbr>_________________<br>
lldb-commits mailing list<br>
<a href="mailto:lldb-commits@lists.llvm.org" target="_blank">lldb-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/lldb-commits</a><br>
</blockquote></div><br><br clear="all"><div><br></div></div></div><span class="m_1724409216031949822HOEnZb"><font color="#888888">-- <br><div class="m_1724409216031949822m_-7474826755733297080gmail_signature" data-smartmail="gmail_signature">Tim <<a href="mailto:penryu@gmail.com" target="_blank">penryu@gmail.com</a>></div>
</font></span></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="m_1724409216031949822gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">-Todd</div></div>
</div>
</div></blockquote></div><br></div></div></div></blockquote></div><br></div></div></div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Tim <<a href="mailto:penryu@gmail.com" target="_blank">penryu@gmail.com</a>></div>
</div>