Commit 47458f1c authored by Richard Berger's avatar Richard Berger
Browse files

Add code coverage target to CMake

parent 29e55521
Loading
Loading
Loading
Loading
+35 −2
Original line number Diff line number Diff line
@@ -49,6 +49,11 @@ if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel")
  set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -restrict")
endif()

option(ENABLE_COVERAGE "Enable code coverage" OFF)
if(ENABLE_COVERAGE)
  set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage")
endif()

########################################################################
# User input options                                                   #
########################################################################
@@ -822,9 +827,37 @@ if(ENABLE_TESTING)
  add_test(ShowHelp lmp${LAMMPS_MACHINE} -help)
endif()

##################################
###############################################################################
# Testing
#
# Requires latest gcovr (for GCC 8.1 support):#
# pip install git+https://github.com/gcovr/gcovr.git
###############################################################################
if(ENABLE_COVERAGE)
    find_package(GCOVR)

    if(GCOVR_FOUND)
        get_filename_component(ABSOLUTE_LAMMPS_SOURCE_DIR ${LAMMPS_SOURCE_DIR} ABSOLUTE)

        add_custom_target(
            gen_coverage_xml
            COMMAND ${GCOVR_BINARY} -s -x -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o coverage.xml
            WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
            COMMENT "Generating XML Coverage Report..."
        )

        add_custom_target(
            gen_coverage_html
            COMMAND ${GCOVR_BINARY} -s  --html --html-details -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o coverage.html
            WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
            COMMENT "Generating HTML Coverage Report..."
        )
    endif()
endif()

###############################################################################
# Print package summary
##################################
###############################################################################
foreach(PKG ${DEFAULT_PACKAGES} ${OTHER_PACKAGES} ${ACCEL_PACKAGES})
  if(PKG_${PKG})
    message(STATUS "Building package: ${PKG}")
+13 −0
Original line number Diff line number Diff line
# - Find gcovr
# Find the gcovr utility
#
#  GCOVR_BINARY       - path to gcovr executable
#  GCOVR_FOUND        - True if gcovr found.
#
find_program(GCOVR_BINARY gcovr)

include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set GCOVR_FOUND to TRUE
# if all listed variables are TRUE

find_package_handle_standard_args(GCOVR DEFAULT_MSG GCOVR_BINARY)