Fix hyper build for win32 4/head
authorJoan Touzet <wohali@apache.org>
Wed, 18 Jul 2018 15:19:11 +0000 (11:19 -0400)
committerJoan Touzet <wohali@apache.org>
Wed, 18 Jul 2018 15:19:11 +0000 (11:19 -0400)
.gitignore
c_src/hyper_carray.c
rebar.config

index 425b33e..5cc0eb6 100644 (file)
@@ -8,4 +8,9 @@ erl_crash.dump
 *.so
 *.o
 *.d
-.rebar
\ No newline at end of file
+*.dll
+*.exp
+*.lib
+*.pdb
+*.swp
+.rebar
index 896f409..1db1377 100644 (file)
@@ -55,7 +55,11 @@ struct hyper_carray {
        uint8_t *items;
 };
 
+#ifdef _WIN32
+typedef struct hyper_carray *carray_ptr;
+#else
 typedef struct hyper_carray *restrict carray_ptr;
+#endif
 
 #define HYPER_CARRAY_SIZE sizeof(struct hyper_carray)
 
@@ -84,16 +88,22 @@ static void carray_alloc(unsigned int precision, carray_ptr * arr)
        memset(*arr, 0, header_size);
        (*arr)->precision = precision;
        (*arr)->size = nitems;
-       (*arr)->items = res + header_size;
+       (*arr)->items = (uint8_t *) res + header_size;
 }
 
 /*
  * Given an hyper_carray and a valid index, set the value at that index to
  * max(current value, given value).
  */
+#ifdef _WIN32
+static void carray_merge_item(carray_ptr arr,
+                                    unsigned int index,
+                                    unsigned int value)
+#else
 static inline void carray_merge_item(carray_ptr arr,
                                     unsigned int index,
                                     unsigned int value)
+#endif
 {
        uint8_t *item = arr->items + index;
        *item = (value > *item) ? value : *item;
index 6015992..6d6df3c 100644 (file)
@@ -9,6 +9,7 @@
              ]}.
 
 {port_env, [
-            {"CC", "cc"},
-            {"CFLAGS", "$CFLAGS -std=c99 -Wall -Werror -O3"}
+            {"(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)",
+                "CFLAGS", "$CFLAGS -std=c99 -Wall -Werror -O3"},
+            {"win32", "CXXFLAGS", "$CXXFLAGS /O2 /DNDEBUG"}
            ]}.