1*4882a593Smuzhiyun################################################################################ 2*4882a593Smuzhiyun# 3*4882a593Smuzhiyun# mesa3d 4*4882a593Smuzhiyun# 5*4882a593Smuzhiyun################################################################################ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun# When updating the version, please also update mesa3d-headers 8*4882a593SmuzhiyunMESA3D_VERSION = 21.1.8 9*4882a593SmuzhiyunMESA3D_SOURCE = mesa-$(MESA3D_VERSION).tar.xz 10*4882a593SmuzhiyunMESA3D_SITE = https://archive.mesa3d.org 11*4882a593SmuzhiyunMESA3D_LICENSE = MIT, SGI, Khronos 12*4882a593SmuzhiyunMESA3D_LICENSE_FILES = docs/license.rst 13*4882a593SmuzhiyunMESA3D_CPE_ID_VENDOR = mesa3d 14*4882a593SmuzhiyunMESA3D_CPE_ID_PRODUCT = mesa 15*4882a593Smuzhiyun 16*4882a593SmuzhiyunMESA3D_INSTALL_STAGING = YES 17*4882a593Smuzhiyun 18*4882a593SmuzhiyunMESA3D_PROVIDES = 19*4882a593Smuzhiyun 20*4882a593SmuzhiyunMESA3D_DEPENDENCIES = \ 21*4882a593Smuzhiyun host-bison \ 22*4882a593Smuzhiyun host-flex \ 23*4882a593Smuzhiyun host-python3-mako \ 24*4882a593Smuzhiyun expat \ 25*4882a593Smuzhiyun libdrm \ 26*4882a593Smuzhiyun zlib 27*4882a593Smuzhiyun 28*4882a593SmuzhiyunMESA3D_CONF_OPTS = \ 29*4882a593Smuzhiyun -Dgallium-omx=disabled \ 30*4882a593Smuzhiyun -Dpower8=disabled 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun# Codesourcery ARM 2014.05 fail to link libmesa_dri_drivers.so with --as-needed linker 33*4882a593Smuzhiyun# flag due to a linker bug between binutils 2.24 and 2.25 (2.24.51.20140217). 34*4882a593Smuzhiyunifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM),y) 35*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Db_asneeded=false 36*4882a593Smuzhiyunendif 37*4882a593Smuzhiyun 38*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_MESA3D_LLVM),y) 39*4882a593SmuzhiyunMESA3D_DEPENDENCIES += host-llvm llvm 40*4882a593SmuzhiyunMESA3D_MESON_EXTRA_BINARIES += llvm-config='$(STAGING_DIR)/usr/bin/llvm-config' 41*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dllvm=enabled 42*4882a593Smuzhiyunelse 43*4882a593Smuzhiyun# Avoid automatic search of llvm-config 44*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dllvm=disabled 45*4882a593Smuzhiyunendif 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun# Disable opencl-icd: OpenCL lib will be named libOpenCL instead of 48*4882a593Smuzhiyun# libMesaOpenCL and CL headers are installed 49*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_MESA3D_OPENCL),y) 50*4882a593SmuzhiyunMESA3D_PROVIDES += libopencl 51*4882a593SmuzhiyunMESA3D_DEPENDENCIES += clang libclc 52*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dgallium-opencl=standalone 53*4882a593Smuzhiyunelse 54*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dgallium-opencl=disabled 55*4882a593Smuzhiyunendif 56*4882a593Smuzhiyun 57*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS),y) 58*4882a593SmuzhiyunMESA3D_DEPENDENCIES += elfutils 59*4882a593Smuzhiyunendif 60*4882a593Smuzhiyun 61*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_MESA3D_OPENGL_GLX),y) 62*4882a593Smuzhiyun# Disable-mangling not yet supported by meson build system. 63*4882a593Smuzhiyun# glx: 64*4882a593Smuzhiyun# dri : dri based GLX requires at least one DRI driver || dri based GLX requires shared-glapi 65*4882a593Smuzhiyun# xlib : xlib conflicts with any dri driver 66*4882a593Smuzhiyun# gallium-xlib : Gallium-xlib based GLX requires at least one gallium driver || Gallium-xlib based GLX requires softpipe or llvmpipe || gallium-xlib conflicts with any dri driver. 67*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dglx=dri 68*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_MESA3D_NEEDS_XA),y) 69*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dgallium-xa=enabled 70*4882a593Smuzhiyunelse 71*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dgallium-xa=disabled 72*4882a593Smuzhiyunendif 73*4882a593Smuzhiyunelse 74*4882a593SmuzhiyunMESA3D_CONF_OPTS += \ 75*4882a593Smuzhiyun -Dglx=disabled \ 76*4882a593Smuzhiyun -Dgallium-xa=disabled 77*4882a593Smuzhiyunendif 78*4882a593Smuzhiyun 79*4882a593Smuzhiyunifeq ($(BR2_ARM_CPU_HAS_NEON),y) 80*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dgallium-vc4-neon=auto 81*4882a593Smuzhiyunelse 82*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dgallium-vc4-neon=disabled 83*4882a593Smuzhiyunendif 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun# Drivers 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun#Gallium Drivers 88*4882a593SmuzhiyunMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV) += etnaviv 89*4882a593SmuzhiyunMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_FREEDRENO) += freedreno 90*4882a593SmuzhiyunMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_I915) += i915 91*4882a593SmuzhiyunMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_IRIS) += iris 92*4882a593SmuzhiyunMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_LIMA) += lima 93*4882a593SmuzhiyunMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU) += nouveau 94*4882a593SmuzhiyunMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_PANFROST) += panfrost 95*4882a593SmuzhiyunMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R300) += r300 96*4882a593SmuzhiyunMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600) += r600 97*4882a593SmuzhiyunMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI) += radeonsi 98*4882a593SmuzhiyunMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SVGA) += svga 99*4882a593SmuzhiyunMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST) += swrast 100*4882a593SmuzhiyunMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_TEGRA) += tegra 101*4882a593SmuzhiyunMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D) += v3d 102*4882a593SmuzhiyunMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4) += vc4 103*4882a593SmuzhiyunMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL) += virgl 104*4882a593Smuzhiyun# DRI Drivers 105*4882a593SmuzhiyunMESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_I915) += i915 106*4882a593SmuzhiyunMESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_I965) += i965 107*4882a593SmuzhiyunMESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_NOUVEAU) += nouveau 108*4882a593SmuzhiyunMESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON) += r100 109*4882a593Smuzhiyun# Vulkan Drivers 110*4882a593SmuzhiyunMESA3D_VULKAN_DRIVERS-$(BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL) += intel 111*4882a593Smuzhiyun 112*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER),) 113*4882a593SmuzhiyunMESA3D_CONF_OPTS += \ 114*4882a593Smuzhiyun -Dgallium-drivers= \ 115*4882a593Smuzhiyun -Dgallium-extra-hud=false 116*4882a593Smuzhiyunelse 117*4882a593SmuzhiyunMESA3D_CONF_OPTS += \ 118*4882a593Smuzhiyun -Dshared-glapi=enabled \ 119*4882a593Smuzhiyun -Dgallium-drivers=$(subst $(space),$(comma),$(MESA3D_GALLIUM_DRIVERS-y)) \ 120*4882a593Smuzhiyun -Dgallium-extra-hud=true 121*4882a593Smuzhiyunendif 122*4882a593Smuzhiyun 123*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),) 124*4882a593SmuzhiyunMESA3D_CONF_OPTS += \ 125*4882a593Smuzhiyun -Ddri-drivers= -Ddri3=disabled 126*4882a593Smuzhiyunelse 127*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y) 128*4882a593SmuzhiyunMESA3D_DEPENDENCIES += xlib_libxshmfence 129*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Ddri3=enabled 130*4882a593Smuzhiyunelse 131*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Ddri3=disabled 132*4882a593Smuzhiyunendif 133*4882a593SmuzhiyunMESA3D_CONF_OPTS += \ 134*4882a593Smuzhiyun -Dshared-glapi=enabled \ 135*4882a593Smuzhiyun -Dglx-direct=true \ 136*4882a593Smuzhiyun -Ddri-drivers=$(subst $(space),$(comma),$(MESA3D_DRI_DRIVERS-y)) 137*4882a593Smuzhiyunendif 138*4882a593Smuzhiyun 139*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_MESA3D_VULKAN_DRIVER),) 140*4882a593SmuzhiyunMESA3D_CONF_OPTS += \ 141*4882a593Smuzhiyun -Dvulkan-drivers= 142*4882a593Smuzhiyunelse 143*4882a593SmuzhiyunMESA3D_DEPENDENCIES += xlib_libxshmfence 144*4882a593SmuzhiyunMESA3D_CONF_OPTS += \ 145*4882a593Smuzhiyun -Ddri3=enabled \ 146*4882a593Smuzhiyun -Dvulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y)) 147*4882a593Smuzhiyunendif 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun# APIs 150*4882a593Smuzhiyun 151*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_MESA3D_OSMESA_GALLIUM),y) 152*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dosmesa=true 153*4882a593Smuzhiyunelse 154*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dosmesa=false 155*4882a593Smuzhiyunendif 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun# Always enable OpenGL: 158*4882a593Smuzhiyun# - Building OpenGL ES without OpenGL is not supported, so always keep opengl enabled. 159*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dopengl=true 160*4882a593Smuzhiyun 161*4882a593Smuzhiyun# libva and mesa3d have a circular dependency 162*4882a593Smuzhiyun# we do not need libva support in mesa3d, therefore disable this option 163*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dgallium-va=disabled 164*4882a593Smuzhiyun 165*4882a593Smuzhiyun# libGL is only provided for a full xorg stack 166*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_MESA3D_OPENGL_GLX),y) 167*4882a593SmuzhiyunMESA3D_PROVIDES += libgl 168*4882a593Smuzhiyunelse 169*4882a593Smuzhiyundefine MESA3D_REMOVE_OPENGL_HEADERS 170*4882a593Smuzhiyun rm -rf $(STAGING_DIR)/usr/include/GL/ 171*4882a593Smuzhiyunendef 172*4882a593Smuzhiyun 173*4882a593SmuzhiyunMESA3D_POST_INSTALL_STAGING_HOOKS += MESA3D_REMOVE_OPENGL_HEADERS 174*4882a593Smuzhiyunendif 175*4882a593Smuzhiyun 176*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_MESA3D_NEEDS_X11),y) 177*4882a593SmuzhiyunMESA3D_DEPENDENCIES += \ 178*4882a593Smuzhiyun xlib_libX11 \ 179*4882a593Smuzhiyun xlib_libXext \ 180*4882a593Smuzhiyun xlib_libXdamage \ 181*4882a593Smuzhiyun xlib_libXfixes \ 182*4882a593Smuzhiyun xlib_libXrandr \ 183*4882a593Smuzhiyun xlib_libXxf86vm \ 184*4882a593Smuzhiyun xorgproto \ 185*4882a593Smuzhiyun libxcb 186*4882a593SmuzhiyunMESA3D_PLATFORMS += x11 187*4882a593Smuzhiyunendif 188*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_WAYLAND),y) 189*4882a593SmuzhiyunMESA3D_DEPENDENCIES += wayland wayland-protocols 190*4882a593SmuzhiyunMESA3D_PLATFORMS += wayland 191*4882a593Smuzhiyunendif 192*4882a593Smuzhiyun 193*4882a593SmuzhiyunMESA3D_CONF_OPTS += \ 194*4882a593Smuzhiyun -Dplatforms=$(subst $(space),$(comma),$(MESA3D_PLATFORMS)) 195*4882a593Smuzhiyun 196*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_MESA3D_GBM),y) 197*4882a593SmuzhiyunMESA3D_CONF_OPTS += \ 198*4882a593Smuzhiyun -Dgbm=enabled 199*4882a593Smuzhiyunelse 200*4882a593SmuzhiyunMESA3D_CONF_OPTS += \ 201*4882a593Smuzhiyun -Dgbm=disabled 202*4882a593Smuzhiyunendif 203*4882a593Smuzhiyun 204*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y) 205*4882a593SmuzhiyunMESA3D_PROVIDES += libegl 206*4882a593SmuzhiyunMESA3D_CONF_OPTS += \ 207*4882a593Smuzhiyun -Degl=enabled 208*4882a593Smuzhiyunelse 209*4882a593SmuzhiyunMESA3D_CONF_OPTS += \ 210*4882a593Smuzhiyun -Degl=disabled 211*4882a593Smuzhiyunendif 212*4882a593Smuzhiyun 213*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_MESA3D_OPENGL_ES),y) 214*4882a593SmuzhiyunMESA3D_PROVIDES += libgles 215*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dgles1=enabled -Dgles2=enabled 216*4882a593Smuzhiyunelse 217*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dgles1=disabled -Dgles2=disabled 218*4882a593Smuzhiyunendif 219*4882a593Smuzhiyun 220*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_MESA3D_XVMC),y) 221*4882a593SmuzhiyunMESA3D_DEPENDENCIES += xlib_libXv xlib_libXvMC 222*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dgallium-xvmc=enabled 223*4882a593Smuzhiyunelse 224*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dgallium-xvmc=disabled 225*4882a593Smuzhiyunendif 226*4882a593Smuzhiyun 227*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_VALGRIND),y) 228*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dvalgrind=enabled 229*4882a593SmuzhiyunMESA3D_DEPENDENCIES += valgrind 230*4882a593Smuzhiyunelse 231*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dvalgrind=disabled 232*4882a593Smuzhiyunendif 233*4882a593Smuzhiyun 234*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBUNWIND),y) 235*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dlibunwind=enabled 236*4882a593SmuzhiyunMESA3D_DEPENDENCIES += libunwind 237*4882a593Smuzhiyunelse 238*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dlibunwind=disabled 239*4882a593Smuzhiyunendif 240*4882a593Smuzhiyun 241*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_MESA3D_VDPAU),y) 242*4882a593SmuzhiyunMESA3D_DEPENDENCIES += libvdpau 243*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dgallium-vdpau=enabled 244*4882a593Smuzhiyunelse 245*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dgallium-vdpau=disabled 246*4882a593Smuzhiyunendif 247*4882a593Smuzhiyun 248*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LM_SENSORS),y) 249*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dlmsensors=enabled 250*4882a593SmuzhiyunMESA3D_DEPENDENCIES += lm-sensors 251*4882a593Smuzhiyunelse 252*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dlmsensors=disabled 253*4882a593Smuzhiyunendif 254*4882a593Smuzhiyun 255*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_ZSTD),y) 256*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dzstd=enabled 257*4882a593SmuzhiyunMESA3D_DEPENDENCIES += zstd 258*4882a593Smuzhiyunelse 259*4882a593SmuzhiyunMESA3D_CONF_OPTS += -Dzstd=disabled 260*4882a593Smuzhiyunendif 261*4882a593Smuzhiyun 262*4882a593SmuzhiyunMESA3D_CFLAGS = $(TARGET_CFLAGS) 263*4882a593Smuzhiyun 264*4882a593Smuzhiyun# m68k needs 32-bit offsets in switch tables to build 265*4882a593Smuzhiyunifeq ($(BR2_m68k),y) 266*4882a593SmuzhiyunMESA3D_CFLAGS += -mlong-jump-table-offsets 267*4882a593Smuzhiyunendif 268*4882a593Smuzhiyun 269*4882a593Smuzhiyun$(eval $(meson-package)) 270