diff --git a/build/CompilerAndLinker.cmake b/build/CompilerAndLinker.cmake index 2c0ac78d..0a20dddc 100644 --- a/build/CompilerAndLinker.cmake +++ b/build/CompilerAndLinker.cmake @@ -44,11 +44,20 @@ if(WIN32) list(APPEND COMPILER_DEFINES _UNICODE UNICODE) endif() +if(MINGW) + list(APPEND LINKER_SWITCHES -municode) +endif() + #--- General MSVC-like SDL options if(MSVC) list(APPEND COMPILER_SWITCHES "$<$>:/guard:cf>") list(APPEND LINKER_SWITCHES /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO) + if(WINDOWS_STORE) + list(APPEND COMPILER_SWITCHES /bigobj) + list(APPEND LINKER_SWITCHES /APPCONTAINER /MANIFEST:NO) + endif() + if((${DIRECTX_ARCH} STREQUAL "x86") OR ((CMAKE_SIZEOF_VOID_P EQUAL 4) AND (NOT (${DIRECTX_ARCH} MATCHES "^arm")))) list(APPEND LINKER_SWITCHES /SAFESEH) @@ -89,11 +98,18 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|IntelLLVM") if(MSVC AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0)) list(APPEND COMPILER_SWITCHES /ZH:SHA_256) endif() + if(WINDOWS_STORE) + list(APPEND COMPILER_DEFINES _SILENCE_CLANG_COROUTINE_MESSAGE) + endif() elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel") list(APPEND COMPILER_SWITCHES /Zc:__cplusplus /Zc:inline /fp:fast /Qdiag-disable:161) elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") list(APPEND COMPILER_SWITCHES /sdl /Zc:inline /fp:fast) + if(WINDOWS_STORE) + list(APPEND COMPILER_SWITCHES /await) + endif() + if(CMAKE_INTERPROCEDURAL_OPTIMIZATION) message(STATUS "Building using Whole Program Optimization") list(APPEND COMPILER_SWITCHES $<$>:/Gy /Gw>) @@ -153,6 +169,10 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") list(APPEND COMPILER_SWITCHES /Zc:static_assert-) endif() + if(WINDOWS_STORE AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.32)) + list(APPEND COMPILER_SWITCHES "/wd5246") + endif() + if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.35) if(CMAKE_INTERPROCEDURAL_OPTIMIZATION) list(APPEND COMPILER_SWITCHES $<$>:/Zc:checkGwOdr>)