diff options
author | Kitware Robot <kwrobot@kitware.com> | 2018-10-22 10:31:08 -0400 |
---|---|---|
committer | Kyle Edwards <kyle.edwards@kitware.com> | 2018-10-22 11:09:34 -0400 |
commit | df4ed1e9ffcdb6b99ccff9e6f44808fdd2abda56 (patch) | |
tree | 4617dc2407a2e8e9c2bfdf77f09bdd396a9823e0 | |
parent | 7115aa6c2249ec368fe0dfbd257a22eb0e04042d (diff) | |
download | cmake-df4ed1e9ffcdb6b99ccff9e6f44808fdd2abda56.tar.gz |
Help: Convert remaining modules to block-style comments
202 files changed, 10078 insertions, 9868 deletions
diff --git a/Modules/AddFileDependencies.cmake b/Modules/AddFileDependencies.cmake index 999da95677..4a4e645cdf 100644 --- a/Modules/AddFileDependencies.cmake +++ b/Modules/AddFileDependencies.cmake @@ -1,17 +1,18 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# AddFileDependencies -# ------------------- -# -# Add dependencies to a source file. -# -# .. code-block:: cmake -# -# ADD_FILE_DEPENDENCIES(<source> <files>) -# -# Adds the given ``<files>`` to the dependencies of file ``<source>``. +#[=======================================================================[.rst: +AddFileDependencies +------------------- + +Add dependencies to a source file. + +.. code-block:: cmake + + ADD_FILE_DEPENDENCIES(<source> <files>) + +Adds the given ``<files>`` to the dependencies of file ``<source>``. +#]=======================================================================] macro(ADD_FILE_DEPENDENCIES _file) diff --git a/Modules/CMakeAddFortranSubdirectory.cmake b/Modules/CMakeAddFortranSubdirectory.cmake index 4649f35a14..2bb31287a4 100644 --- a/Modules/CMakeAddFortranSubdirectory.cmake +++ b/Modules/CMakeAddFortranSubdirectory.cmake @@ -1,46 +1,47 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CMakeAddFortranSubdirectory -# --------------------------- -# -# Use MinGW gfortran from VS if a fortran compiler is not found. -# -# The 'add_fortran_subdirectory' function adds a subdirectory to a -# project that contains a fortran only sub-project. The module will -# check the current compiler and see if it can support fortran. If no -# fortran compiler is found and the compiler is MSVC, then this module -# will find the MinGW gfortran. It will then use an external project to -# build with the MinGW tools. It will also create imported targets for -# the libraries created. This will only work if the fortran code is -# built into a dll, so BUILD_SHARED_LIBS is turned on in the project. -# In addition the CMAKE_GNUtoMS option is set to on, so that the MS .lib -# files are created. Usage is as follows: -# -# :: -# -# cmake_add_fortran_subdirectory( -# <subdir> # name of subdirectory -# PROJECT <project_name> # project name in subdir top CMakeLists.txt -# ARCHIVE_DIR <dir> # dir where project places .lib files -# RUNTIME_DIR <dir> # dir where project places .dll files -# LIBRARIES <lib>... # names of library targets to import -# LINK_LIBRARIES # link interface libraries for LIBRARIES -# [LINK_LIBS <lib> <dep>...]... -# CMAKE_COMMAND_LINE ... # extra command line flags to pass to cmake -# NO_EXTERNAL_INSTALL # skip installation of external project -# ) -# -# Relative paths in ARCHIVE_DIR and RUNTIME_DIR are interpreted with -# respect to the build directory corresponding to the source directory -# in which the function is invoked. -# -# Limitations: -# -# NO_EXTERNAL_INSTALL is required for forward compatibility with a -# future version that supports installation of the external project -# binaries during "make install". +#[=======================================================================[.rst: +CMakeAddFortranSubdirectory +--------------------------- + +Use MinGW gfortran from VS if a fortran compiler is not found. + +The 'add_fortran_subdirectory' function adds a subdirectory to a +project that contains a fortran only sub-project. The module will +check the current compiler and see if it can support fortran. If no +fortran compiler is found and the compiler is MSVC, then this module +will find the MinGW gfortran. It will then use an external project to +build with the MinGW tools. It will also create imported targets for +the libraries created. This will only work if the fortran code is +built into a dll, so BUILD_SHARED_LIBS is turned on in the project. +In addition the CMAKE_GNUtoMS option is set to on, so that the MS .lib +files are created. Usage is as follows: + +:: + + cmake_add_fortran_subdirectory( + <subdir> # name of subdirectory + PROJECT <project_name> # project name in subdir top CMakeLists.txt + ARCHIVE_DIR <dir> # dir where project places .lib files + RUNTIME_DIR <dir> # dir where project places .dll files + LIBRARIES <lib>... # names of library targets to import + LINK_LIBRARIES # link interface libraries for LIBRARIES + [LINK_LIBS <lib> <dep>...]... + CMAKE_COMMAND_LINE ... # extra command line flags to pass to cmake + NO_EXTERNAL_INSTALL # skip installation of external project + ) + +Relative paths in ARCHIVE_DIR and RUNTIME_DIR are interpreted with +respect to the build directory corresponding to the source directory +in which the function is invoked. + +Limitations: + +NO_EXTERNAL_INSTALL is required for forward compatibility with a +future version that supports installation of the external project +binaries during "make install". +#]=======================================================================] set(_MS_MINGW_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}) include(CheckLanguage) diff --git a/Modules/CMakeBackwardCompatibilityCXX.cmake b/Modules/CMakeBackwardCompatibilityCXX.cmake index cbd5ea76c6..628b541388 100644 --- a/Modules/CMakeBackwardCompatibilityCXX.cmake +++ b/Modules/CMakeBackwardCompatibilityCXX.cmake @@ -1,20 +1,21 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CMakeBackwardCompatibilityCXX -# ----------------------------- -# -# define a bunch of backwards compatibility variables -# -# :: -# -# CMAKE_ANSI_CXXFLAGS - flag for ansi c++ -# CMAKE_HAS_ANSI_STRING_STREAM - has <strstream> -# include(TestForANSIStreamHeaders) -# include(CheckIncludeFileCXX) -# include(TestForSTDNamespace) -# include(TestForANSIForScope) +#[=======================================================================[.rst: +CMakeBackwardCompatibilityCXX +----------------------------- + +define a bunch of backwards compatibility variables + +:: + + CMAKE_ANSI_CXXFLAGS - flag for ansi c++ + CMAKE_HAS_ANSI_STRING_STREAM - has <strstream> + include(TestForANSIStreamHeaders) + include(CheckIncludeFileCXX) + include(TestForSTDNamespace) + include(TestForANSIForScope) +#]=======================================================================] if(NOT CMAKE_SKIP_COMPATIBILITY_TESTS) # check for some ANSI flags in the CXX compiler if it is not gnu diff --git a/Modules/CMakeDependentOption.cmake b/Modules/CMakeDependentOption.cmake index 21d3c96b34..6046d85851 100644 --- a/Modules/CMakeDependentOption.cmake +++ b/Modules/CMakeDependentOption.cmake @@ -1,27 +1,28 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CMakeDependentOption -# -------------------- -# -# Macro to provide an option dependent on other options. -# -# This macro presents an option to the user only if a set of other -# conditions are true. When the option is not presented a default value -# is used, but any value set by the user is preserved for when the -# option is presented again. Example invocation: -# -# :: -# -# CMAKE_DEPENDENT_OPTION(USE_FOO "Use Foo" ON -# "USE_BAR;NOT USE_ZOT" OFF) -# -# If USE_BAR is true and USE_ZOT is false, this provides an option -# called USE_FOO that defaults to ON. Otherwise, it sets USE_FOO to -# OFF. If the status of USE_BAR or USE_ZOT ever changes, any value for -# the USE_FOO option is saved so that when the option is re-enabled it -# retains its old value. +#[=======================================================================[.rst: +CMakeDependentOption +-------------------- + +Macro to provide an option dependent on other options. + +This macro presents an option to the user only if a set of other +conditions are true. When the option is not presented a default value +is used, but any value set by the user is preserved for when the +option is presented again. Example invocation: + +:: + + CMAKE_DEPENDENT_OPTION(USE_FOO "Use Foo" ON + "USE_BAR;NOT USE_ZOT" OFF) + +If USE_BAR is true and USE_ZOT is false, this provides an option +called USE_FOO that defaults to ON. Otherwise, it sets USE_FOO to +OFF. If the status of USE_BAR or USE_ZOT ever changes, any value for +the USE_FOO option is saved so that when the option is re-enabled it +retains its old value. +#]=======================================================================] macro(CMAKE_DEPENDENT_OPTION option doc default depends force) if(${option}_ISSET MATCHES "^${option}_ISSET$") diff --git a/Modules/CMakeDetermineVSServicePack.cmake b/Modules/CMakeDetermineVSServicePack.cmake index 026462144a..b0911b4bdf 100644 --- a/Modules/CMakeDetermineVSServicePack.cmake +++ b/Modules/CMakeDetermineVSServicePack.cmake @@ -1,35 +1,36 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CMakeDetermineVSServicePack -# --------------------------- -# -# Deprecated. Do not use. -# -# The functionality of this module has been superseded by the -# :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable that contains -# the compiler version number. -# -# Determine the Visual Studio service pack of the 'cl' in use. -# -# Usage:: -# -# if(MSVC) -# include(CMakeDetermineVSServicePack) -# DetermineVSServicePack( my_service_pack ) -# if( my_service_pack ) -# message(STATUS "Detected: ${my_service_pack}") -# endif() -# endif() -# -# Function DetermineVSServicePack sets the given variable to one of the -# following values or an empty string if unknown:: -# -# vc80, vc80sp1 -# vc90, vc90sp1 -# vc100, vc100sp1 -# vc110, vc110sp1, vc110sp2, vc110sp3, vc110sp4 +#[=======================================================================[.rst: +CMakeDetermineVSServicePack +--------------------------- + +Deprecated. Do not use. + +The functionality of this module has been superseded by the +:variable:`CMAKE_<LANG>_COMPILER_VERSION` variable that contains +the compiler version number. + +Determine the Visual Studio service pack of the 'cl' in use. + +Usage:: + + if(MSVC) + include(CMakeDetermineVSServicePack) + DetermineVSServicePack( my_service_pack ) + if( my_service_pack ) + message(STATUS "Detected: ${my_service_pack}") + endif() + endif() + +Function DetermineVSServicePack sets the given variable to one of the +following values or an empty string if unknown:: + + vc80, vc80sp1 + vc90, vc90sp1 + vc100, vc100sp1 + vc110, vc110sp1, vc110sp2, vc110sp3, vc110sp4 +#]=======================================================================] if(NOT CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.8) message(DEPRECATION diff --git a/Modules/CMakeExpandImportedTargets.cmake b/Modules/CMakeExpandImportedTargets.cmake index 21a3065fee..4b97c378d9 100644 --- a/Modules/CMakeExpandImportedTargets.cmake +++ b/Modules/CMakeExpandImportedTargets.cmake @@ -1,41 +1,42 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CMakeExpandImportedTargets -# -------------------------- -# -# Deprecated. Do not use. -# -# This module was once needed to expand imported targets to the underlying -# libraries they reference on disk for use with the :command:`try_compile` -# and :command:`try_run` commands. These commands now support imported -# libraries in their ``LINK_LIBRARIES`` options (since CMake 2.8.11 -# for :command:`try_compile` and since CMake 3.2 for :command:`try_run`). -# -# This module does not support the policy :policy:`CMP0022` ``NEW`` -# behavior or use of the :prop_tgt:`INTERFACE_LINK_LIBRARIES` property -# because :manual:`generator expressions <cmake-generator-expressions(7)>` -# cannot be evaluated during configuration. -# -# :: -# -# CMAKE_EXPAND_IMPORTED_TARGETS(<var> LIBRARIES lib1 lib2...libN -# [CONFIGURATION <config>]) -# -# CMAKE_EXPAND_IMPORTED_TARGETS() takes a list of libraries and replaces -# all imported targets contained in this list with their actual file -# paths of the referenced libraries on disk, including the libraries -# from their link interfaces. If a CONFIGURATION is given, it uses the -# respective configuration of the imported targets if it exists. If no -# CONFIGURATION is given, it uses the first configuration from -# ${CMAKE_CONFIGURATION_TYPES} if set, otherwise ${CMAKE_BUILD_TYPE}. -# -# :: -# -# cmake_expand_imported_targets(expandedLibs -# LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} -# CONFIGURATION "${CMAKE_TRY_COMPILE_CONFIGURATION}" ) +#[=======================================================================[.rst: +CMakeExpandImportedTargets +-------------------------- + +Deprecated. Do not use. + +This module was once needed to expand imported targets to the underlying +libraries they reference on disk for use with the :command:`try_compile` +and :command:`try_run` commands. These commands now support imported +libraries in their ``LINK_LIBRARIES`` options (since CMake 2.8.11 +for :command:`try_compile` and since CMake 3.2 for :command:`try_run`). + +This module does not support the policy :policy:`CMP0022` ``NEW`` +behavior or use of the :prop_tgt:`INTERFACE_LINK_LIBRARIES` property +because :manual:`generator expressions <cmake-generator-expressions(7)>` +cannot be evaluated during configuration. + +:: + + CMAKE_EXPAND_IMPORTED_TARGETS(<var> LIBRARIES lib1 lib2...libN + [CONFIGURATION <config>]) + +CMAKE_EXPAND_IMPORTED_TARGETS() takes a list of libraries and replaces +all imported targets contained in this list with their actual file +paths of the referenced libraries on disk, including the libraries +from their link interfaces. If a CONFIGURATION is given, it uses the +respective configuration of the imported targets if it exists. If no +CONFIGURATION is given, it uses the first configuration from +${CMAKE_CONFIGURATION_TYPES} if set, otherwise ${CMAKE_BUILD_TYPE}. + +:: + + cmake_expand_imported_targets(expandedLibs + LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} + CONFIGURATION "${CMAKE_TRY_COMPILE_CONFIGURATION}" ) +#]=======================================================================] function(CMAKE_EXPAND_IMPORTED_TARGETS _RESULT ) diff --git a/Modules/CMakeFindFrameworks.cmake b/Modules/CMakeFindFrameworks.cmake index 6c4c527296..06c05fb915 100644 --- a/Modules/CMakeFindFrameworks.cmake +++ b/Modules/CMakeFindFrameworks.cmake @@ -1,15 +1,16 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CMakeFindFrameworks -# ------------------- -# -# helper module to find OSX frameworks -# -# This module reads hints about search locations from variables:: -# -# CMAKE_FIND_FRAMEWORK_EXTRA_LOCATIONS - Extra directories +#[=======================================================================[.rst: +CMakeFindFrameworks +------------------- + +helper module to find OSX frameworks + +This module reads hints about search locations from variables:: + + CMAKE_FIND_FRAMEWORK_EXTRA_LOCATIONS - Extra directories +#]=======================================================================] if(NOT CMAKE_FIND_FRAMEWORKS_INCLUDED) set(CMAKE_FIND_FRAMEWORKS_INCLUDED 1) diff --git a/Modules/CMakeFindPackageMode.cmake b/Modules/CMakeFindPackageMode.cmake index ec3652cfa2..815dfc90d8 100644 --- a/Modules/CMakeFindPackageMode.cmake +++ b/Modules/CMakeFindPackageMode.cmake @@ -1,33 +1,34 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CMakeFindPackageMode -# -------------------- -# -# -# -# This file is executed by cmake when invoked with --find-package. It -# expects that the following variables are set using -D: -# -# ``NAME`` -# name of the package -# ``COMPILER_ID`` -# the CMake compiler ID for which the result is, -# i.e. GNU/Intel/Clang/MSVC, etc. -# ``LANGUAGE`` -# language for which the result will be used, -# i.e. C/CXX/Fortran/ASM -# ``MODE`` -# ``EXIST`` -# only check for existence of the given package -# ``COMPILE`` -# print the flags needed for compiling an object file which uses -# the given package -# ``LINK`` -# print the flags needed for linking when using the given package -# ``QUIET`` -# if TRUE, don't print anything +#[=======================================================================[.rst: +CMakeFindPackageMode +-------------------- + + + +This file is executed by cmake when invoked with --find-package. It +expects that the following variables are set using -D: + +``NAME`` + name of the package +``COMPILER_ID`` + the CMake compiler ID for which the result is, + i.e. GNU/Intel/Clang/MSVC, etc. +``LANGUAGE`` + language for which the result will be used, + i.e. C/CXX/Fortran/ASM +``MODE`` + ``EXIST`` + only check for existence of the given package + ``COMPILE`` + print the flags needed for compiling an object file which uses + the given package + ``LINK`` + print the flags needed for linking when using the given package +``QUIET`` + if TRUE, don't print anything +#]=======================================================================] if(NOT NAME) message(FATAL_ERROR "Name of the package to be searched not specified. Set the CMake variable NAME, e.g. -DNAME=JPEG .") diff --git a/Modules/CMakeForceCompiler.cmake b/Modules/CMakeForceCompiler.cmake index 1bc80fd751..ec17c2e0de 100644 --- a/Modules/CMakeForceCompiler.cmake +++ b/Modules/CMakeForceCompiler.cmake @@ -1,69 +1,70 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CMakeForceCompiler -# ------------------ -# -# Deprecated. Do not use. -# -# The macros provided by this module were once intended for use by -# cross-compiling toolchain files when CMake was not able to automatically -# detect the compiler identification. Since the introduction of this module, -# CMake's compiler identification capabilities have improved and can now be -# taught to recognize any compiler. Furthermore, the suite of information -# CMake detects from a compiler is now too extensive to be provided by -# toolchain files using these macros. -# -# One common use case for this module was to skip CMake's checks for a -# working compiler when using a cross-compiler that cannot link binaries -# without special flags or custom linker scripts. This case is now supported -# by setting the :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` variable in the -# toolchain file instead. -# -# ------------------------------------------------------------------------- -# -# Macro CMAKE_FORCE_C_COMPILER has the following signature: -# -# :: -# -# CMAKE_FORCE_C_COMPILER(<compiler> <compiler-id>) -# -# It sets CMAKE_C_COMPILER to the given compiler and the cmake internal -# variable CMAKE_C_COMPILER_ID to the given compiler-id. It also -# bypasses the check for working compiler and basic compiler information -# tests. -# -# Macro CMAKE_FORCE_CXX_COMPILER has the following signature: -# -# :: -# -# CMAKE_FORCE_CXX_COMPILER(<compiler> <compiler-id>) -# -# It sets CMAKE_CXX_COMPILER to the given compiler and the cmake -# internal variable CMAKE_CXX_COMPILER_ID to the given compiler-id. It -# also bypasses the check for working compiler and basic compiler -# information tests. -# -# Macro CMAKE_FORCE_Fortran_COMPILER has the following signature: -# -# :: -# -# CMAKE_FORCE_Fortran_COMPILER(<compiler> <compiler-id>) -# -# It sets CMAKE_Fortran_COMPILER to the given compiler and the cmake -# internal variable CMAKE_Fortran_COMPILER_ID to the given compiler-id. -# It also bypasses the check for working compiler and basic compiler -# information tests. -# -# So a simple toolchain file could look like this: -# -# :: -# -# include (CMakeForceCompiler) -# set(CMAKE_SYSTEM_NAME Generic) -# CMAKE_FORCE_C_COMPILER (chc12 MetrowerksHicross) -# CMAKE_FORCE_CXX_COMPILER (chc12 MetrowerksHicross) +#[=======================================================================[.rst: +CMakeForceCompiler +------------------ + +Deprecated. Do not use. + +The macros provided by this module were once intended for use by +cross-compiling toolchain files when CMake was not able to automatically +detect the compiler identification. Since the introduction of this module, +CMake's compiler identification capabilities have improved and can now be +taught to recognize any compiler. Furthermore, the suite of information +CMake detects from a compiler is now too extensive to be provided by +toolchain files using these macros. + +One common use case for this module was to skip CMake's checks for a +working compiler when using a cross-compiler that cannot link binaries +without special flags or custom linker scripts. This case is now supported +by setting the :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` variable in the +toolchain file instead. + +------------------------------------------------------------------------- + +Macro CMAKE_FORCE_C_COMPILER has the following signature: + +:: + + CMAKE_FORCE_C_COMPILER(<compiler> <compiler-id>) + +It sets CMAKE_C_COMPILER to the given compiler and the cmake internal +variable CMAKE_C_COMPILER_ID to the given compiler-id. It also +bypasses the check for working compiler and basic compiler information +tests. + +Macro CMAKE_FORCE_CXX_COMPILER has the following signature: + +:: + + CMAKE_FORCE_CXX_COMPILER(<compiler> <compiler-id>) + +It sets CMAKE_CXX_COMPILER to the given compiler and the cmake +internal variable CMAKE_CXX_COMPILER_ID to the given compiler-id. It +also bypasses the check for working compiler and basic compiler +information tests. + +Macro CMAKE_FORCE_Fortran_COMPILER has the following signature: + +:: + + CMAKE_FORCE_Fortran_COMPILER(<compiler> <compiler-id>) + +It sets CMAKE_Fortran_COMPILER to the given compiler and the cmake +internal variable CMAKE_Fortran_COMPILER_ID to the given compiler-id. +It also bypasses the check for working compiler and basic compiler +information tests. + +So a simple toolchain file could look like this: + +:: + + include (CMakeForceCompiler) + set(CMAKE_SYSTEM_NAME Generic) + CMAKE_FORCE_C_COMPILER (chc12 MetrowerksHicross) + CMAKE_FORCE_CXX_COMPILER (chc12 MetrowerksHicross) +#]=======================================================================] macro(CMAKE_FORCE_C_COMPILER compiler id) message(DEPRECATION "The CMAKE_FORCE_C_COMPILER macro is deprecated. " diff --git a/Modules/CMakeGraphVizOptions.cmake b/Modules/CMakeGraphVizOptions.cmake index 0d7f1d9794..1911e7392e 100644 --- a/Modules/CMakeGraphVizOptions.cmake +++ b/Modules/CMakeGraphVizOptions.cmake @@ -1,122 +1,123 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CMakeGraphVizOptions -# -------------------- -# -# The builtin graphviz support of CMake. -# -# Variables specific to the graphviz support -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# CMake -# can generate `graphviz <http://www.graphviz.org/>`_ files, showing the dependencies between the -# targets in a project and also external libraries which are linked -# against. When CMake is run with the ``--graphviz=foo.dot`` option, it will -# produce: -# -# * a ``foo.dot`` file showing all dependencies in the project -# * a ``foo.dot.<target>`` file for each target, file showing on which other targets the respective target depends -# * a ``foo.dot.<target>.dependers`` file, showing which other targets depend on the respective target -# -# The different dependency types ``PUBLIC``, ``PRIVATE`` and ``INTERFACE`` -# are represented as solid, dashed and dotted edges. -# -# This can result in huge graphs. Using the file -# ``CMakeGraphVizOptions.cmake`` the look and content of the generated -# graphs can be influenced. This file is searched first in -# :variable:`CMAKE_BINARY_DIR` and then in :variable:`CMAKE_SOURCE_DIR`. If found, it is -# read and the variables set in it are used to adjust options for the -# generated graphviz files. -# -# .. variable:: GRAPHVIZ_GRAPH_TYPE -# -# The graph type. -# -# * Mandatory : NO -# * Default : "digraph" -# -# Valid graph types are: -# -# * "graph" : Nodes are joined with lines -# * "digraph" : Nodes are joined with arrows showing direction -# * "strict graph" : Like "graph" but max one line between each node -# * "strict digraph" : Like "graph" but max one line between each node in each direction -# -# .. variable:: GRAPHVIZ_GRAPH_NAME -# -# The graph name. -# -# * Mandatory : NO -# * Default : "GG" -# -# .. variable:: GRAPHVIZ_GRAPH_HEADER -# -# The header written at the top of the graphviz file. -# -# * Mandatory : NO -# * Default : "node [n fontsize = "12"];" -# -# .. variable:: GRAPHVIZ_NODE_PREFIX -# -# The prefix for each node in the graphviz file. -# -# * Mandatory : NO -# * Default : "node" -# -# .. variable:: GRAPHVIZ_EXECUTABLES -# -# Set this to FALSE to exclude executables from the generated graphs. -# -# * Mandatory : NO -# * Default : TRUE -# -# .. variable:: GRAPHVIZ_STATIC_LIBS -# -# Set this to FALSE to exclude static libraries from the generated graphs. -# -# * Mandatory : NO -# * Default : TRUE -# -# .. variable:: GRAPHVIZ_SHARED_LIBS -# -# Set this to FALSE to exclude shared libraries from the generated graphs. -# -# * Mandatory : NO -# * Default : TRUE -# -# .. variable:: GRAPHVIZ_MODULE_LIBS -# -# Set this to FALSE to exclude module libraries from the generated graphs. -# -# * Mandatory : NO -# * Default : TRUE -# -# .. variable:: GRAPHVIZ_EXTERNAL_LIBS -# -# Set this to FALSE to exclude external libraries from the generated graphs. -# -# * Mandatory : NO -# * Default : TRUE -# -# .. variable:: GRAPHVIZ_IGNORE_TARGETS -# -# A list of regular expressions for ignoring targets. -# -# * Mandatory : NO -# * Default : empty -# -# .. variable:: GRAPHVIZ_GENERATE_PER_TARGET -# -# Set this to FALSE to exclude per target graphs ``foo.dot.<target>``. -# -# * Mandatory : NO -# * Default : TRUE -# -# .. variable:: GRAPHVIZ_GENERATE_DEPENDERS -# -# Set this to FALSE to exclude depender graphs ``foo.dot.<target>.dependers``. -# -# * Mandatory : NO -# * Default : TRUE +#[=======================================================================[.rst: +CMakeGraphVizOptions +-------------------- + +The builtin graphviz support of CMake. + +Variables specific to the graphviz support +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +CMake +can generate `graphviz <http://www.graphviz.org/>`_ files, showing the dependencies between the +targets in a project and also external libraries which are linked +against. When CMake is run with the ``--graphviz=foo.dot`` option, it will +produce: + +* a ``foo.dot`` file showing all dependencies in the project +* a ``foo.dot.<target>`` file for each target, file showing on which other targets the respective target depends +* a ``foo.dot.<target>.dependers`` file, showing which other targets depend on the respective target + +The different dependency types ``PUBLIC``, ``PRIVATE`` and ``INTERFACE`` +are represented as solid, dashed and dotted edges. + +This can result in huge graphs. Using the file +``CMakeGraphVizOptions.cmake`` the look and content of the generated +graphs can be influenced. This file is searched first in +:variable:`CMAKE_BINARY_DIR` and then in :variable:`CMAKE_SOURCE_DIR`. If found, it is +read and the variables set in it are used to adjust options for the +generated graphviz files. + +.. variable:: GRAPHVIZ_GRAPH_TYPE + + The graph type. + + * Mandatory : NO + * Default : "digraph" + + Valid graph types are: + + * "graph" : Nodes are joined with lines + * "digraph" : Nodes are joined with arrows showing direction + * "strict graph" : Like "graph" but max one line between each node + * "strict digraph" : Like "graph" but max one line between each node in each direction + +.. variable:: GRAPHVIZ_GRAPH_NAME + + The graph name. + + * Mandatory : NO + * Default : "GG" + +.. variable:: GRAPHVIZ_GRAPH_HEADER + + The header written at the top of the graphviz file. + + * Mandatory : NO + * Default : "node [n fontsize = "12"];" + +.. variable:: GRAPHVIZ_NODE_PREFIX + + The prefix for each node in the graphviz file. + + * Mandatory : NO + * Default : "node" + +.. variable:: GRAPHVIZ_EXECUTABLES + + Set this to FALSE to exclude executables from the generated graphs. + + * Mandatory : NO + * Default : TRUE + +.. variable:: GRAPHVIZ_STATIC_LIBS + + Set this to FALSE to exclude static libraries from the generated graphs. + + * Mandatory : NO + * Default : TRUE + +.. variable:: GRAPHVIZ_SHARED_LIBS + + Set this to FALSE to exclude shared libraries from the generated graphs. + + * Mandatory : NO + * Default : TRUE + +.. variable:: GRAPHVIZ_MODULE_LIBS + + Set this to FALSE to exclude module libraries from the generated graphs. + + * Mandatory : NO + * Default : TRUE + +.. variable:: GRAPHVIZ_EXTERNAL_LIBS + + Set this to FALSE to exclude external libraries from the generated graphs. + + * Mandatory : NO + * Default : TRUE + +.. variable:: GRAPHVIZ_IGNORE_TARGETS + + A list of regular expressions for ignoring targets. + + * Mandatory : NO + * Default : empty + +.. variable:: GRAPHVIZ_GENERATE_PER_TARGET + + Set this to FALSE to exclude per target graphs ``foo.dot.<target>``. + + * Mandatory : NO + * Default : TRUE + +.. variable:: GRAPHVIZ_GENERATE_DEPENDERS + + Set this to FALSE to exclude depender graphs ``foo.dot.<target>.dependers``. + + * Mandatory : NO + * Default : TRUE +#]=======================================================================] diff --git a/Modules/CMakePackageConfigHelpers.cmake b/Modules/CMakePackageConfigHelpers.cmake index d5301d7379..bcc9bf85f4 100644 --- a/Modules/CMakePackageConfigHelpers.cmake +++ b/Modules/CMakePackageConfigHelpers.cmake @@ -1,209 +1,210 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CMakePackageConfigHelpers -# ------------------------- -# -# Helpers functions for creating config files that can be included by other -# projects to find and use a package. -# -# Adds the :command:`configure_package_config_file()` and -# :command:`write_basic_package_version_file()` commands. -# -# Generating a Package Configuration File -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# .. command:: configure_package_config_file -# -# Create a config file for a project:: -# -# configure_package_config_file(<input> <output> -# INSTALL_DESTINATION <path> -# [PATH_VARS <var1> <var2> ... <varN>] -# [NO_SET_AND_CHECK_MACRO] -# [NO_CHECK_REQUIRED_COMPONENTS_MACRO] -# [INSTALL_PREFIX <path>] -# ) -# -# ``configure_package_config_file()`` should be used instead of the plain -# :command:`configure_file()` command when creating the ``<PackageName>Config.cmake`` -# or ``<PackageName>-config.cmake`` file for installing a project or library. -# It helps making the resulting package relocatable by avoiding hardcoded paths -# in the installed ``Config.cmake`` file. -# -# In a ``FooConfig.cmake`` file there may be code like this to make the install -# destinations know to the using project: -# -# .. code-block:: cmake -# -# set(FOO_INCLUDE_DIR "@CMAKE_INSTALL_FULL_INCLUDEDIR@" ) -# set(FOO_DATA_DIR "@CMAKE_INSTALL_PREFIX@/@RELATIVE_DATA_INSTALL_DIR@" ) -# set(FOO_ICONS_DIR "@CMAKE_INSTALL_PREFIX@/share/icons" ) -# #...logic to determine installedPrefix from the own location... -# set(FOO_CONFIG_DIR "${installedPrefix}/@CONFIG_INSTALL_DIR@" ) -# -# All 4 options shown above are not sufficient, since the first 3 hardcode the -# absolute directory locations, and the 4th case works only if the logic to -# determine the ``installedPrefix`` is correct, and if ``CONFIG_INSTALL_DIR`` -# contains a relative path, which in general cannot be guaranteed. This has the -# effect that the resulting ``FooConfig.cmake`` file would work poorly under -# Windows and OSX, where users are used to choose the install location of a -# binary package at install time, independent from how -# :variable:`CMAKE_INSTALL_PREFIX` was set at build/cmake time. -# -# Using ``configure_package_config_file`` helps. If used correctly, it makes -# the resulting ``FooConfig.cmake`` file relocatable. Usage: -# -# 1. write a ``FooConfig.cmake.in`` file as you are used to -# 2. insert a line containing only the string ``@PACKAGE_INIT@`` -# 3. instead of ``set(FOO_DIR "@SOME_INSTALL_DIR@")``, use -# ``set(FOO_DIR "@PACKAGE_SOME_INSTALL_DIR@")`` (this must be after the -# ``@PACKAGE_INIT@`` line) -# 4. instead of using the normal :command:`configure_file()`, use -# ``configure_package_config_file()`` -# -# -# -# The ``<input>`` and ``<output>`` arguments are the input and output file, the -# same way as in :command:`configure_file()`. -# -# The ``<path>`` given to ``INSTALL_DESTINATION`` must be the destination where -# the ``FooConfig.cmake`` file will be installed to. This path can either be -# absolute, or relative to the ``INSTALL_PREFIX`` path. -# -# The variables ``<var1>`` to ``<varN>`` given as ``PATH_VARS`` are the -# variables which contain install destinations. For each of them the macro will -# create a helper variable ``PACKAGE_<var...>``. These helper variables must be -# used in the ``FooConfig.cmake.in`` file for setting the installed location. -# They are calculated by ``configure_package_config_file`` so that they are -# always relative to the installed location of the package. This works both for -# relative and also for absolute locations. For absolute locations it works -# only if the absolute location is a subdirectory of ``INSTALL_PREFIX``. -# -# If the ``INSTALL_PREFIX`` argument is passed, this is used as base path to -# calculate all the relative paths. The ``<path>`` argument must be an absolute -# path. If this argument is not passed, the :variable:`CMAKE_INSTALL_PREFIX` -# variable will be used instead. The default value is good when generating a -# FooConfig.cmake file to use your package from the install tree. When -# generating a FooConfig.cmake file to use your package from the build tree this -# option should be used. -# -# By default ``configure_package_config_file`` also generates two helper macros, -# ``set_and_check()`` and ``check_required_components()`` into the -# ``FooConfig.cmake`` file. -# -# ``set_and_check()`` should be used instead of the normal ``set()`` command for -# setting directories and file locations. Additionally to setting the variable -# it also checks that the referenced file or directory actually exists and fails -# with a ``FATAL_ERROR`` otherwise. This makes sure that the created -# ``FooConfig.cmake`` file does not contain wrong references. -# When using the ``NO_SET_AND_CHECK_MACRO``, this macro is not generated -# into the ``FooConfig.cmake`` file. -# -# ``check_required_components(<PackageName>)`` should be called at the end of -# the ``FooConfig.cmake`` file. This macro checks whether all requested, -# non-optional components have been found, and if this is not the case, sets -# the ``Foo_FOUND`` variable to ``FALSE``, so that the package is considered to -# be not found. It does that by testing the ``Foo_<Component>_FOUND`` -# variables for all requested required components. This macro should be -# called even if the package doesn't provide any components to make sure -# users are not specifying components erroneously. When using the -# ``NO_CHECK_REQUIRED_COMPONENTS_MACRO`` option, this macro is not generated -# into the ``FooConfig.cmake`` file. -# -# For an example see below the documentation for -# :command:`write_basic_package_version_file()`. -# -# Generating a Package Version File -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# .. command:: write_basic_package_version_file -# -# Create a version file for a project:: -# -# write_basic_package_version_file(<filename> -# [VERSION <major.minor.patch>] -# COMPATIBILITY <AnyNewerVersion|SameMajorVersion|SameMinorVersion|ExactVersion> ) -# -# -# Writes a file for use as ``<PackageName>ConfigVersion.cmake`` file to -# ``<filename>``. See the documentation of :command:`find_package()` for -# details on this. -# -# ``<filename>`` is the output filename, it should be in the build tree. -# ``<major.minor.patch>`` is the version number of the project to be installed. -# -# If no ``VERSION`` is given, the :variable:`PROJECT_VERSION` variable is used. -# If this hasn't been set, it errors out. -# -# The ``COMPATIBILITY`` mode ``AnyNewerVersion`` means that the installed -# package version will be considered compatible if it is newer or exactly the -# same as the requested version. This mode should be used for packages which -# are fully backward compatible, also across major versions. -# If ``SameMajorVersion`` is used instead, then the behaviour differs from -# ``AnyNewerVersion`` in that the major version number must be the same as -# requested, e.g. version 2.0 will not be considered compatible if 1.0 is -# requested. This mode should be used for packages which guarantee backward -# compatibility within the same major version. -# If ``SameMinorVersion`` is used, the behaviour is the same as -# ``SameMajorVersion``, but both major and minor version must be the same as -# requested, e.g version 0.2 will not be compatible if 0.1 is requested. -# If ``ExactVersion`` is used, then the package is only considered compatible if -# the requested version matches exactly its own version number (not considering -# the tweak version). For example, version 1.2.3 of a package is only -# considered compatible to requested version 1.2.3. This mode is for packages -# without compatibility guarantees. -# If your project has more elaborated version matching rules, you will need to -# write your own custom ``ConfigVersion.cmake`` file instead of using this -# macro. -# -# Internally, this macro executes :command:`configure_file()` to create the -# resulting version file. Depending on the ``COMPATIBILITY``, the corresponding -# ``BasicConfigVersion-<COMPATIBILITY>.cmake.in`` file is used. -# Please note that these files are internal to CMake and you should not call -# :command:`configure_file()` on them yourself, but they can be used as starting -# point to create more sophisticted custom ``ConfigVersion.cmake`` files. -# -# Example Generating Package Files -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# Example using both :command:`configure_package_config_file` and -# ``write_basic_package_version_file()``: -# -# ``CMakeLists.txt``: -# -# .. code-block:: cmake -# -# set(INCLUDE_INSTALL_DIR include/ ... CACHE ) -# set(LIB_INSTALL_DIR lib/ ... CACHE ) -# set(SYSCONFIG_INSTALL_DIR etc/foo/ ... CACHE ) -# #... -# include(CMakePackageConfigHelpers) -# configure_package_config_file(FooConfig.cmake.in -# ${CMAKE_CURRENT_BINARY_DIR}/FooConfig.cmake -# INSTALL_DESTINATION ${LIB_INSTALL_DIR}/Foo/cmake -# PATH_VARS INCLUDE_INSTALL_DIR SYSCONFIG_INSTALL_DIR) -# write_basic_package_version_file( -# ${CMAKE_CURRENT_BINARY_DIR}/FooConfigVersion.cmake -# VERSION 1.2.3 -# COMPATIBILITY SameMajorVersion ) -# install(FILES ${CMAKE_CURRENT_BINARY_DIR}/FooConfig.cmake -# ${CMAKE_CURRENT_BINARY_DIR}/FooConfigVersion.cmake -# DESTINATION ${LIB_INSTALL_DIR}/Foo/cmake ) -# -# ``FooConfig.cmake.in``: -# -# :: -# -# set(FOO_VERSION x.y.z) -# ... -# @PACKAGE_INIT@ -# ... -# set_and_check(FOO_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@") -# set_and_check(FOO_SYSCONFIG_DIR "@PACKAGE_SYSCONFIG_INSTALL_DIR@") -# -# check_required_components(Foo) +#[=======================================================================[.rst: +CMakePackageConfigHelpers +------------------------- + +Helpers functions for creating config files that can be included by other +projects to find and use a package. + +Adds the :command:`configure_package_config_file()` and +:command:`write_basic_package_version_file()` commands. + +Generating a Package Configuration File +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. command:: configure_package_config_file + + Create a config file for a project:: + + configure_package_config_file(<input> <output> + INSTALL_DESTINATION <path> + [PATH_VARS <var1> <var2> ... <varN>] + [NO_SET_AND_CHECK_MACRO] + [NO_CHECK_REQUIRED_COMPONENTS_MACRO] + [INSTALL_PREFIX <path>] + ) + +``configure_package_config_file()`` should be used instead of the plain +:command:`configure_file()` command when creating the ``<PackageName>Config.cmake`` +or ``<PackageName>-config.cmake`` file for installing a project or library. +It helps making the resulting package relocatable by avoiding hardcoded paths +in the installed ``Config.cmake`` file. + +In a ``FooConfig.cmake`` file there may be code like this to make the install +destinations know to the using project: + +.. code-block:: cmake + + set(FOO_INCLUDE_DIR "@CMAKE_INSTALL_FULL_INCLUDEDIR@" ) + set(FOO_DATA_DIR "@CMAKE_INSTALL_PREFIX@/@RELATIVE_DATA_INSTALL_DIR@" ) + set(FOO_ICONS_DIR "@CMAKE_INSTALL_PREFIX@/share/icons" ) + #...logic to determine installedPrefix from the own location... + set(FOO_CONFIG_DIR "${installedPrefix}/@CONFIG_INSTALL_DIR@" ) + +All 4 options shown above are not sufficient, since the first 3 hardcode the +absolute directory locations, and the 4th case works only if the logic to +determine the ``installedPrefix`` is correct, and if ``CONFIG_INSTALL_DIR`` +contains a relative path, which in general cannot be guaranteed. This has the +effect that the resulting ``FooConfig.cmake`` file would work poorly under +Windows and OSX, where users are used to choose the install location of a +binary package at install time, independent from how +:variable:`CMAKE_INSTALL_PREFIX` was set at build/cmake time. + +Using ``configure_package_config_file`` helps. If used correctly, it makes +the resulting ``FooConfig.cmake`` file relocatable. Usage: + +1. write a ``FooConfig.cmake.in`` file as you are used to +2. insert a line containing only the string ``@PACKAGE_INIT@`` +3. instead of ``set(FOO_DIR "@SOME_INSTALL_DIR@")``, use + ``set(FOO_DIR "@PACKAGE_SOME_INSTALL_DIR@")`` (this must be after the + ``@PACKAGE_INIT@`` line) +4. instead of using the normal :command:`configure_file()`, use + ``configure_package_config_file()`` + + + +The ``<input>`` and ``<output>`` arguments are the input and output file, the +same way as in :command:`configure_file()`. + +The ``<path>`` given to ``INSTALL_DESTINATION`` must be the destination where +the ``FooConfig.cmake`` file will be installed to. This path can either be +absolute, or relative to the ``INSTALL_PREFIX`` path. + +The variables ``<var1>`` to ``<varN>`` given as ``PATH_VARS`` are the +variables which contain install destinations. For each of them the macro will +create a helper variable ``PACKAGE_<var...>``. These helper variables must be +used in the ``FooConfig.cmake.in`` file for setting the installed location. +They are calculated by ``configure_package_config_file`` so that they are +always relative to the installed location of the package. This works both for +relative and also for absolute locations. For absolute locations it works +only if the absolute location is a subdirectory of ``INSTALL_PREFIX``. + +If the ``INSTALL_PREFIX`` argument is passed, this is used as base path to +calculate all the relative paths. The ``<path>`` argument must be an absolute +path. If this argument is not passed, the :variable:`CMAKE_INSTALL_PREFIX` +variable will be used instead. The default value is good when generating a +FooConfig.cmake file to use your package from the install tree. When +generating a FooConfig.cmake file to use your package from the build tree this +option should be used. + +By default ``configure_package_config_file`` also generates two helper macros, +``set_and_check()`` and ``check_required_components()`` into the +``FooConfig.cmake`` file. + +``set_and_check()`` should be used instead of the normal ``set()`` command for +setting directories and file locations. Additionally to setting the variable +it also checks that the referenced file or directory actually exists and fails +with a ``FATAL_ERROR`` otherwise. This makes sure that the created +``FooConfig.cmake`` file does not contain wrong references. +When using the ``NO_SET_AND_CHECK_MACRO``, this macro is not generated +into the ``FooConfig.cmake`` file. + +``check_required_components(<PackageName>)`` should be called at the end of +the ``FooConfig.cmake`` file. This macro checks whether all requested, +non-optional components have been found, and if this is not the case, sets +the ``Foo_FOUND`` variable to ``FALSE``, so that the package is considered to +be not found. It does that by testing the ``Foo_<Component>_FOUND`` +variables for all requested required components. This macro should be +called even if the package doesn't provide any components to make sure +users are not specifying components erroneously. When using the +``NO_CHECK_REQUIRED_COMPONENTS_MACRO`` option, this macro is not generated +into the ``FooConfig.cmake`` file. + +For an example see below the documentation for +:command:`write_basic_package_version_file()`. + +Generating a Package Version File +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. command:: write_basic_package_version_file + + Create a version file for a project:: + + write_basic_package_version_file(<filename> + [VERSION <major.minor.patch>] + COMPATIBILITY <AnyNewerVersion|SameMajorVersion|SameMinorVersion|ExactVersion> ) + + +Writes a file for use as ``<PackageName>ConfigVersion.cmake`` file to +``<filename>``. See the documentation of :command:`find_package()` for +details on this. + +``<filename>`` is the output filename, it should be in the build tree. +``<major.minor.patch>`` is the version number of the project to be installed. + +If no ``VERSION`` is given, the :variable:`PROJECT_VERSION` variable is used. +If this hasn't been set, it errors out. + +The ``COMPATIBILITY`` mode ``AnyNewerVersion`` means that the installed +package version will be considered compatible if it is newer or exactly the +same as the requested version. This mode should be used for packages which +are fully backward compatible, also across major versions. +If ``SameMajorVersion`` is used instead, then the behaviour differs from +``AnyNewerVersion`` in that the major version number must be the same as +requested, e.g. version 2.0 will not be considered compatible if 1.0 is +requested. This mode should be used for packages which guarantee backward +compatibility within the same major version. +If ``SameMinorVersion`` is used, the behaviour is the same as +``SameMajorVersion``, but both major and minor version must be the same as +requested, e.g version 0.2 will not be compatible if 0.1 is requested. +If ``ExactVersion`` is used, then the package is only considered compatible if +the requested version matches exactly its own version number (not considering +the tweak version). For example, version 1.2.3 of a package is only +considered compatible to requested version 1.2.3. This mode is for packages +without compatibility guarantees. +If your project has more elaborated version matching rules, you will need to +write your own custom ``ConfigVersion.cmake`` file instead of using this +macro. + +Internally, this macro executes :command:`configure_file()` to create the +resulting version file. Depending on the ``COMPATIBILITY``, the corresponding +``BasicConfigVersion-<COMPATIBILITY>.cmake.in`` file is used. +Please note that these files are internal to CMake and you should not call +:command:`configure_file()` on them yourself, but they can be used as starting +point to create more sophisticted custom ``ConfigVersion.cmake`` files. + +Example Generating Package Files +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Example using both :command:`configure_package_config_file` and +``write_basic_package_version_file()``: + +``CMakeLists.txt``: + +.. code-block:: cmake + + set(INCLUDE_INSTALL_DIR include/ ... CACHE ) + set(LIB_INSTALL_DIR lib/ ... CACHE ) + set(SYSCONFIG_INSTALL_DIR etc/foo/ ... CACHE ) + #... + include(CMakePackageConfigHelpers) + configure_package_config_file(FooConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/FooConfig.cmake + INSTALL_DESTINATION ${LIB_INSTALL_DIR}/Foo/cmake + PATH_VARS INCLUDE_INSTALL_DIR SYSCONFIG_INSTALL_DIR) + write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/FooConfigVersion.cmake + VERSION 1.2.3 + COMPATIBILITY SameMajorVersion ) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/FooConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/FooConfigVersion.cmake + DESTINATION ${LIB_INSTALL_DIR}/Foo/cmake ) + +``FooConfig.cmake.in``: + +:: + + set(FOO_VERSION x.y.z) + ... + @PACKAGE_INIT@ + ... + set_and_check(FOO_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@") + set_and_check(FOO_SYSCONFIG_DIR "@PACKAGE_SYSCONFIG_INSTALL_DIR@") + + check_required_components(Foo) +#]=======================================================================] include(WriteBasicConfigVersionFile) diff --git a/Modules/CMakeParseArguments.cmake b/Modules/CMakeParseArguments.cmake index 7ee2bbacef..c753b7f51f 100644 --- a/Modules/CMakeParseArguments.cmake +++ b/Modules/CMakeParseArguments.cmake @@ -1,11 +1,12 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CMakeParseArguments -# ------------------- -# -# This module once implemented the :command:`cmake_parse_arguments` command -# that is now implemented natively by CMake. It is now an empty placeholder -# for compatibility with projects that include it to get the command from -# CMake 3.4 and lower. +#[=======================================================================[.rst: +CMakeParseArguments +------------------- + +This module once implemented the :command:`cmake_parse_arguments` command +that is now implemented natively by CMake. It is now an empty placeholder +for compatibility with projects that include it to get the command from +CMake 3.4 and lower. +#]=======================================================================] diff --git a/Modules/CMakePrintHelpers.cmake b/Modules/CMakePrintHelpers.cmake index 21c333e313..d5bbb4f008 100644 --- a/Modules/CMakePrintHelpers.cmake +++ b/Modules/CMakePrintHelpers.cmake @@ -1,43 +1,44 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CMakePrintHelpers -# ----------------- -# -# Convenience macros for printing properties and variables, useful e.g. for debugging. -# -# :: -# -# CMAKE_PRINT_PROPERTIES([TARGETS target1 .. targetN] -# [SOURCES source1 .. sourceN] -# [DIRECTORIES dir1 .. dirN] -# [TESTS test1 .. testN] -# [CACHE_ENTRIES entry1 .. entryN] -# PROPERTIES prop1 .. propN ) -# -# This macro prints the values of the properties of the given targets, -# source files, directories, tests or cache entries. Exactly one of the -# scope keywords must be used. Example:: -# -# cmake_print_properties(TARGETS foo bar PROPERTIES -# LOCATION INTERFACE_INCLUDE_DIRS) -# -# This will print the LOCATION and INTERFACE_INCLUDE_DIRS properties for -# both targets foo and bar. -# -# -# -# CMAKE_PRINT_VARIABLES(var1 var2 .. varN) -# -# This macro will print the name of each variable followed by its value. -# Example:: -# -# cmake_print_variables(CMAKE_C_COMPILER CMAKE_MAJOR_VERSION DOES_NOT_EXIST) -# -# Gives:: -# -# -- CMAKE_C_COMPILER="/usr/bin/gcc" ; CMAKE_MAJOR_VERSION="2" ; DOES_NOT_EXIST="" +#[=======================================================================[.rst: +CMakePrintHelpers +----------------- + +Convenience macros for printing properties and variables, useful e.g. for debugging. + +:: + + CMAKE_PRINT_PROPERTIES([TARGETS target1 .. targetN] + [SOURCES source1 .. sourceN] + [DIRECTORIES dir1 .. dirN] + [TESTS test1 .. testN] + [CACHE_ENTRIES entry1 .. entryN] + PROPERTIES prop1 .. propN ) + +This macro prints the values of the properties of the given targets, +source files, directories, tests or cache entries. Exactly one of the +scope keywords must be used. Example:: + + cmake_print_properties(TARGETS foo bar PROPERTIES + LOCATION INTERFACE_INCLUDE_DIRS) + +This will print the LOCATION and INTERFACE_INCLUDE_DIRS properties for +both targets foo and bar. + + + +CMAKE_PRINT_VARIABLES(var1 var2 .. varN) + +This macro will print the name of each variable followed by its value. +Example:: + + cmake_print_variables(CMAKE_C_COMPILER CMAKE_MAJOR_VERSION DOES_NOT_EXIST) + +Gives:: + + -- CMAKE_C_COMPILER="/usr/bin/gcc" ; CMAKE_MAJOR_VERSION="2" ; DOES_NOT_EXIST="" +#]=======================================================================] function(CMAKE_PRINT_VARIABLES) set(msg "") diff --git a/Modules/CMakePrintSystemInformation.cmake b/Modules/CMakePrintSystemInformation.cmake index e74c801db5..f873a4d972 100644 --- a/Modules/CMakePrintSystemInformation.cmake +++ b/Modules/CMakePrintSystemInformation.cmake @@ -1,14 +1,15 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CMakePrintSystemInformation -# --------------------------- -# -# print system information -# -# This file can be used for diagnostic purposes just include it in a -# project to see various internal CMake variables. +#[=======================================================================[.rst: +CMakePrintSystemInformation +--------------------------- + +print system information + +This file can be used for diagnostic purposes just include it in a +project to see various internal CMake variables. +#]=======================================================================] message("CMAKE_SYSTEM is ${CMAKE_SYSTEM} ${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_VERSION}") message("CMAKE_SYSTEM file is ${CMAKE_SYSTEM_INFO_FILE}") diff --git a/Modules/CMakePushCheckState.cmake b/Modules/CMakePushCheckState.cmake index 98eea0532d..7628d1ac69 100644 --- a/Modules/CMakePushCheckState.cmake +++ b/Modules/CMakePushCheckState.cmake @@ -1,40 +1,41 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CMakePushCheckState -# ------------------- -# -# -# -# This module defines three macros: CMAKE_PUSH_CHECK_STATE() -# CMAKE_POP_CHECK_STATE() and CMAKE_RESET_CHECK_STATE() These macros can -# be used to save, restore and reset (i.e., clear contents) the state of -# the variables CMAKE_REQUIRED_FLAGS, CMAKE_REQUIRED_DEFINITIONS, -# CMAKE_REQUIRED_LIBRARIES, CMAKE_REQUIRED_INCLUDES and CMAKE_EXTRA_INCLUDE_FILES -# used by the various Check-files coming with CMake, like e.g. -# check_function_exists() etc. The variable contents are pushed on a -# stack, pushing multiple times is supported. This is useful e.g. when -# executing such tests in a Find-module, where they have to be set, but -# after the Find-module has been executed they should have the same -# value as they had before. -# -# CMAKE_PUSH_CHECK_STATE() macro receives optional argument RESET. -# Whether it's specified, CMAKE_PUSH_CHECK_STATE() will set all -# CMAKE_REQUIRED_* variables to empty values, same as -# CMAKE_RESET_CHECK_STATE() call will do. -# -# Usage: -# -# :: -# -# cmake_push_check_state(RESET) -# set(CMAKE_REQUIRED_DEFINITIONS -DSOME_MORE_DEF) -# check_function_exists(...) -# cmake_reset_check_state() -# set(CMAKE_REQUIRED_DEFINITIONS -DANOTHER_DEF) -# check_function_exists(...) -# cmake_pop_check_state() +#[=======================================================================[.rst: +CMakePushCheckState +------------------- + + + +This module defines three macros: CMAKE_PUSH_CHECK_STATE() +CMAKE_POP_CHECK_STATE() and CMAKE_RESET_CHECK_STATE() These macros can +be used to save, restore and reset (i.e., clear contents) the state of +the variables CMAKE_REQUIRED_FLAGS, CMAKE_REQUIRED_DEFINITIONS, +CMAKE_REQUIRED_LIBRARIES, CMAKE_REQUIRED_INCLUDES and CMAKE_EXTRA_INCLUDE_FILES +used by the various Check-files coming with CMake, like e.g. +check_function_exists() etc. The variable contents are pushed on a +stack, pushing multiple times is supported. This is useful e.g. when +executing such tests in a Find-module, where they have to be set, but +after the Find-module has been executed they should have the same +value as they had before. + +CMAKE_PUSH_CHECK_STATE() macro receives optional argument RESET. +Whether it's specified, CMAKE_PUSH_CHECK_STATE() will set all +CMAKE_REQUIRED_* variables to empty values, same as +CMAKE_RESET_CHECK_STATE() call will do. + +Usage: + +:: + + cmake_push_check_state(RESET) + set(CMAKE_REQUIRED_DEFINITIONS -DSOME_MORE_DEF) + check_function_exists(...) + cmake_reset_check_state() + set(CMAKE_REQUIRED_DEFINITIONS -DANOTHER_DEF) + check_function_exists(...) + cmake_pop_check_state() +#]=======================================================================] macro(CMAKE_RESET_CHECK_STATE) diff --git a/Modules/CMakeVerifyManifest.cmake b/Modules/CMakeVerifyManifest.cmake index c477ab1c22..705ef8aa73 100644 --- a/Modules/CMakeVerifyManifest.cmake +++ b/Modules/CMakeVerifyManifest.cmake @@ -1,22 +1,23 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CMakeVerifyManifest -# ------------------- -# -# -# -# CMakeVerifyManifest.cmake -# -# This script is used to verify that embedded manifests and side by side -# manifests for a project match. To run this script, cd to a directory -# and run the script with cmake -P. On the command line you can pass in -# versions that are OK even if not found in the .manifest files. For -# example, cmake -Dallow_versions=8.0.50608.0 -# -PCmakeVerifyManifest.cmake could be used to allow an embedded manifest -# of 8.0.50608.0 to be used in a project even if that version was not -# found in the .manifest file. +#[=======================================================================[.rst: +CMakeVerifyManifest +------------------- + + + +CMakeVerifyManifest.cmake + +This script is used to verify that embedded manifests and side by side +manifests for a project match. To run this script, cd to a directory +and run the script with cmake -P. On the command line you can pass in +versions that are OK even if not found in the .manifest files. For +example, cmake -Dallow_versions=8.0.50608.0 +-PCmakeVerifyManifest.cmake could be used to allow an embedded manifest +of 8.0.50608.0 to be used in a project even if that version was not +found in the .manifest file. +#]=======================================================================] # This script first recursively globs *.manifest files from # the current directory. Then globs *.exe and *.dll. Each diff --git a/Modules/CPackComponent.cmake b/Modules/CPackComponent.cmake index a0d99354d6..211d7673c9 100644 --- a/Modules/CPackComponent.cmake +++ b/Modules/CPackComponent.cmake @@ -1,313 +1,314 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CPackComponent -# -------------- -# -# Build binary and source package installers -# -# Variables concerning CPack Components -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# The CPackComponent module is the module which handles the component -# part of CPack. See CPack module for general information about CPack. -# -# For certain kinds of binary installers (including the graphical -# installers on macOS and Windows), CPack generates installers that -# allow users to select individual application components to install. -# The contents of each of the components are identified by the COMPONENT -# argument of CMake's INSTALL command. These components can be -# annotated with user-friendly names and descriptions, inter-component -# dependencies, etc., and grouped in various ways to customize the -# resulting installer. See the cpack_add_* commands, described below, -# for more information about component-specific installations. -# -# Component-specific installation allows users to select specific sets -# of components to install during the install process. Installation -# components are identified by the COMPONENT argument of CMake's INSTALL -# commands, and should be further described by the following CPack -# commands: -# -# .. variable:: CPACK_COMPONENTS_ALL -# -# The list of component to install. -# -# The default value of this variable is computed by CPack and contains all -# components defined by the project. The user may set it to only include the -# specified components. -# -# Instead of specifying all the desired components, it is possible to obtain a -# list of all defined components and then remove the unwanted ones from the -# list. The :command:`get_cmake_property` command can be used to obtain the -# ``COMPONENTS`` property, then the :command:`list(REMOVE_ITEM)` command can be -# used to remove the unwanted ones. For example, to use all defined components -# except ``foo`` and ``bar``:: -# -# get_cmake_property(CPACK_COMPONENTS_ALL COMPONENTS) -# list(REMOVE_ITEM CPACK_COMPONENTS_ALL "foo" "bar") -# -# .. variable:: CPACK_<GENNAME>_COMPONENT_INSTALL -# -# Enable/Disable component install for CPack generator <GENNAME>. -# -# Each CPack Generator (RPM, DEB, ARCHIVE, NSIS, DMG, etc...) has a legacy -# default behavior. e.g. RPM builds monolithic whereas NSIS builds -# component. One can change the default behavior by setting this variable to -# 0/1 or OFF/ON. -# -# .. variable:: CPACK_COMPONENTS_GROUPING -# -# Specify how components are grouped for multi-package component-aware CPack -# generators. -# -# Some generators like RPM or ARCHIVE family (TGZ, ZIP, ...) generates -# several packages files when asked for component packaging. They group -# the component differently depending on the value of this variable: -# -# * ONE_PER_GROUP (default): creates one package file per component group -# * ALL_COMPONENTS_IN_ONE : creates a single package with all (requested) components -# * IGNORE : creates one package per component, i.e. IGNORE component group -# -# One can specify different grouping for different CPack generator by -# using a CPACK_PROJECT_CONFIG_FILE. -# -# .. variable:: CPACK_COMPONENT_<compName>_DISPLAY_NAME -# -# The name to be displayed for a component. -# -# .. variable:: CPACK_COMPONENT_<compName>_DESCRIPTION -# -# The description of a component. -# -# .. variable:: CPACK_COMPONENT_<compName>_GROUP -# -# The group of a component. -# -# .. variable:: CPACK_COMPONENT_<compName>_DEPENDS -# -# The dependencies (list of components) on which this component depends. -# -# .. variable:: CPACK_COMPONENT_<compName>_HIDDEN -# -# True if this component is hidden from the user. -# -# .. variable:: CPACK_COMPONENT_<compName>_REQUIRED -# -# True if this component is required. -# -# .. variable:: CPACK_COMPONENT_<compName>_DISABLED -# -# True if this component is not selected to be installed by default. -# -# .. command:: cpack_add_component -# -# Describes a CPack installation -# component named by the COMPONENT argument to a CMake INSTALL command. -# -# :: -# -# cpack_add_component(compname -# [DISPLAY_NAME name] -# [DESCRIPTION description] -# [HIDDEN | REQUIRED | DISABLED ] -# [GROUP group] -# [DEPENDS comp1 comp2 ... ] -# [INSTALL_TYPES type1 type2 ... ] -# [DOWNLOADED] -# [ARCHIVE_FILE filename] -# [PLIST filename]) -# -# -# -# The cmake_add_component command describes an installation component, -# which the user can opt to install or remove as part of the graphical -# installation process. compname is the name of the component, as -# provided to the COMPONENT argument of one or more CMake INSTALL -# commands. -# -# DISPLAY_NAME is the displayed name of the component, used in graphical -# installers to display the component name. This value can be any -# string. -# -# DESCRIPTION is an extended description of the component, used in -# graphical installers to give the user additional information about the -# component. Descriptions can span multiple lines using ``\n`` as the -# line separator. Typically, these descriptions should be no more than -# a few lines long. -# -# HIDDEN indicates that this component will be hidden in the graphical -# installer, so that the user cannot directly change whether it is -# installed or not. -# -# REQUIRED indicates that this component is required, and therefore will -# always be installed. It will be visible in the graphical installer, -# but it cannot be unselected. (Typically, required components are -# shown greyed out). -# -# DISABLED indicates that this component should be disabled (unselected) -# by default. The user is free to select this component for -# installation, unless it is also HIDDEN. -# -# DEPENDS lists the components on which this component depends. If this -# component is selected, then each of the components listed must also be -# selected. The dependency information is encoded within the installer -# itself, so that users cannot install inconsistent sets of components. -# -# GROUP names the component group of which this component is a part. If -# not provided, the component will be a standalone component, not part -# of any component group. Component groups are described with the -# cpack_add_component_group command, detailed below. -# -# INSTALL_TYPES lists the installation types of which this component is -# a part. When one of these installations types is selected, this -# component will automatically be selected. Installation types are -# described with the cpack_add_install_type command, detailed below. -# -# DOWNLOADED indicates that this component should be downloaded -# on-the-fly by the installer, rather than packaged in with the -# installer itself. For more information, see the -# cpack_configure_downloads command. -# -# ARCHIVE_FILE provides a name for the archive file created by CPack to -# be used for downloaded components. If not supplied, CPack will create -# a file with some name based on CPACK_PACKAGE_FILE_NAME and the name of -# the component. See cpack_configure_downloads for more information. -# -# PLIST gives a filename that is passed to pkgbuild with the -# ``--component-plist`` argument when using the productbuild generator. -# -# .. command:: cpack_add_component_group -# -# Describes a group of related CPack installation components. -# -# :: -# -# cpack_add_component_group(groupname -# [DISPLAY_NAME name] -# [DESCRIPTION description] -# [PARENT_GROUP parent] -# [EXPANDED] -# [BOLD_TITLE]) -# -# -# -# The cpack_add_component_group describes a group of installation -# components, which will be placed together within the listing of -# options. Typically, component groups allow the user to -# select/deselect all of the components within a single group via a -# single group-level option. Use component groups to reduce the -# complexity of installers with many options. groupname is an arbitrary -# name used to identify the group in the GROUP argument of the -# cpack_add_component command, which is used to place a component in a -# group. The name of the group must not conflict with the name of any -# component. -# -# DISPLAY_NAME is the displayed name of the component group, used in -# graphical installers to display the component group name. This value -# can be any string. -# -# DESCRIPTION is an extended description of the component group, used in -# graphical installers to give the user additional information about the -# components within that group. Descriptions can span multiple lines -# using ``\n`` as the line separator. Typically, these descriptions -# should be no more than a few lines long. -# -# PARENT_GROUP, if supplied, names the parent group of this group. -# Parent groups are used to establish a hierarchy of groups, providing -# an arbitrary hierarchy of groups. -# -# EXPANDED indicates that, by default, the group should show up as -# "expanded", so that the user immediately sees all of the components -# within the group. Otherwise, the group will initially show up as a -# single entry. -# -# BOLD_TITLE indicates that the group title should appear in bold, to -# call the user's attention to the group. -# -# .. command:: cpack_add_install_type -# -# Add a new installation type containing -# a set of predefined component selections to the graphical installer. -# -# :: -# -# cpack_add_install_type(typename -# [DISPLAY_NAME name]) -# -# -# -# The cpack_add_install_type command identifies a set of preselected -# components that represents a common use case for an application. For -# example, a "Developer" install type might include an application along -# with its header and library files, while an "End user" install type -# might just include the application's executable. Each component -# identifies itself with one or more install types via the INSTALL_TYPES -# argument to cpack_add_component. -# -# DISPLAY_NAME is the displayed name of the install type, which will -# typically show up in a drop-down box within a graphical installer. -# This value can be any string. -# -# .. command:: cpack_configure_downloads -# -# Configure CPack to download -# selected components on-the-fly as part of the installation process. -# -# :: -# -# cpack_configure_downloads(site -# [UPLOAD_DIRECTORY dirname] -# [ALL] -# [ADD_REMOVE|NO_ADD_REMOVE]) -# -# -# -# The cpack_configure_downloads command configures installation-time -# downloads of selected components. For each downloadable component, -# CPack will create an archive containing the contents of that -# component, which should be uploaded to the given site. When the user -# selects that component for installation, the installer will download -# and extract the component in place. This feature is useful for -# creating small installers that only download the requested components, -# saving bandwidth. Additionally, the installers are small enough that -# they will be installed as part of the normal installation process, and -# the "Change" button in Windows Add/Remove Programs control panel will -# allow one to add or remove parts of the application after the original -# installation. On Windows, the downloaded-components functionality -# requires the ZipDLL plug-in for NSIS, available at: -# -# :: -# -# http://nsis.sourceforge.net/ZipDLL_plug-in -# -# -# -# On macOS, installers that download components on-the-fly can only -# be built and installed on system using macOS 10.5 or later. -# -# The site argument is a URL where the archives for downloadable -# components will reside, e.g., -# https://cmake.org/files/2.6.1/installer/ All of the archives -# produced by CPack should be uploaded to that location. -# -# UPLOAD_DIRECTORY is the local directory where CPack will create the -# various archives for each of the components. The contents of this -# directory should be uploaded to a location accessible by the URL given -# in the site argument. If omitted, CPack will use the directory -# CPackUploads inside the CMake binary directory to store the generated -# archives. -# -# The ALL flag indicates that all components be downloaded. Otherwise, -# only those components explicitly marked as DOWNLOADED or that have a -# specified ARCHIVE_FILE will be downloaded. Additionally, the ALL -# option implies ADD_REMOVE (unless NO_ADD_REMOVE is specified). -# -# ADD_REMOVE indicates that CPack should install a copy of the installer -# that can be called from Windows' Add/Remove Programs dialog (via the -# "Modify" button) to change the set of installed components. -# NO_ADD_REMOVE turns off this behavior. This option is ignored on Mac -# OS X. +#[=======================================================================[.rst: +CPackComponent +-------------- + +Build binary and source package installers + +Variables concerning CPack Components +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The CPackComponent module is the module which handles the component +part of CPack. See CPack module for general information about CPack. + +For certain kinds of binary installers (including the graphical +installers on macOS and Windows), CPack generates installers that +allow users to select individual application components to install. +The contents of each of the components are identified by the COMPONENT +argument of CMake's INSTALL command. These components can be +annotated with user-friendly names and descriptions, inter-component +dependencies, etc., and grouped in various ways to customize the +resulting installer. See the cpack_add_* commands, described below, +for more information about component-specific installations. + +Component-specific installation allows users to select specific sets +of components to install during the install process. Installation +components are identified by the COMPONENT argument of CMake's INSTALL +commands, and should be further described by the following CPack +commands: + +.. variable:: CPACK_COMPONENTS_ALL + + The list of component to install. + + The default value of this variable is computed by CPack and contains all + components defined by the project. The user may set it to only include the + specified components. + + Instead of specifying all the desired components, it is possible to obtain a + list of all defined components and then remove the unwanted ones from the + list. The :command:`get_cmake_property` command can be used to obtain the + ``COMPONENTS`` property, then the :command:`list(REMOVE_ITEM)` command can be + used to remove the unwanted ones. For example, to use all defined components + except ``foo`` and ``bar``:: + + get_cmake_property(CPACK_COMPONENTS_ALL COMPONENTS) + list(REMOVE_ITEM CPACK_COMPONENTS_ALL "foo" "bar") + +.. variable:: CPACK_<GENNAME>_COMPONENT_INSTALL + + Enable/Disable component install for CPack generator <GENNAME>. + + Each CPack Generator (RPM, DEB, ARCHIVE, NSIS, DMG, etc...) has a legacy + default behavior. e.g. RPM builds monolithic whereas NSIS builds + component. One can change the default behavior by setting this variable to + 0/1 or OFF/ON. + +.. variable:: CPACK_COMPONENTS_GROUPING + + Specify how components are grouped for multi-package component-aware CPack + generators. + + Some generators like RPM or ARCHIVE family (TGZ, ZIP, ...) generates + several packages files when asked for component packaging. They group + the component differently depending on the value of this variable: + + * ONE_PER_GROUP (default): creates one package file per component group + * ALL_COMPONENTS_IN_ONE : creates a single package with all (requested) components + * IGNORE : creates one package per component, i.e. IGNORE component group + + One can specify different grouping for different CPack generator by + using a CPACK_PROJECT_CONFIG_FILE. + +.. variable:: CPACK_COMPONENT_<compName>_DISPLAY_NAME + + The name to be displayed for a component. + +.. variable:: CPACK_COMPONENT_<compName>_DESCRIPTION + + The description of a component. + +.. variable:: CPACK_COMPONENT_<compName>_GROUP + + The group of a component. + +.. variable:: CPACK_COMPONENT_<compName>_DEPENDS + + The dependencies (list of components) on which this component depends. + +.. variable:: CPACK_COMPONENT_<compName>_HIDDEN + + True if this component is hidden from the user. + +.. variable:: CPACK_COMPONENT_<compName>_REQUIRED + + True if this component is required. + +.. variable:: CPACK_COMPONENT_<compName>_DISABLED + + True if this component is not selected to be installed by default. + +.. command:: cpack_add_component + +Describes a CPack installation +component named by the COMPONENT argument to a CMake INSTALL command. + +:: + + cpack_add_component(compname + [DISPLAY_NAME name] + [DESCRIPTION description] + [HIDDEN | REQUIRED | DISABLED ] + [GROUP group] + [DEPENDS comp1 comp2 ... ] + [INSTALL_TYPES type1 type2 ... ] + [DOWNLOADED] + [ARCHIVE_FILE filename] + [PLIST filename]) + + + +The cmake_add_component command describes an installation component, +which the user can opt to install or remove as part of the graphical +installation process. compname is the name of the component, as +provided to the COMPONENT argument of one or more CMake INSTALL +commands. + +DISPLAY_NAME is the displayed name of the component, used in graphical +installers to display the component name. This value can be any +string. + +DESCRIPTION is an extended description of the component, used in +graphical installers to give the user additional information about the +component. Descriptions can span multiple lines using ``\n`` as the +line separator. Typically, these descriptions should be no more than +a few lines long. + +HIDDEN indicates that this component will be hidden in the graphical +installer, so that the user cannot directly change whether it is +installed or not. + +REQUIRED indicates that this component is required, and therefore will +always be installed. It will be visible in the graphical installer, +but it cannot be unselected. (Typically, required components are +shown greyed out). + +DISABLED indicates that this component should be disabled (unselected) +by default. The user is free to select this component for +installation, unless it is also HIDDEN. + +DEPENDS lists the components on which this component depends. If this +component is selected, then each of the components listed must also be +selected. The dependency information is encoded within the installer +itself, so that users cannot install inconsistent sets of components. + +GROUP names the component group of which this component is a part. If +not provided, the component will be a standalone component, not part +of any component group. Component groups are described with the +cpack_add_component_group command, detailed below. + +INSTALL_TYPES lists the installation types of which this component is +a part. When one of these installations types is selected, this +component will automatically be selected. Installation types are +described with the cpack_add_install_type command, detailed below. + +DOWNLOADED indicates that this component should be downloaded +on-the-fly by the installer, rather than packaged in with the +installer itself. For more information, see the +cpack_configure_downloads command. + +ARCHIVE_FILE provides a name for the archive file created by CPack to +be used for downloaded components. If not supplied, CPack will create +a file with some name based on CPACK_PACKAGE_FILE_NAME and the name of +the component. See cpack_configure_downloads for more information. + +PLIST gives a filename that is passed to pkgbuild with the +``--component-plist`` argument when using the productbuild generator. + +.. command:: cpack_add_component_group + +Describes a group of related CPack installation components. + +:: + + cpack_add_component_group(groupname + [DISPLAY_NAME name] + [DESCRIPTION description] + [PARENT_GROUP parent] + [EXPANDED] + [BOLD_TITLE]) + + + +The cpack_add_component_group describes a group of installation +components, which will be placed together within the listing of +options. Typically, component groups allow the user to +select/deselect all of the components within a single group via a +single group-level option. Use component groups to reduce the +complexity of installers with many options. groupname is an arbitrary +name used to identify the group in the GROUP argument of the +cpack_add_component command, which is used to place a component in a +group. The name of the group must not conflict with the name of any +component. + +DISPLAY_NAME is the displayed name of the component group, used in +graphical installers to display the component group name. This value +can be any string. + +DESCRIPTION is an extended description of the component group, used in +graphical installers to give the user additional information about the +components within that group. Descriptions can span multiple lines +using ``\n`` as the line separator. Typically, these descriptions +should be no more than a few lines long. + +PARENT_GROUP, if supplied, names the parent group of this group. +Parent groups are used to establish a hierarchy of groups, providing +an arbitrary hierarchy of groups. + +EXPANDED indicates that, by default, the group should show up as +"expanded", so that the user immediately sees all of the components +within the group. Otherwise, the group will initially show up as a +single entry. + +BOLD_TITLE indicates that the group title should appear in bold, to +call the user's attention to the group. + +.. command:: cpack_add_install_type + +Add a new installation type containing +a set of predefined component selections to the graphical installer. + +:: + + cpack_add_install_type(typename + [DISPLAY_NAME name]) + + + +The cpack_add_install_type command identifies a set of preselected +components that represents a common use case for an application. For +example, a "Developer" install type might include an application along +with its header and library files, while an "End user" install type +might just include the application's executable. Each component +identifies itself with one or more install types via the INSTALL_TYPES +argument to cpack_add_component. + +DISPLAY_NAME is the displayed name of the install type, which will +typically show up in a drop-down box within a graphical installer. +This value can be any string. + +.. command:: cpack_configure_downloads + +Configure CPack to download +selected components on-the-fly as part of the installation process. + +:: + + cpack_configure_downloads(site + [UPLOAD_DIRECTORY dirname] + [ALL] + [ADD_REMOVE|NO_ADD_REMOVE]) + + + +The cpack_configure_downloads command configures installation-time +downloads of selected components. For each downloadable component, +CPack will create an archive containing the contents of that +component, which should be uploaded to the given site. When the user +selects that component for installation, the installer will download +and extract the component in place. This feature is useful for +creating small installers that only download the requested components, +saving bandwidth. Additionally, the installers are small enough that +they will be installed as part of the normal installation process, and +the "Change" button in Windows Add/Remove Programs control panel will +allow one to add or remove parts of the application after the original +installation. On Windows, the downloaded-components functionality +requires the ZipDLL plug-in for NSIS, available at: + +:: + + http://nsis.sourceforge.net/ZipDLL_plug-in + + + +On macOS, installers that download components on-the-fly can only +be built and installed on system using macOS 10.5 or later. + +The site argument is a URL where the archives for downloadable +components will reside, e.g., +https://cmake.org/files/2.6.1/installer/ All of the archives +produced by CPack should be uploaded to that location. + +UPLOAD_DIRECTORY is the local directory where CPack will create the +various archives for each of the components. The contents of this +directory should be uploaded to a location accessible by the URL given +in the site argument. If omitted, CPack will use the directory +CPackUploads inside the CMake binary directory to store the generated +archives. + +The ALL flag indicates that all components be downloaded. Otherwise, +only those components explicitly marked as DOWNLOADED or that have a +specified ARCHIVE_FILE will be downloaded. Additionally, the ALL +option implies ADD_REMOVE (unless NO_ADD_REMOVE is specified). + +ADD_REMOVE indicates that CPack should install a copy of the installer +that can be called from Windows' Add/Remove Programs dialog (via the +"Modify" button) to change the set of installed components. +NO_ADD_REMOVE turns off this behavior. This option is ignored on Mac +OS X. +#]=======================================================================] # Define var in order to avoid multiple inclusion if(NOT CPackComponent_CMake_INCLUDED) diff --git a/Modules/CPackIFWConfigureFile.cmake b/Modules/CPackIFWConfigureFile.cmake index 790574a524..0abe0da371 100644 --- a/Modules/CPackIFWConfigureFile.cmake +++ b/Modules/CPackIFWConfigureFile.cmake @@ -1,32 +1,33 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CPackIFWConfigureFile -# --------------------- -# -# The module defines :command:`configure_file` similar command to -# configure file templates prepared in QtIFW/SDK/Creator style. -# -# -# Commands -# ^^^^^^^^ -# -# The module defines the following commands: -# -# .. command:: cpack_ifw_configure_file -# -# Copy a file to another location and modify its contents. -# -# :: -# -# cpack_ifw_configure_file(<input> <output>) -# -# Copies an ``<input>`` file to an ``<output>`` file and substitutes variable -# values referenced as ``%{VAR}`` or ``%VAR%`` in the input file content. -# Each variable reference will be replaced with the current value of the -# variable, or the empty string if the variable is not defined. -# +#[=======================================================================[.rst: +CPackIFWConfigureFile +--------------------- + +The module defines :command:`configure_file` similar command to +configure file templates prepared in QtIFW/SDK/Creator style. + + +Commands +^^^^^^^^ + +The module defines the following commands: + +.. command:: cpack_ifw_configure_file + + Copy a file to another location and modify its contents. + + :: + + cpack_ifw_configure_file(<input> <output>) + + Copies an ``<input>`` file to an ``<output>`` file and substitutes variable + values referenced as ``%{VAR}`` or ``%VAR%`` in the input file content. + Each variable reference will be replaced with the current value of the + variable, or the empty string if the variable is not defined. + +#]=======================================================================] # NOTE: This file used to himself packaging via CPack IFW generator and # should be compatible with minimal CMake version defined in diff --git a/Modules/CTestCoverageCollectGCOV.cmake b/Modules/CTestCoverageCollectGCOV.cmake index 1203be4c20..2258271ccb 100644 --- a/Modules/CTestCoverageCollectGCOV.cmake +++ b/Modules/CTestCoverageCollectGCOV.cmake @@ -1,69 +1,70 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CTestCoverageCollectGCOV -# ------------------------ -# -# This module provides the ``ctest_coverage_collect_gcov`` function. -# -# This function runs gcov on all .gcda files found in the binary tree -# and packages the resulting .gcov files into a tar file. -# This tarball also contains the following: -# -# * *data.json* defines the source and build directories for use by CDash. -# * *Labels.json* indicates any :prop_sf:`LABELS` that have been set on the -# source files. -# * The *uncovered* directory holds any uncovered files found by -# :variable:`CTEST_EXTRA_COVERAGE_GLOB`. -# -# After generating this tar file, it can be sent to CDash for display with the -# :command:`ctest_submit(CDASH_UPLOAD)` command. -# -# .. command:: cdash_coverage_collect_gcov -# -# :: -# -# ctest_coverage_collect_gcov(TARBALL <tarfile> -# [SOURCE <source_dir>][BUILD <build_dir>] -# [GCOV_COMMAND <gcov_command>] -# [GCOV_OPTIONS <options>...] -# ) -# -# Run gcov and package a tar file for CDash. The options are: -# -# ``TARBALL <tarfile>`` -# Specify the location of the ``.tar`` file to be created for later -# upload to CDash. Relative paths will be interpreted with respect -# to the top-level build directory. -# -# ``SOURCE <source_dir>`` -# Specify the top-level source directory for the build. -# Default is the value of :variable:`CTEST_SOURCE_DIRECTORY`. -# -# ``BUILD <build_dir>`` -# Specify the top-level build directory for the build. -# Default is the value of :variable:`CTEST_BINARY_DIRECTORY`. -# -# ``GCOV_COMMAND <gcov_command>`` -# Specify the full path to the ``gcov`` command on the machine. -# Default is the value of :variable:`CTEST_COVERAGE_COMMAND`. -# -# ``GCOV_OPTIONS <options>...`` -# Specify options to be passed to gcov. The ``gcov`` command -# is run as ``gcov <options>... -o <gcov-dir> <file>.gcda``. -# If not specified, the default option is just ``-b``. -# -# ``GLOB`` -# Recursively search for .gcda files in build_dir rather than -# determining search locations by reading TargetDirectories.txt. -# -# ``DELETE`` -# Delete coverage files after they've been packaged into the .tar. -# -# ``QUIET`` -# Suppress non-error messages that otherwise would have been -# printed out by this function. +#[=======================================================================[.rst: +CTestCoverageCollectGCOV +------------------------ + +This module provides the ``ctest_coverage_collect_gcov`` function. + +This function runs gcov on all .gcda files found in the binary tree +and packages the resulting .gcov files into a tar file. +This tarball also contains the following: + +* *data.json* defines the source and build directories for use by CDash. +* *Labels.json* indicates any :prop_sf:`LABELS` that have been set on the + source files. +* The *uncovered* directory holds any uncovered files found by + :variable:`CTEST_EXTRA_COVERAGE_GLOB`. + +After generating this tar file, it can be sent to CDash for display with the +:command:`ctest_submit(CDASH_UPLOAD)` command. + +.. command:: cdash_coverage_collect_gcov + + :: + + ctest_coverage_collect_gcov(TARBALL <tarfile> + [SOURCE <source_dir>][BUILD <build_dir>] + [GCOV_COMMAND <gcov_command>] + [GCOV_OPTIONS <options>...] + ) + + Run gcov and package a tar file for CDash. The options are: + + ``TARBALL <tarfile>`` + Specify the location of the ``.tar`` file to be created for later + upload to CDash. Relative paths will be interpreted with respect + to the top-level build directory. + + ``SOURCE <source_dir>`` + Specify the top-level source directory for the build. + Default is the value of :variable:`CTEST_SOURCE_DIRECTORY`. + + ``BUILD <build_dir>`` + Specify the top-level build directory for the build. + Default is the value of :variable:`CTEST_BINARY_DIRECTORY`. + + ``GCOV_COMMAND <gcov_command>`` + Specify the full path to the ``gcov`` command on the machine. + Default is the value of :variable:`CTEST_COVERAGE_COMMAND`. + + ``GCOV_OPTIONS <options>...`` + Specify options to be passed to gcov. The ``gcov`` command + is run as ``gcov <options>... -o <gcov-dir> <file>.gcda``. + If not specified, the default option is just ``-b``. + + ``GLOB`` + Recursively search for .gcda files in build_dir rather than + determining search locations by reading TargetDirectories.txt. + + ``DELETE`` + Delete coverage files after they've been packaged into the .tar. + + ``QUIET`` + Suppress non-error messages that otherwise would have been + printed out by this function. +#]=======================================================================] function(ctest_coverage_collect_gcov) set(options QUIET GLOB DELETE) diff --git a/Modules/CTestScriptMode.cmake b/Modules/CTestScriptMode.cmake index 5be78d5a3c..7af3577e0e 100644 --- a/Modules/CTestScriptMode.cmake +++ b/Modules/CTestScriptMode.cmake @@ -1,13 +1,14 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CTestScriptMode -# --------------- -# -# -# -# This file is read by ctest in script mode (-S) +#[=======================================================================[.rst: +CTestScriptMode +--------------- + + + +This file is read by ctest in script mode (-S) +#]=======================================================================] # Determine the current system, so this information can be used # in ctest scripts diff --git a/Modules/CTestUseLaunchers.cmake b/Modules/CTestUseLaunchers.cmake index dc90513a9c..3dff926052 100644 --- a/Modules/CTestUseLaunchers.cmake +++ b/Modules/CTestUseLaunchers.cmake @@ -1,32 +1,33 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CTestUseLaunchers -# ----------------- -# -# Set the RULE_LAUNCH_* global properties when CTEST_USE_LAUNCHERS is on. -# -# CTestUseLaunchers is automatically included when you include(CTest). -# However, it is split out into its own module file so projects can use -# the CTEST_USE_LAUNCHERS functionality independently. -# -# To use launchers, set CTEST_USE_LAUNCHERS to ON in a ctest -S -# dashboard script, and then also set it in the cache of the configured -# project. Both cmake and ctest need to know the value of it for the -# launchers to work properly. CMake needs to know in order to generate -# proper build rules, and ctest, in order to produce the proper error -# and warning analysis. -# -# For convenience, you may set the ENV variable -# CTEST_USE_LAUNCHERS_DEFAULT in your ctest -S script, too. Then, as -# long as your CMakeLists uses include(CTest) or -# include(CTestUseLaunchers), it will use the value of the ENV variable -# to initialize a CTEST_USE_LAUNCHERS cache variable. This cache -# variable initialization only occurs if CTEST_USE_LAUNCHERS is not -# already defined. If CTEST_USE_LAUNCHERS is on in a ctest -S script -# the ctest_configure command will add -DCTEST_USE_LAUNCHERS:BOOL=TRUE -# to the cmake command used to configure the project. +#[=======================================================================[.rst: +CTestUseLaunchers +----------------- + +Set the RULE_LAUNCH_* global properties when CTEST_USE_LAUNCHERS is on. + +CTestUseLaunchers is automatically included when you include(CTest). +However, it is split out into its own module file so projects can use +the CTEST_USE_LAUNCHERS functionality independently. + +To use launchers, set CTEST_USE_LAUNCHERS to ON in a ctest -S +dashboard script, and then also set it in the cache of the configured +project. Both cmake and ctest need to know the value of it for the +launchers to work properly. CMake needs to know in order to generate +proper build rules, and ctest, in order to produce the proper error +and warning analysis. + +For convenience, you may set the ENV variable +CTEST_USE_LAUNCHERS_DEFAULT in your ctest -S script, too. Then, as +long as your CMakeLists uses include(CTest) or +include(CTestUseLaunchers), it will use the value of the ENV variable +to initialize a CTEST_USE_LAUNCHERS cache variable. This cache +variable initialization only occurs if CTEST_USE_LAUNCHERS is not +already defined. If CTEST_USE_LAUNCHERS is on in a ctest -S script +the ctest_configure command will add -DCTEST_USE_LAUNCHERS:BOOL=TRUE +to the cmake command used to configure the project. +#]=======================================================================] if(NOT DEFINED CTEST_USE_LAUNCHERS AND DEFINED ENV{CTEST_USE_LAUNCHERS_DEFAULT}) set(CTEST_USE_LAUNCHERS "$ENV{CTEST_USE_LAUNCHERS_DEFAULT}" diff --git a/Modules/CheckCXXSymbolExists.cmake b/Modules/CheckCXXSymbolExists.cmake index ce23ffdd79..d067001b4d 100644 --- a/Modules/CheckCXXSymbolExists.cmake +++ b/Modules/CheckCXXSymbolExists.cmake @@ -1,41 +1,42 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CheckCXXSymbolExists -# -------------------- -# -# Check if a symbol exists as a function, variable, or macro in C++ -# -# .. code-block:: cmake -# -# CHECK_CXX_SYMBOL_EXISTS(<symbol> <files> <variable>) -# -# Check that the ``<symbol>`` is available after including given header -# ``<files>`` and store the result in a ``<variable>``. Specify the list of -# files in one argument as a semicolon-separated list. -# CHECK_CXX_SYMBOL_EXISTS() can be used to check in C++ files, as -# opposed to CHECK_SYMBOL_EXISTS(), which works only for C. -# -# If the header files define the symbol as a macro it is considered -# available and assumed to work. If the header files declare the symbol -# as a function or variable then the symbol must also be available for -# linking. If the symbol is a type or enum value it will not be -# recognized (consider using CheckTypeSize or CheckCSourceCompiles). -# -# The following variables may be set before calling this macro to modify -# the way the check is run: -# -# ``CMAKE_REQUIRED_FLAGS`` -# string of compile command line flags -# ``CMAKE_REQUIRED_DEFINITIONS`` -# list of macros to define (-DFOO=bar) -# ``CMAKE_REQUIRED_INCLUDES`` -# list of include directories -# ``CMAKE_REQUIRED_LIBRARIES`` -# list of libraries to link -# ``CMAKE_REQUIRED_QUIET`` -# execute quietly without messages +#[=======================================================================[.rst: +CheckCXXSymbolExists +-------------------- + +Check if a symbol exists as a function, variable, or macro in C++ + +.. code-block:: cmake + + CHECK_CXX_SYMBOL_EXISTS(<symbol> <files> <variable>) + +Check that the ``<symbol>`` is available after including given header +``<files>`` and store the result in a ``<variable>``. Specify the list of +files in one argument as a semicolon-separated list. +CHECK_CXX_SYMBOL_EXISTS() can be used to check in C++ files, as +opposed to CHECK_SYMBOL_EXISTS(), which works only for C. + +If the header files define the symbol as a macro it is considered +available and assumed to work. If the header files declare the symbol +as a function or variable then the symbol must also be available for +linking. If the symbol is a type or enum value it will not be +recognized (consider using CheckTypeSize or CheckCSourceCompiles). + +The following variables may be set before calling this macro to modify +the way the check is run: + +``CMAKE_REQUIRED_FLAGS`` + string of compile command line flags +``CMAKE_REQUIRED_DEFINITIONS`` + list of macros to define (-DFOO=bar) +``CMAKE_REQUIRED_INCLUDES`` + list of include directories +``CMAKE_REQUIRED_LIBRARIES`` + list of libraries to link +``CMAKE_REQUIRED_QUIET`` + execute quietly without messages +#]=======================================================================] include_guard(GLOBAL) include(CheckSymbolExists) diff --git a/Modules/CheckFortranFunctionExists.cmake b/Modules/CheckFortranFunctionExists.cmake index fbfa061a24..dc371aae5f 100644 --- a/Modules/CheckFortranFunctionExists.cmake +++ b/Modules/CheckFortranFunctionExists.cmake @@ -1,28 +1,29 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CheckFortranFunctionExists -# -------------------------- -# -# :command:`Macro <macro>` which checks if a Fortran function exists. -# -# .. code-block:: cmake -# -# CHECK_FORTRAN_FUNCTION_EXISTS(<function> <result>) -# -# where -# -# ``<function>`` -# the name of the Fortran function -# ``<result>`` -# variable to store the result; will be created as an internal cache variable. -# -# The following variables may be set before calling this macro to modify -# the way the check is run: -# -# ``CMAKE_REQUIRED_LIBRARIES`` -# list of libraries to link +#[=======================================================================[.rst: +CheckFortranFunctionExists +-------------------------- + +:command:`Macro <macro>` which checks if a Fortran function exists. + +.. code-block:: cmake + + CHECK_FORTRAN_FUNCTION_EXISTS(<function> <result>) + +where + +``<function>`` + the name of the Fortran function +``<result>`` + variable to store the result; will be created as an internal cache variable. + +The following variables may be set before calling this macro to modify +the way the check is run: + +``CMAKE_REQUIRED_LIBRARIES`` + list of libraries to link +#]=======================================================================] include_guard(GLOBAL) diff --git a/Modules/CheckFunctionExists.cmake b/Modules/CheckFunctionExists.cmake index 45f7a6be08..cbec739589 100644 --- a/Modules/CheckFunctionExists.cmake +++ b/Modules/CheckFunctionExists.cmake @@ -1,47 +1,48 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CheckFunctionExists -# ------------------- -# -# Check if a C function can be linked -# -# .. code-block:: cmake -# -# check_function_exists(<function> <variable>) -# -# Checks that the ``<function>`` is provided by libraries on the system and store -# the result in a ``<variable>``, which will be created as an internal -# cache variable. -# -# The following variables may be set before calling this macro to modify the -# way the check is run: -# -# ``CMAKE_REQUIRED_FLAGS`` -# string of compile command line flags -# ``CMAKE_REQUIRED_DEFINITIONS`` -# list of macros to define (-DFOO=bar) -# ``CMAKE_REQUIRED_INCLUDES`` -# list of include directories -# ``CMAKE_REQUIRED_LIBRARIES`` -# list of libraries to link -# ``CMAKE_REQUIRED_QUIET`` -# execute quietly without messages -# -# .. note:: -# -# Prefer using :Module:`CheckSymbolExists` instead of this module, -# for the following reasons: -# -# * ``check_function_exists()`` can't detect functions that are inlined -# in headers or specified as a macro. -# -# * ``check_function_exists()`` can't detect anything in the 32-bit -# versions of the Win32 API, because of a mismatch in calling conventions. -# -# * ``check_function_exists()`` only verifies linking, it does not verify -# that the function is declared in system headers. +#[=======================================================================[.rst: +CheckFunctionExists +------------------- + +Check if a C function can be linked + +.. code-block:: cmake + + check_function_exists(<function> <variable>) + +Checks that the ``<function>`` is provided by libraries on the system and store +the result in a ``<variable>``, which will be created as an internal +cache variable. + +The following variables may be set before calling this macro to modify the +way the check is run: + +``CMAKE_REQUIRED_FLAGS`` + string of compile command line flags +``CMAKE_REQUIRED_DEFINITIONS`` + list of macros to define (-DFOO=bar) +``CMAKE_REQUIRED_INCLUDES`` + list of include directories +``CMAKE_REQUIRED_LIBRARIES`` + list of libraries to link +``CMAKE_REQUIRED_QUIET`` + execute quietly without messages + +.. note:: + + Prefer using :Module:`CheckSymbolExists` instead of this module, + for the following reasons: + + * ``check_function_exists()`` can't detect functions that are inlined + in headers or specified as a macro. + + * ``check_function_exists()`` can't detect anything in the 32-bit + versions of the Win32 API, because of a mismatch in calling conventions. + + * ``check_function_exists()`` only verifies linking, it does not verify + that the function is declared in system headers. +#]=======================================================================] include_guard(GLOBAL) diff --git a/Modules/CheckIncludeFile.cmake b/Modules/CheckIncludeFile.cmake index 24bc349640..87dac4fa9b 100644 --- a/Modules/CheckIncludeFile.cmake +++ b/Modules/CheckIncludeFile.cmake @@ -1,40 +1,41 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CheckIncludeFile -# ---------------- -# -# Provides a macro to check if a header file can be included in ``C``. -# -# .. command:: CHECK_INCLUDE_FILE -# -# :: -# -# CHECK_INCLUDE_FILE(<include> <variable> [<flags>]) -# -# Check if the given ``<include>`` file may be included in a ``C`` -# source file and store the result in an internal cache entry named -# ``<variable>``. The optional third argument may be used to add -# compilation flags to the check (or use ``CMAKE_REQUIRED_FLAGS`` below). -# -# The following variables may be set before calling this macro to modify -# the way the check is run: -# -# ``CMAKE_REQUIRED_FLAGS`` -# string of compile command line flags -# ``CMAKE_REQUIRED_DEFINITIONS`` -# list of macros to define (-DFOO=bar) -# ``CMAKE_REQUIRED_INCLUDES`` -# list of include directories -# ``CMAKE_REQUIRED_LIBRARIES`` -# A list of libraries to link. See policy :policy:`CMP0075`. -# ``CMAKE_REQUIRED_QUIET`` -# execute quietly without messages -# -# See the :module:`CheckIncludeFiles` module to check for multiple headers -# at once. See the :module:`CheckIncludeFileCXX` module to check for headers -# using the ``CXX`` language. +#[=======================================================================[.rst: +CheckIncludeFile +---------------- + +Provides a macro to check if a header file can be included in ``C``. + +.. command:: CHECK_INCLUDE_FILE + + :: + + CHECK_INCLUDE_FILE(<include> <variable> [<flags>]) + + Check if the given ``<include>`` file may be included in a ``C`` + source file and store the result in an internal cache entry named + ``<variable>``. The optional third argument may be used to add + compilation flags to the check (or use ``CMAKE_REQUIRED_FLAGS`` below). + +The following variables may be set before calling this macro to modify +the way the check is run: + +``CMAKE_REQUIRED_FLAGS`` + string of compile command line flags +``CMAKE_REQUIRED_DEFINITIONS`` + list of macros to define (-DFOO=bar) +``CMAKE_REQUIRED_INCLUDES`` + list of include directories +``CMAKE_REQUIRED_LIBRARIES`` + A list of libraries to link. See policy :policy:`CMP0075`. +``CMAKE_REQUIRED_QUIET`` + execute quietly without messages + +See the :module:`CheckIncludeFiles` module to check for multiple headers +at once. See the :module:`CheckIncludeFileCXX` module to check for headers +using the ``CXX`` language. +#]=======================================================================] include_guard(GLOBAL) diff --git a/Modules/CheckIncludeFileCXX.cmake b/Modules/CheckIncludeFileCXX.cmake index f13d983b6c..42b5eaf082 100644 --- a/Modules/CheckIncludeFileCXX.cmake +++ b/Modules/CheckIncludeFileCXX.cmake @@ -1,39 +1,40 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CheckIncludeFileCXX -# ------------------- -# -# Provides a macro to check if a header file can be included in ``CXX``. -# -# .. command:: CHECK_INCLUDE_FILE_CXX -# -# :: -# -# CHECK_INCLUDE_FILE_CXX(<include> <variable> [<flags>]) -# -# Check if the given ``<include>`` file may be included in a ``CXX`` -# source file and store the result in an internal cache entry named -# ``<variable>``. The optional third argument may be used to add -# compilation flags to the check (or use ``CMAKE_REQUIRED_FLAGS`` below). -# -# The following variables may be set before calling this macro to modify -# the way the check is run: -# -# ``CMAKE_REQUIRED_FLAGS`` -# string of compile command line flags -# ``CMAKE_REQUIRED_DEFINITIONS`` -# list of macros to define (-DFOO=bar) -# ``CMAKE_REQUIRED_INCLUDES`` -# list of include directories -# ``CMAKE_REQUIRED_LIBRARIES`` -# A list of libraries to link. See policy :policy:`CMP0075`. -# ``CMAKE_REQUIRED_QUIET`` -# execute quietly without messages -# -# See modules :module:`CheckIncludeFile` and :module:`CheckIncludeFiles` -# to check for one or more ``C`` headers. +#[=======================================================================[.rst: +CheckIncludeFileCXX +------------------- + +Provides a macro to check if a header file can be included in ``CXX``. + +.. command:: CHECK_INCLUDE_FILE_CXX + + :: + + CHECK_INCLUDE_FILE_CXX(<include> <variable> [<flags>]) + + Check if the given ``<include>`` file may be included in a ``CXX`` + source file and store the result in an internal cache entry named + ``<variable>``. The optional third argument may be used to add + compilation flags to the check (or use ``CMAKE_REQUIRED_FLAGS`` below). + +The following variables may be set before calling this macro to modify +the way the check is run: + +``CMAKE_REQUIRED_FLAGS`` + string of compile command line flags +``CMAKE_REQUIRED_DEFINITIONS`` + list of macros to define (-DFOO=bar) +``CMAKE_REQUIRED_INCLUDES`` + list of include directories +``CMAKE_REQUIRED_LIBRARIES`` + A list of libraries to link. See policy :policy:`CMP0075`. +``CMAKE_REQUIRED_QUIET`` + execute quietly without messages + +See modules :module:`CheckIncludeFile` and :module:`CheckIncludeFiles` +to check for one or more ``C`` headers. +#]=======================================================================] include_guard(GLOBAL) diff --git a/Modules/CheckIncludeFiles.cmake b/Modules/CheckIncludeFiles.cmake index c689f05e9d..b303260c52 100644 --- a/Modules/CheckIncludeFiles.cmake +++ b/Modules/CheckIncludeFiles.cmake @@ -1,45 +1,46 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CheckIncludeFiles -# ----------------- -# -# Provides a macro to check if a list of one or more header files can -# be included together. -# -# .. command:: CHECK_INCLUDE_FILES -# -# :: -# -# CHECK_INCLUDE_FILES("<includes>" <variable> [LANGUAGE <language>]) -# -# Check if the given ``<includes>`` list may be included together -# in a source file and store the result in an internal cache -# entry named ``<variable>``. Specify the ``<includes>`` argument -# as a :ref:`;-list <CMake Language Lists>` of header file names. -# -# If LANGUAGE is set, the specified compiler will be used to perform the -# check. Acceptable values are ``C`` and ``CXX``. If not set, the C compiler -# will be used if enabled. If the C compiler is not enabled, the C++ -# compiler will be used if enabled. -# -# The following variables may be set before calling this macro to modify -# the way the check is run: -# -# ``CMAKE_REQUIRED_FLAGS`` -# string of compile command line flags -# ``CMAKE_REQUIRED_DEFINITIONS`` -# list of macros to define (-DFOO=bar) -# ``CMAKE_REQUIRED_INCLUDES`` -# list of include directories -# ``CMAKE_REQUIRED_LIBRARIES`` -# A list of libraries to link. See policy :policy:`CMP0075`. -# ``CMAKE_REQUIRED_QUIET`` -# execute quietly without messages -# -# See modules :module:`CheckIncludeFile` and :module:`CheckIncludeFileCXX` -# to check for a single header file in ``C`` or ``CXX`` languages. +#[=======================================================================[.rst: +CheckIncludeFiles +----------------- + +Provides a macro to check if a list of one or more header files can +be included together. + +.. command:: CHECK_INCLUDE_FILES + + :: + + CHECK_INCLUDE_FILES("<includes>" <variable> [LANGUAGE <language>]) + + Check if the given ``<includes>`` list may be included together + in a source file and store the result in an internal cache + entry named ``<variable>``. Specify the ``<includes>`` argument + as a :ref:`;-list <CMake Language Lists>` of header file names. + +If LANGUAGE is set, the specified compiler will be used to perform the +check. Acceptable values are ``C`` and ``CXX``. If not set, the C compiler +will be used if enabled. If the C compiler is not enabled, the C++ +compiler will be used if enabled. + +The following variables may be set before calling this macro to modify +the way the check is run: + +``CMAKE_REQUIRED_FLAGS`` + string of compile command line flags +``CMAKE_REQUIRED_DEFINITIONS`` + list of macros to define (-DFOO=bar) +``CMAKE_REQUIRED_INCLUDES`` + list of include directories +``CMAKE_REQUIRED_LIBRARIES`` + A list of libraries to link. See policy :policy:`CMP0075`. +``CMAKE_REQUIRED_QUIET`` + execute quietly without messages + +See modules :module:`CheckIncludeFile` and :module:`CheckIncludeFileCXX` +to check for a single header file in ``C`` or ``CXX`` languages. +#]=======================================================================] include_guard(GLOBAL) diff --git a/Modules/CheckLanguage.cmake b/Modules/CheckLanguage.cmake index ce92bfe6d5..efa88bdab7 100644 --- a/Modules/CheckLanguage.cmake +++ b/Modules/CheckLanguage.cmake @@ -1,35 +1,36 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CheckLanguage -# ------------- -# -# Check if a language can be enabled -# -# Usage: -# -# :: -# -# check_language(<lang>) -# -# where <lang> is a language that may be passed to enable_language() -# such as "Fortran". If CMAKE_<lang>_COMPILER is already defined the -# check does nothing. Otherwise it tries enabling the language in a -# test project. The result is cached in CMAKE_<lang>_COMPILER as the -# compiler that was found, or NOTFOUND if the language cannot be -# enabled. -# -# Example: -# -# :: -# -# check_language(Fortran) -# if(CMAKE_Fortran_COMPILER) -# enable_language(Fortran) -# else() -# message(STATUS "No Fortran support") -# endif() +#[=======================================================================[.rst: +CheckLanguage +------------- + +Check if a language can be enabled + +Usage: + +:: + + check_language(<lang>) + +where <lang> is a language that may be passed to enable_language() +such as "Fortran". If CMAKE_<lang>_COMPILER is already defined the +check does nothing. Otherwise it tries enabling the language in a +test project. The result is cached in CMAKE_<lang>_COMPILER as the +compiler that was found, or NOTFOUND if the language cannot be +enabled. + +Example: + +:: + + check_language(Fortran) + if(CMAKE_Fortran_COMPILER) + enable_language(Fortran) + else() + message(STATUS "No Fortran support") + endif() +#]=======================================================================] include_guard(GLOBAL) diff --git a/Modules/CheckLibraryExists.cmake b/Modules/CheckLibraryExists.cmake index 487cc592a3..428a6b0ad0 100644 --- a/Modules/CheckLibraryExists.cmake +++ b/Modules/CheckLibraryExists.cmake @@ -1,33 +1,34 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CheckLibraryExists -# ------------------ -# -# Check if the function exists. -# -# CHECK_LIBRARY_EXISTS (LIBRARY FUNCTION LOCATION VARIABLE) -# -# :: -# -# LIBRARY - the name of the library you are looking for -# FUNCTION - the name of the function -# LOCATION - location where the library should be found -# VARIABLE - variable to store the result -# Will be created as an internal cache variable. -# -# -# -# The following variables may be set before calling this macro to modify -# the way the check is run: -# -# :: -# -# CMAKE_REQUIRED_FLAGS = string of compile command line flags -# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) -# CMAKE_REQUIRED_LIBRARIES = list of libraries to link -# CMAKE_REQUIRED_QUIET = execute quietly without messages +#[=======================================================================[.rst: +CheckLibraryExists +------------------ + +Check if the function exists. + +CHECK_LIBRARY_EXISTS (LIBRARY FUNCTION LOCATION VARIABLE) + +:: + + LIBRARY - the name of the library you are looking for + FUNCTION - the name of the function + LOCATION - location where the library should be found + VARIABLE - variable to store the result + Will be created as an internal cache variable. + + + +The following variables may be set before calling this macro to modify +the way the check is run: + +:: + + CMAKE_REQUIRED_FLAGS = string of compile command line flags + CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) + CMAKE_REQUIRED_LIBRARIES = list of libraries to link + CMAKE_REQUIRED_QUIET = execute quietly without messages +#]=======================================================================] include_guard(GLOBAL) diff --git a/Modules/CheckPrototypeDefinition.cmake b/Modules/CheckPrototypeDefinition.cmake index dde0775133..b379ec483c 100644 --- a/Modules/CheckPrototypeDefinition.cmake +++ b/Modules/CheckPrototypeDefinition.cmake @@ -1,43 +1,44 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CheckPrototypeDefinition -# ------------------------ -# -# Check if the prototype we expect is correct. -# -# check_prototype_definition(FUNCTION PROTOTYPE RETURN HEADER VARIABLE) -# -# :: -# -# FUNCTION - The name of the function (used to check if prototype exists) -# PROTOTYPE- The prototype to check. -# RETURN - The return value of the function. -# HEADER - The header files required. -# VARIABLE - The variable to store the result. -# Will be created as an internal cache variable. -# -# Example: -# -# :: -# -# check_prototype_definition(getpwent_r -# "struct passwd *getpwent_r(struct passwd *src, char *buf, int buflen)" -# "NULL" -# "unistd.h;pwd.h" -# SOLARIS_GETPWENT_R) -# -# The following variables may be set before calling this macro to modify -# the way the check is run: -# -# :: -# -# CMAKE_REQUIRED_FLAGS = string of compile command line flags -# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) -# CMAKE_REQUIRED_INCLUDES = list of include directories -# CMAKE_REQUIRED_LIBRARIES = list of libraries to link -# CMAKE_REQUIRED_QUIET = execute quietly without messages +#[=======================================================================[.rst: +CheckPrototypeDefinition +------------------------ + +Check if the prototype we expect is correct. + +check_prototype_definition(FUNCTION PROTOTYPE RETURN HEADER VARIABLE) + +:: + + FUNCTION - The name of the function (used to check if prototype exists) + PROTOTYPE- The prototype to check. + RETURN - The return value of the function. + HEADER - The header files required. + VARIABLE - The variable to store the result. + Will be created as an internal cache variable. + +Example: + +:: + + check_prototype_definition(getpwent_r + "struct passwd *getpwent_r(struct passwd *src, char *buf, int buflen)" + "NULL" + "unistd.h;pwd.h" + SOLARIS_GETPWENT_R) + +The following variables may be set before calling this macro to modify +the way the check is run: + +:: + + CMAKE_REQUIRED_FLAGS = string of compile command line flags + CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) + CMAKE_REQUIRED_INCLUDES = list of include directories + CMAKE_REQUIRED_LIBRARIES = list of libraries to link + CMAKE_REQUIRED_QUIET = execute quietly without messages +#]=======================================================================] # diff --git a/Modules/CheckStructHasMember.cmake b/Modules/CheckStructHasMember.cmake index 8689a5cb9f..e7c337c4fc 100644 --- a/Modules/CheckStructHasMember.cmake +++ b/Modules/CheckStructHasMember.cmake @@ -1,42 +1,43 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CheckStructHasMember -# -------------------- -# -# Check if the given struct or class has the specified member variable -# -# :: -# -# CHECK_STRUCT_HAS_MEMBER(<struct> <member> <header> <variable> -# [LANGUAGE <language>]) -# -# :: -# -# <struct> - the name of the struct or class you are interested in -# <member> - the member which existence you want to check -# <header> - the header(s) where the prototype should be declared -# <variable> - variable to store the result -# <language> - the compiler to use (C or CXX) -# -# -# -# The following variables may be set before calling this macro to modify -# the way the check is run: -# -# :: -# -# CMAKE_REQUIRED_FLAGS = string of compile command line flags -# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) -# CMAKE_REQUIRED_INCLUDES = list of include directories -# CMAKE_REQUIRED_LIBRARIES = list of libraries to link -# CMAKE_REQUIRED_QUIET = execute quietly without messages -# -# -# -# Example: CHECK_STRUCT_HAS_MEMBER("struct timeval" tv_sec sys/select.h -# HAVE_TIMEVAL_TV_SEC LANGUAGE C) +#[=======================================================================[.rst: +CheckStructHasMember +-------------------- + +Check if the given struct or class has the specified member variable + +:: + + CHECK_STRUCT_HAS_MEMBER(<struct> <member> <header> <variable> + [LANGUAGE <language>]) + +:: + + <struct> - the name of the struct or class you are interested in + <member> - the member which existence you want to check + <header> - the header(s) where the prototype should be declared + <variable> - variable to store the result + <language> - the compiler to use (C or CXX) + + + +The following variables may be set before calling this macro to modify +the way the check is run: + +:: + + CMAKE_REQUIRED_FLAGS = string of compile command line flags + CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) + CMAKE_REQUIRED_INCLUDES = list of include directories + CMAKE_REQUIRED_LIBRARIES = list of libraries to link + CMAKE_REQUIRED_QUIET = execute quietly without messages + + + +Example: CHECK_STRUCT_HAS_MEMBER("struct timeval" tv_sec sys/select.h +HAVE_TIMEVAL_TV_SEC LANGUAGE C) +#]=======================================================================] include_guard(GLOBAL) include(CheckCSourceCompiles) diff --git a/Modules/CheckTypeSize.cmake b/Modules/CheckTypeSize.cmake index 2b5deec818..2c53df9012 100644 --- a/Modules/CheckTypeSize.cmake +++ b/Modules/CheckTypeSize.cmake @@ -1,72 +1,73 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CheckTypeSize -# ------------- -# -# Check sizeof a type -# -# :: -# -# CHECK_TYPE_SIZE(TYPE VARIABLE [BUILTIN_TYPES_ONLY] -# [LANGUAGE <language>]) -# -# Check if the type exists and determine its size. On return, -# "HAVE_${VARIABLE}" holds the existence of the type, and "${VARIABLE}" -# holds one of the following: -# -# :: -# -# <size> = type has non-zero size <size> -# "0" = type has arch-dependent size (see below) -# "" = type does not exist -# -# Both ``HAVE_${VARIABLE}`` and ``${VARIABLE}`` will be created as internal -# cache variables. -# -# Furthermore, the variable "${VARIABLE}_CODE" holds C preprocessor code -# to define the macro "${VARIABLE}" to the size of the type, or leave -# the macro undefined if the type does not exist. -# -# The variable "${VARIABLE}" may be "0" when CMAKE_OSX_ARCHITECTURES has -# multiple architectures for building OS X universal binaries. This -# indicates that the type size varies across architectures. In this -# case "${VARIABLE}_CODE" contains C preprocessor tests mapping from -# each architecture macro to the corresponding type size. The list of -# architecture macros is stored in "${VARIABLE}_KEYS", and the value for -# each key is stored in "${VARIABLE}-${KEY}". -# -# If the BUILTIN_TYPES_ONLY option is not given, the macro checks for -# headers <sys/types.h>, <stdint.h>, and <stddef.h>, and saves results -# in HAVE_SYS_TYPES_H, HAVE_STDINT_H, and HAVE_STDDEF_H. The type size -# check automatically includes the available headers, thus supporting -# checks of types defined in the headers. -# -# If LANGUAGE is set, the specified compiler will be used to perform the -# check. Acceptable values are C and CXX -# -# Despite the name of the macro you may use it to check the size of more -# complex expressions, too. To check e.g. for the size of a struct -# member you can do something like this: -# -# :: -# -# check_type_size("((struct something*)0)->member" SIZEOF_MEMBER) -# -# -# -# The following variables may be set before calling this macro to modify -# the way the check is run: -# -# :: -# -# CMAKE_REQUIRED_FLAGS = string of compile command line flags -# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) -# CMAKE_REQUIRED_INCLUDES = list of include directories -# CMAKE_REQUIRED_LIBRARIES = list of libraries to link -# CMAKE_REQUIRED_QUIET = execute quietly without messages -# CMAKE_EXTRA_INCLUDE_FILES = list of extra headers to include +#[=======================================================================[.rst: +CheckTypeSize +------------- + +Check sizeof a type + +:: + + CHECK_TYPE_SIZE(TYPE VARIABLE [BUILTIN_TYPES_ONLY] + [LANGUAGE <language>]) + +Check if the type exists and determine its size. On return, +"HAVE_${VARIABLE}" holds the existence of the type, and "${VARIABLE}" +holds one of the following: + +:: + + <size> = type has non-zero size <size> + "0" = type has arch-dependent size (see below) + "" = type does not exist + +Both ``HAVE_${VARIABLE}`` and ``${VARIABLE}`` will be created as internal +cache variables. + +Furthermore, the variable "${VARIABLE}_CODE" holds C preprocessor code +to define the macro "${VARIABLE}" to the size of the type, or leave +the macro undefined if the type does not exist. + +The variable "${VARIABLE}" may be "0" when CMAKE_OSX_ARCHITECTURES has +multiple architectures for building OS X universal binaries. This +indicates that the type size varies across architectures. In this +case "${VARIABLE}_CODE" contains C preprocessor tests mapping from +each architecture macro to the corresponding type size. The list of +architecture macros is stored in "${VARIABLE}_KEYS", and the value for +each key is stored in "${VARIABLE}-${KEY}". + +If the BUILTIN_TYPES_ONLY option is not given, the macro checks for +headers <sys/types.h>, <stdint.h>, and <stddef.h>, and saves results +in HAVE_SYS_TYPES_H, HAVE_STDINT_H, and HAVE_STDDEF_H. The type size +check automatically includes the available headers, thus supporting +checks of types defined in the headers. + +If LANGUAGE is set, the specified compiler will be used to perform the +check. Acceptable values are C and CXX + +Despite the name of the macro you may use it to check the size of more +complex expressions, too. To check e.g. for the size of a struct +member you can do something like this: + +:: + + check_type_size("((struct something*)0)->member" SIZEOF_MEMBER) + + + +The following variables may be set before calling this macro to modify +the way the check is run: + +:: + + CMAKE_REQUIRED_FLAGS = string of compile command line flags + CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) + CMAKE_REQUIRED_INCLUDES = list of include directories + CMAKE_REQUIRED_LIBRARIES = list of libraries to link + CMAKE_REQUIRED_QUIET = execute quietly without messages + CMAKE_EXTRA_INCLUDE_FILES = list of extra headers to include +#]=======================================================================] include(CheckIncludeFile) include(CheckIncludeFileCXX) diff --git a/Modules/CheckVariableExists.cmake b/Modules/CheckVariableExists.cmake index ab456d14d6..f30165e986 100644 --- a/Modules/CheckVariableExists.cmake +++ b/Modules/CheckVariableExists.cmake @@ -1,36 +1,37 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# CheckVariableExists -# ------------------- -# -# Check if the variable exists. -# -# :: -# -# CHECK_VARIABLE_EXISTS(VAR VARIABLE) -# -# -# -# :: -# -# VAR - the name of the variable -# VARIABLE - variable to store the result -# Will be created as an internal cache variable. -# -# -# This macro is only for C variables. -# -# The following variables may be set before calling this macro to modify -# the way the check is run: -# -# :: -# -# CMAKE_REQUIRED_FLAGS = string of compile command line flags -# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) -# CMAKE_REQUIRED_LIBRARIES = list of libraries to link -# CMAKE_REQUIRED_QUIET = execute quietly without messages +#[=======================================================================[.rst: +CheckVariableExists +------------------- + +Check if the variable exists. + +:: + + CHECK_VARIABLE_EXISTS(VAR VARIABLE) + + + +:: + + VAR - the name of the variable + VARIABLE - variable to store the result + Will be created as an internal cache variable. + + +This macro is only for C variables. + +The following variables may be set before calling this macro to modify +the way the check is run: + +:: + + CMAKE_REQUIRED_FLAGS = string of compile command line flags + CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) + CMAKE_REQUIRED_LIBRARIES = list of libraries to link + CMAKE_REQUIRED_QUIET = execute quietly without messages +#]=======================================================================] include_guard(GLOBAL) diff --git a/Modules/Dart.cmake b/Modules/Dart.cmake index e003cd5ccf..154fe9d7db 100644 --- a/Modules/Dart.cmake +++ b/Modules/Dart.cmake @@ -1,27 +1,28 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# Dart -# ---- -# -# Configure a project for testing with CTest or old Dart Tcl Client -# -# This file is the backwards-compatibility version of the CTest module. -# It supports using the old Dart 1 Tcl client for driving dashboard -# submissions as well as testing with CTest. This module should be -# included in the CMakeLists.txt file at the top of a project. Typical -# usage: -# -# :: -# -# include(Dart) -# if(BUILD_TESTING) -# # ... testing related CMake code ... -# endif() -# -# The BUILD_TESTING option is created by the Dart module to determine -# whether testing support should be enabled. The default is ON. +#[=======================================================================[.rst: +Dart +---- + +Configure a project for testing with CTest or old Dart Tcl Client + +This file is the backwards-compatibility version of the CTest module. +It supports using the old Dart 1 Tcl client for driving dashboard +submissions as well as testing with CTest. This module should be +included in the CMakeLists.txt file at the top of a project. Typical +usage: + +:: + + include(Dart) + if(BUILD_TESTING) + # ... testing related CMake code ... + endif() + +The BUILD_TESTING option is created by the Dart module to determine +whether testing support should be enabled. The default is ON. +#]=======================================================================] # This file configures a project to use the Dart testing/dashboard process. # It is broken into 3 sections. diff --git a/Modules/Documentation.cmake b/Modules/Documentation.cmake index 6e212490e0..229b8aba19 100644 --- a/Modules/Documentation.cmake +++ b/Modules/Documentation.cmake @@ -1,14 +1,15 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# Documentation -# ------------- -# -# DocumentationVTK.cmake -# -# This file provides support for the VTK documentation framework. It -# relies on several tools (Doxygen, Perl, etc). +#[=======================================================================[.rst: +Documentation +------------- + +DocumentationVTK.cmake + +This file provides support for the VTK documentation framework. It +relies on several tools (Doxygen, Perl, etc). +#]=======================================================================] # # Build the documentation ? diff --git a/Modules/FindALSA.cmake b/Modules/FindALSA.cmake index c9cfd60fff..f27d7fe97f 100644 --- a/Modules/FindALSA.cmake +++ b/Modules/FindALSA.cmake @@ -1,44 +1,45 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindALSA -# -------- -# -# Find alsa -# -# Find the alsa libraries (asound) -# -# IMPORTED Targets -# ^^^^^^^^^^^^^^^^ -# -# This module defines :prop_tgt:`IMPORTED` target ``ALSA::ALSA``, if -# ALSA has been found. -# -# Result Variables -# ^^^^^^^^^^^^^^^^ -# -# This module defines the following variables: -# -# ``ALSA_FOUND`` -# True if ALSA_INCLUDE_DIR & ALSA_LIBRARY are found -# -# ``ALSA_LIBRARIES`` -# List of libraries when using ALSA. -# -# ``ALSA_INCLUDE_DIRS`` -# Where to find the ALSA headers. -# -# Cache variables -# ^^^^^^^^^^^^^^^ -# -# The following cache variables may also be set: -# -# ``ALSA_INCLUDE_DIR`` -# the ALSA include directory -# -# ``ALSA_LIBRARY`` -# the absolute path of the asound library +#[=======================================================================[.rst: +FindALSA +-------- + +Find alsa + +Find the alsa libraries (asound) + +IMPORTED Targets +^^^^^^^^^^^^^^^^ + +This module defines :prop_tgt:`IMPORTED` target ``ALSA::ALSA``, if +ALSA has been found. + +Result Variables +^^^^^^^^^^^^^^^^ + +This module defines the following variables: + +``ALSA_FOUND`` + True if ALSA_INCLUDE_DIR & ALSA_LIBRARY are found + +``ALSA_LIBRARIES`` + List of libraries when using ALSA. + +``ALSA_INCLUDE_DIRS`` + Where to find the ALSA headers. + +Cache variables +^^^^^^^^^^^^^^^ + +The following cache variables may also be set: + +``ALSA_INCLUDE_DIR`` + the ALSA include directory + +``ALSA_LIBRARY`` + the absolute path of the asound library +#]=======================================================================] find_path(ALSA_INCLUDE_DIR NAMES alsa/asoundlib.h DOC "The ALSA (asound) include directory" diff --git a/Modules/FindASPELL.cmake b/Modules/FindASPELL.cmake index 6944ac1928..c2d29e295d 100644 --- a/Modules/FindASPELL.cmake +++ b/Modules/FindASPELL.cmake @@ -1,21 +1,22 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindASPELL -# ---------- -# -# Try to find ASPELL -# -# Once done this will define -# -# :: -# -# ASPELL_FOUND - system has ASPELL -# ASPELL_EXECUTABLE - the ASPELL executable -# ASPELL_INCLUDE_DIR - the ASPELL include directory -# ASPELL_LIBRARIES - The libraries needed to use ASPELL -# ASPELL_DEFINITIONS - Compiler switches required for using ASPELL +#[=======================================================================[.rst: +FindASPELL +---------- + +Try to find ASPELL + +Once done this will define + +:: + + ASPELL_FOUND - system has ASPELL + ASPELL_EXECUTABLE - the ASPELL executable + ASPELL_INCLUDE_DIR - the ASPELL include directory + ASPELL_LIBRARIES - The libraries needed to use ASPELL + ASPELL_DEFINITIONS - Compiler switches required for using ASPELL +#]=======================================================================] find_path(ASPELL_INCLUDE_DIR aspell.h ) diff --git a/Modules/FindAVIFile.cmake b/Modules/FindAVIFile.cmake index 2df29cacbd..c12512f15a 100644 --- a/Modules/FindAVIFile.cmake +++ b/Modules/FindAVIFile.cmake @@ -1,23 +1,24 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindAVIFile -# ----------- -# -# Locate AVIFILE library and include paths -# -# AVIFILE (http://avifile.sourceforge.net/)is a set of libraries for -# i386 machines to use various AVI codecs. Support is limited beyond -# Linux. Windows provides native AVI support, and so doesn't need this -# library. This module defines -# -# :: -# -# AVIFILE_INCLUDE_DIR, where to find avifile.h , etc. -# AVIFILE_LIBRARIES, the libraries to link against -# AVIFILE_DEFINITIONS, definitions to use when compiling -# AVIFILE_FOUND, If false, don't try to use AVIFILE +#[=======================================================================[.rst: +FindAVIFile +----------- + +Locate AVIFILE library and include paths + +AVIFILE (http://avifile.sourceforge.net/)is a set of libraries for +i386 machines to use various AVI codecs. Support is limited beyond +Linux. Windows provides native AVI support, and so doesn't need this +library. This module defines + +:: + + AVIFILE_INCLUDE_DIR, where to find avifile.h , etc. + AVIFILE_LIBRARIES, the libraries to link against + AVIFILE_DEFINITIONS, definitions to use when compiling + AVIFILE_FOUND, If false, don't try to use AVIFILE +#]=======================================================================] if (UNIX) diff --git a/Modules/FindArmadillo.cmake b/Modules/FindArmadillo.cmake index 95f0c56295..ce76c99df2 100644 --- a/Modules/FindArmadillo.cmake +++ b/Modules/FindArmadillo.cmake @@ -1,35 +1,36 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindArmadillo -# ------------- -# -# Find Armadillo -# -# Find the Armadillo C++ library -# -# Using Armadillo: -# -# :: -# -# find_package(Armadillo REQUIRED) -# include_directories(${ARMADILLO_INCLUDE_DIRS}) -# add_executable(foo foo.cc) -# target_link_libraries(foo ${ARMADILLO_LIBRARIES}) -# -# This module sets the following variables: -# -# :: -# -# ARMADILLO_FOUND - set to true if the library is found -# ARMADILLO_INCLUDE_DIRS - list of required include directories -# ARMADILLO_LIBRARIES - list of libraries to be linked -# ARMADILLO_VERSION_MAJOR - major version number -# ARMADILLO_VERSION_MINOR - minor version number -# ARMADILLO_VERSION_PATCH - patch version number -# ARMADILLO_VERSION_STRING - version number as a string (ex: "1.0.4") -# ARMADILLO_VERSION_NAME - name of the version (ex: "Antipodean Antileech") +#[=======================================================================[.rst: +FindArmadillo +------------- + +Find Armadillo + +Find the Armadillo C++ library + +Using Armadillo: + +:: + + find_package(Armadillo REQUIRED) + include_directories(${ARMADILLO_INCLUDE_DIRS}) + add_executable(foo foo.cc) + target_link_libraries(foo ${ARMADILLO_LIBRARIES}) + +This module sets the following variables: + +:: + + ARMADILLO_FOUND - set to true if the library is found + ARMADILLO_INCLUDE_DIRS - list of required include directories + ARMADILLO_LIBRARIES - list of libraries to be linked + ARMADILLO_VERSION_MAJOR - major version number + ARMADILLO_VERSION_MINOR - minor version number + ARMADILLO_VERSION_PATCH - patch version number + ARMADILLO_VERSION_STRING - version number as a string (ex: "1.0.4") + ARMADILLO_VERSION_NAME - name of the version (ex: "Antipodean Antileech") +#]=======================================================================] # UNIX paths are standard, no need to write. find_library(ARMADILLO_LIBRARY diff --git a/Modules/FindBISON.cmake b/Modules/FindBISON.cmake index 2000f7ff6f..d59dc27fe8 100644 --- a/Modules/FindBISON.cmake +++ b/Modules/FindBISON.cmake @@ -1,85 +1,86 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindBISON -# --------- -# -# Find ``bison`` executable and provide a macro to generate custom build rules. -# -# The module defines the following variables: -# -# ``BISON_EXECUTABLE`` -# path to the ``bison`` program -# -# ``BISON_VERSION`` -# version of ``bison`` -# -# ``BISON_FOUND`` -# true if the program was found -# -# The minimum required version of ``bison`` can be specified using the -# standard CMake syntax, e.g. ``find_package(BISON 2.1.3)``. -# -# If ``bison`` is found, the module defines the macro:: -# -# BISON_TARGET(<Name> <YaccInput> <CodeOutput> -# [COMPILE_FLAGS <flags>] -# [DEFINES_FILE <file>] -# [VERBOSE [<file>]] -# [REPORT_FILE <file>] -# ) -# -# which will create a custom rule to generate a parser. ``<YaccInput>`` is -# the path to a yacc file. ``<CodeOutput>`` is the name of the source file -# generated by bison. A header file is also be generated, and contains -# the token list. -# -# The options are: -# -# ``COMPILE_FLAGS <flags>`` -# Specify flags to be added to the ``bison`` command line. -# -# ``DEFINES_FILE <file>`` -# Specify a non-default header ``<file>`` to be generated by ``bison``. -# -# ``VERBOSE [<file>]`` -# Tell ``bison`` to write a report file of the grammar and parser. -# If ``<file>`` is given, it specifies path the report file is copied to. -# ``[<file>]`` is left for backward compatibility of this module. -# Use ``VERBOSE REPORT_FILE <file>``. -# -# ``REPORT_FILE <file>`` -# Specify a non-default report ``<file>``, if generated. -# -# The macro defines the following variables: -# -# ``BISON_<Name>_DEFINED`` -# true is the macro ran successfully -# -# ``BISON_<Name>_INPUT`` -# The input source file, an alias for <YaccInput> -# -# ``BISON_<Name>_OUTPUT_SOURCE`` -# The source file generated by bison -# -# ``BISON_<Name>_OUTPUT_HEADER`` -# The header file generated by bison -# -# ``BISON_<Name>_OUTPUTS`` -# All files generated by bison including the source, the header and the report -# -# ``BISON_<Name>_COMPILE_FLAGS`` -# Options used in the ``bison`` command line -# -# Example usage: -# -# .. code-block:: cmake -# -# find_package(BISON) -# BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp -# DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/parser.h) -# add_executable(Foo main.cpp ${BISON_MyParser_OUTPUTS}) +#[=======================================================================[.rst: +FindBISON +--------- + +Find ``bison`` executable and provide a macro to generate custom build rules. + +The module defines the following variables: + +``BISON_EXECUTABLE`` + path to the ``bison`` program + +``BISON_VERSION`` + version of ``bison`` + +``BISON_FOUND`` + true if the program was found + +The minimum required version of ``bison`` can be specified using the +standard CMake syntax, e.g. ``find_package(BISON 2.1.3)``. + +If ``bison`` is found, the module defines the macro:: + + BISON_TARGET(<Name> <YaccInput> <CodeOutput> + [COMPILE_FLAGS <flags>] + [DEFINES_FILE <file>] + [VERBOSE [<file>]] + [REPORT_FILE <file>] + ) + +which will create a custom rule to generate a parser. ``<YaccInput>`` is +the path to a yacc file. ``<CodeOutput>`` is the name of the source file +generated by bison. A header file is also be generated, and contains +the token list. + +The options are: + +``COMPILE_FLAGS <flags>`` + Specify flags to be added to the ``bison`` command line. + +``DEFINES_FILE <file>`` + Specify a non-default header ``<file>`` to be generated by ``bison``. + +``VERBOSE [<file>]`` + Tell ``bison`` to write a report file of the grammar and parser. + If ``<file>`` is given, it specifies path the report file is copied to. + ``[<file>]`` is left for backward compatibility of this module. + Use ``VERBOSE REPORT_FILE <file>``. + +``REPORT_FILE <file>`` + Specify a non-default report ``<file>``, if generated. + +The macro defines the following variables: + +``BISON_<Name>_DEFINED`` + true is the macro ran successfully + +``BISON_<Name>_INPUT`` + The input source file, an alias for <YaccInput> + +``BISON_<Name>_OUTPUT_SOURCE`` + The source file generated by bison + +``BISON_<Name>_OUTPUT_HEADER`` + The header file generated by bison + +``BISON_<Name>_OUTPUTS`` + All files generated by bison including the source, the header and the report + +``BISON_<Name>_COMPILE_FLAGS`` + Options used in the ``bison`` command line + +Example usage: + +.. code-block:: cmake + + find_package(BISON) + BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp + DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/parser.h) + add_executable(Foo main.cpp ${BISON_MyParser_OUTPUTS}) +#]=======================================================================] find_program(BISON_EXECUTABLE NAMES bison win_bison DOC "path to the bison executable") mark_as_advanced(BISON_EXECUTABLE) diff --git a/Modules/FindBLAS.cmake b/Modules/FindBLAS.cmake index e955bc2f4f..48cd207b4d 100644 --- a/Modules/FindBLAS.cmake +++ b/Modules/FindBLAS.cmake @@ -1,74 +1,75 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindBLAS -# -------- -# -# Find BLAS library -# -# This module finds an installed fortran library that implements the -# BLAS linear-algebra interface (see http://www.netlib.org/blas/). The -# list of libraries searched for is taken from the autoconf macro file, -# acx_blas.m4 (distributed at -# http://ac-archive.sourceforge.net/ac-archive/acx_blas.html). -# -# This module sets the following variables: -# -# :: -# -# BLAS_FOUND - set to true if a library implementing the BLAS interface -# is found -# BLAS_LINKER_FLAGS - uncached list of required linker flags (excluding -l -# and -L). -# BLAS_LIBRARIES - uncached list of libraries (using full path name) to -# link against to use BLAS (may be empty if compiler implicitly links -# BLAS) -# BLAS95_LIBRARIES - uncached list of libraries (using full path name) -# to link against to use BLAS95 interface -# BLAS95_FOUND - set to true if a library implementing the BLAS f95 interface -# is found -# -# The following variables can be used to control this module: -# -# :: -# -# BLA_STATIC if set on this determines what kind of linkage we do (static) -# BLA_VENDOR if set checks only the specified vendor, if not set checks -# all the possibilities -# BLA_F95 if set on tries to find the f95 interfaces for BLAS/LAPACK -# BLA_PREFER_PKGCONFIG if set pkg-config will be used to search for a BLAS -# library first and if one is found that is preferred -# -# List of vendors (BLA_VENDOR) valid in this module: -# -# * Goto -# * OpenBLAS -# * FLAME -# * ATLAS PhiPACK -# * CXML -# * DXML -# * SunPerf -# * SCSL -# * SGIMATH -# * IBMESSL -# * Intel10_32 (intel mkl v10 32 bit) -# * Intel10_64lp (intel mkl v10+ 64 bit, threaded code, lp64 model) -# * Intel10_64lp_seq (intel mkl v10+ 64 bit, sequential code, lp64 model) -# * Intel10_64ilp (intel mkl v10+ 64 bit, threaded code, ilp64 model) -# * Intel10_64ilp_seq (intel mkl v10+ 64 bit, sequential code, ilp64 model) -# * Intel (older versions of mkl 32 and 64 bit) -# * ACML -# * ACML_MP -# * ACML_GPU -# * Apple -# * NAS -# * Generic -# -# .. note:: -# -# C/CXX should be enabled to use Intel mkl -# +#[=======================================================================[.rst: +FindBLAS +-------- + +Find BLAS library + +This module finds an installed fortran library that implements the +BLAS linear-algebra interface (see http://www.netlib.org/blas/). The +list of libraries searched for is taken from the autoconf macro file, +acx_blas.m4 (distributed at +http://ac-archive.sourceforge.net/ac-archive/acx_blas.html). + +This module sets the following variables: + +:: + + BLAS_FOUND - set to true if a library implementing the BLAS interface + is found + BLAS_LINKER_FLAGS - uncached list of required linker flags (excluding -l + and -L). + BLAS_LIBRARIES - uncached list of libraries (using full path name) to + link against to use BLAS (may be empty if compiler implicitly links + BLAS) + BLAS95_LIBRARIES - uncached list of libraries (using full path name) + to link against to use BLAS95 interface + BLAS95_FOUND - set to true if a library implementing the BLAS f95 interface + is found + +The following variables can be used to control this module: + +:: + + BLA_STATIC if set on this determines what kind of linkage we do (static) + BLA_VENDOR if set checks only the specified vendor, if not set checks + all the possibilities + BLA_F95 if set on tries to find the f95 interfaces for BLAS/LAPACK + BLA_PREFER_PKGCONFIG if set pkg-config will be used to search for a BLAS + library first and if one is found that is preferred + +List of vendors (BLA_VENDOR) valid in this module: + +* Goto +* OpenBLAS +* FLAME +* ATLAS PhiPACK +* CXML +* DXML +* SunPerf +* SCSL +* SGIMATH +* IBMESSL +* Intel10_32 (intel mkl v10 32 bit) +* Intel10_64lp (intel mkl v10+ 64 bit, threaded code, lp64 model) +* Intel10_64lp_seq (intel mkl v10+ 64 bit, sequential code, lp64 model) +* Intel10_64ilp (intel mkl v10+ 64 bit, threaded code, ilp64 model) +* Intel10_64ilp_seq (intel mkl v10+ 64 bit, sequential code, ilp64 model) +* Intel (older versions of mkl 32 and 64 bit) +* ACML +* ACML_MP +* ACML_GPU +* Apple +* NAS +* Generic + +.. note:: + + C/CXX should be enabled to use Intel mkl + +#]=======================================================================] include(${CMAKE_CURRENT_LIST_DIR}/CheckFunctionExists.cmake) include(${CMAKE_CURRENT_LIST_DIR}/CheckFortranFunctionExists.cmake) diff --git a/Modules/FindBZip2.cmake b/Modules/FindBZip2.cmake index 4d7123dd5a..249514864e 100644 --- a/Modules/FindBZip2.cmake +++ b/Modules/FindBZip2.cmake @@ -1,41 +1,42 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindBZip2 -# --------- -# -# Try to find BZip2 -# -# IMPORTED Targets -# ^^^^^^^^^^^^^^^^ -# -# This module defines :prop_tgt:`IMPORTED` target ``BZip2::BZip2``, if -# BZip2 has been found. -# -# Result Variables -# ^^^^^^^^^^^^^^^^ -# -# This module defines the following variables: -# -# ``BZIP2_FOUND`` -# system has BZip2 -# ``BZIP2_INCLUDE_DIRS`` -# the BZip2 include directories -# ``BZIP2_LIBRARIES`` -# Link these to use BZip2 -# ``BZIP2_NEED_PREFIX`` -# this is set if the functions are prefixed with ``BZ2_`` -# ``BZIP2_VERSION_STRING`` -# the version of BZip2 found -# -# Cache variables -# ^^^^^^^^^^^^^^^ -# -# The following cache variables may also be set: -# -# ``BZIP2_INCLUDE_DIR`` -# the BZip2 include directory +#[=======================================================================[.rst: +FindBZip2 +--------- + +Try to find BZip2 + +IMPORTED Targets +^^^^^^^^^^^^^^^^ + +This module defines :prop_tgt:`IMPORTED` target ``BZip2::BZip2``, if +BZip2 has been found. + +Result Variables +^^^^^^^^^^^^^^^^ + +This module defines the following variables: + +``BZIP2_FOUND`` + system has BZip2 +``BZIP2_INCLUDE_DIRS`` + the BZip2 include directories +``BZIP2_LIBRARIES`` + Link these to use BZip2 +``BZIP2_NEED_PREFIX`` + this is set if the functions are prefixed with ``BZ2_`` +``BZIP2_VERSION_STRING`` + the version of BZip2 found + +Cache variables +^^^^^^^^^^^^^^^ + +The following cache variables may also be set: + +``BZIP2_INCLUDE_DIR`` + the BZip2 include directory +#]=======================================================================] set(_BZIP2_PATHS PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Bzip2;InstallPath]" diff --git a/Modules/FindBacktrace.cmake b/Modules/FindBacktrace.cmake index 59ebdc26d2..e1f45f7d45 100644 --- a/Modules/FindBacktrace.cmake +++ b/Modules/FindBacktrace.cmake @@ -1,41 +1,42 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindBacktrace -# ------------- -# -# Find provider for backtrace(3). -# -# Checks if OS supports backtrace(3) via either libc or custom library. -# This module defines the following variables: -# -# ``Backtrace_HEADER`` -# The header file needed for backtrace(3). Cached. -# Could be forcibly set by user. -# ``Backtrace_INCLUDE_DIRS`` -# The include directories needed to use backtrace(3) header. -# ``Backtrace_LIBRARIES`` -# The libraries (linker flags) needed to use backtrace(3), if any. -# ``Backtrace_FOUND`` -# Is set if and only if backtrace(3) support detected. -# -# The following cache variables are also available to set or use: -# -# ``Backtrace_LIBRARY`` -# The external library providing backtrace, if any. -# ``Backtrace_INCLUDE_DIR`` -# The directory holding the backtrace(3) header. -# -# Typical usage is to generate of header file using configure_file() with the -# contents like the following:: -# -# #cmakedefine01 Backtrace_FOUND -# #if Backtrace_FOUND -# # include <${Backtrace_HEADER}> -# #endif -# -# And then reference that generated header file in actual source. +#[=======================================================================[.rst: +FindBacktrace +------------- + +Find provider for backtrace(3). + +Checks if OS supports backtrace(3) via either libc or custom library. +This module defines the following variables: + +``Backtrace_HEADER`` + The header file needed for backtrace(3). Cached. + Could be forcibly set by user. +``Backtrace_INCLUDE_DIRS`` + The include directories needed to use backtrace(3) header. +``Backtrace_LIBRARIES`` + The libraries (linker flags) needed to use backtrace(3), if any. +``Backtrace_FOUND`` + Is set if and only if backtrace(3) support detected. + +The following cache variables are also available to set or use: + +``Backtrace_LIBRARY`` + The external library providing backtrace, if any. +``Backtrace_INCLUDE_DIR`` + The directory holding the backtrace(3) header. + +Typical usage is to generate of header file using configure_file() with the +contents like the following:: + + #cmakedefine01 Backtrace_FOUND + #if Backtrace_FOUND + # include <${Backtrace_HEADER}> + #endif + +And then reference that generated header file in actual source. +#]=======================================================================] include(CMakePushCheckState) include(CheckSymbolExists) diff --git a/Modules/FindBoost.cmake b/Modules/FindBoost.cmake index 5090c60c61..d1f2efc894 100644 --- a/Modules/FindBoost.cmake +++ b/Modules/FindBoost.cmake @@ -1,237 +1,238 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindBoost -# --------- -# -# Find Boost include dirs and libraries -# -# Use this module by invoking find_package with the form:: -# -# find_package(Boost -# [version] [EXACT] # Minimum or EXACT version e.g. 1.67.0 -# [REQUIRED] # Fail with error if Boost is not found -# [COMPONENTS <libs>...] # Boost libraries by their canonical name -# # e.g. "date_time" for "libboost_date_time" -# [OPTIONAL_COMPONENTS <libs>...] -# # Optional Boost libraries by their canonical name) -# ) # e.g. "date_time" for "libboost_date_time" -# -# This module finds headers and requested component libraries OR a CMake -# package configuration file provided by a "Boost CMake" build. For the -# latter case skip to the "Boost CMake" section below. For the former -# case results are reported in variables:: -# -# Boost_FOUND - True if headers and requested libraries were found -# Boost_INCLUDE_DIRS - Boost include directories -# Boost_LIBRARY_DIRS - Link directories for Boost libraries -# Boost_LIBRARIES - Boost component libraries to be linked -# Boost_<C>_FOUND - True if component <C> was found (<C> is upper-case) -# Boost_<C>_LIBRARY - Libraries to link for component <C> (may include -# target_link_libraries debug/optimized keywords) -# Boost_VERSION - BOOST_VERSION value from boost/version.hpp -# Boost_LIB_VERSION - Version string appended to library filenames -# Boost_MAJOR_VERSION - Boost major version number (X in X.y.z) -# Boost_MINOR_VERSION - Boost minor version number (Y in x.Y.z) -# Boost_SUBMINOR_VERSION - Boost subminor version number (Z in x.y.Z) -# Boost_LIB_DIAGNOSTIC_DEFINITIONS (Windows) -# - Pass to add_definitions() to have diagnostic -# information about Boost's automatic linking -# displayed during compilation -# -# Note that Boost Python components require a Python version suffix -# (Boost 1.67 and later), e.g. ``python36`` or ``python27`` for the -# versions built against Python 3.6 and 2.7, respectively. This also -# applies to additional components using Python including -# ``mpi_python`` and ``numpy``. Earlier Boost releases may use -# distribution-specific suffixes such as ``2``, ``3`` or ``2.7``. -# These may also be used as suffixes, but note that they are not -# portable. -# -# This module reads hints about search locations from variables:: -# -# BOOST_ROOT - Preferred installation prefix -# (or BOOSTROOT) -# BOOST_INCLUDEDIR - Preferred include directory e.g. <prefix>/include -# BOOST_LIBRARYDIR - Preferred library directory e.g. <prefix>/lib -# Boost_NO_SYSTEM_PATHS - Set to ON to disable searching in locations not -# specified by these hint variables. Default is OFF. -# Boost_ADDITIONAL_VERSIONS -# - List of Boost versions not known to this module -# (Boost install locations may contain the version) -# -# and saves search results persistently in CMake cache entries:: -# -# Boost_INCLUDE_DIR - Directory containing Boost headers -# Boost_LIBRARY_DIR_RELEASE - Directory containing release Boost libraries -# Boost_LIBRARY_DIR_DEBUG - Directory containing debug Boost libraries -# Boost_<C>_LIBRARY_DEBUG - Component <C> library debug variant -# Boost_<C>_LIBRARY_RELEASE - Component <C> library release variant -# -# The following :prop_tgt:`IMPORTED` targets are also defined:: -# -# Boost::boost - Target for header-only dependencies -# (Boost include directory) -# Boost::<C> - Target for specific component dependency -# (shared or static library); <C> is lower- -# case -# Boost::diagnostic_definitions - interface target to enable diagnostic -# information about Boost's automatic linking -# during compilation (adds BOOST_LIB_DIAGNOSTIC) -# Boost::disable_autolinking - interface target to disable automatic -# linking with MSVC (adds BOOST_ALL_NO_LIB) -# Boost::dynamic_linking - interface target to enable dynamic linking -# linking with MSVC (adds BOOST_ALL_DYN_LINK) -# -# Implicit dependencies such as Boost::filesystem requiring -# Boost::system will be automatically detected and satisfied, even -# if system is not specified when using find_package and if -# Boost::system is not added to target_link_libraries. If using -# Boost::thread, then Threads::Threads will also be added automatically. -# -# It is important to note that the imported targets behave differently -# than variables created by this module: multiple calls to -# find_package(Boost) in the same directory or sub-directories with -# different options (e.g. static or shared) will not override the -# values of the targets created by the first call. -# -# Users may set these hints or results as cache entries. Projects -# should not read these entries directly but instead use the above -# result variables. Note that some hint names start in upper-case -# "BOOST". One may specify these as environment variables if they are -# not specified as CMake variables or cache entries. -# -# This module first searches for the Boost header files using the above -# hint variables (excluding BOOST_LIBRARYDIR) and saves the result in -# Boost_INCLUDE_DIR. Then it searches for requested component libraries -# using the above hints (excluding BOOST_INCLUDEDIR and -# Boost_ADDITIONAL_VERSIONS), "lib" directories near Boost_INCLUDE_DIR, -# and the library name configuration settings below. It saves the -# library directories in Boost_LIBRARY_DIR_DEBUG and -# Boost_LIBRARY_DIR_RELEASE and individual library -# locations in Boost_<C>_LIBRARY_DEBUG and Boost_<C>_LIBRARY_RELEASE. -# When one changes settings used by previous searches in the same build -# tree (excluding environment variables) this module discards previous -# search results affected by the changes and searches again. -# -# Boost libraries come in many variants encoded in their file name. -# Users or projects may tell this module which variant to find by -# setting variables:: -# -# Boost_USE_DEBUG_LIBS - Set to ON or OFF to specify whether to search -# and use the debug libraries. Default is ON. -# Boost_USE_RELEASE_LIBS - Set to ON or OFF to specify whether to search -# and use the release libraries. Default is ON. -# Boost_USE_MULTITHREADED - Set to OFF to use the non-multithreaded -# libraries ('mt' tag). Default is ON. -# Boost_USE_STATIC_LIBS - Set to ON to force the use of the static -# libraries. Default is OFF. -# Boost_USE_STATIC_RUNTIME - Set to ON or OFF to specify whether to use -# libraries linked statically to the C++ runtime -# ('s' tag). Default is platform dependent. -# Boost_USE_DEBUG_RUNTIME - Set to ON or OFF to specify whether to use -# libraries linked to the MS debug C++ runtime -# ('g' tag). Default is ON. -# Boost_USE_DEBUG_PYTHON - Set to ON to use libraries compiled with a -# debug Python build ('y' tag). Default is OFF. -# Boost_USE_STLPORT - Set to ON to use libraries compiled with -# STLPort ('p' tag). Default is OFF. -# Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS -# - Set to ON to use libraries compiled with -# STLPort deprecated "native iostreams" -# ('n' tag). Default is OFF. -# Boost_COMPILER - Set to the compiler-specific library suffix -# (e.g. "-gcc43"). Default is auto-computed -# for the C++ compiler in use. A list may be -# used if multiple compatible suffixes should -# be tested for, in decreasing order of -# preference. -# Boost_THREADAPI - Suffix for "thread" component library name, -# such as "pthread" or "win32". Names with -# and without this suffix will both be tried. -# Boost_NAMESPACE - Alternate namespace used to build boost with -# e.g. if set to "myboost", will search for -# myboost_thread instead of boost_thread. -# -# Other variables one may set to control this module are:: -# -# Boost_DEBUG - Set to ON to enable debug output from FindBoost. -# Please enable this before filing any bug report. -# Boost_DETAILED_FAILURE_MSG -# - Set to ON to add detailed information to the -# failure message even when the REQUIRED option -# is not given to the find_package call. -# Boost_REALPATH - Set to ON to resolve symlinks for discovered -# libraries to assist with packaging. For example, -# the "system" component library may be resolved to -# "/usr/lib/libboost_system.so.1.67.0" instead of -# "/usr/lib/libboost_system.so". This does not -# affect linking and should not be enabled unless -# the user needs this information. -# Boost_LIBRARY_DIR - Default value for Boost_LIBRARY_DIR_RELEASE and -# Boost_LIBRARY_DIR_DEBUG. -# -# On Visual Studio and Borland compilers Boost headers request automatic -# linking to corresponding libraries. This requires matching libraries -# to be linked explicitly or available in the link library search path. -# In this case setting Boost_USE_STATIC_LIBS to OFF may not achieve -# dynamic linking. Boost automatic linking typically requests static -# libraries with a few exceptions (such as Boost.Python). Use:: -# -# add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINITIONS}) -# -# to ask Boost to report information about automatic linking requests. -# -# Example to find Boost headers only:: -# -# find_package(Boost 1.36.0) -# if(Boost_FOUND) -# include_directories(${Boost_INCLUDE_DIRS}) -# add_executable(foo foo.cc) -# endif() -# -# Example to find Boost libraries and use imported targets:: -# -# find_package(Boost 1.56 REQUIRED COMPONENTS -# date_time filesystem iostreams) -# add_executable(foo foo.cc) -# target_link_libraries(foo Boost::date_time Boost::filesystem -# Boost::iostreams) -# -# Example to find Boost Python 3.6 libraries and use imported targets:: -# -# find_package(Boost 1.67 REQUIRED COMPONENTS -# python36 numpy36) -# add_executable(foo foo.cc) -# target_link_libraries(foo Boost::python36 Boost::numpy36) -# -# Example to find Boost headers and some *static* (release only) libraries:: -# -# set(Boost_USE_STATIC_LIBS ON) # only find static libs -# set(Boost_USE_DEBUG_LIBS OFF) # ignore debug libs and -# set(Boost_USE_RELEASE_LIBS ON) # only find release libs -# set(Boost_USE_MULTITHREADED ON) -# set(Boost_USE_STATIC_RUNTIME OFF) -# find_package(Boost 1.66.0 COMPONENTS date_time filesystem system ...) -# if(Boost_FOUND) -# include_directories(${Boost_INCLUDE_DIRS}) -# add_executable(foo foo.cc) -# target_link_libraries(foo ${Boost_LIBRARIES}) -# endif() -# -# Boost CMake -# ^^^^^^^^^^^ -# -# If Boost was built using the boost-cmake project it provides a package -# configuration file for use with find_package's Config mode. This -# module looks for the package configuration file called -# BoostConfig.cmake or boost-config.cmake and stores the result in cache -# entry "Boost_DIR". If found, the package configuration file is loaded -# and this module returns with no further action. See documentation of -# the Boost CMake package configuration for details on what it provides. -# -# Set Boost_NO_BOOST_CMAKE to ON to disable the search for boost-cmake. +#[=======================================================================[.rst: +FindBoost +--------- + +Find Boost include dirs and libraries + +Use this module by invoking find_package with the form:: + + find_package(Boost + [version] [EXACT] # Minimum or EXACT version e.g. 1.67.0 + [REQUIRED] # Fail with error if Boost is not found + [COMPONENTS <libs>...] # Boost libraries by their canonical name + # e.g. "date_time" for "libboost_date_time" + [OPTIONAL_COMPONENTS <libs>...] + # Optional Boost libraries by their canonical name) + ) # e.g. "date_time" for "libboost_date_time" + +This module finds headers and requested component libraries OR a CMake +package configuration file provided by a "Boost CMake" build. For the +latter case skip to the "Boost CMake" section below. For the former +case results are reported in variables:: + + Boost_FOUND - True if headers and requested libraries were found + Boost_INCLUDE_DIRS - Boost include directories + Boost_LIBRARY_DIRS - Link directories for Boost libraries + Boost_LIBRARIES - Boost component libraries to be linked + Boost_<C>_FOUND - True if component <C> was found (<C> is upper-case) + Boost_<C>_LIBRARY - Libraries to link for component <C> (may include + target_link_libraries debug/optimized keywords) + Boost_VERSION - BOOST_VERSION value from boost/version.hpp + Boost_LIB_VERSION - Version string appended to library filenames + Boost_MAJOR_VERSION - Boost major version number (X in X.y.z) + Boost_MINOR_VERSION - Boost minor version number (Y in x.Y.z) + Boost_SUBMINOR_VERSION - Boost subminor version number (Z in x.y.Z) + Boost_LIB_DIAGNOSTIC_DEFINITIONS (Windows) + - Pass to add_definitions() to have diagnostic + information about Boost's automatic linking + displayed during compilation + +Note that Boost Python components require a Python version suffix +(Boost 1.67 and later), e.g. ``python36`` or ``python27`` for the +versions built against Python 3.6 and 2.7, respectively. This also +applies to additional components using Python including +``mpi_python`` and ``numpy``. Earlier Boost releases may use +distribution-specific suffixes such as ``2``, ``3`` or ``2.7``. +These may also be used as suffixes, but note that they are not +portable. + +This module reads hints about search locations from variables:: + + BOOST_ROOT - Preferred installation prefix + (or BOOSTROOT) + BOOST_INCLUDEDIR - Preferred include directory e.g. <prefix>/include + BOOST_LIBRARYDIR - Preferred library directory e.g. <prefix>/lib + Boost_NO_SYSTEM_PATHS - Set to ON to disable searching in locations not + specified by these hint variables. Default is OFF. + Boost_ADDITIONAL_VERSIONS + - List of Boost versions not known to this module + (Boost install locations may contain the version) + +and saves search results persistently in CMake cache entries:: + + Boost_INCLUDE_DIR - Directory containing Boost headers + Boost_LIBRARY_DIR_RELEASE - Directory containing release Boost libraries + Boost_LIBRARY_DIR_DEBUG - Directory containing debug Boost libraries + Boost_<C>_LIBRARY_DEBUG - Component <C> library debug variant + Boost_<C>_LIBRARY_RELEASE - Component <C> library release variant + +The following :prop_tgt:`IMPORTED` targets are also defined:: + + Boost::boost - Target for header-only dependencies + (Boost include directory) + Boost::<C> - Target for specific component dependency + (shared or static library); <C> is lower- + case + Boost::diagnostic_definitions - interface target to enable diagnostic + information about Boost's automatic linking + during compilation (adds BOOST_LIB_DIAGNOSTIC) + Boost::disable_autolinking - interface target to disable automatic + linking with MSVC (adds BOOST_ALL_NO_LIB) + Boost::dynamic_linking - interface target to enable dynamic linking + linking with MSVC (adds BOOST_ALL_DYN_LINK) + +Implicit dependencies such as Boost::filesystem requiring +Boost::system will be automatically detected and satisfied, even +if system is not specified when using find_package and if +Boost::system is not added to target_link_libraries. If using +Boost::thread, then Threads::Threads will also be added automatically. + +It is important to note that the imported targets behave differently +than variables created by this module: multiple calls to +find_package(Boost) in the same directory or sub-directories with +different options (e.g. static or shared) will not override the +values of the targets created by the first call. + +Users may set these hints or results as cache entries. Projects +should not read these entries directly but instead use the above +result variables. Note that some hint names start in upper-case +"BOOST". One may specify these as environment variables if they are +not specified as CMake variables or cache entries. + +This module first searches for the Boost header files using the above +hint variables (excluding BOOST_LIBRARYDIR) and saves the result in +Boost_INCLUDE_DIR. Then it searches for requested component libraries +using the above hints (excluding BOOST_INCLUDEDIR and +Boost_ADDITIONAL_VERSIONS), "lib" directories near Boost_INCLUDE_DIR, +and the library name configuration settings below. It saves the +library directories in Boost_LIBRARY_DIR_DEBUG and +Boost_LIBRARY_DIR_RELEASE and individual library +locations in Boost_<C>_LIBRARY_DEBUG and Boost_<C>_LIBRARY_RELEASE. +When one changes settings used by previous searches in the same build +tree (excluding environment variables) this module discards previous +search results affected by the changes and searches again. + +Boost libraries come in many variants encoded in their file name. +Users or projects may tell this module which variant to find by +setting variables:: + + Boost_USE_DEBUG_LIBS - Set to ON or OFF to specify whether to search + and use the debug libraries. Default is ON. + Boost_USE_RELEASE_LIBS - Set to ON or OFF to specify whether to search + and use the release libraries. Default is ON. + Boost_USE_MULTITHREADED - Set to OFF to use the non-multithreaded + libraries ('mt' tag). Default is ON. + Boost_USE_STATIC_LIBS - Set to ON to force the use of the static + libraries. Default is OFF. + Boost_USE_STATIC_RUNTIME - Set to ON or OFF to specify whether to use + libraries linked statically to the C++ runtime + ('s' tag). Default is platform dependent. + Boost_USE_DEBUG_RUNTIME - Set to ON or OFF to specify whether to use + libraries linked to the MS debug C++ runtime + ('g' tag). Default is ON. + Boost_USE_DEBUG_PYTHON - Set to ON to use libraries compiled with a + debug Python build ('y' tag). Default is OFF. + Boost_USE_STLPORT - Set to ON to use libraries compiled with + STLPort ('p' tag). Default is OFF. + Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS + - Set to ON to use libraries compiled with + STLPort deprecated "native iostreams" + ('n' tag). Default is OFF. + Boost_COMPILER - Set to the compiler-specific library suffix + (e.g. "-gcc43"). Default is auto-computed + for the C++ compiler in use. A list may be + used if multiple compatible suffixes should + be tested for, in decreasing order of + preference. + Boost_THREADAPI - Suffix for "thread" component library name, + such as "pthread" or "win32". Names with + and without this suffix will both be tried. + Boost_NAMESPACE - Alternate namespace used to build boost with + e.g. if set to "myboost", will search for + myboost_thread instead of boost_thread. + +Other variables one may set to control this module are:: + + Boost_DEBUG - Set to ON to enable debug output from FindBoost. + Please enable this before filing any bug report. + Boost_DETAILED_FAILURE_MSG + - Set to ON to add detailed information to the + failure message even when the REQUIRED option + is not given to the find_package call. + Boost_REALPATH - Set to ON to resolve symlinks for discovered + libraries to assist with packaging. For example, + the "system" component library may be resolved to + "/usr/lib/libboost_system.so.1.67.0" instead of + "/usr/lib/libboost_system.so". This does not + affect linking and should not be enabled unless + the user needs this information. + Boost_LIBRARY_DIR - Default value for Boost_LIBRARY_DIR_RELEASE and + Boost_LIBRARY_DIR_DEBUG. + +On Visual Studio and Borland compilers Boost headers request automatic +linking to corresponding libraries. This requires matching libraries +to be linked explicitly or available in the link library search path. +In this case setting Boost_USE_STATIC_LIBS to OFF may not achieve +dynamic linking. Boost automatic linking typically requests static +libraries with a few exceptions (such as Boost.Python). Use:: + + add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINITIONS}) + +to ask Boost to report information about automatic linking requests. + +Example to find Boost headers only:: + + find_package(Boost 1.36.0) + if(Boost_FOUND) + include_directories(${Boost_INCLUDE_DIRS}) + add_executable(foo foo.cc) + endif() + +Example to find Boost libraries and use imported targets:: + + find_package(Boost 1.56 REQUIRED COMPONENTS + date_time filesystem iostreams) + add_executable(foo foo.cc) + target_link_libraries(foo Boost::date_time Boost::filesystem + Boost::iostreams) + +Example to find Boost Python 3.6 libraries and use imported targets:: + + find_package(Boost 1.67 REQUIRED COMPONENTS + python36 numpy36) + add_executable(foo foo.cc) + target_link_libraries(foo Boost::python36 Boost::numpy36) + +Example to find Boost headers and some *static* (release only) libraries:: + + set(Boost_USE_STATIC_LIBS ON) # only find static libs + set(Boost_USE_DEBUG_LIBS OFF) # ignore debug libs and + set(Boost_USE_RELEASE_LIBS ON) # only find release libs + set(Boost_USE_MULTITHREADED ON) + set(Boost_USE_STATIC_RUNTIME OFF) + find_package(Boost 1.66.0 COMPONENTS date_time filesystem system ...) + if(Boost_FOUND) + include_directories(${Boost_INCLUDE_DIRS}) + add_executable(foo foo.cc) + target_link_libraries(foo ${Boost_LIBRARIES}) + endif() + +Boost CMake +^^^^^^^^^^^ + +If Boost was built using the boost-cmake project it provides a package +configuration file for use with find_package's Config mode. This +module looks for the package configuration file called +BoostConfig.cmake or boost-config.cmake and stores the result in cache +entry "Boost_DIR". If found, the package configuration file is loaded +and this module returns with no further action. See documentation of +the Boost CMake package configuration for details on what it provides. + +Set Boost_NO_BOOST_CMAKE to ON to disable the search for boost-cmake. +#]=======================================================================] # Save project's policies cmake_policy(PUSH) diff --git a/Modules/FindBullet.cmake b/Modules/FindBullet.cmake index fc6695c354..a3c9fc6d13 100644 --- a/Modules/FindBullet.cmake +++ b/Modules/FindBullet.cmake @@ -1,39 +1,40 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindBullet -# ---------- -# -# Try to find the Bullet physics engine -# -# -# -# :: -# -# This module defines the following variables -# -# -# -# :: -# -# BULLET_FOUND - Was bullet found -# BULLET_INCLUDE_DIRS - the Bullet include directories -# BULLET_LIBRARIES - Link to this, by default it includes -# all bullet components (Dynamics, -# Collision, LinearMath, & SoftBody) -# -# -# -# :: -# -# This module accepts the following variables -# -# -# -# :: -# -# BULLET_ROOT - Can be set to bullet install path or Windows build path +#[=======================================================================[.rst: +FindBullet +---------- + +Try to find the Bullet physics engine + + + +:: + + This module defines the following variables + + + +:: + + BULLET_FOUND - Was bullet found + BULLET_INCLUDE_DIRS - the Bullet include directories + BULLET_LIBRARIES - Link to this, by default it includes + all bullet components (Dynamics, + Collision, LinearMath, & SoftBody) + + + +:: + + This module accepts the following variables + + + +:: + + BULLET_ROOT - Can be set to bullet install path or Windows build path +#]=======================================================================] macro(_FIND_BULLET_LIBRARY _var) find_library(${_var} diff --git a/Modules/FindCABLE.cmake b/Modules/FindCABLE.cmake index 450e32237d..1f4ae7633c 100644 --- a/Modules/FindCABLE.cmake +++ b/Modules/FindCABLE.cmake @@ -1,27 +1,28 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindCABLE -# --------- -# -# Find CABLE -# -# This module finds if CABLE is installed and determines where the -# include files and libraries are. This code sets the following -# variables: -# -# :: -# -# CABLE the path to the cable executable -# CABLE_TCL_LIBRARY the path to the Tcl wrapper library -# CABLE_INCLUDE_DIR the path to the include directory -# -# -# -# To build Tcl wrappers, you should add shared library and link it to -# ${CABLE_TCL_LIBRARY}. You should also add ${CABLE_INCLUDE_DIR} as an -# include directory. +#[=======================================================================[.rst: +FindCABLE +--------- + +Find CABLE + +This module finds if CABLE is installed and determines where the +include files and libraries are. This code sets the following +variables: + +:: + + CABLE the path to the cable executable + CABLE_TCL_LIBRARY the path to the Tcl wrapper library + CABLE_INCLUDE_DIR the path to the include directory + + + +To build Tcl wrappers, you should add shared library and link it to +${CABLE_TCL_LIBRARY}. You should also add ${CABLE_INCLUDE_DIR} as an +include directory. +#]=======================================================================] if(NOT CABLE) find_path(CABLE_BUILD_DIR cableVersion.h) diff --git a/Modules/FindCUDA.cmake b/Modules/FindCUDA.cmake index 3527979e77..2c8dd81c8a 100644 --- a/Modules/FindCUDA.cmake +++ b/Modules/FindCUDA.cmake @@ -1,378 +1,379 @@ -#.rst: -# FindCUDA -# -------- -# -# .. note:: -# -# The FindCUDA module has been superseded by first-class support -# for the CUDA language in CMake. It is no longer necessary to -# use this module or call ``find_package(CUDA)``. This module -# now exists only for compatibility with projects that have not -# been ported. -# -# Instead, list ``CUDA`` among the languages named in the top-level -# call to the :command:`project` command, or call the -# :command:`enable_language` command with ``CUDA``. -# Then one can add CUDA (``.cu``) sources to programs directly -# in calls to :command:`add_library` and :command:`add_executable`. -# -# Tools for building CUDA C files: libraries and build dependencies. -# -# This script locates the NVIDIA CUDA C tools. It should work on Linux, -# Windows, and macOS and should be reasonably up to date with CUDA C -# releases. -# -# This script makes use of the standard :command:`find_package` arguments of -# ``<VERSION>``, ``REQUIRED`` and ``QUIET``. ``CUDA_FOUND`` will report if an -# acceptable version of CUDA was found. -# -# The script will prompt the user to specify ``CUDA_TOOLKIT_ROOT_DIR`` if -# the prefix cannot be determined by the location of nvcc in the system -# path and ``REQUIRED`` is specified to :command:`find_package`. To use -# a different installed version of the toolkit set the environment variable -# ``CUDA_BIN_PATH`` before running cmake (e.g. -# ``CUDA_BIN_PATH=/usr/local/cuda1.0`` instead of the default -# ``/usr/local/cuda``) or set ``CUDA_TOOLKIT_ROOT_DIR`` after configuring. If -# you change the value of ``CUDA_TOOLKIT_ROOT_DIR``, various components that -# depend on the path will be relocated. -# -# It might be necessary to set ``CUDA_TOOLKIT_ROOT_DIR`` manually on certain -# platforms, or to use a CUDA runtime not installed in the default -# location. In newer versions of the toolkit the CUDA library is -# included with the graphics driver -- be sure that the driver version -# matches what is needed by the CUDA runtime version. -# -# The following variables affect the behavior of the macros in the -# script (in alphabetical order). Note that any of these flags can be -# changed multiple times in the same directory before calling -# ``CUDA_ADD_EXECUTABLE``, ``CUDA_ADD_LIBRARY``, ``CUDA_COMPILE``, -# ``CUDA_COMPILE_PTX``, ``CUDA_COMPILE_FATBIN``, ``CUDA_COMPILE_CUBIN`` -# or ``CUDA_WRAP_SRCS``:: -# -# CUDA_64_BIT_DEVICE_CODE (Default matches host bit size) -# -- Set to ON to compile for 64 bit device code, OFF for 32 bit device code. -# Note that making this different from the host code when generating object -# or C files from CUDA code just won't work, because size_t gets defined by -# nvcc in the generated source. If you compile to PTX and then load the -# file yourself, you can mix bit sizes between device and host. -# -# CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE (Default ON) -# -- Set to ON if you want the custom build rule to be attached to the source -# file in Visual Studio. Turn OFF if you add the same cuda file to multiple -# targets. -# -# This allows the user to build the target from the CUDA file; however, bad -# things can happen if the CUDA source file is added to multiple targets. -# When performing parallel builds it is possible for the custom build -# command to be run more than once and in parallel causing cryptic build -# errors. VS runs the rules for every source file in the target, and a -# source can have only one rule no matter how many projects it is added to. -# When the rule is run from multiple targets race conditions can occur on -# the generated file. Eventually everything will get built, but if the user -# is unaware of this behavior, there may be confusion. It would be nice if -# this script could detect the reuse of source files across multiple targets -# and turn the option off for the user, but no good solution could be found. -# -# CUDA_BUILD_CUBIN (Default OFF) -# -- Set to ON to enable and extra compilation pass with the -cubin option in -# Device mode. The output is parsed and register, shared memory usage is -# printed during build. -# -# CUDA_BUILD_EMULATION (Default OFF for device mode) -# -- Set to ON for Emulation mode. -D_DEVICEEMU is defined for CUDA C files -# when CUDA_BUILD_EMULATION is TRUE. -# -# CUDA_LINK_LIBRARIES_KEYWORD (Default "") -# -- The <PRIVATE|PUBLIC|INTERFACE> keyword to use for internal -# target_link_libraries calls. The default is to use no keyword which -# uses the old "plain" form of target_link_libraries. Note that is matters -# because whatever is used inside the FindCUDA module must also be used -# outside - the two forms of target_link_libraries cannot be mixed. -# -# CUDA_GENERATED_OUTPUT_DIR (Default CMAKE_CURRENT_BINARY_DIR) -# -- Set to the path you wish to have the generated files placed. If it is -# blank output files will be placed in CMAKE_CURRENT_BINARY_DIR. -# Intermediate files will always be placed in -# CMAKE_CURRENT_BINARY_DIR/CMakeFiles. -# -# CUDA_HOST_COMPILATION_CPP (Default ON) -# -- Set to OFF for C compilation of host code. -# -# CUDA_HOST_COMPILER (Default CMAKE_C_COMPILER) -# -- Set the host compiler to be used by nvcc. Ignored if -ccbin or -# --compiler-bindir is already present in the CUDA_NVCC_FLAGS or -# CUDA_NVCC_FLAGS_<CONFIG> variables. For Visual Studio targets, -# the host compiler is constructed with one or more visual studio macros -# such as $(VCInstallDir), that expands out to the path when -# the command is run from within VS. -# If the CUDAHOSTCXX environment variable is set it will -# be used as the default. -# -# CUDA_NVCC_FLAGS -# CUDA_NVCC_FLAGS_<CONFIG> -# -- Additional NVCC command line arguments. NOTE: multiple arguments must be -# semi-colon delimited (e.g. --compiler-options;-Wall) -# -# CUDA_PROPAGATE_HOST_FLAGS (Default ON) -# -- Set to ON to propagate CMAKE_{C,CXX}_FLAGS and their configuration -# dependent counterparts (e.g. CMAKE_C_FLAGS_DEBUG) automatically to the -# host compiler through nvcc's -Xcompiler flag. This helps make the -# generated host code match the rest of the system better. Sometimes -# certain flags give nvcc problems, and this will help you turn the flag -# propagation off. This does not affect the flags supplied directly to nvcc -# via CUDA_NVCC_FLAGS or through the OPTION flags specified through -# CUDA_ADD_LIBRARY, CUDA_ADD_EXECUTABLE, or CUDA_WRAP_SRCS. Flags used for -# shared library compilation are not affected by this flag. -# -# CUDA_SEPARABLE_COMPILATION (Default OFF) -# -- If set this will enable separable compilation for all CUDA runtime object -# files. If used outside of CUDA_ADD_EXECUTABLE and CUDA_ADD_LIBRARY -# (e.g. calling CUDA_WRAP_SRCS directly), -# CUDA_COMPUTE_SEPARABLE_COMPILATION_OBJECT_FILE_NAME and -# CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS should be called. -# -# CUDA_SOURCE_PROPERTY_FORMAT -# -- If this source file property is set, it can override the format specified -# to CUDA_WRAP_SRCS (OBJ, PTX, CUBIN, or FATBIN). If an input source file -# is not a .cu file, setting this file will cause it to be treated as a .cu -# file. See documentation for set_source_files_properties on how to set -# this property. -# -# CUDA_USE_STATIC_CUDA_RUNTIME (Default ON) -# -- When enabled the static version of the CUDA runtime library will be used -# in CUDA_LIBRARIES. If the version of CUDA configured doesn't support -# this option, then it will be silently disabled. -# -# CUDA_VERBOSE_BUILD (Default OFF) -# -- Set to ON to see all the commands used when building the CUDA file. When -# using a Makefile generator the value defaults to VERBOSE (run make -# VERBOSE=1 to see output), although setting CUDA_VERBOSE_BUILD to ON will -# always print the output. -# -# The script creates the following macros (in alphabetical order):: -# -# CUDA_ADD_CUFFT_TO_TARGET( cuda_target ) -# -- Adds the cufft library to the target (can be any target). Handles whether -# you are in emulation mode or not. -# -# CUDA_ADD_CUBLAS_TO_TARGET( cuda_target ) -# -- Adds the cublas library to the target (can be any target). Handles -# whether you are in emulation mode or not. -# -# CUDA_ADD_EXECUTABLE( cuda_target file0 file1 ... -# [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] [OPTIONS ...] ) -# -- Creates an executable "cuda_target" which is made up of the files -# specified. All of the non CUDA C files are compiled using the standard -# build rules specified by CMAKE and the cuda files are compiled to object -# files using nvcc and the host compiler. In addition CUDA_INCLUDE_DIRS is -# added automatically to include_directories(). Some standard CMake target -# calls can be used on the target after calling this macro -# (e.g. set_target_properties and target_link_libraries), but setting -# properties that adjust compilation flags will not affect code compiled by -# nvcc. Such flags should be modified before calling CUDA_ADD_EXECUTABLE, -# CUDA_ADD_LIBRARY or CUDA_WRAP_SRCS. -# -# CUDA_ADD_LIBRARY( cuda_target file0 file1 ... -# [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] [OPTIONS ...] ) -# -- Same as CUDA_ADD_EXECUTABLE except that a library is created. -# -# CUDA_BUILD_CLEAN_TARGET() -# -- Creates a convenience target that deletes all the dependency files -# generated. You should make clean after running this target to ensure the -# dependency files get regenerated. -# -# CUDA_COMPILE( generated_files file0 file1 ... [STATIC | SHARED | MODULE] -# [OPTIONS ...] ) -# -- Returns a list of generated files from the input source files to be used -# with ADD_LIBRARY or ADD_EXECUTABLE. -# -# CUDA_COMPILE_PTX( generated_files file0 file1 ... [OPTIONS ...] ) -# -- Returns a list of PTX files generated from the input source files. -# -# CUDA_COMPILE_FATBIN( generated_files file0 file1 ... [OPTIONS ...] ) -# -- Returns a list of FATBIN files generated from the input source files. -# -# CUDA_COMPILE_CUBIN( generated_files file0 file1 ... [OPTIONS ...] ) -# -- Returns a list of CUBIN files generated from the input source files. -# -# CUDA_COMPUTE_SEPARABLE_COMPILATION_OBJECT_FILE_NAME( output_file_var -# cuda_target -# object_files ) -# -- Compute the name of the intermediate link file used for separable -# compilation. This file name is typically passed into -# CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS. output_file_var is produced -# based on cuda_target the list of objects files that need separable -# compilation as specified by object_files. If the object_files list is -# empty, then output_file_var will be empty. This function is called -# automatically for CUDA_ADD_LIBRARY and CUDA_ADD_EXECUTABLE. Note that -# this is a function and not a macro. -# -# CUDA_INCLUDE_DIRECTORIES( path0 path1 ... ) -# -- Sets the directories that should be passed to nvcc -# (e.g. nvcc -Ipath0 -Ipath1 ... ). These paths usually contain other .cu -# files. -# -# -# CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS( output_file_var cuda_target -# nvcc_flags object_files) -# -- Generates the link object required by separable compilation from the given -# object files. This is called automatically for CUDA_ADD_EXECUTABLE and -# CUDA_ADD_LIBRARY, but can be called manually when using CUDA_WRAP_SRCS -# directly. When called from CUDA_ADD_LIBRARY or CUDA_ADD_EXECUTABLE the -# nvcc_flags passed in are the same as the flags passed in via the OPTIONS -# argument. The only nvcc flag added automatically is the bitness flag as -# specified by CUDA_64_BIT_DEVICE_CODE. Note that this is a function -# instead of a macro. -# -# CUDA_SELECT_NVCC_ARCH_FLAGS(out_variable [target_CUDA_architectures]) -# -- Selects GPU arch flags for nvcc based on target_CUDA_architectures -# target_CUDA_architectures : Auto | Common | All | LIST(ARCH_AND_PTX ...) -# - "Auto" detects local machine GPU compute arch at runtime. -# - "Common" and "All" cover common and entire subsets of architectures -# ARCH_AND_PTX : NAME | NUM.NUM | NUM.NUM(NUM.NUM) | NUM.NUM+PTX -# NAME: Fermi Kepler Maxwell Kepler+Tegra Kepler+Tesla Maxwell+Tegra Pascal -# NUM: Any number. Only those pairs are currently accepted by NVCC though: -# 2.0 2.1 3.0 3.2 3.5 3.7 5.0 5.2 5.3 6.0 6.2 -# Returns LIST of flags to be added to CUDA_NVCC_FLAGS in ${out_variable} -# Additionally, sets ${out_variable}_readable to the resulting numeric list -# Example: -# CUDA_SELECT_NVCC_ARCH_FLAGS(ARCH_FLAGS 3.0 3.5+PTX 5.2(5.0) Maxwell) -# LIST(APPEND CUDA_NVCC_FLAGS ${ARCH_FLAGS}) -# -# More info on CUDA architectures: https://en.wikipedia.org/wiki/CUDA -# Note that this is a function instead of a macro. -# -# CUDA_WRAP_SRCS ( cuda_target format generated_files file0 file1 ... -# [STATIC | SHARED | MODULE] [OPTIONS ...] ) -# -- This is where all the magic happens. CUDA_ADD_EXECUTABLE, -# CUDA_ADD_LIBRARY, CUDA_COMPILE, and CUDA_COMPILE_PTX all call this -# function under the hood. -# -# Given the list of files (file0 file1 ... fileN) this macro generates -# custom commands that generate either PTX or linkable objects (use "PTX" or -# "OBJ" for the format argument to switch). Files that don't end with .cu -# or have the HEADER_FILE_ONLY property are ignored. -# -# The arguments passed in after OPTIONS are extra command line options to -# give to nvcc. You can also specify per configuration options by -# specifying the name of the configuration followed by the options. General -# options must precede configuration specific options. Not all -# configurations need to be specified, only the ones provided will be used. -# -# OPTIONS -DFLAG=2 "-DFLAG_OTHER=space in flag" -# DEBUG -g -# RELEASE --use_fast_math -# RELWITHDEBINFO --use_fast_math;-g -# MINSIZEREL --use_fast_math -# -# For certain configurations (namely VS generating object files with -# CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE set to ON), no generated file will -# be produced for the given cuda file. This is because when you add the -# cuda file to Visual Studio it knows that this file produces an object file -# and will link in the resulting object file automatically. -# -# This script will also generate a separate cmake script that is used at -# build time to invoke nvcc. This is for several reasons. -# -# 1. nvcc can return negative numbers as return values which confuses -# Visual Studio into thinking that the command succeeded. The script now -# checks the error codes and produces errors when there was a problem. -# -# 2. nvcc has been known to not delete incomplete results when it -# encounters problems. This confuses build systems into thinking the -# target was generated when in fact an unusable file exists. The script -# now deletes the output files if there was an error. -# -# 3. By putting all the options that affect the build into a file and then -# make the build rule dependent on the file, the output files will be -# regenerated when the options change. -# -# This script also looks at optional arguments STATIC, SHARED, or MODULE to -# determine when to target the object compilation for a shared library. -# BUILD_SHARED_LIBS is ignored in CUDA_WRAP_SRCS, but it is respected in -# CUDA_ADD_LIBRARY. On some systems special flags are added for building -# objects intended for shared libraries. A preprocessor macro, -# <target_name>_EXPORTS is defined when a shared library compilation is -# detected. -# -# Flags passed into add_definitions with -D or /D are passed along to nvcc. -# -# -# -# The script defines the following variables:: -# -# CUDA_VERSION_MAJOR -- The major version of cuda as reported by nvcc. -# CUDA_VERSION_MINOR -- The minor version. -# CUDA_VERSION -# CUDA_VERSION_STRING -- CUDA_VERSION_MAJOR.CUDA_VERSION_MINOR -# CUDA_HAS_FP16 -- Whether a short float (float16,fp16) is supported. -# -# CUDA_TOOLKIT_ROOT_DIR -- Path to the CUDA Toolkit (defined if not set). -# CUDA_SDK_ROOT_DIR -- Path to the CUDA SDK. Use this to find files in the -# SDK. This script will not directly support finding -# specific libraries or headers, as that isn't -# supported by NVIDIA. If you want to change -# libraries when the path changes see the -# FindCUDA.cmake script for an example of how to clear -# these variables. There are also examples of how to -# use the CUDA_SDK_ROOT_DIR to locate headers or -# libraries, if you so choose (at your own risk). -# CUDA_INCLUDE_DIRS -- Include directory for cuda headers. Added automatically -# for CUDA_ADD_EXECUTABLE and CUDA_ADD_LIBRARY. -# CUDA_LIBRARIES -- Cuda RT library. -# CUDA_CUFFT_LIBRARIES -- Device or emulation library for the Cuda FFT -# implementation (alternative to: -# CUDA_ADD_CUFFT_TO_TARGET macro) -# CUDA_CUBLAS_LIBRARIES -- Device or emulation library for the Cuda BLAS -# implementation (alternative to: -# CUDA_ADD_CUBLAS_TO_TARGET macro). -# CUDA_cudart_static_LIBRARY -- Statically linkable cuda runtime library. -# Only available for CUDA version 5.5+ -# CUDA_cudadevrt_LIBRARY -- Device runtime library. -# Required for separable compilation. -# CUDA_cupti_LIBRARY -- CUDA Profiling Tools Interface library. -# Only available for CUDA version 4.0+. -# CUDA_curand_LIBRARY -- CUDA Random Number Generation library. -# Only available for CUDA version 3.2+. -# CUDA_cusolver_LIBRARY -- CUDA Direct Solver library. -# Only available for CUDA version 7.0+. -# CUDA_cusparse_LIBRARY -- CUDA Sparse Matrix library. -# Only available for CUDA version 3.2+. -# CUDA_npp_LIBRARY -- NVIDIA Performance Primitives lib. -# Only available for CUDA version 4.0+. -# CUDA_nppc_LIBRARY -- NVIDIA Performance Primitives lib (core). -# Only available for CUDA version 5.5+. -# CUDA_nppi_LIBRARY -- NVIDIA Performance Primitives lib (image processing). -# Only available for CUDA version 5.5 - 8.0. -# CUDA_nppial_LIBRARY -- NVIDIA Performance Primitives lib (image processing). -# Only available for CUDA version 9.0. -# CUDA_nppicc_LIBRARY -- NVIDIA Performance Primitives lib (image processing). -# Only available for CUDA version 9.0. -# CUDA_nppicom_LIBRARY -- NVIDIA Performance Primitives lib (image processing). -# Only available for CUDA version 9.0. -# CUDA_nppidei_LIBRARY -- NVIDIA Performance Primitives lib (image processing). -# Only available for CUDA version 9.0. -# CUDA_nppif_LIBRARY -- NVIDIA Performance Primitives lib (image processing). -# Only available for CUDA version 9.0. -# CUDA_nppig_LIBRARY -- NVIDIA Performance Primitives lib (image processing). -# Only available for CUDA version 9.0. -# CUDA_nppim_LIBRARY -- NVIDIA Performance Primitives lib (image processing). -# Only available for CUDA version 9.0. -# CUDA_nppist_LIBRARY -- NVIDIA Performance Primitives lib (image processing). -# Only available for CUDA version 9.0. -# CUDA_nppisu_LIBRARY -- NVIDIA Performance Primitives lib (image processing). -# Only available for CUDA version 9.0. -# CUDA_nppitc_LIBRARY -- NVIDIA Performance Primitives lib (image processing). -# Only available for CUDA version 9.0. -# CUDA_npps_LIBRARY -- NVIDIA Performance Primitives lib (signal processing). -# Only available for CUDA version 5.5+. -# CUDA_nvcuvenc_LIBRARY -- CUDA Video Encoder library. -# Only available for CUDA version 3.2+. -# Windows only. -# CUDA_nvcuvid_LIBRARY -- CUDA Video Decoder library. -# Only available for CUDA version 3.2+. -# Windows only. -# +#[=======================================================================[.rst: +FindCUDA +-------- + +.. note:: + + The FindCUDA module has been superseded by first-class support + for the CUDA language in CMake. It is no longer necessary to + use this module or call ``find_package(CUDA)``. This module + now exists only for compatibility with projects that have not + been ported. + + Instead, list ``CUDA`` among the languages named in the top-level + call to the :command:`project` command, or call the + :command:`enable_language` command with ``CUDA``. + Then one can add CUDA (``.cu``) sources to programs directly + in calls to :command:`add_library` and :command:`add_executable`. + +Tools for building CUDA C files: libraries and build dependencies. + +This script locates the NVIDIA CUDA C tools. It should work on Linux, +Windows, and macOS and should be reasonably up to date with CUDA C +releases. + +This script makes use of the standard :command:`find_package` arguments of +``<VERSION>``, ``REQUIRED`` and ``QUIET``. ``CUDA_FOUND`` will report if an +acceptable version of CUDA was found. + +The script will prompt the user to specify ``CUDA_TOOLKIT_ROOT_DIR`` if +the prefix cannot be determined by the location of nvcc in the system +path and ``REQUIRED`` is specified to :command:`find_package`. To use +a different installed version of the toolkit set the environment variable +``CUDA_BIN_PATH`` before running cmake (e.g. +``CUDA_BIN_PATH=/usr/local/cuda1.0`` instead of the default +``/usr/local/cuda``) or set ``CUDA_TOOLKIT_ROOT_DIR`` after configuring. If +you change the value of ``CUDA_TOOLKIT_ROOT_DIR``, various components that +depend on the path will be relocated. + +It might be necessary to set ``CUDA_TOOLKIT_ROOT_DIR`` manually on certain +platforms, or to use a CUDA runtime not installed in the default +location. In newer versions of the toolkit the CUDA library is +included with the graphics driver -- be sure that the driver version +matches what is needed by the CUDA runtime version. + +The following variables affect the behavior of the macros in the +script (in alphabetical order). Note that any of these flags can be +changed multiple times in the same directory before calling +``CUDA_ADD_EXECUTABLE``, ``CUDA_ADD_LIBRARY``, ``CUDA_COMPILE``, +``CUDA_COMPILE_PTX``, ``CUDA_COMPILE_FATBIN``, ``CUDA_COMPILE_CUBIN`` +or ``CUDA_WRAP_SRCS``:: + + CUDA_64_BIT_DEVICE_CODE (Default matches host bit size) + -- Set to ON to compile for 64 bit device code, OFF for 32 bit device code. + Note that making this different from the host code when generating object + or C files from CUDA code just won't work, because size_t gets defined by + nvcc in the generated source. If you compile to PTX and then load the + file yourself, you can mix bit sizes between device and host. + + CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE (Default ON) + -- Set to ON if you want the custom build rule to be attached to the source + file in Visual Studio. Turn OFF if you add the same cuda file to multiple + targets. + + This allows the user to build the target from the CUDA file; however, bad + things can happen if the CUDA source file is added to multiple targets. + When performing parallel builds it is possible for the custom build + command to be run more than once and in parallel causing cryptic build + errors. VS runs the rules for every source file in the target, and a + source can have only one rule no matter how many projects it is added to. + When the rule is run from multiple targets race conditions can occur on + the generated file. Eventually everything will get built, but if the user + is unaware of this behavior, there may be confusion. It would be nice if + this script could detect the reuse of source files across multiple targets + and turn the option off for the user, but no good solution could be found. + + CUDA_BUILD_CUBIN (Default OFF) + -- Set to ON to enable and extra compilation pass with the -cubin option in + Device mode. The output is parsed and register, shared memory usage is + printed during build. + + CUDA_BUILD_EMULATION (Default OFF for device mode) + -- Set to ON for Emulation mode. -D_DEVICEEMU is defined for CUDA C files + when CUDA_BUILD_EMULATION is TRUE. + + CUDA_LINK_LIBRARIES_KEYWORD (Default "") + -- The <PRIVATE|PUBLIC|INTERFACE> keyword to use for internal + target_link_libraries calls. The default is to use no keyword which + uses the old "plain" form of target_link_libraries. Note that is matters + because whatever is used inside the FindCUDA module must also be used + outside - the two forms of target_link_libraries cannot be mixed. + + CUDA_GENERATED_OUTPUT_DIR (Default CMAKE_CURRENT_BINARY_DIR) + -- Set to the path you wish to have the generated files placed. If it is + blank output files will be placed in CMAKE_CURRENT_BINARY_DIR. + Intermediate files will always be placed in + CMAKE_CURRENT_BINARY_DIR/CMakeFiles. + + CUDA_HOST_COMPILATION_CPP (Default ON) + -- Set to OFF for C compilation of host code. + + CUDA_HOST_COMPILER (Default CMAKE_C_COMPILER) + -- Set the host compiler to be used by nvcc. Ignored if -ccbin or + --compiler-bindir is already present in the CUDA_NVCC_FLAGS or + CUDA_NVCC_FLAGS_<CONFIG> variables. For Visual Studio targets, + the host compiler is constructed with one or more visual studio macros + such as $(VCInstallDir), that expands out to the path when + the command is run from within VS. + If the CUDAHOSTCXX environment variable is set it will + be used as the default. + + CUDA_NVCC_FLAGS + CUDA_NVCC_FLAGS_<CONFIG> + -- Additional NVCC command line arguments. NOTE: multiple arguments must be + semi-colon delimited (e.g. --compiler-options;-Wall) + + CUDA_PROPAGATE_HOST_FLAGS (Default ON) + -- Set to ON to propagate CMAKE_{C,CXX}_FLAGS and their configuration + dependent counterparts (e.g. CMAKE_C_FLAGS_DEBUG) automatically to the + host compiler through nvcc's -Xcompiler flag. This helps make the + generated host code match the rest of the system better. Sometimes + certain flags give nvcc problems, and this will help you turn the flag + propagation off. This does not affect the flags supplied directly to nvcc + via CUDA_NVCC_FLAGS or through the OPTION flags specified through + CUDA_ADD_LIBRARY, CUDA_ADD_EXECUTABLE, or CUDA_WRAP_SRCS. Flags used for + shared library compilation are not affected by this flag. + + CUDA_SEPARABLE_COMPILATION (Default OFF) + -- If set this will enable separable compilation for all CUDA runtime object + files. If used outside of CUDA_ADD_EXECUTABLE and CUDA_ADD_LIBRARY + (e.g. calling CUDA_WRAP_SRCS directly), + CUDA_COMPUTE_SEPARABLE_COMPILATION_OBJECT_FILE_NAME and + CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS should be called. + + CUDA_SOURCE_PROPERTY_FORMAT + -- If this source file property is set, it can override the format specified + to CUDA_WRAP_SRCS (OBJ, PTX, CUBIN, or FATBIN). If an input source file + is not a .cu file, setting this file will cause it to be treated as a .cu + file. See documentation for set_source_files_properties on how to set + this property. + + CUDA_USE_STATIC_CUDA_RUNTIME (Default ON) + -- When enabled the static version of the CUDA runtime library will be used + in CUDA_LIBRARIES. If the version of CUDA configured doesn't support + this option, then it will be silently disabled. + + CUDA_VERBOSE_BUILD (Default OFF) + -- Set to ON to see all the commands used when building the CUDA file. When + using a Makefile generator the value defaults to VERBOSE (run make + VERBOSE=1 to see output), although setting CUDA_VERBOSE_BUILD to ON will + always print the output. + +The script creates the following macros (in alphabetical order):: + + CUDA_ADD_CUFFT_TO_TARGET( cuda_target ) + -- Adds the cufft library to the target (can be any target). Handles whether + you are in emulation mode or not. + + CUDA_ADD_CUBLAS_TO_TARGET( cuda_target ) + -- Adds the cublas library to the target (can be any target). Handles + whether you are in emulation mode or not. + + CUDA_ADD_EXECUTABLE( cuda_target file0 file1 ... + [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] [OPTIONS ...] ) + -- Creates an executable "cuda_target" which is made up of the files + specified. All of the non CUDA C files are compiled using the standard + build rules specified by CMAKE and the cuda files are compiled to object + files using nvcc and the host compiler. In addition CUDA_INCLUDE_DIRS is + added automatically to include_directories(). Some standard CMake target + calls can be used on the target after calling this macro + (e.g. set_target_properties and target_link_libraries), but setting + properties that adjust compilation flags will not affect code compiled by + nvcc. Such flags should be modified before calling CUDA_ADD_EXECUTABLE, + CUDA_ADD_LIBRARY or CUDA_WRAP_SRCS. + + CUDA_ADD_LIBRARY( cuda_target file0 file1 ... + [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] [OPTIONS ...] ) + -- Same as CUDA_ADD_EXECUTABLE except that a library is created. + + CUDA_BUILD_CLEAN_TARGET() + -- Creates a convenience target that deletes all the dependency files + generated. You should make clean after running this target to ensure the + dependency files get regenerated. + + CUDA_COMPILE( generated_files file0 file1 ... [STATIC | SHARED | MODULE] + [OPTIONS ...] ) + -- Returns a list of generated files from the input source files to be used + with ADD_LIBRARY or ADD_EXECUTABLE. + + CUDA_COMPILE_PTX( generated_files file0 file1 ... [OPTIONS ...] ) + -- Returns a list of PTX files generated from the input source files. + + CUDA_COMPILE_FATBIN( generated_files file0 file1 ... [OPTIONS ...] ) + -- Returns a list of FATBIN files generated from the input source files. + + CUDA_COMPILE_CUBIN( generated_files file0 file1 ... [OPTIONS ...] ) + -- Returns a list of CUBIN files generated from the input source files. + + CUDA_COMPUTE_SEPARABLE_COMPILATION_OBJECT_FILE_NAME( output_file_var + cuda_target + object_files ) + -- Compute the name of the intermediate link file used for separable + compilation. This file name is typically passed into + CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS. output_file_var is produced + based on cuda_target the list of objects files that need separable + compilation as specified by object_files. If the object_files list is + empty, then output_file_var will be empty. This function is called + automatically for CUDA_ADD_LIBRARY and CUDA_ADD_EXECUTABLE. Note that + this is a function and not a macro. + + CUDA_INCLUDE_DIRECTORIES( path0 path1 ... ) + -- Sets the directories that should be passed to nvcc + (e.g. nvcc -Ipath0 -Ipath1 ... ). These paths usually contain other .cu + files. + + + CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS( output_file_var cuda_target + nvcc_flags object_files) + -- Generates the link object required by separable compilation from the given + object files. This is called automatically for CUDA_ADD_EXECUTABLE and + CUDA_ADD_LIBRARY, but can be called manually when using CUDA_WRAP_SRCS + directly. When called from CUDA_ADD_LIBRARY or CUDA_ADD_EXECUTABLE the + nvcc_flags passed in are the same as the flags passed in via the OPTIONS + argument. The only nvcc flag added automatically is the bitness flag as + specified by CUDA_64_BIT_DEVICE_CODE. Note that this is a function + instead of a macro. + + CUDA_SELECT_NVCC_ARCH_FLAGS(out_variable [target_CUDA_architectures]) + -- Selects GPU arch flags for nvcc based on target_CUDA_architectures + target_CUDA_architectures : Auto | Common | All | LIST(ARCH_AND_PTX ...) + - "Auto" detects local machine GPU compute arch at runtime. + - "Common" and "All" cover common and entire subsets of architectures + ARCH_AND_PTX : NAME | NUM.NUM | NUM.NUM(NUM.NUM) | NUM.NUM+PTX + NAME: Fermi Kepler Maxwell Kepler+Tegra Kepler+Tesla Maxwell+Tegra Pascal + NUM: Any number. Only those pairs are currently accepted by NVCC though: + 2.0 2.1 3.0 3.2 3.5 3.7 5.0 5.2 5.3 6.0 6.2 + Returns LIST of flags to be added to CUDA_NVCC_FLAGS in ${out_variable} + Additionally, sets ${out_variable}_readable to the resulting numeric list + Example: + CUDA_SELECT_NVCC_ARCH_FLAGS(ARCH_FLAGS 3.0 3.5+PTX 5.2(5.0) Maxwell) + LIST(APPEND CUDA_NVCC_FLAGS ${ARCH_FLAGS}) + + More info on CUDA architectures: https://en.wikipedia.org/wiki/CUDA + Note that this is a function instead of a macro. + + CUDA_WRAP_SRCS ( cuda_target format generated_files file0 file1 ... + [STATIC | SHARED | MODULE] [OPTIONS ...] ) + -- This is where all the magic happens. CUDA_ADD_EXECUTABLE, + CUDA_ADD_LIBRARY, CUDA_COMPILE, and CUDA_COMPILE_PTX all call this + function under the hood. + + Given the list of files (file0 file1 ... fileN) this macro generates + custom commands that generate either PTX or linkable objects (use "PTX" or + "OBJ" for the format argument to switch). Files that don't end with .cu + or have the HEADER_FILE_ONLY property are ignored. + + The arguments passed in after OPTIONS are extra command line options to + give to nvcc. You can also specify per configuration options by + specifying the name of the configuration followed by the options. General + options must precede configuration specific options. Not all + configurations need to be specified, only the ones provided will be used. + + OPTIONS -DFLAG=2 "-DFLAG_OTHER=space in flag" + DEBUG -g + RELEASE --use_fast_math + RELWITHDEBINFO --use_fast_math;-g + MINSIZEREL --use_fast_math + + For certain configurations (namely VS generating object files with + CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE set to ON), no generated file will + be produced for the given cuda file. This is because when you add the + cuda file to Visual Studio it knows that this file produces an object file + and will link in the resulting object file automatically. + + This script will also generate a separate cmake script that is used at + build time to invoke nvcc. This is for several reasons. + + 1. nvcc can return negative numbers as return values which confuses + Visual Studio into thinking that the command succeeded. The script now + checks the error codes and produces errors when there was a problem. + + 2. nvcc has been known to not delete incomplete results when it + encounters problems. This confuses build systems into thinking the + target was generated when in fact an unusable file exists. The script + now deletes the output files if there was an error. + + 3. By putting all the options that affect the build into a file and then + make the build rule dependent on the file, the output files will be + regenerated when the options change. + + This script also looks at optional arguments STATIC, SHARED, or MODULE to + determine when to target the object compilation for a shared library. + BUILD_SHARED_LIBS is ignored in CUDA_WRAP_SRCS, but it is respected in + CUDA_ADD_LIBRARY. On some systems special flags are added for building + objects intended for shared libraries. A preprocessor macro, + <target_name>_EXPORTS is defined when a shared library compilation is + detected. + + Flags passed into add_definitions with -D or /D are passed along to nvcc. + + + +The script defines the following variables:: + + CUDA_VERSION_MAJOR -- The major version of cuda as reported by nvcc. + CUDA_VERSION_MINOR -- The minor version. + CUDA_VERSION + CUDA_VERSION_STRING -- CUDA_VERSION_MAJOR.CUDA_VERSION_MINOR + CUDA_HAS_FP16 -- Whether a short float (float16,fp16) is supported. + + CUDA_TOOLKIT_ROOT_DIR -- Path to the CUDA Toolkit (defined if not set). + CUDA_SDK_ROOT_DIR -- Path to the CUDA SDK. Use this to find files in the + SDK. This script will not directly support finding + specific libraries or headers, as that isn't + supported by NVIDIA. If you want to change + libraries when the path changes see the + FindCUDA.cmake script for an example of how to clear + these variables. There are also examples of how to + use the CUDA_SDK_ROOT_DIR to locate headers or + libraries, if you so choose (at your own risk). + CUDA_INCLUDE_DIRS -- Include directory for cuda headers. Added automatically + for CUDA_ADD_EXECUTABLE and CUDA_ADD_LIBRARY. + CUDA_LIBRARIES -- Cuda RT library. + CUDA_CUFFT_LIBRARIES -- Device or emulation library for the Cuda FFT + implementation (alternative to: + CUDA_ADD_CUFFT_TO_TARGET macro) + CUDA_CUBLAS_LIBRARIES -- Device or emulation library for the Cuda BLAS + implementation (alternative to: + CUDA_ADD_CUBLAS_TO_TARGET macro). + CUDA_cudart_static_LIBRARY -- Statically linkable cuda runtime library. + Only available for CUDA version 5.5+ + CUDA_cudadevrt_LIBRARY -- Device runtime library. + Required for separable compilation. + CUDA_cupti_LIBRARY -- CUDA Profiling Tools Interface library. + Only available for CUDA version 4.0+. + CUDA_curand_LIBRARY -- CUDA Random Number Generation library. + Only available for CUDA version 3.2+. + CUDA_cusolver_LIBRARY -- CUDA Direct Solver library. + Only available for CUDA version 7.0+. + CUDA_cusparse_LIBRARY -- CUDA Sparse Matrix library. + Only available for CUDA version 3.2+. + CUDA_npp_LIBRARY -- NVIDIA Performance Primitives lib. + Only available for CUDA version 4.0+. + CUDA_nppc_LIBRARY -- NVIDIA Performance Primitives lib (core). + Only available for CUDA version 5.5+. + CUDA_nppi_LIBRARY -- NVIDIA Performance Primitives lib (image processing). + Only available for CUDA version 5.5 - 8.0. + CUDA_nppial_LIBRARY -- NVIDIA Performance Primitives lib (image processing). + Only available for CUDA version 9.0. + CUDA_nppicc_LIBRARY -- NVIDIA Performance Primitives lib (image processing). + Only available for CUDA version 9.0. + CUDA_nppicom_LIBRARY -- NVIDIA Performance Primitives lib (image processing). + Only available for CUDA version 9.0. + CUDA_nppidei_LIBRARY -- NVIDIA Performance Primitives lib (image processing). + Only available for CUDA version 9.0. + CUDA_nppif_LIBRARY -- NVIDIA Performance Primitives lib (image processing). + Only available for CUDA version 9.0. + CUDA_nppig_LIBRARY -- NVIDIA Performance Primitives lib (image processing). + Only available for CUDA version 9.0. + CUDA_nppim_LIBRARY -- NVIDIA Performance Primitives lib (image processing). + Only available for CUDA version 9.0. + CUDA_nppist_LIBRARY -- NVIDIA Performance Primitives lib (image processing). + Only available for CUDA version 9.0. + CUDA_nppisu_LIBRARY -- NVIDIA Performance Primitives lib (image processing). + Only available for CUDA version 9.0. + CUDA_nppitc_LIBRARY -- NVIDIA Performance Primitives lib (image processing). + Only available for CUDA version 9.0. + CUDA_npps_LIBRARY -- NVIDIA Performance Primitives lib (signal processing). + Only available for CUDA version 5.5+. + CUDA_nvcuvenc_LIBRARY -- CUDA Video Encoder library. + Only available for CUDA version 3.2+. + Windows only. + CUDA_nvcuvid_LIBRARY -- CUDA Video Decoder library. + Only available for CUDA version 3.2+. + Windows only. + +#]=======================================================================] # James Bigler, NVIDIA Corp (nvidia.com - jbigler) # Abe Stephens, SCI Institute -- http://www.sci.utah.edu/~abe/FindCuda.html diff --git a/Modules/FindCURL.cmake b/Modules/FindCURL.cmake index 60ddf7b8f0..a4b238d825 100644 --- a/Modules/FindCURL.cmake +++ b/Modules/FindCURL.cmake @@ -1,34 +1,35 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindCURL -# -------- -# -# Find the native CURL headers and libraries. -# -# IMPORTED Targets -# ^^^^^^^^^^^^^^^^ -# -# This module defines :prop_tgt:`IMPORTED` target ``CURL::libcurl``, if -# curl has been found. -# -# Result Variables -# ^^^^^^^^^^^^^^^^ -# -# This module defines the following variables: -# -# ``CURL_FOUND`` -# True if curl found. -# -# ``CURL_INCLUDE_DIRS`` -# where to find curl/curl.h, etc. -# -# ``CURL_LIBRARIES`` -# List of libraries when using curl. -# -# ``CURL_VERSION_STRING`` -# The version of curl found. +#[=======================================================================[.rst: +FindCURL +-------- + +Find the native CURL headers and libraries. + +IMPORTED Targets +^^^^^^^^^^^^^^^^ + +This module defines :prop_tgt:`IMPORTED` target ``CURL::libcurl``, if +curl has been found. + +Result Variables +^^^^^^^^^^^^^^^^ + +This module defines the following variables: + +``CURL_FOUND`` + True if curl found. + +``CURL_INCLUDE_DIRS`` + where to find curl/curl.h, etc. + +``CURL_LIBRARIES`` + List of libraries when using curl. + +``CURL_VERSION_STRING`` + The version of curl found. +#]=======================================================================] # Look for the header file. find_path(CURL_INCLUDE_DIR NAMES curl/curl.h) diff --git a/Modules/FindCVS.cmake b/Modules/FindCVS.cmake index d59dfb0970..89dbc0e109 100644 --- a/Modules/FindCVS.cmake +++ b/Modules/FindCVS.cmake @@ -1,27 +1,28 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindCVS -# ------- -# -# -# -# The module defines the following variables: -# -# :: -# -# CVS_EXECUTABLE - path to cvs command line client -# CVS_FOUND - true if the command line client was found -# -# Example usage: -# -# :: -# -# find_package(CVS) -# if(CVS_FOUND) -# message("CVS found: ${CVS_EXECUTABLE}") -# endif() +#[=======================================================================[.rst: +FindCVS +------- + + + +The module defines the following variables: + +:: + + CVS_EXECUTABLE - path to cvs command line client + CVS_FOUND - true if the command line client was found + +Example usage: + +:: + + find_package(CVS) + if(CVS_FOUND) + message("CVS found: ${CVS_EXECUTABLE}") + endif() +#]=======================================================================] # CVSNT diff --git a/Modules/FindCoin3D.cmake b/Modules/FindCoin3D.cmake index f11903d6a3..301e70bd6e 100644 --- a/Modules/FindCoin3D.cmake +++ b/Modules/FindCoin3D.cmake @@ -1,22 +1,23 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindCoin3D -# ---------- -# -# Find Coin3D (Open Inventor) -# -# Coin3D is an implementation of the Open Inventor API. It provides -# data structures and algorithms for 3D visualization. -# -# This module defines the following variables -# -# :: -# -# COIN3D_FOUND - system has Coin3D - Open Inventor -# COIN3D_INCLUDE_DIRS - where the Inventor include directory can be found -# COIN3D_LIBRARIES - Link to this to use Coin3D +#[=======================================================================[.rst: +FindCoin3D +---------- + +Find Coin3D (Open Inventor) + +Coin3D is an implementation of the Open Inventor API. It provides +data structures and algorithms for 3D visualization. + +This module defines the following variables + +:: + + COIN3D_FOUND - system has Coin3D - Open Inventor + COIN3D_INCLUDE_DIRS - where the Inventor include directory can be found + COIN3D_LIBRARIES - Link to this to use Coin3D +#]=======================================================================] if (WIN32) if (CYGWIN) diff --git a/Modules/FindCups.cmake b/Modules/FindCups.cmake index 13d3b98d6b..10ce229688 100644 --- a/Modules/FindCups.cmake +++ b/Modules/FindCups.cmake @@ -1,22 +1,23 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindCups -# -------- -# -# Try to find the Cups printing system -# -# Once done this will define -# -# :: -# -# CUPS_FOUND - system has Cups -# CUPS_INCLUDE_DIR - the Cups include directory -# CUPS_LIBRARIES - Libraries needed to use Cups -# CUPS_VERSION_STRING - version of Cups found (since CMake 2.8.8) -# Set CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE to TRUE if you need a version which -# features this function (i.e. at least 1.1.19) +#[=======================================================================[.rst: +FindCups +-------- + +Try to find the Cups printing system + +Once done this will define + +:: + + CUPS_FOUND - system has Cups + CUPS_INCLUDE_DIR - the Cups include directory + CUPS_LIBRARIES - Libraries needed to use Cups + CUPS_VERSION_STRING - version of Cups found (since CMake 2.8.8) + Set CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE to TRUE if you need a version which + features this function (i.e. at least 1.1.19) +#]=======================================================================] find_path(CUPS_INCLUDE_DIR cups/cups.h ) diff --git a/Modules/FindCurses.cmake b/Modules/FindCurses.cmake index 4f59d2c1e8..c22584782b 100644 --- a/Modules/FindCurses.cmake +++ b/Modules/FindCurses.cmake @@ -1,46 +1,47 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindCurses -# ---------- -# -# Find the curses or ncurses include file and library. -# -# Result Variables -# ^^^^^^^^^^^^^^^^ -# -# This module defines the following variables: -# -# ``CURSES_FOUND`` -# True if Curses is found. -# ``CURSES_INCLUDE_DIRS`` -# The include directories needed to use Curses. -# ``CURSES_LIBRARIES`` -# The libraries needed to use Curses. -# ``CURSES_HAVE_CURSES_H`` -# True if curses.h is available. -# ``CURSES_HAVE_NCURSES_H`` -# True if ncurses.h is available. -# ``CURSES_HAVE_NCURSES_NCURSES_H`` -# True if ``ncurses/ncurses.h`` is available. -# ``CURSES_HAVE_NCURSES_CURSES_H`` -# True if ``ncurses/curses.h`` is available. -# -# Set ``CURSES_NEED_NCURSES`` to ``TRUE`` before the -# ``find_package(Curses)`` call if NCurses functionality is required. -# Set ``CURSES_NEED_WIDE`` to ``TRUE`` before the -# ``find_package(Curses)`` call if unicode functionality is required. -# -# Backward Compatibility -# ^^^^^^^^^^^^^^^^^^^^^^ -# -# The following variable are provided for backward compatibility: -# -# ``CURSES_INCLUDE_DIR`` -# Path to Curses include. Use ``CURSES_INCLUDE_DIRS`` instead. -# ``CURSES_LIBRARY`` -# Path to Curses library. Use ``CURSES_LIBRARIES`` instead. +#[=======================================================================[.rst: +FindCurses +---------- + +Find the curses or ncurses include file and library. + +Result Variables +^^^^^^^^^^^^^^^^ + +This module defines the following variables: + +``CURSES_FOUND`` + True if Curses is found. +``CURSES_INCLUDE_DIRS`` + The include directories needed to use Curses. +``CURSES_LIBRARIES`` + The libraries needed to use Curses. +``CURSES_HAVE_CURSES_H`` + True if curses.h is available. +``CURSES_HAVE_NCURSES_H`` + True if ncurses.h is available. +``CURSES_HAVE_NCURSES_NCURSES_H`` + True if ``ncurses/ncurses.h`` is available. +``CURSES_HAVE_NCURSES_CURSES_H`` + True if ``ncurses/curses.h`` is available. + +Set ``CURSES_NEED_NCURSES`` to ``TRUE`` before the +``find_package(Curses)`` call if NCurses functionality is required. +Set ``CURSES_NEED_WIDE`` to ``TRUE`` before the +``find_package(Curses)`` call if unicode functionality is required. + +Backward Compatibility +^^^^^^^^^^^^^^^^^^^^^^ + +The following variable are provided for backward compatibility: + +``CURSES_INCLUDE_DIR`` + Path to Curses include. Use ``CURSES_INCLUDE_DIRS`` instead. +``CURSES_LIBRARY`` + Path to Curses library. Use ``CURSES_LIBRARIES`` instead. +#]=======================================================================] include(${CMAKE_CURRENT_LIST_DIR}/CheckLibraryExists.cmake) diff --git a/Modules/FindCxxTest.cmake b/Modules/FindCxxTest.cmake index 25454fd9e9..4eec5fcec5 100644 --- a/Modules/FindCxxTest.cmake +++ b/Modules/FindCxxTest.cmake @@ -1,142 +1,143 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindCxxTest -# ----------- -# -# Find CxxTest -# -# Find the CxxTest suite and declare a helper macro for creating unit -# tests and integrating them with CTest. For more details on CxxTest -# see http://cxxtest.tigris.org -# -# INPUT Variables -# -# :: -# -# CXXTEST_USE_PYTHON [deprecated since 1.3] -# Only used in the case both Python & Perl -# are detected on the system to control -# which CxxTest code generator is used. -# Valid only for CxxTest version 3. -# -# -# -# :: -# -# NOTE: In older versions of this Find Module, -# this variable controlled if the Python test -# generator was used instead of the Perl one, -# regardless of which scripting language the -# user had installed. -# -# -# -# :: -# -# CXXTEST_TESTGEN_ARGS (since CMake 2.8.3) -# Specify a list of options to pass to the CxxTest code -# generator. If not defined, --error-printer is -# passed. -# -# -# -# OUTPUT Variables -# -# :: -# -# CXXTEST_FOUND -# True if the CxxTest framework was found -# CXXTEST_INCLUDE_DIRS -# Where to find the CxxTest include directory -# CXXTEST_PERL_TESTGEN_EXECUTABLE -# The perl-based test generator -# CXXTEST_PYTHON_TESTGEN_EXECUTABLE -# The python-based test generator -# CXXTEST_TESTGEN_EXECUTABLE (since CMake 2.8.3) -# The test generator that is actually used (chosen using user preferences -# and interpreters found in the system) -# CXXTEST_TESTGEN_INTERPRETER (since CMake 2.8.3) -# The full path to the Perl or Python executable on the system, on -# platforms where the script cannot be executed using its shebang line. -# -# -# -# MACROS for optional use by CMake users: -# -# :: -# -# CXXTEST_ADD_TEST(<test_name> <gen_source_file> <input_files_to_testgen...>) -# Creates a CxxTest runner and adds it to the CTest testing suite -# Parameters: -# test_name The name of the test -# gen_source_file The generated source filename to be -# generated by CxxTest -# input_files_to_testgen The list of header files containing the -# CxxTest::TestSuite's to be included in -# this runner -# -# -# -# :: -# -# #============== -# Example Usage: -# -# -# -# :: -# -# find_package(CxxTest) -# if(CXXTEST_FOUND) -# include_directories(${CXXTEST_INCLUDE_DIR}) -# enable_testing() -# -# -# -# :: -# -# CXXTEST_ADD_TEST(unittest_foo foo_test.cc -# ${CMAKE_CURRENT_SOURCE_DIR}/foo_test.h) -# target_link_libraries(unittest_foo foo) # as needed -# endif() -# -# -# -# :: -# -# This will (if CxxTest is found): -# 1. Invoke the testgen executable to autogenerate foo_test.cc in the -# binary tree from "foo_test.h" in the current source directory. -# 2. Create an executable and test called unittest_foo. -# -# -# -# :: -# -# #============= -# Example foo_test.h: -# -# -# -# :: -# -# #include <cxxtest/TestSuite.h> -# -# -# -# :: -# -# class MyTestSuite : public CxxTest::TestSuite -# { -# public: -# void testAddition( void ) -# { -# TS_ASSERT( 1 + 1 > 1 ); -# TS_ASSERT_EQUALS( 1 + 1, 2 ); -# } -# }; +#[=======================================================================[.rst: +FindCxxTest +----------- + +Find CxxTest + +Find the CxxTest suite and declare a helper macro for creating unit +tests and integrating them with CTest. For more details on CxxTest +see http://cxxtest.tigris.org + +INPUT Variables + +:: + + CXXTEST_USE_PYTHON [deprecated since 1.3] + Only used in the case both Python & Perl + are detected on the system to control + which CxxTest code generator is used. + Valid only for CxxTest version 3. + + + +:: + + NOTE: In older versions of this Find Module, + this variable controlled if the Python test + generator was used instead of the Perl one, + regardless of which scripting language the + user had installed. + + + +:: + + CXXTEST_TESTGEN_ARGS (since CMake 2.8.3) + Specify a list of options to pass to the CxxTest code + generator. If not defined, --error-printer is + passed. + + + +OUTPUT Variables + +:: + + CXXTEST_FOUND + True if the CxxTest framework was found + CXXTEST_INCLUDE_DIRS + Where to find the CxxTest include directory + CXXTEST_PERL_TESTGEN_EXECUTABLE + The perl-based test generator + CXXTEST_PYTHON_TESTGEN_EXECUTABLE + The python-based test generator + CXXTEST_TESTGEN_EXECUTABLE (since CMake 2.8.3) + The test generator that is actually used (chosen using user preferences + and interpreters found in the system) + CXXTEST_TESTGEN_INTERPRETER (since CMake 2.8.3) + The full path to the Perl or Python executable on the system, on + platforms where the script cannot be executed using its shebang line. + + + +MACROS for optional use by CMake users: + +:: + + CXXTEST_ADD_TEST(<test_name> <gen_source_file> <input_files_to_testgen...>) + Creates a CxxTest runner and adds it to the CTest testing suite + Parameters: + test_name The name of the test + gen_source_file The generated source filename to be + generated by CxxTest + input_files_to_testgen The list of header files containing the + CxxTest::TestSuite's to be included in + this runner + + + +:: + + #============== + Example Usage: + + + +:: + + find_package(CxxTest) + if(CXXTEST_FOUND) + include_directories(${CXXTEST_INCLUDE_DIR}) + enable_testing() + + + +:: + + CXXTEST_ADD_TEST(unittest_foo foo_test.cc + ${CMAKE_CURRENT_SOURCE_DIR}/foo_test.h) + target_link_libraries(unittest_foo foo) # as needed + endif() + + + +:: + + This will (if CxxTest is found): + 1. Invoke the testgen executable to autogenerate foo_test.cc in the + binary tree from "foo_test.h" in the current source directory. + 2. Create an executable and test called unittest_foo. + + + +:: + + #============= + Example foo_test.h: + + + +:: + + #include <cxxtest/TestSuite.h> + + + +:: + + class MyTestSuite : public CxxTest::TestSuite + { + public: + void testAddition( void ) + { + TS_ASSERT( 1 + 1 > 1 ); + TS_ASSERT_EQUALS( 1 + 1, 2 ); + } + }; +#]=======================================================================] # Version 1.4 (11/18/10) (CMake 2.8.4) # Issue 11384: Added support to the CXX_ADD_TEST macro so header diff --git a/Modules/FindCygwin.cmake b/Modules/FindCygwin.cmake index 092a3bd498..8811623a22 100644 --- a/Modules/FindCygwin.cmake +++ b/Modules/FindCygwin.cmake @@ -1,11 +1,12 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindCygwin -# ---------- -# -# this module looks for Cygwin +#[=======================================================================[.rst: +FindCygwin +---------- + +this module looks for Cygwin +#]=======================================================================] if (WIN32) if(CYGWIN_INSTALL_PATH) diff --git a/Modules/FindDCMTK.cmake b/Modules/FindDCMTK.cmake index 39c1a5b349..302c0897b9 100644 --- a/Modules/FindDCMTK.cmake +++ b/Modules/FindDCMTK.cmake @@ -1,82 +1,83 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindDCMTK -# --------- -# -# Find DCMTK libraries and applications -# -# The module defines the following variables:: -# -# DCMTK_INCLUDE_DIRS - Directories to include to use DCMTK -# DCMTK_LIBRARIES - Files to link against to use DCMTK -# DCMTK_FOUND - If false, don't try to use DCMTK -# DCMTK_DIR - (optional) Source directory for DCMTK -# -# Compatibility -# ^^^^^^^^^^^^^ -# -# This module is able to find a version of DCMTK that does or does not export -# a *DCMTKConfig.cmake* file. It applies a two step process: -# -# * Step 1: Attempt to find DCMTK version providing a *DCMTKConfig.cmake* file. -# * Step 2: If step 1 failed, rely on *FindDCMTK.cmake* to set `DCMTK_*` variables details below. -# -# -# `Recent DCMTK -# <http://git.dcmtk.org/web?p=dcmtk.git;a=commit;h=662ae187c493c6b9a73dd5e3875372cebd0c11fe>`_ -# provides a *DCMTKConfig.cmake* :manual:`package configuration file -# <cmake-packages(7)>`. To exclusively use the package configuration file -# (recommended when possible), pass the `NO_MODULE` option to -# :command:`find_package`. For example, `find_package(DCMTK NO_MODULE)`. -# This requires official DCMTK snapshot *3.6.1_20140617* or newer. -# -# -# Until all clients update to the more recent DCMTK, build systems will need -# to support different versions of DCMTK. -# -# On any given system, the following combinations of DCMTK versions could be -# considered: -# -# +--------+---------------------+-----------------------+-------------------+ -# | | SYSTEM DCMTK | LOCAL DCMTK | Supported ? | -# +--------+---------------------+-----------------------+-------------------+ -# | Case A | NA | [ ] DCMTKConfig | YES | -# +--------+---------------------+-----------------------+-------------------+ -# | Case B | NA | [X] DCMTKConfig | YES | -# +--------+---------------------+-----------------------+-------------------+ -# | Case C | [ ] DCMTKConfig | NA | YES | -# +--------+---------------------+-----------------------+-------------------+ -# | Case D | [X] DCMTKConfig | NA | YES | -# +--------+---------------------+-----------------------+-------------------+ -# | Case E | [ ] DCMTKConfig | [ ] DCMTKConfig | YES (*) | -# +--------+---------------------+-----------------------+-------------------+ -# | Case F | [X] DCMTKConfig | [ ] DCMTKConfig | NO | -# +--------+---------------------+-----------------------+-------------------+ -# | Case G | [ ] DCMTKConfig | [X] DCMTKConfig | YES | -# +--------+---------------------+-----------------------+-------------------+ -# | Case H | [X] DCMTKConfig | [X] DCMTKConfig | YES | -# +--------+---------------------+-----------------------+-------------------+ -# -# (*) See Troubleshooting section. -# -# Legend: -# -# NA ...............: Means that no System or Local DCMTK is available -# -# [ ] DCMTKConfig ..: Means that the version of DCMTK does NOT export a DCMTKConfig.cmake file. -# -# [X] DCMTKConfig ..: Means that the version of DCMTK exports a DCMTKConfig.cmake file. -# -# -# Troubleshooting -# ^^^^^^^^^^^^^^^ -# -# What to do if my project finds a different version of DCMTK? -# -# Remove DCMTK entry from the CMake cache per :command:`find_package` -# documentation. +#[=======================================================================[.rst: +FindDCMTK +--------- + +Find DCMTK libraries and applications + +The module defines the following variables:: + + DCMTK_INCLUDE_DIRS - Directories to include to use DCMTK + DCMTK_LIBRARIES - Files to link against to use DCMTK + DCMTK_FOUND - If false, don't try to use DCMTK + DCMTK_DIR - (optional) Source directory for DCMTK + +Compatibility +^^^^^^^^^^^^^ + +This module is able to find a version of DCMTK that does or does not export +a *DCMTKConfig.cmake* file. It applies a two step process: + +* Step 1: Attempt to find DCMTK version providing a *DCMTKConfig.cmake* file. +* Step 2: If step 1 failed, rely on *FindDCMTK.cmake* to set `DCMTK_*` variables details below. + + +`Recent DCMTK +<http://git.dcmtk.org/web?p=dcmtk.git;a=commit;h=662ae187c493c6b9a73dd5e3875372cebd0c11fe>`_ +provides a *DCMTKConfig.cmake* :manual:`package configuration file +<cmake-packages(7)>`. To exclusively use the package configuration file +(recommended when possible), pass the `NO_MODULE` option to +:command:`find_package`. For example, `find_package(DCMTK NO_MODULE)`. +This requires official DCMTK snapshot *3.6.1_20140617* or newer. + + +Until all clients update to the more recent DCMTK, build systems will need +to support different versions of DCMTK. + +On any given system, the following combinations of DCMTK versions could be +considered: + ++--------+---------------------+-----------------------+-------------------+ +| | SYSTEM DCMTK | LOCAL DCMTK | Supported ? | ++--------+---------------------+-----------------------+-------------------+ +| Case A | NA | [ ] DCMTKConfig | YES | ++--------+---------------------+-----------------------+-------------------+ +| Case B | NA | [X] DCMTKConfig | YES | ++--------+---------------------+-----------------------+-------------------+ +| Case C | [ ] DCMTKConfig | NA | YES | ++--------+---------------------+-----------------------+-------------------+ +| Case D | [X] DCMTKConfig | NA | YES | ++--------+---------------------+-----------------------+-------------------+ +| Case E | [ ] DCMTKConfig | [ ] DCMTKConfig | YES (*) | ++--------+---------------------+-----------------------+-------------------+ +| Case F | [X] DCMTKConfig | [ ] DCMTKConfig | NO | ++--------+---------------------+-----------------------+-------------------+ +| Case G | [ ] DCMTKConfig | [X] DCMTKConfig | YES | ++--------+---------------------+-----------------------+-------------------+ +| Case H | [X] DCMTKConfig | [X] DCMTKConfig | YES | ++--------+---------------------+-----------------------+-------------------+ + + (*) See Troubleshooting section. + +Legend: + + NA ...............: Means that no System or Local DCMTK is available + + [ ] DCMTKConfig ..: Means that the version of DCMTK does NOT export a DCMTKConfig.cmake file. + + [X] DCMTKConfig ..: Means that the version of DCMTK exports a DCMTKConfig.cmake file. + + +Troubleshooting +^^^^^^^^^^^^^^^ + +What to do if my project finds a different version of DCMTK? + +Remove DCMTK entry from the CMake cache per :command:`find_package` +documentation. +#]=======================================================================] # # Written for VXL by Amitha Perera. diff --git a/Modules/FindDart.cmake b/Modules/FindDart.cmake index acd4ef62d4..04925783b8 100644 --- a/Modules/FindDart.cmake +++ b/Modules/FindDart.cmake @@ -1,14 +1,15 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindDart -# -------- -# -# Find DART -# -# This module looks for the dart testing software and sets DART_ROOT to -# point to where it found it. +#[=======================================================================[.rst: +FindDart +-------- + +Find DART + +This module looks for the dart testing software and sets DART_ROOT to +point to where it found it. +#]=======================================================================] find_path(DART_ROOT README.INSTALL HINTS diff --git a/Modules/FindDevIL.cmake b/Modules/FindDevIL.cmake index e904a30fcc..998494365b 100644 --- a/Modules/FindDevIL.cmake +++ b/Modules/FindDevIL.cmake @@ -1,35 +1,36 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindDevIL -# --------- -# -# -# -# This module locates the developer's image library. -# http://openil.sourceforge.net/ -# -# This module sets: -# -# :: -# -# IL_LIBRARIES - the name of the IL library. These include the full path to -# the core DevIL library. This one has to be linked into the -# application. -# ILU_LIBRARIES - the name of the ILU library. Again, the full path. This -# library is for filters and effects, not actual loading. It -# doesn't have to be linked if the functionality it provides -# is not used. -# ILUT_LIBRARIES - the name of the ILUT library. Full path. This part of the -# library interfaces with OpenGL. It is not strictly needed -# in applications. -# IL_INCLUDE_DIR - where to find the il.h, ilu.h and ilut.h files. -# DevIL_FOUND - this is set to TRUE if all the above variables were set. -# This will be set to false if ILU or ILUT are not found, -# even if they are not needed. In most systems, if one -# library is found all the others are as well. That's the -# way the DevIL developers release it. +#[=======================================================================[.rst: +FindDevIL +--------- + + + +This module locates the developer's image library. +http://openil.sourceforge.net/ + +This module sets: + +:: + + IL_LIBRARIES - the name of the IL library. These include the full path to + the core DevIL library. This one has to be linked into the + application. + ILU_LIBRARIES - the name of the ILU library. Again, the full path. This + library is for filters and effects, not actual loading. It + doesn't have to be linked if the functionality it provides + is not used. + ILUT_LIBRARIES - the name of the ILUT library. Full path. This part of the + library interfaces with OpenGL. It is not strictly needed + in applications. + IL_INCLUDE_DIR - where to find the il.h, ilu.h and ilut.h files. + DevIL_FOUND - this is set to TRUE if all the above variables were set. + This will be set to false if ILU or ILUT are not found, + even if they are not needed. In most systems, if one + library is found all the others are as well. That's the + way the DevIL developers release it. +#]=======================================================================] # TODO: Add version support. # Tested under Linux and Windows (MSVC) diff --git a/Modules/FindEXPAT.cmake b/Modules/FindEXPAT.cmake index 39086e499d..58e08418cf 100644 --- a/Modules/FindEXPAT.cmake +++ b/Modules/FindEXPAT.cmake @@ -1,32 +1,33 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindEXPAT -# --------- -# -# Find the native Expat headers and library. -# -# Imported Targets -# ^^^^^^^^^^^^^^^^ -# -# This module defines the following :prop_tgt:`IMPORTED` targets: -# -# ``EXPAT::EXPAT`` -# The Expat ``expat`` library, if found. -# -# Result Variables -# ^^^^^^^^^^^^^^^^ -# -# This module will set the following variables in your project: -# -# ``EXPAT_INCLUDE_DIRS`` -# where to find expat.h, etc. -# ``EXPAT_LIBRARIES`` -# the libraries to link against to use Expat. -# ``EXPAT_FOUND`` -# true if the Expat headers and libraries were found. -# +#[=======================================================================[.rst: +FindEXPAT +--------- + +Find the native Expat headers and library. + +Imported Targets +^^^^^^^^^^^^^^^^ + +This module defines the following :prop_tgt:`IMPORTED` targets: + +``EXPAT::EXPAT`` + The Expat ``expat`` library, if found. + +Result Variables +^^^^^^^^^^^^^^^^ + +This module will set the following variables in your project: + +``EXPAT_INCLUDE_DIRS`` + where to find expat.h, etc. +``EXPAT_LIBRARIES`` + the libraries to link against to use Expat. +``EXPAT_FOUND`` + true if the Expat headers and libraries were found. + +#]=======================================================================] find_package(PkgConfig QUIET) diff --git a/Modules/FindFLEX.cmake b/Modules/FindFLEX.cmake index 3945b78848..edebe755c0 100644 --- a/Modules/FindFLEX.cmake +++ b/Modules/FindFLEX.cmake @@ -1,100 +1,101 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindFLEX -# -------- -# -# Find flex executable and provides a macro to generate custom build rules -# -# -# -# The module defines the following variables: -# -# :: -# -# FLEX_FOUND - true is flex executable is found -# FLEX_EXECUTABLE - the path to the flex executable -# FLEX_VERSION - the version of flex -# FLEX_LIBRARIES - The flex libraries -# FLEX_INCLUDE_DIRS - The path to the flex headers -# -# -# -# The minimum required version of flex can be specified using the -# standard syntax, e.g. find_package(FLEX 2.5.13) -# -# -# -# If flex is found on the system, the module provides the macro: -# -# :: -# -# FLEX_TARGET(Name FlexInput FlexOutput -# [COMPILE_FLAGS <string>] -# [DEFINES_FILE <string>] -# ) -# -# which creates a custom command to generate the <FlexOutput> file from -# the <FlexInput> file. If COMPILE_FLAGS option is specified, the next -# parameter is added to the flex command line. If flex is configured to -# output a header file, the DEFINES_FILE option may be used to specify its -# name. Name is an alias used to get details of this custom command. -# Indeed the macro defines the following variables: -# -# :: -# -# FLEX_${Name}_DEFINED - true is the macro ran successfully -# FLEX_${Name}_OUTPUTS - the source file generated by the custom rule, an -# alias for FlexOutput -# FLEX_${Name}_INPUT - the flex source file, an alias for ${FlexInput} -# FLEX_${Name}_OUTPUT_HEADER - the header flex output, if any. -# -# -# -# Flex scanners often use tokens defined by Bison: the code generated -# by Flex depends of the header generated by Bison. This module also -# defines a macro: -# -# :: -# -# ADD_FLEX_BISON_DEPENDENCY(FlexTarget BisonTarget) -# -# which adds the required dependency between a scanner and a parser -# where <FlexTarget> and <BisonTarget> are the first parameters of -# respectively FLEX_TARGET and BISON_TARGET macros. -# -# :: -# -# ==================================================================== -# Example: -# -# -# -# :: -# -# find_package(BISON) -# find_package(FLEX) -# -# -# -# :: -# -# BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp) -# FLEX_TARGET(MyScanner lexer.l ${CMAKE_CURRENT_BINARY_DIR}/lexer.cpp) -# ADD_FLEX_BISON_DEPENDENCY(MyScanner MyParser) -# -# -# -# :: -# -# include_directories(${CMAKE_CURRENT_BINARY_DIR}) -# add_executable(Foo -# Foo.cc -# ${BISON_MyParser_OUTPUTS} -# ${FLEX_MyScanner_OUTPUTS} -# ) -# ==================================================================== +#[=======================================================================[.rst: +FindFLEX +-------- + +Find flex executable and provides a macro to generate custom build rules + + + +The module defines the following variables: + +:: + + FLEX_FOUND - true is flex executable is found + FLEX_EXECUTABLE - the path to the flex executable + FLEX_VERSION - the version of flex + FLEX_LIBRARIES - The flex libraries + FLEX_INCLUDE_DIRS - The path to the flex headers + + + +The minimum required version of flex can be specified using the +standard syntax, e.g. find_package(FLEX 2.5.13) + + + +If flex is found on the system, the module provides the macro: + +:: + + FLEX_TARGET(Name FlexInput FlexOutput + [COMPILE_FLAGS <string>] + [DEFINES_FILE <string>] + ) + +which creates a custom command to generate the <FlexOutput> file from +the <FlexInput> file. If COMPILE_FLAGS option is specified, the next +parameter is added to the flex command line. If flex is configured to +output a header file, the DEFINES_FILE option may be used to specify its +name. Name is an alias used to get details of this custom command. +Indeed the macro defines the following variables: + +:: + + FLEX_${Name}_DEFINED - true is the macro ran successfully + FLEX_${Name}_OUTPUTS - the source file generated by the custom rule, an + alias for FlexOutput + FLEX_${Name}_INPUT - the flex source file, an alias for ${FlexInput} + FLEX_${Name}_OUTPUT_HEADER - the header flex output, if any. + + + +Flex scanners often use tokens defined by Bison: the code generated +by Flex depends of the header generated by Bison. This module also +defines a macro: + +:: + + ADD_FLEX_BISON_DEPENDENCY(FlexTarget BisonTarget) + +which adds the required dependency between a scanner and a parser +where <FlexTarget> and <BisonTarget> are the first parameters of +respectively FLEX_TARGET and BISON_TARGET macros. + +:: + + ==================================================================== + Example: + + + +:: + + find_package(BISON) + find_package(FLEX) + + + +:: + + BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp) + FLEX_TARGET(MyScanner lexer.l ${CMAKE_CURRENT_BINARY_DIR}/lexer.cpp) + ADD_FLEX_BISON_DEPENDENCY(MyScanner MyParser) + + + +:: + + include_directories(${CMAKE_CURRENT_BINARY_DIR}) + add_executable(Foo + Foo.cc + ${BISON_MyParser_OUTPUTS} + ${FLEX_MyScanner_OUTPUTS} + ) + ==================================================================== +#]=======================================================================] find_program(FLEX_EXECUTABLE NAMES flex win_flex DOC "path to the flex executable") mark_as_advanced(FLEX_EXECUTABLE) diff --git a/Modules/FindFLTK.cmake b/Modules/FindFLTK.cmake index 82c63efd4f..89122c0458 100644 --- a/Modules/FindFLTK.cmake +++ b/Modules/FindFLTK.cmake @@ -1,82 +1,83 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindFLTK -# -------- -# -# Find the FLTK library -# -# Input Variables -# ^^^^^^^^^^^^^^^ -# -# By default this module will search for all of the FLTK components and -# add them to the FLTK_LIBRARIES variable. You can limit the components -# which get placed in FLTK_LIBRARIES by defining one or more of the -# following three options: -# -# ``FLTK_SKIP_OPENGL`` -# Set to true to disable searching for the FLTK GL library -# -# ``FLTK_SKIP_FORMS`` -# Set to true to disable searching for the FLTK Forms library -# -# ``FLTK_SKIP_IMAGES`` -# Set to true to disable searching for the FLTK Images library -# -# FLTK is composed also by a binary tool. You can set the following option: -# -# ``FLTK_SKIP_FLUID`` -# Set to true to not look for the FLUID binary -# -# Result Variables -# ^^^^^^^^^^^^^^^^ -# -# The following variables will be defined: -# -# ``FLTK_FOUND`` -# True if all components not skipped were found -# -# ``FLTK_INCLUDE_DIR`` -# Path to the include directory for FLTK header files -# -# ``FLTK_LIBRARIES`` -# List of the FLTK libraries found -# -# ``FLTK_FLUID_EXECUTABLE`` -# Path to the FLUID binary tool -# -# ``FLTK_WRAP_UI`` -# True if FLUID is found, used to enable the FLTK_WRAP_UI command -# -# Cache Variables -# ^^^^^^^^^^^^^^^ -# -# The following cache variables are also available to set or use: -# -# ``FLTK_BASE_LIBRARY_RELEASE`` -# The FLTK base library (optimized) -# -# ``FLTK_BASE_LIBRARY_DEBUG`` -# The FLTK base library (debug) -# -# ``FLTK_GL_LIBRARY_RELEASE`` -# The FLTK GL library (optimized) -# -# ``FLTK_GL_LIBRARY_DEBUG`` -# The FLTK GL library (debug) -# -# ``FLTK_FORMS_LIBRARY_RELEASE`` -# The FLTK Forms library (optimized) -# -# ``FLTK_FORMS_LIBRARY_DEBUG`` -# The FLTK Forms library (debug) -# -# ``FLTK_IMAGES_LIBRARY_RELEASE`` -# The FLTK Images protobuf library (optimized) -# -# ``FLTK_IMAGES_LIBRARY_DEBUG`` -# The FLTK Images library (debug) +#[=======================================================================[.rst: +FindFLTK +-------- + +Find the FLTK library + +Input Variables +^^^^^^^^^^^^^^^ + +By default this module will search for all of the FLTK components and +add them to the FLTK_LIBRARIES variable. You can limit the components +which get placed in FLTK_LIBRARIES by defining one or more of the +following three options: + +``FLTK_SKIP_OPENGL`` + Set to true to disable searching for the FLTK GL library + +``FLTK_SKIP_FORMS`` + Set to true to disable searching for the FLTK Forms library + +``FLTK_SKIP_IMAGES`` + Set to true to disable searching for the FLTK Images library + +FLTK is composed also by a binary tool. You can set the following option: + +``FLTK_SKIP_FLUID`` + Set to true to not look for the FLUID binary + +Result Variables +^^^^^^^^^^^^^^^^ + +The following variables will be defined: + +``FLTK_FOUND`` + True if all components not skipped were found + +``FLTK_INCLUDE_DIR`` + Path to the include directory for FLTK header files + +``FLTK_LIBRARIES`` + List of the FLTK libraries found + +``FLTK_FLUID_EXECUTABLE`` + Path to the FLUID binary tool + +``FLTK_WRAP_UI`` + True if FLUID is found, used to enable the FLTK_WRAP_UI command + +Cache Variables +^^^^^^^^^^^^^^^ + +The following cache variables are also available to set or use: + +``FLTK_BASE_LIBRARY_RELEASE`` + The FLTK base library (optimized) + +``FLTK_BASE_LIBRARY_DEBUG`` + The FLTK base library (debug) + +``FLTK_GL_LIBRARY_RELEASE`` + The FLTK GL library (optimized) + +``FLTK_GL_LIBRARY_DEBUG`` + The FLTK GL library (debug) + +``FLTK_FORMS_LIBRARY_RELEASE`` + The FLTK Forms library (optimized) + +``FLTK_FORMS_LIBRARY_DEBUG`` + The FLTK Forms library (debug) + +``FLTK_IMAGES_LIBRARY_RELEASE`` + The FLTK Images protobuf library (optimized) + +``FLTK_IMAGES_LIBRARY_DEBUG`` + The FLTK Images library (debug) +#]=======================================================================] if(NOT FLTK_SKIP_OPENGL) find_package(OpenGL) diff --git a/Modules/FindFLTK2.cmake b/Modules/FindFLTK2.cmake index 365a82a55b..161d15c4a5 100644 --- a/Modules/FindFLTK2.cmake +++ b/Modules/FindFLTK2.cmake @@ -1,29 +1,30 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindFLTK2 -# --------- -# -# Find the native FLTK2 includes and library -# -# The following settings are defined -# -# :: -# -# FLTK2_FLUID_EXECUTABLE, where to find the Fluid tool -# FLTK2_WRAP_UI, This enables the FLTK2_WRAP_UI command -# FLTK2_INCLUDE_DIR, where to find include files -# FLTK2_LIBRARIES, list of fltk2 libraries -# FLTK2_FOUND, Don't use FLTK2 if false. -# -# The following settings should not be used in general. -# -# :: -# -# FLTK2_BASE_LIBRARY = the full path to fltk2.lib -# FLTK2_GL_LIBRARY = the full path to fltk2_gl.lib -# FLTK2_IMAGES_LIBRARY = the full path to fltk2_images.lib +#[=======================================================================[.rst: +FindFLTK2 +--------- + +Find the native FLTK2 includes and library + +The following settings are defined + +:: + + FLTK2_FLUID_EXECUTABLE, where to find the Fluid tool + FLTK2_WRAP_UI, This enables the FLTK2_WRAP_UI command + FLTK2_INCLUDE_DIR, where to find include files + FLTK2_LIBRARIES, list of fltk2 libraries + FLTK2_FOUND, Don't use FLTK2 if false. + +The following settings should not be used in general. + +:: + + FLTK2_BASE_LIBRARY = the full path to fltk2.lib + FLTK2_GL_LIBRARY = the full path to fltk2_gl.lib + FLTK2_IMAGES_LIBRARY = the full path to fltk2_images.lib +#]=======================================================================] set (FLTK2_DIR $ENV{FLTK2_DIR} ) diff --git a/Modules/FindFreetype.cmake b/Modules/FindFreetype.cmake index 61643be455..3e6a177dcc 100644 --- a/Modules/FindFreetype.cmake +++ b/Modules/FindFreetype.cmake @@ -1,45 +1,46 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindFreetype -# ------------ -# -# Find the FreeType font renderer includes and library. -# -# Imported Targets -# ^^^^^^^^^^^^^^^^ -# -# This module defines the following :prop_tgt:`IMPORTED` target: -# -# ``Freetype::Freetype`` -# The Freetype ``freetype`` library, if found -# -# Result Variables -# ^^^^^^^^^^^^^^^^ -# -# This module will set the following variables in your project: -# -# ``FREETYPE_FOUND`` -# true if the Freetype headers and libraries were found -# ``FREETYPE_INCLUDE_DIRS`` -# directories containing the Freetype headers. This is the -# concatenation of the variables: -# -# ``FREETYPE_INCLUDE_DIR_ft2build`` -# directory holding the main Freetype API configuration header -# ``FREETYPE_INCLUDE_DIR_freetype2`` -# directory holding Freetype public headers -# ``FREETYPE_LIBRARIES`` -# the library to link against -# ``FREETYPE_VERSION_STRING`` -# the version of freetype found (since CMake 2.8.8) -# -# Hints -# ^^^^^ -# -# The user may set the environment variable ``FREETYPE_DIR`` to the root -# directory of a Freetype installation. +#[=======================================================================[.rst: +FindFreetype +------------ + +Find the FreeType font renderer includes and library. + +Imported Targets +^^^^^^^^^^^^^^^^ + +This module defines the following :prop_tgt:`IMPORTED` target: + +``Freetype::Freetype`` + The Freetype ``freetype`` library, if found + +Result Variables +^^^^^^^^^^^^^^^^ + +This module will set the following variables in your project: + +``FREETYPE_FOUND`` + true if the Freetype headers and libraries were found +``FREETYPE_INCLUDE_DIRS`` + directories containing the Freetype headers. This is the + concatenation of the variables: + + ``FREETYPE_INCLUDE_DIR_ft2build`` + directory holding the main Freetype API configuration header + ``FREETYPE_INCLUDE_DIR_freetype2`` + directory holding Freetype public headers +``FREETYPE_LIBRARIES`` + the library to link against +``FREETYPE_VERSION_STRING`` + the version of freetype found (since CMake 2.8.8) + +Hints +^^^^^ + +The user may set the environment variable ``FREETYPE_DIR`` to the root +directory of a Freetype installation. +#]=======================================================================] # Created by Eric Wing. # Modifications by Alexander Neundorf. diff --git a/Modules/FindGCCXML.cmake b/Modules/FindGCCXML.cmake index 1f8d738f82..e6c7f2434d 100644 --- a/Modules/FindGCCXML.cmake +++ b/Modules/FindGCCXML.cmake @@ -1,19 +1,20 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindGCCXML -# ---------- -# -# Find the GCC-XML front-end executable. -# -# -# -# This module will define the following variables: -# -# :: -# -# GCCXML - the GCC-XML front-end executable. +#[=======================================================================[.rst: +FindGCCXML +---------- + +Find the GCC-XML front-end executable. + + + +This module will define the following variables: + +:: + + GCCXML - the GCC-XML front-end executable. +#]=======================================================================] find_program(GCCXML NAMES gccxml diff --git a/Modules/FindGDAL.cmake b/Modules/FindGDAL.cmake index ff2976e6a2..030553faf1 100644 --- a/Modules/FindGDAL.cmake +++ b/Modules/FindGDAL.cmake @@ -1,29 +1,30 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindGDAL -# -------- -# -# -# -# Locate gdal -# -# This module accepts the following environment variables: -# -# :: -# -# GDAL_DIR or GDAL_ROOT - Specify the location of GDAL -# -# -# -# This module defines the following CMake variables: -# -# :: -# -# GDAL_FOUND - True if libgdal is found -# GDAL_LIBRARY - A variable pointing to the GDAL library -# GDAL_INCLUDE_DIR - Where to find the headers +#[=======================================================================[.rst: +FindGDAL +-------- + + + +Locate gdal + +This module accepts the following environment variables: + +:: + + GDAL_DIR or GDAL_ROOT - Specify the location of GDAL + + + +This module defines the following CMake variables: + +:: + + GDAL_FOUND - True if libgdal is found + GDAL_LIBRARY - A variable pointing to the GDAL library + GDAL_INCLUDE_DIR - Where to find the headers +#]=======================================================================] # # $GDALDIR is an environment variable that would diff --git a/Modules/FindGIF.cmake b/Modules/FindGIF.cmake index efc397318f..9a995af2c3 100644 --- a/Modules/FindGIF.cmake +++ b/Modules/FindGIF.cmake @@ -1,28 +1,29 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindGIF -# ------- -# -# This finds the GIF library (giflib) -# -# The module defines the following variables: -# -# ``GIF_FOUND`` -# True if giflib was found -# ``GIF_LIBRARIES`` -# Libraries to link to in order to use giflib -# ``GIF_INCLUDE_DIR`` -# where to find the headers -# ``GIF_VERSION`` -# 3, 4 or a full version string (eg 5.1.4) for versions >= 4.1.6 -# -# The minimum required version of giflib can be specified using the -# standard syntax, e.g. find_package(GIF 4) -# -# $GIF_DIR is an environment variable that would correspond to the -# ./configure --prefix=$GIF_DIR +#[=======================================================================[.rst: +FindGIF +------- + +This finds the GIF library (giflib) + +The module defines the following variables: + +``GIF_FOUND`` + True if giflib was found +``GIF_LIBRARIES`` + Libraries to link to in order to use giflib +``GIF_INCLUDE_DIR`` + where to find the headers +``GIF_VERSION`` + 3, 4 or a full version string (eg 5.1.4) for versions >= 4.1.6 + +The minimum required version of giflib can be specified using the +standard syntax, e.g. find_package(GIF 4) + +$GIF_DIR is an environment variable that would correspond to the +./configure --prefix=$GIF_DIR +#]=======================================================================] # Created by Eric Wing. # Modifications by Alexander Neundorf, Ben Campbell diff --git a/Modules/FindGLEW.cmake b/Modules/FindGLEW.cmake index 11e8724467..ad8a810b50 100644 --- a/Modules/FindGLEW.cmake +++ b/Modules/FindGLEW.cmake @@ -1,28 +1,29 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindGLEW -# -------- -# -# Find the OpenGL Extension Wrangler Library (GLEW) -# -# IMPORTED Targets -# ^^^^^^^^^^^^^^^^ -# -# This module defines the :prop_tgt:`IMPORTED` target ``GLEW::GLEW``, -# if GLEW has been found. -# -# Result Variables -# ^^^^^^^^^^^^^^^^ -# -# This module defines the following variables: -# -# :: -# -# GLEW_INCLUDE_DIRS - include directories for GLEW -# GLEW_LIBRARIES - libraries to link against GLEW -# GLEW_FOUND - true if GLEW has been found and can be used +#[=======================================================================[.rst: +FindGLEW +-------- + +Find the OpenGL Extension Wrangler Library (GLEW) + +IMPORTED Targets +^^^^^^^^^^^^^^^^ + +This module defines the :prop_tgt:`IMPORTED` target ``GLEW::GLEW``, +if GLEW has been found. + +Result Variables +^^^^^^^^^^^^^^^^ + +This module defines the following variables: + +:: + + GLEW_INCLUDE_DIRS - include directories for GLEW + GLEW_LIBRARIES - libraries to link against GLEW + GLEW_FOUND - true if GLEW has been found and can be used +#]=======================================================================] find_path(GLEW_INCLUDE_DIR GL/glew.h) diff --git a/Modules/FindGLUT.cmake b/Modules/FindGLUT.cmake index 1779683874..d42db539f7 100644 --- a/Modules/FindGLUT.cmake +++ b/Modules/FindGLUT.cmake @@ -1,38 +1,39 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindGLUT -# -------- -# -# try to find glut library and include files. -# -# IMPORTED Targets -# ^^^^^^^^^^^^^^^^ -# -# This module defines the :prop_tgt:`IMPORTED` targets: -# -# ``GLUT::GLUT`` -# Defined if the system has GLUT. -# -# Result Variables -# ^^^^^^^^^^^^^^^^ -# -# This module sets the following variables: -# -# :: -# -# GLUT_INCLUDE_DIR, where to find GL/glut.h, etc. -# GLUT_LIBRARIES, the libraries to link against -# GLUT_FOUND, If false, do not try to use GLUT. -# -# Also defined, but not for general use are: -# -# :: -# -# GLUT_glut_LIBRARY = the full path to the glut library. -# GLUT_Xmu_LIBRARY = the full path to the Xmu library. -# GLUT_Xi_LIBRARY = the full path to the Xi Library. +#[=======================================================================[.rst: +FindGLUT +-------- + +try to find glut library and include files. + +IMPORTED Targets +^^^^^^^^^^^^^^^^ + +This module defines the :prop_tgt:`IMPORTED` targets: + +``GLUT::GLUT`` + Defined if the system has GLUT. + +Result Variables +^^^^^^^^^^^^^^^^ + +This module sets the following variables: + +:: + + GLUT_INCLUDE_DIR, where to find GL/glut.h, etc. + GLUT_LIBRARIES, the libraries to link against + GLUT_FOUND, If false, do not try to use GLUT. + +Also defined, but not for general use are: + +:: + + GLUT_glut_LIBRARY = the full path to the glut library. + GLUT_Xmu_LIBRARY = the full path to the Xmu library. + GLUT_Xi_LIBRARY = the full path to the Xi Library. +#]=======================================================================] include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake) diff --git a/Modules/FindGSL.cmake b/Modules/FindGSL.cmake index 8d10b6ce5c..db05121664 100644 --- a/Modules/FindGSL.cmake +++ b/Modules/FindGSL.cmake @@ -1,60 +1,61 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindGSL -# -------- -# -# Find the native GSL includes and libraries. -# -# The GNU Scientific Library (GSL) is a numerical library for C and C++ -# programmers. It is free software under the GNU General Public -# License. -# -# Imported Targets -# ^^^^^^^^^^^^^^^^ -# -# If GSL is found, this module defines the following :prop_tgt:`IMPORTED` -# targets:: -# -# GSL::gsl - The main GSL library. -# GSL::gslcblas - The CBLAS support library used by GSL. -# -# Result Variables -# ^^^^^^^^^^^^^^^^ -# -# This module will set the following variables in your project:: -# -# GSL_FOUND - True if GSL found on the local system -# GSL_INCLUDE_DIRS - Location of GSL header files. -# GSL_LIBRARIES - The GSL libraries. -# GSL_VERSION - The version of the discovered GSL install. -# -# Hints -# ^^^^^ -# -# Set ``GSL_ROOT_DIR`` to a directory that contains a GSL installation. -# -# This script expects to find libraries at ``$GSL_ROOT_DIR/lib`` and the GSL -# headers at ``$GSL_ROOT_DIR/include/gsl``. The library directory may -# optionally provide Release and Debug folders. If available, the libraries -# named ``gsld``, ``gslblasd`` or ``cblasd`` are recognized as debug libraries. -# For Unix-like systems, this script will use ``$GSL_ROOT_DIR/bin/gsl-config`` -# (if found) to aid in the discovery of GSL. -# -# Cache Variables -# ^^^^^^^^^^^^^^^ -# -# This module may set the following variables depending on platform and type -# of GSL installation discovered. These variables may optionally be set to -# help this module find the correct files:: -# -# GSL_CBLAS_LIBRARY - Location of the GSL CBLAS library. -# GSL_CBLAS_LIBRARY_DEBUG - Location of the debug GSL CBLAS library (if any). -# GSL_CONFIG_EXECUTABLE - Location of the ``gsl-config`` script (if any). -# GSL_LIBRARY - Location of the GSL library. -# GSL_LIBRARY_DEBUG - Location of the debug GSL library (if any). -# +#[=======================================================================[.rst: +FindGSL +-------- + +Find the native GSL includes and libraries. + +The GNU Scientific Library (GSL) is a numerical library for C and C++ +programmers. It is free software under the GNU General Public +License. + +Imported Targets +^^^^^^^^^^^^^^^^ + +If GSL is found, this module defines the following :prop_tgt:`IMPORTED` +targets:: + + GSL::gsl - The main GSL library. + GSL::gslcblas - The CBLAS support library used by GSL. + +Result Variables +^^^^^^^^^^^^^^^^ + +This module will set the following variables in your project:: + + GSL_FOUND - True if GSL found on the local system + GSL_INCLUDE_DIRS - Location of GSL header files. + GSL_LIBRARIES - The GSL libraries. + GSL_VERSION - The version of the discovered GSL install. + +Hints +^^^^^ + +Set ``GSL_ROOT_DIR`` to a directory that contains a GSL installation. + +This script expects to find libraries at ``$GSL_ROOT_DIR/lib`` and the GSL +headers at ``$GSL_ROOT_DIR/include/gsl``. The library directory may +optionally provide Release and Debug folders. If available, the libraries +named ``gsld``, ``gslblasd`` or ``cblasd`` are recognized as debug libraries. +For Unix-like systems, this script will use ``$GSL_ROOT_DIR/bin/gsl-config`` +(if found) to aid in the discovery of GSL. + +Cache Variables +^^^^^^^^^^^^^^^ + +This module may set the following variables depending on platform and type +of GSL installation discovered. These variables may optionally be set to +help this module find the correct files:: + + GSL_CBLAS_LIBRARY - Location of the GSL CBLAS library. + GSL_CBLAS_LIBRARY_DEBUG - Location of the debug GSL CBLAS library (if any). + GSL_CONFIG_EXECUTABLE - Location of the ``gsl-config`` script (if any). + GSL_LIBRARY - Location of the GSL library. + GSL_LIBRARY_DEBUG - Location of the debug GSL library (if any). + +#]=======================================================================] include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) diff --git a/Modules/FindGTK.cmake b/Modules/FindGTK.cmake index 89fb54bafb..8cc6c970de 100644 --- a/Modules/FindGTK.cmake +++ b/Modules/FindGTK.cmake @@ -1,18 +1,19 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindGTK -# ------- -# -# try to find GTK (and glib) and GTKGLArea -# -# :: -# -# GTK_INCLUDE_DIR - Directories to include to use GTK -# GTK_LIBRARIES - Files to link against to use GTK -# GTK_FOUND - GTK was found -# GTK_GL_FOUND - GTK's GL features were found +#[=======================================================================[.rst: +FindGTK +------- + +try to find GTK (and glib) and GTKGLArea + +:: + + GTK_INCLUDE_DIR - Directories to include to use GTK + GTK_LIBRARIES - Files to link against to use GTK + GTK_FOUND - GTK was found + GTK_GL_FOUND - GTK's GL features were found +#]=======================================================================] # don't even bother under WIN32 if(UNIX) diff --git a/Modules/FindGTK2.cmake b/Modules/FindGTK2.cmake index 15d123059d..6c1897cae9 100644 --- a/Modules/FindGTK2.cmake +++ b/Modules/FindGTK2.cmake @@ -1,102 +1,103 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindGTK2 -# -------- -# -# FindGTK2.cmake -# -# This module can find the GTK2 widget libraries and several of its -# other optional components like gtkmm, glade, and glademm. -# -# NOTE: If you intend to use version checking, CMake 2.6.2 or later is -# -# :: -# -# required. -# -# -# -# Specify one or more of the following components as you call this find -# module. See example below. -# -# :: -# -# gtk -# gtkmm -# glade -# glademm -# -# -# -# The following variables will be defined for your use -# -# :: -# -# GTK2_FOUND - Were all of your specified components found? -# GTK2_INCLUDE_DIRS - All include directories -# GTK2_LIBRARIES - All libraries -# GTK2_TARGETS - All imported targets -# GTK2_DEFINITIONS - Additional compiler flags -# -# -# -# :: -# -# GTK2_VERSION - The version of GTK2 found (x.y.z) -# GTK2_MAJOR_VERSION - The major version of GTK2 -# GTK2_MINOR_VERSION - The minor version of GTK2 -# GTK2_PATCH_VERSION - The patch version of GTK2 -# -# -# -# Optional variables you can define prior to calling this module: -# -# :: -# -# GTK2_DEBUG - Enables verbose debugging of the module -# GTK2_ADDITIONAL_SUFFIXES - Allows defining additional directories to -# search for include files -# -# -# -# ================= Example Usage: -# -# :: -# -# Call find_package() once, here are some examples to pick from: -# -# -# -# :: -# -# Require GTK 2.6 or later -# find_package(GTK2 2.6 REQUIRED gtk) -# -# -# -# :: -# -# Require GTK 2.10 or later and Glade -# find_package(GTK2 2.10 REQUIRED gtk glade) -# -# -# -# :: -# -# Search for GTK/GTKMM 2.8 or later -# find_package(GTK2 2.8 COMPONENTS gtk gtkmm) -# -# -# -# :: -# -# if(GTK2_FOUND) -# include_directories(${GTK2_INCLUDE_DIRS}) -# add_executable(mygui mygui.cc) -# target_link_libraries(mygui ${GTK2_LIBRARIES}) -# endif() +#[=======================================================================[.rst: +FindGTK2 +-------- + +FindGTK2.cmake + +This module can find the GTK2 widget libraries and several of its +other optional components like gtkmm, glade, and glademm. + +NOTE: If you intend to use version checking, CMake 2.6.2 or later is + +:: + + required. + + + +Specify one or more of the following components as you call this find +module. See example below. + +:: + + gtk + gtkmm + glade + glademm + + + +The following variables will be defined for your use + +:: + + GTK2_FOUND - Were all of your specified components found? + GTK2_INCLUDE_DIRS - All include directories + GTK2_LIBRARIES - All libraries + GTK2_TARGETS - All imported targets + GTK2_DEFINITIONS - Additional compiler flags + + + +:: + + GTK2_VERSION - The version of GTK2 found (x.y.z) + GTK2_MAJOR_VERSION - The major version of GTK2 + GTK2_MINOR_VERSION - The minor version of GTK2 + GTK2_PATCH_VERSION - The patch version of GTK2 + + + +Optional variables you can define prior to calling this module: + +:: + + GTK2_DEBUG - Enables verbose debugging of the module + GTK2_ADDITIONAL_SUFFIXES - Allows defining additional directories to + search for include files + + + +================= Example Usage: + +:: + + Call find_package() once, here are some examples to pick from: + + + +:: + + Require GTK 2.6 or later + find_package(GTK2 2.6 REQUIRED gtk) + + + +:: + + Require GTK 2.10 or later and Glade + find_package(GTK2 2.10 REQUIRED gtk glade) + + + +:: + + Search for GTK/GTKMM 2.8 or later + find_package(GTK2 2.8 COMPONENTS gtk gtkmm) + + + +:: + + if(GTK2_FOUND) + include_directories(${GTK2_INCLUDE_DIRS}) + add_executable(mygui mygui.cc) + target_link_libraries(mygui ${GTK2_LIBRARIES}) + endif() +#]=======================================================================] # Version 1.6 (CMake 3.0) # * Create targets for each library diff --git a/Modules/FindGTest.cmake b/Modules/FindGTest.cmake index b0579d9673..b0175febcd 100644 --- a/Modules/FindGTest.cmake +++ b/Modules/FindGTest.cmake @@ -1,77 +1,78 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindGTest -# --------- -# -# Locate the Google C++ Testing Framework. -# -# Imported targets -# ^^^^^^^^^^^^^^^^ -# -# This module defines the following :prop_tgt:`IMPORTED` targets: -# -# ``GTest::GTest`` -# The Google Test ``gtest`` library, if found; adds Thread::Thread -# automatically -# ``GTest::Main`` -# The Google Test ``gtest_main`` library, if found -# -# -# Result variables -# ^^^^^^^^^^^^^^^^ -# -# This module will set the following variables in your project: -# -# ``GTEST_FOUND`` -# Found the Google Testing framework -# ``GTEST_INCLUDE_DIRS`` -# the directory containing the Google Test headers -# -# The library variables below are set as normal variables. These -# contain debug/optimized keywords when a debugging library is found. -# -# ``GTEST_LIBRARIES`` -# The Google Test ``gtest`` library; note it also requires linking -# with an appropriate thread library -# ``GTEST_MAIN_LIBRARIES`` -# The Google Test ``gtest_main`` library -# ``GTEST_BOTH_LIBRARIES`` -# Both ``gtest`` and ``gtest_main`` -# -# Cache variables -# ^^^^^^^^^^^^^^^ -# -# The following cache variables may also be set: -# -# ``GTEST_ROOT`` -# The root directory of the Google Test installation (may also be -# set as an environment variable) -# ``GTEST_MSVC_SEARCH`` -# If compiling with MSVC, this variable can be set to ``MT`` or -# ``MD`` (the default) to enable searching a GTest build tree -# -# -# Example usage -# ^^^^^^^^^^^^^ -# -# :: -# -# enable_testing() -# find_package(GTest REQUIRED) -# -# add_executable(foo foo.cc) -# target_link_libraries(foo GTest::GTest GTest::Main) -# -# add_test(AllTestsInFoo foo) -# -# -# Deeper integration with CTest -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# See :module:`GoogleTest` for information on the :command:`gtest_add_tests` -# and :command:`gtest_discover_tests` commands. +#[=======================================================================[.rst: +FindGTest +--------- + +Locate the Google C++ Testing Framework. + +Imported targets +^^^^^^^^^^^^^^^^ + +This module defines the following :prop_tgt:`IMPORTED` targets: + +``GTest::GTest`` + The Google Test ``gtest`` library, if found; adds Thread::Thread + automatically +``GTest::Main`` + The Google Test ``gtest_main`` library, if found + + +Result variables +^^^^^^^^^^^^^^^^ + +This module will set the following variables in your project: + +``GTEST_FOUND`` + Found the Google Testing framework +``GTEST_INCLUDE_DIRS`` + the directory containing the Google Test headers + +The library variables below are set as normal variables. These +contain debug/optimized keywords when a debugging library is found. + +``GTEST_LIBRARIES`` + The Google Test ``gtest`` library; note it also requires linking + with an appropriate thread library +``GTEST_MAIN_LIBRARIES`` + The Google Test ``gtest_main`` library +``GTEST_BOTH_LIBRARIES`` + Both ``gtest`` and ``gtest_main`` + +Cache variables +^^^^^^^^^^^^^^^ + +The following cache variables may also be set: + +``GTEST_ROOT`` + The root directory of the Google Test installation (may also be + set as an environment variable) +``GTEST_MSVC_SEARCH`` + If compiling with MSVC, this variable can be set to ``MT`` or + ``MD`` (the default) to enable searching a GTest build tree + + +Example usage +^^^^^^^^^^^^^ + +:: + + enable_testing() + find_package(GTest REQUIRED) + + add_executable(foo foo.cc) + target_link_libraries(foo GTest::GTest GTest::Main) + + add_test(AllTestsInFoo foo) + + +Deeper integration with CTest +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +See :module:`GoogleTest` for information on the :command:`gtest_add_tests` +and :command:`gtest_discover_tests` commands. +#]=======================================================================] include(${CMAKE_CURRENT_LIST_DIR}/GoogleTest.cmake) diff --git a/Modules/FindGettext.cmake b/Modules/FindGettext.cmake index 9623b85dd4..9e29e8d2d2 100644 --- a/Modules/FindGettext.cmake +++ b/Modules/FindGettext.cmake @@ -1,61 +1,62 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindGettext -# ----------- -# -# Find GNU gettext tools -# -# This module looks for the GNU gettext tools. This module defines the -# following values: -# -# :: -# -# GETTEXT_MSGMERGE_EXECUTABLE: the full path to the msgmerge tool. -# GETTEXT_MSGFMT_EXECUTABLE: the full path to the msgfmt tool. -# GETTEXT_FOUND: True if gettext has been found. -# GETTEXT_VERSION_STRING: the version of gettext found (since CMake 2.8.8) -# -# -# -# Additionally it provides the following macros: -# -# GETTEXT_CREATE_TRANSLATIONS ( outputFile [ALL] file1 ... fileN ) -# -# :: -# -# This will create a target "translations" which will convert the -# given input po files into the binary output mo file. If the -# ALL option is used, the translations will also be created when -# building the default target. -# -# GETTEXT_PROCESS_POT_FILE( <potfile> [ALL] [INSTALL_DESTINATION <destdir>] -# LANGUAGES <lang1> <lang2> ... ) -# -# :: -# -# Process the given pot file to mo files. -# If INSTALL_DESTINATION is given then automatically install rules will -# be created, the language subdirectory will be taken into account -# (by default use share/locale/). -# If ALL is specified, the pot file is processed when building the all traget. -# It creates a custom target "potfile". -# -# GETTEXT_PROCESS_PO_FILES( <lang> [ALL] [INSTALL_DESTINATION <dir>] -# PO_FILES <po1> <po2> ... ) -# -# :: -# -# Process the given po files to mo files for the given language. -# If INSTALL_DESTINATION is given then automatically install rules will -# be created, the language subdirectory will be taken into account -# (by default use share/locale/). -# If ALL is specified, the po files are processed when building the all traget. -# It creates a custom target "pofiles". -# -# .. note:: -# If you wish to use the Gettext library (libintl), use :module:`FindIntl`. +#[=======================================================================[.rst: +FindGettext +----------- + +Find GNU gettext tools + +This module looks for the GNU gettext tools. This module defines the +following values: + +:: + + GETTEXT_MSGMERGE_EXECUTABLE: the full path to the msgmerge tool. + GETTEXT_MSGFMT_EXECUTABLE: the full path to the msgfmt tool. + GETTEXT_FOUND: True if gettext has been found. + GETTEXT_VERSION_STRING: the version of gettext found (since CMake 2.8.8) + + + +Additionally it provides the following macros: + +GETTEXT_CREATE_TRANSLATIONS ( outputFile [ALL] file1 ... fileN ) + +:: + + This will create a target "translations" which will convert the + given input po files into the binary output mo file. If the + ALL option is used, the translations will also be created when + building the default target. + +GETTEXT_PROCESS_POT_FILE( <potfile> [ALL] [INSTALL_DESTINATION <destdir>] +LANGUAGES <lang1> <lang2> ... ) + +:: + + Process the given pot file to mo files. + If INSTALL_DESTINATION is given then automatically install rules will + be created, the language subdirectory will be taken into account + (by default use share/locale/). + If ALL is specified, the pot file is processed when building the all traget. + It creates a custom target "potfile". + +GETTEXT_PROCESS_PO_FILES( <lang> [ALL] [INSTALL_DESTINATION <dir>] +PO_FILES <po1> <po2> ... ) + +:: + + Process the given po files to mo files for the given language. + If INSTALL_DESTINATION is given then automatically install rules will + be created, the language subdirectory will be taken into account + (by default use share/locale/). + If ALL is specified, the po files are processed when building the all traget. + It creates a custom target "pofiles". + +.. note:: + If you wish to use the Gettext library (libintl), use :module:`FindIntl`. +#]=======================================================================] find_program(GETTEXT_MSGMERGE_EXECUTABLE msgmerge) diff --git a/Modules/FindGit.cmake b/Modules/FindGit.cmake index fae31eb835..c447a1a627 100644 --- a/Modules/FindGit.cmake +++ b/Modules/FindGit.cmake @@ -1,27 +1,28 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindGit -# ------- -# -# The module defines the following variables: -# -# ``GIT_EXECUTABLE`` -# Path to Git command-line client. -# ``Git_FOUND``, ``GIT_FOUND`` -# True if the Git command-line client was found. -# ``GIT_VERSION_STRING`` -# The version of Git found. -# -# Example usage: -# -# .. code-block:: cmake -# -# find_package(Git) -# if(Git_FOUND) -# message("Git found: ${GIT_EXECUTABLE}") -# endif() +#[=======================================================================[.rst: +FindGit +------- + +The module defines the following variables: + +``GIT_EXECUTABLE`` + Path to Git command-line client. +``Git_FOUND``, ``GIT_FOUND`` + True if the Git command-line client was found. +``GIT_VERSION_STRING`` + The version of Git found. + +Example usage: + +.. code-block:: cmake + + find_package(Git) + if(Git_FOUND) + message("Git found: ${GIT_EXECUTABLE}") + endif() +#]=======================================================================] # Look for 'git' or 'eg' (easy git) # diff --git a/Modules/FindGnuTLS.cmake b/Modules/FindGnuTLS.cmake index 1a97d99ea7..9c07444153 100644 --- a/Modules/FindGnuTLS.cmake +++ b/Modules/FindGnuTLS.cmake @@ -1,22 +1,23 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindGnuTLS -# ---------- -# -# Try to find the GNU Transport Layer Security library (gnutls) -# -# -# -# Once done this will define -# -# :: -# -# GNUTLS_FOUND - System has gnutls -# GNUTLS_INCLUDE_DIR - The gnutls include directory -# GNUTLS_LIBRARIES - The libraries needed to use gnutls -# GNUTLS_DEFINITIONS - Compiler switches required for using gnutls +#[=======================================================================[.rst: +FindGnuTLS +---------- + +Try to find the GNU Transport Layer Security library (gnutls) + + + +Once done this will define + +:: + + GNUTLS_FOUND - System has gnutls + GNUTLS_INCLUDE_DIR - The gnutls include directory + GNUTLS_LIBRARIES - The libraries needed to use gnutls + GNUTLS_DEFINITIONS - Compiler switches required for using gnutls +#]=======================================================================] # Note that this doesn't try to find the gnutls-extra package. diff --git a/Modules/FindGnuplot.cmake b/Modules/FindGnuplot.cmake index aa4cd6c26a..ca2467d687 100644 --- a/Modules/FindGnuplot.cmake +++ b/Modules/FindGnuplot.cmake @@ -1,25 +1,26 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindGnuplot -# ----------- -# -# this module looks for gnuplot -# -# -# -# Once done this will define -# -# :: -# -# GNUPLOT_FOUND - system has Gnuplot -# GNUPLOT_EXECUTABLE - the Gnuplot executable -# GNUPLOT_VERSION_STRING - the version of Gnuplot found (since CMake 2.8.8) -# -# -# -# GNUPLOT_VERSION_STRING will not work for old versions like 3.7.1. +#[=======================================================================[.rst: +FindGnuplot +----------- + +this module looks for gnuplot + + + +Once done this will define + +:: + + GNUPLOT_FOUND - system has Gnuplot + GNUPLOT_EXECUTABLE - the Gnuplot executable + GNUPLOT_VERSION_STRING - the version of Gnuplot found (since CMake 2.8.8) + + + +GNUPLOT_VERSION_STRING will not work for old versions like 3.7.1. +#]=======================================================================] include(${CMAKE_CURRENT_LIST_DIR}/FindCygwin.cmake) diff --git a/Modules/FindHDF5.cmake b/Modules/FindHDF5.cmake index 41b10025bb..e36767a424 100644 --- a/Modules/FindHDF5.cmake +++ b/Modules/FindHDF5.cmake @@ -1,109 +1,110 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindHDF5 -# -------- -# -# Find HDF5, a library for reading and writing self describing array data. -# -# -# -# This module invokes the HDF5 wrapper compiler that should be installed -# alongside HDF5. Depending upon the HDF5 Configuration, the wrapper -# compiler is called either h5cc or h5pcc. If this succeeds, the module -# will then call the compiler with the -show argument to see what flags -# are used when compiling an HDF5 client application. -# -# The module will optionally accept the COMPONENTS argument. If no -# COMPONENTS are specified, then the find module will default to finding -# only the HDF5 C library. If one or more COMPONENTS are specified, the -# module will attempt to find the language bindings for the specified -# components. The only valid components are C, CXX, Fortran, HL, and -# Fortran_HL. If the COMPONENTS argument is not given, the module will -# attempt to find only the C bindings. -# -# This module will read the variable -# HDF5_USE_STATIC_LIBRARIES to determine whether or not to prefer a -# static link to a dynamic link for HDF5 and all of it's dependencies. -# To use this feature, make sure that the HDF5_USE_STATIC_LIBRARIES -# variable is set before the call to find_package. -# -# To provide the module with a hint about where to find your HDF5 -# installation, you can set the environment variable HDF5_ROOT. The -# Find module will then look in this path when searching for HDF5 -# executables, paths, and libraries. -# -# Both the serial and parallel HDF5 wrappers are considered and the first -# directory to contain either one will be used. In the event that both appear -# in the same directory the serial version is preferentially selected. This -# behavior can be reversed by setting the variable HDF5_PREFER_PARALLEL to -# true. -# -# In addition to finding the includes and libraries required to compile -# an HDF5 client application, this module also makes an effort to find -# tools that come with the HDF5 distribution that may be useful for -# regression testing. -# -# This module will define the following variables: -# -# :: -# -# HDF5_FOUND - true if HDF5 was found on the system -# HDF5_VERSION - HDF5 version in format Major.Minor.Release -# HDF5_INCLUDE_DIRS - Location of the hdf5 includes -# HDF5_INCLUDE_DIR - Location of the hdf5 includes (deprecated) -# HDF5_DEFINITIONS - Required compiler definitions for HDF5 -# HDF5_LIBRARIES - Required libraries for all requested bindings -# HDF5_HL_LIBRARIES - Required libraries for the HDF5 high level API for all -# bindings, if the HL component is enabled -# -# Available components are: C CXX Fortran and HL. For each enabled language -# binding, a corresponding HDF5_${LANG}_LIBRARIES variable, and potentially -# HDF5_${LANG}_DEFINITIONS, will be defined. -# If the HL component is enabled, then an HDF5_${LANG}_HL_LIBRARIES will -# also be defined. With all components enabled, the following variables will be defined: -# -# :: -# -# HDF5_C_DEFINITIONS -- Required compiler definitions for HDF5 C bindings -# HDF5_CXX_DEFINITIONS -- Required compiler definitions for HDF5 C++ bindings -# HDF5_Fortran_DEFINITIONS -- Required compiler definitions for HDF5 Fortran bindings -# HDF5_C_INCLUDE_DIRS -- Required include directories for HDF5 C bindings -# HDF5_CXX_INCLUDE_DIRS -- Required include directories for HDF5 C++ bindings -# HDF5_Fortran_INCLUDE_DIRS -- Required include directories for HDF5 Fortran bindings -# HDF5_C_LIBRARIES - Required libraries for the HDF5 C bindings -# HDF5_CXX_LIBRARIES - Required libraries for the HDF5 C++ bindings -# HDF5_Fortran_LIBRARIES - Required libraries for the HDF5 Fortran bindings -# HDF5_C_HL_LIBRARIES - Required libraries for the high level C bindings -# HDF5_CXX_HL_LIBRARIES - Required libraries for the high level C++ bindings -# HDF5_Fortran_HL_LIBRARIES - Required libraries for the high level Fortran -# bindings. -# -# HDF5_IS_PARALLEL - Whether or not HDF5 was found with parallel IO support -# HDF5_C_COMPILER_EXECUTABLE - the path to the HDF5 C wrapper compiler -# HDF5_CXX_COMPILER_EXECUTABLE - the path to the HDF5 C++ wrapper compiler -# HDF5_Fortran_COMPILER_EXECUTABLE - the path to the HDF5 Fortran wrapper compiler -# HDF5_C_COMPILER_EXECUTABLE_NO_INTERROGATE - path to the primary C compiler -# which is also the HDF5 wrapper -# HDF5_CXX_COMPILER_EXECUTABLE_NO_INTERROGATE - path to the primary C++ -# compiler which is also -# the HDF5 wrapper -# HDF5_Fortran_COMPILER_EXECUTABLE_NO_INTERROGATE - path to the primary -# Fortran compiler which -# is also the HDF5 wrapper -# HDF5_DIFF_EXECUTABLE - the path to the HDF5 dataset comparison tool -# -# The following variable can be set to guide the search for HDF5 libraries and includes: -# -# ``HDF5_ROOT`` -# Specify the path to the HDF5 installation to use. -# -# ``HDF5_FIND_DEBUG`` -# Set to a true value to get some extra debugging output. -# -# ``HDF5_NO_FIND_PACKAGE_CONFIG_FILE`` -# Set to a true value to skip trying to find ``hdf5-config.cmake``. +#[=======================================================================[.rst: +FindHDF5 +-------- + +Find HDF5, a library for reading and writing self describing array data. + + + +This module invokes the HDF5 wrapper compiler that should be installed +alongside HDF5. Depending upon the HDF5 Configuration, the wrapper +compiler is called either h5cc or h5pcc. If this succeeds, the module +will then call the compiler with the -show argument to see what flags +are used when compiling an HDF5 client application. + +The module will optionally accept the COMPONENTS argument. If no +COMPONENTS are specified, then the find module will default to finding +only the HDF5 C library. If one or more COMPONENTS are specified, the +module will attempt to find the language bindings for the specified +components. The only valid components are C, CXX, Fortran, HL, and +Fortran_HL. If the COMPONENTS argument is not given, the module will +attempt to find only the C bindings. + +This module will read the variable +HDF5_USE_STATIC_LIBRARIES to determine whether or not to prefer a +static link to a dynamic link for HDF5 and all of it's dependencies. +To use this feature, make sure that the HDF5_USE_STATIC_LIBRARIES +variable is set before the call to find_package. + +To provide the module with a hint about where to find your HDF5 +installation, you can set the environment variable HDF5_ROOT. The +Find module will then look in this path when searching for HDF5 +executables, paths, and libraries. + +Both the serial and parallel HDF5 wrappers are considered and the first +directory to contain either one will be used. In the event that both appear +in the same directory the serial version is preferentially selected. This +behavior can be reversed by setting the variable HDF5_PREFER_PARALLEL to +true. + +In addition to finding the includes and libraries required to compile +an HDF5 client application, this module also makes an effort to find +tools that come with the HDF5 distribution that may be useful for +regression testing. + +This module will define the following variables: + +:: + + HDF5_FOUND - true if HDF5 was found on the system + HDF5_VERSION - HDF5 version in format Major.Minor.Release + HDF5_INCLUDE_DIRS - Location of the hdf5 includes + HDF5_INCLUDE_DIR - Location of the hdf5 includes (deprecated) + HDF5_DEFINITIONS - Required compiler definitions for HDF5 + HDF5_LIBRARIES - Required libraries for all requested bindings + HDF5_HL_LIBRARIES - Required libraries for the HDF5 high level API for all + bindings, if the HL component is enabled + +Available components are: C CXX Fortran and HL. For each enabled language +binding, a corresponding HDF5_${LANG}_LIBRARIES variable, and potentially +HDF5_${LANG}_DEFINITIONS, will be defined. +If the HL component is enabled, then an HDF5_${LANG}_HL_LIBRARIES will +also be defined. With all components enabled, the following variables will be defined: + +:: + + HDF5_C_DEFINITIONS -- Required compiler definitions for HDF5 C bindings + HDF5_CXX_DEFINITIONS -- Required compiler definitions for HDF5 C++ bindings + HDF5_Fortran_DEFINITIONS -- Required compiler definitions for HDF5 Fortran bindings + HDF5_C_INCLUDE_DIRS -- Required include directories for HDF5 C bindings + HDF5_CXX_INCLUDE_DIRS -- Required include directories for HDF5 C++ bindings + HDF5_Fortran_INCLUDE_DIRS -- Required include directories for HDF5 Fortran bindings + HDF5_C_LIBRARIES - Required libraries for the HDF5 C bindings + HDF5_CXX_LIBRARIES - Required libraries for the HDF5 C++ bindings + HDF5_Fortran_LIBRARIES - Required libraries for the HDF5 Fortran bindings + HDF5_C_HL_LIBRARIES - Required libraries for the high level C bindings + HDF5_CXX_HL_LIBRARIES - Required libraries for the high level C++ bindings + HDF5_Fortran_HL_LIBRARIES - Required libraries for the high level Fortran + bindings. + + HDF5_IS_PARALLEL - Whether or not HDF5 was found with parallel IO support + HDF5_C_COMPILER_EXECUTABLE - the path to the HDF5 C wrapper compiler + HDF5_CXX_COMPILER_EXECUTABLE - the path to the HDF5 C++ wrapper compiler + HDF5_Fortran_COMPILER_EXECUTABLE - the path to the HDF5 Fortran wrapper compiler + HDF5_C_COMPILER_EXECUTABLE_NO_INTERROGATE - path to the primary C compiler + which is also the HDF5 wrapper + HDF5_CXX_COMPILER_EXECUTABLE_NO_INTERROGATE - path to the primary C++ + compiler which is also + the HDF5 wrapper + HDF5_Fortran_COMPILER_EXECUTABLE_NO_INTERROGATE - path to the primary + Fortran compiler which + is also the HDF5 wrapper + HDF5_DIFF_EXECUTABLE - the path to the HDF5 dataset comparison tool + +The following variable can be set to guide the search for HDF5 libraries and includes: + +``HDF5_ROOT`` + Specify the path to the HDF5 installation to use. + +``HDF5_FIND_DEBUG`` + Set to a true value to get some extra debugging output. + +``HDF5_NO_FIND_PACKAGE_CONFIG_FILE`` + Set to a true value to skip trying to find ``hdf5-config.cmake``. +#]=======================================================================] # This module is maintained by Will Dicharry <wdicharry@stellarscience.com>. diff --git a/Modules/FindHSPELL.cmake b/Modules/FindHSPELL.cmake index bb0e2f08e9..ec077a5d04 100644 --- a/Modules/FindHSPELL.cmake +++ b/Modules/FindHSPELL.cmake @@ -1,28 +1,29 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindHSPELL -# ---------- -# -# Try to find Hspell -# -# Once done this will define -# -# :: -# -# HSPELL_FOUND - system has Hspell -# HSPELL_INCLUDE_DIR - the Hspell include directory -# HSPELL_LIBRARIES - The libraries needed to use Hspell -# HSPELL_DEFINITIONS - Compiler switches required for using Hspell -# -# -# -# :: -# -# HSPELL_VERSION_STRING - The version of Hspell found (x.y) -# HSPELL_MAJOR_VERSION - the major version of Hspell -# HSPELL_MINOR_VERSION - The minor version of Hspell +#[=======================================================================[.rst: +FindHSPELL +---------- + +Try to find Hspell + +Once done this will define + +:: + + HSPELL_FOUND - system has Hspell + HSPELL_INCLUDE_DIR - the Hspell include directory + HSPELL_LIBRARIES - The libraries needed to use Hspell + HSPELL_DEFINITIONS - Compiler switches required for using Hspell + + + +:: + + HSPELL_VERSION_STRING - The version of Hspell found (x.y) + HSPELL_MAJOR_VERSION - the major version of Hspell + HSPELL_MINOR_VERSION - The minor version of Hspell +#]=======================================================================] find_path(HSPELL_INCLUDE_DIR hspell.h) diff --git a/Modules/FindHTMLHelp.cmake b/Modules/FindHTMLHelp.cmake index 6aab8a712b..a11ad4d690 100644 --- a/Modules/FindHTMLHelp.cmake +++ b/Modules/FindHTMLHelp.cmake @@ -1,19 +1,20 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindHTMLHelp -# ------------ -# -# This module looks for Microsoft HTML Help Compiler -# -# It defines: -# -# :: -# -# HTML_HELP_COMPILER : full path to the Compiler (hhc.exe) -# HTML_HELP_INCLUDE_PATH : include path to the API (htmlhelp.h) -# HTML_HELP_LIBRARY : full path to the library (htmlhelp.lib) +#[=======================================================================[.rst: +FindHTMLHelp +------------ + +This module looks for Microsoft HTML Help Compiler + +It defines: + +:: + + HTML_HELP_COMPILER : full path to the Compiler (hhc.exe) + HTML_HELP_INCLUDE_PATH : include path to the API (htmlhelp.h) + HTML_HELP_LIBRARY : full path to the library (htmlhelp.lib) +#]=======================================================================] if(WIN32) diff --git a/Modules/FindHg.cmake b/Modules/FindHg.cmake index 8aa553e792..1358363d2a 100644 --- a/Modules/FindHg.cmake +++ b/Modules/FindHg.cmake @@ -1,45 +1,46 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindHg -# ------ -# -# Extract information from a mercurial working copy. -# -# The module defines the following variables: -# -# :: -# -# HG_EXECUTABLE - path to mercurial command line client (hg) -# HG_FOUND - true if the command line client was found -# HG_VERSION_STRING - the version of mercurial found -# -# If the command line client executable is found the following macro is defined: -# -# :: -# -# HG_WC_INFO(<dir> <var-prefix>) -# -# Hg_WC_INFO extracts information of a mercurial working copy -# at a given location. This macro defines the following variables: -# -# :: -# -# <var-prefix>_WC_CHANGESET - current changeset -# <var-prefix>_WC_REVISION - current revision -# -# Example usage: -# -# :: -# -# find_package(Hg) -# if(HG_FOUND) -# message("hg found: ${HG_EXECUTABLE}") -# HG_WC_INFO(${PROJECT_SOURCE_DIR} Project) -# message("Current revision is ${Project_WC_REVISION}") -# message("Current changeset is ${Project_WC_CHANGESET}") -# endif() +#[=======================================================================[.rst: +FindHg +------ + +Extract information from a mercurial working copy. + +The module defines the following variables: + +:: + + HG_EXECUTABLE - path to mercurial command line client (hg) + HG_FOUND - true if the command line client was found + HG_VERSION_STRING - the version of mercurial found + +If the command line client executable is found the following macro is defined: + +:: + + HG_WC_INFO(<dir> <var-prefix>) + +Hg_WC_INFO extracts information of a mercurial working copy +at a given location. This macro defines the following variables: + +:: + + <var-prefix>_WC_CHANGESET - current changeset + <var-prefix>_WC_REVISION - current revision + +Example usage: + +:: + + find_package(Hg) + if(HG_FOUND) + message("hg found: ${HG_EXECUTABLE}") + HG_WC_INFO(${PROJECT_SOURCE_DIR} Project) + message("Current revision is ${Project_WC_REVISION}") + message("Current changeset is ${Project_WC_CHANGESET}") + endif() +#]=======================================================================] find_program(HG_EXECUTABLE NAMES hg diff --git a/Modules/FindICU.cmake b/Modules/FindICU.cmake index aa531d5225..685b10f6f2 100644 --- a/Modules/FindICU.cmake +++ b/Modules/FindICU.cmake @@ -1,89 +1,90 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindICU -# ------- -# -# Find the International Components for Unicode (ICU) libraries and -# programs. -# -# This module supports multiple components. -# Components can include any of: ``data``, ``i18n``, ``io``, ``le``, -# ``lx``, ``test``, ``tu`` and ``uc``. -# -# Note that on Windows ``data`` is named ``dt`` and ``i18n`` is named -# ``in``; any of the names may be used, and the appropriate -# platform-specific library name will be automatically selected. -# -# This module reports information about the ICU installation in -# several variables. General variables:: -# -# ICU_VERSION - ICU release version -# ICU_FOUND - true if the main programs and libraries were found -# ICU_LIBRARIES - component libraries to be linked -# ICU_INCLUDE_DIRS - the directories containing the ICU headers -# -# Imported targets:: -# -# ICU::<C> -# -# Where ``<C>`` is the name of an ICU component, for example -# ``ICU::i18n``. -# -# ICU programs are reported in:: -# -# ICU_GENCNVAL_EXECUTABLE - path to gencnval executable -# ICU_ICUINFO_EXECUTABLE - path to icuinfo executable -# ICU_GENBRK_EXECUTABLE - path to genbrk executable -# ICU_ICU-CONFIG_EXECUTABLE - path to icu-config executable -# ICU_GENRB_EXECUTABLE - path to genrb executable -# ICU_GENDICT_EXECUTABLE - path to gendict executable -# ICU_DERB_EXECUTABLE - path to derb executable -# ICU_PKGDATA_EXECUTABLE - path to pkgdata executable -# ICU_UCONV_EXECUTABLE - path to uconv executable -# ICU_GENCFU_EXECUTABLE - path to gencfu executable -# ICU_MAKECONV_EXECUTABLE - path to makeconv executable -# ICU_GENNORM2_EXECUTABLE - path to gennorm2 executable -# ICU_GENCCODE_EXECUTABLE - path to genccode executable -# ICU_GENSPREP_EXECUTABLE - path to gensprep executable -# ICU_ICUPKG_EXECUTABLE - path to icupkg executable -# ICU_GENCMN_EXECUTABLE - path to gencmn executable -# -# ICU component libraries are reported in:: -# -# ICU_<C>_FOUND - ON if component was found -# ICU_<C>_LIBRARIES - libraries for component -# -# ICU datafiles are reported in:: -# -# ICU_MAKEFILE_INC - Makefile.inc -# ICU_PKGDATA_INC - pkgdata.inc -# -# Note that ``<C>`` is the uppercased name of the component. -# -# This module reads hints about search results from:: -# -# ICU_ROOT - the root of the ICU installation -# -# The environment variable ``ICU_ROOT`` may also be used; the -# ICU_ROOT variable takes precedence. -# -# The following cache variables may also be set:: -# -# ICU_<P>_EXECUTABLE - the path to executable <P> -# ICU_INCLUDE_DIR - the directory containing the ICU headers -# ICU_<C>_LIBRARY - the library for component <C> -# -# .. note:: -# -# In most cases none of the above variables will require setting, -# unless multiple ICU versions are available and a specific version -# is required. -# -# Other variables one may set to control this module are:: -# -# ICU_DEBUG - Set to ON to enable debug output from FindICU. +#[=======================================================================[.rst: +FindICU +------- + +Find the International Components for Unicode (ICU) libraries and +programs. + +This module supports multiple components. +Components can include any of: ``data``, ``i18n``, ``io``, ``le``, +``lx``, ``test``, ``tu`` and ``uc``. + +Note that on Windows ``data`` is named ``dt`` and ``i18n`` is named +``in``; any of the names may be used, and the appropriate +platform-specific library name will be automatically selected. + +This module reports information about the ICU installation in +several variables. General variables:: + + ICU_VERSION - ICU release version + ICU_FOUND - true if the main programs and libraries were found + ICU_LIBRARIES - component libraries to be linked + ICU_INCLUDE_DIRS - the directories containing the ICU headers + +Imported targets:: + + ICU::<C> + +Where ``<C>`` is the name of an ICU component, for example +``ICU::i18n``. + +ICU programs are reported in:: + + ICU_GENCNVAL_EXECUTABLE - path to gencnval executable + ICU_ICUINFO_EXECUTABLE - path to icuinfo executable + ICU_GENBRK_EXECUTABLE - path to genbrk executable + ICU_ICU-CONFIG_EXECUTABLE - path to icu-config executable + ICU_GENRB_EXECUTABLE - path to genrb executable + ICU_GENDICT_EXECUTABLE - path to gendict executable + ICU_DERB_EXECUTABLE - path to derb executable + ICU_PKGDATA_EXECUTABLE - path to pkgdata executable + ICU_UCONV_EXECUTABLE - path to uconv executable + ICU_GENCFU_EXECUTABLE - path to gencfu executable + ICU_MAKECONV_EXECUTABLE - path to makeconv executable + ICU_GENNORM2_EXECUTABLE - path to gennorm2 executable + ICU_GENCCODE_EXECUTABLE - path to genccode executable + ICU_GENSPREP_EXECUTABLE - path to gensprep executable + ICU_ICUPKG_EXECUTABLE - path to icupkg executable + ICU_GENCMN_EXECUTABLE - path to gencmn executable + +ICU component libraries are reported in:: + + ICU_<C>_FOUND - ON if component was found + ICU_<C>_LIBRARIES - libraries for component + +ICU datafiles are reported in:: + + ICU_MAKEFILE_INC - Makefile.inc + ICU_PKGDATA_INC - pkgdata.inc + +Note that ``<C>`` is the uppercased name of the component. + +This module reads hints about search results from:: + + ICU_ROOT - the root of the ICU installation + +The environment variable ``ICU_ROOT`` may also be used; the +ICU_ROOT variable takes precedence. + +The following cache variables may also be set:: + + ICU_<P>_EXECUTABLE - the path to executable <P> + ICU_INCLUDE_DIR - the directory containing the ICU headers + ICU_<C>_LIBRARY - the library for component <C> + +.. note:: + + In most cases none of the above variables will require setting, + unless multiple ICU versions are available and a specific version + is required. + +Other variables one may set to control this module are:: + + ICU_DEBUG - Set to ON to enable debug output from FindICU. +#]=======================================================================] # Written by Roger Leigh <rleigh@codelibre.net> diff --git a/Modules/FindIce.cmake b/Modules/FindIce.cmake index df76e5a66d..42d3d47904 100644 --- a/Modules/FindIce.cmake +++ b/Modules/FindIce.cmake @@ -1,146 +1,147 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindIce -# ------- -# -# Find the ZeroC Internet Communication Engine (ICE) programs, -# libraries and datafiles. -# -# This module supports multiple components. -# Components can include any of: ``Freeze``, ``Glacier2``, ``Ice``, -# ``IceBox``, ``IceDB``, ``IceDiscovery``, ``IceGrid``, -# ``IceLocatorDiscovery``, ``IcePatch``, ``IceSSL``, ``IceStorm``, -# ``IceUtil``, ``IceXML``, or ``Slice``. -# -# Ice 3.7 and later also include C++11-specific components: -# ``Glacier2++11``, ``Ice++11``, ``IceBox++11``, ``IceDiscovery++11`` -# ``IceGrid``, ``IceLocatorDiscovery++11``, ``IceSSL++11``, -# ``IceStorm++11`` -# -# Note that the set of supported components is Ice version-specific. -# -# This module reports information about the Ice installation in -# several variables. General variables:: -# -# Ice_VERSION - Ice release version -# Ice_FOUND - true if the main programs and libraries were found -# Ice_LIBRARIES - component libraries to be linked -# Ice_INCLUDE_DIRS - the directories containing the Ice headers -# Ice_SLICE_DIRS - the directories containing the Ice slice interface -# definitions -# -# Imported targets:: -# -# Ice::<C> -# -# Where ``<C>`` is the name of an Ice component, for example -# ``Ice::Glacier2`` or ``Ice++11``. -# -# Ice slice programs are reported in:: -# -# Ice_SLICE2CPP_EXECUTABLE - path to slice2cpp executable -# Ice_SLICE2CS_EXECUTABLE - path to slice2cs executable -# Ice_SLICE2FREEZEJ_EXECUTABLE - path to slice2freezej executable -# Ice_SLICE2FREEZE_EXECUTABLE - path to slice2freeze executable -# Ice_SLICE2HTML_EXECUTABLE - path to slice2html executable -# Ice_SLICE2JAVA_EXECUTABLE - path to slice2java executable -# Ice_SLICE2JS_EXECUTABLE - path to slice2js executable -# Ice_SLICE2OBJC_EXECUTABLE - path to slice2objc executable -# Ice_SLICE2PHP_EXECUTABLE - path to slice2php executable -# Ice_SLICE2PY_EXECUTABLE - path to slice2py executable -# Ice_SLICE2RB_EXECUTABLE - path to slice2rb executable -# -# Ice programs are reported in:: -# -# Ice_GLACIER2ROUTER_EXECUTABLE - path to glacier2router executable -# Ice_ICEBOX_EXECUTABLE - path to icebox executable -# Ice_ICEBOXXX11_EXECUTABLE - path to icebox++11 executable -# Ice_ICEBOXADMIN_EXECUTABLE - path to iceboxadmin executable -# Ice_ICEBOXD_EXECUTABLE - path to iceboxd executable -# Ice_ICEBOXNET_EXECUTABLE - path to iceboxnet executable -# Ice_ICEBRIDGE_EXECUTABLE - path to icebridge executable -# Ice_ICEGRIDADMIN_EXECUTABLE - path to icegridadmin executable -# Ice_ICEGRIDDB_EXECUTABLE - path to icegriddb executable -# Ice_ICEGRIDNODE_EXECUTABLE - path to icegridnode executable -# Ice_ICEGRIDNODED_EXECUTABLE - path to icegridnoded executable -# Ice_ICEGRIDREGISTRY_EXECUTABLE - path to icegridregistry executable -# Ice_ICEGRIDREGISTRYD_EXECUTABLE - path to icegridregistryd executable -# Ice_ICEPATCH2CALC_EXECUTABLE - path to icepatch2calc executable -# Ice_ICEPATCH2CLIENT_EXECUTABLE - path to icepatch2client executable -# Ice_ICEPATCH2SERVER_EXECUTABLE - path to icepatch2server executable -# Ice_ICESERVICEINSTALL_EXECUTABLE - path to iceserviceinstall executable -# Ice_ICESTORMADMIN_EXECUTABLE - path to icestormadmin executable -# Ice_ICESTORMDB_EXECUTABLE - path to icestormdb executable -# Ice_ICESTORMMIGRATE_EXECUTABLE - path to icestormmigrate executable -# -# Ice db programs (Windows only; standard system versions on all other -# platforms) are reported in:: -# -# Ice_DB_ARCHIVE_EXECUTABLE - path to db_archive executable -# Ice_DB_CHECKPOINT_EXECUTABLE - path to db_checkpoint executable -# Ice_DB_DEADLOCK_EXECUTABLE - path to db_deadlock executable -# Ice_DB_DUMP_EXECUTABLE - path to db_dump executable -# Ice_DB_HOTBACKUP_EXECUTABLE - path to db_hotbackup executable -# Ice_DB_LOAD_EXECUTABLE - path to db_load executable -# Ice_DB_LOG_VERIFY_EXECUTABLE - path to db_log_verify executable -# Ice_DB_PRINTLOG_EXECUTABLE - path to db_printlog executable -# Ice_DB_RECOVER_EXECUTABLE - path to db_recover executable -# Ice_DB_STAT_EXECUTABLE - path to db_stat executable -# Ice_DB_TUNER_EXECUTABLE - path to db_tuner executable -# Ice_DB_UPGRADE_EXECUTABLE - path to db_upgrade executable -# Ice_DB_VERIFY_EXECUTABLE - path to db_verify executable -# Ice_DUMPDB_EXECUTABLE - path to dumpdb executable -# Ice_TRANSFORMDB_EXECUTABLE - path to transformdb executable -# -# Ice component libraries are reported in:: -# -# Ice_<C>_FOUND - ON if component was found -# Ice_<C>_LIBRARIES - libraries for component -# -# Note that ``<C>`` is the uppercased name of the component. -# -# This module reads hints about search results from:: -# -# Ice_HOME - the root of the Ice installation -# -# The environment variable ``ICE_HOME`` may also be used; the -# Ice_HOME variable takes precedence. -# -# .. note:: -# On Windows, Ice 3.7.0 and later provide libraries via the NuGet -# package manager. Appropriate NuGet packages will be searched for -# using ``CMAKE_PREFIX_PATH``, or alternatively ``Ice_HOME`` may be -# set to the location of a specific NuGet package to restrict the -# search. -# -# The following cache variables may also be set:: -# -# Ice_<P>_EXECUTABLE - the path to executable <P> -# Ice_INCLUDE_DIR - the directory containing the Ice headers -# Ice_SLICE_DIR - the directory containing the Ice slice interface -# definitions -# Ice_<C>_LIBRARY - the library for component <C> -# -# .. note:: -# -# In most cases none of the above variables will require setting, -# unless multiple Ice versions are available and a specific version -# is required. On Windows, the most recent version of Ice will be -# found through the registry. On Unix, the programs, headers and -# libraries will usually be in standard locations, but Ice_SLICE_DIRS -# might not be automatically detected (commonly known locations are -# searched). All the other variables are defaulted using Ice_HOME, -# if set. It's possible to set Ice_HOME and selectively specify -# alternative locations for the other components; this might be -# required for e.g. newer versions of Visual Studio if the -# heuristics are not sufficient to identify the correct programs and -# libraries for the specific Visual Studio version. -# -# Other variables one may set to control this module are:: -# -# Ice_DEBUG - Set to ON to enable debug output from FindIce. +#[=======================================================================[.rst: +FindIce +------- + +Find the ZeroC Internet Communication Engine (ICE) programs, +libraries and datafiles. + +This module supports multiple components. +Components can include any of: ``Freeze``, ``Glacier2``, ``Ice``, +``IceBox``, ``IceDB``, ``IceDiscovery``, ``IceGrid``, +``IceLocatorDiscovery``, ``IcePatch``, ``IceSSL``, ``IceStorm``, +``IceUtil``, ``IceXML``, or ``Slice``. + +Ice 3.7 and later also include C++11-specific components: +``Glacier2++11``, ``Ice++11``, ``IceBox++11``, ``IceDiscovery++11`` +``IceGrid``, ``IceLocatorDiscovery++11``, ``IceSSL++11``, +``IceStorm++11`` + +Note that the set of supported components is Ice version-specific. + +This module reports information about the Ice installation in +several variables. General variables:: + + Ice_VERSION - Ice release version + Ice_FOUND - true if the main programs and libraries were found + Ice_LIBRARIES - component libraries to be linked + Ice_INCLUDE_DIRS - the directories containing the Ice headers + Ice_SLICE_DIRS - the directories containing the Ice slice interface + definitions + +Imported targets:: + + Ice::<C> + +Where ``<C>`` is the name of an Ice component, for example +``Ice::Glacier2`` or ``Ice++11``. + +Ice slice programs are reported in:: + + Ice_SLICE2CPP_EXECUTABLE - path to slice2cpp executable + Ice_SLICE2CS_EXECUTABLE - path to slice2cs executable + Ice_SLICE2FREEZEJ_EXECUTABLE - path to slice2freezej executable + Ice_SLICE2FREEZE_EXECUTABLE - path to slice2freeze executable + Ice_SLICE2HTML_EXECUTABLE - path to slice2html executable + Ice_SLICE2JAVA_EXECUTABLE - path to slice2java executable + Ice_SLICE2JS_EXECUTABLE - path to slice2js executable + Ice_SLICE2OBJC_EXECUTABLE - path to slice2objc executable + Ice_SLICE2PHP_EXECUTABLE - path to slice2php executable + Ice_SLICE2PY_EXECUTABLE - path to slice2py executable + Ice_SLICE2RB_EXECUTABLE - path to slice2rb executable + +Ice programs are reported in:: + + Ice_GLACIER2ROUTER_EXECUTABLE - path to glacier2router executable + Ice_ICEBOX_EXECUTABLE - path to icebox executable + Ice_ICEBOXXX11_EXECUTABLE - path to icebox++11 executable + Ice_ICEBOXADMIN_EXECUTABLE - path to iceboxadmin executable + Ice_ICEBOXD_EXECUTABLE - path to iceboxd executable + Ice_ICEBOXNET_EXECUTABLE - path to iceboxnet executable + Ice_ICEBRIDGE_EXECUTABLE - path to icebridge executable + Ice_ICEGRIDADMIN_EXECUTABLE - path to icegridadmin executable + Ice_ICEGRIDDB_EXECUTABLE - path to icegriddb executable + Ice_ICEGRIDNODE_EXECUTABLE - path to icegridnode executable + Ice_ICEGRIDNODED_EXECUTABLE - path to icegridnoded executable + Ice_ICEGRIDREGISTRY_EXECUTABLE - path to icegridregistry executable + Ice_ICEGRIDREGISTRYD_EXECUTABLE - path to icegridregistryd executable + Ice_ICEPATCH2CALC_EXECUTABLE - path to icepatch2calc executable + Ice_ICEPATCH2CLIENT_EXECUTABLE - path to icepatch2client executable + Ice_ICEPATCH2SERVER_EXECUTABLE - path to icepatch2server executable + Ice_ICESERVICEINSTALL_EXECUTABLE - path to iceserviceinstall executable + Ice_ICESTORMADMIN_EXECUTABLE - path to icestormadmin executable + Ice_ICESTORMDB_EXECUTABLE - path to icestormdb executable + Ice_ICESTORMMIGRATE_EXECUTABLE - path to icestormmigrate executable + +Ice db programs (Windows only; standard system versions on all other +platforms) are reported in:: + + Ice_DB_ARCHIVE_EXECUTABLE - path to db_archive executable + Ice_DB_CHECKPOINT_EXECUTABLE - path to db_checkpoint executable + Ice_DB_DEADLOCK_EXECUTABLE - path to db_deadlock executable + Ice_DB_DUMP_EXECUTABLE - path to db_dump executable + Ice_DB_HOTBACKUP_EXECUTABLE - path to db_hotbackup executable + Ice_DB_LOAD_EXECUTABLE - path to db_load executable + Ice_DB_LOG_VERIFY_EXECUTABLE - path to db_log_verify executable + Ice_DB_PRINTLOG_EXECUTABLE - path to db_printlog executable + Ice_DB_RECOVER_EXECUTABLE - path to db_recover executable + Ice_DB_STAT_EXECUTABLE - path to db_stat executable + Ice_DB_TUNER_EXECUTABLE - path to db_tuner executable + Ice_DB_UPGRADE_EXECUTABLE - path to db_upgrade executable + Ice_DB_VERIFY_EXECUTABLE - path to db_verify executable + Ice_DUMPDB_EXECUTABLE - path to dumpdb executable + Ice_TRANSFORMDB_EXECUTABLE - path to transformdb executable + +Ice component libraries are reported in:: + + Ice_<C>_FOUND - ON if component was found + Ice_<C>_LIBRARIES - libraries for component + +Note that ``<C>`` is the uppercased name of the component. + +This module reads hints about search results from:: + + Ice_HOME - the root of the Ice installation + +The environment variable ``ICE_HOME`` may also be used; the +Ice_HOME variable takes precedence. + +.. note:: + On Windows, Ice 3.7.0 and later provide libraries via the NuGet + package manager. Appropriate NuGet packages will be searched for + using ``CMAKE_PREFIX_PATH``, or alternatively ``Ice_HOME`` may be + set to the location of a specific NuGet package to restrict the + search. + +The following cache variables may also be set:: + + Ice_<P>_EXECUTABLE - the path to executable <P> + Ice_INCLUDE_DIR - the directory containing the Ice headers + Ice_SLICE_DIR - the directory containing the Ice slice interface + definitions + Ice_<C>_LIBRARY - the library for component <C> + +.. note:: + + In most cases none of the above variables will require setting, + unless multiple Ice versions are available and a specific version + is required. On Windows, the most recent version of Ice will be + found through the registry. On Unix, the programs, headers and + libraries will usually be in standard locations, but Ice_SLICE_DIRS + might not be automatically detected (commonly known locations are + searched). All the other variables are defaulted using Ice_HOME, + if set. It's possible to set Ice_HOME and selectively specify + alternative locations for the other components; this might be + required for e.g. newer versions of Visual Studio if the + heuristics are not sufficient to identify the correct programs and + libraries for the specific Visual Studio version. + +Other variables one may set to control this module are:: + + Ice_DEBUG - Set to ON to enable debug output from FindIce. +#]=======================================================================] # Written by Roger Leigh <rleigh@codelibre.net> diff --git a/Modules/FindIcotool.cmake b/Modules/FindIcotool.cmake index 26e95a0faf..32fc4aebd9 100644 --- a/Modules/FindIcotool.cmake +++ b/Modules/FindIcotool.cmake @@ -1,20 +1,21 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindIcotool -# ----------- -# -# Find icotool -# -# This module looks for icotool. This module defines the following -# values: -# -# :: -# -# ICOTOOL_EXECUTABLE: the full path to the icotool tool. -# ICOTOOL_FOUND: True if icotool has been found. -# ICOTOOL_VERSION_STRING: the version of icotool found. +#[=======================================================================[.rst: +FindIcotool +----------- + +Find icotool + +This module looks for icotool. This module defines the following +values: + +:: + + ICOTOOL_EXECUTABLE: the full path to the icotool tool. + ICOTOOL_FOUND: True if icotool has been found. + ICOTOOL_VERSION_STRING: the version of icotool found. +#]=======================================================================] find_program(ICOTOOL_EXECUTABLE icotool diff --git a/Modules/FindImageMagick.cmake b/Modules/FindImageMagick.cmake index 6d94d3b682..2ddd11c8d9 100644 --- a/Modules/FindImageMagick.cmake +++ b/Modules/FindImageMagick.cmake @@ -1,87 +1,88 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindImageMagick -# --------------- -# -# Find the ImageMagick binary suite. -# -# This module will search for a set of ImageMagick tools specified as -# components in the FIND_PACKAGE call. Typical components include, but -# are not limited to (future versions of ImageMagick might have -# additional components not listed here): -# -# :: -# -# animate -# compare -# composite -# conjure -# convert -# display -# identify -# import -# mogrify -# montage -# stream -# -# -# -# If no component is specified in the FIND_PACKAGE call, then it only -# searches for the ImageMagick executable directory. This code defines -# the following variables: -# -# :: -# -# ImageMagick_FOUND - TRUE if all components are found. -# ImageMagick_EXECUTABLE_DIR - Full path to executables directory. -# ImageMagick_<component>_FOUND - TRUE if <component> is found. -# ImageMagick_<component>_EXECUTABLE - Full path to <component> executable. -# ImageMagick_VERSION_STRING - the version of ImageMagick found -# (since CMake 2.8.8) -# -# -# -# ImageMagick_VERSION_STRING will not work for old versions like 5.2.3. -# -# There are also components for the following ImageMagick APIs: -# -# :: -# -# Magick++ -# MagickWand -# MagickCore -# -# -# -# For these components the following variables are set: -# -# :: -# -# ImageMagick_FOUND - TRUE if all components are found. -# ImageMagick_INCLUDE_DIRS - Full paths to all include dirs. -# ImageMagick_LIBRARIES - Full paths to all libraries. -# ImageMagick_<component>_FOUND - TRUE if <component> is found. -# ImageMagick_<component>_INCLUDE_DIRS - Full path to <component> include dirs. -# ImageMagick_<component>_LIBRARIES - Full path to <component> libraries. -# -# -# -# Example Usages: -# -# :: -# -# find_package(ImageMagick) -# find_package(ImageMagick COMPONENTS convert) -# find_package(ImageMagick COMPONENTS convert mogrify display) -# find_package(ImageMagick COMPONENTS Magick++) -# find_package(ImageMagick COMPONENTS Magick++ convert) -# -# -# -# Note that the standard FIND_PACKAGE features are supported (i.e., -# QUIET, REQUIRED, etc.). +#[=======================================================================[.rst: +FindImageMagick +--------------- + +Find the ImageMagick binary suite. + +This module will search for a set of ImageMagick tools specified as +components in the FIND_PACKAGE call. Typical components include, but +are not limited to (future versions of ImageMagick might have +additional components not listed here): + +:: + + animate + compare + composite + conjure + convert + display + identify + import + mogrify + montage + stream + + + +If no component is specified in the FIND_PACKAGE call, then it only +searches for the ImageMagick executable directory. This code defines +the following variables: + +:: + + ImageMagick_FOUND - TRUE if all components are found. + ImageMagick_EXECUTABLE_DIR - Full path to executables directory. + ImageMagick_<component>_FOUND - TRUE if <component> is found. + ImageMagick_<component>_EXECUTABLE - Full path to <component> executable. + ImageMagick_VERSION_STRING - the version of ImageMagick found + (since CMake 2.8.8) + + + +ImageMagick_VERSION_STRING will not work for old versions like 5.2.3. + +There are also components for the following ImageMagick APIs: + +:: + + Magick++ + MagickWand + MagickCore + + + +For these components the following variables are set: + +:: + + ImageMagick_FOUND - TRUE if all components are found. + ImageMagick_INCLUDE_DIRS - Full paths to all include dirs. + ImageMagick_LIBRARIES - Full paths to all libraries. + ImageMagick_<component>_FOUND - TRUE if <component> is found. + ImageMagick_<component>_INCLUDE_DIRS - Full path to <component> include dirs. + ImageMagick_<component>_LIBRARIES - Full path to <component> libraries. + + + +Example Usages: + +:: + + find_package(ImageMagick) + find_package(ImageMagick COMPONENTS convert) + find_package(ImageMagick COMPONENTS convert mogrify display) + find_package(ImageMagick COMPONENTS Magick++) + find_package(ImageMagick COMPONENTS Magick++ convert) + + + +Note that the standard FIND_PACKAGE features are supported (i.e., +QUIET, REQUIRED, etc.). +#]=======================================================================] find_package(PkgConfig QUIET) diff --git a/Modules/FindIntl.cmake b/Modules/FindIntl.cmake index f887721d64..3818d45ec9 100644 --- a/Modules/FindIntl.cmake +++ b/Modules/FindIntl.cmake @@ -1,33 +1,34 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindIntl -# -------- -# -# Find the Gettext libintl headers and libraries. -# -# This module reports information about the Gettext libintl -# installation in several variables. General variables:: -# -# Intl_FOUND - true if the libintl headers and libraries were found -# Intl_INCLUDE_DIRS - the directory containing the libintl headers -# Intl_LIBRARIES - libintl libraries to be linked -# -# The following cache variables may also be set:: -# -# Intl_INCLUDE_DIR - the directory containing the libintl headers -# Intl_LIBRARY - the libintl library (if any) -# -# .. note:: -# On some platforms, such as Linux with GNU libc, the gettext -# functions are present in the C standard library and libintl -# is not required. ``Intl_LIBRARIES`` will be empty in this -# case. -# -# .. note:: -# If you wish to use the Gettext tools (``msgmerge``, -# ``msgfmt``, etc.), use :module:`FindGettext`. +#[=======================================================================[.rst: +FindIntl +-------- + +Find the Gettext libintl headers and libraries. + +This module reports information about the Gettext libintl +installation in several variables. General variables:: + + Intl_FOUND - true if the libintl headers and libraries were found + Intl_INCLUDE_DIRS - the directory containing the libintl headers + Intl_LIBRARIES - libintl libraries to be linked + +The following cache variables may also be set:: + + Intl_INCLUDE_DIR - the directory containing the libintl headers + Intl_LIBRARY - the libintl library (if any) + +.. note:: + On some platforms, such as Linux with GNU libc, the gettext + functions are present in the C standard library and libintl + is not required. ``Intl_LIBRARIES`` will be empty in this + case. + +.. note:: + If you wish to use the Gettext tools (``msgmerge``, + ``msgfmt``, etc.), use :module:`FindGettext`. +#]=======================================================================] # Written by Roger Leigh <rleigh@codelibre.net> diff --git a/Modules/FindJPEG.cmake b/Modules/FindJPEG.cmake index 7290724ce0..0aa387afb5 100644 --- a/Modules/FindJPEG.cmake +++ b/Modules/FindJPEG.cmake @@ -1,53 +1,54 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindJPEG -# -------- -# -# Find the JPEG library (libjpeg) -# -# Imported targets -# ^^^^^^^^^^^^^^^^ -# -# This module defines the following :prop_tgt:`IMPORTED` targets: -# -# ``JPEG::JPEG`` -# The JPEG library, if found. -# -# Result variables -# ^^^^^^^^^^^^^^^^ -# -# This module will set the following variables in your project: -# -# ``JPEG_FOUND`` -# If false, do not try to use JPEG. -# ``JPEG_INCLUDE_DIRS`` -# where to find jpeglib.h, etc. -# ``JPEG_LIBRARIES`` -# the libraries needed to use JPEG. -# ``JPEG_VERSION`` -# the version of the JPEG library found -# -# Cache variables -# ^^^^^^^^^^^^^^^ -# -# The following cache variables may also be set: -# -# ``JPEG_INCLUDE_DIRS`` -# where to find jpeglib.h, etc. -# ``JPEG_LIBRARY_RELEASE`` -# where to find the JPEG library (optimized). -# ``JPEG_LIBRARY_DEBUG`` -# where to find the JPEG library (debug). -# -# Obsolete variables -# ^^^^^^^^^^^^^^^^^^ -# -# ``JPEG_INCLUDE_DIR`` -# where to find jpeglib.h, etc. (same as JPEG_INCLUDE_DIRS) -# ``JPEG_LIBRARY`` -# where to find the JPEG library. +#[=======================================================================[.rst: +FindJPEG +-------- + +Find the JPEG library (libjpeg) + +Imported targets +^^^^^^^^^^^^^^^^ + +This module defines the following :prop_tgt:`IMPORTED` targets: + +``JPEG::JPEG`` + The JPEG library, if found. + +Result variables +^^^^^^^^^^^^^^^^ + +This module will set the following variables in your project: + +``JPEG_FOUND`` + If false, do not try to use JPEG. +``JPEG_INCLUDE_DIRS`` + where to find jpeglib.h, etc. +``JPEG_LIBRARIES`` + the libraries needed to use JPEG. +``JPEG_VERSION`` + the version of the JPEG library found + +Cache variables +^^^^^^^^^^^^^^^ + +The following cache variables may also be set: + +``JPEG_INCLUDE_DIRS`` + where to find jpeglib.h, etc. +``JPEG_LIBRARY_RELEASE`` + where to find the JPEG library (optimized). +``JPEG_LIBRARY_DEBUG`` + where to find the JPEG library (debug). + +Obsolete variables +^^^^^^^^^^^^^^^^^^ + +``JPEG_INCLUDE_DIR`` + where to find jpeglib.h, etc. (same as JPEG_INCLUDE_DIRS) +``JPEG_LIBRARY`` + where to find the JPEG library. +#]=======================================================================] find_path(JPEG_INCLUDE_DIR jpeglib.h) diff --git a/Modules/FindJasper.cmake b/Modules/FindJasper.cmake index db766576b0..dd0e98411a 100644 --- a/Modules/FindJasper.cmake +++ b/Modules/FindJasper.cmake @@ -1,20 +1,21 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindJasper -# ---------- -# -# Try to find the Jasper JPEG2000 library -# -# Once done this will define -# -# :: -# -# JASPER_FOUND - system has Jasper -# JASPER_INCLUDE_DIR - the Jasper include directory -# JASPER_LIBRARIES - the libraries needed to use Jasper -# JASPER_VERSION_STRING - the version of Jasper found (since CMake 2.8.8) +#[=======================================================================[.rst: +FindJasper +---------- + +Try to find the Jasper JPEG2000 library + +Once done this will define + +:: + + JASPER_FOUND - system has Jasper + JASPER_INCLUDE_DIR - the Jasper include directory + JASPER_LIBRARIES - the libraries needed to use Jasper + JASPER_VERSION_STRING - the version of Jasper found (since CMake 2.8.8) +#]=======================================================================] find_path(JASPER_INCLUDE_DIR jasper/jasper.h) diff --git a/Modules/FindJava.cmake b/Modules/FindJava.cmake index bcdf166fdf..0d62cd6693 100644 --- a/Modules/FindJava.cmake +++ b/Modules/FindJava.cmake @@ -1,79 +1,80 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindJava -# -------- -# -# Find Java -# -# This module finds if Java is installed and determines where the -# include files and libraries are. The caller may set variable ``JAVA_HOME`` -# to specify a Java installation prefix explicitly. -# -# See also the :module:`FindJNI` module to find Java Native Interface (JNI). -# -# Specify one or more of the following components as you call this find module. See example below. -# -# :: -# -# Runtime = Java Runtime Environment used to execute Java byte-compiled applications -# Development = Development tools (java, javac, javah, jar and javadoc), includes Runtime component -# IdlJ = Interface Description Language (IDL) to Java compiler -# JarSigner = Signer and verifier tool for Java Archive (JAR) files -# -# -# This module sets the following result variables: -# -# :: -# -# Java_JAVA_EXECUTABLE = the full path to the Java runtime -# Java_JAVAC_EXECUTABLE = the full path to the Java compiler -# Java_JAVAH_EXECUTABLE = the full path to the Java header generator -# Java_JAVADOC_EXECUTABLE = the full path to the Java documentation generator -# Java_IDLJ_EXECUTABLE = the full path to the Java idl compiler -# Java_JAR_EXECUTABLE = the full path to the Java archiver -# Java_JARSIGNER_EXECUTABLE = the full path to the Java jar signer -# Java_VERSION_STRING = Version of java found, eg. 1.6.0_12 -# Java_VERSION_MAJOR = The major version of the package found. -# Java_VERSION_MINOR = The minor version of the package found. -# Java_VERSION_PATCH = The patch version of the package found. -# Java_VERSION_TWEAK = The tweak version of the package found (after '_') -# Java_VERSION = This is set to: $major[.$minor[.$patch[.$tweak]]] -# -# -# -# The minimum required version of Java can be specified using the -# :command:`find_package` syntax, e.g. -# -# .. code-block:: cmake -# -# find_package(Java 1.8) -# -# NOTE: ``${Java_VERSION}`` and ``${Java_VERSION_STRING}`` are not guaranteed to -# be identical. For example some java version may return: -# ``Java_VERSION_STRING = 1.8.0_17`` and ``Java_VERSION = 1.8.0.17`` -# -# another example is the Java OEM, with: ``Java_VERSION_STRING = 1.8.0-oem`` -# and ``Java_VERSION = 1.8.0`` -# -# For these components the following variables are set: -# -# :: -# -# Java_FOUND - TRUE if all components are found. -# Java_<component>_FOUND - TRUE if <component> is found. -# -# -# -# Example Usages: -# -# :: -# -# find_package(Java) -# find_package(Java 1.8 REQUIRED) -# find_package(Java COMPONENTS Runtime) -# find_package(Java COMPONENTS Development) +#[=======================================================================[.rst: +FindJava +-------- + +Find Java + +This module finds if Java is installed and determines where the +include files and libraries are. The caller may set variable ``JAVA_HOME`` +to specify a Java installation prefix explicitly. + +See also the :module:`FindJNI` module to find Java Native Interface (JNI). + +Specify one or more of the following components as you call this find module. See example below. + +:: + + Runtime = Java Runtime Environment used to execute Java byte-compiled applications + Development = Development tools (java, javac, javah, jar and javadoc), includes Runtime component + IdlJ = Interface Description Language (IDL) to Java compiler + JarSigner = Signer and verifier tool for Java Archive (JAR) files + + +This module sets the following result variables: + +:: + + Java_JAVA_EXECUTABLE = the full path to the Java runtime + Java_JAVAC_EXECUTABLE = the full path to the Java compiler + Java_JAVAH_EXECUTABLE = the full path to the Java header generator + Java_JAVADOC_EXECUTABLE = the full path to the Java documentation generator + Java_IDLJ_EXECUTABLE = the full path to the Java idl compiler + Java_JAR_EXECUTABLE = the full path to the Java archiver + Java_JARSIGNER_EXECUTABLE = the full path to the Java jar signer + Java_VERSION_STRING = Version of java found, eg. 1.6.0_12 + Java_VERSION_MAJOR = The major version of the package found. + Java_VERSION_MINOR = The minor version of the package found. + Java_VERSION_PATCH = The patch version of the package found. + Java_VERSION_TWEAK = The tweak version of the package found (after '_') + Java_VERSION = This is set to: $major[.$minor[.$patch[.$tweak]]] + + + +The minimum required version of Java can be specified using the +:command:`find_package` syntax, e.g. + +.. code-block:: cmake + + find_package(Java 1.8) + +NOTE: ``${Java_VERSION}`` and ``${Java_VERSION_STRING}`` are not guaranteed to +be identical. For example some java version may return: +``Java_VERSION_STRING = 1.8.0_17`` and ``Java_VERSION = 1.8.0.17`` + +another example is the Java OEM, with: ``Java_VERSION_STRING = 1.8.0-oem`` +and ``Java_VERSION = 1.8.0`` + +For these components the following variables are set: + +:: + + Java_FOUND - TRUE if all components are found. + Java_<component>_FOUND - TRUE if <component> is found. + + + +Example Usages: + +:: + + find_package(Java) + find_package(Java 1.8 REQUIRED) + find_package(Java COMPONENTS Runtime) + find_package(Java COMPONENTS Development) +#]=======================================================================] include(${CMAKE_CURRENT_LIST_DIR}/CMakeFindJavaCommon.cmake) diff --git a/Modules/FindKDE3.cmake b/Modules/FindKDE3.cmake index daf681863b..c7ad6e1805 100644 --- a/Modules/FindKDE3.cmake +++ b/Modules/FindKDE3.cmake @@ -1,141 +1,142 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindKDE3 -# -------- -# -# Find the KDE3 include and library dirs, KDE preprocessors and define a some macros -# -# -# -# This module defines the following variables: -# -# ``KDE3_DEFINITIONS`` -# compiler definitions required for compiling KDE software -# ``KDE3_INCLUDE_DIR`` -# the KDE include directory -# ``KDE3_INCLUDE_DIRS`` -# the KDE and the Qt include directory, for use with include_directories() -# ``KDE3_LIB_DIR`` -# the directory where the KDE libraries are installed, for use with link_directories() -# ``QT_AND_KDECORE_LIBS`` -# this contains both the Qt and the kdecore library -# ``KDE3_DCOPIDL_EXECUTABLE`` -# the dcopidl executable -# ``KDE3_DCOPIDL2CPP_EXECUTABLE`` -# the dcopidl2cpp executable -# ``KDE3_KCFGC_EXECUTABLE`` -# the kconfig_compiler executable -# ``KDE3_FOUND`` -# set to TRUE if all of the above has been found -# -# The following user adjustable options are provided: -# -# ``KDE3_BUILD_TESTS`` -# enable this to build KDE testcases -# -# It also adds the following macros (from KDE3Macros.cmake) SRCS_VAR is -# always the variable which contains the list of source files for your -# application or library. -# -# KDE3_AUTOMOC(file1 ... fileN) -# -# :: -# -# Call this if you want to have automatic moc file handling. -# This means if you include "foo.moc" in the source file foo.cpp -# a moc file for the header foo.h will be created automatically. -# You can set the property SKIP_AUTOMAKE using set_source_files_properties() -# to exclude some files in the list from being processed. -# -# -# -# KDE3_ADD_MOC_FILES(SRCS_VAR file1 ... fileN ) -# -# :: -# -# If you don't use the KDE3_AUTOMOC() macro, for the files -# listed here moc files will be created (named "foo.moc.cpp") -# -# -# -# KDE3_ADD_DCOP_SKELS(SRCS_VAR header1.h ... headerN.h ) -# -# :: -# -# Use this to generate DCOP skeletions from the listed headers. -# -# -# -# KDE3_ADD_DCOP_STUBS(SRCS_VAR header1.h ... headerN.h ) -# -# :: -# -# Use this to generate DCOP stubs from the listed headers. -# -# -# -# KDE3_ADD_UI_FILES(SRCS_VAR file1.ui ... fileN.ui ) -# -# :: -# -# Use this to add the Qt designer ui files to your application/library. -# -# -# -# KDE3_ADD_KCFG_FILES(SRCS_VAR file1.kcfgc ... fileN.kcfgc ) -# -# :: -# -# Use this to add KDE kconfig compiler files to your application/library. -# -# -# -# KDE3_INSTALL_LIBTOOL_FILE(target) -# -# :: -# -# This will create and install a simple libtool file for the given target. -# -# -# -# KDE3_ADD_EXECUTABLE(name file1 ... fileN ) -# -# :: -# -# Currently identical to add_executable(), may provide some advanced -# features in the future. -# -# -# -# KDE3_ADD_KPART(name [WITH_PREFIX] file1 ... fileN ) -# -# :: -# -# Create a KDE plugin (KPart, kioslave, etc.) from the given source files. -# If WITH_PREFIX is given, the resulting plugin will have the prefix "lib", -# otherwise it won't. -# It creates and installs an appropriate libtool la-file. -# -# -# -# KDE3_ADD_KDEINIT_EXECUTABLE(name file1 ... fileN ) -# -# :: -# -# Create a KDE application in the form of a module loadable via kdeinit. -# A library named kdeinit_<name> will be created and a small executable -# which links to it. -# -# -# -# The option KDE3_ENABLE_FINAL to enable all-in-one compilation is no -# longer supported. -# -# -# -# Author: Alexander Neundorf <neundorf@kde.org> +#[=======================================================================[.rst: +FindKDE3 +-------- + +Find the KDE3 include and library dirs, KDE preprocessors and define a some macros + + + +This module defines the following variables: + +``KDE3_DEFINITIONS`` + compiler definitions required for compiling KDE software +``KDE3_INCLUDE_DIR`` + the KDE include directory +``KDE3_INCLUDE_DIRS`` + the KDE and the Qt include directory, for use with include_directories() +``KDE3_LIB_DIR`` + the directory where the KDE libraries are installed, for use with link_directories() +``QT_AND_KDECORE_LIBS`` + this contains both the Qt and the kdecore library +``KDE3_DCOPIDL_EXECUTABLE`` + the dcopidl executable +``KDE3_DCOPIDL2CPP_EXECUTABLE`` + the dcopidl2cpp executable +``KDE3_KCFGC_EXECUTABLE`` + the kconfig_compiler executable +``KDE3_FOUND`` + set to TRUE if all of the above has been found + +The following user adjustable options are provided: + +``KDE3_BUILD_TESTS`` + enable this to build KDE testcases + +It also adds the following macros (from KDE3Macros.cmake) SRCS_VAR is +always the variable which contains the list of source files for your +application or library. + +KDE3_AUTOMOC(file1 ... fileN) + +:: + + Call this if you want to have automatic moc file handling. + This means if you include "foo.moc" in the source file foo.cpp + a moc file for the header foo.h will be created automatically. + You can set the property SKIP_AUTOMAKE using set_source_files_properties() + to exclude some files in the list from being processed. + + + +KDE3_ADD_MOC_FILES(SRCS_VAR file1 ... fileN ) + +:: + + If you don't use the KDE3_AUTOMOC() macro, for the files + listed here moc files will be created (named "foo.moc.cpp") + + + +KDE3_ADD_DCOP_SKELS(SRCS_VAR header1.h ... headerN.h ) + +:: + + Use this to generate DCOP skeletions from the listed headers. + + + +KDE3_ADD_DCOP_STUBS(SRCS_VAR header1.h ... headerN.h ) + +:: + + Use this to generate DCOP stubs from the listed headers. + + + +KDE3_ADD_UI_FILES(SRCS_VAR file1.ui ... fileN.ui ) + +:: + + Use this to add the Qt designer ui files to your application/library. + + + +KDE3_ADD_KCFG_FILES(SRCS_VAR file1.kcfgc ... fileN.kcfgc ) + +:: + + Use this to add KDE kconfig compiler files to your application/library. + + + +KDE3_INSTALL_LIBTOOL_FILE(target) + +:: + + This will create and install a simple libtool file for the given target. + + + +KDE3_ADD_EXECUTABLE(name file1 ... fileN ) + +:: + + Currently identical to add_executable(), may provide some advanced + features in the future. + + + +KDE3_ADD_KPART(name [WITH_PREFIX] file1 ... fileN ) + +:: + + Create a KDE plugin (KPart, kioslave, etc.) from the given source files. + If WITH_PREFIX is given, the resulting plugin will have the prefix "lib", + otherwise it won't. + It creates and installs an appropriate libtool la-file. + + + +KDE3_ADD_KDEINIT_EXECUTABLE(name file1 ... fileN ) + +:: + + Create a KDE application in the form of a module loadable via kdeinit. + A library named kdeinit_<name> will be created and a small executable + which links to it. + + + +The option KDE3_ENABLE_FINAL to enable all-in-one compilation is no +longer supported. + + + +Author: Alexander Neundorf <neundorf@kde.org> +#]=======================================================================] if(NOT UNIX AND KDE3_FIND_REQUIRED) message(FATAL_ERROR "Compiling KDE3 applications and libraries under Windows is not supported") diff --git a/Modules/FindKDE4.cmake b/Modules/FindKDE4.cmake index bb98e53bdd..c04804be90 100644 --- a/Modules/FindKDE4.cmake +++ b/Modules/FindKDE4.cmake @@ -1,29 +1,30 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindKDE4 -# -------- -# -# -# -# Find KDE4 and provide all necessary variables and macros to compile -# software for it. It looks for KDE 4 in the following directories in -# the given order: -# -# :: -# -# CMAKE_INSTALL_PREFIX -# KDEDIRS -# /opt/kde4 -# -# -# -# Please look in FindKDE4Internal.cmake and KDE4Macros.cmake for more -# information. They are installed with the KDE 4 libraries in -# $KDEDIRS/share/apps/cmake/modules/. -# -# Author: Alexander Neundorf <neundorf@kde.org> +#[=======================================================================[.rst: +FindKDE4 +-------- + + + +Find KDE4 and provide all necessary variables and macros to compile +software for it. It looks for KDE 4 in the following directories in +the given order: + +:: + + CMAKE_INSTALL_PREFIX + KDEDIRS + /opt/kde4 + + + +Please look in FindKDE4Internal.cmake and KDE4Macros.cmake for more +information. They are installed with the KDE 4 libraries in +$KDEDIRS/share/apps/cmake/modules/. + +Author: Alexander Neundorf <neundorf@kde.org> +#]=======================================================================] # If Qt3 has already been found, fail. if(QT_QT_LIBRARY) diff --git a/Modules/FindLAPACK.cmake b/Modules/FindLAPACK.cmake index 7ca9950e5e..31e5620b2c 100644 --- a/Modules/FindLAPACK.cmake +++ b/Modules/FindLAPACK.cmake @@ -1,48 +1,49 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindLAPACK -# ---------- -# -# Find LAPACK library -# -# This module finds an installed fortran library that implements the -# LAPACK linear-algebra interface (see http://www.netlib.org/lapack/). -# -# The approach follows that taken for the autoconf macro file, -# acx_lapack.m4 (distributed at -# http://ac-archive.sourceforge.net/ac-archive/acx_lapack.html). -# -# This module sets the following variables: -# -# :: -# -# LAPACK_FOUND - set to true if a library implementing the LAPACK interface -# is found -# LAPACK_LINKER_FLAGS - uncached list of required linker flags (excluding -l -# and -L). -# LAPACK_LIBRARIES - uncached list of libraries (using full path name) to -# link against to use LAPACK -# LAPACK95_LIBRARIES - uncached list of libraries (using full path name) to -# link against to use LAPACK95 -# LAPACK95_FOUND - set to true if a library implementing the LAPACK f95 -# interface is found -# BLA_STATIC if set on this determines what kind of linkage we do (static) -# BLA_VENDOR if set checks only the specified vendor, if not set checks -# all the possibilities -# BLA_F95 if set on tries to find the f95 interfaces for BLAS/LAPACK -# -# List of vendors (BLA_VENDOR) valid in this module: -# -# * Intel(mkl) -# * OpenBLAS -# * FLAME -# * ACML -# * Apple -# * NAS -# * Generic -# +#[=======================================================================[.rst: +FindLAPACK +---------- + +Find LAPACK library + +This module finds an installed fortran library that implements the +LAPACK linear-algebra interface (see http://www.netlib.org/lapack/). + +The approach follows that taken for the autoconf macro file, +acx_lapack.m4 (distributed at +http://ac-archive.sourceforge.net/ac-archive/acx_lapack.html). + +This module sets the following variables: + +:: + + LAPACK_FOUND - set to true if a library implementing the LAPACK interface + is found + LAPACK_LINKER_FLAGS - uncached list of required linker flags (excluding -l + and -L). + LAPACK_LIBRARIES - uncached list of libraries (using full path name) to + link against to use LAPACK + LAPACK95_LIBRARIES - uncached list of libraries (using full path name) to + link against to use LAPACK95 + LAPACK95_FOUND - set to true if a library implementing the LAPACK f95 + interface is found + BLA_STATIC if set on this determines what kind of linkage we do (static) + BLA_VENDOR if set checks only the specified vendor, if not set checks + all the possibilities + BLA_F95 if set on tries to find the f95 interfaces for BLAS/LAPACK + +List of vendors (BLA_VENDOR) valid in this module: + +* Intel(mkl) +* OpenBLAS +* FLAME +* ACML +* Apple +* NAS +* Generic + +#]=======================================================================] set(_lapack_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) diff --git a/Modules/FindLATEX.cmake b/Modules/FindLATEX.cmake index d1f4fa4975..01f4793971 100644 --- a/Modules/FindLATEX.cmake +++ b/Modules/FindLATEX.cmake @@ -1,56 +1,57 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindLATEX -# --------- -# -# Find Latex -# -# This module finds an installed Latex and determines the location -# of the compiler. Additionally the module looks for Latex-related -# software like BibTeX. -# -# This module sets the following result variables:: -# -# LATEX_FOUND: whether found Latex and requested components -# LATEX_<component>_FOUND: whether found <component> -# LATEX_COMPILER: path to the LaTeX compiler -# PDFLATEX_COMPILER: path to the PdfLaTeX compiler -# XELATEX_COMPILER: path to the XeLaTeX compiler -# LUALATEX_COMPILER: path to the LuaLaTeX compiler -# BIBTEX_COMPILER: path to the BibTeX compiler -# BIBER_COMPILER: path to the Biber compiler -# MAKEINDEX_COMPILER: path to the MakeIndex compiler -# XINDY_COMPILER: path to the xindy compiler -# DVIPS_CONVERTER: path to the DVIPS converter -# DVIPDF_CONVERTER: path to the DVIPDF converter -# PS2PDF_CONVERTER: path to the PS2PDF converter -# PDFTOPS_CONVERTER: path to the pdftops converter -# LATEX2HTML_CONVERTER: path to the LaTeX2Html converter -# HTLATEX_COMPILER: path to the htlatex compiler -# -# Possible components are:: -# -# PDFLATEX -# XELATEX -# LUALATEX -# BIBTEX -# BIBER -# MAKEINDEX -# XINDY -# DVIPS -# DVIPDF -# PS2PDF -# PDFTOPS -# LATEX2HTML -# HTLATEX -# -# Example Usages:: -# -# find_package(LATEX) -# find_package(LATEX COMPONENTS PDFLATEX) -# find_package(LATEX COMPONENTS BIBTEX PS2PDF) +#[=======================================================================[.rst: +FindLATEX +--------- + +Find Latex + +This module finds an installed Latex and determines the location +of the compiler. Additionally the module looks for Latex-related +software like BibTeX. + +This module sets the following result variables:: + + LATEX_FOUND: whether found Latex and requested components + LATEX_<component>_FOUND: whether found <component> + LATEX_COMPILER: path to the LaTeX compiler + PDFLATEX_COMPILER: path to the PdfLaTeX compiler + XELATEX_COMPILER: path to the XeLaTeX compiler + LUALATEX_COMPILER: path to the LuaLaTeX compiler + BIBTEX_COMPILER: path to the BibTeX compiler + BIBER_COMPILER: path to the Biber compiler + MAKEINDEX_COMPILER: path to the MakeIndex compiler + XINDY_COMPILER: path to the xindy compiler + DVIPS_CONVERTER: path to the DVIPS converter + DVIPDF_CONVERTER: path to the DVIPDF converter + PS2PDF_CONVERTER: path to the PS2PDF converter + PDFTOPS_CONVERTER: path to the pdftops converter + LATEX2HTML_CONVERTER: path to the LaTeX2Html converter + HTLATEX_COMPILER: path to the htlatex compiler + +Possible components are:: + + PDFLATEX + XELATEX + LUALATEX + BIBTEX + BIBER + MAKEINDEX + XINDY + DVIPS + DVIPDF + PS2PDF + PDFTOPS + LATEX2HTML + HTLATEX + +Example Usages:: + + find_package(LATEX) + find_package(LATEX COMPONENTS PDFLATEX) + find_package(LATEX COMPONENTS BIBTEX PS2PDF) +#]=======================================================================] if (WIN32) # Try to find the MikTex binary path (look for its package manager). diff --git a/Modules/FindLTTngUST.cmake b/Modules/FindLTTngUST.cmake index 00d5e7aed8..a074187ca8 100644 --- a/Modules/FindLTTngUST.cmake +++ b/Modules/FindLTTngUST.cmake @@ -1,37 +1,38 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindLTTngUST -# ------------ -# -# This module finds the `LTTng-UST <http://lttng.org/>`__ library. -# -# Imported target -# ^^^^^^^^^^^^^^^ -# -# This module defines the following :prop_tgt:`IMPORTED` target: -# -# ``LTTng::UST`` -# The LTTng-UST library, if found -# -# Result variables -# ^^^^^^^^^^^^^^^^ -# -# This module sets the following -# -# ``LTTNGUST_FOUND`` -# ``TRUE`` if system has LTTng-UST -# ``LTTNGUST_INCLUDE_DIRS`` -# The LTTng-UST include directories -# ``LTTNGUST_LIBRARIES`` -# The libraries needed to use LTTng-UST -# ``LTTNGUST_VERSION_STRING`` -# The LTTng-UST version -# ``LTTNGUST_HAS_TRACEF`` -# ``TRUE`` if the ``tracef()`` API is available in the system's LTTng-UST -# ``LTTNGUST_HAS_TRACELOG`` -# ``TRUE`` if the ``tracelog()`` API is available in the system's LTTng-UST +#[=======================================================================[.rst: +FindLTTngUST +------------ + +This module finds the `LTTng-UST <http://lttng.org/>`__ library. + +Imported target +^^^^^^^^^^^^^^^ + +This module defines the following :prop_tgt:`IMPORTED` target: + +``LTTng::UST`` + The LTTng-UST library, if found + +Result variables +^^^^^^^^^^^^^^^^ + +This module sets the following + +``LTTNGUST_FOUND`` + ``TRUE`` if system has LTTng-UST +``LTTNGUST_INCLUDE_DIRS`` + The LTTng-UST include directories +``LTTNGUST_LIBRARIES`` + The libraries needed to use LTTng-UST +``LTTNGUST_VERSION_STRING`` + The LTTng-UST version +``LTTNGUST_HAS_TRACEF`` + ``TRUE`` if the ``tracef()`` API is available in the system's LTTng-UST +``LTTNGUST_HAS_TRACELOG`` + ``TRUE`` if the ``tracelog()`` API is available in the system's LTTng-UST +#]=======================================================================] find_path(LTTNGUST_INCLUDE_DIRS NAMES lttng/tracepoint.h) find_library(LTTNGUST_LIBRARIES NAMES lttng-ust) diff --git a/Modules/FindLibArchive.cmake b/Modules/FindLibArchive.cmake index 38e512fa35..34fc2e2520 100644 --- a/Modules/FindLibArchive.cmake +++ b/Modules/FindLibArchive.cmake @@ -1,20 +1,21 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindLibArchive -# -------------- -# -# Find libarchive library and headers -# -# The module defines the following variables: -# -# :: -# -# LibArchive_FOUND - true if libarchive was found -# LibArchive_INCLUDE_DIRS - include search path -# LibArchive_LIBRARIES - libraries to link -# LibArchive_VERSION - libarchive 3-component version number +#[=======================================================================[.rst: +FindLibArchive +-------------- + +Find libarchive library and headers + +The module defines the following variables: + +:: + + LibArchive_FOUND - true if libarchive was found + LibArchive_INCLUDE_DIRS - include search path + LibArchive_LIBRARIES - libraries to link + LibArchive_VERSION - libarchive 3-component version number +#]=======================================================================] find_path(LibArchive_INCLUDE_DIR NAMES archive.h diff --git a/Modules/FindLibLZMA.cmake b/Modules/FindLibLZMA.cmake index d203eafa19..6d30e571c8 100644 --- a/Modules/FindLibLZMA.cmake +++ b/Modules/FindLibLZMA.cmake @@ -1,26 +1,27 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindLibLZMA -# ----------- -# -# Find LibLZMA -# -# Find LibLZMA headers and library -# -# :: -# -# LIBLZMA_FOUND - True if liblzma is found. -# LIBLZMA_INCLUDE_DIRS - Directory where liblzma headers are located. -# LIBLZMA_LIBRARIES - Lzma libraries to link against. -# LIBLZMA_HAS_AUTO_DECODER - True if lzma_auto_decoder() is found (required). -# LIBLZMA_HAS_EASY_ENCODER - True if lzma_easy_encoder() is found (required). -# LIBLZMA_HAS_LZMA_PRESET - True if lzma_lzma_preset() is found (required). -# LIBLZMA_VERSION_MAJOR - The major version of lzma -# LIBLZMA_VERSION_MINOR - The minor version of lzma -# LIBLZMA_VERSION_PATCH - The patch version of lzma -# LIBLZMA_VERSION_STRING - version number as a string (ex: "5.0.3") +#[=======================================================================[.rst: +FindLibLZMA +----------- + +Find LibLZMA + +Find LibLZMA headers and library + +:: + + LIBLZMA_FOUND - True if liblzma is found. + LIBLZMA_INCLUDE_DIRS - Directory where liblzma headers are located. + LIBLZMA_LIBRARIES - Lzma libraries to link against. + LIBLZMA_HAS_AUTO_DECODER - True if lzma_auto_decoder() is found (required). + LIBLZMA_HAS_EASY_ENCODER - True if lzma_easy_encoder() is found (required). + LIBLZMA_HAS_LZMA_PRESET - True if lzma_lzma_preset() is found (required). + LIBLZMA_VERSION_MAJOR - The major version of lzma + LIBLZMA_VERSION_MINOR - The minor version of lzma + LIBLZMA_VERSION_PATCH - The patch version of lzma + LIBLZMA_VERSION_STRING - version number as a string (ex: "5.0.3") +#]=======================================================================] find_path(LIBLZMA_INCLUDE_DIR lzma.h ) find_library(LIBLZMA_LIBRARY NAMES lzma liblzma) diff --git a/Modules/FindLibXml2.cmake b/Modules/FindLibXml2.cmake index 615de49e33..1a2af16112 100644 --- a/Modules/FindLibXml2.cmake +++ b/Modules/FindLibXml2.cmake @@ -1,47 +1,48 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindLibXml2 -# ----------- -# -# Find the XML processing library (libxml2). -# -# IMPORTED Targets -# ^^^^^^^^^^^^^^^^ -# -# This module defines :prop_tgt:`IMPORTED` target ``LibXml2::LibXml2``, if -# libxml2 has been found. -# -# Result variables -# ^^^^^^^^^^^^^^^^ -# -# This module will set the following variables in your project: -# -# ``LIBXML2_FOUND`` -# true if libxml2 headers and libraries were found -# ``LIBXML2_INCLUDE_DIR`` -# the directory containing LibXml2 headers -# ``LIBXML2_INCLUDE_DIRS`` -# list of the include directories needed to use LibXml2 -# ``LIBXML2_LIBRARIES`` -# LibXml2 libraries to be linked -# ``LIBXML2_DEFINITIONS`` -# the compiler switches required for using LibXml2 -# ``LIBXML2_XMLLINT_EXECUTABLE`` -# path to the XML checking tool xmllint coming with LibXml2 -# ``LIBXML2_VERSION_STRING`` -# the version of LibXml2 found (since CMake 2.8.8) -# -# Cache variables -# ^^^^^^^^^^^^^^^ -# -# The following cache variables may also be set: -# -# ``LIBXML2_INCLUDE_DIR`` -# the directory containing LibXml2 headers -# ``LIBXML2_LIBRARY`` -# path to the LibXml2 library +#[=======================================================================[.rst: +FindLibXml2 +----------- + +Find the XML processing library (libxml2). + +IMPORTED Targets +^^^^^^^^^^^^^^^^ + +This module defines :prop_tgt:`IMPORTED` target ``LibXml2::LibXml2``, if +libxml2 has been found. + +Result variables +^^^^^^^^^^^^^^^^ + +This module will set the following variables in your project: + +``LIBXML2_FOUND`` + true if libxml2 headers and libraries were found +``LIBXML2_INCLUDE_DIR`` + the directory containing LibXml2 headers +``LIBXML2_INCLUDE_DIRS`` + list of the include directories needed to use LibXml2 +``LIBXML2_LIBRARIES`` + LibXml2 libraries to be linked +``LIBXML2_DEFINITIONS`` + the compiler switches required for using LibXml2 +``LIBXML2_XMLLINT_EXECUTABLE`` + path to the XML checking tool xmllint coming with LibXml2 +``LIBXML2_VERSION_STRING`` + the version of LibXml2 found (since CMake 2.8.8) + +Cache variables +^^^^^^^^^^^^^^^ + +The following cache variables may also be set: + +``LIBXML2_INCLUDE_DIR`` + the directory containing LibXml2 headers +``LIBXML2_LIBRARY`` + path to the LibXml2 library +#]=======================================================================] # use pkg-config to get the directories and then use these values # in the find_path() and find_library() calls diff --git a/Modules/FindLibXslt.cmake b/Modules/FindLibXslt.cmake index abd1963d5d..4cca64f2c7 100644 --- a/Modules/FindLibXslt.cmake +++ b/Modules/FindLibXslt.cmake @@ -1,29 +1,30 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindLibXslt -# ----------- -# -# Try to find the LibXslt library -# -# Once done this will define -# -# :: -# -# LIBXSLT_FOUND - system has LibXslt -# LIBXSLT_INCLUDE_DIR - the LibXslt include directory -# LIBXSLT_LIBRARIES - Link these to LibXslt -# LIBXSLT_DEFINITIONS - Compiler switches required for using LibXslt -# LIBXSLT_VERSION_STRING - version of LibXslt found (since CMake 2.8.8) -# -# Additionally, the following two variables are set (but not required -# for using xslt): -# -# ``LIBXSLT_EXSLT_LIBRARIES`` -# Link to these if you need to link against the exslt library. -# ``LIBXSLT_XSLTPROC_EXECUTABLE`` -# Contains the full path to the xsltproc executable if found. +#[=======================================================================[.rst: +FindLibXslt +----------- + +Try to find the LibXslt library + +Once done this will define + +:: + + LIBXSLT_FOUND - system has LibXslt + LIBXSLT_INCLUDE_DIR - the LibXslt include directory + LIBXSLT_LIBRARIES - Link these to LibXslt + LIBXSLT_DEFINITIONS - Compiler switches required for using LibXslt + LIBXSLT_VERSION_STRING - version of LibXslt found (since CMake 2.8.8) + +Additionally, the following two variables are set (but not required +for using xslt): + +``LIBXSLT_EXSLT_LIBRARIES`` + Link to these if you need to link against the exslt library. +``LIBXSLT_XSLTPROC_EXECUTABLE`` + Contains the full path to the xsltproc executable if found. +#]=======================================================================] # use pkg-config to get the directories and then use these values # in the find_path() and find_library() calls diff --git a/Modules/FindLua.cmake b/Modules/FindLua.cmake index 68530b3532..eb3b5fb0dd 100644 --- a/Modules/FindLua.cmake +++ b/Modules/FindLua.cmake @@ -1,40 +1,41 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindLua -# ------- -# -# -# -# Locate Lua library This module defines -# -# :: -# -# LUA_FOUND - if false, do not try to link to Lua -# LUA_LIBRARIES - both lua and lualib -# LUA_INCLUDE_DIR - where to find lua.h -# LUA_VERSION_STRING - the version of Lua found -# LUA_VERSION_MAJOR - the major version of Lua -# LUA_VERSION_MINOR - the minor version of Lua -# LUA_VERSION_PATCH - the patch version of Lua -# -# -# -# Note that the expected include convention is -# -# :: -# -# #include "lua.h" -# -# and not -# -# :: -# -# #include <lua/lua.h> -# -# This is because, the lua location is not standardized and may exist in -# locations other than lua/ +#[=======================================================================[.rst: +FindLua +------- + + + +Locate Lua library This module defines + +:: + + LUA_FOUND - if false, do not try to link to Lua + LUA_LIBRARIES - both lua and lualib + LUA_INCLUDE_DIR - where to find lua.h + LUA_VERSION_STRING - the version of Lua found + LUA_VERSION_MAJOR - the major version of Lua + LUA_VERSION_MINOR - the minor version of Lua + LUA_VERSION_PATCH - the patch version of Lua + + + +Note that the expected include convention is + +:: + + #include "lua.h" + +and not + +:: + + #include <lua/lua.h> + +This is because, the lua location is not standardized and may exist in +locations other than lua/ +#]=======================================================================] cmake_policy(PUSH) # Policies apply to functions at definition-time cmake_policy(SET CMP0012 NEW) # For while(TRUE) diff --git a/Modules/FindLua50.cmake b/Modules/FindLua50.cmake index 315f301b77..aafc05664d 100644 --- a/Modules/FindLua50.cmake +++ b/Modules/FindLua50.cmake @@ -1,36 +1,37 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindLua50 -# --------- -# -# -# -# Locate Lua library This module defines -# -# :: -# -# LUA50_FOUND, if false, do not try to link to Lua -# LUA_LIBRARIES, both lua and lualib -# LUA_INCLUDE_DIR, where to find lua.h and lualib.h (and probably lauxlib.h) -# -# -# -# Note that the expected include convention is -# -# :: -# -# #include "lua.h" -# -# and not -# -# :: -# -# #include <lua/lua.h> -# -# This is because, the lua location is not standardized and may exist in -# locations other than lua/ +#[=======================================================================[.rst: +FindLua50 +--------- + + + +Locate Lua library This module defines + +:: + + LUA50_FOUND, if false, do not try to link to Lua + LUA_LIBRARIES, both lua and lualib + LUA_INCLUDE_DIR, where to find lua.h and lualib.h (and probably lauxlib.h) + + + +Note that the expected include convention is + +:: + + #include "lua.h" + +and not + +:: + + #include <lua/lua.h> + +This is because, the lua location is not standardized and may exist in +locations other than lua/ +#]=======================================================================] find_path(LUA_INCLUDE_DIR lua.h HINTS diff --git a/Modules/FindLua51.cmake b/Modules/FindLua51.cmake index f2b2322164..31eaf87bba 100644 --- a/Modules/FindLua51.cmake +++ b/Modules/FindLua51.cmake @@ -1,37 +1,38 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindLua51 -# --------- -# -# -# -# Locate Lua library This module defines -# -# :: -# -# LUA51_FOUND, if false, do not try to link to Lua -# LUA_LIBRARIES -# LUA_INCLUDE_DIR, where to find lua.h -# LUA_VERSION_STRING, the version of Lua found (since CMake 2.8.8) -# -# -# -# Note that the expected include convention is -# -# :: -# -# #include "lua.h" -# -# and not -# -# :: -# -# #include <lua/lua.h> -# -# This is because, the lua location is not standardized and may exist in -# locations other than lua/ +#[=======================================================================[.rst: +FindLua51 +--------- + + + +Locate Lua library This module defines + +:: + + LUA51_FOUND, if false, do not try to link to Lua + LUA_LIBRARIES + LUA_INCLUDE_DIR, where to find lua.h + LUA_VERSION_STRING, the version of Lua found (since CMake 2.8.8) + + + +Note that the expected include convention is + +:: + + #include "lua.h" + +and not + +:: + + #include <lua/lua.h> + +This is because, the lua location is not standardized and may exist in +locations other than lua/ +#]=======================================================================] find_path(LUA_INCLUDE_DIR lua.h HINTS diff --git a/Modules/FindMFC.cmake b/Modules/FindMFC.cmake index 3baaf3208c..9738ac56f8 100644 --- a/Modules/FindMFC.cmake +++ b/Modules/FindMFC.cmake @@ -1,20 +1,21 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindMFC -# ------- -# -# Find MFC on Windows -# -# Find the native MFC - i.e. decide if an application can link to the -# MFC libraries. -# -# :: -# -# MFC_FOUND - Was MFC support found -# -# You don't need to include anything or link anything to use it. +#[=======================================================================[.rst: +FindMFC +------- + +Find MFC on Windows + +Find the native MFC - i.e. decide if an application can link to the +MFC libraries. + +:: + + MFC_FOUND - Was MFC support found + +You don't need to include anything or link anything to use it. +#]=======================================================================] # Assume no MFC support set(MFC_FOUND "NO") diff --git a/Modules/FindMPEG.cmake b/Modules/FindMPEG.cmake index 850a57e4d1..e5a80e3894 100644 --- a/Modules/FindMPEG.cmake +++ b/Modules/FindMPEG.cmake @@ -1,26 +1,27 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindMPEG -# -------- -# -# Find the native MPEG includes and library -# -# This module defines -# -# :: -# -# MPEG_INCLUDE_DIR, where to find MPEG.h, etc. -# MPEG_LIBRARIES, the libraries required to use MPEG. -# MPEG_FOUND, If false, do not try to use MPEG. -# -# also defined, but not for general use are -# -# :: -# -# MPEG_mpeg2_LIBRARY, where to find the MPEG library. -# MPEG_vo_LIBRARY, where to find the vo library. +#[=======================================================================[.rst: +FindMPEG +-------- + +Find the native MPEG includes and library + +This module defines + +:: + + MPEG_INCLUDE_DIR, where to find MPEG.h, etc. + MPEG_LIBRARIES, the libraries required to use MPEG. + MPEG_FOUND, If false, do not try to use MPEG. + +also defined, but not for general use are + +:: + + MPEG_mpeg2_LIBRARY, where to find the MPEG library. + MPEG_vo_LIBRARY, where to find the vo library. +#]=======================================================================] find_path(MPEG_INCLUDE_DIR NAMES mpeg2.h mpeg2dec/mpeg2.h mpeg2dec/include/video_out.h) diff --git a/Modules/FindMPEG2.cmake b/Modules/FindMPEG2.cmake index f9ccd6ae19..763d86a85e 100644 --- a/Modules/FindMPEG2.cmake +++ b/Modules/FindMPEG2.cmake @@ -1,26 +1,27 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindMPEG2 -# --------- -# -# Find the native MPEG2 includes and library -# -# This module defines -# -# :: -# -# MPEG2_INCLUDE_DIR, path to mpeg2dec/mpeg2.h, etc. -# MPEG2_LIBRARIES, the libraries required to use MPEG2. -# MPEG2_FOUND, If false, do not try to use MPEG2. -# -# also defined, but not for general use are -# -# :: -# -# MPEG2_mpeg2_LIBRARY, where to find the MPEG2 library. -# MPEG2_vo_LIBRARY, where to find the vo library. +#[=======================================================================[.rst: +FindMPEG2 +--------- + +Find the native MPEG2 includes and library + +This module defines + +:: + + MPEG2_INCLUDE_DIR, path to mpeg2dec/mpeg2.h, etc. + MPEG2_LIBRARIES, the libraries required to use MPEG2. + MPEG2_FOUND, If false, do not try to use MPEG2. + +also defined, but not for general use are + +:: + + MPEG2_mpeg2_LIBRARY, where to find the MPEG2 library. + MPEG2_vo_LIBRARY, where to find the vo library. +#]=======================================================================] find_path(MPEG2_INCLUDE_DIR NAMES mpeg2.h mpeg2dec/mpeg2.h) diff --git a/Modules/FindMPI.cmake b/Modules/FindMPI.cmake index bfcd876604..90c5592ea7 100644 --- a/Modules/FindMPI.cmake +++ b/Modules/FindMPI.cmake @@ -1,247 +1,248 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindMPI -# ------- -# -# Find a Message Passing Interface (MPI) implementation. -# -# The Message Passing Interface (MPI) is a library used to write -# high-performance distributed-memory parallel applications, and is -# typically deployed on a cluster. MPI is a standard interface (defined -# by the MPI forum) for which many implementations are available. -# -# Variables for using MPI -# ^^^^^^^^^^^^^^^^^^^^^^^ -# -# The module exposes the components ``C``, ``CXX``, ``MPICXX`` and ``Fortran``. -# Each of these controls the various MPI languages to search for. -# The difference between ``CXX`` and ``MPICXX`` is that ``CXX`` refers to the -# MPI C API being usable from C++, whereas ``MPICXX`` refers to the MPI-2 C++ API -# that was removed again in MPI-3. -# -# Depending on the enabled components the following variables will be set: -# -# ``MPI_FOUND`` -# Variable indicating that MPI settings for all requested languages have been found. -# If no components are specified, this is true if MPI settings for all enabled languages -# were detected. Note that the ``MPICXX`` component does not affect this variable. -# ``MPI_VERSION`` -# Minimal version of MPI detected among the requested languages, or all enabled languages -# if no components were specified. -# -# This module will set the following variables per language in your -# project, where ``<lang>`` is one of C, CXX, or Fortran: -# -# ``MPI_<lang>_FOUND`` -# Variable indicating the MPI settings for ``<lang>`` were found and that -# simple MPI test programs compile with the provided settings. -# ``MPI_<lang>_COMPILER`` -# MPI compiler for ``<lang>`` if such a program exists. -# ``MPI_<lang>_COMPILE_OPTIONS`` -# Compilation options for MPI programs in ``<lang>``, given as a :ref:`;-list <CMake Language Lists>`. -# ``MPI_<lang>_COMPILE_DEFINITIONS`` -# Compilation definitions for MPI programs in ``<lang>``, given as a :ref:`;-list <CMake Language Lists>`. -# ``MPI_<lang>_INCLUDE_DIRS`` -# Include path(s) for MPI header. -# ``MPI_<lang>_LINK_FLAGS`` -# Linker flags for MPI programs. -# ``MPI_<lang>_LIBRARIES`` -# All libraries to link MPI programs against. -# -# Additionally, the following :prop_tgt:`IMPORTED` targets are defined: -# -# ``MPI::MPI_<lang>`` -# Target for using MPI from ``<lang>``. -# -# The following variables indicating which bindings are present will be defined: -# -# ``MPI_MPICXX_FOUND`` -# Variable indicating whether the MPI-2 C++ bindings are present (introduced in MPI-2, removed with MPI-3). -# ``MPI_Fortran_HAVE_F77_HEADER`` -# True if the Fortran 77 header ``mpif.h`` is available. -# ``MPI_Fortran_HAVE_F90_MODULE`` -# True if the Fortran 90 module ``mpi`` can be used for accessing MPI (MPI-2 and higher only). -# ``MPI_Fortran_HAVE_F08_MODULE`` -# True if the Fortran 2008 ``mpi_f08`` is available to MPI programs (MPI-3 and higher only). -# -# If possible, the MPI version will be determined by this module. The facilities to detect the MPI version -# were introduced with MPI-1.2, and therefore cannot be found for older MPI versions. -# -# ``MPI_<lang>_VERSION_MAJOR`` -# Major version of MPI implemented for ``<lang>`` by the MPI distribution. -# ``MPI_<lang>_VERSION_MINOR`` -# Minor version of MPI implemented for ``<lang>`` by the MPI distribution. -# ``MPI_<lang>_VERSION`` -# MPI version implemented for ``<lang>`` by the MPI distribution. -# -# Note that there's no variable for the C bindings being accessible through ``mpi.h``, since the MPI standards -# always have required this binding to work in both C and C++ code. -# -# For running MPI programs, the module sets the following variables -# -# ``MPIEXEC_EXECUTABLE`` -# Executable for running MPI programs, if such exists. -# ``MPIEXEC_NUMPROC_FLAG`` -# Flag to pass to ``mpiexec`` before giving it the number of processors to run on. -# ``MPIEXEC_MAX_NUMPROCS`` -# Number of MPI processors to utilize. Defaults to the number -# of processors detected on the host system. -# ``MPIEXEC_PREFLAGS`` -# Flags to pass to ``mpiexec`` directly before the executable to run. -# ``MPIEXEC_POSTFLAGS`` -# Flags to pass to ``mpiexec`` after other flags. -# -# Variables for locating MPI -# ^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# This module performs a three step search for an MPI implementation: -# -# 1. Check if the compiler has MPI support built-in. This is the case if the user passed a -# compiler wrapper as ``CMAKE_<LANG>_COMPILER`` or if they're on a Cray system. -# 2. Attempt to find an MPI compiler wrapper and determine the compiler information from it. -# 3. Try to find an MPI implementation that does not ship such a wrapper by guessing settings. -# Currently, only Microsoft MPI and MPICH2 on Windows are supported. -# -# For controlling the second step, the following variables may be set: -# -# ``MPI_<lang>_COMPILER`` -# Search for the specified compiler wrapper and use it. -# ``MPI_<lang>_COMPILER_FLAGS`` -# Flags to pass to the MPI compiler wrapper during interrogation. Some compiler wrappers -# support linking debug or tracing libraries if a specific flag is passed and this variable -# may be used to obtain them. -# ``MPI_COMPILER_FLAGS`` -# Used to initialize ``MPI_<lang>_COMPILER_FLAGS`` if no language specific flag has been given. -# Empty by default. -# ``MPI_EXECUTABLE_SUFFIX`` -# A suffix which is appended to all names that are being looked for. For instance you may set this -# to ``.mpich`` or ``.openmpi`` to prefer the one or the other on Debian and its derivatives. -# -# In order to control the guessing step, the following variable may be set: -# -# ``MPI_GUESS_LIBRARY_NAME`` -# Valid values are ``MSMPI`` and ``MPICH2``. If set, only the given library will be searched for. -# By default, ``MSMPI`` will be preferred over ``MPICH2`` if both are available. -# This also sets ``MPI_SKIP_COMPILER_WRAPPER`` to ``true``, which may be overridden. -# -# Each of the search steps may be skipped with the following control variables: -# -# ``MPI_ASSUME_NO_BUILTIN_MPI`` -# If true, the module assumes that the compiler itself does not provide an MPI implementation and -# skips to step 2. -# ``MPI_SKIP_COMPILER_WRAPPER`` -# If true, no compiler wrapper will be searched for. -# ``MPI_SKIP_GUESSING`` -# If true, the guessing step will be skipped. -# -# Additionally, the following control variable is available to change search behavior: -# -# ``MPI_CXX_SKIP_MPICXX`` -# Add some definitions that will disable the MPI-2 C++ bindings. -# Currently supported are MPICH, Open MPI, Platform MPI and derivatives thereof, -# for example MVAPICH or Intel MPI. -# -# If the find procedure fails for a variable ``MPI_<lang>_WORKS``, then the settings detected by or passed to -# the module did not work and even a simple MPI test program failed to compile. -# -# If all of these parameters were not sufficient to find the right MPI implementation, a user may -# disable the entire autodetection process by specifying both a list of libraries in ``MPI_<lang>_LIBRARIES`` -# and a list of include directories in ``MPI_<lang>_ADDITIONAL_INCLUDE_DIRS``. -# Any other variable may be set in addition to these two. The module will then validate the MPI settings and store the -# settings in the cache. -# -# Cache variables for MPI -# ^^^^^^^^^^^^^^^^^^^^^^^ -# -# The variable ``MPI_<lang>_INCLUDE_DIRS`` will be assembled from the following variables. -# For C and CXX: -# -# ``MPI_<lang>_HEADER_DIR`` -# Location of the ``mpi.h`` header on disk. -# -# For Fortran: -# -# ``MPI_Fortran_F77_HEADER_DIR`` -# Location of the Fortran 77 header ``mpif.h``, if it exists. -# ``MPI_Fortran_MODULE_DIR`` -# Location of the ``mpi`` or ``mpi_f08`` modules, if available. -# -# For all languages the following variables are additionally considered: -# -# ``MPI_<lang>_ADDITIONAL_INCLUDE_DIRS`` -# A :ref:`;-list <CMake Language Lists>` of paths needed in addition to the normal include directories. -# ``MPI_<include_name>_INCLUDE_DIR`` -# Path variables for include folders referred to by ``<include_name>``. -# ``MPI_<lang>_ADDITIONAL_INCLUDE_VARS`` -# A :ref:`;-list <CMake Language Lists>` of ``<include_name>`` that will be added to the include locations of ``<lang>``. -# -# The variable ``MPI_<lang>_LIBRARIES`` will be assembled from the following variables: -# -# ``MPI_<lib_name>_LIBRARY`` -# The location of a library called ``<lib_name>`` for use with MPI. -# ``MPI_<lang>_LIB_NAMES`` -# A :ref:`;-list <CMake Language Lists>` of ``<lib_name>`` that will be added to the include locations of ``<lang>``. -# -# Usage of mpiexec -# ^^^^^^^^^^^^^^^^ -# -# When using ``MPIEXEC_EXECUTABLE`` to execute MPI applications, you should typically -# use all of the ``MPIEXEC_EXECUTABLE`` flags as follows: -# -# :: -# -# ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} -# ${MPIEXEC_PREFLAGS} EXECUTABLE ${MPIEXEC_POSTFLAGS} ARGS -# -# where ``EXECUTABLE`` is the MPI program, and ``ARGS`` are the arguments to -# pass to the MPI program. -# -# Advanced variables for using MPI -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# The module can perform some advanced feature detections upon explicit request. -# -# **Important notice:** The following checks cannot be performed without *executing* an MPI test program. -# Consider the special considerations for the behavior of :command:`try_run` during cross compilation. -# Moreover, running an MPI program can cause additional issues, like a firewall notification on some systems. -# You should only enable these detections if you absolutely need the information. -# -# If the following variables are set to true, the respective search will be performed: -# -# ``MPI_DETERMINE_Fortran_CAPABILITIES`` -# Determine for all available Fortran bindings what the values of ``MPI_SUBARRAYS_SUPPORTED`` and -# ``MPI_ASYNC_PROTECTS_NONBLOCKING`` are and make their values available as ``MPI_Fortran_<binding>_SUBARRAYS`` -# and ``MPI_Fortran_<binding>_ASYNCPROT``, where ``<binding>`` is one of ``F77_HEADER``, ``F90_MODULE`` and -# ``F08_MODULE``. -# ``MPI_DETERMINE_LIBRARY_VERSION`` -# For each language, find the output of ``MPI_Get_library_version`` and make it available as ``MPI_<lang>_LIBRARY_VERSION``. -# This information is usually tied to the runtime component of an MPI implementation and might differ depending on ``<lang>``. -# Note that the return value is entirely implementation defined. This information might be used to identify -# the MPI vendor and for example pick the correct one of multiple third party binaries that matches the MPI vendor. -# -# Backward Compatibility -# ^^^^^^^^^^^^^^^^^^^^^^ -# -# For backward compatibility with older versions of FindMPI, these -# variables are set, but deprecated: -# -# :: -# -# MPI_COMPILER MPI_LIBRARY MPI_EXTRA_LIBRARY -# MPI_COMPILE_FLAGS MPI_INCLUDE_PATH MPI_LINK_FLAGS -# MPI_LIBRARIES -# -# In new projects, please use the ``MPI_<lang>_XXX`` equivalents. -# Additionally, the following variables are deprecated: -# -# ``MPI_<lang>_COMPILE_FLAGS`` -# Use ``MPI_<lang>_COMPILE_OPTIONS`` and ``MPI_<lang>_COMPILE_DEFINITIONS`` instead. -# ``MPI_<lang>_INCLUDE_PATH`` -# For consumption use ``MPI_<lang>_INCLUDE_DIRS`` and for specifying folders use ``MPI_<lang>_ADDITIONAL_INCLUDE_DIRS`` instead. -# ``MPIEXEC`` -# Use ``MPIEXEC_EXECUTABLE`` instead. +#[=======================================================================[.rst: +FindMPI +------- + +Find a Message Passing Interface (MPI) implementation. + +The Message Passing Interface (MPI) is a library used to write +high-performance distributed-memory parallel applications, and is +typically deployed on a cluster. MPI is a standard interface (defined +by the MPI forum) for which many implementations are available. + +Variables for using MPI +^^^^^^^^^^^^^^^^^^^^^^^ + +The module exposes the components ``C``, ``CXX``, ``MPICXX`` and ``Fortran``. +Each of these controls the various MPI languages to search for. +The difference between ``CXX`` and ``MPICXX`` is that ``CXX`` refers to the +MPI C API being usable from C++, whereas ``MPICXX`` refers to the MPI-2 C++ API +that was removed again in MPI-3. + +Depending on the enabled components the following variables will be set: + +``MPI_FOUND`` + Variable indicating that MPI settings for all requested languages have been found. + If no components are specified, this is true if MPI settings for all enabled languages + were detected. Note that the ``MPICXX`` component does not affect this variable. +``MPI_VERSION`` + Minimal version of MPI detected among the requested languages, or all enabled languages + if no components were specified. + +This module will set the following variables per language in your +project, where ``<lang>`` is one of C, CXX, or Fortran: + +``MPI_<lang>_FOUND`` + Variable indicating the MPI settings for ``<lang>`` were found and that + simple MPI test programs compile with the provided settings. +``MPI_<lang>_COMPILER`` + MPI compiler for ``<lang>`` if such a program exists. +``MPI_<lang>_COMPILE_OPTIONS`` + Compilation options for MPI programs in ``<lang>``, given as a :ref:`;-list <CMake Language Lists>`. +``MPI_<lang>_COMPILE_DEFINITIONS`` + Compilation definitions for MPI programs in ``<lang>``, given as a :ref:`;-list <CMake Language Lists>`. +``MPI_<lang>_INCLUDE_DIRS`` + Include path(s) for MPI header. +``MPI_<lang>_LINK_FLAGS`` + Linker flags for MPI programs. +``MPI_<lang>_LIBRARIES`` + All libraries to link MPI programs against. + +Additionally, the following :prop_tgt:`IMPORTED` targets are defined: + +``MPI::MPI_<lang>`` + Target for using MPI from ``<lang>``. + +The following variables indicating which bindings are present will be defined: + +``MPI_MPICXX_FOUND`` + Variable indicating whether the MPI-2 C++ bindings are present (introduced in MPI-2, removed with MPI-3). +``MPI_Fortran_HAVE_F77_HEADER`` + True if the Fortran 77 header ``mpif.h`` is available. +``MPI_Fortran_HAVE_F90_MODULE`` + True if the Fortran 90 module ``mpi`` can be used for accessing MPI (MPI-2 and higher only). +``MPI_Fortran_HAVE_F08_MODULE`` + True if the Fortran 2008 ``mpi_f08`` is available to MPI programs (MPI-3 and higher only). + +If possible, the MPI version will be determined by this module. The facilities to detect the MPI version +were introduced with MPI-1.2, and therefore cannot be found for older MPI versions. + +``MPI_<lang>_VERSION_MAJOR`` + Major version of MPI implemented for ``<lang>`` by the MPI distribution. +``MPI_<lang>_VERSION_MINOR`` + Minor version of MPI implemented for ``<lang>`` by the MPI distribution. +``MPI_<lang>_VERSION`` + MPI version implemented for ``<lang>`` by the MPI distribution. + +Note that there's no variable for the C bindings being accessible through ``mpi.h``, since the MPI standards +always have required this binding to work in both C and C++ code. + +For running MPI programs, the module sets the following variables + +``MPIEXEC_EXECUTABLE`` + Executable for running MPI programs, if such exists. +``MPIEXEC_NUMPROC_FLAG`` + Flag to pass to ``mpiexec`` before giving it the number of processors to run on. +``MPIEXEC_MAX_NUMPROCS`` + Number of MPI processors to utilize. Defaults to the number + of processors detected on the host system. +``MPIEXEC_PREFLAGS`` + Flags to pass to ``mpiexec`` directly before the executable to run. +``MPIEXEC_POSTFLAGS`` + Flags to pass to ``mpiexec`` after other flags. + +Variables for locating MPI +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +This module performs a three step search for an MPI implementation: + +1. Check if the compiler has MPI support built-in. This is the case if the user passed a + compiler wrapper as ``CMAKE_<LANG>_COMPILER`` or if they're on a Cray system. +2. Attempt to find an MPI compiler wrapper and determine the compiler information from it. +3. Try to find an MPI implementation that does not ship such a wrapper by guessing settings. + Currently, only Microsoft MPI and MPICH2 on Windows are supported. + +For controlling the second step, the following variables may be set: + +``MPI_<lang>_COMPILER`` + Search for the specified compiler wrapper and use it. +``MPI_<lang>_COMPILER_FLAGS`` + Flags to pass to the MPI compiler wrapper during interrogation. Some compiler wrappers + support linking debug or tracing libraries if a specific flag is passed and this variable + may be used to obtain them. +``MPI_COMPILER_FLAGS`` + Used to initialize ``MPI_<lang>_COMPILER_FLAGS`` if no language specific flag has been given. + Empty by default. +``MPI_EXECUTABLE_SUFFIX`` + A suffix which is appended to all names that are being looked for. For instance you may set this + to ``.mpich`` or ``.openmpi`` to prefer the one or the other on Debian and its derivatives. + +In order to control the guessing step, the following variable may be set: + +``MPI_GUESS_LIBRARY_NAME`` + Valid values are ``MSMPI`` and ``MPICH2``. If set, only the given library will be searched for. + By default, ``MSMPI`` will be preferred over ``MPICH2`` if both are available. + This also sets ``MPI_SKIP_COMPILER_WRAPPER`` to ``true``, which may be overridden. + +Each of the search steps may be skipped with the following control variables: + +``MPI_ASSUME_NO_BUILTIN_MPI`` + If true, the module assumes that the compiler itself does not provide an MPI implementation and + skips to step 2. +``MPI_SKIP_COMPILER_WRAPPER`` + If true, no compiler wrapper will be searched for. +``MPI_SKIP_GUESSING`` + If true, the guessing step will be skipped. + +Additionally, the following control variable is available to change search behavior: + +``MPI_CXX_SKIP_MPICXX`` + Add some definitions that will disable the MPI-2 C++ bindings. + Currently supported are MPICH, Open MPI, Platform MPI and derivatives thereof, + for example MVAPICH or Intel MPI. + +If the find procedure fails for a variable ``MPI_<lang>_WORKS``, then the settings detected by or passed to +the module did not work and even a simple MPI test program failed to compile. + +If all of these parameters were not sufficient to find the right MPI implementation, a user may +disable the entire autodetection process by specifying both a list of libraries in ``MPI_<lang>_LIBRARIES`` +and a list of include directories in ``MPI_<lang>_ADDITIONAL_INCLUDE_DIRS``. +Any other variable may be set in addition to these two. The module will then validate the MPI settings and store the +settings in the cache. + +Cache variables for MPI +^^^^^^^^^^^^^^^^^^^^^^^ + +The variable ``MPI_<lang>_INCLUDE_DIRS`` will be assembled from the following variables. +For C and CXX: + +``MPI_<lang>_HEADER_DIR`` + Location of the ``mpi.h`` header on disk. + +For Fortran: + +``MPI_Fortran_F77_HEADER_DIR`` + Location of the Fortran 77 header ``mpif.h``, if it exists. +``MPI_Fortran_MODULE_DIR`` + Location of the ``mpi`` or ``mpi_f08`` modules, if available. + +For all languages the following variables are additionally considered: + +``MPI_<lang>_ADDITIONAL_INCLUDE_DIRS`` + A :ref:`;-list <CMake Language Lists>` of paths needed in addition to the normal include directories. +``MPI_<include_name>_INCLUDE_DIR`` + Path variables for include folders referred to by ``<include_name>``. +``MPI_<lang>_ADDITIONAL_INCLUDE_VARS`` + A :ref:`;-list <CMake Language Lists>` of ``<include_name>`` that will be added to the include locations of ``<lang>``. + +The variable ``MPI_<lang>_LIBRARIES`` will be assembled from the following variables: + +``MPI_<lib_name>_LIBRARY`` + The location of a library called ``<lib_name>`` for use with MPI. +``MPI_<lang>_LIB_NAMES`` + A :ref:`;-list <CMake Language Lists>` of ``<lib_name>`` that will be added to the include locations of ``<lang>``. + +Usage of mpiexec +^^^^^^^^^^^^^^^^ + +When using ``MPIEXEC_EXECUTABLE`` to execute MPI applications, you should typically +use all of the ``MPIEXEC_EXECUTABLE`` flags as follows: + +:: + + ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} + ${MPIEXEC_PREFLAGS} EXECUTABLE ${MPIEXEC_POSTFLAGS} ARGS + +where ``EXECUTABLE`` is the MPI program, and ``ARGS`` are the arguments to +pass to the MPI program. + +Advanced variables for using MPI +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The module can perform some advanced feature detections upon explicit request. + +**Important notice:** The following checks cannot be performed without *executing* an MPI test program. +Consider the special considerations for the behavior of :command:`try_run` during cross compilation. +Moreover, running an MPI program can cause additional issues, like a firewall notification on some systems. +You should only enable these detections if you absolutely need the information. + +If the following variables are set to true, the respective search will be performed: + +``MPI_DETERMINE_Fortran_CAPABILITIES`` + Determine for all available Fortran bindings what the values of ``MPI_SUBARRAYS_SUPPORTED`` and + ``MPI_ASYNC_PROTECTS_NONBLOCKING`` are and make their values available as ``MPI_Fortran_<binding>_SUBARRAYS`` + and ``MPI_Fortran_<binding>_ASYNCPROT``, where ``<binding>`` is one of ``F77_HEADER``, ``F90_MODULE`` and + ``F08_MODULE``. +``MPI_DETERMINE_LIBRARY_VERSION`` + For each language, find the output of ``MPI_Get_library_version`` and make it available as ``MPI_<lang>_LIBRARY_VERSION``. + This information is usually tied to the runtime component of an MPI implementation and might differ depending on ``<lang>``. + Note that the return value is entirely implementation defined. This information might be used to identify + the MPI vendor and for example pick the correct one of multiple third party binaries that matches the MPI vendor. + +Backward Compatibility +^^^^^^^^^^^^^^^^^^^^^^ + +For backward compatibility with older versions of FindMPI, these +variables are set, but deprecated: + +:: + + MPI_COMPILER MPI_LIBRARY MPI_EXTRA_LIBRARY + MPI_COMPILE_FLAGS MPI_INCLUDE_PATH MPI_LINK_FLAGS + MPI_LIBRARIES + +In new projects, please use the ``MPI_<lang>_XXX`` equivalents. +Additionally, the following variables are deprecated: + +``MPI_<lang>_COMPILE_FLAGS`` + Use ``MPI_<lang>_COMPILE_OPTIONS`` and ``MPI_<lang>_COMPILE_DEFINITIONS`` instead. +``MPI_<lang>_INCLUDE_PATH`` + For consumption use ``MPI_<lang>_INCLUDE_DIRS`` and for specifying folders use ``MPI_<lang>_ADDITIONAL_INCLUDE_DIRS`` instead. +``MPIEXEC`` + Use ``MPIEXEC_EXECUTABLE`` instead. +#]=======================================================================] cmake_policy(PUSH) cmake_policy(SET CMP0057 NEW) # if IN_LIST diff --git a/Modules/FindMatlab.cmake b/Modules/FindMatlab.cmake index 547a33085d..8ba88b0519 100644 --- a/Modules/FindMatlab.cmake +++ b/Modules/FindMatlab.cmake @@ -1,232 +1,233 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindMatlab -# ---------- -# -# Finds Matlab or Matlab Compiler Runtime (MCR) and provides Matlab tools, -# libraries and compilers to CMake. -# -# This package primary purpose is to find the libraries associated with Matlab -# or the MCR in order to be able to build Matlab extensions (mex files). It -# can also be used: -# -# * to run specific commands in Matlab in case Matlab is available -# * for declaring Matlab unit test -# * to retrieve various information from Matlab (mex extensions, versions and -# release queries, ...) -# -# The module supports the following components: -# -# * ``MX_LIBRARY``, ``ENG_LIBRARY`` and ``MAT_LIBRARY``: respectively the ``MX``, -# ``ENG`` and ``MAT`` libraries of Matlab -# * ``ENGINE_LIBRARY``, ``DATAARRAY_LIBRARY``: respectively the ``MatlabEngine`` -# and ``MatlabDataArray`` libraries of Matlab (Matlab 2018a and later) -# * ``MAIN_PROGRAM`` the Matlab binary program. Note that this component is not -# available on the MCR version, and will yield an error if the MCR is found -# instead of the regular Matlab installation. -# * ``MEX_COMPILER`` the MEX compiler. -# * ``MCC_COMPILER`` the MCC compiler, included with the Matlab Compiler add-on. -# * ``SIMULINK`` the Simulink environment. -# -# .. note:: -# -# The version given to the :command:`find_package` directive is the Matlab -# **version**, which should not be confused with the Matlab *release* name -# (eg. `R2014`). -# The :command:`matlab_get_version_from_release_name` and -# :command:`matlab_get_release_name_from_version` provide a mapping -# between the release name and the version. -# -# The variable :variable:`Matlab_ROOT_DIR` may be specified in order to give -# the path of the desired Matlab version. Otherwise, the behaviour is platform -# specific: -# -# * Windows: The installed versions of Matlab/MCR are retrieved from the -# Windows registry -# * OS X: The installed versions of Matlab/MCR are given by the MATLAB -# default installation paths in ``/Application``. If no such application is -# found, it falls back to the one that might be accessible from the ``PATH``. -# * Unix: The desired Matlab should be accessible from the ``PATH``. This does -# not work for MCR installation and :variable:`Matlab_ROOT_DIR` should be -# specified on this platform. -# -# Additional information is provided when :variable:`MATLAB_FIND_DEBUG` is set. -# When a Matlab/MCR installation is found automatically and the ``MATLAB_VERSION`` -# is not given, the version is queried from Matlab directly (on Windows this -# may pop up a Matlab window) or from the MCR installation. -# -# The mapping of the release names and the version of Matlab is performed by -# defining pairs (name, version). The variable -# :variable:`MATLAB_ADDITIONAL_VERSIONS` may be provided before the call to -# the :command:`find_package` in order to handle additional versions. -# -# A Matlab scripts can be added to the set of tests using the -# :command:`matlab_add_unit_test`. By default, the Matlab unit test framework -# will be used (>= 2013a) to run this script, but regular ``.m`` files -# returning an exit code can be used as well (0 indicating a success). -# -# Module Input Variables -# ^^^^^^^^^^^^^^^^^^^^^^ -# -# Users or projects may set the following variables to configure the module -# behaviour: -# -# :variable:`Matlab_ROOT_DIR` -# the root of the Matlab installation. -# :variable:`MATLAB_FIND_DEBUG` -# outputs debug information -# :variable:`MATLAB_ADDITIONAL_VERSIONS` -# additional versions of Matlab for the automatic retrieval of the installed -# versions. -# -# Variables defined by the module -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# Result variables -# """""""""""""""" -# -# ``Matlab_FOUND`` -# ``TRUE`` if the Matlab installation is found, ``FALSE`` -# otherwise. All variable below are defined if Matlab is found. -# ``Matlab_ROOT_DIR`` -# the final root of the Matlab installation determined by the FindMatlab -# module. -# ``Matlab_MAIN_PROGRAM`` -# the Matlab binary program. Available only if the component ``MAIN_PROGRAM`` -# is given in the :command:`find_package` directive. -# ``Matlab_INCLUDE_DIRS`` -# the path of the Matlab libraries headers -# ``Matlab_MEX_LIBRARY`` -# library for mex, always available. -# ``Matlab_MX_LIBRARY`` -# mx library of Matlab (arrays). Available only if the component -# ``MX_LIBRARY`` has been requested. -# ``Matlab_ENG_LIBRARY`` -# Matlab engine library. Available only if the component ``ENG_LIBRARY`` -# is requested. -# ``Matlab_MAT_LIBRARY`` -# Matlab matrix library. Available only if the component ``MAT_LIBRARY`` -# is requested. -# ``Matlab_ENGINE_LIBRARY`` -# Matlab C++ engine library. Available only if the component ``ENGINE_LIBRARY`` -# is requested. -# ``Matlab_DATAARRAY_LIBRARY`` -# Matlab C++ data array library. Available only if the component ``DATAARRAY_LIBRARY`` -# is requested. -# ``Matlab_LIBRARIES`` -# the whole set of libraries of Matlab -# ``Matlab_MEX_COMPILER`` -# the mex compiler of Matlab. Currently not used. -# Available only if the component ``MEX_COMPILER`` is requested. -# ``Matlab_MCC_COMPILER`` -# the mcc compiler of Matlab. Included with the Matlab Compiler add-on. -# Available only if the component ``MCC_COMPILER`` is requested. -# -# Cached variables -# """""""""""""""" -# -# ``Matlab_MEX_EXTENSION`` -# the extension of the mex files for the current platform (given by Matlab). -# ``Matlab_ROOT_DIR`` -# the location of the root of the Matlab installation found. If this value -# is changed by the user, the result variables are recomputed. -# -# Provided macros -# ^^^^^^^^^^^^^^^ -# -# :command:`matlab_get_version_from_release_name` -# returns the version from the release name -# :command:`matlab_get_release_name_from_version` -# returns the release name from the Matlab version -# -# Provided functions -# ^^^^^^^^^^^^^^^^^^ -# -# :command:`matlab_add_mex` -# adds a target compiling a MEX file. -# :command:`matlab_add_unit_test` -# adds a Matlab unit test file as a test to the project. -# :command:`matlab_extract_all_installed_versions_from_registry` -# parses the registry for all Matlab versions. Available on Windows only. -# The part of the registry parsed is dependent on the host processor -# :command:`matlab_get_all_valid_matlab_roots_from_registry` -# returns all the possible Matlab or MCR paths, according to a previously -# given list. Only the existing/accessible paths are kept. This is mainly -# useful for the searching all possible Matlab installation. -# :command:`matlab_get_mex_suffix` -# returns the suffix to be used for the mex files -# (platform/architecture dependent) -# :command:`matlab_get_version_from_matlab_run` -# returns the version of Matlab/MCR, given the full directory of the Matlab/MCR -# installation path. -# -# -# Known issues -# ^^^^^^^^^^^^ -# -# **Symbol clash in a MEX target** -# By default, every symbols inside a MEX -# file defined with the command :command:`matlab_add_mex` have hidden -# visibility, except for the entry point. This is the default behaviour of -# the MEX compiler, which lowers the risk of symbol collision between the -# libraries shipped with Matlab, and the libraries to which the MEX file is -# linking to. This is also the default on Windows platforms. -# -# However, this is not sufficient in certain case, where for instance your -# MEX file is linking against libraries that are already loaded by Matlab, -# even if those libraries have different SONAMES. -# A possible solution is to hide the symbols of the libraries to which the -# MEX target is linking to. This can be achieved in GNU GCC compilers with -# the linker option ``-Wl,--exclude-libs,ALL``. -# -# **Tests using GPU resources** -# in case your MEX file is using the GPU and -# in order to be able to run unit tests on this MEX file, the GPU resources -# should be properly released by Matlab. A possible solution is to make -# Matlab aware of the use of the GPU resources in the session, which can be -# performed by a command such as ``D = gpuDevice()`` at the beginning of -# the test script (or via a fixture). -# -# -# Reference -# ^^^^^^^^^ -# -# .. variable:: Matlab_ROOT_DIR -# -# The root folder of the Matlab installation. If set before the call to -# :command:`find_package`, the module will look for the components in that -# path. If not set, then an automatic search of Matlab -# will be performed. If set, it should point to a valid version of Matlab. -# -# .. variable:: MATLAB_FIND_DEBUG -# -# If set, the lookup of Matlab and the intermediate configuration steps are -# outputted to the console. -# -# .. variable:: MATLAB_ADDITIONAL_VERSIONS -# -# If set, specifies additional versions of Matlab that may be looked for. -# The variable should be a list of strings, organised by pairs of release -# name and versions, such as follows:: -# -# set(MATLAB_ADDITIONAL_VERSIONS -# "release_name1=corresponding_version1" -# "release_name2=corresponding_version2" -# ... -# ) -# -# Example:: -# -# set(MATLAB_ADDITIONAL_VERSIONS -# "R2013b=8.2" -# "R2013a=8.1" -# "R2012b=8.0") -# -# The order of entries in this list matters when several versions of -# Matlab are installed. The priority is set according to the ordering in -# this list. +#[=======================================================================[.rst: +FindMatlab +---------- + +Finds Matlab or Matlab Compiler Runtime (MCR) and provides Matlab tools, +libraries and compilers to CMake. + +This package primary purpose is to find the libraries associated with Matlab +or the MCR in order to be able to build Matlab extensions (mex files). It +can also be used: + +* to run specific commands in Matlab in case Matlab is available +* for declaring Matlab unit test +* to retrieve various information from Matlab (mex extensions, versions and + release queries, ...) + +The module supports the following components: + +* ``MX_LIBRARY``, ``ENG_LIBRARY`` and ``MAT_LIBRARY``: respectively the ``MX``, + ``ENG`` and ``MAT`` libraries of Matlab +* ``ENGINE_LIBRARY``, ``DATAARRAY_LIBRARY``: respectively the ``MatlabEngine`` + and ``MatlabDataArray`` libraries of Matlab (Matlab 2018a and later) +* ``MAIN_PROGRAM`` the Matlab binary program. Note that this component is not + available on the MCR version, and will yield an error if the MCR is found + instead of the regular Matlab installation. +* ``MEX_COMPILER`` the MEX compiler. +* ``MCC_COMPILER`` the MCC compiler, included with the Matlab Compiler add-on. +* ``SIMULINK`` the Simulink environment. + +.. note:: + + The version given to the :command:`find_package` directive is the Matlab + **version**, which should not be confused with the Matlab *release* name + (eg. `R2014`). + The :command:`matlab_get_version_from_release_name` and + :command:`matlab_get_release_name_from_version` provide a mapping + between the release name and the version. + +The variable :variable:`Matlab_ROOT_DIR` may be specified in order to give +the path of the desired Matlab version. Otherwise, the behaviour is platform +specific: + +* Windows: The installed versions of Matlab/MCR are retrieved from the + Windows registry +* OS X: The installed versions of Matlab/MCR are given by the MATLAB + default installation paths in ``/Application``. If no such application is + found, it falls back to the one that might be accessible from the ``PATH``. +* Unix: The desired Matlab should be accessible from the ``PATH``. This does + not work for MCR installation and :variable:`Matlab_ROOT_DIR` should be + specified on this platform. + +Additional information is provided when :variable:`MATLAB_FIND_DEBUG` is set. +When a Matlab/MCR installation is found automatically and the ``MATLAB_VERSION`` +is not given, the version is queried from Matlab directly (on Windows this +may pop up a Matlab window) or from the MCR installation. + +The mapping of the release names and the version of Matlab is performed by +defining pairs (name, version). The variable +:variable:`MATLAB_ADDITIONAL_VERSIONS` may be provided before the call to +the :command:`find_package` in order to handle additional versions. + +A Matlab scripts can be added to the set of tests using the +:command:`matlab_add_unit_test`. By default, the Matlab unit test framework +will be used (>= 2013a) to run this script, but regular ``.m`` files +returning an exit code can be used as well (0 indicating a success). + +Module Input Variables +^^^^^^^^^^^^^^^^^^^^^^ + +Users or projects may set the following variables to configure the module +behaviour: + +:variable:`Matlab_ROOT_DIR` + the root of the Matlab installation. +:variable:`MATLAB_FIND_DEBUG` + outputs debug information +:variable:`MATLAB_ADDITIONAL_VERSIONS` + additional versions of Matlab for the automatic retrieval of the installed + versions. + +Variables defined by the module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Result variables +"""""""""""""""" + +``Matlab_FOUND`` + ``TRUE`` if the Matlab installation is found, ``FALSE`` + otherwise. All variable below are defined if Matlab is found. +``Matlab_ROOT_DIR`` + the final root of the Matlab installation determined by the FindMatlab + module. +``Matlab_MAIN_PROGRAM`` + the Matlab binary program. Available only if the component ``MAIN_PROGRAM`` + is given in the :command:`find_package` directive. +``Matlab_INCLUDE_DIRS`` + the path of the Matlab libraries headers +``Matlab_MEX_LIBRARY`` + library for mex, always available. +``Matlab_MX_LIBRARY`` + mx library of Matlab (arrays). Available only if the component + ``MX_LIBRARY`` has been requested. +``Matlab_ENG_LIBRARY`` + Matlab engine library. Available only if the component ``ENG_LIBRARY`` + is requested. +``Matlab_MAT_LIBRARY`` + Matlab matrix library. Available only if the component ``MAT_LIBRARY`` + is requested. +``Matlab_ENGINE_LIBRARY`` + Matlab C++ engine library. Available only if the component ``ENGINE_LIBRARY`` + is requested. +``Matlab_DATAARRAY_LIBRARY`` + Matlab C++ data array library. Available only if the component ``DATAARRAY_LIBRARY`` + is requested. +``Matlab_LIBRARIES`` + the whole set of libraries of Matlab +``Matlab_MEX_COMPILER`` + the mex compiler of Matlab. Currently not used. + Available only if the component ``MEX_COMPILER`` is requested. +``Matlab_MCC_COMPILER`` + the mcc compiler of Matlab. Included with the Matlab Compiler add-on. + Available only if the component ``MCC_COMPILER`` is requested. + +Cached variables +"""""""""""""""" + +``Matlab_MEX_EXTENSION`` + the extension of the mex files for the current platform (given by Matlab). +``Matlab_ROOT_DIR`` + the location of the root of the Matlab installation found. If this value + is changed by the user, the result variables are recomputed. + +Provided macros +^^^^^^^^^^^^^^^ + +:command:`matlab_get_version_from_release_name` + returns the version from the release name +:command:`matlab_get_release_name_from_version` + returns the release name from the Matlab version + +Provided functions +^^^^^^^^^^^^^^^^^^ + +:command:`matlab_add_mex` + adds a target compiling a MEX file. +:command:`matlab_add_unit_test` + adds a Matlab unit test file as a test to the project. +:command:`matlab_extract_all_installed_versions_from_registry` + parses the registry for all Matlab versions. Available on Windows only. + The part of the registry parsed is dependent on the host processor +:command:`matlab_get_all_valid_matlab_roots_from_registry` + returns all the possible Matlab or MCR paths, according to a previously + given list. Only the existing/accessible paths are kept. This is mainly + useful for the searching all possible Matlab installation. +:command:`matlab_get_mex_suffix` + returns the suffix to be used for the mex files + (platform/architecture dependent) +:command:`matlab_get_version_from_matlab_run` + returns the version of Matlab/MCR, given the full directory of the Matlab/MCR + installation path. + + +Known issues +^^^^^^^^^^^^ + +**Symbol clash in a MEX target** + By default, every symbols inside a MEX + file defined with the command :command:`matlab_add_mex` have hidden + visibility, except for the entry point. This is the default behaviour of + the MEX compiler, which lowers the risk of symbol collision between the + libraries shipped with Matlab, and the libraries to which the MEX file is + linking to. This is also the default on Windows platforms. + + However, this is not sufficient in certain case, where for instance your + MEX file is linking against libraries that are already loaded by Matlab, + even if those libraries have different SONAMES. + A possible solution is to hide the symbols of the libraries to which the + MEX target is linking to. This can be achieved in GNU GCC compilers with + the linker option ``-Wl,--exclude-libs,ALL``. + +**Tests using GPU resources** + in case your MEX file is using the GPU and + in order to be able to run unit tests on this MEX file, the GPU resources + should be properly released by Matlab. A possible solution is to make + Matlab aware of the use of the GPU resources in the session, which can be + performed by a command such as ``D = gpuDevice()`` at the beginning of + the test script (or via a fixture). + + +Reference +^^^^^^^^^ + +.. variable:: Matlab_ROOT_DIR + + The root folder of the Matlab installation. If set before the call to + :command:`find_package`, the module will look for the components in that + path. If not set, then an automatic search of Matlab + will be performed. If set, it should point to a valid version of Matlab. + +.. variable:: MATLAB_FIND_DEBUG + + If set, the lookup of Matlab and the intermediate configuration steps are + outputted to the console. + +.. variable:: MATLAB_ADDITIONAL_VERSIONS + + If set, specifies additional versions of Matlab that may be looked for. + The variable should be a list of strings, organised by pairs of release + name and versions, such as follows:: + + set(MATLAB_ADDITIONAL_VERSIONS + "release_name1=corresponding_version1" + "release_name2=corresponding_version2" + ... + ) + + Example:: + + set(MATLAB_ADDITIONAL_VERSIONS + "R2013b=8.2" + "R2013a=8.1" + "R2012b=8.0") + + The order of entries in this list matters when several versions of + Matlab are installed. The priority is set according to the ordering in + this list. +#]=======================================================================] set(_FindMatlab_SELF_DIR "${CMAKE_CURRENT_LIST_DIR}") @@ -271,10 +272,11 @@ if(NOT EXISTS "${_matlab_temporary_folder}") file(MAKE_DIRECTORY "${_matlab_temporary_folder}") endif() -#.rst: -# .. command:: matlab_get_version_from_release_name -# -# Returns the version of Matlab (17.58) from a release name (R2017k) +#[=======================================================================[.rst: +.. command:: matlab_get_version_from_release_name + + Returns the version of Matlab (17.58) from a release name (R2017k) +#]=======================================================================] macro(matlab_get_version_from_release_name release_name version_name) string(REGEX MATCHALL "${release_name}=([0-9]+\\.?[0-9]*)" _matched ${MATLAB_VERSIONS_MAPPING}) @@ -293,10 +295,11 @@ endmacro() -#.rst: -# .. command:: matlab_get_release_name_from_version -# -# Returns the release name (R2017k) from the version of Matlab (17.58) +#[=======================================================================[.rst: +.. command:: matlab_get_release_name_from_version + + Returns the release name (R2017k) from the version of Matlab (17.58) +#]=======================================================================] macro(matlab_get_release_name_from_version version release_name) set(${release_name} "") @@ -353,22 +356,23 @@ macro(matlab_get_supported_versions list_versions) endmacro() -#.rst: -# .. command:: matlab_extract_all_installed_versions_from_registry -# -# This function parses the registry and founds the Matlab versions that are -# installed. The found versions are returned in `matlab_versions`. -# Set `win64` to `TRUE` if the 64 bit version of Matlab should be looked for -# The returned list contains all versions under -# ``HKLM\\SOFTWARE\\Mathworks\\MATLAB`` and -# ``HKLM\\SOFTWARE\\Mathworks\\MATLAB Runtime`` or an empty list in case an -# error occurred (or nothing found). -# -# .. note:: -# -# Only the versions are provided. No check is made over the existence of the -# installation referenced in the registry, -# +#[=======================================================================[.rst: +.. command:: matlab_extract_all_installed_versions_from_registry + + This function parses the registry and founds the Matlab versions that are + installed. The found versions are returned in `matlab_versions`. + Set `win64` to `TRUE` if the 64 bit version of Matlab should be looked for + The returned list contains all versions under + ``HKLM\\SOFTWARE\\Mathworks\\MATLAB`` and + ``HKLM\\SOFTWARE\\Mathworks\\MATLAB Runtime`` or an empty list in case an + error occurred (or nothing found). + + .. note:: + + Only the versions are provided. No check is made over the existence of the + installation referenced in the registry, + +#]=======================================================================] function(matlab_extract_all_installed_versions_from_registry win64 matlab_versions) if(NOT CMAKE_HOST_WIN32) @@ -477,25 +481,26 @@ endmacro() -#.rst: -# .. command:: matlab_get_all_valid_matlab_roots_from_registry -# -# Populates the Matlab root with valid versions of Matlab or -# Matlab Runtime (MCR). -# The returned matlab_roots is organized in triplets -# ``(type,version_number,matlab_root_path)``, where ``type`` -# indicates either ``MATLAB`` or ``MCR``. -# -# :: -# -# matlab_get_all_valid_matlab_roots_from_registry( -# matlab_versions -# matlab_roots) -# -# ``matlab_versions`` -# the versions of each of the Matlab or MCR installations -# ``matlab_roots`` -# the location of each of the Matlab or MCR installations +#[=======================================================================[.rst: +.. command:: matlab_get_all_valid_matlab_roots_from_registry + + Populates the Matlab root with valid versions of Matlab or + Matlab Runtime (MCR). + The returned matlab_roots is organized in triplets + ``(type,version_number,matlab_root_path)``, where ``type`` + indicates either ``MATLAB`` or ``MCR``. + + :: + + matlab_get_all_valid_matlab_roots_from_registry( + matlab_versions + matlab_roots) + + ``matlab_versions`` + the versions of each of the Matlab or MCR installations + ``matlab_roots`` + the location of each of the Matlab or MCR installations +#]=======================================================================] function(matlab_get_all_valid_matlab_roots_from_registry matlab_versions matlab_roots) # The matlab_versions comes either from @@ -534,23 +539,24 @@ function(matlab_get_all_valid_matlab_roots_from_registry matlab_versions matlab_ set(${matlab_roots} ${_matlab_roots_list} PARENT_SCOPE) endfunction() -#.rst: -# .. command:: matlab_get_mex_suffix -# -# Returns the extension of the mex files (the suffixes). -# This function should not be called before the appropriate Matlab root has -# been found. -# -# :: -# -# matlab_get_mex_suffix( -# matlab_root -# mex_suffix) -# -# ``matlab_root`` -# the root of the Matlab/MCR installation -# ``mex_suffix`` -# the variable name in which the suffix will be returned. +#[=======================================================================[.rst: +.. command:: matlab_get_mex_suffix + + Returns the extension of the mex files (the suffixes). + This function should not be called before the appropriate Matlab root has + been found. + + :: + + matlab_get_mex_suffix( + matlab_root + mex_suffix) + + ``matlab_root`` + the root of the Matlab/MCR installation + ``mex_suffix`` + the variable name in which the suffix will be returned. +#]=======================================================================] function(matlab_get_mex_suffix matlab_root mex_suffix) # todo setup the extension properly. Currently I do not know if this is @@ -636,23 +642,24 @@ endfunction() -#.rst: -# .. command:: matlab_get_version_from_matlab_run -# -# This function runs Matlab program specified on arguments and extracts its -# version. If the path provided for the Matlab installation points to an MCR -# installation, the version is extracted from the installed files. -# -# :: -# -# matlab_get_version_from_matlab_run( -# matlab_binary_path -# matlab_list_versions) -# -# ``matlab_binary_path`` -# the location of the `matlab` binary executable -# ``matlab_list_versions`` -# the version extracted from Matlab +#[=======================================================================[.rst: +.. command:: matlab_get_version_from_matlab_run + + This function runs Matlab program specified on arguments and extracts its + version. If the path provided for the Matlab installation points to an MCR + installation, the version is extracted from the installed files. + + :: + + matlab_get_version_from_matlab_run( + matlab_binary_path + matlab_list_versions) + + ``matlab_binary_path`` + the location of the `matlab` binary executable + ``matlab_list_versions`` + the version extracted from Matlab +#]=======================================================================] function(matlab_get_version_from_matlab_run matlab_binary_program matlab_list_versions) set(${matlab_list_versions} "" PARENT_SCOPE) @@ -754,76 +761,77 @@ function(matlab_get_version_from_matlab_run matlab_binary_program matlab_list_ve endfunction() -#.rst: -# .. command:: matlab_add_unit_test -# -# Adds a Matlab unit test to the test set of cmake/ctest. -# This command requires the component ``MAIN_PROGRAM`` and hence is not -# available for an MCR installation. -# -# The unit test uses the Matlab unittest framework (default, available -# starting Matlab 2013b+) except if the option ``NO_UNITTEST_FRAMEWORK`` -# is given. -# -# The function expects one Matlab test script file to be given. -# In the case ``NO_UNITTEST_FRAMEWORK`` is given, the unittest script file -# should contain the script to be run, plus an exit command with the exit -# value. This exit value will be passed to the ctest framework (0 success, -# non 0 failure). Additional arguments accepted by :command:`add_test` can be -# passed through ``TEST_ARGS`` (eg. ``CONFIGURATION <config> ...``). -# -# :: -# -# matlab_add_unit_test( -# NAME <name> -# UNITTEST_FILE matlab_file_containing_unittest.m -# [CUSTOM_TEST_COMMAND matlab_command_to_run_as_test] -# [UNITTEST_PRECOMMAND matlab_command_to_run] -# [TIMEOUT timeout] -# [ADDITIONAL_PATH path1 [path2 ...]] -# [MATLAB_ADDITIONAL_STARTUP_OPTIONS option1 [option2 ...]] -# [TEST_ARGS arg1 [arg2 ...]] -# [NO_UNITTEST_FRAMEWORK] -# ) -# -# The function arguments are: -# -# ``NAME`` -# name of the unittest in ctest. -# ``UNITTEST_FILE`` -# the matlab unittest file. Its path will be automatically -# added to the Matlab path. -# ``CUSTOM_TEST_COMMAND`` -# Matlab script command to run as the test. -# If this is not set, then the following is run: -# ``runtests('matlab_file_name'), exit(max([ans(1,:).Failed]))`` -# where ``matlab_file_name`` is the ``UNITTEST_FILE`` without the extension. -# ``UNITTEST_PRECOMMAND`` -# Matlab script command to be ran before the file -# containing the test (eg. GPU device initialisation based on CMake -# variables). -# ``TIMEOUT`` -# the test timeout in seconds. Defaults to 180 seconds as the -# Matlab unit test may hang. -# ``ADDITIONAL_PATH`` -# a list of paths to add to the Matlab path prior to -# running the unit test. -# ``MATLAB_ADDITIONAL_STARTUP_OPTIONS`` -# a list of additional option in order -# to run Matlab from the command line. -# ``-nosplash -nodesktop -nodisplay`` are always added. -# ``TEST_ARGS`` -# Additional options provided to the add_test command. These -# options are added to the default options (eg. "CONFIGURATIONS Release") -# ``NO_UNITTEST_FRAMEWORK`` -# when set, indicates that the test should not -# use the unittest framework of Matlab (available for versions >= R2013a). -# ``WORKING_DIRECTORY`` -# This will be the working directory for the test. If specified it will -# also be the output directory used for the log file of the test run. -# If not specified the temporary directory ``${CMAKE_BINARY_DIR}/Matlab`` will -# be used as the working directory and the log location. -# +#[=======================================================================[.rst: +.. command:: matlab_add_unit_test + + Adds a Matlab unit test to the test set of cmake/ctest. + This command requires the component ``MAIN_PROGRAM`` and hence is not + available for an MCR installation. + + The unit test uses the Matlab unittest framework (default, available + starting Matlab 2013b+) except if the option ``NO_UNITTEST_FRAMEWORK`` + is given. + + The function expects one Matlab test script file to be given. + In the case ``NO_UNITTEST_FRAMEWORK`` is given, the unittest script file + should contain the script to be run, plus an exit command with the exit + value. This exit value will be passed to the ctest framework (0 success, + non 0 failure). Additional arguments accepted by :command:`add_test` can be + passed through ``TEST_ARGS`` (eg. ``CONFIGURATION <config> ...``). + + :: + + matlab_add_unit_test( + NAME <name> + UNITTEST_FILE matlab_file_containing_unittest.m + [CUSTOM_TEST_COMMAND matlab_command_to_run_as_test] + [UNITTEST_PRECOMMAND matlab_command_to_run] + [TIMEOUT timeout] + [ADDITIONAL_PATH path1 [path2 ...]] + [MATLAB_ADDITIONAL_STARTUP_OPTIONS option1 [option2 ...]] + [TEST_ARGS arg1 [arg2 ...]] + [NO_UNITTEST_FRAMEWORK] + ) + + The function arguments are: + + ``NAME`` + name of the unittest in ctest. + ``UNITTEST_FILE`` + the matlab unittest file. Its path will be automatically + added to the Matlab path. + ``CUSTOM_TEST_COMMAND`` + Matlab script command to run as the test. + If this is not set, then the following is run: + ``runtests('matlab_file_name'), exit(max([ans(1,:).Failed]))`` + where ``matlab_file_name`` is the ``UNITTEST_FILE`` without the extension. + ``UNITTEST_PRECOMMAND`` + Matlab script command to be ran before the file + containing the test (eg. GPU device initialisation based on CMake + variables). + ``TIMEOUT`` + the test timeout in seconds. Defaults to 180 seconds as the + Matlab unit test may hang. + ``ADDITIONAL_PATH`` + a list of paths to add to the Matlab path prior to + running the unit test. + ``MATLAB_ADDITIONAL_STARTUP_OPTIONS`` + a list of additional option in order + to run Matlab from the command line. + ``-nosplash -nodesktop -nodisplay`` are always added. + ``TEST_ARGS`` + Additional options provided to the add_test command. These + options are added to the default options (eg. "CONFIGURATIONS Release") + ``NO_UNITTEST_FRAMEWORK`` + when set, indicates that the test should not + use the unittest framework of Matlab (available for versions >= R2013a). + ``WORKING_DIRECTORY`` + This will be the working directory for the test. If specified it will + also be the output directory used for the log file of the test run. + If not specified the temporary directory ``${CMAKE_BINARY_DIR}/Matlab`` will + be used as the working directory and the log location. + +#]=======================================================================] function(matlab_add_unit_test) if(NOT Matlab_MAIN_PROGRAM) @@ -862,58 +870,59 @@ function(matlab_add_unit_test) endfunction() -#.rst: -# .. command:: matlab_add_mex -# -# Adds a Matlab MEX target. -# This commands compiles the given sources with the current tool-chain in -# order to produce a MEX file. The final name of the produced output may be -# specified, as well as additional link libraries, and a documentation entry -# for the MEX file. Remaining arguments of the call are passed to the -# :command:`add_library` or :command:`add_executable` command. -# -# :: -# -# matlab_add_mex( -# NAME <name> -# [EXECUTABLE | MODULE | SHARED] -# SRC src1 [src2 ...] -# [OUTPUT_NAME output_name] -# [DOCUMENTATION file.txt] -# [LINK_TO target1 target2 ...] -# [...] -# ) -# -# ``NAME`` -# name of the target. -# ``SRC`` -# list of source files. -# ``LINK_TO`` -# a list of additional link dependencies. The target links to ``libmex`` -# by default. If ``Matlab_MX_LIBRARY`` is defined, it also -# links to ``libmx``. -# ``OUTPUT_NAME`` -# if given, overrides the default name. The default name is -# the name of the target without any prefix and -# with ``Matlab_MEX_EXTENSION`` suffix. -# ``DOCUMENTATION`` -# if given, the file ``file.txt`` will be considered as -# being the documentation file for the MEX file. This file is copied into -# the same folder without any processing, with the same name as the final -# mex file, and with extension `.m`. In that case, typing ``help <name>`` -# in Matlab prints the documentation contained in this file. -# ``MODULE`` or ``SHARED`` may be given to specify the type of library to be -# created. ``EXECUTABLE`` may be given to create an executable instead of -# a library. If no type is given explicitly, the type is ``SHARED``. -# -# The documentation file is not processed and should be in the following -# format: -# -# :: -# -# % This is the documentation -# function ret = mex_target_output_name(input1) -# +#[=======================================================================[.rst: +.. command:: matlab_add_mex + + Adds a Matlab MEX target. + This commands compiles the given sources with the current tool-chain in + order to produce a MEX file. The final name of the produced output may be + specified, as well as additional link libraries, and a documentation entry + for the MEX file. Remaining arguments of the call are passed to the + :command:`add_library` or :command:`add_executable` command. + + :: + + matlab_add_mex( + NAME <name> + [EXECUTABLE | MODULE | SHARED] + SRC src1 [src2 ...] + [OUTPUT_NAME output_name] + [DOCUMENTATION file.txt] + [LINK_TO target1 target2 ...] + [...] + ) + + ``NAME`` + name of the target. + ``SRC`` + list of source files. + ``LINK_TO`` + a list of additional link dependencies. The target links to ``libmex`` + by default. If ``Matlab_MX_LIBRARY`` is defined, it also + links to ``libmx``. + ``OUTPUT_NAME`` + if given, overrides the default name. The default name is + the name of the target without any prefix and + with ``Matlab_MEX_EXTENSION`` suffix. + ``DOCUMENTATION`` + if given, the file ``file.txt`` will be considered as + being the documentation file for the MEX file. This file is copied into + the same folder without any processing, with the same name as the final + mex file, and with extension `.m`. In that case, typing ``help <name>`` + in Matlab prints the documentation contained in this file. + ``MODULE`` or ``SHARED`` may be given to specify the type of library to be + created. ``EXECUTABLE`` may be given to create an executable instead of + a library. If no type is given explicitly, the type is ``SHARED``. + + The documentation file is not processed and should be in the following + format: + + :: + + % This is the documentation + function ret = mex_target_output_name(input1) + +#]=======================================================================] function(matlab_add_mex) if(NOT WIN32) diff --git a/Modules/FindMotif.cmake b/Modules/FindMotif.cmake index 7304d957cb..4f7080a44c 100644 --- a/Modules/FindMotif.cmake +++ b/Modules/FindMotif.cmake @@ -1,19 +1,20 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindMotif -# --------- -# -# Try to find Motif (or lesstif) -# -# Once done this will define: -# -# :: -# -# MOTIF_FOUND - system has MOTIF -# MOTIF_INCLUDE_DIR - include paths to use Motif -# MOTIF_LIBRARIES - Link these to use Motif +#[=======================================================================[.rst: +FindMotif +--------- + +Try to find Motif (or lesstif) + +Once done this will define: + +:: + + MOTIF_FOUND - system has MOTIF + MOTIF_INCLUDE_DIR - include paths to use Motif + MOTIF_LIBRARIES - Link these to use Motif +#]=======================================================================] set(MOTIF_FOUND 0) diff --git a/Modules/FindOpenAL.cmake b/Modules/FindOpenAL.cmake index 7521d51211..dbd796101f 100644 --- a/Modules/FindOpenAL.cmake +++ b/Modules/FindOpenAL.cmake @@ -1,21 +1,22 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindOpenAL -# ---------- -# -# -# -# Locate OpenAL This module defines OPENAL_LIBRARY OPENAL_FOUND, if -# false, do not try to link to OpenAL OPENAL_INCLUDE_DIR, where to find -# the headers -# -# $OPENALDIR is an environment variable that would correspond to the -# ./configure --prefix=$OPENALDIR used in building OpenAL. -# -# Created by Eric Wing. This was influenced by the FindSDL.cmake -# module. +#[=======================================================================[.rst: +FindOpenAL +---------- + + + +Locate OpenAL This module defines OPENAL_LIBRARY OPENAL_FOUND, if +false, do not try to link to OpenAL OPENAL_INCLUDE_DIR, where to find +the headers + +$OPENALDIR is an environment variable that would correspond to the +./configure --prefix=$OPENALDIR used in building OpenAL. + +Created by Eric Wing. This was influenced by the FindSDL.cmake +module. +#]=======================================================================] # This makes the presumption that you are include al.h like # #include "al.h" diff --git a/Modules/FindOpenCL.cmake b/Modules/FindOpenCL.cmake index fe162b49b5..79c0382d35 100644 --- a/Modules/FindOpenCL.cmake +++ b/Modules/FindOpenCL.cmake @@ -1,35 +1,36 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindOpenCL -# ---------- -# -# Try to find OpenCL -# -# IMPORTED Targets -# ^^^^^^^^^^^^^^^^ -# -# This module defines :prop_tgt:`IMPORTED` target ``OpenCL::OpenCL``, if -# OpenCL has been found. -# -# Result Variables -# ^^^^^^^^^^^^^^^^ -# -# This module defines the following variables:: -# -# OpenCL_FOUND - True if OpenCL was found -# OpenCL_INCLUDE_DIRS - include directories for OpenCL -# OpenCL_LIBRARIES - link against this library to use OpenCL -# OpenCL_VERSION_STRING - Highest supported OpenCL version (eg. 1.2) -# OpenCL_VERSION_MAJOR - The major version of the OpenCL implementation -# OpenCL_VERSION_MINOR - The minor version of the OpenCL implementation -# -# The module will also define two cache variables:: -# -# OpenCL_INCLUDE_DIR - the OpenCL include directory -# OpenCL_LIBRARY - the path to the OpenCL library -# +#[=======================================================================[.rst: +FindOpenCL +---------- + +Try to find OpenCL + +IMPORTED Targets +^^^^^^^^^^^^^^^^ + +This module defines :prop_tgt:`IMPORTED` target ``OpenCL::OpenCL``, if +OpenCL has been found. + +Result Variables +^^^^^^^^^^^^^^^^ + +This module defines the following variables:: + + OpenCL_FOUND - True if OpenCL was found + OpenCL_INCLUDE_DIRS - include directories for OpenCL + OpenCL_LIBRARIES - link against this library to use OpenCL + OpenCL_VERSION_STRING - Highest supported OpenCL version (eg. 1.2) + OpenCL_VERSION_MAJOR - The major version of the OpenCL implementation + OpenCL_VERSION_MINOR - The minor version of the OpenCL implementation + +The module will also define two cache variables:: + + OpenCL_INCLUDE_DIR - the OpenCL include directory + OpenCL_LIBRARY - the path to the OpenCL library + +#]=======================================================================] function(_FIND_OPENCL_VERSION) include(CheckSymbolExists) diff --git a/Modules/FindOpenMP.cmake b/Modules/FindOpenMP.cmake index df0bbc433d..af45d8e689 100644 --- a/Modules/FindOpenMP.cmake +++ b/Modules/FindOpenMP.cmake @@ -1,78 +1,79 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindOpenMP -# ---------- -# -# Finds OpenMP support -# -# This module can be used to detect OpenMP support in a compiler. If -# the compiler supports OpenMP, the flags required to compile with -# OpenMP support are returned in variables for the different languages. -# The variables may be empty if the compiler does not need a special -# flag to support OpenMP. -# -# Variables -# ^^^^^^^^^ -# -# The module exposes the components ``C``, ``CXX``, and ``Fortran``. -# Each of these controls the various languages to search OpenMP support for. -# -# Depending on the enabled components the following variables will be set: -# -# ``OpenMP_FOUND`` -# Variable indicating that OpenMP flags for all requested languages have been found. -# If no components are specified, this is true if OpenMP settings for all enabled languages -# were detected. -# ``OpenMP_VERSION`` -# Minimal version of the OpenMP standard detected among the requested languages, -# or all enabled languages if no components were specified. -# -# This module will set the following variables per language in your -# project, where ``<lang>`` is one of C, CXX, or Fortran: -# -# ``OpenMP_<lang>_FOUND`` -# Variable indicating if OpenMP support for ``<lang>`` was detected. -# ``OpenMP_<lang>_FLAGS`` -# OpenMP compiler flags for ``<lang>``, separated by spaces. -# -# For linking with OpenMP code written in ``<lang>``, the following -# variables are provided: -# -# ``OpenMP_<lang>_LIB_NAMES`` -# :ref:`;-list <CMake Language Lists>` of libraries for OpenMP programs for ``<lang>``. -# ``OpenMP_<libname>_LIBRARY`` -# Location of the individual libraries needed for OpenMP support in ``<lang>``. -# ``OpenMP_<lang>_LIBRARIES`` -# A list of libraries needed to link with OpenMP code written in ``<lang>``. -# -# Additionally, the module provides :prop_tgt:`IMPORTED` targets: -# -# ``OpenMP::OpenMP_<lang>`` -# Target for using OpenMP from ``<lang>``. -# -# Specifically for Fortran, the module sets the following variables: -# -# ``OpenMP_Fortran_HAVE_OMPLIB_HEADER`` -# Boolean indicating if OpenMP is accessible through ``omp_lib.h``. -# ``OpenMP_Fortran_HAVE_OMPLIB_MODULE`` -# Boolean indicating if OpenMP is accessible through the ``omp_lib`` Fortran module. -# -# The module will also try to provide the OpenMP version variables: -# -# ``OpenMP_<lang>_SPEC_DATE`` -# Date of the OpenMP specification implemented by the ``<lang>`` compiler. -# ``OpenMP_<lang>_VERSION_MAJOR`` -# Major version of OpenMP implemented by the ``<lang>`` compiler. -# ``OpenMP_<lang>_VERSION_MINOR`` -# Minor version of OpenMP implemented by the ``<lang>`` compiler. -# ``OpenMP_<lang>_VERSION`` -# OpenMP version implemented by the ``<lang>`` compiler. -# -# The specification date is formatted as given in the OpenMP standard: -# ``yyyymm`` where ``yyyy`` and ``mm`` represents the year and month of -# the OpenMP specification implemented by the ``<lang>`` compiler. +#[=======================================================================[.rst: +FindOpenMP +---------- + +Finds OpenMP support + +This module can be used to detect OpenMP support in a compiler. If +the compiler supports OpenMP, the flags required to compile with +OpenMP support are returned in variables for the different languages. +The variables may be empty if the compiler does not need a special +flag to support OpenMP. + +Variables +^^^^^^^^^ + +The module exposes the components ``C``, ``CXX``, and ``Fortran``. +Each of these controls the various languages to search OpenMP support for. + +Depending on the enabled components the following variables will be set: + +``OpenMP_FOUND`` + Variable indicating that OpenMP flags for all requested languages have been found. + If no components are specified, this is true if OpenMP settings for all enabled languages + were detected. +``OpenMP_VERSION`` + Minimal version of the OpenMP standard detected among the requested languages, + or all enabled languages if no components were specified. + +This module will set the following variables per language in your +project, where ``<lang>`` is one of C, CXX, or Fortran: + +``OpenMP_<lang>_FOUND`` + Variable indicating if OpenMP support for ``<lang>`` was detected. +``OpenMP_<lang>_FLAGS`` + OpenMP compiler flags for ``<lang>``, separated by spaces. + +For linking with OpenMP code written in ``<lang>``, the following +variables are provided: + +``OpenMP_<lang>_LIB_NAMES`` + :ref:`;-list <CMake Language Lists>` of libraries for OpenMP programs for ``<lang>``. +``OpenMP_<libname>_LIBRARY`` + Location of the individual libraries needed for OpenMP support in ``<lang>``. +``OpenMP_<lang>_LIBRARIES`` + A list of libraries needed to link with OpenMP code written in ``<lang>``. + +Additionally, the module provides :prop_tgt:`IMPORTED` targets: + +``OpenMP::OpenMP_<lang>`` + Target for using OpenMP from ``<lang>``. + +Specifically for Fortran, the module sets the following variables: + +``OpenMP_Fortran_HAVE_OMPLIB_HEADER`` + Boolean indicating if OpenMP is accessible through ``omp_lib.h``. +``OpenMP_Fortran_HAVE_OMPLIB_MODULE`` + Boolean indicating if OpenMP is accessible through the ``omp_lib`` Fortran module. + +The module will also try to provide the OpenMP version variables: + +``OpenMP_<lang>_SPEC_DATE`` + Date of the OpenMP specification implemented by the ``<lang>`` compiler. +``OpenMP_<lang>_VERSION_MAJOR`` + Major version of OpenMP implemented by the ``<lang>`` compiler. +``OpenMP_<lang>_VERSION_MINOR`` + Minor version of OpenMP implemented by the ``<lang>`` compiler. +``OpenMP_<lang>_VERSION`` + OpenMP version implemented by the ``<lang>`` compiler. + +The specification date is formatted as given in the OpenMP standard: +``yyyymm`` where ``yyyy`` and ``mm`` represents the year and month of +the OpenMP specification implemented by the ``<lang>`` compiler. +#]=======================================================================] cmake_policy(PUSH) cmake_policy(SET CMP0012 NEW) # if() recognizes numbers and booleans diff --git a/Modules/FindOpenSSL.cmake b/Modules/FindOpenSSL.cmake index d5cd8bc02d..5f947fe544 100644 --- a/Modules/FindOpenSSL.cmake +++ b/Modules/FindOpenSSL.cmake @@ -1,53 +1,54 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindOpenSSL -# ----------- -# -# Find the OpenSSL encryption library. -# -# Optional COMPONENTS -# ^^^^^^^^^^^^^^^^^^^ -# -# This module supports two optional COMPONENTS: ``Crypto`` and ``SSL``. Both -# components have associated imported targets, as described below. -# -# Imported Targets -# ^^^^^^^^^^^^^^^^ -# -# This module defines the following :prop_tgt:`IMPORTED` targets: -# -# ``OpenSSL::SSL`` -# The OpenSSL ``ssl`` library, if found. -# ``OpenSSL::Crypto`` -# The OpenSSL ``crypto`` library, if found. -# -# Result Variables -# ^^^^^^^^^^^^^^^^ -# -# This module will set the following variables in your project: -# -# ``OPENSSL_FOUND`` -# System has the OpenSSL library. If no components are requested it only -# requires the crypto library. -# ``OPENSSL_INCLUDE_DIR`` -# The OpenSSL include directory. -# ``OPENSSL_CRYPTO_LIBRARY`` -# The OpenSSL crypto library. -# ``OPENSSL_SSL_LIBRARY`` -# The OpenSSL SSL library. -# ``OPENSSL_LIBRARIES`` -# All OpenSSL libraries. -# ``OPENSSL_VERSION`` -# This is set to ``$major.$minor.$revision$patch`` (e.g. ``0.9.8s``). -# -# Hints -# ^^^^^ -# -# Set ``OPENSSL_ROOT_DIR`` to the root directory of an OpenSSL installation. -# Set ``OPENSSL_USE_STATIC_LIBS`` to ``TRUE`` to look for static libraries. -# Set ``OPENSSL_MSVC_STATIC_RT`` set ``TRUE`` to choose the MT version of the lib. +#[=======================================================================[.rst: +FindOpenSSL +----------- + +Find the OpenSSL encryption library. + +Optional COMPONENTS +^^^^^^^^^^^^^^^^^^^ + +This module supports two optional COMPONENTS: ``Crypto`` and ``SSL``. Both +components have associated imported targets, as described below. + +Imported Targets +^^^^^^^^^^^^^^^^ + +This module defines the following :prop_tgt:`IMPORTED` targets: + +``OpenSSL::SSL`` + The OpenSSL ``ssl`` library, if found. +``OpenSSL::Crypto`` + The OpenSSL ``crypto`` library, if found. + +Result Variables +^^^^^^^^^^^^^^^^ + +This module will set the following variables in your project: + +``OPENSSL_FOUND`` + System has the OpenSSL library. If no components are requested it only + requires the crypto library. +``OPENSSL_INCLUDE_DIR`` + The OpenSSL include directory. +``OPENSSL_CRYPTO_LIBRARY`` + The OpenSSL crypto library. +``OPENSSL_SSL_LIBRARY`` + The OpenSSL SSL library. +``OPENSSL_LIBRARIES`` + All OpenSSL libraries. +``OPENSSL_VERSION`` + This is set to ``$major.$minor.$revision$patch`` (e.g. ``0.9.8s``). + +Hints +^^^^^ + +Set ``OPENSSL_ROOT_DIR`` to the root directory of an OpenSSL installation. +Set ``OPENSSL_USE_STATIC_LIBS`` to ``TRUE`` to look for static libraries. +Set ``OPENSSL_MSVC_STATIC_RT`` set ``TRUE`` to choose the MT version of the lib. +#]=======================================================================] if (UNIX) find_package(PkgConfig QUIET) diff --git a/Modules/FindOpenSceneGraph.cmake b/Modules/FindOpenSceneGraph.cmake index 425aa45815..6f7d3c8364 100644 --- a/Modules/FindOpenSceneGraph.cmake +++ b/Modules/FindOpenSceneGraph.cmake @@ -1,102 +1,103 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindOpenSceneGraph -# ------------------ -# -# Find OpenSceneGraph -# -# This module searches for the OpenSceneGraph core "osg" library as well -# as OpenThreads, and whatever additional COMPONENTS (nodekits) that you -# specify. -# -# :: -# -# See http://www.openscenegraph.org -# -# -# -# NOTE: To use this module effectively you must either require CMake >= -# 2.6.3 with cmake_minimum_required(VERSION 2.6.3) or download and place -# FindOpenThreads.cmake, Findosg_functions.cmake, Findosg.cmake, and -# Find<etc>.cmake files into your CMAKE_MODULE_PATH. -# -# ================================== -# -# This module accepts the following variables (note mixed case) -# -# :: -# -# OpenSceneGraph_DEBUG - Enable debugging output -# -# -# -# :: -# -# OpenSceneGraph_MARK_AS_ADVANCED - Mark cache variables as advanced -# automatically -# -# -# -# The following environment variables are also respected for finding the -# OSG and it's various components. CMAKE_PREFIX_PATH can also be used -# for this (see find_library() CMake documentation). -# -# ``<MODULE>_DIR`` -# (where MODULE is of the form "OSGVOLUME" and there is a FindosgVolume.cmake file) -# ``OSG_DIR`` -# .. -# ``OSGDIR`` -# .. -# ``OSG_ROOT`` -# .. -# -# -# [CMake 2.8.10]: The CMake variable OSG_DIR can now be used as well to -# influence detection, instead of needing to specify an environment -# variable. -# -# This module defines the following output variables: -# -# :: -# -# OPENSCENEGRAPH_FOUND - Was the OSG and all of the specified components found? -# -# -# -# :: -# -# OPENSCENEGRAPH_VERSION - The version of the OSG which was found -# -# -# -# :: -# -# OPENSCENEGRAPH_INCLUDE_DIRS - Where to find the headers -# -# -# -# :: -# -# OPENSCENEGRAPH_LIBRARIES - The OSG libraries -# -# -# -# ================================== Example Usage: -# -# :: -# -# find_package(OpenSceneGraph 2.0.0 REQUIRED osgDB osgUtil) -# # libOpenThreads & libosg automatically searched -# include_directories(${OPENSCENEGRAPH_INCLUDE_DIRS}) -# -# -# -# :: -# -# add_executable(foo foo.cc) -# target_link_libraries(foo ${OPENSCENEGRAPH_LIBRARIES}) +#[=======================================================================[.rst: +FindOpenSceneGraph +------------------ + +Find OpenSceneGraph + +This module searches for the OpenSceneGraph core "osg" library as well +as OpenThreads, and whatever additional COMPONENTS (nodekits) that you +specify. + +:: + + See http://www.openscenegraph.org + + + +NOTE: To use this module effectively you must either require CMake >= +2.6.3 with cmake_minimum_required(VERSION 2.6.3) or download and place +FindOpenThreads.cmake, Findosg_functions.cmake, Findosg.cmake, and +Find<etc>.cmake files into your CMAKE_MODULE_PATH. + +================================== + +This module accepts the following variables (note mixed case) + +:: + + OpenSceneGraph_DEBUG - Enable debugging output + + + +:: + + OpenSceneGraph_MARK_AS_ADVANCED - Mark cache variables as advanced + automatically + + + +The following environment variables are also respected for finding the +OSG and it's various components. CMAKE_PREFIX_PATH can also be used +for this (see find_library() CMake documentation). + +``<MODULE>_DIR`` + (where MODULE is of the form "OSGVOLUME" and there is a FindosgVolume.cmake file) +``OSG_DIR`` + .. +``OSGDIR`` + .. +``OSG_ROOT`` + .. + + +[CMake 2.8.10]: The CMake variable OSG_DIR can now be used as well to +influence detection, instead of needing to specify an environment +variable. + +This module defines the following output variables: + +:: + + OPENSCENEGRAPH_FOUND - Was the OSG and all of the specified components found? + + + +:: + + OPENSCENEGRAPH_VERSION - The version of the OSG which was found + + + +:: + + OPENSCENEGRAPH_INCLUDE_DIRS - Where to find the headers + + + +:: + + OPENSCENEGRAPH_LIBRARIES - The OSG libraries + + + +================================== Example Usage: + +:: + + find_package(OpenSceneGraph 2.0.0 REQUIRED osgDB osgUtil) + # libOpenThreads & libosg automatically searched + include_directories(${OPENSCENEGRAPH_INCLUDE_DIRS}) + + + +:: + + add_executable(foo foo.cc) + target_link_libraries(foo ${OPENSCENEGRAPH_LIBRARIES}) +#]=======================================================================] # # Naming convention: diff --git a/Modules/FindOpenThreads.cmake b/Modules/FindOpenThreads.cmake index 91545e0ea5..bc45eea7b3 100644 --- a/Modules/FindOpenThreads.cmake +++ b/Modules/FindOpenThreads.cmake @@ -1,30 +1,31 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindOpenThreads -# --------------- -# -# -# -# OpenThreads is a C++ based threading library. Its largest userbase -# seems to OpenSceneGraph so you might notice I accept OSGDIR as an -# environment path. I consider this part of the Findosg* suite used to -# find OpenSceneGraph components. Each component is separate and you -# must opt in to each module. -# -# Locate OpenThreads This module defines OPENTHREADS_LIBRARY -# OPENTHREADS_FOUND, if false, do not try to link to OpenThreads -# OPENTHREADS_INCLUDE_DIR, where to find the headers -# -# $OPENTHREADS_DIR is an environment variable that would correspond to -# the ./configure --prefix=$OPENTHREADS_DIR used in building osg. -# -# [CMake 2.8.10]: The CMake variables OPENTHREADS_DIR or OSG_DIR can now -# be used as well to influence detection, instead of needing to specify -# an environment variable. -# -# Created by Eric Wing. +#[=======================================================================[.rst: +FindOpenThreads +--------------- + + + +OpenThreads is a C++ based threading library. Its largest userbase +seems to OpenSceneGraph so you might notice I accept OSGDIR as an +environment path. I consider this part of the Findosg* suite used to +find OpenSceneGraph components. Each component is separate and you +must opt in to each module. + +Locate OpenThreads This module defines OPENTHREADS_LIBRARY +OPENTHREADS_FOUND, if false, do not try to link to OpenThreads +OPENTHREADS_INCLUDE_DIR, where to find the headers + +$OPENTHREADS_DIR is an environment variable that would correspond to +the ./configure --prefix=$OPENTHREADS_DIR used in building osg. + +[CMake 2.8.10]: The CMake variables OPENTHREADS_DIR or OSG_DIR can now +be used as well to influence detection, instead of needing to specify +an environment variable. + +Created by Eric Wing. +#]=======================================================================] # Header files are presumed to be included like # #include <OpenThreads/Thread> diff --git a/Modules/FindPHP4.cmake b/Modules/FindPHP4.cmake index 426453bd4f..34b4adb013 100644 --- a/Modules/FindPHP4.cmake +++ b/Modules/FindPHP4.cmake @@ -1,20 +1,21 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindPHP4 -# -------- -# -# Find PHP4 -# -# This module finds if PHP4 is installed and determines where the -# include files and libraries are. It also determines what the name of -# the library is. This code sets the following variables: -# -# :: -# -# PHP4_INCLUDE_PATH = path to where php.h can be found -# PHP4_EXECUTABLE = full path to the php4 binary +#[=======================================================================[.rst: +FindPHP4 +-------- + +Find PHP4 + +This module finds if PHP4 is installed and determines where the +include files and libraries are. It also determines what the name of +the library is. This code sets the following variables: + +:: + + PHP4_INCLUDE_PATH = path to where php.h can be found + PHP4_EXECUTABLE = full path to the php4 binary +#]=======================================================================] set(PHP4_POSSIBLE_INCLUDE_PATHS /usr/include/php4 diff --git a/Modules/FindPNG.cmake b/Modules/FindPNG.cmake index 936f01fed2..2208b4847b 100644 --- a/Modules/FindPNG.cmake +++ b/Modules/FindPNG.cmake @@ -1,49 +1,50 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindPNG -# ------- -# -# Find libpng, the official reference library for the PNG image format. -# -# Imported targets -# ^^^^^^^^^^^^^^^^ -# -# This module defines the following :prop_tgt:`IMPORTED` target: -# -# ``PNG::PNG`` -# The libpng library, if found. -# -# Result variables -# ^^^^^^^^^^^^^^^^ -# -# This module will set the following variables in your project: -# -# ``PNG_INCLUDE_DIRS`` -# where to find png.h, etc. -# ``PNG_LIBRARIES`` -# the libraries to link against to use PNG. -# ``PNG_DEFINITIONS`` -# You should add_definitions(${PNG_DEFINITIONS}) before compiling code -# that includes png library files. -# ``PNG_FOUND`` -# If false, do not try to use PNG. -# ``PNG_VERSION_STRING`` -# the version of the PNG library found (since CMake 2.8.8) -# -# Obsolete variables -# ^^^^^^^^^^^^^^^^^^ -# -# The following variables may also be set, for backwards compatibility: -# -# ``PNG_LIBRARY`` -# where to find the PNG library. -# ``PNG_INCLUDE_DIR`` -# where to find the PNG headers (same as PNG_INCLUDE_DIRS) -# -# Since PNG depends on the ZLib compression library, none of the above -# will be defined unless ZLib can be found. +#[=======================================================================[.rst: +FindPNG +------- + +Find libpng, the official reference library for the PNG image format. + +Imported targets +^^^^^^^^^^^^^^^^ + +This module defines the following :prop_tgt:`IMPORTED` target: + +``PNG::PNG`` + The libpng library, if found. + +Result variables +^^^^^^^^^^^^^^^^ + +This module will set the following variables in your project: + +``PNG_INCLUDE_DIRS`` + where to find png.h, etc. +``PNG_LIBRARIES`` + the libraries to link against to use PNG. +``PNG_DEFINITIONS`` + You should add_definitions(${PNG_DEFINITIONS}) before compiling code + that includes png library files. +``PNG_FOUND`` + If false, do not try to use PNG. +``PNG_VERSION_STRING`` + the version of the PNG library found (since CMake 2.8.8) + +Obsolete variables +^^^^^^^^^^^^^^^^^^ + +The following variables may also be set, for backwards compatibility: + +``PNG_LIBRARY`` + where to find the PNG library. +``PNG_INCLUDE_DIR`` + where to find the PNG headers (same as PNG_INCLUDE_DIRS) + +Since PNG depends on the ZLib compression library, none of the above +will be defined unless ZLib can be found. +#]=======================================================================] if(PNG_FIND_QUIETLY) set(_FIND_ZLIB_ARG QUIET) diff --git a/Modules/FindPackageMessage.cmake b/Modules/FindPackageMessage.cmake index 6821cee4f7..1cdfde8160 100644 --- a/Modules/FindPackageMessage.cmake +++ b/Modules/FindPackageMessage.cmake @@ -1,33 +1,34 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindPackageMessage -# ------------------ -# -# -# -# FIND_PACKAGE_MESSAGE(<name> "message for user" "find result details") -# -# This macro is intended to be used in FindXXX.cmake modules files. It -# will print a message once for each unique find result. This is useful -# for telling the user where a package was found. The first argument -# specifies the name (XXX) of the package. The second argument -# specifies the message to display. The third argument lists details -# about the find result so that if they change the message will be -# displayed again. The macro also obeys the QUIET argument to the -# find_package command. -# -# Example: -# -# :: -# -# if(X11_FOUND) -# FIND_PACKAGE_MESSAGE(X11 "Found X11: ${X11_X11_LIB}" -# "[${X11_X11_LIB}][${X11_INCLUDE_DIR}]") -# else() -# ... -# endif() +#[=======================================================================[.rst: +FindPackageMessage +------------------ + + + +FIND_PACKAGE_MESSAGE(<name> "message for user" "find result details") + +This macro is intended to be used in FindXXX.cmake modules files. It +will print a message once for each unique find result. This is useful +for telling the user where a package was found. The first argument +specifies the name (XXX) of the package. The second argument +specifies the message to display. The third argument lists details +about the find result so that if they change the message will be +displayed again. The macro also obeys the QUIET argument to the +find_package command. + +Example: + +:: + + if(X11_FOUND) + FIND_PACKAGE_MESSAGE(X11 "Found X11: ${X11_X11_LIB}" + "[${X11_X11_LIB}][${X11_INCLUDE_DIR}]") + else() + ... + endif() +#]=======================================================================] function(FIND_PACKAGE_MESSAGE pkg msg details) # Avoid printing a message repeatedly for the same find result. diff --git a/Modules/FindPatch.cmake b/Modules/FindPatch.cmake index 3ebcae909c..49988395bc 100644 --- a/Modules/FindPatch.cmake +++ b/Modules/FindPatch.cmake @@ -1,30 +1,31 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindPatch -# --------- -# -# The module defines the following variables: -# -# ``Patch_EXECUTABLE`` -# Path to patch command-line executable. -# ``Patch_FOUND`` -# True if the patch command-line executable was found. -# -# The following :prop_tgt:`IMPORTED` targets are also defined: -# -# ``Patch::patch`` -# The command-line executable. -# -# Example usage: -# -# .. code-block:: cmake -# -# find_package(Patch) -# if(Patch_FOUND) -# message("Patch found: ${Patch_EXECUTABLE}") -# endif() +#[=======================================================================[.rst: +FindPatch +--------- + +The module defines the following variables: + +``Patch_EXECUTABLE`` + Path to patch command-line executable. +``Patch_FOUND`` + True if the patch command-line executable was found. + +The following :prop_tgt:`IMPORTED` targets are also defined: + +``Patch::patch`` + The command-line executable. + +Example usage: + +.. code-block:: cmake + + find_package(Patch) + if(Patch_FOUND) + message("Patch found: ${Patch_EXECUTABLE}") + endif() +#]=======================================================================] set(_doc "Patch command line executable") set(_patch_path ) diff --git a/Modules/FindPerl.cmake b/Modules/FindPerl.cmake index c38527cfa3..fd120bf8e7 100644 --- a/Modules/FindPerl.cmake +++ b/Modules/FindPerl.cmake @@ -1,19 +1,20 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindPerl -# -------- -# -# Find perl -# -# this module looks for Perl -# -# :: -# -# PERL_EXECUTABLE - the full path to perl -# PERL_FOUND - If false, don't attempt to use perl. -# PERL_VERSION_STRING - version of perl found (since CMake 2.8.8) +#[=======================================================================[.rst: +FindPerl +-------- + +Find perl + +this module looks for Perl + +:: + + PERL_EXECUTABLE - the full path to perl + PERL_FOUND - If false, don't attempt to use perl. + PERL_VERSION_STRING - version of perl found (since CMake 2.8.8) +#]=======================================================================] include(${CMAKE_CURRENT_LIST_DIR}/FindCygwin.cmake) diff --git a/Modules/FindPerlLibs.cmake b/Modules/FindPerlLibs.cmake index 0b902e74d0..7e27f31880 100644 --- a/Modules/FindPerlLibs.cmake +++ b/Modules/FindPerlLibs.cmake @@ -1,47 +1,48 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindPerlLibs -# ------------ -# -# Find Perl libraries -# -# This module finds if PERL is installed and determines where the -# include files and libraries are. It also determines what the name of -# the library is. This code sets the following variables: -# -# :: -# -# PERLLIBS_FOUND = True if perl.h & libperl were found -# PERL_INCLUDE_PATH = path to where perl.h is found -# PERL_LIBRARY = path to libperl -# PERL_EXECUTABLE = full path to the perl binary -# -# -# -# The minimum required version of Perl can be specified using the -# standard syntax, e.g. find_package(PerlLibs 6.0) -# -# :: -# -# The following variables are also available if needed -# (introduced after CMake 2.6.4) -# -# -# -# :: -# -# PERL_SITESEARCH = path to the sitesearch install dir (-V:installsitesearch) -# PERL_SITEARCH = path to the sitelib install directory (-V:installsitearch) -# PERL_SITELIB = path to the sitelib install directory (-V:installsitelib) -# PERL_VENDORARCH = path to the vendor arch install directory (-V:installvendorarch) -# PERL_VENDORLIB = path to the vendor lib install directory (-V:installvendorlib) -# PERL_ARCHLIB = path to the core arch lib install directory (-V:archlib) -# PERL_PRIVLIB = path to the core priv lib install directory (-V:privlib) -# PERL_UPDATE_ARCHLIB = path to the update arch lib install directory (-V:installarchlib) -# PERL_UPDATE_PRIVLIB = path to the update priv lib install directory (-V:installprivlib) -# PERL_EXTRA_C_FLAGS = Compilation flags used to build perl +#[=======================================================================[.rst: +FindPerlLibs +------------ + +Find Perl libraries + +This module finds if PERL is installed and determines where the +include files and libraries are. It also determines what the name of +the library is. This code sets the following variables: + +:: + + PERLLIBS_FOUND = True if perl.h & libperl were found + PERL_INCLUDE_PATH = path to where perl.h is found + PERL_LIBRARY = path to libperl + PERL_EXECUTABLE = full path to the perl binary + + + +The minimum required version of Perl can be specified using the +standard syntax, e.g. find_package(PerlLibs 6.0) + +:: + + The following variables are also available if needed + (introduced after CMake 2.6.4) + + + +:: + + PERL_SITESEARCH = path to the sitesearch install dir (-V:installsitesearch) + PERL_SITEARCH = path to the sitelib install directory (-V:installsitearch) + PERL_SITELIB = path to the sitelib install directory (-V:installsitelib) + PERL_VENDORARCH = path to the vendor arch install directory (-V:installvendorarch) + PERL_VENDORLIB = path to the vendor lib install directory (-V:installvendorlib) + PERL_ARCHLIB = path to the core arch lib install directory (-V:archlib) + PERL_PRIVLIB = path to the core priv lib install directory (-V:privlib) + PERL_UPDATE_ARCHLIB = path to the update arch lib install directory (-V:installarchlib) + PERL_UPDATE_PRIVLIB = path to the update priv lib install directory (-V:installprivlib) + PERL_EXTRA_C_FLAGS = Compilation flags used to build perl +#]=======================================================================] # find the perl executable include(${CMAKE_CURRENT_LIST_DIR}/FindPerl.cmake) diff --git a/Modules/FindPhysFS.cmake b/Modules/FindPhysFS.cmake index cfe9b0f19e..0366f77a3c 100644 --- a/Modules/FindPhysFS.cmake +++ b/Modules/FindPhysFS.cmake @@ -1,20 +1,21 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindPhysFS -# ---------- -# -# -# -# Locate PhysFS library This module defines PHYSFS_LIBRARY, the name of -# the library to link against PHYSFS_FOUND, if false, do not try to link -# to PHYSFS PHYSFS_INCLUDE_DIR, where to find physfs.h -# -# $PHYSFSDIR is an environment variable that would correspond to the -# ./configure --prefix=$PHYSFSDIR used in building PHYSFS. -# -# Created by Eric Wing. +#[=======================================================================[.rst: +FindPhysFS +---------- + + + +Locate PhysFS library This module defines PHYSFS_LIBRARY, the name of +the library to link against PHYSFS_FOUND, if false, do not try to link +to PHYSFS PHYSFS_INCLUDE_DIR, where to find physfs.h + +$PHYSFSDIR is an environment variable that would correspond to the +./configure --prefix=$PHYSFSDIR used in building PHYSFS. + +Created by Eric Wing. +#]=======================================================================] find_path(PHYSFS_INCLUDE_DIR physfs.h HINTS diff --git a/Modules/FindPike.cmake b/Modules/FindPike.cmake index ec71c949a1..b78db2adbd 100644 --- a/Modules/FindPike.cmake +++ b/Modules/FindPike.cmake @@ -1,20 +1,21 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindPike -# -------- -# -# Find Pike -# -# This module finds if PIKE is installed and determines where the -# include files and libraries are. It also determines what the name of -# the library is. This code sets the following variables: -# -# :: -# -# PIKE_INCLUDE_PATH = path to where program.h is found -# PIKE_EXECUTABLE = full path to the pike binary +#[=======================================================================[.rst: +FindPike +-------- + +Find Pike + +This module finds if PIKE is installed and determines where the +include files and libraries are. It also determines what the name of +the library is. This code sets the following variables: + +:: + + PIKE_INCLUDE_PATH = path to where program.h is found + PIKE_EXECUTABLE = full path to the pike binary +#]=======================================================================] find_path(PIKE_INCLUDE_PATH program.h ${PIKE_POSSIBLE_INCLUDE_PATHS} diff --git a/Modules/FindPostgreSQL.cmake b/Modules/FindPostgreSQL.cmake index 3f6fa6c0f7..cb6265a1f8 100644 --- a/Modules/FindPostgreSQL.cmake +++ b/Modules/FindPostgreSQL.cmake @@ -1,20 +1,21 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindPostgreSQL -# -------------- -# -# Find the PostgreSQL installation. -# -# This module defines -# -# :: -# -# PostgreSQL_LIBRARIES - the PostgreSQL libraries needed for linking -# PostgreSQL_INCLUDE_DIRS - the directories of the PostgreSQL headers -# PostgreSQL_LIBRARY_DIRS - the link directories for PostgreSQL libraries -# PostgreSQL_VERSION_STRING - the version of PostgreSQL found (since CMake 2.8.8) +#[=======================================================================[.rst: +FindPostgreSQL +-------------- + +Find the PostgreSQL installation. + +This module defines + +:: + + PostgreSQL_LIBRARIES - the PostgreSQL libraries needed for linking + PostgreSQL_INCLUDE_DIRS - the directories of the PostgreSQL headers + PostgreSQL_LIBRARY_DIRS - the link directories for PostgreSQL libraries + PostgreSQL_VERSION_STRING - the version of PostgreSQL found (since CMake 2.8.8) +#]=======================================================================] # ---------------------------------------------------------------------------- # History: diff --git a/Modules/FindProducer.cmake b/Modules/FindProducer.cmake index 500c8edf6e..fba0494e3c 100644 --- a/Modules/FindProducer.cmake +++ b/Modules/FindProducer.cmake @@ -1,35 +1,36 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindProducer -# ------------ -# -# -# -# Though Producer isn't directly part of OpenSceneGraph, its primary -# user is OSG so I consider this part of the Findosg* suite used to find -# OpenSceneGraph components. You'll notice that I accept OSGDIR as an -# environment path. -# -# Each component is separate and you must opt in to each module. You -# must also opt into OpenGL (and OpenThreads?) as these modules won't do -# it for you. This is to allow you control over your own system piece -# by piece in case you need to opt out of certain components or change -# the Find behavior for a particular module (perhaps because the default -# FindOpenGL.cmake module doesn't work with your system as an example). -# If you want to use a more convenient module that includes everything, -# use the FindOpenSceneGraph.cmake instead of the Findosg*.cmake -# modules. -# -# Locate Producer This module defines PRODUCER_LIBRARY PRODUCER_FOUND, -# if false, do not try to link to Producer PRODUCER_INCLUDE_DIR, where -# to find the headers -# -# $PRODUCER_DIR is an environment variable that would correspond to the -# ./configure --prefix=$PRODUCER_DIR used in building osg. -# -# Created by Eric Wing. +#[=======================================================================[.rst: +FindProducer +------------ + + + +Though Producer isn't directly part of OpenSceneGraph, its primary +user is OSG so I consider this part of the Findosg* suite used to find +OpenSceneGraph components. You'll notice that I accept OSGDIR as an +environment path. + +Each component is separate and you must opt in to each module. You +must also opt into OpenGL (and OpenThreads?) as these modules won't do +it for you. This is to allow you control over your own system piece +by piece in case you need to opt out of certain components or change +the Find behavior for a particular module (perhaps because the default +FindOpenGL.cmake module doesn't work with your system as an example). +If you want to use a more convenient module that includes everything, +use the FindOpenSceneGraph.cmake instead of the Findosg*.cmake +modules. + +Locate Producer This module defines PRODUCER_LIBRARY PRODUCER_FOUND, +if false, do not try to link to Producer PRODUCER_INCLUDE_DIR, where +to find the headers + +$PRODUCER_DIR is an environment variable that would correspond to the +./configure --prefix=$PRODUCER_DIR used in building osg. + +Created by Eric Wing. +#]=======================================================================] # Header files are presumed to be included like # #include <Producer/CameraGroup> diff --git a/Modules/FindProtobuf.cmake b/Modules/FindProtobuf.cmake index d6d1ec6dba..1fc216744a 100644 --- a/Modules/FindProtobuf.cmake +++ b/Modules/FindProtobuf.cmake @@ -1,123 +1,124 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindProtobuf -# ------------ -# -# Locate and configure the Google Protocol Buffers library. -# -# The following variables can be set and are optional: -# -# ``Protobuf_SRC_ROOT_FOLDER`` -# When compiling with MSVC, if this cache variable is set -# the protobuf-default VS project build locations -# (vsprojects/Debug and vsprojects/Release -# or vsprojects/x64/Debug and vsprojects/x64/Release) -# will be searched for libraries and binaries. -# ``Protobuf_IMPORT_DIRS`` -# List of additional directories to be searched for -# imported .proto files. -# ``Protobuf_DEBUG`` -# Show debug messages. -# ``Protobuf_USE_STATIC_LIBS`` -# Set to ON to force the use of the static libraries. -# Default is OFF. -# -# Defines the following variables: -# -# ``Protobuf_FOUND`` -# Found the Google Protocol Buffers library -# (libprotobuf & header files) -# ``Protobuf_VERSION`` -# Version of package found. -# ``Protobuf_INCLUDE_DIRS`` -# Include directories for Google Protocol Buffers -# ``Protobuf_LIBRARIES`` -# The protobuf libraries -# ``Protobuf_PROTOC_LIBRARIES`` -# The protoc libraries -# ``Protobuf_LITE_LIBRARIES`` -# The protobuf-lite libraries -# -# The following :prop_tgt:`IMPORTED` targets are also defined: -# -# ``protobuf::libprotobuf`` -# The protobuf library. -# ``protobuf::libprotobuf-lite`` -# The protobuf lite library. -# ``protobuf::libprotoc`` -# The protoc library. -# ``protobuf::protoc`` -# The protoc compiler. -# -# The following cache variables are also available to set or use: -# -# ``Protobuf_LIBRARY`` -# The protobuf library -# ``Protobuf_PROTOC_LIBRARY`` -# The protoc library -# ``Protobuf_INCLUDE_DIR`` -# The include directory for protocol buffers -# ``Protobuf_PROTOC_EXECUTABLE`` -# The protoc compiler -# ``Protobuf_LIBRARY_DEBUG`` -# The protobuf library (debug) -# ``Protobuf_PROTOC_LIBRARY_DEBUG`` -# The protoc library (debug) -# ``Protobuf_LITE_LIBRARY`` -# The protobuf lite library -# ``Protobuf_LITE_LIBRARY_DEBUG`` -# The protobuf lite library (debug) -# -# Example: -# -# .. code-block:: cmake -# -# find_package(Protobuf REQUIRED) -# include_directories(${Protobuf_INCLUDE_DIRS}) -# include_directories(${CMAKE_CURRENT_BINARY_DIR}) -# protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS foo.proto) -# protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS EXPORT_MACRO DLL_EXPORT foo.proto) -# protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS DESCRIPTORS PROTO_DESCS foo.proto) -# protobuf_generate_python(PROTO_PY foo.proto) -# add_executable(bar bar.cc ${PROTO_SRCS} ${PROTO_HDRS}) -# target_link_libraries(bar ${Protobuf_LIBRARIES}) -# -# .. note:: -# The ``protobuf_generate_cpp`` and ``protobuf_generate_python`` -# functions and :command:`add_executable` or :command:`add_library` -# calls only work properly within the same directory. -# -# .. command:: protobuf_generate_cpp -# -# Add custom commands to process ``.proto`` files to C++:: -# -# protobuf_generate_cpp (<SRCS> <HDRS> -# [DESCRIPTORS <DESC>] [EXPORT_MACRO <MACRO>] [<ARGN>...]) -# -# ``SRCS`` -# Variable to define with autogenerated source files -# ``HDRS`` -# Variable to define with autogenerated header files -# ``DESCRIPTORS`` -# Variable to define with autogenerated descriptor files, if requested. -# ``EXPORT_MACRO`` -# is a macro which should expand to ``__declspec(dllexport)`` or -# ``__declspec(dllimport)`` depending on what is being compiled. -# ``ARGN`` -# ``.proto`` files -# -# .. command:: protobuf_generate_python -# -# Add custom commands to process ``.proto`` files to Python:: -# -# protobuf_generate_python (<PY> [<ARGN>...]) -# -# ``PY`` -# Variable to define with autogenerated Python files -# ``ARGN`` -# ``.proto`` filess +#[=======================================================================[.rst: +FindProtobuf +------------ + +Locate and configure the Google Protocol Buffers library. + +The following variables can be set and are optional: + +``Protobuf_SRC_ROOT_FOLDER`` + When compiling with MSVC, if this cache variable is set + the protobuf-default VS project build locations + (vsprojects/Debug and vsprojects/Release + or vsprojects/x64/Debug and vsprojects/x64/Release) + will be searched for libraries and binaries. +``Protobuf_IMPORT_DIRS`` + List of additional directories to be searched for + imported .proto files. +``Protobuf_DEBUG`` + Show debug messages. +``Protobuf_USE_STATIC_LIBS`` + Set to ON to force the use of the static libraries. + Default is OFF. + +Defines the following variables: + +``Protobuf_FOUND`` + Found the Google Protocol Buffers library + (libprotobuf & header files) +``Protobuf_VERSION`` + Version of package found. +``Protobuf_INCLUDE_DIRS`` + Include directories for Google Protocol Buffers +``Protobuf_LIBRARIES`` + The protobuf libraries +``Protobuf_PROTOC_LIBRARIES`` + The protoc libraries +``Protobuf_LITE_LIBRARIES`` + The protobuf-lite libraries + +The following :prop_tgt:`IMPORTED` targets are also defined: + +``protobuf::libprotobuf`` + The protobuf library. +``protobuf::libprotobuf-lite`` + The protobuf lite library. +``protobuf::libprotoc`` + The protoc library. +``protobuf::protoc`` + The protoc compiler. + +The following cache variables are also available to set or use: + +``Protobuf_LIBRARY`` + The protobuf library +``Protobuf_PROTOC_LIBRARY`` + The protoc library +``Protobuf_INCLUDE_DIR`` + The include directory for protocol buffers +``Protobuf_PROTOC_EXECUTABLE`` + The protoc compiler +``Protobuf_LIBRARY_DEBUG`` + The protobuf library (debug) +``Protobuf_PROTOC_LIBRARY_DEBUG`` + The protoc library (debug) +``Protobuf_LITE_LIBRARY`` + The protobuf lite library +``Protobuf_LITE_LIBRARY_DEBUG`` + The protobuf lite library (debug) + +Example: + +.. code-block:: cmake + + find_package(Protobuf REQUIRED) + include_directories(${Protobuf_INCLUDE_DIRS}) + include_directories(${CMAKE_CURRENT_BINARY_DIR}) + protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS foo.proto) + protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS EXPORT_MACRO DLL_EXPORT foo.proto) + protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS DESCRIPTORS PROTO_DESCS foo.proto) + protobuf_generate_python(PROTO_PY foo.proto) + add_executable(bar bar.cc ${PROTO_SRCS} ${PROTO_HDRS}) + target_link_libraries(bar ${Protobuf_LIBRARIES}) + +.. note:: + The ``protobuf_generate_cpp`` and ``protobuf_generate_python`` + functions and :command:`add_executable` or :command:`add_library` + calls only work properly within the same directory. + +.. command:: protobuf_generate_cpp + + Add custom commands to process ``.proto`` files to C++:: + + protobuf_generate_cpp (<SRCS> <HDRS> + [DESCRIPTORS <DESC>] [EXPORT_MACRO <MACRO>] [<ARGN>...]) + + ``SRCS`` + Variable to define with autogenerated source files + ``HDRS`` + Variable to define with autogenerated header files + ``DESCRIPTORS`` + Variable to define with autogenerated descriptor files, if requested. + ``EXPORT_MACRO`` + is a macro which should expand to ``__declspec(dllexport)`` or + ``__declspec(dllimport)`` depending on what is being compiled. + ``ARGN`` + ``.proto`` files + +.. command:: protobuf_generate_python + + Add custom commands to process ``.proto`` files to Python:: + + protobuf_generate_python (<PY> [<ARGN>...]) + + ``PY`` + Variable to define with autogenerated Python files + ``ARGN`` + ``.proto`` filess +#]=======================================================================] function(protobuf_generate) include(CMakeParseArguments) diff --git a/Modules/FindPythonInterp.cmake b/Modules/FindPythonInterp.cmake index 370e5e4224..6a47c157ac 100644 --- a/Modules/FindPythonInterp.cmake +++ b/Modules/FindPythonInterp.cmake @@ -1,44 +1,45 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindPythonInterp -# ---------------- -# -# Find python interpreter -# -# .. deprecated:: 3.12 -# -# Use :module:`FindPython3`, :module:`FindPython2` or :module:`FindPython` instead. -# -# This module finds if Python interpreter is installed and determines -# where the executables are. This code sets the following variables: -# -# :: -# -# PYTHONINTERP_FOUND - Was the Python executable found -# PYTHON_EXECUTABLE - path to the Python interpreter -# -# -# -# :: -# -# PYTHON_VERSION_STRING - Python version found e.g. 2.5.2 -# PYTHON_VERSION_MAJOR - Python major version found e.g. 2 -# PYTHON_VERSION_MINOR - Python minor version found e.g. 5 -# PYTHON_VERSION_PATCH - Python patch version found e.g. 2 -# -# -# -# The Python_ADDITIONAL_VERSIONS variable can be used to specify a list -# of version numbers that should be taken into account when searching -# for Python. You need to set this variable before calling -# find_package(PythonInterp). -# -# If calling both ``find_package(PythonInterp)`` and -# ``find_package(PythonLibs)``, call ``find_package(PythonInterp)`` first to -# get the currently active Python version by default with a consistent version -# of PYTHON_LIBRARIES. +#[=======================================================================[.rst: +FindPythonInterp +---------------- + +Find python interpreter + +.. deprecated:: 3.12 + + Use :module:`FindPython3`, :module:`FindPython2` or :module:`FindPython` instead. + +This module finds if Python interpreter is installed and determines +where the executables are. This code sets the following variables: + +:: + + PYTHONINTERP_FOUND - Was the Python executable found + PYTHON_EXECUTABLE - path to the Python interpreter + + + +:: + + PYTHON_VERSION_STRING - Python version found e.g. 2.5.2 + PYTHON_VERSION_MAJOR - Python major version found e.g. 2 + PYTHON_VERSION_MINOR - Python minor version found e.g. 5 + PYTHON_VERSION_PATCH - Python patch version found e.g. 2 + + + +The Python_ADDITIONAL_VERSIONS variable can be used to specify a list +of version numbers that should be taken into account when searching +for Python. You need to set this variable before calling +find_package(PythonInterp). + +If calling both ``find_package(PythonInterp)`` and +``find_package(PythonLibs)``, call ``find_package(PythonInterp)`` first to +get the currently active Python version by default with a consistent version +of PYTHON_LIBRARIES. +#]=======================================================================] unset(_Python_NAMES) diff --git a/Modules/FindPythonLibs.cmake b/Modules/FindPythonLibs.cmake index 6da87a88f9..2be5d71573 100644 --- a/Modules/FindPythonLibs.cmake +++ b/Modules/FindPythonLibs.cmake @@ -1,48 +1,49 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindPythonLibs -# -------------- -# -# Find python libraries -# -# .. deprecated:: 3.12 -# -# Use :module:`FindPython3`, :module:`FindPython2` or :module:`FindPython` instead. -# -# This module finds if Python is installed and determines where the -# include files and libraries are. It also determines what the name of -# the library is. This code sets the following variables: -# -# :: -# -# PYTHONLIBS_FOUND - have the Python libs been found -# PYTHON_LIBRARIES - path to the python library -# PYTHON_INCLUDE_PATH - path to where Python.h is found (deprecated) -# PYTHON_INCLUDE_DIRS - path to where Python.h is found -# PYTHON_DEBUG_LIBRARIES - path to the debug library (deprecated) -# PYTHONLIBS_VERSION_STRING - version of the Python libs found (since CMake 2.8.8) -# -# -# -# The Python_ADDITIONAL_VERSIONS variable can be used to specify a list -# of version numbers that should be taken into account when searching -# for Python. You need to set this variable before calling -# find_package(PythonLibs). -# -# If you'd like to specify the installation of Python to use, you should -# modify the following cache variables: -# -# :: -# -# PYTHON_LIBRARY - path to the python library -# PYTHON_INCLUDE_DIR - path to where Python.h is found -# -# If calling both ``find_package(PythonInterp)`` and -# ``find_package(PythonLibs)``, call ``find_package(PythonInterp)`` first to -# get the currently active Python version by default with a consistent version -# of PYTHON_LIBRARIES. +#[=======================================================================[.rst: +FindPythonLibs +-------------- + +Find python libraries + +.. deprecated:: 3.12 + + Use :module:`FindPython3`, :module:`FindPython2` or :module:`FindPython` instead. + +This module finds if Python is installed and determines where the +include files and libraries are. It also determines what the name of +the library is. This code sets the following variables: + +:: + + PYTHONLIBS_FOUND - have the Python libs been found + PYTHON_LIBRARIES - path to the python library + PYTHON_INCLUDE_PATH - path to where Python.h is found (deprecated) + PYTHON_INCLUDE_DIRS - path to where Python.h is found + PYTHON_DEBUG_LIBRARIES - path to the debug library (deprecated) + PYTHONLIBS_VERSION_STRING - version of the Python libs found (since CMake 2.8.8) + + + +The Python_ADDITIONAL_VERSIONS variable can be used to specify a list +of version numbers that should be taken into account when searching +for Python. You need to set this variable before calling +find_package(PythonLibs). + +If you'd like to specify the installation of Python to use, you should +modify the following cache variables: + +:: + + PYTHON_LIBRARY - path to the python library + PYTHON_INCLUDE_DIR - path to where Python.h is found + +If calling both ``find_package(PythonInterp)`` and +``find_package(PythonLibs)``, call ``find_package(PythonInterp)`` first to +get the currently active Python version by default with a consistent version +of PYTHON_LIBRARIES. +#]=======================================================================] # Use the executable's path as a hint set(_Python_LIBRARY_PATH_HINT) diff --git a/Modules/FindQt.cmake b/Modules/FindQt.cmake index 4dff7c3e47..083d6a69a3 100644 --- a/Modules/FindQt.cmake +++ b/Modules/FindQt.cmake @@ -1,37 +1,38 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindQt -# ------ -# -# Searches for all installed versions of Qt3 or Qt4. -# -# This module cannot handle Qt5 or any later versions. -# For those, see :manual:`cmake-qt(7)`. -# -# This module should only be used if your project can work with multiple -# versions of Qt. If not, you should just directly use FindQt4 or -# FindQt3. If multiple versions of Qt are found on the machine, then -# The user must set the option DESIRED_QT_VERSION to the version they -# want to use. If only one version of qt is found on the machine, then -# the DESIRED_QT_VERSION is set to that version and the matching FindQt3 -# or FindQt4 module is included. Once the user sets DESIRED_QT_VERSION, -# then the FindQt3 or FindQt4 module is included. -# -# :: -# -# QT_REQUIRED if this is set to TRUE then if CMake can -# not find Qt4 or Qt3 an error is raised -# and a message is sent to the user. -# -# -# -# :: -# -# DESIRED_QT_VERSION OPTION is created -# QT4_INSTALLED is set to TRUE if qt4 is found. -# QT3_INSTALLED is set to TRUE if qt3 is found. +#[=======================================================================[.rst: +FindQt +------ + +Searches for all installed versions of Qt3 or Qt4. + +This module cannot handle Qt5 or any later versions. +For those, see :manual:`cmake-qt(7)`. + +This module should only be used if your project can work with multiple +versions of Qt. If not, you should just directly use FindQt4 or +FindQt3. If multiple versions of Qt are found on the machine, then +The user must set the option DESIRED_QT_VERSION to the version they +want to use. If only one version of qt is found on the machine, then +the DESIRED_QT_VERSION is set to that version and the matching FindQt3 +or FindQt4 module is included. Once the user sets DESIRED_QT_VERSION, +then the FindQt3 or FindQt4 module is included. + +:: + + QT_REQUIRED if this is set to TRUE then if CMake can + not find Qt4 or Qt3 an error is raised + and a message is sent to the user. + + + +:: + + DESIRED_QT_VERSION OPTION is created + QT4_INSTALLED is set to TRUE if qt4 is found. + QT3_INSTALLED is set to TRUE if qt3 is found. +#]=======================================================================] # look for signs of qt3 installations file(GLOB GLOB_TEMP_VAR /usr/lib*/qt-3*/bin/qmake /usr/lib*/qt3*/bin/qmake) diff --git a/Modules/FindQt3.cmake b/Modules/FindQt3.cmake index a034210d8c..4a8e28b1b6 100644 --- a/Modules/FindQt3.cmake +++ b/Modules/FindQt3.cmake @@ -1,37 +1,38 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindQt3 -# ------- -# -# Locate Qt include paths and libraries -# -# This module defines: -# -# :: -# -# QT_INCLUDE_DIR - where to find qt.h, etc. -# QT_LIBRARIES - the libraries to link against to use Qt. -# QT_DEFINITIONS - definitions to use when -# compiling code that uses Qt. -# QT_FOUND - If false, don't try to use Qt. -# QT_VERSION_STRING - the version of Qt found -# -# -# -# If you need the multithreaded version of Qt, set QT_MT_REQUIRED to -# TRUE -# -# Also defined, but not for general use are: -# -# :: -# -# QT_MOC_EXECUTABLE, where to find the moc tool. -# QT_UIC_EXECUTABLE, where to find the uic tool. -# QT_QT_LIBRARY, where to find the Qt library. -# QT_QTMAIN_LIBRARY, where to find the qtmain -# library. This is only required by Qt3 on Windows. +#[=======================================================================[.rst: +FindQt3 +------- + +Locate Qt include paths and libraries + +This module defines: + +:: + + QT_INCLUDE_DIR - where to find qt.h, etc. + QT_LIBRARIES - the libraries to link against to use Qt. + QT_DEFINITIONS - definitions to use when + compiling code that uses Qt. + QT_FOUND - If false, don't try to use Qt. + QT_VERSION_STRING - the version of Qt found + + + +If you need the multithreaded version of Qt, set QT_MT_REQUIRED to +TRUE + +Also defined, but not for general use are: + +:: + + QT_MOC_EXECUTABLE, where to find the moc tool. + QT_UIC_EXECUTABLE, where to find the uic tool. + QT_QT_LIBRARY, where to find the Qt library. + QT_QTMAIN_LIBRARY, where to find the qtmain + library. This is only required by Qt3 on Windows. +#]=======================================================================] # These are around for backwards compatibility # they will be set diff --git a/Modules/FindQt4.cmake b/Modules/FindQt4.cmake index 847a798af0..a145b4649a 100644 --- a/Modules/FindQt4.cmake +++ b/Modules/FindQt4.cmake @@ -1,304 +1,305 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindQt4 -# ------- -# -# Finding and Using Qt4 -# ^^^^^^^^^^^^^^^^^^^^^ -# -# This module can be used to find Qt4. The most important issue is that -# the Qt4 qmake is available via the system path. This qmake is then -# used to detect basically everything else. This module defines a -# number of :prop_tgt:`IMPORTED` targets, macros and variables. -# -# Typical usage could be something like: -# -# .. code-block:: cmake -# -# set(CMAKE_AUTOMOC ON) -# set(CMAKE_INCLUDE_CURRENT_DIR ON) -# find_package(Qt4 4.4.3 REQUIRED QtGui QtXml) -# add_executable(myexe main.cpp) -# target_link_libraries(myexe Qt4::QtGui Qt4::QtXml) -# -# .. note:: -# -# When using :prop_tgt:`IMPORTED` targets, the qtmain.lib static library is -# automatically linked on Windows for :prop_tgt:`WIN32 <WIN32_EXECUTABLE>` -# executables. To disable that globally, set the -# ``QT4_NO_LINK_QTMAIN`` variable before finding Qt4. To disable that -# for a particular executable, set the ``QT4_NO_LINK_QTMAIN`` target -# property to ``TRUE`` on the executable. -# -# Qt Build Tools -# ^^^^^^^^^^^^^^ -# -# Qt relies on some bundled tools for code generation, such as ``moc`` for -# meta-object code generation,``uic`` for widget layout and population, -# and ``rcc`` for virtual filesystem content generation. These tools may be -# automatically invoked by :manual:`cmake(1)` if the appropriate conditions -# are met. See :manual:`cmake-qt(7)` for more. -# -# Qt Macros -# ^^^^^^^^^ -# -# In some cases it can be necessary or useful to invoke the Qt build tools in a -# more-manual way. Several macros are available to add targets for such uses. -# -# :: -# -# macro QT4_WRAP_CPP(outfiles inputfile ... [TARGET tgt] OPTIONS ...) -# create moc code from a list of files containing Qt class with -# the Q_OBJECT declaration. Per-directory preprocessor definitions -# are also added. If the <tgt> is specified, the -# INTERFACE_INCLUDE_DIRECTORIES and INTERFACE_COMPILE_DEFINITIONS from -# the <tgt> are passed to moc. Options may be given to moc, such as -# those found when executing "moc -help". -# -# -# :: -# -# macro QT4_WRAP_UI(outfiles inputfile ... OPTIONS ...) -# create code from a list of Qt designer ui files. -# Options may be given to uic, such as those found -# when executing "uic -help" -# -# -# :: -# -# macro QT4_ADD_RESOURCES(outfiles inputfile ... OPTIONS ...) -# create code from a list of Qt resource files. -# Options may be given to rcc, such as those found -# when executing "rcc -help" -# -# -# :: -# -# macro QT4_GENERATE_MOC(inputfile outputfile [TARGET tgt]) -# creates a rule to run moc on infile and create outfile. -# Use this if for some reason QT4_WRAP_CPP() isn't appropriate, e.g. -# because you need a custom filename for the moc file or something -# similar. If the <tgt> is specified, the -# INTERFACE_INCLUDE_DIRECTORIES and INTERFACE_COMPILE_DEFINITIONS from -# the <tgt> are passed to moc. -# -# -# :: -# -# macro QT4_ADD_DBUS_INTERFACE(outfiles interface basename) -# Create the interface header and implementation files with the -# given basename from the given interface xml file and add it to -# the list of sources. -# -# You can pass additional parameters to the qdbusxml2cpp call by setting -# properties on the input file: -# -# INCLUDE the given file will be included in the generate interface header -# -# CLASSNAME the generated class is named accordingly -# -# NO_NAMESPACE the generated class is not wrapped in a namespace -# -# -# :: -# -# macro QT4_ADD_DBUS_INTERFACES(outfiles inputfile ... ) -# Create the interface header and implementation files -# for all listed interface xml files. -# The basename will be automatically determined from the name -# of the xml file. -# -# The source file properties described for -# QT4_ADD_DBUS_INTERFACE also apply here. -# -# -# :: -# -# macro QT4_ADD_DBUS_ADAPTOR(outfiles xmlfile parentheader parentclassname -# [basename] [classname]) -# create a dbus adaptor (header and implementation file) from the xml file -# describing the interface, and add it to the list of sources. The adaptor -# forwards the calls to a parent class, defined in parentheader and named -# parentclassname. The name of the generated files will be -# <basename>adaptor.{cpp,h} where basename defaults to the basename of the -# xml file. -# If <classname> is provided, then it will be used as the classname of the -# adaptor itself. -# -# -# :: -# -# macro QT4_GENERATE_DBUS_INTERFACE( header [interfacename] OPTIONS ...) -# generate the xml interface file from the given header. -# If the optional argument interfacename is omitted, the name of the -# interface file is constructed from the basename of the header with -# the suffix .xml appended. -# Options may be given to qdbuscpp2xml, such as those found when -# executing "qdbuscpp2xml --help" -# -# -# :: -# -# macro QT4_CREATE_TRANSLATION( qm_files directories ... sources ... -# ts_files ... OPTIONS ...) -# out: qm_files -# in: directories sources ts_files -# options: flags to pass to lupdate, such as -extensions to specify -# extensions for a directory scan. -# generates commands to create .ts (vie lupdate) and .qm -# (via lrelease) - files from directories and/or sources. The ts files are -# created and/or updated in the source tree (unless given with full paths). -# The qm files are generated in the build tree. -# Updating the translations can be done by adding the qm_files -# to the source list of your library/executable, so they are -# always updated, or by adding a custom target to control when -# they get updated/generated. -# -# -# :: -# -# macro QT4_ADD_TRANSLATION( qm_files ts_files ... ) -# out: qm_files -# in: ts_files -# generates commands to create .qm from .ts - files. The generated -# filenames can be found in qm_files. The ts_files -# must exist and are not updated in any way. -# -# -# :: -# -# macro QT4_AUTOMOC(sourcefile1 sourcefile2 ... [TARGET tgt]) -# The qt4_automoc macro is obsolete. Use the CMAKE_AUTOMOC feature instead. -# This macro is still experimental. -# It can be used to have moc automatically handled. -# So if you have the files foo.h and foo.cpp, and in foo.h a -# a class uses the Q_OBJECT macro, moc has to run on it. If you don't -# want to use QT4_WRAP_CPP() (which is reliable and mature), you can insert -# #include "foo.moc" -# in foo.cpp and then give foo.cpp as argument to QT4_AUTOMOC(). This will -# scan all listed files at cmake-time for such included moc files and if it -# finds them cause a rule to be generated to run moc at build time on the -# accompanying header file foo.h. -# If a source file has the SKIP_AUTOMOC property set it will be ignored by -# this macro. -# If the <tgt> is specified, the INTERFACE_INCLUDE_DIRECTORIES and -# INTERFACE_COMPILE_DEFINITIONS from the <tgt> are passed to moc. -# -# -# :: -# -# function QT4_USE_MODULES( target [link_type] modules...) -# This function is obsolete. Use target_link_libraries with IMPORTED targets -# instead. -# Make <target> use the <modules> from Qt. Using a Qt module means -# to link to the library, add the relevant include directories for the -# module, and add the relevant compiler defines for using the module. -# Modules are roughly equivalent to components of Qt4, so usage would be -# something like: -# qt4_use_modules(myexe Core Gui Declarative) -# to use QtCore, QtGui and QtDeclarative. The optional <link_type> argument -# can be specified as either LINK_PUBLIC or LINK_PRIVATE to specify the -# same argument to the target_link_libraries call. -# -# -# IMPORTED Targets -# ^^^^^^^^^^^^^^^^ -# -# A particular Qt library may be used by using the corresponding -# :prop_tgt:`IMPORTED` target with the :command:`target_link_libraries` -# command: -# -# .. code-block:: cmake -# -# target_link_libraries(myexe Qt4::QtGui Qt4::QtXml) -# -# Using a target in this way causes :cmake(1)` to use the appropriate include -# directories and compile definitions for the target when compiling ``myexe``. -# -# Targets are aware of their dependencies, so for example it is not necessary -# to list ``Qt4::QtCore`` if another Qt library is listed, and it is not -# necessary to list ``Qt4::QtGui`` if ``Qt4::QtDeclarative`` is listed. -# Targets may be tested for existence in the usual way with the -# :command:`if(TARGET)` command. -# -# The Qt toolkit may contain both debug and release libraries. -# :manual:`cmake(1)` will choose the appropriate version based on the build -# configuration. -# -# ``Qt4::QtCore`` -# The QtCore target -# ``Qt4::QtGui`` -# The QtGui target -# ``Qt4::Qt3Support`` -# The Qt3Support target -# ``Qt4::QtAssistant`` -# The QtAssistant target -# ``Qt4::QtAssistantClient`` -# The QtAssistantClient target -# ``Qt4::QAxContainer`` -# The QAxContainer target (Windows only) -# ``Qt4::QAxServer`` -# The QAxServer target (Windows only) -# ``Qt4::QtDBus`` -# The QtDBus target -# ``Qt4::QtDeclarative`` -# The QtDeclarative target -# ``Qt4::QtDesigner`` -# The QtDesigner target -# ``Qt4::QtDesignerComponents`` -# The QtDesignerComponents target -# ``Qt4::QtHelp`` -# The QtHelp target -# ``Qt4::QtMotif`` -# The QtMotif target -# ``Qt4::QtMultimedia`` -# The QtMultimedia target -# ``Qt4::QtNetwork`` -# The QtNetwork target -# ``Qt4::QtNsPLugin`` -# The QtNsPLugin target -# ``Qt4::QtOpenGL`` -# The QtOpenGL target -# ``Qt4::QtScript`` -# The QtScript target -# ``Qt4::QtScriptTools`` -# The QtScriptTools target -# ``Qt4::QtSql`` -# The QtSql target -# ``Qt4::QtSvg`` -# The QtSvg target -# ``Qt4::QtTest`` -# The QtTest target -# ``Qt4::QtUiTools`` -# The QtUiTools target -# ``Qt4::QtWebKit`` -# The QtWebKit target -# ``Qt4::QtXml`` -# The QtXml target -# ``Qt4::QtXmlPatterns`` -# The QtXmlPatterns target -# ``Qt4::phonon`` -# The phonon target -# -# Result Variables -# ^^^^^^^^^^^^^^^^ -# -# Below is a detailed list of variables that FindQt4.cmake sets. -# -# ``Qt4_FOUND`` -# If false, don't try to use Qt 4. -# ``QT_FOUND`` -# If false, don't try to use Qt. This variable is for compatibility only. -# ``QT4_FOUND`` -# If false, don't try to use Qt 4. This variable is for compatibility only. -# ``QT_VERSION_MAJOR`` -# The major version of Qt found. -# ``QT_VERSION_MINOR`` -# The minor version of Qt found. -# ``QT_VERSION_PATCH`` -# The patch version of Qt found. +#[=======================================================================[.rst: +FindQt4 +------- + +Finding and Using Qt4 +^^^^^^^^^^^^^^^^^^^^^ + +This module can be used to find Qt4. The most important issue is that +the Qt4 qmake is available via the system path. This qmake is then +used to detect basically everything else. This module defines a +number of :prop_tgt:`IMPORTED` targets, macros and variables. + +Typical usage could be something like: + +.. code-block:: cmake + + set(CMAKE_AUTOMOC ON) + set(CMAKE_INCLUDE_CURRENT_DIR ON) + find_package(Qt4 4.4.3 REQUIRED QtGui QtXml) + add_executable(myexe main.cpp) + target_link_libraries(myexe Qt4::QtGui Qt4::QtXml) + +.. note:: + + When using :prop_tgt:`IMPORTED` targets, the qtmain.lib static library is + automatically linked on Windows for :prop_tgt:`WIN32 <WIN32_EXECUTABLE>` + executables. To disable that globally, set the + ``QT4_NO_LINK_QTMAIN`` variable before finding Qt4. To disable that + for a particular executable, set the ``QT4_NO_LINK_QTMAIN`` target + property to ``TRUE`` on the executable. + +Qt Build Tools +^^^^^^^^^^^^^^ + +Qt relies on some bundled tools for code generation, such as ``moc`` for +meta-object code generation,``uic`` for widget layout and population, +and ``rcc`` for virtual filesystem content generation. These tools may be +automatically invoked by :manual:`cmake(1)` if the appropriate conditions +are met. See :manual:`cmake-qt(7)` for more. + +Qt Macros +^^^^^^^^^ + +In some cases it can be necessary or useful to invoke the Qt build tools in a +more-manual way. Several macros are available to add targets for such uses. + +:: + + macro QT4_WRAP_CPP(outfiles inputfile ... [TARGET tgt] OPTIONS ...) + create moc code from a list of files containing Qt class with + the Q_OBJECT declaration. Per-directory preprocessor definitions + are also added. If the <tgt> is specified, the + INTERFACE_INCLUDE_DIRECTORIES and INTERFACE_COMPILE_DEFINITIONS from + the <tgt> are passed to moc. Options may be given to moc, such as + those found when executing "moc -help". + + +:: + + macro QT4_WRAP_UI(outfiles inputfile ... OPTIONS ...) + create code from a list of Qt designer ui files. + Options may be given to uic, such as those found + when executing "uic -help" + + +:: + + macro QT4_ADD_RESOURCES(outfiles inputfile ... OPTIONS ...) + create code from a list of Qt resource files. + Options may be given to rcc, such as those found + when executing "rcc -help" + + +:: + + macro QT4_GENERATE_MOC(inputfile outputfile [TARGET tgt]) + creates a rule to run moc on infile and create outfile. + Use this if for some reason QT4_WRAP_CPP() isn't appropriate, e.g. + because you need a custom filename for the moc file or something + similar. If the <tgt> is specified, the + INTERFACE_INCLUDE_DIRECTORIES and INTERFACE_COMPILE_DEFINITIONS from + the <tgt> are passed to moc. + + +:: + + macro QT4_ADD_DBUS_INTERFACE(outfiles interface basename) + Create the interface header and implementation files with the + given basename from the given interface xml file and add it to + the list of sources. + + You can pass additional parameters to the qdbusxml2cpp call by setting + properties on the input file: + + INCLUDE the given file will be included in the generate interface header + + CLASSNAME the generated class is named accordingly + + NO_NAMESPACE the generated class is not wrapped in a namespace + + +:: + + macro QT4_ADD_DBUS_INTERFACES(outfiles inputfile ... ) + Create the interface header and implementation files + for all listed interface xml files. + The basename will be automatically determined from the name + of the xml file. + + The source file properties described for + QT4_ADD_DBUS_INTERFACE also apply here. + + +:: + + macro QT4_ADD_DBUS_ADAPTOR(outfiles xmlfile parentheader parentclassname + [basename] [classname]) + create a dbus adaptor (header and implementation file) from the xml file + describing the interface, and add it to the list of sources. The adaptor + forwards the calls to a parent class, defined in parentheader and named + parentclassname. The name of the generated files will be + <basename>adaptor.{cpp,h} where basename defaults to the basename of the + xml file. + If <classname> is provided, then it will be used as the classname of the + adaptor itself. + + +:: + + macro QT4_GENERATE_DBUS_INTERFACE( header [interfacename] OPTIONS ...) + generate the xml interface file from the given header. + If the optional argument interfacename is omitted, the name of the + interface file is constructed from the basename of the header with + the suffix .xml appended. + Options may be given to qdbuscpp2xml, such as those found when + executing "qdbuscpp2xml --help" + + +:: + + macro QT4_CREATE_TRANSLATION( qm_files directories ... sources ... + ts_files ... OPTIONS ...) + out: qm_files + in: directories sources ts_files + options: flags to pass to lupdate, such as -extensions to specify + extensions for a directory scan. + generates commands to create .ts (vie lupdate) and .qm + (via lrelease) - files from directories and/or sources. The ts files are + created and/or updated in the source tree (unless given with full paths). + The qm files are generated in the build tree. + Updating the translations can be done by adding the qm_files + to the source list of your library/executable, so they are + always updated, or by adding a custom target to control when + they get updated/generated. + + +:: + + macro QT4_ADD_TRANSLATION( qm_files ts_files ... ) + out: qm_files + in: ts_files + generates commands to create .qm from .ts - files. The generated + filenames can be found in qm_files. The ts_files + must exist and are not updated in any way. + + +:: + + macro QT4_AUTOMOC(sourcefile1 sourcefile2 ... [TARGET tgt]) + The qt4_automoc macro is obsolete. Use the CMAKE_AUTOMOC feature instead. + This macro is still experimental. + It can be used to have moc automatically handled. + So if you have the files foo.h and foo.cpp, and in foo.h a + a class uses the Q_OBJECT macro, moc has to run on it. If you don't + want to use QT4_WRAP_CPP() (which is reliable and mature), you can insert + #include "foo.moc" + in foo.cpp and then give foo.cpp as argument to QT4_AUTOMOC(). This will + scan all listed files at cmake-time for such included moc files and if it + finds them cause a rule to be generated to run moc at build time on the + accompanying header file foo.h. + If a source file has the SKIP_AUTOMOC property set it will be ignored by + this macro. + If the <tgt> is specified, the INTERFACE_INCLUDE_DIRECTORIES and + INTERFACE_COMPILE_DEFINITIONS from the <tgt> are passed to moc. + + +:: + + function QT4_USE_MODULES( target [link_type] modules...) + This function is obsolete. Use target_link_libraries with IMPORTED targets + instead. + Make <target> use the <modules> from Qt. Using a Qt module means + to link to the library, add the relevant include directories for the + module, and add the relevant compiler defines for using the module. + Modules are roughly equivalent to components of Qt4, so usage would be + something like: + qt4_use_modules(myexe Core Gui Declarative) + to use QtCore, QtGui and QtDeclarative. The optional <link_type> argument + can be specified as either LINK_PUBLIC or LINK_PRIVATE to specify the + same argument to the target_link_libraries call. + + +IMPORTED Targets +^^^^^^^^^^^^^^^^ + +A particular Qt library may be used by using the corresponding +:prop_tgt:`IMPORTED` target with the :command:`target_link_libraries` +command: + +.. code-block:: cmake + + target_link_libraries(myexe Qt4::QtGui Qt4::QtXml) + +Using a target in this way causes :cmake(1)` to use the appropriate include +directories and compile definitions for the target when compiling ``myexe``. + +Targets are aware of their dependencies, so for example it is not necessary +to list ``Qt4::QtCore`` if another Qt library is listed, and it is not +necessary to list ``Qt4::QtGui`` if ``Qt4::QtDeclarative`` is listed. +Targets may be tested for existence in the usual way with the +:command:`if(TARGET)` command. + +The Qt toolkit may contain both debug and release libraries. +:manual:`cmake(1)` will choose the appropriate version based on the build +configuration. + +``Qt4::QtCore`` + The QtCore target +``Qt4::QtGui`` + The QtGui target +``Qt4::Qt3Support`` + The Qt3Support target +``Qt4::QtAssistant`` + The QtAssistant target +``Qt4::QtAssistantClient`` + The QtAssistantClient target +``Qt4::QAxContainer`` + The QAxContainer target (Windows only) +``Qt4::QAxServer`` + The QAxServer target (Windows only) +``Qt4::QtDBus`` + The QtDBus target +``Qt4::QtDeclarative`` + The QtDeclarative target +``Qt4::QtDesigner`` + The QtDesigner target +``Qt4::QtDesignerComponents`` + The QtDesignerComponents target +``Qt4::QtHelp`` + The QtHelp target +``Qt4::QtMotif`` + The QtMotif target +``Qt4::QtMultimedia`` + The QtMultimedia target +``Qt4::QtNetwork`` + The QtNetwork target +``Qt4::QtNsPLugin`` + The QtNsPLugin target +``Qt4::QtOpenGL`` + The QtOpenGL target +``Qt4::QtScript`` + The QtScript target +``Qt4::QtScriptTools`` + The QtScriptTools target +``Qt4::QtSql`` + The QtSql target +``Qt4::QtSvg`` + The QtSvg target +``Qt4::QtTest`` + The QtTest target +``Qt4::QtUiTools`` + The QtUiTools target +``Qt4::QtWebKit`` + The QtWebKit target +``Qt4::QtXml`` + The QtXml target +``Qt4::QtXmlPatterns`` + The QtXmlPatterns target +``Qt4::phonon`` + The phonon target + +Result Variables +^^^^^^^^^^^^^^^^ + + Below is a detailed list of variables that FindQt4.cmake sets. + +``Qt4_FOUND`` + If false, don't try to use Qt 4. +``QT_FOUND`` + If false, don't try to use Qt. This variable is for compatibility only. +``QT4_FOUND`` + If false, don't try to use Qt 4. This variable is for compatibility only. +``QT_VERSION_MAJOR`` + The major version of Qt found. +``QT_VERSION_MINOR`` + The minor version of Qt found. +``QT_VERSION_PATCH`` + The patch version of Qt found. +#]=======================================================================] # Use find_package( Qt4 COMPONENTS ... ) to enable modules if( Qt4_FIND_COMPONENTS ) diff --git a/Modules/FindQuickTime.cmake b/Modules/FindQuickTime.cmake index 995d8826b2..107486daac 100644 --- a/Modules/FindQuickTime.cmake +++ b/Modules/FindQuickTime.cmake @@ -1,20 +1,21 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindQuickTime -# ------------- -# -# -# -# Locate QuickTime This module defines QUICKTIME_LIBRARY -# QUICKTIME_FOUND, if false, do not try to link to gdal -# QUICKTIME_INCLUDE_DIR, where to find the headers -# -# $QUICKTIME_DIR is an environment variable that would correspond to the -# ./configure --prefix=$QUICKTIME_DIR -# -# Created by Eric Wing. +#[=======================================================================[.rst: +FindQuickTime +------------- + + + +Locate QuickTime This module defines QUICKTIME_LIBRARY +QUICKTIME_FOUND, if false, do not try to link to gdal +QUICKTIME_INCLUDE_DIR, where to find the headers + +$QUICKTIME_DIR is an environment variable that would correspond to the +./configure --prefix=$QUICKTIME_DIR + +Created by Eric Wing. +#]=======================================================================] find_path(QUICKTIME_INCLUDE_DIR QuickTime/QuickTime.h QuickTime.h HINTS diff --git a/Modules/FindRTI.cmake b/Modules/FindRTI.cmake index b2ef0761a7..54d2bec9f8 100644 --- a/Modules/FindRTI.cmake +++ b/Modules/FindRTI.cmake @@ -1,37 +1,38 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindRTI -# ------- -# -# Try to find M&S HLA RTI libraries -# -# This module finds if any HLA RTI is installed and locates the standard -# RTI include files and libraries. -# -# RTI is a simulation infrastructure standardized by IEEE and SISO. It -# has a well defined C++ API that assures that simulation applications -# are independent on a particular RTI implementation. -# -# :: -# -# http://en.wikipedia.org/wiki/Run-Time_Infrastructure_(simulation) -# -# -# -# This code sets the following variables: -# -# :: -# -# RTI_INCLUDE_DIR = the directory where RTI includes file are found -# RTI_LIBRARIES = The libraries to link against to use RTI -# RTI_DEFINITIONS = -DRTI_USES_STD_FSTREAM -# RTI_FOUND = Set to FALSE if any HLA RTI was not found -# -# -# -# Report problems to <certi-devel@nongnu.org> +#[=======================================================================[.rst: +FindRTI +------- + +Try to find M&S HLA RTI libraries + +This module finds if any HLA RTI is installed and locates the standard +RTI include files and libraries. + +RTI is a simulation infrastructure standardized by IEEE and SISO. It +has a well defined C++ API that assures that simulation applications +are independent on a particular RTI implementation. + +:: + + http://en.wikipedia.org/wiki/Run-Time_Infrastructure_(simulation) + + + +This code sets the following variables: + +:: + + RTI_INCLUDE_DIR = the directory where RTI includes file are found + RTI_LIBRARIES = The libraries to link against to use RTI + RTI_DEFINITIONS = -DRTI_USES_STD_FSTREAM + RTI_FOUND = Set to FALSE if any HLA RTI was not found + + + +Report problems to <certi-devel@nongnu.org> +#]=======================================================================] macro(RTI_MESSAGE_QUIETLY QUIET TYPE MSG) if(NOT ${QUIET}) diff --git a/Modules/FindRuby.cmake b/Modules/FindRuby.cmake index bd9f8357db..58debdd2ae 100644 --- a/Modules/FindRuby.cmake +++ b/Modules/FindRuby.cmake @@ -1,37 +1,38 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindRuby -# -------- -# -# Find Ruby -# -# This module finds if Ruby is installed and determines where the -# include files and libraries are. Ruby 1.8, 1.9, 2.0 and 2.1 are -# supported. -# -# The minimum required version of Ruby can be specified using the -# standard syntax, e.g. find_package(Ruby 1.8) -# -# It also determines what the name of the library is. This code sets -# the following variables: -# -# ``RUBY_EXECUTABLE`` -# full path to the ruby binary -# ``RUBY_INCLUDE_DIRS`` -# include dirs to be used when using the ruby library -# ``RUBY_LIBRARY`` -# full path to the ruby library -# ``RUBY_VERSION`` -# the version of ruby which was found, e.g. "1.8.7" -# ``RUBY_FOUND`` -# set to true if ruby ws found successfully -# -# Also: -# -# ``RUBY_INCLUDE_PATH`` -# same as RUBY_INCLUDE_DIRS, only provided for compatibility reasons, don't use it +#[=======================================================================[.rst: +FindRuby +-------- + +Find Ruby + +This module finds if Ruby is installed and determines where the +include files and libraries are. Ruby 1.8, 1.9, 2.0 and 2.1 are +supported. + +The minimum required version of Ruby can be specified using the +standard syntax, e.g. find_package(Ruby 1.8) + +It also determines what the name of the library is. This code sets +the following variables: + +``RUBY_EXECUTABLE`` + full path to the ruby binary +``RUBY_INCLUDE_DIRS`` + include dirs to be used when using the ruby library +``RUBY_LIBRARY`` + full path to the ruby library +``RUBY_VERSION`` + the version of ruby which was found, e.g. "1.8.7" +``RUBY_FOUND`` + set to true if ruby ws found successfully + +Also: + +``RUBY_INCLUDE_PATH`` + same as RUBY_INCLUDE_DIRS, only provided for compatibility reasons, don't use it +#]=======================================================================] # RUBY_ARCHDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"archdir"@:>@)'` # RUBY_SITEARCHDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"sitearchdir"@:>@)'` diff --git a/Modules/FindSDL.cmake b/Modules/FindSDL.cmake index 3410018972..2813831516 100644 --- a/Modules/FindSDL.cmake +++ b/Modules/FindSDL.cmake @@ -1,75 +1,76 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindSDL -# ------- -# -# Locate SDL library -# -# This module defines -# -# :: -# -# SDL_LIBRARY, the name of the library to link against -# SDL_FOUND, if false, do not try to link to SDL -# SDL_INCLUDE_DIR, where to find SDL.h -# SDL_VERSION_STRING, human-readable string containing the version of SDL -# -# -# -# This module responds to the flag: -# -# :: -# -# SDL_BUILDING_LIBRARY -# If this is defined, then no SDL_main will be linked in because -# only applications need main(). -# Otherwise, it is assumed you are building an application and this -# module will attempt to locate and set the proper link flags -# as part of the returned SDL_LIBRARY variable. -# -# -# -# Don't forget to include SDLmain.h and SDLmain.m your project for the -# OS X framework based version. (Other versions link to -lSDLmain which -# this module will try to find on your behalf.) Also for OS X, this -# module will automatically add the -framework Cocoa on your behalf. -# -# -# -# Additional Note: If you see an empty SDL_LIBRARY_TEMP in your -# configuration and no SDL_LIBRARY, it means CMake did not find your SDL -# library (SDL.dll, libsdl.so, SDL.framework, etc). Set -# SDL_LIBRARY_TEMP to point to your SDL library, and configure again. -# Similarly, if you see an empty SDLMAIN_LIBRARY, you should set this -# value as appropriate. These values are used to generate the final -# SDL_LIBRARY variable, but when these values are unset, SDL_LIBRARY -# does not get created. -# -# -# -# $SDLDIR is an environment variable that would correspond to the -# ./configure --prefix=$SDLDIR used in building SDL. l.e.galup 9-20-02 -# -# Modified by Eric Wing. Added code to assist with automated building -# by using environmental variables and providing a more -# controlled/consistent search behavior. Added new modifications to -# recognize OS X frameworks and additional Unix paths (FreeBSD, etc). -# Also corrected the header search path to follow "proper" SDL -# guidelines. Added a search for SDLmain which is needed by some -# platforms. Added a search for threads which is needed by some -# platforms. Added needed compile switches for MinGW. -# -# On OSX, this will prefer the Framework version (if found) over others. -# People will have to manually change the cache values of SDL_LIBRARY to -# override this selection or set the CMake environment -# CMAKE_INCLUDE_PATH to modify the search paths. -# -# Note that the header path has changed from SDL/SDL.h to just SDL.h -# This needed to change because "proper" SDL convention is #include -# "SDL.h", not <SDL/SDL.h>. This is done for portability reasons -# because not all systems place things in SDL/ (see FreeBSD). +#[=======================================================================[.rst: +FindSDL +------- + +Locate SDL library + +This module defines + +:: + + SDL_LIBRARY, the name of the library to link against + SDL_FOUND, if false, do not try to link to SDL + SDL_INCLUDE_DIR, where to find SDL.h + SDL_VERSION_STRING, human-readable string containing the version of SDL + + + +This module responds to the flag: + +:: + + SDL_BUILDING_LIBRARY + If this is defined, then no SDL_main will be linked in because + only applications need main(). + Otherwise, it is assumed you are building an application and this + module will attempt to locate and set the proper link flags + as part of the returned SDL_LIBRARY variable. + + + +Don't forget to include SDLmain.h and SDLmain.m your project for the +OS X framework based version. (Other versions link to -lSDLmain which +this module will try to find on your behalf.) Also for OS X, this +module will automatically add the -framework Cocoa on your behalf. + + + +Additional Note: If you see an empty SDL_LIBRARY_TEMP in your +configuration and no SDL_LIBRARY, it means CMake did not find your SDL +library (SDL.dll, libsdl.so, SDL.framework, etc). Set +SDL_LIBRARY_TEMP to point to your SDL library, and configure again. +Similarly, if you see an empty SDLMAIN_LIBRARY, you should set this +value as appropriate. These values are used to generate the final +SDL_LIBRARY variable, but when these values are unset, SDL_LIBRARY +does not get created. + + + +$SDLDIR is an environment variable that would correspond to the +./configure --prefix=$SDLDIR used in building SDL. l.e.galup 9-20-02 + +Modified by Eric Wing. Added code to assist with automated building +by using environmental variables and providing a more +controlled/consistent search behavior. Added new modifications to +recognize OS X frameworks and additional Unix paths (FreeBSD, etc). +Also corrected the header search path to follow "proper" SDL +guidelines. Added a search for SDLmain which is needed by some +platforms. Added a search for threads which is needed by some +platforms. Added needed compile switches for MinGW. + +On OSX, this will prefer the Framework version (if found) over others. +People will have to manually change the cache values of SDL_LIBRARY to +override this selection or set the CMake environment +CMAKE_INCLUDE_PATH to modify the search paths. + +Note that the header path has changed from SDL/SDL.h to just SDL.h +This needed to change because "proper" SDL convention is #include +"SDL.h", not <SDL/SDL.h>. This is done for portability reasons +because not all systems place things in SDL/ (see FreeBSD). +#]=======================================================================] find_path(SDL_INCLUDE_DIR SDL.h HINTS diff --git a/Modules/FindSDL_image.cmake b/Modules/FindSDL_image.cmake index 8cdaa7a05e..e687b49836 100644 --- a/Modules/FindSDL_image.cmake +++ b/Modules/FindSDL_image.cmake @@ -1,40 +1,41 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindSDL_image -# ------------- -# -# Locate SDL_image library -# -# This module defines: -# -# :: -# -# SDL_IMAGE_LIBRARIES, the name of the library to link against -# SDL_IMAGE_INCLUDE_DIRS, where to find the headers -# SDL_IMAGE_FOUND, if false, do not try to link against -# SDL_IMAGE_VERSION_STRING - human-readable string containing the -# version of SDL_image -# -# -# -# For backward compatibility the following variables are also set: -# -# :: -# -# SDLIMAGE_LIBRARY (same value as SDL_IMAGE_LIBRARIES) -# SDLIMAGE_INCLUDE_DIR (same value as SDL_IMAGE_INCLUDE_DIRS) -# SDLIMAGE_FOUND (same value as SDL_IMAGE_FOUND) -# -# -# -# $SDLDIR is an environment variable that would correspond to the -# ./configure --prefix=$SDLDIR used in building SDL. -# -# Created by Eric Wing. This was influenced by the FindSDL.cmake -# module, but with modifications to recognize OS X frameworks and -# additional Unix paths (FreeBSD, etc). +#[=======================================================================[.rst: +FindSDL_image +------------- + +Locate SDL_image library + +This module defines: + +:: + + SDL_IMAGE_LIBRARIES, the name of the library to link against + SDL_IMAGE_INCLUDE_DIRS, where to find the headers + SDL_IMAGE_FOUND, if false, do not try to link against + SDL_IMAGE_VERSION_STRING - human-readable string containing the + version of SDL_image + + + +For backward compatibility the following variables are also set: + +:: + + SDLIMAGE_LIBRARY (same value as SDL_IMAGE_LIBRARIES) + SDLIMAGE_INCLUDE_DIR (same value as SDL_IMAGE_INCLUDE_DIRS) + SDLIMAGE_FOUND (same value as SDL_IMAGE_FOUND) + + + +$SDLDIR is an environment variable that would correspond to the +./configure --prefix=$SDLDIR used in building SDL. + +Created by Eric Wing. This was influenced by the FindSDL.cmake +module, but with modifications to recognize OS X frameworks and +additional Unix paths (FreeBSD, etc). +#]=======================================================================] if(NOT SDL_IMAGE_INCLUDE_DIR AND SDLIMAGE_INCLUDE_DIR) set(SDL_IMAGE_INCLUDE_DIR ${SDLIMAGE_INCLUDE_DIR} CACHE PATH "directory cache diff --git a/Modules/FindSDL_mixer.cmake b/Modules/FindSDL_mixer.cmake index 35233d1215..315400a30e 100644 --- a/Modules/FindSDL_mixer.cmake +++ b/Modules/FindSDL_mixer.cmake @@ -1,40 +1,41 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindSDL_mixer -# ------------- -# -# Locate SDL_mixer library -# -# This module defines: -# -# :: -# -# SDL_MIXER_LIBRARIES, the name of the library to link against -# SDL_MIXER_INCLUDE_DIRS, where to find the headers -# SDL_MIXER_FOUND, if false, do not try to link against -# SDL_MIXER_VERSION_STRING - human-readable string containing the -# version of SDL_mixer -# -# -# -# For backward compatibility the following variables are also set: -# -# :: -# -# SDLMIXER_LIBRARY (same value as SDL_MIXER_LIBRARIES) -# SDLMIXER_INCLUDE_DIR (same value as SDL_MIXER_INCLUDE_DIRS) -# SDLMIXER_FOUND (same value as SDL_MIXER_FOUND) -# -# -# -# $SDLDIR is an environment variable that would correspond to the -# ./configure --prefix=$SDLDIR used in building SDL. -# -# Created by Eric Wing. This was influenced by the FindSDL.cmake -# module, but with modifications to recognize OS X frameworks and -# additional Unix paths (FreeBSD, etc). +#[=======================================================================[.rst: +FindSDL_mixer +------------- + +Locate SDL_mixer library + +This module defines: + +:: + + SDL_MIXER_LIBRARIES, the name of the library to link against + SDL_MIXER_INCLUDE_DIRS, where to find the headers + SDL_MIXER_FOUND, if false, do not try to link against + SDL_MIXER_VERSION_STRING - human-readable string containing the + version of SDL_mixer + + + +For backward compatibility the following variables are also set: + +:: + + SDLMIXER_LIBRARY (same value as SDL_MIXER_LIBRARIES) + SDLMIXER_INCLUDE_DIR (same value as SDL_MIXER_INCLUDE_DIRS) + SDLMIXER_FOUND (same value as SDL_MIXER_FOUND) + + + +$SDLDIR is an environment variable that would correspond to the +./configure --prefix=$SDLDIR used in building SDL. + +Created by Eric Wing. This was influenced by the FindSDL.cmake +module, but with modifications to recognize OS X frameworks and +additional Unix paths (FreeBSD, etc). +#]=======================================================================] if(NOT SDL_MIXER_INCLUDE_DIR AND SDLMIXER_INCLUDE_DIR) set(SDL_MIXER_INCLUDE_DIR ${SDLMIXER_INCLUDE_DIR} CACHE PATH "directory cache diff --git a/Modules/FindSDL_net.cmake b/Modules/FindSDL_net.cmake index b40694668f..28cb4d6c21 100644 --- a/Modules/FindSDL_net.cmake +++ b/Modules/FindSDL_net.cmake @@ -1,39 +1,40 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindSDL_net -# ----------- -# -# Locate SDL_net library -# -# This module defines: -# -# :: -# -# SDL_NET_LIBRARIES, the name of the library to link against -# SDL_NET_INCLUDE_DIRS, where to find the headers -# SDL_NET_FOUND, if false, do not try to link against -# SDL_NET_VERSION_STRING - human-readable string containing the version of SDL_net -# -# -# -# For backward compatibility the following variables are also set: -# -# :: -# -# SDLNET_LIBRARY (same value as SDL_NET_LIBRARIES) -# SDLNET_INCLUDE_DIR (same value as SDL_NET_INCLUDE_DIRS) -# SDLNET_FOUND (same value as SDL_NET_FOUND) -# -# -# -# $SDLDIR is an environment variable that would correspond to the -# ./configure --prefix=$SDLDIR used in building SDL. -# -# Created by Eric Wing. This was influenced by the FindSDL.cmake -# module, but with modifications to recognize OS X frameworks and -# additional Unix paths (FreeBSD, etc). +#[=======================================================================[.rst: +FindSDL_net +----------- + +Locate SDL_net library + +This module defines: + +:: + + SDL_NET_LIBRARIES, the name of the library to link against + SDL_NET_INCLUDE_DIRS, where to find the headers + SDL_NET_FOUND, if false, do not try to link against + SDL_NET_VERSION_STRING - human-readable string containing the version of SDL_net + + + +For backward compatibility the following variables are also set: + +:: + + SDLNET_LIBRARY (same value as SDL_NET_LIBRARIES) + SDLNET_INCLUDE_DIR (same value as SDL_NET_INCLUDE_DIRS) + SDLNET_FOUND (same value as SDL_NET_FOUND) + + + +$SDLDIR is an environment variable that would correspond to the +./configure --prefix=$SDLDIR used in building SDL. + +Created by Eric Wing. This was influenced by the FindSDL.cmake +module, but with modifications to recognize OS X frameworks and +additional Unix paths (FreeBSD, etc). +#]=======================================================================] if(NOT SDL_NET_INCLUDE_DIR AND SDLNET_INCLUDE_DIR) set(SDL_NET_INCLUDE_DIR ${SDLNET_INCLUDE_DIR} CACHE PATH "directory cache diff --git a/Modules/FindSDL_sound.cmake b/Modules/FindSDL_sound.cmake index cf33a4c2cc..e2179811e3 100644 --- a/Modules/FindSDL_sound.cmake +++ b/Modules/FindSDL_sound.cmake @@ -1,84 +1,85 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindSDL_sound -# ------------- -# -# Locates the SDL_sound library -# -# -# -# This module depends on SDL being found and must be called AFTER -# FindSDL.cmake is called. -# -# This module defines -# -# :: -# -# SDL_SOUND_INCLUDE_DIR, where to find SDL_sound.h -# SDL_SOUND_FOUND, if false, do not try to link to SDL_sound -# SDL_SOUND_LIBRARIES, this contains the list of libraries that you need -# to link against. -# SDL_SOUND_EXTRAS, this is an optional variable for you to add your own -# flags to SDL_SOUND_LIBRARIES. This is prepended to SDL_SOUND_LIBRARIES. -# This is available mostly for cases this module failed to anticipate for -# and you must add additional flags. This is marked as ADVANCED. -# SDL_SOUND_VERSION_STRING, human-readable string containing the -# version of SDL_sound -# -# -# -# This module also defines (but you shouldn't need to use directly) -# -# :: -# -# SDL_SOUND_LIBRARY, the name of just the SDL_sound library you would link -# against. Use SDL_SOUND_LIBRARIES for you link instructions and not this one. -# -# And might define the following as needed -# -# :: -# -# MIKMOD_LIBRARY -# MODPLUG_LIBRARY -# OGG_LIBRARY -# VORBIS_LIBRARY -# SMPEG_LIBRARY -# FLAC_LIBRARY -# SPEEX_LIBRARY -# -# -# -# Typically, you should not use these variables directly, and you should -# use SDL_SOUND_LIBRARIES which contains SDL_SOUND_LIBRARY and the other -# audio libraries (if needed) to successfully compile on your system. -# -# Created by Eric Wing. This module is a bit more complicated than the -# other FindSDL* family modules. The reason is that SDL_sound can be -# compiled in a large variety of different ways which are independent of -# platform. SDL_sound may dynamically link against other 3rd party -# libraries to get additional codec support, such as Ogg Vorbis, SMPEG, -# ModPlug, MikMod, FLAC, Speex, and potentially others. Under some -# circumstances which I don't fully understand, there seems to be a -# requirement that dependent libraries of libraries you use must also be -# explicitly linked against in order to successfully compile. SDL_sound -# does not currently have any system in place to know how it was -# compiled. So this CMake module does the hard work in trying to -# discover which 3rd party libraries are required for building (if any). -# This module uses a brute force approach to create a test program that -# uses SDL_sound, and then tries to build it. If the build fails, it -# parses the error output for known symbol names to figure out which -# libraries are needed. -# -# Responds to the $SDLDIR and $SDLSOUNDDIR environmental variable that -# would correspond to the ./configure --prefix=$SDLDIR used in building -# SDL. -# -# On OSX, this will prefer the Framework version (if found) over others. -# People will have to manually change the cache values of SDL_LIBRARY to -# override this selectionor set the CMake environment CMAKE_INCLUDE_PATH -# to modify the search paths. +#[=======================================================================[.rst: +FindSDL_sound +------------- + +Locates the SDL_sound library + + + +This module depends on SDL being found and must be called AFTER +FindSDL.cmake is called. + +This module defines + +:: + + SDL_SOUND_INCLUDE_DIR, where to find SDL_sound.h + SDL_SOUND_FOUND, if false, do not try to link to SDL_sound + SDL_SOUND_LIBRARIES, this contains the list of libraries that you need + to link against. + SDL_SOUND_EXTRAS, this is an optional variable for you to add your own + flags to SDL_SOUND_LIBRARIES. This is prepended to SDL_SOUND_LIBRARIES. + This is available mostly for cases this module failed to anticipate for + and you must add additional flags. This is marked as ADVANCED. + SDL_SOUND_VERSION_STRING, human-readable string containing the + version of SDL_sound + + + +This module also defines (but you shouldn't need to use directly) + +:: + + SDL_SOUND_LIBRARY, the name of just the SDL_sound library you would link + against. Use SDL_SOUND_LIBRARIES for you link instructions and not this one. + +And might define the following as needed + +:: + + MIKMOD_LIBRARY + MODPLUG_LIBRARY + OGG_LIBRARY + VORBIS_LIBRARY + SMPEG_LIBRARY + FLAC_LIBRARY + SPEEX_LIBRARY + + + +Typically, you should not use these variables directly, and you should +use SDL_SOUND_LIBRARIES which contains SDL_SOUND_LIBRARY and the other +audio libraries (if needed) to successfully compile on your system. + +Created by Eric Wing. This module is a bit more complicated than the +other FindSDL* family modules. The reason is that SDL_sound can be +compiled in a large variety of different ways which are independent of +platform. SDL_sound may dynamically link against other 3rd party +libraries to get additional codec support, such as Ogg Vorbis, SMPEG, +ModPlug, MikMod, FLAC, Speex, and potentially others. Under some +circumstances which I don't fully understand, there seems to be a +requirement that dependent libraries of libraries you use must also be +explicitly linked against in order to successfully compile. SDL_sound +does not currently have any system in place to know how it was +compiled. So this CMake module does the hard work in trying to +discover which 3rd party libraries are required for building (if any). +This module uses a brute force approach to create a test program that +uses SDL_sound, and then tries to build it. If the build fails, it +parses the error output for known symbol names to figure out which +libraries are needed. + +Responds to the $SDLDIR and $SDLSOUNDDIR environmental variable that +would correspond to the ./configure --prefix=$SDLDIR used in building +SDL. + +On OSX, this will prefer the Framework version (if found) over others. +People will have to manually change the cache values of SDL_LIBRARY to +override this selectionor set the CMake environment CMAKE_INCLUDE_PATH +to modify the search paths. +#]=======================================================================] set(SDL_SOUND_EXTRAS "" CACHE STRING "SDL_sound extra flags") mark_as_advanced(SDL_SOUND_EXTRAS) diff --git a/Modules/FindSDL_ttf.cmake b/Modules/FindSDL_ttf.cmake index aa705f2266..d5721da0a7 100644 --- a/Modules/FindSDL_ttf.cmake +++ b/Modules/FindSDL_ttf.cmake @@ -1,39 +1,40 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindSDL_ttf -# ----------- -# -# Locate SDL_ttf library -# -# This module defines: -# -# :: -# -# SDL_TTF_LIBRARIES, the name of the library to link against -# SDL_TTF_INCLUDE_DIRS, where to find the headers -# SDL_TTF_FOUND, if false, do not try to link against -# SDL_TTF_VERSION_STRING - human-readable string containing the version of SDL_ttf -# -# -# -# For backward compatibility the following variables are also set: -# -# :: -# -# SDLTTF_LIBRARY (same value as SDL_TTF_LIBRARIES) -# SDLTTF_INCLUDE_DIR (same value as SDL_TTF_INCLUDE_DIRS) -# SDLTTF_FOUND (same value as SDL_TTF_FOUND) -# -# -# -# $SDLDIR is an environment variable that would correspond to the -# ./configure --prefix=$SDLDIR used in building SDL. -# -# Created by Eric Wing. This was influenced by the FindSDL.cmake -# module, but with modifications to recognize OS X frameworks and -# additional Unix paths (FreeBSD, etc). +#[=======================================================================[.rst: +FindSDL_ttf +----------- + +Locate SDL_ttf library + +This module defines: + +:: + + SDL_TTF_LIBRARIES, the name of the library to link against + SDL_TTF_INCLUDE_DIRS, where to find the headers + SDL_TTF_FOUND, if false, do not try to link against + SDL_TTF_VERSION_STRING - human-readable string containing the version of SDL_ttf + + + +For backward compatibility the following variables are also set: + +:: + + SDLTTF_LIBRARY (same value as SDL_TTF_LIBRARIES) + SDLTTF_INCLUDE_DIR (same value as SDL_TTF_INCLUDE_DIRS) + SDLTTF_FOUND (same value as SDL_TTF_FOUND) + + + +$SDLDIR is an environment variable that would correspond to the +./configure --prefix=$SDLDIR used in building SDL. + +Created by Eric Wing. This was influenced by the FindSDL.cmake +module, but with modifications to recognize OS X frameworks and +additional Unix paths (FreeBSD, etc). +#]=======================================================================] if(NOT SDL_TTF_INCLUDE_DIR AND SDLTTF_INCLUDE_DIR) set(SDL_TTF_INCLUDE_DIR ${SDLTTF_INCLUDE_DIR} CACHE PATH "directory cache diff --git a/Modules/FindSWIG.cmake b/Modules/FindSWIG.cmake index 92c032f6ad..fc0ed009da 100644 --- a/Modules/FindSWIG.cmake +++ b/Modules/FindSWIG.cmake @@ -1,29 +1,30 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindSWIG -# -------- -# -# Find SWIG -# -# This module finds an installed SWIG. It sets the following variables: -# -# :: -# -# SWIG_FOUND - set to true if SWIG is found -# SWIG_DIR - the directory where swig is installed -# SWIG_EXECUTABLE - the path to the swig executable -# SWIG_VERSION - the version number of the swig executable -# -# -# -# The minimum required version of SWIG can be specified using the -# standard syntax, e.g. find_package(SWIG 1.1) -# -# All information is collected from the SWIG_EXECUTABLE so the version -# to be found can be changed from the command line by means of setting -# SWIG_EXECUTABLE +#[=======================================================================[.rst: +FindSWIG +-------- + +Find SWIG + +This module finds an installed SWIG. It sets the following variables: + +:: + + SWIG_FOUND - set to true if SWIG is found + SWIG_DIR - the directory where swig is installed + SWIG_EXECUTABLE - the path to the swig executable + SWIG_VERSION - the version number of the swig executable + + + +The minimum required version of SWIG can be specified using the +standard syntax, e.g. find_package(SWIG 1.1) + +All information is collected from the SWIG_EXECUTABLE so the version +to be found can be changed from the command line by means of setting +SWIG_EXECUTABLE +#]=======================================================================] find_program(SWIG_EXECUTABLE NAMES swig3.0 swig2.0 swig) diff --git a/Modules/FindSelfPackers.cmake b/Modules/FindSelfPackers.cmake index ac2c7cf883..1abbcbd7ac 100644 --- a/Modules/FindSelfPackers.cmake +++ b/Modules/FindSelfPackers.cmake @@ -1,19 +1,20 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindSelfPackers -# --------------- -# -# Find upx -# -# This module looks for some executable packers (i.e. software that -# compress executables or shared libs into on-the-fly self-extracting -# executables or shared libs. Examples: -# -# :: -# -# UPX: http://wildsau.idv.uni-linz.ac.at/mfx/upx.html +#[=======================================================================[.rst: +FindSelfPackers +--------------- + +Find upx + +This module looks for some executable packers (i.e. software that +compress executables or shared libs into on-the-fly self-extracting +executables or shared libs. Examples: + +:: + + UPX: http://wildsau.idv.uni-linz.ac.at/mfx/upx.html +#]=======================================================================] include(${CMAKE_CURRENT_LIST_DIR}/FindCygwin.cmake) diff --git a/Modules/FindSquish.cmake b/Modules/FindSquish.cmake index d1ce2002a7..7d495059a7 100644 --- a/Modules/FindSquish.cmake +++ b/Modules/FindSquish.cmake @@ -1,123 +1,124 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindSquish -# ---------- -# -# -- Typical Use -# -# -# -# This module can be used to find Squish. Currently Squish versions 3 -# and 4 are supported. -# -# :: -# -# SQUISH_FOUND If false, don't try to use Squish -# SQUISH_VERSION The full version of Squish found -# SQUISH_VERSION_MAJOR The major version of Squish found -# SQUISH_VERSION_MINOR The minor version of Squish found -# SQUISH_VERSION_PATCH The patch version of Squish found -# -# -# -# :: -# -# SQUISH_INSTALL_DIR The Squish installation directory -# (containing bin, lib, etc) -# SQUISH_SERVER_EXECUTABLE The squishserver executable -# SQUISH_CLIENT_EXECUTABLE The squishrunner executable -# -# -# -# :: -# -# SQUISH_INSTALL_DIR_FOUND Was the install directory found? -# SQUISH_SERVER_EXECUTABLE_FOUND Was the server executable found? -# SQUISH_CLIENT_EXECUTABLE_FOUND Was the client executable found? -# -# -# -# It provides the function squish_v4_add_test() for adding a squish test -# to cmake using Squish 4.x: -# -# :: -# -# squish_v4_add_test(cmakeTestName -# AUT targetName SUITE suiteName TEST squishTestName -# [SETTINGSGROUP group] [PRE_COMMAND command] [POST_COMMAND command] ) -# -# -# -# The arguments have the following meaning: -# -# ``cmakeTestName`` -# this will be used as the first argument for add_test() -# ``AUT targetName`` -# the name of the cmake target which will be used as AUT, i.e. the -# executable which will be tested. -# ``SUITE suiteName`` -# this is either the full path to the squish suite, or just the -# last directory of the suite, i.e. the suite name. In this case -# the CMakeLists.txt which calls squish_add_test() must be located -# in the parent directory of the suite directory. -# ``TEST squishTestName`` -# the name of the squish test, i.e. the name of the subdirectory -# of the test inside the suite directory. -# ``SETTINGSGROUP group`` -# if specified, the given settings group will be used for executing the test. -# If not specified, the groupname will be "CTest_<username>" -# ``PRE_COMMAND command`` -# if specified, the given command will be executed before starting the squish test. -# ``POST_COMMAND command`` -# same as PRE_COMMAND, but after the squish test has been executed. -# -# -# -# :: -# -# enable_testing() -# find_package(Squish 4.0) -# if (SQUISH_FOUND) -# squish_v4_add_test(myTestName -# AUT myApp -# SUITE ${CMAKE_SOURCE_DIR}/tests/mySuite -# TEST someSquishTest -# SETTINGSGROUP myGroup -# ) -# endif () -# -# -# -# -# -# For users of Squish version 3.x the macro squish_v3_add_test() is -# provided: -# -# :: -# -# squish_v3_add_test(testName applicationUnderTest testCase envVars testWrapper) -# Use this macro to add a test using Squish 3.x. -# -# -# -# :: -# -# enable_testing() -# find_package(Squish) -# if (SQUISH_FOUND) -# squish_v3_add_test(myTestName myApplication testCase envVars testWrapper) -# endif () -# -# -# -# macro SQUISH_ADD_TEST(testName applicationUnderTest testCase envVars -# testWrapper) -# -# :: -# -# This is deprecated. Use SQUISH_V3_ADD_TEST() if you are using Squish 3.x instead. +#[=======================================================================[.rst: +FindSquish +---------- + +-- Typical Use + + + +This module can be used to find Squish. Currently Squish versions 3 +and 4 are supported. + +:: + + SQUISH_FOUND If false, don't try to use Squish + SQUISH_VERSION The full version of Squish found + SQUISH_VERSION_MAJOR The major version of Squish found + SQUISH_VERSION_MINOR The minor version of Squish found + SQUISH_VERSION_PATCH The patch version of Squish found + + + +:: + + SQUISH_INSTALL_DIR The Squish installation directory + (containing bin, lib, etc) + SQUISH_SERVER_EXECUTABLE The squishserver executable + SQUISH_CLIENT_EXECUTABLE The squishrunner executable + + + +:: + + SQUISH_INSTALL_DIR_FOUND Was the install directory found? + SQUISH_SERVER_EXECUTABLE_FOUND Was the server executable found? + SQUISH_CLIENT_EXECUTABLE_FOUND Was the client executable found? + + + +It provides the function squish_v4_add_test() for adding a squish test +to cmake using Squish 4.x: + +:: + + squish_v4_add_test(cmakeTestName + AUT targetName SUITE suiteName TEST squishTestName + [SETTINGSGROUP group] [PRE_COMMAND command] [POST_COMMAND command] ) + + + +The arguments have the following meaning: + +``cmakeTestName`` + this will be used as the first argument for add_test() +``AUT targetName`` + the name of the cmake target which will be used as AUT, i.e. the + executable which will be tested. +``SUITE suiteName`` + this is either the full path to the squish suite, or just the + last directory of the suite, i.e. the suite name. In this case + the CMakeLists.txt which calls squish_add_test() must be located + in the parent directory of the suite directory. +``TEST squishTestName`` + the name of the squish test, i.e. the name of the subdirectory + of the test inside the suite directory. +``SETTINGSGROUP group`` + if specified, the given settings group will be used for executing the test. + If not specified, the groupname will be "CTest_<username>" +``PRE_COMMAND command`` + if specified, the given command will be executed before starting the squish test. +``POST_COMMAND command`` + same as PRE_COMMAND, but after the squish test has been executed. + + + +:: + + enable_testing() + find_package(Squish 4.0) + if (SQUISH_FOUND) + squish_v4_add_test(myTestName + AUT myApp + SUITE ${CMAKE_SOURCE_DIR}/tests/mySuite + TEST someSquishTest + SETTINGSGROUP myGroup + ) + endif () + + + + + +For users of Squish version 3.x the macro squish_v3_add_test() is +provided: + +:: + + squish_v3_add_test(testName applicationUnderTest testCase envVars testWrapper) + Use this macro to add a test using Squish 3.x. + + + +:: + + enable_testing() + find_package(Squish) + if (SQUISH_FOUND) + squish_v3_add_test(myTestName myApplication testCase envVars testWrapper) + endif () + + + +macro SQUISH_ADD_TEST(testName applicationUnderTest testCase envVars +testWrapper) + +:: + + This is deprecated. Use SQUISH_V3_ADD_TEST() if you are using Squish 3.x instead. +#]=======================================================================] set(SQUISH_INSTALL_DIR_STRING "Directory containing the bin, doc, and lib directories for Squish; this should be the root of the installation directory.") set(SQUISH_SERVER_EXECUTABLE_STRING "The squishserver executable program.") diff --git a/Modules/FindSubversion.cmake b/Modules/FindSubversion.cmake index e18ae880f7..ce280e2773 100644 --- a/Modules/FindSubversion.cmake +++ b/Modules/FindSubversion.cmake @@ -1,68 +1,69 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindSubversion -# -------------- -# -# Extract information from a subversion working copy -# -# The module defines the following variables: -# -# :: -# -# Subversion_SVN_EXECUTABLE - path to svn command line client -# Subversion_VERSION_SVN - version of svn command line client -# Subversion_FOUND - true if the command line client was found -# SUBVERSION_FOUND - same as Subversion_FOUND, set for compatibility reasons -# -# -# -# The minimum required version of Subversion can be specified using the -# standard syntax, e.g. ``find_package(Subversion 1.4)``. -# -# If the command line client executable is found two macros are defined: -# -# :: -# -# Subversion_WC_INFO(<dir> <var-prefix> [IGNORE_SVN_FAILURE]) -# Subversion_WC_LOG(<dir> <var-prefix>) -# -# ``Subversion_WC_INFO`` extracts information of a subversion working copy at a -# given location. This macro defines the following variables if running -# Subversion's ``info`` command on ``<dir>`` succeeds; otherwise a -# ``SEND_ERROR`` message is generated. The error can be ignored by providing the -# ``IGNORE_SVN_FAILURE`` option, which causes these variables to remain -# undefined. -# -# :: -# -# <var-prefix>_WC_URL - url of the repository (at <dir>) -# <var-prefix>_WC_ROOT - root url of the repository -# <var-prefix>_WC_REVISION - current revision -# <var-prefix>_WC_LAST_CHANGED_AUTHOR - author of last commit -# <var-prefix>_WC_LAST_CHANGED_DATE - date of last commit -# <var-prefix>_WC_LAST_CHANGED_REV - revision of last commit -# <var-prefix>_WC_INFO - output of command `svn info <dir>' -# -# ``Subversion_WC_LOG`` retrieves the log message of the base revision of a -# subversion working copy at a given location. This macro defines the variable: -# -# :: -# -# <var-prefix>_LAST_CHANGED_LOG - last log of base revision -# -# Example usage: -# -# :: -# -# find_package(Subversion) -# if(SUBVERSION_FOUND) -# Subversion_WC_INFO(${PROJECT_SOURCE_DIR} Project) -# message("Current revision is ${Project_WC_REVISION}") -# Subversion_WC_LOG(${PROJECT_SOURCE_DIR} Project) -# message("Last changed log is ${Project_LAST_CHANGED_LOG}") -# endif() +#[=======================================================================[.rst: +FindSubversion +-------------- + +Extract information from a subversion working copy + +The module defines the following variables: + +:: + + Subversion_SVN_EXECUTABLE - path to svn command line client + Subversion_VERSION_SVN - version of svn command line client + Subversion_FOUND - true if the command line client was found + SUBVERSION_FOUND - same as Subversion_FOUND, set for compatibility reasons + + + +The minimum required version of Subversion can be specified using the +standard syntax, e.g. ``find_package(Subversion 1.4)``. + +If the command line client executable is found two macros are defined: + +:: + + Subversion_WC_INFO(<dir> <var-prefix> [IGNORE_SVN_FAILURE]) + Subversion_WC_LOG(<dir> <var-prefix>) + +``Subversion_WC_INFO`` extracts information of a subversion working copy at a +given location. This macro defines the following variables if running +Subversion's ``info`` command on ``<dir>`` succeeds; otherwise a +``SEND_ERROR`` message is generated. The error can be ignored by providing the +``IGNORE_SVN_FAILURE`` option, which causes these variables to remain +undefined. + +:: + + <var-prefix>_WC_URL - url of the repository (at <dir>) + <var-prefix>_WC_ROOT - root url of the repository + <var-prefix>_WC_REVISION - current revision + <var-prefix>_WC_LAST_CHANGED_AUTHOR - author of last commit + <var-prefix>_WC_LAST_CHANGED_DATE - date of last commit + <var-prefix>_WC_LAST_CHANGED_REV - revision of last commit + <var-prefix>_WC_INFO - output of command `svn info <dir>' + +``Subversion_WC_LOG`` retrieves the log message of the base revision of a +subversion working copy at a given location. This macro defines the variable: + +:: + + <var-prefix>_LAST_CHANGED_LOG - last log of base revision + +Example usage: + +:: + + find_package(Subversion) + if(SUBVERSION_FOUND) + Subversion_WC_INFO(${PROJECT_SOURCE_DIR} Project) + message("Current revision is ${Project_WC_REVISION}") + Subversion_WC_LOG(${PROJECT_SOURCE_DIR} Project) + message("Last changed log is ${Project_LAST_CHANGED_LOG}") + endif() +#]=======================================================================] find_program(Subversion_SVN_EXECUTABLE svn PATHS diff --git a/Modules/FindTCL.cmake b/Modules/FindTCL.cmake index ad16e0de19..be47c39a0d 100644 --- a/Modules/FindTCL.cmake +++ b/Modules/FindTCL.cmake @@ -1,48 +1,49 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindTCL -# ------- -# -# TK_INTERNAL_PATH was removed. -# -# This module finds if Tcl is installed and determines where the include -# files and libraries are. It also determines what the name of the -# library is. This code sets the following variables: -# -# :: -# -# TCL_FOUND = Tcl was found -# TK_FOUND = Tk was found -# TCLTK_FOUND = Tcl and Tk were found -# TCL_LIBRARY = path to Tcl library (tcl tcl80) -# TCL_INCLUDE_PATH = path to where tcl.h can be found -# TCL_TCLSH = path to tclsh binary (tcl tcl80) -# TK_LIBRARY = path to Tk library (tk tk80 etc) -# TK_INCLUDE_PATH = path to where tk.h can be found -# TK_WISH = full path to the wish executable -# -# -# -# In an effort to remove some clutter and clear up some issues for -# people who are not necessarily Tcl/Tk gurus/developers, some -# variables were moved or removed. Changes compared to CMake 2.4 are: -# -# :: -# -# => they were only useful for people writing Tcl/Tk extensions. -# => these libs are not packaged by default with Tcl/Tk distributions. -# Even when Tcl/Tk is built from source, several flavors of debug libs -# are created and there is no real reason to pick a single one -# specifically (say, amongst tcl84g, tcl84gs, or tcl84sgx). -# Let's leave that choice to the user by allowing him to assign -# TCL_LIBRARY to any Tcl library, debug or not. -# => this ended up being only a Win32 variable, and there is a lot of -# confusion regarding the location of this file in an installed Tcl/Tk -# tree anyway (see 8.5 for example). If you need the internal path at -# this point it is safer you ask directly where the *source* tree is -# and dig from there. +#[=======================================================================[.rst: +FindTCL +------- + +TK_INTERNAL_PATH was removed. + +This module finds if Tcl is installed and determines where the include +files and libraries are. It also determines what the name of the +library is. This code sets the following variables: + +:: + + TCL_FOUND = Tcl was found + TK_FOUND = Tk was found + TCLTK_FOUND = Tcl and Tk were found + TCL_LIBRARY = path to Tcl library (tcl tcl80) + TCL_INCLUDE_PATH = path to where tcl.h can be found + TCL_TCLSH = path to tclsh binary (tcl tcl80) + TK_LIBRARY = path to Tk library (tk tk80 etc) + TK_INCLUDE_PATH = path to where tk.h can be found + TK_WISH = full path to the wish executable + + + +In an effort to remove some clutter and clear up some issues for +people who are not necessarily Tcl/Tk gurus/developers, some +variables were moved or removed. Changes compared to CMake 2.4 are: + +:: + + => they were only useful for people writing Tcl/Tk extensions. + => these libs are not packaged by default with Tcl/Tk distributions. + Even when Tcl/Tk is built from source, several flavors of debug libs + are created and there is no real reason to pick a single one + specifically (say, amongst tcl84g, tcl84gs, or tcl84sgx). + Let's leave that choice to the user by allowing him to assign + TCL_LIBRARY to any Tcl library, debug or not. + => this ended up being only a Win32 variable, and there is a lot of + confusion regarding the location of this file in an installed Tcl/Tk + tree anyway (see 8.5 for example). If you need the internal path at + this point it is safer you ask directly where the *source* tree is + and dig from there. +#]=======================================================================] include(${CMAKE_CURRENT_LIST_DIR}/CMakeFindFrameworks.cmake) include(${CMAKE_CURRENT_LIST_DIR}/FindTclsh.cmake) diff --git a/Modules/FindTIFF.cmake b/Modules/FindTIFF.cmake index b622ca61ca..63ca936c4f 100644 --- a/Modules/FindTIFF.cmake +++ b/Modules/FindTIFF.cmake @@ -1,43 +1,44 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindTIFF -# -------- -# -# Find the TIFF library (libtiff). -# -# Imported targets -# ^^^^^^^^^^^^^^^^ -# -# This module defines the following :prop_tgt:`IMPORTED` targets: -# -# ``TIFF::TIFF`` -# The TIFF library, if found. -# -# Result variables -# ^^^^^^^^^^^^^^^^ -# -# This module will set the following variables in your project: -# -# ``TIFF_FOUND`` -# true if the TIFF headers and libraries were found -# ``TIFF_INCLUDE_DIR`` -# the directory containing the TIFF headers -# ``TIFF_INCLUDE_DIRS`` -# the directory containing the TIFF headers -# ``TIFF_LIBRARIES`` -# TIFF libraries to be linked -# -# Cache variables -# ^^^^^^^^^^^^^^^ -# -# The following cache variables may also be set: -# -# ``TIFF_INCLUDE_DIR`` -# the directory containing the TIFF headers -# ``TIFF_LIBRARY`` -# the path to the TIFF library +#[=======================================================================[.rst: +FindTIFF +-------- + +Find the TIFF library (libtiff). + +Imported targets +^^^^^^^^^^^^^^^^ + +This module defines the following :prop_tgt:`IMPORTED` targets: + +``TIFF::TIFF`` + The TIFF library, if found. + +Result variables +^^^^^^^^^^^^^^^^ + +This module will set the following variables in your project: + +``TIFF_FOUND`` + true if the TIFF headers and libraries were found +``TIFF_INCLUDE_DIR`` + the directory containing the TIFF headers +``TIFF_INCLUDE_DIRS`` + the directory containing the TIFF headers +``TIFF_LIBRARIES`` + TIFF libraries to be linked + +Cache variables +^^^^^^^^^^^^^^^ + +The following cache variables may also be set: + +``TIFF_INCLUDE_DIR`` + the directory containing the TIFF headers +``TIFF_LIBRARY`` + the path to the TIFF library +#]=======================================================================] find_path(TIFF_INCLUDE_DIR tiff.h) diff --git a/Modules/FindTclStub.cmake b/Modules/FindTclStub.cmake index db0a7a1762..8f634809eb 100644 --- a/Modules/FindTclStub.cmake +++ b/Modules/FindTclStub.cmake @@ -1,48 +1,49 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindTclStub -# ----------- -# -# TCL_STUB_LIBRARY_DEBUG and TK_STUB_LIBRARY_DEBUG were removed. -# -# This module finds Tcl stub libraries. It first finds Tcl include -# files and libraries by calling FindTCL.cmake. How to Use the Tcl -# Stubs Library: -# -# :: -# -# http://tcl.activestate.com/doc/howto/stubs.html -# -# Using Stub Libraries: -# -# :: -# -# http://safari.oreilly.com/0130385603/ch48lev1sec3 -# -# This code sets the following variables: -# -# :: -# -# TCL_STUB_LIBRARY = path to Tcl stub library -# TK_STUB_LIBRARY = path to Tk stub library -# TTK_STUB_LIBRARY = path to ttk stub library -# -# -# -# In an effort to remove some clutter and clear up some issues for -# people who are not necessarily Tcl/Tk gurus/developers, some -# variables were moved or removed. Changes compared to CMake 2.4 are: -# -# :: -# -# => these libs are not packaged by default with Tcl/Tk distributions. -# Even when Tcl/Tk is built from source, several flavors of debug libs -# are created and there is no real reason to pick a single one -# specifically (say, amongst tclstub84g, tclstub84gs, or tclstub84sgx). -# Let's leave that choice to the user by allowing him to assign -# TCL_STUB_LIBRARY to any Tcl library, debug or not. +#[=======================================================================[.rst: +FindTclStub +----------- + +TCL_STUB_LIBRARY_DEBUG and TK_STUB_LIBRARY_DEBUG were removed. + +This module finds Tcl stub libraries. It first finds Tcl include +files and libraries by calling FindTCL.cmake. How to Use the Tcl +Stubs Library: + +:: + + http://tcl.activestate.com/doc/howto/stubs.html + +Using Stub Libraries: + +:: + + http://safari.oreilly.com/0130385603/ch48lev1sec3 + +This code sets the following variables: + +:: + + TCL_STUB_LIBRARY = path to Tcl stub library + TK_STUB_LIBRARY = path to Tk stub library + TTK_STUB_LIBRARY = path to ttk stub library + + + +In an effort to remove some clutter and clear up some issues for +people who are not necessarily Tcl/Tk gurus/developers, some +variables were moved or removed. Changes compared to CMake 2.4 are: + +:: + + => these libs are not packaged by default with Tcl/Tk distributions. + Even when Tcl/Tk is built from source, several flavors of debug libs + are created and there is no real reason to pick a single one + specifically (say, amongst tclstub84g, tclstub84gs, or tclstub84sgx). + Let's leave that choice to the user by allowing him to assign + TCL_STUB_LIBRARY to any Tcl library, debug or not. +#]=======================================================================] include(${CMAKE_CURRENT_LIST_DIR}/FindTCL.cmake) diff --git a/Modules/FindTclsh.cmake b/Modules/FindTclsh.cmake index 9bf935d8e0..e3bd11040b 100644 --- a/Modules/FindTclsh.cmake +++ b/Modules/FindTclsh.cmake @@ -1,23 +1,24 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindTclsh -# --------- -# -# Find tclsh -# -# This module finds if TCL is installed and determines where the include -# files and libraries are. It also determines what the name of the -# library is. This code sets the following variables: -# -# :: -# -# TCLSH_FOUND = TRUE if tclsh has been found -# TCL_TCLSH = the path to the tclsh executable -# -# In cygwin, look for the cygwin version first. Don't look for it later -# to avoid finding the cygwin version on a Win32 build. +#[=======================================================================[.rst: +FindTclsh +--------- + +Find tclsh + +This module finds if TCL is installed and determines where the include +files and libraries are. It also determines what the name of the +library is. This code sets the following variables: + +:: + + TCLSH_FOUND = TRUE if tclsh has been found + TCL_TCLSH = the path to the tclsh executable + +In cygwin, look for the cygwin version first. Don't look for it later +to avoid finding the cygwin version on a Win32 build. +#]=======================================================================] if(CYGWIN) find_program(TCL_TCLSH NAMES cygtclsh83 cygtclsh80) diff --git a/Modules/FindThreads.cmake b/Modules/FindThreads.cmake index a0148dd900..221108182c 100644 --- a/Modules/FindThreads.cmake +++ b/Modules/FindThreads.cmake @@ -1,44 +1,45 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindThreads -# ----------- -# -# This module determines the thread library of the system. -# -# The following variables are set -# -# :: -# -# CMAKE_THREAD_LIBS_INIT - the thread library -# CMAKE_USE_SPROC_INIT - are we using sproc? -# CMAKE_USE_WIN32_THREADS_INIT - using WIN32 threads? -# CMAKE_USE_PTHREADS_INIT - are we using pthreads -# CMAKE_HP_PTHREADS_INIT - are we using hp pthreads -# -# The following import target is created -# -# :: -# -# Threads::Threads -# -# For systems with multiple thread libraries, caller can set -# -# :: -# -# CMAKE_THREAD_PREFER_PTHREAD -# -# If the use of the -pthread compiler and linker flag is preferred then the -# caller can set -# -# :: -# -# THREADS_PREFER_PTHREAD_FLAG -# -# Please note that the compiler flag can only be used with the imported -# target. Use of both the imported target as well as this switch is highly -# recommended for new code. +#[=======================================================================[.rst: +FindThreads +----------- + +This module determines the thread library of the system. + +The following variables are set + +:: + + CMAKE_THREAD_LIBS_INIT - the thread library + CMAKE_USE_SPROC_INIT - are we using sproc? + CMAKE_USE_WIN32_THREADS_INIT - using WIN32 threads? + CMAKE_USE_PTHREADS_INIT - are we using pthreads + CMAKE_HP_PTHREADS_INIT - are we using hp pthreads + +The following import target is created + +:: + + Threads::Threads + +For systems with multiple thread libraries, caller can set + +:: + + CMAKE_THREAD_PREFER_PTHREAD + +If the use of the -pthread compiler and linker flag is preferred then the +caller can set + +:: + + THREADS_PREFER_PTHREAD_FLAG + +Please note that the compiler flag can only be used with the imported +target. Use of both the imported target as well as this switch is highly +recommended for new code. +#]=======================================================================] include (CheckLibraryExists) include (CheckSymbolExists) diff --git a/Modules/FindUnixCommands.cmake b/Modules/FindUnixCommands.cmake index 45047a9497..3a735f79bc 100644 --- a/Modules/FindUnixCommands.cmake +++ b/Modules/FindUnixCommands.cmake @@ -1,14 +1,15 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindUnixCommands -# ---------------- -# -# Find Unix commands, including the ones from Cygwin -# -# This module looks for the Unix commands bash, cp, gzip, mv, rm, and tar -# and stores the result in the variables BASH, CP, GZIP, MV, RM, and TAR. +#[=======================================================================[.rst: +FindUnixCommands +---------------- + +Find Unix commands, including the ones from Cygwin + +This module looks for the Unix commands bash, cp, gzip, mv, rm, and tar +and stores the result in the variables BASH, CP, GZIP, MV, RM, and TAR. +#]=======================================================================] include(${CMAKE_CURRENT_LIST_DIR}/FindCygwin.cmake) diff --git a/Modules/FindVulkan.cmake b/Modules/FindVulkan.cmake index 4c60ed7da6..b1201b4ef8 100644 --- a/Modules/FindVulkan.cmake +++ b/Modules/FindVulkan.cmake @@ -1,32 +1,33 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindVulkan -# ---------- -# -# Try to find Vulkan -# -# IMPORTED Targets -# ^^^^^^^^^^^^^^^^ -# -# This module defines :prop_tgt:`IMPORTED` target ``Vulkan::Vulkan``, if -# Vulkan has been found. -# -# Result Variables -# ^^^^^^^^^^^^^^^^ -# -# This module defines the following variables:: -# -# Vulkan_FOUND - True if Vulkan was found -# Vulkan_INCLUDE_DIRS - include directories for Vulkan -# Vulkan_LIBRARIES - link against this library to use Vulkan -# -# The module will also define two cache variables:: -# -# Vulkan_INCLUDE_DIR - the Vulkan include directory -# Vulkan_LIBRARY - the path to the Vulkan library -# +#[=======================================================================[.rst: +FindVulkan +---------- + +Try to find Vulkan + +IMPORTED Targets +^^^^^^^^^^^^^^^^ + +This module defines :prop_tgt:`IMPORTED` target ``Vulkan::Vulkan``, if +Vulkan has been found. + +Result Variables +^^^^^^^^^^^^^^^^ + +This module defines the following variables:: + + Vulkan_FOUND - True if Vulkan was found + Vulkan_INCLUDE_DIRS - include directories for Vulkan + Vulkan_LIBRARIES - link against this library to use Vulkan + +The module will also define two cache variables:: + + Vulkan_INCLUDE_DIR - the Vulkan include directory + Vulkan_LIBRARY - the path to the Vulkan library + +#]=======================================================================] if(WIN32) find_path(Vulkan_INCLUDE_DIR diff --git a/Modules/FindWget.cmake b/Modules/FindWget.cmake index 4fcb2fa378..bd01ec2018 100644 --- a/Modules/FindWget.cmake +++ b/Modules/FindWget.cmake @@ -1,18 +1,19 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindWget -# -------- -# -# Find wget -# -# This module looks for wget. This module defines the following values: -# -# :: -# -# WGET_EXECUTABLE: the full path to the wget tool. -# WGET_FOUND: True if wget has been found. +#[=======================================================================[.rst: +FindWget +-------- + +Find wget + +This module looks for wget. This module defines the following values: + +:: + + WGET_EXECUTABLE: the full path to the wget tool. + WGET_FOUND: True if wget has been found. +#]=======================================================================] include(${CMAKE_CURRENT_LIST_DIR}/FindCygwin.cmake) diff --git a/Modules/FindWish.cmake b/Modules/FindWish.cmake index b64b04138e..b332bde9b1 100644 --- a/Modules/FindWish.cmake +++ b/Modules/FindWish.cmake @@ -1,23 +1,24 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindWish -# -------- -# -# Find wish installation -# -# This module finds if TCL is installed and determines where the include -# files and libraries are. It also determines what the name of the -# library is. This code sets the following variables: -# -# :: -# -# TK_WISH = the path to the wish executable -# -# -# -# if UNIX is defined, then it will look for the cygwin version first +#[=======================================================================[.rst: +FindWish +-------- + +Find wish installation + +This module finds if TCL is installed and determines where the include +files and libraries are. It also determines what the name of the +library is. This code sets the following variables: + +:: + + TK_WISH = the path to the wish executable + + + +if UNIX is defined, then it will look for the cygwin version first +#]=======================================================================] if(UNIX) find_program(TK_WISH cygwish80 ) diff --git a/Modules/FindX11.cmake b/Modules/FindX11.cmake index f7dfc82579..232804a222 100644 --- a/Modules/FindX11.cmake +++ b/Modules/FindX11.cmake @@ -1,58 +1,59 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindX11 -# ------- -# -# Find X11 installation -# -# Try to find X11 on UNIX systems. The following values are defined -# -# :: -# -# X11_FOUND - True if X11 is available -# X11_INCLUDE_DIR - include directories to use X11 -# X11_LIBRARIES - link against these to use X11 -# -# and also the following more fine grained variables: -# -# :: -# -# X11_ICE_INCLUDE_PATH, X11_ICE_LIB, X11_ICE_FOUND -# X11_SM_INCLUDE_PATH, X11_SM_LIB, X11_SM_FOUND -# X11_X11_INCLUDE_PATH, X11_X11_LIB -# X11_Xaccessrules_INCLUDE_PATH, X11_Xaccess_FOUND -# X11_Xaccessstr_INCLUDE_PATH, X11_Xaccess_FOUND -# X11_Xau_INCLUDE_PATH, X11_Xau_LIB, X11_Xau_FOUND -# X11_Xcomposite_INCLUDE_PATH, X11_Xcomposite_LIB, X11_Xcomposite_FOUND -# X11_Xcursor_INCLUDE_PATH, X11_Xcursor_LIB, X11_Xcursor_FOUND -# X11_Xdamage_INCLUDE_PATH, X11_Xdamage_LIB, X11_Xdamage_FOUND -# X11_Xdmcp_INCLUDE_PATH, X11_Xdmcp_LIB, X11_Xdmcp_FOUND -# X11_Xext_LIB, X11_Xext_FOUND -# X11_dpms_INCLUDE_PATH, (in X11_Xext_LIB), X11_dpms_FOUND -# X11_XShm_INCLUDE_PATH, (in X11_Xext_LIB), X11_XShm_FOUND -# X11_Xshape_INCLUDE_PATH, (in X11_Xext_LIB), X11_Xshape_FOUND -# X11_xf86misc_INCLUDE_PATH, X11_Xxf86misc_LIB, X11_xf86misc_FOUND -# X11_xf86vmode_INCLUDE_PATH, X11_Xxf86vm_LIB X11_xf86vmode_FOUND -# X11_Xfixes_INCLUDE_PATH, X11_Xfixes_LIB, X11_Xfixes_FOUND -# X11_Xft_INCLUDE_PATH, X11_Xft_LIB, X11_Xft_FOUND -# X11_Xi_INCLUDE_PATH, X11_Xi_LIB, X11_Xi_FOUND -# X11_Xinerama_INCLUDE_PATH, X11_Xinerama_LIB, X11_Xinerama_FOUND -# X11_Xinput_INCLUDE_PATH, X11_Xinput_LIB, X11_Xinput_FOUND -# X11_Xkb_INCLUDE_PATH, X11_Xkb_FOUND -# X11_Xkblib_INCLUDE_PATH, X11_Xkb_FOUND -# X11_Xkbfile_INCLUDE_PATH, X11_Xkbfile_LIB, X11_Xkbfile_FOUND -# X11_Xmu_INCLUDE_PATH, X11_Xmu_LIB, X11_Xmu_FOUND -# X11_Xpm_INCLUDE_PATH, X11_Xpm_LIB, X11_Xpm_FOUND -# X11_XTest_INCLUDE_PATH, X11_XTest_LIB, X11_XTest_FOUND -# X11_Xrandr_INCLUDE_PATH, X11_Xrandr_LIB, X11_Xrandr_FOUND -# X11_Xrender_INCLUDE_PATH, X11_Xrender_LIB, X11_Xrender_FOUND -# X11_Xscreensaver_INCLUDE_PATH, X11_Xscreensaver_LIB, X11_Xscreensaver_FOUND -# X11_Xt_INCLUDE_PATH, X11_Xt_LIB, X11_Xt_FOUND -# X11_Xutil_INCLUDE_PATH, X11_Xutil_FOUND -# X11_Xv_INCLUDE_PATH, X11_Xv_LIB, X11_Xv_FOUND -# X11_XSync_INCLUDE_PATH, (in X11_Xext_LIB), X11_XSync_FOUND +#[=======================================================================[.rst: +FindX11 +------- + +Find X11 installation + +Try to find X11 on UNIX systems. The following values are defined + +:: + + X11_FOUND - True if X11 is available + X11_INCLUDE_DIR - include directories to use X11 + X11_LIBRARIES - link against these to use X11 + +and also the following more fine grained variables: + +:: + + X11_ICE_INCLUDE_PATH, X11_ICE_LIB, X11_ICE_FOUND + X11_SM_INCLUDE_PATH, X11_SM_LIB, X11_SM_FOUND + X11_X11_INCLUDE_PATH, X11_X11_LIB + X11_Xaccessrules_INCLUDE_PATH, X11_Xaccess_FOUND + X11_Xaccessstr_INCLUDE_PATH, X11_Xaccess_FOUND + X11_Xau_INCLUDE_PATH, X11_Xau_LIB, X11_Xau_FOUND + X11_Xcomposite_INCLUDE_PATH, X11_Xcomposite_LIB, X11_Xcomposite_FOUND + X11_Xcursor_INCLUDE_PATH, X11_Xcursor_LIB, X11_Xcursor_FOUND + X11_Xdamage_INCLUDE_PATH, X11_Xdamage_LIB, X11_Xdamage_FOUND + X11_Xdmcp_INCLUDE_PATH, X11_Xdmcp_LIB, X11_Xdmcp_FOUND + X11_Xext_LIB, X11_Xext_FOUND + X11_dpms_INCLUDE_PATH, (in X11_Xext_LIB), X11_dpms_FOUND + X11_XShm_INCLUDE_PATH, (in X11_Xext_LIB), X11_XShm_FOUND + X11_Xshape_INCLUDE_PATH, (in X11_Xext_LIB), X11_Xshape_FOUND + X11_xf86misc_INCLUDE_PATH, X11_Xxf86misc_LIB, X11_xf86misc_FOUND + X11_xf86vmode_INCLUDE_PATH, X11_Xxf86vm_LIB X11_xf86vmode_FOUND + X11_Xfixes_INCLUDE_PATH, X11_Xfixes_LIB, X11_Xfixes_FOUND + X11_Xft_INCLUDE_PATH, X11_Xft_LIB, X11_Xft_FOUND + X11_Xi_INCLUDE_PATH, X11_Xi_LIB, X11_Xi_FOUND + X11_Xinerama_INCLUDE_PATH, X11_Xinerama_LIB, X11_Xinerama_FOUND + X11_Xinput_INCLUDE_PATH, X11_Xinput_LIB, X11_Xinput_FOUND + X11_Xkb_INCLUDE_PATH, X11_Xkb_FOUND + X11_Xkblib_INCLUDE_PATH, X11_Xkb_FOUND + X11_Xkbfile_INCLUDE_PATH, X11_Xkbfile_LIB, X11_Xkbfile_FOUND + X11_Xmu_INCLUDE_PATH, X11_Xmu_LIB, X11_Xmu_FOUND + X11_Xpm_INCLUDE_PATH, X11_Xpm_LIB, X11_Xpm_FOUND + X11_XTest_INCLUDE_PATH, X11_XTest_LIB, X11_XTest_FOUND + X11_Xrandr_INCLUDE_PATH, X11_Xrandr_LIB, X11_Xrandr_FOUND + X11_Xrender_INCLUDE_PATH, X11_Xrender_LIB, X11_Xrender_FOUND + X11_Xscreensaver_INCLUDE_PATH, X11_Xscreensaver_LIB, X11_Xscreensaver_FOUND + X11_Xt_INCLUDE_PATH, X11_Xt_LIB, X11_Xt_FOUND + X11_Xutil_INCLUDE_PATH, X11_Xutil_FOUND + X11_Xv_INCLUDE_PATH, X11_Xv_LIB, X11_Xv_FOUND + X11_XSync_INCLUDE_PATH, (in X11_Xext_LIB), X11_XSync_FOUND +#]=======================================================================] if (UNIX) set(X11_FOUND 0) diff --git a/Modules/FindXMLRPC.cmake b/Modules/FindXMLRPC.cmake index e7ae9197d9..69e6df22bf 100644 --- a/Modules/FindXMLRPC.cmake +++ b/Modules/FindXMLRPC.cmake @@ -1,35 +1,36 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindXMLRPC -# ---------- -# -# Find xmlrpc -# -# Find the native XMLRPC headers and libraries. -# -# :: -# -# XMLRPC_INCLUDE_DIRS - where to find xmlrpc.h, etc. -# XMLRPC_LIBRARIES - List of libraries when using xmlrpc. -# XMLRPC_FOUND - True if xmlrpc found. -# -# XMLRPC modules may be specified as components for this find module. -# Modules may be listed by running "xmlrpc-c-config". Modules include: -# -# :: -# -# c++ C++ wrapper code -# libwww-client libwww-based client -# cgi-server CGI-based server -# abyss-server ABYSS-based server -# -# Typical usage: -# -# :: -# -# find_package(XMLRPC REQUIRED libwww-client) +#[=======================================================================[.rst: +FindXMLRPC +---------- + +Find xmlrpc + +Find the native XMLRPC headers and libraries. + +:: + + XMLRPC_INCLUDE_DIRS - where to find xmlrpc.h, etc. + XMLRPC_LIBRARIES - List of libraries when using xmlrpc. + XMLRPC_FOUND - True if xmlrpc found. + +XMLRPC modules may be specified as components for this find module. +Modules may be listed by running "xmlrpc-c-config". Modules include: + +:: + + c++ C++ wrapper code + libwww-client libwww-based client + cgi-server CGI-based server + abyss-server ABYSS-based server + +Typical usage: + +:: + + find_package(XMLRPC REQUIRED libwww-client) +#]=======================================================================] # First find the config script from which to obtain other values. find_program(XMLRPC_C_CONFIG NAMES xmlrpc-c-config) diff --git a/Modules/FindXalanC.cmake b/Modules/FindXalanC.cmake index 1951b49e1e..0eba3d9e67 100644 --- a/Modules/FindXalanC.cmake +++ b/Modules/FindXalanC.cmake @@ -1,45 +1,46 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindXalanC -# ----------- -# -# Find the Apache Xalan-C++ XSL transform processor headers and libraries. -# -# Imported targets -# ^^^^^^^^^^^^^^^^ -# -# This module defines the following :prop_tgt:`IMPORTED` targets: -# -# ``XalanC::XalanC`` -# The Xalan-C++ ``xalan-c`` library, if found. -# -# Result variables -# ^^^^^^^^^^^^^^^^ -# -# This module will set the following variables in your project: -# -# ``XalanC_FOUND`` -# true if the Xalan headers and libraries were found -# ``XalanC_VERSION`` -# Xalan release version -# ``XalanC_INCLUDE_DIRS`` -# the directory containing the Xalan headers; note -# ``XercesC_INCLUDE_DIRS`` is also required -# ``XalanC_LIBRARIES`` -# Xalan libraries to be linked; note ``XercesC_LIBRARIES`` is also -# required -# -# Cache variables -# ^^^^^^^^^^^^^^^ -# -# The following cache variables may also be set: -# -# ``XalanC_INCLUDE_DIR`` -# the directory containing the Xalan headers -# ``XalanC_LIBRARY`` -# the Xalan library +#[=======================================================================[.rst: +FindXalanC +----------- + +Find the Apache Xalan-C++ XSL transform processor headers and libraries. + +Imported targets +^^^^^^^^^^^^^^^^ + +This module defines the following :prop_tgt:`IMPORTED` targets: + +``XalanC::XalanC`` + The Xalan-C++ ``xalan-c`` library, if found. + +Result variables +^^^^^^^^^^^^^^^^ + +This module will set the following variables in your project: + +``XalanC_FOUND`` + true if the Xalan headers and libraries were found +``XalanC_VERSION`` + Xalan release version +``XalanC_INCLUDE_DIRS`` + the directory containing the Xalan headers; note + ``XercesC_INCLUDE_DIRS`` is also required +``XalanC_LIBRARIES`` + Xalan libraries to be linked; note ``XercesC_LIBRARIES`` is also + required + +Cache variables +^^^^^^^^^^^^^^^ + +The following cache variables may also be set: + +``XalanC_INCLUDE_DIR`` + the directory containing the Xalan headers +``XalanC_LIBRARY`` + the Xalan library +#]=======================================================================] # Written by Roger Leigh <rleigh@codelibre.net> diff --git a/Modules/FindXercesC.cmake b/Modules/FindXercesC.cmake index 55db7aeb7f..085fafcfc8 100644 --- a/Modules/FindXercesC.cmake +++ b/Modules/FindXercesC.cmake @@ -1,43 +1,44 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindXercesC -# ----------- -# -# Find the Apache Xerces-C++ validating XML parser headers and libraries. -# -# Imported targets -# ^^^^^^^^^^^^^^^^ -# -# This module defines the following :prop_tgt:`IMPORTED` targets: -# -# ``XercesC::XercesC`` -# The Xerces-C++ ``xerces-c`` library, if found. -# -# Result variables -# ^^^^^^^^^^^^^^^^ -# -# This module will set the following variables in your project: -# -# ``XercesC_FOUND`` -# true if the Xerces headers and libraries were found -# ``XercesC_VERSION`` -# Xerces release version -# ``XercesC_INCLUDE_DIRS`` -# the directory containing the Xerces headers -# ``XercesC_LIBRARIES`` -# Xerces libraries to be linked -# -# Cache variables -# ^^^^^^^^^^^^^^^ -# -# The following cache variables may also be set: -# -# ``XercesC_INCLUDE_DIR`` -# the directory containing the Xerces headers -# ``XercesC_LIBRARY`` -# the Xerces library +#[=======================================================================[.rst: +FindXercesC +----------- + +Find the Apache Xerces-C++ validating XML parser headers and libraries. + +Imported targets +^^^^^^^^^^^^^^^^ + +This module defines the following :prop_tgt:`IMPORTED` targets: + +``XercesC::XercesC`` + The Xerces-C++ ``xerces-c`` library, if found. + +Result variables +^^^^^^^^^^^^^^^^ + +This module will set the following variables in your project: + +``XercesC_FOUND`` + true if the Xerces headers and libraries were found +``XercesC_VERSION`` + Xerces release version +``XercesC_INCLUDE_DIRS`` + the directory containing the Xerces headers +``XercesC_LIBRARIES`` + Xerces libraries to be linked + +Cache variables +^^^^^^^^^^^^^^^ + +The following cache variables may also be set: + +``XercesC_INCLUDE_DIR`` + the directory containing the Xerces headers +``XercesC_LIBRARY`` + the Xerces library +#]=======================================================================] # Written by Roger Leigh <rleigh@codelibre.net> diff --git a/Modules/FindZLIB.cmake b/Modules/FindZLIB.cmake index 1a4635a7d6..790eb423cf 100644 --- a/Modules/FindZLIB.cmake +++ b/Modules/FindZLIB.cmake @@ -1,53 +1,54 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindZLIB -# -------- -# -# Find the native ZLIB includes and library. -# -# IMPORTED Targets -# ^^^^^^^^^^^^^^^^ -# -# This module defines :prop_tgt:`IMPORTED` target ``ZLIB::ZLIB``, if -# ZLIB has been found. -# -# Result Variables -# ^^^^^^^^^^^^^^^^ -# -# This module defines the following variables: -# -# :: -# -# ZLIB_INCLUDE_DIRS - where to find zlib.h, etc. -# ZLIB_LIBRARIES - List of libraries when using zlib. -# ZLIB_FOUND - True if zlib found. -# -# :: -# -# ZLIB_VERSION_STRING - The version of zlib found (x.y.z) -# ZLIB_VERSION_MAJOR - The major version of zlib -# ZLIB_VERSION_MINOR - The minor version of zlib -# ZLIB_VERSION_PATCH - The patch version of zlib -# ZLIB_VERSION_TWEAK - The tweak version of zlib -# -# Backward Compatibility -# ^^^^^^^^^^^^^^^^^^^^^^ -# -# The following variable are provided for backward compatibility -# -# :: -# -# ZLIB_MAJOR_VERSION - The major version of zlib -# ZLIB_MINOR_VERSION - The minor version of zlib -# ZLIB_PATCH_VERSION - The patch version of zlib -# -# Hints -# ^^^^^ -# -# A user may set ``ZLIB_ROOT`` to a zlib installation root to tell this -# module where to look. +#[=======================================================================[.rst: +FindZLIB +-------- + +Find the native ZLIB includes and library. + +IMPORTED Targets +^^^^^^^^^^^^^^^^ + +This module defines :prop_tgt:`IMPORTED` target ``ZLIB::ZLIB``, if +ZLIB has been found. + +Result Variables +^^^^^^^^^^^^^^^^ + +This module defines the following variables: + +:: + + ZLIB_INCLUDE_DIRS - where to find zlib.h, etc. + ZLIB_LIBRARIES - List of libraries when using zlib. + ZLIB_FOUND - True if zlib found. + +:: + + ZLIB_VERSION_STRING - The version of zlib found (x.y.z) + ZLIB_VERSION_MAJOR - The major version of zlib + ZLIB_VERSION_MINOR - The minor version of zlib + ZLIB_VERSION_PATCH - The patch version of zlib + ZLIB_VERSION_TWEAK - The tweak version of zlib + +Backward Compatibility +^^^^^^^^^^^^^^^^^^^^^^ + +The following variable are provided for backward compatibility + +:: + + ZLIB_MAJOR_VERSION - The major version of zlib + ZLIB_MINOR_VERSION - The minor version of zlib + ZLIB_PATCH_VERSION - The patch version of zlib + +Hints +^^^^^ + +A user may set ``ZLIB_ROOT`` to a zlib installation root to tell this +module where to look. +#]=======================================================================] set(_ZLIB_SEARCHES) diff --git a/Modules/Findosg.cmake b/Modules/Findosg.cmake index 474ea82b5c..bb28454893 100644 --- a/Modules/Findosg.cmake +++ b/Modules/Findosg.cmake @@ -1,42 +1,43 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# Findosg -# ------- -# -# -# -# -# -# NOTE: It is highly recommended that you use the new -# FindOpenSceneGraph.cmake introduced in CMake 2.6.3 and not use this -# Find module directly. -# -# This is part of the Findosg* suite used to find OpenSceneGraph -# components. Each component is separate and you must opt in to each -# module. You must also opt into OpenGL and OpenThreads (and Producer -# if needed) as these modules won't do it for you. This is to allow you -# control over your own system piece by piece in case you need to opt -# out of certain components or change the Find behavior for a particular -# module (perhaps because the default FindOpenGL.cmake module doesn't -# work with your system as an example). If you want to use a more -# convenient module that includes everything, use the -# FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. -# -# Locate osg This module defines -# -# OSG_FOUND - Was the Osg found? OSG_INCLUDE_DIR - Where to find the -# headers OSG_LIBRARIES - The libraries to link against for the OSG (use -# this) -# -# OSG_LIBRARY - The OSG library OSG_LIBRARY_DEBUG - The OSG debug -# library -# -# $OSGDIR is an environment variable that would correspond to the -# ./configure --prefix=$OSGDIR used in building osg. -# -# Created by Eric Wing. +#[=======================================================================[.rst: +Findosg +------- + + + + + +NOTE: It is highly recommended that you use the new +FindOpenSceneGraph.cmake introduced in CMake 2.6.3 and not use this +Find module directly. + +This is part of the Findosg* suite used to find OpenSceneGraph +components. Each component is separate and you must opt in to each +module. You must also opt into OpenGL and OpenThreads (and Producer +if needed) as these modules won't do it for you. This is to allow you +control over your own system piece by piece in case you need to opt +out of certain components or change the Find behavior for a particular +module (perhaps because the default FindOpenGL.cmake module doesn't +work with your system as an example). If you want to use a more +convenient module that includes everything, use the +FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. + +Locate osg This module defines + +OSG_FOUND - Was the Osg found? OSG_INCLUDE_DIR - Where to find the +headers OSG_LIBRARIES - The libraries to link against for the OSG (use +this) + +OSG_LIBRARY - The OSG library OSG_LIBRARY_DEBUG - The OSG debug +library + +$OSGDIR is an environment variable that would correspond to the +./configure --prefix=$OSGDIR used in building osg. + +Created by Eric Wing. +#]=======================================================================] # Header files are presumed to be included like # #include <osg/PositionAttitudeTransform> diff --git a/Modules/FindosgAnimation.cmake b/Modules/FindosgAnimation.cmake index 5b26b64853..65e301649b 100644 --- a/Modules/FindosgAnimation.cmake +++ b/Modules/FindosgAnimation.cmake @@ -1,36 +1,37 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindosgAnimation -# ---------------- -# -# -# -# This is part of the Findosg* suite used to find OpenSceneGraph -# components. Each component is separate and you must opt in to each -# module. You must also opt into OpenGL and OpenThreads (and Producer -# if needed) as these modules won't do it for you. This is to allow you -# control over your own system piece by piece in case you need to opt -# out of certain components or change the Find behavior for a particular -# module (perhaps because the default FindOpenGL.cmake module doesn't -# work with your system as an example). If you want to use a more -# convenient module that includes everything, use the -# FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. -# -# Locate osgAnimation This module defines -# -# OSGANIMATION_FOUND - Was osgAnimation found? OSGANIMATION_INCLUDE_DIR -# - Where to find the headers OSGANIMATION_LIBRARIES - The libraries to -# link against for the OSG (use this) -# -# OSGANIMATION_LIBRARY - The OSG library OSGANIMATION_LIBRARY_DEBUG - -# The OSG debug library -# -# $OSGDIR is an environment variable that would correspond to the -# ./configure --prefix=$OSGDIR used in building osg. -# -# Created by Eric Wing. +#[=======================================================================[.rst: +FindosgAnimation +---------------- + + + +This is part of the Findosg* suite used to find OpenSceneGraph +components. Each component is separate and you must opt in to each +module. You must also opt into OpenGL and OpenThreads (and Producer +if needed) as these modules won't do it for you. This is to allow you +control over your own system piece by piece in case you need to opt +out of certain components or change the Find behavior for a particular +module (perhaps because the default FindOpenGL.cmake module doesn't +work with your system as an example). If you want to use a more +convenient module that includes everything, use the +FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. + +Locate osgAnimation This module defines + +OSGANIMATION_FOUND - Was osgAnimation found? OSGANIMATION_INCLUDE_DIR +- Where to find the headers OSGANIMATION_LIBRARIES - The libraries to +link against for the OSG (use this) + +OSGANIMATION_LIBRARY - The OSG library OSGANIMATION_LIBRARY_DEBUG - +The OSG debug library + +$OSGDIR is an environment variable that would correspond to the +./configure --prefix=$OSGDIR used in building osg. + +Created by Eric Wing. +#]=======================================================================] # Header files are presumed to be included like # #include <osg/PositionAttitudeTransform> diff --git a/Modules/FindosgDB.cmake b/Modules/FindosgDB.cmake index 6ddf53ce01..d0789badb8 100644 --- a/Modules/FindosgDB.cmake +++ b/Modules/FindosgDB.cmake @@ -1,36 +1,37 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindosgDB -# --------- -# -# -# -# This is part of the Findosg* suite used to find OpenSceneGraph -# components. Each component is separate and you must opt in to each -# module. You must also opt into OpenGL and OpenThreads (and Producer -# if needed) as these modules won't do it for you. This is to allow you -# control over your own system piece by piece in case you need to opt -# out of certain components or change the Find behavior for a particular -# module (perhaps because the default FindOpenGL.cmake module doesn't -# work with your system as an example). If you want to use a more -# convenient module that includes everything, use the -# FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. -# -# Locate osgDB This module defines -# -# OSGDB_FOUND - Was osgDB found? OSGDB_INCLUDE_DIR - Where to find the -# headers OSGDB_LIBRARIES - The libraries to link against for the osgDB -# (use this) -# -# OSGDB_LIBRARY - The osgDB library OSGDB_LIBRARY_DEBUG - The osgDB -# debug library -# -# $OSGDIR is an environment variable that would correspond to the -# ./configure --prefix=$OSGDIR used in building osg. -# -# Created by Eric Wing. +#[=======================================================================[.rst: +FindosgDB +--------- + + + +This is part of the Findosg* suite used to find OpenSceneGraph +components. Each component is separate and you must opt in to each +module. You must also opt into OpenGL and OpenThreads (and Producer +if needed) as these modules won't do it for you. This is to allow you +control over your own system piece by piece in case you need to opt +out of certain components or change the Find behavior for a particular +module (perhaps because the default FindOpenGL.cmake module doesn't +work with your system as an example). If you want to use a more +convenient module that includes everything, use the +FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. + +Locate osgDB This module defines + +OSGDB_FOUND - Was osgDB found? OSGDB_INCLUDE_DIR - Where to find the +headers OSGDB_LIBRARIES - The libraries to link against for the osgDB +(use this) + +OSGDB_LIBRARY - The osgDB library OSGDB_LIBRARY_DEBUG - The osgDB +debug library + +$OSGDIR is an environment variable that would correspond to the +./configure --prefix=$OSGDIR used in building osg. + +Created by Eric Wing. +#]=======================================================================] # Header files are presumed to be included like # #include <osg/PositionAttitudeTransform> diff --git a/Modules/FindosgFX.cmake b/Modules/FindosgFX.cmake index e4bc276d75..438fab7d55 100644 --- a/Modules/FindosgFX.cmake +++ b/Modules/FindosgFX.cmake @@ -1,36 +1,37 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindosgFX -# --------- -# -# -# -# This is part of the Findosg* suite used to find OpenSceneGraph -# components. Each component is separate and you must opt in to each -# module. You must also opt into OpenGL and OpenThreads (and Producer -# if needed) as these modules won't do it for you. This is to allow you -# control over your own system piece by piece in case you need to opt -# out of certain components or change the Find behavior for a particular -# module (perhaps because the default FindOpenGL.cmake module doesn't -# work with your system as an example). If you want to use a more -# convenient module that includes everything, use the -# FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. -# -# Locate osgFX This module defines -# -# OSGFX_FOUND - Was osgFX found? OSGFX_INCLUDE_DIR - Where to find the -# headers OSGFX_LIBRARIES - The libraries to link against for the osgFX -# (use this) -# -# OSGFX_LIBRARY - The osgFX library OSGFX_LIBRARY_DEBUG - The osgFX -# debug library -# -# $OSGDIR is an environment variable that would correspond to the -# ./configure --prefix=$OSGDIR used in building osg. -# -# Created by Eric Wing. +#[=======================================================================[.rst: +FindosgFX +--------- + + + +This is part of the Findosg* suite used to find OpenSceneGraph +components. Each component is separate and you must opt in to each +module. You must also opt into OpenGL and OpenThreads (and Producer +if needed) as these modules won't do it for you. This is to allow you +control over your own system piece by piece in case you need to opt +out of certain components or change the Find behavior for a particular +module (perhaps because the default FindOpenGL.cmake module doesn't +work with your system as an example). If you want to use a more +convenient module that includes everything, use the +FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. + +Locate osgFX This module defines + +OSGFX_FOUND - Was osgFX found? OSGFX_INCLUDE_DIR - Where to find the +headers OSGFX_LIBRARIES - The libraries to link against for the osgFX +(use this) + +OSGFX_LIBRARY - The osgFX library OSGFX_LIBRARY_DEBUG - The osgFX +debug library + +$OSGDIR is an environment variable that would correspond to the +./configure --prefix=$OSGDIR used in building osg. + +Created by Eric Wing. +#]=======================================================================] # Header files are presumed to be included like # #include <osg/PositionAttitudeTransform> diff --git a/Modules/FindosgGA.cmake b/Modules/FindosgGA.cmake index 97adeb7af1..7b6ef30a29 100644 --- a/Modules/FindosgGA.cmake +++ b/Modules/FindosgGA.cmake @@ -1,36 +1,37 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindosgGA -# --------- -# -# -# -# This is part of the Findosg* suite used to find OpenSceneGraph -# components. Each component is separate and you must opt in to each -# module. You must also opt into OpenGL and OpenThreads (and Producer -# if needed) as these modules won't do it for you. This is to allow you -# control over your own system piece by piece in case you need to opt -# out of certain components or change the Find behavior for a particular -# module (perhaps because the default FindOpenGL.cmake module doesn't -# work with your system as an example). If you want to use a more -# convenient module that includes everything, use the -# FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. -# -# Locate osgGA This module defines -# -# OSGGA_FOUND - Was osgGA found? OSGGA_INCLUDE_DIR - Where to find the -# headers OSGGA_LIBRARIES - The libraries to link against for the osgGA -# (use this) -# -# OSGGA_LIBRARY - The osgGA library OSGGA_LIBRARY_DEBUG - The osgGA -# debug library -# -# $OSGDIR is an environment variable that would correspond to the -# ./configure --prefix=$OSGDIR used in building osg. -# -# Created by Eric Wing. +#[=======================================================================[.rst: +FindosgGA +--------- + + + +This is part of the Findosg* suite used to find OpenSceneGraph +components. Each component is separate and you must opt in to each +module. You must also opt into OpenGL and OpenThreads (and Producer +if needed) as these modules won't do it for you. This is to allow you +control over your own system piece by piece in case you need to opt +out of certain components or change the Find behavior for a particular +module (perhaps because the default FindOpenGL.cmake module doesn't +work with your system as an example). If you want to use a more +convenient module that includes everything, use the +FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. + +Locate osgGA This module defines + +OSGGA_FOUND - Was osgGA found? OSGGA_INCLUDE_DIR - Where to find the +headers OSGGA_LIBRARIES - The libraries to link against for the osgGA +(use this) + +OSGGA_LIBRARY - The osgGA library OSGGA_LIBRARY_DEBUG - The osgGA +debug library + +$OSGDIR is an environment variable that would correspond to the +./configure --prefix=$OSGDIR used in building osg. + +Created by Eric Wing. +#]=======================================================================] # Header files are presumed to be included like # #include <osg/PositionAttitudeTransform> diff --git a/Modules/FindosgIntrospection.cmake b/Modules/FindosgIntrospection.cmake index e735942c36..625e4c26e6 100644 --- a/Modules/FindosgIntrospection.cmake +++ b/Modules/FindosgIntrospection.cmake @@ -1,37 +1,38 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindosgIntrospection -# -------------------- -# -# -# -# This is part of the Findosg* suite used to find OpenSceneGraph -# components. Each component is separate and you must opt in to each -# module. You must also opt into OpenGL and OpenThreads (and Producer -# if needed) as these modules won't do it for you. This is to allow you -# control over your own system piece by piece in case you need to opt -# out of certain components or change the Find behavior for a particular -# module (perhaps because the default FindOpenGL.cmake module doesn't -# work with your system as an example). If you want to use a more -# convenient module that includes everything, use the -# FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. -# -# Locate osgINTROSPECTION This module defines -# -# OSGINTROSPECTION_FOUND - Was osgIntrospection found? -# OSGINTROSPECTION_INCLUDE_DIR - Where to find the headers -# OSGINTROSPECTION_LIBRARIES - The libraries to link for -# osgIntrospection (use this) -# -# OSGINTROSPECTION_LIBRARY - The osgIntrospection library -# OSGINTROSPECTION_LIBRARY_DEBUG - The osgIntrospection debug library -# -# $OSGDIR is an environment variable that would correspond to the -# ./configure --prefix=$OSGDIR used in building osg. -# -# Created by Eric Wing. +#[=======================================================================[.rst: +FindosgIntrospection +-------------------- + + + +This is part of the Findosg* suite used to find OpenSceneGraph +components. Each component is separate and you must opt in to each +module. You must also opt into OpenGL and OpenThreads (and Producer +if needed) as these modules won't do it for you. This is to allow you +control over your own system piece by piece in case you need to opt +out of certain components or change the Find behavior for a particular +module (perhaps because the default FindOpenGL.cmake module doesn't +work with your system as an example). If you want to use a more +convenient module that includes everything, use the +FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. + +Locate osgINTROSPECTION This module defines + +OSGINTROSPECTION_FOUND - Was osgIntrospection found? +OSGINTROSPECTION_INCLUDE_DIR - Where to find the headers +OSGINTROSPECTION_LIBRARIES - The libraries to link for +osgIntrospection (use this) + +OSGINTROSPECTION_LIBRARY - The osgIntrospection library +OSGINTROSPECTION_LIBRARY_DEBUG - The osgIntrospection debug library + +$OSGDIR is an environment variable that would correspond to the +./configure --prefix=$OSGDIR used in building osg. + +Created by Eric Wing. +#]=======================================================================] # Header files are presumed to be included like # #include <osg/PositionAttitudeTransform> diff --git a/Modules/FindosgManipulator.cmake b/Modules/FindosgManipulator.cmake index b88f1a4142..857ff5d57a 100644 --- a/Modules/FindosgManipulator.cmake +++ b/Modules/FindosgManipulator.cmake @@ -1,37 +1,38 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindosgManipulator -# ------------------ -# -# -# -# This is part of the Findosg* suite used to find OpenSceneGraph -# components. Each component is separate and you must opt in to each -# module. You must also opt into OpenGL and OpenThreads (and Producer -# if needed) as these modules won't do it for you. This is to allow you -# control over your own system piece by piece in case you need to opt -# out of certain components or change the Find behavior for a particular -# module (perhaps because the default FindOpenGL.cmake module doesn't -# work with your system as an example). If you want to use a more -# convenient module that includes everything, use the -# FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. -# -# Locate osgManipulator This module defines -# -# OSGMANIPULATOR_FOUND - Was osgManipulator found? -# OSGMANIPULATOR_INCLUDE_DIR - Where to find the headers -# OSGMANIPULATOR_LIBRARIES - The libraries to link for osgManipulator -# (use this) -# -# OSGMANIPULATOR_LIBRARY - The osgManipulator library -# OSGMANIPULATOR_LIBRARY_DEBUG - The osgManipulator debug library -# -# $OSGDIR is an environment variable that would correspond to the -# ./configure --prefix=$OSGDIR used in building osg. -# -# Created by Eric Wing. +#[=======================================================================[.rst: +FindosgManipulator +------------------ + + + +This is part of the Findosg* suite used to find OpenSceneGraph +components. Each component is separate and you must opt in to each +module. You must also opt into OpenGL and OpenThreads (and Producer +if needed) as these modules won't do it for you. This is to allow you +control over your own system piece by piece in case you need to opt +out of certain components or change the Find behavior for a particular +module (perhaps because the default FindOpenGL.cmake module doesn't +work with your system as an example). If you want to use a more +convenient module that includes everything, use the +FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. + +Locate osgManipulator This module defines + +OSGMANIPULATOR_FOUND - Was osgManipulator found? +OSGMANIPULATOR_INCLUDE_DIR - Where to find the headers +OSGMANIPULATOR_LIBRARIES - The libraries to link for osgManipulator +(use this) + +OSGMANIPULATOR_LIBRARY - The osgManipulator library +OSGMANIPULATOR_LIBRARY_DEBUG - The osgManipulator debug library + +$OSGDIR is an environment variable that would correspond to the +./configure --prefix=$OSGDIR used in building osg. + +Created by Eric Wing. +#]=======================================================================] # Header files are presumed to be included like # #include <osg/PositionAttitudeTransform> diff --git a/Modules/FindosgParticle.cmake b/Modules/FindosgParticle.cmake index 059746a619..91a30dc7e0 100644 --- a/Modules/FindosgParticle.cmake +++ b/Modules/FindosgParticle.cmake @@ -1,36 +1,37 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindosgParticle -# --------------- -# -# -# -# This is part of the Findosg* suite used to find OpenSceneGraph -# components. Each component is separate and you must opt in to each -# module. You must also opt into OpenGL and OpenThreads (and Producer -# if needed) as these modules won't do it for you. This is to allow you -# control over your own system piece by piece in case you need to opt -# out of certain components or change the Find behavior for a particular -# module (perhaps because the default FindOpenGL.cmake module doesn't -# work with your system as an example). If you want to use a more -# convenient module that includes everything, use the -# FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. -# -# Locate osgParticle This module defines -# -# OSGPARTICLE_FOUND - Was osgParticle found? OSGPARTICLE_INCLUDE_DIR - -# Where to find the headers OSGPARTICLE_LIBRARIES - The libraries to -# link for osgParticle (use this) -# -# OSGPARTICLE_LIBRARY - The osgParticle library -# OSGPARTICLE_LIBRARY_DEBUG - The osgParticle debug library -# -# $OSGDIR is an environment variable that would correspond to the -# ./configure --prefix=$OSGDIR used in building osg. -# -# Created by Eric Wing. +#[=======================================================================[.rst: +FindosgParticle +--------------- + + + +This is part of the Findosg* suite used to find OpenSceneGraph +components. Each component is separate and you must opt in to each +module. You must also opt into OpenGL and OpenThreads (and Producer +if needed) as these modules won't do it for you. This is to allow you +control over your own system piece by piece in case you need to opt +out of certain components or change the Find behavior for a particular +module (perhaps because the default FindOpenGL.cmake module doesn't +work with your system as an example). If you want to use a more +convenient module that includes everything, use the +FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. + +Locate osgParticle This module defines + +OSGPARTICLE_FOUND - Was osgParticle found? OSGPARTICLE_INCLUDE_DIR - +Where to find the headers OSGPARTICLE_LIBRARIES - The libraries to +link for osgParticle (use this) + +OSGPARTICLE_LIBRARY - The osgParticle library +OSGPARTICLE_LIBRARY_DEBUG - The osgParticle debug library + +$OSGDIR is an environment variable that would correspond to the +./configure --prefix=$OSGDIR used in building osg. + +Created by Eric Wing. +#]=======================================================================] # Header files are presumed to be included like # #include <osg/PositionAttitudeTransform> diff --git a/Modules/FindosgPresentation.cmake b/Modules/FindosgPresentation.cmake index 84a410526a..eae75d6386 100644 --- a/Modules/FindosgPresentation.cmake +++ b/Modules/FindosgPresentation.cmake @@ -1,38 +1,39 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindosgPresentation -# ------------------- -# -# -# -# This is part of the Findosg* suite used to find OpenSceneGraph -# components. Each component is separate and you must opt in to each -# module. You must also opt into OpenGL and OpenThreads (and Producer -# if needed) as these modules won't do it for you. This is to allow you -# control over your own system piece by piece in case you need to opt -# out of certain components or change the Find behavior for a particular -# module (perhaps because the default FindOpenGL.cmake module doesn't -# work with your system as an example). If you want to use a more -# convenient module that includes everything, use the -# FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. -# -# Locate osgPresentation This module defines -# -# OSGPRESENTATION_FOUND - Was osgPresentation found? -# OSGPRESENTATION_INCLUDE_DIR - Where to find the headers -# OSGPRESENTATION_LIBRARIES - The libraries to link for osgPresentation -# (use this) -# -# OSGPRESENTATION_LIBRARY - The osgPresentation library -# OSGPRESENTATION_LIBRARY_DEBUG - The osgPresentation debug library -# -# $OSGDIR is an environment variable that would correspond to the -# ./configure --prefix=$OSGDIR used in building osg. -# -# Created by Eric Wing. Modified to work with osgPresentation by Robert -# Osfield, January 2012. +#[=======================================================================[.rst: +FindosgPresentation +------------------- + + + +This is part of the Findosg* suite used to find OpenSceneGraph +components. Each component is separate and you must opt in to each +module. You must also opt into OpenGL and OpenThreads (and Producer +if needed) as these modules won't do it for you. This is to allow you +control over your own system piece by piece in case you need to opt +out of certain components or change the Find behavior for a particular +module (perhaps because the default FindOpenGL.cmake module doesn't +work with your system as an example). If you want to use a more +convenient module that includes everything, use the +FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. + +Locate osgPresentation This module defines + +OSGPRESENTATION_FOUND - Was osgPresentation found? +OSGPRESENTATION_INCLUDE_DIR - Where to find the headers +OSGPRESENTATION_LIBRARIES - The libraries to link for osgPresentation +(use this) + +OSGPRESENTATION_LIBRARY - The osgPresentation library +OSGPRESENTATION_LIBRARY_DEBUG - The osgPresentation debug library + +$OSGDIR is an environment variable that would correspond to the +./configure --prefix=$OSGDIR used in building osg. + +Created by Eric Wing. Modified to work with osgPresentation by Robert +Osfield, January 2012. +#]=======================================================================] # Header files are presumed to be included like # #include <osg/PositionAttitudeTransform> diff --git a/Modules/FindosgProducer.cmake b/Modules/FindosgProducer.cmake index e5700bfc46..33b9f73115 100644 --- a/Modules/FindosgProducer.cmake +++ b/Modules/FindosgProducer.cmake @@ -1,36 +1,37 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindosgProducer -# --------------- -# -# -# -# This is part of the Findosg* suite used to find OpenSceneGraph -# components. Each component is separate and you must opt in to each -# module. You must also opt into OpenGL and OpenThreads (and Producer -# if needed) as these modules won't do it for you. This is to allow you -# control over your own system piece by piece in case you need to opt -# out of certain components or change the Find behavior for a particular -# module (perhaps because the default FindOpenGL.cmake module doesn't -# work with your system as an example). If you want to use a more -# convenient module that includes everything, use the -# FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. -# -# Locate osgProducer This module defines -# -# OSGPRODUCER_FOUND - Was osgProducer found? OSGPRODUCER_INCLUDE_DIR - -# Where to find the headers OSGPRODUCER_LIBRARIES - The libraries to -# link for osgProducer (use this) -# -# OSGPRODUCER_LIBRARY - The osgProducer library -# OSGPRODUCER_LIBRARY_DEBUG - The osgProducer debug library -# -# $OSGDIR is an environment variable that would correspond to the -# ./configure --prefix=$OSGDIR used in building osg. -# -# Created by Eric Wing. +#[=======================================================================[.rst: +FindosgProducer +--------------- + + + +This is part of the Findosg* suite used to find OpenSceneGraph +components. Each component is separate and you must opt in to each +module. You must also opt into OpenGL and OpenThreads (and Producer +if needed) as these modules won't do it for you. This is to allow you +control over your own system piece by piece in case you need to opt +out of certain components or change the Find behavior for a particular +module (perhaps because the default FindOpenGL.cmake module doesn't +work with your system as an example). If you want to use a more +convenient module that includes everything, use the +FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. + +Locate osgProducer This module defines + +OSGPRODUCER_FOUND - Was osgProducer found? OSGPRODUCER_INCLUDE_DIR - +Where to find the headers OSGPRODUCER_LIBRARIES - The libraries to +link for osgProducer (use this) + +OSGPRODUCER_LIBRARY - The osgProducer library +OSGPRODUCER_LIBRARY_DEBUG - The osgProducer debug library + +$OSGDIR is an environment variable that would correspond to the +./configure --prefix=$OSGDIR used in building osg. + +Created by Eric Wing. +#]=======================================================================] # Header files are presumed to be included like # #include <osg/PositionAttitudeTransform> diff --git a/Modules/FindosgQt.cmake b/Modules/FindosgQt.cmake index 04a2393e58..cf356303ca 100644 --- a/Modules/FindosgQt.cmake +++ b/Modules/FindosgQt.cmake @@ -1,36 +1,37 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindosgQt -# --------- -# -# -# -# This is part of the Findosg* suite used to find OpenSceneGraph -# components. Each component is separate and you must opt in to each -# module. You must also opt into OpenGL and OpenThreads (and Producer -# if needed) as these modules won't do it for you. This is to allow you -# control over your own system piece by piece in case you need to opt -# out of certain components or change the Find behavior for a particular -# module (perhaps because the default FindOpenGL.cmake module doesn't -# work with your system as an example). If you want to use a more -# convenient module that includes everything, use the -# FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. -# -# Locate osgQt This module defines -# -# OSGQT_FOUND - Was osgQt found? OSGQT_INCLUDE_DIR - Where to find the -# headers OSGQT_LIBRARIES - The libraries to link for osgQt (use this) -# -# OSGQT_LIBRARY - The osgQt library OSGQT_LIBRARY_DEBUG - The osgQt -# debug library -# -# $OSGDIR is an environment variable that would correspond to the -# ./configure --prefix=$OSGDIR used in building osg. -# -# Created by Eric Wing. Modified to work with osgQt by Robert Osfield, -# January 2012. +#[=======================================================================[.rst: +FindosgQt +--------- + + + +This is part of the Findosg* suite used to find OpenSceneGraph +components. Each component is separate and you must opt in to each +module. You must also opt into OpenGL and OpenThreads (and Producer +if needed) as these modules won't do it for you. This is to allow you +control over your own system piece by piece in case you need to opt +out of certain components or change the Find behavior for a particular +module (perhaps because the default FindOpenGL.cmake module doesn't +work with your system as an example). If you want to use a more +convenient module that includes everything, use the +FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. + +Locate osgQt This module defines + +OSGQT_FOUND - Was osgQt found? OSGQT_INCLUDE_DIR - Where to find the +headers OSGQT_LIBRARIES - The libraries to link for osgQt (use this) + +OSGQT_LIBRARY - The osgQt library OSGQT_LIBRARY_DEBUG - The osgQt +debug library + +$OSGDIR is an environment variable that would correspond to the +./configure --prefix=$OSGDIR used in building osg. + +Created by Eric Wing. Modified to work with osgQt by Robert Osfield, +January 2012. +#]=======================================================================] # Header files are presumed to be included like # #include <osg/PositionAttitudeTransform> diff --git a/Modules/FindosgShadow.cmake b/Modules/FindosgShadow.cmake index 0a7ba23790..0049c4e1d3 100644 --- a/Modules/FindosgShadow.cmake +++ b/Modules/FindosgShadow.cmake @@ -1,36 +1,37 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindosgShadow -# ------------- -# -# -# -# This is part of the Findosg* suite used to find OpenSceneGraph -# components. Each component is separate and you must opt in to each -# module. You must also opt into OpenGL and OpenThreads (and Producer -# if needed) as these modules won't do it for you. This is to allow you -# control over your own system piece by piece in case you need to opt -# out of certain components or change the Find behavior for a particular -# module (perhaps because the default FindOpenGL.cmake module doesn't -# work with your system as an example). If you want to use a more -# convenient module that includes everything, use the -# FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. -# -# Locate osgShadow This module defines -# -# OSGSHADOW_FOUND - Was osgShadow found? OSGSHADOW_INCLUDE_DIR - Where -# to find the headers OSGSHADOW_LIBRARIES - The libraries to link for -# osgShadow (use this) -# -# OSGSHADOW_LIBRARY - The osgShadow library OSGSHADOW_LIBRARY_DEBUG - -# The osgShadow debug library -# -# $OSGDIR is an environment variable that would correspond to the -# ./configure --prefix=$OSGDIR used in building osg. -# -# Created by Eric Wing. +#[=======================================================================[.rst: +FindosgShadow +------------- + + + +This is part of the Findosg* suite used to find OpenSceneGraph +components. Each component is separate and you must opt in to each +module. You must also opt into OpenGL and OpenThreads (and Producer +if needed) as these modules won't do it for you. This is to allow you +control over your own system piece by piece in case you need to opt +out of certain components or change the Find behavior for a particular +module (perhaps because the default FindOpenGL.cmake module doesn't +work with your system as an example). If you want to use a more +convenient module that includes everything, use the +FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. + +Locate osgShadow This module defines + +OSGSHADOW_FOUND - Was osgShadow found? OSGSHADOW_INCLUDE_DIR - Where +to find the headers OSGSHADOW_LIBRARIES - The libraries to link for +osgShadow (use this) + +OSGSHADOW_LIBRARY - The osgShadow library OSGSHADOW_LIBRARY_DEBUG - +The osgShadow debug library + +$OSGDIR is an environment variable that would correspond to the +./configure --prefix=$OSGDIR used in building osg. + +Created by Eric Wing. +#]=======================================================================] # Header files are presumed to be included like # #include <osg/PositionAttitudeTransform> diff --git a/Modules/FindosgSim.cmake b/Modules/FindosgSim.cmake index 15426a2731..43ba542115 100644 --- a/Modules/FindosgSim.cmake +++ b/Modules/FindosgSim.cmake @@ -1,36 +1,37 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindosgSim -# ---------- -# -# -# -# This is part of the Findosg* suite used to find OpenSceneGraph -# components. Each component is separate and you must opt in to each -# module. You must also opt into OpenGL and OpenThreads (and Producer -# if needed) as these modules won't do it for you. This is to allow you -# control over your own system piece by piece in case you need to opt -# out of certain components or change the Find behavior for a particular -# module (perhaps because the default FindOpenGL.cmake module doesn't -# work with your system as an example). If you want to use a more -# convenient module that includes everything, use the -# FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. -# -# Locate osgSim This module defines -# -# OSGSIM_FOUND - Was osgSim found? OSGSIM_INCLUDE_DIR - Where to find -# the headers OSGSIM_LIBRARIES - The libraries to link for osgSim (use -# this) -# -# OSGSIM_LIBRARY - The osgSim library OSGSIM_LIBRARY_DEBUG - The osgSim -# debug library -# -# $OSGDIR is an environment variable that would correspond to the -# ./configure --prefix=$OSGDIR used in building osg. -# -# Created by Eric Wing. +#[=======================================================================[.rst: +FindosgSim +---------- + + + +This is part of the Findosg* suite used to find OpenSceneGraph +components. Each component is separate and you must opt in to each +module. You must also opt into OpenGL and OpenThreads (and Producer +if needed) as these modules won't do it for you. This is to allow you +control over your own system piece by piece in case you need to opt +out of certain components or change the Find behavior for a particular +module (perhaps because the default FindOpenGL.cmake module doesn't +work with your system as an example). If you want to use a more +convenient module that includes everything, use the +FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. + +Locate osgSim This module defines + +OSGSIM_FOUND - Was osgSim found? OSGSIM_INCLUDE_DIR - Where to find +the headers OSGSIM_LIBRARIES - The libraries to link for osgSim (use +this) + +OSGSIM_LIBRARY - The osgSim library OSGSIM_LIBRARY_DEBUG - The osgSim +debug library + +$OSGDIR is an environment variable that would correspond to the +./configure --prefix=$OSGDIR used in building osg. + +Created by Eric Wing. +#]=======================================================================] # Header files are presumed to be included like # #include <osg/PositionAttitudeTransform> diff --git a/Modules/FindosgTerrain.cmake b/Modules/FindosgTerrain.cmake index 04eae1450e..c6f5b690af 100644 --- a/Modules/FindosgTerrain.cmake +++ b/Modules/FindosgTerrain.cmake @@ -1,36 +1,37 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindosgTerrain -# -------------- -# -# -# -# This is part of the Findosg* suite used to find OpenSceneGraph -# components. Each component is separate and you must opt in to each -# module. You must also opt into OpenGL and OpenThreads (and Producer -# if needed) as these modules won't do it for you. This is to allow you -# control over your own system piece by piece in case you need to opt -# out of certain components or change the Find behavior for a particular -# module (perhaps because the default FindOpenGL.cmake module doesn't -# work with your system as an example). If you want to use a more -# convenient module that includes everything, use the -# FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. -# -# Locate osgTerrain This module defines -# -# OSGTERRAIN_FOUND - Was osgTerrain found? OSGTERRAIN_INCLUDE_DIR - -# Where to find the headers OSGTERRAIN_LIBRARIES - The libraries to link -# for osgTerrain (use this) -# -# OSGTERRAIN_LIBRARY - The osgTerrain library OSGTERRAIN_LIBRARY_DEBUG - -# The osgTerrain debug library -# -# $OSGDIR is an environment variable that would correspond to the -# ./configure --prefix=$OSGDIR used in building osg. -# -# Created by Eric Wing. +#[=======================================================================[.rst: +FindosgTerrain +-------------- + + + +This is part of the Findosg* suite used to find OpenSceneGraph +components. Each component is separate and you must opt in to each +module. You must also opt into OpenGL and OpenThreads (and Producer +if needed) as these modules won't do it for you. This is to allow you +control over your own system piece by piece in case you need to opt +out of certain components or change the Find behavior for a particular +module (perhaps because the default FindOpenGL.cmake module doesn't +work with your system as an example). If you want to use a more +convenient module that includes everything, use the +FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. + +Locate osgTerrain This module defines + +OSGTERRAIN_FOUND - Was osgTerrain found? OSGTERRAIN_INCLUDE_DIR - +Where to find the headers OSGTERRAIN_LIBRARIES - The libraries to link +for osgTerrain (use this) + +OSGTERRAIN_LIBRARY - The osgTerrain library OSGTERRAIN_LIBRARY_DEBUG - +The osgTerrain debug library + +$OSGDIR is an environment variable that would correspond to the +./configure --prefix=$OSGDIR used in building osg. + +Created by Eric Wing. +#]=======================================================================] # Header files are presumed to be included like # #include <osg/PositionAttitudeTransform> diff --git a/Modules/FindosgText.cmake b/Modules/FindosgText.cmake index 1e2d9fdfd8..fd3c2324f0 100644 --- a/Modules/FindosgText.cmake +++ b/Modules/FindosgText.cmake @@ -1,36 +1,37 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindosgText -# ----------- -# -# -# -# This is part of the Findosg* suite used to find OpenSceneGraph -# components. Each component is separate and you must opt in to each -# module. You must also opt into OpenGL and OpenThreads (and Producer -# if needed) as these modules won't do it for you. This is to allow you -# control over your own system piece by piece in case you need to opt -# out of certain components or change the Find behavior for a particular -# module (perhaps because the default FindOpenGL.cmake module doesn't -# work with your system as an example). If you want to use a more -# convenient module that includes everything, use the -# FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. -# -# Locate osgText This module defines -# -# OSGTEXT_FOUND - Was osgText found? OSGTEXT_INCLUDE_DIR - Where to find -# the headers OSGTEXT_LIBRARIES - The libraries to link for osgText (use -# this) -# -# OSGTEXT_LIBRARY - The osgText library OSGTEXT_LIBRARY_DEBUG - The -# osgText debug library -# -# $OSGDIR is an environment variable that would correspond to the -# ./configure --prefix=$OSGDIR used in building osg. -# -# Created by Eric Wing. +#[=======================================================================[.rst: +FindosgText +----------- + + + +This is part of the Findosg* suite used to find OpenSceneGraph +components. Each component is separate and you must opt in to each +module. You must also opt into OpenGL and OpenThreads (and Producer +if needed) as these modules won't do it for you. This is to allow you +control over your own system piece by piece in case you need to opt +out of certain components or change the Find behavior for a particular +module (perhaps because the default FindOpenGL.cmake module doesn't +work with your system as an example). If you want to use a more +convenient module that includes everything, use the +FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. + +Locate osgText This module defines + +OSGTEXT_FOUND - Was osgText found? OSGTEXT_INCLUDE_DIR - Where to find +the headers OSGTEXT_LIBRARIES - The libraries to link for osgText (use +this) + +OSGTEXT_LIBRARY - The osgText library OSGTEXT_LIBRARY_DEBUG - The +osgText debug library + +$OSGDIR is an environment variable that would correspond to the +./configure --prefix=$OSGDIR used in building osg. + +Created by Eric Wing. +#]=======================================================================] # Header files are presumed to be included like # #include <osg/PositionAttitudeTransform> diff --git a/Modules/FindosgUtil.cmake b/Modules/FindosgUtil.cmake index 13e0b803e2..e84727aef6 100644 --- a/Modules/FindosgUtil.cmake +++ b/Modules/FindosgUtil.cmake @@ -1,36 +1,37 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindosgUtil -# ----------- -# -# -# -# This is part of the Findosg* suite used to find OpenSceneGraph -# components. Each component is separate and you must opt in to each -# module. You must also opt into OpenGL and OpenThreads (and Producer -# if needed) as these modules won't do it for you. This is to allow you -# control over your own system piece by piece in case you need to opt -# out of certain components or change the Find behavior for a particular -# module (perhaps because the default FindOpenGL.cmake module doesn't -# work with your system as an example). If you want to use a more -# convenient module that includes everything, use the -# FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. -# -# Locate osgUtil This module defines -# -# OSGUTIL_FOUND - Was osgUtil found? OSGUTIL_INCLUDE_DIR - Where to find -# the headers OSGUTIL_LIBRARIES - The libraries to link for osgUtil (use -# this) -# -# OSGUTIL_LIBRARY - The osgUtil library OSGUTIL_LIBRARY_DEBUG - The -# osgUtil debug library -# -# $OSGDIR is an environment variable that would correspond to the -# ./configure --prefix=$OSGDIR used in building osg. -# -# Created by Eric Wing. +#[=======================================================================[.rst: +FindosgUtil +----------- + + + +This is part of the Findosg* suite used to find OpenSceneGraph +components. Each component is separate and you must opt in to each +module. You must also opt into OpenGL and OpenThreads (and Producer +if needed) as these modules won't do it for you. This is to allow you +control over your own system piece by piece in case you need to opt +out of certain components or change the Find behavior for a particular +module (perhaps because the default FindOpenGL.cmake module doesn't +work with your system as an example). If you want to use a more +convenient module that includes everything, use the +FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. + +Locate osgUtil This module defines + +OSGUTIL_FOUND - Was osgUtil found? OSGUTIL_INCLUDE_DIR - Where to find +the headers OSGUTIL_LIBRARIES - The libraries to link for osgUtil (use +this) + +OSGUTIL_LIBRARY - The osgUtil library OSGUTIL_LIBRARY_DEBUG - The +osgUtil debug library + +$OSGDIR is an environment variable that would correspond to the +./configure --prefix=$OSGDIR used in building osg. + +Created by Eric Wing. +#]=======================================================================] # Header files are presumed to be included like # #include <osg/PositionAttitudeTransform> diff --git a/Modules/FindosgViewer.cmake b/Modules/FindosgViewer.cmake index a91c49c14f..2174357ec0 100644 --- a/Modules/FindosgViewer.cmake +++ b/Modules/FindosgViewer.cmake @@ -1,36 +1,37 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindosgViewer -# ------------- -# -# -# -# This is part of the Findosg* suite used to find OpenSceneGraph -# components. Each component is separate and you must opt in to each -# module. You must also opt into OpenGL and OpenThreads (and Producer -# if needed) as these modules won't do it for you. This is to allow you -# control over your own system piece by piece in case you need to opt -# out of certain components or change the Find behavior for a particular -# module (perhaps because the default FindOpenGL.cmake module doesn't -# work with your system as an example). If you want to use a more -# convenient module that includes everything, use the -# FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. -# -# Locate osgViewer This module defines -# -# OSGVIEWER_FOUND - Was osgViewer found? OSGVIEWER_INCLUDE_DIR - Where -# to find the headers OSGVIEWER_LIBRARIES - The libraries to link for -# osgViewer (use this) -# -# OSGVIEWER_LIBRARY - The osgViewer library OSGVIEWER_LIBRARY_DEBUG - -# The osgViewer debug library -# -# $OSGDIR is an environment variable that would correspond to the -# ./configure --prefix=$OSGDIR used in building osg. -# -# Created by Eric Wing. +#[=======================================================================[.rst: +FindosgViewer +------------- + + + +This is part of the Findosg* suite used to find OpenSceneGraph +components. Each component is separate and you must opt in to each +module. You must also opt into OpenGL and OpenThreads (and Producer +if needed) as these modules won't do it for you. This is to allow you +control over your own system piece by piece in case you need to opt +out of certain components or change the Find behavior for a particular +module (perhaps because the default FindOpenGL.cmake module doesn't +work with your system as an example). If you want to use a more +convenient module that includes everything, use the +FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. + +Locate osgViewer This module defines + +OSGVIEWER_FOUND - Was osgViewer found? OSGVIEWER_INCLUDE_DIR - Where +to find the headers OSGVIEWER_LIBRARIES - The libraries to link for +osgViewer (use this) + +OSGVIEWER_LIBRARY - The osgViewer library OSGVIEWER_LIBRARY_DEBUG - +The osgViewer debug library + +$OSGDIR is an environment variable that would correspond to the +./configure --prefix=$OSGDIR used in building osg. + +Created by Eric Wing. +#]=======================================================================] # Header files are presumed to be included like # #include <osg/PositionAttitudeTransform> diff --git a/Modules/FindosgVolume.cmake b/Modules/FindosgVolume.cmake index 1178ed37d1..35defef6bb 100644 --- a/Modules/FindosgVolume.cmake +++ b/Modules/FindosgVolume.cmake @@ -1,36 +1,37 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindosgVolume -# ------------- -# -# -# -# This is part of the Findosg* suite used to find OpenSceneGraph -# components. Each component is separate and you must opt in to each -# module. You must also opt into OpenGL and OpenThreads (and Producer -# if needed) as these modules won't do it for you. This is to allow you -# control over your own system piece by piece in case you need to opt -# out of certain components or change the Find behavior for a particular -# module (perhaps because the default FindOpenGL.cmake module doesn't -# work with your system as an example). If you want to use a more -# convenient module that includes everything, use the -# FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. -# -# Locate osgVolume This module defines -# -# OSGVOLUME_FOUND - Was osgVolume found? OSGVOLUME_INCLUDE_DIR - Where -# to find the headers OSGVOLUME_LIBRARIES - The libraries to link for -# osgVolume (use this) -# -# OSGVOLUME_LIBRARY - The osgVolume library OSGVOLUME_LIBRARY_DEBUG - -# The osgVolume debug library -# -# $OSGDIR is an environment variable that would correspond to the -# ./configure --prefix=$OSGDIR used in building osg. -# -# Created by Eric Wing. +#[=======================================================================[.rst: +FindosgVolume +------------- + + + +This is part of the Findosg* suite used to find OpenSceneGraph +components. Each component is separate and you must opt in to each +module. You must also opt into OpenGL and OpenThreads (and Producer +if needed) as these modules won't do it for you. This is to allow you +control over your own system piece by piece in case you need to opt +out of certain components or change the Find behavior for a particular +module (perhaps because the default FindOpenGL.cmake module doesn't +work with your system as an example). If you want to use a more +convenient module that includes everything, use the +FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. + +Locate osgVolume This module defines + +OSGVOLUME_FOUND - Was osgVolume found? OSGVOLUME_INCLUDE_DIR - Where +to find the headers OSGVOLUME_LIBRARIES - The libraries to link for +osgVolume (use this) + +OSGVOLUME_LIBRARY - The osgVolume library OSGVOLUME_LIBRARY_DEBUG - +The osgVolume debug library + +$OSGDIR is an environment variable that would correspond to the +./configure --prefix=$OSGDIR used in building osg. + +Created by Eric Wing. +#]=======================================================================] # Header files are presumed to be included like # #include <osg/PositionAttitudeTransform> diff --git a/Modules/FindosgWidget.cmake b/Modules/FindosgWidget.cmake index 78999ec3fd..c7aae448e8 100644 --- a/Modules/FindosgWidget.cmake +++ b/Modules/FindosgWidget.cmake @@ -1,37 +1,38 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindosgWidget -# ------------- -# -# -# -# This is part of the Findosg* suite used to find OpenSceneGraph -# components. Each component is separate and you must opt in to each -# module. You must also opt into OpenGL and OpenThreads (and Producer -# if needed) as these modules won't do it for you. This is to allow you -# control over your own system piece by piece in case you need to opt -# out of certain components or change the Find behavior for a particular -# module (perhaps because the default FindOpenGL.cmake module doesn't -# work with your system as an example). If you want to use a more -# convenient module that includes everything, use the -# FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. -# -# Locate osgWidget This module defines -# -# OSGWIDGET_FOUND - Was osgWidget found? OSGWIDGET_INCLUDE_DIR - Where -# to find the headers OSGWIDGET_LIBRARIES - The libraries to link for -# osgWidget (use this) -# -# OSGWIDGET_LIBRARY - The osgWidget library OSGWIDGET_LIBRARY_DEBUG - -# The osgWidget debug library -# -# $OSGDIR is an environment variable that would correspond to the -# ./configure --prefix=$OSGDIR used in building osg. -# -# FindosgWidget.cmake tweaked from Findosg* suite as created by Eric -# Wing. +#[=======================================================================[.rst: +FindosgWidget +------------- + + + +This is part of the Findosg* suite used to find OpenSceneGraph +components. Each component is separate and you must opt in to each +module. You must also opt into OpenGL and OpenThreads (and Producer +if needed) as these modules won't do it for you. This is to allow you +control over your own system piece by piece in case you need to opt +out of certain components or change the Find behavior for a particular +module (perhaps because the default FindOpenGL.cmake module doesn't +work with your system as an example). If you want to use a more +convenient module that includes everything, use the +FindOpenSceneGraph.cmake instead of the Findosg*.cmake modules. + +Locate osgWidget This module defines + +OSGWIDGET_FOUND - Was osgWidget found? OSGWIDGET_INCLUDE_DIR - Where +to find the headers OSGWIDGET_LIBRARIES - The libraries to link for +osgWidget (use this) + +OSGWIDGET_LIBRARY - The osgWidget library OSGWIDGET_LIBRARY_DEBUG - +The osgWidget debug library + +$OSGDIR is an environment variable that would correspond to the +./configure --prefix=$OSGDIR used in building osg. + +FindosgWidget.cmake tweaked from Findosg* suite as created by Eric +Wing. +#]=======================================================================] # Header files are presumed to be included like # #include <osg/PositionAttitudeTransform> diff --git a/Modules/Findosg_functions.cmake b/Modules/Findosg_functions.cmake index adaeb6b1d1..40df4d5dd7 100644 --- a/Modules/Findosg_functions.cmake +++ b/Modules/Findosg_functions.cmake @@ -1,17 +1,18 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# Findosg_functions -# ----------------- -# -# -# -# -# -# This CMake file contains two macros to assist with searching for OSG -# libraries and nodekits. Please see FindOpenSceneGraph.cmake for full -# documentation. +#[=======================================================================[.rst: +Findosg_functions +----------------- + + + + + +This CMake file contains two macros to assist with searching for OSG +libraries and nodekits. Please see FindOpenSceneGraph.cmake for full +documentation. +#]=======================================================================] include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake) diff --git a/Modules/FindwxWidgets.cmake b/Modules/FindwxWidgets.cmake index e36684232a..c813ead478 100644 --- a/Modules/FindwxWidgets.cmake +++ b/Modules/FindwxWidgets.cmake @@ -1,111 +1,112 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindwxWidgets -# ------------- -# -# Find a wxWidgets (a.k.a., wxWindows) installation. -# -# This module finds if wxWidgets is installed and selects a default -# configuration to use. wxWidgets is a modular library. To specify the -# modules that you will use, you need to name them as components to the -# package: -# -# find_package(wxWidgets COMPONENTS core base ... OPTIONAL_COMPONENTS net ...) -# -# There are two search branches: a windows style and a unix style. For -# windows, the following variables are searched for and set to defaults -# in case of multiple choices. Change them if the defaults are not -# desired (i.e., these are the only variables you should change to -# select a configuration): -# -# :: -# -# wxWidgets_ROOT_DIR - Base wxWidgets directory -# (e.g., C:/wxWidgets-2.6.3). -# wxWidgets_LIB_DIR - Path to wxWidgets libraries -# (e.g., C:/wxWidgets-2.6.3/lib/vc_lib). -# wxWidgets_CONFIGURATION - Configuration to use -# (e.g., msw, mswd, mswu, mswunivud, etc.) -# wxWidgets_EXCLUDE_COMMON_LIBRARIES -# - Set to TRUE to exclude linking of -# commonly required libs (e.g., png tiff -# jpeg zlib regex expat). -# -# -# -# For unix style it uses the wx-config utility. You can select between -# debug/release, unicode/ansi, universal/non-universal, and -# static/shared in the QtDialog or ccmake interfaces by turning ON/OFF -# the following variables: -# -# :: -# -# wxWidgets_USE_DEBUG -# wxWidgets_USE_UNICODE -# wxWidgets_USE_UNIVERSAL -# wxWidgets_USE_STATIC -# -# -# -# There is also a wxWidgets_CONFIG_OPTIONS variable for all other -# options that need to be passed to the wx-config utility. For example, -# to use the base toolkit found in the /usr/local path, set the variable -# (before calling the FIND_PACKAGE command) as such: -# -# :: -# -# set(wxWidgets_CONFIG_OPTIONS --toolkit=base --prefix=/usr) -# -# -# -# The following are set after the configuration is done for both windows -# and unix style: -# -# :: -# -# wxWidgets_FOUND - Set to TRUE if wxWidgets was found. -# wxWidgets_INCLUDE_DIRS - Include directories for WIN32 -# i.e., where to find "wx/wx.h" and -# "wx/setup.h"; possibly empty for unices. -# wxWidgets_LIBRARIES - Path to the wxWidgets libraries. -# wxWidgets_LIBRARY_DIRS - compile time link dirs, useful for -# rpath on UNIX. Typically an empty string -# in WIN32 environment. -# wxWidgets_DEFINITIONS - Contains defines required to compile/link -# against WX, e.g. WXUSINGDLL -# wxWidgets_DEFINITIONS_DEBUG- Contains defines required to compile/link -# against WX debug builds, e.g. __WXDEBUG__ -# wxWidgets_CXX_FLAGS - Include dirs and compiler flags for -# unices, empty on WIN32. Essentially -# "`wx-config --cxxflags`". -# wxWidgets_USE_FILE - Convenience include file. -# -# -# -# Sample usage: -# -# :: -# -# # Note that for MinGW users the order of libs is important! -# find_package(wxWidgets COMPONENTS gl core base OPTIONAL_COMPONENTS net) -# if(wxWidgets_FOUND) -# include(${wxWidgets_USE_FILE}) -# # and for each of your dependent executable/library targets: -# target_link_libraries(<YourTarget> ${wxWidgets_LIBRARIES}) -# endif() -# -# -# -# If wxWidgets is required (i.e., not an optional part): -# -# :: -# -# find_package(wxWidgets REQUIRED gl core base OPTIONAL_COMPONENTS net) -# include(${wxWidgets_USE_FILE}) -# # and for each of your dependent executable/library targets: -# target_link_libraries(<YourTarget> ${wxWidgets_LIBRARIES}) +#[=======================================================================[.rst: +FindwxWidgets +------------- + +Find a wxWidgets (a.k.a., wxWindows) installation. + +This module finds if wxWidgets is installed and selects a default +configuration to use. wxWidgets is a modular library. To specify the +modules that you will use, you need to name them as components to the +package: + +find_package(wxWidgets COMPONENTS core base ... OPTIONAL_COMPONENTS net ...) + +There are two search branches: a windows style and a unix style. For +windows, the following variables are searched for and set to defaults +in case of multiple choices. Change them if the defaults are not +desired (i.e., these are the only variables you should change to +select a configuration): + +:: + + wxWidgets_ROOT_DIR - Base wxWidgets directory + (e.g., C:/wxWidgets-2.6.3). + wxWidgets_LIB_DIR - Path to wxWidgets libraries + (e.g., C:/wxWidgets-2.6.3/lib/vc_lib). + wxWidgets_CONFIGURATION - Configuration to use + (e.g., msw, mswd, mswu, mswunivud, etc.) + wxWidgets_EXCLUDE_COMMON_LIBRARIES + - Set to TRUE to exclude linking of + commonly required libs (e.g., png tiff + jpeg zlib regex expat). + + + +For unix style it uses the wx-config utility. You can select between +debug/release, unicode/ansi, universal/non-universal, and +static/shared in the QtDialog or ccmake interfaces by turning ON/OFF +the following variables: + +:: + + wxWidgets_USE_DEBUG + wxWidgets_USE_UNICODE + wxWidgets_USE_UNIVERSAL + wxWidgets_USE_STATIC + + + +There is also a wxWidgets_CONFIG_OPTIONS variable for all other +options that need to be passed to the wx-config utility. For example, +to use the base toolkit found in the /usr/local path, set the variable +(before calling the FIND_PACKAGE command) as such: + +:: + + set(wxWidgets_CONFIG_OPTIONS --toolkit=base --prefix=/usr) + + + +The following are set after the configuration is done for both windows +and unix style: + +:: + + wxWidgets_FOUND - Set to TRUE if wxWidgets was found. + wxWidgets_INCLUDE_DIRS - Include directories for WIN32 + i.e., where to find "wx/wx.h" and + "wx/setup.h"; possibly empty for unices. + wxWidgets_LIBRARIES - Path to the wxWidgets libraries. + wxWidgets_LIBRARY_DIRS - compile time link dirs, useful for + rpath on UNIX. Typically an empty string + in WIN32 environment. + wxWidgets_DEFINITIONS - Contains defines required to compile/link + against WX, e.g. WXUSINGDLL + wxWidgets_DEFINITIONS_DEBUG- Contains defines required to compile/link + against WX debug builds, e.g. __WXDEBUG__ + wxWidgets_CXX_FLAGS - Include dirs and compiler flags for + unices, empty on WIN32. Essentially + "`wx-config --cxxflags`". + wxWidgets_USE_FILE - Convenience include file. + + + +Sample usage: + +:: + + # Note that for MinGW users the order of libs is important! + find_package(wxWidgets COMPONENTS gl core base OPTIONAL_COMPONENTS net) + if(wxWidgets_FOUND) + include(${wxWidgets_USE_FILE}) + # and for each of your dependent executable/library targets: + target_link_libraries(<YourTarget> ${wxWidgets_LIBRARIES}) + endif() + + + +If wxWidgets is required (i.e., not an optional part): + +:: + + find_package(wxWidgets REQUIRED gl core base OPTIONAL_COMPONENTS net) + include(${wxWidgets_USE_FILE}) + # and for each of your dependent executable/library targets: + target_link_libraries(<YourTarget> ${wxWidgets_LIBRARIES}) +#]=======================================================================] # # FIXME: check this and provide a correct sample usage... diff --git a/Modules/FindwxWindows.cmake b/Modules/FindwxWindows.cmake index 115cdc6fe1..7f25671a8c 100644 --- a/Modules/FindwxWindows.cmake +++ b/Modules/FindwxWindows.cmake @@ -1,84 +1,85 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# FindwxWindows -# ------------- -# -# Find wxWindows (wxWidgets) installation -# -# This module finds if wxWindows/wxWidgets is installed and determines -# where the include files and libraries are. It also determines what -# the name of the library is. Please note this file is DEPRECATED and -# replaced by FindwxWidgets.cmake. This code sets the following -# variables: -# -# :: -# -# WXWINDOWS_FOUND = system has WxWindows -# WXWINDOWS_LIBRARIES = path to the wxWindows libraries -# on Unix/Linux with additional -# linker flags from -# "wx-config --libs" -# CMAKE_WXWINDOWS_CXX_FLAGS = Compiler flags for wxWindows, -# essentially "`wx-config --cxxflags`" -# on Linux -# WXWINDOWS_INCLUDE_DIR = where to find "wx/wx.h" and "wx/setup.h" -# WXWINDOWS_LINK_DIRECTORIES = link directories, useful for rpath on -# Unix -# WXWINDOWS_DEFINITIONS = extra defines -# -# -# -# OPTIONS If you need OpenGL support please -# -# :: -# -# set(WXWINDOWS_USE_GL 1) -# -# in your CMakeLists.txt *before* you include this file. -# -# :: -# -# HAVE_ISYSTEM - true required to replace -I by -isystem on g++ -# -# -# -# For convenience include Use_wxWindows.cmake in your project's -# CMakeLists.txt using -# include(${CMAKE_CURRENT_LIST_DIR}/Use_wxWindows.cmake). -# -# USAGE -# -# :: -# -# set(WXWINDOWS_USE_GL 1) -# find_package(wxWindows) -# -# -# -# NOTES wxWidgets 2.6.x is supported for monolithic builds e.g. -# compiled in wx/build/msw dir as: -# -# :: -# -# nmake -f makefile.vc BUILD=debug SHARED=0 USE_OPENGL=1 MONOLITHIC=1 -# -# -# -# DEPRECATED -# -# :: -# -# CMAKE_WX_CAN_COMPILE -# WXWINDOWS_LIBRARY -# CMAKE_WX_CXX_FLAGS -# WXWINDOWS_INCLUDE_PATH -# -# -# -# AUTHOR Jan Woetzel <http://www.mip.informatik.uni-kiel.de/~jw> -# (07/2003-01/2006) +#[=======================================================================[.rst: +FindwxWindows +------------- + +Find wxWindows (wxWidgets) installation + +This module finds if wxWindows/wxWidgets is installed and determines +where the include files and libraries are. It also determines what +the name of the library is. Please note this file is DEPRECATED and +replaced by FindwxWidgets.cmake. This code sets the following +variables: + +:: + + WXWINDOWS_FOUND = system has WxWindows + WXWINDOWS_LIBRARIES = path to the wxWindows libraries + on Unix/Linux with additional + linker flags from + "wx-config --libs" + CMAKE_WXWINDOWS_CXX_FLAGS = Compiler flags for wxWindows, + essentially "`wx-config --cxxflags`" + on Linux + WXWINDOWS_INCLUDE_DIR = where to find "wx/wx.h" and "wx/setup.h" + WXWINDOWS_LINK_DIRECTORIES = link directories, useful for rpath on + Unix + WXWINDOWS_DEFINITIONS = extra defines + + + +OPTIONS If you need OpenGL support please + +:: + + set(WXWINDOWS_USE_GL 1) + +in your CMakeLists.txt *before* you include this file. + +:: + + HAVE_ISYSTEM - true required to replace -I by -isystem on g++ + + + +For convenience include Use_wxWindows.cmake in your project's +CMakeLists.txt using +include(${CMAKE_CURRENT_LIST_DIR}/Use_wxWindows.cmake). + +USAGE + +:: + + set(WXWINDOWS_USE_GL 1) + find_package(wxWindows) + + + +NOTES wxWidgets 2.6.x is supported for monolithic builds e.g. +compiled in wx/build/msw dir as: + +:: + + nmake -f makefile.vc BUILD=debug SHARED=0 USE_OPENGL=1 MONOLITHIC=1 + + + +DEPRECATED + +:: + + CMAKE_WX_CAN_COMPILE + WXWINDOWS_LIBRARY + CMAKE_WX_CXX_FLAGS + WXWINDOWS_INCLUDE_PATH + + + +AUTHOR Jan Woetzel <http://www.mip.informatik.uni-kiel.de/~jw> +(07/2003-01/2006) +#]=======================================================================] # ------------------------------------------------------------------ # diff --git a/Modules/GNUInstallDirs.cmake b/Modules/GNUInstallDirs.cmake index 9dd464c8de..2a80b7d9a6 100644 --- a/Modules/GNUInstallDirs.cmake +++ b/Modules/GNUInstallDirs.cmake @@ -1,127 +1,128 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# GNUInstallDirs -# -------------- -# -# Define GNU standard installation directories -# -# Provides install directory variables as defined by the -# `GNU Coding Standards`_. -# -# .. _`GNU Coding Standards`: https://www.gnu.org/prep/standards/html_node/Directory-Variables.html -# -# Result Variables -# ^^^^^^^^^^^^^^^^ -# -# Inclusion of this module defines the following variables: -# -# ``CMAKE_INSTALL_<dir>`` -# -# Destination for files of a given type. This value may be passed to -# the ``DESTINATION`` options of :command:`install` commands for the -# corresponding file type. -# -# ``CMAKE_INSTALL_FULL_<dir>`` -# -# The absolute path generated from the corresponding ``CMAKE_INSTALL_<dir>`` -# value. If the value is not already an absolute path, an absolute path -# is constructed typically by prepending the value of the -# :variable:`CMAKE_INSTALL_PREFIX` variable. However, there are some -# `special cases`_ as documented below. -# -# where ``<dir>`` is one of: -# -# ``BINDIR`` -# user executables (``bin``) -# ``SBINDIR`` -# system admin executables (``sbin``) -# ``LIBEXECDIR`` -# program executables (``libexec``) -# ``SYSCONFDIR`` -# read-only single-machine data (``etc``) -# ``SHAREDSTATEDIR`` -# modifiable architecture-independent data (``com``) -# ``LOCALSTATEDIR`` -# modifiable single-machine data (``var``) -# ``RUNSTATEDIR`` -# run-time variable data (``LOCALSTATEDIR/run``) -# ``LIBDIR`` -# object code libraries (``lib`` or ``lib64`` -# or ``lib/<multiarch-tuple>`` on Debian) -# ``INCLUDEDIR`` -# C header files (``include``) -# ``OLDINCLUDEDIR`` -# C header files for non-gcc (``/usr/include``) -# ``DATAROOTDIR`` -# read-only architecture-independent data root (``share``) -# ``DATADIR`` -# read-only architecture-independent data (``DATAROOTDIR``) -# ``INFODIR`` -# info documentation (``DATAROOTDIR/info``) -# ``LOCALEDIR`` -# locale-dependent data (``DATAROOTDIR/locale``) -# ``MANDIR`` -# man documentation (``DATAROOTDIR/man``) -# ``DOCDIR`` -# documentation root (``DATAROOTDIR/doc/PROJECT_NAME``) -# -# If the includer does not define a value the above-shown default will be -# used and the value will appear in the cache for editing by the user. -# -# Special Cases -# ^^^^^^^^^^^^^ -# -# The following values of :variable:`CMAKE_INSTALL_PREFIX` are special: -# -# ``/`` -# -# For ``<dir>`` other than the ``SYSCONFDIR``, ``LOCALSTATEDIR`` and -# ``RUNSTATEDIR``, the value of ``CMAKE_INSTALL_<dir>`` is prefixed -# with ``usr/`` if it is not user-specified as an absolute path. -# For example, the ``INCLUDEDIR`` value ``include`` becomes ``usr/include``. -# This is required by the `GNU Coding Standards`_, which state: -# -# When building the complete GNU system, the prefix will be empty -# and ``/usr`` will be a symbolic link to ``/``. -# -# ``/usr`` -# -# For ``<dir>`` equal to ``SYSCONFDIR``, ``LOCALSTATEDIR`` or -# ``RUNSTATEDIR``, the ``CMAKE_INSTALL_FULL_<dir>`` is computed by -# prepending just ``/`` to the value of ``CMAKE_INSTALL_<dir>`` -# if it is not user-specified as an absolute path. -# For example, the ``SYSCONFDIR`` value ``etc`` becomes ``/etc``. -# This is required by the `GNU Coding Standards`_. -# -# ``/opt/...`` -# -# For ``<dir>`` equal to ``SYSCONFDIR``, ``LOCALSTATEDIR`` or -# ``RUNSTATEDIR``, the ``CMAKE_INSTALL_FULL_<dir>`` is computed by -# *appending* the prefix to the value of ``CMAKE_INSTALL_<dir>`` -# if it is not user-specified as an absolute path. -# For example, the ``SYSCONFDIR`` value ``etc`` becomes ``/etc/opt/...``. -# This is defined by the `Filesystem Hierarchy Standard`_. -# -# .. _`Filesystem Hierarchy Standard`: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html -# -# Macros -# ^^^^^^ -# -# .. command:: GNUInstallDirs_get_absolute_install_dir -# -# :: -# -# GNUInstallDirs_get_absolute_install_dir(absvar var) -# -# Set the given variable ``absvar`` to the absolute path contained -# within the variable ``var``. This is to allow the computation of an -# absolute path, accounting for all the special cases documented -# above. While this macro is used to compute the various -# ``CMAKE_INSTALL_FULL_<dir>`` variables, it is exposed publicly to -# allow users who create additional path variables to also compute -# absolute paths where necessary, using the same logic. +#[=======================================================================[.rst: +GNUInstallDirs +-------------- + +Define GNU standard installation directories + +Provides install directory variables as defined by the +`GNU Coding Standards`_. + +.. _`GNU Coding Standards`: https://www.gnu.org/prep/standards/html_node/Directory-Variables.html + +Result Variables +^^^^^^^^^^^^^^^^ + +Inclusion of this module defines the following variables: + +``CMAKE_INSTALL_<dir>`` + + Destination for files of a given type. This value may be passed to + the ``DESTINATION`` options of :command:`install` commands for the + corresponding file type. + +``CMAKE_INSTALL_FULL_<dir>`` + + The absolute path generated from the corresponding ``CMAKE_INSTALL_<dir>`` + value. If the value is not already an absolute path, an absolute path + is constructed typically by prepending the value of the + :variable:`CMAKE_INSTALL_PREFIX` variable. However, there are some + `special cases`_ as documented below. + +where ``<dir>`` is one of: + +``BINDIR`` + user executables (``bin``) +``SBINDIR`` + system admin executables (``sbin``) +``LIBEXECDIR`` + program executables (``libexec``) +``SYSCONFDIR`` + read-only single-machine data (``etc``) +``SHAREDSTATEDIR`` + modifiable architecture-independent data (``com``) +``LOCALSTATEDIR`` + modifiable single-machine data (``var``) +``RUNSTATEDIR`` + run-time variable data (``LOCALSTATEDIR/run``) +``LIBDIR`` + object code libraries (``lib`` or ``lib64`` + or ``lib/<multiarch-tuple>`` on Debian) +``INCLUDEDIR`` + C header files (``include``) +``OLDINCLUDEDIR`` + C header files for non-gcc (``/usr/include``) +``DATAROOTDIR`` + read-only architecture-independent data root (``share``) +``DATADIR`` + read-only architecture-independent data (``DATAROOTDIR``) +``INFODIR`` + info documentation (``DATAROOTDIR/info``) +``LOCALEDIR`` + locale-dependent data (``DATAROOTDIR/locale``) +``MANDIR`` + man documentation (``DATAROOTDIR/man``) +``DOCDIR`` + documentation root (``DATAROOTDIR/doc/PROJECT_NAME``) + +If the includer does not define a value the above-shown default will be +used and the value will appear in the cache for editing by the user. + +Special Cases +^^^^^^^^^^^^^ + +The following values of :variable:`CMAKE_INSTALL_PREFIX` are special: + +``/`` + + For ``<dir>`` other than the ``SYSCONFDIR``, ``LOCALSTATEDIR`` and + ``RUNSTATEDIR``, the value of ``CMAKE_INSTALL_<dir>`` is prefixed + with ``usr/`` if it is not user-specified as an absolute path. + For example, the ``INCLUDEDIR`` value ``include`` becomes ``usr/include``. + This is required by the `GNU Coding Standards`_, which state: + + When building the complete GNU system, the prefix will be empty + and ``/usr`` will be a symbolic link to ``/``. + +``/usr`` + + For ``<dir>`` equal to ``SYSCONFDIR``, ``LOCALSTATEDIR`` or + ``RUNSTATEDIR``, the ``CMAKE_INSTALL_FULL_<dir>`` is computed by + prepending just ``/`` to the value of ``CMAKE_INSTALL_<dir>`` + if it is not user-specified as an absolute path. + For example, the ``SYSCONFDIR`` value ``etc`` becomes ``/etc``. + This is required by the `GNU Coding Standards`_. + +``/opt/...`` + + For ``<dir>`` equal to ``SYSCONFDIR``, ``LOCALSTATEDIR`` or + ``RUNSTATEDIR``, the ``CMAKE_INSTALL_FULL_<dir>`` is computed by + *appending* the prefix to the value of ``CMAKE_INSTALL_<dir>`` + if it is not user-specified as an absolute path. + For example, the ``SYSCONFDIR`` value ``etc`` becomes ``/etc/opt/...``. + This is defined by the `Filesystem Hierarchy Standard`_. + +.. _`Filesystem Hierarchy Standard`: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html + +Macros +^^^^^^ + +.. command:: GNUInstallDirs_get_absolute_install_dir + + :: + + GNUInstallDirs_get_absolute_install_dir(absvar var) + + Set the given variable ``absvar`` to the absolute path contained + within the variable ``var``. This is to allow the computation of an + absolute path, accounting for all the special cases documented + above. While this macro is used to compute the various + ``CMAKE_INSTALL_FULL_<dir>`` variables, it is exposed publicly to + allow users who create additional path variables to also compute + absolute paths where necessary, using the same logic. +#]=======================================================================] cmake_policy(PUSH) cmake_policy(SET CMP0054 NEW) # if() quoted variables not dereferenced diff --git a/Modules/GenerateExportHeader.cmake b/Modules/GenerateExportHeader.cmake index e6dcd00f7a..f2e4527664 100644 --- a/Modules/GenerateExportHeader.cmake +++ b/Modules/GenerateExportHeader.cmake @@ -1,189 +1,190 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# GenerateExportHeader -# -------------------- -# -# Function for generation of export macros for libraries -# -# This module provides the function GENERATE_EXPORT_HEADER(). -# -# The ``GENERATE_EXPORT_HEADER`` function can be used to generate a file -# suitable for preprocessor inclusion which contains EXPORT macros to be -# used in library classes:: -# -# GENERATE_EXPORT_HEADER( LIBRARY_TARGET -# [BASE_NAME <base_name>] -# [EXPORT_MACRO_NAME <export_macro_name>] -# [EXPORT_FILE_NAME <export_file_name>] -# [DEPRECATED_MACRO_NAME <deprecated_macro_name>] -# [NO_EXPORT_MACRO_NAME <no_export_macro_name>] -# [INCLUDE_GUARD_NAME <include_guard_name>] -# [STATIC_DEFINE <static_define>] -# [NO_DEPRECATED_MACRO_NAME <no_deprecated_macro_name>] -# [DEFINE_NO_DEPRECATED] -# [PREFIX_NAME <prefix_name>] -# [CUSTOM_CONTENT_FROM_VARIABLE <variable>] -# ) -# -# -# The target properties :prop_tgt:`CXX_VISIBILITY_PRESET <<LANG>_VISIBILITY_PRESET>` -# and :prop_tgt:`VISIBILITY_INLINES_HIDDEN` can be used to add the appropriate -# compile flags for targets. See the documentation of those target properties, -# and the convenience variables -# :variable:`CMAKE_CXX_VISIBILITY_PRESET <CMAKE_<LANG>_VISIBILITY_PRESET>` and -# :variable:`CMAKE_VISIBILITY_INLINES_HIDDEN`. -# -# By default ``GENERATE_EXPORT_HEADER()`` generates macro names in a file -# name determined by the name of the library. This means that in the -# simplest case, users of ``GenerateExportHeader`` will be equivalent to: -# -# .. code-block:: cmake -# -# set(CMAKE_CXX_VISIBILITY_PRESET hidden) -# set(CMAKE_VISIBILITY_INLINES_HIDDEN 1) -# add_library(somelib someclass.cpp) -# generate_export_header(somelib) -# install(TARGETS somelib DESTINATION ${LIBRARY_INSTALL_DIR}) -# install(FILES -# someclass.h -# ${PROJECT_BINARY_DIR}/somelib_export.h DESTINATION ${INCLUDE_INSTALL_DIR} -# ) -# -# -# And in the ABI header files: -# -# .. code-block:: c++ -# -# #include "somelib_export.h" -# class SOMELIB_EXPORT SomeClass { -# ... -# }; -# -# -# The CMake fragment will generate a file in the -# ``${CMAKE_CURRENT_BINARY_DIR}`` called ``somelib_export.h`` containing the -# macros ``SOMELIB_EXPORT``, ``SOMELIB_NO_EXPORT``, ``SOMELIB_DEPRECATED``, -# ``SOMELIB_DEPRECATED_EXPORT`` and ``SOMELIB_DEPRECATED_NO_EXPORT``. -# They will be followed by content taken from the variable specified by -# the ``CUSTOM_CONTENT_FROM_VARIABLE`` option, if any. -# The resulting file should be installed with other headers in the library. -# -# The ``BASE_NAME`` argument can be used to override the file name and the -# names used for the macros: -# -# .. code-block:: cmake -# -# add_library(somelib someclass.cpp) -# generate_export_header(somelib -# BASE_NAME other_name -# ) -# -# -# Generates a file called ``other_name_export.h`` containing the macros -# ``OTHER_NAME_EXPORT``, ``OTHER_NAME_NO_EXPORT`` and ``OTHER_NAME_DEPRECATED`` -# etc. -# -# The ``BASE_NAME`` may be overridden by specifying other options in the -# function. For example: -# -# .. code-block:: cmake -# -# add_library(somelib someclass.cpp) -# generate_export_header(somelib -# EXPORT_MACRO_NAME OTHER_NAME_EXPORT -# ) -# -# -# creates the macro ``OTHER_NAME_EXPORT`` instead of ``SOMELIB_EXPORT``, but -# other macros and the generated file name is as default: -# -# .. code-block:: cmake -# -# add_library(somelib someclass.cpp) -# generate_export_header(somelib -# DEPRECATED_MACRO_NAME KDE_DEPRECATED -# ) -# -# -# creates the macro ``KDE_DEPRECATED`` instead of ``SOMELIB_DEPRECATED``. -# -# If ``LIBRARY_TARGET`` is a static library, macros are defined without -# values. -# -# If the same sources are used to create both a shared and a static -# library, the uppercased symbol ``${BASE_NAME}_STATIC_DEFINE`` should be -# used when building the static library: -# -# .. code-block:: cmake -# -# add_library(shared_variant SHARED ${lib_SRCS}) -# add_library(static_variant ${lib_SRCS}) -# generate_export_header(shared_variant BASE_NAME libshared_and_static) -# set_target_properties(static_variant PROPERTIES -# COMPILE_FLAGS -DLIBSHARED_AND_STATIC_STATIC_DEFINE) -# -# This will cause the export macros to expand to nothing when building -# the static library. -# -# If ``DEFINE_NO_DEPRECATED`` is specified, then a macro -# ``${BASE_NAME}_NO_DEPRECATED`` will be defined This macro can be used to -# remove deprecated code from preprocessor output: -# -# .. code-block:: cmake -# -# option(EXCLUDE_DEPRECATED "Exclude deprecated parts of the library" FALSE) -# if (EXCLUDE_DEPRECATED) -# set(NO_BUILD_DEPRECATED DEFINE_NO_DEPRECATED) -# endif() -# generate_export_header(somelib ${NO_BUILD_DEPRECATED}) -# -# -# And then in somelib: -# -# .. code-block:: c++ -# -# class SOMELIB_EXPORT SomeClass -# { -# public: -# #ifndef SOMELIB_NO_DEPRECATED -# SOMELIB_DEPRECATED void oldMethod(); -# #endif -# }; -# -# .. code-block:: c++ -# -# #ifndef SOMELIB_NO_DEPRECATED -# void SomeClass::oldMethod() { } -# #endif -# -# -# If ``PREFIX_NAME`` is specified, the argument will be used as a prefix to -# all generated macros. -# -# For example: -# -# .. code-block:: cmake -# -# generate_export_header(somelib PREFIX_NAME VTK_) -# -# Generates the macros ``VTK_SOMELIB_EXPORT`` etc. -# -# :: -# -# ADD_COMPILER_EXPORT_FLAGS( [<output_variable>] ) -# -# The ``ADD_COMPILER_EXPORT_FLAGS`` function adds ``-fvisibility=hidden`` to -# :variable:`CMAKE_CXX_FLAGS <CMAKE_<LANG>_FLAGS>` if supported, and is a no-op -# on Windows which does not need extra compiler flags for exporting support. -# You may optionally pass a single argument to ``ADD_COMPILER_EXPORT_FLAGS`` -# that will be populated with the ``CXX_FLAGS`` required to enable visibility -# support for the compiler/architecture in use. -# -# This function is deprecated. Set the target properties -# :prop_tgt:`CXX_VISIBILITY_PRESET <<LANG>_VISIBILITY_PRESET>` and -# :prop_tgt:`VISIBILITY_INLINES_HIDDEN` instead. +#[=======================================================================[.rst: +GenerateExportHeader +-------------------- + +Function for generation of export macros for libraries + +This module provides the function GENERATE_EXPORT_HEADER(). + +The ``GENERATE_EXPORT_HEADER`` function can be used to generate a file +suitable for preprocessor inclusion which contains EXPORT macros to be +used in library classes:: + + GENERATE_EXPORT_HEADER( LIBRARY_TARGET + [BASE_NAME <base_name>] + [EXPORT_MACRO_NAME <export_macro_name>] + [EXPORT_FILE_NAME <export_file_name>] + [DEPRECATED_MACRO_NAME <deprecated_macro_name>] + [NO_EXPORT_MACRO_NAME <no_export_macro_name>] + [INCLUDE_GUARD_NAME <include_guard_name>] + [STATIC_DEFINE <static_define>] + [NO_DEPRECATED_MACRO_NAME <no_deprecated_macro_name>] + [DEFINE_NO_DEPRECATED] + [PREFIX_NAME <prefix_name>] + [CUSTOM_CONTENT_FROM_VARIABLE <variable>] + ) + + +The target properties :prop_tgt:`CXX_VISIBILITY_PRESET <<LANG>_VISIBILITY_PRESET>` +and :prop_tgt:`VISIBILITY_INLINES_HIDDEN` can be used to add the appropriate +compile flags for targets. See the documentation of those target properties, +and the convenience variables +:variable:`CMAKE_CXX_VISIBILITY_PRESET <CMAKE_<LANG>_VISIBILITY_PRESET>` and +:variable:`CMAKE_VISIBILITY_INLINES_HIDDEN`. + +By default ``GENERATE_EXPORT_HEADER()`` generates macro names in a file +name determined by the name of the library. This means that in the +simplest case, users of ``GenerateExportHeader`` will be equivalent to: + +.. code-block:: cmake + + set(CMAKE_CXX_VISIBILITY_PRESET hidden) + set(CMAKE_VISIBILITY_INLINES_HIDDEN 1) + add_library(somelib someclass.cpp) + generate_export_header(somelib) + install(TARGETS somelib DESTINATION ${LIBRARY_INSTALL_DIR}) + install(FILES + someclass.h + ${PROJECT_BINARY_DIR}/somelib_export.h DESTINATION ${INCLUDE_INSTALL_DIR} + ) + + +And in the ABI header files: + +.. code-block:: c++ + + #include "somelib_export.h" + class SOMELIB_EXPORT SomeClass { + ... + }; + + +The CMake fragment will generate a file in the +``${CMAKE_CURRENT_BINARY_DIR}`` called ``somelib_export.h`` containing the +macros ``SOMELIB_EXPORT``, ``SOMELIB_NO_EXPORT``, ``SOMELIB_DEPRECATED``, +``SOMELIB_DEPRECATED_EXPORT`` and ``SOMELIB_DEPRECATED_NO_EXPORT``. +They will be followed by content taken from the variable specified by +the ``CUSTOM_CONTENT_FROM_VARIABLE`` option, if any. +The resulting file should be installed with other headers in the library. + +The ``BASE_NAME`` argument can be used to override the file name and the +names used for the macros: + +.. code-block:: cmake + + add_library(somelib someclass.cpp) + generate_export_header(somelib + BASE_NAME other_name + ) + + +Generates a file called ``other_name_export.h`` containing the macros +``OTHER_NAME_EXPORT``, ``OTHER_NAME_NO_EXPORT`` and ``OTHER_NAME_DEPRECATED`` +etc. + +The ``BASE_NAME`` may be overridden by specifying other options in the +function. For example: + +.. code-block:: cmake + + add_library(somelib someclass.cpp) + generate_export_header(somelib + EXPORT_MACRO_NAME OTHER_NAME_EXPORT + ) + + +creates the macro ``OTHER_NAME_EXPORT`` instead of ``SOMELIB_EXPORT``, but +other macros and the generated file name is as default: + +.. code-block:: cmake + + add_library(somelib someclass.cpp) + generate_export_header(somelib + DEPRECATED_MACRO_NAME KDE_DEPRECATED + ) + + +creates the macro ``KDE_DEPRECATED`` instead of ``SOMELIB_DEPRECATED``. + +If ``LIBRARY_TARGET`` is a static library, macros are defined without +values. + +If the same sources are used to create both a shared and a static +library, the uppercased symbol ``${BASE_NAME}_STATIC_DEFINE`` should be +used when building the static library: + +.. code-block:: cmake + + add_library(shared_variant SHARED ${lib_SRCS}) + add_library(static_variant ${lib_SRCS}) + generate_export_header(shared_variant BASE_NAME libshared_and_static) + set_target_properties(static_variant PROPERTIES + COMPILE_FLAGS -DLIBSHARED_AND_STATIC_STATIC_DEFINE) + +This will cause the export macros to expand to nothing when building +the static library. + +If ``DEFINE_NO_DEPRECATED`` is specified, then a macro +``${BASE_NAME}_NO_DEPRECATED`` will be defined This macro can be used to +remove deprecated code from preprocessor output: + +.. code-block:: cmake + + option(EXCLUDE_DEPRECATED "Exclude deprecated parts of the library" FALSE) + if (EXCLUDE_DEPRECATED) + set(NO_BUILD_DEPRECATED DEFINE_NO_DEPRECATED) + endif() + generate_export_header(somelib ${NO_BUILD_DEPRECATED}) + + +And then in somelib: + +.. code-block:: c++ + + class SOMELIB_EXPORT SomeClass + { + public: + #ifndef SOMELIB_NO_DEPRECATED + SOMELIB_DEPRECATED void oldMethod(); + #endif + }; + +.. code-block:: c++ + + #ifndef SOMELIB_NO_DEPRECATED + void SomeClass::oldMethod() { } + #endif + + +If ``PREFIX_NAME`` is specified, the argument will be used as a prefix to +all generated macros. + +For example: + +.. code-block:: cmake + + generate_export_header(somelib PREFIX_NAME VTK_) + +Generates the macros ``VTK_SOMELIB_EXPORT`` etc. + +:: + + ADD_COMPILER_EXPORT_FLAGS( [<output_variable>] ) + +The ``ADD_COMPILER_EXPORT_FLAGS`` function adds ``-fvisibility=hidden`` to +:variable:`CMAKE_CXX_FLAGS <CMAKE_<LANG>_FLAGS>` if supported, and is a no-op +on Windows which does not need extra compiler flags for exporting support. +You may optionally pass a single argument to ``ADD_COMPILER_EXPORT_FLAGS`` +that will be populated with the ``CXX_FLAGS`` required to enable visibility +support for the compiler/architecture in use. + +This function is deprecated. Set the target properties +:prop_tgt:`CXX_VISIBILITY_PRESET <<LANG>_VISIBILITY_PRESET>` and +:prop_tgt:`VISIBILITY_INLINES_HIDDEN` instead. +#]=======================================================================] include(CheckCCompilerFlag) include(CheckCXXCompilerFlag) diff --git a/Modules/GetPrerequisites.cmake b/Modules/GetPrerequisites.cmake index ca710090fb..5b32f7ce1e 100644 --- a/Modules/GetPrerequisites.cmake +++ b/Modules/GetPrerequisites.cmake @@ -1,169 +1,170 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# GetPrerequisites -# ---------------- -# -# Functions to analyze and list executable file prerequisites. -# -# This module provides functions to list the .dll, .dylib or .so files -# that an executable or shared library file depends on. (Its -# prerequisites.) -# -# It uses various tools to obtain the list of required shared library -# files: -# -# :: -# -# dumpbin (Windows) -# objdump (MinGW on Windows) -# ldd (Linux/Unix) -# otool (Mac OSX) -# -# The following functions are provided by this module: -# -# :: -# -# get_prerequisites -# list_prerequisites -# list_prerequisites_by_glob -# gp_append_unique -# is_file_executable -# gp_item_default_embedded_path -# (projects can override with gp_item_default_embedded_path_override) -# gp_resolve_item -# (projects can override with gp_resolve_item_override) -# gp_resolved_file_type -# (projects can override with gp_resolved_file_type_override) -# gp_file_type -# -# Requires CMake 2.6 or greater because it uses function, break, return -# and PARENT_SCOPE. -# -# :: -# -# GET_PREREQUISITES(<target> <prerequisites_var> <exclude_system> <recurse> -# <exepath> <dirs> [<rpaths>]) -# -# Get the list of shared library files required by <target>. The list -# in the variable named <prerequisites_var> should be empty on first -# entry to this function. On exit, <prerequisites_var> will contain the -# list of required shared library files. -# -# <target> is the full path to an executable file. <prerequisites_var> -# is the name of a CMake variable to contain the results. -# <exclude_system> must be 0 or 1 indicating whether to include or -# exclude "system" prerequisites. If <recurse> is set to 1 all -# prerequisites will be found recursively, if set to 0 only direct -# prerequisites are listed. <exepath> is the path to the top level -# executable used for @executable_path replacment on the Mac. <dirs> is -# a list of paths where libraries might be found: these paths are -# searched first when a target without any path info is given. Then -# standard system locations are also searched: PATH, Framework -# locations, /usr/lib... -# -# :: -# -# LIST_PREREQUISITES(<target> [<recurse> [<exclude_system> [<verbose>]]]) -# -# Print a message listing the prerequisites of <target>. -# -# <target> is the name of a shared library or executable target or the -# full path to a shared library or executable file. If <recurse> is set -# to 1 all prerequisites will be found recursively, if set to 0 only -# direct prerequisites are listed. <exclude_system> must be 0 or 1 -# indicating whether to include or exclude "system" prerequisites. With -# <verbose> set to 0 only the full path names of the prerequisites are -# printed, set to 1 extra informatin will be displayed. -# -# :: -# -# LIST_PREREQUISITES_BY_GLOB(<glob_arg> <glob_exp>) -# -# Print the prerequisites of shared library and executable files -# matching a globbing pattern. <glob_arg> is GLOB or GLOB_RECURSE and -# <glob_exp> is a globbing expression used with "file(GLOB" or -# "file(GLOB_RECURSE" to retrieve a list of matching files. If a -# matching file is executable, its prerequisites are listed. -# -# Any additional (optional) arguments provided are passed along as the -# optional arguments to the list_prerequisites calls. -# -# :: -# -# GP_APPEND_UNIQUE(<list_var> <value>) -# -# Append <value> to the list variable <list_var> only if the value is -# not already in the list. -# -# :: -# -# IS_FILE_EXECUTABLE(<file> <result_var>) -# -# Return 1 in <result_var> if <file> is a binary executable, 0 -# otherwise. -# -# :: -# -# GP_ITEM_DEFAULT_EMBEDDED_PATH(<item> <default_embedded_path_var>) -# -# Return the path that others should refer to the item by when the item -# is embedded inside a bundle. -# -# Override on a per-project basis by providing a project-specific -# gp_item_default_embedded_path_override function. -# -# :: -# -# GP_RESOLVE_ITEM(<context> <item> <exepath> <dirs> <resolved_item_var> -# [<rpaths>]) -# -# Resolve an item into an existing full path file. -# -# Override on a per-project basis by providing a project-specific -# gp_resolve_item_override function. -# -# :: -# -# GP_RESOLVED_FILE_TYPE(<original_file> <file> <exepath> <dirs> <type_var> -# [<rpaths>]) -# -# Return the type of <file> with respect to <original_file>. String -# describing type of prerequisite is returned in variable named -# <type_var>. -# -# Use <exepath> and <dirs> if necessary to resolve non-absolute <file> -# values -- but only for non-embedded items. -# -# Possible types are: -# -# :: -# -# system -# local -# embedded -# other -# -# Override on a per-project basis by providing a project-specific -# gp_resolved_file_type_override function. -# -# :: -# -# GP_FILE_TYPE(<original_file> <file> <type_var>) -# -# Return the type of <file> with respect to <original_file>. String -# describing type of prerequisite is returned in variable named -# <type_var>. -# -# Possible types are: -# -# :: -# -# system -# local -# embedded -# other +#[=======================================================================[.rst: +GetPrerequisites +---------------- + +Functions to analyze and list executable file prerequisites. + +This module provides functions to list the .dll, .dylib or .so files +that an executable or shared library file depends on. (Its +prerequisites.) + +It uses various tools to obtain the list of required shared library +files: + +:: + + dumpbin (Windows) + objdump (MinGW on Windows) + ldd (Linux/Unix) + otool (Mac OSX) + +The following functions are provided by this module: + +:: + + get_prerequisites + list_prerequisites + list_prerequisites_by_glob + gp_append_unique + is_file_executable + gp_item_default_embedded_path + (projects can override with gp_item_default_embedded_path_override) + gp_resolve_item + (projects can override with gp_resolve_item_override) + gp_resolved_file_type + (projects can override with gp_resolved_file_type_override) + gp_file_type + +Requires CMake 2.6 or greater because it uses function, break, return +and PARENT_SCOPE. + +:: + + GET_PREREQUISITES(<target> <prerequisites_var> <exclude_system> <recurse> + <exepath> <dirs> [<rpaths>]) + +Get the list of shared library files required by <target>. The list +in the variable named <prerequisites_var> should be empty on first +entry to this function. On exit, <prerequisites_var> will contain the +list of required shared library files. + +<target> is the full path to an executable file. <prerequisites_var> +is the name of a CMake variable to contain the results. +<exclude_system> must be 0 or 1 indicating whether to include or +exclude "system" prerequisites. If <recurse> is set to 1 all +prerequisites will be found recursively, if set to 0 only direct +prerequisites are listed. <exepath> is the path to the top level +executable used for @executable_path replacment on the Mac. <dirs> is +a list of paths where libraries might be found: these paths are +searched first when a target without any path info is given. Then +standard system locations are also searched: PATH, Framework +locations, /usr/lib... + +:: + + LIST_PREREQUISITES(<target> [<recurse> [<exclude_system> [<verbose>]]]) + +Print a message listing the prerequisites of <target>. + +<target> is the name of a shared library or executable target or the +full path to a shared library or executable file. If <recurse> is set +to 1 all prerequisites will be found recursively, if set to 0 only +direct prerequisites are listed. <exclude_system> must be 0 or 1 +indicating whether to include or exclude "system" prerequisites. With +<verbose> set to 0 only the full path names of the prerequisites are +printed, set to 1 extra informatin will be displayed. + +:: + + LIST_PREREQUISITES_BY_GLOB(<glob_arg> <glob_exp>) + +Print the prerequisites of shared library and executable files +matching a globbing pattern. <glob_arg> is GLOB or GLOB_RECURSE and +<glob_exp> is a globbing expression used with "file(GLOB" or +"file(GLOB_RECURSE" to retrieve a list of matching files. If a +matching file is executable, its prerequisites are listed. + +Any additional (optional) arguments provided are passed along as the +optional arguments to the list_prerequisites calls. + +:: + + GP_APPEND_UNIQUE(<list_var> <value>) + +Append <value> to the list variable <list_var> only if the value is +not already in the list. + +:: + + IS_FILE_EXECUTABLE(<file> <result_var>) + +Return 1 in <result_var> if <file> is a binary executable, 0 +otherwise. + +:: + + GP_ITEM_DEFAULT_EMBEDDED_PATH(<item> <default_embedded_path_var>) + +Return the path that others should refer to the item by when the item +is embedded inside a bundle. + +Override on a per-project basis by providing a project-specific +gp_item_default_embedded_path_override function. + +:: + + GP_RESOLVE_ITEM(<context> <item> <exepath> <dirs> <resolved_item_var> + [<rpaths>]) + +Resolve an item into an existing full path file. + +Override on a per-project basis by providing a project-specific +gp_resolve_item_override function. + +:: + + GP_RESOLVED_FILE_TYPE(<original_file> <file> <exepath> <dirs> <type_var> + [<rpaths>]) + +Return the type of <file> with respect to <original_file>. String +describing type of prerequisite is returned in variable named +<type_var>. + +Use <exepath> and <dirs> if necessary to resolve non-absolute <file> +values -- but only for non-embedded items. + +Possible types are: + +:: + + system + local + embedded + other + +Override on a per-project basis by providing a project-specific +gp_resolved_file_type_override function. + +:: + + GP_FILE_TYPE(<original_file> <file> <type_var>) + +Return the type of <file> with respect to <original_file>. String +describing type of prerequisite is returned in variable named +<type_var>. + +Possible types are: + +:: + + system + local + embedded + other +#]=======================================================================] function(gp_append_unique list_var value) set(contains 0) diff --git a/Modules/InstallRequiredSystemLibraries.cmake b/Modules/InstallRequiredSystemLibraries.cmake index 4ecba054f2..9a5e64d10b 100644 --- a/Modules/InstallRequiredSystemLibraries.cmake +++ b/Modules/InstallRequiredSystemLibraries.cmake @@ -1,60 +1,61 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# InstallRequiredSystemLibraries -# ------------------------------ -# -# Include this module to search for compiler-provided system runtime -# libraries and add install rules for them. Some optional variables -# may be set prior to including the module to adjust behavior: -# -# ``CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS`` -# Specify additional runtime libraries that may not be detected. -# After inclusion any detected libraries will be appended to this. -# -# ``CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP`` -# Set to TRUE to skip calling the :command:`install(PROGRAMS)` command to -# allow the includer to specify its own install rule, using the value of -# ``CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS`` to get the list of libraries. -# -# ``CMAKE_INSTALL_DEBUG_LIBRARIES`` -# Set to TRUE to install the debug runtime libraries when available -# with MSVC tools. -# -# ``CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY`` -# Set to TRUE to install only the debug runtime libraries with MSVC -# tools even if the release runtime libraries are also available. -# -# ``CMAKE_INSTALL_UCRT_LIBRARIES`` -# Set to TRUE to install the Windows Universal CRT libraries for -# app-local deployment (e.g. to Windows XP). This is meaningful -# only with MSVC from Visual Studio 2015 or higher. -# -# One may set a ``CMAKE_WINDOWS_KITS_10_DIR`` *environment variable* -# to an absolute path to tell CMake to look for Windows 10 SDKs in -# a custom location. The specified directory is expected to contain -# ``Redist/ucrt/DLLs/*`` directories. -# -# ``CMAKE_INSTALL_MFC_LIBRARIES`` -# Set to TRUE to install the MSVC MFC runtime libraries. -# -# ``CMAKE_INSTALL_OPENMP_LIBRARIES`` -# Set to TRUE to install the MSVC OpenMP runtime libraries -# -# ``CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION`` -# Specify the :command:`install(PROGRAMS)` command ``DESTINATION`` -# option. If not specified, the default is ``bin`` on Windows -# and ``lib`` elsewhere. -# -# ``CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS`` -# Set to TRUE to disable warnings about required library files that -# do not exist. (For example, Visual Studio Express editions may -# not provide the redistributable files.) -# -# ``CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT`` -# Specify the :command:`install(PROGRAMS)` command ``COMPONENT`` -# option. If not specified, no such option will be used. +#[=======================================================================[.rst: +InstallRequiredSystemLibraries +------------------------------ + +Include this module to search for compiler-provided system runtime +libraries and add install rules for them. Some optional variables +may be set prior to including the module to adjust behavior: + +``CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS`` + Specify additional runtime libraries that may not be detected. + After inclusion any detected libraries will be appended to this. + +``CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP`` + Set to TRUE to skip calling the :command:`install(PROGRAMS)` command to + allow the includer to specify its own install rule, using the value of + ``CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS`` to get the list of libraries. + +``CMAKE_INSTALL_DEBUG_LIBRARIES`` + Set to TRUE to install the debug runtime libraries when available + with MSVC tools. + +``CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY`` + Set to TRUE to install only the debug runtime libraries with MSVC + tools even if the release runtime libraries are also available. + +``CMAKE_INSTALL_UCRT_LIBRARIES`` + Set to TRUE to install the Windows Universal CRT libraries for + app-local deployment (e.g. to Windows XP). This is meaningful + only with MSVC from Visual Studio 2015 or higher. + + One may set a ``CMAKE_WINDOWS_KITS_10_DIR`` *environment variable* + to an absolute path to tell CMake to look for Windows 10 SDKs in + a custom location. The specified directory is expected to contain + ``Redist/ucrt/DLLs/*`` directories. + +``CMAKE_INSTALL_MFC_LIBRARIES`` + Set to TRUE to install the MSVC MFC runtime libraries. + +``CMAKE_INSTALL_OPENMP_LIBRARIES`` + Set to TRUE to install the MSVC OpenMP runtime libraries + +``CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION`` + Specify the :command:`install(PROGRAMS)` command ``DESTINATION`` + option. If not specified, the default is ``bin`` on Windows + and ``lib`` elsewhere. + +``CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS`` + Set to TRUE to disable warnings about required library files that + do not exist. (For example, Visual Studio Express editions may + not provide the redistributable files.) + +``CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT`` + Specify the :command:`install(PROGRAMS)` command ``COMPONENT`` + option. If not specified, no such option will be used. +#]=======================================================================] cmake_policy(PUSH) cmake_policy(SET CMP0054 NEW) # if() quoted variables not dereferenced diff --git a/Modules/MacroAddFileDependencies.cmake b/Modules/MacroAddFileDependencies.cmake index db26814788..39393d6cce 100644 --- a/Modules/MacroAddFileDependencies.cmake +++ b/Modules/MacroAddFileDependencies.cmake @@ -1,19 +1,20 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# MacroAddFileDependencies -# ------------------------ -# -# MACRO_ADD_FILE_DEPENDENCIES(<_file> depend_files...) -# -# Using the macro MACRO_ADD_FILE_DEPENDENCIES() is discouraged. There -# are usually better ways to specify the correct dependencies. -# -# MACRO_ADD_FILE_DEPENDENCIES(<_file> depend_files...) is just a -# convenience wrapper around the OBJECT_DEPENDS source file property. -# You can just use set_property(SOURCE <file> APPEND PROPERTY -# OBJECT_DEPENDS depend_files) instead. +#[=======================================================================[.rst: +MacroAddFileDependencies +------------------------ + +MACRO_ADD_FILE_DEPENDENCIES(<_file> depend_files...) + +Using the macro MACRO_ADD_FILE_DEPENDENCIES() is discouraged. There +are usually better ways to specify the correct dependencies. + +MACRO_ADD_FILE_DEPENDENCIES(<_file> depend_files...) is just a +convenience wrapper around the OBJECT_DEPENDS source file property. +You can just use set_property(SOURCE <file> APPEND PROPERTY +OBJECT_DEPENDS depend_files) instead. +#]=======================================================================] macro (MACRO_ADD_FILE_DEPENDENCIES _file) diff --git a/Modules/ProcessorCount.cmake b/Modules/ProcessorCount.cmake index 8a37884b7c..05f56d8d0a 100644 --- a/Modules/ProcessorCount.cmake +++ b/Modules/ProcessorCount.cmake @@ -1,44 +1,45 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# ProcessorCount -# -------------- -# -# ProcessorCount(var) -# -# Determine the number of processors/cores and save value in ${var} -# -# Sets the variable named ${var} to the number of physical cores -# available on the machine if the information can be determined. -# Otherwise it is set to 0. Currently this functionality is implemented -# for AIX, cygwin, FreeBSD, HPUX, IRIX, Linux, macOS, QNX, Sun and -# Windows. -# -# This function is guaranteed to return a positive integer (>=1) if it -# succeeds. It returns 0 if there's a problem determining the processor -# count. -# -# Example use, in a ctest -S dashboard script: -# -# :: -# -# include(ProcessorCount) -# ProcessorCount(N) -# if(NOT N EQUAL 0) -# set(CTEST_BUILD_FLAGS -j${N}) -# set(ctest_test_args ${ctest_test_args} PARALLEL_LEVEL ${N}) -# endif() -# -# -# -# This function is intended to offer an approximation of the value of -# the number of compute cores available on the current machine, such -# that you may use that value for parallel building and parallel -# testing. It is meant to help utilize as much of the machine as seems -# reasonable. Of course, knowledge of what else might be running on the -# machine simultaneously should be used when deciding whether to request -# a machine's full capacity all for yourself. +#[=======================================================================[.rst: +ProcessorCount +-------------- + +ProcessorCount(var) + +Determine the number of processors/cores and save value in ${var} + +Sets the variable named ${var} to the number of physical cores +available on the machine if the information can be determined. +Otherwise it is set to 0. Currently this functionality is implemented +for AIX, cygwin, FreeBSD, HPUX, IRIX, Linux, macOS, QNX, Sun and +Windows. + +This function is guaranteed to return a positive integer (>=1) if it +succeeds. It returns 0 if there's a problem determining the processor +count. + +Example use, in a ctest -S dashboard script: + +:: + + include(ProcessorCount) + ProcessorCount(N) + if(NOT N EQUAL 0) + set(CTEST_BUILD_FLAGS -j${N}) + set(ctest_test_args ${ctest_test_args} PARALLEL_LEVEL ${N}) + endif() + + + +This function is intended to offer an approximation of the value of +the number of compute cores available on the current machine, such +that you may use that value for parallel building and parallel +testing. It is meant to help utilize as much of the machine as seems +reasonable. Of course, knowledge of what else might be running on the +machine simultaneously should be used when deciding whether to request +a machine's full capacity all for yourself. +#]=======================================================================] # A more reliable way might be to compile a small C program that uses the CPUID # instruction, but that again requires compiler support or compiling assembler diff --git a/Modules/Qt4ConfigDependentSettings.cmake b/Modules/Qt4ConfigDependentSettings.cmake index e21ecf42e4..684ec21267 100644 --- a/Modules/Qt4ConfigDependentSettings.cmake +++ b/Modules/Qt4ConfigDependentSettings.cmake @@ -1,13 +1,14 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# Qt4ConfigDependentSettings -# -------------------------- -# -# -# -# This file is included by FindQt4.cmake, don't include it directly. +#[=======================================================================[.rst: +Qt4ConfigDependentSettings +-------------------------- + + + +This file is included by FindQt4.cmake, don't include it directly. +#]=======================================================================] ############################################### # diff --git a/Modules/Qt4Macros.cmake b/Modules/Qt4Macros.cmake index a2c8d853ca..5c489709d4 100644 --- a/Modules/Qt4Macros.cmake +++ b/Modules/Qt4Macros.cmake @@ -1,13 +1,14 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# Qt4Macros -# --------- -# -# -# -# This file is included by FindQt4.cmake, don't include it directly. +#[=======================================================================[.rst: +Qt4Macros +--------- + + + +This file is included by FindQt4.cmake, don't include it directly. +#]=======================================================================] ###################################### # diff --git a/Modules/SelectLibraryConfigurations.cmake b/Modules/SelectLibraryConfigurations.cmake index fe3bb00a68..8cb714d072 100644 --- a/Modules/SelectLibraryConfigurations.cmake +++ b/Modules/SelectLibraryConfigurations.cmake @@ -1,31 +1,32 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# SelectLibraryConfigurations -# --------------------------- -# -# -# -# select_library_configurations( basename ) -# -# This macro takes a library base name as an argument, and will choose -# good values for basename_LIBRARY, basename_LIBRARIES, -# basename_LIBRARY_DEBUG, and basename_LIBRARY_RELEASE depending on what -# has been found and set. If only basename_LIBRARY_RELEASE is defined, -# basename_LIBRARY will be set to the release value, and -# basename_LIBRARY_DEBUG will be set to basename_LIBRARY_DEBUG-NOTFOUND. -# If only basename_LIBRARY_DEBUG is defined, then basename_LIBRARY will -# take the debug value, and basename_LIBRARY_RELEASE will be set to -# basename_LIBRARY_RELEASE-NOTFOUND. -# -# If the generator supports configuration types, then basename_LIBRARY -# and basename_LIBRARIES will be set with debug and optimized flags -# specifying the library to be used for the given configuration. If no -# build type has been set or the generator in use does not support -# configuration types, then basename_LIBRARY and basename_LIBRARIES will -# take only the release value, or the debug value if the release one is -# not set. +#[=======================================================================[.rst: +SelectLibraryConfigurations +--------------------------- + + + +select_library_configurations( basename ) + +This macro takes a library base name as an argument, and will choose +good values for basename_LIBRARY, basename_LIBRARIES, +basename_LIBRARY_DEBUG, and basename_LIBRARY_RELEASE depending on what +has been found and set. If only basename_LIBRARY_RELEASE is defined, +basename_LIBRARY will be set to the release value, and +basename_LIBRARY_DEBUG will be set to basename_LIBRARY_DEBUG-NOTFOUND. +If only basename_LIBRARY_DEBUG is defined, then basename_LIBRARY will +take the debug value, and basename_LIBRARY_RELEASE will be set to +basename_LIBRARY_RELEASE-NOTFOUND. + +If the generator supports configuration types, then basename_LIBRARY +and basename_LIBRARIES will be set with debug and optimized flags +specifying the library to be used for the given configuration. If no +build type has been set or the generator in use does not support +configuration types, then basename_LIBRARY and basename_LIBRARIES will +take only the release value, or the debug value if the release one is +not set. +#]=======================================================================] # This macro was adapted from the FindQt4 CMake module and is maintained by Will # Dicharry <wdicharry@stellarscience.com>. diff --git a/Modules/SquishTestScript.cmake b/Modules/SquishTestScript.cmake index c0e1bea598..2a80be56f5 100644 --- a/Modules/SquishTestScript.cmake +++ b/Modules/SquishTestScript.cmake @@ -1,21 +1,22 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# SquishTestScript -# ---------------- -# -# -# -# -# -# This script launches a GUI test using Squish. You should not call the -# script directly; instead, you should access it via the SQUISH_ADD_TEST -# macro that is defined in FindSquish.cmake. -# -# This script starts the Squish server, launches the test on the client, -# and finally stops the squish server. If any of these steps fail -# (including if the tests do not pass) then a fatal error is raised. +#[=======================================================================[.rst: +SquishTestScript +---------------- + + + + + +This script launches a GUI test using Squish. You should not call the +script directly; instead, you should access it via the SQUISH_ADD_TEST +macro that is defined in FindSquish.cmake. + +This script starts the Squish server, launches the test on the client, +and finally stops the squish server. If any of these steps fail +(including if the tests do not pass) then a fatal error is raised. +#]=======================================================================] # print out the variable that we are using message(STATUS "squish_aut='${squish_aut}'") diff --git a/Modules/TestBigEndian.cmake b/Modules/TestBigEndian.cmake index 9a4bce535c..0c6e188c0f 100644 --- a/Modules/TestBigEndian.cmake +++ b/Modules/TestBigEndian.cmake @@ -1,18 +1,19 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# TestBigEndian -# ------------- -# -# Define macro to determine endian type -# -# Check if the system is big endian or little endian -# -# :: -# -# TEST_BIG_ENDIAN(VARIABLE) -# VARIABLE - variable to store the result to +#[=======================================================================[.rst: +TestBigEndian +------------- + +Define macro to determine endian type + +Check if the system is big endian or little endian + +:: + + TEST_BIG_ENDIAN(VARIABLE) + VARIABLE - variable to store the result to +#]=======================================================================] include(CheckTypeSize) diff --git a/Modules/TestCXXAcceptsFlag.cmake b/Modules/TestCXXAcceptsFlag.cmake index 10019ec686..75f1fc36e8 100644 --- a/Modules/TestCXXAcceptsFlag.cmake +++ b/Modules/TestCXXAcceptsFlag.cmake @@ -1,22 +1,23 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# TestCXXAcceptsFlag -# ------------------ -# -# Deprecated. See :module:`CheckCXXCompilerFlag`. -# -# Check if the CXX compiler accepts a flag. -# -# .. code-block:: cmake -# -# CHECK_CXX_ACCEPTS_FLAG(<flags> <variable>) -# -# ``<flags>`` -# the flags to try -# ``<variable>`` -# variable to store the result +#[=======================================================================[.rst: +TestCXXAcceptsFlag +------------------ + +Deprecated. See :module:`CheckCXXCompilerFlag`. + +Check if the CXX compiler accepts a flag. + +.. code-block:: cmake + + CHECK_CXX_ACCEPTS_FLAG(<flags> <variable>) + +``<flags>`` + the flags to try +``<variable>`` + variable to store the result +#]=======================================================================] macro(CHECK_CXX_ACCEPTS_FLAG FLAGS VARIABLE) if(NOT DEFINED ${VARIABLE}) diff --git a/Modules/TestForANSIForScope.cmake b/Modules/TestForANSIForScope.cmake index 7d2aad61b3..272e4ec8b0 100644 --- a/Modules/TestForANSIForScope.cmake +++ b/Modules/TestForANSIForScope.cmake @@ -1,18 +1,19 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# TestForANSIForScope -# ------------------- -# -# Check for ANSI for scope support -# -# Check if the compiler restricts the scope of variables declared in a -# for-init-statement to the loop body. -# -# :: -# -# CMAKE_NO_ANSI_FOR_SCOPE - holds result +#[=======================================================================[.rst: +TestForANSIForScope +------------------- + +Check for ANSI for scope support + +Check if the compiler restricts the scope of variables declared in a +for-init-statement to the loop body. + +:: + + CMAKE_NO_ANSI_FOR_SCOPE - holds result +#]=======================================================================] if(NOT DEFINED CMAKE_ANSI_FOR_SCOPE) message(STATUS "Check for ANSI scope") diff --git a/Modules/TestForANSIStreamHeaders.cmake b/Modules/TestForANSIStreamHeaders.cmake index e890c677fb..e532a71b73 100644 --- a/Modules/TestForANSIStreamHeaders.cmake +++ b/Modules/TestForANSIStreamHeaders.cmake @@ -1,18 +1,19 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# TestForANSIStreamHeaders -# ------------------------ -# -# Test for compiler support of ANSI stream headers iostream, etc. -# -# check if the compiler supports the standard ANSI iostream header -# (without the .h) -# -# :: -# -# CMAKE_NO_ANSI_STREAM_HEADERS - defined by the results +#[=======================================================================[.rst: +TestForANSIStreamHeaders +------------------------ + +Test for compiler support of ANSI stream headers iostream, etc. + +check if the compiler supports the standard ANSI iostream header +(without the .h) + +:: + + CMAKE_NO_ANSI_STREAM_HEADERS - defined by the results +#]=======================================================================] include(${CMAKE_CURRENT_LIST_DIR}/CheckIncludeFileCXX.cmake) diff --git a/Modules/TestForSSTREAM.cmake b/Modules/TestForSSTREAM.cmake index 0bfbfbbbd9..e70df00ab4 100644 --- a/Modules/TestForSSTREAM.cmake +++ b/Modules/TestForSSTREAM.cmake @@ -1,17 +1,18 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# TestForSSTREAM -# -------------- -# -# Test for compiler support of ANSI sstream header -# -# check if the compiler supports the standard ANSI sstream header -# -# :: -# -# CMAKE_NO_ANSI_STRING_STREAM - defined by the results +#[=======================================================================[.rst: +TestForSSTREAM +-------------- + +Test for compiler support of ANSI sstream header + +check if the compiler supports the standard ANSI sstream header + +:: + + CMAKE_NO_ANSI_STRING_STREAM - defined by the results +#]=======================================================================] if(NOT DEFINED CMAKE_HAS_ANSI_STRING_STREAM) message(STATUS "Check for sstream") diff --git a/Modules/TestForSTDNamespace.cmake b/Modules/TestForSTDNamespace.cmake index 3ae80c744f..703e631ebb 100644 --- a/Modules/TestForSTDNamespace.cmake +++ b/Modules/TestForSTDNamespace.cmake @@ -1,17 +1,18 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# TestForSTDNamespace -# ------------------- -# -# Test for std:: namespace support -# -# check if the compiler supports std:: on stl classes -# -# :: -# -# CMAKE_NO_STD_NAMESPACE - defined by the results +#[=======================================================================[.rst: +TestForSTDNamespace +------------------- + +Test for std:: namespace support + +check if the compiler supports std:: on stl classes + +:: + + CMAKE_NO_STD_NAMESPACE - defined by the results +#]=======================================================================] if(NOT DEFINED CMAKE_STD_NAMESPACE) message(STATUS "Check for STD namespace") diff --git a/Modules/UseEcos.cmake b/Modules/UseEcos.cmake index 700bfe6cc7..6d13d42eed 100644 --- a/Modules/UseEcos.cmake +++ b/Modules/UseEcos.cmake @@ -1,32 +1,33 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# UseEcos -# ------- -# -# This module defines variables and macros required to build eCos application. -# -# This file contains the following macros: -# ECOS_ADD_INCLUDE_DIRECTORIES() - add the eCos include dirs -# ECOS_ADD_EXECUTABLE(name source1 ... sourceN ) - create an eCos -# executable ECOS_ADJUST_DIRECTORY(VAR source1 ... sourceN ) - adjusts -# the path of the source files and puts the result into VAR -# -# Macros for selecting the toolchain: ECOS_USE_ARM_ELF_TOOLS() - enable -# the ARM ELF toolchain for the directory where it is called -# ECOS_USE_I386_ELF_TOOLS() - enable the i386 ELF toolchain for the -# directory where it is called ECOS_USE_PPC_EABI_TOOLS() - enable the -# PowerPC toolchain for the directory where it is called -# -# It contains the following variables: ECOS_DEFINITIONS -# ECOSCONFIG_EXECUTABLE ECOS_CONFIG_FILE - defaults to ecos.ecc, if your -# eCos configuration file has a different name, adjust this variable for -# internal use only: -# -# :: -# -# ECOS_ADD_TARGET_LIB +#[=======================================================================[.rst: +UseEcos +------- + +This module defines variables and macros required to build eCos application. + +This file contains the following macros: +ECOS_ADD_INCLUDE_DIRECTORIES() - add the eCos include dirs +ECOS_ADD_EXECUTABLE(name source1 ... sourceN ) - create an eCos +executable ECOS_ADJUST_DIRECTORY(VAR source1 ... sourceN ) - adjusts +the path of the source files and puts the result into VAR + +Macros for selecting the toolchain: ECOS_USE_ARM_ELF_TOOLS() - enable +the ARM ELF toolchain for the directory where it is called +ECOS_USE_I386_ELF_TOOLS() - enable the i386 ELF toolchain for the +directory where it is called ECOS_USE_PPC_EABI_TOOLS() - enable the +PowerPC toolchain for the directory where it is called + +It contains the following variables: ECOS_DEFINITIONS +ECOSCONFIG_EXECUTABLE ECOS_CONFIG_FILE - defaults to ecos.ecc, if your +eCos configuration file has a different name, adjust this variable for +internal use only: + +:: + + ECOS_ADD_TARGET_LIB +#]=======================================================================] # first check that ecosconfig is available find_program(ECOSCONFIG_EXECUTABLE NAMES ecosconfig) diff --git a/Modules/UseJava.cmake b/Modules/UseJava.cmake index 6e2c511007..68c9a273cd 100644 --- a/Modules/UseJava.cmake +++ b/Modules/UseJava.cmake @@ -1,438 +1,439 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# UseJava -# ------- -# -# Use Module for Java -# -# This file provides functions for Java. It is assumed that -# FindJava.cmake has already been loaded. See FindJava.cmake for -# information on how to load Java into your CMake project. -# -# :: -# -# add_jar(target_name -# [SOURCES] source1 [source2 ...] [resource1 ...] -# [INCLUDE_JARS jar1 [jar2 ...]] -# [ENTRY_POINT entry] -# [VERSION version] -# [OUTPUT_NAME name] -# [OUTPUT_DIR dir] -# [GENERATE_NATIVE_HEADERS target [DESTINATION dir]] -# ) -# -# This command creates a <target_name>.jar. It compiles the given -# source files (source) and adds the given resource files (resource) to -# the jar file. Source files can be java files or listing files -# (prefixed by '@'). If only resource files are given then just a jar file -# is created. The list of include jars are added to the classpath when -# compiling the java sources and also to the dependencies of the target. -# INCLUDE_JARS also accepts other target names created by add_jar. For -# backwards compatibility, jar files listed as sources are ignored (as -# they have been since the first version of this module). -# -# The default OUTPUT_DIR can also be changed by setting the variable -# CMAKE_JAVA_TARGET_OUTPUT_DIR. -# -# Optionally, using option GENERATE_NATIVE_HEADERS, native header files can be generated -# for methods declared as native. These files provide the connective glue that allow your -# Java and C code to interact. An INTERFACE target will be created for an easy usage -# of generated files. Sub-option DESTINATION can be used to specify output directory for -# generated header files. -# -# GENERATE_NATIVE_HEADERS option requires, at least, version 1.8 of the JDK. -# -# Additional instructions: -# -# :: -# -# To add compile flags to the target you can set these flags with -# the following variable: -# -# -# -# :: -# -# set(CMAKE_JAVA_COMPILE_FLAGS -nowarn) -# -# -# -# :: -# -# To add a path or a jar file to the class path you can do this -# with the CMAKE_JAVA_INCLUDE_PATH variable. -# -# -# -# :: -# -# set(CMAKE_JAVA_INCLUDE_PATH /usr/share/java/shibboleet.jar) -# -# -# -# :: -# -# To use a different output name for the target you can set it with: -# -# -# -# :: -# -# add_jar(foobar foobar.java OUTPUT_NAME shibboleet.jar) -# -# -# -# :: -# -# To use a different output directory than CMAKE_CURRENT_BINARY_DIR -# you can set it with: -# -# -# -# :: -# -# add_jar(foobar foobar.java OUTPUT_DIR ${PROJECT_BINARY_DIR}/bin) -# -# -# -# :: -# -# To define an entry point in your jar you can set it with the ENTRY_POINT -# named argument: -# -# -# -# :: -# -# add_jar(example ENTRY_POINT com/examples/MyProject/Main) -# -# -# -# :: -# -# To define a custom manifest for the jar, you can set it with the manifest -# named argument: -# -# -# -# :: -# -# add_jar(example MANIFEST /path/to/manifest) -# -# -# -# :: -# -# To add a VERSION to the target output name you can set it using -# the VERSION named argument to add_jar. This will create a jar file with the -# name shibboleet-1.0.0.jar and will create a symlink shibboleet.jar -# pointing to the jar with the version information. -# -# -# -# :: -# -# add_jar(shibboleet shibbotleet.java VERSION 1.2.0) -# -# -# -# :: -# -# If the target is a JNI library, utilize the following commands to -# create a JNI symbolic link: -# -# -# -# :: -# -# set(CMAKE_JNI_TARGET TRUE) -# add_jar(shibboleet shibbotleet.java VERSION 1.2.0) -# install_jar(shibboleet ${LIB_INSTALL_DIR}/shibboleet) -# install_jni_symlink(shibboleet ${JAVA_LIB_INSTALL_DIR}) -# -# -# -# :: -# -# If a single target needs to produce more than one jar from its -# java source code, to prevent the accumulation of duplicate class -# files in subsequent jars, set/reset CMAKE_JAR_CLASSES_PREFIX prior -# to calling the add_jar() function: -# -# -# -# :: -# -# set(CMAKE_JAR_CLASSES_PREFIX com/redhat/foo) -# add_jar(foo foo.java) -# -# -# -# :: -# -# set(CMAKE_JAR_CLASSES_PREFIX com/redhat/bar) -# add_jar(bar bar.java) -# -# -# -# :: -# -# For an optimum usage of option GENERATE_NATIVE_HEADERS, it is recommended to -# include module JNI before any call to add_jar. The produced target for native -# headers can then be used to compile C/C++ sources with command -# target_link_libraries. -# -# -# :: -# -# find_package(JNI) -# add_jar(foo foo.java GENERATE_NATIVE_HEADERS foo-native) -# add_library(bar bar.cpp) -# target_link_libraries(bar PRIVATE foo-native) -# -# -# Target Properties: -# -# :: -# -# The add_jar() function sets some target properties. You can get these -# properties with the -# get_property(TARGET <target_name> PROPERTY <propery_name>) -# command. -# -# -# -# :: -# -# INSTALL_FILES The files which should be installed. This is used by -# install_jar(). -# JNI_SYMLINK The JNI symlink which should be installed. -# This is used by install_jni_symlink(). -# JAR_FILE The location of the jar file so that you can include -# it. -# CLASSDIR The directory where the class files can be found. For -# example to use them with javah. -# -# :: -# -# find_jar(<VAR> -# name | NAMES name1 [name2 ...] -# [PATHS path1 [path2 ... ENV var]] -# [VERSIONS version1 [version2]] -# [DOC "cache documentation string"] -# ) -# -# This command is used to find a full path to the named jar. A cache -# entry named by <VAR> is created to stor the result of this command. -# If the full path to a jar is found the result is stored in the -# variable and the search will not repeated unless the variable is -# cleared. If nothing is found, the result will be <VAR>-NOTFOUND, and -# the search will be attempted again next time find_jar is invoked with -# the same variable. The name of the full path to a file that is -# searched for is specified by the names listed after NAMES argument. -# Additional search locations can be specified after the PATHS argument. -# If you require special a version of a jar file you can specify it with -# the VERSIONS argument. The argument after DOC will be used for the -# documentation string in the cache. -# -# :: -# -# install_jar(target_name destination) -# install_jar(target_name DESTINATION destination [COMPONENT component]) -# -# This command installs the TARGET_NAME files to the given DESTINATION. -# It should be called in the same scope as add_jar() or it will fail. -# -# Target Properties: -# -# :: -# -# The install_jar() function sets the INSTALL_DESTINATION target property -# on jars so installed. This property holds the DESTINATION as described -# above, and is used by install_jar_exports(). You can get this property -# with the -# get_property(TARGET <target_name> PROPERTY INSTALL_DESTINATION) -# command. -# -# -# -# :: -# -# install_jni_symlink(target_name destination) -# install_jni_symlink(target_name DESTINATION destination [COMPONENT component]) -# -# This command installs the TARGET_NAME JNI symlinks to the given -# DESTINATION. It should be called in the same scope as add_jar() or it -# will fail. -# -# :: -# -# install_jar_exports(TARGETS jars... -# [NAMESPACE <namespace>] -# FILE <filename> -# DESTINATION <dir> [COMPONENT <component>]) -# -# This command installs a target export file ``<filename>`` for the named jar -# targets to the given ``DESTINATION``. Its function is similar to that of -# :command:`install(EXPORTS ...)`. -# -# :: -# -# export_jars(TARGETS jars... -# [NAMESPACE <namespace>] -# FILE <filename>) -# -# This command writes a target export file ``<filename>`` for the named jar -# targets. Its function is similar to that of :command:`export(...)`. -# -# :: -# -# create_javadoc(<VAR> -# PACKAGES pkg1 [pkg2 ...] -# [SOURCEPATH <sourcepath>] -# [CLASSPATH <classpath>] -# [INSTALLPATH <install path>] -# [DOCTITLE "the documentation title"] -# [WINDOWTITLE "the title of the document"] -# [AUTHOR TRUE|FALSE] -# [USE TRUE|FALSE] -# [VERSION TRUE|FALSE] -# ) -# -# Create java documentation based on files or packages. For more -# details please read the javadoc manpage. -# -# There are two main signatures for create_javadoc. The first signature -# works with package names on a path with source files: -# -# :: -# -# Example: -# create_javadoc(my_example_doc -# PACKAGES com.example.foo com.example.bar -# SOURCEPATH "${CMAKE_CURRENT_SOURCE_DIR}" -# CLASSPATH ${CMAKE_JAVA_INCLUDE_PATH} -# WINDOWTITLE "My example" -# DOCTITLE "<h1>My example</h1>" -# AUTHOR TRUE -# USE TRUE -# VERSION TRUE -# ) -# -# -# -# The second signature for create_javadoc works on a given list of -# files. -# -# :: -# -# create_javadoc(<VAR> -# FILES file1 [file2 ...] -# [CLASSPATH <classpath>] -# [INSTALLPATH <install path>] -# [DOCTITLE "the documentation title"] -# [WINDOWTITLE "the title of the document"] -# [AUTHOR TRUE|FALSE] -# [USE TRUE|FALSE] -# [VERSION TRUE|FALSE] -# ) -# -# -# -# Example: -# -# :: -# -# create_javadoc(my_example_doc -# FILES ${example_SRCS} -# CLASSPATH ${CMAKE_JAVA_INCLUDE_PATH} -# WINDOWTITLE "My example" -# DOCTITLE "<h1>My example</h1>" -# AUTHOR TRUE -# USE TRUE -# VERSION TRUE -# ) -# -# -# -# Both signatures share most of the options. These options are the same -# as what you can find in the javadoc manpage. Please look at the -# manpage for CLASSPATH, DOCTITLE, WINDOWTITLE, AUTHOR, USE and VERSION. -# -# The documentation will be by default installed to -# -# :: -# -# ${CMAKE_INSTALL_PREFIX}/share/javadoc/<VAR> -# -# -# -# if you don't set the INSTALLPATH. -# -# :: -# -# create_javah(TARGET <target> -# GENERATED_FILES <VAR> -# CLASSES <class>... -# [CLASSPATH <classpath>...] -# [DEPENDS <depend>...] -# [OUTPUT_NAME <path>|OUTPUT_DIR <path>] -# ) -# -# Create C header files from java classes. These files provide the connective glue -# that allow your Java and C code to interact. -# -# This command will no longer be supported starting with version 10 of the JDK due -# to the `suppression of javah tool <http://openjdk.java.net/jeps/313>`_. -# Command ``add_jar(GENERATE_NATIVE_HEADERS)`` must be used instead. -# -# There are two main signatures for create_javah. The first signature -# returns generated files through variable specified by GENERATED_FILES option: -# -# :: -# -# Example: -# Create_javah(GENERATED_FILES files_headers -# CLASSES org.cmake.HelloWorld -# CLASSPATH hello.jar -# ) -# -# -# -# The second signature for create_javah creates a target which encapsulates -# header files generation. -# -# :: -# -# Example: -# Create_javah(TARGET target_headers -# CLASSES org.cmake.HelloWorld -# CLASSPATH hello.jar -# ) -# -# -# -# Both signatures share same options. -# -# ``CLASSES <class>...`` -# Specifies Java classes used to generate headers. -# -# ``CLASSPATH <classpath>...`` -# Specifies various paths to look up classes. Here .class files, jar files or targets -# created by command add_jar can be used. -# -# ``DEPENDS <depend>...`` -# Targets on which the javah target depends -# -# ``OUTPUT_NAME <path>`` -# Concatenates the resulting header files for all the classes listed by option CLASSES -# into <path>. Same behavior as option '-o' of javah tool. -# -# ``OUTPUT_DIR <path>`` -# Sets the directory where the header files will be generated. Same behavior as option -# '-d' of javah tool. If not specified, ${CMAKE_CURRENT_BINARY_DIR} is used as output directory. +#[=======================================================================[.rst: +UseJava +------- + +Use Module for Java + +This file provides functions for Java. It is assumed that +FindJava.cmake has already been loaded. See FindJava.cmake for +information on how to load Java into your CMake project. + +:: + + add_jar(target_name + [SOURCES] source1 [source2 ...] [resource1 ...] + [INCLUDE_JARS jar1 [jar2 ...]] + [ENTRY_POINT entry] + [VERSION version] + [OUTPUT_NAME name] + [OUTPUT_DIR dir] + [GENERATE_NATIVE_HEADERS target [DESTINATION dir]] + ) + +This command creates a <target_name>.jar. It compiles the given +source files (source) and adds the given resource files (resource) to +the jar file. Source files can be java files or listing files +(prefixed by '@'). If only resource files are given then just a jar file +is created. The list of include jars are added to the classpath when +compiling the java sources and also to the dependencies of the target. +INCLUDE_JARS also accepts other target names created by add_jar. For +backwards compatibility, jar files listed as sources are ignored (as +they have been since the first version of this module). + +The default OUTPUT_DIR can also be changed by setting the variable +CMAKE_JAVA_TARGET_OUTPUT_DIR. + +Optionally, using option GENERATE_NATIVE_HEADERS, native header files can be generated +for methods declared as native. These files provide the connective glue that allow your +Java and C code to interact. An INTERFACE target will be created for an easy usage +of generated files. Sub-option DESTINATION can be used to specify output directory for +generated header files. + +GENERATE_NATIVE_HEADERS option requires, at least, version 1.8 of the JDK. + +Additional instructions: + +:: + + To add compile flags to the target you can set these flags with + the following variable: + + + +:: + + set(CMAKE_JAVA_COMPILE_FLAGS -nowarn) + + + +:: + + To add a path or a jar file to the class path you can do this + with the CMAKE_JAVA_INCLUDE_PATH variable. + + + +:: + + set(CMAKE_JAVA_INCLUDE_PATH /usr/share/java/shibboleet.jar) + + + +:: + + To use a different output name for the target you can set it with: + + + +:: + + add_jar(foobar foobar.java OUTPUT_NAME shibboleet.jar) + + + +:: + + To use a different output directory than CMAKE_CURRENT_BINARY_DIR + you can set it with: + + + +:: + + add_jar(foobar foobar.java OUTPUT_DIR ${PROJECT_BINARY_DIR}/bin) + + + +:: + + To define an entry point in your jar you can set it with the ENTRY_POINT + named argument: + + + +:: + + add_jar(example ENTRY_POINT com/examples/MyProject/Main) + + + +:: + + To define a custom manifest for the jar, you can set it with the manifest + named argument: + + + +:: + + add_jar(example MANIFEST /path/to/manifest) + + + +:: + + To add a VERSION to the target output name you can set it using + the VERSION named argument to add_jar. This will create a jar file with the + name shibboleet-1.0.0.jar and will create a symlink shibboleet.jar + pointing to the jar with the version information. + + + +:: + + add_jar(shibboleet shibbotleet.java VERSION 1.2.0) + + + +:: + + If the target is a JNI library, utilize the following commands to + create a JNI symbolic link: + + + +:: + + set(CMAKE_JNI_TARGET TRUE) + add_jar(shibboleet shibbotleet.java VERSION 1.2.0) + install_jar(shibboleet ${LIB_INSTALL_DIR}/shibboleet) + install_jni_symlink(shibboleet ${JAVA_LIB_INSTALL_DIR}) + + + +:: + + If a single target needs to produce more than one jar from its + java source code, to prevent the accumulation of duplicate class + files in subsequent jars, set/reset CMAKE_JAR_CLASSES_PREFIX prior + to calling the add_jar() function: + + + +:: + + set(CMAKE_JAR_CLASSES_PREFIX com/redhat/foo) + add_jar(foo foo.java) + + + +:: + + set(CMAKE_JAR_CLASSES_PREFIX com/redhat/bar) + add_jar(bar bar.java) + + + +:: + + For an optimum usage of option GENERATE_NATIVE_HEADERS, it is recommended to + include module JNI before any call to add_jar. The produced target for native + headers can then be used to compile C/C++ sources with command + target_link_libraries. + + +:: + + find_package(JNI) + add_jar(foo foo.java GENERATE_NATIVE_HEADERS foo-native) + add_library(bar bar.cpp) + target_link_libraries(bar PRIVATE foo-native) + + +Target Properties: + +:: + + The add_jar() function sets some target properties. You can get these + properties with the + get_property(TARGET <target_name> PROPERTY <propery_name>) + command. + + + +:: + + INSTALL_FILES The files which should be installed. This is used by + install_jar(). + JNI_SYMLINK The JNI symlink which should be installed. + This is used by install_jni_symlink(). + JAR_FILE The location of the jar file so that you can include + it. + CLASSDIR The directory where the class files can be found. For + example to use them with javah. + +:: + + find_jar(<VAR> + name | NAMES name1 [name2 ...] + [PATHS path1 [path2 ... ENV var]] + [VERSIONS version1 [version2]] + [DOC "cache documentation string"] + ) + +This command is used to find a full path to the named jar. A cache +entry named by <VAR> is created to stor the result of this command. +If the full path to a jar is found the result is stored in the +variable and the search will not repeated unless the variable is +cleared. If nothing is found, the result will be <VAR>-NOTFOUND, and +the search will be attempted again next time find_jar is invoked with +the same variable. The name of the full path to a file that is +searched for is specified by the names listed after NAMES argument. +Additional search locations can be specified after the PATHS argument. +If you require special a version of a jar file you can specify it with +the VERSIONS argument. The argument after DOC will be used for the +documentation string in the cache. + +:: + + install_jar(target_name destination) + install_jar(target_name DESTINATION destination [COMPONENT component]) + +This command installs the TARGET_NAME files to the given DESTINATION. +It should be called in the same scope as add_jar() or it will fail. + +Target Properties: + +:: + + The install_jar() function sets the INSTALL_DESTINATION target property + on jars so installed. This property holds the DESTINATION as described + above, and is used by install_jar_exports(). You can get this property + with the + get_property(TARGET <target_name> PROPERTY INSTALL_DESTINATION) + command. + + + +:: + + install_jni_symlink(target_name destination) + install_jni_symlink(target_name DESTINATION destination [COMPONENT component]) + +This command installs the TARGET_NAME JNI symlinks to the given +DESTINATION. It should be called in the same scope as add_jar() or it +will fail. + +:: + + install_jar_exports(TARGETS jars... + [NAMESPACE <namespace>] + FILE <filename> + DESTINATION <dir> [COMPONENT <component>]) + +This command installs a target export file ``<filename>`` for the named jar +targets to the given ``DESTINATION``. Its function is similar to that of +:command:`install(EXPORTS ...)`. + +:: + + export_jars(TARGETS jars... + [NAMESPACE <namespace>] + FILE <filename>) + +This command writes a target export file ``<filename>`` for the named jar +targets. Its function is similar to that of :command:`export(...)`. + +:: + + create_javadoc(<VAR> + PACKAGES pkg1 [pkg2 ...] + [SOURCEPATH <sourcepath>] + [CLASSPATH <classpath>] + [INSTALLPATH <install path>] + [DOCTITLE "the documentation title"] + [WINDOWTITLE "the title of the document"] + [AUTHOR TRUE|FALSE] + [USE TRUE|FALSE] + [VERSION TRUE|FALSE] + ) + +Create java documentation based on files or packages. For more +details please read the javadoc manpage. + +There are two main signatures for create_javadoc. The first signature +works with package names on a path with source files: + +:: + + Example: + create_javadoc(my_example_doc + PACKAGES com.example.foo com.example.bar + SOURCEPATH "${CMAKE_CURRENT_SOURCE_DIR}" + CLASSPATH ${CMAKE_JAVA_INCLUDE_PATH} + WINDOWTITLE "My example" + DOCTITLE "<h1>My example</h1>" + AUTHOR TRUE + USE TRUE + VERSION TRUE + ) + + + +The second signature for create_javadoc works on a given list of +files. + +:: + + create_javadoc(<VAR> + FILES file1 [file2 ...] + [CLASSPATH <classpath>] + [INSTALLPATH <install path>] + [DOCTITLE "the documentation title"] + [WINDOWTITLE "the title of the document"] + [AUTHOR TRUE|FALSE] + [USE TRUE|FALSE] + [VERSION TRUE|FALSE] + ) + + + +Example: + +:: + + create_javadoc(my_example_doc + FILES ${example_SRCS} + CLASSPATH ${CMAKE_JAVA_INCLUDE_PATH} + WINDOWTITLE "My example" + DOCTITLE "<h1>My example</h1>" + AUTHOR TRUE + USE TRUE + VERSION TRUE + ) + + + +Both signatures share most of the options. These options are the same +as what you can find in the javadoc manpage. Please look at the +manpage for CLASSPATH, DOCTITLE, WINDOWTITLE, AUTHOR, USE and VERSION. + +The documentation will be by default installed to + +:: + + ${CMAKE_INSTALL_PREFIX}/share/javadoc/<VAR> + + + +if you don't set the INSTALLPATH. + +:: + + create_javah(TARGET <target> + GENERATED_FILES <VAR> + CLASSES <class>... + [CLASSPATH <classpath>...] + [DEPENDS <depend>...] + [OUTPUT_NAME <path>|OUTPUT_DIR <path>] + ) + +Create C header files from java classes. These files provide the connective glue +that allow your Java and C code to interact. + +This command will no longer be supported starting with version 10 of the JDK due +to the `suppression of javah tool <http://openjdk.java.net/jeps/313>`_. +Command ``add_jar(GENERATE_NATIVE_HEADERS)`` must be used instead. + +There are two main signatures for create_javah. The first signature +returns generated files through variable specified by GENERATED_FILES option: + +:: + + Example: + Create_javah(GENERATED_FILES files_headers + CLASSES org.cmake.HelloWorld + CLASSPATH hello.jar + ) + + + +The second signature for create_javah creates a target which encapsulates +header files generation. + +:: + + Example: + Create_javah(TARGET target_headers + CLASSES org.cmake.HelloWorld + CLASSPATH hello.jar + ) + + + +Both signatures share same options. + + ``CLASSES <class>...`` + Specifies Java classes used to generate headers. + + ``CLASSPATH <classpath>...`` + Specifies various paths to look up classes. Here .class files, jar files or targets + created by command add_jar can be used. + + ``DEPENDS <depend>...`` + Targets on which the javah target depends + + ``OUTPUT_NAME <path>`` + Concatenates the resulting header files for all the classes listed by option CLASSES + into <path>. Same behavior as option '-o' of javah tool. + + ``OUTPUT_DIR <path>`` + Sets the directory where the header files will be generated. Same behavior as option + '-d' of javah tool. If not specified, ${CMAKE_CURRENT_BINARY_DIR} is used as output directory. +#]=======================================================================] function (__java_copy_file src dest comment) add_custom_command( diff --git a/Modules/UseJavaClassFilelist.cmake b/Modules/UseJavaClassFilelist.cmake index c2f9afa4fc..1c4baa9d45 100644 --- a/Modules/UseJavaClassFilelist.cmake +++ b/Modules/UseJavaClassFilelist.cmake @@ -1,17 +1,18 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# UseJavaClassFilelist -# -------------------- -# -# -# -# -# -# This script create a list of compiled Java class files to be added to -# a jar file. This avoids including cmake files which get created in -# the binary directory. +#[=======================================================================[.rst: +UseJavaClassFilelist +-------------------- + + + + + +This script create a list of compiled Java class files to be added to +a jar file. This avoids including cmake files which get created in +the binary directory. +#]=======================================================================] if (CMAKE_JAVA_CLASS_OUTPUT_PATH) if (EXISTS "${CMAKE_JAVA_CLASS_OUTPUT_PATH}") diff --git a/Modules/UseJavaSymlinks.cmake b/Modules/UseJavaSymlinks.cmake index 358b9ef5cb..3969f54fac 100644 --- a/Modules/UseJavaSymlinks.cmake +++ b/Modules/UseJavaSymlinks.cmake @@ -1,15 +1,16 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# UseJavaSymlinks -# --------------- -# -# -# -# -# -# Helper script for UseJava.cmake +#[=======================================================================[.rst: +UseJavaSymlinks +--------------- + + + + + +Helper script for UseJava.cmake +#]=======================================================================] if (UNIX AND _JAVA_TARGET_OUTPUT_LINK) if (_JAVA_TARGET_OUTPUT_NAME) diff --git a/Modules/UsePkgConfig.cmake b/Modules/UsePkgConfig.cmake index 28618eb10f..32d228dabc 100644 --- a/Modules/UsePkgConfig.cmake +++ b/Modules/UsePkgConfig.cmake @@ -1,24 +1,25 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# UsePkgConfig -# ------------ -# -# Obsolete pkg-config module for CMake, use FindPkgConfig instead. -# -# -# -# This module defines the following macro: -# -# PKGCONFIG(package includedir libdir linkflags cflags) -# -# Calling PKGCONFIG will fill the desired information into the 4 given -# arguments, e.g. PKGCONFIG(libart-2.0 LIBART_INCLUDE_DIR -# LIBART_LINK_DIR LIBART_LINK_FLAGS LIBART_CFLAGS) if pkg-config was NOT -# found or the specified software package doesn't exist, the variable -# will be empty when the function returns, otherwise they will contain -# the respective information +#[=======================================================================[.rst: +UsePkgConfig +------------ + +Obsolete pkg-config module for CMake, use FindPkgConfig instead. + + + +This module defines the following macro: + +PKGCONFIG(package includedir libdir linkflags cflags) + +Calling PKGCONFIG will fill the desired information into the 4 given +arguments, e.g. PKGCONFIG(libart-2.0 LIBART_INCLUDE_DIR +LIBART_LINK_DIR LIBART_LINK_FLAGS LIBART_CFLAGS) if pkg-config was NOT +found or the specified software package doesn't exist, the variable +will be empty when the function returns, otherwise they will contain +the respective information +#]=======================================================================] find_program(PKGCONFIG_EXECUTABLE NAMES pkg-config ) diff --git a/Modules/UseQt4.cmake b/Modules/UseQt4.cmake index c8eab7766d..dc2348ed1d 100644 --- a/Modules/UseQt4.cmake +++ b/Modules/UseQt4.cmake @@ -1,15 +1,16 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# UseQt4 -# ------ -# -# Use Module for QT4 -# -# Sets up C and C++ to use Qt 4. It is assumed that FindQt.cmake has -# already been loaded. See FindQt.cmake for information on how to load -# Qt 4 into your CMake project. +#[=======================================================================[.rst: +UseQt4 +------ + +Use Module for QT4 + +Sets up C and C++ to use Qt 4. It is assumed that FindQt.cmake has +already been loaded. See FindQt.cmake for information on how to load +Qt 4 into your CMake project. +#]=======================================================================] add_definitions(${QT_DEFINITIONS}) set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<NOT:$<CONFIG:Debug>>:QT_NO_DEBUG>) diff --git a/Modules/Use_wxWindows.cmake b/Modules/Use_wxWindows.cmake index 7cdd92eee6..f25ae895d0 100644 --- a/Modules/Use_wxWindows.cmake +++ b/Modules/Use_wxWindows.cmake @@ -1,36 +1,37 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# Use_wxWindows -# ------------- -# -# Deprecated. Use ``find_package(wxWidgets)`` and -# ``include(${wxWidgets_USE_FILE})`` instead. -# -# -# This convenience include finds if wxWindows is installed and set the -# appropriate libs, incdirs, flags etc. author Jan Woetzel <jw -at- -# mip.informatik.uni-kiel.de> (07/2003) -# -# USAGE: -# -# :: -# -# just include Use_wxWindows.cmake -# in your projects CMakeLists.txt -# -# include( ${CMAKE_MODULE_PATH}/Use_wxWindows.cmake) -# -# :: -# -# if you are sure you need GL then -# -# set(WXWINDOWS_USE_GL 1) -# -# :: -# -# *before* you include this file. +#[=======================================================================[.rst: +Use_wxWindows +------------- + +Deprecated. Use ``find_package(wxWidgets)`` and +``include(${wxWidgets_USE_FILE})`` instead. + + +This convenience include finds if wxWindows is installed and set the +appropriate libs, incdirs, flags etc. author Jan Woetzel <jw -at- +mip.informatik.uni-kiel.de> (07/2003) + +USAGE: + +:: + + just include Use_wxWindows.cmake + in your projects CMakeLists.txt + +include( ${CMAKE_MODULE_PATH}/Use_wxWindows.cmake) + +:: + + if you are sure you need GL then + +set(WXWINDOWS_USE_GL 1) + +:: + + *before* you include this file. +#]=======================================================================] # ----------------------------------------------------- # 16.Feb.2004: changed INCLUDE to FIND_PACKAGE to read from users own non-system CMAKE_MODULE_PATH (Jan Woetzel JW) diff --git a/Modules/UsewxWidgets.cmake b/Modules/UsewxWidgets.cmake index a50d03d53f..eed0410216 100644 --- a/Modules/UsewxWidgets.cmake +++ b/Modules/UsewxWidgets.cmake @@ -1,41 +1,42 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# UsewxWidgets -# ------------ -# -# Convenience include for using wxWidgets library. -# -# Determines if wxWidgets was FOUND and sets the appropriate libs, -# incdirs, flags, etc. INCLUDE_DIRECTORIES and LINK_DIRECTORIES are -# called. -# -# USAGE -# -# :: -# -# # Note that for MinGW users the order of libs is important! -# find_package(wxWidgets REQUIRED net gl core base) -# include(${wxWidgets_USE_FILE}) -# # and for each of your dependent executable/library targets: -# target_link_libraries(<YourTarget> ${wxWidgets_LIBRARIES}) -# -# -# -# DEPRECATED -# -# :: -# -# LINK_LIBRARIES is not called in favor of adding dependencies per target. -# -# -# -# AUTHOR -# -# :: -# -# Jan Woetzel <jw -at- mip.informatik.uni-kiel.de> +#[=======================================================================[.rst: +UsewxWidgets +------------ + +Convenience include for using wxWidgets library. + +Determines if wxWidgets was FOUND and sets the appropriate libs, +incdirs, flags, etc. INCLUDE_DIRECTORIES and LINK_DIRECTORIES are +called. + +USAGE + +:: + + # Note that for MinGW users the order of libs is important! + find_package(wxWidgets REQUIRED net gl core base) + include(${wxWidgets_USE_FILE}) + # and for each of your dependent executable/library targets: + target_link_libraries(<YourTarget> ${wxWidgets_LIBRARIES}) + + + +DEPRECATED + +:: + + LINK_LIBRARIES is not called in favor of adding dependencies per target. + + + +AUTHOR + +:: + + Jan Woetzel <jw -at- mip.informatik.uni-kiel.de> +#]=======================================================================] # debug message and logging. # comment these out for distribution diff --git a/Modules/WriteBasicConfigVersionFile.cmake b/Modules/WriteBasicConfigVersionFile.cmake index 2f7c80ab81..0ccb6b28c1 100644 --- a/Modules/WriteBasicConfigVersionFile.cmake +++ b/Modules/WriteBasicConfigVersionFile.cmake @@ -1,22 +1,23 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# WriteBasicConfigVersionFile -# --------------------------- -# -# -# -# :: -# -# WRITE_BASIC_CONFIG_VERSION_FILE( filename -# [VERSION major.minor.patch] -# COMPATIBILITY (AnyNewerVersion|SameMajorVersion|SameMinorVersion|ExactVersion) -# ) -# -# -# -# Deprecated, see WRITE_BASIC_PACKAGE_VERSION_FILE(), it is identical. +#[=======================================================================[.rst: +WriteBasicConfigVersionFile +--------------------------- + + + +:: + + WRITE_BASIC_CONFIG_VERSION_FILE( filename + [VERSION major.minor.patch] + COMPATIBILITY (AnyNewerVersion|SameMajorVersion|SameMinorVersion|ExactVersion) + ) + + + +Deprecated, see WRITE_BASIC_PACKAGE_VERSION_FILE(), it is identical. +#]=======================================================================] function(WRITE_BASIC_CONFIG_VERSION_FILE _filename) diff --git a/Modules/WriteCompilerDetectionHeader.cmake b/Modules/WriteCompilerDetectionHeader.cmake index 3718e9ddf4..a556567955 100644 --- a/Modules/WriteCompilerDetectionHeader.cmake +++ b/Modules/WriteCompilerDetectionHeader.cmake @@ -1,236 +1,237 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -#.rst: -# WriteCompilerDetectionHeader -# ---------------------------- -# -# This module provides the function write_compiler_detection_header(). -# -# The ``WRITE_COMPILER_DETECTION_HEADER`` function can be used to generate -# a file suitable for preprocessor inclusion which contains macros to be -# used in source code:: -# -# write_compiler_detection_header( -# FILE <file> -# PREFIX <prefix> -# [OUTPUT_FILES_VAR <output_files_var> OUTPUT_DIR <output_dir>] -# COMPILERS <compiler> [...] -# FEATURES <feature> [...] -# [BARE_FEATURES <feature> [...]] -# [VERSION <version>] -# [PROLOG <prolog>] -# [EPILOG <epilog>] -# [ALLOW_UNKNOWN_COMPILERS] -# [ALLOW_UNKNOWN_COMPILER_VERSIONS] -# ) -# -# The ``write_compiler_detection_header`` function generates the -# file ``<file>`` with macros which all have the prefix ``<prefix>``. -# -# By default, all content is written directly to the ``<file>``. The -# ``OUTPUT_FILES_VAR`` may be specified to cause the compiler-specific -# content to be written to separate files. The separate files are then -# available in the ``<output_files_var>`` and may be consumed by the caller -# for installation for example. The ``OUTPUT_DIR`` specifies a relative -# path from the main ``<file>`` to the compiler-specific files. For example: -# -# .. code-block:: cmake -# -# write_compiler_detection_header( -# FILE climbingstats_compiler_detection.h -# PREFIX ClimbingStats -# OUTPUT_FILES_VAR support_files -# OUTPUT_DIR compilers -# COMPILERS GNU Clang MSVC Intel -# FEATURES cxx_variadic_templates -# ) -# install(FILES -# ${CMAKE_CURRENT_BINARY_DIR}/climbingstats_compiler_detection.h -# DESTINATION include -# ) -# install(FILES -# ${support_files} -# DESTINATION include/compilers -# ) -# -# -# ``VERSION`` may be used to specify the API version to be generated. -# Future versions of CMake may introduce alternative APIs. A given -# API is selected by any ``<version>`` value greater than or equal -# to the version of CMake that introduced the given API and less -# than the version of CMake that introduced its succeeding API. -# The value of the :variable:`CMAKE_MINIMUM_REQUIRED_VERSION` -# variable is used if no explicit version is specified. -# (As of CMake version |release| there is only one API version.) -# -# ``PROLOG`` may be specified as text content to write at the start of the -# header. ``EPILOG`` may be specified as text content to write at the end -# of the header -# -# At least one ``<compiler>`` and one ``<feature>`` must be listed. Compilers -# which are known to CMake, but not specified are detected and a preprocessor -# ``#error`` is generated for them. A preprocessor macro matching -# ``<PREFIX>_COMPILER_IS_<compiler>`` is generated for each compiler -# known to CMake to contain the value ``0`` or ``1``. -# -# Possible compiler identifiers are documented with the -# :variable:`CMAKE_<LANG>_COMPILER_ID` variable. -# Available features in this version of CMake are listed in the -# :prop_gbl:`CMAKE_C_KNOWN_FEATURES` and -# :prop_gbl:`CMAKE_CXX_KNOWN_FEATURES` global properties. -# The ``{c,cxx}_std_*`` meta-features are ignored if requested. -# -# See the :manual:`cmake-compile-features(7)` manual for information on -# compile features. -# -# ``BARE_FEATURES`` will define the compatibility macros with the name used in -# newer versions of the language standard, so the code can use the new feature -# name unconditionally. -# -# ``ALLOW_UNKNOWN_COMPILERS`` and ``ALLOW_UNKNOWN_COMPILER_VERSIONS`` cause -# the module to generate conditions that treat unknown compilers as simply -# lacking all features. Without these options the default behavior is to -# generate a ``#error`` for unknown compilers and versions. -# -# Feature Test Macros -# =================== -# -# For each compiler, a preprocessor macro is generated matching -# ``<PREFIX>_COMPILER_IS_<compiler>`` which has the content either ``0`` -# or ``1``, depending on the compiler in use. Preprocessor macros for -# compiler version components are generated matching -# ``<PREFIX>_COMPILER_VERSION_MAJOR`` ``<PREFIX>_COMPILER_VERSION_MINOR`` -# and ``<PREFIX>_COMPILER_VERSION_PATCH`` containing decimal values -# for the corresponding compiler version components, if defined. -# -# A preprocessor test is generated based on the compiler version -# denoting whether each feature is enabled. A preprocessor macro -# matching ``<PREFIX>_COMPILER_<FEATURE>``, where ``<FEATURE>`` is the -# upper-case ``<feature>`` name, is generated to contain the value -# ``0`` or ``1`` depending on whether the compiler in use supports the -# feature: -# -# .. code-block:: cmake -# -# write_compiler_detection_header( -# FILE climbingstats_compiler_detection.h -# PREFIX ClimbingStats -# COMPILERS GNU Clang AppleClang MSVC Intel -# FEATURES cxx_variadic_templates -# ) -# -# .. code-block:: c++ -# -# #if ClimbingStats_COMPILER_CXX_VARIADIC_TEMPLATES -# template<typename... T> -# void someInterface(T t...) { /* ... */ } -# #else -# // Compatibility versions -# template<typename T1> -# void someInterface(T1 t1) { /* ... */ } -# template<typename T1, typename T2> -# void someInterface(T1 t1, T2 t2) { /* ... */ } -# template<typename T1, typename T2, typename T3> -# void someInterface(T1 t1, T2 t2, T3 t3) { /* ... */ } -# #endif -# -# Symbol Macros -# ============= -# -# Some additional symbol-defines are created for particular features for -# use as symbols which may be conditionally defined empty: -# -# .. code-block:: c++ -# -# class MyClass ClimbingStats_FINAL -# { -# ClimbingStats_CONSTEXPR int someInterface() { return 42; } -# }; -# -# The ``ClimbingStats_FINAL`` macro will expand to ``final`` if the -# compiler (and its flags) support the ``cxx_final`` feature, and the -# ``ClimbingStats_CONSTEXPR`` macro will expand to ``constexpr`` -# if ``cxx_constexpr`` is supported. -# -# If ``BARE_FEATURES cxx_final`` was given as argument the ``final`` keyword -# will be defined for old compilers, too. -# -# The following features generate corresponding symbol defines and if they -# are available as ``BARE_FEATURES``: -# -# ========================== =================================== ================= ====== -# Feature Define Symbol bare -# ========================== =================================== ================= ====== -# ``c_restrict`` ``<PREFIX>_RESTRICT`` ``restrict`` yes -# ``cxx_constexpr`` ``<PREFIX>_CONSTEXPR`` ``constexpr`` yes -# ``cxx_deleted_functions`` ``<PREFIX>_DELETED_FUNCTION`` ``= delete`` -# ``cxx_extern_templates`` ``<PREFIX>_EXTERN_TEMPLATE`` ``extern`` -# ``cxx_final`` ``<PREFIX>_FINAL`` ``final`` yes -# ``cxx_noexcept`` ``<PREFIX>_NOEXCEPT`` ``noexcept`` yes -# ``cxx_noexcept`` ``<PREFIX>_NOEXCEPT_EXPR(X)`` ``noexcept(X)`` -# ``cxx_override`` ``<PREFIX>_OVERRIDE`` ``override`` yes -# ========================== =================================== ================= ====== -# -# Compatibility Implementation Macros -# =================================== -# -# Some features are suitable for wrapping in a macro with a backward -# compatibility implementation if the compiler does not support the feature. -# -# When the ``cxx_static_assert`` feature is not provided by the compiler, -# a compatibility implementation is available via the -# ``<PREFIX>_STATIC_ASSERT(COND)`` and -# ``<PREFIX>_STATIC_ASSERT_MSG(COND, MSG)`` function-like macros. The macros -# expand to ``static_assert`` where that compiler feature is available, and -# to a compatibility implementation otherwise. In the first form, the -# condition is stringified in the message field of ``static_assert``. In -# the second form, the message ``MSG`` is passed to the message field of -# ``static_assert``, or ignored if using the backward compatibility -# implementation. -# -# The ``cxx_attribute_deprecated`` feature provides a macro definition -# ``<PREFIX>_DEPRECATED``, which expands to either the standard -# ``[[deprecated]]`` attribute or a compiler-specific decorator such -# as ``__attribute__((__deprecated__))`` used by GNU compilers. -# -# The ``cxx_alignas`` feature provides a macro definition -# ``<PREFIX>_ALIGNAS`` which expands to either the standard ``alignas`` -# decorator or a compiler-specific decorator such as -# ``__attribute__ ((__aligned__))`` used by GNU compilers. -# -# The ``cxx_alignof`` feature provides a macro definition -# ``<PREFIX>_ALIGNOF`` which expands to either the standard ``alignof`` -# decorator or a compiler-specific decorator such as ``__alignof__`` -# used by GNU compilers. -# -# ============================= ================================ ===================== ====== -# Feature Define Symbol bare -# ============================= ================================ ===================== ====== -# ``cxx_alignas`` ``<PREFIX>_ALIGNAS`` ``alignas`` -# ``cxx_alignof`` ``<PREFIX>_ALIGNOF`` ``alignof`` -# ``cxx_nullptr`` ``<PREFIX>_NULLPTR`` ``nullptr`` yes -# ``cxx_static_assert`` ``<PREFIX>_STATIC_ASSERT`` ``static_assert`` -# ``cxx_static_assert`` ``<PREFIX>_STATIC_ASSERT_MSG`` ``static_assert`` -# ``cxx_attribute_deprecated`` ``<PREFIX>_DEPRECATED`` ``[[deprecated]]`` -# ``cxx_attribute_deprecated`` ``<PREFIX>_DEPRECATED_MSG`` ``[[deprecated]]`` -# ``cxx_thread_local`` ``<PREFIX>_THREAD_LOCAL`` ``thread_local`` -# ============================= ================================ ===================== ====== -# -# A use-case which arises with such deprecation macros is the deprecation -# of an entire library. In that case, all public API in the library may -# be decorated with the ``<PREFIX>_DEPRECATED`` macro. This results in -# very noisy build output when building the library itself, so the macro -# may be may be defined to empty in that case when building the deprecated -# library: -# -# .. code-block:: cmake -# -# add_library(compat_support ${srcs}) -# target_compile_definitions(compat_support -# PRIVATE -# CompatSupport_DEPRECATED= -# ) +#[=======================================================================[.rst: +WriteCompilerDetectionHeader +---------------------------- + +This module provides the function write_compiler_detection_header(). + +The ``WRITE_COMPILER_DETECTION_HEADER`` function can be used to generate +a file suitable for preprocessor inclusion which contains macros to be +used in source code:: + + write_compiler_detection_header( + FILE <file> + PREFIX <prefix> + [OUTPUT_FILES_VAR <output_files_var> OUTPUT_DIR <output_dir>] + COMPILERS <compiler> [...] + FEATURES <feature> [...] + [BARE_FEATURES <feature> [...]] + [VERSION <version>] + [PROLOG <prolog>] + [EPILOG <epilog>] + [ALLOW_UNKNOWN_COMPILERS] + [ALLOW_UNKNOWN_COMPILER_VERSIONS] + ) + +The ``write_compiler_detection_header`` function generates the +file ``<file>`` with macros which all have the prefix ``<prefix>``. + +By default, all content is written directly to the ``<file>``. The +``OUTPUT_FILES_VAR`` may be specified to cause the compiler-specific +content to be written to separate files. The separate files are then +available in the ``<output_files_var>`` and may be consumed by the caller +for installation for example. The ``OUTPUT_DIR`` specifies a relative +path from the main ``<file>`` to the compiler-specific files. For example: + +.. code-block:: cmake + + write_compiler_detection_header( + FILE climbingstats_compiler_detection.h + PREFIX ClimbingStats + OUTPUT_FILES_VAR support_files + OUTPUT_DIR compilers + COMPILERS GNU Clang MSVC Intel + FEATURES cxx_variadic_templates + ) + install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/climbingstats_compiler_detection.h + DESTINATION include + ) + install(FILES + ${support_files} + DESTINATION include/compilers + ) + + +``VERSION`` may be used to specify the API version to be generated. +Future versions of CMake may introduce alternative APIs. A given +API is selected by any ``<version>`` value greater than or equal +to the version of CMake that introduced the given API and less +than the version of CMake that introduced its succeeding API. +The value of the :variable:`CMAKE_MINIMUM_REQUIRED_VERSION` +variable is used if no explicit version is specified. +(As of CMake version |release| there is only one API version.) + +``PROLOG`` may be specified as text content to write at the start of the +header. ``EPILOG`` may be specified as text content to write at the end +of the header + +At least one ``<compiler>`` and one ``<feature>`` must be listed. Compilers +which are known to CMake, but not specified are detected and a preprocessor +``#error`` is generated for them. A preprocessor macro matching +``<PREFIX>_COMPILER_IS_<compiler>`` is generated for each compiler +known to CMake to contain the value ``0`` or ``1``. + +Possible compiler identifiers are documented with the +:variable:`CMAKE_<LANG>_COMPILER_ID` variable. +Available features in this version of CMake are listed in the +:prop_gbl:`CMAKE_C_KNOWN_FEATURES` and +:prop_gbl:`CMAKE_CXX_KNOWN_FEATURES` global properties. +The ``{c,cxx}_std_*`` meta-features are ignored if requested. + +See the :manual:`cmake-compile-features(7)` manual for information on +compile features. + +``BARE_FEATURES`` will define the compatibility macros with the name used in +newer versions of the language standard, so the code can use the new feature +name unconditionally. + +``ALLOW_UNKNOWN_COMPILERS`` and ``ALLOW_UNKNOWN_COMPILER_VERSIONS`` cause +the module to generate conditions that treat unknown compilers as simply +lacking all features. Without these options the default behavior is to +generate a ``#error`` for unknown compilers and versions. + +Feature Test Macros +=================== + +For each compiler, a preprocessor macro is generated matching +``<PREFIX>_COMPILER_IS_<compiler>`` which has the content either ``0`` +or ``1``, depending on the compiler in use. Preprocessor macros for +compiler version components are generated matching +``<PREFIX>_COMPILER_VERSION_MAJOR`` ``<PREFIX>_COMPILER_VERSION_MINOR`` +and ``<PREFIX>_COMPILER_VERSION_PATCH`` containing decimal values +for the corresponding compiler version components, if defined. + +A preprocessor test is generated based on the compiler version +denoting whether each feature is enabled. A preprocessor macro +matching ``<PREFIX>_COMPILER_<FEATURE>``, where ``<FEATURE>`` is the +upper-case ``<feature>`` name, is generated to contain the value +``0`` or ``1`` depending on whether the compiler in use supports the +feature: + +.. code-block:: cmake + + write_compiler_detection_header( + FILE climbingstats_compiler_detection.h + PREFIX ClimbingStats + COMPILERS GNU Clang AppleClang MSVC Intel + FEATURES cxx_variadic_templates + ) + +.. code-block:: c++ + + #if ClimbingStats_COMPILER_CXX_VARIADIC_TEMPLATES + template<typename... T> + void someInterface(T t...) { /* ... */ } + #else + // Compatibility versions + template<typename T1> + void someInterface(T1 t1) { /* ... */ } + template<typename T1, typename T2> + void someInterface(T1 t1, T2 t2) { /* ... */ } + template<typename T1, typename T2, typename T3> + void someInterface(T1 t1, T2 t2, T3 t3) { /* ... */ } + #endif + +Symbol Macros +============= + +Some additional symbol-defines are created for particular features for +use as symbols which may be conditionally defined empty: + +.. code-block:: c++ + + class MyClass ClimbingStats_FINAL + { + ClimbingStats_CONSTEXPR int someInterface() { return 42; } + }; + +The ``ClimbingStats_FINAL`` macro will expand to ``final`` if the +compiler (and its flags) support the ``cxx_final`` feature, and the +``ClimbingStats_CONSTEXPR`` macro will expand to ``constexpr`` +if ``cxx_constexpr`` is supported. + +If ``BARE_FEATURES cxx_final`` was given as argument the ``final`` keyword +will be defined for old compilers, too. + +The following features generate corresponding symbol defines and if they +are available as ``BARE_FEATURES``: + +========================== =================================== ================= ====== + Feature Define Symbol bare +========================== =================================== ================= ====== +``c_restrict`` ``<PREFIX>_RESTRICT`` ``restrict`` yes +``cxx_constexpr`` ``<PREFIX>_CONSTEXPR`` ``constexpr`` yes +``cxx_deleted_functions`` ``<PREFIX>_DELETED_FUNCTION`` ``= delete`` +``cxx_extern_templates`` ``<PREFIX>_EXTERN_TEMPLATE`` ``extern`` +``cxx_final`` ``<PREFIX>_FINAL`` ``final`` yes +``cxx_noexcept`` ``<PREFIX>_NOEXCEPT`` ``noexcept`` yes +``cxx_noexcept`` ``<PREFIX>_NOEXCEPT_EXPR(X)`` ``noexcept(X)`` +``cxx_override`` ``<PREFIX>_OVERRIDE`` ``override`` yes +========================== =================================== ================= ====== + +Compatibility Implementation Macros +=================================== + +Some features are suitable for wrapping in a macro with a backward +compatibility implementation if the compiler does not support the feature. + +When the ``cxx_static_assert`` feature is not provided by the compiler, +a compatibility implementation is available via the +``<PREFIX>_STATIC_ASSERT(COND)`` and +``<PREFIX>_STATIC_ASSERT_MSG(COND, MSG)`` function-like macros. The macros +expand to ``static_assert`` where that compiler feature is available, and +to a compatibility implementation otherwise. In the first form, the +condition is stringified in the message field of ``static_assert``. In +the second form, the message ``MSG`` is passed to the message field of +``static_assert``, or ignored if using the backward compatibility +implementation. + +The ``cxx_attribute_deprecated`` feature provides a macro definition +``<PREFIX>_DEPRECATED``, which expands to either the standard +``[[deprecated]]`` attribute or a compiler-specific decorator such +as ``__attribute__((__deprecated__))`` used by GNU compilers. + +The ``cxx_alignas`` feature provides a macro definition +``<PREFIX>_ALIGNAS`` which expands to either the standard ``alignas`` +decorator or a compiler-specific decorator such as +``__attribute__ ((__aligned__))`` used by GNU compilers. + +The ``cxx_alignof`` feature provides a macro definition +``<PREFIX>_ALIGNOF`` which expands to either the standard ``alignof`` +decorator or a compiler-specific decorator such as ``__alignof__`` +used by GNU compilers. + +============================= ================================ ===================== ====== + Feature Define Symbol bare +============================= ================================ ===================== ====== +``cxx_alignas`` ``<PREFIX>_ALIGNAS`` ``alignas`` +``cxx_alignof`` ``<PREFIX>_ALIGNOF`` ``alignof`` +``cxx_nullptr`` ``<PREFIX>_NULLPTR`` ``nullptr`` yes +``cxx_static_assert`` ``<PREFIX>_STATIC_ASSERT`` ``static_assert`` +``cxx_static_assert`` ``<PREFIX>_STATIC_ASSERT_MSG`` ``static_assert`` +``cxx_attribute_deprecated`` ``<PREFIX>_DEPRECATED`` ``[[deprecated]]`` +``cxx_attribute_deprecated`` ``<PREFIX>_DEPRECATED_MSG`` ``[[deprecated]]`` +``cxx_thread_local`` ``<PREFIX>_THREAD_LOCAL`` ``thread_local`` +============================= ================================ ===================== ====== + +A use-case which arises with such deprecation macros is the deprecation +of an entire library. In that case, all public API in the library may +be decorated with the ``<PREFIX>_DEPRECATED`` macro. This results in +very noisy build output when building the library itself, so the macro +may be may be defined to empty in that case when building the deprecated +library: + +.. code-block:: cmake + + add_library(compat_support ${srcs}) + target_compile_definitions(compat_support + PRIVATE + CompatSupport_DEPRECATED= + ) +#]=======================================================================] include(${CMAKE_CURRENT_LIST_DIR}/CMakeCompilerIdDetection.cmake) |