diff options
Diffstat (limited to 'dev-games/openscenegraph')
5 files changed, 479 insertions, 4 deletions
diff --git a/dev-games/openscenegraph/Manifest b/dev-games/openscenegraph/Manifest index c709f40c6209..830cf9a52152 100644 --- a/dev-games/openscenegraph/Manifest +++ b/dev-games/openscenegraph/Manifest @@ -1,10 +1,12 @@ AUX openscenegraph-3.6.3-cmake.patch 993 BLAKE2B 3adb6691bb1c2e9cc4e88ef5c1e107bd429564248fd72c6f4d70c1622b2933273e02f294d5fd3b2529fdbbdef65cdba41db7b441b7334b6180995896b52f8212 SHA512 2905fa5031641f2d3a8cec46c32c1cbf8adfb34b7c460c22eaecca66f5cc0b73c2bda4ed68dca3bda12a5f49385c2257bd5b4f3271b13eb979298eeaefb45789 AUX openscenegraph-3.6.3-docdir.patch 2991 BLAKE2B 9d2d3bab0d8956f66b4b23a112dbd42cbf6dc60b8f423d71f1082700d19a04867232597fadd14a60c77a0add9e60b5ffb4a0db6811dd26d854afb04d208cf716 SHA512 fd1294e441007b488186dbd944c82d1f960f7a898bcc093d0a5edfb936c727f18ad289be8dec8cfa4fbba80965bb7992b6d3a4e2c0f690a7736c05cda49a2bea +AUX openscenegraph-3.6.5-boost-1.87.0.patch 12571 BLAKE2B c9f2ed8ec754f3ee6b6cb30b22beb2d374199753c9b1f3918f7faae5da290e7700a7721e6bd351eb706b0120e5aafb3e24434f27d66fdbae1b2e1fb30e11c779 SHA512 8583c94f40160c235126ce9b0c774e2906d752a92408aae586f85f64df9a366e6611adc7260de050df8997fcf9a88c73ac63ea46b7264a3303ed9732c5778189 AUX openscenegraph-3.6.5-cmake_lua_version.patch 440 BLAKE2B 51a35309b01a096f9423ff64e66d62f99d3e26bd898db0b53c135dc99318b236a1b129211f51de9b1a29d054e0810aa4ff2a7c307dc4b4a606eb4075a60748d9 SHA512 a41c7a65b1cfd0dabc080f509cf288f575b3ec5d7666a4a889a8c3156e9d32559e1f802e23783c5c70376c82a24dd87813e9bfde0876085e0e3967b47852059a AUX openscenegraph-3.6.5-openexr3.patch 2014 BLAKE2B ea9d75986ea68519ca9d5dab066273cb8a5eb8a492c96131240d023660c939d948276c459a617413ba55b80767a945bfec038ac4ada7ca6f46185aeccdc949a4 SHA512 6cd446c69d99b68da6bf39862cdc81d51be534ed35cea9f2858dc7771dd189a9ee5f5c1f76ea1247680b03eff5b7ec3f2331c2e9505c17d5a6a3f3cac4d2ed1e AUX openscenegraph-3.6.5-remove-register-keyword.patch 4507 BLAKE2B e5b6ae132492198906db6e3490bb1c578f5294422e0bcf9b31d582187cf3de1dccc76189c0825a237f659ddaa0f956fa1d9f9e14e3bd85022d88d3918ea3cdc7 SHA512 874cf70b4c5e93d1f0b322e2c5c70cbddeda36a3e55c6ed4ecd14cfd3bb18c7bf7d841ba7d19375a2be06ece8d6550c673bb0e2aa2ecf3f7af2346403e3cabdc AUX openscenegraph-3.6.5-use_boost_asio.patch 6995 BLAKE2B 0b0c0af9980b59e1cfd4cc5256720d0e69d5e3a65173c9364036e42efa34377beb00811fc4a0aee0cead870abe0c33feaaebe57c22cbefac43d4dcf65a1d19e1 SHA512 fa7c702eaf69c7b7890cf44e5293f9c8ea73ac441af1e4573dadd62f3ca797ccbbc2fbafd8c946a936192f7331fa16d8d4247de8b657db77791d5137207c23b6 DIST OpenSceneGraph-3.6.5.tar.gz 5780762 BLAKE2B 31ebeeae94eb6aff043788313946d5c08886f97d97cd5796e600918e137ef7f06839206b79b2f5649aac7f34037d4d79e18a5638152e150de931b7f7a7d3c38b SHA512 7002fa30a3bcf6551d2e1050b4ca75a3736013fd190e4f50953717406864da1952deb09f530bc8c5ddf6e4b90204baec7dbc283f497829846d46d561f66feb4b -EBUILD openscenegraph-3.6.5-r114.ebuild 4546 BLAKE2B 9759ce89323a57eb48cddf1b195d7b6a3312abde1ca8347ec0281c3763efdc990e358f2a1e757ef10fcba3c11b090a414099c3111ea450711d70d76a16d29d87 SHA512 a04b1e62c206111a8bb04dce86562384e965ce0e0f25a03674311028759c048ff5a5717f8210b6d53e8e311117da72f190b69e8e72beba0f458975646aed9a72 -EBUILD openscenegraph-3.6.5-r115.ebuild 4546 BLAKE2B bfb89606922c73b09ccacec285b1113cfdc996c22d3049d17caaccaa7e7eaa2903b22ec2d1368c1e7d95b320bbd34237b0df5e2e89ef44ed3d81216e3a910f3a SHA512 514a681b125a96b5cb47ba09766f0c9767191c1a5f999ef1235c54a96b45306606d78c9ed0dd25d9340ad9c5b3ad09b9d86e9c507fa2d51d48c2739312113afa +EBUILD openscenegraph-3.6.5-r114.ebuild 4547 BLAKE2B 5f56b11a9d5fb8cd392fc10ee9e63df5381bcfb26a9847b99c60f7b5b2652aa63bc925f5ff39910ade4ca34a7c0c03444779c474f13575014ae7fb8b6046d63e SHA512 6d727fc0faa407d11c5e31a53d3968b71f5d4409834a6eba97460d1d2332ae625931863f9de4735004914000c077797dfe1ef1a8522ec152ac5e86c39c6a240e +EBUILD openscenegraph-3.6.5-r115.ebuild 4547 BLAKE2B 79788b4d0c3d9bb70f6330a481ab48c5dad0b9b59da7197748f630172dcc119fe21be05a94e712f6e5eb028dc37f6b514e71287c84e2f38233533797b2bd198f SHA512 00906dd98fed7dc6f4398c8feb7afedfb58f6d8a412f060c221906b13c93f89cc22a01b4b51081b84ad8bdfe8f5d7f4fca63a89ff02b1d4e880a653da3216392 +EBUILD openscenegraph-3.6.5-r116.ebuild 4594 BLAKE2B 0576aa845c71d637e01440377e3b9b1e80abad599f8f73b9c37a1a6529a6678f93b8a979e0a6aac2a850bf2d54c7af1ef6a9ffc6f39910cc8a6cb58b214d68ba SHA512 1ce4cdc30b929bfc156d54cfb1af3731453fd6600a1c7be1700d1c825c7615c72d211a1f50681ae6c8910c87b0b4e8ab6f6428e4d1dad7671e0769ed08a931c8 MISC metadata.xml 1821 BLAKE2B 2b9f8f3e71f190ba0f61a0e930e2a6fdb98ba8ef36838f2b88b74868ef41c25cc43bebcdbb3266208fac7ad13a1d73276543a145aa4f003c6e6937c6952f84f3 SHA512 693dba1413ccb84e8e2d1814cece3eac9fe506aaedaf61af4cb4b16301e4482be9409d874a1f392b095f443c37a19a4d97e2e271c84716dc7e192d001332e8a1 diff --git a/dev-games/openscenegraph/files/openscenegraph-3.6.5-boost-1.87.0.patch b/dev-games/openscenegraph/files/openscenegraph-3.6.5-boost-1.87.0.patch new file mode 100644 index 000000000000..22e54593b981 --- /dev/null +++ b/dev-games/openscenegraph/files/openscenegraph-3.6.5-boost-1.87.0.patch @@ -0,0 +1,301 @@ +diff '--color=auto' -urNp openscenegraph-3.6.5-orig/src/osgPlugins/RestHttpDevice/connection.cpp openscenegraph-3.6.5-dwok/src/osgPlugins/RestHttpDevice/connection.cpp +--- openscenegraph-3.6.5-orig/src/osgPlugins/RestHttpDevice/connection.cpp 2024-12-27 12:34:55.469783593 +0100 ++++ openscenegraph-3.6.5-dwok/src/osgPlugins/RestHttpDevice/connection.cpp 2024-12-27 12:45:50.072697619 +0100 +@@ -10,16 +10,17 @@ + + #include "connection.hpp" + #include <vector> +-#include <boost/bind.hpp> ++#include <boost/bind/bind.hpp> ++using namespace boost::placeholders; + #include "request_handler.hpp" + #include <osg/Notify> + + namespace http { + namespace server { + +-connection::connection(asio::io_service& io_service, ++connection::connection(boost::asio::io_context& io_context, + request_handler& handler) +- : socket_(io_service), ++ : socket_(io_context), + request_handler_(handler) + { + OSG_DEBUG << "RestHttpDevice :: connection::connection" << std::endl; +@@ -29,7 +30,7 @@ connection::~connection() + { + OSG_DEBUG << "RestHttpDevice :: connection::~connection" << std::endl; + } +-asio::ip::tcp::socket& connection::socket() ++boost::asio::ip::tcp::socket& connection::socket() + { + return socket_; + } +@@ -38,10 +39,8 @@ void connection::start() + { + OSG_DEBUG << "RestHttpDevice :: connection::start" << std::endl; + +- socket_.async_read_some(asio::buffer(buffer_), +- boost::bind(&connection::handle_read, shared_from_this(), +- asio::placeholders::error, +- asio::placeholders::bytes_transferred)); ++ socket_.async_read_some(boost::asio::buffer(buffer_), ++ boost::bind(&connection::handle_read, shared_from_this(), _1, _2)); + } + + void connection::handle_read(const boost::system::error_code& e, +@@ -56,23 +55,19 @@ void connection::handle_read(const boost + if (result) + { + request_handler_.handle_request(request_, reply_); +- asio::async_write(socket_, reply_.to_buffers(), +- boost::bind(&connection::handle_write, shared_from_this(), +- asio::placeholders::error)); ++ boost::asio::async_write(socket_, reply_.to_buffers(), ++ boost::bind(&connection::handle_write, shared_from_this(), _1)); + } + else if (!result) + { + reply_ = reply::stock_reply(reply::bad_request); +- asio::async_write(socket_, reply_.to_buffers(), +- boost::bind(&connection::handle_write, shared_from_this(), +- asio::placeholders::error)); ++ boost::asio::async_write(socket_, reply_.to_buffers(), ++ boost::bind(&connection::handle_write, shared_from_this(), _1)); + } + else + { +- socket_.async_read_some(asio::buffer(buffer_), +- boost::bind(&connection::handle_read, shared_from_this(), +- asio::placeholders::error, +- asio::placeholders::bytes_transferred)); ++ socket_.async_read_some(boost::asio::buffer(buffer_), ++ boost::bind(&connection::handle_read, shared_from_this(), _1, _2)); + } + } + +@@ -88,7 +83,7 @@ void connection::handle_write(const boos + { + // Initiate graceful connection closure. + boost::system::error_code ignored_ec; +- socket_.shutdown(asio::ip::tcp::socket::shutdown_both, ignored_ec); ++ socket_.shutdown(boost::asio::ip::tcp::socket::shutdown_both, ignored_ec); + } + + // No new asynchronous operations are started. This means that all shared_ptr +diff '--color=auto' -urNp openscenegraph-3.6.5-orig/src/osgPlugins/RestHttpDevice/connection.hpp openscenegraph-3.6.5-dwok/src/osgPlugins/RestHttpDevice/connection.hpp +--- openscenegraph-3.6.5-orig/src/osgPlugins/RestHttpDevice/connection.hpp 2024-12-27 12:34:55.469783593 +0100 ++++ openscenegraph-3.6.5-dwok/src/osgPlugins/RestHttpDevice/connection.hpp 2024-12-27 12:40:08.523007514 +0100 +@@ -33,7 +33,7 @@ class connection + { + public: + /// Construct a connection with the given io_service. +- explicit connection(asio::io_service& io_service, ++ explicit connection(boost::asio::io_context& io_context, + request_handler& handler); + + /// Get the socket associated with the connection. +diff '--color=auto' -urNp openscenegraph-3.6.5-orig/src/osgPlugins/RestHttpDevice/io_service_pool.cpp openscenegraph-3.6.5-dwok/src/osgPlugins/RestHttpDevice/io_service_pool.cpp +--- openscenegraph-3.6.5-orig/src/osgPlugins/RestHttpDevice/io_service_pool.cpp 2024-12-27 12:34:55.469783593 +0100 ++++ openscenegraph-3.6.5-dwok/src/osgPlugins/RestHttpDevice/io_service_pool.cpp 2024-12-27 12:48:08.654997383 +0100 +@@ -8,16 +8,18 @@ + // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + // + +-#include "server.hpp" ++#include "io_service_pool.hpp" + #include <stdexcept> +-#include <boost/bind.hpp> ++#include <boost/bind/bind.hpp> ++using namespace boost::placeholders; ++#include <boost/shared_ptr.hpp> + #include <boost/thread.hpp> + + namespace http { + namespace server { + + io_service_pool::io_service_pool(std::size_t pool_size) +- : next_io_service_(0) ++ : next_io_context_(0) + { + if (pool_size == 0) + throw std::runtime_error("io_service_pool size is 0"); +@@ -26,9 +28,9 @@ io_service_pool::io_service_pool(std::si + // exit until they are explicitly stopped. + for (std::size_t i = 0; i < pool_size; ++i) + { +- io_service_ptr io_service(new asio::io_service); +- work_ptr work(new asio::io_service::work(*io_service)); +- io_services_.push_back(io_service); ++ io_context_ptr io_context(new boost::asio::io_context); ++ work_ptr work(new boost::asio::executor_work_guard<boost::asio::io_context::executor_type>(boost::asio::make_work_guard(*io_context))); ++ io_contexts_.push_back(io_context); + work_.push_back(work); + } + } +@@ -36,31 +38,34 @@ io_service_pool::io_service_pool(std::si + void io_service_pool::run() + { + // Create a pool of threads to run all of the io_services. +- std::vector<thread> threads; +- for (std::size_t i = 0; i < io_services_.size(); ++i) +- threads.emplace_back(thread(boost::bind(&asio::io_service::run, +- io_services_[i]))); ++ std::vector<boost::shared_ptr<boost::thread>> threads; ++ for (std::size_t i = 0; i < io_contexts_.size(); ++i) ++ { ++ boost::shared_ptr<boost::thread> thread(new boost::thread( ++ boost::bind(&boost::asio::io_context::run, io_contexts_[i]))); ++ threads.push_back(thread); ++ } + + // Wait for all threads in the pool to exit. + for (std::size_t i = 0; i < threads.size(); ++i) +- threads[i].join(); ++ threads[i]->join(); + } + + void io_service_pool::stop() + { + // Explicitly stop all io_services. +- for (std::size_t i = 0; i < io_services_.size(); ++i) +- io_services_[i]->stop(); ++ for (std::size_t i = 0; i < io_contexts_.size(); ++i) ++ io_contexts_[i]->stop(); + } + +-asio::io_service& io_service_pool::get_io_service() ++boost::asio::io_context& io_service_pool::get_io_context() + { + // Use a round-robin scheme to choose the next io_service to use. +- asio::io_service& io_service = *io_services_[next_io_service_]; +- ++next_io_service_; +- if (next_io_service_ == io_services_.size()) +- next_io_service_ = 0; +- return io_service; ++ boost::asio::io_context& io_context = *io_contexts_[next_io_context_]; ++ ++next_io_context_; ++ if (next_io_context_ == io_contexts_.size()) ++ next_io_context_ = 0; ++ return io_context; + } + + } // namespace server +diff '--color=auto' -urNp openscenegraph-3.6.5-orig/src/osgPlugins/RestHttpDevice/io_service_pool.hpp openscenegraph-3.6.5-dwok/src/osgPlugins/RestHttpDevice/io_service_pool.hpp +--- openscenegraph-3.6.5-orig/src/osgPlugins/RestHttpDevice/io_service_pool.hpp 2024-12-27 12:34:55.469783593 +0100 ++++ openscenegraph-3.6.5-dwok/src/osgPlugins/RestHttpDevice/io_service_pool.hpp 2024-12-27 12:40:08.523007514 +0100 +@@ -16,8 +16,6 @@ + #include <boost/noncopyable.hpp> + #include <boost/shared_ptr.hpp> + +-using namespace boost; +- + namespace http { + namespace server { + +@@ -36,20 +34,20 @@ public: + void stop(); + + /// Get an io_service to use. +- asio::io_service& get_io_service(); ++ boost::asio::io_context& get_io_context(); + + private: +- typedef boost::shared_ptr<asio::io_service> io_service_ptr; +- typedef boost::shared_ptr<asio::io_service::work> work_ptr; ++ typedef boost::shared_ptr<boost::asio::io_context> io_context_ptr; ++ typedef boost::shared_ptr<boost::asio::executor_work_guard<boost::asio::io_context::executor_type>> work_ptr; + + /// The pool of io_services. +- std::vector<io_service_ptr> io_services_; ++ std::vector<io_context_ptr> io_contexts_; + + /// The work that keeps the io_services running. + std::vector<work_ptr> work_; + + /// The next io_service to use for a connection. +- std::size_t next_io_service_; ++ std::size_t next_io_context_; + }; + + } // namespace server +diff '--color=auto' -urNp openscenegraph-3.6.5-orig/src/osgPlugins/RestHttpDevice/ReaderWriterRestHttpDevice.cpp openscenegraph-3.6.5-dwok/src/osgPlugins/RestHttpDevice/ReaderWriterRestHttpDevice.cpp +--- openscenegraph-3.6.5-orig/src/osgPlugins/RestHttpDevice/ReaderWriterRestHttpDevice.cpp 2024-12-27 12:34:55.469783593 +0100 ++++ openscenegraph-3.6.5-dwok/src/osgPlugins/RestHttpDevice/ReaderWriterRestHttpDevice.cpp 2024-12-27 12:49:01.143868489 +0100 +@@ -35,6 +35,8 @@ + #include <osgDB/FileNameUtils> + #include <osgDB/FileUtils> + #include "RestHttpDevice.hpp" ++#include <boost/bind/bind.hpp> ++using namespace boost::placeholders; + + + +diff '--color=auto' -urNp openscenegraph-3.6.5-orig/src/osgPlugins/RestHttpDevice/RestHttpDevice.cpp openscenegraph-3.6.5-dwok/src/osgPlugins/RestHttpDevice/RestHttpDevice.cpp +--- openscenegraph-3.6.5-orig/src/osgPlugins/RestHttpDevice/RestHttpDevice.cpp 2024-12-27 12:34:55.469783593 +0100 ++++ openscenegraph-3.6.5-dwok/src/osgPlugins/RestHttpDevice/RestHttpDevice.cpp 2024-12-27 12:48:44.131586152 +0100 +@@ -16,6 +16,8 @@ + #include <osg/ValueObject> + #include <osgDB/FileUtils> + #include "request_handler.hpp" ++#include <boost/bind/bind.hpp> ++using namespace boost::placeholders; + + namespace RestHttp { + +diff '--color=auto' -urNp openscenegraph-3.6.5-orig/src/osgPlugins/RestHttpDevice/server.cpp openscenegraph-3.6.5-dwok/src/osgPlugins/RestHttpDevice/server.cpp +--- openscenegraph-3.6.5-orig/src/osgPlugins/RestHttpDevice/server.cpp 2024-12-27 12:34:55.469783593 +0100 ++++ openscenegraph-3.6.5-dwok/src/osgPlugins/RestHttpDevice/server.cpp 2024-12-27 12:47:11.326045994 +0100 +@@ -9,7 +9,8 @@ + // + + #include "server.hpp" +-#include <boost/bind.hpp> ++#include <boost/bind/bind.hpp> ++using namespace boost::placeholders; + + namespace http { + namespace server { +@@ -17,22 +18,21 @@ namespace server { + server::server(const std::string& address, const std::string& port, + const std::string& doc_root, std::size_t io_service_pool_size) + : io_service_pool_(io_service_pool_size), +- acceptor_(io_service_pool_.get_io_service()), ++ acceptor_(io_service_pool_.get_io_context()), + new_connection_(new connection( +- io_service_pool_.get_io_service(), request_handler_)), ++ io_service_pool_.get_io_context(), request_handler_)), + request_handler_(doc_root) + { + // Open the acceptor with the option to reuse the address (i.e. SO_REUSEADDR). +- asio::ip::tcp::resolver resolver(io_service_pool_.get_io_service()); +- asio::ip::tcp::resolver::query query(address, port); +- asio::ip::tcp::endpoint endpoint = *resolver.resolve(query); ++ boost::asio::ip::tcp::resolver resolver(io_service_pool_.get_io_context()); ++ boost::asio::ip::tcp::resolver::results_type endpoints = resolver.resolve(address, port); ++ boost::asio::ip::tcp::endpoint endpoint = *endpoints.begin(); + acceptor_.open(endpoint.protocol()); +- acceptor_.set_option(asio::ip::tcp::acceptor::reuse_address(true)); ++ acceptor_.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true)); + acceptor_.bind(endpoint); + acceptor_.listen(); + acceptor_.async_accept(new_connection_->socket(), +- boost::bind(&server::handle_accept, this, +- asio::placeholders::error)); ++ boost::bind(&server::handle_accept, this, _1)); + } + + void server::run() +@@ -54,10 +54,9 @@ void server::handle_accept(const boost:: + OSG_DEBUG << "RestHttpDevice :: server::handle_accept" << std::endl; + new_connection_->start(); + new_connection_.reset(new connection( +- io_service_pool_.get_io_service(), request_handler_)); ++ io_service_pool_.get_io_context(), request_handler_)); + acceptor_.async_accept(new_connection_->socket(), +- boost::bind(&server::handle_accept, this, +- asio::placeholders::error)); ++ boost::bind(&server::handle_accept, this, _1)); + } + else + { diff --git a/dev-games/openscenegraph/openscenegraph-3.6.5-r114.ebuild b/dev-games/openscenegraph/openscenegraph-3.6.5-r114.ebuild index f1e25ba3592f..06525d8ef4b1 100644 --- a/dev-games/openscenegraph/openscenegraph-3.6.5-r114.ebuild +++ b/dev-games/openscenegraph/openscenegraph-3.6.5-r114.ebuild @@ -49,7 +49,7 @@ RDEPEND=" collada? ( dev-libs/collada-dom:= ) curl? ( net-misc/curl ) examples? ( - fltk? ( x11-libs/fltk:1[opengl] ) + fltk? ( x11-libs/fltk:1=[opengl] ) fox? ( x11-libs/fox:1.6[opengl] ) glut? ( media-libs/freeglut ) sdl2? ( media-libs/libsdl2 ) diff --git a/dev-games/openscenegraph/openscenegraph-3.6.5-r115.ebuild b/dev-games/openscenegraph/openscenegraph-3.6.5-r115.ebuild index ee7b9e55301c..4fa510fea12b 100644 --- a/dev-games/openscenegraph/openscenegraph-3.6.5-r115.ebuild +++ b/dev-games/openscenegraph/openscenegraph-3.6.5-r115.ebuild @@ -49,7 +49,7 @@ RDEPEND=" collada? ( dev-libs/collada-dom:= ) curl? ( net-misc/curl ) examples? ( - fltk? ( x11-libs/fltk:1[opengl] ) + fltk? ( x11-libs/fltk:1=[opengl] ) fox? ( x11-libs/fox:1.6[opengl] ) glut? ( media-libs/freeglut ) sdl2? ( media-libs/libsdl2 ) diff --git a/dev-games/openscenegraph/openscenegraph-3.6.5-r116.ebuild b/dev-games/openscenegraph/openscenegraph-3.6.5-r116.ebuild new file mode 100644 index 000000000000..6c16da00e7b7 --- /dev/null +++ b/dev-games/openscenegraph/openscenegraph-3.6.5-r116.ebuild @@ -0,0 +1,172 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +LUA_COMPAT=( lua5-1 ) + +WX_GTK_VER="3.2-gtk3" +inherit cmake flag-o-matic lua-single wxwidgets + +MY_PN="OpenSceneGraph" +MY_P=${MY_PN}-${PV} + +DESCRIPTION="Open source high performance 3D graphics toolkit" +HOMEPAGE="https://www.openscenegraph.com/" +SRC_URI="https://github.com/${PN}/${MY_PN}/archive/${MY_P}.tar.gz" +S="${WORKDIR}/${MY_PN}-${MY_P}" + +LICENSE="wxWinLL-3 LGPL-2.1" +SLOT="0/161" # NOTE: CHECK WHEN BUMPING! Subslot is SOVERSION +KEYWORDS="~amd64 ~arm64 ~hppa ~ppc64 x86" +IUSE=" + collada curl dicom debug doc egl examples ffmpeg fltk fox gdal + gif glut gstreamer jpeg las lua openexr openinventor osgapps pdf png + sdl sdl2 svg tiff truetype vnc wxwidgets xrandr +zlib +" + +REQUIRED_USE=" + dicom? ( zlib ) + lua? ( ${LUA_REQUIRED_USE} ) + openexr? ( zlib ) + sdl2? ( sdl ) +" + +# TODO: FBX, GTA, NVTT, OpenVRML, Performer +BDEPEND=" + app-arch/unzip + virtual/pkgconfig + doc? ( app-text/doxygen[dot] ) +" +# <ffmpeg-5 for bug #831486 / bug #834425 and +# https://github.com/openscenegraph/OpenSceneGraph/issues/1111 +RDEPEND=" + media-libs/mesa[egl(+)?] + virtual/glu + virtual/opengl + x11-libs/libSM + x11-libs/libXext + collada? ( dev-libs/collada-dom:= ) + curl? ( net-misc/curl ) + examples? ( + fltk? ( x11-libs/fltk:1[opengl] ) + fox? ( x11-libs/fox:1.6[opengl] ) + glut? ( media-libs/freeglut ) + sdl2? ( media-libs/libsdl2 ) + wxwidgets? ( x11-libs/wxGTK:${WX_GTK_VER}[opengl,X] ) + ) + ffmpeg? ( <media-video/ffmpeg-5:= ) + gdal? ( sci-libs/gdal:= ) + gif? ( media-libs/giflib:= ) + gstreamer? ( + media-libs/gstreamer:1.0 + media-libs/gst-plugins-base:1.0 + ) + jpeg? ( media-libs/libjpeg-turbo:= ) + las? ( >=sci-geosciences/liblas-1.8.0 ) + lua? ( ${LUA_DEPS} ) + openexr? ( + dev-libs/imath:= + >=media-libs/openexr-3:= + ) + openinventor? ( media-libs/coin ) + pdf? ( app-text/poppler[cairo] ) + png? ( media-libs/libpng:0= ) + sdl? ( media-libs/libsdl ) + svg? ( + gnome-base/librsvg + x11-libs/cairo + ) + tiff? ( media-libs/tiff:= ) + truetype? ( media-libs/freetype:2 ) + vnc? ( net-libs/libvncserver ) + xrandr? ( x11-libs/libXrandr ) + zlib? ( sys-libs/zlib ) +" +DEPEND="${RDEPEND} + dev-libs/boost + x11-base/xorg-proto +" + +PATCHES=( + "${FILESDIR}"/${PN}-3.6.3-cmake.patch + "${FILESDIR}"/${PN}-3.6.3-docdir.patch + "${FILESDIR}"/${PN}-3.6.5-use_boost_asio.patch + "${FILESDIR}"/${PN}-3.6.5-cmake_lua_version.patch + "${FILESDIR}"/${PN}-3.6.5-openexr3.patch + "${FILESDIR}"/${PN}-3.6.5-remove-register-keyword.patch + "${FILESDIR}"/${PN}-3.6.5-boost-1.87.0.patch +) + +pkg_setup() { + use lua && lua-single_pkg_setup +} + +src_configure() { + if use examples && use wxwidgets; then + setup-wxwidgets unicode + fi + + # Needed by FFmpeg + append-cppflags -D__STDC_CONSTANT_MACROS + + local libdir=$(get_libdir) + local mycmakeargs=( + -DDYNAMIC_OPENSCENEGRAPH=ON + -DLIB_POSTFIX=${libdir/lib} + -DOPENGL_PROFILE=GL2 #GL1 GL2 GL3 GLES1 GLES3 GLES3 + $(cmake_use_find_package collada COLLADA) + $(cmake_use_find_package curl CURL) + -DBUILD_DOCUMENTATION=$(usex doc) + $(cmake_use_find_package dicom DCMTK) + $(cmake_use_find_package egl EGL) + -DBUILD_OSG_EXAMPLES=$(usex examples) + $(cmake_use_find_package ffmpeg FFmpeg) + $(cmake_use_find_package gdal GDAL) + $(cmake_use_find_package gif GIFLIB) + $(cmake_use_find_package gstreamer GLIB) + $(cmake_use_find_package gstreamer GStreamer) + -DCMAKE_DISABLE_FIND_PACKAGE_GtkGl=ON + $(cmake_use_find_package jpeg JPEG) + -DCMAKE_DISABLE_FIND_PACKAGE_Jasper=ON + $(cmake_use_find_package las LIBLAS) + $(cmake_use_find_package lua Lua) + -DCMAKE_DISABLE_FIND_PACKAGE_OpenCascade=ON + $(cmake_use_find_package openexr OpenEXR) + $(cmake_use_find_package openinventor Inventor) + -DBUILD_OSG_APPLICATIONS=$(usex osgapps) + $(cmake_use_find_package pdf Poppler-glib) + $(cmake_use_find_package png PNG) + $(cmake_use_find_package sdl SDL) + $(cmake_use_find_package sdl2 SDL2) + $(cmake_use_find_package svg RSVG) + $(cmake_use_find_package tiff TIFF) + $(cmake_use_find_package truetype Freetype) + $(cmake_use_find_package vnc LibVNCServer) + -DOSGVIEWER_USE_XRANDR=$(usex xrandr) + $(cmake_use_find_package zlib ZLIB) + -DOSG_USE_LOCAL_LUA_SOURCE=OFF + ) + + if use examples; then + mycmakeargs+=( + $(cmake_use_find_package fltk FLTK) + $(cmake_use_find_package fox FOX) + $(cmake_use_find_package glut GLUT) + $(cmake_use_find_package wxwidgets wxWidgets) + ) + fi + + if use lua; then + mycmakeargs+=( + -DLUA_VERSION="$(lua_get_version)" + ) + fi + + cmake_src_configure +} + +src_compile() { + cmake_src_compile + use doc && cmake_src_compile doc_openscenegraph doc_openthreads +} |