@@ -39,7 +39,13 @@ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "${BUILD_TYPE}")
3939set (XMR-STAK_COMPILE "native" CACHE STRING "select CPU compute architecture" )
4040set_property (CACHE XMR-STAK_COMPILE PROPERTY STRINGS "native;generic" )
4141if (XMR-STAK_COMPILE STREQUAL "native" )
42- if (NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
42+ if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
43+ #intentionally appending due to how MSVC collects options
44+ # this forces these three flags to override any previous
45+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Ox /GL /EHsc" )
46+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Ox /GL /EHsc" )
47+ else ()
48+ # GCC and all other compilers
4349 set (CMAKE_CXX_FLAGS "-march=native -mtune=native ${CMAKE_CXX_FLAGS} " )
4450 set (CMAKE_C_FLAGS "-march=native -mtune=native ${CMAKE_C_FLAGS} " )
4551 endif ()
@@ -142,9 +148,11 @@ if(CUDA_ENABLE)
142148 set (CLANG_BUILD_FLAGS "${CLANG_BUILD_FLAGS} --cuda-gpu-arch=sm_${CUDA_ARCH_ELEM} " )
143149 endforeach ()
144150 elseif (CUDA_COMPILER STREQUAL "nvcc" )
145- # add c++11 for cuda
146- if (NOT CMAKE_CXX_FLAGS MATCHES "-std=c\\ +\\ +11" )
147- set (CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -std=c++11" )
151+ if (NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
152+ # add c++11 for cuda, except Windows
153+ if (NOT CMAKE_CXX_FLAGS MATCHES "-std=c\\ +\\ +11" )
154+ set (CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -std=c++11" )
155+ endif ()
148156 endif ()
149157
150158 # avoid that nvcc in CUDA 8 complains about sm_20 pending removal
@@ -383,18 +391,18 @@ endif()
383391
384392# Get the current working branch
385393execute_process (
386- COMMAND git rev-parse --abbrev-ref HEAD
387- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
388- OUTPUT_VARIABLE GIT_BRANCH
389- OUTPUT_STRIP_TRAILING_WHITESPACE
394+ COMMAND git rev-parse --abbrev-ref HEAD
395+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
396+ OUTPUT_VARIABLE GIT_BRANCH
397+ OUTPUT_STRIP_TRAILING_WHITESPACE
390398)
391399
392400# Get the latest abbreviated commit hash of the working branch
393401execute_process (
394- COMMAND git log -1 --format=%h
395- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
396- OUTPUT_VARIABLE GIT_COMMIT_HASH
397- OUTPUT_STRIP_TRAILING_WHITESPACE
402+ COMMAND git log -1 --format=%h
403+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
404+ OUTPUT_VARIABLE GIT_COMMIT_HASH
405+ OUTPUT_STRIP_TRAILING_WHITESPACE
398406)
399407
400408if (NOT GIT_COMMIT_HASH STREQUAL "" )
@@ -417,6 +425,10 @@ include_directories(BEFORE .)
417425set (CMAKE_POSITION_INDEPENDENT_CODE TRUE )
418426
419427if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
428+ # optimize linking
429+ set (CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} /LTCG" )
430+ set (CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /LTCG /INCREMENTAL:NO /OPT:REF" )
431+ set (CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG /INCREMENTAL:NO /OPT:REF" )
420432 # remove warnings that f_open() is not save and f_open_s should be used
421433 add_definitions (-D_CRT_SECURE_NO_DEPRECATE)
422434 # disable min define to allow usage of std::min
@@ -560,3 +572,4 @@ else()
560572 # this rule is used if the install prefix is the build directory
561573 install (CODE "MESSAGE(\" xmr-stak installed to folder 'bin'\" )" )
562574endif ()
575+ # vim: et sw=4 sts=4 ts=4:
0 commit comments