Index: lldb/trunk/cmake/modules/EmbedAppleVersion.cmake =================================================================== --- lldb/trunk/cmake/modules/EmbedAppleVersion.cmake +++ lldb/trunk/cmake/modules/EmbedAppleVersion.cmake @@ -0,0 +1,11 @@ +execute_process(COMMAND /usr/libexec/PlistBuddy -c "Print:CFBundleVersion" ${LLDB_INFO_PLIST} + OUTPUT_VARIABLE BundleVersion + OUTPUT_STRIP_TRAILING_WHITESPACE) + +file(APPEND "${HEADER_FILE}.tmp" + "#define LLDB_VERSION_STRING \"lldb-${BundleVersion}\"\n") + +execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${HEADER_FILE}.tmp" "${HEADER_FILE}") + +file(REMOVE "${HEADER_FILE}.tmp") Index: lldb/trunk/lldb.xcodeproj/project.pbxproj =================================================================== --- lldb/trunk/lldb.xcodeproj/project.pbxproj +++ lldb/trunk/lldb.xcodeproj/project.pbxproj @@ -8775,6 +8775,20 @@ "\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"", ); GCC_INLINES_ARE_PRIVATE_EXTERN = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + __STDC_CONSTANT_MACROS, + __STDC_LIMIT_MACROS, + LLDB_CONFIGURATION_DEBUG, + "LLDB_VERSION_STRING=\"lldb-${CURRENT_PROJECT_VERSION}\"", + ); + "GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*][arch=*]" = ( + __STDC_CONSTANT_MACROS, + __STDC_LIMIT_MACROS, + LLDB_CONFIGURATION_DEBUG, + LLDB_DISABLE_PYTHON, + NO_XPC_SERVICES, + "LLDB_VERSION_STRING=\"lldb-${CURRENT_PROJECT_VERSION}\"", + ); HEADER_SEARCH_PATHS = /usr/include/libxml2; LLDB_COMPRESSION_CFLAGS = ""; "LLDB_COMPRESSION_CFLAGS[sdk=macosx10.11]" = "-DHAVE_LIBCOMPRESSION=1"; @@ -8820,6 +8834,20 @@ "\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"", ); GCC_INLINES_ARE_PRIVATE_EXTERN = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + __STDC_CONSTANT_MACROS, + __STDC_LIMIT_MACROS, + LLDB_CONFIGURATION_RELEASE, + "LLDB_VERSION_STRING=\"lldb-${CURRENT_PROJECT_VERSION}\"", + ); + "GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*][arch=*]" = ( + __STDC_CONSTANT_MACROS, + __STDC_LIMIT_MACROS, + LLDB_CONFIGURATION_RELEASE, + LLDB_DISABLE_PYTHON, + NO_XPC_SERVICES, + "LLDB_VERSION_STRING=\"lldb-${CURRENT_PROJECT_VERSION}\"", + ); HEADER_SEARCH_PATHS = /usr/include/libxml2; LLDB_COMPRESSION_CFLAGS = ""; "LLDB_COMPRESSION_CFLAGS[sdk=macosx10.11]" = "-DHAVE_LIBCOMPRESSION=1"; @@ -8865,6 +8893,20 @@ "\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"", ); GCC_INLINES_ARE_PRIVATE_EXTERN = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + __STDC_CONSTANT_MACROS, + __STDC_LIMIT_MACROS, + LLDB_CONFIGURATION_BUILD_AND_INTEGRATION, + "LLDB_VERSION_STRING=\"lldb-${CURRENT_PROJECT_VERSION}\"", + ); + "GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*][arch=*]" = ( + __STDC_CONSTANT_MACROS, + __STDC_LIMIT_MACROS, + LLDB_CONFIGURATION_BUILD_AND_INTEGRATION, + LLDB_DISABLE_PYTHON, + NO_XPC_SERVICES, + "LLDB_VERSION_STRING=\"lldb-${CURRENT_PROJECT_VERSION}\"", + ); HEADER_SEARCH_PATHS = /usr/include/libxml2; LLDB_COMPRESSION_CFLAGS = ""; "LLDB_COMPRESSION_CFLAGS[sdk=macosx10.11]" = "-DHAVE_LIBCOMPRESSION=1"; @@ -9864,6 +9906,20 @@ "\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"", ); GCC_INLINES_ARE_PRIVATE_EXTERN = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + __STDC_CONSTANT_MACROS, + __STDC_LIMIT_MACROS, + LLDB_CONFIGURATION_DEBUG, + "LLDB_VERSION_STRING=\"lldb-${CURRENT_PROJECT_VERSION}\"", + ); + "GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*][arch=*]" = ( + __STDC_CONSTANT_MACROS, + __STDC_LIMIT_MACROS, + LLDB_CONFIGURATION_DEBUG, + LLDB_DISABLE_PYTHON, + NO_XPC_SERVICES, + "LLDB_VERSION_STRING=\"lldb-${CURRENT_PROJECT_VERSION}\"", + ); HEADER_SEARCH_PATHS = /usr/include/libxml2; LLDB_COMPRESSION_CFLAGS = ""; "LLDB_COMPRESSION_CFLAGS[sdk=macosx10.11]" = "-DHAVE_LIBCOMPRESSION=1"; Index: lldb/trunk/source/CMakeLists.txt =================================================================== --- lldb/trunk/source/CMakeLists.txt +++ lldb/trunk/source/CMakeLists.txt @@ -25,21 +25,6 @@ lldb.cpp ) -if (CMAKE_SYSTEM_NAME MATCHES "Darwin") - set(LLDB_VERS_GENERATED_FILE ${LLDB_BINARY_DIR}/source/LLDB_vers.c) - add_custom_command(OUTPUT ${LLDB_VERS_GENERATED_FILE} - COMMAND ${LLDB_SOURCE_DIR}/scripts/generate-vers.pl - ${LLDB_SOURCE_DIR}/lldb.xcodeproj/project.pbxproj liblldb_core - > ${LLDB_VERS_GENERATED_FILE} - DEPENDS ${LLDB_SOURCE_DIR}/scripts/generate-vers.pl - ${LLDB_SOURCE_DIR}/lldb.xcodeproj/project.pbxproj) - set_source_files_properties(${LLDB_VERS_GENERATED_FILE} PROPERTIES GENERATED 1) - # Add this to lldbBase since lldb.cpp uses the symbol defined here. - list(APPEND lldbBase_SOURCES ${LLDB_VERS_GENERATED_FILE}) - add_custom_target(lldbGeneratedVersion - DEPENDS ${LLDB_VERS_GENERATED_FILE}) -endif() - foreach(file "${LLDB_SOURCE_DIR}/.git/logs/HEAD" # Git "${LLDB_SOURCE_DIR}/.svn/wc.db" # SVN 1.7 @@ -75,14 +60,37 @@ list(APPEND lldbBase_SOURCES ${version_inc}) endif() +if(APPLE) + set(apple_version_inc "${CMAKE_CURRENT_BINARY_DIR}/AppleVersion.inc") + set(apple_version_script "${LLDB_SOURCE_DIR}/cmake/modules/EmbedAppleVersion.cmake") + set(info_plist ${LLDB_SOURCE_DIR}/resources/LLDB-Info.plist) + + # Create custom target to generate the VC revision include. + add_custom_command(OUTPUT "${apple_version_inc}" + DEPENDS "${apple_version_script}" "${info_plist}" + COMMAND + ${CMAKE_COMMAND} "-DLLDB_INFO_PLIST=${info_plist}" + "-DHEADER_FILE=${apple_version_inc}" + -P "${apple_version_script}") + + # Mark the generated header as being generated. + set_source_files_properties("${apple_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_APPLE_VERSION_INC") + list(APPEND lldbBase_SOURCES ${apple_version_inc}) +elseif(LLDB_VERSION_STRING) + set_source_files_properties(lldb.cpp + PROPERTIES COMPILE_DEFINITIONS "LLDB_VERSION_STRING=\"${LLDB_VERSION_STRING}\"") +endif() + add_lldb_library(lldbBase ${lldbBase_SOURCES} ) -if (CMAKE_SYSTEM_NAME MATCHES "Darwin") - add_dependencies(lldbBase lldbGeneratedVersion) -endif() - add_subdirectory(Breakpoint) add_subdirectory(Commands) add_subdirectory(Core) Index: lldb/trunk/source/lldb.cpp =================================================================== --- lldb/trunk/source/lldb.cpp +++ lldb/trunk/source/lldb.cpp @@ -12,16 +12,16 @@ using namespace lldb; using namespace lldb_private; -#if defined(__APPLE__) -extern "C" const unsigned char liblldb_coreVersionString[]; -#else - #include "clang/Basic/Version.h" #ifdef HAVE_SVN_VERSION_INC # include "SVNVersion.inc" #endif +#ifdef HAVE_APPLE_VERSION_INC +# include "AppleVersion.inc" +#endif + static const char *GetLLDBRevision() { #ifdef LLDB_REVISION return LLDB_REVISION; @@ -38,33 +38,8 @@ #endif } -#endif const char *lldb_private::GetVersion() { -#if defined(__APPLE__) - static char g_version_string[32]; - if (g_version_string[0] == '\0') { - const char *version_string = - ::strstr((const char *)liblldb_coreVersionString, "PROJECT:"); - - if (version_string) - version_string += sizeof("PROJECT:") - 1; - else - version_string = "unknown"; - - const char *newline_loc = strchr(version_string, '\n'); - - size_t version_len = sizeof(g_version_string) - 1; - - if (newline_loc && - (newline_loc - version_string < static_cast(version_len))) - version_len = newline_loc - version_string; - - ::snprintf(g_version_string, version_len + 1, "%s", version_string); - } - - return g_version_string; -#else // On platforms other than Darwin, report a version number in the same style // as the clang tool. static std::string g_version_str; @@ -81,21 +56,24 @@ if (lldb_rev) { g_version_str += " revision "; g_version_str += lldb_rev; + g_version_str += ")"; } +#ifdef LLDB_VERSION_STRING + g_version_str += " ("; + g_version_str += LLDB_VERSION_STRING; + g_version_str += ")"; +#endif std::string clang_rev(clang::getClangRevision()); if (clang_rev.length() > 0) { - g_version_str += " clang revision "; + g_version_str += "\n clang revision "; g_version_str += clang_rev; } std::string llvm_rev(clang::getLLVMRevision()); if (llvm_rev.length() > 0) { - g_version_str += " llvm revision "; + g_version_str += "\n llvm revision "; g_version_str += llvm_rev; } - - if (lldb_repo) - g_version_str += ")"; + } return g_version_str.c_str(); -#endif }