Skip to content

Commit cbfcae7

Browse files
vanwinkeljannashif
authored andcommitted
gui: Added glue logic for LittlevGL GUI library
Added glue logic to interface Zephyr with LittlevGL GUI library This includes: * KConfig options for all lvgl options * Kernel & user space memory management * Zephyr to lvgl FS call mapping * Color space conversion function Signed-off-by: Jan Van Winkel <[email protected]>
1 parent 49ffca4 commit cbfcae7

21 files changed

+2201
-0
lines changed

lib/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ add_subdirectory_ifdef(CONFIG_POSIX_API posix)
1212
add_subdirectory_ifdef(CONFIG_CMSIS_RTOS_V1 cmsis_rtos_v1)
1313
add_subdirectory_ifdef(CONFIG_CMSIS_RTOS_V2 cmsis_rtos_v2)
1414
add_subdirectory(rbtree)
15+
add_subdirectory(gui)

lib/Kconfig

+3
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,7 @@ source "lib/posix/Kconfig"
3030

3131
source "lib/cmsis_rtos_v1/Kconfig"
3232
source "lib/cmsis_rtos_v2/Kconfig"
33+
34+
source "lib/gui/Kconfig"
35+
3336
endmenu

lib/gui/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
add_subdirectory_if_kconfig(lvgl)

lib/gui/Kconfig

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#
2+
# Copyright (c) 2018 Jan Van Winkel <[email protected]>
3+
#
4+
# SPDX-License-Identifier: Apache-2.0
5+
#
6+
7+
menu "Graphical user interface"
8+
9+
rsource "lvgl/Kconfig"
10+
11+
endmenu

lib/gui/lvgl/CMakeLists.txt

