* [Buildroot] adding package gpu-viv-bin-mx6q @ 2013-05-09 19:53 Henk Fijnvandraat 2013-05-09 19:53 ` [Buildroot] [PATCH] Add package gpu-viv-bin-mx6q to the freescale-imx directory Henk Fijnvandraat 0 siblings, 1 reply; 5+ messages in thread From: Henk Fijnvandraat @ 2013-05-09 19:53 UTC (permalink / raw) To: buildroot Adding the package and a patch for an wrong include path ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH] Add package gpu-viv-bin-mx6q to the freescale-imx directory 2013-05-09 19:53 [Buildroot] adding package gpu-viv-bin-mx6q Henk Fijnvandraat @ 2013-05-09 19:53 ` Henk Fijnvandraat 2013-05-10 22:26 ` Arnout Vandecappelle 2013-05-11 10:20 ` Thomas Petazzoni 0 siblings, 2 replies; 5+ messages in thread From: Henk Fijnvandraat @ 2013-05-09 19:53 UTC (permalink / raw) To: buildroot Signed-off-by: Henk Fijnvandraat <h.fijnvandraat@inter.nl.net> --- package/freescale-imx/Config.in | 1 + package/freescale-imx/gpu-viv-bin-mx6q/Config.in | 26 +++++++ ...gpu-viv-bin-mx6q-0001-correct-HAL-include.patch | 18 +++++ .../gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk | 77 ++++++++++++++++++++ 4 files changed, 122 insertions(+) create mode 100644 package/freescale-imx/gpu-viv-bin-mx6q/Config.in create mode 100644 package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q-0001-correct-HAL-include.patch create mode 100644 package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk diff --git a/package/freescale-imx/Config.in b/package/freescale-imx/Config.in index 8d0e347..c044608 100644 --- a/package/freescale-imx/Config.in +++ b/package/freescale-imx/Config.in @@ -12,5 +12,6 @@ menuconfig BR2_PACKAGE_IMX if BR2_PACKAGE_IMX source "package/freescale-imx/imx-lib/Config.in" +source "package/freescale-imx/gpu-viv-bin-mx6q/Config.in" source "package/freescale-imx/firmware-imx/Config.in" endif diff --git a/package/freescale-imx/gpu-viv-bin-mx6q/Config.in b/package/freescale-imx/gpu-viv-bin-mx6q/Config.in new file mode 100644 index 0000000..e09addb --- /dev/null +++ b/package/freescale-imx/gpu-viv-bin-mx6q/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_GPU_VIV_BIN_IMX6Q + bool "gpu-viv-bin-mx6q" + select BR2_PACKAGE_HAS_OPENGL_EGL + select BR2_PACKAGE_HAS_OPENGL_ES + depends on BR2_arm # Only relevant for i.MX6 + # Library binaries are linked against libc.so.6 + depends on BR2_TOOLCHAIN_CTNG_glibc || \ + BR2_TOOLCHAIN_CTNG_eglibc || \ + BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Userspace libraries for Vivante GPU on i.MX6 platforms + + It contains libraries and headers for GLES, OpenCL, and OpenVG. + It also contains a DRI plugin for X11. It also contains a + plugin for DirectFB-1.4.0, but that doesn't work together with + buildroot's DirectFB-1.4.16. + + This library is provided by Freescale as-is and doesn't have + an upstream. + +if BR2_PACKAGE_GPU_VIV_BIN_IMX6Q +config BR2_PACKAGE_GPU_VIV_BIN_IMX6Q_EXAMPLES + bool "gpu-viv-bin-mx6q-examples" + help + Copy the Vivante examples to the Target +endif diff --git a/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q-0001-correct-HAL-include.patch b/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q-0001-correct-HAL-include.patch new file mode 100644 index 0000000..f63bb9a --- /dev/null +++ b/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q-0001-correct-HAL-include.patch @@ -0,0 +1,18 @@ +Correct the directory path for gc_hal_eglplatform_type.h + +Signed-off-by: Henk Fijnvandraat <h.fijnvandraat@inter.nl.net> + +Only in gpu-viv-bin-mx6q-1.1.0: etc +diff -rup gpu-viv-bin-mx6q-1.1.0-orig/usr/include/gc_vdk_types.h gpu-viv-bin-mx6q-1.1.0/usr/include/gc_vdk_types.h +--- gpu-viv-bin-mx6q-1.1.0-orig/usr/include/gc_vdk_types.h 2012-12-18 10:35:55.000000000 +0100 ++++ gpu-viv-bin-mx6q-1.1.0/usr/include/gc_vdk_types.h 2013-05-09 21:09:28.080138681 +0200 +@@ -39,7 +39,7 @@ extern "C" { + #endif + + #include <EGL/egl.h> +-#include "gc_hal_eglplatform_type.h" ++#include <HAL/gc_hal_eglplatform_type.h> + + + /******************************************************************************* +Only in gpu-viv-bin-mx6q-1.1.0/usr/include: gc_vdk_types.h~ diff --git a/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk b/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk new file mode 100644 index 0000000..d003443 --- /dev/null +++ b/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk @@ -0,0 +1,77 @@ +############################################################# +# +# gpu-viv-bin-mx6q +# +############################################################# + +GPU_VIV_BIN_MX6Q_VERSION = $(IMX_VERSION_LEVEL) +GPU_VIV_BIN_MX6Q_SITE = $(IMX_MIRROR_SITE) +GPU_VIV_BIN_MX6Q_SOURCE = gpu-viv-bin-mx6q-$(GPU_VIV_BIN_MX6Q_VERSION).bin + +GPU_VIV_BIN_MX6Q_INSTALL_STAGING = YES + +# GPU_VIV_BIN_MX6Q_LICENSE = Freescale Semiconductor Software License Agreement +# No license file is included in the archive; we could extract it from +# the self-extractor, but that's just too much effort. +# This is a legal minefield: the EULA specifies that +# the Board Support Package includes software and hardware (sic!) +# for which a separate license is needed... +GPU_VIV_BIN_MX6Q_REDISTRIBUTE = NO + +# The archive is a shell-self-extractor of a bzipped tar. It happens +# to extract in the correct directory (gpu-viv-bin-mx6q-x.y.z) +# The --force makes sure it doesn't fail if the source dir already exists. +# The --auto-accept skips the license check - not needed for us +# because we have legal-info. +define GPU_VIV_BIN_MX6Q_EXTRACT_CMDS + cd $(BUILD_DIR); \ + sh $(DL_DIR)/$(GPU_VIV_BIN_MX6Q_SOURCE) --force --auto-accept +endef + +define GPU_VIV_BIN_MX6Q_INSTALL_STAGING_CMDS + cp -r $(@D)/usr/* $(STAGING_DIR)/usr +endef + +ifdef $(BR2_PACKAGE_GPU_VIV_BIN_IMX6Q_EXAMPLES) +define GPU_VIV_BIN_MX6Q_INSTALL_EXAMPLES + cp -r $(@D)/opt/* $(TARGET_DIR)/opt +endef +endif + +ifeq ($(BR2_PACKAGE_XORG7),y) +GPU_VIV_BIN_MX6Q_LIB_TARGET = x11 +else +# DirectFB is not supported (wrong version) +GPU_VIV_BIN_MX6Q_LIB_TARGET = fb +endif + +# Instead of building, we fix up the inconsistencies that exist +# in the upstream archive here. +# Make sure these commands are idempotent. +define GPU_VIV_BIN_MX6Q_BUILD_CMDS + $(SED) 's/defined(LINUX)/defined(__linux__)/g' $(@D)/usr/include/*/*.h + for lib in EGL GAL VIVANTE; do \ + ln -sf lib$${lib}-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so \ + $(@D)/usr/lib/lib$${lib}.so; \ + done + ln -sf libGL.so.1.2 $(@D)/usr/lib/libGL.so.1 + ln -sf libGL.so.1.2 $(@D)/usr/lib/libGL.so +endef + +# On the target, remove the unused libraries. +# Note that this is _required_, else ldconfig may create symlinks +# to the wrong library +define GPU_VIV_BIN_MX6Q_INSTALL_TARGET_CMDS + $(GPU_VIV_BIN_MX6Q_INSTALL_EXAMPLES) + cp -a $(@D)/usr/lib $(TARGET_DIR)/usr + for lib in EGL GAL VIVANTE; do \ + for f in $(TARGET_DIR)/usr/lib/lib$${lib}-*.so; do \ + case $$f in \ + *-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so) : ;; \ + *) $(RM) $$f ;; \ + esac; \ + done; \ + done +endef + +$(eval $(generic-package)) -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH] Add package gpu-viv-bin-mx6q to the freescale-imx directory 2013-05-09 19:53 ` [Buildroot] [PATCH] Add package gpu-viv-bin-mx6q to the freescale-imx directory Henk Fijnvandraat @ 2013-05-10 22:26 ` Arnout Vandecappelle 2013-05-11 10:20 ` Thomas Petazzoni 1 sibling, 0 replies; 5+ messages in thread From: Arnout Vandecappelle @ 2013-05-10 22:26 UTC (permalink / raw) To: buildroot We usually give a title like: gpu-viv-bin-mx6q: new package Also, you should probably add this to the series that moves everything imx-related into the freescale-imx directory, because it depends on that move. On 09/05/13 21:53, Henk Fijnvandraat wrote: > Signed-off-by: Henk Fijnvandraat <h.fijnvandraat@inter.nl.net> [snip] > diff --git a/package/freescale-imx/gpu-viv-bin-mx6q/Config.in b/package/freescale-imx/gpu-viv-bin-mx6q/Config.in > new file mode 100644 > index 0000000..e09addb > --- /dev/null > +++ b/package/freescale-imx/gpu-viv-bin-mx6q/Config.in > @@ -0,0 +1,26 @@ > +config BR2_PACKAGE_GPU_VIV_BIN_IMX6Q > + bool "gpu-viv-bin-mx6q" > + select BR2_PACKAGE_HAS_OPENGL_EGL > + select BR2_PACKAGE_HAS_OPENGL_ES > + depends on BR2_arm # Only relevant for i.MX6 > + # Library binaries are linked against libc.so.6 > + depends on BR2_TOOLCHAIN_CTNG_glibc || \ > + BR2_TOOLCHAIN_CTNG_eglibc || \ > + BR2_TOOLCHAIN_EXTERNAL_GLIBC > + help > + Userspace libraries for Vivante GPU on i.MX6 platforms > + > + It contains libraries and headers for GLES, OpenCL, and OpenVG. > + It also contains a DRI plugin for X11. It also contains a > + plugin for DirectFB-1.4.0, but that doesn't work together with > + buildroot's DirectFB-1.4.16. It probably would work with 1.4.16, but buildroot has 1.6.3. > + > + This library is provided by Freescale as-is and doesn't have > + an upstream. > + > +if BR2_PACKAGE_GPU_VIV_BIN_IMX6Q > +config BR2_PACKAGE_GPU_VIV_BIN_IMX6Q_EXAMPLES > + bool "gpu-viv-bin-mx6q-examples" This config option should have a more descriptive name, e.g. bool "Install examples" Note that it is not necessary to repeat the package name, because the option will be indented under gpu-viv-bin-mx6q. > + help > + Copy the Vivante examples to the Target > +endif > diff --git a/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q-0001-correct-HAL-include.patch b/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q-0001-correct-HAL-include.patch > new file mode 100644 > index 0000000..f63bb9a > --- /dev/null > +++ b/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q-0001-correct-HAL-include.patch > @@ -0,0 +1,18 @@ > +Correct the directory path for gc_hal_eglplatform_type.h > + > +Signed-off-by: Henk Fijnvandraat <h.fijnvandraat@inter.nl.net> > + > +Only in gpu-viv-bin-mx6q-1.1.0: etc > +diff -rup gpu-viv-bin-mx6q-1.1.0-orig/usr/include/gc_vdk_types.h gpu-viv-bin-mx6q-1.1.0/usr/include/gc_vdk_types.h > +--- gpu-viv-bin-mx6q-1.1.0-orig/usr/include/gc_vdk_types.h 2012-12-18 10:35:55.000000000 +0100 > ++++ gpu-viv-bin-mx6q-1.1.0/usr/include/gc_vdk_types.h 2013-05-09 21:09:28.080138681 +0200 > +@@ -39,7 +39,7 @@ extern "C" { > + #endif > + > + #include <EGL/egl.h> > +-#include "gc_hal_eglplatform_type.h" > ++#include <HAL/gc_hal_eglplatform_type.h> > + > + > + /******************************************************************************* > +Only in gpu-viv-bin-mx6q-1.1.0/usr/include: gc_vdk_types.h~ > diff --git a/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk b/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk > new file mode 100644 > index 0000000..d003443 > --- /dev/null > +++ b/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk > @@ -0,0 +1,77 @@ > +############################################################# > +# > +# gpu-viv-bin-mx6q > +# > +############################################################# > + > +GPU_VIV_BIN_MX6Q_VERSION = $(IMX_VERSION_LEVEL) > +GPU_VIV_BIN_MX6Q_SITE = $(IMX_MIRROR_SITE) > +GPU_VIV_BIN_MX6Q_SOURCE = gpu-viv-bin-mx6q-$(GPU_VIV_BIN_MX6Q_VERSION).bin > + > +GPU_VIV_BIN_MX6Q_INSTALL_STAGING = YES > + > +# GPU_VIV_BIN_MX6Q_LICENSE = Freescale Semiconductor Software License Agreement > +# No license file is included in the archive; we could extract it from > +# the self-extractor, but that's just too much effort. > +# This is a legal minefield: the EULA specifies that > +# the Board Support Package includes software and hardware (sic!) > +# for which a separate license is needed... > +GPU_VIV_BIN_MX6Q_REDISTRIBUTE = NO > + > +# The archive is a shell-self-extractor of a bzipped tar. It happens > +# to extract in the correct directory (gpu-viv-bin-mx6q-x.y.z) > +# The --force makes sure it doesn't fail if the source dir already exists. > +# The --auto-accept skips the license check - not needed for us > +# because we have legal-info. > +define GPU_VIV_BIN_MX6Q_EXTRACT_CMDS > + cd $(BUILD_DIR); \ > + sh $(DL_DIR)/$(GPU_VIV_BIN_MX6Q_SOURCE) --force --auto-accept > +endef > + > +define GPU_VIV_BIN_MX6Q_INSTALL_STAGING_CMDS > + cp -r $(@D)/usr/* $(STAGING_DIR)/usr > +endef > + > +ifdef $(BR2_PACKAGE_GPU_VIV_BIN_IMX6Q_EXAMPLES) > +define GPU_VIV_BIN_MX6Q_INSTALL_EXAMPLES > + cp -r $(@D)/opt/* $(TARGET_DIR)/opt > +endef > +endif > + > +ifeq ($(BR2_PACKAGE_XORG7),y) > +GPU_VIV_BIN_MX6Q_LIB_TARGET = x11 Actually, I never tested if the x11 version works at all - it may depend on a different X11 version than we carry, just like directfb... Regards, Arnout > +else > +# DirectFB is not supported (wrong version) > +GPU_VIV_BIN_MX6Q_LIB_TARGET = fb > +endif > + > +# Instead of building, we fix up the inconsistencies that exist > +# in the upstream archive here. > +# Make sure these commands are idempotent. > +define GPU_VIV_BIN_MX6Q_BUILD_CMDS > + $(SED) 's/defined(LINUX)/defined(__linux__)/g' $(@D)/usr/include/*/*.h > + for lib in EGL GAL VIVANTE; do \ > + ln -sf lib$${lib}-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so \ > + $(@D)/usr/lib/lib$${lib}.so; \ > + done > + ln -sf libGL.so.1.2 $(@D)/usr/lib/libGL.so.1 > + ln -sf libGL.so.1.2 $(@D)/usr/lib/libGL.so > +endef > + > +# On the target, remove the unused libraries. > +# Note that this is _required_, else ldconfig may create symlinks > +# to the wrong library > +define GPU_VIV_BIN_MX6Q_INSTALL_TARGET_CMDS > + $(GPU_VIV_BIN_MX6Q_INSTALL_EXAMPLES) > + cp -a $(@D)/usr/lib $(TARGET_DIR)/usr > + for lib in EGL GAL VIVANTE; do \ > + for f in $(TARGET_DIR)/usr/lib/lib$${lib}-*.so; do \ > + case $$f in \ > + *-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so) : ;; \ > + *) $(RM) $$f ;; \ > + esac; \ > + done; \ > + done > +endef > + > +$(eval $(generic-package)) > -- Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH] Add package gpu-viv-bin-mx6q to the freescale-imx directory 2013-05-09 19:53 ` [Buildroot] [PATCH] Add package gpu-viv-bin-mx6q to the freescale-imx directory Henk Fijnvandraat 2013-05-10 22:26 ` Arnout Vandecappelle @ 2013-05-11 10:20 ` Thomas Petazzoni 2013-05-12 18:43 ` Arnout Vandecappelle 1 sibling, 1 reply; 5+ messages in thread From: Thomas Petazzoni @ 2013-05-11 10:20 UTC (permalink / raw) To: buildroot Dear Henk Fijnvandraat, Arnout made some good comments, I have a few others below. On Thu, 9 May 2013 21:53:32 +0200, Henk Fijnvandraat wrote: > diff --git a/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk b/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk > new file mode 100644 > index 0000000..d003443 > --- /dev/null > +++ b/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk > @@ -0,0 +1,77 @@ > +############################################################# > +# > +# gpu-viv-bin-mx6q > +# > +############################################################# > + > +GPU_VIV_BIN_MX6Q_VERSION = $(IMX_VERSION_LEVEL) > +GPU_VIV_BIN_MX6Q_SITE = $(IMX_MIRROR_SITE) > +GPU_VIV_BIN_MX6Q_SOURCE = gpu-viv-bin-mx6q-$(GPU_VIV_BIN_MX6Q_VERSION).bin > + > +GPU_VIV_BIN_MX6Q_INSTALL_STAGING = YES > + > +# GPU_VIV_BIN_MX6Q_LICENSE = Freescale Semiconductor Software License Agreement Why is this in a comment? > +# No license file is included in the archive; we could extract it from > +# the self-extractor, but that's just too much effort. > +# This is a legal minefield: the EULA specifies that > +# the Board Support Package includes software and hardware (sic!) > +# for which a separate license is needed... > +GPU_VIV_BIN_MX6Q_REDISTRIBUTE = NO > + > +# The archive is a shell-self-extractor of a bzipped tar. It happens > +# to extract in the correct directory (gpu-viv-bin-mx6q-x.y.z) > +# The --force makes sure it doesn't fail if the source dir already exists. > +# The --auto-accept skips the license check - not needed for us > +# because we have legal-info. > +define GPU_VIV_BIN_MX6Q_EXTRACT_CMDS > + cd $(BUILD_DIR); \ > + sh $(DL_DIR)/$(GPU_VIV_BIN_MX6Q_SOURCE) --force --auto-accept > +endef I think we generally prefer to have the entire command executed in a sub-shell, i.e: (cd $(BUILD_DIR); \ sh $(DL_DIR)/$(GPU_VIV_BIN_MX6Q_SOURCE) --force --auto-accept) Also, what guarantees us that it will actually be extracted to the right subfilter in $(BUILD_DIR) ? > +define GPU_VIV_BIN_MX6Q_INSTALL_STAGING_CMDS > + cp -r $(@D)/usr/* $(STAGING_DIR)/usr > +endef > + > +ifdef $(BR2_PACKAGE_GPU_VIV_BIN_IMX6Q_EXAMPLES) > +define GPU_VIV_BIN_MX6Q_INSTALL_EXAMPLES > + cp -r $(@D)/opt/* $(TARGET_DIR)/opt > +endef > +endif Maybe usr/share/gpu-viv-imx6q/examples/ is a better location than opt/ ? Also, the installation steps should be after the build steps. It doesn't change anything from a functional point of view, but it's the way we write all packages, just because it is more logical. > +ifeq ($(BR2_PACKAGE_XORG7),y) > +GPU_VIV_BIN_MX6Q_LIB_TARGET = x11 > +else > +# DirectFB is not supported (wrong version) > +GPU_VIV_BIN_MX6Q_LIB_TARGET = fb > +endif Hum, so if X.org is not selected, this package installs something that doesn't work? Seems strange. Also, I see that this installs EGL libraries, I thought EGL was here to allow the creation of OpenGL contexts when there is no windowing system such as X.org. For example, with the Rasberry Pi libraries, you can have EGL+OpenGL and Qt running on top of it, without DirectFB or X.org. Isn't that also possible here? Are you sure that the "fb" target actually requires DirectFB ? > +# Instead of building, we fix up the inconsistencies that exist > +# in the upstream archive here. > +# Make sure these commands are idempotent. > +define GPU_VIV_BIN_MX6Q_BUILD_CMDS > + $(SED) 's/defined(LINUX)/defined(__linux__)/g' $(@D)/usr/include/*/*.h > + for lib in EGL GAL VIVANTE; do \ > + ln -sf lib$${lib}-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so \ > + $(@D)/usr/lib/lib$${lib}.so; \ > + done > + ln -sf libGL.so.1.2 $(@D)/usr/lib/libGL.so.1 > + ln -sf libGL.so.1.2 $(@D)/usr/lib/libGL.so > +endef > + > +# On the target, remove the unused libraries. > +# Note that this is _required_, else ldconfig may create symlinks > +# to the wrong library > +define GPU_VIV_BIN_MX6Q_INSTALL_TARGET_CMDS > + $(GPU_VIV_BIN_MX6Q_INSTALL_EXAMPLES) > + cp -a $(@D)/usr/lib $(TARGET_DIR)/usr > + for lib in EGL GAL VIVANTE; do \ > + for f in $(TARGET_DIR)/usr/lib/lib$${lib}-*.so; do \ > + case $$f in \ > + *-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so) : ;; \ > + *) $(RM) $$f ;; \ > + esac; \ > + done; \ > + done Isn't it either to only copy the relevant libraries instead of copying everything, and then remove everything that's not useful? Thanks! Thomas -- Thomas Petazzoni, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH] Add package gpu-viv-bin-mx6q to the freescale-imx directory 2013-05-11 10:20 ` Thomas Petazzoni @ 2013-05-12 18:43 ` Arnout Vandecappelle 0 siblings, 0 replies; 5+ messages in thread From: Arnout Vandecappelle @ 2013-05-12 18:43 UTC (permalink / raw) To: buildroot On 11/05/13 12:20, Thomas Petazzoni wrote: > Dear Henk Fijnvandraat, > > Arnout made some good comments, I have a few others below. > > On Thu, 9 May 2013 21:53:32 +0200, Henk Fijnvandraat wrote: [snip] >> +# The archive is a shell-self-extractor of a bzipped tar. It happens >> +# to extract in the correct directory (gpu-viv-bin-mx6q-x.y.z) >> +# The --force makes sure it doesn't fail if the source dir already exists. >> +# The --auto-accept skips the license check - not needed for us >> +# because we have legal-info. >> +define GPU_VIV_BIN_MX6Q_EXTRACT_CMDS >> + cd $(BUILD_DIR); \ >> + sh $(DL_DIR)/$(GPU_VIV_BIN_MX6Q_SOURCE) --force --auto-accept >> +endef > > I think we generally prefer to have the entire command executed in a > sub-shell, i.e: > > (cd $(BUILD_DIR); \ > sh $(DL_DIR)/$(GPU_VIV_BIN_MX6Q_SOURCE) --force --auto-accept) Begging to differ here... I don't see much point of having three levels of shells. make already starts a shell, then we start another shell to run the extractor script. The third level added by the () looks pretty redundant to me. > Also, what guarantees us that it will actually be extracted to the > right subfilter in $(BUILD_DIR) ? Well, that's mentioned in the comment above :-). If it would be extracted into a different directory, the only option would be to rename it - but you still need to know the name of the directory in which it is extracted by the extractor script. >> +define GPU_VIV_BIN_MX6Q_INSTALL_STAGING_CMDS >> + cp -r $(@D)/usr/* $(STAGING_DIR)/usr >> +endef >> + >> +ifdef $(BR2_PACKAGE_GPU_VIV_BIN_IMX6Q_EXAMPLES) >> +define GPU_VIV_BIN_MX6Q_INSTALL_EXAMPLES >> + cp -r $(@D)/opt/* $(TARGET_DIR)/opt >> +endef >> +endif > > Maybe usr/share/gpu-viv-imx6q/examples/ is a better location than opt/ ? Agreed, except that normally the share/ directory contains platform-independent things like man pages, while the examples are all binaries. > Also, the installation steps should be after the build steps. It > doesn't change anything from a functional point of view, but it's the > way we write all packages, just because it is more logical. > >> +ifeq ($(BR2_PACKAGE_XORG7),y) >> +GPU_VIV_BIN_MX6Q_LIB_TARGET = x11 >> +else >> +# DirectFB is not supported (wrong version) >> +GPU_VIV_BIN_MX6Q_LIB_TARGET = fb >> +endif > > Hum, so if X.org is not selected, this package installs something that > doesn't work? Seems strange. Comment could be better: directfb (called dfb by this package) doesn't work, but fb (= linux framebuffer without windowing layer) works. > Also, I see that this installs EGL libraries, I thought EGL was here to > allow the creation of OpenGL contexts when there is no windowing system > such as X.org. For example, with the Rasberry Pi libraries, you can > have EGL+OpenGL and Qt running on top of it, without DirectFB or X.org. > Isn't that also possible here? > > Are you sure that the "fb" target actually requires DirectFB ? > >> +# Instead of building, we fix up the inconsistencies that exist >> +# in the upstream archive here. >> +# Make sure these commands are idempotent. >> +define GPU_VIV_BIN_MX6Q_BUILD_CMDS >> + $(SED) 's/defined(LINUX)/defined(__linux__)/g' $(@D)/usr/include/*/*.h >> + for lib in EGL GAL VIVANTE; do \ >> + ln -sf lib$${lib}-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so \ >> + $(@D)/usr/lib/lib$${lib}.so; \ >> + done >> + ln -sf libGL.so.1.2 $(@D)/usr/lib/libGL.so.1 >> + ln -sf libGL.so.1.2 $(@D)/usr/lib/libGL.so >> +endef >> + >> +# On the target, remove the unused libraries. >> +# Note that this is _required_, else ldconfig may create symlinks >> +# to the wrong library >> +define GPU_VIV_BIN_MX6Q_INSTALL_TARGET_CMDS >> + $(GPU_VIV_BIN_MX6Q_INSTALL_EXAMPLES) >> + cp -a $(@D)/usr/lib $(TARGET_DIR)/usr >> + for lib in EGL GAL VIVANTE; do \ >> + for f in $(TARGET_DIR)/usr/lib/lib$${lib}-*.so; do \ >> + case $$f in \ >> + *-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so) : ;; \ >> + *) $(RM) $$f ;; \ >> + esac; \ >> + done; \ >> + done > > Isn't it either to only copy the relevant libraries instead of copying > everything, and then remove everything that's not useful? There are 16 libraries to install, so it makes sense to use a wildcard. And I couldn't find a glob pattern that excludes the -x11 and -dfb files. So removing them was easier. [In case it wasn't clear: Henk and I collaborated on this patch] Regards, Arnout > > Thanks! > > Thomas > -- Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-05-12 18:43 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-05-09 19:53 [Buildroot] adding package gpu-viv-bin-mx6q Henk Fijnvandraat 2013-05-09 19:53 ` [Buildroot] [PATCH] Add package gpu-viv-bin-mx6q to the freescale-imx directory Henk Fijnvandraat 2013-05-10 22:26 ` Arnout Vandecappelle 2013-05-11 10:20 ` Thomas Petazzoni 2013-05-12 18:43 ` Arnout Vandecappelle
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox