# Copyright 1999-2023 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 MY_PN="MaterialX" MY_P="${MY_PN}-${PV}" PYTHON_COMPAT=( python3_11 ) # CI does not list 3.10 for this package. inherit cmake python-single-r1 desktop if [[ ${PV} =~ 9999 ]] ; then inherit git-r3 EGIT_REPO_URI="https://github.com/AcademySoftwareFoundation/MaterialX.git" EGIT_BRANCH="main" S="${WORKDIR}/${P}" KEYWORDS="" else S="${WORKDIR}/${MY_P}" KEYWORDS="~amd64" EGIT_GLFW_COMMIT="e130e55a990998c78fd323f21076e798e0efe8a4" EGIT_IMGUI_COMMIT="9aae45eb4a05a5a1f96be1ef37eb503a12ceb889" EGIT_IMGUI_NODE_EDITOR_COMMIT="2f99b2d613a400f6579762bd7e7c343a0d844158" EGIT_NANOBIND_COMMIT="07b4e1fc9e94eeaf5e9c2f4a63bdb275a25c82c6" EGIT_NANOGUI_COMMIT="f5020e2f3e5114d517642e67afbb21cb88cf04c0" EGIT_NANOVG_COMMIT="bf2320d1175122374a9b806d91e9e666c9336375" EGIT_NANOVG_METAL_COMMIT="075b04f16c579728c693b46a2ce408f2325968cf" EGIT_ROBIN_MAP_COMMIT="a603419b9a0687c9148e02c8bd5e3db180bb9ac0" SRC_URI=" https://github.com/AcademySoftwareFoundation/MaterialX/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz https://github.com/ocornut/imgui/archive/${EGIT_IMGUI_COMMIT}.tar.gz -> imgui-${EGIT_IMGUI_COMMIT:0:7}.tar.gz https://github.com/thedmd/imgui-node-editor/archive/${EGIT_IMGUI_NODE_EDITOR_COMMIT}.tar.gz -> imgui-node-editor-${EGIT_IMGUI_NODE_EDITOR_COMMIT:0:7}.tar.gz https://github.com/mitsuba-renderer/nanogui/archive/${EGIT_NANOGUI_COMMIT}.tar.gz -> nanogui-${EGIT_NANOGUI_COMMIT:0:7}.tar.gz https://github.com/wjakob/nanobind/archive/${EGIT_NANOBIND_COMMIT}.tar.gz -> nanobind-${EGIT_NANOBIND_COMMIT:0:7}.tar.gz https://github.com/wjakob/glfw/archive/${EGIT_GLFW_COMMIT}.tar.gz -> glfw-${EGIT_GLFW_COMMIT:0:7}.tar.gz https://github.com/wjakob/nanovg/archive/${EGIT_NANOVG_COMMIT}.tar.gz -> nanovg-${EGIT_NANOVG_COMMIT:0:7}.tar.gz https://github.com/wjakob/nanovg_metal/archive/${EGIT_NANOVG_METAL_COMMIT}.tar.gz -> nanovg_metal-${EGIT_NANOVG_METAL_COMMIT:0:7}.tar.gz https://github.com/Tessil/robin-map/archive/${EGIT_ROBIN_MAP_COMMIT}.tar.gz -> robin-map-${EGIT_ROBIN_MAP_COMMIT:0:7}.tar.gz " fi DESCRIPTION="MaterialX is an open standard for the exchange of rich material \ content across applications and renderers." HOMEPAGE=" https://materialx.org/ https://github.com/AcademySoftwareFoundation/MaterialX " LICENSE=" Apache-2.0 Boost-1.0 BSD CC0-1.0 MIT ZLIB " SLOT="0/$(ver_cut 1-2)" IUSE="doc debug -examples graph-editor lto openimageio python +renderer -resources test viewer" REQUIRED_USE=" python? ( ${PYTHON_REQUIRED_USE} ) " RDEPEND=" openimageio? ( media-libs/openimageio ) media-libs/libglvnd renderer? ( x11-libs/libXt ) python? ( $(python_gen_cond_dep ' dev-python/pybind11[${PYTHON_USEDEP}] ') ) " # X? ( # x11-libs/libX11 # ) # wayland? ( # dev-libs/wayland # dev-libs/wayland-protocols # dev-util/wayland-scanner # x11-libs/libxkbcommon # ) DEPEND=" ${RDEPEND} " BDEPEND=" >=dev-build/cmake-3.1 || ( >=sys-devel/gcc-6 >=sys-devel/clang-6 ) " RESTRICT="mirror" DOCS=( CHANGELOG.md LICENSE README.md THIRD-PARTY.md ) pkg_setup() { use python && python_setup } src_unpack() { if [[ ${PV} =~ 9999 ]] ; then git-r3_fetch git-r3_checkout else unpack ${A} rm -r ${S}/source/PyMaterialX/External/PyBind11 || die pushd "nanogui-${EGIT_NANOGUI_COMMIT}" || die rm -rf \ source/MaterialXView/NanoGUI/ext/nanovg \ source/MaterialXView/NanoGUI/ext/nanovg_metal \ source/MaterialXView/NanoGUI/ext/glfw \ source/MaterialXView/NanoGUI/ext/nanobind \ || die mv -T \ "${WORKDIR}/nanovg-${EGIT_NANOVG_COMMIT}" \ "ext/nanovg" \ || die mv -T \ "${WORKDIR}/nanovg_metal-${EGIT_NANOVG_METAL_COMMIT}" \ "ext/nanovg_metal" \ || die mv -T \ "${WORKDIR}/glfw-${EGIT_GLFW_COMMIT}" \ "ext/glfw" \ || die pushd "${WORKDIR}/nanobind-${EGIT_NANOBIND_COMMIT}" || die rm -rf \ "ext/robin_map" \ || die mv "${WORKDIR}/robin-map-${EGIT_ROBIN_MAP_COMMIT}" \ ext/robin_map \ || die popd mv -T \ "${WORKDIR}/nanobind-${EGIT_NANOBIND_COMMIT}" \ "ext/nanobind" \ || die popd || die pushd "${MY_P}" || die rm -rf \ source/MaterialXView/NanoGUI \ source/MaterialXGraphEditor/External/ImGui \ source/MaterialXGraphEditor/External/ImGuiNodeEditor \ || die mv \ "${WORKDIR}/nanogui-${EGIT_NANOGUI_COMMIT}" \ source/MaterialXView/NanoGUI \ || die mv \ "${WORKDIR}/imgui-${EGIT_IMGUI_COMMIT}" \ source/MaterialXGraphEditor/External/ImGui \ || die mv \ "${WORKDIR}/imgui-node-editor-${EGIT_IMGUI_NODE_EDITOR_COMMIT}" \ source/MaterialXGraphEditor/External/ImGuiNodeEditor \ || die popd || die fi } src_prepare() { #sed -e "s/\(${CMAKE_BINARY_DIR}\)\/lib/\1\/$(get_libdir)/" -i CMakeLists.txt || die "Sed failed." sed -i 's|resources|/usr/share/materialx/resources|g' source/MaterialXView/{Main.cpp,Viewer.cpp} sed -i 's|"libraries"|"/usr/share/materialx/libraries"|g' source/MaterialXView/Main.cpp sed -i 's|resources|/usr/share/materialx/resources|g' source/MaterialXGraphEditor/{Main.cpp,Graph.cpp} sed -i 's|"libraries"|"/usr/share/materialx/libraries"|g' source/MaterialXGraphEditor/{Main.cpp,Graph.cpp} sed -i 's|"libraries"|"/usr/share/materialx/libraries"|g' source/MaterialXGenShader/GenOptions.h sed -e "s/\(@PACKAGE_CMAKE_INSTALL_PREFIX@\)\/libraries/\1\/share\/${PN}\/libraries/" \ -e "s/\(@PACKAGE_CMAKE_INSTALL_PREFIX@\)\/resources/\1\/share\/${PN}\/resources/" \ -e "s|\(@PACKAGE_CMAKE_INSTALL_PREFIX@\)\/python|\1\/$(python_get_sitedir)\/${PN}|" \ -i cmake/modules/MaterialXConfig.cmake.in || die "Sed failed." # Do not install docs by default sed -e "/install(FILES LICENSE CHANGELOG.md README.md THIRD-PARTY.md/d" \ -e "/DESTINATION .)/d" -i CMakeLists.txt || die "Sed failed." cmake_src_prepare } src_configure() { CMAKE_BUILD_TYPE=$(usex debug 'Debug' 'Release') append-cppflags $(usex debug '-DDEBUG' '-DNDEBUG') local mycmakeargs=( -DMATERIALX_INSTALL_LIB_PATH="$(get_libdir)" -DMATERIALX_INSTALL_STDLIB_PATH="share/${PN}/libraries" -DMATERIALX_PYTHON_LIBRARIES_PATH="$(python_get_sitedir)/${MY_PN}" #-DGLFW_USE_OSMESA=OFF #-DGLFW_USE_WAYLAND=$(usex wayland ON OFF) #-DMATERIALX_BUILD_JS=$(usex javascript ON OFF) -DMATERIALX_BUILD_OIIO=$(usex openimageio ON OFF) -DMATERIALX_BUILD_PYTHON=$(usex python ON OFF) -DMATERIALX_BUILD_RENDER=$(usex renderer ON OFF) -DMATERIALX_BUILD_SHARED_LIBS=ON -DMATERIALX_BUILD_TESTS=$(usex test ON OFF) -DMATERIALX_INSTALL_PYTHON=OFF -DMATERIALX_INSTALL_RESOURCES=$(usex resources ON OFF) -DMATERIALX_BUILD_GRAPH_EDITOR=$(usex graph-editor) -DMATERIALX_BUILD_VIEWER=$(usex viewer) ) if use python ; then mycmakeargs+=( -DMATERIALX_PYTHON_EXECUTABLE=${PYTHON} -DMATERIALX_PYTHON_VERSION=${EPYTHON/python/} -DPYTHON_EXECUTABLE=${PYTHON} -DMATERIALX_PYTHON_LTO=$(usex lto) ) fi cmake_src_configure } src_install() { cmake_src_install rm -rf "${ED}/var/tmp" || die echo "LDPATH=${EPREFIX}/usr/$(get_libdir)/${PN}/libraries" > 99-${PN} || die doenvd 99-${PN} use resources && mv ${D}/usr/resources/ {D}/usr/share/${PN} use viewer && domenu "${FILESDIR}/materialx-view.desktop" use graph-editor && domenu "${FILESDIR}/materialx-grapheditor.desktop" if use viewer || use graph-editor; then mkdir -p ${D}/usr/share/icons/hicolor/256x256/apps cp documents/Images/MaterialXLogo_200x155.png ${D}/usr/share/icons/hicolor/256x256/apps/materialx.png fi use doc && einstalldocs if use python ; then python_domodule python/MaterialX if use examples ; then insinto /usr/share/${PN}/python doins python/Scripts/* fi fi }