Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt5
-rw-r--r--build_files/build_environment/cmake/harvest.cmake4
-rw-r--r--build_files/build_environment/cmake/openmp.cmake3
-rw-r--r--build_files/cmake/platform/platform_apple.cmake21
-rw-r--r--intern/cycles/bvh/bvh2.h4
-rw-r--r--intern/cycles/bvh/bvh4.h4
-rw-r--r--intern/cycles/bvh/bvh8.h4
-rw-r--r--source/blender/imbuf/intern/oiio/openimageio_api.cpp1
-rw-r--r--source/creator/CMakeLists.txt7
9 files changed, 38 insertions, 15 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1813f9a15ef..4d599277fec 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1122,7 +1122,10 @@ endif()
#-----------------------------------------------------------------------------
# Configure OpenMP.
if(WITH_OPENMP)
- find_package(OpenMP)
+ if(NOT OPENMP_CUSTOM)
+ find_package(OpenMP)
+ endif()
+
if(OPENMP_FOUND)
if(NOT WITH_OPENMP_STATIC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
diff --git a/build_files/build_environment/cmake/harvest.cmake b/build_files/build_environment/cmake/harvest.cmake
index d79d91f2b90..a281eb900e3 100644
--- a/build_files/build_environment/cmake/harvest.cmake
+++ b/build_files/build_environment/cmake/harvest.cmake
@@ -131,6 +131,10 @@ harvest(lame/lib ffmpeg/lib "*.a")
harvest(clang/bin llvm/bin "clang-format")
harvest(llvm/bin llvm/bin "llvm-config")
harvest(llvm/lib llvm/lib "libLLVM*.a")
+if(APPLE)
+ harvest(openmp/lib openmp/lib "*")
+ harvest(openmp/include openmp/include "*.h")
+endif()
harvest(ogg/lib ffmpeg/lib "*.a")
harvest(openal/include openal/include "*.h")
if(UNIX AND NOT APPLE)
diff --git a/build_files/build_environment/cmake/openmp.cmake b/build_files/build_environment/cmake/openmp.cmake
index ba8e6248126..d8224020ecf 100644
--- a/build_files/build_environment/cmake/openmp.cmake
+++ b/build_files/build_environment/cmake/openmp.cmake
@@ -23,7 +23,8 @@ ExternalProject_Add(external_openmp
URL_HASH MD5=${OPENMP_HASH}
PREFIX ${BUILD_DIR}/openmp
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/openmp ${DEFAULT_CMAKE_FLAGS}
- INSTALL_DIR ${LIBDIR}/clang
+ INSTALL_COMMAND cd ${BUILD_DIR}/openmp/src/external_openmp-build && install_name_tool -id '@executable_path/../Resources/lib/libomp.dylib' runtime/src/libomp.dylib && make install
+ INSTALL_PATH ${LIBDIR}/openmp
)
add_dependencies(
diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake
index 55642b534c2..758c746625e 100644
--- a/build_files/cmake/platform/platform_apple.cmake
+++ b/build_files/cmake/platform/platform_apple.cmake
@@ -385,13 +385,22 @@ if(WITH_CYCLES_EMBREE)
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Xlinker -stack_size -Xlinker 0x100000")
endif()
+# CMake FindOpenMP doesn't know about AppleClang before 3.12, so provide custom flags.
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 reliable with gcc and not with clang
- set(WITH_OPENMP OFF)
- else() # vanilla gcc or clang_omp support OpenMP
- message(STATUS "Using special OpenMP enabled compiler !") # letting find_package(OpenMP) module work for gcc
+ if(CMAKE_C_COMPILER_ID MATCHES "AppleClang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "7.0")
+ # Use OpenMP from our precompiled libraries.
+ message(STATUS "Using ${LIBDIR}/openmp for OpenMP")
+ set(OPENMP_CUSTOM ON)
+ set(OPENMP_FOUND ON)
+ set(OpenMP_C_FLAGS "-Xclang -fopenmp -I${LIBDIR}/openmp/include")
+ set(OpenMP_CXX_FLAGS "-Xclang -fopenmp -I${LIBDIR}/openmp/include")
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${LIBDIR}/openmp/lib -lomp")
+
+ # Copy libomp.dylib to allow executables like datatoc to work.
+ execute_process(
+ COMMAND mkdir -p ${CMAKE_BINARY_DIR}/Resources/lib
+ COMMAND cp -p ${LIBDIR}/openmp/lib/libomp.dylib ${CMAKE_BINARY_DIR}/Resources/lib/libomp.dylib
+ )
endif()
endif()
diff --git a/intern/cycles/bvh/bvh2.h b/intern/cycles/bvh/bvh2.h
index f38cdf5aca9..6afa6c21796 100644
--- a/intern/cycles/bvh/bvh2.h
+++ b/intern/cycles/bvh/bvh2.h
@@ -52,7 +52,7 @@ protected:
virtual BVHNode *widen_children_nodes(const BVHNode *root) override;
/* pack */
- void pack_nodes(const BVHNode *root);
+ void pack_nodes(const BVHNode *root) override;
void pack_leaf(const BVHStackEntry& e,
const LeafNode *leaf);
@@ -81,7 +81,7 @@ protected:
uint visibility0, uint visibility1);
/* refit */
- void refit_nodes();
+ void refit_nodes() override;
void refit_node(int idx, bool leaf, BoundBox& bbox, uint& visibility);
};
diff --git a/intern/cycles/bvh/bvh4.h b/intern/cycles/bvh/bvh4.h
index 2a2a466c767..caa0e2c8182 100644
--- a/intern/cycles/bvh/bvh4.h
+++ b/intern/cycles/bvh/bvh4.h
@@ -52,7 +52,7 @@ protected:
virtual BVHNode *widen_children_nodes(const BVHNode *root) override;
/* pack */
- void pack_nodes(const BVHNode *root);
+ void pack_nodes(const BVHNode *root) override;
void pack_leaf(const BVHStackEntry& e, const LeafNode *leaf);
void pack_inner(const BVHStackEntry& e, const BVHStackEntry *en, int num);
@@ -81,7 +81,7 @@ protected:
const int num);
/* refit */
- void refit_nodes();
+ void refit_nodes() override;
void refit_node(int idx, bool leaf, BoundBox& bbox, uint& visibility);
};
diff --git a/intern/cycles/bvh/bvh8.h b/intern/cycles/bvh/bvh8.h
index 84f82538c0f..277e2f2d653 100644
--- a/intern/cycles/bvh/bvh8.h
+++ b/intern/cycles/bvh/bvh8.h
@@ -63,7 +63,7 @@ protected:
virtual BVHNode *widen_children_nodes(const BVHNode *root) override;
/* pack */
- void pack_nodes(const BVHNode *root);
+ void pack_nodes(const BVHNode *root) override;
void pack_leaf(const BVHStackEntry& e, const LeafNode *leaf);
void pack_inner(const BVHStackEntry& e, const BVHStackEntry *en, int num);
@@ -92,7 +92,7 @@ protected:
const int num);
/* refit */
- void refit_nodes();
+ void refit_nodes() override;
void refit_node(int idx, bool leaf, BoundBox& bbox, uint& visibility);
};
diff --git a/source/blender/imbuf/intern/oiio/openimageio_api.cpp b/source/blender/imbuf/intern/oiio/openimageio_api.cpp
index 34d5cccac84..7c64fdfc9df 100644
--- a/source/blender/imbuf/intern/oiio/openimageio_api.cpp
+++ b/source/blender/imbuf/intern/oiio/openimageio_api.cpp
@@ -203,7 +203,6 @@ struct ImBuf *imb_load_photoshop(const char *filename, int flags, char colorspac
struct ImBuf *ibuf = NULL;
int width, height, components;
bool is_float, is_alpha;
- TypeDesc typedesc;
int basesize;
char file_colorspace[IM_MAX_SPACE];
diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt
index c5bd0f8d88b..0e8091944bc 100644
--- a/source/creator/CMakeLists.txt
+++ b/source/creator/CMakeLists.txt
@@ -908,6 +908,13 @@ elseif(APPLE)
blender.app/Contents/
)
+ if(WITH_OPENMP AND OPENMP_CUSTOM)
+ install(
+ FILES ${LIBDIR}/openmp/lib/libomp.dylib
+ DESTINATION blender.app/Contents/Resources/lib
+ )
+ endif()
+
if(WITH_LLVM AND NOT LLVM_STATIC)
install(
FILES ${LIBDIR}/llvm/lib/libLLVM-3.4.dylib