Fix mingw-w64 build issues on windows.

This commit is contained in:
jordan
2022-12-03 17:00:44 -06:00
parent b99f5e5041
commit 87113cc88d
7 changed files with 40 additions and 15 deletions

View File

@ -8123,8 +8123,9 @@ AX_HARDEN_CC_COMPILER_FLAGS
case $host_os in case $host_os in
mingw*) mingw*)
# if mingw then link to ws2_32 for sockets # if mingw then link to ws2_32 for sockets, and crypt32
LDFLAGS="$LDFLAGS -lws2_32" LDFLAGS="$LDFLAGS -lws2_32"
LIB_ADD="$LIB_ADD -lcrypt32"
if test "$enable_shared" = "yes" if test "$enable_shared" = "yes"
then then
AC_DEFINE([WOLFSSL_DLL], [1], [Use __declspec(dllexport) when building library]) AC_DEFINE([WOLFSSL_DLL], [1], [Use __declspec(dllexport) when building library])

View File

@ -2144,7 +2144,7 @@ int wolfSSL_BIO_flush(WOLFSSL_BIO* bio)
return WOLFSSL_FAILURE; return WOLFSSL_FAILURE;
} }
b->num = sfd; b->num = (int) sfd;
b->shutdown = BIO_CLOSE; b->shutdown = BIO_CLOSE;
return WOLFSSL_SUCCESS; return WOLFSSL_SUCCESS;
} }
@ -2173,7 +2173,7 @@ int wolfSSL_BIO_flush(WOLFSSL_BIO* bio)
WOLFSSL_ENTER("wolfIO_TcpBind error"); WOLFSSL_ENTER("wolfIO_TcpBind error");
return WOLFSSL_FAILURE; return WOLFSSL_FAILURE;
} }
b->num = sfd; b->num = (int) sfd;
b->shutdown = BIO_CLOSE; b->shutdown = BIO_CLOSE;
} }
else { else {

View File

@ -165,9 +165,14 @@
#ifdef WOLFSSL_SYS_CA_CERTS #ifdef WOLFSSL_SYS_CA_CERTS
#ifdef _WIN32 #ifdef _WIN32
#include <windows.h> #include <windows.h>
#include <Wincrypt.h> #include <Wincrypt.h>
#pragma comment(lib, "crypt32")
/* mingw gcc does not support pragma comment, and the
* linking with crypt32 is handled in configure.ac */
#if !defined(__MINGW32__) && !defined(__MINGW64__)
#pragma comment(lib, "crypt32")
#endif
#endif #endif
#if defined(__APPLE__) && defined(HAVE_SECURITY_SECTRUSTSETTINGS_H) #if defined(__APPLE__) && defined(HAVE_SECURITY_SECTRUSTSETTINGS_H)

View File

@ -837,7 +837,7 @@ int wolfIO_Recv(SOCKET_T sd, char *buf, int sz, int rdFlags)
int recvd; int recvd;
recvd = (int)RECV_FUNCTION(sd, buf, sz, rdFlags); recvd = (int)RECV_FUNCTION(sd, buf, sz, rdFlags);
recvd = TranslateReturnCode(recvd, sd); recvd = TranslateReturnCode(recvd, (int) sd);
return recvd; return recvd;
} }
@ -847,7 +847,7 @@ int wolfIO_Send(SOCKET_T sd, char *buf, int sz, int wrFlags)
int sent; int sent;
sent = (int)SEND_FUNCTION(sd, buf, sz, wrFlags); sent = (int)SEND_FUNCTION(sd, buf, sz, wrFlags);
sent = TranslateReturnCode(sent, sd); sent = TranslateReturnCode(sent, (int) sd);
return sent; return sent;
} }
@ -1142,6 +1142,7 @@ int wolfIO_TcpConnect(SOCKET_T* sockfd, const char* ip, word16 port, int to_sec)
#endif #endif
{ {
WOLFSSL_MSG("bad socket fd, out of fds?"); WOLFSSL_MSG("bad socket fd, out of fds?");
*sockfd = SOCKET_INVALID;
return -1; return -1;
} }
@ -1206,7 +1207,12 @@ int wolfIO_TcpBind(SOCKET_T* sockfd, word16 port)
sin->sin_port = XHTONS(port); sin->sin_port = XHTONS(port);
*sockfd = (SOCKET_T)socket(AF_INET, SOCK_STREAM, 0); *sockfd = (SOCKET_T)socket(AF_INET, SOCK_STREAM, 0);
if (*sockfd < 0) { #ifdef USE_WINDOWS_API
if (*sockfd == SOCKET_INVALID)
#else
if (*sockfd <= SOCKET_INVALID)
#endif
{
WOLFSSL_MSG("socket failed"); WOLFSSL_MSG("socket failed");
*sockfd = SOCKET_INVALID; *sockfd = SOCKET_INVALID;
return -1; return -1;
@ -1794,7 +1800,7 @@ int EmbedOcspLookup(void* ctx, const char* url, int urlSz,
WOLFSSL_MSG("OCSP ocsp request failed"); WOLFSSL_MSG("OCSP ocsp request failed");
} }
else { else {
ret = wolfIO_HttpProcessResponseOcsp(sfd, ocspRespBuf, httpBuf, ret = wolfIO_HttpProcessResponseOcsp((int) sfd, ocspRespBuf, httpBuf,
HTTP_SCRATCH_BUFFER_SIZE, ctx); HTTP_SCRATCH_BUFFER_SIZE, ctx);
} }
if (sfd != SOCKET_INVALID) if (sfd != SOCKET_INVALID)

View File

@ -36310,8 +36310,8 @@ static int test_wolfSSL_set_options(void)
WOLFSSL_OP_NO_COMPRESSION) == WOLFSSL_OP_NO_COMPRESSION); WOLFSSL_OP_NO_COMPRESSION) == WOLFSSL_OP_NO_COMPRESSION);
#ifdef OPENSSL_EXTRA #ifdef OPENSSL_EXTRA
AssertNull((wolfSSL_clear_options(ssl, WOLFSSL_OP_NO_COMPRESSION) & AssertFalse((wolfSSL_clear_options(ssl, WOLFSSL_OP_NO_COMPRESSION) &
WOLFSSL_OP_NO_COMPRESSION)); WOLFSSL_OP_NO_COMPRESSION));
#endif #endif
#ifdef OPENSSL_EXTRA #ifdef OPENSSL_EXTRA

