1# ============================================================================ 2# Copyright (c) 2011-2012 University of Pennsylvania 3# Copyright (c) 2013-2016 Andreas Schuh 4# All rights reserved. 5# 6# See COPYING file for license information or visit 7# https://cmake-basis.github.io/download.html#license 8# ============================================================================ 9 10############################################################################## 11# @file BasisConfigSettings.cmake 12# @brief Sets basic variables used in CMake package configuration. 13# 14# It is suggested to use @c _CONFIG as suffix for variable names that are to be 15# substituted in the Config.cmake.in template file in order to distinguish 16# these variables from the build configuration. 17# 18# @ingroup BasisSettings 19############################################################################## 20 21# ============================================================================ 22# common configuration settings 23# ============================================================================ 24 25## @brief Include directories of dependencies. 26set (INCLUDE_DIRS_CONFIG) 27## @brief Directories of libraries this package depends on. 28set (LIBRARY_DIRS_CONFIG) 29 30## @brief Code to set cached <Pkg>_DIR variables in package configuration. 31set (DEPENDS_CONFIG) 32 33set (PKGS) 34foreach (DEP IN LISTS PROJECT_DEPENDS PROJECT_OPTIONAL_DEPENDS) 35 basis_tokenize_dependency ("${DEP}" PKG VER CMPS) 36 if (DEPENDS_${PKG}_DIR) 37 list (APPEND PKGS ${PKG}) 38 endif () 39endforeach () 40 41if (PKGS) 42 list (REMOVE_DUPLICATES PKGS) 43endif () 44 45if (PKGS) 46 set (DEPENDS_CONFIG "set (_depwarn \" set to different value than during the configuration of ${PROJECT_NAME}.\"" 47 " \" Using different versions of a dependency may cause inconsistencies!\")") 48endif () 49foreach (PKG IN LISTS PKGS) 50 list (APPEND DEPENDS_CONFIG 51 "# ${PKG}" 52 "if (DEPENDS_${PKG}_DIR)" 53 " if (NOT DEPENDS_${PKG}_DIR STREQUAL \"${DEPENDS_${PKG}_DIR}\")" 54 " message (WARNING DEPENDS_${PKG}_DIR \${_depwarn})" 55 " endif ()" 56 "else ()" 57 " basis_set_or_update_value (DEPENDS_${PKG}_DIR \"${DEPENDS_${PKG}_DIR}\")" 58 "endif ()" 59 ) 60endforeach () 61if (PKGS) 62 list (APPEND DEPENDS_CONFIG "unset (_depwarn)") 63endif () 64basis_join ("${DEPENDS_CONFIG}" "\n" DEPENDS_CONFIG) 65 66# ============================================================================ 67# build tree configuration settings 68# ============================================================================ 69 70if (BUILD_CONFIG_SETTINGS) 71 set (INSTALL_PREFIX_CONFIG "${PROJECT_BINARY_DIR}") 72 if (BUILD_EXAMPLE) 73 set (EXAMPLE_DIR_CONFIG "${PROJECT_EXAMPLE_DIR}") 74 else () 75 set (EXAMPLE_DIR_CONFIG) 76 endif () 77 set (INCLUDE_DIR_CONFIG "${BINARY_INCLUDE_DIR};${PROJECT_INCLUDE_DIR}") 78 set (LIBRARY_DIR_CONFIG "${BINARY_LIBRARY_DIR}") 79 set (PYTHONPATH_CONFIG "${BINARY_PYTHON_LIBRARY_DIR}") 80 set (JYTHONPATH_CONFIG "${BINARY_JYTHON_LIBRARY_DIR}") 81 set (PERL5LIB_CONFIG "${BINARY_PERL_LIBRARY_DIR}") 82 set (MATLABPATH_CONFIG "${BINARY_MATLAB_LIBRARY_DIR}") 83 set (BASHPATH_CONFIG "${BINARY_BASH_LIBRARY_DIR}") 84 set (MODULES_DIR_CONFIG "${BINARY_LIBCONF_DIR}") 85 return () 86endif () 87 88# ============================================================================ 89# installation configuration settings 90# ============================================================================ 91 92basis_get_relative_path (INSTALL_PREFIX_CONFIG "${CMAKE_INSTALL_PREFIX}/${INSTALL_CONFIG_DIR}" "${CMAKE_INSTALL_PREFIX}") 93 94## @brief Installation prefix. 95set (INSTALL_PREFIX_CONFIG "\${CMAKE_CURRENT_LIST_DIR}/${INSTALL_PREFIX_CONFIG}") 96## @brief Directory of example files. 97if (BUILD_EXAMPLE) 98 set (EXAMPLE_DIR_CONFIG "\${\${NS}INSTALL_PREFIX}/${INSTALL_EXAMPLE_DIR}") 99else () 100 set (EXAMPLE_DIR_CONFIG) 101endif () 102## @brief Include directories. 103set (INCLUDE_DIR_CONFIG "\${\${NS}INSTALL_PREFIX}/${INSTALL_INCLUDE_DIR}") 104## @brief Directory where libraries are located. 105set (LIBRARY_DIR_CONFIG "\${\${NS}INSTALL_PREFIX}/${INSTALL_LIBRARY_DIR}") 106## @brief Directory of Python modules. 107set (PYTHONPATH_CONFIG "\${\${NS}INSTALL_PREFIX}/${INSTALL_PYTHON_LIBRARY_DIR}") 108## @brief Directory of Jython modules. 109set (JYTHONPATH_CONFIG "\${\${NS}INSTALL_PREFIX}/${INSTALL_JYTHON_LIBRARY_DIR}") 110## @brief Directory of Perl modules. 111set (PERL5LIB_CONFIG "\${\${NS}INSTALL_PREFIX}/${INSTALL_PERL_LIBRARY_DIR}") 112## @brief Directory of MATLAB modules. 113set (MATLABPATH_CONFIG "\${\${NS}INSTALL_PREFIX}/${INSTALL_MATLAB_LIBRARY_DIR}") 114## @brief Directory of Bash modules. 115set (BASHPATH_CONFIG "\${\${NS}INSTALL_PREFIX}/${INSTALL_BASH_LIBRARY_DIR}") 116## @brief Directory of CMake package configuration files of project modules. 117set (MODULES_DIR_CONFIG "\${\${NS}INSTALL_PREFIX}/${INSTALL_CONFIG_DIR}") 118