# ============================================================================
# Copyright (c) 2011-2012 University of Pennsylvania
# Copyright (c) 2013-2014 Andreas Schuh
# All rights reserved.
#
# See COPYING file for license information or visit
# http://opensource.andreasschuh.com/cmake-basis/download.html#license
# ============================================================================

##############################################################################
# @file  ProjectSettings.cmake
# @brief Default project-dependent settings.
#
# @note The file ProjectSettings.cmake is automatically generated by
#       BASIS from the template file ProjectSettings.cmake.in which is part
#       of the BASIS installation.
#
# @note More general, project-independent settings are defined in the file
#       BasisSettings.cmake which is part of the BASIS installation.
#
# This module defines global CMake constants and variables which are used
# by the BASIS CMake functions and macros. Hence, these values can be used
# to configure the behavior of these functions to some extent without the
# need to modify the functions themselves. It's main purpose is the
# documentation of these variables with the configured values.
#
# @ingroup BasisSettings
##############################################################################

## @addtogroup BasisSettings
# @{


# ============================================================================
# options
# ============================================================================

## @brief Request build/installation of documentation.
if (EXISTS "${PROJECT_DOC_DIR}/CMakeLists.txt")
  option (BUILD_DOCUMENTATION "Request build and/or installation of documentation." OFF)
endif ()

## @brief Request build/installation of example.
if (EXISTS "${PROJECT_EXAMPLE_DIR}/CMakeLists.txt")
  option (BUILD_EXAMPLE "Request build and/or installation of example." OFF)
endif ()

## @brief Request build/installation of applications.
if (PROJECT_HAS_APPLICATIONS)
  if (NOT BUILD_APPLICATIONS_DEFAULT)
    set (BUILD_APPLICATIONS_DEFAULT OFF)
  endif ()
  option(BUILD_APPLICATIONS "Request build and/or installation of applications." ${BUILD_APPLICATIONS_DEFAULT})
endif ()

# ============================================================================
# project namespaces
# ============================================================================

## @brief CMake namespace of top-level project.
#
# This is the common namespace of a BASIS project and its modules.
# It is the part of the namespace which is only required if the project's
# targets are referenced from another project, but not within the project.
set (TOPLEVEL_PROJECT_NAMESPACE_CMAKE "@_TOPLEVEL_NAMESPACE_CMAKE@")

## @brief CMake namespace of project.
#
# The CMake namespace of a BASIS project is made up of its name in lower case
# only as well as the namespace the project belongs to, i.e., the namespace of
# the project this project is a module of.
#
# @sa basis_make_target_uid()
# @sa basis_get_target_uid()
# @sa basis_make_test_uid()
# @sa basis_get_test_uid()
set (PROJECT_NAMESPACE_CMAKE "@_NAMESPACE_CMAKE@")

## @brief CMake variable of C++ namespace of project.
#
# The C++ namespace of a BASIS project is made up of the vendor name and the name
# of the package itself. Moreover, if the project is a module of another project,
# the name of the module may optionally be used as part of the namespace as well.
# Namespaces in C++ are usually in lowercase only.
#
# @ingroup BasisCxxUtilities
set (PROJECT_NAMESPACE_CXX "@_NAMESPACE_CXX@")

## @brief CMake variable of Java package name of project.
#
# The Java package name of a BASIS project is made up of the vendor name and the name
# of the package itself. Moreover, if the project is a module of another project,
# the name of the module may optionally be used as part of the namespace as well.
# Names of packages and sub-packages in Java are usually in lowercase only.
#
# @ingroup BasisJavaUtilities
set (PROJECT_NAMESPACE_JAVA "@_NAMESPACE_JAVA@")

## @brief CMake variable of Python package name of project.
#
# The Python package name of a BASIS project is made up of the vendor name and the name
# of the package itself. Moreover, if the project is a module of another project,
# the name of the module may optionally be used as part of the namespace as well.
# Names of packages and sub-packages in Python are usually in lowercase only.
#
# @ingroup BasisPythonUtilities
set (PROJECT_NAMESPACE_PYTHON "@_NAMESPACE_PYTHON@")

## @brief CMake variable of Jython package name of project.
#
# The Jython package name of a BASIS project is made up of the vendor name and the name
# of the package itself. Moreover, if the project is a module of another project,
# the name of the module may optionally be used as part of the namespace as well.
# Names of packages and sub-packages in Jython are usually in lowercase only.
#
# @ingroup BasisPythonUtilities
set (PROJECT_NAMESPACE_JYTHON "@_NAMESPACE_JYTHON@")

## @brief CMake variable of Perl package name of project.
#
# The Perl package name of a BASIS project is made up of the vendor name and the name
# of the package itself. Moreover, if the project is a module of another project,
# the name of the module may optionally be used as part of the namespace as well.
# Names of packages and sub-packages in Perl are usually in mixed CamelCase starting
# with an uppercase letter. Note that Perl informally reserves lowercase module names
# for "pragma" modules such as <tt>integer</tt> and <tt>strict</tt>.
#
# @ingroup BasisPerlUtilities
set (PROJECT_NAMESPACE_PERL "@_NAMESPACE_PERL@")

## @brief CMake variable of BASH namespace of project.
#
# In BASH, there exists no such concept of a namespace or package. However,
# variable and function names defined in a module which is supposed to be
# sourced by other BASH scripts should use a unique prefix for variable and
# function names.
#
# @ingroup BasisBashUtilities
set (PROJECT_NAMESPACE_BASH "@_NAMESPACE_BASH@")

## @brief CMake variable of MATLAB package name of project.
#
# The MATLAB package name of a BASIS project is made up of its name in lower case
# only as well as the package name of the project it belongs to.
#
# For information on MATLAB's package and class folders, visit the following
# web page from MathWorks:
# @sa http://www.mathworks.com/help/techdoc/matlab_oop/brfynt_-1.html
#
# @ingroup BasisMatlabUtilities
set (PROJECT_NAMESPACE_MATLAB "@_NAMESPACE_MATLAB@")

# ============================================================================
# package configuration
# ============================================================================

## @brief Prefix/name of CMake package configuration file of top-level project.
set (TOPLEVEL_PROJECT_PACKAGE_CONFIG_PREFIX "@_TOPLEVEL_PROJECT_PACKAGE_CONFIG_PREFIX@")

## @brief Prefix/name of CMake package configuration file.
set (PROJECT_PACKAGE_CONFIG_PREFIX "@_PROJECT_PACKAGE_CONFIG_PREFIX@")

## @brief UID of package in CMake's user package registry.
#
# The value of this variable is used as name for the registry file which
# contains the path to the package configuration file on Unix, or the name
# of the Windows registry key on Windows.
#
# @sa http://www.cmake.org/Wiki/CMake/Tutorials/Package_Registry
set (TOPLEVEL_PROJECT_PACKAGE_UID "@_TOPLEVEL_PROJECT_PACKAGE_UID@")


## @}
# end of Doxygen group
