cmCTestMemCheckCommand.cxx 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #include "cmCTestMemCheckCommand.h"
  4. #include <sstream>
  5. #include <vector>
  6. #include "cmCTest.h"
  7. #include "cmCTestGenericHandler.h"
  8. #include "cmCTestMemCheckHandler.h"
  9. #include "cmMakefile.h"
  10. cmCTestMemCheckCommand::cmCTestMemCheckCommand()
  11. {
  12. this->Arguments[ctm_DEFECT_COUNT] = "DEFECT_COUNT";
  13. this->Arguments[ctm_LAST] = CM_NULLPTR;
  14. this->Last = ctm_LAST;
  15. }
  16. cmCTestGenericHandler* cmCTestMemCheckCommand::InitializeActualHandler()
  17. {
  18. cmCTestGenericHandler* handler =
  19. this->CTest->GetInitializedHandler("memcheck");
  20. this->CTest->SetCTestConfigurationFromCMakeVariable(
  21. this->Makefile, "MemoryCheckType", "CTEST_MEMORYCHECK_TYPE", this->Quiet);
  22. this->CTest->SetCTestConfigurationFromCMakeVariable(
  23. this->Makefile, "MemoryCheckSanitizerOptions",
  24. "CTEST_MEMORYCHECK_SANITIZER_OPTIONS", this->Quiet);
  25. this->CTest->SetCTestConfigurationFromCMakeVariable(
  26. this->Makefile, "MemoryCheckCommand", "CTEST_MEMORYCHECK_COMMAND",
  27. this->Quiet);
  28. this->CTest->SetCTestConfigurationFromCMakeVariable(
  29. this->Makefile, "MemoryCheckCommandOptions",
  30. "CTEST_MEMORYCHECK_COMMAND_OPTIONS", this->Quiet);
  31. this->CTest->SetCTestConfigurationFromCMakeVariable(
  32. this->Makefile, "MemoryCheckSuppressionFile",
  33. "CTEST_MEMORYCHECK_SUPPRESSIONS_FILE", this->Quiet);
  34. handler->SetQuiet(this->Quiet);
  35. return handler;
  36. }
  37. void cmCTestMemCheckCommand::ProcessAdditionalValues(
  38. cmCTestGenericHandler* handler)
  39. {
  40. if (this->Values[ctm_DEFECT_COUNT] && *this->Values[ctm_DEFECT_COUNT]) {
  41. std::ostringstream str;
  42. str << static_cast<cmCTestMemCheckHandler*>(handler)->GetDefectCount();
  43. this->Makefile->AddDefinition(this->Values[ctm_DEFECT_COUNT],
  44. str.str().c_str());
  45. }
  46. }