From 16ae365b93afd85e023c1b8410e789c0ed280aa5 Mon Sep 17 00:00:00 2001 From: Alejandro Saucedo Date: Sat, 13 Feb 2021 13:11:32 +0000 Subject: [PATCH] Added targets for building codecov --- Makefile | 1 + docs/CMakeLists.txt | 28 ++++++++++++++++++------ test/CMakeLists.txt | 53 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 12150e7f3..a19b87ae2 100644 --- a/Makefile +++ b/Makefile @@ -69,6 +69,7 @@ mk_cmake: -DKOMPUTE_OPT_BUILD_SINGLE_HEADER=1 \ -DKOMPUTE_OPT_ENABLE_SPDLOG=1 \ -DSPDLOG_INSTALL=1 \ + -DKOMPUTE_OPT_CODE_COVERAGE=1 \ -G "Unix Makefiles" mk_build_all: diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index 84995ec57..8884b0299 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -21,8 +21,14 @@ set(DOXYFILE_IN ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in) set(DOXYFILE_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) -set(CODECOV_INDEX_FILE - ${DOXYGEN_OUTPUT_DIR/html/codecov/index.html}) +set(SPHINX_SOURCE + ${CMAKE_CURRENT_SOURCE_DIR}) +set(SPHINX_BUILD + ${CMAKE_CURRENT_BINARY_DIR}/sphinx) +set(CODECOV_DOCS_DIR + ${SPHINX_BUILD}/codecov/) +set(CODECOV_DOCS_INDEX_FILE + ${CODECOV_DOCS_DIR}/index.html}) # Perform replacement with cmake vars inside Doxifine.in configure_file(${DOXYFILE_IN} ${DOXYFILE_OUT} @ONLY) @@ -35,14 +41,25 @@ add_custom_command( COMMENT "Generating docs" ) -if(KP_OPT_DOCS_GEN_CODECOV) +if(KOMPUTE_OPT_CODE_COVERAGE) add_custom_target(gendoxygen ALL - DEPENDS ${DOXYGEN_INDEX_FILE} ${DOXYGEN_OUTPUT_DIR}) + DEPENDS ${DOXYGEN_INDEX_FILE} ${CODECOV_DOCS_INDEX_FILE}) else() add_custom_target(gendoxygen ALL DEPENDS ${DOXYGEN_INDEX_FILE}) endif() +##################################################### +########### CODECOV DOCS ############### +##################################################### + +add_custom_command( + OUTPUT ${CODECOV_DOCS_INDEX_FILE} + COMMAND ${CMAKE_COMMAND} + -E copy_directory + ${CODECOV_DIR_HTML} + ${CODECOV_DOCS_DIR} + DEPENDS codecov_genhtml) ##################################################### ########### Sphinx ############### @@ -50,9 +67,6 @@ endif() find_package(Sphinx REQUIRED) -set(SPHINX_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}) -set(SPHINX_BUILD ${CMAKE_CURRENT_BINARY_DIR}/sphinx) - add_custom_target(gensphinx ALL COMMAND ${SPHINX_EXECUTABLE} -b html diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index f6b04df96..b38f7bdae 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -35,4 +35,57 @@ target_link_libraries(test_kompute PRIVATE kompute) add_test(NAME test_kompute COMMAND test_kompute) +##################################################### +#################### CODECOV ####################### +##################################################### + +if (KOMPUTE_OPT_CODE_COVERAGE) + if(NOT UNIX) + message( + FATAL_ERROR + "KOMPUTE_OPT_CODE_COVERAGE can only be enabled in unix based systems due to limitation on gcov") + endif() + + add_custom_target(codecov_run_tests + COMMAND make -C ${PROJECT_SOURCE_DIR} mk_run_tests + DEPENDS test_kompute) + + add_custom_target(codecov_copy_files + COMMAND ${CMAKE_COMMAND} + -E copy_directory + ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/test_kompute.dir/ + ${CODECOV_DIR} + COMMAND ${CMAKE_COMMAND} + -E copy_directory + ${CMAKE_CURRENT_BINARY_DIR}/../src/CMakeFiles/kompute.dir/ + ${CODECOV_DIR} + DEPENDS test_kompute codecov_run_tests) + + add_custom_target(codecov_gcov + COMMAND gcov + -b -c "*.gcno" + WORKING_DIRECTORY ${CODECOV_DIR} + DEPENDS codecov_copy_files) + + add_custom_target(codecov_lcov + COMMAND lcov + --capture + -o ${CODECOV_FILENAME_LCOV_INFO_FULL} + -d . + COMMAND lcov + --extract + ${CODECOV_FILENAME_LCOV_INFO_FULL} + -o ${CODECOV_FILENAME_LCOV_INFO} + -d . + "*/src/*" "*/test/*" + WORKING_DIRECTORY ${CODECOV_DIR} + DEPENDS codecov_gcov) + + add_custom_target(codecov_genhtml + COMMAND genhtml + ${CODECOV_FILENAME_LCOV_INFO} + --output-directory ${CODECOV_DIR_HTML} + WORKING_DIRECTORY ${CODECOV_DIR} + DEPENDS codecov_lcov) +endif()