From a6966c202148b29363b4a4ca48a293b2841e55d5 Mon Sep 17 00:00:00 2001 From: Phoebe <20694052+PhoebeHui@users.noreply.github.com> Date: Sat, 21 Nov 2020 05:25:30 +0800 Subject: [openvdb] Fix dependency issue and usage issue (#14651) --- ports/openvdb/0003-fix-cmake.patch | 238 ++++++++++++++++++++++---------- ports/openvdb/CONTROL | 1 + ports/openvdb/portfile.cmake | 8 +- ports/openvdb/usage | 4 + ports/openvdb/vcpkg-cmake-wrapper.cmake | 10 ++ 5 files changed, 183 insertions(+), 78 deletions(-) create mode 100644 ports/openvdb/usage create mode 100644 ports/openvdb/vcpkg-cmake-wrapper.cmake diff --git a/ports/openvdb/0003-fix-cmake.patch b/ports/openvdb/0003-fix-cmake.patch index 294596869..1c70da27d 100644 --- a/ports/openvdb/0003-fix-cmake.patch +++ b/ports/openvdb/0003-fix-cmake.patch @@ -1,76 +1,162 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index f2e8c2a..4fd3f40 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -360,7 +360,6 @@ if(OPENVDB_INSTALL_CMAKE_MODULES) - cmake/FindLog4cplus.cmake - cmake/FindOpenEXR.cmake - cmake/FindOpenVDB.cmake -- cmake/FindTBB.cmake - cmake/OpenVDBGLFW3Setup.cmake - cmake/OpenVDBHoudiniSetup.cmake - cmake/OpenVDBMayaSetup.cmake -diff --git a/cmake/FindOpenVDB.cmake b/cmake/FindOpenVDB.cmake -index b065192..286e8b6 100644 ---- a/cmake/FindOpenVDB.cmake -+++ b/cmake/FindOpenVDB.cmake -@@ -430,7 +430,7 @@ endif() - # Add standard dependencies - - find_package(IlmBase REQUIRED COMPONENTS Half) --find_package(TBB REQUIRED COMPONENTS tbb) -+find_package(TBB CONFIG REQUIRED) - find_package(ZLIB REQUIRED) - - if(NOT OPENVDB_USE_STATIC_LIBS AND NOT Boost_USE_STATIC_LIBS) -diff --git a/openvdb/CMakeLists.txt b/openvdb/CMakeLists.txt -index 45b302c..e208bcf 100644 ---- a/openvdb/CMakeLists.txt -+++ b/openvdb/CMakeLists.txt -@@ -47,7 +47,7 @@ message(STATUS "----------------------------------------------------") - ########################################################################## - - # Collect and configure lib dependencies -- -+if(0) - if(USE_EXR) - find_package(IlmBase ${MINIMUM_ILMBASE_VERSION} REQUIRED) - find_package(OpenEXR ${MINIMUM_OPENEXR_VERSION} REQUIRED) -@@ -57,8 +57,14 @@ if(USE_EXR) - "is deprecated and will be removed.") - endif() - endif() -+endif() -+endif() -+ -+if(USE_EXR) -+ find_package(IlmBase REQUIRED) -+ find_package(OpenEXR REQUIRED) - else() -- find_package(IlmBase ${MINIMUM_ILMBASE_VERSION} REQUIRED COMPONENTS Half) -+ find_package(IlmBase REQUIRED COMPONENTS Half) - endif() - - if(OPENVDB_FUTURE_DEPRECATION AND FUTURE_MINIMUM_ILMBASE_VERSION) -@@ -68,7 +74,7 @@ if(OPENVDB_FUTURE_DEPRECATION AND FUTURE_MINIMUM_ILMBASE_VERSION) - endif() - endif() - --find_package(TBB ${MINIMUM_TBB_VERSION} REQUIRED COMPONENTS tbb) -+find_package(TBB CONFIG REQUIRED) - - if(OPENVDB_FUTURE_DEPRECATION AND FUTURE_MINIMUM_TBB_VERSION) - if(${Tbb_VERSION} VERSION_LESS FUTURE_MINIMUM_TBB_VERSION) -diff --git a/openvdb/cmd/CMakeLists.txt b/openvdb/cmd/CMakeLists.txt -index 2b831bb..2fa11d4 100644 ---- a/openvdb/cmd/CMakeLists.txt -+++ b/openvdb/cmd/CMakeLists.txt -@@ -50,7 +50,7 @@ if(CONCURRENT_MALLOC STREQUAL "Jemalloc") - find_package(Jemalloc REQUIRED) - list(APPEND OPENVDB_BINARIES_DEPENDENT_LIBS Jemalloc::jemalloc) - elseif(CONCURRENT_MALLOC STREQUAL "Tbbmalloc") -- find_package(TBB ${MINIMUM_TBB_VERSION} REQUIRED COMPONENTS tbbmalloc) -+ find_package(TBB CONFIG REQUIRED) - list(APPEND OPENVDB_BINARIES_DEPENDENT_LIBS TBB::tbbmalloc) - endif() - +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f2e8c2a..749e12c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -353,14 +353,10 @@ endif() + + if(OPENVDB_INSTALL_CMAKE_MODULES) + set(OPENVDB_CMAKE_MODULES +- cmake/FindBlosc.cmake + cmake/FindCppUnit.cmake + cmake/FindJemalloc.cmake +- cmake/FindIlmBase.cmake + cmake/FindLog4cplus.cmake +- cmake/FindOpenEXR.cmake + cmake/FindOpenVDB.cmake +- cmake/FindTBB.cmake + cmake/OpenVDBGLFW3Setup.cmake + cmake/OpenVDBHoudiniSetup.cmake + cmake/OpenVDBMayaSetup.cmake +diff --git a/cmake/FindOpenVDB.cmake b/cmake/FindOpenVDB.cmake +index b065192..7549843 100644 +--- a/cmake/FindOpenVDB.cmake ++++ b/cmake/FindOpenVDB.cmake +@@ -224,8 +224,9 @@ foreach(COMPONENT ${OpenVDB_FIND_COMPONENTS}) + ${OPENVDB_${COMPONENT}_ROOT} + ${OPENVDB_${COMPONENT}_INCLUDEDIR} + ) +- list(REMOVE_DUPLICATES _VDB_COMPONENT_SEARCH_DIRS) +- ++ if(_VDB_COMPONENT_SEARCH_DIRS) ++ list(REMOVE_DUPLICATES _VDB_COMPONENT_SEARCH_DIRS) ++ endif() + # Look for a standard header files. + if(${COMPONENT} STREQUAL "openvdb") + # Look for a standard OpenVDB header file. +@@ -429,8 +430,8 @@ endif() + + # Add standard dependencies + +-find_package(IlmBase REQUIRED COMPONENTS Half) +-find_package(TBB REQUIRED COMPONENTS tbb) ++find_package(IlmBase CONFIG REQUIRED) ++find_package(TBB CONFIG REQUIRED) + find_package(ZLIB REQUIRED) + + if(NOT OPENVDB_USE_STATIC_LIBS AND NOT Boost_USE_STATIC_LIBS) +@@ -540,7 +541,7 @@ if(NOT OPENVDB_USE_STATIC_LIBS) + endif() + + if(OpenVDB_USES_BLOSC) +- find_package(Blosc REQUIRED) ++ find_package(blosc CONFIG REQUIRED) + endif() + + if(OpenVDB_USES_LOG4CPLUS) +@@ -548,8 +549,8 @@ if(OpenVDB_USES_LOG4CPLUS) + endif() + + if(OpenVDB_USES_EXR) +- find_package(IlmBase REQUIRED) +- find_package(OpenEXR REQUIRED) ++ find_package(IlmBase CONFIG REQUIRED) ++ find_package(OpenEXR CONFIG REQUIRED) + endif() + + if(UNIX) +@@ -610,7 +611,7 @@ set(_OPENVDB_HIDDEN_DEPENDENCIES) + + if(NOT OPENVDB_USE_STATIC_LIBS) + if(OpenVDB_USES_BLOSC) +- list(APPEND _OPENVDB_HIDDEN_DEPENDENCIES Blosc::blosc) ++ list(APPEND _OPENVDB_HIDDEN_DEPENDENCIES blosc) + endif() + + list(APPEND _OPENVDB_HIDDEN_DEPENDENCIES ZLIB::ZLIB) +diff --git a/openvdb/CMakeLists.txt b/openvdb/CMakeLists.txt +index 45b302c..d75cfd1 100644 +--- a/openvdb/CMakeLists.txt ++++ b/openvdb/CMakeLists.txt +@@ -47,7 +47,7 @@ message(STATUS "----------------------------------------------------") + ########################################################################## + + # Collect and configure lib dependencies +- ++if(0) + if(USE_EXR) + find_package(IlmBase ${MINIMUM_ILMBASE_VERSION} REQUIRED) + find_package(OpenEXR ${MINIMUM_OPENEXR_VERSION} REQUIRED) +@@ -57,8 +57,14 @@ if(USE_EXR) + "is deprecated and will be removed.") + endif() + endif() ++endif() ++endif() ++ ++if(USE_EXR) ++ find_package(IlmBase CONFIG REQUIRED) ++ find_package(OpenEXR CONFIG REQUIRED) + else() +- find_package(IlmBase ${MINIMUM_ILMBASE_VERSION} REQUIRED COMPONENTS Half) ++ find_package(IlmBase CONFIG REQUIRED) + endif() + + if(OPENVDB_FUTURE_DEPRECATION AND FUTURE_MINIMUM_ILMBASE_VERSION) +@@ -68,7 +74,7 @@ if(OPENVDB_FUTURE_DEPRECATION AND FUTURE_MINIMUM_ILMBASE_VERSION) + endif() + endif() + +-find_package(TBB ${MINIMUM_TBB_VERSION} REQUIRED COMPONENTS tbb) ++find_package(TBB CONFIG REQUIRED) + + if(OPENVDB_FUTURE_DEPRECATION AND FUTURE_MINIMUM_TBB_VERSION) + if(${Tbb_VERSION} VERSION_LESS FUTURE_MINIMUM_TBB_VERSION) +@@ -84,14 +90,7 @@ if(USE_LOG4CPLUS) + endif() + + if(USE_BLOSC) +- find_package(Blosc ${MINIMUM_BLOSC_VERSION} REQUIRED) +- if(Blosc_FOUND AND Blosc_VERSION VERSION_GREATER MINIMUM_BLOSC_VERSION) +- message(WARNING "The version of Blosc located is greater than ${MINIMUM_BLOSC_VERSION}. " +- "There have been reported issues with using later versions of Blosc with OpenVDB. " +- "OpenVDB has been tested fully against Blosc ${MINIMUM_BLOSC_VERSION}, it is " +- "recommended that you use this version where possible." +- ) +- endif() ++ find_package(blosc CONFIG REQUIRED) + else() + message(WARNING "Blosc support is disabled. It is strongly recommended to " + "enable blosc for optimal builds of OpenVDB and to support compatible " +@@ -163,7 +162,7 @@ endif() + # See FindOpenVDB.cmake + + if(USE_BLOSC) +- list(APPEND OPENVDB_CORE_DEPENDENT_LIBS Blosc::blosc) ++ list(APPEND OPENVDB_CORE_DEPENDENT_LIBS blosc) + endif() + + list(APPEND OPENVDB_CORE_DEPENDENT_LIBS +diff --git a/openvdb/cmd/CMakeLists.txt b/openvdb/cmd/CMakeLists.txt +index 2b831bb..a13b63b 100644 +--- a/openvdb/cmd/CMakeLists.txt ++++ b/openvdb/cmd/CMakeLists.txt +@@ -50,7 +50,7 @@ if(CONCURRENT_MALLOC STREQUAL "Jemalloc") + find_package(Jemalloc REQUIRED) + list(APPEND OPENVDB_BINARIES_DEPENDENT_LIBS Jemalloc::jemalloc) + elseif(CONCURRENT_MALLOC STREQUAL "Tbbmalloc") +- find_package(TBB ${MINIMUM_TBB_VERSION} REQUIRED COMPONENTS tbbmalloc) ++ find_package(TBB CONFIG REQUIRED) + list(APPEND OPENVDB_BINARIES_DEPENDENT_LIBS TBB::tbbmalloc) + endif() + +@@ -120,8 +120,8 @@ endif() + #### vdb_render + + if(OPENVDB_BUILD_VDB_RENDER) +- find_package(IlmBase ${MINIMUM_ILMBASE_VERSION} REQUIRED COMPONENTS Half Iex IlmThread Imath) +- find_package(OpenEXR ${MINIMUM_OPENEXR_VERSION} REQUIRED COMPONENTS IlmImf) ++ find_package(IlmBase CONFIG REQUIRED) ++ find_package(OpenEXR CONFIG REQUIRED) + + set(VDB_RENDER_SOURCE_FILES openvdb_render.cc) + add_executable(vdb_render ${VDB_RENDER_SOURCE_FILES}) diff --git a/ports/openvdb/CONTROL b/ports/openvdb/CONTROL index 17e6c12de..f100be3e8 100644 --- a/ports/openvdb/CONTROL +++ b/ports/openvdb/CONTROL @@ -1,5 +1,6 @@ Source: openvdb Version: 7.1.0 +Port-Version: 1 Build-Depends: boost-ptr-container, openexr, tbb, blosc, boost-iostreams, boost-system, boost-thread, boost-date-time, boost-any, boost-uuid, boost-interprocess, ilmbase Homepage: https://github.com/dreamworksanimation/openvdb Description: Sparse volume data structure and tools diff --git a/ports/openvdb/portfile.cmake b/ports/openvdb/portfile.cmake index 492936c70..fa91fc7f8 100644 --- a/ports/openvdb/portfile.cmake +++ b/ports/openvdb/portfile.cmake @@ -9,6 +9,9 @@ vcpkg_from_github( ) file(REMOVE ${SOURCE_PATH}/cmake/FindTBB.cmake) +file(REMOVE ${SOURCE_PATH}/cmake/FindIlmBase.cmake) +file(REMOVE ${SOURCE_PATH}/cmake/FindBlosc.cmake) +file(REMOVE ${SOURCE_PATH}/cmake/FindOpenEXR.cmake) string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" OPENVDB_STATIC) string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" OPENVDB_SHARED) @@ -51,5 +54,6 @@ if (OPENVDB_BUILD_TOOLS) vcpkg_copy_tools(TOOL_NAMES vdb_print vdb_render vdb_view vdb_lod AUTO_CLEAN) endif() -# Handle copyright -file(INSTALL ${SOURCE_PATH}/openvdb/COPYRIGHT DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) \ No newline at end of file +file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}) +file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}) +file(INSTALL ${SOURCE_PATH}/openvdb/COPYRIGHT DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) diff --git a/ports/openvdb/usage b/ports/openvdb/usage new file mode 100644 index 000000000..854078780 --- /dev/null +++ b/ports/openvdb/usage @@ -0,0 +1,4 @@ +The package openvdb provides CMake targets: + + find_package(OpenVDB CONFIG REQUIRED) + target_link_libraries(main PRIVATE OpenVDB::openvdb) diff --git a/ports/openvdb/vcpkg-cmake-wrapper.cmake b/ports/openvdb/vcpkg-cmake-wrapper.cmake new file mode 100644 index 000000000..fd1c5d23d --- /dev/null +++ b/ports/openvdb/vcpkg-cmake-wrapper.cmake @@ -0,0 +1,10 @@ +set(OPENVDB_PREV_MODULE_PATH ${CMAKE_MODULE_PATH}) +list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}) + +list(REMOVE_ITEM ARGS "NO_MODULE") +list(REMOVE_ITEM ARGS "CONFIG") +list(REMOVE_ITEM ARGS "MODULE") + +_find_package(${ARGS}) + +set(CMAKE_MODULE_PATH ${OPENVDB_PREV_MODULE_PATH}) -- cgit v1.2.3