Re: [Lldb-commits] [PATCH] D24846: [CMake] Generate LLDB_REVISION at build time
This revision was automatically updated to reflect the committed changes. Closed by commit rL282314: [CMake] Generate LLDB_REVISION at build time (authored by cbieneman). Changed prior to commit: https://reviews.llvm.org/D24846?vs=72215=72381#toc Repository: rL LLVM https://reviews.llvm.org/D24846 Files: lldb/trunk/source/CMakeLists.txt lldb/trunk/source/lldb.cpp Index: lldb/trunk/source/lldb.cpp === --- lldb/trunk/source/lldb.cpp +++ lldb/trunk/source/lldb.cpp @@ -18,6 +18,10 @@ #include "clang/Basic/Version.h" +#ifdef HAVE_SVN_VERSION_INC +# include "SVNVersion.inc" +#endif + static const char *GetLLDBRevision() { #ifdef LLDB_REVISION return LLDB_REVISION; Index: lldb/trunk/source/CMakeLists.txt === --- lldb/trunk/source/CMakeLists.txt +++ lldb/trunk/source/CMakeLists.txt @@ -40,6 +40,41 @@ DEPENDS ${LLDB_VERS_GENERATED_FILE}) endif() +foreach(file +"${LLDB_SOURCE_DIR}/.git/logs/HEAD" # Git +"${LLDB_SOURCE_DIR}/.svn/wc.db" # SVN 1.7 +"${LLDB_SOURCE_DIR}/.svn/entries" # SVN 1.6 +) + if(EXISTS "${file}") +set(lldb_vc "${file}") +break() + endif() +endforeach() + +if(DEFINED lldb_vc) + set(version_inc "${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc") + set(get_svn_script "${LLVM_MAIN_SRC_DIR}/cmake/modules/GetSVN.cmake") + + # Create custom target to generate the VC revision include. + add_custom_command(OUTPUT "${version_inc}" +DEPENDS "${lldb_vc}" "${get_svn_script}" +COMMAND +${CMAKE_COMMAND} "-DFIRST_SOURCE_DIR=${LLDB_SOURCE_DIR}" + "-DFIRST_NAME=LLDB" + "-DHEADER_FILE=${version_inc}" + -P "${get_svn_script}") + + # Mark the generated header as being generated. + set_source_files_properties("${version_inc}" +PROPERTIES GENERATED TRUE + HEADER_FILE_ONLY TRUE) + + # Tell Version.cpp that it needs to build with -DHAVE_SVN_VERSION_INC. + set_source_files_properties(lldb.cpp +PROPERTIES COMPILE_DEFINITIONS "HAVE_SVN_VERSION_INC") + list(APPEND lldbBase_SOURCES ${version_inc}) +endif() + add_lldb_library(lldbBase ${lldbBase_SOURCES} ) @@ -64,29 +99,3 @@ # Build API last. Since liblldb needs to link against every other target, it needs # those targets to have already been created. add_subdirectory(API) - -# Determine LLDB revision and repository. GetSourceVersion and GetRepositoryPath are shell-scripts, and as -# such will not work on Windows. -if ( NOT CMAKE_SYSTEM_NAME MATCHES "Windows" ) - execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetSourceVersion ${LLDB_SOURCE_DIR} - OUTPUT_VARIABLE LLDB_REVISION) - if ( LLDB_REVISION ) -string(REGEX REPLACE "(\r?\n)+$" "" LLDB_REVISION ${LLDB_REVISION}) - endif() - - execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetRepositoryPath ${LLDB_SOURCE_DIR} - OUTPUT_VARIABLE LLDB_REPOSITORY) - if ( LLDB_REPOSITORY ) -# Replace newline characters with spaces -string(REGEX REPLACE "(\r?\n)+" " " LLDB_REPOSITORY ${LLDB_REPOSITORY}) - -# Remove trailing spaces -string(REGEX REPLACE "(\ )+$" "" LLDB_REPOSITORY ${LLDB_REPOSITORY}) - endif() - - set_property( -SOURCE lldb.cpp -PROPERTY COMPILE_DEFINITIONS "LLDB_REVISION=\"${LLDB_REVISION}\"" "LLDB_REPOSITORY=\"${LLDB_REPOSITORY}\"") -endif () -# FIXME: implement svn/git revision and repository parsing solution on Windows. There is an SVN-only -#revision parsing solution in tools/clang/lib/Basic/CMakelists.txt. Index: lldb/trunk/source/lldb.cpp === --- lldb/trunk/source/lldb.cpp +++ lldb/trunk/source/lldb.cpp @@ -18,6 +18,10 @@ #include "clang/Basic/Version.h" +#ifdef HAVE_SVN_VERSION_INC +# include "SVNVersion.inc" +#endif + static const char *GetLLDBRevision() { #ifdef LLDB_REVISION return LLDB_REVISION; Index: lldb/trunk/source/CMakeLists.txt === --- lldb/trunk/source/CMakeLists.txt +++ lldb/trunk/source/CMakeLists.txt @@ -40,6 +40,41 @@ DEPENDS ${LLDB_VERS_GENERATED_FILE}) endif() +foreach(file +"${LLDB_SOURCE_DIR}/.git/logs/HEAD" # Git +"${LLDB_SOURCE_DIR}/.svn/wc.db" # SVN 1.7 +"${LLDB_SOURCE_DIR}/.svn/entries" # SVN 1.6 +) + if(EXISTS "${file}") +set(lldb_vc "${file}") +break() + endif() +endforeach() + +if(DEFINED lldb_vc) + set(version_inc "${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc") + set(get_svn_script "${LLVM_MAIN_SRC_DIR}/cmake/modules/GetSVN.cmake") + + # Create custom target to generate the VC revision include. + add_custom_command(OUTPUT "${version_inc}" +DEPENDS "${lldb_vc}" "${get_svn_script}" +COMMAND +${CMAKE_COMMAND} "-DFIRST_SOURCE_DIR=${LLDB_SOURCE_DIR}" + "-DFIRST_NAME=LLDB" +
Re: [Lldb-commits] [PATCH] D24846: [CMake] Generate LLDB_REVISION at build time
zturner accepted this revision. zturner added a comment. lgtm, everything works. https://reviews.llvm.org/D24846 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [PATCH] D24846: [CMake] Generate LLDB_REVISION at build time
tfiala accepted this revision. tfiala added a comment. This revision is now accepted and ready to land. Looks good. I think it's fine landing here for now based on your earlier comments about the refactoring effort to get it into LLVM/clang. I do think it's worth trying to sink it lower when the time is right to do more of that refactoring, though. Thanks! https://reviews.llvm.org/D24846 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [PATCH] D24846: [CMake] Generate LLDB_REVISION at build time
If it's non trivial then then can go in first, that's fine. I'm ooo for the rest of the day, so let me test it out on Windows first On Thu, Sep 22, 2016 at 4:36 PM Chris Bienemanwrote: > beanz added a comment. > > Putting this in LLVM would be ideal, but I think doing that requires a > larger refactoring of how LLVM and Clang handle SCM versions. I was kinda > hoping to land this and fix the lldb support, but if you'd prefer I can > shelve this until after fixing LLVM & Clang. > > > https://reviews.llvm.org/D24846 > > > > ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [PATCH] D24846: [CMake] Generate LLDB_REVISION at build time
beanz added a comment. Putting this in LLVM would be ideal, but I think doing that requires a larger refactoring of how LLVM and Clang handle SCM versions. I was kinda hoping to land this and fix the lldb support, but if you'd prefer I can shelve this until after fixing LLVM & Clang. https://reviews.llvm.org/D24846 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [PATCH] D24846: [CMake] Generate LLDB_REVISION at build time
zturner added a comment. Should this be sunk into a common llvm function instead of copying from clang? I don't have a strong opinion, but are you one of the main CMake maintainers in LLVM, so whatever you think is best. https://reviews.llvm.org/D24846 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D24846: [CMake] Generate LLDB_REVISION at build time
beanz created this revision. beanz added reviewers: tfiala, zturner. beanz added a subscriber: lldb-commits. Herald added subscribers: mgorny, beanz. This alters the generation of LLDB_REVISION to be heavily based on how clang generates its version header. There are two benefits of this aproach. (1) The LLDB_REVISION is generated at build time, so it will be updated after an SCM pull/update even if CMake doesn't re-run (2) This works on Windows As noted this code is a simplified implementation of the code from clang. https://reviews.llvm.org/D24846 Files: source/CMakeLists.txt source/lldb.cpp Index: source/lldb.cpp === --- source/lldb.cpp +++ source/lldb.cpp @@ -18,6 +18,10 @@ #include "clang/Basic/Version.h" +#ifdef HAVE_SVN_VERSION_INC +# include "SVNVersion.inc" +#endif + static const char *GetLLDBRevision() { #ifdef LLDB_REVISION return LLDB_REVISION; Index: source/CMakeLists.txt === --- source/CMakeLists.txt +++ source/CMakeLists.txt @@ -40,6 +40,41 @@ DEPENDS ${LLDB_VERS_GENERATED_FILE}) endif() +foreach(file +"${LLDB_SOURCE_DIR}/.git/logs/HEAD" # Git +"${LLDB_SOURCE_DIR}/.svn/wc.db" # SVN 1.7 +"${LLDB_SOURCE_DIR}/.svn/entries" # SVN 1.6 +) + if(EXISTS "${file}") +set(lldb_vc "${file}") +break() + endif() +endforeach() + +if(DEFINED lldb_vc) + set(version_inc "${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc") + set(get_svn_script "${LLVM_MAIN_SRC_DIR}/cmake/modules/GetSVN.cmake") + + # Create custom target to generate the VC revision include. + add_custom_command(OUTPUT "${version_inc}" +DEPENDS "${lldb_vc}" "${get_svn_script}" +COMMAND +${CMAKE_COMMAND} "-DFIRST_SOURCE_DIR=${LLDB_SOURCE_DIR}" + "-DFIRST_NAME=LLDB" + "-DHEADER_FILE=${version_inc}" + -P "${get_svn_script}") + + # Mark the generated header as being generated. + set_source_files_properties("${version_inc}" +PROPERTIES GENERATED TRUE + HEADER_FILE_ONLY TRUE) + + # Tell Version.cpp that it needs to build with -DHAVE_SVN_VERSION_INC. + set_source_files_properties(lldb.cpp +PROPERTIES COMPILE_DEFINITIONS "HAVE_SVN_VERSION_INC") + list(APPEND lldbBase_SOURCES ${version_inc}) +endif() + add_lldb_library(lldbBase ${lldbBase_SOURCES} ) @@ -64,29 +99,3 @@ # Build API last. Since liblldb needs to link against every other target, it needs # those targets to have already been created. add_subdirectory(API) - -# Determine LLDB revision and repository. GetSourceVersion and GetRepositoryPath are shell-scripts, and as -# such will not work on Windows. -if ( NOT CMAKE_SYSTEM_NAME MATCHES "Windows" ) - execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetSourceVersion ${LLDB_SOURCE_DIR} - OUTPUT_VARIABLE LLDB_REVISION) - if ( LLDB_REVISION ) -string(REGEX REPLACE "(\r?\n)+$" "" LLDB_REVISION ${LLDB_REVISION}) - endif() - - execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetRepositoryPath ${LLDB_SOURCE_DIR} - OUTPUT_VARIABLE LLDB_REPOSITORY) - if ( LLDB_REPOSITORY ) -# Replace newline characters with spaces -string(REGEX REPLACE "(\r?\n)+" " " LLDB_REPOSITORY ${LLDB_REPOSITORY}) - -# Remove trailing spaces -string(REGEX REPLACE "(\ )+$" "" LLDB_REPOSITORY ${LLDB_REPOSITORY}) - endif() - - set_property( -SOURCE lldb.cpp -PROPERTY COMPILE_DEFINITIONS "LLDB_REVISION=\"${LLDB_REVISION}\"" "LLDB_REPOSITORY=\"${LLDB_REPOSITORY}\"") -endif () -# FIXME: implement svn/git revision and repository parsing solution on Windows. There is an SVN-only -#revision parsing solution in tools/clang/lib/Basic/CMakelists.txt. Index: source/lldb.cpp === --- source/lldb.cpp +++ source/lldb.cpp @@ -18,6 +18,10 @@ #include "clang/Basic/Version.h" +#ifdef HAVE_SVN_VERSION_INC +# include "SVNVersion.inc" +#endif + static const char *GetLLDBRevision() { #ifdef LLDB_REVISION return LLDB_REVISION; Index: source/CMakeLists.txt === --- source/CMakeLists.txt +++ source/CMakeLists.txt @@ -40,6 +40,41 @@ DEPENDS ${LLDB_VERS_GENERATED_FILE}) endif() +foreach(file +"${LLDB_SOURCE_DIR}/.git/logs/HEAD" # Git +"${LLDB_SOURCE_DIR}/.svn/wc.db" # SVN 1.7 +"${LLDB_SOURCE_DIR}/.svn/entries" # SVN 1.6 +) + if(EXISTS "${file}") +set(lldb_vc "${file}") +break() + endif() +endforeach() + +if(DEFINED lldb_vc) + set(version_inc "${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc") + set(get_svn_script "${LLVM_MAIN_SRC_DIR}/cmake/modules/GetSVN.cmake") + + # Create custom target to generate the VC revision include. + add_custom_command(OUTPUT "${version_inc}" +DEPENDS "${lldb_vc}" "${get_svn_script}" +COMMAND +