BASIS  r3148
BasisSettings.cmake
Go to the documentation of this file.
00001 ##############################################################################
00002 # @file  BasisSettings.cmake
00003 # @brief Default project-independent settings.
00004 #
00005 # This module defines global CMake constants and variables which are used
00006 # by the BASIS CMake functions and macros. Hence, these values can be used
00007 # to configure the behavior of these functions to some extent without the
00008 # need to modify the functions themselves.
00009 #
00010 # @note As this file also sets the CMake policies to be used, it has to
00011 #       be included using the @c NO_POLICY_SCOPE in order for these policies
00012 #       to take effect also in the including file and its subdirectories.
00013 #
00014 # @attention Be careful when caching any of the variables. Usually, this
00015 #            file is included in the root CMake configuration file of the
00016 #            project which may also be a module of another project and hence
00017 #            may overwrite this project's settings.
00018 #
00019 # @attention Keep in mind that this file is included before any other
00020 #            BASIS module. Further, project-specific information such as
00021 #            the project name are not defined yet.
00022 #
00023 # Copyright (c) 2011, 2012 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 # @ingroup BasisSettings
00029 ##############################################################################
00030 
00031 ## @addtogroup BasisSettings
00032 # @{
00033 
00034 
00035 # ============================================================================
00036 # required modules
00037 # ============================================================================
00038 
00039 include ("${CMAKE_CURRENT_LIST_DIR}/CommonTools.cmake")
00040 
00041 # ============================================================================
00042 # CMake version and policies
00043 # ============================================================================
00044 
00045 cmake_minimum_required (VERSION 2.8.4)
00046 
00047 # Add policies introduced with CMake versions newer than the one specified
00048 # above. These policies would otherwise trigger a policy not set warning by
00049 # newer CMake versions.
00050 
00051 if (POLICY CMP0016)
00052   cmake_policy (SET CMP0016 NEW)
00053 endif ()
00054 
00055 if (POLICY CMP0017)
00056   cmake_policy (SET CMP0017 NEW)
00057 endif ()
00058 
00059 # ============================================================================
00060 # system checks
00061 # ============================================================================
00062 
00063 # used by tests to disable these checks
00064 if (NOT BASIS_NO_SYSTEM_CHECKS)
00065   include (CheckTypeSize)
00066   include (CheckIncludeFileCXX)
00067 
00068   # check if type long long is supported
00069   CHECK_TYPE_SIZE ("long long" LONG_LONG)
00070 
00071   if (HAVE_LONG_LONG)
00072     set (HAVE_LONG_LONG 1)
00073   else ()
00074     set (HAVE_LONG_LONG 0)
00075   endif ()
00076 
00077   # check for presence of sstream header
00078   include (TestForSSTREAM)
00079 
00080   if (CMAKE_NO_ANSI_STRING_STREAM)
00081     set (HAVE_SSTREAM 0)
00082   else ()
00083     set (HAVE_SSTREAM 1)
00084   endif ()
00085 
00086   # check if tr/tuple header file is available
00087   if (CMAKE_GENERATOR MATCHES "Visual Studio [1-9][0-9]+")
00088     set (HAVE_TR1_TUPLE 1)
00089   else ()
00090     CHECK_INCLUDE_FILE_CXX ("tr1/tuple" HAVE_TR1_TUPLE)
00091     if (HAVE_TR1_TUPLE)
00092       set (HAVE_TR1_TUPLE 1)
00093     else ()
00094       set (HAVE_TR1_TUPLE 0)
00095     endif ()
00096   endif ()
00097 
00098   # check for availibility of pthreads library
00099   # defines CMAKE_USE_PTHREADS_INIT and CMAKE_THREAD_LIBS_INIT
00100   find_package (Threads)
00101 
00102   if (Threads_FOUND)
00103     if (CMAKE_USE_PTHREADS_INIT)
00104       set (HAVE_PTHREAD 1)
00105     else  ()
00106       set (HAVE_PTHREAD 0)
00107     endif ()
00108   endif ()
00109 endif ()
00110 
00111 # ============================================================================
00112 # meta-data lists
00113 # ============================================================================
00114 
00115 ## @brief Names of project meta-data switches.
00116 set (
00117   BASIS_METADATA_LIST_SWITCH
00118 )
00119 
00120 ## @brief Names of project meta-data with only one argument.
00121 set (
00122   BASIS_METADATA_LIST_SINGLE
00123     AUTHOR
00124     NAME
00125     SUBPROJECT
00126     PACKAGE
00127     PACKAGE_VENDOR
00128     PROVIDER       # alias for PACKAGE_VENDOR
00129     COPYRIGHT
00130     LICENSE
00131     CONTACT
00132     VERSION
00133 )
00134 
00135 ## @brief Names of project meta-data with multiple arguments.
00136 set (
00137   BASIS_METADATA_LIST_MULTI
00138     AUTHORS
00139     DESCRIPTION
00140     DEPENDS
00141     OPTIONAL_DEPENDS
00142     TEST_DEPENDS
00143     OPTIONAL_TEST_DEPENDS
00144 )
00145 
00146 ## @brief Names of project meta-data.
00147 set (
00148   BASIS_METADATA_LIST
00149     ${BASIS_METADATA_LIST_SINGLE}
00150     ${BASIS_METADATA_LIST_MULTI}
00151 )
00152 
00153 ## @brief Names of additional meta-data for Slicer modules with only one argument.
00154 set (
00155   BASIS_SLICER_METADATA_LIST_SINGLE
00156      HOMEPAGE
00157      ICONURL
00158      STATUS
00159      SCREENSHOTURLS
00160 )
00161 
00162 ## @brief Names of additional meta-data for Slicer modules with multiple arguments.
00163 set (
00164   BASIS_SLICER_METADATA_LIST_MULTI
00165      ACKNOWLEDGEMENTS
00166      CATEGORY
00167      CONTRIBUTORS
00168      LICENSE_SHORT_DESCRIPTION
00169 )
00170 
00171 ## @brief Names of additional meta-data for Slicer modules.
00172 set (
00173   BASIS_SLICER_METADATA_LIST
00174     ${BASIS_SLICER_METADATA_LIST_SINGLE}
00175     ${BASIS_SLICER_METADATA_LIST_MULTI}
00176 )
00177 
00178 # ============================================================================
00179 # constants and global settings
00180 # ============================================================================
00181 
00182 ## @brief List of name patterns used for special purpose targets.
00183 #
00184 # Contains a list of target name patterns that are used by the BASIS functions
00185 # for special purposes and are hence not to be used for project targets.
00186 set (
00187   BASIS_RESERVED_TARGET_NAMES
00188     "all"
00189     "bundle"
00190     "bundle_source"
00191     "changelog"
00192     "clean"
00193     "depend"
00194     "doc"
00195     "headers"
00196     "headers_check"
00197     "package"
00198     "package_source"
00199     "scripts"
00200     "test"
00201     "uninstall"
00202 )
00203 
00204 ## @brief Names of recognized properties on targets.
00205 #
00206 # Unfortunately, the @c ARGV and @c ARGN arguments of a CMake function()
00207 # or macro() does not preserve values which themselves are lists. Therefore,
00208 # it is not possible to distinguish between property names and their values
00209 # in the arguments passed to set_target_properties() or
00210 # basis_set_target_properties(). To overcome this problem, this list specifies
00211 # all the possible property names. Everything else is considered to be a
00212 # property value except the first argument follwing right after the
00213 # @c PROPERTIES keyword. Alternatively, basis_set_property() can be used
00214 # as here no disambiguity exists.
00215 #
00216 # @note Placeholders such as &lt;CONFIG&gt; are allowed. These are treated
00217 #       as the regular expression "[^ ]+". See basis_list_to_regex().
00218 #
00219 # @sa http://www.cmake.org/cmake/help/cmake-2-8-docs.html#section_PropertiesonTargets
00220 set (BASIS_PROPERTIES_ON_TARGETS
00221   # CMake
00222   <CONFIG>_OUTPUT_NAME
00223   <CONFIG>_POSTFIX
00224   ARCHIVE_OUTPUT_DIRECTORY
00225   ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>
00226   ARCHIVE_OUTPUT_NAME
00227   ARCHIVE_OUTPUT_NAME_<CONFIG>
00228   AUTOMOC
00229   BUILD_WITH_INSTALL_RPATH
00230   BUNDLE
00231   BUNDLE_EXTENSION
00232   COMPILE_DEFINITIONS
00233   COMPILE_DEFINITIONS_<CONFIG>
00234   COMPILE_FLAGS
00235   DEBUG_POSTFIX
00236   DEFINE_SYMBOL
00237   ENABLE_EXPORTS
00238   EXCLUDE_FROM_ALL
00239   EchoString
00240   FOLDER
00241   FRAMEWORK
00242   Fortran_FORMAT
00243   Fortran_MODULE_DIRECTORY
00244   GENERATOR_FILE_NAME
00245   HAS_CXX
00246   IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
00247   IMPORTED
00248   IMPORTED_CONFIGURATIONS
00249   IMPORTED_IMPLIB
00250   IMPORTED_IMPLIB_<CONFIG>
00251   IMPORTED_LINK_DEPENDENT_LIBRARIES
00252   IMPORTED_LINK_DEPENDENT_LIBRARIES_<CONFIG>
00253   IMPORTED_LINK_INTERFACE_LANGUAGES
00254   IMPORTED_LINK_INTERFACE_LANGUAGES_<CONFIG>
00255   IMPORTED_LINK_INTERFACE_LIBRARIES
00256   IMPORTED_LINK_INTERFACE_LIBRARIES_<CONFIG>
00257   IMPORTED_LINK_INTERFACE_MULTIPLICITY
00258   IMPORTED_LINK_INTERFACE_MULTIPLICITY_<CONFIG>
00259   IMPORTED_LOCATION
00260   IMPORTED_LOCATION_<CONFIG>
00261   IMPORTED_NO_SONAME
00262   IMPORTED_NO_SONAME_<CONFIG>
00263   IMPORTED_SONAME
00264   IMPORTED_SONAME_<CONFIG>
00265   IMPORT_PREFIX
00266   IMPORT_SUFFIX
00267   INSTALL_NAME_DIR
00268   INSTALL_RPATH
00269   INSTALL_RPATH_USE_LINK_PATH
00270   INTERPROCEDURAL_OPTIMIZATION
00271   INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
00272   LABELS
00273   LIBRARY_OUTPUT_DIRECTORY
00274   LIBRARY_OUTPUT_DIRECTORY_<CONFIG>
00275   LIBRARY_OUTPUT_NAME
00276   LIBRARY_OUTPUT_NAME_<CONFIG>
00277   LINKER_LANGUAGE
00278   LINK_DEPENDS
00279   LINK_FLAGS
00280   LINK_FLAGS_<CONFIG>
00281   LINK_INTERFACE_LIBRARIES
00282   LINK_INTERFACE_LIBRARIES_<CONFIG>
00283   LINK_INTERFACE_MULTIPLICITY
00284   LINK_INTERFACE_MULTIPLICITY_<CONFIG>
00285   LINK_SEARCH_END_STATIC
00286   LINK_SEARCH_START_STATIC
00287   LOCATION
00288   LOCATION_<CONFIG>
00289   MACOSX_BUNDLE
00290   MACOSX_BUNDLE_INFO_PLIST
00291   MACOSX_FRAMEWORK_INFO_PLIST
00292   MAP_IMPORTED_CONFIG_<CONFIG>
00293   OSX_ARCHITECTURES
00294   OSX_ARCHITECTURES_<CONFIG>
00295   OUTPUT_NAME
00296   OUTPUT_NAME_<CONFIG>
00297   POST_INSTALL_SCRIPT
00298   PREFIX
00299   PRE_INSTALL_SCRIPT
00300   PRIVATE_HEADER
00301   PROJECT_LABEL
00302   PUBLIC_HEADER
00303   RESOURCE
00304   RULE_LAUNCH_COMPILE
00305   RULE_LAUNCH_CUSTOM
00306   RULE_LAUNCH_LINK
00307   RUNTIME_OUTPUT_DIRECTORY
00308   RUNTIME_OUTPUT_DIRECTORY_<CONFIG>
00309   RUNTIME_OUTPUT_NAME
00310   RUNTIME_OUTPUT_NAME_<CONFIG>
00311   SKIP_BUILD_RPATH
00312   SOURCES
00313   SOVERSION
00314   STATIC_LIBRARY_FLAGS
00315   STATIC_LIBRARY_FLAGS_<CONFIG>
00316   SUFFIX
00317   TYPE
00318   VERSION
00319   VS_GLOBAL_<variable>
00320   VS_KEYWORD
00321   VS_SCC_LOCALPATH
00322   VS_SCC_PROJECTNAME
00323   VS_SCC_PROVIDER
00324   WIN32_EXECUTABLE
00325   XCODE_ATTRIBUTE_<an-attribute>
00326   # BASIS
00327   BASIS_INCLUDE_DIRECTORIES    # include directories
00328   BASIS_LINK_DIRECTORIES       # link directories
00329   BASIS_LINK_DEPENDS           # link libraries
00330   BASIS_TYPE                   # BASIS type of target
00331   BASIS_UTILITIES              # whether BASIS utilities are used by this target
00332   BUNDLED                      # whether target belongs to same bundle/superbuild
00333   COMPILE_DEFINITIONS_FILE     # script configuration file
00334   LANGUAGE                     # language of source files
00335   COMPILE                      # enable/disable compilation of script
00336   EXPORT                       # whether to export target
00337   LIBEXEC                      # whether the target is an auxiliary executable
00338   TEST                         # whether the target is a test
00339   MFILE                        # documentation file of MEX-file
00340   COMPONENT                    # package component of build target
00341   LIBRARY_COMPONENT            # package component of the library component
00342   RUNTIME_COMPONENT            # package component of the runtime component
00343   ARCHIVE_INSTALL_DIRECTORY    # installation directory of library
00344   LIBRARY_INSTALL_DIRECTORY    # installation directory of library
00345   RUNTIME_INSTALL_DIRECTORY    # installation directory of runtime
00346   OUTPUT_DIRECTORY             # output directory for generated files
00347   INSTALL_DIRECTORY            # installation directory for generated files
00348   HTML_OUTPUT_DIRECTORY        # Doxygen/Sphinx HTML output directory
00349   HTML_INSTALL_DIRECTORY       # Doxygen/Sphinx HTML installation directory
00350   DIRHTML_OUTPUT_DIRECTORY     # Sphinx HTML output directory
00351   DIRHTML_INSTALL_DIRECTORY    # Sphinx HTML installation directory
00352   SINGLEHTML_OUTPUT_DIRECTORY  # Sphinx HTML output directory
00353   SINGLEHTML_INSTALL_DIRECTORY # Sphinx HTML installation directory
00354   LINKCHECK_OUTPUT_DIRECTORY   # Sphinx linkcheck output directory
00355   LINKCHECK_INSTALL_DIRECTORY  # Sphinx linkcheck installation directory
00356   XML_OUTPUT_DIRECTORY         # Doxygen XML output directory
00357   XML_INSTALL_DIRECTORY        # Doxygen XML installation directory
00358   MAN_OUTPUT_DIRECTORY         # Doxygen/Sphinx MAN output directory
00359   MAN_INSTALL_DIRECTORY        # Doxygen/Sphinx MAN installation directory
00360   TEXT_OUTPUT_DIRECTORY        # Sphinx text output directory
00361   TEXT_INSTALL_DIRECTORY       # Sphinx text installation directory
00362   TEXINFO_OUTPUT_DIRECTORY     # Sphinx Texinfo output directory
00363   TEXINFO_INSTALL_DIRECTORY    # Sphinx Texinfo installation directory
00364   LATEX_OUTPUT_DIRECTORY       # Doxygen/Sphinx LaTeX output directory
00365   LATEX_INSTALL_DIRECTORY      # Doxygen/Sphinx LaTeX installation directory
00366   PDF_OUTPUT_DIRECTORY         # Doxygen/Sphinx PDF output directory
00367   PDF_INSTALL_DIRECTORY        # Doxygen/Sphinx PDF installation directory
00368   RTF_OUTPUT_DIRECTORY         # Doxygen RTF output directory
00369   RTF_INSTALL_DIRECTORY        # Doxygen RTF installation directory
00370   DOXYFILE                     # Doxygen configuration file
00371   OUTPUT                       # Doxygen output formats
00372   TAGFILE                      # Doxygen tag file
00373   CONFIG_DIRECTORY             # Sphinx configuration directory
00374   BINARY_DIRECTORY             # CMake build tree directory
00375   SOURCE_DIRECTORY             # CMake or Sphinx source directory
00376   BUILDERS                     # Sphinx builders
00377 )
00378 
00379 # convert list of property names into regular expression
00380 basis_list_to_regex (BASIS_PROPERTIES_ON_TARGETS_RE ${BASIS_PROPERTIES_ON_TARGETS})
00381 
00382 ## @brief Whether BASIS shall use fully-qualified target UIDs.
00383 #
00384 # If this option is OFF, the namespace of the top-level BASIS project is
00385 # not prepended to the actual CMake build target names.
00386 #
00387 # For example, instead of the fully-qualified target UID
00388 # "sbia.@PROJECT_NAME_L@.target", the CMake target name will simply
00389 # be "target". Only when the target is referenced from another project,
00390 # the fully-qualified target UID is usually required.
00391 basis_set_if_empty (BASIS_USE_FULLY_QUALIFIED_UIDS OFF)
00392 
00393 ## @brief Default component used for library targets when no component is specified.
00394 #
00395 # The default component a library target and its auxiliary files
00396 # are associated with if no component was specified, explicitly.
00397 set (BASIS_LIBRARY_COMPONENT "Development")
00398 
00399 ## @brief Default component used for executables when no component is specified.
00400 #
00401 # The default component an executable target and its auxiliary files
00402 # are associated with if no component was specified, explicitly.
00403 set (BASIS_RUNTIME_COMPONENT "Runtime")
00404 
00405 ## @brief Specifies that the BASIS C++ utilities shall by default not be added
00406 #         as dependency of an executable.
00407 set (BASIS_UTILITIES TRUE)
00408 
00409 ## @brief Whether to export build targets by default.
00410 set (BASIS_EXPORT TRUE)
00411 
00412 ## @brief Disable use of the revision information obtained from the revision
00413 #         control software such as Subversion.
00414 #
00415 # If this option is @c TRUE, the revision information is not included in the
00416 # @c PROJECT_RELEASE information.
00417 option (BASIS_REVISION_INFO "Enable use of the revision information of the revision control software." ON)
00418 mark_as_advanced (BASIS_REVISION_INFO)
00419 
00420 ## @brief Enable compilation of scripts if supported by the language.
00421 #
00422 # In particular, Python modules are compiled if this option is enabled and
00423 # only the compiled modules are installed.
00424 #
00425 # @sa basis_add_script_target()
00426 option (BASIS_COMPILE_SCRIPTS "Enable compilation of scripts if supported by the language." OFF)
00427 mark_as_advanced (BASIS_COMPILE_SCRIPTS)
00428 
00429 ## @brief Enable the installation of scripted modules in site specific default directories.
00430 #
00431 # If this option is @c ON, scripted modules such as Python and Perl modules, in particular,
00432 # are installed in the default installation directories for site packages of the respective
00433 # interpreter. This means that these modules may be installed outside the installation
00434 # root directory as specified by the @c CMAKE_INSTALL_PREFIX. When this option is set to
00435 # @c OFF, all modules are installed in subdirectories of the @c CMAKE_INSTALL_PREFIX.
00436 # These directories may have to be added to the search path for modules manually as they
00437 # might not be in the default search path of the respective interpreter.
00438 #
00439 # The installation directories for public modules which are intended for external use
00440 # can further be set using the -D option of CMake or be modified by editing the respective
00441 # advanced CMake cache variables named <tt>INSTALL_&lt;LANG%gt;_SITE_DIR</tt>.
00442 #
00443 # @note Even though it is more convenient for the user of a package to have the modules
00444 #       being installed in the default directories, this option is set to @c OFF by default.
00445 #       The reasons are that it is in first place expected that the installation will copy
00446 #       files only to directories within the @c CMAKE_INSTALL_PREFIX. Moreover, it is not
00447 #       guaranteed that the user has write permissions for the default site packages directories.
00448 #       Last but not least, when installing public modules located in the @c PROJECT_LIBRARY_DIR
00449 #       source directory, BASIS does not set a default module @c PREFIX which reduces the risk
00450 #       of overwriting existing modules of other packages. If the developer of a BASIS package
00451 #       was not thorough enough and did not follow the guidelines, setting this option to @c ON
00452 #       has the potential risk of overwriting other packages' modules. Therefore,
00453 #       modules are only installed in system default locations if explicitly requested.
00454 option (BASIS_INSTALL_SITE_PACKAGES "Enable the installation of scripted modules in site specific default directories." OFF)
00455 mark_as_advanced (BASIS_INSTALL_SITE_PACKAGES)
00456 
00457 ## @brief Script used to execute a process in CMake script mode.
00458 #
00459 # In order to be able to assign a timeout to the execution of a custom command
00460 # and to add some error message parsing, this script is used by some build
00461 # rules to actually perform the build step. See for example, the build of
00462 # executables using the MATLAB Compiler.
00463 set (BASIS_SCRIPT_EXECUTE_PROCESS "${BASIS_MODULE_PATH}/ExecuteProcess.cmake")
00464 
00465 ## @brief File used by default as <tt>--authors</tt> file to <tt>svn2cl</tt>.
00466 #
00467 # This file lists all Subversion users at SBIA and is used by default for
00468 # the mapping of Subversion user names to real names during the generation
00469 # of changelogs.
00470 set (BASIS_SVN_USERS_FILE "${BASIS_MODULE_PATH}/SubversionUsers.txt")
00471 
00472 ## @brief Force installation of public header files of BASIS C++ utilities.
00473 #
00474 # If this variable is set to FALSE, each header file in the @c PROJECT_INCLUDE_DIR
00475 # is scanned for an include statement which includes one of the public header
00476 # files of the BASIS C++ utilities. If such include statement was found in
00477 # a public header file of the project, the public header files of the BASIS
00478 # C++ utilities are also installed as the project's public header files depend
00479 # on them. You can set this variable to TRUE in the Settings.cmake file of your
00480 # project to force the installation of the public header files of the
00481 # project-specific BASIS C++ utilities.
00482 #
00483 # @sa basis_install_public_headers()
00484 basis_set_if_empty (BASIS_INSTALL_PUBLIC_HEADERS_OF_CXX_UTILITIES FALSE)
00485 
00486 ## @brief Enable/disable registration of installed package in CMake registry.
00487 option (BASIS_REGISTER "Request registration of installed package in CMake package registry." ON)
00488 mark_as_advanced (BASIS_REGISTER)
00489 
00490 # ============================================================================
00491 # programming language specific settings
00492 # ============================================================================
00493 
00494 ## @brief List of programming languages explicitly supported by BASIS.
00495 #
00496 # @todo Add full support for Java.
00497 set (BASIS_LANGUAGES CXX Python Jython Perl Matlab Bash)
00498 
00499 string (TOLOWER "${BASIS_LANGUAGES}" BASIS_LANGUAGES_L)
00500 string (TOUPPER "${BASIS_LANGUAGES}" BASIS_LANGUAGES_U)
00501 
00502 # ----------------------------------------------------------------------------
00503 # namespace delimiters
00504 # ----------------------------------------------------------------------------
00505 
00506 ## @brief Namespace delimiter used in C++.
00507 set (BASIS_NAMESPACE_DELIMITER_CXX .)
00508 ## @brief Namespace delimiter used in Python.
00509 set (BASIS_NAMESPACE_DELIMITER_PYTHON .)
00510 ## @brief Namespace delimiter used in Jython.
00511 set (BASIS_NAMESPACE_DELIMITER_JYTHON .)
00512 ## @brief Namespace delimiter used in Perl.
00513 set (BASIS_NAMESPACE_DELIMITER_PERL ::)
00514 ## @brief Namespace delimiter used in MATLAB.
00515 set (BASIS_NAMESPACE_DELIMITER_MATLAB .)
00516 ## @brief Namespace delimiter used in Bash.
00517 #
00518 # @note Bash itself has no concept of namespaces. This namespace delimiter is
00519 #       used by the import() function of the BASIS Utilities for Bash.
00520 #
00521 # @sa BasisBashUtilities
00522 set (BASIS_NAMESPACE_DELIMITER_BASH .)
00523 
00524 # ----------------------------------------------------------------------------
00525 # public libraries of script modules
00526 # ----------------------------------------------------------------------------
00527 
00528 ## @brief Name of library target which builds Python modules in @c PROJECT_LIBRARY_DIR.
00529 #
00530 # This variable is used by basis_configure_script_libraries() which is called
00531 # by basis_project_impl() to add a library target of the given name for the
00532 # build of the Python modules found in the @c PROJECT_LIBRARY_DIR.
00533 #
00534 # @note The given target name is argument to the basis_add_library() command.
00535 #       Overwrite default value in Settings.cmake file of project if desired.
00536 set (PYTHON_LIBRARY_TARGET "pythonlib")
00537 
00538 ## @brief Name of library target which builds Jython modules in @c PROJECT_LIBRARY_DIR.
00539 #
00540 # This variable is used by basis_configure_script_libraries() which is called
00541 # by basis_project_impl() to add a library target of the given name for the
00542 # build of the Jython modules found in the @c PROJECT_LIBRARY_DIR.
00543 #
00544 # @note The given target name is argument to the basis_add_library() command.
00545 #       Overwrite default value in Settings.cmake file of project if desired.
00546 set (JYTHON_LIBRARY_TARGET "jythonlib")
00547 
00548 ## @brief Name of library target which builds Perl modules in @c PROJECT_LIBRARY_DIR.
00549 #
00550 # This variable is used by basis_configure_script_libraries() which is called
00551 # by basis_project_impl() to add a library target of the given name for the
00552 # build of the Perl modules found in the @c PROJECT_LIBRARY_DIR.
00553 #
00554 # @note The given target name is argument to the basis_add_library() command.
00555 #       Overwrite default value in Settings.cmake file of project if desired.
00556 set (PERL_LIBRARY_TARGET "perllib")
00557 
00558 ## @brief Name of library target which builds MATLAB modules in @c PROJECT_LIBRARY_DIR.
00559 #
00560 # This variable is used by basis_configure_script_libraries() which is called
00561 # by basis_project_impl() to add a library target of the given name for the
00562 # build of the MATLAB modules found in the @c PROJECT_LIBRARY_DIR.
00563 #
00564 # @note The given target name is argument to the basis_add_library() command.
00565 #       Overwrite default value in Settings.cmake file of project if desired.
00566 set (MATLAB_LIBRARY_TARGET "matlablib")
00567 
00568 ## @brief Name of library target which builds Bash modules in @c PROJECT_LIBRARY_DIR.
00569 #
00570 # This variable is used by basis_configure_script_libraries() which is called
00571 # by basis_project_impl() to add a library target of the given name for the
00572 # build of the Bash modules found in the @c PROJECT_LIBRARY_DIR.
00573 #
00574 # @note The given target name is argument to the basis_add_library() command.
00575 #       Overwrite default value in Settings.cmake file of project if desired.
00576 set (BASH_LIBRARY_TARGET "bashlib")
00577 
00578 # ============================================================================
00579 # documentation
00580 # ============================================================================
00581 
00582 ## @brief Advanced option to request build of documentation targets as part of ALL target.
00583 option (BASIS_ALL_DOC  "Request build of documentation targets as part of ALL target."  OFF)
00584 mark_as_advanced (BASIS_ALL_DOC)
00585 
00586 ## @brief Default Doxygen configuration.
00587 set (BASIS_DOXYGEN_DOXYFILE "${CMAKE_CURRENT_LIST_DIR}/Doxyfile.in")
00588 
00589 ## @brief Default Sphinx configuration.
00590 set (BASIS_SPHINX_CONFIG "${CMAKE_CURRENT_LIST_DIR}/sphinx_conf.py.in")
00591 
00592 ## @brief Default Sphinx theme.
00593 set (BASIS_SPHINX_HTML_THEME "sbia")
00594 
00595 ## @brief Default Sphinx theme options.
00596 set (BASIS_SPHINX_HTML_THEME_OPTIONS
00597   PROJECT_LOGO   None
00598   SHOW_SBIA_LOGO true
00599   SHOW_PENN_LOGO true
00600   SHOW_RELBAR2   false
00601   ROOT_RELLINKS  "[('home', 'index')]"
00602 )
00603 
00604 # ============================================================================
00605 # common options
00606 # ============================================================================
00607 
00608 ## @brief Request verbose messages from BASIS functions.
00609 option (BASIS_VERBOSE "Request BASIS functions to output verbose messages." OFF)
00610 mark_as_advanced (BASIS_VERBOSE)
00611 
00612 ## @brief Request debugging messages from BASIS functions.
00613 option (BASIS_DEBUG "Request BASIS functions to help debugging." OFF)
00614 mark_as_advanced (BASIS_DEBUG)
00615 
00616 # ============================================================================
00617 # build configuration
00618 # ============================================================================
00619 
00620 if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CXX_FLAGS AND NOT CMAKE_C_FLAGS)
00621   set (
00622     CMAKE_BUILD_TYPE "Release"
00623     CACHE STRING "Choose the type of build, options are: None (CMAKE_C_FLAGS and CMAKE_CXX_FLAGS used) Debug Release RelWithDebInfo MinSizeRel."
00624     FORCE
00625   )
00626 endif ()
00627 
00628 # the following Mac OS specific variables are yet not further used
00629 # hide them from the normal user, as they are usually not required (yet)
00630 if (DEFINED CMAKE_OSX_ARCHITECTURES)
00631   mark_as_advanced (CMAKE_OSX_ARCHITECTURES)
00632 endif ()
00633 if (DEFINED CMAKE_OSX_DEPLOYMENT_TARGET)
00634   mark_as_advanced (CMAKE_OSX_DEPLOYMENT_TARGET)
00635 endif ()
00636 if (DEFINED CMAKE_OSX_SYSROOT)
00637   mark_as_advanced (CMAKE_OSX_SYSROOT)
00638 endif ()
00639 
00640 # use RPATH
00641 set (CMAKE_SKIP_RPATH                  FALSE) # use RPATH for installed project own binaries
00642 set (CMAKE_SKIP_BUILD_RPATH            FALSE) # use RPATH for project own binaries
00643 set (CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE) # do not add directories outside project to RPATH
00644 set (CMAKE_BUILD_WITH_INSTALL_RPATH    FALSE) # use different RPATH for build tree executables
00645 
00646 
00647 ## @}
00648 # end of Doxygen group