# a non-default directory on Unix-like systems other than macOS.
# https://cmake.org/Wiki/CMake_RPATH_handling
if(NOT CMAKE_INSTALL_RPATH AND NOT (WIN32 OR APPLE))
- LIST(FIND CMAKE_C_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_FULL_LIBDIR}" IS_SYSTEM_DIR)
- if(IS_SYSTEM_DIR STREQUAL "-1")
- SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}")
- SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+ # Some systems may have limited or non-existent support for $ORIGIN.
+ # https://www.lekensteyn.nl/rpath.html
+ set(_enable_rpath_origin 0)
+ if(CMAKE_SYSTEM_NAME MATCHES "^(Linux|SunOS|FreeBSD)$")
+ set(_enable_rpath_origin 1)
+ endif()
+ set(ENABLE_RPATH_ORIGIN ${_enable_rpath_origin} CACHE BOOL "Use \$ORIGIN with RPATH")
+ mark_as_advanced(ENABLE_RPATH_ORIGIN)
+
+ if(ENABLE_RPATH_ORIGIN)
+ # Set an install RPATH relative to the location of the binary, to
+ # provide a fully relocatable package.
+ set(CMAKE_INSTALL_RPATH "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}")
+ # Add the automatically determined parts of the RPATH
+ # which point to directories outside the build tree to the install RPATH.
+ set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+ else()
+ # Add an absolute RPATH if it is not already included in the
+ # default search list.
+ list(FIND CMAKE_C_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_FULL_LIBDIR}" IS_SYSTEM_DIR)
+ if(IS_SYSTEM_DIR STREQUAL "-1")
+ set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}")
+ set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+ endif()
endif()
endif()
# $DESTDIR/lib/wireshark/extcap
# Windows: $DESTDIR/extcap
# macOS app bundle: Wireshark.app/Contents/Resources/share/wireshark/extcap
+# If you change the nesting level be sure to check also the INSTALL_RPATH
+# target property.
if (WIN32)
set(EXTCAP_INSTALL_LIBDIR "extcap" CACHE INTERNAL "The extcap dir")
else ()
LINK_FLAGS "${WS_LINK_FLAGS}"
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/run/extcap
)
+ if(ENABLE_RPATH_ORIGIN)
+ set_target_properties(${_executable} PROPERTIES
+ INSTALL_RPATH "\$ORIGIN/../.."
+ )
+ endif()
if(ENABLE_APPLICATION_BUNDLE)
if(NOT CMAKE_CFG_INTDIR STREQUAL ".")
# Xcode