@@ -14,49 +14,57 @@ if(LIBAPPIMAGE_DESKTOP_INTEGRATION_ENABLED)
1414 add_subdirectory (desktop_integration)
1515 list (APPEND libappimage_sources "$<TARGET_OBJECTS:appimage_desktop_integration>" )
1616endif ()
17+ if (BUILD_SHARED_LIBS )
18+ add_library (libappimage SHARED ${libappimage_sources} libappimage_legacy.cpp)
1719
18- add_library (libappimage_static STATIC ${libappimage_sources} )
19- add_library (libappimage SHARED ${libappimage_sources} libappimage_legacy.cpp)
20+ # For shared libraries, link privately to xdg-basedir
21+ target_link_libraries (libappimage PRIVATE xdg-basedir)
22+ else ()
23+ add_library (libappimage STATIC ${libappimage_sources} )
24+ # For static libraries, include xdg-basedir object files directly to avoid export issues
25+ target_sources (libappimage PRIVATE $<TARGET_OBJECTS:xdg-basedir>)
26+ get_target_property (XDG_BASEDIR_INCLUDES xdg-basedir INTERFACE_INCLUDE_DIRECTORIES )
27+ if (XDG_BASEDIR_INCLUDES)
28+ target_include_directories (libappimage PRIVATE ${XDG_BASEDIR_INCLUDES} )
29+ endif ()
30+ endif ()
2031
2132configure_file (config.h.in ${PROJECT_BINARY_DIR} /generated -headers/appimage/config.h)
2233
23- foreach (target libappimage libappimage_static)
24- configure_libappimage_module(${target} )
25- target_link_libraries (
26- ${target}
27- PRIVATE libarchive
28- PRIVATE xdg-basedir
29- PRIVATE XdgUtils::DesktopEntry
30- PRIVATE XdgUtils::BaseDir
31- PRIVATE libappimage_hashlib
32- # not linking publicly to squashfuse as headers are not needed when using libappimage
33- # unit tests etc., which use squashfuse directly, must link to it explicitly
34- PRIVATE libsquashfuse
35- PRIVATE Boost::boost
36- PUBLIC libappimage_shared
37- PUBLIC pthread
38- PRIVATE libgio
39- PUBLIC libcairo
40- PUBLIC librsvg
41- PUBLIC dl
42- )
43- message (STATUS "IMAGE_MANIPULATION_BACKEND_LIBS ${IMAGE_MANIPULATION_BACKEND_LIBS} " )
44- if (LIBAPPIMAGE_STANDALONE)
45- target_link_libraries (${target} PRIVATE -static -libgcc -static -libstdc++)
46- endif ()
34+ configure_libappimage_module(libappimage)
4735
48- target_include_directories (
49- ${target}
50- PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} >
51- PUBLIC $<BUILD_INTERFACE:${PROJECT_BINARY_DIR} /generated -headers>
52- )
36+ target_link_libraries (
37+ libappimage
38+ PRIVATE libarchive
39+ PRIVATE XdgUtils::DesktopEntry
40+ PRIVATE XdgUtils::BaseDir
41+ PRIVATE libappimage_hashlib
42+ # not linking publicly to squashfuse as headers are not needed when using libappimage
43+ # unit tests etc., which use squashfuse directly, must link to it explicitly
44+ PRIVATE libsquashfuse
45+ PRIVATE Boost::boost
46+ PUBLIC libappimage_shared
47+ PUBLIC pthread
48+ PRIVATE libgio
49+ PUBLIC libcairo
50+ PUBLIC librsvg
51+ PUBLIC dl
52+ )
53+ message (STATUS "IMAGE_MANIPULATION_BACKEND_LIBS ${IMAGE_MANIPULATION_BACKEND_LIBS} " )
54+ if (LIBAPPIMAGE_STANDALONE)
55+ target_link_libraries (libappimage PRIVATE -static -libgcc -static -libstdc++)
56+ endif ()
5357
54- set_property (TARGET libappimage PROPERTY PUBLIC_HEADER ${libappimage_public_header} )
58+ target_include_directories (
59+ libappimage
60+ PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} >
61+ PUBLIC $<BUILD_INTERFACE:${PROJECT_BINARY_DIR} /generated -headers>
62+ )
5563
56- set_property (TARGET libappimage PROPERTY VERSION ${libappimage_VERSION} )
57- set_property (TARGET libappimage PROPERTY SOVERSION ${libappimage_SOVERSION} )
58- endforeach ()
64+ set_property (TARGET libappimage PROPERTY PUBLIC_HEADER ${libappimage_public_header} )
5965
66+ set_property (TARGET libappimage PROPERTY VERSION ${libappimage_VERSION} )
67+ set_property (TARGET libappimage PROPERTY SOVERSION ${libappimage_SOVERSION} )
6068
6169# install libappimage
6270install (
0 commit comments