linebender / resvg

An SVG rendering library.
Mozilla Public License 2.0
2.79k stars 225 forks source link

librevg.so doesn't have SONAME on Linux #805

Closed igormironchik closed 2 months ago

igormironchik commented 2 months ago

Subject! Not sure if you can fix it with cargo, but subject. It's an issue when you build with C++ and CMake and set RUNPATH, CMake unable to handle this case and keeps in executable full path to libresvg.so.

If you curious, I do:

add_library( resvg UNKNOWN IMPORTED )
add_custom_target( build_resvg ALL
    COMMAND cargo build --release
    WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg/crates/c-api"
    BYPRODUCTS ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg/target/release/${CMAKE_STATIC_LIBRARY_PREFIX}resvg${CMAKE_SHARED_LIBRARY_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX} )

if( UNIX AND NOT APPLE )
    add_custom_command( TARGET build_resvg POST_BUILD
        COMMAND patchelf --set-soname libresvg.so libresvg.so
        WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg/target/release" )
endif()

if( WIN32 )
    set_target_properties( resvg PROPERTIES
        IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg/target/release/${CMAKE_STATIC_LIBRARY_PREFIX}resvg${CMAKE_SHARED_LIBRARY_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX} )

    install( FILES ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg/target/release/${CMAKE_STATIC_LIBRARY_PREFIX}resvg${CMAKE_SHARED_LIBRARY_SUFFIX}
        TYPE BIN )
else()
    set_target_properties( resvg PROPERTIES
        IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg/target/release/${CMAKE_STATIC_LIBRARY_PREFIX}resvg${CMAKE_SHARED_LIBRARY_SUFFIX} )

    install( FILES ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg/target/release/${CMAKE_STATIC_LIBRARY_PREFIX}resvg${CMAKE_SHARED_LIBRARY_SUFFIX}
        TYPE LIB )
endif()

set_target_properties( resvg PROPERTIES
    INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg/crates/c-api )
add_dependencies( resvg build_resvg )
RazrFalcon commented 2 months ago

Duplicate of #623