diff --git a/package/freescale-imx/imx-gpu-viv/Config.in b/package/freescale-imx/imx-gpu-viv/Config.in index 0a1be6ec13..392f004787 100644 --- a/package/freescale-imx/imx-gpu-viv/Config.in +++ b/package/freescale-imx/imx-gpu-viv/Config.in @@ -12,9 +12,6 @@ config BR2_PACKAGE_IMX_GPU_VIV depends on (BR2_arm && BR2_ARM_EABIHF) || BR2_aarch64 # Library binaries are linked against libc.so.6 depends on BR2_TOOLCHAIN_USES_GLIBC - # Library binaries are linked against libdrm.so.2, except framebuffer - # output on ARM - select BR2_PACKAGE_LIBDRM if !(BR2_arm && BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_FB) select BR2_PACKAGE_HAS_LIBEGL select BR2_PACKAGE_HAS_LIBGLES # gbm is only available in the aarch64 blobs @@ -34,6 +31,13 @@ config BR2_PACKAGE_IMX_GPU_VIV This library is provided by Freescale as-is and doesn't have an upstream. +# Library binaries are linked against libdrm.so.2 and libwayland, +# except framebuffer output on ARM +config BR2_PACKAGE_IMX_GPU_VIV_USES_WAYLAND + bool + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_WAYLAND + if BR2_PACKAGE_IMX_GPU_VIV choice @@ -45,12 +49,13 @@ choice config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_FB bool "Framebuffer" - # The i.MX8 aarch64 blob doesn't support FB output - depends on BR2_arm + # Yes, the ARM64 framebuffer libraries link against + # libdrm/libwayland. + select BR2_PACKAGE_IMX_GPU_VIV_USES_WAYLAND if BR2_aarch64 config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL bool "Wayland" - select BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_IMX_GPU_VIV_USES_WAYLAND endchoice diff --git a/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk b/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk index 14bcbb99d3..8494e875e2 100644 --- a/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk +++ b/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk @@ -27,20 +27,24 @@ endif IMX_GPU_VIV_OUTPUT = $(call qstrip,$(BR2_PACKAGE_IMX_GPU_VIV_OUTPUT)) -# Libraries are linked against libdrm, except framebuffer output on ARM -ifneq ($(IMX_GPU_VIV_OUTPUT)$(BR2_arm),fby) -IMX_GPU_VIV_DEPENDENCIES += libdrm -endif - -ifeq ($(IMX_GPU_VIV_OUTPUT),wayland) -IMX_GPU_VIV_DEPENDENCIES += wayland +ifeq ($(BR2_PACKAGE_IMX_GPU_VIV_USES_WAYLAND),y) +IMX_GPU_VIV_DEPENDENCIES += libdrm wayland +IMX_GPU_VIV_LIBDIR = wayland +else +IMX_GPU_VIV_LIBDIR = fb endif define IMX_GPU_VIV_EXTRACT_CMDS $(call NXP_EXTRACT_HELPER,$(IMX_GPU_VIV_DL_DIR)/$(IMX_GPU_VIV_SOURCE)) endef -ifeq ($(IMX_GPU_VIV_OUTPUT),fb) +# The package comes with multiple versions of egl.pc, +# depending on the output the original egl.pc is replaced +# with a symlink: +# - arm/frambuffer: symlink to egl_linuxfb.pc +# - aarch64/framebuffer: original egl.pc without a symlink +# - wayland: symblink to egl_wayland.pc +ifeq ($(IMX_GPU_VIV_OUTPUT):$(BR2_arm),fb:y) define IMX_GPU_VIV_FIXUP_PKGCONFIG ln -sf egl_linuxfb.pc $(@D)/gpu-core/usr/lib/pkgconfig/egl.pc endef @@ -61,7 +65,7 @@ endif # in the upstream archive here. We also remove unused backend files. # Make sure these commands are idempotent. define IMX_GPU_VIV_BUILD_CMDS - cp -dpfr $(@D)/gpu-core/usr/lib/$(IMX_GPU_VIV_OUTPUT)/* $(@D)/gpu-core/usr/lib/ + cp -dpfr $(@D)/gpu-core/usr/lib/$(IMX_GPU_VIV_LIBDIR)/* $(@D)/gpu-core/usr/lib/ $(foreach backend,fb wayland, \ $(RM) -r $(@D)/gpu-core/usr/lib/$(backend) )