From 393a11ffb5ba110170b4526d944c2a2ef816e2e3 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Sun, 31 May 2020 17:23:01 -0400 Subject: [PATCH] Update CMakeLists for individual build --- CMakeLists.txt | 58 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 51 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ddf9140..4e19bed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,57 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) cmake_minimum_required(VERSION 3.10 FATAL_ERROR) # because of c++17 project(nod VERSION 0.1) - if (NOT MSVC) + + if (MSVC) + # Shaddup MSVC + add_compile_definitions(UNICODE=1 _UNICODE=1 __SSE__=1 + _CRT_SECURE_NO_WARNINGS=1 D_SCL_SECURE_NO_WARNINGS=1 + _SCL_SECURE_NO_DEPRECATE=1 _CRT_NONSTDC_NO_WARNINGS=1 + _ENABLE_EXTENDED_ALIGNED_STORAGE=1 NOMINMAX=1) + add_compile_options(/IGNORE:4221 /wd4018 /wd4800 /wd4005 /wd4311 /wd4068 + /wd4267 /wd4244 /wd4200 /wd4305 /wd4067 /wd4146 /wd4309 /wd4805 ${VS_OPTIONS}) + + add_compile_options( + # Disable exceptions + $<$:/EHsc-> + + # Disable RTTI + $<$:/GR-> + + # Enforce various standards compliant behavior. + $<$:/permissive-> + + # Enable standard volatile semantics. + $<$:/volatile:iso> + + # Reports the proper value for the __cplusplus preprocessor macro. + $<$:/Zc:__cplusplus> + + # Use latest C++ standard. + $<$:/std:c++latest> + ) + add_compile_definitions(FMT_EXCEPTIONS=0 _HAS_EXCEPTIONS=0) + + if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") + # Flags for MSVC (not clang-cl) + add_compile_options( + # Allow constexpr variables to have explicit external linkage. + $<$:/Zc:externConstexpr> + + # Assume that new throws exceptions, allowing better code generation. + $<$:/Zc:throwingNew> + + # Link-time Code Generation for Release builds + $<$,$>:/GL> + ) + + # Link-time Code Generation for Release builds + set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "/LTCG") + set(CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO "/LTCG") + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/RELEASE /LTCG /OPT:REF /OPT:ICF /INCREMENTAL:NO") + set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "/DEBUG /RELEASE /LTCG /OPT:REF /OPT:ICF /INCREMENTAL:NO /DEBUGTYPE:cv,fixup") + endif() + else() set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) endif() @@ -9,12 +59,6 @@ endif() include (CMakePackageConfigHelpers) -if (MSVC) - # Shaddup MSVC - add_definitions(-DUNICODE=1 -D_UNICODE=1 -D__SSE__=1 -D_CRT_SECURE_NO_WARNINGS=1 -DD_SCL_SECURE_NO_WARNINGS=1 - /IGNORE:4221 /wd4018 /wd4800 /wd4005 /wd4311 /wd4267 /wd4244 /wd4200 /wd4305 /wd4067 /wd4146 ${VS_DEFINES}) -endif() - if (NOT TARGET logvisor) add_subdirectory(logvisor) endif()