# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 PYTHON_COMPAT=( python3_{11..13} ) inherit cmake-multilib python-single-r1 DESCRIPTION="Minimalistic C++/Python GUI library" HOMEPAGE="https://github.com/mitsuba-renderer/nanogui" if [[ ${PV} =~ 9999 ]] ; then EGIT_REPO_URI="https://github.com/mitsuba-renderer/nanogui.git" inherit git-r3 else NANOVG_COMMIT="bf2320d1175122374a9b806d91e9e666c9336375" NANOGUI_COMMIT="6452dd6944d2ba5c0c9bc0042a1894f703ce1ace" SRC_URI=" https://github.com/mitsuba-renderer/nanogui/archive/${NANOGUI_COMMIT}.tar.gz -> ${P}-${NANOGUI_COMMIT:0:7}.tar.gz https://github.com/wjakob/nanovg/archive/${NANOVG_COMMIT}.tar.gz -> nanovg-${NANOVG_COMMIT:0:7}.tar.gz " KEYWORDS="amd64 x86 arm arm64" S="${WORKDIR}/${PN}-${NANOGUI_COMMIT}" fi LICENSE="ZLIB" SLOT="0" IUSE="X doc javascript examples python test" DEPEND=" dev-libs/stb:= >=media-libs/libglvnd-1.3.2[X?,${MULTILIB_USEDEP}] media-libs/glfw:0[X?,${MULTILIB_USEDEP}] " BDEPEND=" >=dev-build/cmake-3.16 python? ( dev-python/nanobind ) javascript? ( dev-util/emscripten ) doc? ( app-text/doxygen[dot] ) virtual/pkgconfig " REQUIRED_USE=" python? ( ${PYTHON_REQUIRED_USE} ) " RESTRICT=" mirror !test? ( test ) " QA_PRESTRIPPED="usr/lib/python.*/site-packages/.*" PATCHES=( "${FILESDIR}/${PN}-0.2.0-fix-include-for-GLES3-opengl.patch" ) src_unpack(){ if [[ ${PV} =~ 9999 ]] ; then git-r3_fetch git-r3_checkout else unpack ${A} rm -r "${S}/ext/nanovg" || die ln -snf "${WORKDIR}/nanovg-${NANOVG_COMMIT}" "${S}/ext/nanovg" || die fi } src_prepare() { # Allow build with system glfw sed -e 's|NOT IS_DIRECTORY .*/ext/glfw/src"|FALSE|' \ -e 's| PRE_BUILD||g' \ -e 's|add_subdirectory(\${NANOGUI_NANOBIND_DIR} ext\/nanobind)|find_package(nanobind CONFIG REQUIRED)|' \ -i CMakeLists.txt || die # Fix glvnd library link GLESv3, which is GLESv2 on mesa sed -e 's|\(list(APPEND NANOGUI_LIBS GLESv\)3)|\12)|' -i CMakeLists.txt || die sed -e "s|\${CMAKE_INSTALL_LIBDIR\}|$(python_get_sitedir)|" -i src/python/CMakeLists.txt || die cmake_src_prepare } src_configure() { abi_configure() { use javascript && CMAKE_C_COMPILER=emcc local backend=$(has_version "media-libs/libglvnd[X]" && echo "OpenGl" || echo "GLES 3") local mycmakeargs=( -DCMAKE_INSTALL_DOCDIR=/usr/share/doc/"${PF}" -Dnanobind_DIR="$(python_get_sitedir)/nanobind/cmake" -DNANOGUI_BUILD_EXAMPLES=$(usex examples) -DNANOGUI_BUILD_SHARED=ON -DNANOGUI_BUILD_PYTHON=$(usex python) -DNANOGUI_BUILD_GLAD=OFF -DNANOGUI_BUILD_GLFW=OFF -DNANOGUI_BACKEND="${backend}" ) CMAKE_BUILD_TYPE=Release cmake_src_configure } multilib_parallel_foreach_abi abi_configure }