2024-11-30 00:36:33 +01:00
|
|
|
cmake_minimum_required(VERSION 3.12)
|
2023-06-17 01:44:38 +02:00
|
|
|
project(platform)
|
|
|
|
|
|
|
|
### Platform-specific code
|
|
|
|
if(WIN32)
|
|
|
|
set(SOURCES_PLATFORM_SPECIFIC
|
2023-06-18 12:18:10 +02:00
|
|
|
"${CMAKE_SOURCE_DIR}/code/sys/con_log.c"
|
|
|
|
"${CMAKE_SOURCE_DIR}/code/sys/sys_autoupdater.c"
|
|
|
|
"${CMAKE_SOURCE_DIR}/code/sys/sys_main.c"
|
|
|
|
"${CMAKE_SOURCE_DIR}/code/sys/new/sys_main_new.c"
|
|
|
|
"${CMAKE_SOURCE_DIR}/code/sys/new/sys_win32_new.c"
|
|
|
|
"${CMAKE_SOURCE_DIR}/code/sys/con_win32.c"
|
|
|
|
"${CMAKE_SOURCE_DIR}/code/sys/sys_win32.c"
|
|
|
|
"${CMAKE_SOURCE_DIR}/code/sys/win_resource.rc"
|
2023-06-17 01:44:38 +02:00
|
|
|
# These are still used even they're prefixed 'win'
|
2023-06-18 12:18:10 +02:00
|
|
|
"${CMAKE_SOURCE_DIR}/code/sys/win_bounds.cpp"
|
|
|
|
"${CMAKE_SOURCE_DIR}/code/sys/win_localization.cpp"
|
2023-06-17 01:44:38 +02:00
|
|
|
)
|
|
|
|
else()
|
|
|
|
set(SOURCES_PLATFORM_SPECIFIC
|
2023-06-18 12:18:10 +02:00
|
|
|
"${CMAKE_SOURCE_DIR}/code/sys/con_log.c"
|
|
|
|
"${CMAKE_SOURCE_DIR}/code/sys/sys_autoupdater.c"
|
|
|
|
"${CMAKE_SOURCE_DIR}/code/sys/sys_main.c"
|
|
|
|
"${CMAKE_SOURCE_DIR}/code/sys/new/sys_main_new.c"
|
|
|
|
"${CMAKE_SOURCE_DIR}/code/sys/new/sys_unix_new.c"
|
|
|
|
"${CMAKE_SOURCE_DIR}/code/sys/con_tty.c"
|
|
|
|
"${CMAKE_SOURCE_DIR}/code/sys/sys_unix.c"
|
2023-06-17 01:44:38 +02:00
|
|
|
# These are still used even they're prefixed 'win'
|
2023-06-18 12:18:10 +02:00
|
|
|
"${CMAKE_SOURCE_DIR}/code/sys/win_bounds.cpp"
|
|
|
|
"${CMAKE_SOURCE_DIR}/code/sys/win_localization.cpp"
|
2023-06-17 01:44:38 +02:00
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
2024-09-20 21:31:27 +02:00
|
|
|
if (APPLE)
|
|
|
|
set(SOURCES_PLATFORM_SPECIFIC ${SOURCES_PLATFORM_SPECIFIC} "${CMAKE_SOURCE_DIR}/code/sys/sys_osx.m")
|
|
|
|
endif()
|
|
|
|
|
2025-02-23 21:30:56 +01:00
|
|
|
set(SOURCES_PLATFORM_COMMON
|
|
|
|
"${CMAKE_SOURCE_DIR}/code/sys/sys_update_checker.cpp"
|
|
|
|
)
|
|
|
|
|
2023-06-17 01:44:38 +02:00
|
|
|
add_library(syslib INTERFACE)
|
2025-02-23 21:30:56 +01:00
|
|
|
target_sources(syslib INTERFACE ${SOURCES_PLATFORM_SPECIFIC} ${SOURCES_PLATFORM_COMMON})
|
|
|
|
target_compile_features(syslib INTERFACE cxx_nullptr cxx_std_17)
|
2023-06-17 01:44:38 +02:00
|
|
|
target_compile_features(syslib INTERFACE c_variadic_macros)
|
|
|
|
target_link_libraries(syslib INTERFACE qcommon)
|
2023-06-17 02:09:50 +02:00
|
|
|
|
2025-03-04 23:48:20 +01:00
|
|
|
find_package(CURL)
|
2025-02-23 21:30:56 +01:00
|
|
|
|
2025-03-04 23:48:20 +01:00
|
|
|
if (CURL_FOUND)
|
|
|
|
target_link_libraries(syslib INTERFACE CURL::libcurl)
|
|
|
|
target_compile_definitions(syslib INTERFACE HAS_LIBCURL=1)
|
|
|
|
else()
|
|
|
|
message(WARNING "CURL is not available, update checking will not work")
|
2025-02-23 21:30:56 +01:00
|
|
|
endif()
|
|
|
|
|
2023-06-17 02:09:50 +02:00
|
|
|
if(WIN32)
|
|
|
|
target_link_libraries(syslib INTERFACE wsock32 ws2_32)
|
|
|
|
target_link_libraries(syslib INTERFACE winmm)
|
2024-11-19 21:45:49 +01:00
|
|
|
target_link_libraries(syslib INTERFACE dbghelp)
|
2023-06-17 02:09:50 +02:00
|
|
|
elseif(UNIX)
|
|
|
|
find_package(Threads)
|
|
|
|
target_link_libraries(syslib INTERFACE ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT})
|
2024-10-19 01:51:04 +03:00
|
|
|
# Check for libc
|
|
|
|
if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang")
|
|
|
|
execute_process(COMMAND ${CMAKE_C_COMPILER} -v
|
|
|
|
OUTPUT_VARIABLE COMPILER_OUTPUT
|
|
|
|
ERROR_VARIABLE COMPILER_OUTPUT
|
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
|
2025-01-08 11:27:06 +02:00
|
|
|
if(COMPILER_OUTPUT MATCHES "musl|freebsd|openbsd|netbsd")
|
2024-10-19 01:51:04 +03:00
|
|
|
target_link_libraries(syslib INTERFACE execinfo m)
|
|
|
|
else()
|
|
|
|
target_link_libraries(syslib INTERFACE m)
|
2025-02-08 04:03:19 +02:00
|
|
|
if (NOT APPLE)
|
|
|
|
# For when using GLIBC versions older than 2.34
|
|
|
|
target_link_libraries(syslib INTERFACE rt)
|
|
|
|
endif()
|
2024-10-19 01:51:04 +03:00
|
|
|
endif()
|
|
|
|
endif()
|
2023-06-17 02:09:50 +02:00
|
|
|
target_link_libraries(syslib INTERFACE stdc++)
|
2024-09-20 21:31:27 +02:00
|
|
|
endif()
|
|
|
|
|
|
|
|
if (APPLE)
|
|
|
|
find_library(COCOA_LIBRARY Cocoa)
|
|
|
|
target_link_libraries(syslib INTERFACE ${COCOA_LIBRARY})
|
|
|
|
target_link_libraries(syslib INTERFACE "-framework Foundation")
|
|
|
|
target_link_libraries(syslib INTERFACE objc)
|
|
|
|
set_target_properties(syslib PROPERTIES LINK_FLAGS "-Wl,-F/Library/Frameworks")
|
2023-06-17 02:09:50 +02:00
|
|
|
endif()
|