summaryrefslogtreecommitdiffstats
path: root/meta-oe
diff options
context:
space:
mode:
authorMarek Vasut <marex@denx.de>2023-05-18 20:59:20 +0200
committerKhem Raj <raj.khem@gmail.com>2023-05-18 17:09:30 -0700
commitffb3c1108a45860c15818906df7e4559499ac934 (patch)
tree137f6cf047bcd143904b566ac6cc9dfa87e0080f /meta-oe
parent1cc72c41af0c6a55a10be9158a2f856b02a56282 (diff)
downloadmeta-openembedded-ffb3c1108a45860c15818906df7e4559499ac934.tar.gz
lvgl: lvgl-demo-fb: Switch to CMake and add DRM and SDL support
Switch the build of this recipe to CMake from the horrible Makefile which is still part of the source tree and which blatantly encodes various CFLAGS and co. Add support for use of DRM and SDL backends and make this configurable. The FBDEV is deprecated for close to two decades, so provide modern alternatives -- DRM and SDL. The DRM uses modern DRM API, but there is no GPU acceleration. The SDL provides GPU support abstracted via the libSDL2 API and can use multiple backends, DRM and WL included. Default to the DRM backend, because FBDEV is just bad for any modern system. Signed-off-by: Marek Vasut <marex@denx.de> Signed-off-by: Khem Raj <raj.khem@gmail.com>
Diffstat (limited to 'meta-oe')
-rw-r--r--meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_8.3.0.bb50
1 files changed, 45 insertions, 5 deletions
diff --git a/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_8.3.0.bb b/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_8.3.0.bb
index 1dfb199ff..33e7c94e6 100644
--- a/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_8.3.0.bb
+++ b/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_8.3.0.bb
@@ -8,14 +8,54 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=802d3d83ae80ef5f343050bf96cce3a4 \
8SRC_URI = "gitsm://github.com/lvgl/lv_port_linux_frame_buffer.git;branch=master;protocol=https" 8SRC_URI = "gitsm://github.com/lvgl/lv_port_linux_frame_buffer.git;branch=master;protocol=https"
9SRCREV = "adf2c4490e17a1b9ec1902cc412a24b3b8235c8e" 9SRCREV = "adf2c4490e17a1b9ec1902cc412a24b3b8235c8e"
10 10
11EXTRA_OEMAKE = "DESTDIR=${D}"
12
13PACKAGECONFIG ??= "drm"
14PACKAGECONFIG[drm] = ",,libdrm"
15PACKAGECONFIG[fbdev] = ",,"
16PACKAGECONFIG[sdl] = ",,virtual/libsdl2"
17LVGL_CONFIG_USE_DRM = "${@bb.utils.contains('PACKAGECONFIG', 'drm', '1', '0', d)}"
18LVGL_CONFIG_DRM_CARD ?= "/dev/dri/card0"
19LVGL_CONFIG_USE_FBDEV = "${@bb.utils.contains('PACKAGECONFIG', 'fbdev', '1', '0', d)}"
20LVGL_CONFIG_USE_SDL = "${@bb.utils.contains('PACKAGECONFIG', 'sdl', '1', '0', d)}"
21
22inherit cmake
23
11S = "${WORKDIR}/git" 24S = "${WORKDIR}/git"
12 25
13REQUIRED_DISTRO_FEATURES = "fbdev" 26EXTRA_OECMAKE += "-Dinstall:BOOL=ON -DLIB_INSTALL_DIR=${baselib}"
27TARGET_CFLAGS += "-I${STAGING_INCDIR}/libdrm"
14 28
15inherit features_check 29do_configure:prepend() {
30 sed -i -e "s|\(^# define USE_FBDEV \).*|# define USE_FBDEV ${LVGL_CONFIG_USE_FBDEV}|g" \
31 -e "s|\(^# define USE_DRM \).*|# define USE_DRM ${LVGL_CONFIG_USE_DRM}|g" \
32 -e "s|\(^# define DRM_CARD \).*|# define DRM_CARD \"${LVGL_CONFIG_DRM_CARD}\"|g" \
33 -e "s|\(^# define USE_SDL \).*|# define USE_SDL ${LVGL_CONFIG_USE_SDL}|g" \
34 -e "s|\(^# define USE_SDL_GPU \).*|# define USE_SDL_GPU 1|g" \
35 -e "s|\(^# define SDL_DOUBLE_BUFFERED \).*|# define SDL_DOUBLE_BUFFERED 1|g" \
36 "${S}/lv_drv_conf.h"
16 37
17EXTRA_OEMAKE = "DESTDIR=${D}" 38 if [ "${LVGL_CONFIG_USE_DRM}" -eq 1 ] ; then
39 # Add libdrm build dependency
40 sed -i '/^target_link_libraries/ s@lvgl::drivers@& drm@' "${S}/CMakeLists.txt"
41 # Switch from fbdev to drm usage
42 sed -i 's@fbdev@drm@g' "${S}/main.c"
43 # Pull resolution from DRM instead of hardcoding it
44 sed -i '/disp_drv.hor_res/ d' "${S}/main.c"
45 sed -i '/disp_drv.ver_res/ s@disp_drv.ver_res.*@drm_get_sizes(\&disp_drv.hor_res, \&disp_drv.ver_res, NULL);@' "${S}/main.c"
46 fi
47
48 if [ "${LVGL_CONFIG_USE_SDL}" -eq 1 ] ; then
49 # Add libsdl build dependency
50 sed -i '/^target_link_libraries/ s@lvgl::drivers@& SDL2@' "${S}/CMakeLists.txt"
51 # Switch from fbdev to sdl usage
52 sed -i 's@fbdev_flush@sdl_display_flush@g' "${S}/main.c"
53 sed -i 's@lv_drivers/display/fbdev.h@lv_drivers/sdl/sdl.h@g' "${S}/main.c"
54 sed -i 's@fbdev@sdl@g' "${S}/main.c"
55 fi
56}
18 57
19do_install() { 58do_install:append() {
20 oe_runmake install 59 install -d ${D}${bindir}
60 install -m 0755 ${B}/lvgl_fb ${D}${bindir}/
21} 61}