diff options
author | Ray Molenkamp <github@lazydodo.com> | 2020-08-13 20:42:05 +0300 |
---|---|---|
committer | Ray Molenkamp <github@lazydodo.com> | 2020-08-13 20:42:05 +0300 |
commit | e691a3a9b7f3d7a57eb0a65a6fa8dde46aff523b (patch) | |
tree | 8a7838df24df264240e16aa70a069297992634cf | |
parent | aabbb515d6cadd8f9ce9f1161a50fdf8c75b6dd1 (diff) |
Deps_builder: Update openvdb to a dynamic library
This patch changes openvdb from a static to a dynamic library.
this is in preparation for enabling pyopenvdb at some point
in the future.
Differential Revision: https://developer.blender.org/D8282
Reviewed by: brecht
-rw-r--r-- | build_files/build_environment/cmake/openvdb.cmake | 18 | ||||
-rw-r--r-- | build_files/build_environment/patches/openvdb.diff | 115 | ||||
-rw-r--r-- | build_files/cmake/platform/platform_win32.cmake | 8 | ||||
-rw-r--r-- | extern/mantaflow/CMakeLists.txt | 4 | ||||
-rw-r--r-- | source/creator/CMakeLists.txt | 13 |
5 files changed, 114 insertions, 44 deletions
diff --git a/build_files/build_environment/cmake/openvdb.cmake b/build_files/build_environment/cmake/openvdb.cmake index f432ade7dd1..f27d3f408a8 100644 --- a/build_files/build_environment/cmake/openvdb.cmake +++ b/build_files/build_environment/cmake/openvdb.cmake @@ -20,6 +20,14 @@ if(BUILD_MODE STREQUAL Debug) set(BLOSC_POST _d) endif() +if(WIN32) + set(OPENVDB_SHARED ON) + set(OPENVDB_STATIC OFF) +else() + set(OPENVDB_SHARED OFF) + set(OPENVDB_STATIC ON) +endif() + set(OPENVDB_EXTRA_ARGS -DBoost_COMPILER:STRING=${BOOST_COMPILER_STRING} -DBoost_USE_MULTITHREADED=ON @@ -42,8 +50,10 @@ set(OPENVDB_EXTRA_ARGS -DOPENEXR_LIBRARYDIR=${LIBDIR}/openexr/lib # All libs live in openexr, even the ilmbase ones -DILMBASE_LIBRARYDIR=${LIBDIR}/openexr/lib - -DOPENVDB_CORE_SHARED=Off + -DOPENVDB_CORE_SHARED=${OPENVDB_SHARED} + -DOPENVDB_CORE_STATIC=${OPENVDB_STATIC} -DOPENVDB_BUILD_BINARIES=Off + -DCMAKE_DEBUG_POSTFIX=_d ) if(WIN32) @@ -87,13 +97,15 @@ 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 ${LIBDIR}/openvdb/lib/libopenvdb.lib ${HARVEST_TARGET}/openvdb/lib/openvdb.lib + 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 ) endif() if(BUILD_MODE STREQUAL Debug) ExternalProject_Add_Step(openvdb after_install - COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openvdb/lib/libopenvdb.lib ${HARVEST_TARGET}/openvdb/lib/openvdb_d.lib + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openvdb/lib/openvdb_d.lib ${HARVEST_TARGET}/openvdb/lib/openvdb_d.lib + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openvdb/bin/openvdb_d.dll ${HARVEST_TARGET}/openvdb/bin/openvdb_d.dll DEPENDEES install ) endif() diff --git a/build_files/build_environment/patches/openvdb.diff b/build_files/build_environment/patches/openvdb.diff index a9360cbafd3..db4506025ea 100644 --- a/build_files/build_environment/patches/openvdb.diff +++ b/build_files/build_environment/patches/openvdb.diff @@ -1,6 +1,6 @@ diff -Naur orig/cmake/FindIlmBase.cmake openvdb/cmake/FindIlmBase.cmake ---- orig/cmake/FindIlmBase.cmake 2019-12-06 13:11:33 -0700 -+++ openvdb/cmake/FindIlmBase.cmake 2020-01-16 09:06:32 -0700 +--- orig/cmake/FindIlmBase.cmake 2019-12-06 12:11:33 -0700 ++++ openvdb/cmake/FindIlmBase.cmake 2020-08-12 12:48:44 -0600 @@ -225,6 +225,12 @@ list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES "-${IlmBase_VERSION_MAJOR}_${IlmBase_VERSION_MINOR}.lib" @@ -15,8 +15,8 @@ diff -Naur orig/cmake/FindIlmBase.cmake openvdb/cmake/FindIlmBase.cmake if(ILMBASE_USE_STATIC_LIBS) list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES diff -Naur orig/cmake/FindOpenEXR.cmake openvdb/cmake/FindOpenEXR.cmake ---- orig/cmake/FindOpenEXR.cmake 2019-12-06 13:11:33 -0700 -+++ openvdb/cmake/FindOpenEXR.cmake 2020-01-16 09:06:39 -0700 +--- orig/cmake/FindOpenEXR.cmake 2019-12-06 12:11:33 -0700 ++++ openvdb/cmake/FindOpenEXR.cmake 2020-08-12 12:48:44 -0600 @@ -218,6 +218,12 @@ list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES "-${OpenEXR_VERSION_MAJOR}_${OpenEXR_VERSION_MINOR}.lib" @@ -31,9 +31,20 @@ diff -Naur orig/cmake/FindOpenEXR.cmake openvdb/cmake/FindOpenEXR.cmake if(OPENEXR_USE_STATIC_LIBS) list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES diff -Naur orig/openvdb/CMakeLists.txt openvdb/openvdb/CMakeLists.txt ---- orig/openvdb/CMakeLists.txt 2019-12-06 13:11:33 -0700 -+++ openvdb/openvdb/CMakeLists.txt 2020-01-16 08:56:25 -0700 -@@ -193,11 +193,12 @@ +--- orig/openvdb/CMakeLists.txt 2019-12-06 12:11:33 -0700 ++++ 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() @@ -41,33 +52,69 @@ diff -Naur orig/openvdb/CMakeLists.txt openvdb/openvdb/CMakeLists.txt endif() # @todo Should be target definitions - if(WIN32) -- add_definitions(-D_WIN32 -DNOMINMAX -DOPENVDB_DLL) -+ add_definitions(-D_WIN32 -DNOMINMAX -DOPENVDB_STATICLIB) - endif() - - ##### Core library configuration -diff -Naur orig/openvdb/cmd/CMakeLists.txt openvdb/openvdb/cmd/CMakeLists.txt ---- orig/openvdb/cmd/CMakeLists.txt 2019-12-06 13:11:33 -0700 -+++ openvdb/openvdb/cmd/CMakeLists.txt 2020-01-16 08:56:25 -0700 -@@ -53,7 +53,7 @@ - endif() - - if(WIN32) -- add_definitions(-D_WIN32 -DNOMINMAX -DOPENVDB_DLL) -+ add_definitions(-D_WIN32 -DNOMINMAX -DOPENVDB_STATICLIB) - endif() - - # rpath handling -diff -Naur orig/openvdb/unittest/CMakeLists.txt openvdb/openvdb/unittest/CMakeLists.txt ---- orig/openvdb/unittest/CMakeLists.txt 2019-12-06 13:11:33 -0700 -+++ openvdb/openvdb/unittest/CMakeLists.txt 2020-01-16 08:56:25 -0700 -@@ -49,7 +49,7 @@ - endif() +@@ -383,7 +386,12 @@ + # imported targets. - if(WIN32) -- add_definitions(-D_WIN32 -DNOMINMAX -DOPENVDB_DLL) -+ add_definitions(-D_WIN32 -DNOMINMAX -DOPENVDB_STATICLIB) + 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() - ##### VDB unit tests + if(OPENVDB_CORE_STATIC) +diff -Naur orig/openvdb/version.rc.in openvdb/openvdb/version.rc.in +--- orig/openvdb/version.rc.in 1969-12-31 17:00:00 -0700 ++++ 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 --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake index dfcd5d75444..b8af2dfc961 100644 --- a/build_files/cmake/platform/platform_win32.cmake +++ b/build_files/cmake/platform/platform_win32.cmake @@ -416,9 +416,6 @@ if(WITH_BOOST) if(WITH_INTERNATIONAL) list(APPEND boost_extra_libs locale) endif() - if(WITH_OPENVDB) - list(APPEND boost_extra_libs iostreams) - endif() set(Boost_USE_STATIC_RUNTIME ON) # prefix lib set(Boost_USE_MULTITHREADED ON) # suffix -mt set(Boost_USE_STATIC_LIBS ON) # suffix -s @@ -524,12 +521,11 @@ if(WITH_OPENCOLORIO) endif() if(WITH_OPENVDB) - set(BLOSC_LIBRARIES optimized ${LIBDIR}/blosc/lib/libblosc.lib debug ${LIBDIR}/blosc/lib/libblosc_d.lib) set(OPENVDB ${LIBDIR}/openVDB) set(OPENVDB_LIBPATH ${OPENVDB}/lib) set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include) - set(OPENVDB_LIBRARIES optimized ${OPENVDB_LIBPATH}/openvdb.lib debug ${OPENVDB_LIBPATH}/openvdb_d.lib ${BLOSC_LIBRARIES}) - set(OPENVDB_DEFINITIONS -DNOMINMAX -DOPENVDB_STATICLIB -D_USE_MATH_DEFINES) + set(OPENVDB_LIBRARIES optimized ${OPENVDB_LIBPATH}/openvdb.lib debug ${OPENVDB_LIBPATH}/openvdb_d.lib ) + set(OPENVDB_DEFINITIONS -DNOMINMAX -D_USE_MATH_DEFINES) endif() if(WITH_OPENIMAGEDENOISE) diff --git a/extern/mantaflow/CMakeLists.txt b/extern/mantaflow/CMakeLists.txt index 9f66b42c6bf..989f45c69b4 100644 --- a/extern/mantaflow/CMakeLists.txt +++ b/extern/mantaflow/CMakeLists.txt @@ -64,7 +64,9 @@ endif() if(WITH_OPENVDB) add_definitions(-DOPENVDB=1) - add_definitions(-DOPENVDB_STATICLIB) + if(NOT WIN32) + add_definitions(-DOPENVDB_STATICLIB) + endif() endif() if(WITH_OPENVDB_BLOSC) diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index 8784d9f1744..f923c834e93 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -722,6 +722,19 @@ elseif(WIN32) endif() endif() + if(WITH_OPENVDB) + install( + FILES ${LIBDIR}/openvdb/bin/openvdb.dll + DESTINATION "." + CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel + ) + install( + FILES ${LIBDIR}/openvdb/bin/openvdb_d.dll + DESTINATION "." + CONFIGURATIONS Debug + ) + endif() + if(WITH_PYTHON) string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION}) |