@@ -25,9 +25,10 @@ option(BUILD_LIB "Build the library itself" ON)
2525option (BUILD_SHARED_LIBS "Build using shared libraries" ON )
2626option (BUILD_DOCS_API "Enable API documentation building" OFF )
2727option (BUILD_DOCS_MAN "Enable manpage building" OFF )
28- option (BUILD_TESTING "Enable building unit tests" ON )
28+ option (BUILD_UNITTEST "Enable building unit tests" ON )
2929option (TEST_MEMCHECK "Enable test runtime memory checking" ON )
30- option (TEST_COVERAGE "Enable test runtime coverage logging" ON )
30+ option (BUILD_COVERAGE "Enable runtime coverage logging and reporting" OFF )
31+ option (BUILD_FUZZING "Enable building fuzzing executables" OFF )
3132option (BUILD_PACKAGE "Enable building package outputs" OFF )
3233
3334list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR} /cmake" )
@@ -59,7 +60,7 @@ STRING(REPLACE "-" "." GIT_TAG_MOD ${GIT_TAG_MOD})
5960message (STATUS "Using version marking ${GIT_TAG_VERS} - ${GIT_TAG_MOD} " )
6061
6162project (bsl
62- LANGUAGES C
63+ LANGUAGES C CXX
6364 VERSION ${GIT_TAG_VERS}
6465)
6566
@@ -75,21 +76,19 @@ add_definitions(
7576# Generic warn/error options
7677add_compile_options (
7778 -Wall
78- -Wextra
79- -Wpedantic
80- -Werror
79+ $<$< COMPILE_LANGUAGE : C >: -Wextra >
80+ $<$< COMPILE_LANGUAGE : C >: -Wpedantic >
81+ $<$< COMPILE_LANGUAGE : C >: -Werror >
8182 -Wshadow -Wpointer-arith -Wstrict-prototypes
8283 -Wmissing-prototypes -Wredundant-decls -Wcast-align
83- -Wformat=2 -Wswitch-enum
84+ -Wformat=2
8485 -fno-strict-aliasing -Werror=format-security -fno-common
8586 -Wstrict-aliasing=2
8687 # -Wconversion
87- )
88- add_compile_options (
8988 -ffunction-sections
9089 -fdata-sections
9190 -fno-omit-frame-pointer
92- $<$<COMPILE_LANGUAGE :CXX >:-fno - exceptions >
91+ $<$<COMPILE_LANGUAGE :C >:-Wswitch - enum >
9392)
9493if (CMAKE_C_COMPILER_ID MATCHES "GNU" )
9594 set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0" )
@@ -127,7 +126,7 @@ include(CheckTypeSize)
127126check_type_size ("int" SIZE_INT LANGUAGE C )
128127check_type_size ("size_t" SIZE_SIZET LANGUAGE C )
129128
130- if (BUILD_TESTING )
129+ if (BUILD_UNITTEST )
131130 if (TEST_MEMCHECK)
132131 find_program (MEMCHECK_CMD valgrind )
133132 message (STATUS "Using valgrind memcheck for tests: ${MEMCHECK_CMD} " )
@@ -142,45 +141,46 @@ if(BUILD_TESTING)
142141 # Arguments as list into global scope for Findunitytools.cmake
143142 set (TEST_EXEC_PREFIX "${MEMCHECK_CMD} " ${MEMCHECK_OPTIONS} )
144143 endif (TEST_MEMCHECK )
145- if (TEST_COVERAGE)
146- include (CodeCoverage )
147- append_coverage_compiler_flags ()
148-
149- set (COVERAGE_EXCLUDES
150- "${CMAKE_CURRENT_SOURCE_DIR} /deps/*"
151- "${CMAKE_CURRENT_SOURCE_DIR} /testroot/*"
152- "${CMAKE_CURRENT_BINARY_DIR} /test/*"
153- )
154- set (GCOVR_ADDITIONAL_ARGS
155- )
156- setup_target_for_coverage_gcovr_xml (
157- NAME coverage-xml
158- BASE_DIRECTORY "${PROJECT_SOURCE_DIR} "
159- )
160- setup_target_for_coverage_gcovr_html (
161- NAME coverage-html
162- BASE_DIRECTORY "${PROJECT_SOURCE_DIR} "
163- )
164- endif (TEST_COVERAGE )
165-
166- include (CTest )
167- set (CMAKE_CTEST_ARGUMENTS
168- --output-junit testresults.xml
169- --output-on -failure
144+ endif (BUILD_UNITTEST )
145+ if (BUILD_FUZZING)
146+ find_package (libfuzzer )
147+ endif (BUILD_FUZZING )
148+ if (BUILD_COVERAGE)
149+ include (CodeCoverage )
150+ append_coverage_compiler_flags ()
151+
152+ set (COVERAGE_EXCLUDES
153+ "${CMAKE_CURRENT_SOURCE_DIR} /deps/*"
154+ "${CMAKE_CURRENT_SOURCE_DIR} /testroot/*"
155+ "${CMAKE_CURRENT_BINARY_DIR} /test/*"
170156 )
171- endif (BUILD_TESTING )
157+ set (GCOVR_ADDITIONAL_ARGS
158+ )
159+ setup_target_for_coverage_gcovr_xml (
160+ NAME coverage-xml
161+ BASE_DIRECTORY "${PROJECT_SOURCE_DIR} "
162+ )
163+ setup_target_for_coverage_gcovr_html (
164+ NAME coverage-html
165+ BASE_DIRECTORY "${PROJECT_SOURCE_DIR} "
166+ )
167+ endif (BUILD_COVERAGE )
168+
169+ include (CTest )
170+ set (CMAKE_CTEST_ARGUMENTS
171+ --output-junit testresults.xml
172+ --output-on -failure
173+ )
172174
173175# Install config used by tall targets
174176include (GNUInstallDirs )
175177
176178if (BUILD_LIB)
177179 add_subdirectory (src )
178180endif (BUILD_LIB )
179- if (BUILD_TESTING)
180- message (STATUS "Building tests" )
181- set (TEST_INSTALL_PREFIX "${CMAKE_INSTALL_LIBEXECDIR} /${PROJECT_NAME} " )
182- add_subdirectory (test )
183- endif (BUILD_TESTING )
181+
182+ set (TEST_INSTALL_PREFIX "${CMAKE_INSTALL_LIBEXECDIR} /${PROJECT_NAME} " )
183+ add_subdirectory (test )
184184add_subdirectory (docs )
185185
186186if (BUILD_PACKAGE)
0 commit comments