diff --git a/ports/cctag/0001-fix-osx.patch b/ports/cctag/0001-fix-osx.patch index 8d3f76acfd..759fd6190c 100644 --- a/ports/cctag/0001-fix-osx.patch +++ b/ports/cctag/0001-fix-osx.patch @@ -1,10 +1,11 @@ +diff --git a/src/cctag/utils/Exceptions.hpp b/src/cctag/utils/Exceptions.hpp +index 094d278..8647f76 100644 --- a/src/cctag/utils/Exceptions.hpp +++ b/src/cctag/utils/Exceptions.hpp -@@ -7,7 +7,7 @@ - */ +@@ -8,6 +8,7 @@ #ifndef _CCTAG_EXCEPTIONS_HPP_ #define _CCTAG_EXCEPTIONS_HPP_ -- + +#define _GNU_SOURCE #include #include diff --git a/ports/cctag/0002-find-tbb.patch b/ports/cctag/0002-find-tbb.patch new file mode 100644 index 0000000000..7badc072f9 --- /dev/null +++ b/ports/cctag/0002-find-tbb.patch @@ -0,0 +1,173 @@ +diff --git a/cmake/Config.cmake.in b/cmake/Config.cmake.in +index c5a82c0..3ce4719 100644 +--- a/cmake/Config.cmake.in ++++ b/cmake/Config.cmake.in +@@ -42,6 +42,7 @@ + include(CMakeFindDependencyMacro) + + set(OpenCV_DIR @OpenCV_DIR@) ++find_dependency(TBB) + find_dependency(OpenCV) + find_dependency(Eigen3 @CCTAG_EIGEN_REQUIRED_VERSION@) + find_dependency(Boost 1.66 REQUIRED COMPONENTS @BOOST_REQUIRED_COMPONENTS@) +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 7b64b83..5398ed4 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -176,7 +176,8 @@ if(CCTAG_WITH_CUDA) + ${OpenCV_LIBS} + Boost::date_time Boost::chrono Boost::thread Boost::serialization Boost::system Boost::filesystem Boost::atomic Boost::program_options Boost::timer Boost::math_c99 + Eigen3::Eigen +- ${TBB_LIBRARIES} ${CUDA_CUDADEVRT_LIBRARY}) ++ TBB::tbb ++ ${CUDA_CUDADEVRT_LIBRARY}) + + if(NOT MSVC) + target_link_libraries(CCTag pthread dl) +@@ -184,7 +185,7 @@ if(CCTAG_WITH_CUDA) + + target_compile_definitions(CCTag + PUBLIC -DCCTAG_WITH_CUDA +- PRIVATE ${TBB_DEFINITIONS}) ++) + + if(CCTAG_HAVE_SHFL_DOWN_SYNC) + target_compile_definitions(CCTag PRIVATE "-DCCTAG_HAVE_SHFL_DOWN_SYNC") +@@ -220,16 +221,13 @@ else() # without CUDA + # get_target_property(testprop CCTag INTERFACE_INCLUDE_DIRECTORIES ) + # message(STATUS "testprop: ${testprop}") + +- target_compile_definitions(CCTag +- PRIVATE ${TBB_DEFINITIONS}) + + target_link_libraries(CCTag + PUBLIC + ${OpenCV_LIBS} + Eigen3::Eigen + Boost::atomic Boost::chrono Boost::date_time Boost::filesystem Boost::serialization Boost::system Boost::thread Boost::timer Boost::math_c99 +- PRIVATE +- ${TBB_LIBRARIES}) ++ TBB::tbb) + + if(NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") + target_link_libraries(CCTag PRIVATE pthread dl) +diff --git a/src/applications/CMakeLists.txt b/src/applications/CMakeLists.txt +index 506d19b..c7154fc 100644 +--- a/src/applications/CMakeLists.txt ++++ b/src/applications/CMakeLists.txt +@@ -86,7 +86,7 @@ target_include_directories(detection PUBLIC + ) + target_link_libraries(detection PUBLIC + CCTag::CCTag +- ${TBB_LIBRARIES} ++ TBB::tbb + ${OpenCV_LIBS} + Boost::filesystem Boost::program_options Boost::timer + ) +diff --git a/src/cctag/Detection.cpp b/src/cctag/Detection.cpp +index 21c47bf..a800fbc 100644 +--- a/src/cctag/Detection.cpp ++++ b/src/cctag/Detection.cpp +@@ -44,6 +44,7 @@ + #include + #include + #include ++#include + #ifdef CCTAG_WITH_CUDA + #include // only for debugging + #endif // CCTAG_WITH_CUDA +@@ -71,7 +72,7 @@ static void constructFlowComponentFromSeed( + std::vector & vCandidateLoopOne, + const Parameters & params) + { +- static tbb::mutex G_SortMutex; ++ static std::mutex G_SortMutex; + + assert( seed ); + // Check if the seed has already been processed, i.e. belongs to an already +@@ -102,7 +103,7 @@ static void constructFlowComponentFromSeed( + } + + { +- tbb::mutex::scoped_lock lock(G_SortMutex); ++ std::lock_guard lock(G_SortMutex); + candidate->_averageReceivedVote = (float) (nReceivedVote*nReceivedVote) / (float) nVotedPoints; + auto it = std::lower_bound(vCandidateLoopOne.begin(), vCandidateLoopOne.end(), candidate, + [](const CandidatePtr& c1, const CandidatePtr& c2) { return c1->_averageReceivedVote > c2->_averageReceivedVote; }); +@@ -119,8 +120,8 @@ static void completeFlowComponent( + std::size_t runId, + const Parameters & params) + { +- static tbb::spin_mutex G_UpdateMutex; +- static tbb::mutex G_InsertMutex; ++ static std::mutex G_UpdateMutex; ++ static std::mutex G_InsertMutex; + + try + { +@@ -171,7 +172,7 @@ static void completeFlowComponent( + if (nSegmentCommon == -1) + { + { +- tbb::spin_mutex::scoped_lock lock(G_UpdateMutex); ++ std::lock_guard lock(G_UpdateMutex); + nLabel = nSegmentOut; + ++nSegmentOut; + } +@@ -239,7 +240,7 @@ static void completeFlowComponent( + } + + { +- tbb::mutex::scoped_lock lock(G_InsertMutex); ++ std::lock_guard lock(G_InsertMutex); + vCandidateLoopTwo.push_back(candidate); + } + +@@ -384,7 +385,7 @@ static void cctagDetectionFromEdgesLoopTwoIteration( + float scale, + const Parameters& params) + { +- static tbb::mutex G_InsertMutex; ++ static std::mutex G_InsertMutex; + + const Candidate& candidate = vCandidateLoopTwo[iCandidate]; + +@@ -543,7 +544,7 @@ static void cctagDetectionFromEdgesLoopTwoIteration( + #endif + + { +- tbb::mutex::scoped_lock lock(G_InsertMutex); ++ std::lock_guard lock(G_InsertMutex); + markers.push_back( tag ); // markers takes responsibility for delete + } + #ifdef CCTAG_SERIALIZE +diff --git a/src/cctag/Identification.cpp b/src/cctag/Identification.cpp +index 15c9d9b..99b616a 100644 +--- a/src/cctag/Identification.cpp ++++ b/src/cctag/Identification.cpp +@@ -29,6 +29,7 @@ + + #include + #include ++#include + + #include + +@@ -71,7 +72,7 @@ bool orazioDistanceRobust( + #endif // GRIFF_DEBUG + + const size_t cut_count = cuts.size(); +- static tbb::mutex vscore_mutex; ++ static std::mutex vscore_mutex; + + tbb::parallel_for(size_t(0), cut_count, [&](size_t i) { + const cctag::ImageCut& cut = cuts[i]; +@@ -183,7 +184,7 @@ bool orazioDistanceRobust( + #endif // GRIFF_DEBUG + + { +- tbb::mutex::scoped_lock lock(vscore_mutex); ++ std::lock_guard lock(vscore_mutex); + vScore[idSet.front().first].push_back(idSet.front().second); + } + } diff --git a/ports/cctag/portfile.cmake b/ports/cctag/portfile.cmake index 6b4a4d3aed..a57d142c0d 100644 --- a/ports/cctag/portfile.cmake +++ b/ports/cctag/portfile.cmake @@ -6,8 +6,11 @@ vcpkg_from_github( HEAD_REF develop PATCHES 0001-fix-osx.patch + 0002-find-tbb.patch # Includes changes similar to https://github.com/alicevision/CCTag/pull/178/ ) +file(REMOVE "${SOURCE_PATH}/cmake/FindTBB.cmake" "${SOURCE_PATH}/src/applications/cmake/FindTBB.cmake") + vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS FEATURES cuda CCTAG_WITH_CUDA @@ -15,7 +18,7 @@ vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS ) if("cuda" IN_LIST FEATURES) - include(${CURRENT_INSTALLED_DIR}/share/cuda/vcpkg_find_cuda.cmake) + include("${CURRENT_INSTALLED_DIR}/share/cuda/vcpkg_find_cuda.cmake") vcpkg_find_cuda(OUT_CUDA_TOOLKIT_ROOT CUDA_TOOLKIT_ROOT) message(STATUS "CUDA_TOOLKIT_ROOT ${CUDA_TOOLKIT_ROOT}") endif() diff --git a/ports/cctag/vcpkg.json b/ports/cctag/vcpkg.json index 1844000430..989c99b7d6 100644 --- a/ports/cctag/vcpkg.json +++ b/ports/cctag/vcpkg.json @@ -1,7 +1,7 @@ { "name": "cctag", "version-semver": "1.0.2", - "port-version": 1, + "port-version": 2, "maintainers": "alicevision-team@googlegroups.com", "description": "Computer vision library for detecting CCTag markers made up of concentric circles", "homepage": "https://github.com/alicevision/CCTag", diff --git a/ports/embree2/cmake_policy.patch b/ports/embree2/cmake_policy.patch deleted file mode 100644 index ed4d339e38..0000000000 --- a/ports/embree2/cmake_policy.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index afa704d..96dc4f8 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -57,6 +57,9 @@ IF(COMMAND cmake_policy) - if (POLICY CMP0042) - cmake_policy(SET CMP0042 OLD) - endif() -+ if (POLICY CMP0001) -+ cmake_policy(SET CMP0001 OLD) -+ endif() - ENDIF(COMMAND cmake_policy) - - MARK_AS_ADVANCED(CMAKE_BACKWARDS_COMPATIBILITY) diff --git a/ports/embree2/portfile.cmake b/ports/embree2/portfile.cmake deleted file mode 100644 index fc1e8384ea..0000000000 --- a/ports/embree2/portfile.cmake +++ /dev/null @@ -1,53 +0,0 @@ -vcpkg_from_github( - OUT_SOURCE_PATH SOURCE_PATH - REPO embree/embree - REF v2.17.7 - SHA512 3ea548e5ed85f68dc1f9dfe864711f9b731e0df8a2258257f77db08bbdbe3a9014a626313e3ff41174f3b26f09dc8ff523900119ff4c8465bfff53f621052873 - HEAD_REF devel2 - PATCHES - cmake_policy.patch -) - -file(REMOVE "${SOURCE_PATH}/common/cmake/FindTBB.cmake") - -string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" EMBREE_STATIC_LIB) -string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" EMBREE_STATIC_RUNTIME) - -vcpkg_cmake_configure( - SOURCE_PATH "${SOURCE_PATH}" - DISABLE_PARALLEL_CONFIGURE - OPTIONS - -DEMBREE_ISPC_SUPPORT=OFF - -DEMBREE_TUTORIALS=OFF - -DEMBREE_STATIC_LIB=${EMBREE_STATIC_LIB} - -DEMBREE_STATIC_RUNTIME=${EMBREE_STATIC_RUNTIME} - "-DTBB_LIBRARIES=TBB::tbb" - "-DTBB_INCLUDE_DIRS=${CURRENT_INSTALLED_DIR}/include" -) - -# just wait, the release build of embree is insanely slow in MSVC -# a single file will took about 2-10 min -vcpkg_cmake_install() -vcpkg_copy_pdbs() - -# these cmake files do not seem to contain helpful configuration for find libs, just remove them -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/embree-config.cmake") -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/embree-config-version.cmake") -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/embree-config.cmake") -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/embree-config-version.cmake") -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/lib/cmake" "${CURRENT_PACKAGES_DIR}/debug/lib/cmake") -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/uninstall.command" "${CURRENT_PACKAGES_DIR}/debug/uninstall.command") - -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/bin/models") -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin/models") - -if("${VCPKG_LIBRARY_LINKAGE}" STREQUAL "static") - file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin") -endif() - -file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/embree2") -file(RENAME "${CURRENT_PACKAGES_DIR}/share/doc" "${CURRENT_PACKAGES_DIR}/share/embree2/doc") - -file(INSTALL "${SOURCE_PATH}/LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) diff --git a/ports/embree2/vcpkg.json b/ports/embree2/vcpkg.json deleted file mode 100644 index e89bc2b2ed..0000000000 --- a/ports/embree2/vcpkg.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "embree2", - "version-semver": "2.17.7", - "port-version": 4, - "description": "High Performance Ray Tracing Kernels.", - "homepage": "https://github.com/embree/embree", - "supports": "!arm", - "dependencies": [ - "tbb", - { - "name": "vcpkg-cmake", - "host": true - } - ] -} diff --git a/ports/gazebo/fix-tbb.patch b/ports/gazebo/fix-tbb.patch new file mode 100644 index 0000000000..b494c93bc7 --- /dev/null +++ b/ports/gazebo/fix-tbb.patch @@ -0,0 +1,443 @@ +diff --git a/cmake/SearchForStuff.cmake b/cmake/SearchForStuff.cmake +index af56ee4..8583740 100644 +--- a/cmake/SearchForStuff.cmake ++++ b/cmake/SearchForStuff.cmake +@@ -301,7 +301,7 @@ if (PKG_CONFIG_FOUND) + + ################################################# + # Find TBB +- pkg_check_modules(TBB tbb<2021) ++ pkg_check_modules(TBB tbb) + set (TBB_PKG_CONFIG "tbb") + if (NOT TBB_FOUND) + message(STATUS "TBB not found, attempting to detect manually") +@@ -325,6 +325,12 @@ if (PKG_CONFIG_FOUND) + endif(tbb_library) + endif (NOT TBB_FOUND) + endif (NOT TBB_FOUND) ++ set(HAVE_TBB_GREATER_OR_EQUAL_2021 OFF) ++ if (DEFINED TBB_VERSION AND NOT ${TBB_VERSION} STREQUAL "") ++ if (${TBB_VERSION} VERSION_GREATER_EQUAL "2021.0") ++ set(HAVE_TBB_GREATER_OR_EQUAL_2021 ON) ++ endif() ++ endif() + + ################################################# + # Find OGRE +diff --git a/cmake/gazebo-config.cmake.in b/cmake/gazebo-config.cmake.in +index 36bb341..6bb8e51 100644 +--- a/cmake/gazebo-config.cmake.in ++++ b/cmake/gazebo-config.cmake.in +@@ -223,3 +223,11 @@ list(APPEND @PKG_NAME@_LIBRARIES ${IGNITION-FUEL_TOOLS_LIBRARIES}) + list(APPEND @PKG_NAME@_LDFLAGS -Wl,-rpath,${GAZEBO_INSTALL_LIB_DIR}/gazebo-@GAZEBO_MAJOR_VERSION@/plugins) + list(APPEND @PKG_NAME@_LDFLAGS -L${GAZEBO_INSTALL_LIB_DIR}) + list(APPEND @PKG_NAME@_LDFLAGS -L${GAZEBO_INSTALL_LIB_DIR}/gazebo-@GAZEBO_MAJOR_VERSION@/plugins) ++ ++set (GAZEBO_HAS_TBB_GREATER_OR_EQUAL_2021 @HAVE_TBB_GREATER_OR_EQUAL_2021@) ++if (GAZEBO_HAS_TBB_GREATER_OR_EQUAL_2021) ++ find_package(TBB CONFIG) ++ if (TARGET tbb::tbb) ++ list(APPEND @PKG_NAME@_LIBRARIES TBB::tbb) ++ endif () ++endif () +diff --git a/gazebo/transport/CMakeLists.txt b/gazebo/transport/CMakeLists.txt +index 8e59020..a72d49b 100644 +--- a/gazebo/transport/CMakeLists.txt ++++ b/gazebo/transport/CMakeLists.txt +@@ -29,6 +29,7 @@ set (headers + SubscribeOptions.hh + Subscriber.hh + SubscriptionTransport.hh ++ TaskGroup.hh + TopicManager.hh + TransportIface.hh + TransportTypes.hh +@@ -70,6 +71,12 @@ if (WIN32) + target_link_libraries(gazebo_transport ws2_32 Iphlpapi) + endif() + ++if(${CMAKE_VERSION} VERSION_LESS "3.13.0") ++ link_directories(${TBB_LIBRARY_DIRS}) ++else() ++ target_link_directories(gazebo_transport PUBLIC ${TBB_LIBRARY_DIRS}) ++endif() ++ + if (USE_PCH) + add_pch(gazebo_transport transport_pch.hh ${Boost_PKGCONFIG_CFLAGS} "-I${PROTOBUF_INCLUDE_DIR}" "-I${TBB_INCLUDEDIR}") + endif() +diff --git a/gazebo/transport/Connection.hh b/gazebo/transport/Connection.hh +index 0e7d88a..cbcd7af 100644 +--- a/gazebo/transport/Connection.hh ++++ b/gazebo/transport/Connection.hh +@@ -17,7 +17,16 @@ + #ifndef _CONNECTION_HH_ + #define _CONNECTION_HH_ + ++#undef emit + #include ++#define emit ++ ++// If TBB_VERSION_MAJOR is not defined, this means that ++// tbb >= 2021 and we can include the tbb/version.h header ++#ifndef TBB_VERSION_MAJOR ++#include ++#endif ++ + #include + + #include +@@ -37,6 +46,9 @@ + #include "gazebo/common/Console.hh" + #include "gazebo/common/Exception.hh" + #include "gazebo/common/WeakBind.hh" ++#if TBB_VERSION_MAJOR >= 2021 ++#include "gazebo/transport/TaskGroup.hh" ++#endif + #include "gazebo/util/system.hh" + + #define HEADER_LENGTH 8 +@@ -54,7 +66,11 @@ namespace gazebo + /// \cond + /// \brief A task instance that is created when data is read from + /// a socket and used by TBB ++#if TBB_VERSION_MAJOR < 2021 + class GZ_TRANSPORT_VISIBLE ConnectionReadTask : public tbb::task ++#else ++ class GZ_TRANSPORT_VISIBLE ConnectionReadTask ++#endif + { + /// \brief Constructor + /// \param[_in] _func Boost function pointer, which is the function +@@ -68,6 +84,7 @@ namespace gazebo + { + } + ++#if TBB_VERSION_MAJOR < 2021 + /// \bried Overridden function from tbb::task that exectues the data + /// callback. + public: tbb::task *execute() +@@ -75,6 +92,11 @@ namespace gazebo + this->func(this->data); + return NULL; + } ++#else ++ /// \brief Execute the data callback ++ public: void operator()() const ++ { this->func(this->data); } ++#endif + + /// \brief The boost function pointer + private: boost::function func; +@@ -310,12 +332,16 @@ namespace gazebo + + if (!_e && !transport::is_stopped()) + { ++#if TBB_VERSION_MAJOR < 2021 + ConnectionReadTask *task = new(tbb::task::allocate_root()) + ConnectionReadTask(boost::get<0>(_handler), data); + tbb::task::enqueue(*task); + + // Non-tbb version: + // boost::get<0>(_handler)(data); ++#else ++ this->taskGroup.run(boost::get<0>(_handler), data); ++#endif + } + } + +@@ -465,6 +491,11 @@ namespace gazebo + + /// \brief True if the connection is open. + private: bool isOpen; ++ ++#if TBB_VERSION_MAJOR >= 2021 ++ /// \brief For managing asynchronous tasks with tbb ++ private: TaskGroup taskGroup; ++#endif + }; + /// \} + } +diff --git a/gazebo/transport/ConnectionManager.cc b/gazebo/transport/ConnectionManager.cc +index b0546e5..17016a4 100644 +--- a/gazebo/transport/ConnectionManager.cc ++++ b/gazebo/transport/ConnectionManager.cc +@@ -27,6 +27,7 @@ + using namespace gazebo; + using namespace transport; + ++#if TBB_VERSION_MAJOR < 2021 + /// TBB task to process nodes. + class TopicManagerProcessTask : public tbb::task + { +@@ -37,20 +38,30 @@ class TopicManagerProcessTask : public tbb::task + return NULL; + } + }; ++#endif + + /// TBB task to establish subscriber to publisher connection. ++#if TBB_VERSION_MAJOR < 2021 + class TopicManagerConnectionTask : public tbb::task ++#else ++class TopicManagerConnectionTask ++#endif + { + /// \brief Constructor. + /// \param[in] _pub Publish message + public: explicit TopicManagerConnectionTask(msgs::Publish _pub) : pub(_pub) {} + + /// Implements the necessary execute function ++#if TBB_VERSION_MAJOR < 2021 + public: tbb::task *execute() + { + TopicManager::Instance()->ConnectSubToPub(pub); + return NULL; + } ++#else ++ public: void operator()() const ++ { TopicManager::Instance()->ConnectSubToPub(pub); } ++#endif + + /// \brief Publish message + private: msgs::Publish pub; +@@ -273,11 +284,6 @@ void ConnectionManager::RunUpdate() + if (this->masterConn) + this->masterConn->ProcessWriteQueue(); + +- // Use TBB to process nodes. Need more testing to see if this makes +- // a difference. +- // TopicManagerProcessTask *task = new(tbb::task::allocate_root()) +- // TopicManagerProcessTask(); +- // tbb::task::enqueue(*task); + boost::recursive_mutex::scoped_lock lock(this->connectionMutex); + + TopicManager::Instance()->ProcessNodes(); +@@ -403,9 +409,13 @@ void ConnectionManager::ProcessMessage(const std::string &_data) + if (pub.host() != this->serverConn->GetLocalAddress() || + pub.port() != this->serverConn->GetLocalPort()) + { ++#if TBB_VERSION_MAJOR < 2021 + TopicManagerConnectionTask *task = new(tbb::task::allocate_root()) + TopicManagerConnectionTask(pub); + tbb::task::enqueue(*task); ++#else ++ this->taskGroup.run(pub); ++#endif + } + } + // publisher_subscribe. This occurs when we try to subscribe to a topic, and +diff --git a/gazebo/transport/ConnectionManager.hh b/gazebo/transport/ConnectionManager.hh +index ef80eaf..6dc212b 100644 +--- a/gazebo/transport/ConnectionManager.hh ++++ b/gazebo/transport/ConnectionManager.hh +@@ -27,8 +27,11 @@ + #include "gazebo/msgs/msgs.hh" + #include "gazebo/common/SingletonT.hh" + +-#include "gazebo/transport/Publisher.hh" + #include "gazebo/transport/Connection.hh" ++#include "gazebo/transport/Publisher.hh" ++#if TBB_VERSION_MAJOR >= 2021 ++#include "gazebo/transport/TaskGroup.hh" ++#endif + #include "gazebo/util/system.hh" + + /// \brief Explicit instantiation for typed SingletonT. +@@ -194,6 +197,11 @@ namespace gazebo + /// \brief Condition used for synchronization + private: boost::condition_variable namespaceCondition; + ++#if TBB_VERSION_MAJOR >= 2021 ++ /// \brief For managing asynchronous tasks with tbb ++ private: TaskGroup taskGroup; ++#endif ++ + // Singleton implementation + private: friend class SingletonT; + }; +diff --git a/gazebo/transport/Node.hh b/gazebo/transport/Node.hh +index b7d37f7..7248b72 100644 +--- a/gazebo/transport/Node.hh ++++ b/gazebo/transport/Node.hh +@@ -18,7 +18,12 @@ + #ifndef GAZEBO_TRANSPORT_NODE_HH_ + #define GAZEBO_TRANSPORT_NODE_HH_ + ++#undef emit + #include ++#define emit ++#ifndef TBB_VERSION_MAJOR ++#include ++#endif + #include + #include + #include +@@ -26,6 +31,9 @@ + #include + #include + ++#if TBB_VERSION_MAJOR >= 2021 ++#include "gazebo/transport/TaskGroup.hh" ++#endif + #include "gazebo/transport/TransportTypes.hh" + #include "gazebo/transport/TopicManager.hh" + #include "gazebo/util/system.hh" +@@ -36,7 +44,11 @@ namespace gazebo + { + /// \cond + /// \brief Task used by Node::Publish to publish on a one-time publisher ++#if TBB_VERSION_MAJOR < 2021 + class GZ_TRANSPORT_VISIBLE PublishTask : public tbb::task ++#else ++ class GZ_TRANSPORT_VISIBLE PublishTask ++#endif + { + /// \brief Constructor + /// \param[in] _pub Publisher to publish the message on. +@@ -49,16 +61,23 @@ namespace gazebo + this->msg->CopyFrom(_message); + } + ++#if TBB_VERSION_MAJOR < 2021 + /// \brief Overridden function from tbb::task that exectues the + /// publish task. + public: tbb::task *execute() ++#else ++ /// \brief Executes the publish task. ++ public: void operator()() const ++#endif + { + this->pub->WaitForConnection(); + this->pub->Publish(*this->msg, true); + this->pub->SendMessage(); + delete this->msg; ++#if TBB_VERSION_MAJOR < 2021 + this->pub.reset(); + return NULL; ++#endif + } + + /// \brief Pointer to the publisher. +@@ -159,11 +178,15 @@ namespace gazebo + const google::protobuf::Message &_message) + { + transport::PublisherPtr pub = this->Advertise(_topic); ++#if TBB_VERSION_MAJOR < 2021 + PublishTask *task = new(tbb::task::allocate_root()) + PublishTask(pub, _message); + + tbb::task::enqueue(*task); + return; ++#else ++ this->taskGroup.run(pub, _message); ++#endif + } + + /// \brief Advertise a topic +@@ -420,6 +443,10 @@ namespace gazebo + + /// \brief List of newly arrive messages + private: std::map > incomingMsgsLocal; ++#if TBB_VERSION_MAJOR >= 2021 ++ /// \brief For managing asynchronous tasks with tbb ++ private: TaskGroup taskGroup; ++#endif + + private: boost::mutex publisherMutex; + private: boost::mutex publisherDeleteMutex; +diff --git a/gazebo/transport/TaskGroup.hh b/gazebo/transport/TaskGroup.hh +new file mode 100644 +index 0000000..b95b5d8 +--- /dev/null ++++ b/gazebo/transport/TaskGroup.hh +@@ -0,0 +1,47 @@ ++/* ++ * Copyright (C) 2021 Open Source Robotics Foundation ++ * ++ * Licensed under the Apache License, Version 2.0 (the "License"); ++ * you may not use this file except in compliance with the License. ++ * You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ * ++*/ ++#ifndef GAZEBO_TRANSPORT_TASKGROUP_HH_ ++#define GAZEBO_TRANSPORT_TASKGROUP_HH_ ++ ++#include ++ ++// Emit is both a macro in Qt and a function defined by tbb ++#undef emit ++#include ++#define emit ++ ++namespace gazebo { ++ namespace transport { ++ class TaskGroup ++ { ++ public: ~TaskGroup() noexcept ++ { ++ // Wait for running tasks to finish ++ this->taskGroup.wait(); ++ } ++ ++ public: template void run(Args&&... args) ++ { ++ this->taskGroup.run(Functor(std::forward(args)...)); ++ } ++ ++ private: tbb::task_group taskGroup; ++ }; ++ } ++} ++ ++#endif +diff --git a/gazebo/transport/transport_pch.hh b/gazebo/transport/transport_pch.hh +index 0119d40..f288de2 100644 +--- a/gazebo/transport/transport_pch.hh ++++ b/gazebo/transport/transport_pch.hh +@@ -21,6 +21,7 @@ + * To get a starting list for this file, I use the command: + * grep --include="*.hh" --include="*.cc" --no-filename -r "#include <" | sort -u + */ ++ + #include + #include + #include +@@ -44,8 +45,18 @@ + #include + #include + #include ++#include ++#ifndef TBB_VERSION_MAJOR ++#include ++#endif ++#if TBB_VERSION_MAJOR < 2021 + #include + #include + #include ++#else ++#undef emit ++#include ++#define emit ++#endif + #include + #include +diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt +index 5f2c112..6d09a11 100644 +--- a/tools/CMakeLists.txt ++++ b/tools/CMakeLists.txt +@@ -49,6 +49,7 @@ target_link_libraries(gz + gazebo_gui + gazebo_physics + gazebo_sensors ++ gazebo_transport + ${Qt5Core_LIBRARIES} + ${Qt5Widgets_LIBRARIES} + ${Boost_LIBRARIES} diff --git a/ports/gazebo/portfile.cmake b/ports/gazebo/portfile.cmake index 40de3b16bf..bc85591128 100644 --- a/ports/gazebo/portfile.cmake +++ b/ports/gazebo/portfile.cmake @@ -12,7 +12,8 @@ vcpkg_from_github( HEAD_REF gazebo11 PATCHES 0001-Fix-deps.patch - ${gazebo3211} + "${gazebo3211}" + fix-tbb.patch # Effectively https://github.com/osrf/gazebo/pull/3174 with merge conflict resolutions ) vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS @@ -33,7 +34,7 @@ vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" OPTIONS -DUSE_EXTERNAL_TINY_PROCESS_LIBRARY=ON - -DPKG_CONFIG_EXECUTABLE=${CURRENT_HOST_INSTALLED_DIR}/tools/pkgconf/pkgconf${VCPKG_HOST_EXECUTABLE_SUFFIX} + "-DPKG_CONFIG_EXECUTABLE=${CURRENT_HOST_INSTALLED_DIR}/tools/pkgconf/pkgconf${VCPKG_HOST_EXECUTABLE_SUFFIX}" ${FEATURE_OPTIONS} -DBUILD_TESTING=OFF # Not enabled by default, but to be sure ) diff --git a/ports/gazebo/vcpkg.json b/ports/gazebo/vcpkg.json index 30b8dac5ba..6daf4a7a01 100644 --- a/ports/gazebo/vcpkg.json +++ b/ports/gazebo/vcpkg.json @@ -1,7 +1,7 @@ { "name": "gazebo", "version-date": "2022-01-20", - "port-version": 3, + "port-version": 4, "description": "Open source robotics simulator.", "homepage": "http://gazebosim.org", "license": "Apache-2.0", diff --git a/ports/pagmo2/disable-C4701.patch b/ports/pagmo2/disable-C4701.patch deleted file mode 100644 index 05ed75bd2d..0000000000 --- a/ports/pagmo2/disable-C4701.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 96653ba..1afaafa 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -80,7 +80,7 @@ endif() - if(YACMA_COMPILER_IS_MSVC) - # Disable the idiotic minmax macros on MSVC, some annoying warnings, - # enable the bigobj option and the WIN32_LEAN_AND_MEAN definition. -- list(APPEND PAGMO_CXX_FLAGS_DEBUG "-DNOMINMAX" "/wd4459" "/wd4127" "/wd4702" "/wd4251" "/bigobj" "-DWIN32_LEAN_AND_MEAN") -+ list(APPEND PAGMO_CXX_FLAGS_DEBUG "-DNOMINMAX" "/wd4459" "/wd4127" "/wd4702" "/wd4251" "/wd4701" "/bigobj" "-DWIN32_LEAN_AND_MEAN") - list(APPEND PAGMO_CXX_FLAGS_RELEASE "-DNOMINMAX" "/wd4459" "/wd4127" "/wd4702" "/wd4251" "/bigobj" "-DWIN32_LEAN_AND_MEAN") - # Enable strict conformance mode, if supported. - set(CMAKE_REQUIRED_QUIET TRUE) diff --git a/ports/pagmo2/disable-md-override.patch b/ports/pagmo2/disable-md-override.patch deleted file mode 100644 index a5e09d3fa3..0000000000 --- a/ports/pagmo2/disable-md-override.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 96653ba..549d9d4 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -141,6 +141,7 @@ endif() - # Boost setup. - include(PagmoFindBoost) - -+if(0) - # Explanation: on MSVC, when building static libraries, it is good practice to link - # to the static runtime. CMake, however, is hard-coded to link to the dynamic runtime. - # Hence we hackishly replace the /MD flag with /MT. This is the approach suggested -@@ -161,6 +162,7 @@ if(YACMA_COMPILER_IS_MSVC AND PAGMO_BUILD_STATIC_LIBRARY) - endif() - endforeach() - endif() -+endif() - - # List of source files. - set(PAGMO_SRC_FILES diff --git a/ports/pagmo2/disable-werror.patch b/ports/pagmo2/disable-werror.patch new file mode 100644 index 0000000000..bc5ba11b30 --- /dev/null +++ b/ports/pagmo2/disable-werror.patch @@ -0,0 +1,20 @@ +diff --git a/cmake_modules/yacma/YACMACompilerLinkerSettings.cmake b/cmake_modules/yacma/YACMACompilerLinkerSettings.cmake +index 7d7aa1b..81c8bf6 100644 +--- a/cmake_modules/yacma/YACMACompilerLinkerSettings.cmake ++++ b/cmake_modules/yacma/YACMACompilerLinkerSettings.cmake +@@ -95,7 +95,6 @@ if(NOT _YACMACompilerLinkerSettingsRun) + # NOTE: enable unconditionally, as it seems like the CMake + # machinery for detecting this fails. Perhaps the source code + # used for checking the flag emits warnings? +- list(APPEND _YACMA_CXX_FLAGS_DEBUG "-Werror") + # New warnings in clang 8. + # NOTE: a few issues with macros here, let's disable for now. + # _YACMA_CHECK_ENABLE_DEBUG_CXX_FLAG(-Wextra-semi-stmt) +@@ -180,7 +179,6 @@ if(NOT _YACMACompilerLinkerSettingsRun) + # Enable higher warning level than usual. + _YACMA_CHECK_ENABLE_DEBUG_CXX_FLAG(/W4) + # Treat warnings as errors. +- _YACMA_CHECK_ENABLE_DEBUG_CXX_FLAG(/WX) + endif() + + # Set the cache variables. diff --git a/ports/pagmo2/doxygen.patch b/ports/pagmo2/doxygen.patch new file mode 100644 index 0000000000..1a59a9110c --- /dev/null +++ b/ports/pagmo2/doxygen.patch @@ -0,0 +1,15 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 34bad69..dfb942d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -398,8 +398,8 @@ endif() + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/config.hpp.in" "${CMAKE_CURRENT_BINARY_DIR}/include/pagmo/config.hpp" @ONLY) + + # Configure the doc files. +-configure_file("${CMAKE_CURRENT_SOURCE_DIR}/doc/doxygen/Doxyfile.in" "${CMAKE_CURRENT_SOURCE_DIR}/doc/doxygen/Doxyfile" @ONLY) +-configure_file("${CMAKE_CURRENT_SOURCE_DIR}/doc/sphinx/conf.py.in" "${CMAKE_CURRENT_SOURCE_DIR}/doc/sphinx/conf.py" @ONLY) ++# configure_file("${CMAKE_CURRENT_SOURCE_DIR}/doc/doxygen/Doxyfile.in" "${CMAKE_CURRENT_SOURCE_DIR}/doc/doxygen/Doxyfile" @ONLY) ++# configure_file("${CMAKE_CURRENT_SOURCE_DIR}/doc/sphinx/conf.py.in" "${CMAKE_CURRENT_SOURCE_DIR}/doc/sphinx/conf.py" @ONLY) + + # This is just a simple counter variable, internal use only. + set(_PAGMO_TEST_NUM "0") diff --git a/ports/pagmo2/find-tbb.patch b/ports/pagmo2/find-tbb.patch index 8781910f8a..56d998e3e7 100644 --- a/ports/pagmo2/find-tbb.patch +++ b/ports/pagmo2/find-tbb.patch @@ -2,11 +2,12 @@ diff --git a/pagmo-config.cmake.in b/pagmo-config.cmake.in index 9553fc8..cb5e90b 100644 --- a/pagmo-config.cmake.in +++ b/pagmo-config.cmake.in -@@ -8,6 +8,7 @@ set(THREADS_PREFER_PTHREAD_FLAG YES) +@@ -8,6 +8,8 @@ set(THREADS_PREFER_PTHREAD_FLAG YES) find_package(Threads REQUIRED) unset(THREADS_PREFER_PTHREAD_FLAG) include(PagmoFindBoost) -+find_package(TBB REQUIRED) ++include(CMakeFindDependencyMacro) ++find_dependency(TBB CONFIG) @_PAGMO_CONFIG_OPTIONAL_DEPS@ # Restore original module path. set(CMAKE_MODULE_PATH "${_PAGMO_CONFIG_OLD_MODULE_PATH}") diff --git a/ports/pagmo2/portfile.cmake b/ports/pagmo2/portfile.cmake index a709a2fb6a..a221745543 100644 --- a/ports/pagmo2/portfile.cmake +++ b/ports/pagmo2/portfile.cmake @@ -1,36 +1,37 @@ vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH - REPO esa/pagmo2 - REF v2.16.1 - SHA512 dac85a8525316e827df809d187d40f14dc20db7119796b7384d7855f83ba37e0bb595f6d8199053aac857460816929dd599c9d43802f2ed920a6f42dd2f16a03 + REPO esa/pagmo2 + REF v2.18.0 + SHA512 026f038e979bb884bdc4e465bd60ffe60d3d74d38159a70897da7c890230450a0457a943e25c8bdb3f17bafdaa388a6a21f6d44502b4d08860dae6cb4e75a477 HEAD_REF master PATCHES - "disable-C4701.patch" - "disable-md-override.patch" - "find-tbb.patch" + doxygen.patch + find-tbb.patch + disable-werror.patch ) vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS FEATURES - nlopt PAGMO_WITH_NLOPT + nlopt PAGMO_WITH_NLOPT ) string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" PAGMO_BUILD_STATIC_LIBRARY) -vcpkg_configure_cmake( - SOURCE_PATH ${SOURCE_PATH} - PREFER_NINJA +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" OPTIONS ${FEATURE_OPTIONS} + -DPAGMO_BUILD_TESTS=OFF + -DPAGMO_BUILD_BENCHMARKS=OFF + -DPAGMO_BUILD_TUTORIALS=OFF -DPAGMO_WITH_EIGEN3=ON -DPAGMO_BUILD_STATIC_LIBRARY=${PAGMO_BUILD_STATIC_LIBRARY} ) -vcpkg_install_cmake() +vcpkg_cmake_install() vcpkg_copy_pdbs() -vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/pagmo) +vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake/pagmo") -file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) -file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) - -file(INSTALL ${SOURCE_PATH}/COPYING.lgpl3 DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING.lgpl3" "${SOURCE_PATH}/COPYING.gpl3") diff --git a/ports/pagmo2/vcpkg.json b/ports/pagmo2/vcpkg.json index 4e491b4969..a177b2df3b 100644 --- a/ports/pagmo2/vcpkg.json +++ b/ports/pagmo2/vcpkg.json @@ -1,14 +1,23 @@ { "name": "pagmo2", - "version": "2.16.1", - "description": "A C++ platform to perform parallel computations of optimisation tasks (global and local) via the asynchronous generalized island model.", + "version": "2.18.0", + "description": "A C++ platform to perform parallel computations of optimization tasks (global and local) via the asynchronous generalized island model.", "homepage": "https://esa.github.io/pagmo2/", + "license": "GPL-3.0-or-later OR LGPL-3.0-or-later", "dependencies": [ "boost-any", "boost-graph", "boost-serialization", "eigen3", - "tbb" + "tbb", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } ], "features": { "nlopt": { diff --git a/ports/tbb/CMakeLists.txt b/ports/tbb/CMakeLists.txt deleted file mode 100644 index ae53c40f2a..0000000000 --- a/ports/tbb/CMakeLists.txt +++ /dev/null @@ -1,40 +0,0 @@ -project(tbb CXX) - -file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*) -file(COPY ${SOURCES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/src) - -include(${CMAKE_CURRENT_BINARY_DIR}/src/cmake/TBBBuild.cmake REQUIRED) -if(NOT BUILD_SHARED_LIBS) - set(TBB_STATIC_INCLUDE extra_inc=big_iron.inc) -endif() -if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") - set(FORWARD_SDK_ROOT "SDKROOT=${CMAKE_OSX_SYSROOT}") - if(CMAKE_OSX_ARCHITECTURES STREQUAL "arm64") - set(arch "arch=arm64") - endif() -endif() - -if(CMAKE_SYSTEM_NAME STREQUAL "Linux") - if(NOT CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL CMAKE_SYSTEM_PROCESSOR) - set(arch "arch=${CMAKE_SYSTEM_PROCESSOR}") - if(CMAKE_CXX_COMPILER) - set(CPLUS "CPLUS=${CMAKE_CXX_COMPILER}") - endif() - if(CMAKE_C_COMPILER) - set(CONLY "CONLY=${CMAKE_C_COMPILER}") - endif() - endif() -endif() - -tbb_build(TBB_ROOT ${CMAKE_CURRENT_BINARY_DIR}/src MAKE_ARGS ${arch} ${CPLUS} ${CONLY} ${TBB_STATIC_INCLUDE} ${FORWARD_SDK_ROOT}) - -set(SUBDIR ${CMAKE_CURRENT_BINARY_DIR}/tbb_cmake_build/tbb_cmake_build_subdir) -if(CMAKE_BUILD_TYPE STREQUAL "Release") - set(SUBDIR "${SUBDIR}_release") -else() - set(SUBDIR "${SUBDIR}_debug") -endif() - -file(GLOB OUTPUTS ${SUBDIR}/*.so.* ${SUBDIR}/*.so ${SUBDIR}/*.a ${SUBDIR}/*.dylib ${SUBDIR}/*.dylib.*) - -install(FILES ${OUTPUTS} DESTINATION lib) diff --git a/ports/tbb/fix-static-build.patch b/ports/tbb/fix-static-build.patch deleted file mode 100644 index 18f3e2b493..0000000000 --- a/ports/tbb/fix-static-build.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/src/tbb/cilk-tbb-interop.h b/src/tbb/cilk-tbb-interop.h -index 295734b..f35531e 100644 ---- a/src/tbb/cilk-tbb-interop.h -+++ b/src/tbb/cilk-tbb-interop.h -@@ -29,6 +29,8 @@ - #else - #ifdef IN_CILK_RUNTIME - #define CILK_EXPORT __declspec(dllexport) -+#elif defined(IN_CILK_STATIC) -+#define CILK_EXPORT /* nothing */ - #else - #define CILK_EXPORT __declspec(dllimport) - #endif // IN_CILK_RUNTIME diff --git a/ports/tbb/portfile.cmake b/ports/tbb/portfile.cmake index e826081f8c..c6a46dee1b 100644 --- a/ports/tbb/portfile.cmake +++ b/ports/tbb/portfile.cmake @@ -3,136 +3,36 @@ set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled) vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO oneapi-src/oneTBB - REF eca91f16d7490a8abfdee652dadf457ec820cc37 # 2020_U3 - SHA512 7144e1dc68304b5358e6ea330431b6f0c61fadb147efa353a5b242777d6fabf7b8cf99b79cffb51b49b911dd17a9f1879619d6eebdf319f23ec3235c89cffc25 - HEAD_REF tbb_2019 - PATCHES - fix-static-build.patch - terminate-when-buildtool-notfound.patch + REF v2021.5.0 + SHA512 0e7b71022e397a6d7abb0cea106847935ae79a1e12a6976f8d038668c6eca8775ed971202c5bd518f7e517092b67af805cc5feb04b5c3a40e9fbf972cc703a46 + HEAD_REF onetbb_2021 ) -file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) - -if (NOT VCPKG_TARGET_IS_WINDOWS) - vcpkg_configure_cmake( - SOURCE_PATH ${SOURCE_PATH} - PREFER_NINJA - ) - - vcpkg_install_cmake() - - # Settings for TBBConfigInternal.cmake.in - if (VCPKG_LIBRARY_LINKAGE STREQUAL static) - set(TBB_LIB_EXT a) - else() - if (VCPKG_TARGET_IS_LINUX) - set(TBB_LIB_EXT "so.2") - elseif(VCPKG_TARGET_IS_OSX) - set(TBB_LIB_EXT "dylib") - else() - set(TBB_LIB_EXT "so") - endif() - endif() - set(TBB_LIB_PREFIX lib) -else() - if (VCPKG_CRT_LINKAGE STREQUAL static) - set(RELEASE_CONFIGURATION Release-MT) - set(DEBUG_CONFIGURATION Debug-MT) - else() - set(RELEASE_CONFIGURATION Release) - set(DEBUG_CONFIGURATION Debug) - endif() - - macro(CONFIGURE_PROJ_FILE arg) - set(CONFIGURE_FILE_NAME ${arg}) - set(CONFIGURE_BAK_FILE_NAME ${arg}.bak) - if (NOT EXISTS ${CONFIGURE_BAK_FILE_NAME}) - configure_file(${CONFIGURE_FILE_NAME} ${CONFIGURE_BAK_FILE_NAME} COPYONLY) - endif() - configure_file(${CONFIGURE_BAK_FILE_NAME} ${CONFIGURE_FILE_NAME} COPYONLY) - file(READ ${CONFIGURE_FILE_NAME} SLN_CONFIGURE) - if (VCPKG_LIBRARY_LINKAGE STREQUAL static) - string(REPLACE "DynamicLibrary<\/ConfigurationType>" - "StaticLibrary<\/ConfigurationType>" SLN_CONFIGURE "${SLN_CONFIGURE}") - string(REPLACE "\/D_CRT_SECURE_NO_DEPRECATE" - "\/D_CRT_SECURE_NO_DEPRECATE \/DIN_CILK_STATIC" SLN_CONFIGURE "${SLN_CONFIGURE}") - else() - string(REPLACE "\/D_CRT_SECURE_NO_DEPRECATE" - "\/D_CRT_SECURE_NO_DEPRECATE \/DIN_CILK_RUNTIME" SLN_CONFIGURE "${SLN_CONFIGURE}") - endif() - file(WRITE ${CONFIGURE_FILE_NAME} "${SLN_CONFIGURE}") - endmacro() - - CONFIGURE_PROJ_FILE(${SOURCE_PATH}/build/vs2013/tbb.vcxproj) - CONFIGURE_PROJ_FILE(${SOURCE_PATH}/build/vs2013/tbbmalloc.vcxproj) - CONFIGURE_PROJ_FILE(${SOURCE_PATH}/build/vs2013/tbbmalloc_proxy.vcxproj) - - vcpkg_install_msbuild( - SOURCE_PATH ${SOURCE_PATH} - PROJECT_SUBPATH build/vs2013/makefile.sln - RELEASE_CONFIGURATION ${RELEASE_CONFIGURATION} - DEBUG_CONFIGURATION ${DEBUG_CONFIGURATION} - ) - # Settings for TBBConfigInternal.cmake.in - set(TBB_LIB_EXT lib) - set(TBB_LIB_PREFIX) -endif() - -file(COPY - ${SOURCE_PATH}/include/tbb - ${SOURCE_PATH}/include/serial - DESTINATION ${CURRENT_PACKAGES_DIR}/include) - -# Settings for TBBConfigInternal.cmake.in -if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - set(TBB_DEFAULT_COMPONENTS tbb tbbmalloc) -else() - set(TBB_DEFAULT_COMPONENTS tbb tbbmalloc tbbmalloc_proxy) -endif() - -file(READ "${SOURCE_PATH}/include/tbb/tbb_stddef.h" _tbb_stddef) -string(REGEX REPLACE ".*#define TBB_VERSION_MAJOR ([0-9]+).*" "\\1" _tbb_ver_major "${_tbb_stddef}") -string(REGEX REPLACE ".*#define TBB_VERSION_MINOR ([0-9]+).*" "\\1" _tbb_ver_minor "${_tbb_stddef}") -string(REGEX REPLACE ".*#define TBB_INTERFACE_VERSION ([0-9]+).*" "\\1" TBB_INTERFACE_VERSION "${_tbb_stddef}") -set(TBB_VERSION "${_tbb_ver_major}.${_tbb_ver_minor}") -set(TBB_RELEASE_DIR "\${_tbb_root}/lib") -set(TBB_DEBUG_DIR "\${_tbb_root}/debug/lib") - -configure_file( - ${SOURCE_PATH}/cmake/templates/TBBConfigInternal.cmake.in - ${CURRENT_PACKAGES_DIR}/share/tbb/TBBConfig.cmake - @ONLY +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + -DTBB_TEST=OFF + -DTBB_STRICT=OFF ) -configure_file( - ${SOURCE_PATH}/cmake/templates/TBBConfigVersion.cmake.in - ${CURRENT_PACKAGES_DIR}/share/tbb/TBBConfigVersion.cmake - @ONLY +vcpkg_cmake_install() +vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake/TBB") +vcpkg_fixup_pkgconfig() +vcpkg_copy_pdbs() + +file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/share/doc" + "${CURRENT_PACKAGES_DIR}/debug/include" + "${CURRENT_PACKAGES_DIR}/debug/share" + # These are duplicate libraries provided on Windows -- users should use the tbb12 libraries instead + "${CURRENT_PACKAGES_DIR}/lib/tbb.lib" + "${CURRENT_PACKAGES_DIR}/debug/lib/tbb_debug.lib" ) -file(READ ${CURRENT_PACKAGES_DIR}/share/tbb/TBBConfig.cmake _contents) -string(REPLACE - "get_filename_component(_tbb_root \"\${_tbb_root}\" PATH)" - "get_filename_component(_tbb_root \"\${_tbb_root}\" PATH)\nget_filename_component(_tbb_root \"\${_tbb_root}\" PATH)" - _contents - "${_contents}" -) -string(REPLACE - "set(_tbb_release_lib \"/${TBB_LIB_PREFIX}" - "set(_tbb_release_lib \"\${_tbb_root}/lib/${TBB_LIB_PREFIX}" - _contents - "${_contents}" -) -string(REPLACE - "set(_tbb_debug_lib \"/${TBB_LIB_PREFIX}" - "set(_tbb_debug_lib \"\${_tbb_root}/debug/lib/${TBB_LIB_PREFIX}" - _contents - "${_contents}" -) +file(READ "${CURRENT_PACKAGES_DIR}/share/tbb/TBBConfig.cmake" _contents) +file(WRITE "${CURRENT_PACKAGES_DIR}/share/tbb/TBBConfig.cmake" " +include(CMakeFindDependencyMacro) +find_dependency(Threads) +${_contents}") -string(REPLACE "SHARED IMPORTED)" "UNKNOWN IMPORTED)" _contents "${_contents}") -file(WRITE ${CURRENT_PACKAGES_DIR}/share/tbb/TBBConfig.cmake "${_contents}") - -file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/tbb) -# Handle copyright -file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) +file(INSTALL "${SOURCE_PATH}/LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) diff --git a/ports/tbb/terminate-when-buildtool-notfound.patch b/ports/tbb/terminate-when-buildtool-notfound.patch deleted file mode 100644 index 9599b48cd0..0000000000 --- a/ports/tbb/terminate-when-buildtool-notfound.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/cmake/TBBBuild.cmake b/cmake/TBBBuild.cmake -index a2222e3..756d85c 100644 ---- a/cmake/TBBBuild.cmake -+++ b/cmake/TBBBuild.cmake -@@ -158,7 +158,7 @@ function(tbb_build) - mark_as_advanced(TBB_MAKE_TOOL) - - if (NOT TBB_MAKE_TOOL) -- message(STATUS "Intel TBB can not be built: required make-tool (${make_tool_name}) was not found") -+ message(FATAL_ERROR "Intel TBB can not be built: required make-tool (${make_tool_name}) was not found") - set(${tbb_build_CONFIG_DIR} ${tbb_build_CONFIG_DIR}-NOTFOUND PARENT_SCOPE) - return() - endif() diff --git a/ports/tbb/usage b/ports/tbb/usage deleted file mode 100644 index ecea9834c9..0000000000 --- a/ports/tbb/usage +++ /dev/null @@ -1,4 +0,0 @@ -The package tbb provides CMake targets: - - find_package(TBB CONFIG REQUIRED) - target_link_libraries(main PRIVATE TBB::tbb) diff --git a/ports/tbb/vcpkg.json b/ports/tbb/vcpkg.json index 09ab4cd1e3..32a12b26f3 100644 --- a/ports/tbb/vcpkg.json +++ b/ports/tbb/vcpkg.json @@ -1,8 +1,18 @@ { "name": "tbb", - "version-string": "2020_U3", - "port-version": 8, + "version": "2021.5.0", "description": "Intel's Threading Building Blocks.", "homepage": "https://github.com/01org/tbb", - "supports": "!(uwp | arm | arm64) | linux | osx" + "license": "Apache-2.0", + "supports": "(windows & !uwp) | linux | osx", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] } diff --git a/ports/usd/portfile.cmake b/ports/usd/portfile.cmake index 58d328ea87..b1eda984b3 100644 --- a/ports/usd/portfile.cmake +++ b/ports/usd/portfile.cmake @@ -1,6 +1,15 @@ # Don't file if the bin folder exists. We need exe and custom files. SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) +message(STATUS [=[ +The usd port does not work the the version of Threading Building Blocks (tbb) currently chosen by vcpkg's baselines, +and does not expect to be updated to work with current versions soon. See +https://github.com/PixarAnimationStudios/USD/issues/1600 + +If you must use this port in your project, pin a version of tbb of 2020_U3 or older via a manifest file. +See https://vcpkg.io/en/docs/examples/versioning.getting-started.html for instructions. +]=]) + vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO PixarAnimationStudios/USD diff --git a/ports/usd/vcpkg.json b/ports/usd/vcpkg.json index dd308fe5d8..55dd4cc3e5 100644 --- a/ports/usd/vcpkg.json +++ b/ports/usd/vcpkg.json @@ -1,7 +1,7 @@ { "name": "usd", "version-string": "20.08", - "port-version": 2, + "port-version": 3, "description": "Universal Scene Description (USD) is an efficient, scalable system for authoring, reading, and streaming time-sampled scene description for interchange between graphics applications.", "homepage": "https://github.com/PixarAnimationStudios/USD", "supports": "!x86", diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt index c4f36f3014..4827d11b08 100644 --- a/scripts/ci.baseline.txt +++ b/scripts/ci.baseline.txt @@ -222,15 +222,6 @@ ecsutil:x64-uwp=fail # Checks for gnu extension so only works with gcc. elfutils:x64-osx=fail elfutils:arm64-osx=fail -# embree creates common conflicting static library names when built in static mode, reported upstream: -# https://github.com/embree/embree/issues/331 -embree2:x64-windows-static=skip -embree2:x64-windows-static-md=skip -# embree2 conflicts with embree3 -embree2:x64-linux=skip -embree2:x64-osx=skip -embree2:arm64-osx=skip -embree2:arm64-osx=skip epsilon:arm-uwp=fail epsilon:x64-uwp=fail faiss:arm64-windows=fail @@ -813,7 +804,10 @@ openmesh:arm-uwp=fail openmesh:x64-uwp=fail openscap:x64-windows-static=fail openscap:x64-osx=fail -openscap:arm64-osx=fail +# https://github.com/AcademySoftwareFoundation/openvdb/issues/1362 +# openvdb\openvdb\libopenvdb.lib : fatal error LNK1248: image size (109A36020) exceeds maximum allowable size (FFFFFFFF) +openvdb:x64-windows-static=fail +openvdb:x64-windows-static-md=fail openvpn3:x64-osx=fail openvpn3:arm64-osx=fail openvr:arm64-windows=fail @@ -1142,7 +1136,16 @@ unicorn-lib:x64-uwp=fail unittest-cpp:arm64-windows=fail unittest-cpp:arm-uwp=fail unittest-cpp:x64-uwp=fail -usd:x86-windows=fail +# USD has set official policy that they will not update to be compatible with TBB in the near term (https://github.com/PixarAnimationStudios/USD/issues/1600) +usd:arm64-windows=skip +usd:arm-uwp=skip +usd:x64-uwp=skip +usd:x64-windows=skip +usd:x64-windows-static=skip +usd:x64-windows-static-md=skip +usd:x64-linux=skip +usd:x64-osx=skip +usd:x86-windows=skip uthenticode:arm-uwp=fail uthenticode:x64-uwp=fail v8:arm64-windows=fail diff --git a/versions/baseline.json b/versions/baseline.json index 22bc60e516..8215bf817d 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -1322,7 +1322,7 @@ }, "cctag": { "baseline": "1.0.2", - "port-version": 1 + "port-version": 2 }, "cctz": { "baseline": "2.3", @@ -2128,10 +2128,6 @@ "baseline": "0.186", "port-version": 4 }, - "embree2": { - "baseline": "2.17.7", - "port-version": 4 - }, "embree3": { "baseline": "3.12.2", "port-version": 2 @@ -2514,7 +2510,7 @@ }, "gazebo": { "baseline": "2022-01-20", - "port-version": 3 + "port-version": 4 }, "gcem": { "baseline": "1.14.1", @@ -5509,7 +5505,7 @@ "port-version": 2 }, "pagmo2": { - "baseline": "2.16.1", + "baseline": "2.18.0", "port-version": 0 }, "paho-mqtt": { @@ -7153,8 +7149,8 @@ "port-version": 0 }, "tbb": { - "baseline": "2020_U3", - "port-version": 8 + "baseline": "2021.5.0", + "port-version": 0 }, "tcb-span": { "baseline": "2021-12-15", @@ -7526,7 +7522,7 @@ }, "usd": { "baseline": "20.08", - "port-version": 2 + "port-version": 3 }, "usockets": { "baseline": "0.8.1", diff --git a/versions/c-/cctag.json b/versions/c-/cctag.json index 25d459e2b6..90bb7c0bf6 100644 --- a/versions/c-/cctag.json +++ b/versions/c-/cctag.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "e9166dee873ce930a3c5e12b544dc47583343221", + "version-semver": "1.0.2", + "port-version": 2 + }, { "git-tree": "979f28c0cc646b1a4c057ee810772a6b8964b65a", "version-semver": "1.0.2", diff --git a/versions/g-/gazebo.json b/versions/g-/gazebo.json index 202e801f08..97ee3164a8 100644 --- a/versions/g-/gazebo.json +++ b/versions/g-/gazebo.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "b1f5088e196340aad31ea3700aceae72df1407ae", + "version-date": "2022-01-20", + "port-version": 4 + }, { "git-tree": "094ba2b47c08f30d45b33081f8b2b3790b2ec070", "version-date": "2022-01-20", diff --git a/versions/p-/pagmo2.json b/versions/p-/pagmo2.json index c149fd0f0b..9d16ccd321 100644 --- a/versions/p-/pagmo2.json +++ b/versions/p-/pagmo2.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "fa28deef736ea34bcc41143a960e8be97653ba1d", + "version": "2.18.0", + "port-version": 0 + }, { "git-tree": "ea29ee58051fba73e950597ca2b0109dd6df0dec", "version": "2.16.1", diff --git a/versions/t-/tbb.json b/versions/t-/tbb.json index bc96b93833..c18242ed46 100644 --- a/versions/t-/tbb.json +++ b/versions/t-/tbb.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "e2d94c971f648a21fa3068485c590b70bfa8b716", + "version": "2021.5.0", + "port-version": 0 + }, { "git-tree": "016aeb70aa2dfba55a141a928863a0191314d4a9", "version-string": "2020_U3", diff --git a/versions/u-/usd.json b/versions/u-/usd.json index f32c455a84..f1d76f10ef 100644 --- a/versions/u-/usd.json +++ b/versions/u-/usd.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "c241a36daa1c8695be5e0d4a8a29f2cc304dd6b1", + "version-string": "20.08", + "port-version": 3 + }, { "git-tree": "177f2af7397316cc1fa92a72ea8992f6acca8dfb", "version-string": "20.08",