mirror of
https://github.com/ValveSoftware/GameNetworkingSockets.git
synced 2026-05-29 16:20:34 +00:00
Ensure that we disable C++ exceptions and RTTI for both static and dynamic libraries. Also only enable LTCG for the DLL (since it makes the unlinked static library rather large). Signed-off-by: Steven Noonan <steven@valvesoftware.com>
57 lines
1.7 KiB
CMake
57 lines
1.7 KiB
CMake
macro(configure_msvc_runtime)
|
|
if(MSVC)
|
|
# Default to statically-linked runtime.
|
|
if("${MSVC_RUNTIME}" STREQUAL "")
|
|
set(MSVC_RUNTIME "static")
|
|
endif()
|
|
# Set compiler options.
|
|
set(variables
|
|
CMAKE_C_FLAGS_DEBUG
|
|
CMAKE_C_FLAGS_MINSIZEREL
|
|
CMAKE_C_FLAGS_RELEASE
|
|
CMAKE_C_FLAGS_RELWITHDEBINFO
|
|
CMAKE_CXX_FLAGS_DEBUG
|
|
CMAKE_CXX_FLAGS_MINSIZEREL
|
|
CMAKE_CXX_FLAGS_RELEASE
|
|
CMAKE_CXX_FLAGS_RELWITHDEBINFO
|
|
)
|
|
if(${MSVC_RUNTIME} STREQUAL "static")
|
|
message(STATUS "MSVC -> forcing use of statically-linked runtime.")
|
|
foreach(variable ${variables})
|
|
if(${variable} MATCHES "/MD")
|
|
string(REGEX REPLACE "/MD" "/MT" ${variable} "${${variable}}")
|
|
endif()
|
|
endforeach()
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
|
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
|
|
else()
|
|
message(STATUS "MSVC -> forcing use of dynamically-linked runtime.")
|
|
foreach(variable ${variables})
|
|
if(${variable} MATCHES "/MT")
|
|
string(REGEX REPLACE "/MT" "/MD" ${variable} "${${variable}}")
|
|
endif()
|
|
endforeach()
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
|
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
|
|
endif()
|
|
endif()
|
|
endmacro()
|
|
macro(print_default_msvc_flags)
|
|
if(MSVC)
|
|
set(variables
|
|
CMAKE_C_FLAGS_DEBUG
|
|
CMAKE_C_FLAGS_MINSIZEREL
|
|
CMAKE_C_FLAGS_RELEASE
|
|
CMAKE_C_FLAGS_RELWITHDEBINFO
|
|
CMAKE_CXX_FLAGS_DEBUG
|
|
CMAKE_CXX_FLAGS_MINSIZEREL
|
|
CMAKE_CXX_FLAGS_RELEASE
|
|
CMAKE_CXX_FLAGS_RELWITHDEBINFO
|
|
)
|
|
message(STATUS "Initial build flags:")
|
|
foreach(variable ${variables})
|
|
message(STATUS " '${variable}': ${${variable}}")
|
|
endforeach()
|
|
message(STATUS "")
|
|
endif()
|
|
endmacro() |