Browse Source

CTestCoverageCollectGCOV: Allow custom flags to gcov

Add a GCOV_OPTIONS option to allow specification of custom flags.  In
ctest_coverage gcov support, if you set CTEST_COVERAGE_EXTRA_FLAGS, they
get put on the command line before the -o.  In this case we remove the
-b and replace it with GCOV_OPTIONS.  All other arguments remain the
same.
Bill Hoffman 11 years ago
parent
commit
5c828cc89b
1 changed files with 15 additions and 2 deletions
  1. 15 2
      Modules/CTestCoverageCollectGCOV.cmake

+ 15 - 2
Modules/CTestCoverageCollectGCOV.cmake

@@ -19,6 +19,7 @@
 #     ctest_coverage_collect_gcov(TARBALL <tarfile>
 #       [SOURCE <source_dir>][BUILD <build_dir>]
 #       [GCOV_COMMAND <gcov_command>]
+#       [GCOV_OPTIONS <options>...]
 #       )
 #
 #   Run gcov and package a tar file for CDash.  The options are:
@@ -39,6 +40,11 @@
 #   ``GCOV_COMMAND <gcov_command>``
 #     Specify the full path to the ``gcov`` command on the machine.
 #     Default is the value of :variable:`CTEST_COVERAGE_COMMAND`.
+#
+#   ``GCOV_OPTIONS <options>...``
+#     Specify options to be passed to gcov.  The ``gcov`` command
+#     is run as ``gcov <options>... -o <gcov-dir> <file>.gcda``.
+#     If not specified, the default option is just ``-b``.
 
 #=============================================================================
 # Copyright 2014-2015 Kitware, Inc.
@@ -56,7 +62,7 @@ include(CMakeParseArguments)
 function(ctest_coverage_collect_gcov)
   set(options "")
   set(oneValueArgs TARBALL SOURCE BUILD GCOV_COMMAND)
-  set(multiValueArgs "")
+  set(multiValueArgs GCOV_OPTIONS)
   cmake_parse_arguments(GCOV  "${options}" "${oneValueArgs}"
     "${multiValueArgs}" "" ${ARGN} )
   if(NOT DEFINED GCOV_TARBALL)
@@ -113,11 +119,18 @@ function(ctest_coverage_collect_gcov)
     get_filename_component(gcov_dir ${gcda_file} DIRECTORY)
     # run gcov, this will produce the .gcov file in the current
     # working directory
+    if(NOT DEFINED GCOV_GCOV_OPTIONS)
+      set(GCOV_GCOV_OPTIONS -b)
+    endif()
     execute_process(COMMAND
-      ${gcov_command} -b -o ${gcov_dir} ${gcda_file}
+      ${gcov_command} ${GCOV_GCOV_OPTIONS} -o ${gcov_dir} ${gcda_file}
       OUTPUT_VARIABLE out
+      RESULT_VARIABLE res
       WORKING_DIRECTORY ${coverage_dir})
   endforeach()
+  if(NOT "${res}" EQUAL 0)
+    message(STATUS "Error running gcov: ${res} ${out}")
+  endif()
   # create json file with project information
   file(WRITE ${coverage_dir}/data.json
     "{