Skip to content

Commit a51410a

Browse files
committed
make.sh : added options memCheck, coverage, cpuProf, memProf, cppCheck.
1 parent 78aec19 commit a51410a

File tree

7 files changed

+644
-271
lines changed

7 files changed

+644
-271
lines changed

CMakeLists.txt

Lines changed: 82 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ rapidcsv_getversion(VERSION)
3333
#
3434
#]==================================================================================]
3535

36-
project(rapidcsv
36+
37+
project(converter
3738
VERSION "${VERSION}"
3839
DESCRIPTION "${PROJECT_DESCRIPTION}"
3940
HOMEPAGE_URL "${PROJECT_HOMEPAGE_URL}"
@@ -46,7 +47,7 @@ include(GNUInstallDirs)
4647

4748
message(STATUS "############################################### rapidcsv_FilterSort :: CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
4849
message(STATUS "#### OS-id=${CMAKE_SYSTEM_NAME} OS-id-version=${CMAKE_SYSTEM}")
49-
message(STATUS "#### CXX_COMPILER_ID=${CMAKE_CXX_COMPILER_ID} version=${CMAKE_CXX_COMPILER_VERSION}")
50+
message(STATUS "#### CMAKE_CXX_COMPILER_ID=${CMAKE_CXX_COMPILER_ID} version=${CMAKE_CXX_COMPILER_VERSION}")
5051

5152
rapidcsv_cmake_variables_config()
5253

@@ -71,27 +72,46 @@ message(STATUS "RAPIDCSV_STANDALONE_PROJECT=${RAPIDCSV_STANDALONE_PROJECT}")
7172
# Establish the project options
7273
option(RAPIDCSV_BUILD_EXAMPLES "Set to ON to build examples" ${RAPIDCSV_STANDALONE_PROJECT})
7374
option(RAPIDCSV_BUILD_TESTS "Set to ON to build tests" ${RAPIDCSV_STANDALONE_PROJECT})
74-
option(RAPIDCSV_ENABLE_INSTALL "Generate the install target" ${RAPIDCSV_STANDALONE_PROJECT})
75+
option(RAPIDCSV_ENABLE_INSTALL "Generate the install target" ON)
7576
option(RAPIDCSV_ENABLE_WARNINGS "Add warnings to CMAKE_CXX_FLAGS" ${RAPIDCSV_STANDALONE_PROJECT})
76-
#option(RAPIDCSV_USE_UNICODE_HELP "Use ICU Unicode library" OFF)
77+
#option(RAPIDCSV_USE_UNICODE_HELP "Use ICU Unicode library" OFF)
78+
79+
set(_DEBUG_LOG OFF)
80+
if (RAPIDCSV_STANDALONE_PROJECT AND
81+
CMAKE_BUILD_TYPE STREQUAL "Debug")
82+
set(_DEBUG_LOG ON)
83+
endif()
84+
#message(STATUS "_DEBUG_LOG=${_DEBUG_LOG}")
85+
# for _DEBUG_LOG can't use generator-expression as its computed during build-stage, but we need it during config-stage
86+
option(OPTION_RAPIDCSV_debug_log "Set to ON for debugging logs" ${_DEBUG_LOG})
87+
message(STATUS "OPTION_RAPIDCSV_debug_log=${OPTION_CONVERTER_debug_log}")
88+
#[===========[ donot use generator-expressions in option() functions
89+
# option(OPTION_RAPIDCSV_debug_log "Set to ON for debugging logs" "$<AND:$<CONFIG:Debug>,$<RAPIDCSV_STANDALONE_PROJECT>>")
90+
#]===========]
7791

7892
if (RAPIDCSV_STANDALONE_PROJECT)
7993
rapidcsv_set_cxx_standard()
8094
endif()
8195

82-
#message(STATUS "clang_cxx=${clang_cxx}")
96+
97+
98+
8399
file(TO_NATIVE_PATH "/" _path_separator)
84100
message(STATUS "The systems's path separator is '${_path_separator}'")
85101

86-
# Library
102+
103+
#[===================================================================[
104+
rapidcsv (header only) library
105+
#]===================================================================]
87106
add_library(rapidcsv INTERFACE)
88107
add_library(rapidcsv::rapidcsv ALIAS rapidcsv)
89108

90109
fetch_dependencies()
91110

92-
#if (RAPIDCSV_STANDALONE_PROJECT)
93-
rapidcsv_check_cxx_compiler_flag_file_prefix_map()
94-
#endif()
111+
112+
113+
rapidcsv_check_cxx_compiler_flag_file_prefix_map()
114+
95115

96116
if (RAPIDCSV_ENABLE_WARNINGS)
97117
rapidcsv_enable_warnings()
@@ -116,6 +136,59 @@ endif()
116136
# Enable testing when requested by the user
117137
message(STATUS "Build tests: ${RAPIDCSV_BUILD_TESTS}")
118138
if(RAPIDCSV_BUILD_TESTS)
139+
if(CMAKE_BUILD_TYPE MATCHES "MemCheck")
140+
find_program(MEMORYCHECK_COMMAND NAMES valgrind REQUIRED)
141+
142+
# Set Valgrind options for memcheck
143+
#set(CTEST_MEMORYCHECK_TYPE "Valgrind") CTEST_* is meant to be for variables defined in 'memchec.cmake' and called so -> "ctest -S memcheck.cmake ...."
144+
#set(CTEST_MEMORYCHECK_COMMAND "valgrind --log-file=MemoryChecker.%p.log")
145+
#set(CTEST_MEMORYCHECK_COMMAND_OPTIONS ...) doesn't work
146+
#set(VALGRIND_COMMAND "valgrind --log-file=memCheck.%p.log") # doesnot work
147+
#set(VALGRIND_COMMAND_OPTIONS "--leak-check=full --show-leak-kinds=all --track-origins=yes --verbose") # call before `include(CTest)
148+
149+
set(MEMORYCHECK_TYPE Valgrind)
150+
#set(MEMORYCHECK_COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tests/valgrind_wrapper_memcheck.sh")
151+
set(MEMORYCHECK_COMMAND /usr/bin/valgrind)
152+
set(MEMORYCHECK_COMMAND_OPTIONS "--tool=memcheck --leak-check=full --show-leak-kinds=all --track-origins=yes --verbose") # call before `include(CTest)
153+
#set(MEMORYCHECK_SUPPRESSIONS_FILE "${PROJECT_SOURCE_DIR}/.valgrind-suppressions") # must go before `include(CTest)`
154+
endif()
155+
156+
if(CMAKE_BUILD_TYPE MATCHES "Coverage")
157+
find_program(COVERAGE_COMMAND NAMES gcov REQUIRED)
158+
find_program(COVER_COMMAND NAMES gcovr REQUIRED)
159+
find_program(LCOV_COMMAND NAMES lcov REQUIRED)
160+
find_program(GENHTML_COMMAND NAMES genhtml REQUIRED) # genhtml gets installed along with lcov, no need to install seperately
161+
endif()
162+
163+
if(CMAKE_BUILD_TYPE MATCHES "CpuProf")
164+
find_program(CPUPROFILING_COMMAND NAMES valgrind REQUIRED)
165+
166+
set(MEMORYCHECK_TYPE Valgrind)
167+
set(MEMORYCHECK_COMMAND /usr/bin/valgrind)
168+
set(MEMORYCHECK_COMMAND_OPTIONS "--tool=callgrind --dump-instr=yes --collect-jumps=yes") # call before `include(CTest)
169+
endif()
170+
171+
if(CMAKE_BUILD_TYPE MATCHES "MemProf")
172+
find_program(MEMPROFILING_COMMAND NAMES valgrind REQUIRED)
173+
174+
set(MEMORYCHECK_TYPE Valgrind)
175+
set(MEMORYCHECK_COMMAND /usr/bin/valgrind)
176+
set(MEMORYCHECK_COMMAND_OPTIONS "--tool=massif") # call before `include(CTest)
177+
endif()
178+
179+
if(CMAKE_BUILD_TYPE MATCHES "CppCheck")
180+
find_program(CPPCHECK_COMMAND NAMES cppcheck REQUIRED)
181+
182+
set(CPPCHECK_COMMAND_OPTIONS --enable=all --inline-suppr --quiet --std=c++20 # -i/home/vishnu/repositories/rapidcsv_FilterSort/build-cppcheck-gpp/_deps/*
183+
--output-file=${PROJECT_BINARY_DIR}/cppcheck_staticAnalysis/cppcheck_output.txt
184+
--suppressions-list=${PROJECT_BINARY_DIR}/cppcheck_staticAnalysis/CppCheckSuppressions.txt)
185+
#set(CMAKE_C_CPPCHECK ${CPPCHECK_COMMAND} --std=c11 ${CPPCHECK_COMMAND_OPTIONS})
186+
set(CMAKE_CXX_CPPCHECK ${CPPCHECK_COMMAND} --std=c++20 ${CPPCHECK_COMMAND_OPTIONS})
187+
endif()
188+
189+
190+
191+
119192
enable_testing()
120193
include(CTest)
121194
# Ccache

0 commit comments

Comments
 (0)