123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- 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)
- # 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)
- 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>)
- # Add definition of LV_CONF_PATH only if needed
- if(LV_CONF_PATH)
- 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)
- list(APPEND LVGL_PUBLIC_HEADERS
- ${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 "${CMAKE_INSTALL_PREFIX}/${INC_INSTALL_DIR}/"
- FILES_MATCHING
- PATTERN "*.h")
- # Install headers from the LVGL_PUBLIC_HEADERS variable
- install(
- FILES ${LVGL_PUBLIC_HEADERS}
- DESTINATION "${CMAKE_INSTALL_PREFIX}/${INC_INSTALL_DIR}/"
- )
- # install example headers
- if(NOT LV_CONF_BUILD_DISABLE_EXAMPLES)
- install(
- DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/examples"
- DESTINATION "${CMAKE_INSTALL_PREFIX}/${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 "${CMAKE_INSTALL_PREFIX}/${INC_INSTALL_DIR}/"
- FILES_MATCHING
- PATTERN "*.h")
- endif()
- configure_file("${LVGL_ROOT_DIR}/lvgl.pc.in" lvgl.pc @ONLY)
- configure_file("${LVGL_ROOT_DIR}/lv_version.h.in" lv_version.h @ONLY)
- install(
- FILES "${CMAKE_CURRENT_BINARY_DIR}/lvgl.pc"
- DESTINATION "${LIB_INSTALL_DIR}/pkgconfig/")
- # Install library
- set_target_properties(
- lvgl
- PROPERTIES OUTPUT_NAME lvgl
- VERSION ${LVGL_VERSION}
- SOVERSION ${LVGL_SOVERSION}
- ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
- LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
- RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
- 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_BINARY_DIR}/lib"
- LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
- RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
- 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_BINARY_DIR}/lib"
- LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
- RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
- 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_BINARY_DIR}/lib"
- LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
- RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
- 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()
|