From bb213be26677db0470e781a06f345e9b422ce6dd Mon Sep 17 00:00:00 2001 From: Fabian Schiebel Date: Sun, 7 Jun 2026 19:50:59 +0200 Subject: [PATCH 1/2] Fix install with BUILD_SHARED_LIBS Shared libraries were not finding dependencies that are not installed at standard locations. --- CMakeLists.txt | 10 ---------- cmake/phasar_macros.cmake | 9 +++++++++ 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0bb9701c17..96da3a1a42 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -225,16 +225,6 @@ endif() if (PHASAR_USE_CONAN) elseif (NOT PHASAR_IN_TREE) - # RPATH - set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}) - - if (NOT "${CMAKE_INSTALL_LIBDIR}" STREQUAL "lib") - message(STATUS "Detected CMAKE_INSTALL_LIBDIR that deviates from 'lib': ${CMAKE_INSTALL_LIBDIR}. Add ${CMAKE_INSTALL_PREFIX}/lib to the RPATH as json-schema-validator needs it") - list(APPEND CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib) - endif() - - set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) - # Export set set(PHASAR_DEPS_EXPORT_SET PhasarDepsExports) else() diff --git a/cmake/phasar_macros.cmake b/cmake/phasar_macros.cmake index 961d57697d..2dba8aafc6 100644 --- a/cmake/phasar_macros.cmake +++ b/cmake/phasar_macros.cmake @@ -281,6 +281,15 @@ function(add_phasar_library name) target_compile_features(${name} PUBLIC cxx_std_20) + if (BUILD_SHARED_LIBS AND UNIX) + target_link_options(${name} INTERFACE "LINKER:-rpath,\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}:\$ORIGIN/../${PHASAR_DEPS_INSTALL_DESTINATION}/lib") + + set_target_properties(${name} PROPERTIES + INSTALL_RPATH + "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR};\$ORIGIN/../${PHASAR_DEPS_INSTALL_DESTINATION}/lib" + ) + endif() + set(install_module) if(PHASAR_LIB_MODULE_FILES) if(PHASAR_BUILD_MODULES) From 569b88ef2ff7f9567a74329b0bc85a301c338bed Mon Sep 17 00:00:00 2001 From: Fabian Schiebel Date: Sun, 7 Jun 2026 19:51:42 +0200 Subject: [PATCH 2/2] Add SOVERSION to shared phasar libraries for better detecting ABI issues --- cmake/phasar_macros.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmake/phasar_macros.cmake b/cmake/phasar_macros.cmake index 2dba8aafc6..72f11a37e5 100644 --- a/cmake/phasar_macros.cmake +++ b/cmake/phasar_macros.cmake @@ -277,6 +277,8 @@ function(add_phasar_library name) add_library(phasar::${component_name} ALIAS ${name}) set_target_properties(${name} PROPERTIES EXPORT_NAME ${component_name} + VERSION ${PHASAR_VERSION} + SOVERSION ${PHASAR_VERSION} ) target_compile_features(${name} PUBLIC cxx_std_20)