diff options
Diffstat (limited to 'build_files')
-rw-r--r-- | build_files/build_environment/CMakeLists.txt | 1 | ||||
-rw-r--r-- | build_files/build_environment/cmake/harvest.cmake | 4 | ||||
-rw-r--r-- | build_files/build_environment/cmake/openvdb.cmake | 30 | ||||
-rw-r--r-- | build_files/build_environment/cmake/options.cmake | 1 | ||||
-rw-r--r-- | build_files/build_environment/cmake/versions.cmake | 12 | ||||
-rw-r--r-- | build_files/build_environment/patches/openvdb_nanovdb.diff | 135 | ||||
-rw-r--r-- | build_files/cmake/Modules/FindNanoVDB.cmake | 49 | ||||
-rw-r--r-- | build_files/cmake/platform/platform_apple.cmake | 5 | ||||
-rw-r--r-- | build_files/cmake/platform/platform_unix.cmake | 10 | ||||
-rw-r--r-- | build_files/cmake/platform/platform_win32.cmake | 5 |
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) |