# $NetBSD: Makefile,v 1.190 2020/03/20 16:10:51 nia Exp $ DISTNAME= mesa-20.0.2 PKGNAME= ${DISTNAME:S/mesa/MesaLib/} CATEGORIES= graphics MASTER_SITES= https://mesa.freedesktop.org/archive/ EXTRACT_SUFX= .tar.xz MAINTAINER= nia@NetBSD.org HOMEPAGE= https://www.mesa3d.org/ COMMENT= Open source OpenGL implementation LICENSE= mit USE_TOOLS+= bison flex pkg-config xgettext USE_LANGUAGES= c99 c++14 USE_LIBTOOL= yes # ERROR: C++ Compiler does not support -std=c++14 GCC_REQD+= 5 USE_FEATURES+= strnlen CFLAGS.SunOS+= -D_POSIX_PTHREAD_SEMANTICS CXXFLAGS.SunOS+= -Drestrict=__restrict__ LDFLAGS.SunOS+= -lsocket -lnsl # Some of these get appended in options.mk. DRI_DRIVERS= # GALLIUM_DRIVERS= swrast VULKAN_DRIVERS= # MESA_PLATFORMS= # .include "../../mk/compiler.mk" .include "features.mk" .include "options.mk" PLIST_SUBST+= GLVER="1.2.0" # classic DRI drivers PLIST_VARS+= i915 i965 r100 r200 nouveau_dri # Gallium drivers PLIST_VARS+= r300 svga nouveau vc4 lima panfrost # other features PLIST_VARS+= kms vaapi .if ${MESALIB_SUPPORTS_DRI} == "yes" BUILDLINK_API_DEPENDS.libdrm+= libdrm>=2.4.100 .include "../../x11/libdrm/buildlink3.mk" MESA_PLATFORMS+= drm surfaceless MESON_ARGS+= -Degl=true MESON_ARGS+= -Dgbm=true MESON_ARGS+= -Dgallium-xa=true PLIST.kms= yes . if !empty(MACHINE_ARCH:M*arm*) || \ ${MACHINE_ARCH} == "aarch64" # ARM Mali Utgard GALLIUM_DRIVERS+= lima PLIST.lima= yes # ARM Mali Midgard, Bifrost GALLIUM_DRIVERS+= panfrost PLIST.panfrost= yes # Vivante GCxxx #GALLIUM_DRIVERS+= etnaviv #PLIST.etnaviv= yes # Qualcomm Snapdragon #GALLIUM_DRIVERS+= freedreno #PLIST.freedreno= yes # Broadcom VideoCore 4 GALLIUM_DRIVERS+= vc4 PLIST.vc4= yes . endif . if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64" GALLIUM_DRIVERS+= svga DRI_DRIVERS+= i915 i965 PLIST.svga= yes PLIST.i915= yes PLIST.i965= yes . endif # FreeBSD lacks nouveau support (there are official binaries from Nvidia) . if ${OPSYS} != "FreeBSD" PLIST.nouveau= yes PLIST.nouveau_dri= yes GALLIUM_DRIVERS+= nouveau DRI_DRIVERS+= nouveau . endif . if !empty(MACHINE_PLATFORM:MLinux-*-x86_64) # qemu Linux guest driver # XXX test this #GALLIUM_DRIVERS+= virgl #PLIST.virgl= yes . endif # theoretically cross platform PCI drivers . if empty(MACHINE_PLATFORM:MNetBSD-*-*arm*) && \ empty(MACHINE_PLATFORM:MNetBSD-*-mipsel) DRI_DRIVERS+= r100 r200 GALLIUM_DRIVERS+= r300 PLIST.r100= yes PLIST.r200= yes PLIST.r300= yes . endif . include "../../multimedia/libva/available.mk" . if ${VAAPI_AVAILABLE} == "yes" && \ !(empty(GALLIUM_DRIVERS:Mr600) && empty(GALLIUM_DRIVERS:Mradeonsi) && \ empty(GALLIUM_DRIVERS:Mnouveau)) MESON_ARGS+= -Dgallium-va=true PLIST.vaapi= yes . include "../../multimedia/libva/buildlink3.mk" . else MESON_ARGS+= -Dgallium-va=false . endif .else MESA_PLATFORMS+= surfaceless MESON_ARGS+= -Degl=false MESON_ARGS+= -Dgbm=false .endif # ${MESALIB_SUPPORTS_DRI} == "yes" MESON_ARGS+= -Dgallium-drivers=${GALLIUM_DRIVERS:ts,} MESON_ARGS+= -Ddri-drivers=${DRI_DRIVERS:ts,} MESON_ARGS+= -Dvulkan-drivers=${VULKAN_DRIVERS:ts,} MESON_ARGS+= -Dplatforms=${MESA_PLATFORMS:ts,} .if ${MACHINE_ARCH} == "i386" MESON_ARGS+= -Dglx-read-only-text=true CFLAGS+= -march=i586 CXXFLAGS+= -march=i586 .endif MESON_ARGS+= -Dgles1=true MESON_ARGS+= -Dgles2=true MESON_ARGS+= -Dosmesa=gallium MESON_ARGS+= -Dshared-glapi=true MESON_ARGS+= -Dgallium-xvmc=false CPPFLAGS+= -DHAVE_NOATEXIT CPPFLAGS+= -DSYSCONFDIR=${PKG_SYSCONFDIR} TOOL_DEPENDS+= ${PYPKGPREFIX}-mako-[0-9]*:../../devel/py-mako # needed to build vulkan support TOOL_DEPENDS+= ${PYPKGPREFIX}-cElementTree-[0-9]*:../../textproc/py-cElementTree BUILDLINK_TRANSFORM+= rm:-Werror=incompatible-pointer-types # https://gitlab.freedesktop.org/mesa/mesa/merge_requests/1854 BUILDLINK_TRANSFORM+= rm:-Werror=return-type # ../src/intel/perf/gen_perf.c:426:7: error: %m is only allowed in syslog(3) like functions BUILDLINK_TRANSFORM+= rm:-Werror=format BUILDLINK_TRANSFORM+= rm:-Wformat-security # https://gitlab.freedesktop.org/mesa/mesa/merge_requests/1853 BUILDLINK_TRANSFORM.SunOS+= rm:-Wl,--build-id=sha1 # Work around Xorg segfaulting in radeon driver due to wrong alloca being used CFLAGS.NetBSD+= -Dalloca=__builtin_alloca CXXFLAGS.NetBSD+= -Dalloca=__builtin_alloca EGDIR= ${PREFIX}/share/examples/mesa CONF_FILES+= ${EGDIR}/00-mesa-defaults.conf ${PKG_SYSCONFDIR}/drirc INSTALLATION_DIRS+= ${EGDIR} PYTHON_FOR_BUILD_ONLY= tool PYTHON_VERSIONS_INCOMPATIBLE= 27 PKGCONFIG_OVERRIDE_STAGE= pre-install PKGCONFIG_OVERRIDE+= output/meson-private/glesv1_cm.pc PKGCONFIG_OVERRIDE+= output/meson-private/glesv2.pc PKGCONFIG_OVERRIDE+= output/meson-private/dri.pc PKGCONFIG_OVERRIDE+= output/meson-private/gbm.pc PKGCONFIG_OVERRIDE+= output/meson-private/egl.pc PKGCONFIG_OVERRIDE+= output/meson-private/osmesa.pc PKGCONFIG_OVERRIDE+= output/meson-private/xatracker.pc PKGCONFIG_OVERRIDE+= output/meson-private/gl.pc post-install: ${MV} ${DESTDIR}${PREFIX}/share/drirc.d/00-mesa-defaults.conf ${DESTDIR}${EGDIR} .if ${OPSYS} == "Darwin" install_name_tool -id ${PREFIX}/lib/dri/swrast_dri.so \ ${DESTDIR}${PREFIX}/lib/dri/swrast_dri.so .endif .include "../../devel/meson/build.mk" .include "../../devel/zlib/buildlink3.mk" .include "../../lang/python/tool.mk" .include "../../textproc/expat/buildlink3.mk" .include "../../mk/bsd.pkg.mk"