From 5ed9a6508ae600d447a9874ec8e4720cc41c5b7e Mon Sep 17 00:00:00 2001 From: Mariotaku Date: Thu, 16 Sep 2021 15:30:47 +0900 Subject: [PATCH] Fixed build issue with MinGW (#64) --- CMakeLists.txt | 12 ++++++++++-- enet | 2 +- src/PlatformSockets.c | 8 ++++++++ src/PlatformSockets.h | 11 +++++++++++ 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3f5e9ea..6f7422d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,8 +8,13 @@ option(USE_MBEDTLS "Use MbedTLS instead of OpenSSL" OFF) SET(CMAKE_C_STANDARD 11) +set(CMAKE_POSITION_INDEPENDENT_CODE_BACKUP ${CMAKE_POSITION_INDEPENDENT_CODE}) +set(CMAKE_POSITION_INDEPENDENT_CODE ON) +add_subdirectory(enet) +set(CMAKE_POSITION_INDEPENDENT_CODE ${CMAKE_POSITION_INDEPENDENT_CODE_BACKUP}) +unset(CMAKE_POSITION_INDEPENDENT_CODE_BACKUP) + aux_source_directory(src SRC_LIST) -aux_source_directory(enet SRC_LIST) aux_source_directory(reedsolomon SRC_LIST) # Build shared library by default, but allows user override @@ -25,9 +30,13 @@ if (BUILD_SHARED_LIBS_OVERRIDE) unset(BUILD_SHARED_LIBS_OVERRIDE) endif() +target_link_libraries(moonlight-common-c PRIVATE enet) + if(MSVC) target_compile_options(moonlight-common-c PRIVATE /W3 /wd4100 /wd4232 /wd5105 /WX) target_link_libraries(moonlight-common-c PRIVATE ws2_32.lib winmm.lib) +elseif(MINGW) + target_link_libraries(moonlight-common-c PRIVATE -lws2_32 -lwinmm) else() target_compile_options(moonlight-common-c PRIVATE -Wall -Wextra -Wno-unused-parameter -Werror) endif() @@ -64,7 +73,6 @@ endif() target_include_directories(moonlight-common-c SYSTEM PUBLIC src) target_include_directories(moonlight-common-c PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/enet/include ${CMAKE_CURRENT_SOURCE_DIR}/reedsolomon ) diff --git a/enet b/enet index 8d69c5a..9868a26 160000 --- a/enet +++ b/enet @@ -1 +1 @@ -Subproject commit 8d69c5abe4b699e7077395e01927bd102b3ba597 +Subproject commit 9868a2653f4d1b150eee92af4c3c191aaf326c49 diff --git a/src/PlatformSockets.c b/src/PlatformSockets.c index d6f5ec7..7ce989d 100644 --- a/src/PlatformSockets.c +++ b/src/PlatformSockets.c @@ -23,6 +23,10 @@ DWORD (WINAPI *pfnWlanEnumInterfaces)(HANDLE hClientHandle, PVOID pReserved, PWL VOID (WINAPI *pfnWlanFreeMemory)(PVOID pMemory); DWORD (WINAPI *pfnWlanSetInterface)(HANDLE hClientHandle, CONST GUID *pInterfaceGuid, WLAN_INTF_OPCODE OpCode, DWORD dwDataSize, CONST PVOID pData, PVOID pReserved); +#ifndef WLAN_API_MAKE_VERSION +#define WLAN_API_MAKE_VERSION(_major, _minor) (((DWORD)(_minor)) << 16 | (_major)) +#endif + #endif void addrToUrlSafeString(struct sockaddr_storage* addr, char* string) @@ -302,7 +306,11 @@ int setSocketNonBlocking(SOCKET s, bool enabled) { #elif defined(O_NONBLOCK) return fcntl(s, F_SETFL, (enabled ? O_NONBLOCK : 0) | (fcntl(s, F_GETFL) & ~O_NONBLOCK)); #elif defined(FIONBIO) +#ifdef LC_WINDOWS + u_long val = enabled ? 1 : 0; +#else int val = enabled ? 1 : 0; +#endif return ioctlsocket(s, FIONBIO, &val); #else #error Please define your platform non-blocking sockets API! diff --git a/src/PlatformSockets.h b/src/PlatformSockets.h index 605cb1e..28b7d42 100644 --- a/src/PlatformSockets.h +++ b/src/PlatformSockets.h @@ -7,7 +7,11 @@ #define WIN32_LEAN_AND_MEAN #include #include +#ifndef __MINGW32__ #include +#else +#include +#endif #define SetLastSocketError(x) WSASetLastError(x) #define LastSocketError() WSAGetLastError() @@ -23,6 +27,13 @@ #endif #define EINTR WSAEINTR +#ifdef __MINGW32__ +#undef EWOULDBLOCK +#undef EINPROGRESS +#undef ETIMEDOUT +#undef ECONNREFUSED +#endif + #define EWOULDBLOCK WSAEWOULDBLOCK #define EINPROGRESS WSAEINPROGRESS #define ETIMEDOUT WSAETIMEDOUT