Browse Source

Enable build and test on Windows

Zach Hindes 6 years ago
parent
commit
ad2cb5b7ea
5 changed files with 18 additions and 2 deletions
  1. 2 0
      .gitattributes
  2. 2 0
      CMakeLists.txt
  3. 4 1
      tests/CMakeLists.txt
  4. 7 1
      tests/cjson_add.c
  5. 3 0
      tests/unity_setup.c

+ 2 - 0
.gitattributes

@@ -0,0 +1,2 @@
+*  					text=auto
+/tests/inputs/*	text eol=lf

+ 2 - 0
CMakeLists.txt

@@ -54,6 +54,8 @@ if (ENABLE_CUSTOM_COMPILER_FLAGS)
             /Za
             /sdl
             /W4
+            /wd4001
+            /D_CRT_SECURE_NO_WARNINGS
         )
     endif()
 endif()

+ 4 - 1
tests/CMakeLists.txt

@@ -1,5 +1,5 @@
 if(ENABLE_CJSON_TEST)
-    add_library(unity "${CJSON_LIBRARY_TYPE}" unity/src/unity.c)
+    add_library(unity STATIC unity/src/unity.c)
 
     # Disable -Werror for Unity
     if (FLAG_SUPPORTED_Werror)
@@ -72,6 +72,9 @@ if(ENABLE_CJSON_TEST)
 
     foreach(unity_test ${unity_tests})
         add_executable("${unity_test}" "${unity_test}.c")
+        if("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")
+            target_sources(${unity_test} PRIVATE unity_setup.c)
+        endif()
         target_link_libraries("${unity_test}" "${CJSON_LIB}" unity)
         if(MEMORYCHECK_COMMAND)
             add_test(NAME "${unity_test}"

+ 7 - 1
tests/cjson_add.c

@@ -34,9 +34,15 @@ static void *failing_malloc(size_t size)
     return NULL;
 }
 
+/* work around MSVC error C2322: '...' address of dillimport '...' is not static */
+static void CJSON_CDECL normal_free(void *pointer)
+{
+    free(pointer);
+}
+
 static cJSON_Hooks failing_hooks = {
     failing_malloc,
-    free
+    normal_free
 };
 
 static void cjson_add_null_should_add_null(void)

+ 3 - 0
tests/unity_setup.c

@@ -0,0 +1,3 @@
+// msvc doesn't support weak-linking, so we need to define these functions.
+void setUp(void) { }
+void tearDown(void) { }