93 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| include(CheckCXXCompilerFlag)
 | |
| 
 | |
| set(UNITTEST_SOURCES
 | |
| 	allocatorstest.cpp
 | |
|     bigintegertest.cpp
 | |
|     documenttest.cpp
 | |
|     dtoatest.cpp
 | |
|     encodedstreamtest.cpp
 | |
|     encodingstest.cpp
 | |
|     fwdtest.cpp
 | |
|     filestreamtest.cpp
 | |
|     itoatest.cpp
 | |
|     istreamwrappertest.cpp
 | |
|     jsoncheckertest.cpp
 | |
|     namespacetest.cpp
 | |
|     pointertest.cpp
 | |
|     prettywritertest.cpp
 | |
|     ostreamwrappertest.cpp
 | |
|     readertest.cpp
 | |
|     regextest.cpp
 | |
| 	schematest.cpp
 | |
| 	simdtest.cpp
 | |
|     strfunctest.cpp
 | |
|     stringbuffertest.cpp
 | |
|     strtodtest.cpp
 | |
|     unittest.cpp
 | |
|     valuetest.cpp
 | |
|     writertest.cpp)
 | |
| 
 | |
| find_program(CCACHE_FOUND ccache)
 | |
| if(CCACHE_FOUND)
 | |
|     set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
 | |
|     set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
 | |
|     if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
 | |
|         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments -fcolor-diagnostics")
 | |
| 		endif()
 | |
| endif(CCACHE_FOUND)
 | |
| 
 | |
| if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
 | |
|     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wextra -Weffc++ -Wswitch-default -Wfloat-equal")
 | |
| elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
 | |
|     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wextra -Weffc++ -Wswitch-default -Wfloat-equal -Wimplicit-fallthrough -Weverything")
 | |
|     # If the user is running a newer version of Clang that includes the
 | |
|     # -Wdouble-promotion, we will ignore that warning.
 | |
|     if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 3.7)
 | |
|         CHECK_CXX_COMPILER_FLAG("-Wno-double-promotion" HAS_NO_DOUBLE_PROMOTION)
 | |
|         if (HAS_NO_DOUBLE_PROMOTION)
 | |
|             set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-double-promotion")
 | |
|         endif()
 | |
|     endif()
 | |
| elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
 | |
|     # Force to always compile with /W4
 | |
|     if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
 | |
|         string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
 | |
|     else()
 | |
|         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
 | |
|     endif()
 | |
| 
 | |
|     # Force to always compile with /WX
 | |
|     if(CMAKE_CXX_FLAGS MATCHES "/WX-")
 | |
|         string(REGEX REPLACE "/WX-" "/WX" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
 | |
|     else()
 | |
|         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
 | |
|     endif()
 | |
| endif()
 | |
| 
 | |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DRAPIDJSON_HAS_STDSTRING=1")
 | |
| 
 | |
| add_library(namespacetest STATIC namespacetest.cpp)
 | |
| 
 | |
| add_executable(unittest ${UNITTEST_SOURCES})
 | |
| target_link_libraries(unittest ${TEST_LIBRARIES} namespacetest)
 | |
| 
 | |
| add_dependencies(tests unittest)
 | |
| 
 | |
| add_test(NAME unittest
 | |
|     COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/unittest
 | |
|     WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
 | |
| 
 | |
| if(NOT MSVC)
 | |
|     # Not running SIMD.* unit test cases for Valgrind
 | |
|     add_test(NAME valgrind_unittest
 | |
|         COMMAND valgrind --leak-check=full --error-exitcode=1 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/unittest --gtest_filter=-SIMD.*
 | |
|         WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
 | |
| 
 | |
|     if(CMAKE_BUILD_TYPE STREQUAL "Debug")
 | |
|         add_test(NAME symbol_check
 | |
|         COMMAND sh -c "objdump -t -C libnamespacetest.a | grep rapidjson ; test $? -ne 0"
 | |
|         WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
 | |
|     endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
 | |
| 
 | |
| endif(NOT MSVC)
 |