Commit: a71a8be5cf0bd472a5629bf174e4043013a4f32b
Author: Jens Verwiebe
Date:   Mon Jun 30 13:37:00 2014 +0200
https://developer.blender.org/rBa71a8be5cf0bd472a5629bf174e4043013a4f32b

OSX/cmake: Fix T40887 by detecting if we use an Apple compiler, disable omp in 
this case

===================================================================

M       CMakeLists.txt

===================================================================

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 19d457b..a72d965 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1886,16 +1886,22 @@ elseif(APPLE)
                endif()
        endif()
        
-       if(WITH_OPENMP AND CMAKE_C_COMPILER_ID MATCHES "Clang" AND NOT 
${CMAKE_C_COMPILER_VERSION} VERSION_LESS '3.4')
-               set(OPENMP_FOUND ON)
-               set(OpenMP_C_FLAGS "-fopenmp" CACHE STRING "C compiler flags 
for OpenMP parallization" FORCE)
-               set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "C++ compiler 
flags for OpenMP parallization" FORCE)
-               include_directories(${LIBDIR}/openmp/include)
-               link_directories(${LIBDIR}/openmp/lib)
-               # XXX, BAD PRACTICE, DON'T DO THIS!!!
-               execute_process(COMMAND ditto -arch ${CMAKE_OSX_ARCHITECTURES} 
${LIBDIR}/openmp/lib/libiomp5.dylib ${CMAKE_BINARY_DIR}/bin/libiomp5.dylib) # 
for intermediate binaries, lib id is @loader_path
-       else()
-               set(WITH_OPENMP OFF)
+       if(WITH_OPENMP)
+               execute_process(COMMAND ${CMAKE_C_COMPILER} --version 
OUTPUT_VARIABLE COMPILER_VENDOR)
+               string(SUBSTRING "${COMPILER_VENDOR}" 0 5 VENDOR_NAME) # 
truncate output
+               if(${VENDOR_NAME} MATCHES "Apple") # Apple does not support 
OpenMP yet
+                       set(WITH_OPENMP OFF)
+               else() # vanilla gcc or clang_omp support OpenMP
+                       message(STATUS "Using special OpenMP enabled compiler 
!")
+                       set(OPENMP_FOUND ON)
+                       set(OpenMP_C_FLAGS "-fopenmp" CACHE STRING "C compiler 
flags for OpenMP parallization" FORCE)
+                       set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "C++ 
compiler flags for OpenMP parallization" FORCE)
+                       include_directories(${LIBDIR}/openmp/include)
+                       link_directories(${LIBDIR}/openmp/lib)
+                       # This is a workaround for our helperbinaries ( 
datatoc, masgfmt, ... ),
+                       # They are linked also to omp lib, so we need it in 
builddir for runtime exexcution, TODO: remove all unneeded dependencies from 
these
+                       execute_process(COMMAND ditto -arch 
${CMAKE_OSX_ARCHITECTURES} ${LIBDIR}/openmp/lib/libiomp5.dylib 
${CMAKE_BINARY_DIR}/bin/libiomp5.dylib) # for intermediate binaries, lib id is 
@loader_path
+               endif()
        endif()
 
        set(EXETYPE MACOSX_BUNDLE)

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to