Skip to content

Commit 5eca82b

Browse files
committed
LVGL to current master.
1 parent 1ceda7f commit 5eca82b

File tree

3 files changed

+338
-291
lines changed

3 files changed

+338
-291
lines changed

ext_mod/lvgl/micropython.cmake

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,34 @@ find_package(Python3 REQUIRED COMPONENTS Interpreter)
44

55
get_filename_component(BINDING_DIR ${CMAKE_CURRENT_LIST_DIR}/../.. ABSOLUTE)
66

7+
set(LVGL_HEADER "${BINDING_DIR}/build/lvgl_header.h")
8+
set(FAKE_LIBC_PATH "${BINDING_DIR}/gen/fake_libc")
9+
710
separate_arguments(LV_CFLAGS_ENV UNIX_COMMAND $ENV{LV_CFLAGS})
11+
separate_arguments(SECOND_BUILD_ENV UNIX_COMMAND $ENV{SECOND_BUILD})
12+
13+
list(APPEND LV_CFLAGS_ENV
14+
-std=c11
15+
-Wno-incompatible-pointer-types
16+
-I${BINDING_DIR}/lib
17+
-I${BINDING_DIR}/lib/lvgl
18+
)
19+
20+
list(APPEND LV_CFLAGS ${LV_CFLAGS_ENV})
821
list(APPEND LV_CFLAGS
9-
${LV_CFLAGS_ENV}
10-
-Wno-unused-function
1122
-DMICROPY_FLOAT=1
1223
)
1324

14-
separate_arguments(SECOND_BUILD_ENV UNIX_COMMAND $ENV{SECOND_BUILD})
25+
list(APPEND LV_PP_CFLAGS ${LV_CFLAGS_ENV})
26+
list(APPEND LV_PP_CFLAGS
27+
-E
28+
-I{FAKE_LIBC_PATH}
29+
-Wno-unused-function
30+
-DPYCPARSER
31+
)
1532

16-
set(LVGL_HEADER "${BINDING_DIR}/build/lvgl_header.h")
1733

