diff --git a/CMake/Platforms.cmake b/CMake/Platforms.cmake index 077c75da1..370a1c4ee 100644 --- a/CMake/Platforms.cmake +++ b/CMake/Platforms.cmake @@ -1,7 +1,5 @@ if(WIN32) - set(ASAN OFF) - set(UBSAN OFF) - set(DIST ON) + include(platforms/windows) endif() if(HAIKU) diff --git a/CMake/platforms/amiga.cmake b/CMake/platforms/amiga.cmake index 07e68991a..7e8678cf0 100644 --- a/CMake/platforms/amiga.cmake +++ b/CMake/platforms/amiga.cmake @@ -17,4 +17,9 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-attributes") # `fseeko` fails to link on Amiga. add_definitions(-Dfseeko=fseek) +list(APPEND DEVILUTIONX_PLATFORM_LINK_LIBRARIES ${ZLIB_LIBRARY}) +if(NOT WARPOS) + list(APPEND DEVILUTIONX_PLATFORM_LINK_LIBRARIES -ldebug) +endif() + file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/Packaging/amiga/devilutionx.info" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}") diff --git a/CMake/platforms/haiku.cmake b/CMake/platforms/haiku.cmake index a4ee673cc..9a464e4ca 100644 --- a/CMake/platforms/haiku.cmake +++ b/CMake/platforms/haiku.cmake @@ -1,3 +1,5 @@ set(ASAN OFF) set(UBSAN OFF) set(DEVILUTIONX_STATIC_CXX_STDLIB OFF) + +list(APPEND DEVILUTIONX_PLATFORM_LINK_LIBRARIES network) diff --git a/CMake/platforms/n3ds.cmake b/CMake/platforms/n3ds.cmake index fbe9f9e52..705e4ebfd 100644 --- a/CMake/platforms/n3ds.cmake +++ b/CMake/platforms/n3ds.cmake @@ -11,14 +11,18 @@ set(LIBMPQ_FILE_BUFFER_SIZE 32768) set(USE_SDL1 ON) set(PREFILL_PLAYER_NAME ON) -#3DS libraries +# 3DS libraries and compile definitions list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/ctr") list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/ctr/modules") find_package(CITRO3D REQUIRED) -#additional compilation definitions -add_definitions(-D__3DS__) -set(MO_LANG_DIR \"romfs:/\") +list(APPEND DEVILUTIONX_PLATFORM_LINK_LIBRARIES + 3ds::citro3d + 3ds::ctrulib +) +list(APPEND DEVILUTIONX_PLATFORM_COMPILE_DEFINITIONS + __3DS__ +) #SDL video mode parameters set(SDL1_VIDEO_MODE_FLAGS SDL_DOUBLEBUF|SDL_HWSURFACE) diff --git a/CMake/platforms/vita.cmake b/CMake/platforms/vita.cmake index e9614222b..7ed0cfdaf 100644 --- a/CMake/platforms/vita.cmake +++ b/CMake/platforms/vita.cmake @@ -4,4 +4,13 @@ set(DEVILUTIONX_STATIC_CXX_STDLIB OFF) set(BUILD_TESTING OFF) set(DISABLE_ZERO_TIER ON) set(PREFILL_PLAYER_NAME ON) -add_definitions("-DMO_LANG_DIR=\"app0:/\"") + +list(APPEND DEVILUTIONX_PLATFORM_LINK_LIBRARIES + ScePower_stub + SceAppUtil_stub + SceNet_stub + SceNetCtl_stub +) +list(APPEND DEVILUTIONX_PLATFORM_COMPILE_DEFINITIONS + VITA +) diff --git a/CMake/platforms/windows.cmake b/CMake/platforms/windows.cmake new file mode 100644 index 000000000..3563cfcce --- /dev/null +++ b/CMake/platforms/windows.cmake @@ -0,0 +1,18 @@ +set(ASAN OFF) +set(UBSAN OFF) +set(DIST ON) + +list(APPEND DEVILUTIONX_PLATFORM_LINK_LIBRARIES + find_steam_game + shlwapi + wsock32 + ws2_32 + wininet +) + +if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + list(APPEND DEVILUTIONX_PLATFORM_COMPILE_OPTIONS "/W3" "/Zc:__cplusplus" "/utf-8") + list(APPEND DEVILUTIONX_PLATFORM_COMPILE_DEFINITIONS _CRT_SECURE_NO_WARNINGS) +else() + list(APPEND DEVILUTIONX_PLATFORM_COMPILE_OPTIONS $<$:-gstabs>) +endif() diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index d753733d9..74b73420b 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -275,10 +275,6 @@ target_link_libraries(libdevilutionx PUBLIC simpleini hoehrmann_utf8) -if(WIN32) - target_link_libraries(libdevilutionx PUBLIC find_steam_game) -endif() - if(NOT NONET) if(NOT DISABLE_TCP) target_link_libraries(libdevilutionx PUBLIC asio) @@ -334,27 +330,9 @@ if(NOT NONET AND NOT DISABLE_ZERO_TIER) endif() endif() -if(AMIGA) - target_link_libraries(libdevilutionx PUBLIC - ${ZLIB_LIBRARY}) - if(NOT WARPOS) - target_link_libraries(libdevilutionx PUBLIC -ldebug) - endif() -endif() - -if(VITA) - target_link_libraries(libdevilutionx PUBLIC - ScePower_stub - SceAppUtil_stub - SceNet_stub - SceNetCtl_stub - ) - target_compile_definitions(libdevilutionx PUBLIC VITA) -endif() - -if(NINTENDO_3DS) - target_link_libraries(libdevilutionx PUBLIC 3ds::citro3d 3ds::ctrulib) -endif() +target_link_libraries(libdevilutionx PUBLIC ${DEVILUTIONX_PLATFORM_LINK_LIBRARIES}) +target_compile_definitions(libdevilutionx PUBLIC ${DEVILUTIONX_PLATFORM_COMPILE_DEFINITIONS}) +target_compile_options(libdevilutionx PUBLIC ${DEVILUTIONX_PLATFORM_COMPILE_OPTIONS}) if(GPERF) target_link_libraries(libdevilutionx PUBLIC ${GPERFTOOLS_LIBRARIES}) @@ -365,17 +343,6 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") target_link_libraries(libdevilutionx PUBLIC $<${DEVILUTIONX_STATIC_CXX_STDLIB_GENEX}:-static-libgcc;-static-libstdc++>) endif() -if(WIN32) - target_link_libraries(libdevilutionx PUBLIC shlwapi wsock32 ws2_32 wininet) - - if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") - target_compile_options(libdevilutionx PUBLIC "/W3" "/Zc:__cplusplus" "/utf-8") - target_compile_definitions(libdevilutionx PUBLIC _CRT_SECURE_NO_WARNINGS) - else() - target_compile_options(libdevilutionx PUBLIC $<$:-gstabs>) - endif() -endif() - if(NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC") # Note: For Valgrind support. genex_for_option(DEBUG) @@ -393,10 +360,6 @@ if(NOT WIN32 AND NOT APPLE AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL FreeBSD) add_definitions(-D_POSIX_C_SOURCE=200809L) endif() -if(HAIKU) - target_link_libraries(libdevilutionx PUBLIC network) -endif() - if(BUILD_TESTING) if(ENABLE_CODECOVERAGE) if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") @@ -442,7 +405,6 @@ foreach( DEFAULT_AUDIO_CHANNELS DEFAULT_AUDIO_BUFFER_SIZE DEFAULT_AUDIO_RESAMPLING_QUALITY - MO_LANG_DIR SDL1_VIDEO_MODE_BPP SDL1_VIDEO_MODE_FLAGS SDL1_VIDEO_MODE_SVID_FLAGS