View File

@ -451,7 +451,12 @@ void wait_tcp_ready(func_args* args)
(void)tx_mutex_put(&args->signal->mutex); (void)tx_mutex_put(&args->signal->mutex);
#elif defined(USE_WINDOWS_API) #elif defined(USE_WINDOWS_API)
/* Give peer a moment to get running */ /* Give peer a moment to get running */
_sleep(500); #if defined(__MINGW32__) || defined(__MINGW64__)
Sleep(500);
#else
_sleep(500);
#endif
(void)args;
#else #else
(void)args; (void)args;
#endif #endif

View File

@ -358,7 +358,11 @@
#endif #endif
#ifdef USE_WINDOWS_API #ifdef USE_WINDOWS_API
typedef unsigned int SOCKET_T; #if defined(__MINGW64__)
typedef size_t SOCKET_T;
#else
typedef unsigned int SOCKET_T;
#endif
#ifndef SOCKET_INVALID #ifndef SOCKET_INVALID
#define SOCKET_INVALID INVALID_SOCKET #define SOCKET_INVALID INVALID_SOCKET
#endif #endif
@ -745,7 +749,11 @@ WOLFSSL_API void wolfSSL_SetIOWriteFlags(WOLFSSL* ssl, int flags);
#define XINET_PTON(a,b,c) inet_pton((a),(b),(c)) #define XINET_PTON(a,b,c) inet_pton((a),(b),(c))
#ifdef USE_WINDOWS_API /* Windows-friendly definition */ #ifdef USE_WINDOWS_API /* Windows-friendly definition */
#undef XINET_PTON #undef XINET_PTON
#define XINET_PTON(a,b,c) InetPton((a),(PCWSTR)(b),(c)) #if defined(__MINGW64__) && !defined(UNICODE)
#define XINET_PTON(a,b,c) InetPton((a),(b),(c))
#else
#define XINET_PTON(a,b,c) InetPton((a),(PCWSTR)(b),(c))
#endif
#endif #endif
#endif #endif