@@ -28,6 +28,25 @@ if(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
2828 if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.1)
2929 message (FATAL_ERROR "g++ version must be at least 5.1!" )
3030 endif ()
31+ elseif (CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
32+ include_directories (BEFORE "/opt/intel/include" )
33+ add_definitions (-D__PURE_INTEL_C99_HEADERS__)
34+ link_directories (BEFORE "/opt/intel/lib" )
35+ if ((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 17) AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19))
36+ # locate best gcc version to pass to icc-18 (gcc-8 doesn't work, for example)
37+ # Use -DICC_GCCVER=6 for example to force 'gcc-6' and 'g++-6'
38+ # Otherwise, the newest available and compatible pair will be selected
39+ find_program (ICC_GXX NAMES "g++-${ICC_GCCVER} " "g++-7" "g++-6" "g++" )
40+ get_filename_component (ICC_GXX ${ICC_GXX} NAME )
41+ find_program (ICC_GCC NAMES "gcc-${ICC_GCCVER} " "gcc-7" "gcc-6" "gcc" )
42+ get_filename_component (ICC_GCC ${ICC_GCC} NAME )
43+ set (ICC_COMPILERS "-gxx-name=${ICC_GXX} -gcc-name=${ICC_GCC} " )
44+ unset (ICC_GXX)
45+ unset (ICC_GCC)
46+ endif ()
47+ message (STATUS "Intel ICC-18 subcompiler flags: ${ICC_COMPILERS} " )
48+ set (CMAKE_CXX_FLAGS "-O3 -no-prec-div -fp-model fast=2 -std=gnu++11 ${ICC_COMPILERS} " )
49+ set (CMAKE_C_FLAGS "-O3 -no-prec-div -fp-model fast=2 -std=gnu99 ${ICC_COMPILERS} " )
3150endif ()
3251
3352set (BUILD_TYPE "Release;Debug" )
@@ -39,7 +58,11 @@ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "${BUILD_TYPE}")
3958set (XMR-STAK_COMPILE "native" CACHE STRING "select CPU compute architecture" )
4059set_property (CACHE XMR-STAK_COMPILE PROPERTY STRINGS "native;generic" )
4160if (XMR-STAK_COMPILE STREQUAL "native" )
42- if (NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
61+ if (CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
62+ # activate Intel Compiler options: optimize for current host CPU
63+ set (CMAKE_CXX_FLAGS "-xHOST ${CMAKE_CXX_FLAGS} " )
64+ set (CMAKE_C_FLAGS "-xHOST ${CMAKE_C_FLAGS} " )
65+ elseif (NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
4366 set (CMAKE_CXX_FLAGS "-march=native -mtune=native ${CMAKE_CXX_FLAGS} " )
4467 set (CMAKE_C_FLAGS "-march=native -mtune=native ${CMAKE_C_FLAGS} " )
4568 endif ()
@@ -421,7 +444,7 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
421444 add_definitions (-D_CRT_SECURE_NO_DEPRECATE)
422445 # disable min define to allow usage of std::min
423446 add_definitions (-DNOMINMAX)
424- else ( )
447+ elseif ( NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
425448 # activate sse2 and aes-ni
426449 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2 -maes" )
427450 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse2 -maes" )
@@ -442,6 +465,8 @@ if(CMAKE_LINK_STATIC)
442465 set (CMAKE_FIND_LIBRARY_SUFFIXES ".a" )
443466 if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} STREQUAL "GNU" )
444467 set (LIBS "-static-libgcc -static-libstdc++ ${LIBS} " )
468+ elseif (CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
469+ set (LIBS "-static-libgcc -static-libstdc++ -static-intel ${LIBS} " )
445470 endif ()
446471endif ()
447472
0 commit comments