Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
test convert Makefile to CMake (#2495)
* Convert tests/Makefile to a cmake project file. This change switches the building of LVGL tests to use cmake which is more portable than make. Additionally, whenever cmake can be used, instead of the Python script (`main.py`), the former is preferred. The interface to `main.py` is unchanged, and tests are built and executated the same as before. This closes #2474. * Installing `gcovr` in GitHub workflow. * Documented steps to install libpng-dev. * Added missing stdout flush when running tests. * Grammar tweak in README. Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
- Loading branch information
1 parent
5dbea7d
commit 9c846ee
Showing
12 changed files
with
472 additions
and
478 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -19,3 +19,6 @@ out_html | |
__pycache__ | ||
/emscripten_builder | ||
test_screenshot_error.h | ||
build/ | ||
tests/build_*/ | ||
tests/report/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,2 @@ | ||
*.out | ||
*_Runner.c | ||
/report |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,294 @@ | ||
if(ESP_PLATFORM) | ||
|
||
################################### | ||
# Tests do not build for ESP-IDF. # | ||
################################### | ||
|
||
else() | ||
|
||
cmake_minimum_required(VERSION 3.13) | ||
project(lvgl_tests LANGUAGES C) | ||
|
||
set(LVGL_TEST_DIR ${CMAKE_CURRENT_SOURCE_DIR}) | ||
|
||
set(LVGL_TEST_OPTIONS_MINIMAL_MONOCHROME | ||
-DLV_COLOR_DEPTH=1 | ||
-DLV_MEM_SIZE=65535 | ||
-DLV_DPI_DEF=40 | ||
-DLV_DRAW_COMPLEX=0 | ||
-DLV_USE_METER=0 | ||
-DLV_USE_LOG=1 | ||
-DLV_USE_ASSERT_NULL=0 | ||
-DLV_USE_ASSERT_MALLOC=0 | ||
-DLV_USE_ASSERT_MEM_INTEGRITY=0 | ||
-DLV_USE_ASSERT_OBJ=0 | ||
-DLV_USE_ASSERT_STYLE=0 | ||
-DLV_USE_USER_DATA=0 | ||
-DLV_FONT_UNSCII_8=1 | ||
-DLV_USE_BIDI=0 | ||
-DLV_USE_ARABIC_PERSIAN_CHARS=0 | ||
-DLV_BUILD_EXAMPLES=1 | ||
-DLV_FONT_DEFAULT=&lv_font_montserrat_14 | ||
) | ||
|
||
set(LVGL_TEST_OPTIONS_NORMAL_8BIT | ||
-DLV_COLOR_DEPTH=8 | ||
-DLV_MEM_SIZE=65535 | ||
-DLV_DPI_DEF=40 | ||
-DLV_DRAW_COMPLEX=1 | ||
-DLV_USE_LOG=1 | ||
-DLV_USE_ASSERT_NULL=0 | ||
-DLV_USE_ASSERT_MALLOC=0 | ||
-DLV_USE_ASSERT_MEM_INTEGRITY=0 | ||
-DLV_USE_ASSERT_OBJ=0 | ||
-DLV_USE_ASSERT_STYLE=0 | ||
-DLV_USE_USER_DATA=0 | ||
-DLV_FONT_UNSCII_8=1 | ||
-DLV_USE_FONT_SUBPX=1 | ||
-DLV_USE_BIDI=0 | ||
-DLV_USE_ARABIC_PERSIAN_CHARS=0 | ||
-DLV_BUILD_EXAMPLES=1 | ||
-DLV_FONT_DEFAULT=&lv_font_montserrat_14 | ||
) | ||
|
||
set(LVGL_TEST_OPTIONS_16BIT | ||
-DLV_COLOR_DEPTH=16 | ||
-DLV_COLOR_16_SWAP=0 | ||
-DLV_MEM_SIZE=65536 | ||
-DLV_DPI_DEF=40 | ||
-DLV_DRAW_COMPLEX=1 | ||
-DLV_USE_LOG=1 | ||
-DLV_USE_ASSERT_NULL=0 | ||
-DLV_USE_ASSERT_MALLOC=0 | ||
-DLV_USE_ASSERT_MEM_INTEGRITY=0 | ||
-DLV_USE_ASSERT_OBJ=0 | ||
-DLV_USE_ASSERT_STYLE=0 | ||
-DLV_USE_USER_DATA=0 | ||
-DLV_FONT_UNSCII_8=1 | ||
-DLV_USE_FONT_SUBPX=1 | ||
-DLV_USE_BIDI=0 | ||
-DLV_USE_ARABIC_PERSIAN_CHARS=0 | ||
-DLV_BUILD_EXAMPLES=1 | ||
-DLV_FONT_DEFAULT=&lv_font_montserrat_14 | ||
) | ||
|
||
set(LVGL_TEST_OPTIONS_16BIT_SWAP | ||
-DLV_COLOR_DEPTH=16 | ||
-DLV_COLOR_16_SWAP=1 | ||
-DLV_MEM_SIZE=65536 | ||
-DLV_DPI_DEF=40 | ||
-DLV_DRAW_COMPLEX=1 | ||
-DLV_USE_LOG=1 | ||
-DLV_USE_ASSERT_NULL=0 | ||
-DLV_USE_ASSERT_MALLOC=0 | ||
-DLV_USE_ASSERT_MEM_INTEGRITY=0 | ||
-DLV_USE_ASSERT_OBJ=0 | ||
-DLV_USE_ASSERT_STYLE=0 | ||
-DLV_USE_USER_DATA=0 | ||
-DLV_FONT_UNSCII_8=1 | ||
-DLV_USE_FONT_SUBPX=1 | ||
-DLV_USE_BIDI=0 | ||
-DLV_USE_ARABIC_PERSIAN_CHARS=0 | ||
-DLV_BUILD_EXAMPLES=1 | ||
-DLV_FONT_DEFAULT=&lv_font_montserrat_14 | ||
) | ||
|
||
set(LVGL_TEST_OPTIONS_FULL_32BIT | ||
-DLV_COLOR_DEPTH=32 | ||
-DLV_MEM_SIZE=8388608 | ||
-DLV_DPI_DEF=160 | ||
-DLV_DRAW_COMPLEX=1 | ||
-DLV_SHADOW_CACHE_SIZE=1 | ||
-DLV_IMG_CACHE_DEF_SIZE=32 | ||
-DLV_USE_LOG=1 | ||
-DLV_USE_LOG_LEVEL=LV_LOG_LEVEL_TRACE | ||
-DLV_LOG_PRINTF=1 | ||
-DLV_USE_FONT_SUBPX=1 | ||
-DLV_FONT_SUBPX_BGR=1 | ||
-DLV_USE_PERF_MONITOR=1 | ||
-DLV_USE_ASSERT_NULL=1 | ||
-DLV_USE_ASSERT_MALLOC=1 | ||
-DLV_USE_ASSERT_MEM_INTEGRITY=1 | ||
-DLV_USE_ASSERT_OBJ=1 | ||
-DLV_USE_ASSERT_STYLE=1 | ||
-DLV_USE_USER_DATA=1 | ||
-DLV_USE_LARGE_COORD=1 | ||
-DLV_FONT_MONTSERRAT_8=1 | ||
-DLV_FONT_MONTSERRAT_10=1 | ||
-DLV_FONT_MONTSERRAT_12=1 | ||
-DLV_FONT_MONTSERRAT_14=1 | ||
-DLV_FONT_MONTSERRAT_16=1 | ||
-DLV_FONT_MONTSERRAT_18=1 | ||
-DLV_FONT_MONTSERRAT_20=1 | ||
-DLV_FONT_MONTSERRAT_22=1 | ||
-DLV_FONT_MONTSERRAT_24=1 | ||
-DLV_FONT_MONTSERRAT_26=1 | ||
-DLV_FONT_MONTSERRAT_28=1 | ||
-DLV_FONT_MONTSERRAT_30=1 | ||
-DLV_FONT_MONTSERRAT_32=1 | ||
-DLV_FONT_MONTSERRAT_34=1 | ||
-DLV_FONT_MONTSERRAT_36=1 | ||
-DLV_FONT_MONTSERRAT_38=1 | ||
-DLV_FONT_MONTSERRAT_40=1 | ||
-DLV_FONT_MONTSERRAT_42=1 | ||
-DLV_FONT_MONTSERRAT_44=1 | ||
-DLV_FONT_MONTSERRAT_46=1 | ||
-DLV_FONT_MONTSERRAT_48=1 | ||
-DLV_FONT_MONTSERRAT_12_SUBPX=1 | ||
-DLV_FONT_MONTSERRAT_28_COMPRESSED=1 | ||
-DLV_FONT_DEJAVU_16_PERSIAN_HEBREW=1 | ||
-DLV_FONT_SIMSUN_16_CJK=1 | ||
-DLV_FONT_UNSCII_8=1 | ||
-DLV_FONT_UNSCII_16=1 | ||
-DLV_FONT_FMT_TXT_LARGE=1 | ||
-DLV_USE_FONT_COMPRESSED=1 | ||
-DLV_USE_BIDI=1 | ||
-DLV_USE_ARABIC_PERSIAN_CHARS=1 | ||
-DLV_USE_PERF_MONITOR=1 | ||
-DLV_USE_MEM_MONITOR=1 | ||
-DLV_LABEL_TEXT_SELECTION=1 | ||
-DLV_BUILD_EXAMPLES=1 | ||
-DLV_FONT_DEFAULT=&lv_font_montserrat_24 | ||
) | ||
|
||
set(LVGL_TEST_OPTIONS_TEST | ||
--coverage | ||
-DLV_COLOR_DEPTH=32 | ||
-DLV_MEM_SIZE=2097152 | ||
-DLV_SHADOW_CACHE_SIZE=10240 | ||
-DLV_IMG_CACHE_DEF_SIZE=32 | ||
-DLV_USE_LOG=1 | ||
-DLV_LOG_PRINTF=1 | ||
-DLV_USE_FONT_SUBPX=1 | ||
-DLV_FONT_SUBPX_BGR=1 | ||
-DLV_USE_ASSERT_NULL=0 | ||
-DLV_USE_ASSERT_MALLOC=0 | ||
-DLV_USE_ASSERT_MEM_INTEGRITY=0 | ||
-DLV_USE_ASSERT_OBJ=0 | ||
-DLV_USE_ASSERT_STYLE=0 | ||
-DLV_USE_USER_DATA=1 | ||
-DLV_USE_LARGE_COORD=1 | ||
-DLV_FONT_MONTSERRAT_14=1 | ||
-DLV_FONT_MONTSERRAT_16=1 | ||
-DLV_FONT_MONTSERRAT_18=1 | ||
-DLV_FONT_MONTSERRAT_24=1 | ||
-DLV_FONT_MONTSERRAT_48=1 | ||
-DLV_FONT_MONTSERRAT_12_SUBPX=1 | ||
-DLV_FONT_MONTSERRAT_28_COMPRESSED=1 | ||
-DLV_FONT_DEJAVU_16_PERSIAN_HEBREW=1 | ||
-DLV_FONT_SIMSUN_16_CJK=1 | ||
-DLV_FONT_UNSCII_8=1 | ||
-DLV_FONT_UNSCII_16=1 | ||
-DLV_FONT_FMT_TXT_LARGE=1 | ||
-DLV_USE_FONT_COMPRESSED=1 | ||
-DLV_USE_BIDI=1 | ||
-DLV_USE_ARABIC_PERSIAN_CHARS=1 | ||
-DLV_LABEL_TEXT_SELECTION=1 | ||
-DLV_BUILD_EXAMPLES=1 | ||
-DLV_FONT_DEFAULT=&lv_font_montserrat_14 | ||
) | ||
|
||
if (OPTIONS_MINIMAL_MONOCHROME) | ||
set (TEST_OPTIONS ${LVGL_TEST_OPTIONS_MINIMAL_MONOCHROME}) | ||
elseif (OPTIONS_NORMAL_8BIT) | ||
set (TEST_OPTIONS ${LVGL_TEST_OPTIONS_NORMAL_8BIT}) | ||
elseif (OPTIONS_16BIT) | ||
set (TEST_OPTIONS ${LVGL_TEST_OPTIONS_16BIT}) | ||
elseif (OPTIONS_16BIT_SWAP) | ||
set (TEST_OPTIONS ${LVGL_TEST_OPTIONS_16BIT_SWAP}) | ||
elseif (OPTIONS_FULL_32BIT) | ||
set (TEST_OPTIONS ${LVGL_TEST_OPTIONS_FULL_32BIT}) | ||
elseif (OPTIONS_TEST) | ||
set (TEST_OPTIONS ${LVGL_TEST_OPTIONS_TEST}) | ||
set (TEST_LIBS --coverage) | ||
else() | ||
message(FATAL_ERROR "Must provide an options value.") | ||
endif() | ||
|
||
# Options lvgl and all test files are compiled with. | ||
set(COMPILE_OPTIONS | ||
-DLV_CONF_PATH=${LVGL_TEST_DIR}/src/lv_test_conf.h | ||
-DLV_BUILD_TEST | ||
-pedantic-errors | ||
-Wall | ||
-Wclobbered | ||
-Wdeprecated | ||
-Wdouble-promotion | ||
-Wempty-body | ||
-Werror | ||
-Wextra | ||
-Wformat-security | ||
-Wmaybe-uninitialized | ||
-Wmissing-prototypes | ||
-Wpointer-arith | ||
-Wmultichar | ||
-Wno-discarded-qualifiers | ||
-Wpedantic | ||
-Wreturn-type | ||
-Wshadow | ||
-Wshift-negative-value | ||
-Wsizeof-pointer-memaccess | ||
-Wstack-usage=2048 | ||
-Wtype-limits | ||
-Wundef | ||
-Wuninitialized | ||
-Wunreachable-code | ||
${TEST_OPTIONS} | ||
) | ||
|
||
get_filename_component(LVGL_DIR ${LVGL_TEST_DIR} DIRECTORY) | ||
|
||
# Include lvgl project file. | ||
include(${LVGL_DIR}/CMakeLists.txt) | ||
target_compile_options(lvgl PUBLIC ${COMPILE_OPTIONS}) | ||
target_compile_options(lvgl_examples PUBLIC ${COMPILE_OPTIONS}) | ||
|
||
|
||
set(TEST_INCLUDE_DIRS | ||
$<BUILD_INTERFACE:${LVGL_TEST_DIR}/src> | ||
$<BUILD_INTERFACE:${LVGL_TEST_DIR}/unity> | ||
$<BUILD_INTERFACE:${LVGL_TEST_DIR}> | ||
) | ||
|
||
add_library(test_common | ||
STATIC | ||
src/lv_test_indev.c | ||
src/lv_test_init.c | ||
src/test_fonts/font_1.c | ||
src/test_fonts/font_2.c | ||
src/test_fonts/font_3.c | ||
unity/unity_support.c | ||
unity/unity.c | ||
) | ||
target_include_directories(test_common PUBLIC ${TEST_INCLUDE_DIRS}) | ||
target_compile_options(test_common PUBLIC ${COMPILE_OPTIONS}) | ||
|
||
# Some examples `#include "lvgl/lvgl.h"` - which is a path which is not | ||
# in this source repository. If this repo is in a directory names 'lvgl' | ||
# then we can add our parent directory to the include path. | ||
# TODO: This is not good practice and should be fixed. | ||
get_filename_component(LVGL_PARENT_DIR ${LVGL_DIR} DIRECTORY) | ||
target_include_directories(lvgl_examples PUBLIC $<BUILD_INTERFACE:${LVGL_PARENT_DIR}>) | ||
|
||
# Generate one test executable for each source file pair. | ||
# The sources in src/test_runners is auto-generated, the | ||
# sources in src/test_cases is the actual test case. | ||
file( GLOB TEST_CASE_FILES src/test_cases/*.c ) | ||
foreach( test_case_fname ${TEST_CASE_FILES} ) | ||
# If test file is foo/bar/baz.c then test_name is "baz". | ||
get_filename_component(test_name ${test_case_fname} NAME_WLE) | ||
if (${test_name} STREQUAL "_test_template") | ||
continue() | ||
endif() | ||
# Create path to auto-generated source file. | ||
set(test_runner_fname src/test_runners/${test_name}_Runner.c) | ||
add_executable( ${test_name} | ||
${test_case_fname} | ||
${test_runner_fname} | ||
) | ||
target_link_libraries(${test_name} test_common lvgl_examples lvgl png ${TEST_LIBS}) | ||
target_include_directories(${test_name} PUBLIC ${TEST_INCLUDE_DIRS}) | ||
target_compile_options(${test_name} PUBLIC ${COMPILE_OPTIONS}) | ||
endforeach( test_case_fname ${TEST_CASE_FILES} ) | ||
|
||
endif() |
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.