Files
orbithub/third_party/FreeRDP/cmake/ConfigureRPATH.cmake

62 lines
2.1 KiB
CMake

# RPATH configuration
option(CMAKE_SKIP_BUILD_RPATH "skip build RPATH" OFF)
option(CMAKE_BUILD_WITH_INSTALL_RPATH "build with install RPATH" OFF)
option(CMAKE_INSTALL_RPATH_USE_LINK_PATH "build with link RPATH" OFF)
if(APPLE)
if(BUILD_SHARED_LIBS)
option(CMAKE_MACOSX_RPATH "MacOSX RPATH" ON)
endif()
file(RELATIVE_PATH FRAMEWORK_PATH ${CMAKE_INSTALL_FULL_BINDIR} ${CMAKE_INSTALL_FULL_LIBDIR})
set(CFG_INSTALL_RPATH "@loader_path/${FRAMEWORK_PATH}")
elseif(NOT WIN32)
if(NOT FREEBSD)
option(WITH_ADD_PLUGIN_TO_RPATH "Add extension and plugin path to RPATH" OFF)
if(WITH_ADD_PLUGIN_TO_RPATH)
set(CFG_INSTALL_RPATH
"\$ORIGIN/../${FREERDP_EXTENSION_REL_PATH}:\$ORIGIN/../${FREERDP_PLUGIN_PATH}:\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}:\$ORIGIN/.."
)
else()
set(CFG_INSTALL_RPATH "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}:\$ORIGIN/..")
endif()
endif()
endif(APPLE)
set(CMAKE_INSTALL_RPATH ${CFG_INSTALL_RPATH} CACHE INTERNAL "ConfigureRPATH")
message("Configured RPATH=${CMAKE_INSTALL_RPATH}")
function(installWithRPATH)
if(NOT APPLE AND NOT FREEBSD AND NOT WIN32)
list(FIND ARGN "TARGETS" _index)
if(${_index} GREATER -1)
math(EXPR _index "${_index}+1")
list(GET ARGN ${_index} target)
else()
message(FATAL_ERROR "Missing TARGETS for install directive")
endif()
list(FIND ARGN "DESTINATION" _index)
if(${_index} GREATER -1)
math(EXPR _index "${_index}+1")
list(GET ARGN ${_index} path)
else()
message(FATAL_ERROR "Missing DESTINATION for install directive")
endif()
get_filename_component(ABS_PATH ${path} ABSOLUTE BASE_DIR ${CMAKE_INSTALL_PREFIX})
file(RELATIVE_PATH REL_PATH ${ABS_PATH} ${CMAKE_INSTALL_PREFIX})
if(WITH_ADD_PLUGIN_TO_RPATH)
set_target_properties(
${target}
PROPERTIES
INSTALL_RPATH
"\$ORIGIN/${REL_PATH}${FREERDP_EXTENSION_REL_PATH}:\$ORIGIN/${REL_PATH}${FREERDP_PLUGIN_PATH}:\$ORIGIN/${REL_PATH}${CMAKE_INSTALL_LIBDIR}"
)
else()
set_target_properties(${target} PROPERTIES INSTALL_RPATH "\$ORIGIN/${REL_PATH}${CMAKE_INSTALL_LIBDIR}")
endif()
endif()
install(${ARGN})
endfunction()