18-
file(GLOB_RECURSE LVGL_HEADERS ${BINDING_DIR}/lib/lvgl/src/*.h ${BINDING_DIR}/lib/lv_conf.h)
34+
# file(GLOB_RECURSE LVGL_HEADERS ${BINDING_DIR}/lib/lvgl/src/*.h ${BINDING_DIR}/lib/lv_conf.h)
1935

2036
# this MUST be an execute_process because of the order in which cmake does things
2137
# if add_custom_command is used it errors becasue add_custom_command doesn't
@@ -27,7 +43,22 @@ file(GLOB_RECURSE LVGL_HEADERS ${BINDING_DIR}/lib/lvgl/src/*.h ${BINDING_DIR}/li
2743
if(${SECOND_BUILD_ENV} EQUAL "0")
2844
execute_process(
2945
COMMAND
30-
${Python3_EXECUTABLE} ${BINDING_DIR}/gen/$ENV{GEN_SCRIPT}_api_gen_mpy.py ${LV_CFLAGS} --output=${CMAKE_BINARY_DIR}/lv_mp.c --include=${BINDING_DIR}/lib --include=${BINDING_DIR}/lib/lvgl --board=$ENV{LV_PORT} --module_name=lvgl --module_prefix=lv --metadata=${CMAKE_BINARY_DIR}/lv_mp.c.json --header_file=${LVGL_HEADER}
46+
${CMAKE_C_COMPILER} ${LV_PP_CFLAGS} ${LVGL_HEADER} >> ${CMAKE_BINARY_DIR}/lv_mp.pp
47+
WORKING_DIRECTORY
48+
${CMAKE_CURRENT_LIST_DIR}
49+
RESULT_VARIABLE mpy_pp_result
50+
OUTPUT_VARIABLE mpy_pp_output
51+
)
52+
53+
if(${mpy_pp_result} GREATER "0")
54+
message("OUTPUT: ${mpy_pp_output}")
55+
message("RESULT: ${mpy_pp_result}")
56+
message(FATAL_ERROR "Failed to generate ${CMAKE_BINARY_DIR}/lv_mp.pp")
57+
endif()
58+
59+
execute_process(
60+
COMMAND
61+
${Python3_EXECUTABLE} ${BINDING_DIR}/gen/$ENV{GEN_SCRIPT}_api_gen_mpy.py --cflags="${LV_PP_CFLAGS}" --output=${CMAKE_BINARY_DIR}/lv_mp.c --pp_file=${CMAKE_BINARY_DIR}/lv_mp.pp --board=$ENV{LV_PORT} --module_name=lvgl --module_prefix=lv --metadata=${CMAKE_BINARY_DIR}/lv_mp.c.json --header_file=${LVGL_HEADER}
3162
WORKING_DIRECTORY
3263
${CMAKE_CURRENT_LIST_DIR}
3364

@@ -38,7 +69,7 @@ if(${SECOND_BUILD_ENV} EQUAL "0")
3869
if(${mpy_result} GREATER "0")
3970
message("OUTPUT: ${mpy_output}")
4071
message("RESULT: ${mpy_result}")
41-
message( FATAL_ERROR "Failed to generate ${CMAKE_BINARY_DIR}/lv_mp.c" )
72+
message(FATAL_ERROR "Failed to generate ${CMAKE_BINARY_DIR}/lv_mp.c")
4273
endif()
4374
endif()
4475

ext_mod/lvgl/micropython.mk

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,19 @@ LIB_DIR = $(LVGL_BINDING_DIR)/lib
1010
LVGL_DIR = $(LVGL_BINDING_DIR)/lib/lvgl
1111
LVGL_HEADER = $(LVGL_BINDING_DIR)/build/lvgl_header.h
1212

13+
FAKE_LIBC_PATH = $(LVGL_BINDING_DIR)/gen/fake_libc
14+
1315
CURRENT_DIR = $(LVGL_BINDING_DIR)/ext_mod/lvgl
1416
CFLAGS_USERMOD += -I$(LVGL_DIR)
1517
CFLAGS_USERMOD += -I$(LIB_DIR)
1618

19+
LV_PP_CFLAGS = $(CFLAGS_USERMOD)
20+
LV_PP_CFLAGS += -std=c11 -E -I$(FAKE_LIBC_PATH) -DPYCPARSER
21+
1722

1823
ifdef $(LV_CFLAGS)
1924
CFLAGS_USERMOD += $(LV_CFLAGS)
25+
LV_PP_CFLAGS += $(LV_CFLAGS)
2026
endif
2127

2228
ifneq (,$(findstring -Wno-missing-field-initializers, $(CFLAGS_USERMOD)))
@@ -27,17 +33,21 @@ endif
2733
ALL_LVGL_SRC = $(shell find $(LVGL_DIR) -type f -name '*.h') $(LVGL_BINDING_DIR)/lib/lv_conf.h
2834

2935
LVGL_MPY = $(BUILD)/lv_mpy.c
36+
LVGL_MPY_PP = $(BUILD)/lv_mpy.pp
3037
LVGL_MPY_METADATA = $(BUILD)/lv_mpy.json
3138

32-
3339
SRC_USERMOD_LIB_C += $(shell find $(LVGL_DIR)/src -type f -name "*.c")
3440
SRC_USERMOD_LIB_C += $(CURRENT_DIR)/mem_core.c
41+
3542
SRC_USERMOD_C += $(LVGL_MPY)
3643

3744
$(LVGL_MPY): $(ALL_LVGL_SRC) $(LVGL_BINDING_DIR)/gen/$(GEN_SCRIPT)_api_gen_mpy.py
3845
$(ECHO) "LVGL-GEN $@"
3946
$(Q)mkdir -p $(dir $@)
40-
$(Q)$(PYTHON) $(LVGL_BINDING_DIR)/gen/$(GEN_SCRIPT)_api_gen_mpy.py $(LV_CFLAGS) --board=$(LV_PORT) --output=$(LVGL_MPY) --include=$(LIB_DIR) --include=$(LVGL_DIR) --module_name=lvgl --module_prefix=lv --metadata=$(LVGL_MPY_METADATA) --header_file=$(LVGL_HEADER)
47+
48+
$(Q)$(CC) $(LV_PP_CFLAGS) $(LVGL_HEADER) >> $(LVGL_MPY_PP)
49+
50+
$(Q)$(PYTHON) $(LVGL_BINDING_DIR)/gen/$(GEN_SCRIPT)_api_gen_mpy.py --cflags="$(LV_PP_CFLAGS)" --pp_file=$(LVGL_MPY_PP) --board=$(LV_PORT) --output=$(LVGL_MPY) --module_name=lvgl --module_prefix=lv --metadata=$(LVGL_MPY_METADATA) --header_file=$(LVGL_HEADER)
4151

4252
.PHONY: LVGL_MPY
4353
LVGL_MPY: $(LVGL_MPY)

0 commit comments

Comments
 (0)