Skip to content

Commit ac49287

Browse files
authored
Merge pull request #663 from mbitsnbites/mingw-support-2
Windows: MinGW fixes and Windows Travis builders
2 parents 3af99d5 + bbbafc5 commit ac49287

File tree

6 files changed

+64
-21
lines changed

6 files changed

+64
-21
lines changed

.travis.yml

+33
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,36 @@ script:
5656
- cmake .. ${EXTRA_CMAKE_OPTS}
5757
- make VERBOSE=1
5858
- ctest -V
59+
60+
matrix:
61+
include:
62+
# Windows MinGW cross compile on Linux
63+
- os: linux
64+
dist: xenial
65+
compiler: mingw
66+
addons:
67+
apt:
68+
packages:
69+
- ninja-build
70+
- gcc-mingw-w64-x86-64
71+
- g++-mingw-w64-x86-64
72+
script:
73+
- mkdir build && cd build
74+
- CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_BUILD_WITH_INSTALL_RPATH=on
75+
- ninja -v
76+
77+
# Windows MSVC 2017
78+
- os: windows
79+
compiler: msvc
80+
env:
81+
- MATRIX_EVAL="CC=cl.exe && CXX=cl.exe"
82+
before_install:
83+
- eval "${MATRIX_EVAL}"
84+
install:
85+
- choco install ninja
86+
script:
87+
- mkdir build && cd build
88+
- cmd.exe /C '"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" amd64 &&
89+
cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release &&
90+
ninja -v'
91+
- ctest -V

async.c

+2-4
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,8 @@
3232
#include "fmacros.h"
3333
#include <stdlib.h>
3434
#include <string.h>
35-
#ifndef _WIN32
35+
#ifndef _MSC_VER
3636
#include <strings.h>
37-
#else
38-
#define strcasecmp stricmp
39-
#define strncasecmp strnicmp
4037
#endif
4138
#include <assert.h>
4239
#include <ctype.h>
@@ -46,6 +43,7 @@
4643
#include "dict.c"
4744
#include "sds.h"
4845
#include "sslio.h"
46+
#include "win32.h"
4947

5048
#define _EL_ADD_READ(ctx) \
5149
do { \

hiredis.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@
3535
#define __HIREDIS_H
3636
#include "read.h"
3737
#include <stdarg.h> /* for va_list */
38-
#ifndef _WIN32
38+
#ifndef _MSC_VER
3939
#include <sys/time.h> /* for struct timeval */
4040
#else
41-
#include <winsock2.h>
41+
struct timeval; /* forward declaration */
4242
#endif
4343
#include <stdint.h> /* uintXX_t, etc */
4444
#include "sds.h" /* for sds */

sds.h

+15-15
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
#define __SDS_H
3535

3636
#define SDS_MAX_PREALLOC (1024*1024)
37-
#ifdef _WIN32
37+
#ifdef _MSC_VER
3838
#define __attribute__(x)
3939
#endif
4040

@@ -135,20 +135,20 @@ static inline void sdssetlen(sds s, size_t newlen) {
135135
case SDS_TYPE_5:
136136
{
137137
unsigned char *fp = ((unsigned char*)s)-1;
138-
*fp = SDS_TYPE_5 | (newlen << SDS_TYPE_BITS);
138+
*fp = (unsigned char)(SDS_TYPE_5 | (newlen << SDS_TYPE_BITS));
139139
}
140140
break;
141141
case SDS_TYPE_8:
142-
SDS_HDR(8,s)->len = newlen;
142+
SDS_HDR(8,s)->len = (uint8_t)newlen;
143143
break;
144144
case SDS_TYPE_16:
145-
SDS_HDR(16,s)->len = newlen;
145+
SDS_HDR(16,s)->len = (uint16_t)newlen;
146146
break;
147147
case SDS_TYPE_32:
148-
SDS_HDR(32,s)->len = newlen;
148+
SDS_HDR(32,s)->len = (uint32_t)newlen;
149149
break;
150150
case SDS_TYPE_64:
151-
SDS_HDR(64,s)->len = newlen;
151+
SDS_HDR(64,s)->len = (uint64_t)newlen;
152152
break;
153153
}
154154
}
@@ -159,21 +159,21 @@ static inline void sdsinclen(sds s, size_t inc) {
159159
case SDS_TYPE_5:
160160
{
161161
unsigned char *fp = ((unsigned char*)s)-1;
162-
unsigned char newlen = SDS_TYPE_5_LEN(flags)+inc;
162+
unsigned char newlen = SDS_TYPE_5_LEN(flags)+(unsigned char)inc;
163163
*fp = SDS_TYPE_5 | (newlen << SDS_TYPE_BITS);
164164
}
165165
break;
166166
case SDS_TYPE_8:
167-
SDS_HDR(8,s)->len += inc;
167+
SDS_HDR(8,s)->len += (uint8_t)inc;
168168
break;
169169
case SDS_TYPE_16:
170-
SDS_HDR(16,s)->len += inc;
170+
SDS_HDR(16,s)->len += (uint16_t)inc;
171171
break;
172172
case SDS_TYPE_32:
173-
SDS_HDR(32,s)->len += inc;
173+
SDS_HDR(32,s)->len += (uint32_t)inc;
174174
break;
175175
case SDS_TYPE_64:
176-
SDS_HDR(64,s)->len += inc;
176+
SDS_HDR(64,s)->len += (uint64_t)inc;
177177
break;
178178
}
179179
}
@@ -203,16 +203,16 @@ static inline void sdssetalloc(sds s, size_t newlen) {
203203
/* Nothing to do, this type has no total allocation info. */
204204
break;
205205
case SDS_TYPE_8:
206-
SDS_HDR(8,s)->alloc = newlen;
206+
SDS_HDR(8,s)->alloc = (uint8_t)newlen;
207207
break;
208208
case SDS_TYPE_16:
209-
SDS_HDR(16,s)->alloc = newlen;
209+
SDS_HDR(16,s)->alloc = (uint16_t)newlen;
210210
break;
211211
case SDS_TYPE_32:
212-
SDS_HDR(32,s)->alloc = newlen;
212+
SDS_HDR(32,s)->alloc = (uint32_t)newlen;
213213
break;
214214
case SDS_TYPE_64:
215-
SDS_HDR(64,s)->alloc = newlen;
215+
SDS_HDR(64,s)->alloc = (uint64_t)newlen;
216216
break;
217217
}
218218
}

sockcompat.h

+2
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@
5050
#include <ws2tcpip.h>
5151
#include <stddef.h>
5252

53+
#ifdef _MSC_VER
5354
typedef signed long ssize_t;
55+
#endif
5456

5557
/* Emulate the parts of the BSD socket API that we need (override the winsock signatures). */
5658
int win32_getaddrinfo(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res);

win32.h

+10
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,20 @@
22
#define _WIN32_HELPER_INCLUDE
33
#ifdef _MSC_VER
44

5+
#include <winsock2.h> /* for struct timeval */
6+
57
#ifndef inline
68
#define inline __inline
79
#endif
810

11+
#ifndef strcasecmp
12+
#define strcasecmp stricmp
13+
#endif
14+
15+
#ifndef strncasecmp
16+
#define strncasecmp strnicmp
17+
#endif
18+
919
#ifndef va_copy
1020
#define va_copy(d,s) ((d) = (s))
1121
#endif

0 commit comments

Comments
 (0)