@@ -62,7 +62,13 @@ if(XMR-STAK_COMPILE STREQUAL "native")
6262 # activate Intel Compiler options: optimize for current host CPU
6363 set (CMAKE_CXX_FLAGS "-xHOST ${CMAKE_CXX_FLAGS} " )
6464 set (CMAKE_C_FLAGS "-xHOST ${CMAKE_C_FLAGS} " )
65- elseif (NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
65+ elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
66+ #intentionally appending due to how MSVC collects options
67+ # this forces these three flags to override any previous
68+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Ox /GL /EHsc" )
69+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Ox /GL /EHsc" )
70+ else ()
71+ # GCC and all other compilers
6672 set (CMAKE_CXX_FLAGS "-march=native -mtune=native ${CMAKE_CXX_FLAGS} " )
6773 set (CMAKE_C_FLAGS "-march=native -mtune=native ${CMAKE_C_FLAGS} " )
6874 endif ()
@@ -165,9 +171,11 @@ if(CUDA_ENABLE)
165171 set (CLANG_BUILD_FLAGS "${CLANG_BUILD_FLAGS} --cuda-gpu-arch=sm_${CUDA_ARCH_ELEM} " )
166172 endforeach ()
167173 elseif (CUDA_COMPILER STREQUAL "nvcc" )
168- # add c++11 for cuda
169- if (NOT CMAKE_CXX_FLAGS MATCHES "-std=c\\ +\\ +11" )
170- set (CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -std=c++11" )
174+ if (NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
175+ # add c++11 for cuda, except Windows
176+ if (NOT CMAKE_CXX_FLAGS MATCHES "-std=c\\ +\\ +11" )
177+ set (CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -std=c++11" )
178+ endif ()
171179 endif ()
172180
173181 # avoid that nvcc in CUDA 8 complains about sm_20 pending removal
@@ -406,18 +414,18 @@ endif()
406414
407415# Get the current working branch
408416execute_process (
409- COMMAND git rev-parse --abbrev-ref HEAD
410- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
411- OUTPUT_VARIABLE GIT_BRANCH
412- OUTPUT_STRIP_TRAILING_WHITESPACE
417+ COMMAND git rev-parse --abbrev-ref HEAD
418+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
419+ OUTPUT_VARIABLE GIT_BRANCH
420+ OUTPUT_STRIP_TRAILING_WHITESPACE
413421)
414422
415423# Get the latest abbreviated commit hash of the working branch
416424execute_process (
417- COMMAND git log -1 --format=%h
418- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
419- OUTPUT_VARIABLE GIT_COMMIT_HASH
420- OUTPUT_STRIP_TRAILING_WHITESPACE
425+ COMMAND git log -1 --format=%h
426+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
427+ OUTPUT_VARIABLE GIT_COMMIT_HASH
428+ OUTPUT_STRIP_TRAILING_WHITESPACE
421429)
422430
423431if (NOT GIT_COMMIT_HASH STREQUAL "" )
@@ -440,6 +448,10 @@ include_directories(BEFORE .)
440448set (CMAKE_POSITION_INDEPENDENT_CODE TRUE )
441449
442450if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
451+ # optimize linking
452+ set (CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} /LTCG" )
453+ set (CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /LTCG /INCREMENTAL:NO /OPT:REF" )
454+ set (CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG /INCREMENTAL:NO /OPT:REF" )
443455 # remove warnings that f_open() is not save and f_open_s should be used
444456 add_definitions (-D_CRT_SECURE_NO_DEPRECATE)
445457 # disable min define to allow usage of std::min
@@ -604,4 +616,5 @@ if( NOT CMAKE_INSTALL_PREFIX STREQUAL PROJECT_BINARY_DIR )
604616else ()
605617 # this rule is used if the install prefix is the build directory
606618 install (CODE "MESSAGE(\" xmr-stak installed to folder 'bin'\" )" )
607- endif ()
619+ endif ()
620+ # vim: et sw=4 sts=4 ts=4:
0 commit comments