You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datasketches.apache.org by jm...@apache.org on 2020/06/12 19:19:52 UTC

[incubator-datasketches-cpp] branch code_coverage created (now 4274349)

This is an automated email from the ASF dual-hosted git repository.

jmalkin pushed a change to branch code_coverage
in repository https://gitbox.apache.org/repos/asf/incubator-datasketches-cpp.git.


      at 4274349  cmake improvements: don't produce empty library artifact, add (primitive and fragile) code coverage support

This branch includes the following new commits:

     new 4274349  cmake improvements: don't produce empty library artifact, add (primitive and fragile) code coverage support

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org


[incubator-datasketches-cpp] 01/01: cmake improvements: don't produce empty library artifact, add (primitive and fragile) code coverage support

Posted by jm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jmalkin pushed a commit to branch code_coverage
in repository https://gitbox.apache.org/repos/asf/incubator-datasketches-cpp.git

commit 4274349a4888ba8b833213e4a728507d5caa726e
Author: Jon Malkin <jm...@users.noreply.github.com>
AuthorDate: Fri Jun 12 12:19:02 2020 -0700

    cmake improvements: don't produce empty library artifact, add (primitive and fragile) code coverage support
---
 CMakeLists.txt | 57 ++++++++++++++++++++++++++++++++++++---------------------
 1 file changed, 36 insertions(+), 21 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 79595b1..c98c4a2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -29,18 +29,6 @@ if(EXISTS "${LOC_PATH}")
     message(FATAL_ERROR "You cannot build in a source directory (or any directory with a CMakeLists.txt file). Please make a build subdirectory. Feel free to remove CMakeCache.txt and CMakeFiles.")
 endif()
 
-# set default build type to debug
-# Mostly from: https://blog.kitware.com/cmake-and-the-default-build-type/
-set(default_build_type "Release")
-if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
-  message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
-  set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE
-      STRING "Choose the type of build." FORCE)
-  # Set the possible values of build type for cmake-gui
-  set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
-    "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
-endif()
-
 # Ensure builds on Windows export all symbols
 set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
 
@@ -66,7 +54,7 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
 set(CMAKE_C_EXTENSIONS OFF)
 set(CMAKE_CXX_EXTENSIONS OFF)
 
-list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
+#list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
 
 ###### OPTIONS ######
 # Enable testing
@@ -75,7 +63,30 @@ if (BUILD_TESTS)
   enable_testing()
 endif()
 
-add_library(datasketches SHARED "")
+option(COVERAGE "Enable code coverage reporting (g++/clang only)" OFF)
+if(COVERAGE AND CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
+  set(CMAKE_BUILD_TYPE "Debug" FORCE)
+  add_compile_options(--coverage -O0 -g3)
+  add_link_options(--coverage)
+endif()
+
+# set default build type to Release
+# Derived from: https://blog.kitware.com/cmake-and-the-default-build-type/
+set(default_build_type "Release")
+if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
+  message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
+  set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE
+      STRING "Choose the type of build." FORCE)
+  # Set the possible values of build type for cmake-gui
+  set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
+    "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
+endif()
+
+###### TARGETS ######
+# do we need the next line since we don't actually make a library anymore?
+add_library(datasketches INTERFACE)
+
+target_compile_features(datasketches INTERFACE cxx_std_11)
 
 add_subdirectory(common)
 add_subdirectory(hll)
@@ -89,18 +100,22 @@ if (WITH_PYTHON)
   add_subdirectory(python)
 endif()
 
-target_link_libraries(datasketches PUBLIC hll cpc kll fi theta sampling)
+target_link_libraries(datasketches INTERFACE hll cpc kll fi theta sampling)
+
+if (COVERAGE)
+  find_program(LCOV_PATH NAMES "lcov")
+  find_program(GENHTML_PATH NAMES "genhtml")
+  if (NOT LCOV_PATH-NOTFOUND AND NOT GENHTML_PATH-NOTFOUND)
+    add_custom_target(coverage_report
+      COMMAND ${LCOV_PATH} --capture --exclude '*/test/*' --exclude '/Library/*' --exclude '/usr/include/*' --directory . --output-file lcov.info
+      COMMAND ${GENHTML_PATH} --legend lcov.info --output-directory coverage --demangle-cpp)
+    endif()
+endif()
 
-set_target_properties(datasketches PROPERTIES
-  LINKER_LANGUAGE CXX
-  CXX_STANDARD 11
-  CXX_STANDARD_REQUIRED YES
-)
 
 # # Installation
 install(TARGETS datasketches
   EXPORT ${PROJCT_NAME}
-  DESTINATION ${CMAKE_INSTALL_LIBDIR}
   PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/DataSketches
   INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/DataSketches
 )


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org