pkgsrc/graphics/MesaLib/Makefile
2020-03-11 14:19:55 +00:00

191 lines
5.3 KiB
Makefile

# $NetBSD: Makefile,v 1.189 2020/03/11 14:19:55 nia Exp $
DISTNAME= mesa-20.0.1
PKGNAME= ${DISTNAME:S/mesa/MesaLib/}
PKGREVISION= 1
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"