2fe3a8f81b
mesa3d uses very big switch statements, which causes the build to fail on m68k, beause the offsets there are only 16-bit. We fix that by using -mlong-jump-table-offsets on m68k, to use 32-bit offsets for switch statements, but this is only available starting with gcc 7 [0] [1]. Fixes: http://autobuild.buildroot.net/results/60c4653c2a93125edbdd0beb43cd47301643464a/ Note: we have two packages that select mesa3d, but: package/intel-mediadriver/ -> already depends on x86_64, so implies !m68k package/x11r7/xdriver_xf86-video-imx-viv/ -> imx is an ARM, but xdriver_xf86-video-imx-viv is missing a depends on BR2_arm (although the comments do have that dependency). However, it depends on other imx related packages, and they depend on either arm or aarch64, so that implies !m68k. As such, we do not need to propagate that new dependency. [0] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57583#c15 [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57583#c16 Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com> [yann.morin.1998@free.fr: - add comment - reword commit log, add BZ references, add non-propagation notes ] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
272 lines
7.7 KiB
Makefile
272 lines
7.7 KiB
Makefile
################################################################################
|
|
#
|
|
# mesa3d
|
|
#
|
|
################################################################################
|
|
|
|
# When updating the version, please also update mesa3d-headers
|
|
MESA3D_VERSION = 21.1.8
|
|
MESA3D_SOURCE = mesa-$(MESA3D_VERSION).tar.xz
|
|
MESA3D_SITE = https://archive.mesa3d.org
|
|
MESA3D_LICENSE = MIT, SGI, Khronos
|
|
MESA3D_LICENSE_FILES = docs/license.rst
|
|
MESA3D_CPE_ID_VENDOR = mesa3d
|
|
MESA3D_CPE_ID_PRODUCT = mesa
|
|
|
|
MESA3D_INSTALL_STAGING = YES
|
|
|
|
MESA3D_PROVIDES =
|
|
|
|
MESA3D_DEPENDENCIES = \
|
|
host-bison \
|
|
host-flex \
|
|
host-python3-mako \
|
|
expat \
|
|
libdrm \
|
|
zlib
|
|
|
|
MESA3D_CONF_OPTS = \
|
|
-Dgallium-omx=disabled \
|
|
-Dpower8=disabled
|
|
|
|
# Codesourcery ARM 2014.05 fail to link libmesa_dri_drivers.so with --as-needed linker
|
|
# flag due to a linker bug between binutils 2.24 and 2.25 (2.24.51.20140217).
|
|
ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM),y)
|
|
MESA3D_CONF_OPTS += -Db_asneeded=false
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_MESA3D_LLVM),y)
|
|
MESA3D_DEPENDENCIES += host-llvm llvm
|
|
MESA3D_MESON_EXTRA_BINARIES += llvm-config='$(STAGING_DIR)/usr/bin/llvm-config'
|
|
MESA3D_CONF_OPTS += -Dllvm=enabled
|
|
else
|
|
# Avoid automatic search of llvm-config
|
|
MESA3D_CONF_OPTS += -Dllvm=disabled
|
|
endif
|
|
|
|
# Disable opencl-icd: OpenCL lib will be named libOpenCL instead of
|
|
# libMesaOpenCL and CL headers are installed
|
|
ifeq ($(BR2_PACKAGE_MESA3D_OPENCL),y)
|
|
MESA3D_PROVIDES += libopencl
|
|
MESA3D_DEPENDENCIES += clang libclc
|
|
MESA3D_CONF_OPTS += -Dgallium-opencl=standalone
|
|
else
|
|
MESA3D_CONF_OPTS += -Dgallium-opencl=disabled
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS),y)
|
|
MESA3D_DEPENDENCIES += elfutils
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_GLX),y)
|
|
# Disable-mangling not yet supported by meson build system.
|
|
# glx:
|
|
# dri : dri based GLX requires at least one DRI driver || dri based GLX requires shared-glapi
|
|
# xlib : xlib conflicts with any dri driver
|
|
# 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.
|
|
MESA3D_CONF_OPTS += -Dglx=dri
|
|
ifeq ($(BR2_PACKAGE_MESA3D_NEEDS_XA),y)
|
|
MESA3D_CONF_OPTS += -Dgallium-xa=enabled
|
|
else
|
|
MESA3D_CONF_OPTS += -Dgallium-xa=disabled
|
|
endif
|
|
else
|
|
MESA3D_CONF_OPTS += \
|
|
-Dglx=disabled \
|
|
-Dgallium-xa=disabled
|
|
endif
|
|
|
|
ifeq ($(BR2_ARM_CPU_HAS_NEON),y)
|
|
MESA3D_CONF_OPTS += -Dgallium-vc4-neon=auto
|
|
else
|
|
MESA3D_CONF_OPTS += -Dgallium-vc4-neon=disabled
|
|
endif
|
|
|
|
# Drivers
|
|
|
|
#Gallium Drivers
|
|
MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV) += etnaviv
|
|
MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_FREEDRENO) += freedreno
|
|
MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_I915) += i915
|
|
MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_IRIS) += iris
|
|
MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_LIMA) += lima
|
|
MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU) += nouveau
|
|
MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_PANFROST) += panfrost
|
|
MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R300) += r300
|
|
MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600) += r600
|
|
MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI) += radeonsi
|
|
MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SVGA) += svga
|
|
MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST) += swrast
|
|
MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_TEGRA) += tegra
|
|
MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D) += v3d
|
|
MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4) += vc4
|
|
MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL) += virgl
|
|
# DRI Drivers
|
|
MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_I915) += i915
|
|
MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_I965) += i965
|
|
MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_NOUVEAU) += nouveau
|
|
MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON) += r100
|
|
# Vulkan Drivers
|
|
MESA3D_VULKAN_DRIVERS-$(BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL) += intel
|
|
|
|
ifeq ($(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER),)
|
|
MESA3D_CONF_OPTS += \
|
|
-Dgallium-drivers= \
|
|
-Dgallium-extra-hud=false
|
|
else
|
|
MESA3D_CONF_OPTS += \
|
|
-Dshared-glapi=enabled \
|
|
-Dgallium-drivers=$(subst $(space),$(comma),$(MESA3D_GALLIUM_DRIVERS-y)) \
|
|
-Dgallium-extra-hud=true
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)
|
|
MESA3D_CONF_OPTS += \
|
|
-Ddri-drivers= -Ddri3=disabled
|
|
else
|
|
ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y)
|
|
MESA3D_DEPENDENCIES += xlib_libxshmfence
|
|
MESA3D_CONF_OPTS += -Ddri3=enabled
|
|
else
|
|
MESA3D_CONF_OPTS += -Ddri3=disabled
|
|
endif
|
|
MESA3D_CONF_OPTS += \
|
|
-Dshared-glapi=enabled \
|
|
-Dglx-direct=true \
|
|
-Ddri-drivers=$(subst $(space),$(comma),$(MESA3D_DRI_DRIVERS-y))
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_MESA3D_VULKAN_DRIVER),)
|
|
MESA3D_CONF_OPTS += \
|
|
-Dvulkan-drivers=
|
|
else
|
|
MESA3D_DEPENDENCIES += xlib_libxshmfence
|
|
MESA3D_CONF_OPTS += \
|
|
-Ddri3=enabled \
|
|
-Dvulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y))
|
|
endif
|
|
|
|
# APIs
|
|
|
|
ifeq ($(BR2_PACKAGE_MESA3D_OSMESA_GALLIUM),y)
|
|
MESA3D_CONF_OPTS += -Dosmesa=true
|
|
else
|
|
MESA3D_CONF_OPTS += -Dosmesa=false
|
|
endif
|
|
|
|
# Always enable OpenGL:
|
|
# - Building OpenGL ES without OpenGL is not supported, so always keep opengl enabled.
|
|
MESA3D_CONF_OPTS += -Dopengl=true
|
|
|
|
# libva and mesa3d have a circular dependency
|
|
# we do not need libva support in mesa3d, therefore disable this option
|
|
MESA3D_CONF_OPTS += -Dgallium-va=disabled
|
|
|
|
# libGL is only provided for a full xorg stack
|
|
ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_GLX),y)
|
|
MESA3D_PROVIDES += libgl
|
|
else
|
|
define MESA3D_REMOVE_OPENGL_HEADERS
|
|
rm -rf $(STAGING_DIR)/usr/include/GL/
|
|
endef
|
|
|
|
MESA3D_POST_INSTALL_STAGING_HOOKS += MESA3D_REMOVE_OPENGL_HEADERS
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_MESA3D_NEEDS_X11),y)
|
|
MESA3D_DEPENDENCIES += \
|
|
xlib_libX11 \
|
|
xlib_libXext \
|
|
xlib_libXdamage \
|
|
xlib_libXfixes \
|
|
xlib_libXrandr \
|
|
xlib_libXxf86vm \
|
|
xorgproto \
|
|
libxcb
|
|
MESA3D_PLATFORMS += x11
|
|
endif
|
|
ifeq ($(BR2_PACKAGE_WAYLAND),y)
|
|
MESA3D_DEPENDENCIES += wayland wayland-protocols
|
|
MESA3D_PLATFORMS += wayland
|
|
endif
|
|
|
|
MESA3D_CONF_OPTS += \
|
|
-Dplatforms=$(subst $(space),$(comma),$(MESA3D_PLATFORMS))
|
|
|
|
ifeq ($(BR2_PACKAGE_MESA3D_GBM),y)
|
|
MESA3D_CONF_OPTS += \
|
|
-Dgbm=enabled
|
|
else
|
|
MESA3D_CONF_OPTS += \
|
|
-Dgbm=disabled
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y)
|
|
MESA3D_PROVIDES += libegl
|
|
MESA3D_CONF_OPTS += \
|
|
-Degl=enabled
|
|
else
|
|
MESA3D_CONF_OPTS += \
|
|
-Degl=disabled
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_ES),y)
|
|
MESA3D_PROVIDES += libgles
|
|
MESA3D_CONF_OPTS += -Dgles1=enabled -Dgles2=enabled
|
|
else
|
|
MESA3D_CONF_OPTS += -Dgles1=disabled -Dgles2=disabled
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_MESA3D_XVMC),y)
|
|
MESA3D_DEPENDENCIES += xlib_libXv xlib_libXvMC
|
|
MESA3D_CONF_OPTS += -Dgallium-xvmc=enabled
|
|
else
|
|
MESA3D_CONF_OPTS += -Dgallium-xvmc=disabled
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_VALGRIND),y)
|
|
MESA3D_CONF_OPTS += -Dvalgrind=enabled
|
|
MESA3D_DEPENDENCIES += valgrind
|
|
else
|
|
MESA3D_CONF_OPTS += -Dvalgrind=disabled
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_LIBUNWIND),y)
|
|
MESA3D_CONF_OPTS += -Dlibunwind=enabled
|
|
MESA3D_DEPENDENCIES += libunwind
|
|
else
|
|
MESA3D_CONF_OPTS += -Dlibunwind=disabled
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_MESA3D_VDPAU),y)
|
|
MESA3D_DEPENDENCIES += libvdpau
|
|
MESA3D_CONF_OPTS += -Dgallium-vdpau=enabled
|
|
else
|
|
MESA3D_CONF_OPTS += -Dgallium-vdpau=disabled
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_LM_SENSORS),y)
|
|
MESA3D_CONF_OPTS += -Dlmsensors=enabled
|
|
MESA3D_DEPENDENCIES += lm-sensors
|
|
else
|
|
MESA3D_CONF_OPTS += -Dlmsensors=disabled
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_ZSTD),y)
|
|
MESA3D_CONF_OPTS += -Dzstd=enabled
|
|
MESA3D_DEPENDENCIES += zstd
|
|
else
|
|
MESA3D_CONF_OPTS += -Dzstd=disabled
|
|
endif
|
|
|
|
MESA3D_CFLAGS = $(TARGET_CFLAGS)
|
|
|
|
# m68k needs 32-bit offsets in switch tables to build
|
|
ifeq ($(BR2_m68k),y)
|
|
MESA3D_CFLAGS += -mlong-jump-table-offsets
|
|
endif
|
|
|
|
MESA3D_CONF_OPTS += -DCMAKE_C_FLAGS="$(MESA3D_CFLAGS)"
|
|
|
|
$(eval $(meson-package))
|