summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt38
1 files changed, 33 insertions, 5 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d583050..8613aab 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,6 @@
cmake_minimum_required (VERSION 3.1)
-project (ecbor LANGUAGES C)
+project (ecbor LANGUAGES C CXX)
# Version
set (VERSION_MAJOR 1)
@@ -9,11 +9,25 @@ set (VERSION_PATCH 0)
# Options
option (BUILD_DESCRIBE_TOOL "build ecbor-describe" ON)
+option (TESTING "build unit test targets" OFF)
+
+# Testing dependencies
+if (TESTING)
+ find_package(GTest)
+endif()
# Compiler setup
set (CMAKE_C_STANDARD 99)
+set (CMAKE_CXX_STANDARD 20)
+set (CMAKE_CXX_STANDARD_REQUIRED ON)
-add_compile_options (-Wall -Wextra -pedantic -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition)
+add_compile_options (
+ -Wall
+ -Wextra
+ -pedantic
+ $<$<COMPILE_LANGUAGE:C>:-Wmissing-prototypes>
+ $<$<COMPILE_LANGUAGE:C>:-Wstrict-prototypes>
+ $<$<COMPILE_LANGUAGE:C>:-Wold-style-definition>)
# Output directory setup
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/lib")
@@ -51,8 +65,8 @@ set (DESCRIBE_TOOL_SOURCES
add_library (${PROJECT_NAME}_shared SHARED ${LIB_SOURCES})
add_library (${PROJECT_NAME}_static STATIC ${LIB_SOURCES})
-set_target_properties (${PROJECT_NAME}_shared PROPERTIES OUTPUT_NAME ${PROJECT_NAME} PUBLIC_HEADER ${LIB_INCLUDES})
-set_target_properties (${PROJECT_NAME}_static PROPERTIES OUTPUT_NAME ${PROJECT_NAME} PUBLIC_HEADER ${LIB_INCLUDES})
+set_target_properties (${PROJECT_NAME}_shared PROPERTIES OUTPUT_NAME ${PROJECT_NAME} PUBLIC_HEADER ${LIB_INCLUDES} LINKER_LANGUAGE C)
+set_target_properties (${PROJECT_NAME}_static PROPERTIES OUTPUT_NAME ${PROJECT_NAME} PUBLIC_HEADER ${LIB_INCLUDES} LINKER_LANGUAGE C)
target_compile_options (${PROJECT_NAME}_static PRIVATE -nostdlib)
@@ -64,4 +78,18 @@ if (BUILD_DESCRIBE_TOOL)
add_executable (${PROJECT_NAME}-describe ${DESCRIBE_TOOL_SOURCES})
target_link_libraries (${PROJECT_NAME}-describe ${PROJECT_NAME}_shared)
install (TARGETS ${PROJECT_NAME}-describe DESTINATION bin)
-endif (BUILD_DESCRIBE_TOOL) \ No newline at end of file
+endif (BUILD_DESCRIBE_TOOL)
+
+# Test targets
+if (TESTING)
+ set (UNIT_TEST_SOURCES
+ "${SRC_DIR}/unittest/test.cpp"
+ "${SRC_DIR}/unittest/test_encoder.cpp"
+ )
+
+ # Unit tests
+ enable_testing ()
+ add_executable(unittest ${UNIT_TEST_SOURCES})
+ target_link_libraries (unittest GTest::GTest ${PROJECT_NAME}_static)
+ gtest_discover_tests (unittest)
+endif()