diff options
Diffstat (limited to 'inference-engine/thirdparty/mkl-dnn/cmake/platform.cmake')
-rw-r--r-- | inference-engine/thirdparty/mkl-dnn/cmake/platform.cmake | 101 |
1 files changed, 65 insertions, 36 deletions
diff --git a/inference-engine/thirdparty/mkl-dnn/cmake/platform.cmake b/inference-engine/thirdparty/mkl-dnn/cmake/platform.cmake index 55f197ffc..3597970a2 100644 --- a/inference-engine/thirdparty/mkl-dnn/cmake/platform.cmake +++ b/inference-engine/thirdparty/mkl-dnn/cmake/platform.cmake @@ -35,78 +35,107 @@ set(DEF_ARCH_OPT_FLAGS) if(MSVC) set(USERCONFIG_PLATFORM "x64") if(${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC) - set(CMAKE_CCXX_FLAGS "${CMAKE_CCXX_FLAGS} /MP") + append(CMAKE_CCXX_FLAGS "/MP") # int -> bool - set(CMAKE_CCXX_NOWARN_FLAGS "${CMAKE_CCXX_NOWARN_FLAGS} /wd4800") + append(CMAKE_CCXX_NOWARN_FLAGS "/wd4800") # unknown pragma - set(CMAKE_CCXX_NOWARN_FLAGS "${CMAKE_CCXX_NOWARN_FLAGS} /wd4068") + append(CMAKE_CCXX_NOWARN_FLAGS "/wd4068") # double -> float - set(CMAKE_CCXX_NOWARN_FLAGS "${CMAKE_CCXX_NOWARN_FLAGS} /wd4305") + append(CMAKE_CCXX_NOWARN_FLAGS "/wd4305") # UNUSED(func) - set(CMAKE_CCXX_NOWARN_FLAGS "${CMAKE_CCXX_NOWARN_FLAGS} /wd4551") + append(CMAKE_CCXX_NOWARN_FLAGS "/wd4551") endif() if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") - set(CMAKE_CCXX_FLAGS "${CMAKE_CCXX_FLAGS} /MP") + append(CMAKE_CCXX_FLAGS "/MP") set(DEF_ARCH_OPT_FLAGS "-QxHOST") # disable: loop was not vectorized with "simd" - set(CMAKE_CCXX_NOWARN_FLAGS - "${CMAKE_CCXX_NOWARN_FLAGS} -Qdiag-disable:15552") + append(CMAKE_CCXX_NOWARN_FLAGS "-Qdiag-disable:15552") endif() if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") # Clang cannot vectorize some loops with #pragma omp simd and gets # very upset. Tell it that it's okay and that we love it - # unconditionnaly. - set(CMAKE_CCXX_NOWARN_FLAGS - "${CMAKE_CCXX_NOWARN_FLAGS} -Wno-pass-failed") + # unconditionally. + append(CMAKE_CCXX_FLAGS "-Wno-pass-failed") endif() elseif(UNIX OR MINGW) - set(CMAKE_CCXX_FLAGS "${CMAKE_CCXX_FLAGS} -Wall -Werror -Wno-unknown-pragmas") - set(CMAKE_CCXX_FLAGS "${CMAKE_CCXX_FLAGS} -fvisibility=internal") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fvisibility-inlines-hidden") + append(CMAKE_CCXX_FLAGS "-Wall -Werror -Wno-unknown-pragmas") + append(CMAKE_CCXX_FLAGS "-fvisibility=internal") + append(CMAKE_C_FLAGS "-std=c99") + append(CMAKE_CXX_FLAGS "-std=c++11 -fvisibility-inlines-hidden") # compiler specific settings if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") # Clang cannot vectorize some loops with #pragma omp simd and gets # very upset. Tell it that it's okay and that we love it - # unconditionnaly. - set(CMAKE_CCXX_NOWARN_FLAGS - "${CMAKE_CCXX_NOWARN_FLAGS} -Wno-pass-failed") + # unconditionally. + append(CMAKE_CCXX_NOWARN_FLAGS "-Wno-pass-failed") + if(MKLDNN_USE_CLANG_SANITIZER MATCHES "Memory(WithOrigin)?") + if(NOT MKLDNN_THREADING STREQUAL "SEQ") + message(WARNING "Clang OpenMP is not compatible with MSan! " + "Expect a lot of false positives!") + endif() + append(CMAKE_CCXX_SANITIZER_FLAGS "-fsanitize=memory") + if(MKLDNN_USE_CLANG_SANITIZER STREQUAL "MemoryWithOrigin") + append(CMAKE_CCXX_SANITIZER_FLAGS + "-fsanitize-memory-track-origins=2") + append(CMAKE_CCXX_SANITIZER_FLAGS + "-fno-omit-frame-pointer") + endif() + set(MKLDNN_ENABLED_CLANG_SANITIZER "${MKLDNN_USE_CLANG_SANITIZER}") + elseif(MKLDNN_USE_CLANG_SANITIZER STREQUAL "Undefined") + append(CMAKE_CCXX_SANITIZER_FLAGS "-fsanitize=undefined") + append(CMAKE_CCXX_SANITIZER_FLAGS + "-fno-sanitize=function,vptr") # work around linking problems + append(CMAKE_CCXX_SANITIZER_FLAGS "-fno-omit-frame-pointer") + set(MKLDNN_ENABLED_CLANG_SANITIZER "${MKLDNN_USE_CLANG_SANITIZER}") + elseif(MKLDNN_USE_CLANG_SANITIZER STREQUAL "Address") + append(CMAKE_CCXX_SANITIZER_FLAGS "-fsanitize=address") + set(MKLDNN_ENABLED_CLANG_SANITIZER "${MKLDNN_USE_CLANG_SANITIZER}") + elseif(MKLDNN_USE_CLANG_SANITIZER STREQUAL "Thread") + append(CMAKE_CCXX_SANITIZER_FLAGS "-fsanitize=thread") + set(MKLDNN_ENABLED_CLANG_SANITIZER "${MKLDNN_USE_CLANG_SANITIZER}") + elseif(MKLDNN_USE_CLANG_SANITIZER STREQUAL "Leak") + append(CMAKE_CCXX_SANITIZER_FLAGS "-fsanitize=leak") + set(MKLDNN_ENABLED_CLANG_SANITIZER "${MKLDNN_USE_CLANG_SANITIZER}") + elseif(NOT MKLDNN_USE_CLANG_SANITIZER STREQUAL "") + message(FATAL_ERROR + "Unsupported Clang sanitizer '${MKLDNN_USE_CLANG_SANITIZER}'") + endif() + if(MKLDNN_ENABLED_CLANG_SANITIZER) + message(STATUS + "Using Clang ${MKLDNN_ENABLED_CLANG_SANITIZER} " + "sanitizer (experimental!)") + append(CMAKE_CCXX_SANITIZER_FLAGS "-g -fno-omit-frame-pointer") + endif() elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) set(DEF_ARCH_OPT_FLAGS "-march=native -mtune=native") endif() - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.0) - # suppress warning on assumptions made regarding overflow (#146) - set(CMAKE_CCXX_NOWARN_FLAGS - "${CMAKE_CCXX_NOWARN_FLAGS} -Wno-strict-overflow") - endif() + # suppress warning on assumptions made regarding overflow (#146) + append(CMAKE_CCXX_NOWARN_FLAGS "-Wno-strict-overflow") elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") set(DEF_ARCH_OPT_FLAGS "-xHOST") # workaround for Intel Compiler 16.0 that produces error caused # by pragma omp simd collapse(..) if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "17.0") - set(CMAKE_CCXX_NOWARN_FLAGS - "${CMAKE_CCXX_NOWARN_FLAGS} -diag-disable:13379") + append(CMAKE_CCXX_NOWARN_FLAGS "-diag-disable:13379") endif() - set(CMAKE_CCXX_NOWARN_FLAGS - "${CMAKE_CCXX_NOWARN_FLAGS} -diag-disable:15552") + append(CMAKE_CCXX_NOWARN_FLAGS "-diag-disable:15552") # disable `was not vectorized: vectorization seems inefficient` remark - set(CMAKE_CCXX_NOWARN_FLAGS - "${CMAKE_CCXX_NOWARN_FLAGS} -diag-disable:15335") + append(CMAKE_CCXX_NOWARN_FLAGS "-diag-disable:15335") endif() endif() if(WIN32) - set(CTESTCONFIG_PATH "$ENV{PATH}") - string(REPLACE ";" "\;" CTESTCONFIG_PATH "${CTESTCONFIG_PATH}") + string(REPLACE ";" "\;" ENV_PATH "$ENV{PATH}") + set(CTESTCONFIG_PATH "${CTESTCONFIG_PATH}\;${MKLDLLPATH}\;${ENV_PATH}") endif() if(UNIX OR MINGW) if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") # Link Intel libraries statically (except for iomp5) - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -liomp5 -static-intel") + append(CMAKE_SHARED_LINKER_FLAGS "-liomp5 -static-intel") # Tell linker to not complain about missing static libraries - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -diag-disable:10237") + append(CMAKE_SHARED_LINKER_FLAGS "-diag-disable:10237") endif() endif() @@ -114,8 +143,8 @@ if(ARCH_OPT_FLAGS STREQUAL "HostOpts") set(ARCH_OPT_FLAGS "${DEF_ARCH_OPT_FLAGS}") endif() -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_CCXX_FLAGS} ${ARCH_OPT_FLAGS}") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CCXX_FLAGS} ${ARCH_OPT_FLAGS}") +append(CMAKE_C_FLAGS "${CMAKE_CCXX_FLAGS} ${ARCH_OPT_FLAGS}") +append(CMAKE_CXX_FLAGS "${CMAKE_CCXX_FLAGS} ${ARCH_OPT_FLAGS}") if(APPLE) set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) @@ -123,7 +152,7 @@ if(APPLE) # paths to rpath (like Intel compiler...) foreach(_ ${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}) set(_rpath "-Wl,-rpath,${_}") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${_rpath}") + append(CMAKE_SHARED_LINKER_FLAGS "${_rpath}") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${_rpath}") endforeach() endif() |