# # 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") file(READ "${PROJECT_SOURCE_DIR}/../QPID_VERSION.txt" QPID_VERSION) elseif (EXISTS "${PROJECT_SOURCE_DIR}/QPID_VERSION.txt") file(READ "${PROJECT_SOURCE_DIR}/QPID_VERSION.txt" QPID_VERSION) else() message(FATAL_ERROR "Cannot find QPID_VERSION.txt") 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}") 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_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)