@@ -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
4748message (STATUS "############################################### rapidcsv_FilterSort :: CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} " )
4849message (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
5152rapidcsv_cmake_variables_config()
5253
@@ -71,27 +72,46 @@ message(STATUS "RAPIDCSV_STANDALONE_PROJECT=${RAPIDCSV_STANDALONE_PROJECT}")
7172# Establish the project options
7273option (RAPIDCSV_BUILD_EXAMPLES "Set to ON to build examples" ${RAPIDCSV_STANDALONE_PROJECT} )
7374option (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 )
7576option (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
7892if (RAPIDCSV_STANDALONE_PROJECT)
7993 rapidcsv_set_cxx_standard()
8094endif ()
8195
82- #message(STATUS "clang_cxx=${clang_cxx}")
96+
97+
98+
8399file (TO_NATIVE_PATH "/" _path_separator)
84100message (STATUS "The systems's path separator is '${_path_separator} '" )
85101
86- # Library
102+
103+ #[===================================================================[
104+ rapidcsv (header only) library
105+ #]===================================================================]
87106add_library (rapidcsv INTERFACE )
88107add_library (rapidcsv::rapidcsv ALIAS rapidcsv)
89108
90109fetch_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
96116if (RAPIDCSV_ENABLE_WARNINGS)
97117 rapidcsv_enable_warnings()
@@ -116,6 +136,59 @@ endif()
116136# Enable testing when requested by the user
117137message (STATUS "Build tests: ${RAPIDCSV_BUILD_TESTS} " )
118138if (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