Skip to content

Commit 55f0943

Browse files
authored
Merge pull request #108 from ychsiao168/build/support-shared-libs
build: support BUILD_SHARED_LIBS option for lvgl_linux library
2 parents 6881625 + bcb93ab commit 55f0943

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

CMakeLists.txt

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -197,15 +197,22 @@ if (CONFIG_LV_USE_WAYLAND)
197197
file(MAKE_DIRECTORY ${PROTOCOLS_DIR})
198198

199199
set(WAYLAND_PROTOCOLS_SRC "")
200-
200+
201+
# Use public-code for shared libs, private-code for static libs
202+
if(BUILD_SHARED_LIBS)
203+
set(WAYLAND_SCANNER_CODE_MODE "public-code")
204+
else()
205+
set(WAYLAND_SCANNER_CODE_MODE "private-code")
206+
endif()
207+
201208
# Generate xdg-shell protocol (always)
202209
set(XDG_SHELL_XML "${PROTOCOL_ROOT}/stable/xdg-shell/xdg-shell.xml")
203210
set(XDG_SHELL_HEADER "${PROTOCOLS_DIR}/wayland_xdg_shell.h")
204211
set(XDG_SHELL_SOURCE "${PROTOCOLS_DIR}/wayland_xdg_shell.c")
205212

206213
if(NOT EXISTS ${XDG_SHELL_HEADER} OR NOT EXISTS ${XDG_SHELL_SOURCE})
207214
execute_process(COMMAND wayland-scanner client-header ${XDG_SHELL_XML} ${XDG_SHELL_HEADER})
208-
execute_process(COMMAND wayland-scanner private-code ${XDG_SHELL_XML} ${XDG_SHELL_SOURCE})
215+
execute_process(COMMAND wayland-scanner ${WAYLAND_SCANNER_CODE_MODE} ${XDG_SHELL_XML} ${XDG_SHELL_SOURCE})
209216
endif()
210217
list(APPEND WAYLAND_PROTOCOLS_SRC ${XDG_SHELL_SOURCE})
211218

@@ -217,7 +224,7 @@ if (CONFIG_LV_USE_WAYLAND)
217224

218225
if(NOT EXISTS ${DMABUF_HEADER} OR NOT EXISTS ${DMABUF_SOURCE})
219226
execute_process(COMMAND wayland-scanner client-header ${DMABUF_XML} ${DMABUF_HEADER})
220-
execute_process(COMMAND wayland-scanner private-code ${DMABUF_XML} ${DMABUF_SOURCE})
227+
execute_process(COMMAND wayland-scanner ${WAYLAND_SCANNER_CODE_MODE} ${DMABUF_XML} ${DMABUF_SOURCE})
221228
endif()
222229
list(APPEND WAYLAND_PROTOCOLS_SRC ${DMABUF_SOURCE})
223230
endif()
@@ -365,7 +372,8 @@ set(LV_LINUX_INC src/lib)
365372

366373
target_include_directories(lvgl PUBLIC ${PKG_CONFIG_INC})
367374

368-
add_library(lvgl_linux STATIC ${LV_LINUX_SRC} ${LV_LINUX_BACKEND_SRC})
375+
# Library type is determined by BUILD_SHARED_LIBS (shared if ON, static if OFF)
376+
add_library(lvgl_linux ${LV_LINUX_SRC} ${LV_LINUX_BACKEND_SRC})
369377
target_include_directories(lvgl_linux PUBLIC ${PKG_CONFIG_INC})
370378

371379
# If LVGL is configured to use LV_CONF_PATH or Kconfig
@@ -378,8 +386,10 @@ target_include_directories(lvgl_linux PUBLIC
378386
# Link LVGL with external dependencies - Modern CMake/CMP0079 allows this
379387
target_link_libraries(lvgl PUBLIC ${PKG_CONFIG_LIB} m pthread)
380388

381-
add_executable(lvglsim src/main.c ${LV_LINUX_SRC} ${LV_LINUX_BACKEND_SRC})
382-
target_link_libraries(lvglsim lvgl_linux lvgl)
389+
add_executable(lvglsim src/main.c)
390+
391+
# Repeat lvgl_linux to resolve circular dependency with lvgl
392+
target_link_libraries(lvglsim lvgl_linux lvgl lvgl_linux)
383393

384394
if(WERROR)
385395
target_compile_options(lvglsim PRIVATE -Werror)
@@ -396,6 +406,7 @@ install(DIRECTORY src/lib/
396406
PATTERN "*.h")
397407

398408
install(TARGETS lvgl_linux
409+
LIBRARY DESTINATION lib
399410
ARCHIVE DESTINATION lib
400411
)
401412

0 commit comments

Comments
 (0)