@@ -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
366373target_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} )
369377target_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
379387target_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
384394if (WERROR)
385395 target_compile_options (lvglsim PRIVATE -Werror)
@@ -396,6 +406,7 @@ install(DIRECTORY src/lib/
396406 PATTERN "*.h" )
397407
398408install (TARGETS lvgl_linux
409+ LIBRARY DESTINATION lib
399410 ARCHIVE DESTINATION lib
400411)
401412
0 commit comments