@@ -16,7 +16,10 @@ include_directories(".")
16
16
17
17
# default value of ${CMAKE_BUILD_TYPE} is Release
18
18
if (NOT CMAKE_BUILD_TYPE )
19
- set (CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build (Debug or Release)" FORCE )
19
+ set (CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose default type of build (Release)" FORCE )
20
+ if (WIN32 )
21
+ set (CMAKE_CONFIGURATION_TYPES "Release" CACHE STRING "Choose the type of build (Release)" FORCE )
22
+ endif ()
20
23
endif ()
21
24
22
25
option (FACIL_ENABLE_OPENSSL "Build facil.io with OpenSSL" OFF )
@@ -53,13 +56,6 @@ include(CheckLibraryExists)
53
56
check_library_exists (socket connect "" HAVE_SOCKET )
54
57
check_library_exists (nsl gethostname "" HAVE_NSL )
55
58
56
- if (HAVE_SOCKET AND HAVE_NSL )
57
- link_libraries (socket nsl )
58
- endif ()
59
- if (WIN32 )
60
- link_libraries (ws2_32 )
61
- endif ()
62
-
63
59
# Variable to track whether any of the checks have succeeded
64
60
set (HAVE_SENDFILE FALSE )
65
61
@@ -219,6 +215,11 @@ endif()
219
215
set (COMMON_FLAGS "" )
220
216
set (RELEASE_FLAGS "" )
221
217
set (DEBUG_FLAGS "" )
218
+ # Add sanitizers flags for Debug builds
219
+ set (SANITIZERS "" )
220
+
221
+ # facil-io defines
222
+ set (FLAGS "-DFIO_LEAK_COUNTER -DFIO_FIOBJ -DFIOBJ_MALLOC" )
222
223
223
224
# Compiler-specific flags
224
225
if (COMPILER_TYPE STREQUAL "MSVC" )
@@ -233,8 +234,6 @@ else()
233
234
set (DEBUG_FLAGS "${COMMON_FLAGS} -O0 -g -DDEBUG=1" )
234
235
endif ()
235
236
236
- # Add sanitizers flags for Debug builds
237
- set (SANITIZERS "" )
238
237
if (CMAKE_BUILD_TYPE STREQUAL "Debug" )
239
238
if (COMPILER_TYPE STREQUAL "MSVC" )
240
239
# Add sanitizers for MSVC (AddressSanitizer not available)
@@ -247,16 +246,32 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
247
246
else ()
248
247
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${RELEASE_FLAGS} " )
249
248
endif ()
250
- set (FLAGS "-DFIO_LEAK_COUNTER -DFIO_FIOBJ -DFIOBJ_MALLOC" )
249
+
250
+ if (HAVE_SOCKET AND HAVE_NSL )
251
+ link_libraries (socket nsl )
252
+ endif ()
253
+
251
254
# Create the library target
252
255
if (FACIL_SHARED_BUILD )
253
256
add_library (${PROJECT_NAME} SHARED ${SOURCES} )
254
257
if (OpenSSL_FOUND )
255
- target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads OpenSSL::SSL OpenSSL::Crypto )
258
+ if (NOT WIN32 )
259
+ target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads OpenSSL::SSL OpenSSL::Crypto m rt )
260
+ else ()
261
+ target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads OpenSSL::SSL OpenSSL::Crypto ws2_32 )
262
+ endif ()
256
263
elseif (Sodium_FOUND )
257
- target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads Sodium::Sodium )
264
+ if (NOT WIN32 )
265
+ target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads Sodium::Sodium m rt )
266
+ else ()
267
+ target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads Sodium::Sodium ws2_32 )
268
+ endif ()
258
269
else ()
259
- target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads )
270
+ if (NOT WIN32 )
271
+ target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads m rt )
272
+ else ()
273
+ target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads ws2_32 )
274
+ endif ()
260
275
endif ()
261
276
add_library (${PROJECT_NAME} ::${PROJECT_NAME} ALIAS ${PROJECT_NAME} )
262
277
target_link_options (${PROJECT_NAME} PRIVATE
@@ -283,14 +298,30 @@ if(FACIL_EXAMPLES_BUILD)
283
298
add_executable (${EXAMPLE_NAME} examples/${EXAMPLE_NAME}.c )
284
299
if (${EXAMPLE_NAME} STREQUAL server OR ${EXAMPLE_NAME} STREQUAL client )
285
300
if (Sodium_FOUND )
286
- target_link_libraries (${EXAMPLE_NAME} PUBLIC ${PROJECT_NAME} -static PRIVATE Threads::Threads Sodium::Sodium )
301
+ if (NOT WIN32 )
302
+ target_link_libraries (${EXAMPLE_NAME} PUBLIC ${PROJECT_NAME} -static PRIVATE Threads::Threads Sodium::Sodium m rt )
303
+ else ()
304
+ target_link_libraries (${EXAMPLE_NAME} PUBLIC ${PROJECT_NAME} -static PRIVATE Threads::Threads Sodium::Sodium )
305
+ endif ()
287
306
elseif (OpenSSL_FOUND )
288
- target_link_libraries (${EXAMPLE_NAME} PUBLIC ${PROJECT_NAME} -static PRIVATE Threads::Threads OpenSSL::SSL OpenSSL::Crypto )
307
+ if (NOT WIN32 )
308
+ target_link_libraries (${EXAMPLE_NAME} PUBLIC ${PROJECT_NAME} -static PRIVATE Threads::Threads OpenSSL::SSL OpenSSL::Crypto m rt )
309
+ else ()
310
+ target_link_libraries (${EXAMPLE_NAME} PUBLIC ${PROJECT_NAME} -static PRIVATE Threads::Threads OpenSSL::SSL OpenSSL::Crypto )
311
+ endif ()
289
312
else ()
290
- target_link_libraries (${EXAMPLE_NAME} PUBLIC ${PROJECT_NAME} -static PRIVATE Threads::Threads )
313
+ if (NOT WIN32 )
314
+ target_link_libraries (${EXAMPLE_NAME} PUBLIC ${PROJECT_NAME} -static PRIVATE Threads::Threads m rt )
315
+ else ()
316
+ target_link_libraries (${EXAMPLE_NAME} PUBLIC ${PROJECT_NAME} -static PRIVATE Threads::Threads )
317
+ endif ()
291
318
endif ()
292
319
else ()
293
- target_link_libraries (${EXAMPLE_NAME} PUBLIC ${PROJECT_NAME} -static PRIVATE Threads::Threads )
320
+ if (NOT WIN32 )
321
+ target_link_libraries (${EXAMPLE_NAME} PUBLIC ${PROJECT_NAME} -static PRIVATE Threads::Threads m rt )
322
+ else ()
323
+ target_link_libraries (${EXAMPLE_NAME} PUBLIC ${PROJECT_NAME} -static PRIVATE Threads::Threads )
324
+ endif ()
294
325
endif ()
295
326
target_compile_definitions (${EXAMPLE_NAME} PRIVATE ${FLAGS} )
296
327
add_custom_target (run_${EXAMPLE_NAME}
@@ -328,12 +359,24 @@ if(FACIL_TESTS_BUILD)
328
359
endif ()
329
360
if (${TEST_NAME} STREQUAL base64 OR ${TEST_NAME} STREQUAL stl-mutex )
330
361
if (Sodium_FOUND )
331
- target_link_libraries (${TEST_NAME} PUBLIC ${PROJECT_NAME} -static PRIVATE Threads::Threads Sodium::Sodium )
362
+ if (NOT WIN32 )
363
+ target_link_libraries (${TEST_NAME} PUBLIC ${PROJECT_NAME} -static PRIVATE Threads::Threads Sodium::Sodium m rt )
364
+ else ()
365
+ target_link_libraries (${TEST_NAME} PUBLIC ${PROJECT_NAME} -static PRIVATE Threads::Threads Sodium::Sodium )
366
+ endif ()
332
367
elseif (OpenSSL_FOUND )
333
- target_link_libraries (${TEST_NAME} PUBLIC ${PROJECT_NAME} -static PRIVATE Threads::Threads OpenSSL::SSL OpenSSL::Crypto )
368
+ if (NOT WIN32 )
369
+ target_link_libraries (${TEST_NAME} PUBLIC ${PROJECT_NAME} -static PRIVATE Threads::Threads OpenSSL::SSL OpenSSL::Crypto m rt )
370
+ else ()
371
+ target_link_libraries (${TEST_NAME} PUBLIC ${PROJECT_NAME} -static PRIVATE Threads::Threads OpenSSL::SSL OpenSSL::Crypto )
372
+ endif ()
334
373
endif ()
335
374
else ()
336
- target_link_libraries (${TEST_NAME} PUBLIC ${PROJECT_NAME} -static PRIVATE Threads::Threads )
375
+ if (NOT WIN32 )
376
+ target_link_libraries (${TEST_NAME} PUBLIC ${PROJECT_NAME} -static PRIVATE Threads::Threads m rt )
377
+ else ()
378
+ target_link_libraries (${TEST_NAME} PUBLIC ${PROJECT_NAME} -static PRIVATE Threads::Threads )
379
+ endif ()
337
380
endif ()
338
381
target_compile_definitions (${TEST_NAME} PRIVATE ${FLAGS} "-DTESTS=1" )
339
382
add_custom_target (run_${TEST_NAME}
0 commit comments