[Bf-blender-cvs] [f1e6838376a] master: Build: Added explicit search for Blosc in CMake files. Unix build will now disable WITH_OPENVDB_BLOSC if Blosc libraries cannot be found.

Stefan Werner noreply at git.blender.org
Tue Apr 24 13:30:55 CEST 2018


Commit: f1e6838376a0a07b5ce45d70ad18357c7c6cc2eb
Author: Stefan Werner
Date:   Tue Apr 24 13:26:54 2018 +0200
Branches: master
https://developer.blender.org/rBf1e6838376a0a07b5ce45d70ad18357c7c6cc2eb

Build: Added explicit search for Blosc in CMake files. Unix build will now disable WITH_OPENVDB_BLOSC if Blosc libraries cannot be found.

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

A	build_files/cmake/Modules/FindBlosc.cmake
M	build_files/cmake/macros.cmake
M	build_files/cmake/platform/platform_unix.cmake

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

diff --git a/build_files/cmake/Modules/FindBlosc.cmake b/build_files/cmake/Modules/FindBlosc.cmake
new file mode 100644
index 00000000000..79590f11c4f
--- /dev/null
+++ b/build_files/cmake/Modules/FindBlosc.cmake
@@ -0,0 +1,72 @@
+# - Find Blosc library
+# Find the native Blosc includes and library
+# This module defines
+#  BLOSC_INCLUDE_DIRS, where to find blosc.h, Set when
+#                    Blosc is found.
+#  BLOSC_LIBRARIES, libraries to link against to use Blosc.
+#  BLOSC_ROOT_DIR, The base directory to search for Blosc.
+#                This can also be an environment variable.
+#  BLOSC_FOUND, If false, do not try to use Blosc.
+#
+# also defined, but not for general use are
+#  BLOSC_LIBRARY, where to find the Blosc library.
+
+#=============================================================================
+# Copyright 2018 Blender Foundation.
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+
+# If BLOSC_ROOT_DIR was defined in the environment, use it.
+IF(NOT BLOSC_ROOT_DIR AND NOT $ENV{BLOSC_ROOT_DIR} STREQUAL "")
+  SET(BLOSC_ROOT_DIR $ENV{BLOSC_ROOT_DIR})
+ENDIF()
+
+SET(_blosc_SEARCH_DIRS
+  ${BLOSC_ROOT_DIR}
+  /usr/local
+  /sw # Fink
+  /opt/local # DarwinPorts
+  /opt/lib/blosc
+)
+
+FIND_PATH(BLOSC_INCLUDE_DIR
+  NAMES
+    blosc.h
+  HINTS
+    ${_blosc_SEARCH_DIRS}
+  PATH_SUFFIXES
+    include
+)
+
+FIND_LIBRARY(BLOSC_LIBRARY
+  NAMES
+    blosc
+  HINTS
+    ${_blosc_SEARCH_DIRS}
+  PATH_SUFFIXES
+    lib64 lib
+  )
+
+# handle the QUIETLY and REQUIRED arguments and set BLOSC_FOUND to TRUE if
+# all listed variables are TRUE
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(BLOSC DEFAULT_MSG
+    BLOSC_LIBRARY BLOSC_INCLUDE_DIR)
+
+IF(BLOSC_FOUND)
+  SET(BLOSC_LIBRARIES ${BLOSC_LIBRARY})
+  SET(BLOSC_INCLUDE_DIRS ${BLOSC_INCLUDE_DIR})
+ELSE()
+  SET(BLOSC_BLOSC_FOUND FALSE)
+ENDIF()
+
+MARK_AS_ADVANCED(
+  BLOSC_INCLUDE_DIR
+  BLOSC_LIBRARY
+)
diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake
index 107b29e0cc8..abf8da11c8e 100644
--- a/build_files/cmake/macros.cmake
+++ b/build_files/cmake/macros.cmake
@@ -425,7 +425,7 @@ function(setup_liblinks
 			target_link_libraries(${target} ${OPENSUBDIV_LIBRARIES})
 	endif()
 	if(WITH_OPENVDB)
-		target_link_libraries(${target} ${OPENVDB_LIBRARIES} ${TBB_LIBRARIES})
+		target_link_libraries(${target} ${OPENVDB_LIBRARIES} ${TBB_LIBRARIES} ${BLOSC_LIBRARIES})
 	endif()
 	if(WITH_CYCLES_OSL)
 		target_link_libraries(${target} ${OSL_LIBRARIES})
diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake
index 6796e254c27..75222b6663f 100644
--- a/build_files/cmake/platform/platform_unix.cmake
+++ b/build_files/cmake/platform/platform_unix.cmake
@@ -237,10 +237,14 @@ endif()
 if(WITH_OPENVDB)
 	find_package_wrapper(OpenVDB)
 	find_package_wrapper(TBB)
+	find_package_wrapper(Blosc)
 	if(NOT OPENVDB_FOUND OR NOT TBB_FOUND)
 		set(WITH_OPENVDB OFF)
 		set(WITH_OPENVDB_BLOSC OFF)
 		message(STATUS "OpenVDB not found, disabling it")
+	elseif(NOT BLOSC_FOUND)
+		set(WITH_OPENVDB_BLOSC OFF)
+		message(STATUS "Blosc not found, disabling it")
 	endif()
 endif()



More information about the Bf-blender-cvs mailing list