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:
Ray Molenkamp
2019-10-07 10:24:13 -06:00
parent fc9e921495
commit d2e4b13b9c
3 changed files with 26 additions and 1 deletions

View File

@@ -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")

View File

@@ -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})

View File

@@ -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})