@@ -53,6 +53,9 @@ check_struct_has_member("struct tm" tm_zone time.h HAVE_TM_TM_ZONE)
5353include (CheckLibraryExists)
5454check_library_exists(socket connect "" HAVE_SOCKET)
5555check_library_exists(nsl gethostname "" HAVE_NSL)
56+ if (HAVE_SOCKET AND HAVE_NSL)
57+ link_libraries (socket nsl)
58+ endif ()
5659
5760# Variable to track whether any of the checks have succeeded
5861set (HAVE_SENDFILE FALSE )
@@ -142,7 +145,7 @@ if(WIN32)
142145 if (HAVE_IOCP)
143146 set (FLAGS "${FLAGS} FIO_ENGINE_IOCP HAVE_IOCP" )
144147 else ()
145- message (FATAL_ERROR "No supped polling engine detected. Unable to compile facil.io." )
148+ message (WARNING "No supped polling engine detected. Unable to compile facil.io." )
146149 endif ()
147150 endif ()
148151else ()
@@ -222,6 +225,7 @@ set(FLAGS "-DFIO_LEAK_COUNTER -DFIO_FIOBJ -DFIOBJ_MALLOC")
222225# Compiler-specific flags
223226if (COMPILER_TYPE STREQUAL "MSVC" )
224227 # MSVC compiler flags
228+ add_definitions (-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE)
225229 set (COMMON_FLAGS "/W4 /EHsc" )
226230 set (RELEASE_FLAGS "${COMMON_FLAGS} /O2" )
227231 set (DEBUG_FLAGS "${COMMON_FLAGS} /Od /Zi" )
@@ -232,6 +236,10 @@ else()
232236 set (DEBUG_FLAGS "${COMMON_FLAGS} -O0 -g -DDEBUG=1" )
233237endif ()
234238
239+ if (MINGW)
240+ set (MINGW32_LIBRARY mingw32 "-mwindows" CACHE STRING "link flags for MinGW" )
241+ endif ()
242+
235243if (CMAKE_BUILD_TYPE STREQUAL "Debug" )
236244 if (COMPILER_TYPE STREQUAL "MSVC" )
237245 # Add sanitizers for MSVC (AddressSanitizer not available)
@@ -245,30 +253,38 @@ else()
245253 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${RELEASE_FLAGS} " )
246254endif ()
247255
248- if (HAVE_SOCKET AND HAVE_NSL)
249- link_libraries (socket nsl)
250- endif ()
251-
252256# Create the library target
253257if (FACIL_SHARED_BUILD)
254258 add_library (${PROJECT_NAME} SHARED ${SOURCES} )
255259 if (OpenSSL_FOUND)
256260 if (NOT WIN32 )
257261 target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads OpenSSL::SSL OpenSSL::Crypto PUBLIC ${MATH_LIBRARY} )
258262 else ()
259- target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads OpenSSL::SSL OpenSSL::Crypto ws2_32)
263+ if (MSVC )
264+ target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads OpenSSL::SSL OpenSSL::Crypto ws2_32)
265+ else ()
266+ target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads ws2_32 Sodium::Sodium PUBLIC ${MINGW32_LIBRARY} ${MATH_LIBRARY} )
267+ endif ()
260268 endif ()
261269 elseif (Sodium_FOUND)
262270 if (NOT WIN32 )
263271 target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads Sodium::Sodium PUBLIC ${MATH_LIBRARY} )
264272 else ()
265- target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads Sodium::Sodium ws2_32)
273+ if (MSVC )
274+ target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads Sodium::Sodium ws2_32)
275+ else ()
276+ target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads ws2_32 Sodium::Sodium PUBLIC ${MINGW32_LIBRARY} ${MATH_LIBRARY} )
277+ endif ()
266278 endif ()
267279 else ()
268280 if (NOT WIN32 )
269281 target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads PUBLIC ${MATH_LIBRARY} )
270282 else ()
271- target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads ws2_32)
283+ if (MSVC )
284+ target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads ws2_32)
285+ else ()
286+ target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads ws2_32 ${MINGW32_LIBRARY} ${MATH_LIBRARY} )
287+ endif ()
272288 endif ()
273289 endif ()
274290 add_library (${PROJECT_NAME} ::${PROJECT_NAME} ALIAS ${PROJECT_NAME} )
0 commit comments