@@ -13,6 +13,9 @@ set(RESOURCES)
1313# Include 'bin/obj' dir since it contains _version.h
1414include_directories ("$ENV{__IntermediatesDir} " )
1515
16+ # Define path to native source link file
17+ set (NATIVE_SOURCELINK_FILE_PATH "$ENV{__IntermediatesDir} /native.sourcelink.json" )
18+
1619if (WIN32 )
1720 add_definitions (-DWIN32)
1821 add_definitions (-D_WIN32=1)
@@ -22,11 +25,9 @@ if(WIN32)
2225 endif ()
2326 add_compile_options ($<$<CONFIG:Debug>:-DDEBUG>)
2427 add_compile_options ($<$<CONFIG:Release>:-DNDEBUG>)
25- add_compile_options ($<$<CONFIG:RelWithDebInfo>:-DNDEBUG>)
2628 add_compile_options ($<$<CONFIG:Debug>:/Od>)
2729 add_compile_options ($<$<CONFIG:Debug>:/MTd>) # /MT will static link the VC runtime library, so it doesn't need to be installed on the target machine
2830 add_compile_options ($<$<CONFIG:Release>:/MT>)
29- add_compile_options ($<$<CONFIG:RelWithDebInfo>:/MT>)
3031 add_compile_options (/guard:cf)
3132 add_compile_options (/Zo) # make optimized builds debugging easier. /Zo is the newer documented flag.
3233 add_compile_options (/nologo) # Suppress Startup Banner
@@ -41,6 +42,11 @@ if(WIN32)
4142 add_compile_options (/Zc:inline)
4243 add_compile_options (/fp:precise)
4344 add_compile_options (/EHsc)
45+ add_compile_options (/Brepro)
46+ add_compile_options (/d1nodatetime)
47+ add_compile_options (/experimental:deterministic)
48+ add_compile_options (/GL)
49+ add_compile_options (/d2CastGuardFailureMode:fastfail)
4450
4551 # From here below are warnings required to be explicitly enabled.
4652 add_compile_options (/w34242)
@@ -62,27 +68,27 @@ if(WIN32)
6268 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUG /PDBCOMPRESS" )
6369 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:1572864" )
6470
65- set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /guard:cf" )
66- set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /guard:cf" )
71+ set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /guard:cf /Brepro" )
72+ set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /guard:cf /Brepro" )
73+
74+ # Enable native source link if the source link file exists
75+ if (EXISTS ${NATIVE_SOURCELINK_FILE_PATH} )
76+ set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /sourcelink:${NATIVE_SOURCELINK_FILE_PATH} " )
77+ set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /sourcelink:${NATIVE_SOURCELINK_FILE_PATH} " )
78+ endif (EXISTS ${NATIVE_SOURCELINK_FILE_PATH} )
6779
6880 # Debug build specific flags
6981 set (CMAKE_SHARED_LINKER_FLAGS_DEBUG "/NOVCFEATURE" )
7082 set (CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:vcompd.lib /DEFAULTLIB:vcomp.lib" )
7183 set (CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:vcompd.lib /DEFAULTLIB:vcomp.lib" )
7284
7385 # Release build specific flags
74- set (CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF" )
75- set (CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF" )
76- set (CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF" )
86+ set (CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF /LTCG " )
87+ set (CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF /LTCG " )
88+ set (CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF /LTCG " )
7789 set (CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /NODEFAULTLIB:libucrt.lib /DEFAULTLIB:ucrt.lib" )
7890 set (CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /NODEFAULTLIB:libucrt.lib /DEFAULTLIB:ucrt.lib" )
7991
80- # RelWithDebInfo specific flags
81- set (CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO} /DEBUG /OPT:REF /OPT:ICF" )
82- set (CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO} /DEBUG /OPT:REF /OPT:ICF" )
83- set (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /DEBUG /OPT:REF /OPT:ICF" )
84- set (CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO} /NODEFAULTLIB:libucrt.lib /DEFAULTLIB:ucrt.lib" )
85- set (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /NODEFAULTLIB:libucrt.lib /DEFAULTLIB:ucrt.lib" )
8692 list (APPEND RESOURCES $ENV{__IntermediatesDir} /NativeVersion.rc)
8793else ()
8894 add_compile_options (-Wno-unused-local-typedef)
0 commit comments