linuxOS_D21X/source/artinchip/lvgl-ui/CMakeLists.txt
2024-11-29 16:23:11 +08:00

119 lines
3.5 KiB
CMake

cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
# project name
project(lvgl-ui)
# set app folder
set(APP_FOLDER base_ui)
#set(APP_FOLDER qc_test) # qc-test is only used for AIC chip testing
#set(APP_FOLDER aic_demo)
# set app out put name
set(APP_OUT_NAME test_lvgl)
# Suppress cmake unused warning
set(ignore ${BUILD_DOC} ${BUILD_DOCS} ${BUILD_EXAMPLE} ${BUILD_EXAMPLES}
${BUILD_SHARED_LIBS}${BUILD_TEST}${BUILD_TESTING}${BUILD_TESTS})
# Add compile option
add_compile_options(-Wall)
# check install directories
if(NOT CMAKE_INSTALL_PREFIX)
message(FATAL_ERROR "ERROR: CMAKE_INSTALL_PREFIX is not defined.")
endif()
include(GNUInstallDirs)
### build lvgl library
add_subdirectory(lvgl)
# lvgl HAL source
set(LVGL_HAL ${CMAKE_CURRENT_SOURCE_DIR}/lv_drivers)
set(DRIVER_SOURCE_FILES
${LVGL_HAL}/aic_dec.c
${LVGL_HAL}/lv_fbdev.c
${LVGL_HAL}/lv_ge2d.c
${LVGL_HAL}/lv_port_indev.c
${LVGL_HAL}/lv_port_disp.c
)
# obtain app source file
if (NOT APP_FOLDER STREQUAL qc_test)
file(GLOB_RECURSE APP_SOURCE_FILES
${CMAKE_CURRENT_SOURCE_DIR}/${APP_FOLDER}/*.c)
file(GLOB APP_SOURCE_FILES_MAIN
${CMAKE_CURRENT_SOURCE_DIR}/main.c)
string(APPEND ${APP_SOURCE_FILES} ${APP_SOURCE_FILES_MAIN})
endif()
# obtain qc_test source file --> only used for AIC chip testing, please ignore
if (APP_FOLDER STREQUAL qc_test)
file(GLOB APP_SOURCE_FILES
${CMAKE_CURRENT_SOURCE_DIR}/${APP_FOLDER}/*.c)
endif()
set(APP_SOURCE_FILES ${APP_SOURCE_FILES} ${APP_SOURCE_FILES_MAIN} ${DRIVER_SOURCE_FILES})
# set include path
set(INCLUDE_PATH
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/${APP_FOLDER}
${LVGL_HAL}
)
add_executable(${APP_OUT_NAME} ${APP_SOURCE_FILES})
target_link_libraries(${APP_OUT_NAME} lvgl)
target_link_libraries(${APP_OUT_NAME} lvgl_examples)
target_link_libraries(${APP_OUT_NAME} lvgl_demos)
target_link_libraries(${APP_OUT_NAME} media_player)
target_link_libraries(${APP_OUT_NAME} m)
target_link_libraries(${APP_OUT_NAME} mpp_base mpp_ve mpp_ge mpp_decoder)
if (APP_FOLDER STREQUAL qc_test OR APP_FOLDER STREQUAL aic_demo)
target_link_libraries(${APP_OUT_NAME} pthread)
# using screen mirroring
if (APP_FOLDER STREQUAL aic_demo)
#set(use_mirror "use_screen_mirror")
add_definitions(-DLV_USE_AIC_DEMO=1)
endif()
if(use_mirror STREQUAL "use_screen_mirror")
target_link_libraries(${APP_OUT_NAME} LinkSupport LinkUtils MSNUtils mpp_decoder asound)
add_definitions(-DUSE_MSNLINK)
endif()
endif()
# use freetype font
if(DEFINED USE_FREETYPE)
if(${USE_FREETYPE} STREQUAL "yes")
target_include_directories(lvgl SYSTEM PUBLIC ${STAGING_DIR}/usr/include/freetype2/)
target_link_libraries(${APP_OUT_NAME} libfreetype.so)
endif()
endif()
# Find libts for link
if(${USE_RTP_TSLIB} STREQUAL "yes")
add_definitions(-DUSE_RTP_TSLIB)
find_library(LIBTS libts.so)
target_link_libraries(${APP_OUT_NAME} ${LIBTS})
endif()
# add include path
target_include_directories(${APP_OUT_NAME} PRIVATE ${INCLUDE_PATH})
set_target_properties(${APP_OUT_NAME} PROPERTIES INSTALL_RPATH "/usr/local/lib")
add_definitions(-DLVGL_DIR="L:${CMAKE_INSTALL_FULL_DATAROOTDIR}/lvgl_data/")
if(DEFINED CMAKE_INSTALL_FULL_BINDIR)
install(TARGETS ${APP_OUT_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_FULL_BINDIR}")
endif() # CMAKE_INSTALL_FULL_BINDIR
if(DEFINED CMAKE_INSTALL_FULL_DATAROOTDIR)
install(DIRECTORY ${APP_FOLDER}/assets/
DESTINATION ${CMAKE_INSTALL_FULL_DATAROOTDIR}/lvgl_data)
endif() # CMAKE_INSTALL_FULL_DATAROOTDIR