From d3ca11653401697777e00769480bc04f12e55c29 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Fri, 31 Jul 2026 07:47:34 +0200 Subject: [PATCH] Even more plug-in workarounds --- cmake/IfcOpenShellConfig.cmake.in | 2 ++ cmake/package_export.cmake | 1 + src/ifcwrap/CMakeLists.txt | 14 +++++++++----- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/cmake/IfcOpenShellConfig.cmake.in b/cmake/IfcOpenShellConfig.cmake.in index 741e4fa233..ddd7f87fbb 100644 --- a/cmake/IfcOpenShellConfig.cmake.in +++ b/cmake/IfcOpenShellConfig.cmake.in @@ -1,5 +1,7 @@ @PACKAGE_INIT@ +set_and_check(IFCOPENSHELL_LIBRARY_DIR "@PACKAGE_CMAKE_INSTALL_LIBDIR@") + # Variable to inspect installed schema versions. set(IFCOPENSHELL_SCHEMA_VERSIONS @SCHEMA_VERSIONS@) diff --git a/cmake/package_export.cmake b/cmake/package_export.cmake index cce10ed0b5..edaca05c59 100644 --- a/cmake/package_export.cmake +++ b/cmake/package_export.cmake @@ -17,6 +17,7 @@ configure_package_config_file( ${CONFIG_PACKAGE_INPUT} ${CONFIG_PACKAGE_OUTPUT} INSTALL_DESTINATION ${CONFIG_PACKAGE_LOCATION} + PATH_VARS CMAKE_INSTALL_LIBDIR ) install(FILES "${CONFIG_PACKAGE_OUTPUT}" "${CONFIG_VERSION_OUTPUT}" DESTINATION ${CONFIG_PACKAGE_LOCATION}) diff --git a/src/ifcwrap/CMakeLists.txt b/src/ifcwrap/CMakeLists.txt index 5c5a86d844..e05e04de21 100644 --- a/src/ifcwrap/CMakeLists.txt +++ b/src/ifcwrap/CMakeLists.txt @@ -225,11 +225,15 @@ if(schema_libraries OR kernel_libraries OR tree_libraries OR mapping_libraries O add_dependencies(ifcopenshell_wrapper ${schema_libraries} ${kernel_libraries} ${tree_libraries} ${mapping_libraries} ${geometry_serializer_libraries} ${document_serializer_libraries} ${linework_processing_libraries}) endif() if((NOT WIN32) AND NOT WASM_BUILD AND NOT CREATE_BUNDLE AND NOT CMAKE_INSTALL_RPATH AND COMMAND SET_INSTALL_RPATHS) - # The wrapper exposes RocksDbSerializer, so it has a DT_NEEDED entry for - # the document RDB plug-in. The Python package and CMake library - # directories are normally different, including in CI where the package - # is installed into Python_SITEARCH and plug-ins go to /usr/local/lib. - SET_INSTALL_RPATHS(ifcopenshell_wrapper "${CMAKE_INSTALL_FULL_LIBDIR};${IFCDIRS};${OCC_LIBRARY_DIR}") + if(IFCOPENSHELL_IFCWRAP_STANDALONE) + set(_ifcwrap_ifcopenshell_library_dir "${IFCOPENSHELL_LIBRARY_DIR}") + else() + set(_ifcwrap_ifcopenshell_library_dir "${CMAKE_INSTALL_FULL_LIBDIR}") + endif() + # The Python package and IfcOpenShell libraries can have unrelated install + # prefixes. This is notably the case for standalone ifcwrap builds against + # an installed CMake package and GitHub Actions' hosted Python. + SET_INSTALL_RPATHS(ifcopenshell_wrapper "${_ifcwrap_ifcopenshell_library_dir};${IFCDIRS};${OCC_LIBRARY_DIR}") elseif((NOT WIN32) AND BUILD_SHARED_LIBS AND COMMAND SET_INSTALL_RPATHS) SET_INSTALL_RPATHS(ifcopenshell_wrapper "${IFCDIRS};${OCC_LIBRARY_DIR}") endif()