mirror of
https://github.com/lvgl/lvgl.git
synced 2026-06-01 08:54:52 +08:00
build: restructure cmake (#8210)
Co-authored-by: Erik Tagirov <erik.tagirov@edgemtech.ch>
This commit is contained in:
+1
-1
@@ -20,7 +20,7 @@ elseif(ZEPHYR_BASE)
|
|||||||
elseif(MICROPY_DIR)
|
elseif(MICROPY_DIR)
|
||||||
include(${CMAKE_CURRENT_LIST_DIR}/env_support/cmake/micropython.cmake)
|
include(${CMAKE_CURRENT_LIST_DIR}/env_support/cmake/micropython.cmake)
|
||||||
else()
|
else()
|
||||||
include(${CMAKE_CURRENT_LIST_DIR}/env_support/cmake/custom.cmake)
|
include(${CMAKE_CURRENT_LIST_DIR}/env_support/cmake/os_desktop.cmake)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
#[[
|
#[[
|
||||||
|
|||||||
+2
-3
@@ -5,7 +5,6 @@
|
|||||||
"name": "_base",
|
"name": "_base",
|
||||||
"hidden": true,
|
"hidden": true,
|
||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"LV_CONF_SKIP": true
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -71,7 +70,7 @@
|
|||||||
},
|
},
|
||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"BUILD_SHARED_LIBS": "ON",
|
"BUILD_SHARED_LIBS": "ON",
|
||||||
"LV_USE_KCONFIG": "ON"
|
"BUILD_LV_USE_KCONFIG": "ON"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -84,7 +83,7 @@
|
|||||||
"CMAKE_C_COMPILER": "cl.exe",
|
"CMAKE_C_COMPILER": "cl.exe",
|
||||||
"CMAKE_CXX_COMPILER": "cl.exe",
|
"CMAKE_CXX_COMPILER": "cl.exe",
|
||||||
"BUILD_SHARED_LIBS": "ON",
|
"BUILD_SHARED_LIBS": "ON",
|
||||||
"LV_USE_KCONFIG": "ON"
|
"LV_BUILD_USE_KCONFIG": "ON"
|
||||||
},
|
},
|
||||||
"condition": {
|
"condition": {
|
||||||
"type": "equals",
|
"type": "equals",
|
||||||
|
|||||||
@@ -2084,79 +2084,85 @@ menu "LVGL configuration"
|
|||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
menu "Demos"
|
menu "Demos"
|
||||||
config LV_USE_DEMO_WIDGETS
|
config LV_BUILD_DEMOS
|
||||||
bool "Show some widget"
|
bool "Build demos"
|
||||||
default n
|
default y if !LV_CONF_MINIMAL
|
||||||
|
|
||||||
config LV_USE_DEMO_KEYPAD_AND_ENCODER
|
if LV_BUILD_DEMOS
|
||||||
bool "Demonstrate the usage of encoder and keyboard"
|
config LV_USE_DEMO_WIDGETS
|
||||||
default n
|
bool "Show some widget"
|
||||||
|
default n
|
||||||
|
|
||||||
config LV_USE_DEMO_BENCHMARK
|
config LV_USE_DEMO_KEYPAD_AND_ENCODER
|
||||||
bool "Benchmark your system"
|
bool "Demonstrate the usage of encoder and keyboard"
|
||||||
default n
|
default n
|
||||||
select LV_FONT_MONTSERRAT_14
|
|
||||||
select LV_FONT_MONTSERRAT_20
|
|
||||||
select LV_FONT_MONTSERRAT_24
|
|
||||||
select LV_FONT_MONTSERRAT_26
|
|
||||||
select LV_USE_DEMO_WIDGETS
|
|
||||||
config LV_USE_DEMO_RENDER
|
|
||||||
bool "Render test for each primitives. Requires at least 480x272 display"
|
|
||||||
default n
|
|
||||||
|
|
||||||
config LV_USE_DEMO_SCROLL
|
config LV_USE_DEMO_BENCHMARK
|
||||||
bool "Scroll settings test for LVGL"
|
bool "Benchmark your system"
|
||||||
default n
|
default n
|
||||||
|
select LV_FONT_MONTSERRAT_14
|
||||||
|
select LV_FONT_MONTSERRAT_20
|
||||||
|
select LV_FONT_MONTSERRAT_24
|
||||||
|
select LV_FONT_MONTSERRAT_26
|
||||||
|
select LV_USE_DEMO_WIDGETS
|
||||||
|
config LV_USE_DEMO_RENDER
|
||||||
|
bool "Render test for each primitives. Requires at least 480x272 display"
|
||||||
|
default n
|
||||||
|
|
||||||
config LV_USE_DEMO_STRESS
|
config LV_USE_DEMO_SCROLL
|
||||||
bool "Stress test for LVGL"
|
bool "Scroll settings test for LVGL"
|
||||||
default n
|
default n
|
||||||
|
|
||||||
config LV_USE_DEMO_TRANSFORM
|
config LV_USE_DEMO_STRESS
|
||||||
bool "Transform test for LVGL"
|
bool "Stress test for LVGL"
|
||||||
default n
|
default n
|
||||||
depends on LV_FONT_MONTSERRAT_18
|
|
||||||
|
|
||||||
config LV_USE_DEMO_MUSIC
|
config LV_USE_DEMO_TRANSFORM
|
||||||
bool "Music player demo"
|
bool "Transform test for LVGL"
|
||||||
default n
|
default n
|
||||||
config LV_DEMO_MUSIC_SQUARE
|
depends on LV_FONT_MONTSERRAT_18
|
||||||
bool "Enable Square"
|
|
||||||
depends on LV_USE_DEMO_MUSIC
|
|
||||||
default n
|
|
||||||
config LV_DEMO_MUSIC_LANDSCAPE
|
|
||||||
bool "Enable Landscape"
|
|
||||||
depends on LV_USE_DEMO_MUSIC
|
|
||||||
default n
|
|
||||||
config LV_DEMO_MUSIC_ROUND
|
|
||||||
bool "Enable Round"
|
|
||||||
depends on LV_USE_DEMO_MUSIC
|
|
||||||
default n
|
|
||||||
config LV_DEMO_MUSIC_LARGE
|
|
||||||
bool "Enable Large"
|
|
||||||
depends on LV_USE_DEMO_MUSIC
|
|
||||||
default n
|
|
||||||
config LV_DEMO_MUSIC_AUTO_PLAY
|
|
||||||
bool "Enable Auto play"
|
|
||||||
depends on LV_USE_DEMO_MUSIC
|
|
||||||
default n
|
|
||||||
|
|
||||||
config LV_USE_DEMO_FLEX_LAYOUT
|
config LV_USE_DEMO_MUSIC
|
||||||
bool "Flex layout previewer"
|
bool "Music player demo"
|
||||||
default n
|
default n
|
||||||
config LV_USE_DEMO_MULTILANG
|
config LV_DEMO_MUSIC_SQUARE
|
||||||
bool "multi-language demo"
|
bool "Enable Square"
|
||||||
default n
|
depends on LV_USE_DEMO_MUSIC
|
||||||
config LV_USE_DEMO_VECTOR_GRAPHIC
|
default n
|
||||||
bool "vector graphic demo"
|
config LV_DEMO_MUSIC_LANDSCAPE
|
||||||
default n
|
bool "Enable Landscape"
|
||||||
depends on LV_USE_VECTOR_GRAPHIC
|
depends on LV_USE_DEMO_MUSIC
|
||||||
config LV_USE_DEMO_SMARTWATCH
|
default n
|
||||||
bool "Smartwatch demo"
|
config LV_DEMO_MUSIC_ROUND
|
||||||
config LV_USE_DEMO_EBIKE
|
bool "Enable Round"
|
||||||
bool "Ebike demo"
|
depends on LV_USE_DEMO_MUSIC
|
||||||
config LV_USE_DEMO_HIGH_RES
|
default n
|
||||||
|
config LV_DEMO_MUSIC_LARGE
|
||||||
|
bool "Enable Large"
|
||||||
|
depends on LV_USE_DEMO_MUSIC
|
||||||
|
default n
|
||||||
|
config LV_DEMO_MUSIC_AUTO_PLAY
|
||||||
|
bool "Enable Auto play"
|
||||||
|
depends on LV_USE_DEMO_MUSIC
|
||||||
|
default n
|
||||||
|
|
||||||
|
config LV_USE_DEMO_FLEX_LAYOUT
|
||||||
|
bool "Flex layout previewer"
|
||||||
|
default n
|
||||||
|
config LV_USE_DEMO_MULTILANG
|
||||||
|
bool "multi-language demo"
|
||||||
|
default n
|
||||||
|
config LV_USE_DEMO_VECTOR_GRAPHIC
|
||||||
|
bool "vector graphic demo"
|
||||||
|
default n
|
||||||
|
depends on LV_USE_VECTOR_GRAPHIC
|
||||||
|
config LV_USE_DEMO_SMARTWATCH
|
||||||
|
bool "Smartwatch demo"
|
||||||
|
config LV_USE_DEMO_EBIKE
|
||||||
|
bool "Ebike demo"
|
||||||
|
config LV_USE_DEMO_HIGH_RES
|
||||||
bool "High resolution demo"
|
bool "High resolution demo"
|
||||||
|
endif
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
# A default defconfig doesn't need to store anything as it'll just take the default parameters when expanded into an actual config
|
||||||
@@ -1 +0,0 @@
|
|||||||
CONFIG_LV_CONF_MINIMAL=y
|
|
||||||
@@ -8,11 +8,10 @@ CMake
|
|||||||
Overview
|
Overview
|
||||||
********
|
********
|
||||||
CMake is a cross-platform build system generator. It is used to easily integrate a project/library into another project.
|
CMake is a cross-platform build system generator. It is used to easily integrate a project/library into another project.
|
||||||
It also offer the possibility to configure the build with different options, to enable or disable components, or to
|
It also offers the possibility to configure the build with different options, to enable or disable components, or to
|
||||||
integrate custom scripts executions during the configuration/build phase.
|
integrate custom scripts executions during the configuration/build phase.
|
||||||
|
|
||||||
LVGL includes CMake natively, which means that one can use it to configure and build LVGL directly or integrate it into an higher
|
LVGL includes CMake natively, which means that one can use it to configure and build LVGL directly or integrate it into an higher level cmake build.
|
||||||
level cmake build.
|
|
||||||
|
|
||||||
This project uses CMakePresets to ensure an easy build.
|
This project uses CMakePresets to ensure an easy build.
|
||||||
Find out more on Cmake Presets here: https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html
|
Find out more on Cmake Presets here: https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html
|
||||||
@@ -23,8 +22,7 @@ Prerequisites
|
|||||||
|
|
||||||
You need to install
|
You need to install
|
||||||
|
|
||||||
- CMake
|
- CMake with GNU make or Ninja (for Linux builds). Be sure to add ninja/make to your PATH!
|
||||||
- Ninja (for Linux builds). Be sure to Add ninja to your PATH!
|
|
||||||
- The prerequisites listed in ``scripts/install-prerequisites.sh/bat``
|
- The prerequisites listed in ``scripts/install-prerequisites.sh/bat``
|
||||||
- A python3 interpreter if you wish to use KConfig.
|
- A python3 interpreter if you wish to use KConfig.
|
||||||
|
|
||||||
@@ -132,58 +130,101 @@ This snippet adds LVGL and needs an ``lv_conf.h`` file present next to the lvgl
|
|||||||
|
|
||||||
.. code-block:: cmake
|
.. code-block:: cmake
|
||||||
|
|
||||||
set(LV_CONF_INCLUDE_SIMPLE OFF)
|
|
||||||
add_subdirectory(lvgl)
|
add_subdirectory(lvgl)
|
||||||
|
|
||||||
|
This snippet sets up LVGL and tells it which ``lv_conf.h`` file to use:
|
||||||
This snippet adds LVGL and needs an ``lv_conf.h`` file present in lvgl/src folder:
|
|
||||||
|
|
||||||
.. code-block:: cmake
|
.. code-block:: cmake
|
||||||
|
|
||||||
|
set(LV_BUILD_CONF_PATH path/to/my_lv_conf.h)
|
||||||
add_subdirectory(lvgl)
|
add_subdirectory(lvgl)
|
||||||
|
|
||||||
|
This snippet sets up LVGL and points to the folder where ``lv_conf.h`` is located:
|
||||||
This snippet adds LVGL and specify a ``lv_conf.h`` to use:
|
|
||||||
|
|
||||||
.. code-block:: cmake
|
.. code-block:: cmake
|
||||||
|
|
||||||
set(LV_CONF_PATH path/to/my_lv_conf.h)
|
set(LV_BUILD_CONF_DIR path/to/directory)
|
||||||
add_subdirectory(lvgl)
|
add_subdirectory(lvgl)
|
||||||
|
|
||||||
|
|
||||||
This snippet adds LVGL and specify to use Kconfig as the configuration system:
|
This snippet adds LVGL and specifies to use Kconfig as the configuration system:
|
||||||
|
|
||||||
.. code-block:: cmake
|
.. code-block:: cmake
|
||||||
|
|
||||||
set(LV_USE_KCONFIG ON)
|
set(LV_BUILD_USE_KCONFIG ON)
|
||||||
add_subdirectory(lvgl)
|
add_subdirectory(lvgl)
|
||||||
|
|
||||||
This snippet adds LVGL and specify to use Kconfig as the configuration system and to use a specific defconfig:
|
This snippet adds LVGL and specify to use Kconfig as the configuration system and to use a specific defconfig:
|
||||||
|
|
||||||
.. code-block:: cmake
|
.. code-block:: cmake
|
||||||
|
|
||||||
set(LV_USE_KCONFIG ON)
|
set(LV_BUILD_USE_KCONFIG ON)
|
||||||
set(LV_DEFCONFIG_PATH path/to/my_defconfig)
|
set(LV_BUILD_DEFCONFIG_PATH path/to/my_defconfig)
|
||||||
add_subdirectory(lvgl)
|
add_subdirectory(lvgl)
|
||||||
|
|
||||||
|
|
||||||
To disable the demo/example set these options:
|
To enable the demos and examples set these options:
|
||||||
|
|
||||||
.. code-block:: cmake
|
.. code-block:: cmake
|
||||||
|
|
||||||
set(LV_CONF_BUILD_DISABLE_EXAMPLES ON)
|
set(CONFIG_LV_BUILD_EXAMPLES ON)
|
||||||
set(LV_CONF_BUILD_DISABLE_DEMOS ON)
|
set(CONFIG_LV_BUILD_DEMOS ON)
|
||||||
add_subdirectory(lvgl)
|
add_subdirectory(lvgl)
|
||||||
|
|
||||||
|
Below is a list of the available options/variables
|
||||||
|
|
||||||
These cmake options are available to configure LVGL:
|
.. list-table::
|
||||||
|
:header-rows: 1
|
||||||
|
:widths: 30 70
|
||||||
|
|
||||||
|
* - Variable/Option
|
||||||
|
- Type
|
||||||
|
- Description
|
||||||
|
* - LV_BUILD_CONF_PATH
|
||||||
|
- PATH
|
||||||
|
- Allows to set a custom path for ``lv_conf.h``
|
||||||
|
* - LV_BUILD_CONF_DIR
|
||||||
|
- PATH
|
||||||
|
- Allows to set a directory containing ``lv_conf.h``
|
||||||
|
* - LV_BUILD_USE_KCONFIG
|
||||||
|
- BOOLEAN
|
||||||
|
- When set KConfig is used as the configuration source. This option is disabled by default.
|
||||||
|
* - LV_BUILD_DEFCONFIG_PATH
|
||||||
|
- PATH
|
||||||
|
- Specify to use a .defconfig file instead of the current .config in a Kconfig setup.
|
||||||
|
* - LV_BUILD_LVGL_H_SYSTEM_INCLUDE
|
||||||
|
- BOOLEAN
|
||||||
|
- Enable if LVGL will be installed to the system or your build system uses a sysroot.
|
||||||
|
Turning this option on implies that the resources generated by the image generation script
|
||||||
|
will include ``lvgl.h`` as a system include. i.e: ``#include <lvgl.h>``.
|
||||||
|
This option is disabled by default.
|
||||||
|
* - LV_BUILD_LVGL_H_SIMPLE_INCLUDE
|
||||||
|
- BOOLEAN
|
||||||
|
- When enabled the resources will include ``lvgl.h`` as a simple include, this option
|
||||||
|
is enabled by default.
|
||||||
|
* - LV_BUILD_SET_CONFIG_OPTS
|
||||||
|
- BOOLEAN
|
||||||
|
- When enabled, this option runs a script that processes the ``lv_conf.h``/Kconfig
|
||||||
|
configuration using ``pcpp`` to generate corresponding ``CONFIG_LV_*`` and
|
||||||
|
``CONFIG_LV_BUILD_*`` CMake variables based on the contents of ``lv_conf_internal.h``.
|
||||||
|
This requires python3 with ``venv`` and ``pip`` or access to a working ``pcpp``.
|
||||||
|
If KConfig is used, this is enabled automatically.
|
||||||
|
* - CONFIG_LV_BUILD_DEMOS
|
||||||
|
- BOOLEAN
|
||||||
|
- When enabled builds the demos
|
||||||
|
* - CONFIG_LV_BUILD_EXAMPLES
|
||||||
|
- BOOLEAN
|
||||||
|
- When enabled builds the examples
|
||||||
|
* - CONFIG_LV_USE_THORVG_INTERNAL
|
||||||
|
- BOOLEAN
|
||||||
|
- When enabled the in-tree LVGL version of ThorVG is compiled
|
||||||
|
* - CONFIG_LV_USE_PRIVATE_API
|
||||||
|
- BOOLEAN
|
||||||
|
- When enabled the private headers ``*_private.h`` are installed on the system
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
When ``LV_BUILD_SET_CONFIG_OPTS`` or ``LV_BUILD_USE_KCONFIG`` are enabled,
|
||||||
|
the options/variables beginning with the prefix ``CONFIG_*`` are automatically
|
||||||
|
set to the values found in ``lv_conf.h``
|
||||||
|
|
||||||
- ``LV_CONF_PATH`` (STRING): Specify a custom path for ``lv_conf.h``.
|
|
||||||
- ``LV_CONF_INCLUDE_SIMPLE`` (BOOLEAN): Use ``#include "lv_conf.h"`` instead of ``#include "../../lv_conf.h"``
|
|
||||||
- ``LV_USE_KCONFIG`` (BOOLEAN): Use Kconfig as the configuration source.
|
|
||||||
- ``LV_DEFCONFIG_PATH`` (STRING): Specify to use a defconfig file instead of the current .config in a Kconfig setup.
|
|
||||||
- ``LV_CONF_BUILD_DISABLE_EXAMPLES`` (BOOLEAN): Disable building the examples if set.
|
|
||||||
- ``LV_CONF_BUILD_DISABLE_DEMOS`` (BOOLEAN): Disable building the demos if set.
|
|
||||||
- ``LV_CONF_BUILD_DISABLE_THORVG_INTERNAL``: Disable the internal compilation of ThorVG.
|
|
||||||
- ``LV_CMAKE_CREATE_CONF_VARS`` (BOOLEAN) : Disable the creation of variables from ``lv_conf_internal.h`` this feature is disabled by default.
|
|
||||||
It is enabled automatically if ``LV_USE_KCONFIG`` is enabled. This feature requires a python3 interpreter with support for the *pip* and *venv* modules
|
|
||||||
|
|||||||
@@ -1,300 +0,0 @@
|
|||||||
include("${CMAKE_CURRENT_LIST_DIR}/version.cmake")
|
|
||||||
|
|
||||||
# Option to define LV_LVGL_H_INCLUDE_SIMPLE, default: ON
|
|
||||||
option(LV_LVGL_H_INCLUDE_SIMPLE
|
|
||||||
"Use #include \"lvgl.h\" instead of #include \"../../lvgl.h\"" ON)
|
|
||||||
|
|
||||||
# Option to define LV_CONF_INCLUDE_SIMPLE, default: ON
|
|
||||||
option(LV_CONF_INCLUDE_SIMPLE
|
|
||||||
"Use #include \"lv_conf.h\" instead of #include \"../../lv_conf.h\"" ON)
|
|
||||||
|
|
||||||
set(LV_KCONFIG_IGNORE "Don't use Kconfig. Kconfig is not used by default." ON)
|
|
||||||
|
|
||||||
find_package(Python REQUIRED)
|
|
||||||
|
|
||||||
option(LV_CONF_SKIP "Skip including lv_conf.h during configuration" OFF)
|
|
||||||
option(LV_USE_KCONFIG "Use Kconfig to configure LVGL" OFF)
|
|
||||||
option(LV_CMAKE_CREATE_CONF_VARS "Create variables from the options defined in lv_conf_internal.h - required for KConfig" OFF)
|
|
||||||
|
|
||||||
# Option LV_CONF_PATH, which should be the path for lv_conf.h
|
|
||||||
# If set parent path LV_CONF_DIR is added to includes
|
|
||||||
if( LV_CONF_PATH )
|
|
||||||
get_filename_component(LV_CONF_DIR ${LV_CONF_PATH} DIRECTORY)
|
|
||||||
endif( LV_CONF_PATH )
|
|
||||||
|
|
||||||
# Option to build shared libraries (as opposed to static), default: OFF
|
|
||||||
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
|
|
||||||
|
|
||||||
# Set sources used for LVGL components
|
|
||||||
file(GLOB_RECURSE SOURCES ${LVGL_ROOT_DIR}/src/*.c ${LVGL_ROOT_DIR}/src/*.S)
|
|
||||||
file(GLOB_RECURSE EXAMPLE_SOURCES ${LVGL_ROOT_DIR}/examples/*.c)
|
|
||||||
file(GLOB_RECURSE DEMO_SOURCES ${LVGL_ROOT_DIR}/demos/*.c)
|
|
||||||
file(GLOB_RECURSE THORVG_SOURCES ${LVGL_ROOT_DIR}/src/libs/thorvg/*.cpp ${LVGL_ROOT_DIR}/src/others/vg_lite_tvg/*.cpp)
|
|
||||||
|
|
||||||
# Build LVGL library
|
|
||||||
add_library(lvgl ${SOURCES})
|
|
||||||
add_library(lvgl::lvgl ALIAS lvgl)
|
|
||||||
|
|
||||||
set(PCPP_DEFINITIONS_LIST "")
|
|
||||||
|
|
||||||
if ( LV_USE_KCONFIG )
|
|
||||||
# kconfig.cmake will generate the .config
|
|
||||||
# and autoconf.h, which will be used by lv_conf_kconfig.h
|
|
||||||
include(${CMAKE_CURRENT_LIST_DIR}/kconfig.cmake)
|
|
||||||
|
|
||||||
# If KConfig is used - creating CMAKE variables from lv_conf_internal.h is required,
|
|
||||||
# so PCPP is used to pre-process lv_conf_internal.h
|
|
||||||
set(LV_CMAKE_CREATE_CONF_VARS TRUE)
|
|
||||||
|
|
||||||
# Set the flag to specify we are using kconfig, needed for the
|
|
||||||
# generate_cmake_variables.py script
|
|
||||||
set(LV_KCONFIG_IGNORE OFF)
|
|
||||||
set(KCONFIG_FLAG --kconfig)
|
|
||||||
|
|
||||||
# If using Kconfig, we need to define additional definitions
|
|
||||||
list(APPEND PCPP_DEFINITIONS_LIST "LV_CONF_SKIP" "LV_CONF_KCONFIG_EXTERNAL_INCLUDE=\"${LV_CONF_KCONFIG_EXTERNAL_INCLUDE}\"")
|
|
||||||
else()
|
|
||||||
if (LV_CONF_PATH)
|
|
||||||
list(APPEND PCPP_DEFINITIONS_LIST "LV_CONF_PATH=\"${LV_CONF_PATH}\"")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (LV_LVGL_H_INCLUDE_SIMPLE)
|
|
||||||
list(APPEND PCPP_DEFINITIONS_LIST "LV_LVGL_H_INCLUDE_SIMPLE")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (LV_CONF_INCLUDE_SIMPLE)
|
|
||||||
list(APPEND PCPP_DEFINITIONS_LIST "LV_CONF_INCLUDE_SIMPLE")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(PCPP_DEFINITIONS_LIST)
|
|
||||||
set(PCPP_ADDITIONAL_DEFS "--defs" ${PCPP_DEFINITIONS_LIST})
|
|
||||||
else()
|
|
||||||
set(PCPP_ADDITIONAL_DEFS "")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
target_compile_definitions(
|
|
||||||
lvgl PUBLIC $<$<BOOL:${LV_LVGL_H_INCLUDE_SIMPLE}>:LV_LVGL_H_INCLUDE_SIMPLE>
|
|
||||||
$<$<BOOL:${LV_CONF_INCLUDE_SIMPLE}>:LV_CONF_INCLUDE_SIMPLE>
|
|
||||||
$<$<BOOL:${LV_KCONFIG_IGNORE}>:LV_KCONFIG_IGNORE>
|
|
||||||
$<$<BOOL:${LV_CONF_SKIP}>:LV_CONF_SKIP>
|
|
||||||
)
|
|
||||||
|
|
||||||
if ( LV_CMAKE_CREATE_CONF_VARS )
|
|
||||||
# Use the portable pcpp to preprocess lv_conf_internal.h
|
|
||||||
execute_process(
|
|
||||||
COMMAND ${Python_EXECUTABLE} ${LVGL_ROOT_DIR}/scripts/preprocess_lv_conf_internal.py
|
|
||||||
--input ${LVGL_ROOT_DIR}/src/lv_conf_internal.h
|
|
||||||
--tmp_file ${CMAKE_CURRENT_BINARY_DIR}/tmp.h
|
|
||||||
--output ${CMAKE_CURRENT_BINARY_DIR}/lv_conf_expanded.h
|
|
||||||
--workfolder ${CMAKE_CURRENT_BINARY_DIR}
|
|
||||||
${PCPP_ADDITIONAL_DEFS}
|
|
||||||
--include ${LVGL_ROOT_DIR} ${LVGL_ROOT_DIR}/.. ${LVGL_ROOT_DIR}/src ${LV_CONF_DIR}
|
|
||||||
RESULT_VARIABLE ret
|
|
||||||
)
|
|
||||||
if(NOT "${ret}" STREQUAL "0")
|
|
||||||
message(FATAL_ERROR "preprocess_lv_conf_internal.py failed with return code: ${ret}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Convert the expanded lv_conf_expanded.h to cmake variables
|
|
||||||
execute_process(
|
|
||||||
COMMAND ${Python_EXECUTABLE}
|
|
||||||
${LVGL_ROOT_DIR}/scripts/generate_cmake_variables.py
|
|
||||||
--input ${CMAKE_CURRENT_BINARY_DIR}/lv_conf_expanded.h
|
|
||||||
--output ${CMAKE_CURRENT_BINARY_DIR}/lv_conf.cmake
|
|
||||||
--parentscope
|
|
||||||
${KCONFIG_FLAG}
|
|
||||||
RESULT_VARIABLE ret
|
|
||||||
)
|
|
||||||
if(NOT "${ret}" STREQUAL "0")
|
|
||||||
message(FATAL_ERROR "generate_cmake_variables.py command failed with return code: ${ret}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# This will set all CONFIG_LV_USE_* variables in cmake
|
|
||||||
include(${CMAKE_CURRENT_BINARY_DIR}/lv_conf.cmake)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Add definition of LV_CONF_PATH only if needed
|
|
||||||
# Do not redefine it if already defined in tests/CMakeLists.txt
|
|
||||||
if(LV_CONF_PATH AND NOT LV_BUILD_TEST)
|
|
||||||
target_compile_definitions(lvgl PUBLIC LV_CONF_PATH="${LV_CONF_PATH}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Add definition of LV_CONF_SKIP only if needed
|
|
||||||
if(LV_CONF_SKIP)
|
|
||||||
target_compile_definitions(lvgl PUBLIC LV_CONF_SKIP=1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Include root and optional parent path of LV_CONF_PATH
|
|
||||||
target_include_directories(lvgl SYSTEM PUBLIC ${LVGL_ROOT_DIR} ${LV_CONF_DIR} ${CMAKE_CURRENT_BINARY_DIR})
|
|
||||||
|
|
||||||
|
|
||||||
if(NOT LV_CONF_BUILD_DISABLE_THORVG_INTERNAL)
|
|
||||||
add_library(lvgl_thorvg ${THORVG_SOURCES})
|
|
||||||
add_library(lvgl::thorvg ALIAS lvgl_thorvg)
|
|
||||||
target_include_directories(lvgl_thorvg SYSTEM PUBLIC ${LVGL_ROOT_DIR}/src/libs/thorvg)
|
|
||||||
target_link_libraries(lvgl_thorvg PUBLIC lvgl)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT (CMAKE_C_COMPILER_ID STREQUAL "MSVC"))
|
|
||||||
set_source_files_properties(${LVGL_ROOT_DIR}/src/others/vg_lite_tvg/vg_lite_tvg.cpp PROPERTIES COMPILE_FLAGS -Wunused-parameter)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Build LVGL example library
|
|
||||||
if(NOT LV_CONF_BUILD_DISABLE_EXAMPLES)
|
|
||||||
add_library(lvgl_examples ${EXAMPLE_SOURCES})
|
|
||||||
add_library(lvgl::examples ALIAS lvgl_examples)
|
|
||||||
|
|
||||||
target_include_directories(lvgl_examples SYSTEM PUBLIC ${LVGL_ROOT_DIR}/examples)
|
|
||||||
target_link_libraries(lvgl_examples PUBLIC lvgl)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Build LVGL demos library
|
|
||||||
if(NOT LV_CONF_BUILD_DISABLE_DEMOS)
|
|
||||||
add_library(lvgl_demos ${DEMO_SOURCES})
|
|
||||||
add_library(lvgl::demos ALIAS lvgl_demos)
|
|
||||||
|
|
||||||
target_include_directories(lvgl_demos SYSTEM PUBLIC ${LVGL_ROOT_DIR}/demos)
|
|
||||||
target_link_libraries(lvgl_demos PUBLIC lvgl)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Library and headers can be installed to system using make install
|
|
||||||
file(GLOB LVGL_PUBLIC_HEADERS
|
|
||||||
"${LVGL_ROOT_DIR}/lvgl.h"
|
|
||||||
"${LVGL_ROOT_DIR}/lv_version.h")
|
|
||||||
|
|
||||||
if(NOT LV_CONF_SKIP)
|
|
||||||
if (LV_CONF_PATH)
|
|
||||||
string(REPLACE "\"" "" UNQUOTED_LV_CONF_PATH ${LV_CONF_PATH})
|
|
||||||
list(APPEND LVGL_PUBLIC_HEADERS ${UNQUOTED_LV_CONF_PATH})
|
|
||||||
else()
|
|
||||||
list(APPEND LVGL_PUBLIC_HEADERS
|
|
||||||
"${CMAKE_SOURCE_DIR}/lv_conf.h")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if("${LIB_INSTALL_DIR}" STREQUAL "")
|
|
||||||
set(LIB_INSTALL_DIR "lib")
|
|
||||||
endif()
|
|
||||||
if("${RUNTIME_INSTALL_DIR}" STREQUAL "")
|
|
||||||
set(RUNTIME_INSTALL_DIR "bin")
|
|
||||||
endif()
|
|
||||||
if("${INC_INSTALL_DIR}" STREQUAL "")
|
|
||||||
set(INC_INSTALL_DIR "include/lvgl")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
#Install headers
|
|
||||||
install(
|
|
||||||
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/src"
|
|
||||||
DESTINATION "${INC_INSTALL_DIR}"
|
|
||||||
FILES_MATCHING
|
|
||||||
PATTERN "*.h")
|
|
||||||
|
|
||||||
# Install headers from the LVGL_PUBLIC_HEADERS variable
|
|
||||||
install(
|
|
||||||
FILES ${LVGL_PUBLIC_HEADERS}
|
|
||||||
DESTINATION "${INC_INSTALL_DIR}/"
|
|
||||||
)
|
|
||||||
|
|
||||||
# install example headers
|
|
||||||
if(NOT LV_CONF_BUILD_DISABLE_EXAMPLES)
|
|
||||||
install(
|
|
||||||
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/examples"
|
|
||||||
DESTINATION "${INC_INSTALL_DIR}"
|
|
||||||
FILES_MATCHING
|
|
||||||
PATTERN "*.h")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# install demo headers
|
|
||||||
if(NOT LV_CONF_BUILD_DISABLE_DEMOS)
|
|
||||||
install(
|
|
||||||
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/demos"
|
|
||||||
DESTINATION "${INC_INSTALL_DIR}"
|
|
||||||
FILES_MATCHING
|
|
||||||
PATTERN "*.h")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
configure_file("${LVGL_ROOT_DIR}/lvgl.pc.in" ${CMAKE_CURRENT_BINARY_DIR}/lvgl.pc @ONLY)
|
|
||||||
configure_file("${LVGL_ROOT_DIR}/lv_version.h.in" ${CMAKE_CURRENT_BINARY_DIR}/lv_version.h @ONLY)
|
|
||||||
|
|
||||||
install(
|
|
||||||
FILES "${CMAKE_CURRENT_BINARY_DIR}/lvgl.pc"
|
|
||||||
DESTINATION "share/pkgconfig/")
|
|
||||||
|
|
||||||
# Install library
|
|
||||||
set_target_properties(
|
|
||||||
lvgl
|
|
||||||
PROPERTIES OUTPUT_NAME lvgl
|
|
||||||
VERSION ${LVGL_VERSION}
|
|
||||||
SOVERSION ${LVGL_SOVERSION}
|
|
||||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
|
|
||||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
|
|
||||||
PUBLIC_HEADER "${LVGL_PUBLIC_HEADERS}")
|
|
||||||
|
|
||||||
install(
|
|
||||||
TARGETS lvgl
|
|
||||||
ARCHIVE DESTINATION "${LIB_INSTALL_DIR}"
|
|
||||||
LIBRARY DESTINATION "${LIB_INSTALL_DIR}"
|
|
||||||
RUNTIME DESTINATION "${RUNTIME_INSTALL_DIR}"
|
|
||||||
PUBLIC_HEADER DESTINATION "${INC_INSTALL_DIR}")
|
|
||||||
|
|
||||||
|
|
||||||
# Install library thorvg
|
|
||||||
if(NOT LV_CONF_BUILD_DISABLE_THORVG_INTERNAL)
|
|
||||||
set_target_properties(
|
|
||||||
lvgl_thorvg
|
|
||||||
PROPERTIES OUTPUT_NAME lvgl_thorvg
|
|
||||||
VERSION ${LVGL_VERSION}
|
|
||||||
SOVERSION ${LVGL_SOVERSION}
|
|
||||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
|
|
||||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
|
|
||||||
PUBLIC_HEADER "${LVGL_PUBLIC_HEADERS}")
|
|
||||||
|
|
||||||
install(
|
|
||||||
TARGETS lvgl_thorvg
|
|
||||||
ARCHIVE DESTINATION "${LIB_INSTALL_DIR}"
|
|
||||||
LIBRARY DESTINATION "${LIB_INSTALL_DIR}"
|
|
||||||
RUNTIME DESTINATION "${RUNTIME_INSTALL_DIR}"
|
|
||||||
PUBLIC_HEADER DESTINATION "${INC_INSTALL_DIR}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Install library demos
|
|
||||||
if(NOT LV_CONF_BUILD_DISABLE_DEMOS)
|
|
||||||
set_target_properties(
|
|
||||||
lvgl_demos
|
|
||||||
PROPERTIES OUTPUT_NAME lvgl_demos
|
|
||||||
VERSION ${LVGL_VERSION}
|
|
||||||
SOVERSION ${LVGL_SOVERSION}
|
|
||||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
|
|
||||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
|
|
||||||
PUBLIC_HEADER "${LVGL_PUBLIC_HEADERS}")
|
|
||||||
|
|
||||||
install(
|
|
||||||
TARGETS lvgl_demos
|
|
||||||
ARCHIVE DESTINATION "${LIB_INSTALL_DIR}"
|
|
||||||
LIBRARY DESTINATION "${LIB_INSTALL_DIR}"
|
|
||||||
RUNTIME DESTINATION "${RUNTIME_INSTALL_DIR}"
|
|
||||||
PUBLIC_HEADER DESTINATION "${INC_INSTALL_DIR}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
#install library examples
|
|
||||||
if(NOT LV_CONF_BUILD_DISABLE_EXAMPLES)
|
|
||||||
set_target_properties(
|
|
||||||
lvgl_examples
|
|
||||||
PROPERTIES OUTPUT_NAME lvgl_examples
|
|
||||||
VERSION ${LVGL_VERSION}
|
|
||||||
SOVERSION ${LVGL_SOVERSION}
|
|
||||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
|
|
||||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
|
|
||||||
PUBLIC_HEADER "${LVGL_PUBLIC_HEADERS}")
|
|
||||||
|
|
||||||
install(
|
|
||||||
TARGETS lvgl_examples
|
|
||||||
ARCHIVE DESTINATION "${LIB_INSTALL_DIR}"
|
|
||||||
LIBRARY DESTINATION "${LIB_INSTALL_DIR}"
|
|
||||||
RUNTIME DESTINATION "${RUNTIME_INSTALL_DIR}"
|
|
||||||
PUBLIC_HEADER DESTINATION "${INC_INSTALL_DIR}")
|
|
||||||
endif()
|
|
||||||
@@ -5,38 +5,53 @@ set(OUTPUT_DOTCONFIG ${CMAKE_CURRENT_SOURCE_DIR}/.config)
|
|||||||
set(KCONFIG_LIST_OUT ${CMAKE_CURRENT_BINARY_DIR}/kconfig_list)
|
set(KCONFIG_LIST_OUT ${CMAKE_CURRENT_BINARY_DIR}/kconfig_list)
|
||||||
set(AUTO_CONF_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
set(AUTO_CONF_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
|
||||||
# Check if the user want to use a defconfig, using the -DLV_DEFCONFIG_PATH option
|
# Check if the user wants to use a defconfig, using the -DLV_BUILD_DEFCONFIG_PATH option
|
||||||
if(LV_DEFCONFIG_PATH)
|
if(LV_BUILD_DEFCONFIG_PATH)
|
||||||
set(DOTCONFIG ${LV_DEFCONFIG_PATH})
|
# The supplied path can be relative - normalize it to absolute
|
||||||
|
message(STATUS "Using defconfig: ${LV_BUILD_DEFCONFIG_PATH}")
|
||||||
|
|
||||||
|
if (NOT IS_ABSOLUTE ${CONF_PATH})
|
||||||
|
file(REAL_PATH ${LV_BUILD_DEFCONFIG_PATH}
|
||||||
|
DOTCONFIG BASE_DIRECTORY ${CMAKE_SOURCE_DIR})
|
||||||
|
message(STATUS "Converted to absolute path: ${DOTCONFIG}")
|
||||||
|
|
||||||
|
else()
|
||||||
|
set(DOTCONFIG ${LV_BUILD_DEFCONFIG_PATH})
|
||||||
|
endif()
|
||||||
|
|
||||||
else()
|
else()
|
||||||
set(DOTCONFIG ${CMAKE_CURRENT_SOURCE_DIR}/.config)
|
# Fallback - This will attempt to use a .config file inside of the LVGL directory
|
||||||
|
set(DOTCONFIG ${CMAKE_CURRENT_SOURCE_DIR}/.config)
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (NOT EXISTS ${DOTCONFIG})
|
||||||
|
message(FATAL_ERROR "defconfig: ${DOTCONFIG} - does not exist")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${Python_EXECUTABLE}
|
COMMAND ${Python_EXECUTABLE}
|
||||||
${LVGL_ROOT_DIR}/scripts/kconfig.py
|
${LVGL_ROOT_DIR}/scripts/kconfig.py
|
||||||
${LVGL_ROOT_DIR}/Kconfig
|
${LVGL_ROOT_DIR}/Kconfig
|
||||||
${OUTPUT_DOTCONFIG}
|
${OUTPUT_DOTCONFIG}
|
||||||
${AUTOCONF_H}
|
${AUTOCONF_H}
|
||||||
${KCONFIG_LIST_OUT}
|
${KCONFIG_LIST_OUT}
|
||||||
${DOTCONFIG}
|
${DOTCONFIG}
|
||||||
WORKING_DIRECTORY ${LVGL_ROOT_DIR}
|
WORKING_DIRECTORY ${LVGL_ROOT_DIR}
|
||||||
# The working directory is set to the app dir such that the user
|
# The working directory is set to the app dir such that the user
|
||||||
# can use relative paths in CONF_FILE, e.g. CONF_FILE=nrf5.conf
|
# can use relative paths in CONF_FILE, e.g. CONF_FILE=nrf5.conf
|
||||||
RESULT_VARIABLE ret
|
RESULT_VARIABLE ret
|
||||||
)
|
)
|
||||||
if(NOT "${ret}" STREQUAL "0")
|
if(NOT "${ret}" STREQUAL "0")
|
||||||
message(FATAL_ERROR "command failed with return code: ${ret}")
|
message(FATAL_ERROR "command failed with return code: ${ret}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Re-configure (Re-execute all CMakeLists.txt code) when autoconf.h changes
|
# Re-configure (Re-execute all CMakeLists.txt code) when autoconf.h changes
|
||||||
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${AUTOCONF_H})
|
set_target_properties(lvgl PROPERTIES CMAKE_CONFIGURE_DEPENDS ${AUTOCONF_H})
|
||||||
|
|
||||||
# Set compile definitions for lvgl build
|
|
||||||
add_compile_definitions(LV_CONF_KCONFIG_EXTERNAL_INCLUDE="${AUTOCONF_H}")
|
|
||||||
# Set the variable that can be used by the CMakeLists.txt including this file
|
# Set the variable that can be used by the CMakeLists.txt including this file
|
||||||
set(LV_CONF_KCONFIG_EXTERNAL_INCLUDE "${AUTOCONF_H}")
|
set(KCONFIG_EXTERNAL_INCLUDE ${AUTOCONF_H})
|
||||||
|
|
||||||
# Ensure LV_DEFCONFIG_PATH is not set in the path, to be able to call it without
|
# Ensure LV_BUILD_DEFCONFIG_PATH is not set in the path, to be able to call it without
|
||||||
# the -DLV_DEFCONFIG_PATH after the first configuration, and to work with the .config
|
# the -DLV_BUILD_DEFCONFIG_PATH after the first configuration, and to work with the .config
|
||||||
unset(LV_DEFCONFIG_PATH CACHE)
|
unset(LV_BUILD_DEFCONFIG_PATH CACHE)
|
||||||
|
|||||||
@@ -0,0 +1,444 @@
|
|||||||
|
include("${CMAKE_CURRENT_LIST_DIR}/version.cmake")
|
||||||
|
|
||||||
|
############################## OPTIONS ######################################
|
||||||
|
|
||||||
|
set(LV_BUILD_CONF_PATH "" CACHE PATH
|
||||||
|
"Use this to specify the location of and/or filename of lv_conf.h")
|
||||||
|
|
||||||
|
set(LV_BUILD_CONF_DIR "" CACHE PATH
|
||||||
|
"Can be used to specify the include dir containing lv_conf.h, to be used in conjuction with LV_CONF_INCLUDE_SIMPLE")
|
||||||
|
|
||||||
|
option(LV_BUILD_USE_KCONFIG "Use Kconfig" OFF)
|
||||||
|
set(LV_BUILD_DEFCONFIG_PATH "" CACHE PATH
|
||||||
|
"Supply the default Kconfig configuration - used with Kconfig")
|
||||||
|
|
||||||
|
option(LV_BUILD_SET_CONFIG_OPTS
|
||||||
|
"Create variables from the definitions in lv_conf_internal.h" OFF)
|
||||||
|
|
||||||
|
option(LV_BUILD_LVGL_H_SIMPLE_INCLUDE
|
||||||
|
"Disable if the lvgl directory is located at the top-level of your project" ON)
|
||||||
|
|
||||||
|
option(LV_BUILD_LVGL_H_SYSTEM_INCLUDE
|
||||||
|
"Enable if LVGL will be installed on the system or the build system of your application uses a sysroot" OFF)
|
||||||
|
|
||||||
|
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
|
||||||
|
|
||||||
|
### LVGL configuration options always use the prefix CONFIG_
|
||||||
|
### They can be set using the -D argument or cmake-gui(1) and are kept in cache
|
||||||
|
### The option names are the same as the defines in lv_conf.h - so check it for a description
|
||||||
|
|
||||||
|
### INFO: When LV_BUILD_SET_CONFIG_OPTS is enabled - these options are set automatically
|
||||||
|
### based on lv_conf.h or Kconfig
|
||||||
|
|
||||||
|
option(CONFIG_LV_BUILD_DEMOS "Build demos" ON)
|
||||||
|
option(CONFIG_LV_BUILD_EXAMPLES "Build examples" ON)
|
||||||
|
option(CONFIG_LV_USE_THORVG_INTERNAL "Use the internal version of ThorVG" ON)
|
||||||
|
option(CONFIG_LV_USE_PRIVATE_API "If set - install the private headers" OFF)
|
||||||
|
|
||||||
|
############################## BUILD ######################################
|
||||||
|
|
||||||
|
if (LV_BUILD_CONF_PATH AND LV_BUILD_CONF_DIR)
|
||||||
|
message(FATAL_ERROR "can not use LV_BUILD_CONF_DIR and LV_BUILD_CONF_PATH at the same time")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (LV_BUILD_USE_KCONFIG)
|
||||||
|
# If Kconfig is used then enable PCPP
|
||||||
|
set(LV_BUILD_SET_CONFIG_OPTS ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (LV_BUILD_SET_CONFIG_OPTS)
|
||||||
|
# Python is required when LV_BUILD_SET_CONFIG_OPTS is enabled
|
||||||
|
# PCPP is used to pre-process lv_conf_internal.h and it avoids setting
|
||||||
|
# CONFIG_LV_USE or CONFIG_LV_BUILD options manually
|
||||||
|
find_package(Python REQUIRED)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Determine if LVGL is built from a top-level directory
|
||||||
|
get_directory_property(HAS_PARENT_SCOPE PARENT_DIRECTORY)
|
||||||
|
|
||||||
|
|
||||||
|
# Set sources used for LVGL components
|
||||||
|
file(GLOB_RECURSE SOURCES ${LVGL_ROOT_DIR}/src/*.c
|
||||||
|
${LVGL_ROOT_DIR}/src/*.S)
|
||||||
|
file(GLOB_RECURSE EXAMPLE_SOURCES ${LVGL_ROOT_DIR}/examples/*.c)
|
||||||
|
file(GLOB_RECURSE DEMO_SOURCES ${LVGL_ROOT_DIR}/demos/*.c)
|
||||||
|
file(GLOB_RECURSE THORVG_SOURCES ${LVGL_ROOT_DIR}/src/libs/thorvg/*.cpp
|
||||||
|
${LVGL_ROOT_DIR}/src/others/vg_lite_tvg/*.cpp)
|
||||||
|
|
||||||
|
# Build LVGL library
|
||||||
|
add_library(lvgl ${SOURCES})
|
||||||
|
add_library(lvgl::lvgl ALIAS lvgl)
|
||||||
|
|
||||||
|
if (NOT LV_BUILD_USE_KCONFIG)
|
||||||
|
|
||||||
|
# Default - use the lv_conf.h configuration file
|
||||||
|
target_compile_definitions(lvgl PUBLIC LV_KCONFIG_IGNORE)
|
||||||
|
|
||||||
|
message(STATUS ${LV_BUILD_CONF_PATH})
|
||||||
|
|
||||||
|
if (LV_BUILD_CONF_PATH)
|
||||||
|
|
||||||
|
set(CONF_PATH ${LV_BUILD_CONF_PATH})
|
||||||
|
message(STATUS "Using configuration: ${CONF_PATH}")
|
||||||
|
|
||||||
|
if (NOT IS_ABSOLUTE ${CONF_PATH})
|
||||||
|
file(REAL_PATH ${CONF_PATH} CONF_PATH BASE_DIRECTORY ${CMAKE_SOURCE_DIR})
|
||||||
|
message(STATUS "Converted to absolute path: ${CONF_PATH}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
get_filename_component(CONF_INC_DIR ${CONF_PATH} DIRECTORY)
|
||||||
|
|
||||||
|
target_compile_definitions(lvgl PUBLIC LV_CONF_PATH="${CONF_PATH}")
|
||||||
|
|
||||||
|
elseif(LV_BUILD_CONF_DIR)
|
||||||
|
|
||||||
|
message(STATUS "Using lv_conf.h from the user-supplied configuration directory: ${LV_BUILD_CONF_DIR}")
|
||||||
|
|
||||||
|
set(CONF_INC_DIR ${LV_BUILD_CONF_DIR})
|
||||||
|
|
||||||
|
list(APPEND LVGL_PUBLIC_HEADERS ${CONF_INC_DIR}/lv_conf.h)
|
||||||
|
|
||||||
|
# Avoid compilation errors due to the relative path of the include directory
|
||||||
|
if (NOT IS_ABSOLUTE ${CONF_INC_DIR})
|
||||||
|
file(REAL_PATH ${CONF_INC_DIR} CONF_INC_DIR BASE_DIRECTORY ${CMAKE_SOURCE_DIR})
|
||||||
|
message(STATUS "Converted to absolute path: ${CONF_INC_DIR}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CONF_PATH ${CONF_INC_DIR}/lv_conf.h)
|
||||||
|
|
||||||
|
target_compile_definitions(lvgl PUBLIC LV_CONF_INCLUDE_SIMPLE)
|
||||||
|
|
||||||
|
else()
|
||||||
|
|
||||||
|
message(STATUS "Using lv_conf.h from the top-level project directory")
|
||||||
|
|
||||||
|
list(APPEND LVGL_PUBLIC_HEADERS ${CMAKE_SOURCE_DIR}/lv_conf.h)
|
||||||
|
|
||||||
|
set(CONF_INC_DIR ${CMAKE_SOURCE_DIR})
|
||||||
|
set(CONF_PATH ${CONF_INC_DIR}/lv_conf.h)
|
||||||
|
|
||||||
|
target_compile_definitions(lvgl PUBLIC LV_CONF_INCLUDE_SIMPLE)
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Check if lv_conf.h exists at the configured location
|
||||||
|
if (NOT EXISTS ${CONF_PATH})
|
||||||
|
message(FATAL_ERROR "Configuration file: ${CONF_PATH} - not found")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
else()
|
||||||
|
|
||||||
|
# Use kconfig
|
||||||
|
# kconfig.cmake will generate the .config
|
||||||
|
# and autoconf.h, which will be used by lv_conf_kconfig.h
|
||||||
|
include(${CMAKE_CURRENT_LIST_DIR}/kconfig.cmake)
|
||||||
|
|
||||||
|
# Set the flag to specify we are using kconfig, needed for the
|
||||||
|
# generate_cmake_variables.py script.
|
||||||
|
set(GEN_VARS_KCONFIG_MODE_FLAG --kconfig)
|
||||||
|
|
||||||
|
# If using Kconfig, we need to define additional definitions
|
||||||
|
target_compile_definitions(lvgl PUBLIC
|
||||||
|
"LV_CONF_SKIP"
|
||||||
|
"LV_CONF_KCONFIG_EXTERNAL_INCLUDE=\"${KCONFIG_EXTERNAL_INCLUDE}\"")
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (LV_BUILD_LVGL_H_SYSTEM_INCLUDE)
|
||||||
|
target_compile_definitions(lvgl PUBLIC LV_LVGL_H_INCLUDE_SYSTEM)
|
||||||
|
elseif(LV_BUILD_LVGL_H_SIMPLE_INCLUDE)
|
||||||
|
target_compile_definitions(lvgl PUBLIC LV_LVGL_H_INCLUDE_SIMPLE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
if (LV_BUILD_SET_CONFIG_OPTS)
|
||||||
|
# Use the portable pcpp to preprocess lv_conf_internal.h
|
||||||
|
|
||||||
|
get_target_property(CONF_DEFINES lvgl COMPILE_DEFINITIONS)
|
||||||
|
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${Python_EXECUTABLE} ${LVGL_ROOT_DIR}/scripts/preprocess_lv_conf_internal.py
|
||||||
|
--input ${LVGL_ROOT_DIR}/src/lv_conf_internal.h
|
||||||
|
--tmp_file ${CMAKE_CURRENT_BINARY_DIR}/tmp.h
|
||||||
|
--output ${CMAKE_CURRENT_BINARY_DIR}/lv_conf_expanded.h
|
||||||
|
--workfolder ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
--defs ${CONF_DEFINES}
|
||||||
|
--include ${LVGL_ROOT_DIR} ${CMAKE_SOURCE_DIR} ${LVGL_ROOT_DIR}/src ${CONF_INC_DIR}
|
||||||
|
RESULT_VARIABLE ret
|
||||||
|
)
|
||||||
|
if(NOT "${ret}" STREQUAL "0")
|
||||||
|
message(FATAL_ERROR "preprocess_lv_conf_internal.py failed with return code: ${ret}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(HAS_PARENT_SCOPE)
|
||||||
|
# Also set the CONFIG_LV_USE_* and CONFIG_LV_BUILD_* configuration
|
||||||
|
# on the parent scope
|
||||||
|
set(PARENT_SCOPE_ARG "--parentscope")
|
||||||
|
else()
|
||||||
|
set(PARENT_SCOPE_ARG "")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Convert the expanded lv_conf_expanded.h to cmake variables
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${Python_EXECUTABLE}
|
||||||
|
${LVGL_ROOT_DIR}/scripts/generate_cmake_variables.py
|
||||||
|
--input ${CMAKE_CURRENT_BINARY_DIR}/lv_conf_expanded.h
|
||||||
|
--output ${CMAKE_CURRENT_BINARY_DIR}/lv_conf.cmake
|
||||||
|
${PARENT_SCOPE_ARG}
|
||||||
|
${GEN_VARS_KCONFIG_MODE_FLAG}
|
||||||
|
RESULT_VARIABLE ret
|
||||||
|
)
|
||||||
|
|
||||||
|
if(NOT "${ret}" STREQUAL "0")
|
||||||
|
message(FATAL_ERROR "generate_cmake_variables.py command failed with return code: ${ret}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# This will set all CONFIG_LV_USE_* or CONFIG_LV_BUILD_* variables in cmake
|
||||||
|
include(${CMAKE_CURRENT_BINARY_DIR}/lv_conf.cmake)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Set the configuration inc dir for all targets created in this CMakeLists.txt
|
||||||
|
# CMAKE_CURRENT_SOURCE_DIR is necessary because the assets include lvgl/lvgl.h ...
|
||||||
|
include_directories(${CONF_INC_DIR} ${LVGL_ROOT_DIR})
|
||||||
|
|
||||||
|
target_include_directories(lvgl SYSTEM PUBLIC ${LVGL_ROOT_DIR} ${CONF_INC_DIR} ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
|
||||||
|
# Propagate the compiler definitions set on LVGL to the rest of the targets
|
||||||
|
# mentioned in this file
|
||||||
|
get_target_property(COMP_DEF lvgl COMPILE_DEFINITIONS)
|
||||||
|
|
||||||
|
if(CONFIG_LV_USE_THORVG_INTERNAL)
|
||||||
|
message(STATUS "Enabling the building of ThorVG internal")
|
||||||
|
|
||||||
|
add_library(lvgl_thorvg ${THORVG_SOURCES})
|
||||||
|
add_library(lvgl::thorvg ALIAS lvgl_thorvg)
|
||||||
|
target_include_directories(lvgl_thorvg PRIVATE ${LVGL_ROOT_DIR}/src/libs/thorvg)
|
||||||
|
set_target_properties(lvgl_thorvg PROPERTIES COMPILE_DEFINITIONS "${COMP_DEF}")
|
||||||
|
|
||||||
|
# This tells cmake to link lvgl with lvgl_thorvg
|
||||||
|
# The linker will resolve all dependencies when dynamic linking
|
||||||
|
target_link_libraries(lvgl PRIVATE lvgl_thorvg)
|
||||||
|
# During static linking, we need to create a cyclic dependency as thorvg also needs lvgl
|
||||||
|
if (NOT BUILD_SHARED_LIBS)
|
||||||
|
target_link_libraries(lvgl_thorvg PRIVATE lvgl)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT (CMAKE_C_COMPILER_ID STREQUAL "MSVC"))
|
||||||
|
set_source_files_properties(${LVGL_ROOT_DIR}/src/others/vg_lite_tvg/vg_lite_tvg.cpp
|
||||||
|
PROPERTIES COMPILE_FLAGS -Wunused-parameter)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Build LVGL example library
|
||||||
|
if(CONFIG_LV_BUILD_EXAMPLES)
|
||||||
|
|
||||||
|
message(STATUS "Enabling the building of examples")
|
||||||
|
|
||||||
|
add_library(lvgl_examples ${EXAMPLE_SOURCES})
|
||||||
|
add_library(lvgl::examples ALIAS lvgl_examples)
|
||||||
|
target_include_directories(lvgl_examples SYSTEM PUBLIC ${LVGL_ROOT_DIR}/examples)
|
||||||
|
set_target_properties(lvgl_examples PROPERTIES COMPILE_DEFINITIONS "${COMP_DEF}")
|
||||||
|
|
||||||
|
# This tells cmake to link lvgl with lvgl_examples
|
||||||
|
# PUBLIC allows code linking with LVGL to also use the library
|
||||||
|
# The linker will resolve all dependencies when dynamic linking
|
||||||
|
target_link_libraries(lvgl PUBLIC lvgl_examples)
|
||||||
|
|
||||||
|
# During static linking, we need to create a cyclic dependency as the examples also needs lvgl
|
||||||
|
if (NOT BUILD_SHARED_LIBS)
|
||||||
|
target_link_libraries(lvgl_examples PRIVATE lvgl)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Build LVGL demos library
|
||||||
|
if(CONFIG_LV_BUILD_DEMOS)
|
||||||
|
|
||||||
|
message(STATUS "Enabling the building of demos")
|
||||||
|
|
||||||
|
add_library(lvgl_demos ${DEMO_SOURCES})
|
||||||
|
add_library(lvgl::demos ALIAS lvgl_demos)
|
||||||
|
target_include_directories(lvgl_demos SYSTEM PUBLIC ${LVGL_ROOT_DIR}/demos)
|
||||||
|
set_target_properties(lvgl_demos PROPERTIES COMPILE_DEFINITIONS "${COMP_DEF}")
|
||||||
|
|
||||||
|
# This tells cmake to link lvgl with lvgl_examples
|
||||||
|
# PUBLIC allows code linking with LVGL to also use the library
|
||||||
|
# The linker will resolve all dependencies when dynamic linking
|
||||||
|
target_link_libraries(lvgl PUBLIC lvgl_demos)
|
||||||
|
|
||||||
|
# During static linking, we need to create a cyclic dependency as the demos also needs lvgl
|
||||||
|
if (NOT BUILD_SHARED_LIBS)
|
||||||
|
# If static linking - demos depends on fonts defined in lvgl
|
||||||
|
# During dynamic linking, the linker is able to resolve everything
|
||||||
|
target_link_libraries(lvgl_demos PRIVATE lvgl)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
############################## INSTALLATION ######################################
|
||||||
|
|
||||||
|
# Library and headers can be installed to system using make install
|
||||||
|
file(GLOB LVGL_PUBLIC_HEADERS
|
||||||
|
"${LVGL_ROOT_DIR}/lvgl.h"
|
||||||
|
"${CONF_INC_DIR}/*.h"
|
||||||
|
"${LVGL_ROOT_DIR}/lv_version.h")
|
||||||
|
|
||||||
|
if (CONFIG_LV_USE_PRIVATE_API)
|
||||||
|
list(APPEND LVGL_PUBLIC_HEADERS "${LVGL_ROOT_DIR}/lvgl_private.h")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if("${LIB_INSTALL_DIR}" STREQUAL "")
|
||||||
|
set(LIB_INSTALL_DIR "lib")
|
||||||
|
endif()
|
||||||
|
if("${RUNTIME_INSTALL_DIR}" STREQUAL "")
|
||||||
|
set(RUNTIME_INSTALL_DIR "bin")
|
||||||
|
endif()
|
||||||
|
if("${INC_INSTALL_DIR}" STREQUAL "")
|
||||||
|
set(INC_INSTALL_DIR "include/lvgl")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
#Install public headers
|
||||||
|
install(
|
||||||
|
DIRECTORY "${LVGL_ROOT_DIR}/src"
|
||||||
|
DESTINATION "${INC_INSTALL_DIR}"
|
||||||
|
FILES_MATCHING
|
||||||
|
PATTERN "*.h"
|
||||||
|
PATTERN "*_private.h" EXCLUDE)
|
||||||
|
|
||||||
|
if (CONFIG_LV_USE_PRIVATE_API)
|
||||||
|
# Install private headers - only if required
|
||||||
|
install(
|
||||||
|
DIRECTORY "${LVGL_ROOT_DIR}/src"
|
||||||
|
DESTINATION "${INC_INSTALL_DIR}"
|
||||||
|
FILES_MATCHING
|
||||||
|
PATTERN "*_private.h")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
if (LV_BUILD_USE_KCONFIG)
|
||||||
|
# When KConfig is used, copy the expanded conf header
|
||||||
|
# and rename it to lv_conf.h
|
||||||
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/lv_conf_expanded.h
|
||||||
|
DESTINATION ${INC_INSTALL_DIR}
|
||||||
|
RENAME lv_conf.h)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
install(
|
||||||
|
FILES ${LVGL_PUBLIC_HEADERS}
|
||||||
|
DESTINATION "${INC_INSTALL_DIR}/")
|
||||||
|
|
||||||
|
# Install library
|
||||||
|
set_target_properties(
|
||||||
|
lvgl
|
||||||
|
PROPERTIES OUTPUT_NAME lvgl
|
||||||
|
VERSION ${LVGL_VERSION}
|
||||||
|
SOVERSION ${LVGL_SOVERSION}
|
||||||
|
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
|
||||||
|
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
|
||||||
|
PUBLIC_HEADER "${LVGL_PUBLIC_HEADERS}")
|
||||||
|
|
||||||
|
install(
|
||||||
|
TARGETS lvgl
|
||||||
|
ARCHIVE DESTINATION "${LIB_INSTALL_DIR}"
|
||||||
|
LIBRARY DESTINATION "${LIB_INSTALL_DIR}"
|
||||||
|
RUNTIME DESTINATION "${RUNTIME_INSTALL_DIR}"
|
||||||
|
PUBLIC_HEADER DESTINATION "${INC_INSTALL_DIR}")
|
||||||
|
|
||||||
|
# TODO: if LVGL is linked with something else eg Freetype, Pkgconfig file must contain -lfreetype2
|
||||||
|
configure_file("${LVGL_ROOT_DIR}/lvgl.pc.in" ${CMAKE_CURRENT_BINARY_DIR}/lvgl.pc @ONLY)
|
||||||
|
configure_file("${LVGL_ROOT_DIR}/lv_version.h.in" ${CMAKE_CURRENT_BINARY_DIR}/lv_version.h @ONLY)
|
||||||
|
|
||||||
|
install(
|
||||||
|
FILES "${CMAKE_CURRENT_BINARY_DIR}/lvgl.pc"
|
||||||
|
DESTINATION "share/pkgconfig/")
|
||||||
|
|
||||||
|
# Install library thorvg
|
||||||
|
if(CONFIG_LV_USE_THORVG_INTERNAL)
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
lvgl_thorvg
|
||||||
|
PROPERTIES OUTPUT_NAME lvgl_thorvg
|
||||||
|
VERSION ${LVGL_VERSION}
|
||||||
|
SOVERSION ${LVGL_SOVERSION}
|
||||||
|
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
|
||||||
|
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
|
||||||
|
PUBLIC_HEADER "${LVGL_PUBLIC_HEADERS}")
|
||||||
|
|
||||||
|
install(
|
||||||
|
TARGETS lvgl_thorvg
|
||||||
|
ARCHIVE DESTINATION "${LIB_INSTALL_DIR}"
|
||||||
|
LIBRARY DESTINATION "${LIB_INSTALL_DIR}"
|
||||||
|
RUNTIME DESTINATION "${RUNTIME_INSTALL_DIR}"
|
||||||
|
PUBLIC_HEADER DESTINATION "${INC_INSTALL_DIR}")
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CONFIG_LV_BUILD_DEMOS)
|
||||||
|
|
||||||
|
install(
|
||||||
|
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/demos"
|
||||||
|
DESTINATION "${INC_INSTALL_DIR}"
|
||||||
|
FILES_MATCHING
|
||||||
|
PATTERN "*.h")
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
lvgl_demos
|
||||||
|
PROPERTIES OUTPUT_NAME lvgl_demos
|
||||||
|
VERSION ${LVGL_VERSION}
|
||||||
|
SOVERSION ${LVGL_SOVERSION}
|
||||||
|
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
|
||||||
|
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
|
||||||
|
PUBLIC_HEADER "${LVGL_PUBLIC_HEADERS}")
|
||||||
|
|
||||||
|
install(
|
||||||
|
TARGETS lvgl_demos
|
||||||
|
ARCHIVE DESTINATION "${LIB_INSTALL_DIR}"
|
||||||
|
LIBRARY DESTINATION "${LIB_INSTALL_DIR}"
|
||||||
|
RUNTIME DESTINATION "${RUNTIME_INSTALL_DIR}"
|
||||||
|
PUBLIC_HEADER DESTINATION "${INC_INSTALL_DIR}")
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CONFIG_LV_BUILD_EXAMPLES)
|
||||||
|
|
||||||
|
install(
|
||||||
|
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/examples"
|
||||||
|
DESTINATION "${INC_INSTALL_DIR}"
|
||||||
|
FILES_MATCHING
|
||||||
|
PATTERN "*.h")
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
lvgl_examples
|
||||||
|
PROPERTIES OUTPUT_NAME lvgl_examples
|
||||||
|
VERSION ${LVGL_VERSION}
|
||||||
|
SOVERSION ${LVGL_SOVERSION}
|
||||||
|
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
|
||||||
|
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
|
||||||
|
PUBLIC_HEADER "${LVGL_PUBLIC_HEADERS}")
|
||||||
|
|
||||||
|
install(
|
||||||
|
TARGETS lvgl_examples
|
||||||
|
ARCHIVE DESTINATION "${LIB_INSTALL_DIR}"
|
||||||
|
LIBRARY DESTINATION "${LIB_INSTALL_DIR}"
|
||||||
|
RUNTIME DESTINATION "${RUNTIME_INSTALL_DIR}"
|
||||||
|
PUBLIC_HEADER DESTINATION "${INC_INSTALL_DIR}")
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
############################## SET GLOBAL VARIABLES ######################################
|
||||||
|
|
||||||
|
if (HAS_PARENT_SCOPE)
|
||||||
|
# Set the configuration include directory on the top-level project
|
||||||
|
# Useful so that it doesn't need to be determined a second time in the project itself
|
||||||
|
set(LVGL_CONF_INC_DIR ${CONF_INC_DIR} PARENT_SCOPE)
|
||||||
|
set(LVGL_CONF_PATH ${CONF_PATH} PARENT_SCOPE)
|
||||||
|
set(LVGL_COMPILER_DEFINES ${COMP_DEF} PARENT_SCOPE)
|
||||||
|
|
||||||
|
else()
|
||||||
|
# The file has been included by tests/CMakeLists.txt -
|
||||||
|
# or somewhere else, set variable containing the normalized path of the include dir
|
||||||
|
# containing the configuration file
|
||||||
|
set(LVGL_CONF_INC_DIR ${CONF_INC_DIR})
|
||||||
|
set(LVGL_CONF_PATH ${CONF_PATH})
|
||||||
|
set(LVGL_COMPILER_DEFINES ${COMP_DEF})
|
||||||
|
endif()
|
||||||
+50
-45
@@ -1303,73 +1303,78 @@
|
|||||||
#define LV_QNX_BUF_COUNT 1 /**< 1 or 2 */
|
#define LV_QNX_BUF_COUNT 1 /**< 1 or 2 */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*==================
|
/*=====================
|
||||||
* EXAMPLES
|
* BUILD OPTIONS
|
||||||
*==================*/
|
*======================*/
|
||||||
|
|
||||||
/** Enable examples to be built with the library. */
|
/** Enable examples to be built with the library. */
|
||||||
#define LV_BUILD_EXAMPLES 1
|
#define LV_BUILD_EXAMPLES 1
|
||||||
|
|
||||||
|
/** Build the demos */
|
||||||
|
#define LV_BUILD_DEMOS 1
|
||||||
|
|
||||||
/*===================
|
/*===================
|
||||||
* DEMO USAGE
|
* DEMO USAGE
|
||||||
====================*/
|
====================*/
|
||||||
|
|
||||||
/** Show some widgets. This might be required to increase `LV_MEM_SIZE`. */
|
#if LV_BUILD_DEMOS
|
||||||
#define LV_USE_DEMO_WIDGETS 0
|
/** Show some widgets. This might be required to increase `LV_MEM_SIZE`. */
|
||||||
|
#define LV_USE_DEMO_WIDGETS 0
|
||||||
|
|
||||||
/** Demonstrate usage of encoder and keyboard. */
|
/** Demonstrate usage of encoder and keyboard. */
|
||||||
#define LV_USE_DEMO_KEYPAD_AND_ENCODER 0
|
#define LV_USE_DEMO_KEYPAD_AND_ENCODER 0
|
||||||
|
|
||||||
/** Benchmark your system */
|
/** Benchmark your system */
|
||||||
#define LV_USE_DEMO_BENCHMARK 0
|
#define LV_USE_DEMO_BENCHMARK 0
|
||||||
|
|
||||||
/** Render test for each primitive.
|
/** Render test for each primitive.
|
||||||
* - Requires at least 480x272 display. */
|
* - Requires at least 480x272 display. */
|
||||||
#define LV_USE_DEMO_RENDER 0
|
#define LV_USE_DEMO_RENDER 0
|
||||||
|
|
||||||
/** Stress test for LVGL */
|
/** Stress test for LVGL */
|
||||||
#define LV_USE_DEMO_STRESS 0
|
#define LV_USE_DEMO_STRESS 0
|
||||||
|
|
||||||
/** Music player demo */
|
/** Music player demo */
|
||||||
#define LV_USE_DEMO_MUSIC 0
|
#define LV_USE_DEMO_MUSIC 0
|
||||||
#if LV_USE_DEMO_MUSIC
|
#if LV_USE_DEMO_MUSIC
|
||||||
#define LV_DEMO_MUSIC_SQUARE 0
|
#define LV_DEMO_MUSIC_SQUARE 0
|
||||||
#define LV_DEMO_MUSIC_LANDSCAPE 0
|
#define LV_DEMO_MUSIC_LANDSCAPE 0
|
||||||
#define LV_DEMO_MUSIC_ROUND 0
|
#define LV_DEMO_MUSIC_ROUND 0
|
||||||
#define LV_DEMO_MUSIC_LARGE 0
|
#define LV_DEMO_MUSIC_LARGE 0
|
||||||
#define LV_DEMO_MUSIC_AUTO_PLAY 0
|
#define LV_DEMO_MUSIC_AUTO_PLAY 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/** Vector graphic demo */
|
/** Vector graphic demo */
|
||||||
#define LV_USE_DEMO_VECTOR_GRAPHIC 0
|
#define LV_USE_DEMO_VECTOR_GRAPHIC 0
|
||||||
|
|
||||||
/*---------------------------
|
/*---------------------------
|
||||||
* Demos from lvgl/lv_demos
|
* Demos from lvgl/lv_demos
|
||||||
---------------------------*/
|
---------------------------*/
|
||||||
|
|
||||||
/** Flex layout demo */
|
/** Flex layout demo */
|
||||||
#define LV_USE_DEMO_FLEX_LAYOUT 0
|
#define LV_USE_DEMO_FLEX_LAYOUT 0
|
||||||
|
|
||||||
/** Smart-phone like multi-language demo */
|
/** Smart-phone like multi-language demo */
|
||||||
#define LV_USE_DEMO_MULTILANG 0
|
#define LV_USE_DEMO_MULTILANG 0
|
||||||
|
|
||||||
/** Widget transformation demo */
|
/** Widget transformation demo */
|
||||||
#define LV_USE_DEMO_TRANSFORM 0
|
#define LV_USE_DEMO_TRANSFORM 0
|
||||||
|
|
||||||
/** Demonstrate scroll settings */
|
/** Demonstrate scroll settings */
|
||||||
#define LV_USE_DEMO_SCROLL 0
|
#define LV_USE_DEMO_SCROLL 0
|
||||||
|
|
||||||
/*E-bike demo with Lottie animations (if LV_USE_LOTTIE is enabled)*/
|
/*E-bike demo with Lottie animations (if LV_USE_LOTTIE is enabled)*/
|
||||||
#define LV_USE_DEMO_EBIKE 0
|
#define LV_USE_DEMO_EBIKE 0
|
||||||
#if LV_USE_DEMO_EBIKE
|
#if LV_USE_DEMO_EBIKE
|
||||||
#define LV_DEMO_EBIKE_PORTRAIT 0 /*0: for 480x270..480x320, 1: for 480x800..720x1280*/
|
#define LV_DEMO_EBIKE_PORTRAIT 0 /*0: for 480x270..480x320, 1: for 480x800..720x1280*/
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/** High-resolution demo */
|
/** High-resolution demo */
|
||||||
#define LV_USE_DEMO_HIGH_RES 0
|
#define LV_USE_DEMO_HIGH_RES 0
|
||||||
|
|
||||||
/* Smart watch demo */
|
/* Smart watch demo */
|
||||||
#define LV_USE_DEMO_SMARTWATCH 0
|
#define LV_USE_DEMO_SMARTWATCH 0
|
||||||
|
#endif /* LV_BUILD_DEMOS */
|
||||||
|
|
||||||
/*--END OF LV_CONF_H--*/
|
/*--END OF LV_CONF_H--*/
|
||||||
|
|
||||||
|
|||||||
@@ -335,13 +335,14 @@ def write_c_array_file(
|
|||||||
header = f'''
|
header = f'''
|
||||||
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
|
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
|
||||||
#include "lvgl.h"
|
#include "lvgl.h"
|
||||||
|
#elif defined(LV_LVGL_H_INCLUDE_SYSTEM)
|
||||||
|
#include <lvgl.h>
|
||||||
#elif defined(LV_BUILD_TEST)
|
#elif defined(LV_BUILD_TEST)
|
||||||
#include "../lvgl.h"
|
#include "../lvgl.h"
|
||||||
#else
|
#else
|
||||||
#include "lvgl/lvgl.h"
|
#include "lvgl/lvgl.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifndef LV_ATTRIBUTE_MEM_ALIGN
|
#ifndef LV_ATTRIBUTE_MEM_ALIGN
|
||||||
#define LV_ATTRIBUTE_MEM_ALIGN
|
#define LV_ATTRIBUTE_MEM_ALIGN
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ fi
|
|||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
# Generate lv_conf
|
# Generate lv_conf
|
||||||
LV_CONF_PATH=lvgl/configs/ci/docs/lv_conf_docs.h
|
LV_CONF_PATH=`pwd`/lvgl/configs/ci/docs/lv_conf_docs.h
|
||||||
|
|
||||||
cp lvgl/lv_conf_template.h $LV_CONF_PATH
|
cp lvgl/lv_conf_template.h $LV_CONF_PATH
|
||||||
python ./lvgl/scripts/generate_lv_conf.py \
|
python ./lvgl/scripts/generate_lv_conf.py \
|
||||||
@@ -38,7 +38,7 @@ python ./lvgl/scripts/generate_lv_conf.py \
|
|||||||
|
|
||||||
mkdir cmbuild
|
mkdir cmbuild
|
||||||
cd cmbuild
|
cd cmbuild
|
||||||
emcmake cmake .. -DLV_CONF_PATH=$LV_CONF_PATH -DLVGL_CHOSEN_DEMO=lv_example_noop -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
|
emcmake cmake .. -DLV_BUILD_CONF_PATH=$LV_CONF_PATH -DLVGL_CHOSEN_DEMO=lv_example_noop -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
|
||||||
emmake make -j$(nproc)
|
emmake make -j$(nproc)
|
||||||
rm -rf CMakeFiles
|
rm -rf CMakeFiles
|
||||||
cd ../..
|
cd ../..
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
#
|
#
|
||||||
# Generate the cmake variables CONFIG_LV_USE_* from the
|
# Generate the cmake variables CONFIG_LV_USE_* or CONFIG_LV_BUILD_* from the
|
||||||
# preprocessed lv_conf_internal.h
|
# preprocessed lv_conf_internal.h
|
||||||
#
|
#
|
||||||
# Author: David TRUAN (david.truan@edgemtech.ch)
|
# Author: David TRUAN (david.truan@edgemtech.ch)
|
||||||
@@ -20,7 +20,7 @@ def fatal(msg):
|
|||||||
def get_args():
|
def get_args():
|
||||||
parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, description=""
|
parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, description=""
|
||||||
"Convert the expanded lv_conf_internal.h to cmake variables."
|
"Convert the expanded lv_conf_internal.h to cmake variables."
|
||||||
"It converts all LV_USE_* configurations."
|
"It converts all LV_USE_*, LV_BUILD_* configurations."
|
||||||
)
|
)
|
||||||
|
|
||||||
parser.add_argument('--input', type=str, required=True, nargs='?',
|
parser.add_argument('--input', type=str, required=True, nargs='?',
|
||||||
@@ -55,13 +55,14 @@ def generate_cmake_variables(path_input: str, path_output: str, kconfig: bool, d
|
|||||||
fin = open(path_input)
|
fin = open(path_input)
|
||||||
fout = open(path_output, "w", newline='')
|
fout = open(path_output, "w", newline='')
|
||||||
|
|
||||||
# If we use Kconfig, we must check the CONFIG_LV_USE_* defines
|
# If we use Kconfig, we must check the CONFIG_LV_USE_* and
|
||||||
|
# CONFIG_LV_BUILD_* defines
|
||||||
if kconfig:
|
if kconfig:
|
||||||
CONFIG_PATTERN="#define CONFIG_LV_USE"
|
CONFIG_PATTERN="^#define +(CONFIG_LV_USE|CONFIG_LV_BUILD)"
|
||||||
CONFIG_PREFIX=""
|
CONFIG_PREFIX=""
|
||||||
# Otherwise check the LV_USE_* defines
|
# Otherwise check the LV_USE_* and LV_BUILD_* defines
|
||||||
else:
|
else:
|
||||||
CONFIG_PATTERN="#define LV_USE"
|
CONFIG_PATTERN="^#define +(LV_USE|LV_BUILD)"
|
||||||
CONFIG_PREFIX="CONFIG_"
|
CONFIG_PREFIX="CONFIG_"
|
||||||
|
|
||||||
|
|
||||||
@@ -71,7 +72,7 @@ def generate_cmake_variables(path_input: str, path_output: str, kconfig: bool, d
|
|||||||
|
|
||||||
# Treat the LV_USE_STDLIB_* configs in a special way, as we need
|
# Treat the LV_USE_STDLIB_* configs in a special way, as we need
|
||||||
# to convert the define to full config with 1 value when enabled
|
# to convert the define to full config with 1 value when enabled
|
||||||
if line.startswith(f'{CONFIG_PATTERN}_STDLIB'):
|
if re.search(f'{CONFIG_PATTERN}_STDLIB', line):
|
||||||
|
|
||||||
parts = line.split()
|
parts = line.split()
|
||||||
if len(parts) < 3:
|
if len(parts) < 3:
|
||||||
@@ -88,7 +89,7 @@ def generate_cmake_variables(path_input: str, path_output: str, kconfig: bool, d
|
|||||||
|
|
||||||
# Treat the LV_USE_OS config in a special way, as we need
|
# Treat the LV_USE_OS config in a special way, as we need
|
||||||
# to convert the define to full config with 1 value when enabled
|
# to convert the define to full config with 1 value when enabled
|
||||||
if line.startswith(f'{CONFIG_PATTERN}_OS'):
|
if re.search(f'{CONFIG_PATTERN}_OS', line):
|
||||||
|
|
||||||
parts = line.split()
|
parts = line.split()
|
||||||
if len(parts) < 3:
|
if len(parts) < 3:
|
||||||
@@ -104,7 +105,8 @@ def generate_cmake_variables(path_input: str, path_output: str, kconfig: bool, d
|
|||||||
write_set_cmd(fout, f'{CONFIG_PREFIX}{name} 1', is_parent_scope)
|
write_set_cmd(fout, f'{CONFIG_PREFIX}{name} 1', is_parent_scope)
|
||||||
|
|
||||||
# For the rest of the configs, simply add CONFIG_ and write the name of the define
|
# For the rest of the configs, simply add CONFIG_ and write the name of the define
|
||||||
# all LV_USE_* configs where the value is 0 or 1, as these are the one needed in cmake
|
# all LV_USE_* or LV_BUILD_* configs where the value is 0 or 1,
|
||||||
|
# as these are the ones that are needed in cmake
|
||||||
# To detect the configuration of LVGL to perform conditional compilation/linking
|
# To detect the configuration of LVGL to perform conditional compilation/linking
|
||||||
elif re.search(f'{CONFIG_PATTERN}.* +[01] *$', line):
|
elif re.search(f'{CONFIG_PATTERN}.* +[01] *$', line):
|
||||||
|
|
||||||
|
|||||||
@@ -214,6 +214,22 @@ LV_EXPORT_CONST_INT(LV_DRAW_BUF_ALIGN);
|
|||||||
#define LV_USE_MEM_MONITOR 0
|
#define LV_USE_MEM_MONITOR 0
|
||||||
#endif /*LV_USE_SYSMON*/
|
#endif /*LV_USE_SYSMON*/
|
||||||
|
|
||||||
|
#if LV_BUILD_DEMOS == 0
|
||||||
|
#define LV_USE_DEMO_WIDGETS 0
|
||||||
|
#define LV_USE_DEMO_KEYPAD_AND_ENCODER 0
|
||||||
|
#define LV_USE_DEMO_BENCHMARK 0
|
||||||
|
#define LV_USE_DEMO_RENDER 0
|
||||||
|
#define LV_USE_DEMO_STRESS 0
|
||||||
|
#define LV_USE_DEMO_MUSIC 0
|
||||||
|
#define LV_USE_DEMO_VECTOR_GRAPHIC 0
|
||||||
|
#define LV_USE_DEMO_FLEX_LAYOUT 0
|
||||||
|
#define LV_USE_DEMO_MULTILANG 0
|
||||||
|
#define LV_USE_DEMO_TRANSFORM 0
|
||||||
|
#define LV_USE_DEMO_SCROLL 0
|
||||||
|
#define LV_USE_DEMO_EBIKE 0
|
||||||
|
#define LV_USE_DEMO_HIGH_RES 0
|
||||||
|
#define LV_USE_DEMO_SMARTWATCH 0
|
||||||
|
#endif /* LV_BUILD_DEMOS */
|
||||||
|
|
||||||
#ifndef LV_USE_LZ4
|
#ifndef LV_USE_LZ4
|
||||||
#if (LV_USE_LZ4_INTERNAL || LV_USE_LZ4_EXTERNAL)
|
#if (LV_USE_LZ4_INTERNAL || LV_USE_LZ4_EXTERNAL)
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
# generate the cmake variables
|
# generate the cmake variables
|
||||||
#
|
#
|
||||||
# Author: David TRUAN (david.truan@edgemtech.ch)
|
# Author: David TRUAN (david.truan@edgemtech.ch)
|
||||||
|
# Author: Erik Tagirov (erik.tagirov@edgemtech.ch)
|
||||||
#
|
#
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
@@ -13,6 +14,8 @@ import subprocess
|
|||||||
import os
|
import os
|
||||||
import argparse
|
import argparse
|
||||||
import re
|
import re
|
||||||
|
import importlib.util
|
||||||
|
|
||||||
|
|
||||||
def get_args():
|
def get_args():
|
||||||
parser = argparse.ArgumentParser(description="Preprocess a C header file and remove indentation.")
|
parser = argparse.ArgumentParser(description="Preprocess a C header file and remove indentation.")
|
||||||
@@ -57,13 +60,23 @@ def preprocess_file(pcpp_exe, input_file, tmp_file, output_file, include_dirs, d
|
|||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
|
|
||||||
def remove_indentation(tmp_file, output_file):
|
# Read the temporary files and return an array of lines
|
||||||
|
def read_lines(tmp_file):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
with open(tmp_file, "r") as f:
|
with open(tmp_file, "r") as f:
|
||||||
lines = f.readlines()
|
lines = f.readlines()
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Failed to pre-process file: {e}")
|
||||||
|
exit(1)
|
||||||
|
|
||||||
clean_lines = []
|
return lines
|
||||||
|
|
||||||
|
def remove_indentation(lines):
|
||||||
|
|
||||||
|
clean_lines = []
|
||||||
|
|
||||||
|
try:
|
||||||
for line in lines:
|
for line in lines:
|
||||||
stripped = line.lstrip()
|
stripped = line.lstrip()
|
||||||
|
|
||||||
@@ -73,39 +86,68 @@ def remove_indentation(tmp_file, output_file):
|
|||||||
|
|
||||||
clean_lines.append(stripped)
|
clean_lines.append(stripped)
|
||||||
|
|
||||||
with open(output_file, "w") as f:
|
|
||||||
f.writelines(clean_lines)
|
|
||||||
|
|
||||||
print(f"Indentation removed. Cleaned output saved to {output_file}")
|
|
||||||
|
|
||||||
os.remove(tmp_file)
|
|
||||||
print(f"Temporary preprocessed file {tmp_file} removed.")
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Error during indentation removal: {e}")
|
print(f"Error during indentation removal: {e}")
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
def install_pcpp_in_venv(workfolder:str) -> str:
|
return clean_lines
|
||||||
|
|
||||||
|
# This is required - to avoid include errors when Kconfig is used and
|
||||||
|
# LVGL is installed on the system - i.e when lvgl.h is used as a system include
|
||||||
|
def add_include_guards(lines):
|
||||||
|
|
||||||
|
lines.insert(0, "#define LV_CONF_H\n\n")
|
||||||
|
lines.insert(0, "#ifndef LV_CONF_H\n")
|
||||||
|
lines.append("#endif /* END LV_CONF_H */\n")
|
||||||
|
return lines
|
||||||
|
|
||||||
|
def init_venv(venv_path):
|
||||||
"""
|
"""
|
||||||
Creates a virtual env named .venv inside `workfolder`
|
Creates a virtual env named .venv in the `workfolder` directory
|
||||||
and installs every dependecy inside `dependencies`
|
It is usually set to the path of the build directory.
|
||||||
Returns the path to pcpp
|
If the .venv already exists it enters the venv
|
||||||
|
Returns the path to the venv
|
||||||
"""
|
"""
|
||||||
venv_path = os.path.join(workfolder, ".venv")
|
|
||||||
try:
|
try:
|
||||||
|
if os.path.exists(venv_path) == False:
|
||||||
|
# Create venv
|
||||||
|
subprocess.check_call([sys.executable, "-m", "venv", venv_path])
|
||||||
|
|
||||||
|
# Enter venv
|
||||||
|
venv_path = os.path.join(venv_path, ".venv")
|
||||||
subprocess.check_call([sys.executable, "-m", "venv", venv_path])
|
subprocess.check_call([sys.executable, "-m", "venv", venv_path])
|
||||||
|
|
||||||
if sys.platform == "win32":
|
|
||||||
venv_pip = os.path.join(venv_path, "Scripts", "pip.exe")
|
|
||||||
venv_pcpp = os.path.join(venv_path, "Scripts", "pcpp.exe")
|
|
||||||
else:
|
|
||||||
venv_pip = os.path.join(venv_path, "bin", "pip")
|
|
||||||
venv_pcpp = os.path.join(venv_path, "bin", "pcpp")
|
|
||||||
|
|
||||||
subprocess.check_call([venv_pip, "install", "pcpp"])
|
|
||||||
|
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError as e:
|
||||||
print(f"Error setting up environnement: {e}")
|
print(f"Error during the setup of python venv: {e}")
|
||||||
sys.exit(1)
|
exit(1)
|
||||||
|
|
||||||
|
return venv_path
|
||||||
|
|
||||||
|
def install_pcpp_in_venv(venv_path):
|
||||||
|
"""
|
||||||
|
Install pcpp a python implementation of the C pre-processor
|
||||||
|
On success - Returns the path to pcpp, None on failure
|
||||||
|
"""
|
||||||
|
|
||||||
|
if sys.platform == "win32":
|
||||||
|
venv_pip = os.path.join(venv_path, "Scripts", "pip.exe")
|
||||||
|
venv_pcpp = os.path.join(venv_path, "Scripts", "pcpp.exe")
|
||||||
|
else:
|
||||||
|
venv_pip = os.path.join(venv_path, "bin", "pip")
|
||||||
|
venv_pcpp = os.path.join(venv_path, "bin", "pcpp")
|
||||||
|
|
||||||
|
if os.path.exists(venv_pcpp) == False:
|
||||||
|
# Install pcpp
|
||||||
|
try:
|
||||||
|
subprocess.check_call([venv_pip, "install", "pcpp"])
|
||||||
|
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
print(f"Failed to install PCPP: {e}")
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
print("PCPP is already installed in venv")
|
||||||
|
|
||||||
|
|
||||||
return venv_pcpp
|
return venv_pcpp
|
||||||
|
|
||||||
@@ -113,10 +155,38 @@ def main():
|
|||||||
|
|
||||||
args = get_args()
|
args = get_args()
|
||||||
|
|
||||||
pcpp_exe = install_pcpp_in_venv(args.workfolder)
|
# Check if PCPP is already present on the system
|
||||||
|
# if it's not - create a python venv inside the workfolder directory
|
||||||
|
# and install it there
|
||||||
|
res = subprocess.run(["which", "pcpp"], capture_output=True)
|
||||||
|
if res.returncode == 0:
|
||||||
|
pcpp_exe = res.stdout.decode().replace("\n", "")
|
||||||
|
print(f"Found PCPP: {pcpp_exe}")
|
||||||
|
else:
|
||||||
|
print("Failed to locate pcpp - installing it")
|
||||||
|
venv_path = init_venv(args.workfolder)
|
||||||
|
pcpp_exe = install_pcpp_in_venv(venv_path)
|
||||||
|
if pcpp_exe is None:
|
||||||
|
exit(1)
|
||||||
|
|
||||||
preprocess_file(pcpp_exe, args.input, args.tmp_file, args.output, args.include, args.defs)
|
preprocess_file(pcpp_exe, args.input, args.tmp_file, args.output, args.include, args.defs)
|
||||||
|
|
||||||
remove_indentation(args.tmp_file, args.output)
|
lines = read_lines(args.tmp_file)
|
||||||
|
lines = remove_indentation(lines)
|
||||||
|
lines = add_include_guards(lines)
|
||||||
|
|
||||||
|
# Write the resulting output header file with include guards and no indentation
|
||||||
|
try:
|
||||||
|
with open(args.output, "w") as f:
|
||||||
|
f.writelines(lines)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Writing resulting file failed: {e}")
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
print(f"Expanded configuration header saved to {args.output}")
|
||||||
|
|
||||||
|
os.remove(args.tmp_file)
|
||||||
|
print(f"Temporary preprocessed file {args.tmp_file} removed.")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|||||||
+188
-157
@@ -4204,9 +4204,9 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*==================
|
/*=====================
|
||||||
* EXAMPLES
|
* BUILD OPTIONS
|
||||||
*==================*/
|
*======================*/
|
||||||
|
|
||||||
/** Enable examples to be built with the library. */
|
/** Enable examples to be built with the library. */
|
||||||
#ifndef LV_BUILD_EXAMPLES
|
#ifndef LV_BUILD_EXAMPLES
|
||||||
@@ -4221,186 +4221,201 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/** Build the demos */
|
||||||
|
#ifndef LV_BUILD_DEMOS
|
||||||
|
#ifdef LV_KCONFIG_PRESENT
|
||||||
|
#ifdef CONFIG_LV_BUILD_DEMOS
|
||||||
|
#define LV_BUILD_DEMOS CONFIG_LV_BUILD_DEMOS
|
||||||
|
#else
|
||||||
|
#define LV_BUILD_DEMOS 0
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#define LV_BUILD_DEMOS 1
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
/*===================
|
/*===================
|
||||||
* DEMO USAGE
|
* DEMO USAGE
|
||||||
====================*/
|
====================*/
|
||||||
|
|
||||||
/** Show some widgets. This might be required to increase `LV_MEM_SIZE`. */
|
#if LV_BUILD_DEMOS
|
||||||
#ifndef LV_USE_DEMO_WIDGETS
|
/** Show some widgets. This might be required to increase `LV_MEM_SIZE`. */
|
||||||
#ifdef CONFIG_LV_USE_DEMO_WIDGETS
|
#ifndef LV_USE_DEMO_WIDGETS
|
||||||
#define LV_USE_DEMO_WIDGETS CONFIG_LV_USE_DEMO_WIDGETS
|
#ifdef CONFIG_LV_USE_DEMO_WIDGETS
|
||||||
#else
|
#define LV_USE_DEMO_WIDGETS CONFIG_LV_USE_DEMO_WIDGETS
|
||||||
#define LV_USE_DEMO_WIDGETS 0
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Demonstrate usage of encoder and keyboard. */
|
|
||||||
#ifndef LV_USE_DEMO_KEYPAD_AND_ENCODER
|
|
||||||
#ifdef CONFIG_LV_USE_DEMO_KEYPAD_AND_ENCODER
|
|
||||||
#define LV_USE_DEMO_KEYPAD_AND_ENCODER CONFIG_LV_USE_DEMO_KEYPAD_AND_ENCODER
|
|
||||||
#else
|
|
||||||
#define LV_USE_DEMO_KEYPAD_AND_ENCODER 0
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Benchmark your system */
|
|
||||||
#ifndef LV_USE_DEMO_BENCHMARK
|
|
||||||
#ifdef CONFIG_LV_USE_DEMO_BENCHMARK
|
|
||||||
#define LV_USE_DEMO_BENCHMARK CONFIG_LV_USE_DEMO_BENCHMARK
|
|
||||||
#else
|
|
||||||
#define LV_USE_DEMO_BENCHMARK 0
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Render test for each primitive.
|
|
||||||
* - Requires at least 480x272 display. */
|
|
||||||
#ifndef LV_USE_DEMO_RENDER
|
|
||||||
#ifdef CONFIG_LV_USE_DEMO_RENDER
|
|
||||||
#define LV_USE_DEMO_RENDER CONFIG_LV_USE_DEMO_RENDER
|
|
||||||
#else
|
|
||||||
#define LV_USE_DEMO_RENDER 0
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Stress test for LVGL */
|
|
||||||
#ifndef LV_USE_DEMO_STRESS
|
|
||||||
#ifdef CONFIG_LV_USE_DEMO_STRESS
|
|
||||||
#define LV_USE_DEMO_STRESS CONFIG_LV_USE_DEMO_STRESS
|
|
||||||
#else
|
|
||||||
#define LV_USE_DEMO_STRESS 0
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Music player demo */
|
|
||||||
#ifndef LV_USE_DEMO_MUSIC
|
|
||||||
#ifdef CONFIG_LV_USE_DEMO_MUSIC
|
|
||||||
#define LV_USE_DEMO_MUSIC CONFIG_LV_USE_DEMO_MUSIC
|
|
||||||
#else
|
|
||||||
#define LV_USE_DEMO_MUSIC 0
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#if LV_USE_DEMO_MUSIC
|
|
||||||
#ifndef LV_DEMO_MUSIC_SQUARE
|
|
||||||
#ifdef CONFIG_LV_DEMO_MUSIC_SQUARE
|
|
||||||
#define LV_DEMO_MUSIC_SQUARE CONFIG_LV_DEMO_MUSIC_SQUARE
|
|
||||||
#else
|
#else
|
||||||
#define LV_DEMO_MUSIC_SQUARE 0
|
#define LV_USE_DEMO_WIDGETS 0
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifndef LV_DEMO_MUSIC_LANDSCAPE
|
|
||||||
#ifdef CONFIG_LV_DEMO_MUSIC_LANDSCAPE
|
/** Demonstrate usage of encoder and keyboard. */
|
||||||
#define LV_DEMO_MUSIC_LANDSCAPE CONFIG_LV_DEMO_MUSIC_LANDSCAPE
|
#ifndef LV_USE_DEMO_KEYPAD_AND_ENCODER
|
||||||
|
#ifdef CONFIG_LV_USE_DEMO_KEYPAD_AND_ENCODER
|
||||||
|
#define LV_USE_DEMO_KEYPAD_AND_ENCODER CONFIG_LV_USE_DEMO_KEYPAD_AND_ENCODER
|
||||||
#else
|
#else
|
||||||
#define LV_DEMO_MUSIC_LANDSCAPE 0
|
#define LV_USE_DEMO_KEYPAD_AND_ENCODER 0
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifndef LV_DEMO_MUSIC_ROUND
|
|
||||||
#ifdef CONFIG_LV_DEMO_MUSIC_ROUND
|
/** Benchmark your system */
|
||||||
#define LV_DEMO_MUSIC_ROUND CONFIG_LV_DEMO_MUSIC_ROUND
|
#ifndef LV_USE_DEMO_BENCHMARK
|
||||||
|
#ifdef CONFIG_LV_USE_DEMO_BENCHMARK
|
||||||
|
#define LV_USE_DEMO_BENCHMARK CONFIG_LV_USE_DEMO_BENCHMARK
|
||||||
#else
|
#else
|
||||||
#define LV_DEMO_MUSIC_ROUND 0
|
#define LV_USE_DEMO_BENCHMARK 0
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifndef LV_DEMO_MUSIC_LARGE
|
|
||||||
#ifdef CONFIG_LV_DEMO_MUSIC_LARGE
|
/** Render test for each primitive.
|
||||||
#define LV_DEMO_MUSIC_LARGE CONFIG_LV_DEMO_MUSIC_LARGE
|
* - Requires at least 480x272 display. */
|
||||||
|
#ifndef LV_USE_DEMO_RENDER
|
||||||
|
#ifdef CONFIG_LV_USE_DEMO_RENDER
|
||||||
|
#define LV_USE_DEMO_RENDER CONFIG_LV_USE_DEMO_RENDER
|
||||||
#else
|
#else
|
||||||
#define LV_DEMO_MUSIC_LARGE 0
|
#define LV_USE_DEMO_RENDER 0
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifndef LV_DEMO_MUSIC_AUTO_PLAY
|
|
||||||
#ifdef CONFIG_LV_DEMO_MUSIC_AUTO_PLAY
|
/** Stress test for LVGL */
|
||||||
#define LV_DEMO_MUSIC_AUTO_PLAY CONFIG_LV_DEMO_MUSIC_AUTO_PLAY
|
#ifndef LV_USE_DEMO_STRESS
|
||||||
|
#ifdef CONFIG_LV_USE_DEMO_STRESS
|
||||||
|
#define LV_USE_DEMO_STRESS CONFIG_LV_USE_DEMO_STRESS
|
||||||
#else
|
#else
|
||||||
#define LV_DEMO_MUSIC_AUTO_PLAY 0
|
#define LV_USE_DEMO_STRESS 0
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Vector graphic demo */
|
/** Music player demo */
|
||||||
#ifndef LV_USE_DEMO_VECTOR_GRAPHIC
|
#ifndef LV_USE_DEMO_MUSIC
|
||||||
#ifdef CONFIG_LV_USE_DEMO_VECTOR_GRAPHIC
|
#ifdef CONFIG_LV_USE_DEMO_MUSIC
|
||||||
#define LV_USE_DEMO_VECTOR_GRAPHIC CONFIG_LV_USE_DEMO_VECTOR_GRAPHIC
|
#define LV_USE_DEMO_MUSIC CONFIG_LV_USE_DEMO_MUSIC
|
||||||
#else
|
|
||||||
#define LV_USE_DEMO_VECTOR_GRAPHIC 0
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*---------------------------
|
|
||||||
* Demos from lvgl/lv_demos
|
|
||||||
---------------------------*/
|
|
||||||
|
|
||||||
/** Flex layout demo */
|
|
||||||
#ifndef LV_USE_DEMO_FLEX_LAYOUT
|
|
||||||
#ifdef CONFIG_LV_USE_DEMO_FLEX_LAYOUT
|
|
||||||
#define LV_USE_DEMO_FLEX_LAYOUT CONFIG_LV_USE_DEMO_FLEX_LAYOUT
|
|
||||||
#else
|
|
||||||
#define LV_USE_DEMO_FLEX_LAYOUT 0
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Smart-phone like multi-language demo */
|
|
||||||
#ifndef LV_USE_DEMO_MULTILANG
|
|
||||||
#ifdef CONFIG_LV_USE_DEMO_MULTILANG
|
|
||||||
#define LV_USE_DEMO_MULTILANG CONFIG_LV_USE_DEMO_MULTILANG
|
|
||||||
#else
|
|
||||||
#define LV_USE_DEMO_MULTILANG 0
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Widget transformation demo */
|
|
||||||
#ifndef LV_USE_DEMO_TRANSFORM
|
|
||||||
#ifdef CONFIG_LV_USE_DEMO_TRANSFORM
|
|
||||||
#define LV_USE_DEMO_TRANSFORM CONFIG_LV_USE_DEMO_TRANSFORM
|
|
||||||
#else
|
|
||||||
#define LV_USE_DEMO_TRANSFORM 0
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Demonstrate scroll settings */
|
|
||||||
#ifndef LV_USE_DEMO_SCROLL
|
|
||||||
#ifdef CONFIG_LV_USE_DEMO_SCROLL
|
|
||||||
#define LV_USE_DEMO_SCROLL CONFIG_LV_USE_DEMO_SCROLL
|
|
||||||
#else
|
|
||||||
#define LV_USE_DEMO_SCROLL 0
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*E-bike demo with Lottie animations (if LV_USE_LOTTIE is enabled)*/
|
|
||||||
#ifndef LV_USE_DEMO_EBIKE
|
|
||||||
#ifdef CONFIG_LV_USE_DEMO_EBIKE
|
|
||||||
#define LV_USE_DEMO_EBIKE CONFIG_LV_USE_DEMO_EBIKE
|
|
||||||
#else
|
|
||||||
#define LV_USE_DEMO_EBIKE 0
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#if LV_USE_DEMO_EBIKE
|
|
||||||
#ifndef LV_DEMO_EBIKE_PORTRAIT
|
|
||||||
#ifdef CONFIG_LV_DEMO_EBIKE_PORTRAIT
|
|
||||||
#define LV_DEMO_EBIKE_PORTRAIT CONFIG_LV_DEMO_EBIKE_PORTRAIT
|
|
||||||
#else
|
#else
|
||||||
#define LV_DEMO_EBIKE_PORTRAIT 0 /*0: for 480x270..480x320, 1: for 480x800..720x1280*/
|
#define LV_USE_DEMO_MUSIC 0
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#if LV_USE_DEMO_MUSIC
|
||||||
|
#ifndef LV_DEMO_MUSIC_SQUARE
|
||||||
/** High-resolution demo */
|
#ifdef CONFIG_LV_DEMO_MUSIC_SQUARE
|
||||||
#ifndef LV_USE_DEMO_HIGH_RES
|
#define LV_DEMO_MUSIC_SQUARE CONFIG_LV_DEMO_MUSIC_SQUARE
|
||||||
#ifdef CONFIG_LV_USE_DEMO_HIGH_RES
|
#else
|
||||||
#define LV_USE_DEMO_HIGH_RES CONFIG_LV_USE_DEMO_HIGH_RES
|
#define LV_DEMO_MUSIC_SQUARE 0
|
||||||
#else
|
#endif
|
||||||
#define LV_USE_DEMO_HIGH_RES 0
|
#endif
|
||||||
|
#ifndef LV_DEMO_MUSIC_LANDSCAPE
|
||||||
|
#ifdef CONFIG_LV_DEMO_MUSIC_LANDSCAPE
|
||||||
|
#define LV_DEMO_MUSIC_LANDSCAPE CONFIG_LV_DEMO_MUSIC_LANDSCAPE
|
||||||
|
#else
|
||||||
|
#define LV_DEMO_MUSIC_LANDSCAPE 0
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#ifndef LV_DEMO_MUSIC_ROUND
|
||||||
|
#ifdef CONFIG_LV_DEMO_MUSIC_ROUND
|
||||||
|
#define LV_DEMO_MUSIC_ROUND CONFIG_LV_DEMO_MUSIC_ROUND
|
||||||
|
#else
|
||||||
|
#define LV_DEMO_MUSIC_ROUND 0
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#ifndef LV_DEMO_MUSIC_LARGE
|
||||||
|
#ifdef CONFIG_LV_DEMO_MUSIC_LARGE
|
||||||
|
#define LV_DEMO_MUSIC_LARGE CONFIG_LV_DEMO_MUSIC_LARGE
|
||||||
|
#else
|
||||||
|
#define LV_DEMO_MUSIC_LARGE 0
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#ifndef LV_DEMO_MUSIC_AUTO_PLAY
|
||||||
|
#ifdef CONFIG_LV_DEMO_MUSIC_AUTO_PLAY
|
||||||
|
#define LV_DEMO_MUSIC_AUTO_PLAY CONFIG_LV_DEMO_MUSIC_AUTO_PLAY
|
||||||
|
#else
|
||||||
|
#define LV_DEMO_MUSIC_AUTO_PLAY 0
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Smart watch demo */
|
/** Vector graphic demo */
|
||||||
#ifndef LV_USE_DEMO_SMARTWATCH
|
#ifndef LV_USE_DEMO_VECTOR_GRAPHIC
|
||||||
#ifdef CONFIG_LV_USE_DEMO_SMARTWATCH
|
#ifdef CONFIG_LV_USE_DEMO_VECTOR_GRAPHIC
|
||||||
#define LV_USE_DEMO_SMARTWATCH CONFIG_LV_USE_DEMO_SMARTWATCH
|
#define LV_USE_DEMO_VECTOR_GRAPHIC CONFIG_LV_USE_DEMO_VECTOR_GRAPHIC
|
||||||
#else
|
#else
|
||||||
#define LV_USE_DEMO_SMARTWATCH 0
|
#define LV_USE_DEMO_VECTOR_GRAPHIC 0
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
/*---------------------------
|
||||||
|
* Demos from lvgl/lv_demos
|
||||||
|
---------------------------*/
|
||||||
|
|
||||||
|
/** Flex layout demo */
|
||||||
|
#ifndef LV_USE_DEMO_FLEX_LAYOUT
|
||||||
|
#ifdef CONFIG_LV_USE_DEMO_FLEX_LAYOUT
|
||||||
|
#define LV_USE_DEMO_FLEX_LAYOUT CONFIG_LV_USE_DEMO_FLEX_LAYOUT
|
||||||
|
#else
|
||||||
|
#define LV_USE_DEMO_FLEX_LAYOUT 0
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** Smart-phone like multi-language demo */
|
||||||
|
#ifndef LV_USE_DEMO_MULTILANG
|
||||||
|
#ifdef CONFIG_LV_USE_DEMO_MULTILANG
|
||||||
|
#define LV_USE_DEMO_MULTILANG CONFIG_LV_USE_DEMO_MULTILANG
|
||||||
|
#else
|
||||||
|
#define LV_USE_DEMO_MULTILANG 0
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** Widget transformation demo */
|
||||||
|
#ifndef LV_USE_DEMO_TRANSFORM
|
||||||
|
#ifdef CONFIG_LV_USE_DEMO_TRANSFORM
|
||||||
|
#define LV_USE_DEMO_TRANSFORM CONFIG_LV_USE_DEMO_TRANSFORM
|
||||||
|
#else
|
||||||
|
#define LV_USE_DEMO_TRANSFORM 0
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** Demonstrate scroll settings */
|
||||||
|
#ifndef LV_USE_DEMO_SCROLL
|
||||||
|
#ifdef CONFIG_LV_USE_DEMO_SCROLL
|
||||||
|
#define LV_USE_DEMO_SCROLL CONFIG_LV_USE_DEMO_SCROLL
|
||||||
|
#else
|
||||||
|
#define LV_USE_DEMO_SCROLL 0
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*E-bike demo with Lottie animations (if LV_USE_LOTTIE is enabled)*/
|
||||||
|
#ifndef LV_USE_DEMO_EBIKE
|
||||||
|
#ifdef CONFIG_LV_USE_DEMO_EBIKE
|
||||||
|
#define LV_USE_DEMO_EBIKE CONFIG_LV_USE_DEMO_EBIKE
|
||||||
|
#else
|
||||||
|
#define LV_USE_DEMO_EBIKE 0
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#if LV_USE_DEMO_EBIKE
|
||||||
|
#ifndef LV_DEMO_EBIKE_PORTRAIT
|
||||||
|
#ifdef CONFIG_LV_DEMO_EBIKE_PORTRAIT
|
||||||
|
#define LV_DEMO_EBIKE_PORTRAIT CONFIG_LV_DEMO_EBIKE_PORTRAIT
|
||||||
|
#else
|
||||||
|
#define LV_DEMO_EBIKE_PORTRAIT 0 /*0: for 480x270..480x320, 1: for 480x800..720x1280*/
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** High-resolution demo */
|
||||||
|
#ifndef LV_USE_DEMO_HIGH_RES
|
||||||
|
#ifdef CONFIG_LV_USE_DEMO_HIGH_RES
|
||||||
|
#define LV_USE_DEMO_HIGH_RES CONFIG_LV_USE_DEMO_HIGH_RES
|
||||||
|
#else
|
||||||
|
#define LV_USE_DEMO_HIGH_RES 0
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Smart watch demo */
|
||||||
|
#ifndef LV_USE_DEMO_SMARTWATCH
|
||||||
|
#ifdef CONFIG_LV_USE_DEMO_SMARTWATCH
|
||||||
|
#define LV_USE_DEMO_SMARTWATCH CONFIG_LV_USE_DEMO_SMARTWATCH
|
||||||
|
#else
|
||||||
|
#define LV_USE_DEMO_SMARTWATCH 0
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif /* LV_BUILD_DEMOS */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -4437,6 +4452,22 @@ LV_EXPORT_CONST_INT(LV_DRAW_BUF_ALIGN);
|
|||||||
#define LV_USE_MEM_MONITOR 0
|
#define LV_USE_MEM_MONITOR 0
|
||||||
#endif /*LV_USE_SYSMON*/
|
#endif /*LV_USE_SYSMON*/
|
||||||
|
|
||||||
|
#if LV_BUILD_DEMOS == 0
|
||||||
|
#define LV_USE_DEMO_WIDGETS 0
|
||||||
|
#define LV_USE_DEMO_KEYPAD_AND_ENCODER 0
|
||||||
|
#define LV_USE_DEMO_BENCHMARK 0
|
||||||
|
#define LV_USE_DEMO_RENDER 0
|
||||||
|
#define LV_USE_DEMO_STRESS 0
|
||||||
|
#define LV_USE_DEMO_MUSIC 0
|
||||||
|
#define LV_USE_DEMO_VECTOR_GRAPHIC 0
|
||||||
|
#define LV_USE_DEMO_FLEX_LAYOUT 0
|
||||||
|
#define LV_USE_DEMO_MULTILANG 0
|
||||||
|
#define LV_USE_DEMO_TRANSFORM 0
|
||||||
|
#define LV_USE_DEMO_SCROLL 0
|
||||||
|
#define LV_USE_DEMO_EBIKE 0
|
||||||
|
#define LV_USE_DEMO_HIGH_RES 0
|
||||||
|
#define LV_USE_DEMO_SMARTWATCH 0
|
||||||
|
#endif /* LV_BUILD_DEMOS */
|
||||||
|
|
||||||
#ifndef LV_USE_LZ4
|
#ifndef LV_USE_LZ4
|
||||||
#if (LV_USE_LZ4_INTERNAL || LV_USE_LZ4_EXTERNAL)
|
#if (LV_USE_LZ4_INTERNAL || LV_USE_LZ4_EXTERNAL)
|
||||||
|
|||||||
+31
-15
@@ -123,26 +123,26 @@ elseif (OPTIONS_FULL_32BIT)
|
|||||||
elseif (OPTIONS_TEST_SYSHEAP)
|
elseif (OPTIONS_TEST_SYSHEAP)
|
||||||
set (BUILD_OPTIONS ${LVGL_TEST_OPTIONS_TEST_SYSHEAP})
|
set (BUILD_OPTIONS ${LVGL_TEST_OPTIONS_TEST_SYSHEAP})
|
||||||
filter_compiler_options (C TEST_LIBS ${SANITIZE_AND_COVERAGE_OPTIONS})
|
filter_compiler_options (C TEST_LIBS ${SANITIZE_AND_COVERAGE_OPTIONS})
|
||||||
set (LV_CONF_BUILD_DISABLE_EXAMPLES ON)
|
set (CONFIG_LV_BUILD_EXAMPLES OFF CACHE BOOL "disable examples" FORCE)
|
||||||
set (ENABLE_TESTS ON)
|
set (ENABLE_TESTS ON)
|
||||||
add_definitions(-DREF_IMGS_PATH="ref_imgs/")
|
add_definitions(-DREF_IMGS_PATH="ref_imgs/")
|
||||||
elseif (OPTIONS_TEST_DEFHEAP)
|
elseif (OPTIONS_TEST_DEFHEAP)
|
||||||
set (BUILD_OPTIONS ${LVGL_TEST_OPTIONS_TEST_DEFHEAP})
|
set (BUILD_OPTIONS ${LVGL_TEST_OPTIONS_TEST_DEFHEAP})
|
||||||
filter_compiler_options (C TEST_LIBS ${SANITIZE_AND_COVERAGE_OPTIONS})
|
filter_compiler_options (C TEST_LIBS ${SANITIZE_AND_COVERAGE_OPTIONS})
|
||||||
set (LV_CONF_BUILD_DISABLE_EXAMPLES ON)
|
set (CONFIG_LV_BUILD_EXAMPLES OFF CACHE BOOL "disable examples" FORCE)
|
||||||
set (ENABLE_TESTS ON)
|
set (ENABLE_TESTS ON)
|
||||||
add_definitions(-DREF_IMGS_PATH="ref_imgs/")
|
add_definitions(-DREF_IMGS_PATH="ref_imgs/")
|
||||||
elseif (OPTIONS_TEST_MEMORYCHECK)
|
elseif (OPTIONS_TEST_MEMORYCHECK)
|
||||||
# sanitizer is disabled because valgrind uses LD_PRELOAD and the
|
# sanitizer is disabled because valgrind uses LD_PRELOAD and the
|
||||||
# sanitizer lib needs to load first
|
# sanitizer lib needs to load first
|
||||||
set (BUILD_OPTIONS ${LVGL_TEST_OPTIONS_TEST_SYSHEAP})
|
set (BUILD_OPTIONS ${LVGL_TEST_OPTIONS_TEST_SYSHEAP})
|
||||||
set (LV_CONF_BUILD_DISABLE_EXAMPLES ON)
|
set (CONFIG_LV_BUILD_EXAMPLES OFF CACHE BOOL "disable examples" FORCE)
|
||||||
set (ENABLE_TESTS ON)
|
set (ENABLE_TESTS ON)
|
||||||
add_definitions(-DREF_IMGS_PATH="ref_imgs/")
|
add_definitions(-DREF_IMGS_PATH="ref_imgs/")
|
||||||
elseif (OPTIONS_TEST_VG_LITE)
|
elseif (OPTIONS_TEST_VG_LITE)
|
||||||
set (BUILD_OPTIONS ${LVGL_TEST_OPTIONS_VG_LITE} -DLVGL_CI_USING_SYS_HEAP ${SANITIZE_AND_COVERAGE_OPTIONS})
|
set (BUILD_OPTIONS ${LVGL_TEST_OPTIONS_VG_LITE} -DLVGL_CI_USING_SYS_HEAP ${SANITIZE_AND_COVERAGE_OPTIONS})
|
||||||
filter_compiler_options (C TEST_LIBS ${SANITIZE_AND_COVERAGE_OPTIONS})
|
filter_compiler_options (C TEST_LIBS ${SANITIZE_AND_COVERAGE_OPTIONS})
|
||||||
set (LV_CONF_BUILD_DISABLE_EXAMPLES ON)
|
set (CONFIG_LV_BUILD_EXAMPLES OFF CACHE BOOL "disable examples" FORCE)
|
||||||
set (ENABLE_TESTS ON)
|
set (ENABLE_TESTS ON)
|
||||||
add_definitions(-DREF_IMGS_PATH="ref_imgs_vg_lite/")
|
add_definitions(-DREF_IMGS_PATH="ref_imgs_vg_lite/")
|
||||||
|
|
||||||
@@ -170,14 +170,8 @@ if ($ENV{NON_AMD64_BUILD})
|
|||||||
set(CMAKE_LIBRARY_PATH "/usr/lib/i386-linux-gnu" CACHE PATH "search 32bit lib path firstly")
|
set(CMAKE_LIBRARY_PATH "/usr/lib/i386-linux-gnu" CACHE PATH "search 32bit lib path firstly")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Set LV_CONF_PATH so custom.cmake knows about it before compiling lvgl
|
|
||||||
# Used to preprocess lv_conf_internal.h with the test config
|
|
||||||
set(LV_CONF_PATH "${LVGL_TEST_DIR}/src/lv_test_conf.h")
|
|
||||||
set(LV_BUILD_TEST ON)
|
|
||||||
# Options lvgl and examples are compiled with.
|
# Options lvgl and examples are compiled with.
|
||||||
set(COMPILE_OPTIONS
|
set(COMPILE_OPTIONS
|
||||||
-DLV_CONF_PATH="${LVGL_TEST_DIR}/src/lv_test_conf.h"
|
|
||||||
-DLV_BUILD_TEST
|
|
||||||
${BUILD_OPTIONS}
|
${BUILD_OPTIONS}
|
||||||
${BUILD_TARGET_DEF}
|
${BUILD_TARGET_DEF}
|
||||||
)
|
)
|
||||||
@@ -262,21 +256,41 @@ endif()
|
|||||||
get_filename_component(LVGL_DIR ${LVGL_TEST_DIR} DIRECTORY)
|
get_filename_component(LVGL_DIR ${LVGL_TEST_DIR} DIRECTORY)
|
||||||
|
|
||||||
# Include lvgl project file.
|
# Include lvgl project file.
|
||||||
|
# Set LV_BUILD_CONF_PATH so os_desktop.cmake knows about it before compiling lvgl
|
||||||
|
# Used to preprocess lv_conf_internal.h with the test config
|
||||||
|
set(LV_BUILD_CONF_PATH "${LVGL_TEST_DIR}/src/lv_test_conf.h" CACHE STRING "set test configuration")
|
||||||
|
|
||||||
include(${LVGL_DIR}/CMakeLists.txt)
|
include(${LVGL_DIR}/CMakeLists.txt)
|
||||||
target_compile_options(lvgl PUBLIC $<$<COMPILE_LANGUAGE:C>: ${LVGL_C_COMPILE_OPTIONS}>)
|
target_compile_options(lvgl PUBLIC $<$<COMPILE_LANGUAGE:C>: ${LVGL_C_COMPILE_OPTIONS}>)
|
||||||
|
target_compile_options(lvgl PUBLIC $<$<COMPILE_LANGUAGE:CXX>:${LVGL_CXX_COMPILE_OPTIONS}>)
|
||||||
|
target_compile_definitions(lvgl PUBLIC LV_BUILD_TEST)
|
||||||
if(NOT (CMAKE_C_COMPILER_ID STREQUAL "MSVC"))
|
if(NOT (CMAKE_C_COMPILER_ID STREQUAL "MSVC"))
|
||||||
target_compile_options(lvgl PUBLIC $<$<COMPILE_LANGUAGE:ASM>: ${LVGL_C_COMPILE_OPTIONS}>)
|
target_compile_options(lvgl PUBLIC $<$<COMPILE_LANGUAGE:ASM>:${LVGL_C_COMPILE_OPTIONS}>)
|
||||||
endif()
|
|
||||||
target_compile_options(lvgl PUBLIC $<$<COMPILE_LANGUAGE:CXX>: ${LVGL_CXX_COMPILE_OPTIONS}>)
|
|
||||||
if (TARGET lvgl_examples)
|
|
||||||
target_compile_options(lvgl_examples PUBLIC ${LVGL_C_COMPILE_OPTIONS})
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (TARGET lvgl_thorvg)
|
||||||
|
target_compile_options(lvgl_thorvg PUBLIC $<$<COMPILE_LANGUAGE:C>:${LVGL_C_COMPILE_OPTIONS}>)
|
||||||
|
target_compile_options(lvgl_thorvg PUBLIC $<$<COMPILE_LANGUAGE:CXX>:${LVGL_CXX_COMPILE_OPTIONS}>)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (TARGET lvgl_examples)
|
||||||
|
target_compile_options(lvgl_examples PUBLIC $<$<COMPILE_LANGUAGE:C>:${LVGL_C_COMPILE_OPTIONS}>)
|
||||||
|
target_compile_options(lvgl_examples PUBLIC $<$<COMPILE_LANGUAGE:CXX>:${LVGL_CXX_COMPILE_OPTIONS}>)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (TARGET lvgl_demos)
|
||||||
|
target_compile_options(lvgl_demos PUBLIC $<$<COMPILE_LANGUAGE:C>:${LVGL_C_COMPILE_OPTIONS}>)
|
||||||
|
target_compile_options(lvgl_demos PUBLIC $<$<COMPILE_LANGUAGE:CXX>:${LVGL_CXX_COMPILE_OPTIONS}>)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
# LVGL_CONF_DIR and LVGL_CONF_PATH are normalized and set by os_desktop.cmake
|
||||||
|
|
||||||
set(TEST_INCLUDE_DIRS
|
set(TEST_INCLUDE_DIRS
|
||||||
$<BUILD_INTERFACE:${LVGL_TEST_DIR}/src>
|
$<BUILD_INTERFACE:${LVGL_TEST_DIR}/src>
|
||||||
$<BUILD_INTERFACE:${LVGL_TEST_DIR}/unity>
|
$<BUILD_INTERFACE:${LVGL_TEST_DIR}/unity>
|
||||||
$<BUILD_INTERFACE:${LVGL_TEST_DIR}>
|
$<BUILD_INTERFACE:${LVGL_TEST_DIR}>
|
||||||
|
$<BUILD_INTERFACE:${LVGL_CONF_DIR}>
|
||||||
)
|
)
|
||||||
|
|
||||||
file(GLOB_RECURSE TEST_IMAGES_SRC ${LVGL_TEST_DIR}/test_images/*.c)
|
file(GLOB_RECURSE TEST_IMAGES_SRC ${LVGL_TEST_DIR}/test_images/*.c)
|
||||||
@@ -322,6 +336,7 @@ add_library(test_common
|
|||||||
)
|
)
|
||||||
target_include_directories(test_common PUBLIC ${TEST_INCLUDE_DIRS})
|
target_include_directories(test_common PUBLIC ${TEST_INCLUDE_DIRS})
|
||||||
target_compile_options(test_common PUBLIC ${LVGL_TESTFILE_COMPILE_OPTIONS})
|
target_compile_options(test_common PUBLIC ${LVGL_TESTFILE_COMPILE_OPTIONS})
|
||||||
|
target_compile_definitions(test_common PRIVATE LV_BUILD_TEST ${LVGL_COMPILER_DEFINES})
|
||||||
|
|
||||||
# Generate one test executable for each source file pair.
|
# Generate one test executable for each source file pair.
|
||||||
# The sources in ${CMAKE_CURRENT_BINARY_DIR} is auto-generated, the
|
# The sources in ${CMAKE_CURRENT_BINARY_DIR} is auto-generated, the
|
||||||
@@ -455,6 +470,7 @@ endif()
|
|||||||
if (TEST_LIBS_FILES)
|
if (TEST_LIBS_FILES)
|
||||||
add_library(test_libs STATIC ${TEST_LIBS_FILES})
|
add_library(test_libs STATIC ${TEST_LIBS_FILES})
|
||||||
target_include_directories(test_libs PUBLIC ${TEST_INCLUDE_DIRS} "src/test_libs")
|
target_include_directories(test_libs PUBLIC ${TEST_INCLUDE_DIRS} "src/test_libs")
|
||||||
|
target_compile_definitions(test_libs PRIVATE LV_BUILD_TEST ${LVGL_COMPILER_DEFINES})
|
||||||
target_compile_options(test_libs PUBLIC ${LVGL_TESTFILE_COMPILE_OPTIONS})
|
target_compile_options(test_libs PUBLIC ${LVGL_TESTFILE_COMPILE_OPTIONS})
|
||||||
list(APPEND TEST_LIBS test_libs)
|
list(APPEND TEST_LIBS test_libs)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#if LV_BUILD_TEST
|
#if LV_BUILD_TEST
|
||||||
#include "../lvgl.h"
|
#include "lvgl.h"
|
||||||
#include "../../libs/freetype/lv_freetype_private.h"
|
#include "src/libs/freetype/lv_freetype_private.h"
|
||||||
|
|
||||||
#include "unity/unity.h"
|
#include "unity/unity.h"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user