imx-gpu-viv.mk 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. ################################################################################
  2. #
  3. # imx-gpu-viv
  4. #
  5. ################################################################################
  6. ifeq ($(BR2_aarch64),y)
  7. IMX_GPU_VIV_VERSION = 6.4.0.p2.4-aarch64
  8. else
  9. IMX_GPU_VIV_VERSION = 6.4.0.p2.4-aarch32
  10. endif
  11. IMX_GPU_VIV_SITE = $(FREESCALE_IMX_SITE)
  12. IMX_GPU_VIV_SOURCE = imx-gpu-viv-$(IMX_GPU_VIV_VERSION).bin
  13. IMX_GPU_VIV_INSTALL_STAGING = YES
  14. IMX_GPU_VIV_LICENSE = NXP Semiconductor Software License Agreement
  15. IMX_GPU_VIV_LICENSE_FILES = EULA COPYING
  16. IMX_GPU_VIV_REDISTRIBUTE = NO
  17. IMX_GPU_VIV_PROVIDES = libegl libgles libopenvg
  18. IMX_GPU_VIV_LIB_TARGET = $(call qstrip,$(BR2_PACKAGE_IMX_GPU_VIV_OUTPUT))
  19. ifeq ($(IMX_GPU_VIV_LIB_TARGET),x11)
  20. # The libGAL.so library provided by imx-gpu-viv uses X functions. Packages
  21. # may want to link against libGAL.so (QT5 Base with OpenGL and X support
  22. # does so). For this to work we need build dependencies to libXdamage,
  23. # libXext and libXfixes so that X functions used in libGAL.so are referenced.
  24. IMX_GPU_VIV_DEPENDENCIES += xlib_libXdamage xlib_libXext xlib_libXfixes
  25. endif
  26. ifeq ($(IMX_GPU_VIV_LIB_TARGET),wl)
  27. IMX_GPU_VIV_DEPENDENCIES += libdrm wayland
  28. endif
  29. define IMX_GPU_VIV_EXTRACT_CMDS
  30. $(call FREESCALE_IMX_EXTRACT_HELPER,$(IMX_GPU_VIV_DL_DIR)/$(IMX_GPU_VIV_SOURCE))
  31. endef
  32. # Instead of building, we fix up the inconsistencies that exist
  33. # in the upstream archive here.
  34. # Make sure these commands are idempotent.
  35. define IMX_GPU_VIV_BUILD_CMDS
  36. $(SED) 's/defined(LINUX)/defined(__linux__)/g' $(@D)/gpu-core/usr/include/*/*.h
  37. $(if $(BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11)$(BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL),
  38. ln -sf libGL-$(IMX_GPU_VIV_LIB_TARGET).so $(@D)/gpu-core/usr/lib/libGL.so
  39. ln -sf libGL-$(IMX_GPU_VIV_LIB_TARGET).so $(@D)/gpu-core/usr/lib/libGL.so.1
  40. ln -sf libGL-$(IMX_GPU_VIV_LIB_TARGET).so $(@D)/gpu-core/usr/lib/libGL.so.1.2
  41. ln -sf libGL-$(IMX_GPU_VIV_LIB_TARGET).so $(@D)/gpu-core/usr/lib/libGL.so.1.2.0
  42. )
  43. ln -sf libEGL-$(IMX_GPU_VIV_LIB_TARGET).so $(@D)/gpu-core/usr/lib/libEGL.so
  44. ln -sf libEGL-$(IMX_GPU_VIV_LIB_TARGET).so $(@D)/gpu-core/usr/lib/libEGL.so.1
  45. ln -sf libEGL-$(IMX_GPU_VIV_LIB_TARGET).so $(@D)/gpu-core/usr/lib/libEGL.so.1.0
  46. ln -sf libGLESv2-$(IMX_GPU_VIV_LIB_TARGET).so $(@D)/gpu-core/usr/lib/libGLESv2.so
  47. ln -sf libGLESv2-$(IMX_GPU_VIV_LIB_TARGET).so $(@D)/gpu-core/usr/lib/libGLESv2.so.2
  48. ln -sf libGLESv2-$(IMX_GPU_VIV_LIB_TARGET).so $(@D)/gpu-core/usr/lib/libGLESv2.so.2.0.0
  49. ln -sf libGAL-$(IMX_GPU_VIV_LIB_TARGET).so $(@D)/gpu-core/usr/lib/libGAL.so
  50. ln -sf libVDK-$(IMX_GPU_VIV_LIB_TARGET).so $(@D)/gpu-core/usr/lib/libVDK.so
  51. endef
  52. ifeq ($(IMX_GPU_VIV_LIB_TARGET),fb)
  53. define IMX_GPU_VIV_FIXUP_PKGCONFIG
  54. ln -sf egl_linuxfb.pc $(@D)/gpu-core/usr/lib/pkgconfig/egl.pc
  55. endef
  56. endif
  57. ifeq ($(IMX_GPU_VIV_LIB_TARGET),wl)
  58. define IMX_GPU_VIV_FIXUP_PKGCONFIG
  59. ln -sf egl_wayland.pc $(@D)/gpu-core/usr/lib/pkgconfig/egl.pc
  60. endef
  61. endif
  62. ifeq ($(IMX_GPU_VIV_LIB_TARGET),x11)
  63. define IMX_GPU_VIV_FIXUP_PKGCONFIG
  64. for lib in egl gbm glesv1_cm glesv2 vg; do \
  65. ln -sf $${lib}_x11.pc $(@D)/gpu-core/usr/lib/pkgconfig/$${lib}.pc || exit 1; \
  66. done
  67. endef
  68. endif
  69. define IMX_GPU_VIV_INSTALL_STAGING_CMDS
  70. cp -r $(@D)/gpu-core/usr/* $(STAGING_DIR)/usr
  71. $(IMX_GPU_VIV_FIXUP_PKGCONFIG)
  72. for lib in egl gbm glesv1_cm glesv2 vg; do \
  73. $(INSTALL) -m 0644 -D \
  74. $(@D)/gpu-core/usr/lib/pkgconfig/$${lib}.pc \
  75. $(STAGING_DIR)/usr/lib/pkgconfig/$${lib}.pc; \
  76. done
  77. endef
  78. ifeq ($(BR2_PACKAGE_IMX_GPU_VIV_EXAMPLES),y)
  79. define IMX_GPU_VIV_INSTALL_EXAMPLES
  80. mkdir -p $(TARGET_DIR)/usr/share/examples/
  81. cp -r $(@D)/gpu-demos/opt/* $(TARGET_DIR)/usr/share/examples/
  82. endef
  83. endif
  84. ifeq ($(BR2_PACKAGE_IMX_GPU_VIV_GMEM_INFO),y)
  85. define IMX_GPU_VIV_INSTALL_GMEM_INFO
  86. cp -dpfr $(@D)/gpu-tools/gmem-info/usr/bin/* $(TARGET_DIR)/usr/bin/
  87. endef
  88. endif
  89. # On the target, remove the unused libraries.
  90. # Note that this is _required_, else ldconfig may create symlinks
  91. # to the wrong library
  92. define IMX_GPU_VIV_INSTALL_TARGET_CMDS
  93. $(IMX_GPU_VIV_INSTALL_EXAMPLES)
  94. $(IMX_GPU_VIV_INSTALL_GMEM_INFO)
  95. cp -a $(@D)/gpu-core/usr/lib $(TARGET_DIR)/usr
  96. $(INSTALL) -D -m 0644 $(@D)/gpu-core/etc/Vivante.icd $(TARGET_DIR)/etc/OpenCL/vendors/Vivante.icd
  97. for lib in EGL GAL GLESv2 VDK; do \
  98. for f in $(TARGET_DIR)/usr/lib/lib$${lib}-*.so; do \
  99. case $$f in \
  100. *-$(IMX_GPU_VIV_LIB_TARGET).so) : ;; \
  101. *) $(RM) $$f ;; \
  102. esac; \
  103. done; \
  104. done
  105. endef
  106. $(eval $(generic-package))