diff options
author | Brad King <brad.king@kitware.com> | 2018-09-21 15:11:36 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2018-09-21 15:39:59 (GMT) |
commit | 72b4c2c48ae7dfd8c2813018c72ed0d2e6bb907a (patch) | |
tree | 11976bcd9d3e5da19fa1151eeb05389f7796e846 /Source | |
parent | b48165346f7dfcd025beca743abf2eaf849bf17d (diff) | |
download | CMake-72b4c2c48ae7dfd8c2813018c72ed0d2e6bb907a.zip CMake-72b4c2c48ae7dfd8c2813018c72ed0d2e6bb907a.tar.gz CMake-72b4c2c48ae7dfd8c2813018c72ed0d2e6bb907a.tar.bz2 |
server: Compile json object generation source separately
Declare entry points in a dedicated header and compile the source
separately instead of including it in the server implementation.
Diffstat (limited to 'Source')
-rw-r--r-- | Source/CMakeLists.txt | 3 | ||||
-rw-r--r-- | Source/cmJsonObjects.cxx | 28 | ||||
-rw-r--r-- | Source/cmJsonObjects.h | 27 | ||||
-rw-r--r-- | Source/cmServerProtocol.cxx | 12 |
4 files changed, 52 insertions, 18 deletions
diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 628cc6f..bfddbc6 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -1047,6 +1047,9 @@ target_link_libraries(cmake CMakeLib) add_library(CMakeServerLib cmConnection.h cmConnection.cxx cmFileMonitor.cxx cmFileMonitor.h + cmJsonObjectDictionary.h + cmJsonObjects.h + cmJsonObjects.cxx cmPipeConnection.cxx cmPipeConnection.h cmServer.cxx cmServer.h cmServerConnection.cxx cmServerConnection.h diff --git a/Source/cmJsonObjects.cxx b/Source/cmJsonObjects.cxx index b534471..a7db75f 100644 --- a/Source/cmJsonObjects.cxx +++ b/Source/cmJsonObjects.cxx @@ -1,11 +1,14 @@ /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ +#include "cmJsonObjects.h" // IWYU pragma: keep #include "cmGeneratorExpression.h" #include "cmGeneratorTarget.h" #include "cmGlobalGenerator.h" #include "cmInstallGenerator.h" #include "cmInstallTargetGenerator.h" +#include "cmJsonObjectDictionary.h" +#include "cmJsonObjects.h" #include "cmLinkLineComputer.h" #include "cmLocalGenerator.h" #include "cmMakefile.h" @@ -66,11 +69,14 @@ Json::Value fromStringList(const T& in) return result; } -void getCMakeInputs(const cmGlobalGenerator* gg, const std::string& sourceDir, - const std::string& buildDir, - std::vector<std::string>* internalFiles, - std::vector<std::string>* explicitFiles, - std::vector<std::string>* tmpFiles) +} // namespace + +void cmGetCMakeInputs(const cmGlobalGenerator* gg, + const std::string& sourceDir, + const std::string& buildDir, + std::vector<std::string>* internalFiles, + std::vector<std::string>* explicitFiles, + std::vector<std::string>* tmpFiles) { const std::string cmakeRootDir = cmSystemTools::GetCMakeRoot() + '/'; std::vector<cmMakefile*> const& makefiles = gg->GetMakefiles(); @@ -109,9 +115,7 @@ void getCMakeInputs(const cmGlobalGenerator* gg, const std::string& sourceDir, } } -} // namespace - -static Json::Value DumpCMakeInputs(const cmake* cm) +Json::Value cmDumpCMakeInputs(const cmake* cm) { const cmGlobalGenerator* gg = cm->GetGlobalGenerator(); const std::string& buildDir = cm->GetHomeOutputDirectory(); @@ -120,8 +124,8 @@ static Json::Value DumpCMakeInputs(const cmake* cm) std::vector<std::string> internalFiles; std::vector<std::string> explicitFiles; std::vector<std::string> tmpFiles; - getCMakeInputs(gg, sourceDir, buildDir, &internalFiles, &explicitFiles, - &tmpFiles); + cmGetCMakeInputs(gg, sourceDir, buildDir, &internalFiles, &explicitFiles, + &tmpFiles); Json::Value array = Json::arrayValue; @@ -506,7 +510,7 @@ static Json::Value DumpCTestConfigurationsList(const cmake* cm) return result; } -static Json::Value DumpCTestInfo(const cmake* cm) +Json::Value cmDumpCTestInfo(const cmake* cm) { Json::Value result = Json::objectValue; result[kCONFIGURATIONS_KEY] = DumpCTestConfigurationsList(cm); @@ -811,7 +815,7 @@ static Json::Value DumpConfigurationsList(const cmake* cm) return result; } -static Json::Value DumpCodeModel(const cmake* cm) +Json::Value cmDumpCodeModel(const cmake* cm) { Json::Value result = Json::objectValue; result[kCONFIGURATIONS_KEY] = DumpConfigurationsList(cm); diff --git a/Source/cmJsonObjects.h b/Source/cmJsonObjects.h new file mode 100644 index 0000000..cd4da94 --- /dev/null +++ b/Source/cmJsonObjects.h @@ -0,0 +1,27 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#ifndef cmJsonObjects_h +#define cmJsonObjects_h + +#include "cmConfigure.h" // IWYU pragma: keep + +#include "cm_jsoncpp_value.h" + +#include <string> +#include <vector> + +class cmake; +class cmGlobalGenerator; + +extern void cmGetCMakeInputs(const cmGlobalGenerator* gg, + const std::string& sourceDir, + const std::string& buildDir, + std::vector<std::string>* internalFiles, + std::vector<std::string>* explicitFiles, + std::vector<std::string>* tmpFiles); + +extern Json::Value cmDumpCodeModel(const cmake* cm); +extern Json::Value cmDumpCTestInfo(const cmake* cm); +extern Json::Value cmDumpCMakeInputs(const cmake* cm); + +#endif diff --git a/Source/cmServerProtocol.cxx b/Source/cmServerProtocol.cxx index 6a09776..f75a5ce 100644 --- a/Source/cmServerProtocol.cxx +++ b/Source/cmServerProtocol.cxx @@ -7,6 +7,7 @@ #include "cmFileMonitor.h" #include "cmGlobalGenerator.h" #include "cmJsonObjectDictionary.h" +#include "cmJsonObjects.h" #include "cmServer.h" #include "cmServerDictionary.h" #include "cmState.h" @@ -37,8 +38,6 @@ std::vector<std::string> toStringList(const Json::Value& in) } // namespace -#include "cmJsonObjects.cxx" - cmServerRequest::cmServerRequest(cmServer* server, cmConnection* connection, const std::string& t, const std::string& c, const Json::Value& d) @@ -473,7 +472,7 @@ cmServerResponse cmServerProtocol1::ProcessCMakeInputs( Json::Value result = Json::objectValue; result[kSOURCE_DIRECTORY_KEY] = sourceDir; result[kCMAKE_ROOT_DIRECTORY_KEY] = cmakeRootDir; - result[kBUILD_FILES_KEY] = DumpCMakeInputs(cm); + result[kBUILD_FILES_KEY] = cmDumpCMakeInputs(cm); return request.Reply(result); } @@ -484,7 +483,7 @@ cmServerResponse cmServerProtocol1::ProcessCodeModel( return request.ReportError("No build system was generated yet."); } - return request.Reply(DumpCodeModel(this->CMakeInstance())); + return request.Reply(cmDumpCodeModel(this->CMakeInstance())); } cmServerResponse cmServerProtocol1::ProcessCompute( @@ -601,7 +600,8 @@ cmServerResponse cmServerProtocol1::ProcessConfigure( } std::vector<std::string> toWatchList; - getCMakeInputs(gg, std::string(), buildDir, nullptr, &toWatchList, nullptr); + cmGetCMakeInputs(gg, std::string(), buildDir, nullptr, &toWatchList, + nullptr); FileMonitor()->MonitorPaths(toWatchList, [this](const std::string& p, int e, int s) { @@ -707,7 +707,7 @@ cmServerResponse cmServerProtocol1::ProcessCTests( return request.ReportError("This instance was not yet computed."); } - return request.Reply(DumpCTestInfo(this->CMakeInstance())); + return request.Reply(cmDumpCTestInfo(this->CMakeInstance())); } cmServerProtocol1::GeneratorInformation::GeneratorInformation( |