Index: llvm/cmake/modules/AddLLVM.cmake =================================================================== --- llvm/cmake/modules/AddLLVM.cmake +++ llvm/cmake/modules/AddLLVM.cmake @@ -2140,17 +2140,21 @@ set(extra_libdir ${LLVM_LIBRARY_DIR}) endif() + if(LLVM_WITH_Z3 AND Z3_RPATH_DIR) + set(z3_libdir ${Z3_RPATH_DIR}) + endif() + if (APPLE) set(_install_name_dir INSTALL_NAME_DIR "@rpath") - set(_install_rpath "@loader_path/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) + set(_install_rpath "@loader_path/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir} ${z3_libdir}) elseif(${CMAKE_SYSTEM_NAME} MATCHES "AIX" AND BUILD_SHARED_LIBS) # $ORIGIN is not interpreted at link time by aix ld. # Since BUILD_SHARED_LIBS is only recommended for use by developers, # hardcode the rpath to build/install lib dir first in this mode. # FIXME: update this when there is better solution. - set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) + set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir} ${z3_libdir}) elseif(UNIX) - set(_install_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) + set(_install_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir} ${z3_libdir}) if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)") set_property(TARGET ${name} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-z,origin ") Index: llvm/cmake/modules/FindZ3.cmake =================================================================== --- llvm/cmake/modules/FindZ3.cmake +++ llvm/cmake/modules/FindZ3.cmake @@ -60,6 +60,9 @@ PATH_SUFFIXES lib bin ) +# Prepare for setting RPATH if found from customized install directory +get_filename_component(Z3_RPATH_DIR "${Z3_LIBRARIES}" DIRECTORY) + # If Z3 has not been found in LLVM_Z3_INSTALL_DIR look in the default directories find_path(Z3_INCLUDE_DIR NAMES z3.h PATH_SUFFIXES libz3 z3