CMake: Add support for building with OpenMP support for clang on windows.
mostly minor c/cxx/linker flags, only tested with clang 9.0.0 Differential Revision: https://developer.blender.org/D5976 Reviewers: brecht, jesterking
This commit is contained in:
@@ -1209,7 +1209,9 @@ macro(openmp_delayload
|
|||||||
)
|
)
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
if(WITH_OPENMP)
|
if(WITH_OPENMP)
|
||||||
if(MSVC_VERSION EQUAL 1800)
|
if(MSVC_CLANG)
|
||||||
|
set(OPENMP_DLL_NAME "libomp")
|
||||||
|
elseif(MSVC_VERSION EQUAL 1800)
|
||||||
set(OPENMP_DLL_NAME "vcomp120")
|
set(OPENMP_DLL_NAME "vcomp120")
|
||||||
else()
|
else()
|
||||||
set(OPENMP_DLL_NAME "vcomp140")
|
set(OPENMP_DLL_NAME "vcomp140")
|
||||||
|
@@ -35,6 +35,22 @@ if(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
|||||||
else()
|
else()
|
||||||
message("Unable to detect the Visual Studio redist directory, copying of the runtime dlls will not work, try running from the visual studio developer prompt.")
|
message("Unable to detect the Visual Studio redist directory, copying of the runtime dlls will not work, try running from the visual studio developer prompt.")
|
||||||
endif()
|
endif()
|
||||||
|
# 1) CMake has issues detecting openmp support in clang-cl so we have to provide
|
||||||
|
# the right switches here.
|
||||||
|
# 2) While the /openmp switch *should* work, it currently doesn't as for clang 9.0.0
|
||||||
|
if(WITH_OPENMP)
|
||||||
|
set(OPENMP_CUSTOM ON)
|
||||||
|
set(OPENMP_FOUND ON)
|
||||||
|
set(OpenMP_C_FLAGS "/clang:-fopenmp")
|
||||||
|
set(OpenMP_CXX_FLAGS "/clang:-fopenmp")
|
||||||
|
GET_FILENAME_COMPONENT(LLVMROOT "[HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\LLVM\\LLVM;]" ABSOLUTE CACHE)
|
||||||
|
set(CLANG_OPENMP_DLL "${LLVMROOT}/bin/libomp.dll")
|
||||||
|
set(CLANG_OPENMP_LIB "${LLVMROOT}/lib/libomp.lib")
|
||||||
|
if(NOT EXISTS "${CLANG_OPENMP_DLL}")
|
||||||
|
message(FATAL_ERROR "Clang OpenMP library (${CLANG_OPENMP_DLL}) not found.")
|
||||||
|
endif()
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} \"${CLANG_OPENMP_LIB}\"")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set_property(GLOBAL PROPERTY USE_FOLDERS ${WINDOWS_USE_VISUAL_STUDIO_PROJECT_FOLDERS})
|
set_property(GLOBAL PROPERTY USE_FOLDERS ${WINDOWS_USE_VISUAL_STUDIO_PROJECT_FOLDERS})
|
||||||
|
@@ -674,6 +674,13 @@ elseif(WIN32)
|
|||||||
|
|
||||||
set(BLENDER_TEXT_FILES_DESTINATION ".")
|
set(BLENDER_TEXT_FILES_DESTINATION ".")
|
||||||
|
|
||||||
|
if(WITH_OPENMP AND MSVC_CLANG)
|
||||||
|
install(
|
||||||
|
FILES ${CLANG_OPENMP_DLL}
|
||||||
|
DESTINATION "."
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(WITH_PYTHON)
|
if(WITH_PYTHON)
|
||||||
string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
|
string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user