diff --git a/cmake/utilities.cmake b/cmake/utilities.cmake index 5e7afc9d57..20e1f2686a 100644 --- a/cmake/utilities.cmake +++ b/cmake/utilities.cmake @@ -41,6 +41,16 @@ macro(SET_INSTALL_RPATHS _target _paths) set_target_properties(${_target} PROPERTIES INSTALL_RPATH "${${_target}_rpaths}") endmacro() +macro(SET_INSTALL_SELF_RPATH _target) + if(IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}") + SET_INSTALL_RPATHS(${_target} "${CMAKE_INSTALL_LIBDIR}") + elseif(APPLE) + SET_INSTALL_RPATHS(${_target} "@loader_path") + else() + SET_INSTALL_RPATHS(${_target} "$ORIGIN") + endif() +endmacro() + function(ifcopenshell_plugin_target TARGET) set_target_properties(${TARGET} PROPERTIES PREFIX "") endfunction() diff --git a/src/ifcgeom/CMakeLists.txt b/src/ifcgeom/CMakeLists.txt index 990fcd5ba2..f2b66a6ab7 100644 --- a/src/ifcgeom/CMakeLists.txt +++ b/src/ifcgeom/CMakeLists.txt @@ -14,6 +14,10 @@ add_library(IfcGeom ${SCHEMA_AGNOSTIC_FILES}) set_target_properties(IfcGeom PROPERTIES OUTPUT_NAME "ifcopenshell.geometry" ) + +if((NOT WIN32) AND BUILD_SHARED_LIBS AND NOT WASM_BUILD AND NOT CREATE_BUNDLE AND NOT CMAKE_INSTALL_RPATH AND COMMAND SET_INSTALL_SELF_RPATH) + SET_INSTALL_SELF_RPATH(IfcGeom) +endif() set_target_properties(IfcGeom PROPERTIES COMPILE_FLAGS -DIFC_GEOM_EXPORTS) if (NOT CREATE_BUNDLE) set_target_properties(IfcGeom PROPERTIES VERSION "${PROJECT_VERSION}" SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}") diff --git a/src/ifcparse/CMakeLists.txt b/src/ifcparse/CMakeLists.txt index 4c07174089..5c7031d65b 100644 --- a/src/ifcparse/CMakeLists.txt +++ b/src/ifcparse/CMakeLists.txt @@ -38,6 +38,10 @@ add_library(IfcParse ${IFCPARSE_FILES}) set_target_properties(IfcParse PROPERTIES OUTPUT_NAME "ifcopenshell.parse" ) + +if((NOT WIN32) AND BUILD_SHARED_LIBS AND NOT WASM_BUILD AND NOT CREATE_BUNDLE AND NOT CMAKE_INSTALL_RPATH AND COMMAND SET_INSTALL_SELF_RPATH) + SET_INSTALL_SELF_RPATH(IfcParse) +endif() target_compile_definitions(IfcParse PUBLIC ${SCHEMA_DEFINITIONS}) if(USE_MMAP) target_compile_definitions(IfcParse PUBLIC USE_MMAP)