Browse Source

CTest: Add COVERAGE_EXTRA_FLAGS cache variable (#12490)

COVERAGE_EXTRA_FLAGS is a space separated value of extra flags
that will be passed to gcov when ctest's coverage handler invokes
gcov to do coverage analysis.

Map to CoverageExtraFlags in the CTest ini file. Use default value
of "-l" to match the coverage handler's earlier behavior from ctest
2.8.4 and earlier. The fix for related issue #11717 had added a " -p"
which was the cause of both #12415 and #12490. Here, we revert that
change to the default value, so -p is no longer there by default.
The people that care to add -p may do so in their own build trees
by appending " -p" to the new cache variable COVERAGE_EXTRA_FLAGS.
David Cole 14 years ago
parent
commit
2f309cba45

+ 3 - 0
Modules/CTest.cmake

@@ -189,6 +189,8 @@ IF(BUILD_TESTING)
   FIND_PROGRAM(COVERAGE_COMMAND gcov DOC 
   FIND_PROGRAM(COVERAGE_COMMAND gcov DOC 
     "Path to the coverage program that CTest uses for performing coverage inspection"
     "Path to the coverage program that CTest uses for performing coverage inspection"
     )
     )
+  SET(COVERAGE_EXTRA_FLAGS "-l" CACHE STRING
+    "Extra command line flags to pass to the coverage tool")
 
 
   # set the site name
   # set the site name
   SITE_NAME(SITE)
   SITE_NAME(SITE)
@@ -257,6 +259,7 @@ IF(BUILD_TESTING)
     BZRCOMMAND
     BZRCOMMAND
     BZR_UPDATE_OPTIONS
     BZR_UPDATE_OPTIONS
     COVERAGE_COMMAND
     COVERAGE_COMMAND
+    COVERAGE_EXTRA_FLAGS
     CTEST_SUBMIT_RETRY_DELAY
     CTEST_SUBMIT_RETRY_DELAY
     CTEST_SUBMIT_RETRY_COUNT
     CTEST_SUBMIT_RETRY_COUNT
     CVSCOMMAND
     CVSCOMMAND

+ 4 - 1
Modules/DartConfiguration.tcl.in

@@ -59,14 +59,17 @@ UpdateType: @UPDATE_TYPE@
 # Compiler info
 # Compiler info
 Compiler: @CMAKE_CXX_COMPILER@
 Compiler: @CMAKE_CXX_COMPILER@
 
 
-# Dynamic analysis and coverage
+# Dynamic analysis (MemCheck)
 PurifyCommand: @PURIFYCOMMAND@
 PurifyCommand: @PURIFYCOMMAND@
 ValgrindCommand: @VALGRIND_COMMAND@
 ValgrindCommand: @VALGRIND_COMMAND@
 ValgrindCommandOptions: @VALGRIND_COMMAND_OPTIONS@
 ValgrindCommandOptions: @VALGRIND_COMMAND_OPTIONS@
 MemoryCheckCommand: @MEMORYCHECK_COMMAND@
 MemoryCheckCommand: @MEMORYCHECK_COMMAND@
 MemoryCheckCommandOptions: @MEMORYCHECK_COMMAND_OPTIONS@
 MemoryCheckCommandOptions: @MEMORYCHECK_COMMAND_OPTIONS@
 MemoryCheckSuppressionFile: @MEMORYCHECK_SUPPRESSIONS_FILE@
 MemoryCheckSuppressionFile: @MEMORYCHECK_SUPPRESSIONS_FILE@
+
+# Coverage
 CoverageCommand: @COVERAGE_COMMAND@
 CoverageCommand: @COVERAGE_COMMAND@
+CoverageExtraFlags: @COVERAGE_EXTRA_FLAGS@
 
 
 # Cluster commands
 # Cluster commands
 SlurmBatchCommand: @SLURM_SBATCH_COMMAND@
 SlurmBatchCommand: @SLURM_SBATCH_COMMAND@

+ 7 - 2
Source/CTest/cmCTestCoverageHandler.cxx

@@ -751,12 +751,15 @@ int cmCTestCoverageHandler::HandlePHPCoverage(
     }
     }
   return static_cast<int>(cont->TotalCoverage.size());
   return static_cast<int>(cont->TotalCoverage.size());
 }
 }
+
 //----------------------------------------------------------------------
 //----------------------------------------------------------------------
 int cmCTestCoverageHandler::HandleGCovCoverage(
 int cmCTestCoverageHandler::HandleGCovCoverage(
   cmCTestCoverageHandlerContainer* cont)
   cmCTestCoverageHandlerContainer* cont)
 {
 {
   std::string gcovCommand
   std::string gcovCommand
     = this->CTest->GetCTestConfiguration("CoverageCommand");
     = this->CTest->GetCTestConfiguration("CoverageCommand");
+  std::string gcovExtraFlags
+    = this->CTest->GetCTestConfiguration("CoverageExtraFlags");
 
 
   // Style 1
   // Style 1
   std::string st1gcovOutputRex1
   std::string st1gcovOutputRex1
@@ -825,8 +828,10 @@ int cmCTestCoverageHandler::HandleGCovCoverage(
     // Call gcov to get coverage data for this *.gcda file:
     // Call gcov to get coverage data for this *.gcda file:
     //
     //
     std::string fileDir = cmSystemTools::GetFilenamePath(it->c_str());
     std::string fileDir = cmSystemTools::GetFilenamePath(it->c_str());
-    std::string command = "\"" + gcovCommand + "\" -l -p -o \"" + fileDir
-      + "\" \"" + *it + "\"";
+    std::string command = "\"" + gcovCommand + "\" " +
+      gcovExtraFlags + " " +
+      "-o \"" + fileDir + "\" " +
+      "\"" + *it + "\"";
 
 
     cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, command.c_str()
     cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, command.c_str()
       << std::endl);
       << std::endl);