1if(ENABLE_CJSON_TEST) 2 add_library(unity STATIC unity/src/unity.c) 3 4 # Disable -Werror for Unity 5 if (FLAG_SUPPORTED_Werror) 6 if ("${CMAKE_VERSION}" VERSION_LESS "2.8.12") 7 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error") 8 else() 9 target_compile_options(unity PRIVATE "-Wno-error") 10 endif() 11 endif() 12 # Disable -fvisibility=hidden for Unity 13 if (FLAG_SUPPORTED_fvisibilityhidden) 14 if ("${CMAKE_VERSION}" VERSION_LESS "2.8.12") 15 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=default") 16 else() 17 target_compile_options(unity PRIVATE "-fvisibility=default") 18 endif() 19 endif() 20 # Disable -fsanitize=float-divide-by-zero for Unity (GCC bug on x86 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80097) 21 if (FLAG_SUPPORTED_fsanitizefloatdividebyzero AND (CMAKE_C_COMPILER_ID STREQUAL "GNU")) 22 if ("${CMAKE_VERSION}" VERSION_LESS "2.8.12") 23 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-sanitize=float-divide-by-zero") 24 else() 25 target_compile_options(unity PRIVATE "-fno-sanitize=float-divide-by-zero") 26 endif() 27 endif() 28 # Disable -Wswitch-enum for Unity 29 if (FLAG_SUPPORTED_Wswitchenum) 30 if ("${CMAKE_VERSION}" VERSION_LESS "2.8.12") 31 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-switch-enum") 32 else() 33 target_compile_options(unity PRIVATE "-Wno-switch-enum") 34 endif() 35 endif() 36 37 #copy test files 38 file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/inputs") 39 file(GLOB test_files "inputs/*") 40 file(COPY ${test_files} DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/inputs/") 41 42 set(unity_tests 43 parse_examples 44 parse_number 45 parse_hex4 46 parse_string 47 parse_array 48 parse_object 49 parse_value 50 print_string 51 print_number 52 print_array 53 print_object 54 print_value 55 misc_tests 56 parse_with_opts 57 compare_tests 58 cjson_add 59 readme_examples 60 minify_tests 61 ) 62 63 if (ENABLE_INT64) 64 add_definitions(-DUNITY_SUPPORT_64) 65 list(APPEND unity_tests 66 misc_int64_tests 67 ) 68 endif() 69 option(ENABLE_VALGRIND OFF "Enable the valgrind memory checker for the tests.") 70 if (ENABLE_VALGRIND) 71 find_program(MEMORYCHECK_COMMAND valgrind) 72 if ("${MEMORYCHECK_COMMAND}" MATCHES "MEMORYCHECK_COMMAND-NOTFOUND") 73 message(WARNING "Valgrind couldn't be found.") 74 unset(MEMORYCHECK_COMMAND) 75 else() 76 set(MEMORYCHECK_COMMAND_OPTIONS --trace-children=yes --leak-check=full --error-exitcode=1 --suppressions=${CMAKE_CURRENT_SOURCE_DIR}/../valgrind.supp) 77 endif() 78 endif() 79 80 foreach(unity_test ${unity_tests}) 81 add_executable("${unity_test}" "${unity_test}.c") 82 if("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC") 83 target_sources(${unity_test} PRIVATE unity_setup.c) 84 endif() 85 target_link_libraries("${unity_test}" "${CJSON_LIB}" unity) 86 if(MEMORYCHECK_COMMAND) 87 add_test(NAME "${unity_test}" 88 COMMAND "${MEMORYCHECK_COMMAND}" ${MEMORYCHECK_COMMAND_OPTIONS} "${CMAKE_CURRENT_BINARY_DIR}/${unity_test}") 89 else() 90 add_test(NAME "${unity_test}" 91 COMMAND "./${unity_test}") 92 endif() 93 endforeach() 94 95 add_dependencies(check ${unity_tests}) 96 97 if (ENABLE_CJSON_UTILS) 98 #copy test files 99 file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/json-patch-tests") 100 file(GLOB test_files "json-patch-tests/*") 101 file(COPY ${test_files} DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/json-patch-tests/") 102 103 set (cjson_utils_tests 104 json_patch_tests 105 old_utils_tests 106 misc_utils_tests) 107 108 foreach (cjson_utils_test ${cjson_utils_tests}) 109 add_executable("${cjson_utils_test}" "${cjson_utils_test}.c") 110 target_link_libraries("${cjson_utils_test}" "${CJSON_LIB}" "${CJSON_UTILS_LIB}" unity) 111 if("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC") 112 target_sources(${cjson_utils_test} PRIVATE unity_setup.c) 113 endif() 114 if(MEMORYCHECK_COMMAND) 115 add_test(NAME "${cjson_utils_test}" 116 COMMAND "${MEMORYCHECK_COMMAND}" ${MEMORYCHECK_COMMAND_OPTIONS} "${CMAKE_CURRENT_BINARY_DIR}/${cjson_utils_test}") 117 else() 118 add_test(NAME "${cjson_utils_test}" 119 COMMAND "./${cjson_utils_test}") 120 endif() 121 endforeach() 122 123 add_dependencies(check ${cjson_utils_tests}) 124 endif() 125endif() 126