DirectoriesSettings.cmake
Go to the documentation of this file.
00001 ############################################################################## 00002 # @file DirectoriesSettings.cmake 00003 # @brief CMake variables of project directories. 00004 # 00005 # This file configures the project directory structure as defined by the 00006 # Filesystem Hierarchy Standard for BASIS packages. 00007 # 00008 # @sa https://www.cbica.upenn.edu/sbia/software/basis/standard/fhs/ 00009 # 00010 # The project must follow the directory structure as defined by the 00011 # <tt>PROJECT_<*>_DIR</tt> variables. 00012 # 00013 # Ideally, when changing the name of one of these directories, only the 00014 # directory structure of the template needs to be updated. The BASIS CMake 00015 # functions should not be required to change as they are supposed to use these 00016 # variables instead of the actual names. Any change of the project directory 00017 # structure has to be made with care, however, and backwards compatibility to 00018 # previous releases of BASIS shall be maintained. Consider the use of the 00019 # @c TEMPLATE_VERSION if required. 00020 # 00021 # @note The documentation of the variables can be found in Directories.cmake.in. 00022 # 00023 # Copyright (c) 2011, 2012, 2013 University of Pennsylvania. All rights reserved.<br /> 00024 # See https://www.cbica.upenn.edu/sbia/software/license.html or COPYING file. 00025 # 00026 # Contact: SBIA Group <sbia-software at uphs.upenn.edu> 00027 ############################################################################## 00028 00029 00030 # ============================================================================ 00031 # root directories of top-level project 00032 # ============================================================================ 00033 00034 if (NOT PROJECT_IS_MODULE) 00035 set (BASIS_PROJECT_SOURCE_DIR "${PROJECT_SOURCE_DIR}") 00036 set (BASIS_PROJECT_BINARY_DIR "${PROJECT_BINARY_DIR}") 00037 endif () 00038 00039 # ============================================================================ 00040 # local variables 00041 # ============================================================================ 00042 00043 if (BUNDLE_NAME AND NOT BUNDLE_NAME MATCHES "${PROJECT_PACKAGE}") 00044 set (_BUNDLE "/${BUNDLE_NAME}") 00045 else () 00046 set (_BUNDLE) 00047 endif () 00048 if (PROJECT_PACKAGE_VENDOR) 00049 set (_VENDOR "/${PROJECT_PACKAGE_VENDOR}") 00050 else () 00051 set (_VENDOR) 00052 endif () 00053 set (_PACKAGE "/${PROJECT_PACKAGE}") 00054 if (PROJECT_IS_SUBPROJECT) 00055 set (_MODULE "/${PROJECT_NAME}") 00056 else () 00057 set (_MODULE) 00058 endif () 00059 if (UNIX) 00060 string (TOLOWER "${_VENDOR}" _VENDOR) 00061 string (TOLOWER "${_PACKAGE}" _PACKAGE) 00062 string (TOLOWER "${_MODULE}" _MODULE) 00063 string (TOLOWER "${_BUNDLE}" _BUNDLE) 00064 endif () 00065 00066 # ============================================================================ 00067 # directories of site packages of script interpreters 00068 # ============================================================================ 00069 00070 # ---------------------------------------------------------------------------- 00071 set (PYTHON_SITELIB) 00072 if (PYTHON_EXECUTABLE) 00073 execute_process ( 00074 COMMAND "${PYTHON_EXECUTABLE}" "${BASIS_MODULE_PATH}/get_python_lib.py" 00075 RESULT_VARIABLE _RV 00076 OUTPUT_VARIABLE PYTHON_SITELIB 00077 OUTPUT_STRIP_TRAILING_WHITESPACE 00078 ERROR_QUIET 00079 ) 00080 if (NOT _RV EQUAL 0) 00081 set (PYTHON_SITELIB) 00082 endif () 00083 endif () 00084 # ---------------------------------------------------------------------------- 00085 set (JYTHON_SITELIB) 00086 if (JYTHON_EXECUTABLE) 00087 execute_process ( 00088 COMMAND "${JYTHON_EXECUTABLE}" "${BASIS_MODULE_PATH}/get_python_lib.py" 00089 RESULT_VARIABLE _RV 00090 OUTPUT_VARIABLE JYTHON_SITELIB 00091 OUTPUT_STRIP_TRAILING_WHITESPACE 00092 ERROR_QUIET 00093 ) 00094 if (NOT _RV EQUAL 0) 00095 set (JYTHON_SITELIB) 00096 endif () 00097 endif () 00098 # ---------------------------------------------------------------------------- 00099 # Perl 00100 find_package (PerlLibs QUIET) 00101 if (NOT PerlLibs_FOUND) 00102 set (PERL_SITELIB) 00103 endif () 00104 00105 # ============================================================================ 00106 # source tree 00107 # ============================================================================ 00108 00109 set (PROJECT_CODE_DIR "${PROJECT_SOURCE_DIR}/src") 00110 set (PROJECT_CONFIG_DIR "${PROJECT_SOURCE_DIR}/config") 00111 set (PROJECT_DATA_DIR "${PROJECT_SOURCE_DIR}/data") 00112 set (PROJECT_DOC_DIR "${PROJECT_SOURCE_DIR}/doc") 00113 set (PROJECT_EXAMPLE_DIR "${PROJECT_SOURCE_DIR}/example") 00114 set (PROJECT_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/include") 00115 set (PROJECT_LIBRARY_DIR "${PROJECT_SOURCE_DIR}/lib") 00116 set (PROJECT_MODULES_DIR "${PROJECT_SOURCE_DIR}/modules") 00117 set (PROJECT_TESTING_DIR "${PROJECT_SOURCE_DIR}/test") 00118 00119 set (PROJECT_SUBDIRS) # default subdirs are added to list in basis_project_impl 00120 00121 # ============================================================================ 00122 # testing tree 00123 # ============================================================================ 00124 00125 set (TESTING_OUTPUT_DIR "${BASIS_PROJECT_BINARY_DIR}/Testing/Temporary${_MODULE}") 00126 set (TESTING_RUNTIME_DIR "${BASIS_PROJECT_BINARY_DIR}/Testing/bin${_MODULE}") 00127 set (TESTING_LIBEXEC_DIR "${BASIS_PROJECT_BINARY_DIR}/Testing/lib${_MODULE}") 00128 set (TESTING_LIBRARY_DIR "${BASIS_PROJECT_BINARY_DIR}/Testing/lib${_MODULE}") 00129 set (TESTING_ARCHIVE_DIR "${BASIS_PROJECT_BINARY_DIR}/Testing/lib${_MODULE}") 00130 00131 foreach (_L IN ITEMS python jython perl matlab bash) 00132 string (TOUPPER "${_L}" _U) 00133 set (TESTING_${_U}_LIBRARY_DIR "${BASIS_PROJECT_BINARY_DIR}/Testing/lib/${_L}") 00134 endforeach () 00135 00136 # ============================================================================ 00137 # build tree 00138 # ============================================================================ 00139 00140 # set directories corresponding to the source tree directories 00141 foreach (_P CODE CONFIG DATA DOC EXAMPLE MODULES TESTING) 00142 basis_get_relative_path (_D "${PROJECT_SOURCE_DIR}" "${PROJECT_${_P}_DIR}") 00143 set (BINARY_${_P}_DIR "${PROJECT_BINARY_DIR}/${_D}") 00144 endforeach () 00145 00146 basis_get_relative_path (_D "${PROJECT_SOURCE_DIR}" "${PROJECT_INCLUDE_DIR}") 00147 set (BINARY_INCLUDE_DIR "${BASIS_PROJECT_BINARY_DIR}/${_D}") 00148 00149 set (BINARY_RUNTIME_DIR "${BASIS_PROJECT_BINARY_DIR}/bin") 00150 set (BINARY_LIBEXEC_DIR "${BASIS_PROJECT_BINARY_DIR}/lib${_MODULE}") 00151 set (BINARY_LIBRARY_DIR "${BASIS_PROJECT_BINARY_DIR}/lib${_MODULE}") 00152 set (BINARY_ARCHIVE_DIR "${BASIS_PROJECT_BINARY_DIR}/lib${_MODULE}") 00153 00154 foreach (_L IN ITEMS python jython perl matlab bash) 00155 string (TOUPPER "${_L}" _U) 00156 set (BINARY_${_U}_LIBRARY_DIR "${BASIS_PROJECT_BINARY_DIR}/lib/${_L}") 00157 endforeach () 00158 00159 # set default CMake variables which are, however, not used by BASIS 00160 set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${BINARY_RUNTIME_DIR}") 00161 set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${BINARY_LIBRARY_DIR}") 00162 set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${BINARY_ARCHIVE_DIR}") 00163 00164 # ============================================================================ 00165 # install tree 00166 # ============================================================================ 00167 00168 # Attention: In order for CPack to work correctly, the destination paths have 00169 # to be given relative to CMAKE_INSTALL_PREFIX. Therefore, this 00170 # prefix must be excluded from the following paths! 00171 00172 # ---------------------------------------------------------------------------- 00173 # default installation prefix 00174 string (REGEX REPLACE "[\\/]+$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") 00175 # change default installation prefix used by CMake 00176 if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR NOT CMAKE_INSTALL_PREFIX) 00177 # <ProgramFilesDir>/<Vendor>/<Package>[-<version>] 00178 if (WIN32) 00179 get_filename_component (CMAKE_INSTALL_PREFIX "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion;ProgramFilesDir]" ABSOLUTE) 00180 if (NOT CMAKE_INSTALL_PREFIX OR CMAKE_INSTALL_PREFIX MATCHES "/registry") 00181 set (CMAKE_INSTALL_PREFIX "C:/Program Files") 00182 endif () 00183 set (CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}${_VENDOR}${_PACKAGE}") 00184 if (NOT PROJECT_VERSION MATCHES "^0\\.0\\.0$") 00185 set (CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}-${PROJECT_VERSION}") 00186 endif () 00187 # /opt/<vendor>/<package>[-<version>] 00188 else () 00189 set (CMAKE_INSTALL_PREFIX "/opt${_VENDOR}${_PACKAGE}") 00190 if (NOT PROJECT_VERSION MATCHES "^0\\.0\\.0$") 00191 set (CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}-${PROJECT_VERSION}") 00192 endif () 00193 endif () 00194 endif () 00195 set (CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE PATH "Installation prefix." FORCE) 00196 00197 # ---------------------------------------------------------------------------- 00198 # installation scheme - non-cached, can be preset using -D option of CMake 00199 set (BASIS_INSTALL_SCHEME "default" CACHE STRING "default, opt, usr, win") 00200 set_property(CACHE BASIS_INSTALL_SCHEME PROPERTY STRINGS default opt usr win) 00201 mark_as_advanced (BASIS_INSTALL_SCHEME) 00202 00203 if (BASIS_INSTALL_SCHEME MATCHES "default") 00204 string (TOLOWER "${CMAKE_INSTALL_PREFIX}" CMAKE_INSTALL_PREFIX_L) 00205 string (TOLOWER "${BUNDLE_NAME}" BUNDLE_NAME_L) 00206 string (TOUPPER "${BUNDLE_NAME}" BUNDLE_NAME_U) 00207 if (WIN32) 00208 set (BASIS_INSTALL_SCHEME win) 00209 elseif (NOT _BUNDLE AND CMAKE_INSTALL_PREFIX_L MATCHES "/(.*[_-])?(${PROJECT_NAME}|${PROJECT_NAME_L}|${PROJECT_NAME_U})[_-]?") # e.g. /opt/<package>[-<version>] 00210 set (BASIS_INSTALL_SCHEME opt) 00211 elseif (_BUNDLE AND CMAKE_INSTALL_PREFIX_L MATCHES "/(.*[_-])?(${BUNDLE_NAME}|${BUNDLE_NAME_L}|${BUNDLE_NAME_U})[_-]?") # e.g. /opt/<bundle>[-<version>] 00212 set (BASIS_INSTALL_SCHEME opt) 00213 else () 00214 set (BASIS_INSTALL_SCHEME usr) 00215 endif () 00216 unset (CMAKE_INSTALL_PREFIX_L) 00217 unset (BUNDLE_NAME_L) 00218 unset (BUNDLE_NAME_U) 00219 endif () 00220 00221 if (NOT BASIS_INSTALL_SCHEME MATCHES "^(opt|usr|win|bundle)$") 00222 message (FATAL_ERROR "Invalid BASIS_INSTALL_SCHEME! Valid values are 'default', 'opt', 'usr', 'win'.") 00223 endif () 00224 00225 # ---------------------------------------------------------------------------- 00226 # installation directories 00227 if (BASIS_INSTALL_SCHEME MATCHES "win") # e.g., CMAKE_INSTALL_PREFIX := <ProgramFilesDir>/<Vendor>/<Package> 00228 00229 # -------------------------------------------------------------------------- 00230 # bundled dependency 00231 if (_BUNDLE) 00232 # package configuration 00233 set (INSTALL_CONFIG_DIR "CMake") 00234 # executables 00235 set (INSTALL_RUNTIME_DIR "Lib${_PACKAGE}${_MODULE}") 00236 set (INSTALL_LIBEXEC_DIR "Lib${_PACKAGE}${_MODULE}") 00237 # libraries 00238 set (INSTALL_INCLUDE_DIR "Include") 00239 set (INSTALL_LIBRARY_DIR "Lib${_PACKAGE}${_MODULE}") 00240 set (INSTALL_ARCHIVE_DIR "Lib${_PACKAGE}${_MODULE}") 00241 # shared data 00242 set (INSTALL_SHARE_DIR "Share${_PACKAGE}${_MODULE}") 00243 set (INSTALL_DATA_DIR "Data${_PACKAGE}${_MODULE}") 00244 set (INSTALL_EXAMPLE_DIR "Example${_PACKAGE}${_MODULE}") 00245 # documentation 00246 set (INSTALL_DOC_DIR "Doc${_PACKAGE}${_MODULE}") 00247 set (INSTALL_MAN_DIR) 00248 set (INSTALL_TEXINFO_DIR) 00249 # -------------------------------------------------------------------------- 00250 # main package 00251 else () 00252 # package configuration 00253 set (INSTALL_CONFIG_DIR "CMake") 00254 # executables 00255 set (INSTALL_RUNTIME_DIR "Bin") 00256 set (INSTALL_LIBEXEC_DIR "Lib${_MODULE}") 00257 # libraries 00258 set (INSTALL_INCLUDE_DIR "Include") 00259 set (INSTALL_LIBRARY_DIR "Lib${_MODULE}") 00260 set (INSTALL_ARCHIVE_DIR "Lib${_MODULE}") 00261 # shared data 00262 set (INSTALL_SHARE_DIR "Share${_MODULE}") 00263 set (INSTALL_DATA_DIR "Data${_MODULE}") 00264 set (INSTALL_EXAMPLE_DIR "Example${_MODULE}") 00265 # documentation 00266 set (INSTALL_DOC_DIR "Doc${_MODULE}") 00267 set (INSTALL_MAN_DIR) 00268 set (INSTALL_TEXINFO_DIR) 00269 endif () 00270 00271 elseif (BASIS_INSTALL_SCHEME MATCHES "usr") # e.g., CMAKE_INSTALL_PREFIX := /usr/local 00272 00273 # -------------------------------------------------------------------------- 00274 # bundled dependency 00275 if (_BUNDLE) 00276 # package configuration 00277 set (INSTALL_CONFIG_DIR "lib/cmake${_BUNDLE}") 00278 # executables 00279 set (INSTALL_RUNTIME_DIR "lib${_BUNDLE}${_PACKAGE}${_MODULE}") 00280 set (INSTALL_LIBEXEC_DIR "lib${_BUNDLE}${_PACKAGE}${_MODULE}") 00281 # libraries 00282 set (INSTALL_INCLUDE_DIR "include") 00283 set (INSTALL_LIBRARY_DIR "lib${_BUNDLE}${_PACKAGE}${_MODULE}") 00284 set (INSTALL_ARCHIVE_DIR "lib${_BUNDLE}${_PACKAGE}${_MODULE}") 00285 # shared data 00286 set (INSTALL_SHARE_DIR "share${_BUNDLE}${_PACKAGE}${_MODULE}") 00287 set (INSTALL_DATA_DIR "share${_BUNDLE}${_PACKAGE}${_MODULE}/data") 00288 set (INSTALL_EXAMPLE_DIR "share${_BUNDLE}${_PACKAGE}${_MODULE}/example") 00289 # documentation 00290 set (INSTALL_DOC_DIR "doc${_BUNDLE}${_PACKAGE}${_MODULE}") 00291 set (INSTALL_MAN_DIR "share${_BUNDLE}${_PACKAGE}${_MODULE}/man") 00292 set (INSTALL_TEXINFO_DIR "share${_BUNDLE}${_PACKAGE}${_MODULE}/info") 00293 # -------------------------------------------------------------------------- 00294 # main package 00295 else () 00296 # package configuration 00297 set (INSTALL_CONFIG_DIR "lib/cmake${_PACKAGE}") 00298 # executables 00299 set (INSTALL_RUNTIME_DIR "bin") 00300 set (INSTALL_LIBEXEC_DIR "lib${_PACKAGE}${_MODULE}") 00301 # libraries 00302 set (INSTALL_INCLUDE_DIR "include") 00303 set (INSTALL_LIBRARY_DIR "lib${_PACKAGE}${_MODULE}") 00304 set (INSTALL_ARCHIVE_DIR "lib${_PACKAGE}${_MODULE}") 00305 # shared data 00306 set (INSTALL_SHARE_DIR "share${_PACKAGE}${_MODULE}") 00307 set (INSTALL_DATA_DIR "share${_PACKAGE}${_MODULE}/data") 00308 set (INSTALL_EXAMPLE_DIR "share${_PACKAGE}${_MODULE}/example") 00309 # documentation 00310 set (INSTALL_DOC_DIR "doc${_PACKAGE}${_MODULE}") 00311 set (INSTALL_MAN_DIR "share/man") 00312 set (INSTALL_TEXINFO_DIR "share/info") 00313 endif () 00314 00315 else () # e.g., CMAKE_INSTALL_PREFIX := /opt/<vendor>/<package> 00316 00317 # -------------------------------------------------------------------------- 00318 # bundled dependency 00319 if (_BUNDLE) 00320 # package configuration 00321 set (INSTALL_CONFIG_DIR "lib/cmake${_BUNDLE}") 00322 # executables 00323 set (INSTALL_RUNTIME_DIR "lib${_PACKAGE}${_MODULE}") 00324 set (INSTALL_LIBEXEC_DIR "lib${_PACKAGE}${_MODULE}") 00325 # libraries 00326 set (INSTALL_INCLUDE_DIR "include") 00327 set (INSTALL_LIBRARY_DIR "lib${_PACKAGE}${_MODULE}") 00328 set (INSTALL_ARCHIVE_DIR "lib${_PACKAGE}${_MODULE}") 00329 # shared data 00330 set (INSTALL_SHARE_DIR "share${_PACKAGE}${_MODULE}") 00331 set (INSTALL_DATA_DIR "share${_PACKAGE}${_MODULE}/data") 00332 set (INSTALL_EXAMPLE_DIR "share${_PACKAGE}${_MODULE}/example") 00333 # documentation 00334 set (INSTALL_DOC_DIR "doc${_PACKAGE}${_MODULE}") 00335 set (INSTALL_MAN_DIR "share${_PACKAGE}${_MODULE}/man") 00336 set (INSTALL_TEXINFO_DIR "share${_PACKAGE}${_MODULE}/info") 00337 else () 00338 # package configuration 00339 set (INSTALL_CONFIG_DIR "lib/cmake${_PACKAGE}") 00340 # executables 00341 set (INSTALL_RUNTIME_DIR "bin") 00342 set (INSTALL_LIBEXEC_DIR "lib${_MODULE}") 00343 # libraries 00344 set (INSTALL_INCLUDE_DIR "include") 00345 set (INSTALL_LIBRARY_DIR "lib${_MODULE}") 00346 set (INSTALL_ARCHIVE_DIR "lib${_MODULE}") 00347 # shared data 00348 set (INSTALL_SHARE_DIR "share${_MODULE}") 00349 set (INSTALL_DATA_DIR "share${_MODULE}/data") 00350 set (INSTALL_EXAMPLE_DIR "share${_MODULE}/example") 00351 # documentation 00352 set (INSTALL_DOC_DIR "doc${_MODULE}") 00353 set (INSTALL_MAN_DIR "man") 00354 set (INSTALL_TEXINFO_DIR "info") 00355 endif () 00356 00357 endif () 00358 00359 # ---------------------------------------------------------------------------- 00360 # private script libraries 00361 # 00362 # The modules of script libraries which are only intended for use by this 00363 # package itself are installed within the package own installation 00364 # prefix/subdirectories. 00365 if (BASIS_INSTALL_SCHEME MATCHES "win") 00366 00367 foreach (_L IN ITEMS Python Jython Perl Matlab Bash) 00368 string (TOUPPER "${_L}" _U) 00369 if (BASIS_COMPILE_SCRIPTS) 00370 if (_U MATCHES "PERL") 00371 set (INSTALL_${_U}_LIBRARY_DIR "Lib/Perl5") 00372 elseif (NOT _U MATCHES "MATLAB|BASH" AND ${_U}_VERSION_MAJOR AND DEFINED ${_U}_VERSION_MINOR) 00373 set (INSTALL_${_U}_LIBRARY_DIR "Lib/${_L}${${_U}_VERSION_MAJOR}.${${_U}_VERSION_MINOR}") 00374 else () 00375 set (INSTALL_${_U}_LIBRARY_DIR "Lib/${_L}") 00376 endif () 00377 else () 00378 set (INSTALL_${_U}_LIBRARY_DIR "Lib/${_L}") 00379 endif () 00380 endforeach () 00381 00382 elseif (BASIS_INSTALL_SCHEME MATCHES "usr") 00383 00384 if (_BUNDLE) 00385 set (_P "${_BUNDLE}") 00386 else () 00387 set (_P "${_PACKAGE}") 00388 endif () 00389 00390 foreach (_L IN ITEMS python jython perl matlab bash) 00391 string (TOUPPER "${_L}" _U) 00392 if (BASIS_COMPILE_SCRIPTS) 00393 if (_U MATCHES "PERL") 00394 set (INSTALL_${_U}_LIBRARY_DIR "lib${_P}/perl5") 00395 elseif (NOT _U MATCHES "MATLAB|BASH" AND ${_U}_VERSION_MAJOR AND DEFINED ${_U}_VERSION_MINOR) 00396 set (INSTALL_${_U}_LIBRARY_DIR "lib${_P}/${_L}${${_U}_VERSION_MAJOR}.${${_U}_VERSION_MINOR}") 00397 else () 00398 set (INSTALL_${_U}_LIBRARY_DIR "lib${_P}/${_L}") 00399 endif () 00400 else () 00401 set (INSTALL_${_U}_LIBRARY_DIR "lib${_P}/${_L}") 00402 endif () 00403 endforeach () 00404 00405 else () # opt 00406 00407 foreach (_L IN ITEMS python jython perl matlab bash) 00408 string (TOUPPER "${_L}" _U) 00409 if (BASIS_COMPILE_SCRIPTS) 00410 if (_U MATCHES "PERL") 00411 set (INSTALL_${_U}_LIBRARY_DIR "lib/perl5") 00412 elseif (NOT _U MATCHES "MATLAB|BASH" AND ${_U}_VERSION_MAJOR AND DEFINED ${_U}_VERSION_MINOR) 00413 set (INSTALL_${_U}_LIBRARY_DIR "lib/${_L}${${_U}_VERSION_MAJOR}.${${_U}_VERSION_MINOR}") 00414 else () 00415 set (INSTALL_${_U}_LIBRARY_DIR "lib/${_L}") 00416 endif () 00417 else () 00418 set (INSTALL_${_U}_LIBRARY_DIR "lib/${_L}") 00419 endif () 00420 endforeach () 00421 00422 endif () 00423 00424 # ---------------------------------------------------------------------------- 00425 # public script libraries 00426 # 00427 # The modules of script libraries which are intended for use by external packages 00428 # are installed in the respective installation directories of the particular 00429 # interpreter. For example, in case of Python, the public Python modules are 00430 # installed in the site-packages directory of the found PYTHON_EXECUTABLE. 00431 # In particular the modules in the PROJECT_LIBRARY_DIR are intended for use 00432 # by external packages. Other modules added using the basis_add_script_library() 00433 # and basis_add_script() CMake functions are by default considered to be intended 00434 # for internal use by the other modules and executable scripts. 00435 # 00436 # Note: For those interpreters of scripting languages which by themselves do 00437 # not define a common installation directory for site packages, the 00438 # installation directory for public modules may be identical to the 00439 # one for private modules. Moreover, the user has the option to disable 00440 # the installation of public modules in the system default site directories 00441 # in order to prevent the installation of files outside the CMAKE_INSTALL_PREFIX. 00442 00443 # reset directories if BASIS_INSTALL_SITE_PACKAGES option has been changed 00444 if (DEFINED _BASIS_INSTALL_SITE_PACKAGES) 00445 set (_RESET FALSE) 00446 if (BASIS_INSTALL_SITE_PACKAGES AND NOT _BASIS_INSTALL_SITE_PACKAGES) 00447 set (_RESET TRUE) 00448 elseif (NOT BASIS_INSTALL_SITE_PACKAGES AND _BASIS_INSTALL_SITE_PACKAGES) 00449 set (_RESET TRUE) 00450 endif () 00451 if (_RESET) 00452 foreach (_L IN ITEMS PYTHON JYTHON PERL) 00453 # do not reset if BASIS_INSTALL_SITE_PACKAGES is OFF and path is already relative 00454 if (IS_ABSOLUTE "${INSTALL_${_L}_SITE_DIR}" OR BASIS_INSTALL_SITE_PACKAGES) 00455 basis_update_value (INSTALL_${_L}_SITE_DIR) 00456 endif () 00457 endforeach () 00458 endif () 00459 unset (_RESET) 00460 endif () 00461 set (_BASIS_INSTALL_SITE_PACKAGES "${BASIS_INSTALL_SITE_PACKAGES}" CACHE INTERNAL "Previous value of BASIS_INSTALL_SITE_PACKAGES option." FORCE) 00462 00463 # try to determine default installation directories 00464 if (BASIS_INSTALL_SITE_PACKAGES) 00465 # Python 00466 if (NOT INSTALL_PYTHON_SITE_DIR) 00467 set (INSTALL_PYTHON_SITE_DIR "${PYTHON_SITELIB}") 00468 endif () 00469 # Jython 00470 if (NOT INSTALL_JYTHON_SITE_DIR) 00471 set (INSTALL_JYTHON_SITE_DIR "${JYTHON_SITELIB}") 00472 endif () 00473 # Perl 00474 if (NOT INSTALL_PERL_SITE_DIR) 00475 set (INSTALL_PERL_SITE_DIR "${PERL_SITELIB}") 00476 endif () 00477 endif () 00478 00479 # if it failed to determine the default installation directories by executing some 00480 # code or command, use the directories used for private libraries instead 00481 foreach (_U IN ITEMS PYTHON JYTHON PERL MATLAB BASH) 00482 if (NOT INSTALL_${_U}_SITE_DIR) 00483 set (INSTALL_${_U}_SITE_DIR "${INSTALL_${_U}_LIBRARY_DIR}") 00484 endif () 00485 endforeach () 00486 00487 # cache directories - also so users can edit them 00488 foreach (_L IN ITEMS Python Jython Perl MATLAB Bash) 00489 string (TOUPPER "${_L}" _U) 00490 set (INSTALL_${_U}_SITE_DIR "${INSTALL_${_U}_SITE_DIR}" CACHE PATH "Installation directory for public ${_L} modules." FORCE) 00491 mark_as_advanced (INSTALL_${_U}_SITE_DIR) 00492 endforeach () 00493 00494 # ============================================================================ 00495 # top-level references 00496 # ============================================================================ 00497 00498 if (NOT PROJECT_IS_MODULE) 00499 # build tree 00500 foreach (_D CODE CONFIG DATA DOC EXAMPLE INCLUDE MODULES TESTING RUNTIME LIBEXEC LIBRARY ARCHIVE) 00501 set (BASIS_BINARY_${_D}_DIR "${BINARY_${_D}_DIR}") 00502 endforeach () 00503 foreach (_L IN ITEMS PYTHON JYTHON PERL MATLAB BASH) 00504 set (BASIS_BINARY_${_L}_LIBRARY_DIR "${BINARY_${_L}_LIBRARY_DIR}") 00505 endforeach () 00506 # installation 00507 foreach (_D IN ITEMS CONFIG INCLUDE RUNTIME LIBEXEC LIBRARY ARCHIVE DATA DOC EXAMPLE SHARE) 00508 set (BASIS_INSTALL_${_D}_DIR "${INSTALL_${_D}_DIR}") 00509 endforeach () 00510 foreach (_L IN ITEMS PYTHON JYTHON PERL MATLAB BASH) 00511 set (BASIS_INSTALL_${_L}_LIBRARY_DIR "${INSTALL_${_L}_LIBRARY_DIR}") 00512 endforeach () 00513 endif () 00514 00515 # ============================================================================ 00516 # clean up 00517 # ============================================================================ 00518 00519 unset (_D) 00520 unset (_L) 00521 unset (_U) 00522 unset (_P) 00523 unset (_RV) 00524 unset (_VENDOR) 00525 unset (_PACKAGE) 00526 unset (_MODULE) 00527 unset (_DEFAULT_SCHEME) 00528 00529 00530 ## @} 00531 # end of Doxygen group