BASIS  r3148
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_&lt;*&gt;_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