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:
Diffstat (limited to 'build_files')
-rw-r--r--build_files/build_environment/CMakeLists.txt1
-rw-r--r--build_files/build_environment/cmake/harvest.cmake4
-rw-r--r--build_files/build_environment/cmake/openvdb.cmake30
-rw-r--r--build_files/build_environment/cmake/options.cmake1
-rw-r--r--build_files/build_environment/cmake/versions.cmake12
-rw-r--r--build_files/build_environment/patches/openvdb_nanovdb.diff135
-rw-r--r--build_files/cmake/Modules/FindNanoVDB.cmake49
-rw-r--r--build_files/cmake/platform/platform_apple.cmake5
-rw-r--r--build_files/cmake/platform/platform_unix.cmake10
-rw-r--r--build_files/cmake/platform/platform_win32.cmake5
10 files changed, 246 insertions, 6 deletions
diff --git a/build_files/build_environment/CMakeLists.txt b/build_files/build_environment/CMakeLists.txt
index fa2b39fccd8..59c15a03119 100644
--- a/build_files/build_environment/CMakeLists.txt
+++ b/build_files/build_environment/CMakeLists.txt
@@ -117,7 +117,6 @@ if(WIN32)
include(cmake/yamlcpp.cmake)
# LCMS is an OCIO dep, but only if you build the apps, leaving it here for convenience
# include(cmake/lcms.cmake)
-
endif()
if(NOT WIN32 OR ENABLE_MINGW64)
diff --git a/build_files/build_environment/cmake/harvest.cmake b/build_files/build_environment/cmake/harvest.cmake
index 93e17f33284..1fb56c4d568 100644
--- a/build_files/build_environment/cmake/harvest.cmake
+++ b/build_files/build_environment/cmake/harvest.cmake
@@ -26,6 +26,7 @@ endif()
message("HARVEST_TARGET = ${HARVEST_TARGET}")
if(WIN32)
+
if(BUILD_MODE STREQUAL Release)
add_custom_target(Harvest_Release_Results
COMMAND # jpeg rename libfile + copy include
@@ -145,6 +146,9 @@ harvest(openjpeg/lib openjpeg/lib "*.a")
harvest(opensubdiv/include opensubdiv/include "*.h")
harvest(opensubdiv/lib opensubdiv/lib "*.a")
harvest(openvdb/include/openvdb openvdb/include/openvdb "*.h")
+if(WITH_NANOVDB)
+ harvest(openvdb/nanovdb nanovdb/include/nanovdb "*.h")
+endif()
harvest(openvdb/lib openvdb/lib "*.a")
harvest(xr_openxr_sdk/include/openxr xr_openxr_sdk/include/openxr "*.h")
harvest(xr_openxr_sdk/lib xr_openxr_sdk/lib "*.a")
diff --git a/build_files/build_environment/cmake/openvdb.cmake b/build_files/build_environment/cmake/openvdb.cmake
index f27d3f408a8..07d0297d5aa 100644
--- a/build_files/build_environment/cmake/openvdb.cmake
+++ b/build_files/build_environment/cmake/openvdb.cmake
@@ -54,6 +54,20 @@ set(OPENVDB_EXTRA_ARGS
-DOPENVDB_CORE_STATIC=${OPENVDB_STATIC}
-DOPENVDB_BUILD_BINARIES=Off
-DCMAKE_DEBUG_POSTFIX=_d
+ # NanoVDB is header-only, so only need the install target
+ -DNANOVDB_BUILD_UNITTESTS=OFF
+ -DNANOVDB_BUILD_EXAMPLES=OFF
+ -DNANOVDB_BUILD_BENCHMARK=OFF
+ -DNANOVDB_BUILD_DOCS=OFF
+ -DNANOVDB_BUILD_TOOLS=OFF
+ -DNANOVDB_CUDA_KEEP_PTX=OFF
+ -DNANOVDB_USE_OPENGL=OFF
+ -DNANOVDB_USE_OPENGL=OFF
+ -DNANOVDB_USE_CUDA=OFF
+ -DNANOVDB_USE_TBB=OFF
+ -DNANOVDB_USE_OPTIX=OFF
+ -DNANOVDB_USE_OPENVDB=OFF
+ -DNANOVDB_ALLOW_FETCHCONTENT=OFF
)
if(WIN32)
@@ -74,12 +88,18 @@ else()
)
endif()
+if(WITH_NANOVDB)
+ set(OPENVDB_PATCH_FILE openvdb_nanovdb.diff)
+else()
+ set(OPENVDB_PATCH_FILE openvdb.diff)
+endif()
+
ExternalProject_Add(openvdb
URL ${OPENVDB_URI}
DOWNLOAD_DIR ${DOWNLOAD_DIR}
URL_HASH MD5=${OPENVDB_HASH}
PREFIX ${BUILD_DIR}/openvdb
- PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/openvdb/src/openvdb < ${PATCH_DIR}/openvdb.diff
+ PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/openvdb/src/openvdb < ${PATCH_DIR}/${OPENVDB_PATCH_FILE}
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/openvdb ${DEFAULT_CMAKE_FLAGS} ${OPENVDB_EXTRA_ARGS}
INSTALL_DIR ${LIBDIR}/openvdb
)
@@ -96,11 +116,17 @@ add_dependencies(
if(WIN32)
if(BUILD_MODE STREQUAL Release)
ExternalProject_Add_Step(openvdb after_install
- COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/openvdb/include ${HARVEST_TARGET}/openvdb/include
+ COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/openvdb/include/openvdb ${HARVEST_TARGET}/openvdb/include/openvdb
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openvdb/lib/openvdb.lib ${HARVEST_TARGET}/openvdb/lib/openvdb.lib
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openvdb/bin/openvdb.dll ${HARVEST_TARGET}/openvdb/bin/openvdb.dll
DEPENDEES install
)
+ if(WITH_NANOVDB)
+ ExternalProject_Add_Step(openvdb nanovdb_install
+ COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/openvdb/nanovdb ${HARVEST_TARGET}/nanovdb/include/nanovdb
+ DEPENDEES after_install
+ )
+ endif()
endif()
if(BUILD_MODE STREQUAL Debug)
ExternalProject_Add_Step(openvdb after_install
diff --git a/build_files/build_environment/cmake/options.cmake b/build_files/build_environment/cmake/options.cmake
index 29e2ffc7ed8..d6b5762ccbc 100644
--- a/build_files/build_environment/cmake/options.cmake
+++ b/build_files/build_environment/cmake/options.cmake
@@ -21,6 +21,7 @@ if(WIN32)
endif()
option(WITH_WEBP "Enable building of oiio with webp support" OFF)
option(WITH_BOOST_PYTHON "Enable building of boost with python support" OFF)
+option(WITH_NANOVDB "Enable building of OpenVDB with NanoVDB included" OFF)
set(MAKE_THREADS 1 CACHE STRING "Number of threads to run make with")
if(NOT BUILD_MODE)
diff --git a/build_files/build_environment/cmake/versions.cmake b/build_files/build_environment/cmake/versions.cmake
index 48e37c93d00..244ca6dd49f 100644
--- a/build_files/build_environment/cmake/versions.cmake
+++ b/build_files/build_environment/cmake/versions.cmake
@@ -145,9 +145,15 @@ set(TBB_VERSION 2019_U9)
set(TBB_URI https://github.com/oneapi-src/oneTBB/archive/${TBB_VERSION}.tar.gz)
set(TBB_HASH 26263622e9187212ec240dcf01b66207)
-set(OPENVDB_VERSION 7.0.0)
-set(OPENVDB_URI https://github.com/dreamworksanimation/openvdb/archive/v${OPENVDB_VERSION}.tar.gz)
-set(OPENVDB_HASH fd6c4f168282f7e0e494d290cd531fa8)
+if(WITH_NANOVDB)
+ set(OPENVDB_GIT_UID e62f7a0bf1e27397223c61ddeaaf57edf111b77f)
+ set(OPENVDB_URI https://github.com/AcademySoftwareFoundation/openvdb/archive/${OPENVDB_GIT_UID}.tar.gz)
+ set(OPENVDB_HASH 90919510bc6ccd630fedc56f748cb199)
+else()
+ set(OPENVDB_VERSION 7.0.0)
+ set(OPENVDB_URI https://github.com/AcademySoftwareFoundation/openvdb/archive/v${OPENVDB_VERSION}.tar.gz)
+ set(OPENVDB_HASH fd6c4f168282f7e0e494d290cd531fa8)
+endif()
set(IDNA_VERSION 2.9)
set(CHARDET_VERSION 3.0.4)
diff --git a/build_files/build_environment/patches/openvdb_nanovdb.diff b/build_files/build_environment/patches/openvdb_nanovdb.diff
new file mode 100644
index 00000000000..50984e91f37
--- /dev/null
+++ b/build_files/build_environment/patches/openvdb_nanovdb.diff
@@ -0,0 +1,135 @@
+diff -Naur orig/cmake/FindIlmBase.cmake openvdb/cmake/FindIlmBase.cmake
+--- orig/cmake/FindIlmBase.cmake 2019-12-06 12:11:33 -0700
++++ openvdb/cmake/FindIlmBase.cmake 2020-08-12 12:48:44 -0600
+@@ -217,6 +217,8 @@
+ set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib")
+ endif()
+ list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES "${_IlmBase_Version_Suffix}.lib")
++ list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES "_s.lib")
++ list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES "_s_d.lib")
+ else()
+ if(ILMBASE_USE_STATIC_LIBS)
+ set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+diff -Naur orig/cmake/FindOpenEXR.cmake openvdb/cmake/FindOpenEXR.cmake
+--- orig/cmake/FindOpenEXR.cmake 2019-12-06 12:11:33 -0700
++++ openvdb/cmake/FindOpenEXR.cmake 2020-08-12 12:48:44 -0600
+@@ -210,6 +210,8 @@
+ set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib")
+ endif()
+ list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES "${_OpenEXR_Version_Suffix}.lib")
++ list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES "_s.lib")
++ list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES "_s_d.lib")
+ else()
+ if(OPENEXR_USE_STATIC_LIBS)
+ set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+diff -Naur orig/openvdb/openvdb/CMakeLists.txt openvdb/openvdb/openvdb/CMakeLists.txt
+--- orig/openvdb/openvdb/CMakeLists.txt 2019-12-06 12:11:33 -0700
++++ openvdb/openvdb/openvdb/CMakeLists.txt 2020-08-12 14:12:26 -0600
+@@ -105,7 +105,9 @@
+ # http://boost.2283326.n4.nabble.com/CMake-config-scripts-broken-in-1-70-td4708957.html
+ # https://github.com/boostorg/boost_install/commit/160c7cb2b2c720e74463865ef0454d4c4cd9ae7c
+ set(BUILD_SHARED_LIBS ON)
+- set(Boost_USE_STATIC_LIBS OFF)
++ if(NOT WIN32) # blender links boost statically on windows
++ set(Boost_USE_STATIC_LIBS OFF)
++ endif()
+ endif()
+
+ find_package(Boost ${MINIMUM_BOOST_VERSION} REQUIRED COMPONENTS iostreams system)
+@@ -193,6 +195,7 @@
+ if(OPENVDB_DISABLE_BOOST_IMPLICIT_LINKING)
+ add_definitions(-DBOOST_ALL_NO_LIB)
+ endif()
++ add_definitions(-D__TBB_NO_IMPLICIT_LINKAGE -DOPENVDB_OPENEXR_STATICLIB)
+ endif()
+
+ # @todo Should be target definitions
+@@ -383,7 +386,12 @@
+ # imported targets.
+
+ if(OPENVDB_CORE_SHARED)
+- add_library(openvdb_shared SHARED ${OPENVDB_LIBRARY_SOURCE_FILES})
++ if(WIN32)
++ configure_file(version.rc.in ${CMAKE_CURRENT_BINARY_DIR}/version.rc @ONLY)
++ add_library(openvdb_shared SHARED ${OPENVDB_LIBRARY_SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
++ else()
++ add_library(openvdb_shared SHARED ${OPENVDB_LIBRARY_SOURCE_FILES})
++ endif()
+ endif()
+
+ if(OPENVDB_CORE_STATIC)
+diff -Naur orig/openvdb/openvdb/version.rc.in openvdb/openvdb/openvdb/version.rc.in
+--- orig/openvdb/openvdb/version.rc.in 1969-12-31 17:00:00 -0700
++++ openvdb/openvdb/openvdb/version.rc.in 2020-08-12 14:15:01 -0600
+@@ -0,0 +1,48 @@
++#include <winver.h>
++
++#define VER_FILEVERSION @OpenVDB_MAJOR_VERSION@,@OpenVDB_MINOR_VERSION@,@OpenVDB_PATCH_VERSION@,0
++#define VER_FILEVERSION_STR "@OpenVDB_MAJOR_VERSION@.@OpenVDB_MINOR_VERSION@.@OpenVDB_PATCH_VERSION@.0\0"
++
++#define VER_PRODUCTVERSION @OpenVDB_MAJOR_VERSION@,@OpenVDB_MINOR_VERSION@,@OpenVDB_PATCH_VERSION@,0
++#define VER_PRODUCTVERSION_STR "@OpenVDB_MAJOR_VERSION@.@OpenVDB_MINOR_VERSION@\0"
++
++#ifndef DEBUG
++#define VER_DEBUG 0
++#else
++#define VER_DEBUG VS_FF_DEBUG
++#endif
++
++VS_VERSION_INFO VERSIONINFO
++FILEVERSION VER_FILEVERSION
++PRODUCTVERSION VER_PRODUCTVERSION
++FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
++FILEFLAGS (VER_DEBUG)
++FILEOS VOS__WINDOWS32
++FILETYPE VFT_DLL
++FILESUBTYPE VFT2_UNKNOWN
++BEGIN
++ BLOCK "StringFileInfo"
++ BEGIN
++ BLOCK "040904E4"
++ BEGIN
++ VALUE "FileDescription", "OpenVDB"
++ VALUE "FileVersion", VER_FILEVERSION_STR
++ VALUE "InternalName", "OpenVDB"
++ VALUE "ProductName", "OpenVDB"
++ VALUE "ProductVersion", VER_PRODUCTVERSION_STR
++ END
++ END
++
++ BLOCK "VarFileInfo"
++ BEGIN
++ /* The following line should only be modified for localized versions. */
++ /* It consists of any number of WORD,WORD pairs, with each pair */
++ /* describing a language,codepage combination supported by the file. */
++ /* */
++ /* For example, a file might have values "0x409,1252" indicating that it */
++ /* supports English language (0x409) in the Windows ANSI codepage (1252). */
++
++ VALUE "Translation", 0x409, 1252
++
++ END
++END
+diff -Naur openvdb-original/CMakeLists.txt openvdb/CMakeLists.txt
+--- openvdb-original/CMakeLists.txt 2020-08-27 03:34:02.000000000 +0200
++++ openvdb/CMakeLists.txt 2020-09-02 10:56:21.665735244 +0200
+@@ -68,6 +68,7 @@
+ option(OPENVDB_INSTALL_HOUDINI_PYTHONRC [=[Install a Houdini startup script that sets
+ the visibilty of OpenVDB nodes and their native equivalents.]=] OFF)
+ option(OPENVDB_BUILD_MAYA_PLUGIN "Build the Maya plugin" OFF)
++option(OPENVDB_BUILD_NANOVDB "Build nanovdb" ON)
+ option(OPENVDB_ENABLE_RPATH "Build with RPATH information" ON)
+ option(OPENVDB_CXX_STRICT "Enable or disable pre-defined compiler warnings" OFF)
+ option(OPENVDB_CODE_COVERAGE "Enable code coverage. This also overrides CMAKE_BUILD_TYPE to Debug" OFF)
+@@ -740,6 +741,10 @@
+ add_subdirectory(openvdb_maya)
+ endif()
+
++if(OPENVDB_BUILD_NANOVDB)
++ add_subdirectory(nanovdb)
++endif()
++
+ ##########################################################################
+
+ add_custom_target(uninstall
+ \ No newline at end of file
diff --git a/build_files/cmake/Modules/FindNanoVDB.cmake b/build_files/cmake/Modules/FindNanoVDB.cmake
new file mode 100644
index 00000000000..95d76fb39af
--- /dev/null
+++ b/build_files/cmake/Modules/FindNanoVDB.cmake
@@ -0,0 +1,49 @@
+# - Find NanoVDB library
+# Find the native NanoVDB includes and library
+# This module defines
+# NANOVDB_INCLUDE_DIRS, where to find nanovdb.h, Set when
+# NANOVDB_INCLUDE_DIR is found.
+# NANOVDB_ROOT_DIR, The base directory to search for NanoVDB.
+# This can also be an environment variable.
+# NANOVDB_FOUND, If false, do not try to use NanoVDB.
+
+#=============================================================================
+# Copyright 2020 Blender Foundation.
+#
+# Distributed under the OSI-approved BSD 3-Clause License,
+# see accompanying file BSD-3-Clause-license.txt for details.
+#=============================================================================
+
+# If NANOVDB_ROOT_DIR was defined in the environment, use it.
+IF(NOT NANOVDB_ROOT_DIR AND NOT $ENV{NANOVDB_ROOT_DIR} STREQUAL "")
+ SET(NANOVDB_ROOT_DIR $ENV{NANOVDB_ROOT_DIR})
+ENDIF()
+
+SET(_nanovdb_SEARCH_DIRS
+ ${NANOVDB_ROOT_DIR}
+)
+
+FIND_PATH(NANOVDB_INCLUDE_DIR
+ NAMES
+ nanovdb/NanoVDB.h
+ HINTS
+ ${_nanovdb_SEARCH_DIRS}
+ PATH_SUFFIXES
+ include
+)
+
+# handle the QUIETLY and REQUIRED arguments and set NANOVDB_FOUND to TRUE if
+# all listed variables are TRUE
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(NanoVDB DEFAULT_MSG
+ NANOVDB_INCLUDE_DIR)
+
+IF(NANOVDB_FOUND)
+ SET(NANOVDB_INCLUDE_DIRS ${NANOVDB_INCLUDE_DIR})
+ENDIF(NANOVDB_FOUND)
+
+MARK_AS_ADVANCED(
+ NANOVDB_INCLUDE_DIR
+)
+
+UNSET(_nanovdb_SEARCH_DIRS)
diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake
index 394eac8d0d8..07b3e53de5c 100644
--- a/build_files/cmake/platform/platform_apple.cmake
+++ b/build_files/cmake/platform/platform_apple.cmake
@@ -323,6 +323,11 @@ if(WITH_OPENVDB)
set(OPENVDB_DEFINITIONS)
endif()
+if(WITH_NANOVDB)
+ set(NANOVDB ${LIBDIR}/nanovdb)
+ set(NANOVDB_INCLUDE_DIR ${NANOVDB}/include)
+endif()
+
if(WITH_LLVM)
set(LLVM_ROOT_DIR ${LIBDIR}/llvm)
if(EXISTS "${LLVM_ROOT_DIR}/bin/llvm-config")
diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake
index 58de3b34961..1aa96c8b842 100644
--- a/build_files/cmake/platform/platform_unix.cmake
+++ b/build_files/cmake/platform/platform_unix.cmake
@@ -264,6 +264,7 @@ endif()
if(WITH_OPENVDB)
find_package_wrapper(OpenVDB)
find_package_wrapper(Blosc)
+
if(NOT OPENVDB_FOUND)
set(WITH_OPENVDB OFF)
set(WITH_OPENVDB_BLOSC OFF)
@@ -274,6 +275,15 @@ if(WITH_OPENVDB)
endif()
endif()
+if(WITH_NANOVDB)
+ find_package_wrapper(NanoVDB)
+
+ if(NOT NANOVDB_FOUND)
+ set(WITH_NANOVDB OFF)
+ message(STATUS "NanoVDB not found, disabling it")
+ endif()
+endif()
+
if(WITH_ALEMBIC)
find_package_wrapper(Alembic)
diff --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake
index 89c55d8b04f..2dd8d5f4600 100644
--- a/build_files/cmake/platform/platform_win32.cmake
+++ b/build_files/cmake/platform/platform_win32.cmake
@@ -535,6 +535,11 @@ if(WITH_OPENVDB)
set(OPENVDB_DEFINITIONS -DNOMINMAX -D_USE_MATH_DEFINES)
endif()
+if(WITH_NANOVDB)
+ set(NANOVDB ${LIBDIR}/nanoVDB)
+ set(NANOVDB_INCLUDE_DIR ${NANOVDB}/include)
+endif()
+
if(WITH_OPENIMAGEDENOISE)
set(OPENIMAGEDENOISE ${LIBDIR}/OpenImageDenoise)
set(OPENIMAGEDENOISE_LIBPATH ${LIBDIR}/OpenImageDenoise/lib)