summaryrefslogtreecommitdiff
path: root/cpp/BuildInstallSettings.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/BuildInstallSettings.cmake')
-rw-r--r--cpp/BuildInstallSettings.cmake316
1 files changed, 176 insertions, 140 deletions
diff --git a/cpp/BuildInstallSettings.cmake b/cpp/BuildInstallSettings.cmake
index 3da1d89bfe..dfa88022d9 100644
--- a/cpp/BuildInstallSettings.cmake
+++ b/cpp/BuildInstallSettings.cmake
@@ -1,25 +1,25 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-# Settings related to the Qpid build and install CMake/CTest/CPack procedure.
-# These are used by both the C++ and WCF components.
-
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+# Settings related to the Qpid build and install CMake/CTest/CPack procedure.
+# These are used by both the C++ and WCF components.
+
# Parse the version from QPID_VERSION.txt.
# Use the top level qpid/ file if we're in an SVN checkout, source dir otherwise.
if(EXISTS "${PROJECT_SOURCE_DIR}/../QPID_VERSION.txt")
@@ -31,121 +31,157 @@ else()
endif(EXISTS "${PROJECT_SOURCE_DIR}/../QPID_VERSION.txt")
string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\n" "\\1" QPID_VERSION_MAJOR "${QPID_VERSION}")
string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\n" "\\2" QPID_VERSION_MINOR "${QPID_VERSION}")
-
-# When doing installs, there are a number of components that the item can
-# be associated with. Since there may be different sets of components desired
-# for the various platforms, the component names are defined here. When
-# setting the COMPONENT in an install directive, use these to ensure that
-# the item is installed correctly.
-
-if (WIN32)
- # Install types; these defines the component sets that are installed.
- # Each component (below) indicates which of these install type(s) it is
- # included in. The user can refine the components at install time.
- set (CPACK_ALL_INSTALL_TYPES Broker Development Full)
-
- set (QPID_COMPONENT_COMMON Common)
- 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.")
-
- 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.")
-
- 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.")
-
- set (QPID_COMPONENT_CLIENT_INCLUDE ClientInclude)
- set (CPACK_COMPONENT_CLIENTINCLUDE_INSTALL_TYPES Development Full)
- set (CPACK_COMPONENT_CLIENTINCLUDE_DISPLAY_NAME
- "Client programming header files")
- set (CPACK_COMPONENT_CLIENTINCLUDE_DESCRIPTION
- "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.")
-
- set (QPID_COMPONENT_QMF QMF)
- set (CPACK_COMPONENT_QMF_INSTALL_TYPES Development Full)
- set (CPACK_COMPONENT_QMF_DISPLAY_NAME
- "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.")
-
- set (QPID_INSTALL_BINDIR bin CACHE STRING
- "Directory to install user executables")
- set (QPID_INSTALL_CONFDIR conf CACHE STRING
- "Directory to install configuration files")
- set (QPID_INSTALL_SASLDIR conf CACHE STRING
- "Directory to install SASL configuration files")
- set (QPID_INSTALL_DATADIR conf CACHE STRING
- "Directory to install read-only arch.-independent data root")
- set (QPID_INSTALL_EXAMPLESDIR examples CACHE STRING
- "Directory to install programming examples in")
- set (QPID_INSTALL_HTMLDIR docs/api/html CACHE STRING
- "Directory to install HTML documentation")
- set (QPID_INSTALL_INCLUDEDIR include CACHE STRING
- "Directory to install programming header files")
- set (QPID_INSTALL_LIBDIR bin CACHE STRING
- "Directory to install library files")
- set (QPID_INSTALL_SBINDIR bin CACHE STRING
- "Directory to install system admin executables")
- set (QPIDC_MODULE_DIR plugins/client CACHE STRING
- "Directory to load client plug-in modules from")
- set (QPIDD_MODULE_DIR plugins/broker CACHE STRING
- "Directory to load broker plug-in modules from")
-endif (WIN32)
-
-if (UNIX)
- set (QPID_COMPONENT_BROKER runtime)
- 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")
- 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")
-
- set (QPID_INSTALL_BINDIR bin CACHE STRING
- "Directory to install user executables")
- set (QPID_INSTALL_CONFDIR etc/qpid CACHE STRING
- "Directory to install configuration files")
- set (QPID_INSTALL_DATADIR share/qpid CACHE STRING
- "Directory to install read-only arch.-independent data root")
- set (QPID_INSTALL_SASLDIR etc/sasl2 CACHE STRING
- "Directory to install SASL configuration files")
- set (QPID_INSTALL_EXAMPLESDIR share/examples CACHE STRING
- "Directory to install programming examples in")
- set (QPID_INSTALL_HTMLDIR html CACHE STRING
- "Directory to install HTML documentation")
- set (QPID_INSTALL_INCLUDEDIR include CACHE STRING
- "Directory to install programming header files")
- set (QPID_INSTALL_LIBDIR lib CACHE STRING
- "Directory to install library files")
- set (QPID_INSTALL_SBINDIR sbin CACHE STRING
- "Directory to install system admin executables")
- set (QPIDC_MODULE_DIR ${QPID_INSTALL_LIBDIR}/qpid/client CACHE STRING
- "Directory to load client plug-in modules from")
- set (QPIDD_MODULE_DIR ${QPID_INSTALL_LIBDIR}/qpid/daemon CACHE STRING
- "Directory to load broker plug-in modules from")
- set (QPID_LIBEXEC_DIR libexec/qpid CACHE STRING
- "Directory for executables used by qpid libs")
- set (QPID_LOCALSTATE_DIR var CACHE STRING
- "Directory to store local state data")
- set (QPID_MAN_DIR man CACHE STRING
- "Directory to install manual files")
-endif (UNIX)
+set (QPID_VERSION_FULL "${QPID_VERSION_MAJOR}.${QPID_VERSION_MINOR}")
+
+# When doing installs, there are a number of components that the item can
+# be associated with. Since there may be different sets of components desired
+# for the various platforms, the component names are defined here. When
+# setting the COMPONENT in an install directive, use these to ensure that
+# the item is installed correctly.
+
+if (WIN32)
+ # Install types; these defines the component sets that are installed.
+ # Each component (below) indicates which of these install type(s) it is
+ # included in. The user can refine the components at install time.
+ set (CPACK_ALL_INSTALL_TYPES Broker Development Full)
+
+ set (QPID_COMPONENT_COMMON Common)
+ 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.")
+
+ 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.")
+
+ 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.")
+
+ set (QPID_COMPONENT_CLIENT_INCLUDE ClientInclude)
+ set (CPACK_COMPONENT_CLIENTINCLUDE_INSTALL_TYPES Development Full)
+ set (CPACK_COMPONENT_CLIENTINCLUDE_DISPLAY_NAME
+ "Client programming header files")
+ set (CPACK_COMPONENT_CLIENTINCLUDE_DESCRIPTION
+ "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.")
+
+ set (QPID_COMPONENT_QMF QMF)
+ set (CPACK_COMPONENT_QMF_INSTALL_TYPES Development Full)
+ set (CPACK_COMPONENT_QMF_DISPLAY_NAME
+ "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.")
+
+ set (QPID_INSTALL_BINDIR bin CACHE STRING
+ "Directory to install user executables")
+ set (QPID_INSTALL_CONFDIR conf CACHE STRING
+ "Directory to install configuration files")
+ set (QPID_INSTALL_SASLDIR conf CACHE STRING
+ "Directory to install SASL configuration files")
+ set (QPID_INSTALL_DATADIR conf CACHE STRING
+ "Directory to install read-only arch.-independent data root")
+ set (QPID_INSTALL_EXAMPLESDIR examples CACHE STRING
+ "Directory to install programming examples in")
+ set (QPID_INSTALL_DOCDIR docs CACHE STRING
+ "Directory to install documentation")
+ set (QPID_INSTALL_INCLUDEDIR include CACHE STRING
+ "Directory to install programming header files")
+ set (QPID_INSTALL_LIBDIR bin CACHE STRING
+ "Directory to install library files")
+ set (QPID_INSTALL_SBINDIR bin CACHE STRING
+ "Directory to install system admin executables")
+ set (QPID_INSTALL_TESTDIR bin CACHE STRING
+ "Directory for test executables")
+ set (QPIDC_MODULE_DIR plugins/client CACHE STRING
+ "Directory to load client plug-in modules from")
+ set (QPIDD_MODULE_DIR plugins/broker CACHE STRING
+ "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(set_absolute_install_path var input)
+ set (${var} ${input} PARENT_SCOPE)
+ endfunction(set_absolute_install_path)
+
+ set (INCLUDE_INSTALL_DIR ${QPID_INSTALL_INCLUDEDIR})
+ set (LIB_INSTALL_DIR ${QPID_INSTALL_INCLUDEDIR})
+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)
+
+# 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)
+ else()
+ 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.
+ 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")
+ set (SHARE_INSTALL_DIR share CACHE PATH "Shared read only data directory")
+ set (DOC_INSTALL_DIR ${SHARE_INSTALL_DIR}/doc/${CMAKE_PROJECT_NAME}-${QPID_VERSION_FULL} CACHE PATH "Shared read only data directory")
+
+ set (QPID_COMPONENT_BROKER runtime)
+ 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")
+ 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")
+
+ # These are always relative to $CMAKE_INSTALL_PREFIX
+ set (QPID_INSTALL_BINDIR bin)
+ set (QPID_INSTALL_SBINDIR sbin)
+ set (QPID_INSTALL_TESTDIR libexec/qpid/tests) # Directory for test executables
+ set (QPID_INSTALL_CONFDIR ${SYSCONF_INSTALL_DIR}/qpid)
+ set (QPID_INSTALL_SASLDIR ${SYSCONF_INSTALL_DIR}/sasl2)
+ set (QPID_INSTALL_DATADIR ${SHARE_INSTALL_DIR}/qpid)
+ set (QPID_INSTALL_EXAMPLESDIR ${SHARE_INSTALL_DIR}/examples)
+ set (QPID_INSTALL_DOCDIR ${DOC_INSTALL_DIR}) # Directory to install documentation
+ set (QPID_INSTALL_INCLUDEDIR ${INCLUDE_INSTALL_DIR})
+ set (QPID_INSTALL_LIBDIR ${LIB_INSTALL_DIR})
+ set (QPID_LOCALSTATE_DIR var) # Directory to store local state data
+ set (QPID_MAN_DIR man) # Directory to install manual files
+ set (QPID_INSTALL_SYSTEMDDIR usr/lib/systemd/system) # Systemd service files
+
+ 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
+endif (UNIX)