diff options
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/CMakeForceCompiler.cmake | 16 | ||||
-rw-r--r-- | Modules/CMakeIOSInstallCombined.cmake | 12 | ||||
-rw-r--r-- | Modules/ExternalProject.cmake | 47 | ||||
-rw-r--r-- | Modules/FindBoost.cmake | 18 | ||||
-rw-r--r-- | Modules/FindGit.cmake | 26 | ||||
-rw-r--r-- | Modules/FindPNG.cmake | 50 | ||||
-rw-r--r-- | Modules/FindPkgConfig.cmake | 11 | ||||
-rw-r--r-- | Modules/FindPythonInterp.cmake | 7 | ||||
-rw-r--r-- | Modules/FindPythonLibs.cmake | 7 | ||||
-rw-r--r-- | Modules/FindXalanC.cmake | 162 | ||||
-rw-r--r-- | Modules/GetPrerequisites.cmake | 4 | ||||
-rw-r--r-- | Modules/Platform/WindowsPaths.cmake | 52 | ||||
-rw-r--r-- | Modules/UseJava.cmake | 6 |
13 files changed, 329 insertions, 89 deletions
diff --git a/Modules/CMakeForceCompiler.cmake b/Modules/CMakeForceCompiler.cmake index 343ab3f..faa0dc5 100644 --- a/Modules/CMakeForceCompiler.cmake +++ b/Modules/CMakeForceCompiler.cmake @@ -2,7 +2,9 @@ # CMakeForceCompiler # ------------------ # -# Deprecated. Do not use. +# Discouraged. Avoid using this module if possible. It will be deprecated +# by a future version of CMake once alternatives have been provided for all +# toolchain file use cases. # # The macros provided by this module were once intended for use by # cross-compiling toolchain files when CMake was not able to automatically @@ -12,6 +14,12 @@ # CMake detects from a compiler is now too extensive to be provided by # toolchain files using these macros. # +# The only known remaining use case for these macros is to write toolchain +# files for cross-compilers that cannot link binaries without special flags or +# custom linker scripts. These macros cause CMake to skip checks it normally +# performs as part of enabling a language and introspecting the toolchain. +# However, skipping these checks may limit some generation functionality. +# # ------------------------------------------------------------------------- # # Macro CMAKE_FORCE_C_COMPILER has the following signature: @@ -70,8 +78,6 @@ # License text for the above reference.) macro(CMAKE_FORCE_C_COMPILER compiler id) - message(DEPRECATION "The CMAKE_FORCE_C_COMPILER macro is deprecated. " - "Instead just set CMAKE_C_COMPILER and allow CMake to identify the compiler.") set(CMAKE_C_COMPILER "${compiler}") set(CMAKE_C_COMPILER_ID_RUN TRUE) set(CMAKE_C_COMPILER_ID ${id}) @@ -84,8 +90,6 @@ macro(CMAKE_FORCE_C_COMPILER compiler id) endmacro() macro(CMAKE_FORCE_CXX_COMPILER compiler id) - message(DEPRECATION "The CMAKE_FORCE_CXX_COMPILER macro is deprecated. " - "Instead just set CMAKE_CXX_COMPILER and allow CMake to identify the compiler.") set(CMAKE_CXX_COMPILER "${compiler}") set(CMAKE_CXX_COMPILER_ID_RUN TRUE) set(CMAKE_CXX_COMPILER_ID ${id}) @@ -98,8 +102,6 @@ macro(CMAKE_FORCE_CXX_COMPILER compiler id) endmacro() macro(CMAKE_FORCE_Fortran_COMPILER compiler id) - message(DEPRECATION "The CMAKE_FORCE_Fortran_COMPILER macro is deprecated. " - "Instead just set CMAKE_Fortran_COMPILER and allow CMake to identify the compiler.") set(CMAKE_Fortran_COMPILER "${compiler}") set(CMAKE_Fortran_COMPILER_ID_RUN TRUE) set(CMAKE_Fortran_COMPILER_ID ${id}) diff --git a/Modules/CMakeIOSInstallCombined.cmake b/Modules/CMakeIOSInstallCombined.cmake index f052a3b..1256f56 100644 --- a/Modules/CMakeIOSInstallCombined.cmake +++ b/Modules/CMakeIOSInstallCombined.cmake @@ -52,7 +52,14 @@ function(_ios_install_combined_get_build_setting sdk variable resultvar) endif() if(NOT output MATCHES " ${variable} = ([^\n]*)") - message(FATAL_ERROR "${variable} not found.") + if("${variable}" STREQUAL "VALID_ARCHS") + # VALID_ARCHS may be unset by user for given SDK + # (e.g. for build without simulator). + set("${resultvar}" "" PARENT_SCOPE) + return() + else() + message(FATAL_ERROR "${variable} not found.") + endif() endif() set("${resultvar}" "${CMAKE_MATCH_1}" PARENT_SCOPE) @@ -72,6 +79,9 @@ function(_ios_install_combined_get_valid_archs sdk resultvar) list(REMOVE_ITEM valid_archs "") # remove empty elements list(REMOVE_DUPLICATES valid_archs) + string(REPLACE ";" " " printable "${valid_archs}") + _ios_install_combined_message("Architectures (${sdk}): ${printable}") + set("${resultvar}" "${valid_archs}" PARENT_SCOPE) endfunction() diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake index c822bdb..249658d 100644 --- a/Modules/ExternalProject.cmake +++ b/Modules/ExternalProject.cmake @@ -57,6 +57,8 @@ Create custom targets to build projects in external trees URL of git repo ``GIT_TAG <tag>`` Git branch name, commit id or tag + ``GIT_REMOTE_NAME <name>`` + The optional name of the remote, default to ``origin`` ``GIT_SUBMODULES <module>...`` Git submodules that shall be updated, all if empty ``HG_REPOSITORY <url>`` @@ -494,7 +496,7 @@ define_property(DIRECTORY PROPERTY "EP_UPDATE_DISCONNECTED" INHERITED "ExternalProject module." ) -function(_ep_write_gitclone_script script_filename source_dir git_EXECUTABLE git_repository git_tag git_submodules src_name work_dir gitclone_infofile gitclone_stampfile) +function(_ep_write_gitclone_script script_filename source_dir git_EXECUTABLE git_repository git_tag git_remote_name git_submodules src_name work_dir gitclone_infofile gitclone_stampfile) file(WRITE ${script_filename} "if(\"${git_tag}\" STREQUAL \"\") message(FATAL_ERROR \"Tag for git checkout should not be empty.\") @@ -524,7 +526,7 @@ set(error_code 1) set(number_of_tries 0) while(error_code AND number_of_tries LESS 3) execute_process( - COMMAND \"${git_EXECUTABLE}\" clone \"${git_repository}\" \"${src_name}\" + COMMAND \"${git_EXECUTABLE}\" clone --origin \"${git_remote_name}\" \"${git_repository}\" \"${src_name}\" WORKING_DIRECTORY \"${work_dir}\" RESULT_VARIABLE error_code ) @@ -645,7 +647,7 @@ endif() endfunction() -function(_ep_write_gitupdate_script script_filename git_EXECUTABLE git_tag git_submodules git_repository work_dir) +function(_ep_write_gitupdate_script script_filename git_EXECUTABLE git_tag git_remote_name git_submodules git_repository work_dir) if(NOT GIT_VERSION_STRING VERSION_LESS 1.7.6) set(git_stash_save_options --all --quiet) else() @@ -687,7 +689,7 @@ if(\"\${show_ref_output}\" MATCHES \"refs/remotes/${git_tag}\") set(git_remote \"\${CMAKE_MATCH_1}\") set(git_tag \"\${CMAKE_MATCH_2}\") else() - set(git_remote \"origin\") + set(git_remote \"${git_remote_name}\") set(git_tag \"${git_tag}\") endif() @@ -1228,9 +1230,24 @@ function(_ep_get_build_command name step cmd_var) set(cmd "${CMAKE_COMMAND}") endif() set(args --build ".") - if (CMAKE_CFG_INTDIR AND NOT CMAKE_CFG_INTDIR STREQUAL ".") - list(APPEND args --config "${CMAKE_CFG_INTDIR}") - endif () + if(CMAKE_CONFIGURATION_TYPES) + if (CMAKE_CFG_INTDIR AND + NOT CMAKE_CFG_INTDIR STREQUAL "." AND + NOT CMAKE_CFG_INTDIR MATCHES "\\$") + # CMake 3.4 and below used the CMAKE_CFG_INTDIR placeholder value + # provided by multi-configuration generators. Some projects were + # taking advantage of that undocumented implementation detail to + # specify a specific configuration here. They should use + # BUILD_COMMAND to change the default command instead, but for + # compatibility honor the value. + set(config ${CMAKE_CFG_INTDIR}) + message(AUTHOR_WARNING "CMAKE_CFG_INTDIR should not be set by project code.\n" + "To get a non-default build command, use the BUILD_COMMAND option.") + else() + set(config $<CONFIG>) + endif() + list(APPEND args --config ${config}) + endif() if(step STREQUAL "INSTALL") list(APPEND args --target install) endif() @@ -1238,6 +1255,9 @@ function(_ep_get_build_command name step cmd_var) if("x${step}x" STREQUAL "xTESTx") string(REGEX REPLACE "^(.*/)cmake([^/]*)$" "\\1ctest\\2" cmd "${cmd}") set(args "") + if(CMAKE_CONFIGURATION_TYPES) + list(APPEND args -C ${config}) + endif() endif() endif() else() @@ -1749,6 +1769,11 @@ function(_ep_add_download_command name) endif() get_property(git_submodules TARGET ${name} PROPERTY _EP_GIT_SUBMODULES) + get_property(git_remote_name TARGET ${name} PROPERTY _EP_GIT_REMOTE_NAME) + if(NOT git_remote_name) + set(git_remote_name "origin") + endif() + # For the download step, and the git clone operation, only the repository # should be recorded in a configured RepositoryInfo file. If the repo # changes, the clone script should be run again. But if only the tag @@ -1772,7 +1797,7 @@ function(_ep_add_download_command name) # The script will delete the source directory and then call git clone. # _ep_write_gitclone_script(${tmp_dir}/${name}-gitclone.cmake ${source_dir} - ${GIT_EXECUTABLE} ${git_repository} ${git_tag} "${git_submodules}" ${src_name} ${work_dir} + ${GIT_EXECUTABLE} ${git_repository} ${git_tag} ${git_remote_name} "${git_submodules}" ${src_name} ${work_dir} ${stamp_dir}/${name}-gitinfo.txt ${stamp_dir}/${name}-gitclone-lastrun.txt ) set(comment "Performing download step (git clone) for '${name}'") @@ -1993,9 +2018,13 @@ function(_ep_add_update_command name) if(NOT git_tag) set(git_tag "master") endif() + get_property(git_remote_name TARGET ${name} PROPERTY _EP_GIT_REMOTE_NAME) + if(NOT git_remote_name) + set(git_remote_name "origin") + endif() get_property(git_submodules TARGET ${name} PROPERTY _EP_GIT_SUBMODULES) _ep_write_gitupdate_script(${tmp_dir}/${name}-gitupdate.cmake - ${GIT_EXECUTABLE} ${git_tag} "${git_submodules}" ${git_repository} ${work_dir} + ${GIT_EXECUTABLE} ${git_tag} ${git_remote_name} "${git_submodules}" ${git_repository} ${work_dir} ) set(cmd ${CMAKE_COMMAND} -P ${tmp_dir}/${name}-gitupdate.cmake) set(always 1) diff --git a/Modules/FindBoost.cmake b/Modules/FindBoost.cmake index edfed8e..728dcdf 100644 --- a/Modules/FindBoost.cmake +++ b/Modules/FindBoost.cmake @@ -707,7 +707,7 @@ function(_Boost_COMPONENT_DEPENDENCIES component _ret) set(_Boost_TIMER_DEPENDENCIES chrono system) set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic) set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 106000 AND Boost_VERSION VERSION_LESS 106100) + elseif(NOT Boost_VERSION VERSION_LESS 106000 AND Boost_VERSION VERSION_LESS 106200) set(_Boost_CHRONO_DEPENDENCIES system) set(_Boost_COROUTINE_DEPENDENCIES context system) set(_Boost_FILESYSTEM_DEPENDENCIES system) @@ -745,9 +745,10 @@ endfunction() # defined; FALSE if dependency information is unavailable). # # componentvar - the component list variable name +# extravar - the indirect dependency list variable name # # -function(_Boost_MISSING_DEPENDENCIES componentvar) +function(_Boost_MISSING_DEPENDENCIES componentvar extravar) # _boost_unprocessed_components - list of components requiring processing # _boost_processed_components - components already processed (or currently being processed) # _boost_new_components - new components discovered for future processing @@ -773,7 +774,12 @@ function(_Boost_MISSING_DEPENDENCIES componentvar) set(_boost_unprocessed_components ${_boost_new_components}) unset(_boost_new_components) endwhile() + set(_boost_extra_components ${_boost_processed_components}) + if(_boost_extra_components AND ${componentvar}) + list(REMOVE_ITEM _boost_extra_components ${${componentvar}}) + endif() set(${componentvar} ${_boost_processed_components} PARENT_SCOPE) + set(${extravar} ${_boost_extra_components} PARENT_SCOPE) endfunction() # @@ -821,7 +827,7 @@ else() # information in _Boost_COMPONENT_DEPENDENCIES. See the # instructions at the top of _Boost_COMPONENT_DEPENDENCIES. set(_Boost_KNOWN_VERSIONS ${Boost_ADDITIONAL_VERSIONS} - "1.60.0" "1.60" + "1.61.0" "1.61" "1.60.0" "1.60" "1.59.0" "1.59" "1.58.0" "1.58" "1.57.0" "1.57" "1.56.0" "1.56" "1.55.0" "1.55" "1.54.0" "1.54" "1.53.0" "1.53" "1.52.0" "1.52" "1.51.0" "1.51" "1.50.0" "1.50" "1.49.0" "1.49" "1.48.0" "1.48" "1.47.0" "1.47" "1.46.1" @@ -1306,7 +1312,7 @@ endif() # Additional components may be required via component dependencies. # Add any missing components to the list. -_Boost_MISSING_DEPENDENCIES(Boost_FIND_COMPONENTS) +_Boost_MISSING_DEPENDENCIES(Boost_FIND_COMPONENTS _Boost_EXTRA_FIND_COMPONENTS) # If thread is required, get the thread libs as a dependency list(FIND Boost_FIND_COMPONENTS thread _Boost_THREAD_DEPENDENCY_LIBS) @@ -1484,6 +1490,10 @@ if(Boost_FOUND) list(APPEND _Boost_MISSING_COMPONENTS ${COMPONENT}) endif() endforeach() + if(_Boost_MISSING_COMPONENTS AND _Boost_EXTRA_FIND_COMPONENTS) + # Optional indirect dependencies are not counted as missing. + list(REMOVE_ITEM _Boost_MISSING_COMPONENTS ${_Boost_EXTRA_FIND_COMPONENTS}) + endif() if(Boost_DEBUG) message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] Boost_FOUND = ${Boost_FOUND}") diff --git a/Modules/FindGit.cmake b/Modules/FindGit.cmake index 2c3e5fd..d18f965 100644 --- a/Modules/FindGit.cmake +++ b/Modules/FindGit.cmake @@ -2,27 +2,26 @@ # FindGit # ------- # -# -# # The module defines the following variables: # -# :: -# -# GIT_EXECUTABLE - path to git command line client -# GIT_FOUND - true if the command line client was found -# GIT_VERSION_STRING - the version of git found (since CMake 2.8.8) +# ``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}") +# if(Git_FOUND) +# message("Git found: ${GIT_EXECUTABLE}") # endif() #============================================================================= -# Copyright 2010 Kitware, Inc. +# Copyright 2010-2016 Kitware, Inc. # Copyright 2012 Rolf Eike Beer <eike@sf-mail.de> # # Distributed under the OSI-approved BSD License (the "License"); @@ -57,10 +56,11 @@ find_program(GIT_EXECUTABLE NAMES ${git_names} PATHS ${github_path} ${_git_sourcetree_path} PATH_SUFFIXES Git/cmd Git/bin - DOC "git command line client" + DOC "Git command line client" ) mark_as_advanced(GIT_EXECUTABLE) +unset(git_names) unset(_git_sourcetree_path) if(GIT_EXECUTABLE) @@ -74,7 +74,7 @@ if(GIT_EXECUTABLE) unset(git_version) endif() -# Handle the QUIETLY and REQUIRED arguments and set GIT_FOUND to TRUE if +# Handle the QUIETLY and REQUIRED arguments and set Git_FOUND to TRUE if # all listed variables are TRUE include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) diff --git a/Modules/FindPNG.cmake b/Modules/FindPNG.cmake index 7cf3f22..cae41ac 100644 --- a/Modules/FindPNG.cmake +++ b/Modules/FindPNG.cmake @@ -2,13 +2,20 @@ # FindPNG # ------- # -# Find the native PNG includes and library +# Find libpng, the official reference library for the PNG image format. # +# Imported targets +# ^^^^^^^^^^^^^^^^ # +# This module defines the following :prop_tgt:`IMPORTED` target: # -# This module searches libpng, the library for working with PNG images. +# ``PNG::PNG`` +# The libpng library, if found. # -# It defines the following variables +# Result variables +# ^^^^^^^^^^^^^^^^ +# +# This module will set the following variables in your project: # # ``PNG_INCLUDE_DIRS`` # where to find png.h, etc. @@ -22,19 +29,22 @@ # ``PNG_VERSION_STRING`` # the version of the PNG library found (since CMake 2.8.8) # -# Also defined, but not for general use are +# Obsolete variables +# ^^^^^^^^^^^^^^^^^^ +# +# The following variables may also be set, for backwards compatibility: # # ``PNG_LIBRARY`` # where to find the PNG library. -# -# For backward compatiblity the variable PNG_INCLUDE_DIR is also set. -# It has the same value as PNG_INCLUDE_DIRS. +# ``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. #============================================================================= # Copyright 2002-2009 Kitware, Inc. +# Copyright 2016 Raumfeld # # Distributed under the OSI-approved BSD License (the "License"); # see accompanying file Copyright.txt for details. @@ -105,6 +115,32 @@ if(ZLIB_FOUND) endif() endif () + if(NOT TARGET PNG::PNG) + add_library(PNG::PNG UNKNOWN IMPORTED) + set_target_properties(PNG::PNG PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "${PNG_DEFINITIONS}" + INTERFACE_INCLUDE_DIRECTORIES "${PNG_INCLUDE_DIRS}" + INTERFACE_LINK_LIBRARIES ZLIB::ZLIB) + if(EXISTS "${PNG_LIBRARY}") + set_target_properties(PNG::PNG PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "${PNG_LIBRARY}") + endif() + if(EXISTS "${PNG_LIBRARY_DEBUG}") + set_property(TARGET PNG::PNG APPEND PROPERTY + IMPORTED_CONFIGURATIONS DEBUG) + set_target_properties(PNG::PNG PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C" + IMPORTED_LOCATION_DEBUG "${PNG_LIBRARY_DEBUG}") + endif() + if(EXISTS "${PNG_LIBRARY_RELEASE}") + set_property(TARGET PNG::PNG APPEND PROPERTY + IMPORTED_CONFIGURATIONS RELEASE) + set_target_properties(PNG::PNG PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C" + IMPORTED_LOCATION_RELEASE "${PNG_LIBRARY_RELEASE}") + endif() + endif() endif () if (PNG_PNG_INCLUDE_DIR AND EXISTS "${PNG_PNG_INCLUDE_DIR}/png.h") diff --git a/Modules/FindPkgConfig.cmake b/Modules/FindPkgConfig.cmake index eba6953..447c526 100644 --- a/Modules/FindPkgConfig.cmake +++ b/Modules/FindPkgConfig.cmake @@ -238,8 +238,8 @@ macro(_pkg_check_modules_internal _is_required _is_silent _no_cmake_path _no_cma if(NOT "${_extra_paths}" STREQUAL "") # Save the PKG_CONFIG_PATH environment variable, and add paths # from the CMAKE_PREFIX_PATH variables - set(_pkgconfig_path_old $ENV{PKG_CONFIG_PATH}) - set(_pkgconfig_path ${_pkgconfig_path_old}) + set(_pkgconfig_path_old "$ENV{PKG_CONFIG_PATH}") + set(_pkgconfig_path "${_pkgconfig_path_old}") if(NOT "${_pkgconfig_path}" STREQUAL "") file(TO_CMAKE_PATH "${_pkgconfig_path}" _pkgconfig_path) endif() @@ -285,7 +285,7 @@ macro(_pkg_check_modules_internal _is_required _is_silent _no_cmake_path _no_cma string(REPLACE ";" ":" _pkgconfig_path "${_pkgconfig_path}") string(REPLACE "\\ " " " _pkgconfig_path "${_pkgconfig_path}") endif() - set(ENV{PKG_CONFIG_PATH} ${_pkgconfig_path}) + set(ENV{PKG_CONFIG_PATH} "${_pkgconfig_path}") endif() # Unset variables @@ -382,6 +382,9 @@ macro(_pkg_check_modules_internal _is_required _is_silent _no_cmake_path _no_cma pkg_get_variable("${_pkg_check_prefix}_PREFIX" ${_pkg_check_modules_pkg} "prefix") pkg_get_variable("${_pkg_check_prefix}_INCLUDEDIR" ${_pkg_check_modules_pkg} "includedir") pkg_get_variable("${_pkg_check_prefix}_LIBDIR" ${_pkg_check_modules_pkg} "libdir") + foreach (variable IN ITEMS PREFIX INCLUDEDIR LIBDIR) + _pkgconfig_set("${_pkg_check_prefix}_${variable}" "${${_pkg_check_prefix}_${variable}}") + endforeach () if (NOT ${_is_silent}) message(STATUS " Found ${_pkg_check_modules_pkg}, version ${_pkgconfig_VERSION}") @@ -401,7 +404,7 @@ macro(_pkg_check_modules_internal _is_required _is_silent _no_cmake_path _no_cma if(NOT "${_extra_paths}" STREQUAL "") # Restore the environment variable - set(ENV{PKG_CONFIG_PATH} ${_pkgconfig_path}) + set(ENV{PKG_CONFIG_PATH} "${_pkgconfig_path_old}") endif() unset(_extra_paths) diff --git a/Modules/FindPythonInterp.cmake b/Modules/FindPythonInterp.cmake index 879192e..e194185 100644 --- a/Modules/FindPythonInterp.cmake +++ b/Modules/FindPythonInterp.cmake @@ -28,9 +28,10 @@ # for Python. You need to set this variable before calling # find_package(PythonInterp). # -# If also calling find_package(PythonLibs), call find_package(PythonInterp) -# first to get the currently active Python version by default with a consistent -# version of PYTHON_LIBRARIES. +# 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. #============================================================================= # Copyright 2005-2010 Kitware, Inc. diff --git a/Modules/FindPythonLibs.cmake b/Modules/FindPythonLibs.cmake index 68e1228..ab92f86 100644 --- a/Modules/FindPythonLibs.cmake +++ b/Modules/FindPythonLibs.cmake @@ -32,9 +32,10 @@ # PYTHON_LIBRARY - path to the python library # PYTHON_INCLUDE_DIR - path to where Python.h is found # -# If also calling find_package(PythonInterp), call find_package(PythonInterp) -# first to get the currently active Python version by default with a consistent -# version of PYTHON_LIBRARIES. +# 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. #============================================================================= # Copyright 2001-2009 Kitware, Inc. diff --git a/Modules/FindXalanC.cmake b/Modules/FindXalanC.cmake new file mode 100644 index 0000000..016b7aa --- /dev/null +++ b/Modules/FindXalanC.cmake @@ -0,0 +1,162 @@ +#.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> + +#============================================================================= +# Copyright 2016 University of Dundee +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) + +function(_XalanC_GET_VERSION version_hdr) + file(STRINGS ${version_hdr} _contents REGEX "^[ \t]*#define XALAN_VERSION_.*") + if(_contents) + string(REGEX REPLACE "[^*]*#define XALAN_VERSION_MAJOR[ \t]+([0-9]+).*" "\\1" XalanC_MAJOR "${_contents}") + string(REGEX REPLACE "[^*]*#define XALAN_VERSION_MINOR[ \t]+([0-9]+).*" "\\1" XalanC_MINOR "${_contents}") + string(REGEX REPLACE "[^*]*#define XALAN_VERSION_REVISION[ \t]+([0-9]+).*" "\\1" XalanC_PATCH "${_contents}") + + if(NOT XalanC_MAJOR MATCHES "^[0-9]+$") + message(FATAL_ERROR "Version parsing failed for XALAN_VERSION_MAJOR!") + endif() + if(NOT XalanC_MINOR MATCHES "^[0-9]+$") + message(FATAL_ERROR "Version parsing failed for XALAN_VERSION_MINOR!") + endif() + if(NOT XalanC_PATCH MATCHES "^[0-9]+$") + message(FATAL_ERROR "Version parsing failed for XALAN_VERSION_REVISION!") + endif() + + set(XalanC_VERSION "${XalanC_MAJOR}.${XalanC_MINOR}.${XalanC_PATCH}" PARENT_SCOPE) + set(XalanC_VERSION_MAJOR "${XalanC_MAJOR}" PARENT_SCOPE) + set(XalanC_VERSION_MINOR "${XalanC_MINOR}" PARENT_SCOPE) + set(XalanC_VERSION_PATCH "${XalanC_PATCH}" PARENT_SCOPE) + else() + message(FATAL_ERROR "Include file ${version_hdr} does not exist or does not contain expected version information") + endif() +endfunction() + +# Find include directory +find_path(XalanC_INCLUDE_DIR + NAMES "xalanc/XalanTransformer/XalanTransformer.hpp" + DOC "Xalan-C++ include directory") +mark_as_advanced(XalanC_INCLUDE_DIR) + +if(XalanC_INCLUDE_DIR) + _XalanC_GET_VERSION("${XalanC_INCLUDE_DIR}/xalanc/Include/XalanVersion.hpp") +endif() + +if(NOT XalanC_LIBRARY) + # Find all XalanC libraries + find_library(XalanC_LIBRARY_RELEASE + NAMES "Xalan-C" "xalan-c" + "Xalan-C_${XalanC_VERSION_MAJOR}" + "Xalan-C_${XalanC_VERSION_MAJOR}_${XalanC_VERSION_MINOR}" + DOC "Xalan-C++ libraries (release)") + find_library(XalanC_LIBRARY_DEBUG + NAMES "Xalan-CD" "xalan-cd" + "Xalan-C_${XalanC_VERSION_MAJOR}D" + "Xalan-C_${XalanC_VERSION_MAJOR}_${XalanC_VERSION_MINOR}D" + DOC "Xalan-C++ libraries (debug)") + include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake) + select_library_configurations(XalanC) + mark_as_advanced(XalanC_LIBRARY_RELEASE XalanC_LIBRARY_DEBUG) +endif() + +unset(XalanC_VERSION_MAJOR) +unset(XalanC_VERSION_MINOR) +unset(XalanC_VERSION_PATCH) + +unset(XalanC_XERCESC_REQUIRED) +if(XalanC_FIND_REQUIRED) + set(XalanC_XERCESC_REQUIRED REQUIRED) +endif() +find_package(XercesC ${XalanC_XERCESC_REQUIRED}) +unset(XalanC_XERCESC_REQUIRED) + +include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(XalanC + FOUND_VAR XalanC_FOUND + REQUIRED_VARS XalanC_LIBRARY + XalanC_INCLUDE_DIR + XalanC_VERSION + XercesC_FOUND + VERSION_VAR XalanC_VERSION + FAIL_MESSAGE "Failed to find XalanC") + +if(XalanC_FOUND) + set(XalanC_INCLUDE_DIRS "${XalanC_INCLUDE_DIR}" ${XercesC_INCLUDE_DIRS}) + set(XalanC_LIBRARIES "${XalanC_LIBRARY}" ${XercesC_LIBRARIES}) + + # For header-only libraries + if(NOT TARGET XalanC::XalanC) + add_library(XalanC::XalanC UNKNOWN IMPORTED) + if(XalanC_INCLUDE_DIRS) + set_target_properties(XalanC::XalanC PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${XalanC_INCLUDE_DIRS}") + endif() + if(EXISTS "${XalanC_LIBRARY}") + set_target_properties(XalanC::XalanC PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${XalanC_LIBRARY}") + endif() + if(EXISTS "${XalanC_LIBRARY_DEBUG}") + set_property(TARGET XalanC::XalanC APPEND PROPERTY + IMPORTED_CONFIGURATIONS DEBUG) + set_target_properties(XalanC::XalanC PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX" + IMPORTED_LOCATION_DEBUG "${XalanC_LIBRARY_DEBUG}") + endif() + if(EXISTS "${XalanC_LIBRARY_RELEASE}") + set_property(TARGET XalanC::XalanC APPEND PROPERTY + IMPORTED_CONFIGURATIONS RELEASE) + set_target_properties(XalanC::XalanC PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" + IMPORTED_LOCATION_RELEASE "${XalanC_LIBRARY_RELEASE}") + endif() + set_target_properties(XalanC::XalanC PROPERTIES INTERFACE_LINK_LIBRARIES XercesC::XercesC) + endif() +endif() diff --git a/Modules/GetPrerequisites.cmake b/Modules/GetPrerequisites.cmake index e4018b6..391e7f8 100644 --- a/Modules/GetPrerequisites.cmake +++ b/Modules/GetPrerequisites.cmake @@ -538,7 +538,7 @@ function(gp_resolved_file_type original_file file exepath dirs type_var) string(TOLOWER "$ENV{windir}" windir) file(TO_CMAKE_PATH "${windir}" windir) - if(lower MATCHES "^(${sysroot}/sys(tem|wow)|${windir}/sys(tem|wow)|(.*/)*msvc[^/]+dll)") + if(lower MATCHES "^(api-ms-win-|${sysroot}/sys(tem|wow)|${windir}/sys(tem|wow)|(.*/)*msvc[^/]+dll)") set(is_system 1) endif() @@ -566,7 +566,7 @@ function(gp_resolved_file_type original_file file exepath dirs type_var) string(TOLOWER "${env_windir}" windir) string(TOLOWER "${env_sysdir}" sysroot) - if(lower MATCHES "^(${sysroot}/sys(tem|wow)|${windir}/sys(tem|wow)|(.*/)*msvc[^/]+dll)") + if(lower MATCHES "^(api-ms-win-|${sysroot}/sys(tem|wow)|${windir}/sys(tem|wow)|(.*/)*msvc[^/]+dll)") set(is_system 1) endif() endif() diff --git a/Modules/Platform/WindowsPaths.cmake b/Modules/Platform/WindowsPaths.cmake index 658de3b..eafa8fa 100644 --- a/Modules/Platform/WindowsPaths.cmake +++ b/Modules/Platform/WindowsPaths.cmake @@ -28,46 +28,32 @@ set(__WINDOWS_PATHS_INCLUDED 1) # Windows 64-bit Binary: # ENV{ProgramFiles(x86)} = [C:\Program Files (x86)] # ENV{ProgramFiles} = [C:\Program Files] -# ENV{ProgramW6432} = <not set> -# (executed from cygwin): -# ENV{ProgramFiles(x86)} = <not set> -# ENV{ProgramFiles} = [C:\Program Files] -# ENV{ProgramW6432} = <not set> +# ENV{ProgramW6432} = [C:\Program Files] or <not set> # -# Windows 32-bit Binary: +# Windows 32-bit Binary on 64-bit Windows: # ENV{ProgramFiles(x86)} = [C:\Program Files (x86)] # ENV{ProgramFiles} = [C:\Program Files (x86)] # ENV{ProgramW6432} = [C:\Program Files] -# (executed from cygwin): -# ENV{ProgramFiles(x86)} = <not set> -# ENV{ProgramFiles} = [C:\Program Files (x86)] -# ENV{ProgramW6432} = [C:\Program Files] -if(DEFINED "ENV{ProgramW6432}") - # 32-bit binary on 64-bit windows. - # The 64-bit program files are in ProgramW6432. - list(APPEND CMAKE_SYSTEM_PREFIX_PATH "$ENV{ProgramW6432}") - - # The 32-bit program files are in ProgramFiles. - if(DEFINED "ENV{ProgramFiles}") - list(APPEND CMAKE_SYSTEM_PREFIX_PATH "$ENV{ProgramFiles}") +set(_programfiles "") +foreach(v "ProgramW6432" "ProgramFiles" "ProgramFiles(x86)") + if(DEFINED "ENV{${v}}") + file(TO_CMAKE_PATH "$ENV{${v}}" _env_programfiles) + list(APPEND _programfiles "${_env_programfiles}") + unset(_env_programfiles) endif() -else() - # 64-bit binary, or 32-bit binary on 32-bit windows. - if(DEFINED "ENV{ProgramFiles}") - list(APPEND CMAKE_SYSTEM_PREFIX_PATH "$ENV{ProgramFiles}") - endif() - set(programfilesx86 "ProgramFiles(x86)") - if(DEFINED "ENV{${programfilesx86}}") - # 64-bit binary. 32-bit program files are in ProgramFiles(x86). - list(APPEND CMAKE_SYSTEM_PREFIX_PATH "$ENV{${programfilesx86}}") - elseif(DEFINED "ENV{SystemDrive}") - # Guess the 32-bit program files location. - if(EXISTS "$ENV{SystemDrive}/Program Files (x86)") - list(APPEND CMAKE_SYSTEM_PREFIX_PATH - "$ENV{SystemDrive}/Program Files (x86)") +endforeach() +if(DEFINED "ENV{SystemDrive}") + foreach(d "Program Files" "Program Files (x86)") + if(EXISTS "$ENV{SystemDrive}/${d}") + list(APPEND _programfiles "$ENV{SystemDrive}/${d}") endif() - endif() + endforeach() +endif() +if(_programfiles) + list(REMOVE_DUPLICATES _programfiles) + list(APPEND CMAKE_SYSTEM_PREFIX_PATH ${_programfiles}) endif() +unset(_programfiles) # Add the CMake install location. get_filename_component(_CMAKE_INSTALL_DIR "${CMAKE_ROOT}" PATH) diff --git a/Modules/UseJava.cmake b/Modules/UseJava.cmake index 6146d78..475ad5e 100644 --- a/Modules/UseJava.cmake +++ b/Modules/UseJava.cmake @@ -184,7 +184,7 @@ # This is used by install_jni_symlink(). # JAR_FILE The location of the jar file so that you can include # it. -# CLASS_DIR The directory where the class files can be found. For +# CLASSDIR The directory where the class files can be found. For # example to use them with javah. # # :: @@ -1212,7 +1212,7 @@ function (create_javah) set (_output_files) if (WIN32 AND NOT CYGWIN AND CMAKE_HOST_SYSTEM_NAME MATCHES "Windows") - set(_classpath_sep ";") + set(_classpath_sep "$<SEMICOLON>") else () set(_classpath_sep ":") endif() @@ -1242,7 +1242,7 @@ function (create_javah) endif() endforeach() string (REPLACE ";" "${_classpath_sep}" _classpath "${_classpath}") - list (APPEND _javah_options -classpath ${_classpath}) + list (APPEND _javah_options -classpath "${_classpath}") endif() if (_create_javah_OUTPUT_DIR) |