+175
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
1+
include(FetchContent)
2+
3+
set(lv_name lvgl)
4+
5+
set(ep_base ${PROJECT_BINARY_DIR}/ext_proj)
6+
set_property(DIRECTORY PROPERTY "EP_BASE" ${ep_base})
7+
8+
set(lv_SOURCE_DIR ${ep_base}/Source/${lv_name})
9+
set(lv_SUBBUILD_DIR ${ep_base}/Subbuild/${lv_name})
10+
11+
FetchContent_Declare(
12+
${lv_name}
13+
GIT_REPOSITORY https://github.com/littlevgl/lvgl.git
14+
GIT_TAG v5.2
15+
SOURCE_DIR ${lv_SOURCE_DIR}
16+
BINARY_DIR ${lv_SOURCE_DIR}
17+
SUBBUILD_DIR ${lv_SUBBUILD_DIR}
18+
)
19+
20+
FetchContent_GetProperties(${lv_name})
21+
if(NOT ${lv_name}_POPULATED)
22+
FetchContent_Populate(${lv_name})
23+
endif()
24+
25+
zephyr_interface_library_named(lvgl)
26+
27+
set(LVGL_SOURCE_DIR ${${lv_name}_SOURCE_DIR})
28+
29+
target_include_directories(lvgl INTERFACE ${LVGL_SOURCE_DIR})
30+
target_include_directories(lvgl INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
31+
32+
zephyr_compile_definitions(LV_CONF_INCLUDE_SIMPLE=1)
33+
34+
zephyr_library()
35+
36+
zephyr_library_sources(
37+
38+
${LVGL_SOURCE_DIR}/lv_core/lv_group.c
39+
${LVGL_SOURCE_DIR}/lv_core/lv_indev.c
40+
${LVGL_SOURCE_DIR}/lv_core/lv_obj.c
41+
${LVGL_SOURCE_DIR}/lv_core/lv_refr.c
42+
${LVGL_SOURCE_DIR}/lv_core/lv_style.c
43+
${LVGL_SOURCE_DIR}/lv_core/lv_vdb.c
44+
45+
${LVGL_SOURCE_DIR}/lv_draw/lv_draw.c
46+
${LVGL_SOURCE_DIR}/lv_draw/lv_draw_arc.c
47+
${LVGL_SOURCE_DIR}/lv_draw/lv_draw_img.c
48+
${LVGL_SOURCE_DIR}/lv_draw/lv_draw_label.c
49+
${LVGL_SOURCE_DIR}/lv_draw/lv_draw_line.c
50+
${LVGL_SOURCE_DIR}/lv_draw/lv_draw_rbasic.c
51+
${LVGL_SOURCE_DIR}/lv_draw/lv_draw_rect.c
52+
${LVGL_SOURCE_DIR}/lv_draw/lv_draw_triangle.c
53+
${LVGL_SOURCE_DIR}/lv_draw/lv_draw_vbasic.c
54+
55+
${LVGL_SOURCE_DIR}/lv_hal/lv_hal_disp.c
56+
${LVGL_SOURCE_DIR}/lv_hal/lv_hal_indev.c
57+
${LVGL_SOURCE_DIR}/lv_hal/lv_hal_tick.c
58+
59+
${LVGL_SOURCE_DIR}/lv_misc/lv_anim.c
60+
${LVGL_SOURCE_DIR}/lv_misc/lv_area.c
61+
${LVGL_SOURCE_DIR}/lv_misc/lv_circ.c
62+
${LVGL_SOURCE_DIR}/lv_misc/lv_color.c
63+
${LVGL_SOURCE_DIR}/lv_misc/lv_font.c
64+
${LVGL_SOURCE_DIR}/lv_misc/lv_fs.c
65+
${LVGL_SOURCE_DIR}/lv_misc/lv_ll.c
66+
${LVGL_SOURCE_DIR}/lv_misc/lv_log.c
67+
${LVGL_SOURCE_DIR}/lv_misc/lv_math.c
68+
${LVGL_SOURCE_DIR}/lv_misc/lv_mem.c
69+
${LVGL_SOURCE_DIR}/lv_misc/lv_task.c
70+
${LVGL_SOURCE_DIR}/lv_misc/lv_templ.c
71+
${LVGL_SOURCE_DIR}/lv_misc/lv_txt.c
72+
73+
${LVGL_SOURCE_DIR}/lv_objx/lv_arc.c
74+
${LVGL_SOURCE_DIR}/lv_objx/lv_bar.c
75+
${LVGL_SOURCE_DIR}/lv_objx/lv_btn.c
76+
${LVGL_SOURCE_DIR}/lv_objx/lv_btnm.c
77+
${LVGL_SOURCE_DIR}/lv_objx/lv_calendar.c
78+
${LVGL_SOURCE_DIR}/lv_objx/lv_cb.c
79+
${LVGL_SOURCE_DIR}/lv_objx/lv_chart.c
80+
${LVGL_SOURCE_DIR}/lv_objx/lv_cont.c
81+
${LVGL_SOURCE_DIR}/lv_objx/lv_ddlist.c
82+
${LVGL_SOURCE_DIR}/lv_objx/lv_gauge.c
83+
${LVGL_SOURCE_DIR}/lv_objx/lv_img.c
84+
${LVGL_SOURCE_DIR}/lv_objx/lv_imgbtn.c
85+
${LVGL_SOURCE_DIR}/lv_objx/lv_kb.c
86+
${LVGL_SOURCE_DIR}/lv_objx/lv_label.c
87+
${LVGL_SOURCE_DIR}/lv_objx/lv_led.c
88+
${LVGL_SOURCE_DIR}/lv_objx/lv_line.c
89+
${LVGL_SOURCE_DIR}/lv_objx/lv_list.c
90+
${LVGL_SOURCE_DIR}/lv_objx/lv_lmeter.c
91+
${LVGL_SOURCE_DIR}/lv_objx/lv_mbox.c
92+
${LVGL_SOURCE_DIR}/lv_objx/lv_objx_templ.c
93+
${LVGL_SOURCE_DIR}/lv_objx/lv_page.c
94+
${LVGL_SOURCE_DIR}/lv_objx/lv_preload.c
95+
${LVGL_SOURCE_DIR}/lv_objx/lv_roller.c
96+
${LVGL_SOURCE_DIR}/lv_objx/lv_slider.c
97+
${LVGL_SOURCE_DIR}/lv_objx/lv_sw.c
98+
${LVGL_SOURCE_DIR}/lv_objx/lv_ta.c
99+
${LVGL_SOURCE_DIR}/lv_objx/lv_tabview.c
100+
${LVGL_SOURCE_DIR}/lv_objx/lv_win.c
101+
102+
${LVGL_SOURCE_DIR}/lv_themes/lv_theme.c
103+
${LVGL_SOURCE_DIR}/lv_themes/lv_theme_alien.c
104+
${LVGL_SOURCE_DIR}/lv_themes/lv_theme_default.c
105+
${LVGL_SOURCE_DIR}/lv_themes/lv_theme_material.c
106+
${LVGL_SOURCE_DIR}/lv_themes/lv_theme_mono.c
107+
${LVGL_SOURCE_DIR}/lv_themes/lv_theme_nemo.c
108+
${LVGL_SOURCE_DIR}/lv_themes/lv_theme_night.c
109+
${LVGL_SOURCE_DIR}/lv_themes/lv_theme_templ.c
110+
${LVGL_SOURCE_DIR}/lv_themes/lv_theme_zen.c
111+
112+
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_builtin.c
113+
)
114+
115+
zephyr_library_sources_ifdef( CONFIG_LVGL_BUILD_IN_FONT_10
116+
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_10.c
117+
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_10_cyrillic.c
118+
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_10_latin_sup.c
119+
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_symbol_10.c
120+
)
121+
122+
zephyr_library_sources_ifdef( CONFIG_LVGL_BUILD_IN_FONT_20
123+
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_20.c
124+
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_20_cyrillic.c
125+
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_20_latin_sup.c
126+
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_symbol_20.c
127+
)
128+
129+
zephyr_library_sources_ifdef( CONFIG_LVGL_BUILD_IN_FONT_30
130+
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_30.c
131+
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_30_cyrillic.c
132+
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_30_latin_sup.c
133+
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_symbol_30.c
134+
)
135+
136+
zephyr_library_sources_ifdef( CONFIG_LVGL_BUILD_IN_FONT_40
137+
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_40.c
138+
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_40_cyrillic.c
139+
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_40_latin_sup.c
140+
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_symbol_40.c
141+
)
142+
143+
zephyr_library_sources_ifdef( CONFIG_LVGL_BUILD_IN_FONT_MONOSPACE
144+
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_monospace_8.c
145+
)
146+
147+
zephyr_library_sources_ifdef( CONFIG_LVGL_COLOR_DEPTH_32
148+
lvgl_color_32.c
149+
)
150+
151+
zephyr_library_sources_ifdef( CONFIG_LVGL_COLOR_DEPTH_16
152+
lvgl_color_16.c
153+
)
154+
155+
zephyr_library_sources_ifdef( CONFIG_LVGL_COLOR_DEPTH_8
156+
lvgl_color_8.c
157+
)
158+
159+
zephyr_library_sources_ifdef( CONFIG_LVGL_COLOR_DEPTH_1
160+
lvgl_color_1.c
161+
)
162+
163+
zephyr_library_sources_ifdef( CONFIG_LVGL_FILESYSTEM
164+
lvgl_fs.c
165+
)
166+
167+
zephyr_library_sources(lvgl.c)
168+
169+
zephyr_library_sources_ifdef( CONFIG_LVGL_MEM_POOL_USER lvgl_mem_user.c)
170+
171+
zephyr_library_sources_ifdef( CONFIG_LVGL_MEM_POOL_KERNEL lvgl_mem_kernel.c)
172+
173+
zephyr_library_link_libraries(lvgl)
174+
175+
target_link_libraries(lvgl INTERFACE zephyr_interface)

0 commit comments

Comments
 (0)