summaryrefslogtreecommitdiff
path: root/qpid/cpp/BuildInstallSettings.cmake
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2013-04-01 18:58:32 +0000
committerAlan Conway <aconway@apache.org>2013-04-01 18:58:32 +0000
commit828455f6d94d3a075f438155d5cec7adef53f0f9 (patch)
tree1194f0f198e757a00fa7bec2afd6b0c5bf5400d1 /qpid/cpp/BuildInstallSettings.cmake
parent71985fe926f1188d2d98cea0b98e0e9c9d635ad9 (diff)
downloadqpid-python-828455f6d94d3a075f438155d5cec7adef53f0f9.tar.gz
QPID-4640: cmake: set RPATH so installed execuatables run.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1463248 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/BuildInstallSettings.cmake')
-rw-r--r--qpid/cpp/BuildInstallSettings.cmake112
1 files changed, 64 insertions, 48 deletions
diff --git a/qpid/cpp/BuildInstallSettings.cmake b/qpid/cpp/BuildInstallSettings.cmake
index dfa88022d9..affc3bbe11 100644
--- a/qpid/cpp/BuildInstallSettings.cmake
+++ b/qpid/cpp/BuildInstallSettings.cmake
@@ -49,70 +49,70 @@ if (WIN32)
set (CPACK_COMPONENT_COMMON_INSTALL_TYPES Broker Development Full)
set (CPACK_COMPONENT_COMMON_DISPLAY_NAME "Required common runtime items")
set (CPACK_COMPONENT_COMMON_DESCRIPTION
- "Run-time library common to all runtime components in Qpid.\nThis item is required by both broker and client components.")
+ "Run-time library common to all runtime components in Qpid.\nThis item is required by both broker and client components.")
set (QPID_COMPONENT_BROKER Broker)
set (CPACK_COMPONENT_BROKER_DEPENDS Common)
set (CPACK_COMPONENT_BROKER_INSTALL_TYPES Broker Full)
set (CPACK_COMPONENT_BROKER_DISPLAY_NAME "Broker")
set (CPACK_COMPONENT_BROKER_DESCRIPTION
- "Messaging broker; controls message flow within the system.\nAt least one broker is required to run any messaging application.")
+ "Messaging broker; controls message flow within the system.\nAt least one broker is required to run any messaging application.")
set (QPID_COMPONENT_CLIENT Client)
set (CPACK_COMPONENT_CLIENT_DEPENDS Common)
set (CPACK_COMPONENT_CLIENT_INSTALL_TYPES Development Full)
set (CPACK_COMPONENT_CLIENT_DISPLAY_NAME "Client runtime libraries")
set (CPACK_COMPONENT_CLIENT_DESCRIPTION
- "Runtime library components required to build and execute a client application.")
+ "Runtime library components required to build and execute a client application.")
set (QPID_COMPONENT_CLIENT_INCLUDE ClientInclude)
set (CPACK_COMPONENT_CLIENTINCLUDE_INSTALL_TYPES Development Full)
set (CPACK_COMPONENT_CLIENTINCLUDE_DISPLAY_NAME
- "Client programming header files")
+ "Client programming header files")
set (CPACK_COMPONENT_CLIENTINCLUDE_DESCRIPTION
- "C++ header files required to build any Qpid messaging application.")
+ "C++ header files required to build any Qpid messaging application.")
set (QPID_COMPONENT_EXAMPLES Examples)
set (CPACK_COMPONENT_EXAMPLES_INSTALL_TYPES Development Full)
set (CPACK_COMPONENT_EXAMPLES_DISPLAY_NAME "C++ Client programming examples")
set (CPACK_COMPONENT_EXAMPLES_DESCRIPTION
- "Example source code for using the C++ Client.")
+ "Example source code for using the C++ Client.")
set (QPID_COMPONENT_QMF QMF)
set (CPACK_COMPONENT_QMF_INSTALL_TYPES Development Full)
set (CPACK_COMPONENT_QMF_DISPLAY_NAME
- "Qpid Management Framework (QMF)")
+ "Qpid Management Framework (QMF)")
set (CPACK_COMPONENT_QMF_DESCRIPTION
- "QMF Agent allows you to embed QMF management in your program.\nQMF Console allows you to build management programs using QMF.")
+ "QMF Agent allows you to embed QMF management in your program.\nQMF Console allows you to build management programs using QMF.")
set (QPID_INSTALL_BINDIR bin CACHE STRING
- "Directory to install user executables")
+ "Directory to install user executables")
set (QPID_INSTALL_CONFDIR conf CACHE STRING
- "Directory to install configuration files")
+ "Directory to install configuration files")
set (QPID_INSTALL_SASLDIR conf CACHE STRING
- "Directory to install SASL configuration files")
+ "Directory to install SASL configuration files")
set (QPID_INSTALL_DATADIR conf CACHE STRING
- "Directory to install read-only arch.-independent data root")
+ "Directory to install read-only arch.-independent data root")
set (QPID_INSTALL_EXAMPLESDIR examples CACHE STRING
- "Directory to install programming examples in")
+ "Directory to install programming examples in")
set (QPID_INSTALL_DOCDIR docs CACHE STRING
- "Directory to install documentation")
+ "Directory to install documentation")
set (QPID_INSTALL_INCLUDEDIR include CACHE STRING
- "Directory to install programming header files")
+ "Directory to install programming header files")
set (QPID_INSTALL_LIBDIR bin CACHE STRING
- "Directory to install library files")
+ "Directory to install library files")
set (QPID_INSTALL_SBINDIR bin CACHE STRING
- "Directory to install system admin executables")
+ "Directory to install system admin executables")
set (QPID_INSTALL_TESTDIR bin CACHE STRING
- "Directory for test executables")
+ "Directory for test executables")
set (QPIDC_MODULE_DIR plugins/client CACHE STRING
- "Directory to load client plug-in modules from")
+ "Directory to load client plug-in modules from")
set (QPIDD_MODULE_DIR plugins/broker CACHE STRING
- "Directory to load broker plug-in modules from")
+ "Directory to load broker plug-in modules from")
-# function to get absolute path from a variable that may be relative to the
-# install prefix - For Windows we can never know the absolute install prefix
-# as this is decided at install time so this just returns the input path
+ # function to get absolute path from a variable that may be relative to the
+ # install prefix - For Windows we can never know the absolute install prefix
+ # as this is decided at install time so this just returns the input path
function(set_absolute_install_path var input)
set (${var} ${input} PARENT_SCOPE)
endfunction(set_absolute_install_path)
@@ -122,34 +122,34 @@ if (WIN32)
endif (WIN32)
if (UNIX)
-# function to get absolute path from a variable that may be relative to the
-# install prefix
-function(set_absolute_install_path var input)
- if (${input} MATCHES "^/.*")
- set (${var} ${input} PARENT_SCOPE)
- else ()
- set (${var} ${CMAKE_INSTALL_PREFIX}/${input} PARENT_SCOPE)
- endif ()
-endfunction(set_absolute_install_path)
+ # function to get absolute path from a variable that may be relative to the
+ # install prefix
+ function(set_absolute_install_path var input)
+ if (${input} MATCHES "^/.*")
+ set (${var} ${input} PARENT_SCOPE)
+ else ()
+ set (${var} ${CMAKE_INSTALL_PREFIX}/${input} PARENT_SCOPE)
+ endif ()
+ endfunction(set_absolute_install_path)
-# Figure out the default library suffix
-if (NOT DEFINED LIB_SUFFIX)
+ # Figure out the default library suffix
+ if (NOT DEFINED LIB_SUFFIX)
get_property(LIB64 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS)
if (${LIB64} STREQUAL "TRUE" AND ${CMAKE_SIZEOF_VOID_P} STREQUAL "8")
- set(LIB_SUFFIX 64)
+ set(LIB_SUFFIX 64)
else()
- set(LIB_SUFFIX "")
+ set(LIB_SUFFIX "")
endif()
-endif()
-
-# In rpm builds the build sets some variables:
-# CMAKE_INSTALL_PREFIX - this is a standard cmake variable
-# INCLUDE_INSTALL_DIR
-# LIB_INSTALL_DIR
-# SYSCONF_INSTALL_DIR
-# SHARE_INSTALL_DIR
-# So make these cached variables and the specific variables non cached and
-# derived from them.
+ endif()
+
+ # In rpm builds the build sets some variables:
+ # CMAKE_INSTALL_PREFIX - this is a standard cmake variable
+ # INCLUDE_INSTALL_DIR
+ # LIB_INSTALL_DIR
+ # SYSCONF_INSTALL_DIR
+ # SHARE_INSTALL_DIR
+ # So make these cached variables and the specific variables non cached and
+ # derived from them.
set (INCLUDE_INSTALL_DIR include CACHE PATH "Include file directory")
set (LIB_INSTALL_DIR lib${LIB_SUFFIX} CACHE PATH "Library object file directory")
set (SYSCONF_INSTALL_DIR etc CACHE PATH "System read only configuration directory")
@@ -160,12 +160,12 @@ endif()
set (QPID_COMPONENT_CLIENT runtime)
set (QPID_COMPONENT_COMMON runtime)
set (CPACK_COMPONENT_RUNTIME_DISPLAY_NAME
- "Items required to run broker and/or client programs")
+ "Items required to run broker and/or client programs")
set (QPID_COMPONENT_CLIENT_INCLUDE development)
set (QPID_COMPONENT_EXAMPLES development)
set (QPID_COMPONENT_QMF development)
set (CPACK_COMPONENT_DEVELOPMENT_DISPLAY_NAME
- "Items required to build new C++ Qpid client programs")
+ "Items required to build new C++ Qpid client programs")
# These are always relative to $CMAKE_INSTALL_PREFIX
set (QPID_INSTALL_BINDIR bin)
@@ -184,4 +184,20 @@ endif()
set_absolute_install_path (QPIDC_MODULE_DIR ${QPID_INSTALL_LIBDIR}/qpid/client) # Directory to load client plug-in modules from
set_absolute_install_path (QPIDD_MODULE_DIR ${QPID_INSTALL_LIBDIR}/qpid/daemon) # Directory to load broker plug-in modules from
+
+ #----
+ # Set RPATH so that installe executables can run without setting
+ # LD_LIBRARY_PATH or running ldconfig
+ # (based on http://www.cmake.org/Wiki/CMake_RPATH_handling)
+
+ # 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)
+
+ # The RPATH to be used when installing, but only if it's not a system directory
+ list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)
+ if("${isSystemDir}" STREQUAL "-1")
+ set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}")
+ endif("${isSystemDir}" STREQUAL "-1")
+
endif (UNIX)