summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2017-12-06 13:46:55 -0500
committerBrad King <brad.king@kitware.com>2017-12-06 13:46:55 -0500
commit05f86af716e00b58b5103b231a22515edcc95321 (patch)
tree958486c6bb80fe12728ef5e4753817b1fa0bd517
parent0418e91f7d77e540b1e7accc9af4d6cd28b2e71f (diff)
parent8b2736c71ca6eb8e62a69f57ad07e4e19a95c936 (diff)
downloadcmake-05f86af716e00b58b5103b231a22515edcc95321.tar.gz
Merge branch 'backport-revert-server-target-backtraces' into release-3.10
Merge-request: !1564
-rw-r--r--Help/manual/cmake-server.7.rst42
-rw-r--r--Help/release/3.10.rst12
-rw-r--r--Source/cmServerDictionary.h5
-rw-r--r--Source/cmServerProtocol.cxx49
4 files changed, 13 insertions, 95 deletions
diff --git a/Help/manual/cmake-server.7.rst b/Help/manual/cmake-server.7.rst
index c56e5a7161..50a90ee7d4 100644
--- a/Help/manual/cmake-server.7.rst
+++ b/Help/manual/cmake-server.7.rst
@@ -506,9 +506,6 @@ Each target object can have the following keys:
with the sysroot path.
"fileGroups"
contains the source files making up the target.
-"crossReferences"
- contains the location of the target in the corresponding CMakeLists.txt
- file and the locations of the related statements like "target_link_libraries"
FileGroups are used to group sources using similar settings together.
@@ -534,16 +531,6 @@ Each fileGroup object may contain the following keys:
All file paths in the fileGroup are either absolute or relative to the
sourceDirectory of the target.
-CrossReferences object is used to report the location of the target (including
-the entire call stack if the target is defined in a function) and the related
-"target_link_libraries", "target_include_directories", "target_compile_definitions"
-and "target_compile_options" statements.
-
-See the example below for details on the internal format of the "crossReferences" object.
-Line numbers stated in the "backtrace" entries are 1-based. The last entry of a backtrace
-is a special entry with missing "line" and "name" fields that specifies the initial
-CMakeLists.txt file.
-
Example::
[== "CMake Server" ==[
@@ -580,34 +567,7 @@ CMake will reply::
"linkerLanguage": "C",
"name": "cmForm",
"sourceDirectory": "/home/code/src/cmake/Source/CursesDialog/form",
- "type": "STATIC_LIBRARY",
- "crossReferences": {
- "backtrace": [
- {
- "line": 7,
- "name": "add_executable",
- "path": "C:/full/path/CMakeLists.txt"
- },
- {
- "path": "c:/full/path/CMakeLists.txt"
- }
- ],
- "relatedStatements": [
- {
- "backtrace": [
- {
- "line": 8,
- "name": "target_link_libraries",
- "path": "c:/full/path/CMakeLists.txt"
- },
- {
- "path": "c:/full/path/CMakeLists.txt"
- }
- ],
- "type": "target_link_libraries"
- }
- ]
- }
+ "type": "STATIC_LIBRARY"
}
]
},
diff --git a/Help/release/3.10.rst b/Help/release/3.10.rst
index 35fe602edc..6a19dbfe6e 100644
--- a/Help/release/3.10.rst
+++ b/Help/release/3.10.rst
@@ -255,3 +255,15 @@ Other Changes
incompatible with the old behavior, it is expected that behavior
under typical use cases with properly-quoted command-lines has
not changed.
+
+Updates
+=======
+
+Changes made since CMake 3.10.0 include the following.
+
+3.10.1
+------
+
+* The :manual:`cmake-server(7)` ``codemodel`` response ``crossReferences``
+ field added by 3.10.0 has been dropped due to excessive memory usage.
+ Another approach will be needed to provide backtrace information.
diff --git a/Source/cmServerDictionary.h b/Source/cmServerDictionary.h
index 405ff6b128..e6a7ae6cae 100644
--- a/Source/cmServerDictionary.h
+++ b/Source/cmServerDictionary.h
@@ -89,11 +89,6 @@ static const std::string kWARN_UNUSED_KEY = "warnUnused";
static const std::string kWATCHED_DIRECTORIES_KEY = "watchedDirectories";
static const std::string kWATCHED_FILES_KEY = "watchedFiles";
-static const std::string kTARGET_CROSS_REFERENCES_KEY = "crossReferences";
-static const std::string kLINE_NUMBER_KEY = "line";
-static const std::string kBACKTRACE_KEY = "backtrace";
-static const std::string kRELATED_STATEMENTS_KEY = "relatedStatements";
-
static const std::string kSTART_MAGIC = "[== \"CMake Server\" ==[";
static const std::string kEND_MAGIC = "]== \"CMake Server\" ==]";
diff --git a/Source/cmServerProtocol.cxx b/Source/cmServerProtocol.cxx
index e835b7a2c3..13b18c24c3 100644
--- a/Source/cmServerProtocol.cxx
+++ b/Source/cmServerProtocol.cxx
@@ -9,7 +9,6 @@
#include "cmGeneratorTarget.h"
#include "cmGlobalGenerator.h"
#include "cmLinkLineComputer.h"
-#include "cmListFileCache.h"
#include "cmLocalGenerator.h"
#include "cmMakefile.h"
#include "cmServer.h"
@@ -20,7 +19,6 @@
#include "cmStateSnapshot.h"
#include "cmStateTypes.h"
#include "cmSystemTools.h"
-#include "cmTarget.h"
#include "cm_uv.h"
#include "cmake.h"
@@ -732,37 +730,6 @@ static Json::Value DumpSourceFilesList(
return result;
}
-static Json::Value DumpBacktrace(const cmListFileBacktrace& backtrace)
-{
- Json::Value result = Json::arrayValue;
-
- cmListFileBacktrace backtraceCopy = backtrace;
- while (!backtraceCopy.Top().FilePath.empty()) {
- Json::Value entry = Json::objectValue;
- entry[kPATH_KEY] = backtraceCopy.Top().FilePath;
- if (backtraceCopy.Top().Line) {
- entry[kLINE_NUMBER_KEY] = static_cast<int>(backtraceCopy.Top().Line);
- }
- if (!backtraceCopy.Top().Name.empty()) {
- entry[kNAME_KEY] = backtraceCopy.Top().Name;
- }
- result.append(entry);
- backtraceCopy = backtraceCopy.Pop();
- }
- return result;
-}
-
-static void DumpBacktraceRange(Json::Value& result, const std::string& type,
- cmBacktraceRange range)
-{
- for (auto const& bt : range) {
- Json::Value obj = Json::objectValue;
- obj[kTYPE_KEY] = type;
- obj[kBACKTRACE_KEY] = DumpBacktrace(bt);
- result.append(obj);
- }
-}
-
static Json::Value DumpTarget(cmGeneratorTarget* target,
const std::string& config)
{
@@ -797,22 +764,6 @@ static Json::Value DumpTarget(cmGeneratorTarget* target,
result[kFULL_NAME_KEY] = target->GetFullName(config);
- Json::Value crossRefs = Json::objectValue;
- crossRefs[kBACKTRACE_KEY] = DumpBacktrace(target->Target->GetBacktrace());
-
- Json::Value statements = Json::arrayValue;
- DumpBacktraceRange(statements, "target_compile_definitions",
- target->Target->GetCompileDefinitionsBacktraces());
- DumpBacktraceRange(statements, "target_include_directories",
- target->Target->GetIncludeDirectoriesBacktraces());
- DumpBacktraceRange(statements, "target_compile_options",
- target->Target->GetCompileOptionsBacktraces());
- DumpBacktraceRange(statements, "target_link_libraries",
- target->Target->GetLinkImplementationBacktraces());
-
- crossRefs[kRELATED_STATEMENTS_KEY] = std::move(statements);
- result[kTARGET_CROSS_REFERENCES_KEY] = std::move(crossRefs);
-
if (target->HaveWellDefinedOutputFiles()) {
Json::Value artifacts = Json::arrayValue;
artifacts.append(