cmCTestMemCheckCommand.cxx 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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 <string>
  6. #include <vector>
  7. #include "cmCTest.h"
  8. #include "cmCTestGenericHandler.h"
  9. #include "cmCTestMemCheckHandler.h"
  10. #include "cmMakefile.h"
  11. cmCTestMemCheckCommand::cmCTestMemCheckCommand()
  12. {
  13. this->Arguments[ctm_DEFECT_COUNT] = "DEFECT_COUNT";
  14. this->Arguments[ctm_LAST] = nullptr;
  15. this->Last = ctm_LAST;
  16. }
  17. cmCTestGenericHandler* cmCTestMemCheckCommand::InitializeActualHandler()
  18. {
  19. cmCTestGenericHandler* handler =
  20. this->CTest->GetInitializedHandler("memcheck");
  21. this->CTest->SetCTestConfigurationFromCMakeVariable(
  22. this->Makefile, "MemoryCheckType", "CTEST_MEMORYCHECK_TYPE", this->Quiet);
  23. this->CTest->SetCTestConfigurationFromCMakeVariable(
  24. this->Makefile, "MemoryCheckSanitizerOptions",
  25. "CTEST_MEMORYCHECK_SANITIZER_OPTIONS", this->Quiet);
  26. this->CTest->SetCTestConfigurationFromCMakeVariable(
  27. this->Makefile, "MemoryCheckCommand", "CTEST_MEMORYCHECK_COMMAND",
  28. this->Quiet);
  29. this->CTest->SetCTestConfigurationFromCMakeVariable(
  30. this->Makefile, "MemoryCheckCommandOptions",
  31. "CTEST_MEMORYCHECK_COMMAND_OPTIONS", this->Quiet);
  32. this->CTest->SetCTestConfigurationFromCMakeVariable(
  33. this->Makefile, "MemoryCheckSuppressionFile",
  34. "CTEST_MEMORYCHECK_SUPPRESSIONS_FILE", this->Quiet);
  35. handler->SetQuiet(this->Quiet);
  36. return handler;
  37. }
  38. void cmCTestMemCheckCommand::ProcessAdditionalValues(
  39. cmCTestGenericHandler* handler)
  40. {
  41. if (this->Values[ctm_DEFECT_COUNT] && *this->Values[ctm_DEFECT_COUNT]) {
  42. std::ostringstream str;
  43. str << static_cast<cmCTestMemCheckHandler*>(handler)->GetDefectCount();
  44. this->Makefile->AddDefinition(this->Values[ctm_DEFECT_COUNT],
  45. str.str().c_str());
  46. }
  47. }