From kwrobot at kitware.com Thu Feb 1 00:05:06 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 1 Feb 2018 00:05:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-985-g70695e7 Message-ID: <20180201050506.3E313103203@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 70695e72a665e0491be056181464f261e836a844 (commit) from a0c04e71eb2eb4b06c7a4fcfd9be21f9ac6a38ad (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=70695e72a665e0491be056181464f261e836a844 commit 70695e72a665e0491be056181464f261e836a844 Author: Kitware Robot AuthorDate: Thu Feb 1 00:01:10 2018 -0500 Commit: Kitware Robot CommitDate: Thu Feb 1 00:01:10 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 3666d5c..7d735ea 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 10) -set(CMake_VERSION_PATCH 20180131) +set(CMake_VERSION_PATCH 20180201) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 1 08:05:12 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 1 Feb 2018 08:05:12 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1004-g3ffc9b9 Message-ID: <20180201130513.9412F1034D6@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 3ffc9b99bb20b56d5dc232fee8c988aa34474a2f (commit) via f04cc45850bf0eab1abe75680e3f6794830d0003 (commit) via 8cb92c25d7fc60581d9be6af7c145ecd2ad3f84e (commit) via b844a414c7c0e7b32a43e14b71f30088ec473f46 (commit) via 315b0927e951019b43714f654f7b039b32ae14a9 (commit) via ce130c7a6bce84a9af3859c6f58a8d6c9f16afc7 (commit) via 0def36043f339210d117825a7149fc58c2907cae (commit) via 9ecbec5e01951e288a405deaba39a41a133fda0a (commit) via 767553674ed025351c8ce6fd68511a6d28cf0c95 (commit) via 901c4a1e05ae7d01dcf4208dfd1b11e1534d4895 (commit) via 88ed556d99068a5e1bf303e69a156a25fb985bcf (commit) via 14a13d30eefd657e56022d30d8976cfdfaf9ab06 (commit) via f2b8d67f1946bc59e95d1184f7ad64ac16193466 (commit) via 6dfd0f929416dbdf50ca44ebe19418e8a45782ad (commit) via f9235fd474682ba95231de0bc7285a39e35db83f (commit) via c0e7a137025789c41349ae0935609e7bd083587a (commit) via e7c0298d5c53471ffd21dac695ce5795affddfe8 (commit) via 8cddc89926edaf9d87c1b763749af337d30fed5f (commit) via 8b79107add5f27e06559ea6566b2c950857eae1e (commit) from 70695e72a665e0491be056181464f261e836a844 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3ffc9b99bb20b56d5dc232fee8c988aa34474a2f commit 3ffc9b99bb20b56d5dc232fee8c988aa34474a2f Merge: f04cc45 b844a41 Author: Brad King AuthorDate: Thu Feb 1 13:04:10 2018 +0000 Commit: Kitware Robot CommitDate: Thu Feb 1 08:04:52 2018 -0500 Merge topic 'UseSWIG-doc-clarify' b844a414 UseSWIG: Clarify documentation of SWIG_OUTFILE_DIR 315b0927 UseSWIG: Improve documentation markup ce130c7a UseSWIG: Convert docs to a bracket comment Acked-by: Kitware Robot Merge-request: !1733 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f04cc45850bf0eab1abe75680e3f6794830d0003 commit f04cc45850bf0eab1abe75680e3f6794830d0003 Merge: 8cb92c2 0def360 Author: Brad King AuthorDate: Thu Feb 1 13:03:02 2018 +0000 Commit: Kitware Robot CommitDate: Thu Feb 1 08:04:08 2018 -0500 Merge topic 'findmpi-linker-parsing-enh' 0def3604 FindMPI: Discard IMPI boilerplate text 9ecbec5e FindMPI: Support for IMPI's compiler check 76755367 FindMPI: Set up environment variables for wrapper e7c0298d FindMPI: Retain unused link paths 8cddc899 FindMPI: Use more CMake variables 8b79107a FindMPI: Improve link information parsing Acked-by: Kitware Robot Merge-request: !1694 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8cb92c25d7fc60581d9be6af7c145ecd2ad3f84e commit 8cb92c25d7fc60581d9be6af7c145ecd2ad3f84e Merge: 70695e7 901c4a1 Author: Brad King AuthorDate: Thu Feb 1 13:02:40 2018 +0000 Commit: Kitware Robot CommitDate: Thu Feb 1 08:03:13 2018 -0500 Merge topic 'perf-from-callgrind' 901c4a1e cmExpandedCommandArgument: add an overload for const char* 88ed556d cmGeneratorTarget: make keyword strings const 14a13d30 cmGeneratorExpressionLexer: only tokenize strings with a '$' f2b8d67f cmTarget: use static strings for special property names 6dfd0f92 cmGeneratorExpressionNode: avoid some strlen in $ f9235fd4 cmAddCustomCommandCommand: use std::string const& for FileIsFullPath c0e7a137 cmAddCustomCommandCommand: store keywords in strings Acked-by: Kitware Robot Merge-request: !1689 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b844a414c7c0e7b32a43e14b71f30088ec473f46 commit b844a414c7c0e7b32a43e14b71f30088ec473f46 Author: Noel Eck AuthorDate: Wed Jan 31 10:49:32 2018 -0800 Commit: Brad King CommitDate: Wed Jan 31 14:22:24 2018 -0500 UseSWIG: Clarify documentation of SWIG_OUTFILE_DIR The `SWIG_OUTFILE_DIR` variable provides the option to specify an output directory location. This commit removes portion stating that this is equal to the `swig -o` option since it does not set the output filename. Fixes: #17703 Signed-off-by: Noel Eck diff --git a/Modules/UseSWIG.cmake b/Modules/UseSWIG.cmake index 9a6d046..b38e2b7 100644 --- a/Modules/UseSWIG.cmake +++ b/Modules/UseSWIG.cmake @@ -59,8 +59,8 @@ Some variables can be set to specify special behavior of SWIG: Specify where to write the language specific files (swig ``-outdir`` option). ``SWIG_OUTFILE_DIR`` - Specify where to write the output file (swig ``-o`` option). - If not specified, ``CMAKE_SWIG_OUTDIR`` is used. + Specify an output directory name where the generated source file will be + placed. If not specified, ``CMAKE_SWIG_OUTDIR`` is used. ``SWIG_MODULE__EXTRA_DEPS`` Specify extra dependencies for the generated module for ````. https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=315b0927e951019b43714f654f7b039b32ae14a9 commit 315b0927e951019b43714f654f7b039b32ae14a9 Author: Brad King AuthorDate: Wed Jan 31 14:09:19 2018 -0500 Commit: Brad King CommitDate: Wed Jan 31 14:20:17 2018 -0500 UseSWIG: Improve documentation markup diff --git a/Modules/UseSWIG.cmake b/Modules/UseSWIG.cmake index 91f9cf7..9a6d046 100644 --- a/Modules/UseSWIG.cmake +++ b/Modules/UseSWIG.cmake @@ -7,52 +7,63 @@ UseSWIG Defines the following macros for use with SWIG: -:: +.. command:: swig_add_library - SWIG_ADD_LIBRARY( - [TYPE ] - LANGUAGE - SOURCES ... - ) - - Define swig module with given name and specified language - SWIG_LINK_LIBRARIES(name [ libraries ]) - - Link libraries to swig module + Define swig module with given name and specified language:: -Source files properties on module files can be set before the invocation -of the SWIG_ADD_LIBRARY macro to specify special behavior of SWIG. + swig_add_library( + [TYPE ] + LANGUAGE + SOURCES ... + ) -The source file property CPLUSPLUS calls SWIG in c++ mode, e.g.:: + The variable ``SWIG_MODULE__REAL_NAME`` will be set to the name + of the swig module target library. - set_property(SOURCE mymod.i PROPERTY CPLUSPLUS ON) - swig_add_library(mymod LANGUAGE python SOURCES mymod.i) +.. command:: swig_link_libraries -The source file property SWIG_FLAGS adds custom flags to the SWIG executable. + Link libraries to swig module:: -The source-file property SWIG_MODULE_NAME have to be provided to specify the actual -import name of the module in the target language if it cannot be scanned automatically -from source or different from the module file basename.:: + swig_link_libraries( [ libraries ]) - set_property(SOURCE mymod.i PROPERTY SWIG_MODULE_NAME mymod_realname) +Source file properties on module files can be set before the invocation +of the ``swig_add_library`` macro to specify special behavior of SWIG: -To get the name of the swig module target library, use: ${SWIG_MODULE_${name}_REAL_NAME}. +``CPLUSPLUS`` + Call SWIG in c++ mode. For example: -Also some variables can be set to specify special behavior of SWIG. + .. code-block:: cmake -CMAKE_SWIG_FLAGS can be used to add special flags to all swig calls. + set_property(SOURCE mymod.i PROPERTY CPLUSPLUS ON) + swig_add_library(mymod LANGUAGE python SOURCES mymod.i) -CMAKE_SWIG_OUTDIR allows one to specify where to write -the language specific files (swig -outdir option). +``SWIG_FLAGS`` + Add custom flags to the SWIG executable. -SWIG_OUTFILE_DIR allows one to specify where to write the output file -(swig -o option). If not specified, CMAKE_SWIG_OUTDIR is used. -The name-specific variable SWIG_MODULE__EXTRA_DEPS may be used to specify extra -dependencies for the generated modules. +``SWIG_MODULE_NAME`` + Specify the actual import name of the module in the target language. + This is required if it cannot be scanned automatically from source + or different from the module file basename. For example: -If the source file generated by swig need some special flag you can use:: + .. code-block:: cmake - set_source_files_properties( ${swig_generated_file_fullname} - PROPERTIES COMPILE_FLAGS "-bla") + set_property(SOURCE mymod.i PROPERTY SWIG_MODULE_NAME mymod_realname) + +Some variables can be set to specify special behavior of SWIG: + +``CMAKE_SWIG_FLAGS`` + Add flags to all swig calls. + +``CMAKE_SWIG_OUTDIR`` + Specify where to write the language specific files (swig ``-outdir`` option). + +``SWIG_OUTFILE_DIR`` + Specify where to write the output file (swig ``-o`` option). + If not specified, ``CMAKE_SWIG_OUTDIR`` is used. + +``SWIG_MODULE__EXTRA_DEPS`` + Specify extra dependencies for the generated module for ````. #]=======================================================================] set(SWIG_CXX_EXTENSION "cxx") https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ce130c7a6bce84a9af3859c6f58a8d6c9f16afc7 commit ce130c7a6bce84a9af3859c6f58a8d6c9f16afc7 Author: Brad King AuthorDate: Wed Jan 31 13:55:22 2018 -0500 Commit: Brad King CommitDate: Wed Jan 31 13:55:22 2018 -0500 UseSWIG: Convert docs to a bracket comment diff --git a/Modules/UseSWIG.cmake b/Modules/UseSWIG.cmake index b8bcd92..91f9cf7 100644 --- a/Modules/UseSWIG.cmake +++ b/Modules/UseSWIG.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: -# UseSWIG -# ------- -# -# Defines the following macros for use with SWIG: -# -# :: -# -# SWIG_ADD_LIBRARY( -# [TYPE ] -# LANGUAGE -# SOURCES ... -# ) -# - Define swig module with given name and specified language -# SWIG_LINK_LIBRARIES(name [ libraries ]) -# - Link libraries to swig module -# -# Source files properties on module files can be set before the invocation -# of the SWIG_ADD_LIBRARY macro to specify special behavior of SWIG. -# -# The source file property CPLUSPLUS calls SWIG in c++ mode, e.g.:: -# -# set_property(SOURCE mymod.i PROPERTY CPLUSPLUS ON) -# swig_add_library(mymod LANGUAGE python SOURCES mymod.i) -# -# The source file property SWIG_FLAGS adds custom flags to the SWIG executable. -# -# The source-file property SWIG_MODULE_NAME have to be provided to specify the actual -# import name of the module in the target language if it cannot be scanned automatically -# from source or different from the module file basename.:: -# -# set_property(SOURCE mymod.i PROPERTY SWIG_MODULE_NAME mymod_realname) -# -# To get the name of the swig module target library, use: ${SWIG_MODULE_${name}_REAL_NAME}. -# -# Also some variables can be set to specify special behavior of SWIG. -# -# CMAKE_SWIG_FLAGS can be used to add special flags to all swig calls. -# -# CMAKE_SWIG_OUTDIR allows one to specify where to write -# the language specific files (swig -outdir option). -# -# SWIG_OUTFILE_DIR allows one to specify where to write the output file -# (swig -o option). If not specified, CMAKE_SWIG_OUTDIR is used. -# -# The name-specific variable SWIG_MODULE__EXTRA_DEPS may be used to specify extra -# dependencies for the generated modules. -# -# If the source file generated by swig need some special flag you can use:: -# -# set_source_files_properties( ${swig_generated_file_fullname} -# PROPERTIES COMPILE_FLAGS "-bla") +#[=======================================================================[.rst: +UseSWIG +------- + +Defines the following macros for use with SWIG: + +:: + + SWIG_ADD_LIBRARY( + [TYPE ] + LANGUAGE + SOURCES ... + ) + - Define swig module with given name and specified language + SWIG_LINK_LIBRARIES(name [ libraries ]) + - Link libraries to swig module + +Source files properties on module files can be set before the invocation +of the SWIG_ADD_LIBRARY macro to specify special behavior of SWIG. + +The source file property CPLUSPLUS calls SWIG in c++ mode, e.g.:: + + set_property(SOURCE mymod.i PROPERTY CPLUSPLUS ON) + swig_add_library(mymod LANGUAGE python SOURCES mymod.i) + +The source file property SWIG_FLAGS adds custom flags to the SWIG executable. + +The source-file property SWIG_MODULE_NAME have to be provided to specify the actual +import name of the module in the target language if it cannot be scanned automatically +from source or different from the module file basename.:: + + set_property(SOURCE mymod.i PROPERTY SWIG_MODULE_NAME mymod_realname) + +To get the name of the swig module target library, use: ${SWIG_MODULE_${name}_REAL_NAME}. + +Also some variables can be set to specify special behavior of SWIG. + +CMAKE_SWIG_FLAGS can be used to add special flags to all swig calls. + +CMAKE_SWIG_OUTDIR allows one to specify where to write +the language specific files (swig -outdir option). + +SWIG_OUTFILE_DIR allows one to specify where to write the output file +(swig -o option). If not specified, CMAKE_SWIG_OUTDIR is used. + +The name-specific variable SWIG_MODULE__EXTRA_DEPS may be used to specify extra +dependencies for the generated modules. + +If the source file generated by swig need some special flag you can use:: + + set_source_files_properties( ${swig_generated_file_fullname} + PROPERTIES COMPILE_FLAGS "-bla") +#]=======================================================================] set(SWIG_CXX_EXTENSION "cxx") set(SWIG_EXTRA_LIBRARIES "") https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0def36043f339210d117825a7149fc58c2907cae commit 0def36043f339210d117825a7149fc58c2907cae Author: Christian Pfeiffer AuthorDate: Wed Jan 31 17:43:30 2018 +0100 Commit: Christian Pfeiffer CommitDate: Wed Jan 31 17:43:30 2018 +0100 FindMPI: Discard IMPI boilerplate text Intel MPI on Windows prefixes all outputs with some boilerplate copyright text. By discarding it, we should prevent any potential clashes with our regex parsing. diff --git a/Modules/FindMPI.cmake b/Modules/FindMPI.cmake index 78e1040..4bfbf03 100644 --- a/Modules/FindMPI.cmake +++ b/Modules/FindMPI.cmake @@ -521,6 +521,10 @@ function (_MPI_interrogate_compiler LANG) # We'll normalize this to the - syntax we use for CMake purposes anyways. if(MSVC) foreach(_MPI_VARIABLE IN ITEMS COMPILE LINK) + # The Intel MPI wrappers on Windows prefix their output with some copyright boilerplate. + # To prevent possible problems, we discard this text before proceeding with any further matching. + string(REGEX REPLACE "^[^ ]+ for the Intel\\(R\\) MPI Library [^\n]+ for Windows\\*\nCopyright\\(C\\) [^\n]+, Intel Corporation\\. All rights reserved\\.\n\n" "" + MPI_${_MPI_VARIABLE}_CMDLINE "${MPI_${_MPI_VARIABLE}_CMDLINE}") string(REGEX REPLACE "(^| )/" "\\1-" MPI_${_MPI_VARIABLE}_CMDLINE "${MPI_${_MPI_VARIABLE}_CMDLINE}") string(REPLACE "-libpath:" "-LIBPATH:" MPI_${_MPI_VARIABLE}_CMDLINE "${MPI_${_MPI_VARIABLE}_CMDLINE}") endforeach() https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9ecbec5e01951e288a405deaba39a41a133fda0a commit 9ecbec5e01951e288a405deaba39a41a133fda0a Author: Christian Pfeiffer AuthorDate: Tue Jan 30 16:51:26 2018 +0100 Commit: Christian Pfeiffer CommitDate: Wed Jan 31 17:27:38 2018 +0100 FindMPI: Support for IMPI's compiler check Intel MPI has an optional feature to check compatibility with the compiler, given by I_MPI_CHECK_COMPILER. This commit adds support for executing that check. diff --git a/Modules/FindMPI.cmake b/Modules/FindMPI.cmake index 3d2397d..78e1040 100644 --- a/Modules/FindMPI.cmake +++ b/Modules/FindMPI.cmake @@ -458,6 +458,33 @@ function (_MPI_interrogate_compiler LANG) _MPI_check_compiler(${LANG} "-showme" MPI_COMPILE_CMDLINE MPI_COMPILER_RETURN) endif() + if (MPI_COMPILER_RETURN EQUAL 0 AND DEFINED MPI_COMPILE_CMDLINE) + # Intel MPI can be run with -compchk or I_MPI_CHECK_COMPILER set to 1. + # In this case, -show will be prepended with a line to the compiler checker. This is a script that performs + # compatibility checks and returns a non-zero exit code together with an error if something fails. + # It has to be called as "compchk.sh ". Here, is one out of 32 (i686), 64 (ia64) or 32e (x86_64). + # The compiler is identified by filename, and can be either the MPI compiler or the underlying compiler. + # NOTE: It is vital to run this script while the environment variables are set up, otherwise it can check the wrong compiler. + if("${MPI_COMPILE_CMDLINE}" MATCHES "^([^\" ]+/compchk.sh|\"[^\"]+/compchk.sh\") +([^ ]+)") + # Now CMAKE_MATCH_1 contains the path to the compchk.sh file and CMAKE_MATCH_2 the architecture flag. + unset(COMPILER_CHECKER_OUTPUT) + execute_process( + COMMAND ${CMAKE_MATCH_1} ${CMAKE_MATCH_2} ${MPI_${LANG}_COMPILER} + OUTPUT_VARIABLE COMPILER_CHECKER_OUTPUT OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_VARIABLE COMPILER_CHECKER_OUTPUT ERROR_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE MPI_COMPILER_RETURN) + # If it returned a non-zero value, the check below will fail and cause the interrogation to be aborted. + if(NOT MPI_COMPILER_RETURN EQUAL 0) + if(NOT MPI_FIND_QUIETLY) + message(STATUS "Intel MPI compiler check failed: ${COMPILER_CHECKER_OUTPUT}") + endif() + else() + # Since the check passed, we can remove the compchk.sh script. + string(REGEX REPLACE "^([^\" ]+|\"[^\"]+\")/compchk.sh.*\n" "" MPI_COMPILE_CMDLINE "${MPI_COMPILE_CMDLINE}") + endif() + endif() + endif() + # Revert changes to the environment made previously if("${LANG}" STREQUAL "C") _MPI_env_unset_ifnot(I_MPI_CC) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=767553674ed025351c8ce6fd68511a6d28cf0c95 commit 767553674ed025351c8ce6fd68511a6d28cf0c95 Author: Christian Pfeiffer AuthorDate: Thu Jan 25 17:27:02 2018 +0100 Commit: Christian Pfeiffer CommitDate: Wed Jan 31 17:27:37 2018 +0100 FindMPI: Set up environment variables for wrapper For MPICH derivates and Intel MPI, we can improve the compiler wrapper behavior and accuracy by defining certain environment variables if they haven't been set otherwise. diff --git a/Modules/FindMPI.cmake b/Modules/FindMPI.cmake index c644815..3d2397d 100644 --- a/Modules/FindMPI.cmake +++ b/Modules/FindMPI.cmake @@ -357,6 +357,21 @@ function (_MPI_check_compiler LANG QUERY_FLAG OUTPUT_VARIABLE RESULT_VARIABLE) set(${RESULT_VARIABLE} "${WRAPPER_RETURN}" PARENT_SCOPE) endfunction() +macro(_MPI_env_set_ifnot VAR VALUE) + if(NOT DEFINED ENV{${VAR}}) + set(_MPI_${VAR}_WAS_SET FALSE) + set(ENV{${VAR}} ${${VALUE}}) + else() + set(_MPI_${VAR}_WAS_SET TRUE) + endif() +endmacro() + +macro(_MPI_env_unset_ifnot VAR) + if(NOT _MPI_${VAR}_WAS_SET) + unset(ENV{${VAR}}) + endif() +endmacro() + function (_MPI_interrogate_compiler LANG) unset(MPI_COMPILE_CMDLINE) unset(MPI_LINK_CMDLINE) @@ -368,6 +383,41 @@ function (_MPI_interrogate_compiler LANG) unset(MPI_LIB_NAMES_WORK) unset(MPI_LIB_FULLPATHS_WORK) + # Define the MPICH and Intel MPI compiler variables to the compilers set in CMake. + # It's possible to have a per-compiler configuration in these MPI implementations and + # a particular MPICH derivate might check compiler interoperability. + # Intel MPI in particular does this with I_MPI_CHECK_COMPILER. + file(TO_NATIVE_PATH "${CMAKE_${LANG}_COMPILER}" _MPI_UNDERLAYING_COMPILER) + # On Windows, the Intel MPI batch scripts can only work with filnames - Full paths will break them. + # Due to the lack of other MPICH-based wrappers for Visual C++, we may treat this as default. + if(MSVC) + get_filename_component(_MPI_UNDERLAYING_COMPILER "${_MPI_UNDERLAYING_COMPILER}" NAME) + endif() + if("${LANG}" STREQUAL "C") + _MPI_env_set_ifnot(I_MPI_CC _MPI_UNDERLAYING_COMPILER) + _MPI_env_set_ifnot(MPICH_CC _MPI_UNDERLAYING_COMPILER) + elseif("${LANG}" STREQUAL "CXX") + _MPI_env_set_ifnot(I_MPI_CXX _MPI_UNDERLAYING_COMPILER) + _MPI_env_set_ifnot(MPICH_CXX _MPI_UNDERLAYING_COMPILER) + elseif("${LANG}" STREQUAL "Fortran") + _MPI_env_set_ifnot(I_MPI_FC _MPI_UNDERLAYING_COMPILER) + _MPI_env_set_ifnot(MPICH_FC _MPI_UNDERLAYING_COMPILER) + _MPI_env_set_ifnot(I_MPI_F77 _MPI_UNDERLAYING_COMPILER) + _MPI_env_set_ifnot(MPICH_F77 _MPI_UNDERLAYING_COMPILER) + _MPI_env_set_ifnot(I_MPI_F90 _MPI_UNDERLAYING_COMPILER) + _MPI_env_set_ifnot(MPICH_F90 _MPI_UNDERLAYING_COMPILER) + endif() + + # Set these two variables for Intel MPI: + # - I_MPI_DEBUG_INFO_STRIP: It adds 'objcopy' lines to the compiler output. We support stripping them + # (see below), but if we can avoid them in the first place, we should. + # - I_MPI_FORT_BIND: By default Intel MPI makes the C/C++ compiler wrappers link Fortran bindings. + # This is so that mixed-language code doesn't require additional libraries when linking with mpicc. + # For our purposes, this makes little sense, since correct MPI usage from CMake already circumvenes this. + set(_MPI_ENV_VALUE "disable") + _MPI_env_set_ifnot(I_MPI_DEBUG_INFO_STRIP _MPI_ENV_VALUE) + _MPI_env_set_ifnot(I_MPI_FORT_BIND _MPI_ENV_VALUE) + # Check whether the -showme:compile option works. This indicates that we have either Open MPI # or a newer version of LAM/MPI, and implies that -showme:link will also work. # Open MPI also supports -show, but separates linker and compiler information @@ -408,6 +458,25 @@ function (_MPI_interrogate_compiler LANG) _MPI_check_compiler(${LANG} "-showme" MPI_COMPILE_CMDLINE MPI_COMPILER_RETURN) endif() + # Revert changes to the environment made previously + if("${LANG}" STREQUAL "C") + _MPI_env_unset_ifnot(I_MPI_CC) + _MPI_env_unset_ifnot(MPICH_CC) + elseif("${LANG}" STREQUAL "CXX") + _MPI_env_unset_ifnot(I_MPI_CXX) + _MPI_env_unset_ifnot(MPICH_CXX) + elseif("${LANG}" STREQUAL "Fortran") + _MPI_env_unset_ifnot(I_MPI_FC) + _MPI_env_unset_ifnot(MPICH_FC) + _MPI_env_unset_ifnot(I_MPI_F77) + _MPI_env_unset_ifnot(MPICH_F77) + _MPI_env_unset_ifnot(I_MPI_F90) + _MPI_env_unset_ifnot(MPICH_F90) + endif() + + _MPI_env_unset_ifnot(I_MPI_DEBUG_INFO_STRIP) + _MPI_env_unset_ifnot(I_MPI_FORT_BIND) + if (NOT (MPI_COMPILER_RETURN EQUAL 0) OR NOT (DEFINED MPI_COMPILE_CMDLINE)) # Cannot interrogate this compiler, so exit. set(MPI_${LANG}_WRAPPER_FOUND FALSE PARENT_SCOPE) @@ -424,7 +493,6 @@ function (_MPI_interrogate_compiler LANG) # Visual Studio parsers permit each flag prefixed by either / or -. # We'll normalize this to the - syntax we use for CMake purposes anyways. if(MSVC) - string(TOLOWER) foreach(_MPI_VARIABLE IN ITEMS COMPILE LINK) string(REGEX REPLACE "(^| )/" "\\1-" MPI_${_MPI_VARIABLE}_CMDLINE "${MPI_${_MPI_VARIABLE}_CMDLINE}") string(REPLACE "-libpath:" "-LIBPATH:" MPI_${_MPI_VARIABLE}_CMDLINE "${MPI_${_MPI_VARIABLE}_CMDLINE}") @@ -483,7 +551,7 @@ function (_MPI_interrogate_compiler LANG) # we won't match the accompanying --param-ssp-size and -Wp,-D_FORTIFY_SOURCE flags and therefore # produce inconsistent results with the regularly flags. # Similarly, aliasing flags do not belong into our flag array. - if(NOT "${_MPI_COMPILE_OPTION}" MATCHES "^-f(stack-protector|(no-|)strict-aliasing|PI[CE]|pi[ce])") + if(NOT "${_MPI_COMPILE_OPTION}" MATCHES "^-f((no-|)(stack-protector|strict-aliasing)|PI[CE]|pi[ce])") list(APPEND MPI_COMPILE_OPTIONS_WORK "${_MPI_COMPILE_OPTION}") endif() endforeach() @@ -515,6 +583,8 @@ function (_MPI_interrogate_compiler LANG) MPI_ALL_INCLUDE_PATHS "${MPI_COMPILE_CMDLINE}") # If extracting failed to work, we'll try using -showme:incdirs. + # Unlike before, we do this without the environment variables set up, but since only MPICH derivates are affected by any of them, and + # -showme:... is only supported by Open MPI and LAM/MPI, this isn't a concern. if (NOT MPI_ALL_INCLUDE_PATHS) _MPI_check_compiler(${LANG} "-showme:incdirs" MPI_INCDIRS_CMDLINE MPI_INCDIRS_COMPILER_RETURN) if(MPI_INCDIRS_COMPILER_RETURN) @@ -666,10 +736,15 @@ function (_MPI_interrogate_compiler LANG) # Add the link directories given explicitly that we haven't used back as linker directories. foreach(_MPI_LINK_DIRECTORY IN LISTS MPI_LINK_DIRECTORIES_LEFTOVER) + file(TO_NATIVE_PATH "${_MPI_LINK_DIRECTORY}" _MPI_LINK_DIRECTORY_ACTUAL) + string(FIND "${_MPI_LINK_DIRECTORY_ACTUAL}" " " _MPI_LINK_DIRECTORY_CONTAINS_SPACE) + if(NOT _MPI_LINK_DIRECTORY_CONTAINS_SPACE EQUAL -1) + set(_MPI_LINK_DIRECTORY_ACTUAL "\"${_MPI_LINK_DIRECTORY_ACTUAL}\"") + endif() if(MPI_LINK_FLAGS_WORK) - string(APPEND MPI_LINK_FLAGS_WORK " ${CMAKE_LIBRARY_PATH_FLAG}${_MPI_LINK_DIRECTORY}") + string(APPEND MPI_LINK_FLAGS_WORK " ${CMAKE_LIBRARY_PATH_FLAG}${_MPI_LINK_DIRECTORY_ACTUAL}") else() - set(MPI_LINK_FLAGS_WORK "${CMAKE_LIBRARY_PATH_FLAG}${_MPI_LINK_DIRECTORY}") + set(MPI_LINK_FLAGS_WORK "${CMAKE_LIBRARY_PATH_FLAG}${_MPI_LINK_DIRECTORY_ACTUAL}") endif() endforeach() @@ -1204,7 +1279,7 @@ if(NOT MPI_IGNORE_LEGACY_VARIABLES) if(MPI_${LANG}_COMPILE_FLAGS) separate_arguments(MPI_SEPARATE_FLAGS NATIVE_COMMAND "${MPI_${LANG}_COMPILE_FLAGS}") foreach(_MPI_FLAG IN LISTS MPI_SEPARATE_FLAGS) - if("${_MPI_FLAG}" MATCHES "^ *[-/D]([^ ]+)") + if("${_MPI_FLAG}" MATCHES "^ *-D([^ ]+)") list(APPEND MPI_${LANG}_EXTRA_COMPILE_DEFINITIONS "${CMAKE_MATCH_1}") else() list(APPEND MPI_${LANG}_EXTRA_COMPILE_OPTIONS "${_MPI_FLAG}") https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=901c4a1e05ae7d01dcf4208dfd1b11e1534d4895 commit 901c4a1e05ae7d01dcf4208dfd1b11e1534d4895 Author: Ben Boeckel AuthorDate: Wed Jan 24 07:57:57 2018 -0500 Commit: Brad King CommitDate: Wed Jan 31 11:04:36 2018 -0500 cmExpandedCommandArgument: add an overload for const char* Static string comparisons were causing heap allocations just for a comparison. diff --git a/Source/cmExpandedCommandArgument.cxx b/Source/cmExpandedCommandArgument.cxx index 0bea65f..1c0a721 100644 --- a/Source/cmExpandedCommandArgument.cxx +++ b/Source/cmExpandedCommandArgument.cxx @@ -24,6 +24,11 @@ bool cmExpandedCommandArgument::WasQuoted() const return this->Quoted; } +bool cmExpandedCommandArgument::operator==(const char* value) const +{ + return this->Value == value; +} + bool cmExpandedCommandArgument::operator==(std::string const& value) const { return this->Value == value; diff --git a/Source/cmExpandedCommandArgument.h b/Source/cmExpandedCommandArgument.h index fe86528..302e8db 100644 --- a/Source/cmExpandedCommandArgument.h +++ b/Source/cmExpandedCommandArgument.h @@ -24,6 +24,7 @@ public: bool WasQuoted() const; + bool operator==(const char* value) const; bool operator==(std::string const& value) const; bool empty() const; https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=88ed556d99068a5e1bf303e69a156a25fb985bcf commit 88ed556d99068a5e1bf303e69a156a25fb985bcf Author: Ben Boeckel AuthorDate: Wed Jan 24 07:58:21 2018 -0500 Commit: Brad King CommitDate: Wed Jan 31 11:04:36 2018 -0500 cmGeneratorTarget: make keyword strings const diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index ef3dc10..449b0c5 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -3616,13 +3616,13 @@ void cmGeneratorTarget::CheckPropertyCompatibility( const cmComputeLinkInformation::ItemVector& deps = info->GetItems(); std::set emittedBools; - static std::string strBool = "COMPATIBLE_INTERFACE_BOOL"; + static const std::string strBool = "COMPATIBLE_INTERFACE_BOOL"; std::set emittedStrings; - static std::string strString = "COMPATIBLE_INTERFACE_STRING"; + static const std::string strString = "COMPATIBLE_INTERFACE_STRING"; std::set emittedMinNumbers; - static std::string strNumMin = "COMPATIBLE_INTERFACE_NUMBER_MIN"; + static const std::string strNumMin = "COMPATIBLE_INTERFACE_NUMBER_MIN"; std::set emittedMaxNumbers; - static std::string strNumMax = "COMPATIBLE_INTERFACE_NUMBER_MAX"; + static const std::string strNumMax = "COMPATIBLE_INTERFACE_NUMBER_MAX"; for (auto const& dep : deps) { if (!dep.Target) { https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=14a13d30eefd657e56022d30d8976cfdfaf9ab06 commit 14a13d30eefd657e56022d30d8976cfdfaf9ab06 Author: Ben Boeckel AuthorDate: Tue Jan 23 19:31:17 2018 -0500 Commit: Brad King CommitDate: Wed Jan 31 11:04:36 2018 -0500 cmGeneratorExpressionLexer: only tokenize strings with a '$' In standard libraries, `std::string::find` is usually implemented using vectorized code. Since the Tokenize method iterates character-by-character, doing an initial check using `find` improves performance. diff --git a/Source/cmGeneratorExpressionLexer.cxx b/Source/cmGeneratorExpressionLexer.cxx index 95c79c1..e37f165 100644 --- a/Source/cmGeneratorExpressionLexer.cxx +++ b/Source/cmGeneratorExpressionLexer.cxx @@ -21,6 +21,12 @@ std::vector cmGeneratorExpressionLexer::Tokenize( { std::vector result; + if (input.find('$') == std::string::npos) { + result.push_back(cmGeneratorExpressionToken( + cmGeneratorExpressionToken::Text, input.c_str(), input.size())); + return result; + } + const char* c = input.c_str(); const char* upto = c; https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f2b8d67f1946bc59e95d1184f7ad64ac16193466 commit f2b8d67f1946bc59e95d1184f7ad64ac16193466 Author: Ben Boeckel AuthorDate: Tue Jan 23 18:31:15 2018 -0500 Commit: Brad King CommitDate: Wed Jan 31 11:04:35 2018 -0500 cmTarget: use static strings for special property names Similar to 660769151a7f628f92eb28d77bcae854eaae54c2, the `SetProperty` side is showing up in performance listings due to string comparisons. diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 33437a1..cd11c4b 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -861,39 +861,53 @@ void cmTarget::SetProperty(const std::string& prop, const char* value) this->Makefile->GetBacktrace())) { return; } - if (prop == "MANUALLY_ADDED_DEPENDENCIES") { +#define MAKE_STATIC_PROP(PROP) static const std::string prop##PROP = #PROP + MAKE_STATIC_PROP(COMPILE_DEFINITIONS); + MAKE_STATIC_PROP(COMPILE_FEATURES); + MAKE_STATIC_PROP(COMPILE_OPTIONS); + MAKE_STATIC_PROP(CUDA_PTX_COMPILATION); + MAKE_STATIC_PROP(EXPORT_NAME); + MAKE_STATIC_PROP(IMPORTED_GLOBAL); + MAKE_STATIC_PROP(INCLUDE_DIRECTORIES); + MAKE_STATIC_PROP(LINK_LIBRARIES); + MAKE_STATIC_PROP(MANUALLY_ADDED_DEPENDENCIES); + MAKE_STATIC_PROP(NAME); + MAKE_STATIC_PROP(SOURCES); + MAKE_STATIC_PROP(TYPE); +#undef MAKE_STATIC_PROP + if (prop == propMANUALLY_ADDED_DEPENDENCIES) { std::ostringstream e; e << "MANUALLY_ADDED_DEPENDENCIES property is read-only\n"; this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); return; } - if (prop == "NAME") { + if (prop == propNAME) { std::ostringstream e; e << "NAME property is read-only\n"; this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); return; } - if (prop == "TYPE") { + if (prop == propTYPE) { std::ostringstream e; e << "TYPE property is read-only\n"; this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); return; } - if (prop == "EXPORT_NAME" && this->IsImported()) { + if (prop == propEXPORT_NAME && this->IsImported()) { std::ostringstream e; e << "EXPORT_NAME property can't be set on imported targets (\"" << this->Name << "\")\n"; this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); return; } - if (prop == "SOURCES" && this->IsImported()) { + if (prop == propSOURCES && this->IsImported()) { std::ostringstream e; e << "SOURCES property can't be set on imported targets (\"" << this->Name << "\")\n"; this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); return; } - if (prop == "IMPORTED_GLOBAL" && !this->IsImported()) { + if (prop == propIMPORTED_GLOBAL && !this->IsImported()) { std::ostringstream e; e << "IMPORTED_GLOBAL property can't be set on non-imported targets (\"" << this->Name << "\")\n"; @@ -901,7 +915,7 @@ void cmTarget::SetProperty(const std::string& prop, const char* value) return; } - if (prop == "INCLUDE_DIRECTORIES") { + if (prop == propINCLUDE_DIRECTORIES) { this->Internal->IncludeDirectoriesEntries.clear(); this->Internal->IncludeDirectoriesBacktraces.clear(); if (value) { @@ -909,7 +923,7 @@ void cmTarget::SetProperty(const std::string& prop, const char* value) cmListFileBacktrace lfbt = this->Makefile->GetBacktrace(); this->Internal->IncludeDirectoriesBacktraces.push_back(lfbt); } - } else if (prop == "COMPILE_OPTIONS") { + } else if (prop == propCOMPILE_OPTIONS) { this->Internal->CompileOptionsEntries.clear(); this->Internal->CompileOptionsBacktraces.clear(); if (value) { @@ -917,7 +931,7 @@ void cmTarget::SetProperty(const std::string& prop, const char* value) cmListFileBacktrace lfbt = this->Makefile->GetBacktrace(); this->Internal->CompileOptionsBacktraces.push_back(lfbt); } - } else if (prop == "COMPILE_FEATURES") { + } else if (prop == propCOMPILE_FEATURES) { this->Internal->CompileFeaturesEntries.clear(); this->Internal->CompileFeaturesBacktraces.clear(); if (value) { @@ -925,7 +939,7 @@ void cmTarget::SetProperty(const std::string& prop, const char* value) cmListFileBacktrace lfbt = this->Makefile->GetBacktrace(); this->Internal->CompileFeaturesBacktraces.push_back(lfbt); } - } else if (prop == "COMPILE_DEFINITIONS") { + } else if (prop == propCOMPILE_DEFINITIONS) { this->Internal->CompileDefinitionsEntries.clear(); this->Internal->CompileDefinitionsBacktraces.clear(); if (value) { @@ -933,7 +947,7 @@ void cmTarget::SetProperty(const std::string& prop, const char* value) cmListFileBacktrace lfbt = this->Makefile->GetBacktrace(); this->Internal->CompileDefinitionsBacktraces.push_back(lfbt); } - } else if (prop == "LINK_LIBRARIES") { + } else if (prop == propLINK_LIBRARIES) { this->Internal->LinkImplementationPropertyEntries.clear(); this->Internal->LinkImplementationPropertyBacktraces.clear(); if (value) { @@ -941,7 +955,7 @@ void cmTarget::SetProperty(const std::string& prop, const char* value) this->Internal->LinkImplementationPropertyEntries.push_back(value); this->Internal->LinkImplementationPropertyBacktraces.push_back(lfbt); } - } else if (prop == "SOURCES") { + } else if (prop == propSOURCES) { this->Internal->SourceEntries.clear(); this->Internal->SourceBacktraces.clear(); if (value) { @@ -949,7 +963,7 @@ void cmTarget::SetProperty(const std::string& prop, const char* value) this->Internal->SourceEntries.push_back(value); this->Internal->SourceBacktraces.push_back(lfbt); } - } else if (prop == "IMPORTED_GLOBAL") { + } else if (prop == propIMPORTED_GLOBAL) { if (!cmSystemTools::IsOn(value)) { std::ostringstream e; e << "IMPORTED_GLOBAL property can't be set to FALSE on targets (\"" @@ -965,7 +979,7 @@ void cmTarget::SetProperty(const std::string& prop, const char* value) } else if (cmHasLiteralPrefix(prop, "IMPORTED_LIBNAME") && !this->CheckImportedLibName(prop, value ? value : "")) { /* error was reported by check method */ - } else if (prop == "CUDA_PTX_COMPILATION" && + } else if (prop == propCUDA_PTX_COMPILATION && this->GetType() != cmStateEnums::OBJECT_LIBRARY) { std::ostringstream e; e << "CUDA_PTX_COMPILATION property can only be applied to OBJECT " https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6dfd0f929416dbdf50ca44ebe19418e8a45782ad commit 6dfd0f929416dbdf50ca44ebe19418e8a45782ad Author: Ben Boeckel AuthorDate: Tue Jan 23 18:30:44 2018 -0500 Commit: Brad King CommitDate: Wed Jan 31 11:04:35 2018 -0500 cmGeneratorExpressionNode: avoid some strlen in $ diff --git a/Source/cmGeneratorExpressionNode.cxx b/Source/cmGeneratorExpressionNode.cxx index 34ef45f..5e3e810 100644 --- a/Source/cmGeneratorExpressionNode.cxx +++ b/Source/cmGeneratorExpressionNode.cxx @@ -947,7 +947,8 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode "Target name not supported."); return std::string(); } - if (propertyName == "ALIASED_TARGET") { + static const std::string propALIASED_TARGET = "ALIASED_TARGET"; + if (propertyName == propALIASED_TARGET) { if (context->LG->GetMakefile()->IsAlias(targetName)) { if (cmGeneratorTarget* tgt = context->LG->FindGeneratorTargetToUse(targetName)) { https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f9235fd474682ba95231de0bc7285a39e35db83f commit f9235fd474682ba95231de0bc7285a39e35db83f Author: Ben Boeckel AuthorDate: Tue Jan 23 18:30:26 2018 -0500 Commit: Brad King CommitDate: Wed Jan 31 11:04:35 2018 -0500 cmAddCustomCommandCommand: use std::string const& for FileIsFullPath diff --git a/Source/cmAddCustomCommandCommand.cxx b/Source/cmAddCustomCommandCommand.cxx index 3186583..6db50fa 100644 --- a/Source/cmAddCustomCommandCommand.cxx +++ b/Source/cmAddCustomCommandCommand.cxx @@ -177,7 +177,7 @@ bool cmAddCustomCommandCommand::InitialPass( case doing_output: case doing_outputs: case doing_byproducts: - if (!cmSystemTools::FileIsFullPath(copy.c_str())) { + if (!cmSystemTools::FileIsFullPath(copy)) { // This is an output to be generated, so it should be // under the build tree. CMake 2.4 placed this under the // source tree. However the only case that this change https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c0e7a137025789c41349ae0935609e7bd083587a commit c0e7a137025789c41349ae0935609e7bd083587a Author: Ben Boeckel AuthorDate: Tue Jan 23 18:29:13 2018 -0500 Commit: Brad King CommitDate: Wed Jan 31 11:03:51 2018 -0500 cmAddCustomCommandCommand: store keywords in strings Callgrind indicated that `strlen` was being called a lot of times here due to the string comparisons. Since keywords are "sparse" in `add_custom_command`, use a hash comparison to handle keywords and then use strings for comparison since they have a built-in length parameter. diff --git a/Source/cmAddCustomCommandCommand.cxx b/Source/cmAddCustomCommandCommand.cxx index 14dfdae..3186583 100644 --- a/Source/cmAddCustomCommandCommand.cxx +++ b/Source/cmAddCustomCommandCommand.cxx @@ -3,6 +3,7 @@ #include "cmAddCustomCommandCommand.h" #include +#include #include #include "cmCustomCommand.h" @@ -69,57 +70,106 @@ bool cmAddCustomCommandCommand::InitialPass( tdoing doing = doing_nothing; +#define MAKE_STATIC_KEYWORD(KEYWORD) \ + static const std::string key##KEYWORD = #KEYWORD + MAKE_STATIC_KEYWORD(APPEND); + MAKE_STATIC_KEYWORD(ARGS); + MAKE_STATIC_KEYWORD(BYPRODUCTS); + MAKE_STATIC_KEYWORD(COMMAND); + MAKE_STATIC_KEYWORD(COMMAND_EXPAND_LISTS); + MAKE_STATIC_KEYWORD(COMMENT); + MAKE_STATIC_KEYWORD(DEPENDS); + MAKE_STATIC_KEYWORD(DEPFILE); + MAKE_STATIC_KEYWORD(IMPLICIT_DEPENDS); + MAKE_STATIC_KEYWORD(MAIN_DEPENDENCY); + MAKE_STATIC_KEYWORD(OUTPUT); + MAKE_STATIC_KEYWORD(OUTPUTS); + MAKE_STATIC_KEYWORD(POST_BUILD); + MAKE_STATIC_KEYWORD(PRE_BUILD); + MAKE_STATIC_KEYWORD(PRE_LINK); + MAKE_STATIC_KEYWORD(SOURCE); + MAKE_STATIC_KEYWORD(TARGET); + MAKE_STATIC_KEYWORD(USES_TERMINAL); + MAKE_STATIC_KEYWORD(VERBATIM); + MAKE_STATIC_KEYWORD(WORKING_DIRECTORY); +#undef MAKE_STATIC_KEYWORD + static std::unordered_set keywords; + if (keywords.empty()) { + keywords.insert(keyAPPEND); + keywords.insert(keyARGS); + keywords.insert(keyBYPRODUCTS); + keywords.insert(keyCOMMAND); + keywords.insert(keyCOMMAND_EXPAND_LISTS); + keywords.insert(keyCOMMENT); + keywords.insert(keyDEPENDS); + keywords.insert(keyDEPFILE); + keywords.insert(keyIMPLICIT_DEPENDS); + keywords.insert(keyMAIN_DEPENDENCY); + keywords.insert(keyOUTPUT); + keywords.insert(keyOUTPUTS); + keywords.insert(keyPOST_BUILD); + keywords.insert(keyPRE_BUILD); + keywords.insert(keyPRE_LINK); + keywords.insert(keySOURCE); + keywords.insert(keyTARGET); + keywords.insert(keyUSES_TERMINAL); + keywords.insert(keyVERBATIM); + keywords.insert(keyWORKING_DIRECTORY); + } + for (std::string const& copy : args) { - if (copy == "SOURCE") { - doing = doing_source; - } else if (copy == "COMMAND") { - doing = doing_command; + if (keywords.count(copy)) { + if (copy == keySOURCE) { + doing = doing_source; + } else if (copy == keyCOMMAND) { + doing = doing_command; - // Save the current command before starting the next command. - if (!currentLine.empty()) { - commandLines.push_back(currentLine); - currentLine.clear(); - } - } else if (copy == "PRE_BUILD") { - cctype = cmTarget::PRE_BUILD; - } else if (copy == "PRE_LINK") { - cctype = cmTarget::PRE_LINK; - } else if (copy == "POST_BUILD") { - cctype = cmTarget::POST_BUILD; - } else if (copy == "VERBATIM") { - verbatim = true; - } else if (copy == "APPEND") { - append = true; - } else if (copy == "USES_TERMINAL") { - uses_terminal = true; - } else if (copy == "COMMAND_EXPAND_LISTS") { - command_expand_lists = true; - } else if (copy == "TARGET") { - doing = doing_target; - } else if (copy == "ARGS") { - // Ignore this old keyword. - } else if (copy == "DEPENDS") { - doing = doing_depends; - } else if (copy == "OUTPUTS") { - doing = doing_outputs; - } else if (copy == "OUTPUT") { - doing = doing_output; - } else if (copy == "BYPRODUCTS") { - doing = doing_byproducts; - } else if (copy == "WORKING_DIRECTORY") { - doing = doing_working_directory; - } else if (copy == "MAIN_DEPENDENCY") { - doing = doing_main_dependency; - } else if (copy == "IMPLICIT_DEPENDS") { - doing = doing_implicit_depends_lang; - } else if (copy == "COMMENT") { - doing = doing_comment; - } else if (copy == "DEPFILE") { - doing = doing_depfile; - if (this->Makefile->GetGlobalGenerator()->GetName() != "Ninja") { - this->SetError("Option DEPFILE not supported by " + - this->Makefile->GetGlobalGenerator()->GetName()); - return false; + // Save the current command before starting the next command. + if (!currentLine.empty()) { + commandLines.push_back(currentLine); + currentLine.clear(); + } + } else if (copy == keyPRE_BUILD) { + cctype = cmTarget::PRE_BUILD; + } else if (copy == keyPRE_LINK) { + cctype = cmTarget::PRE_LINK; + } else if (copy == keyPOST_BUILD) { + cctype = cmTarget::POST_BUILD; + } else if (copy == keyVERBATIM) { + verbatim = true; + } else if (copy == keyAPPEND) { + append = true; + } else if (copy == keyUSES_TERMINAL) { + uses_terminal = true; + } else if (copy == keyCOMMAND_EXPAND_LISTS) { + command_expand_lists = true; + } else if (copy == keyTARGET) { + doing = doing_target; + } else if (copy == keyARGS) { + // Ignore this old keyword. + } else if (copy == keyDEPENDS) { + doing = doing_depends; + } else if (copy == keyOUTPUTS) { + doing = doing_outputs; + } else if (copy == keyOUTPUT) { + doing = doing_output; + } else if (copy == keyBYPRODUCTS) { + doing = doing_byproducts; + } else if (copy == keyWORKING_DIRECTORY) { + doing = doing_working_directory; + } else if (copy == keyMAIN_DEPENDENCY) { + doing = doing_main_dependency; + } else if (copy == keyIMPLICIT_DEPENDS) { + doing = doing_implicit_depends_lang; + } else if (copy == keyCOMMENT) { + doing = doing_comment; + } else if (copy == keyDEPFILE) { + doing = doing_depfile; + if (this->Makefile->GetGlobalGenerator()->GetName() != "Ninja") { + this->SetError("Option DEPFILE not supported by " + + this->Makefile->GetGlobalGenerator()->GetName()); + return false; + } } } else { std::string filename; https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e7c0298d5c53471ffd21dac695ce5795affddfe8 commit e7c0298d5c53471ffd21dac695ce5795affddfe8 Author: Christian Pfeiffer AuthorDate: Thu Jan 25 16:43:13 2018 +0100 Commit: Christian Pfeiffer CommitDate: Tue Jan 30 18:23:45 2018 +0100 FindMPI: Retain unused link paths If our ``find_library`` step hasn't used a particular link directory at all, it's best to retain it in order to prevent issues from secondary dependencies not being found. diff --git a/Modules/FindMPI.cmake b/Modules/FindMPI.cmake index 891446e..c644815 100644 --- a/Modules/FindMPI.cmake +++ b/Modules/FindMPI.cmake @@ -606,12 +606,7 @@ function (_MPI_interrogate_compiler LANG) foreach(_MPI_LIB_NAME IN LISTS MPI_LIBNAMES) string(REGEX REPLACE "^ ?${CMAKE_LINK_LIBRARY_FLAG}" "" _MPI_LIB_NAME "${_MPI_LIB_NAME}") string(REPLACE "\"" "" _MPI_LIB_NAME "${_MPI_LIB_NAME}") - get_filename_component(_MPI_LIB_PATH "${_MPI_LIB_NAME}" DIRECTORY) - if(NOT "${_MPI_LIB_PATH}" STREQUAL "") - list(APPEND MPI_LIB_FULLPATHS_WORK "${_MPI_LIB_NAME}") - else() - list(APPEND MPI_LIB_NAMES_WORK "${_MPI_LIB_NAME}") - endif() + list(APPEND MPI_LIB_NAMES_WORK "${_MPI_LIB_NAME}") endforeach() endif() @@ -641,6 +636,9 @@ function (_MPI_interrogate_compiler LANG) endif() endforeach() + # Save the explicitly given link directories + set(MPI_LINK_DIRECTORIES_LEFTOVER "${MPI_LINK_DIRECTORIES_WORK}") + # An MPI compiler wrapper could have its MPI libraries in the implictly # linked directories of the compiler itself. if(DEFINED CMAKE_${LANG}_IMPLICIT_LINK_DIRECTORIES) @@ -659,6 +657,20 @@ function (_MPI_interrogate_compiler LANG) DOC "Location of the ${_MPI_PLAIN_LIB_NAME} library for MPI" ) mark_as_advanced(MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY) + # Remove the directory from the remainder list. + if(MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY) + get_filename_component(_MPI_TAKEN_DIRECTORY "${MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY}" DIRECTORY) + list(REMOVE_ITEM MPI_LINK_DIRECTORIES_LEFTOVER "${_MPI_TAKEN_DIRECTORY}") + endif() + endforeach() + + # Add the link directories given explicitly that we haven't used back as linker directories. + foreach(_MPI_LINK_DIRECTORY IN LISTS MPI_LINK_DIRECTORIES_LEFTOVER) + if(MPI_LINK_FLAGS_WORK) + string(APPEND MPI_LINK_FLAGS_WORK " ${CMAKE_LIBRARY_PATH_FLAG}${_MPI_LINK_DIRECTORY}") + else() + set(MPI_LINK_FLAGS_WORK "${CMAKE_LIBRARY_PATH_FLAG}${_MPI_LINK_DIRECTORY}") + endif() endforeach() # Deal with the libraries given with full path next https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8cddc89926edaf9d87c1b763749af337d30fed5f commit 8cddc89926edaf9d87c1b763749af337d30fed5f Author: Christian Pfeiffer AuthorDate: Mon Dec 18 03:33:58 2017 +0100 Commit: Christian Pfeiffer CommitDate: Tue Jan 30 18:23:45 2018 +0100 FindMPI: Use more CMake variables This replaces hardcoded expectations of flags like -l and -L with a dynamical solution based on CMake platform variables. Furthermore, the linker flag parsing is dynamified to support more forms and given linker paths are now removed properly from the linker flags. diff --git a/Modules/FindMPI.cmake b/Modules/FindMPI.cmake index bf839df..891446e 100644 --- a/Modules/FindMPI.cmake +++ b/Modules/FindMPI.cmake @@ -357,7 +357,7 @@ function (_MPI_check_compiler LANG QUERY_FLAG OUTPUT_VARIABLE RESULT_VARIABLE) set(${RESULT_VARIABLE} "${WRAPPER_RETURN}" PARENT_SCOPE) endfunction() -function (_MPI_interrogate_compiler lang) +function (_MPI_interrogate_compiler LANG) unset(MPI_COMPILE_CMDLINE) unset(MPI_LINK_CMDLINE) @@ -421,16 +421,26 @@ function (_MPI_interrogate_compiler lang) set(MPI_LINK_CMDLINE "${MPI_COMPILE_CMDLINE}") endif() + # Visual Studio parsers permit each flag prefixed by either / or -. + # We'll normalize this to the - syntax we use for CMake purposes anyways. + if(MSVC) + string(TOLOWER) + foreach(_MPI_VARIABLE IN ITEMS COMPILE LINK) + string(REGEX REPLACE "(^| )/" "\\1-" MPI_${_MPI_VARIABLE}_CMDLINE "${MPI_${_MPI_VARIABLE}_CMDLINE}") + string(REPLACE "-libpath:" "-LIBPATH:" MPI_${_MPI_VARIABLE}_CMDLINE "${MPI_${_MPI_VARIABLE}_CMDLINE}") + endforeach() + endif() + # For MSVC and cl-compatible compilers, the keyword /link indicates a point after which # everything following is passed to the linker. In this case, we drop all prior information # from the link line and treat any unknown extra flags as linker flags. set(_MPI_FILTERED_LINK_INFORMATION FALSE) if(MSVC) - if(MPI_LINK_CMDLINE MATCHES " [/-]link ") - string(REGEX REPLACE ".+[/-]link +" "" MPI_LINK_CMDLINE "${MPI_LINK_CMDLINE}") + if(MPI_LINK_CMDLINE MATCHES " -(link|LINK) ") + string(REGEX REPLACE ".+-(link|LINK) +" "" MPI_LINK_CMDLINE "${MPI_LINK_CMDLINE}") set(_MPI_FILTERED_LINK_INFORMATION TRUE) endif() - string(REGEX REPLACE " +[/-]link .+" "" MPI_COMPILE_CMDLINE "${MPI_COMPILE_CMDLINE}") + string(REGEX REPLACE " +-(link|LINK) .+" "" MPI_COMPILE_CMDLINE "${MPI_COMPILE_CMDLINE}") endif() if(UNIX) @@ -459,26 +469,41 @@ function (_MPI_interrogate_compiler lang) string(REGEX REPLACE "(^|\n)objcopy[^\n]+(\n|$)" "" MPI_LINK_CMDLINE "${MPI_LINK_CMDLINE}") endif() - # Extract compile options from the compile command line. - string(REGEX MATCHALL "(^| )-f([^\" ]+|\"[^\"]+\")" MPI_ALL_COMPILE_OPTIONS "${MPI_COMPILE_CMDLINE}") - - foreach(_MPI_COMPILE_OPTION IN LISTS MPI_ALL_COMPILE_OPTIONS) - string(REGEX REPLACE "^ " "" _MPI_COMPILE_OPTION "${_MPI_COMPILE_OPTION}") - # Ignore -fstack-protector directives: These occur on MPICH and MVAPICH when the libraries - # themselves were built with this flag. However, this flag is unrelated to using MPI, and - # we won't match the accompanying --param-ssp-size and -Wp,-D_FORTIFY_SOURCE flags and therefore - # produce inconsistent results with the regularly flags. - # Similarly, aliasing flags do not belong into our flag array. - if(NOT "${_MPI_COMPILE_OPTION}" MATCHES "^-f(stack-protector|(no-|)strict-aliasing|PI[CE]|pi[ce])") - list(APPEND MPI_COMPILE_OPTIONS_WORK "${_MPI_COMPILE_OPTION}") - endif() - endforeach() + # For Visual C++, extracting compiler options in a generic fashion isn't easy. However, no MPI implementation + # on Windows seems to require any specific ones, either. + if(NOT MSVC) + # Extract compile options from the compile command line. + string(REGEX MATCHALL "(^| )-f([^\" ]+|\"[^\"]+\")" MPI_ALL_COMPILE_OPTIONS "${MPI_COMPILE_CMDLINE}") + + foreach(_MPI_COMPILE_OPTION IN LISTS MPI_ALL_COMPILE_OPTIONS) + string(REGEX REPLACE "^ " "" _MPI_COMPILE_OPTION "${_MPI_COMPILE_OPTION}") + + # Ignore -fstack-protector directives: These occur on MPICH and MVAPICH when the libraries + # themselves were built with this flag. However, this flag is unrelated to using MPI, and + # we won't match the accompanying --param-ssp-size and -Wp,-D_FORTIFY_SOURCE flags and therefore + # produce inconsistent results with the regularly flags. + # Similarly, aliasing flags do not belong into our flag array. + if(NOT "${_MPI_COMPILE_OPTION}" MATCHES "^-f(stack-protector|(no-|)strict-aliasing|PI[CE]|pi[ce])") + list(APPEND MPI_COMPILE_OPTIONS_WORK "${_MPI_COMPILE_OPTION}") + endif() + endforeach() + endif() - # Same deal, with the definitions. We also treat arguments passed to the preprocessor directly. - string(REGEX MATCHALL "(^| )(-Wp,|-Xpreprocessor )?[-/]D([^\" ]+|\"[^\"]+\")" MPI_ALL_COMPILE_DEFINITIONS "${MPI_COMPILE_CMDLINE}") + # For GNU-style compilers, it's possible to prefix includes and definitions with certain flags to pass them + # only to the preprocessor. For CMake purposes, we need to treat, but ignore such scopings. + # Note that we do not support spaces between the arguments, i.e. -Wp,-I -Wp,/opt/mympi will not be parsed + # correctly. This form does not seem to occur in any common MPI implementation, however. + if(NOT MSVC) + set(_MPI_PREPROCESSOR_FLAG_REGEX "(-Wp,|-Xpreprocessor )?") + else() + set(_MPI_PREPROCESSOR_FLAG_REGEX "") + endif() + + # Same deal as above, for the definitions. + string(REGEX MATCHALL "(^| )${_MPI_PREPROCESSOR_FLAG_REGEX}-D *([^\" ]+|\"[^\"]+\")" MPI_ALL_COMPILE_DEFINITIONS "${MPI_COMPILE_CMDLINE}") foreach(_MPI_COMPILE_DEFINITION IN LISTS MPI_ALL_COMPILE_DEFINITIONS) - string(REGEX REPLACE "^ ?(-Wp,|-Xpreprocessor )?[-/]D" "" _MPI_COMPILE_DEFINITION "${_MPI_COMPILE_DEFINITION}") + string(REGEX REPLACE "^ ?${_MPI_PREPROCESSOR_FLAG_REGEX}-D *" "" _MPI_COMPILE_DEFINITION "${_MPI_COMPILE_DEFINITION}") string(REPLACE "\"" "" _MPI_COMPILE_DEFINITION "${_MPI_COMPILE_DEFINITION}") if(NOT "${_MPI_COMPILE_DEFINITION}" MATCHES "^_FORTIFY_SOURCE.*") list(APPEND MPI_COMPILE_DEFINITIONS_WORK "${_MPI_COMPILE_DEFINITION}") @@ -486,7 +511,8 @@ function (_MPI_interrogate_compiler lang) endforeach() # Extract include paths from compile command line - string(REGEX MATCHALL "(^| )[-/]I([^\" ]+|\"[^\"]+\")" MPI_ALL_INCLUDE_PATHS "${MPI_COMPILE_CMDLINE}") + string(REGEX MATCHALL "(^| )${_MPI_PREPROCESSOR_FLAG_REGEX}${CMAKE_INCLUDE_FLAG_${LANG}} *([^\" ]+|\"[^\"]+\")" + MPI_ALL_INCLUDE_PATHS "${MPI_COMPILE_CMDLINE}") # If extracting failed to work, we'll try using -showme:incdirs. if (NOT MPI_ALL_INCLUDE_PATHS) @@ -497,16 +523,66 @@ function (_MPI_interrogate_compiler lang) endif() foreach(_MPI_INCLUDE_PATH IN LISTS MPI_ALL_INCLUDE_PATHS) - string(REGEX REPLACE "^ ?[-/]I" "" _MPI_INCLUDE_PATH "${_MPI_INCLUDE_PATH}") + string(REGEX REPLACE "^ ?${_MPI_PREPROCESSOR_FLAG_REGEX}${CMAKE_INCLUDE_FLAG_${LANG}} *" "" _MPI_INCLUDE_PATH "${_MPI_INCLUDE_PATH}") string(REPLACE "\"" "" _MPI_INCLUDE_PATH "${_MPI_INCLUDE_PATH}") get_filename_component(_MPI_INCLUDE_PATH "${_MPI_INCLUDE_PATH}" REALPATH) list(APPEND MPI_INCLUDE_DIRS_WORK "${_MPI_INCLUDE_PATH}") endforeach() - # Extract linker paths from the link command line - string(REGEX MATCHALL "(^| )(-Wl,|-Xlinker )?(-L|[/-]LIBPATH:|[/-]libpath:)([^\" ]+|\"[^\"]+\")" MPI_ALL_LINK_PATHS "${MPI_LINK_CMDLINE}") + # The next step are linker flags and library directories. Here, we first take the flags given in raw -L or -LIBPATH: syntax. + string(REGEX MATCHALL "(^| )${CMAKE_LIBRARY_PATH_FLAG} *([^\" ]+|\"[^\"]+\")" MPI_DIRECT_LINK_PATHS "${MPI_LINK_CMDLINE}") + foreach(_MPI_LPATH IN LISTS MPI_DIRECT_LINK_PATHS) + string(REGEX REPLACE "(^| )${CMAKE_LIBRARY_PATH_FLAG} *" "" _MPI_LPATH "${_MPI_LPATH}") + list(APPEND MPI_ALL_LINK_PATHS "${_MPI_LPATH}") + endforeach() + + # If the link commandline hasn't been filtered (e.g. when using MSVC and /link), we need to extract the relevant parts first. + if(NOT _MPI_FILTERED_LINK_INFORMATION) + string(REGEX MATCHALL "(^| )(-Wl,|-Xlinker +)([^\" ]+|\"[^\"]+\")" MPI_LINK_FLAGS "${MPI_LINK_CMDLINE}") + + # In this case, we could also find some indirectly given linker paths, e.g. prefixed by -Xlinker or -Wl, + # Since syntaxes like -Wl,-L -Wl,/my/path/to/lib are also valid, we parse these paths by first removing -Wl, and -Xlinker + # from the list of filtered flags and then parse the remainder of the output. + string(REGEX REPLACE "(-Wl,|-Xlinker +)" "" MPI_LINK_FLAGS_RAW "${MPI_LINK_FLAGS}") + + # Now we can parse the leftover output. Note that spaces can now be handled since the above example would reduce to + # -L /my/path/to/lib and can be extracted correctly. + string(REGEX MATCHALL "^(${CMAKE_LIBRARY_PATH_FLAG},? *|--library-path=)([^\" ]+|\"[^\"]+\")" + MPI_INDIRECT_LINK_PATHS "${MPI_LINK_FLAGS_RAW}") + + foreach(_MPI_LPATH IN LISTS MPI_INDIRECT_LINK_PATHS) + string(REGEX REPLACE "^(${CMAKE_LIBRARY_PATH_FLAG},? *|--library-path=)" "" _MPI_LPATH "${_MPI_LPATH}") + list(APPEND MPI_ALL_LINK_PATHS "${_MPI_LPATH}") + endforeach() + + # We need to remove the flags we extracted from the linker flag list now. + string(REGEX REPLACE "(^| )(-Wl,|-Xlinker +)(${CMAKE_LIBRARY_PATH_FLAG},? *(-Wl,|-Xlinker +)?|--library-path=)([^\" ]+|\"[^\"]+\")" "" + MPI_LINK_CMDLINE_FILTERED "${MPI_LINK_CMDLINE}") + + # Some MPI implementations pass on options they themselves were built with. Since -z,noexecstack is a common + # hardening, we should strip it. In general, the -z options should be undesirable. + string(REGEX REPLACE "(^| )-Wl,-z(,[^ ]+| +-Wl,[^ ]+)" "" MPI_LINK_CMDLINE_FILTERED "${MPI_LINK_CMDLINE_FILTERED}") + string(REGEX REPLACE "(^| )-Xlinker +-z +-Xlinker +[^ ]+" "" MPI_LINK_CMDLINE_FILTERED "${MPI_LINK_CMDLINE_FILTERED}") + + # We only consider options of the form -Wl or -Xlinker: + string(REGEX MATCHALL "(^| )(-Wl,|-Xlinker +)([^\" ]+|\"[^\"]+\")" MPI_ALL_LINK_FLAGS "${MPI_LINK_CMDLINE_FILTERED}") + + # As a next step, we assemble the linker flags extracted in a preliminary flags string + foreach(_MPI_LINK_FLAG IN LISTS MPI_ALL_LINK_FLAGS) + string(STRIP "${_MPI_LINK_FLAG}" _MPI_LINK_FLAG) + if (MPI_LINK_FLAGS_WORK) + string(APPEND MPI_LINK_FLAGS_WORK " ${_MPI_LINK_FLAG}") + else() + set(MPI_LINK_FLAGS_WORK "${_MPI_LINK_FLAG}") + endif() + endforeach() + else() + # In the filtered case, we obtain the link time flags by just stripping the library paths. + string(REGEX REPLACE "(^| )${CMAKE_LIBRARY_PATH_FLAG} *([^\" ]+|\"[^\"]+\")" "" MPI_LINK_CMDLINE_FILTERED "${MPI_LINK_CMDLINE}") + endif() - # If extracting failed to work, we'll try using -showme:libdirs. + # If we failed to extract any linker paths, we'll try using the -showme:libdirs option with the MPI compiler. + # This will return a list of folders, not a set of flags! if (NOT MPI_ALL_LINK_PATHS) _MPI_check_compiler(${LANG} "-showme:libdirs" MPI_LIBDIRS_CMDLINE MPI_LIBDIRS_COMPILER_RETURN) if(MPI_LIBDIRS_COMPILER_RETURN) @@ -514,47 +590,30 @@ function (_MPI_interrogate_compiler lang) endif() endif() + # We need to remove potential quotes and convert the paths to CMake syntax while resolving them, too. foreach(_MPI_LPATH IN LISTS MPI_ALL_LINK_PATHS) - string(REGEX REPLACE "^ ?(-Wl,|-Xlinker )?(-L|[/-]LIBPATH:|[/-]libpath:)" "" _MPI_LPATH "${_MPI_LPATH}") string(REPLACE "\"" "" _MPI_LPATH "${_MPI_LPATH}") get_filename_component(_MPI_LPATH "${_MPI_LPATH}" REALPATH) list(APPEND MPI_LINK_DIRECTORIES_WORK "${_MPI_LPATH}") endforeach() - if(NOT _MPI_FILTERED_LINK_INFORMATION) - set(_MPI_LINK_FLAG_REGEX "(-Wl,|-Xlinker )") - else() - set(_MPI_LINK_FLAG_REGEX "") - endif() - - # Extract linker flags from the link command line - string(REGEX MATCHALL "(^| )${_MPI_LINK_FLAG_REGEX}([^\" ]+|\"[^\"]+\")" MPI_ALL_LINK_FLAGS "${MPI_LINK_CMDLINE}") - - foreach(_MPI_LINK_FLAG IN LISTS MPI_ALL_LINK_FLAGS) - string(STRIP "${_MPI_LINK_FLAG}" _MPI_LINK_FLAG) - # MPI might be marked to build with non-executable stacks but this should not propagate. - if (NOT "${_MPI_LINK_FLAG}" MATCHES "(-Wl,|-Xlinker )-z,noexecstack") - if (MPI_LINK_FLAGS_WORK) - string(APPEND MPI_LINK_FLAGS_WORK " ${_MPI_LINK_FLAG}") + # Extract the set of libraries to link against from the link command line + # This only makes sense if CMAKE_LINK_LIBRARY_FLAG is defined, i.e. a -lxxxx syntax is supported by the compiler. + if(CMAKE_LINK_LIBRARY_FLAG) + string(REGEX MATCHALL "(^| )${CMAKE_LINK_LIBRARY_FLAG}([^\" ]+|\"[^\"]+\")" + MPI_LIBNAMES "${MPI_LINK_CMDLINE}") + + foreach(_MPI_LIB_NAME IN LISTS MPI_LIBNAMES) + string(REGEX REPLACE "^ ?${CMAKE_LINK_LIBRARY_FLAG}" "" _MPI_LIB_NAME "${_MPI_LIB_NAME}") + string(REPLACE "\"" "" _MPI_LIB_NAME "${_MPI_LIB_NAME}") + get_filename_component(_MPI_LIB_PATH "${_MPI_LIB_NAME}" DIRECTORY) + if(NOT "${_MPI_LIB_PATH}" STREQUAL "") + list(APPEND MPI_LIB_FULLPATHS_WORK "${_MPI_LIB_NAME}") else() - set(MPI_LINK_FLAGS_WORK "${_MPI_LINK_FLAG}") + list(APPEND MPI_LIB_NAMES_WORK "${_MPI_LIB_NAME}") endif() - endif() - endforeach() - - # Extract the set of libraries to link against from the link command line - string(REGEX MATCHALL "(^| )-l([^\" ]+|\"[^\"]+\")" MPI_LIBNAMES "${MPI_LINK_CMDLINE}") - - foreach(_MPI_LIB_NAME IN LISTS MPI_LIBNAMES) - string(REGEX REPLACE "^ ?-l" "" _MPI_LIB_NAME "${_MPI_LIB_NAME}") - string(REPLACE "\"" "" _MPI_LIB_NAME "${_MPI_LIB_NAME}") - get_filename_component(_MPI_LIB_PATH "${_MPI_LIB_NAME}" DIRECTORY) - if(NOT "${_MPI_LIB_PATH}" STREQUAL "") - list(APPEND MPI_LIB_FULLPATHS_WORK "${_MPI_LIB_NAME}") - else() - list(APPEND MPI_LIB_NAMES_WORK "${_MPI_LIB_NAME}") - endif() - endforeach() + endforeach() + endif() # Treat linker objects given by full path, for example static libraries, import libraries # or shared libraries if there aren't any import libraries in use on the system. https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8b79107add5f27e06559ea6566b2c950857eae1e commit 8b79107add5f27e06559ea6566b2c950857eae1e Author: Christian Pfeiffer AuthorDate: Fri Dec 15 20:05:02 2017 +0100 Commit: Christian Pfeiffer CommitDate: Thu Jan 25 16:31:10 2018 +0100 FindMPI: Improve link information parsing The parsing of link information coming from the compiler wrapper has been improved: - Support MSVC /link argument separation properly and add support for potential VC++ link flags - Rely on the global import/static/shared library suffixes instead of hardcoded special values. This should improve compatibility with Cygwin and MinGW should any MPI implementation there need this behavior. - Don't use ``find_library`` if the full path of a library is known anyways. diff --git a/Modules/FindMPI.cmake b/Modules/FindMPI.cmake index c5eabbb..bf839df 100644 --- a/Modules/FindMPI.cmake +++ b/Modules/FindMPI.cmake @@ -421,25 +421,40 @@ function (_MPI_interrogate_compiler lang) set(MPI_LINK_CMDLINE "${MPI_COMPILE_CMDLINE}") endif() - # At this point, we obtained some output from a compiler wrapper that works. - # We'll now try to parse it into variables with meaning to us. - if("${LANG}" STREQUAL "Fortran") - # Some MPICH-1 and MVAPICH-1 versions return a three command answer for Fortran, consisting - # out of a symlink command for mpif.h, the actual compiler command and a deletion of the - # created symlink. We need to detect that case, remember the include path and drop the - # symlink/deletion operation to obtain the link/compile lines we'd usually expect. - if("${MPI_COMPILE_CMDLINE}" MATCHES "^ln -s ([^\" ]+|\"[^\"]+\") mpif.h") - get_filename_component(MPI_INCLUDE_DIRS_WORK "${CMAKE_MATCH_1}" DIRECTORY) - string(REGEX REPLACE "^ln -s ([^\" ]+|\"[^\"]+\") mpif.h\n" "" MPI_COMPILE_CMDLINE "${MPI_COMPILE_CMDLINE}") - string(REGEX REPLACE "^ln -s ([^\" ]+|\"[^\"]+\") mpif.h\n" "" MPI_LINK_CMDLINE "${MPI_LINK_CMDLINE}") - string(REGEX REPLACE "\nrm -f mpif.h$" "" MPI_COMPILE_CMDLINE "${MPI_COMPILE_CMDLINE}") - string(REGEX REPLACE "\nrm -f mpif.h$" "" MPI_LINK_CMDLINE "${MPI_LINK_CMDLINE}") + # For MSVC and cl-compatible compilers, the keyword /link indicates a point after which + # everything following is passed to the linker. In this case, we drop all prior information + # from the link line and treat any unknown extra flags as linker flags. + set(_MPI_FILTERED_LINK_INFORMATION FALSE) + if(MSVC) + if(MPI_LINK_CMDLINE MATCHES " [/-]link ") + string(REGEX REPLACE ".+[/-]link +" "" MPI_LINK_CMDLINE "${MPI_LINK_CMDLINE}") + set(_MPI_FILTERED_LINK_INFORMATION TRUE) endif() + string(REGEX REPLACE " +[/-]link .+" "" MPI_COMPILE_CMDLINE "${MPI_COMPILE_CMDLINE}") endif() - # The Intel MPI wrapper on Linux will emit some objcopy commands after its compile command - # if -static_mpi was passed to the wrapper. To avoid spurious matches, we need to drop these lines. if(UNIX) + # At this point, we obtained some output from a compiler wrapper that works. + # We'll now try to parse it into variables with meaning to us. + if("${LANG}" STREQUAL "Fortran") + # If MPICH (and derivates) didn't recognize the Fortran compiler include flag during configuration, + # they'll return a set of three commands, consisting out of a symlink command for mpif.h, + # the actual compiler command and deletion of the created symlink. + # Especially with M(VA)PICH-1, this appears to happen erroneously, and therefore we should translate + # this output into an additional include directory and then drop it from the output. + if("${MPI_COMPILE_CMDLINE}" MATCHES "^ln -s ([^\" ]+|\"[^\"]+\") mpif.h") + get_filename_component(MPI_INCLUDE_DIRS_WORK "${CMAKE_MATCH_1}" DIRECTORY) + string(REGEX REPLACE "^ln -s ([^\" ]+|\"[^\"]+\") mpif.h\n" "" MPI_COMPILE_CMDLINE "${MPI_COMPILE_CMDLINE}") + string(REGEX REPLACE "^ln -s ([^\" ]+|\"[^\"]+\") mpif.h\n" "" MPI_LINK_CMDLINE "${MPI_LINK_CMDLINE}") + string(REGEX REPLACE "\nrm -f mpif.h$" "" MPI_COMPILE_CMDLINE "${MPI_COMPILE_CMDLINE}") + string(REGEX REPLACE "\nrm -f mpif.h$" "" MPI_LINK_CMDLINE "${MPI_LINK_CMDLINE}") + endif() + endif() + + # If Intel MPI was configured for static linkage with -static_mpi, the wrapper will by default strip + # debug information from resulting binaries (see I_MPI_DEBUG_INFO_STRIP). + # Since we cannot process this information into CMake logic, we need to discard the resulting objcopy + # commands from the output. string(REGEX REPLACE "(^|\n)objcopy[^\n]+(\n|$)" "" MPI_COMPILE_CMDLINE "${MPI_COMPILE_CMDLINE}") string(REGEX REPLACE "(^|\n)objcopy[^\n]+(\n|$)" "" MPI_LINK_CMDLINE "${MPI_LINK_CMDLINE}") endif() @@ -460,7 +475,7 @@ function (_MPI_interrogate_compiler lang) endforeach() # Same deal, with the definitions. We also treat arguments passed to the preprocessor directly. - string(REGEX MATCHALL "(^| )(-Wp,|-Xpreprocessor |)[-/]D([^\" ]+|\"[^\"]+\")" MPI_ALL_COMPILE_DEFINITIONS "${MPI_COMPILE_CMDLINE}") + string(REGEX MATCHALL "(^| )(-Wp,|-Xpreprocessor )?[-/]D([^\" ]+|\"[^\"]+\")" MPI_ALL_COMPILE_DEFINITIONS "${MPI_COMPILE_CMDLINE}") foreach(_MPI_COMPILE_DEFINITION IN LISTS MPI_ALL_COMPILE_DEFINITIONS) string(REGEX REPLACE "^ ?(-Wp,|-Xpreprocessor )?[-/]D" "" _MPI_COMPILE_DEFINITION "${_MPI_COMPILE_DEFINITION}") @@ -489,7 +504,7 @@ function (_MPI_interrogate_compiler lang) endforeach() # Extract linker paths from the link command line - string(REGEX MATCHALL "(^| )(-Wl,|-Xlinker |)(-L|[/-]LIBPATH:|[/-]libpath:)([^\" ]+|\"[^\"]+\")" MPI_ALL_LINK_PATHS "${MPI_LINK_CMDLINE}") + string(REGEX MATCHALL "(^| )(-Wl,|-Xlinker )?(-L|[/-]LIBPATH:|[/-]libpath:)([^\" ]+|\"[^\"]+\")" MPI_ALL_LINK_PATHS "${MPI_LINK_CMDLINE}") # If extracting failed to work, we'll try using -showme:libdirs. if (NOT MPI_ALL_LINK_PATHS) @@ -506,8 +521,14 @@ function (_MPI_interrogate_compiler lang) list(APPEND MPI_LINK_DIRECTORIES_WORK "${_MPI_LPATH}") endforeach() + if(NOT _MPI_FILTERED_LINK_INFORMATION) + set(_MPI_LINK_FLAG_REGEX "(-Wl,|-Xlinker )") + else() + set(_MPI_LINK_FLAG_REGEX "") + endif() + # Extract linker flags from the link command line - string(REGEX MATCHALL "(^| )(-Wl,|-Xlinker )([^\" ]+|\"[^\"]+\")" MPI_ALL_LINK_FLAGS "${MPI_LINK_CMDLINE}") + string(REGEX MATCHALL "(^| )${_MPI_LINK_FLAG_REGEX}([^\" ]+|\"[^\"]+\")" MPI_ALL_LINK_FLAGS "${MPI_LINK_CMDLINE}") foreach(_MPI_LINK_FLAG IN LISTS MPI_ALL_LINK_FLAGS) string(STRIP "${_MPI_LINK_FLAG}" _MPI_LINK_FLAG) @@ -521,8 +542,7 @@ function (_MPI_interrogate_compiler lang) endif() endforeach() - # Extract the set of libraries to link against from the link command - # line + # Extract the set of libraries to link against from the link command line string(REGEX MATCHALL "(^| )-l([^\" ]+|\"[^\"]+\")" MPI_LIBNAMES "${MPI_LINK_CMDLINE}") foreach(_MPI_LIB_NAME IN LISTS MPI_LIBNAMES) @@ -536,34 +556,31 @@ function (_MPI_interrogate_compiler lang) endif() endforeach() - if(WIN32) - # A compiler wrapper on Windows will just have the name of the - # library to link on its link line, potentially with a full path - string(REGEX MATCHALL "(^| )([^\" ]+\\.lib|\"[^\"]+\\.lib\")" MPI_LIBNAMES "${MPI_LINK_CMDLINE}") - foreach(_MPI_LIB_NAME IN LISTS MPI_LIBNAMES) - string(REGEX REPLACE "^ " "" _MPI_LIB_NAME "${_MPI_LIB_NAME}") - string(REPLACE "\"" "" _MPI_LIB_NAME "${_MPI_LIB_NAME}") - get_filename_component(_MPI_LIB_PATH "${_MPI_LIB_NAME}" DIRECTORY) - if(NOT "${_MPI_LIB_PATH}" STREQUAL "") - list(APPEND MPI_LIB_FULLPATHS_WORK "${_MPI_LIB_NAME}") - else() - list(APPEND MPI_LIB_NAMES_WORK "${_MPI_LIB_NAME}") - endif() - endforeach() + # Treat linker objects given by full path, for example static libraries, import libraries + # or shared libraries if there aren't any import libraries in use on the system. + # Note that we do not consider CMAKE__LIBRARY_PREFIX intentionally here: The linker will for a given file + # decide how to link it based on file type, not based on a prefix like 'lib'. + set(_MPI_LIB_NAME_REGEX "[^\" ]+${CMAKE_STATIC_LIBRARY_SUFFIX}|\"[^\"]+${CMAKE_STATIC_LIBRARY_SUFFIX}\"") + if(DEFINED CMAKE_IMPORT_LIBRARY_SUFFIX) + if(NOT ("${CMAKE_IMPORT_LIBRARY_SUFFIX}" STREQUAL "${CMAKE_STATIC_LIBRARY_SUFFIX}")) + string(APPEND _MPI_LIB_NAME_REGEX "[^\" ]+${CMAKE_IMPORT_LIBRARY_SUFFIX}|\"[^\"]+${CMAKE_IMPORT_LIBRARY_SUFFIX}\"") + endif() else() - # On UNIX platforms, archive libraries can be given with full path. - string(REGEX MATCHALL "(^| )([^\" ]+\\.a|\"[^\"]+\\.a\")" MPI_LIBFULLPATHS "${MPI_LINK_CMDLINE}") - foreach(_MPI_LIB_NAME IN LISTS MPI_LIBFULLPATHS) - string(REGEX REPLACE "^ " "" _MPI_LIB_NAME "${_MPI_LIB_NAME}") - string(REPLACE "\"" "" _MPI_LIB_NAME "${_MPI_LIB_NAME}") - get_filename_component(_MPI_LIB_PATH "${_MPI_LIB_NAME}" DIRECTORY) - if(NOT "${_MPI_LIB_PATH}" STREQUAL "") - list(APPEND MPI_LIB_FULLPATHS_WORK "${_MPI_LIB_NAME}") - else() - list(APPEND MPI_LIB_NAMES_WORK "${_MPI_LIB_NAME}") - endif() - endforeach() + string(APPEND _MPI_LIB_NAME_REGEX "[^\" ]+${CMAKE_SHARED_LIBRARY_SUFFIX}|\"[^\"]+${CMAKE_SHARED_LIBRARY_SUFFIX}\"") endif() + string(REPLACE "." "\\." _MPI_LIB_NAME_REGEX "${_MPI_LIB_NAME_REGEX}") + + string(REGEX MATCHALL "(^| )(${_MPI_LIB_NAME_REGEX})" MPI_LIBNAMES "${MPI_LINK_CMDLINE}") + foreach(_MPI_LIB_NAME IN LISTS MPI_LIBNAMES) + string(REGEX REPLACE "^ " "" _MPI_LIB_NAME "${_MPI_LIB_NAME}") + string(REPLACE "\"" "" _MPI_LIB_NAME "${_MPI_LIB_NAME}") + get_filename_component(_MPI_LIB_PATH "${_MPI_LIB_NAME}" DIRECTORY) + if(NOT "${_MPI_LIB_PATH}" STREQUAL "") + list(APPEND MPI_LIB_FULLPATHS_WORK "${_MPI_LIB_NAME}") + else() + list(APPEND MPI_LIB_NAMES_WORK "${_MPI_LIB_NAME}") + endif() + endforeach() # An MPI compiler wrapper could have its MPI libraries in the implictly # linked directories of the compiler itself. @@ -589,16 +606,11 @@ function (_MPI_interrogate_compiler lang) unset(MPI_DIRECT_LIB_NAMES_WORK) foreach(_MPI_LIB_FULLPATH IN LISTS MPI_LIB_FULLPATHS_WORK) get_filename_component(_MPI_PLAIN_LIB_NAME "${_MPI_LIB_FULLPATH}" NAME_WE) - get_filename_component(_MPI_LIB_NAME "${_MPI_LIB_FULLPATH}" NAME) - get_filename_component(_MPI_LIB_PATH "${_MPI_LIB_FULLPATH}" DIRECTORY) list(APPEND MPI_DIRECT_LIB_NAMES_WORK "${_MPI_PLAIN_LIB_NAME}") - find_library(MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY - NAMES "${_MPI_LIB_NAME}" - HINTS ${_MPI_LIB_PATH} - DOC "Location of the ${_MPI_PLAIN_LIB_NAME} library for MPI" - ) + set(MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY "${_MPI_LIB_FULLPATH}" CACHE FILEPATH "Location of the ${_MPI_PLAIN_LIB_NAME} library for MPI") mark_as_advanced(MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY) endforeach() + # Directly linked objects should be linked first in case some generic linker flags are needed for them. if(MPI_DIRECT_LIB_NAMES_WORK) set(MPI_PLAIN_LIB_NAMES_WORK "${MPI_DIRECT_LIB_NAMES_WORK};${MPI_PLAIN_LIB_NAMES_WORK}") endif() ----------------------------------------------------------------------- Summary of changes: Modules/FindMPI.cmake | 373 +++++++++++++++++++++++++-------- Modules/UseSWIG.cmake | 116 +++++----- Source/cmAddCustomCommandCommand.cxx | 150 ++++++++----- Source/cmExpandedCommandArgument.cxx | 5 + Source/cmExpandedCommandArgument.h | 1 + Source/cmGeneratorExpressionLexer.cxx | 6 + Source/cmGeneratorExpressionNode.cxx | 3 +- Source/cmGeneratorTarget.cxx | 8 +- Source/cmTarget.cxx | 42 ++-- 9 files changed, 491 insertions(+), 213 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 1 08:15:07 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 1 Feb 2018 08:15:07 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1008-g5a16e76 Message-ID: <20180201131507.8CA78FCF38@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 5a16e762e21e22e7a212acc7e2bc7bd027d66166 (commit) via efe22af20e0613308df935a05256d55fc420e42b (commit) via f8ca0ab3ac858730874176bf332808061fe179c6 (commit) via 653b894683abe63233cb8679b34ea39d9017e317 (commit) from 3ffc9b99bb20b56d5dc232fee8c988aa34474a2f (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5a16e762e21e22e7a212acc7e2bc7bd027d66166 commit 5a16e762e21e22e7a212acc7e2bc7bd027d66166 Merge: f8ca0ab efe22af Author: Brad King AuthorDate: Thu Feb 1 13:07:46 2018 +0000 Commit: Kitware Robot CommitDate: Thu Feb 1 08:07:50 2018 -0500 Merge topic 'msvc-doc-fix' efe22af2 Help: Clarify MSVC and MSVC_VERSION variables Acked-by: Kitware Robot Merge-request: !1732 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=efe22af20e0613308df935a05256d55fc420e42b commit efe22af20e0613308df935a05256d55fc420e42b Author: Christian Pfeiffer AuthorDate: Wed Jan 31 18:20:13 2018 +0100 Commit: Brad King CommitDate: Thu Feb 1 08:05:46 2018 -0500 Help: Clarify MSVC and MSVC_VERSION variables The current documentation doesn't clarify that compilers simulating Visual C++ will also have these variables set. diff --git a/Help/variable/MSVC.rst b/Help/variable/MSVC.rst index 22a087a..ca8775c 100644 --- a/Help/variable/MSVC.rst +++ b/Help/variable/MSVC.rst @@ -1,8 +1,8 @@ MSVC ---- -``True`` when using Microsoft Visual C++. - -Set to ``true`` when the compiler is some version of Microsoft Visual C++. +Set to ``true`` when the compiler is some version of Microsoft Visual +C++ or another compiler simulating Visual C++. Any compiler defining +``_MSC_VER`` is considered simulating Visual C++. See also the :variable:`MSVC_VERSION` variable. diff --git a/Help/variable/MSVC_VERSION.rst b/Help/variable/MSVC_VERSION.rst index 0a3a7a6..5f70c02 100644 --- a/Help/variable/MSVC_VERSION.rst +++ b/Help/variable/MSVC_VERSION.rst @@ -2,6 +2,9 @@ MSVC_VERSION ------------ The version of Microsoft Visual C/C++ being used if any. +If a compiler simulating Visual C++ is being used, this variable is set +to the toolset version simulated as given by the ``_MSC_VER`` +preprocessor definition. Known version numbers are:: https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f8ca0ab3ac858730874176bf332808061fe179c6 commit f8ca0ab3ac858730874176bf332808061fe179c6 Merge: 3ffc9b9 653b894 Author: Brad King AuthorDate: Thu Feb 1 13:04:29 2018 +0000 Commit: Kitware Robot CommitDate: Thu Feb 1 08:05:33 2018 -0500 Merge topic 'std-string-apis' 653b8946 Reduce raw string pointers usage. Acked-by: Kitware Robot Merge-request: !1729 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=653b894683abe63233cb8679b34ea39d9017e317 commit 653b894683abe63233cb8679b34ea39d9017e317 Author: Pavel Solodovnikov AuthorDate: Wed Jan 31 18:20:02 2018 +0300 Commit: Pavel Solodovnikov CommitDate: Wed Jan 31 18:23:03 2018 +0300 Reduce raw string pointers usage. * Change some functions to take `std::string` instead of `const char*` in the following classes: `cmMakeFile`, `cmake`, `cmCoreTryCompile`, `cmSystemTools`, `cmState`, `cmLocalGenerator` and a few others. * Greatly reduce using of `const char*` overloads for `cmSystemTools::MakeDirectory` and `cmSystemTools::RelativePath`. * Remove many redundant `c_str()` conversions throughout the code. diff --git a/Source/CPack/cmCPackArchiveGenerator.cxx b/Source/CPack/cmCPackArchiveGenerator.cxx index 893b2fc..9ff547a 100644 --- a/Source/CPack/cmCPackArchiveGenerator.cxx +++ b/Source/CPack/cmCPackArchiveGenerator.cxx @@ -239,8 +239,7 @@ int cmCPackArchiveGenerator::PackageFiles() cmWorkingDirectory workdir(toplevel); for (std::string const& file : files) { // Get the relative path to the file - std::string rp = - cmSystemTools::RelativePath(toplevel.c_str(), file.c_str()); + std::string rp = cmSystemTools::RelativePath(toplevel, file); archive.Add(rp, 0, nullptr, false); if (!archive) { cmCPackLogger(cmCPackLog::LOG_ERROR, "Problem while adding file< " diff --git a/Source/CPack/cmCPackGenerator.cxx b/Source/CPack/cmCPackGenerator.cxx index 54a2a27..d838b30 100644 --- a/Source/CPack/cmCPackGenerator.cxx +++ b/Source/CPack/cmCPackGenerator.cxx @@ -187,7 +187,7 @@ int cmCPackGenerator::InstallProject() const char* tempInstallDirectory = tempInstallDirectoryStr.c_str(); int res = 1; - if (!cmsys::SystemTools::MakeDirectory(bareTempInstallDirectory.c_str())) { + if (!cmsys::SystemTools::MakeDirectory(bareTempInstallDirectory)) { cmCPackLogger(cmCPackLog::LOG_ERROR, "Problem creating temporary directory: " << (tempInstallDirectory ? tempInstallDirectory : "(NULL)") @@ -374,15 +374,14 @@ int cmCPackGenerator::InstallProjectViaInstalledDirectories( continue; } std::string filePath = tempDir; - filePath += "/" + subdir + "/" + - cmSystemTools::RelativePath(top.c_str(), gf.c_str()); + filePath += "/" + subdir + "/" + cmSystemTools::RelativePath(top, gf); cmCPackLogger(cmCPackLog::LOG_DEBUG, "Copy file: " << inFile << " -> " << filePath << std::endl); /* If the file is a symlink we will have to re-create it */ if (cmSystemTools::FileIsSymlink(inFile)) { std::string targetFile; std::string inFileRelative = - cmSystemTools::RelativePath(top.c_str(), inFile.c_str()); + cmSystemTools::RelativePath(top, inFile); cmSystemTools::ReadSymlink(inFile, targetFile); symlinkedFiles.emplace_back(std::move(targetFile), std::move(inFileRelative)); @@ -772,9 +771,9 @@ int cmCPackGenerator::InstallProjectViaInstallCMakeProjects( } // Remember the list of files before installation // of the current component (if we are in component install) - const char* InstallPrefix = tempInstallDirectory.c_str(); + std::string const& InstallPrefix = tempInstallDirectory; std::vector filesBefore; - std::string findExpr(InstallPrefix); + std::string findExpr = tempInstallDirectory; if (componentInstall) { cmsys::Glob glB; findExpr += "/*"; @@ -829,8 +828,7 @@ int cmCPackGenerator::InstallProjectViaInstallCMakeProjects( std::string localFileName; // Populate the File field of each component for (fit = result.begin(); fit != diff; ++fit) { - localFileName = - cmSystemTools::RelativePath(InstallPrefix, fit->c_str()); + localFileName = cmSystemTools::RelativePath(InstallPrefix, *fit); localFileName = localFileName.substr(localFileName.find_first_not_of('/')); Components[installComponent].Files.push_back(localFileName); diff --git a/Source/CPack/cmCPackNSISGenerator.cxx b/Source/CPack/cmCPackNSISGenerator.cxx index ef2add3..3f7164a 100644 --- a/Source/CPack/cmCPackNSISGenerator.cxx +++ b/Source/CPack/cmCPackNSISGenerator.cxx @@ -62,8 +62,7 @@ int cmCPackNSISGenerator::PackageFiles() std::ostringstream str; for (std::string const& file : files) { std::string outputDir = "$INSTDIR"; - std::string fileN = - cmSystemTools::RelativePath(toplevel.c_str(), file.c_str()); + std::string fileN = cmSystemTools::RelativePath(toplevel, file); if (!this->Components.empty()) { const std::string::size_type pos = fileN.find('/'); @@ -90,8 +89,7 @@ int cmCPackNSISGenerator::PackageFiles() std::ostringstream dstr; for (std::string const& dir : dirs) { std::string componentName; - std::string fileN = - cmSystemTools::RelativePath(toplevel.c_str(), dir.c_str()); + std::string fileN = cmSystemTools::RelativePath(toplevel, dir); if (fileN.empty()) { continue; } @@ -669,8 +667,8 @@ std::string cmCPackNSISGenerator::CreateComponentDescription( uploadDirectory = this->GetOption("CPACK_PACKAGE_DIRECTORY"); uploadDirectory += "/CPackUploads"; } - if (!cmSystemTools::FileExists(uploadDirectory.c_str())) { - if (!cmSystemTools::MakeDirectory(uploadDirectory.c_str())) { + if (!cmSystemTools::FileExists(uploadDirectory)) { + if (!cmSystemTools::MakeDirectory(uploadDirectory)) { cmCPackLogger(cmCPackLog::LOG_ERROR, "Unable to create NSIS upload directory " << uploadDirectory << std::endl); @@ -683,7 +681,7 @@ std::string cmCPackNSISGenerator::CreateComponentDescription( cmCPackLogger(cmCPackLog::LOG_OUTPUT, "- Building downloaded component archive: " << archiveFile << std::endl); - if (cmSystemTools::FileExists(archiveFile.c_str(), true)) { + if (cmSystemTools::FileExists(archiveFile, true)) { if (!cmSystemTools::RemoveFile(archiveFile)) { cmCPackLogger(cmCPackLog::LOG_ERROR, "Unable to remove archive file " << archiveFile << std::endl); diff --git a/Source/CPack/cpack.cxx b/Source/CPack/cpack.cxx index 7d47798..507a10c 100644 --- a/Source/CPack/cpack.cxx +++ b/Source/CPack/cpack.cxx @@ -260,7 +260,7 @@ int main(int argc, char const* const* argv) globalMF.AddDefinition("CPACK_BUILD_CONFIG", cpackBuildConfig.c_str()); } - if (cmSystemTools::FileExists(cpackConfigFile.c_str())) { + if (cmSystemTools::FileExists(cpackConfigFile)) { cpackConfigFile = cmSystemTools::CollapseFullPath(cpackConfigFile); cmCPack_Log(&log, cmCPackLog::LOG_VERBOSE, "Read CPack configuration file: " << cpackConfigFile diff --git a/Source/CTest/cmCTestBuildAndTestHandler.cxx b/Source/CTest/cmCTestBuildAndTestHandler.cxx index 5ccab26..2e1ea4c 100644 --- a/Source/CTest/cmCTestBuildAndTestHandler.cxx +++ b/Source/CTest/cmCTestBuildAndTestHandler.cxx @@ -193,7 +193,7 @@ int cmCTestBuildAndTestHandler::RunCMakeAndTest(std::string* outstring) out << "Internal cmake changing into directory: " << this->BinaryDir << std::endl; if (!cmSystemTools::FileIsDirectory(this->BinaryDir)) { - cmSystemTools::MakeDirectory(this->BinaryDir.c_str()); + cmSystemTools::MakeDirectory(this->BinaryDir); } cmWorkingDirectory workdir(this->BinaryDir); @@ -280,7 +280,7 @@ int cmCTestBuildAndTestHandler::RunCMakeAndTest(std::string* outstring) cmCTestTestHandler::FindExecutable(this->CTest, this->TestCommand.c_str(), resultingConfig, extraPaths, failed); - if (!cmSystemTools::FileExists(fullPath.c_str())) { + if (!cmSystemTools::FileExists(fullPath)) { out << "Could not find path to executable, perhaps it was not built: " << this->TestCommand << "\n"; out << "tried to find it in these places:\n"; @@ -358,7 +358,7 @@ int cmCTestBuildAndTestHandler::ProcessCommandLineArguments( idx++; this->BinaryDir = allArgs[idx]; // dir must exist before CollapseFullPath is called - cmSystemTools::MakeDirectory(this->BinaryDir.c_str()); + cmSystemTools::MakeDirectory(this->BinaryDir); this->BinaryDir = cmSystemTools::CollapseFullPath(this->BinaryDir); this->SourceDir = cmSystemTools::CollapseFullPath(this->SourceDir); } else { diff --git a/Source/CTest/cmCTestBuildHandler.cxx b/Source/CTest/cmCTestBuildHandler.cxx index ad28d92..ce6fbc7 100644 --- a/Source/CTest/cmCTestBuildHandler.cxx +++ b/Source/CTest/cmCTestBuildHandler.cxx @@ -709,7 +709,7 @@ cmCTestBuildHandler::LaunchHelper::LaunchHelper(cmCTestBuildHandler* handler) if (this->Handler->UseCTestLaunch) { // Enable launcher fragments. - cmSystemTools::MakeDirectory(launchDir.c_str()); + cmSystemTools::MakeDirectory(launchDir); this->WriteLauncherConfig(); std::string launchEnv = "CTEST_LAUNCH_LOGS="; launchEnv += launchDir; diff --git a/Source/CTest/cmCTestConfigureCommand.cxx b/Source/CTest/cmCTestConfigureCommand.cxx index c44b866..7b5c3bc 100644 --- a/Source/CTest/cmCTestConfigureCommand.cxx +++ b/Source/CTest/cmCTestConfigureCommand.cxx @@ -57,7 +57,7 @@ cmCTestGenericHandler* cmCTestConfigureCommand::InitializeHandler() } const std::string cmakelists_file = source_dir + "/CMakeLists.txt"; - if (!cmSystemTools::FileExists(cmakelists_file.c_str())) { + if (!cmSystemTools::FileExists(cmakelists_file)) { std::ostringstream e; e << "CMakeLists.txt file does not exist [" << cmakelists_file << "]"; this->SetError(e.str()); diff --git a/Source/CTest/cmCTestCoverageHandler.cxx b/Source/CTest/cmCTestCoverageHandler.cxx index 856421f..9c66e73 100644 --- a/Source/CTest/cmCTestCoverageHandler.cxx +++ b/Source/CTest/cmCTestCoverageHandler.cxx @@ -240,7 +240,7 @@ bool cmCTestCoverageHandler::ShouldIDoCoverage(std::string const& file, // If it is the same as fileDir, then ignore, otherwise check. std::string relPath; if (!checkDir.empty()) { - relPath = cmSystemTools::RelativePath(checkDir.c_str(), fFile.c_str()); + relPath = cmSystemTools::RelativePath(checkDir, fFile); } else { relPath = fFile; } @@ -450,7 +450,7 @@ int cmCTestCoverageHandler::ProcessHandler() "Process file: " << fullFileName << std::endl, this->Quiet); - if (!cmSystemTools::FileExists(fullFileName.c_str())) { + if (!cmSystemTools::FileExists(fullFileName)) { cmCTestLog(this->CTest, ERROR_MESSAGE, "Cannot find file: " << fullFileName << std::endl); continue; @@ -718,7 +718,7 @@ int cmCTestCoverageHandler::HandleCoberturaCoverage( // build the find file string with the directory from above coverageXMLFile += "/coverage.xml"; - if (cmSystemTools::FileExists(coverageXMLFile.c_str())) { + if (cmSystemTools::FileExists(coverageXMLFile)) { // If file exists, parse it cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT, "Parsing Cobertura XML file: " << coverageXMLFile @@ -741,7 +741,7 @@ int cmCTestCoverageHandler::HandleMumpsCoverage( cmParseGTMCoverage cov(*cont, this->CTest); std::string coverageFile = this->CTest->GetBinaryDir() + "/gtm_coverage.mcov"; - if (cmSystemTools::FileExists(coverageFile.c_str())) { + if (cmSystemTools::FileExists(coverageFile)) { cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT, "Parsing Cache Coverage: " << coverageFile << std::endl, this->Quiet); @@ -754,7 +754,7 @@ int cmCTestCoverageHandler::HandleMumpsCoverage( this->Quiet); cmParseCacheCoverage ccov(*cont, this->CTest); coverageFile = this->CTest->GetBinaryDir() + "/cache_coverage.cmcov"; - if (cmSystemTools::FileExists(coverageFile.c_str())) { + if (cmSystemTools::FileExists(coverageFile)) { cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT, "Parsing Cache Coverage: " << coverageFile << std::endl, this->Quiet); @@ -975,7 +975,7 @@ int cmCTestCoverageHandler::HandleGCovCoverage( std::string testingDir = this->CTest->GetBinaryDir() + "/Testing"; std::string tempDir = testingDir + "/CoverageInfo"; - cmSystemTools::MakeDirectory(tempDir.c_str()); + cmSystemTools::MakeDirectory(tempDir); cmWorkingDirectory workdir(tempDir); int gcovStyle = 0; @@ -1646,7 +1646,7 @@ int cmCTestCoverageHandler::HandleTracePyCoverage( std::string testingDir = this->CTest->GetBinaryDir() + "/Testing"; std::string tempDir = testingDir + "/CoverageInfo"; - cmSystemTools::MakeDirectory(tempDir.c_str()); + cmSystemTools::MakeDirectory(tempDir); int file_count = 0; for (std::string const& file : files) { @@ -1742,11 +1742,11 @@ std::string cmCTestCoverageHandler::FindFile( cmSystemTools::GetFilenameWithoutLastExtension(fileName); // First check in source and binary directory std::string fullName = cont->SourceDir + "/" + fileNameNoE + ".py"; - if (cmSystemTools::FileExists(fullName.c_str())) { + if (cmSystemTools::FileExists(fullName)) { return fullName; } fullName = cont->BinaryDir + "/" + fileNameNoE + ".py"; - if (cmSystemTools::FileExists(fullName.c_str())) { + if (cmSystemTools::FileExists(fullName)) { return fullName; } return ""; @@ -2012,7 +2012,7 @@ int cmCTestCoverageHandler::RunBullseyeSourceSummary( } std::string file = sourceFile; coveredFileNames.insert(file); - if (!cmSystemTools::FileIsFullPath(sourceFile.c_str())) { + if (!cmSystemTools::FileIsFullPath(sourceFile)) { // file will be relative to the binary dir file = cont->BinaryDir; file += "/"; diff --git a/Source/CTest/cmCTestGIT.cxx b/Source/CTest/cmCTestGIT.cxx index 8cb795e..e85af5e 100644 --- a/Source/CTest/cmCTestGIT.cxx +++ b/Source/CTest/cmCTestGIT.cxx @@ -113,7 +113,7 @@ std::string cmCTestGIT::FindGitDir() // are a Windows application. Run "cygpath" to get Windows path. std::string cygpath_exe = cmSystemTools::GetFilenamePath(git); cygpath_exe += "/cygpath.exe"; - if (cmSystemTools::FileExists(cygpath_exe.c_str())) { + if (cmSystemTools::FileExists(cygpath_exe)) { char const* cygpath[] = { cygpath_exe.c_str(), "-w", git_dir.c_str(), 0 }; OneLineParser cygpath_out(this, "cygpath-out> ", git_dir_line); @@ -249,7 +249,7 @@ bool cmCTestGIT::UpdateImpl() if (this->GetGitVersion() < cmCTestGITVersion(1, 6, 5, 0)) { recursive = nullptr; // No need to require >= 1.6.5 if there are no submodules. - if (cmSystemTools::FileExists((top_dir + "/.gitmodules").c_str())) { + if (cmSystemTools::FileExists(top_dir + "/.gitmodules")) { this->Log << "Git < 1.6.5 cannot update submodules recursively\n"; } } @@ -258,7 +258,7 @@ bool cmCTestGIT::UpdateImpl() if (this->GetGitVersion() < cmCTestGITVersion(1, 8, 1, 0)) { sync_recursive = nullptr; // No need to require >= 1.8.1 if there are no submodules. - if (cmSystemTools::FileExists((top_dir + "/.gitmodules").c_str())) { + if (cmSystemTools::FileExists(top_dir + "/.gitmodules")) { this->Log << "Git < 1.8.1 cannot synchronize submodules recursively\n"; } } @@ -553,15 +553,15 @@ private: void DoHeaderLine() { // Look for header fields that we need. - if (cmHasLiteralPrefix(this->Line.c_str(), "commit ")) { + if (cmHasLiteralPrefix(this->Line, "commit ")) { this->Rev.Rev = this->Line.c_str() + 7; - } else if (cmHasLiteralPrefix(this->Line.c_str(), "author ")) { + } else if (cmHasLiteralPrefix(this->Line, "author ")) { Person author; this->ParsePerson(this->Line.c_str() + 7, author); this->Rev.Author = author.Name; this->Rev.EMail = author.EMail; this->Rev.Date = this->FormatDateTime(author); - } else if (cmHasLiteralPrefix(this->Line.c_str(), "committer ")) { + } else if (cmHasLiteralPrefix(this->Line, "committer ")) { Person committer; this->ParsePerson(this->Line.c_str() + 10, committer); this->Rev.Committer = committer.Name; diff --git a/Source/CTest/cmCTestLaunch.cxx b/Source/CTest/cmCTestLaunch.cxx index 07dd2f5..30f76a9 100644 --- a/Source/CTest/cmCTestLaunch.cxx +++ b/Source/CTest/cmCTestLaunch.cxx @@ -377,11 +377,10 @@ void cmCTestLaunch::WriteXMLAction(cmXMLWriter& xml) cmSystemTools::ConvertToUnixSlashes(source); // If file is in source tree use its relative location. - if (cmSystemTools::FileIsFullPath(this->SourceDir.c_str()) && - cmSystemTools::FileIsFullPath(source.c_str()) && + if (cmSystemTools::FileIsFullPath(this->SourceDir) && + cmSystemTools::FileIsFullPath(source) && cmSystemTools::IsSubDirectory(source, this->SourceDir)) { - source = - cmSystemTools::RelativePath(this->SourceDir.c_str(), source.c_str()); + source = cmSystemTools::RelativePath(this->SourceDir, source); } xml.Element("SourceFile", source); @@ -629,8 +628,7 @@ void cmCTestLaunch::LoadConfig() cmMakefile mf(&gg, cm.GetCurrentSnapshot()); std::string fname = this->LogDir; fname += "CTestLaunchConfig.cmake"; - if (cmSystemTools::FileExists(fname.c_str()) && - mf.ReadListFile(fname.c_str())) { + if (cmSystemTools::FileExists(fname) && mf.ReadListFile(fname.c_str())) { this->SourceDir = mf.GetSafeDefinition("CTEST_SOURCE_DIRECTORY"); cmSystemTools::ConvertToUnixSlashes(this->SourceDir); } diff --git a/Source/CTest/cmCTestMemCheckHandler.cxx b/Source/CTest/cmCTestMemCheckHandler.cxx index 84151e8..cb1d947 100644 --- a/Source/CTest/cmCTestMemCheckHandler.cxx +++ b/Source/CTest/cmCTestMemCheckHandler.cxx @@ -163,7 +163,7 @@ void cmCTestMemCheckHandler::GenerateTestCommand( std::string index; std::ostringstream stream; std::string memcheckcommand = - cmSystemTools::ConvertToOutputPath(this->MemoryTester.c_str()); + cmSystemTools::ConvertToOutputPath(this->MemoryTester); stream << test; index = stream.str(); for (std::string arg : this->MemoryTesterDynamicOptions) { @@ -426,7 +426,7 @@ bool cmCTestMemCheckHandler::InitializeMemoryChecking() this->MemoryTester.clear(); // Setup the command if (cmSystemTools::FileExists( - this->CTest->GetCTestConfiguration("MemoryCheckCommand").c_str())) { + this->CTest->GetCTestConfiguration("MemoryCheckCommand"))) { this->MemoryTester = this->CTest->GetCTestConfiguration("MemoryCheckCommand"); std::string testerName = @@ -443,17 +443,15 @@ bool cmCTestMemCheckHandler::InitializeMemoryChecking() this->MemoryTesterStyle = cmCTestMemCheckHandler::UNKNOWN; } } else if (cmSystemTools::FileExists( - this->CTest->GetCTestConfiguration("PurifyCommand").c_str())) { + this->CTest->GetCTestConfiguration("PurifyCommand"))) { this->MemoryTester = this->CTest->GetCTestConfiguration("PurifyCommand"); this->MemoryTesterStyle = cmCTestMemCheckHandler::PURIFY; } else if (cmSystemTools::FileExists( - this->CTest->GetCTestConfiguration("ValgrindCommand") - .c_str())) { + this->CTest->GetCTestConfiguration("ValgrindCommand"))) { this->MemoryTester = this->CTest->GetCTestConfiguration("ValgrindCommand"); this->MemoryTesterStyle = cmCTestMemCheckHandler::VALGRIND; } else if (cmSystemTools::FileExists( - this->CTest->GetCTestConfiguration("BoundsCheckerCommand") - .c_str())) { + this->CTest->GetCTestConfiguration("BoundsCheckerCommand"))) { this->MemoryTester = this->CTest->GetCTestConfiguration("BoundsCheckerCommand"); this->MemoryTesterStyle = cmCTestMemCheckHandler::BOUNDS_CHECKER; @@ -537,9 +535,8 @@ bool cmCTestMemCheckHandler::InitializeMemoryChecking() } if (!this->CTest->GetCTestConfiguration("MemoryCheckSuppressionFile") .empty()) { - if (!cmSystemTools::FileExists( - this->CTest->GetCTestConfiguration("MemoryCheckSuppressionFile") - .c_str())) { + if (!cmSystemTools::FileExists(this->CTest->GetCTestConfiguration( + "MemoryCheckSuppressionFile"))) { cmCTestLog(this->CTest, ERROR_MESSAGE, "Cannot find memory checker suppression file: " << this->CTest->GetCTestConfiguration( @@ -560,9 +557,8 @@ bool cmCTestMemCheckHandler::InitializeMemoryChecking() #ifdef _WIN32 if (this->CTest->GetCTestConfiguration("MemoryCheckSuppressionFile") .size()) { - if (!cmSystemTools::FileExists( - this->CTest->GetCTestConfiguration("MemoryCheckSuppressionFile") - .c_str())) { + if (!cmSystemTools::FileExists(this->CTest->GetCTestConfiguration( + "MemoryCheckSuppressionFile"))) { cmCTestLog( this->CTest, ERROR_MESSAGE, "Cannot find memory checker suppression file: " @@ -1093,7 +1089,7 @@ void cmCTestMemCheckHandler::TestOutputFileNames( files = g.GetFiles(); return; } - } else if (!cmSystemTools::FileExists(ofile.c_str())) { + } else if (!cmSystemTools::FileExists(ofile)) { std::string log = "Cannot find memory tester output file: " + ofile; cmCTestLog(this->CTest, ERROR_MESSAGE, log << std::endl); ofile.clear(); diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index eee9b6c..50c2d86 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -413,7 +413,7 @@ void cmCTestMultiProcessHandler::UpdateCostData() PropertiesMap temp = this->Properties; - if (cmSystemTools::FileExists(fname.c_str())) { + if (cmSystemTools::FileExists(fname)) { cmsys::ifstream fin; fin.open(fname.c_str()); @@ -466,7 +466,7 @@ void cmCTestMultiProcessHandler::ReadCostData() { std::string fname = this->CTest->GetCostDataFile(); - if (cmSystemTools::FileExists(fname.c_str(), true)) { + if (cmSystemTools::FileExists(fname, true)) { cmsys::ifstream fin; fin.open(fname.c_str()); std::string line; @@ -741,7 +741,7 @@ void cmCTestMultiProcessHandler::CheckResume() std::string fname = this->CTest->GetBinaryDir() + "/Testing/Temporary/CTestCheckpoint.txt"; if (this->CTest->GetFailover()) { - if (cmSystemTools::FileExists(fname.c_str(), true)) { + if (cmSystemTools::FileExists(fname, true)) { *this->TestHandler->LogFile << "Resuming previously interrupted test set" << std::endl << "----------------------------------------------------------" @@ -756,7 +756,7 @@ void cmCTestMultiProcessHandler::CheckResume() } fin.close(); } - } else if (cmSystemTools::FileExists(fname.c_str(), true)) { + } else if (cmSystemTools::FileExists(fname, true)) { cmSystemTools::RemoveFile(fname); } } diff --git a/Source/CTest/cmCTestRunTest.cxx b/Source/CTest/cmCTestRunTest.cxx index 8d602fa..30ad38c 100644 --- a/Source/CTest/cmCTestRunTest.cxx +++ b/Source/CTest/cmCTestRunTest.cxx @@ -467,7 +467,7 @@ bool cmCTestRunTest::StartTest(size_t total) // Check if all required files exist for (std::string const& file : this->TestProperties->RequiredFiles) { - if (!cmSystemTools::FileExists(file.c_str())) { + if (!cmSystemTools::FileExists(file)) { // Required file was not found this->TestProcess = cm::make_unique(*this); *this->TestHandler->LogFile << "Unable to find required file: " << file @@ -537,7 +537,7 @@ void cmCTestRunTest::ComputeArguments() ++j; // skip the executable (it will be actualCommand) } std::string testCommand = - cmSystemTools::ConvertToOutputPath(this->ActualCommand.c_str()); + cmSystemTools::ConvertToOutputPath(this->ActualCommand); // Prepends memcheck args to our command string this->TestHandler->GenerateTestCommand(this->Arguments, this->Index); diff --git a/Source/CTest/cmCTestScriptHandler.cxx b/Source/CTest/cmCTestScriptHandler.cxx index 759b695..e0bffd4 100644 --- a/Source/CTest/cmCTestScriptHandler.cxx +++ b/Source/CTest/cmCTestScriptHandler.cxx @@ -327,7 +327,7 @@ int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg) script_arg = total_script_arg.substr(comma_pos + 1); } // make sure the file exists - if (!cmSystemTools::FileExists(script.c_str())) { + if (!cmSystemTools::FileExists(script)) { cmSystemTools::Error("Cannot find file: ", script.c_str()); return 1; } @@ -598,7 +598,7 @@ int cmCTestScriptHandler::CheckOutSourceDir() int retVal; bool res; - if (!cmSystemTools::FileExists(this->SourceDir.c_str()) && + if (!cmSystemTools::FileExists(this->SourceDir) && !this->CVSCheckOut.empty()) { // we must now checkout the src dir output.clear(); @@ -630,10 +630,10 @@ int cmCTestScriptHandler::BackupDirectories() // backup the binary and src directories if requested if (this->Backup) { // if for some reason those directories exist then first delete them - if (cmSystemTools::FileExists(this->BackupSourceDir.c_str())) { + if (cmSystemTools::FileExists(this->BackupSourceDir)) { cmSystemTools::RemoveADirectory(this->BackupSourceDir); } - if (cmSystemTools::FileExists(this->BackupBinaryDir.c_str())) { + if (cmSystemTools::FileExists(this->BackupBinaryDir)) { cmSystemTools::RemoveADirectory(this->BackupBinaryDir); } @@ -716,9 +716,9 @@ int cmCTestScriptHandler::RunConfigurationDashboard() } // make sure the binary directory exists if it isn't the srcdir - if (!cmSystemTools::FileExists(this->BinaryDir.c_str()) && + if (!cmSystemTools::FileExists(this->BinaryDir) && this->SourceDir != this->BinaryDir) { - if (!cmSystemTools::MakeDirectory(this->BinaryDir.c_str())) { + if (!cmSystemTools::MakeDirectory(this->BinaryDir)) { cmSystemTools::Error("Unable to create the binary directory:\n", this->BinaryDir.c_str()); this->RestoreBackupDirectories(); @@ -782,7 +782,7 @@ int cmCTestScriptHandler::RunConfigurationDashboard() if (!this->CMOutFile.empty()) { std::string cmakeOutputFile = this->CMOutFile; - if (!cmSystemTools::FileIsFullPath(cmakeOutputFile.c_str())) { + if (!cmSystemTools::FileIsFullPath(cmakeOutputFile)) { cmakeOutputFile = this->BinaryDir + "/" + cmakeOutputFile; } @@ -876,10 +876,10 @@ void cmCTestScriptHandler::RestoreBackupDirectories() // the backed up dirs if (this->Backup) { // if for some reason those directories exist then first delete them - if (cmSystemTools::FileExists(this->SourceDir.c_str())) { + if (cmSystemTools::FileExists(this->SourceDir)) { cmSystemTools::RemoveADirectory(this->SourceDir); } - if (cmSystemTools::FileExists(this->BinaryDir.c_str())) { + if (cmSystemTools::FileExists(this->BinaryDir)) { cmSystemTools::RemoveADirectory(this->BinaryDir); } // rename the src and binary directories @@ -918,7 +918,7 @@ bool cmCTestScriptHandler::EmptyBinaryDirectory(const char* sname) std::string check = sname; check += "/CMakeCache.txt"; - if (!cmSystemTools::FileExists(check.c_str())) { + if (!cmSystemTools::FileExists(check)) { return false; } diff --git a/Source/CTest/cmCTestSubmitCommand.cxx b/Source/CTest/cmCTestSubmitCommand.cxx index 1794ca6..34adb4a 100644 --- a/Source/CTest/cmCTestSubmitCommand.cxx +++ b/Source/CTest/cmCTestSubmitCommand.cxx @@ -229,7 +229,7 @@ bool cmCTestSubmitCommand::CheckArgumentValue(std::string const& arg) } if (this->ArgumentDoing == ArgumentDoingFiles) { - if (cmSystemTools::FileExists(arg.c_str())) { + if (cmSystemTools::FileExists(arg)) { this->Files.insert(arg); } else { std::ostringstream e; diff --git a/Source/CTest/cmCTestSubmitHandler.cxx b/Source/CTest/cmCTestSubmitHandler.cxx index 1ce2b6f..08d05c8 100644 --- a/Source/CTest/cmCTestSubmitHandler.cxx +++ b/Source/CTest/cmCTestSubmitHandler.cxx @@ -194,13 +194,13 @@ bool cmCTestSubmitHandler::SubmitUsingFTP(const std::string& localprefix, ::curl_easy_setopt(curl, CURLOPT_UPLOAD, 1); std::string local_file = file; - if (!cmSystemTools::FileExists(local_file.c_str())) { + if (!cmSystemTools::FileExists(local_file)) { local_file = localprefix + "/" + file; } std::string upload_as = url + "/" + remoteprefix + cmSystemTools::GetFilenameName(file); - if (!cmSystemTools::FileExists(local_file.c_str())) { + if (!cmSystemTools::FileExists(local_file)) { cmCTestLog(this->CTest, ERROR_MESSAGE, " Cannot find file: " << local_file << std::endl); ::curl_easy_cleanup(curl); @@ -387,7 +387,7 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(const std::string& localprefix, ::curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); std::string local_file = file; - if (!cmSystemTools::FileExists(local_file.c_str())) { + if (!cmSystemTools::FileExists(local_file)) { local_file = localprefix + "/" + file; } std::string remote_file = @@ -429,7 +429,7 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(const std::string& localprefix, cmSystemTools::ComputeFileHash(local_file, cmCryptoHash::AlgoMD5); } - if (!cmSystemTools::FileExists(local_file.c_str())) { + if (!cmSystemTools::FileExists(local_file)) { cmCTestLog(this->CTest, ERROR_MESSAGE, " Cannot find file: " << local_file << std::endl); ::curl_easy_cleanup(curl); @@ -772,7 +772,7 @@ bool cmCTestSubmitHandler::SubmitUsingSCP(const std::string& scp_command, std::string lfname = localprefix; cmSystemTools::ConvertToUnixSlashes(lfname); lfname += "/" + file; - lfname = cmSystemTools::ConvertToOutputPath(lfname.c_str()); + lfname = cmSystemTools::ConvertToOutputPath(lfname); argv[1] = lfname.c_str(); std::string rfname = url + "/" + remoteprefix + file; argv[2] = rfname.c_str(); @@ -898,7 +898,7 @@ bool cmCTestSubmitHandler::SubmitUsingXMLRPC( xmlrpc_value* result; std::string local_file = file; - if (!cmSystemTools::FileExists(local_file.c_str())) { + if (!cmSystemTools::FileExists(local_file)) { local_file = localprefix + "/" + file; } cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT, diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index 7bbf8dc..84d8926 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -70,7 +70,7 @@ bool cmCTestSubdirCommand::InitialPass(std::vector const& args, for (std::string const& arg : args) { std::string fname; - if (cmSystemTools::FileIsFullPath(arg.c_str())) { + if (cmSystemTools::FileIsFullPath(arg)) { fname = arg; } else { fname = cwd; @@ -145,7 +145,7 @@ bool cmCTestAddSubdirectoryCommand::InitialPass( fname += "/"; fname += args[0]; - if (!cmSystemTools::FileExists(fname.c_str())) { + if (!cmSystemTools::FileExists(fname)) { // No subdirectory? So what... return true; } @@ -1576,7 +1576,7 @@ std::string cmCTestTestHandler::FindExecutable( // now look in the paths we specified above for (unsigned int ai = 0; ai < attempted.size() && fullPath.empty(); ++ai) { // first check without exe extension - if (cmSystemTools::FileExists(attempted[ai].c_str()) && + if (cmSystemTools::FileExists(attempted[ai]) && !cmSystemTools::FileIsDirectory(attempted[ai])) { fullPath = cmSystemTools::CollapseFullPath(attempted[ai]); resultingConfig = attemptedConfigs[ai]; @@ -1586,7 +1586,7 @@ std::string cmCTestTestHandler::FindExecutable( failed.push_back(attempted[ai]); tempPath = attempted[ai]; tempPath += cmSystemTools::GetExecutableExtension(); - if (cmSystemTools::FileExists(tempPath.c_str()) && + if (cmSystemTools::FileExists(tempPath) && !cmSystemTools::FileIsDirectory(tempPath)) { fullPath = cmSystemTools::CollapseFullPath(tempPath); resultingConfig = attemptedConfigs[ai]; @@ -1822,7 +1822,7 @@ void cmCTestTestHandler::ExpandTestsToRunInformationForRerunFailed() std::string lastTestsFailedLog = this->CTest->GetBinaryDir() + "/Testing/Temporary/" + logName; - if (!cmSystemTools::FileExists(lastTestsFailedLog.c_str())) { + if (!cmSystemTools::FileExists(lastTestsFailedLog)) { if (!this->CTest->GetShowOnly() && !this->CTest->ShouldPrintLabels()) { cmCTestLog(this->CTest, ERROR_MESSAGE, lastTestsFailedLog << " does not exist!" << std::endl); @@ -1935,7 +1935,7 @@ void cmCTestTestHandler::GenerateRegressionImages(cmXMLWriter& xml, } else if (measurementfile.find(cxml)) { const std::string& filename = cmCTest::CleanString(measurementfile.match(5)); - if (cmSystemTools::FileExists(filename.c_str())) { + if (cmSystemTools::FileExists(filename)) { long len = cmSystemTools::FileLength(filename); if (len == 0) { std::string k1 = measurementfile.match(1); diff --git a/Source/CTest/cmCTestUpdateHandler.cxx b/Source/CTest/cmCTestUpdateHandler.cxx index 809abd1..504b210 100644 --- a/Source/CTest/cmCTestUpdateHandler.cxx +++ b/Source/CTest/cmCTestUpdateHandler.cxx @@ -257,37 +257,37 @@ int cmCTestUpdateHandler::DetectVCS(const char* dir) "Check directory: " << sourceDirectory << std::endl, this->Quiet); sourceDirectory += "/.svn"; - if (cmSystemTools::FileExists(sourceDirectory.c_str())) { + if (cmSystemTools::FileExists(sourceDirectory)) { return cmCTestUpdateHandler::e_SVN; } sourceDirectory = dir; sourceDirectory += "/CVS"; - if (cmSystemTools::FileExists(sourceDirectory.c_str())) { + if (cmSystemTools::FileExists(sourceDirectory)) { return cmCTestUpdateHandler::e_CVS; } sourceDirectory = dir; sourceDirectory += "/.bzr"; - if (cmSystemTools::FileExists(sourceDirectory.c_str())) { + if (cmSystemTools::FileExists(sourceDirectory)) { return cmCTestUpdateHandler::e_BZR; } sourceDirectory = dir; sourceDirectory += "/.git"; - if (cmSystemTools::FileExists(sourceDirectory.c_str())) { + if (cmSystemTools::FileExists(sourceDirectory)) { return cmCTestUpdateHandler::e_GIT; } sourceDirectory = dir; sourceDirectory += "/.hg"; - if (cmSystemTools::FileExists(sourceDirectory.c_str())) { + if (cmSystemTools::FileExists(sourceDirectory)) { return cmCTestUpdateHandler::e_HG; } sourceDirectory = dir; sourceDirectory += "/.p4"; - if (cmSystemTools::FileExists(sourceDirectory.c_str())) { + if (cmSystemTools::FileExists(sourceDirectory)) { return cmCTestUpdateHandler::e_P4; } sourceDirectory = dir; sourceDirectory += "/.p4config"; - if (cmSystemTools::FileExists(sourceDirectory.c_str())) { + if (cmSystemTools::FileExists(sourceDirectory)) { return cmCTestUpdateHandler::e_P4; } return cmCTestUpdateHandler::e_UNKNOWN; diff --git a/Source/CTest/cmCTestUploadCommand.cxx b/Source/CTest/cmCTestUploadCommand.cxx index d85f35f..ec78c1e 100644 --- a/Source/CTest/cmCTestUploadCommand.cxx +++ b/Source/CTest/cmCTestUploadCommand.cxx @@ -51,7 +51,7 @@ bool cmCTestUploadCommand::CheckArgumentValue(std::string const& arg) return true; } if (this->ArgumentDoing == ArgumentDoingFiles) { - if (cmSystemTools::FileExists(arg.c_str())) { + if (cmSystemTools::FileExists(arg)) { this->Files.insert(arg); return true; } diff --git a/Source/CTest/cmCTestVC.cxx b/Source/CTest/cmCTestVC.cxx index fd7f37a..13fa6e1 100644 --- a/Source/CTest/cmCTestVC.cxx +++ b/Source/CTest/cmCTestVC.cxx @@ -47,7 +47,7 @@ bool cmCTestVC::InitialCheckout(const char* command) std::string parent = cmSystemTools::GetFilenamePath(this->SourceDirectory); cmCTestLog(this->CTest, HANDLER_OUTPUT, " Perform checkout in directory: " << parent << "\n"); - if (!cmSystemTools::MakeDirectory(parent.c_str())) { + if (!cmSystemTools::MakeDirectory(parent)) { cmCTestLog(this->CTest, ERROR_MESSAGE, "Cannot create directory: " << parent << std::endl); return false; diff --git a/Source/CTest/cmParseCoberturaCoverage.cxx b/Source/CTest/cmParseCoberturaCoverage.cxx index 61ce7d4..5bb6424 100644 --- a/Source/CTest/cmParseCoberturaCoverage.cxx +++ b/Source/CTest/cmParseCoberturaCoverage.cxx @@ -83,7 +83,7 @@ protected: // binary directories. for (std::string const& filePath : FilePaths) { finalpath = filePath + "/" + filename; - if (cmSystemTools::FileExists(finalpath.c_str())) { + if (cmSystemTools::FileExists(finalpath)) { this->CurFileName = finalpath; break; } diff --git a/Source/cmAddCompileOptionsCommand.cxx b/Source/cmAddCompileOptionsCommand.cxx index c37fd9a..412fb38 100644 --- a/Source/cmAddCompileOptionsCommand.cxx +++ b/Source/cmAddCompileOptionsCommand.cxx @@ -14,7 +14,7 @@ bool cmAddCompileOptionsCommand::InitialPass( } for (std::string const& i : args) { - this->Makefile->AddCompileOption(i.c_str()); + this->Makefile->AddCompileOption(i); } return true; } diff --git a/Source/cmAddCustomCommandCommand.cxx b/Source/cmAddCustomCommandCommand.cxx index 14dfdae..a262f80 100644 --- a/Source/cmAddCustomCommandCommand.cxx +++ b/Source/cmAddCustomCommandCommand.cxx @@ -127,7 +127,7 @@ bool cmAddCustomCommandCommand::InitialPass( case doing_output: case doing_outputs: case doing_byproducts: - if (!cmSystemTools::FileIsFullPath(copy.c_str())) { + if (!cmSystemTools::FileIsFullPath(copy)) { // This is an output to be generated, so it should be // under the build tree. CMake 2.4 placed this under the // source tree. However the only case that this change @@ -154,7 +154,7 @@ bool cmAddCustomCommandCommand::InitialPass( break; } - if (cmSystemTools::FileIsFullPath(filename.c_str())) { + if (cmSystemTools::FileIsFullPath(filename)) { filename = cmSystemTools::CollapseFullPath(filename); } switch (doing) { @@ -355,7 +355,7 @@ bool cmAddCustomCommandCommand::CheckOutputs( for (std::string const& o : outputs) { // Make sure the file will not be generated into the source // directory during an out of source build. - if (!this->Makefile->CanIWriteThisFile(o.c_str())) { + if (!this->Makefile->CanIWriteThisFile(o)) { std::string e = "attempted to have a file \"" + o + "\" in a source directory as an output of custom command."; this->SetError(e); diff --git a/Source/cmAddCustomTargetCommand.cxx b/Source/cmAddCustomTargetCommand.cxx index cd1a376..4655f58 100644 --- a/Source/cmAddCustomTargetCommand.cxx +++ b/Source/cmAddCustomTargetCommand.cxx @@ -117,7 +117,7 @@ bool cmAddCustomTargetCommand::InitialPass( break; case doing_byproducts: { std::string filename; - if (!cmSystemTools::FileIsFullPath(copy.c_str())) { + if (!cmSystemTools::FileIsFullPath(copy)) { filename = this->Makefile->GetCurrentBinaryDirectory(); filename += "/"; } diff --git a/Source/cmAddDefinitionsCommand.cxx b/Source/cmAddDefinitionsCommand.cxx index 261fb5b..62e57a3 100644 --- a/Source/cmAddDefinitionsCommand.cxx +++ b/Source/cmAddDefinitionsCommand.cxx @@ -16,7 +16,7 @@ bool cmAddDefinitionsCommand::InitialPass(std::vector const& args, } for (std::string const& i : args) { - this->Makefile->AddDefineFlag(i.c_str()); + this->Makefile->AddDefineFlag(i); } return true; } diff --git a/Source/cmAddExecutableCommand.cxx b/Source/cmAddExecutableCommand.cxx index 2e95032..5685fdf 100644 --- a/Source/cmAddExecutableCommand.cxx +++ b/Source/cmAddExecutableCommand.cxx @@ -99,7 +99,7 @@ bool cmAddExecutableCommand::InitialPass(std::vector const& args, return false; } - const char* aliasedName = s->c_str(); + std::string const& aliasedName = *s; if (this->Makefile->IsAlias(aliasedName)) { std::ostringstream e; e << "cannot create ALIAS target \"" << exename << "\" because target \"" diff --git a/Source/cmAddLibraryCommand.cxx b/Source/cmAddLibraryCommand.cxx index 0fcffdd..1278232 100644 --- a/Source/cmAddLibraryCommand.cxx +++ b/Source/cmAddLibraryCommand.cxx @@ -198,7 +198,7 @@ bool cmAddLibraryCommand::InitialPass(std::vector const& args, return false; } - const char* aliasedName = s->c_str(); + std::string const& aliasedName = *s; if (this->Makefile->IsAlias(aliasedName)) { std::ostringstream e; e << "cannot create ALIAS target \"" << libName << "\" because target \"" diff --git a/Source/cmAddSubDirectoryCommand.cxx b/Source/cmAddSubDirectoryCommand.cxx index 1727ca5..f673c72 100644 --- a/Source/cmAddSubDirectoryCommand.cxx +++ b/Source/cmAddSubDirectoryCommand.cxx @@ -44,7 +44,7 @@ bool cmAddSubDirectoryCommand::InitialPass( // Compute the full path to the specified source directory. // Interpret a relative path with respect to the current source directory. std::string srcPath; - if (cmSystemTools::FileIsFullPath(srcArg.c_str())) { + if (cmSystemTools::FileIsFullPath(srcArg)) { srcPath = srcArg; } else { srcPath = this->Makefile->GetCurrentSourceDirectory(); @@ -94,7 +94,7 @@ bool cmAddSubDirectoryCommand::InitialPass( } else { // Use the binary directory specified. // Interpret a relative path with respect to the current binary directory. - if (cmSystemTools::FileIsFullPath(binArg.c_str())) { + if (cmSystemTools::FileIsFullPath(binArg)) { binPath = binArg; } else { binPath = this->Makefile->GetCurrentBinaryDirectory(); diff --git a/Source/cmAuxSourceDirectoryCommand.cxx b/Source/cmAuxSourceDirectoryCommand.cxx index f3cf32e..1f9f580 100644 --- a/Source/cmAuxSourceDirectoryCommand.cxx +++ b/Source/cmAuxSourceDirectoryCommand.cxx @@ -26,7 +26,7 @@ bool cmAuxSourceDirectoryCommand::InitialPass( std::string sourceListValue; std::string const& templateDirectory = args[0]; std::string tdir; - if (!cmSystemTools::FileIsFullPath(templateDirectory.c_str())) { + if (!cmSystemTools::FileIsFullPath(templateDirectory)) { tdir = this->Makefile->GetCurrentSourceDirectory(); tdir += "/"; tdir += templateDirectory; diff --git a/Source/cmCPluginAPI.cxx b/Source/cmCPluginAPI.cxx index 18a1022..1ec76ac 100644 --- a/Source/cmCPluginAPI.cxx +++ b/Source/cmCPluginAPI.cxx @@ -108,12 +108,12 @@ const char* CCONV cmGetProjectName(void* arg) const char* CCONV cmGetHomeDirectory(void* arg) { cmMakefile* mf = static_cast(arg); - return mf->GetHomeDirectory(); + return mf->GetHomeDirectory().c_str(); } const char* CCONV cmGetHomeOutputDirectory(void* arg) { cmMakefile* mf = static_cast(arg); - return mf->GetHomeOutputDirectory(); + return mf->GetHomeOutputDirectory().c_str(); } const char* CCONV cmGetStartDirectory(void* arg) { diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index 6f90e70..3fccc38 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -184,7 +184,7 @@ int cmCTest::HTTPRequest(std::string url, HTTPMethod method, ::curl_easy_setopt(curl, CURLOPT_POSTFIELDS, fields.c_str()); break; case cmCTest::HTTP_PUT: - if (!cmSystemTools::FileExists(putFile.c_str())) { + if (!cmSystemTools::FileExists(putFile)) { response = "Error: File "; response += putFile + " does not exist.\n"; return -1; @@ -429,7 +429,7 @@ int cmCTest::Initialize(const char* binary_dir, cmCTestStartCommand* command) // Verify "Testing" directory exists: // std::string testingDir = this->BinaryDir + "/Testing"; - if (cmSystemTools::FileExists(testingDir.c_str())) { + if (cmSystemTools::FileExists(testingDir)) { if (!cmSystemTools::FileIsDirectory(testingDir)) { cmCTestLog(this, ERROR_MESSAGE, "File " << testingDir @@ -438,7 +438,7 @@ int cmCTest::Initialize(const char* binary_dir, cmCTestStartCommand* command) return 0; } } else { - if (!cmSystemTools::MakeDirectory(testingDir.c_str())) { + if (!cmSystemTools::MakeDirectory(testingDir)) { cmCTestLog(this, ERROR_MESSAGE, "Cannot create directory " << testingDir << std::endl); return 0; @@ -556,9 +556,9 @@ bool cmCTest::InitializeFromCommand(cmCTestStartCommand* command) bld_dir_fname += "/CTestConfig.cmake"; cmSystemTools::ConvertToUnixSlashes(bld_dir_fname); - if (cmSystemTools::FileExists(bld_dir_fname.c_str())) { + if (cmSystemTools::FileExists(bld_dir_fname)) { fname = bld_dir_fname; - } else if (cmSystemTools::FileExists(src_dir_fname.c_str())) { + } else if (cmSystemTools::FileExists(src_dir_fname)) { fname = src_dir_fname; } @@ -619,12 +619,12 @@ bool cmCTest::UpdateCTestConfiguration() return true; } std::string fileName = this->BinaryDir + "/CTestConfiguration.ini"; - if (!cmSystemTools::FileExists(fileName.c_str())) { + if (!cmSystemTools::FileExists(fileName)) { fileName = this->BinaryDir + "/DartConfiguration.tcl"; } cmCTestLog(this, HANDLER_VERBOSE_OUTPUT, "UpdateCTestConfiguration from :" << fileName << "\n"); - if (!cmSystemTools::FileExists(fileName.c_str())) { + if (!cmSystemTools::FileExists(fileName)) { // No need to exit if we are not producing XML if (this->ProduceXML) { cmCTestLog(this, ERROR_MESSAGE, "Cannot find file: " << fileName @@ -741,7 +741,7 @@ bool cmCTest::OpenOutputFile(const std::string& path, const std::string& name, if (!path.empty()) { testingDir += "/" + path; } - if (cmSystemTools::FileExists(testingDir.c_str())) { + if (cmSystemTools::FileExists(testingDir)) { if (!cmSystemTools::FileIsDirectory(testingDir)) { cmCTestLog(this, ERROR_MESSAGE, "File " << testingDir << " is in the place of the testing directory" @@ -749,7 +749,7 @@ bool cmCTest::OpenOutputFile(const std::string& path, const std::string& name, return false; } } else { - if (!cmSystemTools::MakeDirectory(testingDir.c_str())) { + if (!cmSystemTools::MakeDirectory(testingDir)) { cmCTestLog(this, ERROR_MESSAGE, "Cannot create directory " << testingDir << std::endl); return false; @@ -790,7 +790,7 @@ bool cmCTest::CTestFileExists(const std::string& filename) { std::string testingDir = this->BinaryDir + "/Testing/" + this->CurrentTag + "/" + filename; - return cmSystemTools::FileExists(testingDir.c_str()); + return cmSystemTools::FileExists(testingDir); } cmCTestGenericHandler* cmCTest::GetInitializedHandler(const char* handler) @@ -890,7 +890,7 @@ int cmCTest::ProcessSteps() for (kk = 0; kk < d.GetNumberOfFiles(); kk++) { const char* file = d.GetFile(kk); std::string fullname = notes_dir + "/" + file; - if (cmSystemTools::FileExists(fullname.c_str()) && + if (cmSystemTools::FileExists(fullname) && !cmSystemTools::FileIsDirectory(fullname)) { if (!this->NotesFiles.empty()) { this->NotesFiles += ";"; @@ -939,10 +939,10 @@ int cmCTest::GetTestModelFromString(const char* str) return cmCTest::EXPERIMENTAL; } std::string rstr = cmSystemTools::LowerCase(str); - if (cmHasLiteralPrefix(rstr.c_str(), "cont")) { + if (cmHasLiteralPrefix(rstr, "cont")) { return cmCTest::CONTINUOUS; } - if (cmHasLiteralPrefix(rstr.c_str(), "nigh")) { + if (cmHasLiteralPrefix(rstr, "nigh")) { return cmCTest::NIGHTLY; } return cmCTest::EXPERIMENTAL; @@ -1523,7 +1523,7 @@ std::string cmCTest::Base64EncodeFile(std::string const& file) bool cmCTest::SubmitExtraFiles(const VectorOfStrings& files) { for (cmsys::String const& file : files) { - if (!cmSystemTools::FileExists(file.c_str())) { + if (!cmSystemTools::FileExists(file)) { cmCTestLog(this, ERROR_MESSAGE, "Cannot find extra file: " << file << " to submit." << std::endl;); return false; @@ -2307,7 +2307,7 @@ int cmCTest::ReadCustomConfigurationFileTree(const char* dir, cmMakefile* mf) std::string fname = dir; fname += "/CTestCustom.cmake"; cmCTestLog(this, DEBUG, "* Check for file: " << fname << std::endl); - if (cmSystemTools::FileExists(fname.c_str())) { + if (cmSystemTools::FileExists(fname)) { cmCTestLog(this, DEBUG, "* Read custom CTest configuration file: " << fname << std::endl); bool erroroc = cmSystemTools::GetErrorOccuredFlag(); @@ -2327,7 +2327,7 @@ int cmCTest::ReadCustomConfigurationFileTree(const char* dir, cmMakefile* mf) std::string rexpr = dir; rexpr += "/CTestCustom.ctest"; cmCTestLog(this, DEBUG, "* Check for file: " << rexpr << std::endl); - if (!found && cmSystemTools::FileExists(rexpr.c_str())) { + if (!found && cmSystemTools::FileExists(rexpr)) { cmsys::Glob gl; gl.RecurseOn(); gl.FindFiles(rexpr); @@ -2394,10 +2394,8 @@ std::string cmCTest::GetShortPathToFile(const char* cfname) std::string fname = cmSystemTools::CollapseFullPath(cfname); // Find relative paths to both directories - std::string srcRelpath = - cmSystemTools::RelativePath(sourceDir.c_str(), fname.c_str()); - std::string bldRelpath = - cmSystemTools::RelativePath(buildDir.c_str(), fname.c_str()); + std::string srcRelpath = cmSystemTools::RelativePath(sourceDir, fname); + std::string bldRelpath = cmSystemTools::RelativePath(buildDir, fname); // If any contains "." it is not parent directory bool inSrc = srcRelpath.find("..") == std::string::npos; diff --git a/Source/cmCacheManager.cxx b/Source/cmCacheManager.cxx index 64aa46e..fab2445 100644 --- a/Source/cmCacheManager.cxx +++ b/Source/cmCacheManager.cxx @@ -43,7 +43,7 @@ bool cmCacheManager::LoadCache(const std::string& path, bool internal, if (internal) { this->Cache.clear(); } - if (!cmSystemTools::FileExists(cacheFile.c_str())) { + if (!cmSystemTools::FileExists(cacheFile)) { this->CleanCMakeFiles(path); return false; } @@ -358,7 +358,7 @@ bool cmCacheManager::SaveCache(const std::string& path, cmMessenger* messenger) fout.Close(); std::string checkCacheFile = path; checkCacheFile += cmake::GetCMakeFilesDirectory(); - cmSystemTools::MakeDirectory(checkCacheFile.c_str()); + cmSystemTools::MakeDirectory(checkCacheFile); checkCacheFile += "/cmake.check_cache"; cmsys::ofstream checkCache(checkCacheFile.c_str()); if (!checkCache) { @@ -377,7 +377,7 @@ bool cmCacheManager::DeleteCache(const std::string& path) cmSystemTools::ConvertToUnixSlashes(cacheFile); std::string cmakeFiles = cacheFile; cacheFile += "/CMakeCache.txt"; - if (cmSystemTools::FileExists(cacheFile.c_str())) { + if (cmSystemTools::FileExists(cacheFile)) { cmSystemTools::RemoveFile(cacheFile); // now remove the files in the CMakeFiles directory // this cleans up language cache files diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx index 33dd2d7..8a5a6de 100644 --- a/Source/cmComputeLinkInformation.cxx +++ b/Source/cmComputeLinkInformation.cxx @@ -632,7 +632,7 @@ void cmComputeLinkInformation::AddItem(std::string const& item, } } else { // This is not a CMake target. Use the name given. - if (cmSystemTools::FileIsFullPath(item.c_str())) { + if (cmSystemTools::FileIsFullPath(item)) { if (cmSystemTools::FileIsDirectory(item)) { // This is a directory. this->AddDirectoryItem(item); @@ -668,13 +668,13 @@ void cmComputeLinkInformation::AddSharedDepItem(std::string const& item, } else { // Skip items that are not full paths. We will not be able to // reliably specify them. - if (!cmSystemTools::FileIsFullPath(item.c_str())) { + if (!cmSystemTools::FileIsFullPath(item)) { return; } // Get the name of the library from the file name. std::string file = cmSystemTools::GetFilenameName(item); - if (!this->ExtractSharedLibraryName.find(file.c_str())) { + if (!this->ExtractSharedLibraryName.find(file)) { // This is not the name of a shared library. return; } @@ -1746,8 +1746,9 @@ void cmComputeLinkInformation::GetRPath(std::vector& runtimeDirs, } } else if (use_link_rpath) { // Do not add any path inside the source or build tree. - const char* topSourceDir = this->CMakeInstance->GetHomeDirectory(); - const char* topBinaryDir = + std::string const& topSourceDir = + this->CMakeInstance->GetHomeDirectory(); + std::string const& topBinaryDir = this->CMakeInstance->GetHomeOutputDirectory(); if (!cmSystemTools::ComparePath(ri, topSourceDir) && !cmSystemTools::ComparePath(ri, topBinaryDir) && diff --git a/Source/cmConditionEvaluator.cxx b/Source/cmConditionEvaluator.cxx index 90b3f6d..172ef92 100644 --- a/Source/cmConditionEvaluator.cxx +++ b/Source/cmConditionEvaluator.cxx @@ -494,7 +494,7 @@ bool cmConditionEvaluator::HandleLevel1(cmArgumentList& newArgs, std::string&, if (argP1len > 4 && argP1->GetValue().substr(0, 4) == "ENV{" && argP1->GetValue().operator[](argP1len - 1) == '}') { std::string env = argP1->GetValue().substr(4, argP1len - 5); - bdef = cmSystemTools::HasEnv(env.c_str()); + bdef = cmSystemTools::HasEnv(env); } else { bdef = this->Makefile.IsDefinitionSet(argP1->GetValue()); } diff --git a/Source/cmConfigureFileCommand.cxx b/Source/cmConfigureFileCommand.cxx index 18005f2..b5a639a 100644 --- a/Source/cmConfigureFileCommand.cxx +++ b/Source/cmConfigureFileCommand.cxx @@ -51,7 +51,7 @@ bool cmConfigureFileCommand::InitialPass(std::vector const& args, this->OutputFile += cmSystemTools::GetFilenameName(inFile); } - if (!this->Makefile->CanIWriteThisFile(this->OutputFile.c_str())) { + if (!this->Makefile->CanIWriteThisFile(this->OutputFile)) { std::string e = "attempted to configure a file: " + this->OutputFile + " into a source directory."; this->SetError(e); diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx index 7b28857..34c6175 100644 --- a/Source/cmCoreTryCompile.cxx +++ b/Source/cmCoreTryCompile.cxx @@ -391,7 +391,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector const& argv, } } // make sure the binary directory exists - cmSystemTools::MakeDirectory(this->BinaryDirectory.c_str()); + cmSystemTools::MakeDirectory(this->BinaryDirectory); // do not allow recursive try Compiles if (this->BinaryDirectory == this->Makefile->GetHomeOutputDirectory()) { @@ -864,18 +864,17 @@ int cmCoreTryCompile::TryCompileCode(std::vector const& argv, return res; } -void cmCoreTryCompile::CleanupFiles(const char* binDir) +void cmCoreTryCompile::CleanupFiles(std::string const& binDir) { - if (!binDir) { + if (binDir.empty()) { return; } - std::string bdir = binDir; - if (bdir.find("CMakeTmp") == std::string::npos) { + if (binDir.find("CMakeTmp") == std::string::npos) { cmSystemTools::Error( "TRY_COMPILE attempt to remove -rf directory that does not contain " "CMakeTmp:", - binDir); + binDir.c_str()); return; } @@ -889,7 +888,7 @@ void cmCoreTryCompile::CleanupFiles(const char* binDir) std::string const fullPath = std::string(binDir).append("/").append(fileName); if (cmSystemTools::FileIsDirectory(fullPath)) { - this->CleanupFiles(fullPath.c_str()); + this->CleanupFiles(fullPath); cmSystemTools::RemoveADirectory(fullPath); } else { #ifdef _WIN32 @@ -897,9 +896,8 @@ void cmCoreTryCompile::CleanupFiles(const char* binDir) // cannot delete them immediately. Try a few times. cmSystemTools::WindowsFileRetry retry = cmSystemTools::GetWindowsFileRetry(); - while (!cmSystemTools::RemoveFile(fullPath.c_str()) && - --retry.Count && - cmSystemTools::FileExists(fullPath.c_str())) { + while (!cmSystemTools::RemoveFile(fullPath) && --retry.Count && + cmSystemTools::FileExists(fullPath)) { cmSystemTools::Delay(retry.Delay); } if (retry.Count == 0) @@ -959,7 +957,7 @@ void cmCoreTryCompile::FindOutputFile(const std::string& targetName, std::string command = this->BinaryDirectory; command += sdir; command += tmpOutputFile; - if (cmSystemTools::FileExists(command.c_str())) { + if (cmSystemTools::FileExists(command)) { this->OutputFile = cmSystemTools::CollapseFullPath(command); return; } diff --git a/Source/cmCoreTryCompile.h b/Source/cmCoreTryCompile.h index 365154d..6f35a54 100644 --- a/Source/cmCoreTryCompile.h +++ b/Source/cmCoreTryCompile.h @@ -33,7 +33,7 @@ protected: * This way we do not have to rely on the timing and * dependencies of makefiles. */ - void CleanupFiles(const char* binDir); + void CleanupFiles(std::string const& binDir); /** * This tries to find the (executable) file created by diff --git a/Source/cmCustomCommandGenerator.cxx b/Source/cmCustomCommandGenerator.cxx index e3951c1..0f5119e 100644 --- a/Source/cmCustomCommandGenerator.cxx +++ b/Source/cmCustomCommandGenerator.cxx @@ -51,7 +51,7 @@ cmCustomCommandGenerator::cmCustomCommandGenerator(cmCustomCommand const& cc, cmSystemTools::ExpandListArgument(cge->Evaluate(this->LG, this->Config), result); for (std::string& it : result) { - if (cmSystemTools::FileIsFullPath(it.c_str())) { + if (cmSystemTools::FileIsFullPath(it)) { it = cmSystemTools::CollapseFullPath(it); } } diff --git a/Source/cmDependsC.cxx b/Source/cmDependsC.cxx index 29755d9..62bc8d9 100644 --- a/Source/cmDependsC.cxx +++ b/Source/cmDependsC.cxx @@ -131,14 +131,12 @@ bool cmDependsC::WriteDependencies(const std::set& sources, // If not a full path, find the file in the include path. std::string fullName; - if ((srcFiles > 0) || - cmSystemTools::FileIsFullPath(current.FileName.c_str())) { - if (cmSystemTools::FileExists(current.FileName.c_str(), true)) { + if ((srcFiles > 0) || cmSystemTools::FileIsFullPath(current.FileName)) { + if (cmSystemTools::FileExists(current.FileName, true)) { fullName = current.FileName; } } else if (!current.QuotedLocation.empty() && - cmSystemTools::FileExists(current.QuotedLocation.c_str(), - true)) { + cmSystemTools::FileExists(current.QuotedLocation, true)) { // The include statement producing this entry was a double-quote // include and the included file is present in the directory of // the source containing the include statement. @@ -157,7 +155,7 @@ bool cmDependsC::WriteDependencies(const std::set& sources, cmSystemTools::CollapseCombinedPath(i, current.FileName); // Look for the file in this location. - if (cmSystemTools::FileExists(tempPathStr.c_str(), true)) { + if (cmSystemTools::FileExists(tempPathStr, true)) { fullName = tempPathStr; HeaderLocationCache[current.FileName] = fullName; break; @@ -226,15 +224,14 @@ bool cmDependsC::WriteDependencies(const std::set& sources, // directory. We must do the same here. std::string binDir = this->LocalGenerator->GetBinaryDirectory(); std::string obj_i = this->LocalGenerator->ConvertToRelativePath(binDir, obj); - std::string obj_m = cmSystemTools::ConvertToOutputPath(obj_i.c_str()); + std::string obj_m = cmSystemTools::ConvertToOutputPath(obj_i); internalDepends << obj_i << std::endl; for (std::string const& dep : dependencies) { - makeDepends - << obj_m << ": " - << cmSystemTools::ConvertToOutputPath( - this->LocalGenerator->ConvertToRelativePath(binDir, dep).c_str()) - << std::endl; + makeDepends << obj_m << ": " + << cmSystemTools::ConvertToOutputPath( + this->LocalGenerator->ConvertToRelativePath(binDir, dep)) + << std::endl; internalDepends << " " << dep << std::endl; } makeDepends << std::endl; @@ -363,7 +360,7 @@ void cmDependsC::Scan(std::istream& is, const char* directory, entry.FileName = this->IncludeRegexLine.match(2); cmSystemTools::ConvertToUnixSlashes(entry.FileName); if (this->IncludeRegexLine.match(3) == "\"" && - !cmSystemTools::FileIsFullPath(entry.FileName.c_str())) { + !cmSystemTools::FileIsFullPath(entry.FileName)) { // This was a double-quoted include with a relative path. We // must check for the file in the directory containing the // file we are scanning. diff --git a/Source/cmDependsFortran.cxx b/Source/cmDependsFortran.cxx index 25d78c4..1a66ca0 100644 --- a/Source/cmDependsFortran.cxx +++ b/Source/cmDependsFortran.cxx @@ -312,13 +312,13 @@ bool cmDependsFortran::WriteDependenciesReal(const char* obj, // Write the include dependencies to the output stream. std::string binDir = this->LocalGenerator->GetBinaryDirectory(); std::string obj_i = this->MaybeConvertToRelativePath(binDir, obj); - std::string obj_m = cmSystemTools::ConvertToOutputPath(obj_i.c_str()); + std::string obj_m = cmSystemTools::ConvertToOutputPath(obj_i); internalDepends << obj_i << std::endl; internalDepends << " " << src << std::endl; for (std::string const& i : info.Includes) { makeDepends << obj_m << ": " << cmSystemTools::ConvertToOutputPath( - this->MaybeConvertToRelativePath(binDir, i).c_str()) + this->MaybeConvertToRelativePath(binDir, i)) << std::endl; internalDepends << " " << i << std::endl; } @@ -341,7 +341,7 @@ bool cmDependsFortran::WriteDependenciesReal(const char* obj, if (!required->second.empty()) { // This module is known. Depend on its timestamp file. std::string stampFile = cmSystemTools::ConvertToOutputPath( - this->MaybeConvertToRelativePath(binDir, required->second).c_str()); + this->MaybeConvertToRelativePath(binDir, required->second)); makeDepends << obj_m << ": " << stampFile << "\n"; } else { // This module is not known to CMake. Try to locate it where @@ -349,7 +349,7 @@ bool cmDependsFortran::WriteDependenciesReal(const char* obj, std::string module; if (this->FindModule(i, module)) { module = cmSystemTools::ConvertToOutputPath( - this->MaybeConvertToRelativePath(binDir, module).c_str()); + this->MaybeConvertToRelativePath(binDir, module)); makeDepends << obj_m << ": " << module << "\n"; } } @@ -382,7 +382,7 @@ bool cmDependsFortran::WriteDependenciesReal(const char* obj, this->LocalGenerator->ConvertToOutputFormat(stampFile, cmOutputConverter::SHELL); std::string const stampFileForMake = - cmSystemTools::ConvertToOutputPath(stampFile.c_str()); + cmSystemTools::ConvertToOutputPath(stampFile); makeDepends << obj_m << ".provides.build" << ": " << stampFileForMake << "\n"; @@ -413,7 +413,7 @@ bool cmDependsFortran::WriteDependenciesReal(const char* obj, std::string driver = this->TargetDirectory; driver += "/build"; driver = cmSystemTools::ConvertToOutputPath( - this->MaybeConvertToRelativePath(binDir, driver).c_str()); + this->MaybeConvertToRelativePath(binDir, driver)); makeDepends << driver << ": " << obj_m << ".provides.build\n"; } @@ -435,7 +435,7 @@ bool cmDependsFortran::FindModule(std::string const& name, std::string& module) fullName = ip; fullName += "/"; fullName += mod_lower; - if (cmSystemTools::FileExists(fullName.c_str(), true)) { + if (cmSystemTools::FileExists(fullName, true)) { module = fullName; return true; } @@ -444,7 +444,7 @@ bool cmDependsFortran::FindModule(std::string const& name, std::string& module) fullName = ip; fullName += "/"; fullName += mod_upper; - if (cmSystemTools::FileExists(fullName.c_str(), true)) { + if (cmSystemTools::FileExists(fullName, true)) { module = fullName; return true; } @@ -481,7 +481,7 @@ bool cmDependsFortran::CopyModule(const std::vector& args) mod += ".mod"; mod_upper += ".mod"; mod_lower += ".mod"; - if (cmSystemTools::FileExists(mod_upper.c_str(), true)) { + if (cmSystemTools::FileExists(mod_upper, true)) { if (cmDependsFortran::ModulesDiffer(mod_upper.c_str(), stamp.c_str(), compilerId.c_str())) { if (!cmSystemTools::CopyFileAlways(mod_upper, stamp)) { @@ -492,7 +492,7 @@ bool cmDependsFortran::CopyModule(const std::vector& args) } return true; } - if (cmSystemTools::FileExists(mod_lower.c_str(), true)) { + if (cmSystemTools::FileExists(mod_lower, true)) { if (cmDependsFortran::ModulesDiffer(mod_lower.c_str(), stamp.c_str(), compilerId.c_str())) { if (!cmSystemTools::CopyFileAlways(mod_lower, stamp)) { diff --git a/Source/cmExecProgramCommand.cxx b/Source/cmExecProgramCommand.cxx index 88e085d..49f880c 100644 --- a/Source/cmExecProgramCommand.cxx +++ b/Source/cmExecProgramCommand.cxx @@ -81,7 +81,7 @@ bool cmExecProgramCommand::InitialPass(std::vector const& args, std::string output; bool result = true; if (args.size() - count == 2) { - cmSystemTools::MakeDirectory(args[1].c_str()); + cmSystemTools::MakeDirectory(args[1]); result = cmExecProgramCommand::RunCommand(command.c_str(), output, retVal, args[1].c_str(), verbose); } else { @@ -149,7 +149,7 @@ bool cmExecProgramCommand::RunCommand(const char* command, std::string& output, if (quoted.find(command)) { std::string cmd = quoted.match(1); std::string args = quoted.match(2); - if (!cmSystemTools::FileExists(cmd.c_str())) { + if (!cmSystemTools::FileExists(cmd)) { shortCmd = cmd; } else if (!cmSystemTools::GetShortPath(cmd.c_str(), shortCmd)) { cmSystemTools::Error("GetShortPath failed for ", cmd.c_str()); diff --git a/Source/cmExecuteProcessCommand.cxx b/Source/cmExecuteProcessCommand.cxx index 39e774e..679a648 100644 --- a/Source/cmExecuteProcessCommand.cxx +++ b/Source/cmExecuteProcessCommand.cxx @@ -157,7 +157,7 @@ bool cmExecuteProcessCommand::InitialPass(std::vector const& args, } } - if (!this->Makefile->CanIWriteThisFile(output_file.c_str())) { + if (!this->Makefile->CanIWriteThisFile(output_file)) { std::string e = "attempted to output into a file: " + output_file + " into a source directory."; this->SetError(e); diff --git a/Source/cmExportBuildAndroidMKGenerator.cxx b/Source/cmExportBuildAndroidMKGenerator.cxx index 5e2cd53..6f31a2d 100644 --- a/Source/cmExportBuildAndroidMKGenerator.cxx +++ b/Source/cmExportBuildAndroidMKGenerator.cxx @@ -48,8 +48,7 @@ void cmExportBuildAndroidMKGenerator::GenerateImportTargetCode( os << "LOCAL_MODULE := "; os << targetName << "\n"; os << "LOCAL_SRC_FILES := "; - std::string path = - cmSystemTools::ConvertToOutputPath(target->GetFullPath().c_str()); + std::string path = cmSystemTools::ConvertToOutputPath(target->GetFullPath()); os << path << "\n"; } diff --git a/Source/cmExportCommand.cxx b/Source/cmExportCommand.cxx index 1e112eb..c8a727d 100644 --- a/Source/cmExportCommand.cxx +++ b/Source/cmExportCommand.cxx @@ -92,8 +92,8 @@ bool cmExportCommand::InitialPass(std::vector const& args, } // Get the file to write. - if (cmSystemTools::FileIsFullPath(fname.c_str())) { - if (!this->Makefile->CanIWriteThisFile(fname.c_str())) { + if (cmSystemTools::FileIsFullPath(fname)) { + if (!this->Makefile->CanIWriteThisFile(fname)) { std::ostringstream e; e << "FILE option given filename \"" << fname << "\" which is in the source tree.\n"; @@ -346,10 +346,10 @@ void cmExportCommand::StorePackageRegistryDir(std::string const& package, fname += "/.cmake/packages/"; fname += package; #endif - cmSystemTools::MakeDirectory(fname.c_str()); + cmSystemTools::MakeDirectory(fname); fname += "/"; fname += hash; - if (!cmSystemTools::FileExists(fname.c_str())) { + if (!cmSystemTools::FileExists(fname)) { cmGeneratedFileStream entry(fname.c_str(), true); if (entry) { entry << content << "\n"; diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx index 7985d0f..434abdc 100644 --- a/Source/cmExportFileGenerator.cxx +++ b/Source/cmExportFileGenerator.cxx @@ -183,7 +183,7 @@ bool cmExportFileGenerator::PopulateInterfaceLinkLibrariesProperty( return false; } -static bool isSubDirectory(const char* a, const char* b) +static bool isSubDirectory(std::string const& a, std::string const& b) { return (cmSystemTools::ComparePath(a, b) || cmSystemTools::IsSubDirectory(a, b)); @@ -195,13 +195,15 @@ static bool checkInterfaceDirs(const std::string& prepro, { const char* installDir = target->Makefile->GetSafeDefinition("CMAKE_INSTALL_PREFIX"); - const char* topSourceDir = target->GetLocalGenerator()->GetSourceDirectory(); - const char* topBinaryDir = target->GetLocalGenerator()->GetBinaryDirectory(); + std::string const& topSourceDir = + target->GetLocalGenerator()->GetSourceDirectory(); + std::string const& topBinaryDir = + target->GetLocalGenerator()->GetBinaryDirectory(); std::vector parts; cmGeneratorExpression::Split(prepro, parts); - const bool inSourceBuild = strcmp(topSourceDir, topBinaryDir) == 0; + const bool inSourceBuild = topSourceDir == topBinaryDir; bool hadFatalError = false; @@ -231,10 +233,10 @@ static bool checkInterfaceDirs(const std::string& prepro, hadFatalError = true; } } - if (cmHasLiteralPrefix(li.c_str(), "${_IMPORT_PREFIX}")) { + if (cmHasLiteralPrefix(li, "${_IMPORT_PREFIX}")) { continue; } - if (!cmSystemTools::FileIsFullPath(li.c_str())) { + if (!cmSystemTools::FileIsFullPath(li)) { /* clang-format off */ e << "Target \"" << target->GetName() << "\" " << prop << " property contains relative path:\n" @@ -242,9 +244,9 @@ static bool checkInterfaceDirs(const std::string& prepro, /* clang-format on */ target->GetLocalGenerator()->IssueMessage(messageType, e.str()); } - bool inBinary = isSubDirectory(li.c_str(), topBinaryDir); - bool inSource = isSubDirectory(li.c_str(), topSourceDir); - if (isSubDirectory(li.c_str(), installDir)) { + bool inBinary = isSubDirectory(li, topBinaryDir); + bool inSource = isSubDirectory(li, topSourceDir); + if (isSubDirectory(li, installDir)) { // The include directory is inside the install tree. If the // install tree is not inside the source tree or build tree then // fall through to the checks below that the include directory is not @@ -317,7 +319,7 @@ static void prefixItems(std::string& exportDirs) for (std::string const& e : entries) { exportDirs += sep; sep = ";"; - if (!cmSystemTools::FileIsFullPath(e.c_str()) && + if (!cmSystemTools::FileIsFullPath(e) && e.find("${_IMPORT_PREFIX}") == std::string::npos) { exportDirs += "${_IMPORT_PREFIX}/"; } diff --git a/Source/cmExportInstallFileGenerator.cxx b/Source/cmExportInstallFileGenerator.cxx index 1979b15..954b561 100644 --- a/Source/cmExportInstallFileGenerator.cxx +++ b/Source/cmExportInstallFileGenerator.cxx @@ -185,12 +185,12 @@ void cmExportInstallFileGenerator::GenerateImportPrefix(std::ostream& os) os << "# Compute the installation prefix relative to this file.\n" << "get_filename_component(_IMPORT_PREFIX" << " \"${CMAKE_CURRENT_LIST_FILE}\" PATH)\n"; - if (cmHasLiteralPrefix(absDestS.c_str(), "/lib/") || - cmHasLiteralPrefix(absDestS.c_str(), "/lib64/") || - cmHasLiteralPrefix(absDestS.c_str(), "/libx32/") || - cmHasLiteralPrefix(absDestS.c_str(), "/usr/lib/") || - cmHasLiteralPrefix(absDestS.c_str(), "/usr/lib64/") || - cmHasLiteralPrefix(absDestS.c_str(), "/usr/libx32/")) { + if (cmHasLiteralPrefix(absDestS, "/lib/") || + cmHasLiteralPrefix(absDestS, "/lib64/") || + cmHasLiteralPrefix(absDestS, "/libx32/") || + cmHasLiteralPrefix(absDestS, "/usr/lib/") || + cmHasLiteralPrefix(absDestS, "/usr/lib64/") || + cmHasLiteralPrefix(absDestS, "/usr/libx32/")) { // Handle "/usr move" symlinks created by some Linux distros. /* clang-format off */ os << @@ -370,7 +370,7 @@ void cmExportInstallFileGenerator::SetImportLocationProperty( // Construct the installed location of the target. std::string dest = itgen->GetDestination(config); std::string value; - if (!cmSystemTools::FileIsFullPath(dest.c_str())) { + if (!cmSystemTools::FileIsFullPath(dest)) { // The target is installed relative to the installation prefix. value = "${_IMPORT_PREFIX}/"; } diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx index e4bec7f..4b95140 100644 --- a/Source/cmExtraCodeBlocksGenerator.cxx +++ b/Source/cmExtraCodeBlocksGenerator.cxx @@ -5,7 +5,6 @@ #include #include #include -#include #include #include "cmAlgorithms.h" @@ -225,7 +224,7 @@ void cmExtraCodeBlocksGenerator::CreateNewProjectFile( } const std::string& relative = cmSystemTools::RelativePath( - it.second[0]->GetSourceDirectory(), listFile.c_str()); + it.second[0]->GetSourceDirectory(), listFile); std::vector splitted; cmSystemTools::SplitPath(relative, splitted, false); // Split filename from path @@ -296,8 +295,7 @@ void cmExtraCodeBlocksGenerator::CreateNewProjectFile( case cmStateEnums::GLOBAL_TARGET: { // Only add the global targets from CMAKE_BINARY_DIR, // not from the subdirs - if (strcmp(lg->GetCurrentBinaryDirectory(), - lg->GetBinaryDirectory()) == 0) { + if (lg->GetCurrentBinaryDirectory() == lg->GetBinaryDirectory()) { this->AppendTarget(xml, targetName, nullptr, make.c_str(), lg, compiler.c_str(), makeArgs); } @@ -382,12 +380,12 @@ void cmExtraCodeBlocksGenerator::CreateNewProjectFile( std::string const& fullPath = s->GetFullPath(); // Check file position relative to project root dir. - const std::string& relative = cmSystemTools::RelativePath( - (*lg).GetSourceDirectory(), fullPath.c_str()); + const std::string& relative = + cmSystemTools::RelativePath(lg->GetSourceDirectory(), fullPath); // Do not add this file if it has ".." in relative path and // if CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES variable is on. const bool excludeExternal = - cmSystemTools::IsOn((*lg).GetMakefile()->GetSafeDefinition( + cmSystemTools::IsOn(lg->GetMakefile()->GetSafeDefinition( "CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES")); if (excludeExternal && (relative.find("..") != std::string::npos)) { @@ -433,7 +431,7 @@ void cmExtraCodeBlocksGenerator::CreateNewProjectFile( break; } - if (cmSystemTools::FileExists(hname.c_str())) { + if (cmSystemTools::FileExists(hname)) { allFiles[hname].Targets = allFiles[fileName].Targets; break; } diff --git a/Source/cmExtraCodeLiteGenerator.cxx b/Source/cmExtraCodeLiteGenerator.cxx index a37348d..4dbaa3f 100644 --- a/Source/cmExtraCodeLiteGenerator.cxx +++ b/Source/cmExtraCodeLiteGenerator.cxx @@ -64,8 +64,8 @@ void cmExtraCodeLiteGenerator::Generate() const cmMakefile* mf = it.second[0]->GetMakefile(); this->ConfigName = GetConfigurationName(mf); - if (strcmp(it.second[0]->GetCurrentBinaryDirectory(), - it.second[0]->GetBinaryDirectory()) == 0) { + if (it.second[0]->GetCurrentBinaryDirectory() == + it.second[0]->GetBinaryDirectory()) { workspaceOutputDir = it.second[0]->GetCurrentBinaryDirectory(); workspaceProjectName = it.second[0]->GetProjectName(); workspaceSourcePath = it.second[0]->GetSourceDirectory(); @@ -127,8 +127,8 @@ std::vector cmExtraCodeLiteGenerator::CreateProjectsByTarget( std::string filename = outputDir + "/" + targetName + ".project"; retval.push_back(targetName); // Make the project file relative to the workspace - std::string relafilename = cmSystemTools::RelativePath( - this->WorkspacePath.c_str(), filename.c_str()); + std::string relafilename = + cmSystemTools::RelativePath(this->WorkspacePath, filename); std::string visualname = targetName; switch (type) { case cmStateEnums::SHARED_LIBRARY: @@ -167,8 +167,7 @@ std::vector cmExtraCodeLiteGenerator::CreateProjectsByProjectMaps( std::string filename = outputDir + "/" + projectName + ".project"; // Make the project file relative to the workspace - filename = cmSystemTools::RelativePath(this->WorkspacePath.c_str(), - filename.c_str()); + filename = cmSystemTools::RelativePath(this->WorkspacePath, filename); // create a project file this->CreateProjectFile(it.second); @@ -318,7 +317,7 @@ void cmExtraCodeLiteGenerator::FindMatchingHeaderfiles( break; } - if (cmSystemTools::FileExists(hname.c_str())) { + if (cmSystemTools::FileExists(hname)) { otherFiles.insert(hname); break; } @@ -335,8 +334,7 @@ void cmExtraCodeLiteGenerator::CreateFoldersAndFiles( size_t numOfEndEl = 0; for (std::string const& cFile : cFiles) { - std::string frelapath = - cmSystemTools::RelativePath(projectPath.c_str(), cFile.c_str()); + std::string frelapath = cmSystemTools::RelativePath(projectPath, cFile); cmsys::SystemTools::SplitPath(frelapath, components, false); components.pop_back(); // erase last member -> it is file, not folder components.erase(components.begin()); // erase "root" @@ -474,8 +472,7 @@ void cmExtraCodeLiteGenerator::CreateProjectSourceEntries( std::string outputPath = mf->GetSafeDefinition("EXECUTABLE_OUTPUT_PATH"); std::string relapath; if (!outputPath.empty()) { - relapath = cmSystemTools::RelativePath(this->WorkspacePath.c_str(), - outputPath.c_str()); + relapath = cmSystemTools::RelativePath(this->WorkspacePath, outputPath); xml.Attribute("OutputFile", relapath + "/$(ProjectName)"); } else { xml.Attribute("OutputFile", "$(IntermediateDirectory)/$(ProjectName)"); diff --git a/Source/cmExtraKateGenerator.cxx b/Source/cmExtraKateGenerator.cxx index 79cc6ef..7a83e41 100644 --- a/Source/cmExtraKateGenerator.cxx +++ b/Source/cmExtraKateGenerator.cxx @@ -81,12 +81,12 @@ void cmExtraKateGenerator::WriteTargets(const cmLocalGenerator* lg, const std::string make = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); const std::string makeArgs = mf->GetSafeDefinition("CMAKE_KATE_MAKE_ARGUMENTS"); - const char* homeOutputDir = lg->GetBinaryDirectory(); + std::string const& homeOutputDir = lg->GetBinaryDirectory(); /* clang-format off */ fout << "\t\"build\": {\n" - "\t\t\"directory\": \"" << lg->GetBinaryDirectory() << "\",\n" + "\t\t\"directory\": \"" << homeOutputDir << "\",\n" "\t\t\"default_target\": \"all\",\n" "\t\t\"clean_target\": \"clean\",\n"; /* clang-format on */ @@ -195,13 +195,13 @@ void cmExtraKateGenerator::AppendTarget(cmGeneratedFileStream& fout, const std::string& make, const std::string& makeArgs, const std::string& path, - const char* homeOutputDir) const + const std::string& homeOutputDir) const { static char JsonSep = ' '; fout << "\t\t\t" << JsonSep << "{\"name\":\"" << target << "\", " "\"build_cmd\":\"" - << make << " -C \\\"" << (this->UseNinja ? homeOutputDir : path.c_str()) + << make << " -C \\\"" << (this->UseNinja ? homeOutputDir : path) << "\\\" " << makeArgs << " " << target << "\"}\n"; JsonSep = ','; @@ -228,14 +228,14 @@ std::string cmExtraKateGenerator::GenerateFilesString( { std::string s = lg->GetSourceDirectory(); s += "/.git"; - if (cmSystemTools::FileExists(s.c_str())) { - return std::string("\"git\": 1 "); + if (cmSystemTools::FileExists(s)) { + return "\"git\": 1 "; } s = lg->GetSourceDirectory(); s += "/.svn"; - if (cmSystemTools::FileExists(s.c_str())) { - return std::string("\"svn\": 1 "); + if (cmSystemTools::FileExists(s)) { + return "\"svn\": 1 "; } s = lg->GetSourceDirectory(); diff --git a/Source/cmExtraKateGenerator.h b/Source/cmExtraKateGenerator.h index 9716fe7..a4355f0 100644 --- a/Source/cmExtraKateGenerator.h +++ b/Source/cmExtraKateGenerator.h @@ -31,7 +31,8 @@ private: cmGeneratedFileStream& fout) const; void AppendTarget(cmGeneratedFileStream& fout, const std::string& target, const std::string& make, const std::string& makeArgs, - const std::string& path, const char* homeOutputDir) const; + const std::string& path, + const std::string& homeOutputDir) const; std::string GenerateFilesString(const cmLocalGenerator* lg) const; std::string GetPathBasename(const std::string& path) const; diff --git a/Source/cmExtraSublimeTextGenerator.cxx b/Source/cmExtraSublimeTextGenerator.cxx index a89c187..46dcaf6 100644 --- a/Source/cmExtraSublimeTextGenerator.cxx +++ b/Source/cmExtraSublimeTextGenerator.cxx @@ -188,8 +188,7 @@ void cmExtraSublimeTextGenerator::AppendAllTargets( case cmStateEnums::GLOBAL_TARGET: { // Only add the global targets from CMAKE_BINARY_DIR, // not from the subdirs - if (strcmp(lg->GetCurrentBinaryDirectory(), - lg->GetBinaryDirectory()) == 0) { + if (lg->GetCurrentBinaryDirectory() == lg->GetBinaryDirectory()) { this->AppendTarget(fout, targetName, lg, nullptr, make.c_str(), makefile, compiler.c_str(), sourceFileFlags, false); diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index b7ab539..d3dcc01 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -183,14 +183,14 @@ bool cmFileCommand::HandleWriteCommand(std::vector const& args, i++; // Get rid of subcommand std::string fileName = *i; - if (!cmsys::SystemTools::FileIsFullPath(i->c_str())) { + if (!cmsys::SystemTools::FileIsFullPath(*i)) { fileName = this->Makefile->GetCurrentSourceDirectory(); fileName += "/" + *i; } i++; - if (!this->Makefile->CanIWriteThisFile(fileName.c_str())) { + if (!this->Makefile->CanIWriteThisFile(fileName)) { std::string e = "attempted to write a file: " + fileName + " into a source directory."; this->SetError(e); @@ -198,7 +198,7 @@ bool cmFileCommand::HandleWriteCommand(std::vector const& args, return false; } std::string dir = cmSystemTools::GetFilenamePath(fileName); - cmSystemTools::MakeDirectory(dir.c_str()); + cmSystemTools::MakeDirectory(dir); mode_t mode = 0; @@ -258,7 +258,7 @@ bool cmFileCommand::HandleReadCommand(std::vector const& args) argHelper.Parse(&args, nullptr); std::string fileName = fileNameArg.GetString(); - if (!cmsys::SystemTools::FileIsFullPath(fileName.c_str())) { + if (!cmsys::SystemTools::FileIsFullPath(fileName)) { fileName = this->Makefile->GetCurrentSourceDirectory(); fileName += "/" + fileNameArg.GetString(); } @@ -374,7 +374,7 @@ bool cmFileCommand::HandleStringsCommand(std::vector const& args) // Get the file to read. std::string fileName = args[1]; - if (!cmsys::SystemTools::FileIsFullPath(fileName.c_str())) { + if (!cmsys::SystemTools::FileIsFullPath(fileName)) { fileName = this->Makefile->GetCurrentSourceDirectory(); fileName += "/" + args[1]; } @@ -800,7 +800,7 @@ bool cmFileCommand::HandleGlobCommand(std::vector const& args, } cmsys::Glob::GlobMessages globMessages; - if (!cmsys::SystemTools::FileIsFullPath(i->c_str())) { + if (!cmsys::SystemTools::FileIsFullPath(*i)) { std::string expr = this->Makefile->GetCurrentSourceDirectory(); // Handle script mode if (!expr.empty()) { @@ -884,19 +884,19 @@ bool cmFileCommand::HandleMakeDirectoryCommand( std::string expr; for (; i != args.end(); ++i) { const std::string* cdir = &(*i); - if (!cmsys::SystemTools::FileIsFullPath(i->c_str())) { + if (!cmsys::SystemTools::FileIsFullPath(*i)) { expr = this->Makefile->GetCurrentSourceDirectory(); expr += "/" + *i; cdir = &expr; } - if (!this->Makefile->CanIWriteThisFile(cdir->c_str())) { + if (!this->Makefile->CanIWriteThisFile(*cdir)) { std::string e = "attempted to create a directory: " + *cdir + " into a source directory."; this->SetError(e); cmSystemTools::SetFatalErrorOccured(); return false; } - if (!cmSystemTools::MakeDirectory(cdir->c_str())) { + if (!cmSystemTools::MakeDirectory(*cdir)) { std::string error = "problem creating directory: " + *cdir; this->SetError(error); return false; @@ -1294,7 +1294,7 @@ bool cmFileCopier::CheckValue(std::string const& arg) this->Files.push_back(arg); break; case DoingDestination: - if (arg.empty() || cmSystemTools::FileIsFullPath(arg.c_str())) { + if (arg.empty() || cmSystemTools::FileIsFullPath(arg)) { this->Destination = arg; } else { this->Destination = this->Makefile->GetCurrentBinaryDirectory(); @@ -1303,7 +1303,7 @@ bool cmFileCopier::CheckValue(std::string const& arg) this->Doing = DoingNone; break; case DoingFilesFromDir: - if (cmSystemTools::FileIsFullPath(arg.c_str())) { + if (cmSystemTools::FileIsFullPath(arg)) { this->FilesFromDir = arg; } else { this->FilesFromDir = this->Makefile->GetCurrentSourceDirectory(); @@ -1991,7 +1991,7 @@ bool cmFileInstaller::HandleInstallDestination() } if (this->InstallType != cmInstallType_DIRECTORY) { - if (!cmSystemTools::FileExists(destination.c_str())) { + if (!cmSystemTools::FileExists(destination)) { if (!cmSystemTools::MakeDirectory(destination, default_dir_mode)) { std::string errstring = "cannot create directory: " + destination + ". Maybe need administrative privileges."; @@ -2293,22 +2293,21 @@ bool cmFileCommand::HandleRelativePathCommand( const std::string& directoryName = args[2]; const std::string& fileName = args[3]; - if (!cmSystemTools::FileIsFullPath(directoryName.c_str())) { + if (!cmSystemTools::FileIsFullPath(directoryName)) { std::string errstring = "RELATIVE_PATH must be passed a full path to the directory: " + directoryName; this->SetError(errstring); return false; } - if (!cmSystemTools::FileIsFullPath(fileName.c_str())) { + if (!cmSystemTools::FileIsFullPath(fileName)) { std::string errstring = "RELATIVE_PATH must be passed a full path to the file: " + fileName; this->SetError(errstring); return false; } - std::string res = - cmSystemTools::RelativePath(directoryName.c_str(), fileName.c_str()); + std::string res = cmSystemTools::RelativePath(directoryName, fileName); this->Makefile->AddDefinition(outVar, res.c_str()); return true; } @@ -2322,12 +2321,12 @@ bool cmFileCommand::HandleRename(std::vector const& args) // Compute full path for old and new names. std::string oldname = args[1]; - if (!cmsys::SystemTools::FileIsFullPath(oldname.c_str())) { + if (!cmsys::SystemTools::FileIsFullPath(oldname)) { oldname = this->Makefile->GetCurrentSourceDirectory(); oldname += "/" + args[1]; } std::string newname = args[2]; - if (!cmsys::SystemTools::FileIsFullPath(newname.c_str())) { + if (!cmsys::SystemTools::FileIsFullPath(newname)) { newname = this->Makefile->GetCurrentSourceDirectory(); newname += "/" + args[2]; } @@ -2358,7 +2357,7 @@ bool cmFileCommand::HandleRemove(std::vector const& args, i++; // Get rid of subcommand for (; i != args.end(); ++i) { std::string fileName = *i; - if (!cmsys::SystemTools::FileIsFullPath(fileName.c_str())) { + if (!cmsys::SystemTools::FileIsFullPath(fileName)) { fileName = this->Makefile->GetCurrentSourceDirectory(); fileName += "/" + *i; } @@ -2400,7 +2399,7 @@ bool cmFileCommand::HandleCMakePathCommand( if (!nativePath) { cmSystemTools::ConvertToUnixSlashes(*j); } else { - *j = cmSystemTools::ConvertToOutputPath(j->c_str()); + *j = cmSystemTools::ConvertToOutputPath(*j); // remove double quotes in the path cmsys::String& s = *j; @@ -2736,7 +2735,7 @@ bool cmFileCommand::HandleDownloadCommand(std::vector const& args) // and the existing file already has the expected hash, then simply // return. // - if (cmSystemTools::FileExists(file.c_str()) && hash.get()) { + if (cmSystemTools::FileExists(file) && hash.get()) { std::string msg; std::string actualHash = hash->HashFile(file); if (actualHash == expectedHash) { @@ -2755,8 +2754,7 @@ bool cmFileCommand::HandleDownloadCommand(std::vector const& args) // as we receive downloaded bits from curl... // std::string dir = cmSystemTools::GetFilenamePath(file); - if (!cmSystemTools::FileExists(dir.c_str()) && - !cmSystemTools::MakeDirectory(dir.c_str())) { + if (!cmSystemTools::FileExists(dir) && !cmSystemTools::MakeDirectory(dir)) { std::string errstring = "DOWNLOAD error: cannot create directory '" + dir + "' - Specify file by full path name and verify that you " "have directory creation and file write privileges."; diff --git a/Source/cmFindLibraryCommand.cxx b/Source/cmFindLibraryCommand.cxx index 0af6fce..02bae82 100644 --- a/Source/cmFindLibraryCommand.cxx +++ b/Source/cmFindLibraryCommand.cxx @@ -353,7 +353,7 @@ bool cmFindLibraryHelper::CheckDirectoryForName(std::string const& path, if (name.TryRaw) { this->TestPath = path; this->TestPath += name.Raw; - if (cmSystemTools::FileExists(this->TestPath.c_str(), true)) { + if (cmSystemTools::FileExists(this->TestPath, true)) { this->BestPath = cmSystemTools::CollapseFullPath(this->TestPath); cmSystemTools::ConvertToUnixSlashes(this->BestPath); return true; diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index 293a967..2f3a85b 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -660,7 +660,7 @@ bool cmFindPackageCommand::HandlePackageMode() cmSystemTools::ConvertToUnixSlashes(dir); // Treat relative paths with respect to the current source dir. - if (!cmSystemTools::FileIsFullPath(dir.c_str())) { + if (!cmSystemTools::FileIsFullPath(dir)) { dir = "/" + dir; dir = this->Makefile->GetCurrentSourceDirectory() + dir; } @@ -1346,10 +1346,10 @@ bool cmFindPackageCommand::CheckPackageRegistryEntry(const std::string& fname, cmSearchPath& outPaths) { // Parse the content of one package registry entry. - if (cmSystemTools::FileIsFullPath(fname.c_str())) { + if (cmSystemTools::FileIsFullPath(fname)) { // The first line in the stream is the full path to a file or // directory containing the package. - if (cmSystemTools::FileExists(fname.c_str())) { + if (cmSystemTools::FileExists(fname)) { // The path exists. Look for the package here. if (!cmSystemTools::FileIsDirectory(fname)) { outPaths.AddPath(cmSystemTools::GetFilenamePath(fname)); @@ -1442,8 +1442,7 @@ bool cmFindPackageCommand::FindConfigFile(std::string const& dir, if (this->DebugMode) { fprintf(stderr, "Checking file [%s]\n", file.c_str()); } - if (cmSystemTools::FileExists(file.c_str(), true) && - this->CheckVersion(file)) { + if (cmSystemTools::FileExists(file, true) && this->CheckVersion(file)) { return true; } } @@ -1463,7 +1462,7 @@ bool cmFindPackageCommand::CheckVersion(std::string const& config_file) // Look for foo-config-version.cmake std::string version_file = version_file_base; version_file += "-version.cmake"; - if (!haveResult && cmSystemTools::FileExists(version_file.c_str(), true)) { + if (!haveResult && cmSystemTools::FileExists(version_file, true)) { result = this->CheckVersionFile(version_file, version); haveResult = true; } @@ -1471,7 +1470,7 @@ bool cmFindPackageCommand::CheckVersion(std::string const& config_file) // Look for fooConfigVersion.cmake version_file = version_file_base; version_file += "Version.cmake"; - if (!haveResult && cmSystemTools::FileExists(version_file.c_str(), true)) { + if (!haveResult && cmSystemTools::FileExists(version_file, true)) { result = this->CheckVersionFile(version_file, version); haveResult = true; } diff --git a/Source/cmFindPathCommand.cxx b/Source/cmFindPathCommand.cxx index ea26410..38ff2ed 100644 --- a/Source/cmFindPathCommand.cxx +++ b/Source/cmFindPathCommand.cxx @@ -94,7 +94,7 @@ std::string cmFindPathCommand::FindHeaderInFramework(std::string const& file, std::string intPath = fpath; intPath += "/Headers/"; intPath += fileName; - if (cmSystemTools::FileExists(intPath.c_str())) { + if (cmSystemTools::FileExists(intPath)) { if (this->IncludeFileInPath) { return intPath; } @@ -128,7 +128,7 @@ std::string cmFindPathCommand::FindNormalHeader() for (std::string const& sp : this->SearchPaths) { tryPath = sp; tryPath += n; - if (cmSystemTools::FileExists(tryPath.c_str())) { + if (cmSystemTools::FileExists(tryPath)) { if (this->IncludeFileInPath) { return tryPath; } diff --git a/Source/cmFortranParserImpl.cxx b/Source/cmFortranParserImpl.cxx index 81f1286..dd4f16b 100644 --- a/Source/cmFortranParserImpl.cxx +++ b/Source/cmFortranParserImpl.cxx @@ -17,14 +17,14 @@ bool cmFortranParser_s::FindIncludeFile(const char* dir, // If the file is a full path, include it directly. if (cmSystemTools::FileIsFullPath(includeName)) { fileName = includeName; - return cmSystemTools::FileExists(fileName.c_str(), true); + return cmSystemTools::FileExists(fileName, true); } // Check for the file in the directory containing the including // file. std::string fullName = dir; fullName += "/"; fullName += includeName; - if (cmSystemTools::FileExists(fullName.c_str(), true)) { + if (cmSystemTools::FileExists(fullName, true)) { fileName = fullName; return true; } @@ -34,7 +34,7 @@ bool cmFortranParser_s::FindIncludeFile(const char* dir, fullName = i; fullName += "/"; fullName += includeName; - if (cmSystemTools::FileExists(fullName.c_str(), true)) { + if (cmSystemTools::FileExists(fullName, true)) { fileName = fullName; return true; } diff --git a/Source/cmGeneratedFileStream.cxx b/Source/cmGeneratedFileStream.cxx index 6aa593c..c0a74a5 100644 --- a/Source/cmGeneratedFileStream.cxx +++ b/Source/cmGeneratedFileStream.cxx @@ -147,7 +147,7 @@ void cmGeneratedFileStreamBase::Open(const char* name) cmSystemTools::RemoveFile(this->TempName); std::string dir = cmSystemTools::GetFilenamePath(this->TempName); - cmSystemTools::MakeDirectory(dir.c_str()); + cmSystemTools::MakeDirectory(dir); } bool cmGeneratedFileStreamBase::Close() diff --git a/Source/cmGeneratorExpression.cxx b/Source/cmGeneratorExpression.cxx index 6979b38..64ec30d 100644 --- a/Source/cmGeneratorExpression.cxx +++ b/Source/cmGeneratorExpression.cxx @@ -203,7 +203,7 @@ static void prefixItems(const std::string& content, std::string& result, for (std::string const& e : entries) { result += sep; sep = ";"; - if (!cmSystemTools::FileIsFullPath(e.c_str()) && + if (!cmSystemTools::FileIsFullPath(e) && cmGeneratorExpression::Find(e) != 0) { result += prefix; } diff --git a/Source/cmGeneratorExpressionNode.cxx b/Source/cmGeneratorExpressionNode.cxx index 34ef45f..e2cac35 100644 --- a/Source/cmGeneratorExpressionNode.cxx +++ b/Source/cmGeneratorExpressionNode.cxx @@ -1074,8 +1074,7 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode CM_FOR_EACH_TRANSITIVE_PROPERTY_NAME(POPULATE_INTERFACE_PROPERTY_NAME) // Note that the above macro terminates with an else - /* else */ if (cmHasLiteralPrefix(propertyName.c_str(), - "COMPILE_DEFINITIONS_")) { + /* else */ if (cmHasLiteralPrefix(propertyName, "COMPILE_DEFINITIONS_")) { cmPolicies::PolicyStatus polSt = context->LG->GetPolicyStatus(cmPolicies::CMP0043); if (polSt == cmPolicies::WARN || polSt == cmPolicies::OLD) { diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index ef3dc10..f97d8ef 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -842,7 +842,7 @@ static bool processSources( return contextDependent; } - if (!targetName.empty() && !cmSystemTools::FileIsFullPath(src.c_str())) { + if (!targetName.empty() && !cmSystemTools::FileIsFullPath(src)) { std::ostringstream err; if (!targetName.empty()) { err << "Target \"" << targetName @@ -2237,7 +2237,7 @@ bool cmTargetTraceDependencies::IsUtility(std::string const& dep) // If we find the target and the dep was given as a full path, // then make sure it was not a full path to something else, and // the fact that the name matched a target was just a coincidence. - if (cmSystemTools::FileIsFullPath(dep.c_str())) { + if (cmSystemTools::FileIsFullPath(dep)) { if (t->GetType() >= cmStateEnums::EXECUTABLE && t->GetType() <= cmStateEnums::MODULE_LIBRARY) { // This is really only for compatibility so we do not need to @@ -2437,7 +2437,7 @@ static void processIncludeDirectories( std::string usedIncludes; for (std::string& entryInclude : entryIncludes) { - if (fromImported && !cmSystemTools::FileExists(entryInclude.c_str())) { + if (fromImported && !cmSystemTools::FileExists(entryInclude)) { std::ostringstream e; cmake::MessageType messageType = cmake::FATAL_ERROR; if (checkCMP0027) { @@ -2469,7 +2469,7 @@ static void processIncludeDirectories( return; } - if (!cmSystemTools::FileIsFullPath(entryInclude.c_str())) { + if (!cmSystemTools::FileIsFullPath(entryInclude)) { std::ostringstream e; bool noMessage = false; cmake::MessageType messageType = cmake::FATAL_ERROR; @@ -3540,7 +3540,7 @@ void checkPropertyConsistency(cmGeneratorTarget const* depender, for (std::string const& p : props) { std::string pname = cmSystemTools::HelpFileName(p); std::string pfile = pdir + pname + ".rst"; - if (cmSystemTools::FileExists(pfile.c_str(), true)) { + if (cmSystemTools::FileExists(pfile, true)) { std::ostringstream e; e << "Target \"" << dependee->GetName() << "\" has property \"" << p << "\" listed in its " << propName diff --git a/Source/cmGetDirectoryPropertyCommand.cxx b/Source/cmGetDirectoryPropertyCommand.cxx index a8cf6ab..bf464d9 100644 --- a/Source/cmGetDirectoryPropertyCommand.cxx +++ b/Source/cmGetDirectoryPropertyCommand.cxx @@ -34,7 +34,7 @@ bool cmGetDirectoryPropertyCommand::InitialPass( } std::string sd = *i; // make sure the start dir is a full path - if (!cmSystemTools::FileIsFullPath(sd.c_str())) { + if (!cmSystemTools::FileIsFullPath(sd)) { sd = this->Makefile->GetCurrentSourceDirectory(); sd += "/"; sd += *i; diff --git a/Source/cmGetPropertyCommand.cxx b/Source/cmGetPropertyCommand.cxx index 4494c3e..1d812bd 100644 --- a/Source/cmGetPropertyCommand.cxx +++ b/Source/cmGetPropertyCommand.cxx @@ -206,7 +206,7 @@ bool cmGetPropertyCommand::HandleDirectoryMode() // Construct the directory name. Interpret relative paths with // respect to the current directory. std::string dir = this->Name; - if (!cmSystemTools::FileIsFullPath(dir.c_str())) { + if (!cmSystemTools::FileIsFullPath(dir)) { dir = this->Makefile->GetCurrentSourceDirectory(); dir += "/"; dir += this->Name; diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx index d459436..270413c 100644 --- a/Source/cmGhsMultiTargetGenerator.cxx +++ b/Source/cmGhsMultiTargetGenerator.cxx @@ -493,7 +493,7 @@ void cmGhsMultiTargetGenerator::WriteSources( cmSystemTools::ConvertToUnixSlashes(sgPath); cmGlobalGhsMultiGenerator::AddFilesUpToPath( this->GetFolderBuildStreams(), &this->FolderBuildStreams, - this->LocalGenerator->GetBinaryDirectory(), sgPath, + this->LocalGenerator->GetBinaryDirectory().c_str(), sgPath, GhsMultiGpj::SUBPROJECT, this->RelBuildFilePath); std::string fullSourcePath((*si)->GetFullPath()); diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 153684a..c805b98 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -510,7 +510,7 @@ void cmGlobalGenerator::EnableLanguage( bool const readCMakeSystem = !mf->GetDefinition("CMAKE_SYSTEM_LOADED"); if (readCMakeSystem) { fpath += "/CMakeSystem.cmake"; - if (cmSystemTools::FileExists(fpath.c_str())) { + if (cmSystemTools::FileExists(fpath)) { mf->ReadListFile(fpath.c_str()); } } @@ -623,7 +623,7 @@ void cmGlobalGenerator::EnableLanguage( // If the existing build tree was already configured with this // version of CMake then try to load the configured file first // to avoid duplicate compiler tests. - if (cmSystemTools::FileExists(fpath.c_str())) { + if (cmSystemTools::FileExists(fpath)) { if (!mf->ReadListFile(fpath.c_str())) { cmSystemTools::Error("Could not find cmake module file: ", fpath.c_str()); @@ -842,7 +842,7 @@ void cmGlobalGenerator::EnableLanguage( projectCompatibility += "/Modules/"; projectCompatibility += mf->GetSafeDefinition("PROJECT_NAME"); projectCompatibility += "Compatibility.cmake"; - if (cmSystemTools::FileExists(projectCompatibility.c_str())) { + if (cmSystemTools::FileExists(projectCompatibility)) { mf->ReadListFile(projectCompatibility.c_str()); } // Inform any extra generator of the new language. @@ -1205,7 +1205,7 @@ void cmGlobalGenerator::Configure() f += this->CMakeInstance->GetCMakeFilesDirectory(); f += "/"; f += *log; - if (cmSystemTools::FileExists(f.c_str())) { + if (cmSystemTools::FileExists(f)) { msg << "\nSee also \"" << f << "\"."; } } @@ -1901,7 +1901,7 @@ std::string cmGlobalGenerator::GenerateCMakeBuildCommand( const std::string& native, bool ignoreErrors) { std::string makeCommand = cmSystemTools::GetCMakeCommand(); - makeCommand = cmSystemTools::ConvertToOutputPath(makeCommand.c_str()); + makeCommand = cmSystemTools::ConvertToOutputPath(makeCommand); makeCommand += " --build ."; if (!config.empty()) { makeCommand += " --config \""; @@ -2269,7 +2269,7 @@ void cmGlobalGenerator::AddGlobalTarget_Package( cmMakefile* mf = this->Makefiles[0]; std::string configFile = mf->GetCurrentBinaryDirectory(); configFile += "/CPackConfig.cmake"; - if (!cmSystemTools::FileExists(configFile.c_str())) { + if (!cmSystemTools::FileExists(configFile)) { return; } @@ -2319,7 +2319,7 @@ void cmGlobalGenerator::AddGlobalTarget_PackageSource( cmMakefile* mf = this->Makefiles[0]; std::string configFile = mf->GetCurrentBinaryDirectory(); configFile += "/CPackSourceConfig.cmake"; - if (!cmSystemTools::FileExists(configFile.c_str())) { + if (!cmSystemTools::FileExists(configFile)) { return; } @@ -2854,7 +2854,7 @@ void cmGlobalGenerator::CheckRuleHashes(std::string const& pfile, // that if the feature is turned back on and the rule has // changed the file is still rebuilt. std::string fpath = cmSystemTools::CollapseFullPath(fname, home.c_str()); - if (cmSystemTools::FileExists(fpath.c_str())) { + if (cmSystemTools::FileExists(fpath)) { RuleHash hash; strncpy(hash.Data, line.c_str(), 32); this->RuleHashes[fname] = hash; @@ -2920,7 +2920,7 @@ void cmGlobalGenerator::WriteSummary(cmGeneratorTarget* target) Json::Value& lj_target_labels = lj_target["labels"] = Json::arrayValue; Json::Value& lj_sources = lj_root["sources"] = Json::arrayValue; - cmSystemTools::MakeDirectory(dir.c_str()); + cmSystemTools::MakeDirectory(dir); cmGeneratedFileStream fout(file.c_str()); std::vector labels; @@ -3066,7 +3066,7 @@ bool cmGlobalGenerator::GenerateCPackPropertiesFile() std::string path = this->CMakeInstance->GetHomeOutputDirectory(); path += "/CPackProperties.cmake"; - if (!cmSystemTools::FileExists(path.c_str()) && installedFiles.empty()) { + if (!cmSystemTools::FileExists(path) && installedFiles.empty()) { return true; } diff --git a/Source/cmGlobalGhsMultiGenerator.cxx b/Source/cmGlobalGhsMultiGenerator.cxx index 788a179..946ed80 100644 --- a/Source/cmGlobalGhsMultiGenerator.cxx +++ b/Source/cmGlobalGhsMultiGenerator.cxx @@ -447,8 +447,8 @@ void cmGlobalGhsMultiGenerator::UpdateBuildFiles( this->TargetFolderBuildStreams.find(folderName)) { this->AddFilesUpToPath( GetBuildFileStream(), &this->TargetFolderBuildStreams, - this->GetCMakeInstance()->GetHomeOutputDirectory(), folderName, - GhsMultiGpj::PROJECT); + this->GetCMakeInstance()->GetHomeOutputDirectory().c_str(), + folderName, GhsMultiGpj::PROJECT); } std::vector splitPath = cmSystemTools::SplitString( cmGhsMultiTargetGenerator::GetRelBuildFileName(tgt)); diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index eff2e53..b251f86 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -870,7 +870,7 @@ std::string const& cmGlobalNinjaGenerator::ConvertToNinjaPath( cmLocalNinjaGenerator* ng = static_cast(this->LocalGenerators[0]); - const char* bin_dir = ng->GetState()->GetBinaryDirectory(); + std::string const& bin_dir = ng->GetState()->GetBinaryDirectory(); std::string convPath = ng->ConvertToRelativePath(bin_dir, path); convPath = this->NinjaOutputPath(convPath); #ifdef _WIN32 @@ -902,7 +902,7 @@ void cmGlobalNinjaGenerator::AddCXXCompileCommand( } std::string sourceFileName = sourceFile; - if (!cmSystemTools::FileIsFullPath(sourceFileName.c_str())) { + if (!cmSystemTools::FileIsFullPath(sourceFileName)) { sourceFileName = cmSystemTools::CollapseFullPath( sourceFileName, this->GetCMakeInstance()->GetHomeOutputDirectory()); } diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index d6307eb..d990a6c 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -459,10 +459,9 @@ void cmGlobalUnixMakefileGenerator3::WriteDirectoryRules2( } // Begin the directory-level rules section. - std::string dir = cmSystemTools::ConvertToOutputPath( - lg->ConvertToRelativePath(lg->GetBinaryDirectory(), - lg->GetCurrentBinaryDirectory()) - .c_str()); + std::string dir = + cmSystemTools::ConvertToOutputPath(lg->ConvertToRelativePath( + lg->GetBinaryDirectory(), lg->GetCurrentBinaryDirectory())); lg->WriteDivider(ruleFileStream); ruleFileStream << "# Directory level rules for directory " << dir << "\n\n"; diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index d7ebcac..a4570e1 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -916,7 +916,7 @@ bool cmGlobalVisualStudioGenerator::Open(const std::string& bindir, const std::string& projectName, bool dryRun) { - std::string buildDir = cmSystemTools::ConvertToOutputPath(bindir.c_str()); + std::string buildDir = cmSystemTools::ConvertToOutputPath(bindir); std::string sln = buildDir + "\\" + projectName + ".sln"; if (dryRun) { diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index 7668fd0..b1afdc9 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -3442,7 +3442,8 @@ void cmGlobalXCodeGenerator::GetDocumentation(cmDocumentationEntry& entry) entry.Brief = "Generate Xcode project files."; } -std::string cmGlobalXCodeGenerator::ConvertToRelativeForMake(const char* p) +std::string cmGlobalXCodeGenerator::ConvertToRelativeForMake( + std::string const& p) { return cmSystemTools::ConvertToOutputPath(p); } diff --git a/Source/cmGlobalXCodeGenerator.h b/Source/cmGlobalXCodeGenerator.h index d173f7a..b45887e 100644 --- a/Source/cmGlobalXCodeGenerator.h +++ b/Source/cmGlobalXCodeGenerator.h @@ -119,7 +119,7 @@ private: std::string XCodeEscapePath(const std::string& p); std::string RelativeToSource(const char* p); std::string RelativeToBinary(const char* p); - std::string ConvertToRelativeForMake(const char* p); + std::string ConvertToRelativeForMake(std::string const& p); void CreateCustomCommands(cmXCodeObject* buildPhases, cmXCodeObject* sourceBuildPhase, cmXCodeObject* headerBuildPhase, diff --git a/Source/cmIncludeCommand.cxx b/Source/cmIncludeCommand.cxx index cd4d850..b42d75e 100644 --- a/Source/cmIncludeCommand.cxx +++ b/Source/cmIncludeCommand.cxx @@ -63,7 +63,7 @@ bool cmIncludeCommand::InitialPass(std::vector const& args, return true; } - if (!cmSystemTools::FileIsFullPath(fname.c_str())) { + if (!cmSystemTools::FileIsFullPath(fname)) { // Not a path. Maybe module. std::string module = fname; module += ".cmake"; @@ -112,7 +112,7 @@ bool cmIncludeCommand::InitialPass(std::vector const& args, std::string listFile = cmSystemTools::CollapseFullPath( fname, this->Makefile->GetCurrentSourceDirectory()); - if (optional && !cmSystemTools::FileExists(listFile.c_str())) { + if (optional && !cmSystemTools::FileExists(listFile)) { if (!resultVarName.empty()) { this->Makefile->AddDefinition(resultVarName, "NOTFOUND"); } diff --git a/Source/cmIncludeDirectoryCommand.cxx b/Source/cmIncludeDirectoryCommand.cxx index 045926a..4f80fb8 100644 --- a/Source/cmIncludeDirectoryCommand.cxx +++ b/Source/cmIncludeDirectoryCommand.cxx @@ -123,7 +123,7 @@ void cmIncludeDirectoryCommand::NormalizeInclude(std::string& inc) if (!cmSystemTools::IsOff(inc.c_str())) { cmSystemTools::ConvertToUnixSlashes(inc); - if (!cmSystemTools::FileIsFullPath(inc.c_str())) { + if (!cmSystemTools::FileIsFullPath(inc)) { if (!StartsWithGeneratorExpression(inc)) { std::string tmp = this->Makefile->GetCurrentSourceDirectory(); tmp += "/"; diff --git a/Source/cmInstallCommand.cxx b/Source/cmInstallCommand.cxx index 208f0ad..394f976 100644 --- a/Source/cmInstallCommand.cxx +++ b/Source/cmInstallCommand.cxx @@ -155,7 +155,7 @@ bool cmInstallCommand::HandleScriptMode(std::vector const& args) } else if (doing_script) { doing_script = false; std::string script = arg; - if (!cmSystemTools::FileIsFullPath(script.c_str())) { + if (!cmSystemTools::FileIsFullPath(script)) { script = this->Makefile->GetCurrentSourceDirectory(); script += "/"; script += arg; @@ -1045,14 +1045,14 @@ bool cmInstallCommand::HandleDirectoryMode( // Convert this directory to a full path. std::string dir = args[i]; std::string::size_type gpos = cmGeneratorExpression::Find(dir); - if (gpos != 0 && !cmSystemTools::FileIsFullPath(dir.c_str())) { + if (gpos != 0 && !cmSystemTools::FileIsFullPath(dir)) { dir = this->Makefile->GetCurrentSourceDirectory(); dir += "/"; dir += args[i]; } // Make sure the name is a directory. - if (cmSystemTools::FileExists(dir.c_str()) && + if (cmSystemTools::FileExists(dir) && !cmSystemTools::FileIsDirectory(dir)) { std::ostringstream e; e << args[0] << " given non-directory \"" << args[i] @@ -1375,7 +1375,7 @@ bool cmInstallCommand::MakeFilesFullPath( for (std::string const& relFile : relFiles) { std::string file = relFile; std::string::size_type gpos = cmGeneratorExpression::Find(file); - if (gpos != 0 && !cmSystemTools::FileIsFullPath(file.c_str())) { + if (gpos != 0 && !cmSystemTools::FileIsFullPath(file)) { file = this->Makefile->GetCurrentSourceDirectory(); file += "/"; file += relFile; diff --git a/Source/cmInstallDirectoryGenerator.cxx b/Source/cmInstallDirectoryGenerator.cxx index e4209bd..b569b73 100644 --- a/Source/cmInstallDirectoryGenerator.cxx +++ b/Source/cmInstallDirectoryGenerator.cxx @@ -72,7 +72,7 @@ void cmInstallDirectoryGenerator::GenerateScriptForConfig( // Make sure all dirs have absolute paths. cmMakefile const& mf = *this->LocalGenerator->GetMakefile(); for (std::string& d : dirs) { - if (!cmSystemTools::FileIsFullPath(d.c_str())) { + if (!cmSystemTools::FileIsFullPath(d)) { d = std::string(mf.GetCurrentSourceDirectory()) + "/" + d; } } diff --git a/Source/cmInstallExportGenerator.cxx b/Source/cmInstallExportGenerator.cxx index fdd231c..5990f30 100644 --- a/Source/cmInstallExportGenerator.cxx +++ b/Source/cmInstallExportGenerator.cxx @@ -132,7 +132,7 @@ void cmInstallExportGenerator::GenerateScript(std::ostream& os) // Create the temporary directory in which to store the files. this->ComputeTempDir(); - cmSystemTools::MakeDirectory(this->TempDir.c_str()); + cmSystemTools::MakeDirectory(this->TempDir); // Construct a temporary location for the file. this->MainImportFile = this->TempDir; diff --git a/Source/cmInstallFilesCommand.cxx b/Source/cmInstallFilesCommand.cxx index 4b49444..4dde18f 100644 --- a/Source/cmInstallFilesCommand.cxx +++ b/Source/cmInstallFilesCommand.cxx @@ -137,11 +137,11 @@ std::string cmInstallFilesCommand::FindInstallSource(const char* name) const ts += "/"; ts += name; - if (cmSystemTools::FileExists(tb.c_str())) { + if (cmSystemTools::FileExists(tb)) { // The file exists in the binary tree. Use it. return tb; } - if (cmSystemTools::FileExists(ts.c_str())) { + if (cmSystemTools::FileExists(ts)) { // The file exists in the source tree. Use it. return ts; } diff --git a/Source/cmInstallGenerator.cxx b/Source/cmInstallGenerator.cxx index 4d01978..53ac716 100644 --- a/Source/cmInstallGenerator.cxx +++ b/Source/cmInstallGenerator.cxx @@ -55,7 +55,7 @@ void cmInstallGenerator::AddInstallRule( break; } os << indent; - if (cmSystemTools::FileIsFullPath(dest.c_str())) { + if (cmSystemTools::FileIsFullPath(dest)) { os << "list(APPEND CMAKE_ABSOLUTE_DESTINATION_FILES\n"; os << indent << " \""; for (std::vector::const_iterator fi = files.begin(); @@ -165,7 +165,7 @@ std::string cmInstallGenerator::ConvertToAbsoluteDestination( std::string const& dest) const { std::string result; - if (!dest.empty() && !cmSystemTools::FileIsFullPath(dest.c_str())) { + if (!dest.empty() && !cmSystemTools::FileIsFullPath(dest)) { result = "${CMAKE_INSTALL_PREFIX}/"; } result += dest; diff --git a/Source/cmInstallProgramsCommand.cxx b/Source/cmInstallProgramsCommand.cxx index 5ee81fb..f01a4c1 100644 --- a/Source/cmInstallProgramsCommand.cxx +++ b/Source/cmInstallProgramsCommand.cxx @@ -109,11 +109,11 @@ std::string cmInstallProgramsCommand::FindInstallSource(const char* name) const ts += "/"; ts += name; - if (cmSystemTools::FileExists(tb.c_str())) { + if (cmSystemTools::FileExists(tb)) { // The file exists in the binary tree. Use it. return tb; } - if (cmSystemTools::FileExists(ts.c_str())) { + if (cmSystemTools::FileExists(ts)) { // The file exists in the source tree. Use it. return ts; } diff --git a/Source/cmLinkDirectoriesCommand.cxx b/Source/cmLinkDirectoriesCommand.cxx index 98ab7e7..1371c53 100644 --- a/Source/cmLinkDirectoriesCommand.cxx +++ b/Source/cmLinkDirectoriesCommand.cxx @@ -29,7 +29,7 @@ void cmLinkDirectoriesCommand::AddLinkDir(std::string const& dir) { std::string unixPath = dir; cmSystemTools::ConvertToUnixSlashes(unixPath); - if (!cmSystemTools::FileIsFullPath(unixPath.c_str())) { + if (!cmSystemTools::FileIsFullPath(unixPath)) { bool convertToAbsolute = false; std::ostringstream e; /* clang-format off */ diff --git a/Source/cmLoadCacheCommand.cxx b/Source/cmLoadCacheCommand.cxx index 32fdef5..b1fee8d 100644 --- a/Source/cmLoadCacheCommand.cxx +++ b/Source/cmLoadCacheCommand.cxx @@ -82,7 +82,7 @@ bool cmLoadCacheCommand::ReadWithPrefix(std::vector const& args) // Make sure the cache file exists. std::string cacheFile = args[0] + "/CMakeCache.txt"; - if (!cmSystemTools::FileExists(cacheFile.c_str())) { + if (!cmSystemTools::FileExists(cacheFile)) { std::string e = "Cannot load cache file from " + cacheFile; this->SetError(e); return false; diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index afdcc84..08f3c0f 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -904,8 +904,8 @@ void cmLocalGenerator::GetIncludeDirectories(std::vector& dirs, // Support putting all the in-project include directories first if // it is requested by the project. if (this->Makefile->IsOn("CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE")) { - const char* topSourceDir = this->GetState()->GetSourceDirectory(); - const char* topBinaryDir = this->GetState()->GetBinaryDirectory(); + std::string const &topSourceDir = this->GetState()->GetSourceDirectory(), + &topBinaryDir = this->GetState()->GetBinaryDirectory(); for (std::string const& i : includes) { // Emit this directory only if it is a subdirectory of the // top-level source or binary tree. @@ -1416,7 +1416,7 @@ bool cmLocalGenerator::GetRealDependency(const std::string& inName, if (cmGeneratorTarget* target = this->FindGeneratorTargetToUse(name)) { // make sure it is not just a coincidence that the target name // found is part of the inName - if (cmSystemTools::FileIsFullPath(inName.c_str())) { + if (cmSystemTools::FileIsFullPath(inName)) { std::string tLocation; if (target->GetType() >= cmStateEnums::EXECUTABLE && target->GetType() <= cmStateEnums::MODULE_LIBRARY) { @@ -1460,7 +1460,7 @@ bool cmLocalGenerator::GetRealDependency(const std::string& inName, } // The name was not that of a CMake target. It must name a file. - if (cmSystemTools::FileIsFullPath(inName.c_str())) { + if (cmSystemTools::FileIsFullPath(inName)) { // This is a full path. Return it as given. dep = inName; return true; @@ -1966,7 +1966,7 @@ void cmLocalGenerator::AppendIncludeDirectories( std::unordered_set uniqueIncludes; for (const std::string& include : includes_vec) { - if (!cmSystemTools::FileIsFullPath(include.c_str())) { + if (!cmSystemTools::FileIsFullPath(include)) { std::ostringstream e; e << "Found relative path while evaluating include directories of " "\"" @@ -2389,14 +2389,14 @@ std::string cmLocalGenerator::GetObjectFileNameWithoutTarget( std::string relFromSource = this->ConvertToRelativePath(this->GetCurrentSourceDirectory(), fullPath); assert(!relFromSource.empty()); - bool relSource = !cmSystemTools::FileIsFullPath(relFromSource.c_str()); + bool relSource = !cmSystemTools::FileIsFullPath(relFromSource); bool subSource = relSource && relFromSource[0] != '.'; // Try referencing the source relative to the binary tree. std::string relFromBinary = this->ConvertToRelativePath(this->GetCurrentBinaryDirectory(), fullPath); assert(!relFromBinary.empty()); - bool relBinary = !cmSystemTools::FileIsFullPath(relFromBinary.c_str()); + bool relBinary = !cmSystemTools::FileIsFullPath(relFromBinary); bool subBinary = relBinary && relFromBinary[0] != '.'; // Select a nice-looking reference to the source file to construct @@ -2415,7 +2415,7 @@ std::string cmLocalGenerator::GetObjectFileNameWithoutTarget( // if it is still a full path check for the try compile case // try compile never have in source sources, and should not // have conflicting source file names in the same target - if (cmSystemTools::FileIsFullPath(objectName.c_str())) { + if (cmSystemTools::FileIsFullPath(objectName)) { if (this->GetGlobalGenerator()->GetCMakeInstance()->GetIsInTryCompile()) { objectName = cmSystemTools::GetFilenameName(source.GetFullPath()); } @@ -2473,12 +2473,12 @@ cmake* cmLocalGenerator::GetCMakeInstance() const return this->GlobalGenerator->GetCMakeInstance(); } -const char* cmLocalGenerator::GetSourceDirectory() const +std::string const& cmLocalGenerator::GetSourceDirectory() const { return this->GetCMakeInstance()->GetHomeDirectory(); } -const char* cmLocalGenerator::GetBinaryDirectory() const +std::string const& cmLocalGenerator::GetBinaryDirectory() const { return this->GetCMakeInstance()->GetHomeOutputDirectory(); } @@ -2617,13 +2617,13 @@ void cmLocalGenerator::GenerateAppleInfoPList(cmGeneratorTarget* target, // Find the Info.plist template. const char* in = target->GetProperty("MACOSX_BUNDLE_INFO_PLIST"); std::string inFile = (in && *in) ? in : "MacOSXBundleInfo.plist.in"; - if (!cmSystemTools::FileIsFullPath(inFile.c_str())) { + if (!cmSystemTools::FileIsFullPath(inFile)) { std::string inMod = this->Makefile->GetModulesFile(inFile.c_str()); if (!inMod.empty()) { inFile = inMod; } } - if (!cmSystemTools::FileExists(inFile.c_str(), true)) { + if (!cmSystemTools::FileExists(inFile, true)) { std::ostringstream e; e << "Target " << target->GetName() << " Info.plist template \"" << inFile << "\" could not be found."; @@ -2655,13 +2655,13 @@ void cmLocalGenerator::GenerateFrameworkInfoPList( // Find the Info.plist template. const char* in = target->GetProperty("MACOSX_FRAMEWORK_INFO_PLIST"); std::string inFile = (in && *in) ? in : "MacOSXFrameworkInfo.plist.in"; - if (!cmSystemTools::FileIsFullPath(inFile.c_str())) { + if (!cmSystemTools::FileIsFullPath(inFile)) { std::string inMod = this->Makefile->GetModulesFile(inFile.c_str()); if (!inMod.empty()) { inFile = inMod; } } - if (!cmSystemTools::FileExists(inFile.c_str(), true)) { + if (!cmSystemTools::FileExists(inFile, true)) { std::ostringstream e; e << "Target " << target->GetName() << " Info.plist template \"" << inFile << "\" could not be found."; diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 58bbe77..533ac56 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -287,8 +287,8 @@ public: cmake* GetCMakeInstance() const; - const char* GetSourceDirectory() const; - const char* GetBinaryDirectory() const; + std::string const& GetSourceDirectory() const; + std::string const& GetBinaryDirectory() const; const char* GetCurrentBinaryDirectory() const; const char* GetCurrentSourceDirectory() const; diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 12682a7..ddd8cc4 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -172,7 +172,7 @@ void cmLocalUnixMakefileGenerator3::GetLocalObjectFiles( bool hasSourceExtension = true; std::string objectName = this->GetObjectFileNameWithoutTarget(*sf, dir, &hasSourceExtension); - if (cmSystemTools::FileIsFullPath(objectName.c_str())) { + if (cmSystemTools::FileIsFullPath(objectName)) { objectName = cmSystemTools::GetFilenameName(objectName); } LocalObjectInfo& info = localObjectFiles[objectName]; @@ -525,8 +525,7 @@ void cmLocalUnixMakefileGenerator3::WriteMakeRule( // Construct the left hand side of the rule. std::string tgt = cmSystemTools::ConvertToOutputPath( - this->MaybeConvertToRelativePath(this->GetBinaryDirectory(), target) - .c_str()); + this->MaybeConvertToRelativePath(this->GetBinaryDirectory(), target)); const char* space = ""; if (tgt.size() == 1) { @@ -554,7 +553,7 @@ void cmLocalUnixMakefileGenerator3::WriteMakeRule( for (std::string const& depend : depends) { replace = depend; replace = cmSystemTools::ConvertToOutputPath( - this->MaybeConvertToRelativePath(binDir, replace).c_str()); + this->MaybeConvertToRelativePath(binDir, replace)); os << cmMakeSafe(tgt) << space << ": " << cmMakeSafe(replace) << "\n"; } } @@ -574,7 +573,7 @@ void cmLocalUnixMakefileGenerator3::WriteMakeRule( std::string cmLocalUnixMakefileGenerator3::MaybeConvertWatcomShellCommand( std::string const& cmd) { - if (this->IsWatcomWMake() && cmSystemTools::FileIsFullPath(cmd.c_str()) && + if (this->IsWatcomWMake() && cmSystemTools::FileIsFullPath(cmd) && cmd.find_first_of("( )") != std::string::npos) { // On Watcom WMake use the windows short path for the command // name. This is needed to avoid funny quoting problems on @@ -1028,7 +1027,7 @@ void cmLocalUnixMakefileGenerator3::AppendCustomCommand( } // Setup the proper working directory for the commands. - this->CreateCDCommand(commands1, dir.c_str(), relative); + this->CreateCDCommand(commands1, dir, relative); // push back the custom commands commands.insert(commands.end(), commands1.begin(), commands1.end()); @@ -1476,8 +1475,8 @@ void cmLocalUnixMakefileGenerator3::CheckMultipleOutputs(bool verbose) // If the depender is missing then delete the dependee to make // sure both will be regenerated. - if (cmSystemTools::FileExists(dependee.c_str()) && - !cmSystemTools::FileExists(depender.c_str())) { + if (cmSystemTools::FileExists(dependee) && + !cmSystemTools::FileExists(depender)) { if (verbose) { std::ostringstream msg; msg << "Deleting primary custom command output \"" << dependee @@ -1828,7 +1827,7 @@ void cmLocalUnixMakefileGenerator3::WriteDependLanguageInfo( this->GetIncludeDirectories(includes, target, implicitLang.first, config); std::string binaryDir = this->GetState()->GetBinaryDirectory(); if (this->Makefile->IsOn("CMAKE_DEPENDS_IN_PROJECT_ONLY")) { - const char* sourceDir = this->GetState()->GetSourceDirectory(); + std::string const& sourceDir = this->GetState()->GetSourceDirectory(); cmEraseIf(includes, ::NotInProjectDir(sourceDir, binaryDir)); } for (std::string const& include : includes) { @@ -2029,7 +2028,7 @@ void cmLocalUnixMakefileGenerator3::AddImplicitDepends( } void cmLocalUnixMakefileGenerator3::CreateCDCommand( - std::vector& commands, const char* tgtDir, + std::vector& commands, std::string const& tgtDir, std::string const& relDir) { // do we need to cd? diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index 2d580d5..bc72f1b 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -117,7 +117,8 @@ public: // create a command that cds to the start dir then runs the commands void CreateCDCommand(std::vector& commands, - const char* targetDir, std::string const& relDir); + std::string const& targetDir, + std::string const& relDir); static std::string ConvertToQuotedOutputPath(const char* p, bool useWatcomQuote); diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index f38cd79..98b1c44 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -115,8 +115,7 @@ void cmLocalVisualStudio7Generator::FixGlobalTargets() void cmLocalVisualStudio7Generator::WriteProjectFiles() { // If not an in source build, then create the output directory - if (strcmp(this->GetCurrentBinaryDirectory(), this->GetSourceDirectory()) != - 0) { + if (this->GetCurrentBinaryDirectory() != this->GetSourceDirectory()) { if (!cmSystemTools::MakeDirectory(this->GetCurrentBinaryDirectory())) { cmSystemTools::Error("Error creating directory ", this->GetCurrentBinaryDirectory()); diff --git a/Source/cmMakeDirectoryCommand.cxx b/Source/cmMakeDirectoryCommand.cxx index 06e295b..aff4ca6 100644 --- a/Source/cmMakeDirectoryCommand.cxx +++ b/Source/cmMakeDirectoryCommand.cxx @@ -15,13 +15,13 @@ bool cmMakeDirectoryCommand::InitialPass(std::vector const& args, this->SetError("called with incorrect number of arguments"); return false; } - if (!this->Makefile->CanIWriteThisFile(args[0].c_str())) { + if (!this->Makefile->CanIWriteThisFile(args[0])) { std::string e = "attempted to create a directory: " + args[0] + " into a source directory."; this->SetError(e); cmSystemTools::SetFatalErrorOccured(); return false; } - cmSystemTools::MakeDirectory(args[0].c_str()); + cmSystemTools::MakeDirectory(args[0]); return true; } diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index bf0720e..b468208 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1104,9 +1104,9 @@ cmTarget* cmMakefile::AddUtilityCommand( return target; } -void cmMakefile::AddDefineFlag(const char* flag) +void cmMakefile::AddDefineFlag(std::string const& flag) { - if (!flag) { + if (flag.empty()) { return; } @@ -1122,7 +1122,7 @@ void cmMakefile::AddDefineFlag(const char* flag) this->AddDefineFlag(flag, this->DefineFlags); } -void cmMakefile::AddDefineFlag(const char* flag, std::string& dflags) +void cmMakefile::AddDefineFlag(std::string const& flag, std::string& dflags) { // remove any \n\r std::string::size_type initSize = dflags.size(); @@ -1132,14 +1132,13 @@ void cmMakefile::AddDefineFlag(const char* flag, std::string& dflags) std::replace(flagStart, dflags.end(), '\r', ' '); } -void cmMakefile::RemoveDefineFlag(const char* flag) +void cmMakefile::RemoveDefineFlag(std::string const& flag) { // Check the length of the flag to remove. - std::string::size_type len = strlen(flag); - if (len < 1) { + if (flag.empty()) { return; } - + std::string::size_type const len = flag.length(); // Update the string used for the old DEFINITIONS property. this->RemoveDefineFlag(flag, len, this->DefineFlagsOrig); @@ -1152,7 +1151,8 @@ void cmMakefile::RemoveDefineFlag(const char* flag) this->RemoveDefineFlag(flag, len, this->DefineFlags); } -void cmMakefile::RemoveDefineFlag(const char* flag, std::string::size_type len, +void cmMakefile::RemoveDefineFlag(std::string const& flag, + std::string::size_type len, std::string& dflags) { // Remove all instances of the flag that are surrounded by @@ -1169,9 +1169,9 @@ void cmMakefile::RemoveDefineFlag(const char* flag, std::string::size_type len, } } -void cmMakefile::AddCompileOption(const char* option) +void cmMakefile::AddCompileOption(std::string const& option) { - this->AppendProperty("COMPILE_OPTIONS", option); + this->AppendProperty("COMPILE_OPTIONS", option.c_str()); } bool cmMakefile::ParseDefineFlag(std::string const& def, bool remove) @@ -2292,7 +2292,7 @@ const char* cmMakefile::GetSONameFlag(const std::string& language) const return GetDefinition(name); } -bool cmMakefile::CanIWriteThisFile(const char* fileName) const +bool cmMakefile::CanIWriteThisFile(std::string const& fileName) const { if (!this->IsOn("CMAKE_DISABLE_SOURCE_CHANGES")) { return true; @@ -3105,19 +3105,19 @@ std::unique_ptr cmMakefile::RemoveFunctionBlocker( return std::unique_ptr(); } -const char* cmMakefile::GetHomeDirectory() const +std::string const& cmMakefile::GetHomeDirectory() const { return this->GetCMakeInstance()->GetHomeDirectory(); } -const char* cmMakefile::GetHomeOutputDirectory() const +std::string const& cmMakefile::GetHomeOutputDirectory() const { return this->GetCMakeInstance()->GetHomeOutputDirectory(); } -void cmMakefile::SetScriptModeFile(const char* scriptfile) +void cmMakefile::SetScriptModeFile(std::string const& scriptfile) { - this->AddDefinition("CMAKE_SCRIPT_MODE_FILE", scriptfile); + this->AddDefinition("CMAKE_SCRIPT_MODE_FILE", scriptfile.c_str()); } void cmMakefile::SetArgcArgv(const std::vector& args) diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 2721277..5a30790 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -166,9 +166,9 @@ public: /** * Add a define flag to the build. */ - void AddDefineFlag(const char* definition); - void RemoveDefineFlag(const char* definition); - void AddCompileOption(const char* option); + void AddDefineFlag(std::string const& definition); + void RemoveDefineFlag(std::string const& definition); + void AddCompileOption(std::string const& option); /** Create a new imported target with the name and type given. */ cmTarget* AddImportedTarget(const std::string& name, @@ -309,13 +309,13 @@ public: bool IgnoreErrorsCMP0061() const; - const char* GetHomeDirectory() const; - const char* GetHomeOutputDirectory() const; + std::string const& GetHomeDirectory() const; + std::string const& GetHomeOutputDirectory() const; /** * Set CMAKE_SCRIPT_MODE_FILE variable when running a -P script. */ - void SetScriptModeFile(const char* scriptfile); + void SetScriptModeFile(std::string const& scriptfile); /** * Set CMAKE_ARGC, CMAKE_ARGV0 ... variables. @@ -473,7 +473,7 @@ public: /** * Make sure CMake can write this file */ - bool CanIWriteThisFile(const char* fileName) const; + bool CanIWriteThisFile(std::string const& fileName) const; #if defined(CMAKE_BUILD_WITH_CMAKE) /** @@ -878,8 +878,9 @@ protected: std::string DefineFlags; // Track the value of the computed DEFINITIONS property. - void AddDefineFlag(const char*, std::string&); - void RemoveDefineFlag(const char*, std::string::size_type, std::string&); + void AddDefineFlag(std::string const& flag, std::string&); + void RemoveDefineFlag(std::string const& flag, std::string::size_type, + std::string&); std::string DefineFlagsOrig; #if defined(CMAKE_BUILD_WITH_CMAKE) diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx index ebc771b..9bbc043 100644 --- a/Source/cmMakefileExecutableTargetGenerator.cxx +++ b/Source/cmMakefileExecutableTargetGenerator.cxx @@ -326,28 +326,28 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink) outpath = this->Makefile->GetCurrentBinaryDirectory(); outpath += cmake::GetCMakeFilesDirectory(); outpath += "/CMakeRelink.dir"; - cmSystemTools::MakeDirectory(outpath.c_str()); + cmSystemTools::MakeDirectory(outpath); outpath += "/"; if (!targetNameImport.empty()) { outpathImp = outpath; } } else { - cmSystemTools::MakeDirectory(outpath.c_str()); + cmSystemTools::MakeDirectory(outpath); if (!targetNameImport.empty()) { outpathImp = this->GeneratorTarget->GetDirectory( this->ConfigName, cmStateEnums::ImportLibraryArtifact); - cmSystemTools::MakeDirectory(outpathImp.c_str()); + cmSystemTools::MakeDirectory(outpathImp); outpathImp += "/"; } } std::string compilePdbOutputPath = this->GeneratorTarget->GetCompilePDBDirectory(this->ConfigName); - cmSystemTools::MakeDirectory(compilePdbOutputPath.c_str()); + cmSystemTools::MakeDirectory(compilePdbOutputPath); std::string pdbOutputPath = this->GeneratorTarget->GetPDBDirectory(this->ConfigName); - cmSystemTools::MakeDirectory(pdbOutputPath.c_str()); + cmSystemTools::MakeDirectory(pdbOutputPath); pdbOutputPath += "/"; std::string targetFullPath = outpath + targetName; diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index cb99b3e..9299ffe 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -525,30 +525,30 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules( outpath = this->Makefile->GetCurrentBinaryDirectory(); outpath += cmake::GetCMakeFilesDirectory(); outpath += "/CMakeRelink.dir"; - cmSystemTools::MakeDirectory(outpath.c_str()); + cmSystemTools::MakeDirectory(outpath); outpath += "/"; if (!targetNameImport.empty()) { outpathImp = outpath; } } else { outpath = this->GeneratorTarget->GetDirectory(this->ConfigName); - cmSystemTools::MakeDirectory(outpath.c_str()); + cmSystemTools::MakeDirectory(outpath); outpath += "/"; if (!targetNameImport.empty()) { outpathImp = this->GeneratorTarget->GetDirectory( this->ConfigName, cmStateEnums::ImportLibraryArtifact); - cmSystemTools::MakeDirectory(outpathImp.c_str()); + cmSystemTools::MakeDirectory(outpathImp); outpathImp += "/"; } } std::string compilePdbOutputPath = this->GeneratorTarget->GetCompilePDBDirectory(this->ConfigName); - cmSystemTools::MakeDirectory(compilePdbOutputPath.c_str()); + cmSystemTools::MakeDirectory(compilePdbOutputPath); std::string pdbOutputPath = this->GeneratorTarget->GetPDBDirectory(this->ConfigName); - cmSystemTools::MakeDirectory(pdbOutputPath.c_str()); + cmSystemTools::MakeDirectory(pdbOutputPath); pdbOutputPath += "/"; std::string targetFullPath = outpath + targetName; diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index fc39365..73cf1f0 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -89,7 +89,7 @@ void cmMakefileTargetGenerator::CreateRuleFile() this->LocalGenerator->GetTargetDirectory(this->GeneratorTarget); this->TargetBuildDirectoryFull = this->LocalGenerator->ConvertToFullPath(this->TargetBuildDirectory); - cmSystemTools::MakeDirectory(this->TargetBuildDirectoryFull.c_str()); + cmSystemTools::MakeDirectory(this->TargetBuildDirectoryFull); // Construct the rule file name. this->BuildFileName = this->TargetBuildDirectory; @@ -200,10 +200,8 @@ void cmMakefileTargetGenerator::WriteCommonCodeRules() << "# Include any dependencies generated for this target.\n" << this->GlobalGenerator->IncludeDirective << " " << root << cmSystemTools::ConvertToOutputPath( - this->LocalGenerator - ->MaybeConvertToRelativePath( - this->LocalGenerator->GetBinaryDirectory(), dependFileNameFull) - .c_str()) + this->LocalGenerator->MaybeConvertToRelativePath( + this->LocalGenerator->GetBinaryDirectory(), dependFileNameFull)) << "\n\n"; if (!this->NoRuleMessages) { @@ -212,16 +210,14 @@ void cmMakefileTargetGenerator::WriteCommonCodeRules() << "# Include the progress variables for this target.\n" << this->GlobalGenerator->IncludeDirective << " " << root << cmSystemTools::ConvertToOutputPath( - this->LocalGenerator - ->MaybeConvertToRelativePath( - this->LocalGenerator->GetBinaryDirectory(), - this->ProgressFileNameFull) - .c_str()) + this->LocalGenerator->MaybeConvertToRelativePath( + this->LocalGenerator->GetBinaryDirectory(), + this->ProgressFileNameFull)) << "\n\n"; } // make sure the depend file exists - if (!cmSystemTools::FileExists(dependFileNameFull.c_str())) { + if (!cmSystemTools::FileExists(dependFileNameFull)) { // Write an empty dependency file. cmGeneratedFileStream depFileStream( dependFileNameFull.c_str(), false, @@ -250,11 +246,8 @@ void cmMakefileTargetGenerator::WriteCommonCodeRules() << "# Include the compile flags for this target's objects.\n" << this->GlobalGenerator->IncludeDirective << " " << root << cmSystemTools::ConvertToOutputPath( - this->LocalGenerator - ->MaybeConvertToRelativePath( - this->LocalGenerator->GetBinaryDirectory(), - this->FlagFileNameFull) - .c_str()) + this->LocalGenerator->MaybeConvertToRelativePath( + this->LocalGenerator->GetBinaryDirectory(), this->FlagFileNameFull)) << "\n\n"; } @@ -368,8 +361,7 @@ void cmMakefileTargetGenerator::WriteObjectRuleFiles( // Create the directory containing the object file. This may be a // subdirectory under the target's directory. std::string dir = cmSystemTools::GetFilenamePath(obj); - cmSystemTools::MakeDirectory( - this->LocalGenerator->ConvertToFullPath(dir).c_str()); + cmSystemTools::MakeDirectory(this->LocalGenerator->ConvertToFullPath(dir)); // Save this in the target's list of object files. this->Objects.push_back(obj); diff --git a/Source/cmMakefileUtilityTargetGenerator.cxx b/Source/cmMakefileUtilityTargetGenerator.cxx index dbc0bc6..8fbd5d2 100644 --- a/Source/cmMakefileUtilityTargetGenerator.cxx +++ b/Source/cmMakefileUtilityTargetGenerator.cxx @@ -46,11 +46,9 @@ void cmMakefileUtilityTargetGenerator::WriteRuleFiles() << "# Include the progress variables for this target.\n" << this->GlobalGenerator->IncludeDirective << " " << root << cmSystemTools::ConvertToOutputPath( - this->LocalGenerator - ->MaybeConvertToRelativePath( - this->LocalGenerator->GetBinaryDirectory(), - this->ProgressFileNameFull) - .c_str()) + this->LocalGenerator->MaybeConvertToRelativePath( + this->LocalGenerator->GetBinaryDirectory(), + this->ProgressFileNameFull)) << "\n\n"; } diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 3f0c42e..f4faf47 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -1083,7 +1083,7 @@ void cmNinjaTargetGenerator::ExportObjectCompileCommand( std::string escapedSourceFileName = sourceFileName; - if (!cmSystemTools::FileIsFullPath(sourceFileName.c_str())) { + if (!cmSystemTools::FileIsFullPath(sourceFileName)) { escapedSourceFileName = cmSystemTools::CollapseFullPath( escapedSourceFileName, this->GetGlobalGenerator() ->GetCMakeInstance() @@ -1143,8 +1143,8 @@ void cmNinjaTargetGenerator::ExportObjectCompileCommand( void cmNinjaTargetGenerator::EnsureDirectoryExists( const std::string& path) const { - if (cmSystemTools::FileIsFullPath(path.c_str())) { - cmSystemTools::MakeDirectory(path.c_str()); + if (cmSystemTools::FileIsFullPath(path)) { + cmSystemTools::MakeDirectory(path); } else { cmGlobalNinjaGenerator* gg = this->GetGlobalGenerator(); std::string fullPath = @@ -1152,7 +1152,7 @@ void cmNinjaTargetGenerator::EnsureDirectoryExists( // Also ensures their is a trailing slash. gg->StripNinjaOutputPathPrefixAsSuffix(fullPath); fullPath += path; - cmSystemTools::MakeDirectory(fullPath.c_str()); + cmSystemTools::MakeDirectory(fullPath); } } diff --git a/Source/cmOSXBundleGenerator.cxx b/Source/cmOSXBundleGenerator.cxx index e658e2c..2b96785 100644 --- a/Source/cmOSXBundleGenerator.cxx +++ b/Source/cmOSXBundleGenerator.cxx @@ -43,7 +43,7 @@ void cmOSXBundleGenerator::CreateAppBundle(const std::string& targetName, out += "/"; out += this->GT->GetAppBundleDirectory(this->ConfigName, cmGeneratorTarget::FullLevel); - cmSystemTools::MakeDirectory(out.c_str()); + cmSystemTools::MakeDirectory(out); this->Makefile->AddCMakeOutputFile(out); // Configure the Info.plist file. Note that it needs the executable name @@ -105,10 +105,10 @@ void cmOSXBundleGenerator::CreateFramework(const std::string& targetName, // Make foo.framework/Versions std::string versions = contentdir; versions += "Versions"; - cmSystemTools::MakeDirectory(versions.c_str()); + cmSystemTools::MakeDirectory(versions); // Make foo.framework/Versions/version - cmSystemTools::MakeDirectory(newoutpath.c_str()); + cmSystemTools::MakeDirectory(newoutpath); // Current -> version oldName = frameworkVersion; @@ -173,7 +173,7 @@ void cmOSXBundleGenerator::CreateCFBundle(const std::string& targetName, out += "/"; out += this->GT->GetCFBundleDirectory(this->ConfigName, cmGeneratorTarget::FullLevel); - cmSystemTools::MakeDirectory(out.c_str()); + cmSystemTools::MakeDirectory(out); this->Makefile->AddCMakeOutputFile(out); // Configure the Info.plist file. Note that it needs the executable name @@ -213,7 +213,7 @@ std::string cmOSXBundleGenerator::InitMacOSXContentDirectory( this->ConfigName, cmStateEnums::RuntimeBinaryArtifact); macdir += "/"; macdir += pkgloc; - cmSystemTools::MakeDirectory(macdir.c_str()); + cmSystemTools::MakeDirectory(macdir); // Record use of this content location. Only the first level // directory is needed. diff --git a/Source/cmOrderDirectories.cxx b/Source/cmOrderDirectories.cxx index 27ad710..04a9318 100644 --- a/Source/cmOrderDirectories.cxx +++ b/Source/cmOrderDirectories.cxx @@ -118,7 +118,7 @@ bool cmOrderDirectoriesConstraint::FileMayConflict(std::string const& dir, std::string file = dir; file += "/"; file += name; - if (cmSystemTools::FileExists(file.c_str(), true)) { + if (cmSystemTools::FileExists(file, true)) { // The file conflicts only if it is not the same as the original // file due to a symlink or hardlink. return !cmSystemTools::SameFile(this->FullPath, file); diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx index dac6569..25db929 100644 --- a/Source/cmOutputConverter.cxx +++ b/Source/cmOutputConverter.cxx @@ -29,7 +29,7 @@ std::string cmOutputConverter::ConvertToOutputForExisting( // space. if (this->GetState()->UseWindowsShell() && remote.find(' ') != std::string::npos && - cmSystemTools::FileExists(remote.c_str())) { + cmSystemTools::FileExists(remote)) { std::string tmp; if (cmSystemTools::GetShortPath(remote, tmp)) { return this->ConvertToOutputFormat(tmp, format); @@ -125,7 +125,7 @@ std::string cmOutputConverter::ForceToRelativePath( assert(local_path.empty() || local_path[local_path.size() - 1] != '/'); // If the path is already relative then just return the path. - if (!cmSystemTools::FileIsFullPath(remote_path.c_str())) { + if (!cmSystemTools::FileIsFullPath(remote_path)) { return remote_path; } diff --git a/Source/cmOutputRequiredFilesCommand.cxx b/Source/cmOutputRequiredFilesCommand.cxx index cde9037..bdb98ca 100644 --- a/Source/cmOutputRequiredFilesCommand.cxx +++ b/Source/cmOutputRequiredFilesCommand.cxx @@ -173,7 +173,7 @@ protected: std::string line; while (cmSystemTools::GetLineFromStream(fin, line)) { - if (cmHasLiteralPrefix(line.c_str(), "#include")) { + if (cmHasLiteralPrefix(line, "#include")) { // if it is an include line then create a string class size_t qstart = line.find('\"', 8); size_t qend; @@ -213,51 +213,51 @@ protected: cxxFile = root + ".cxx"; bool found = false; // try jumping to .cxx .cpp and .c in order - if (cmSystemTools::FileExists(cxxFile.c_str())) { + if (cmSystemTools::FileExists(cxxFile)) { found = true; } for (std::string path : this->IncludeDirectories) { path = path + "/"; path = path + cxxFile; - if (cmSystemTools::FileExists(path.c_str())) { + if (cmSystemTools::FileExists(path)) { found = true; } } if (!found) { cxxFile = root + ".cpp"; - if (cmSystemTools::FileExists(cxxFile.c_str())) { + if (cmSystemTools::FileExists(cxxFile)) { found = true; } for (std::string path : this->IncludeDirectories) { path = path + "/"; path = path + cxxFile; - if (cmSystemTools::FileExists(path.c_str())) { + if (cmSystemTools::FileExists(path)) { found = true; } } } if (!found) { cxxFile = root + ".c"; - if (cmSystemTools::FileExists(cxxFile.c_str())) { + if (cmSystemTools::FileExists(cxxFile)) { found = true; } for (std::string path : this->IncludeDirectories) { path = path + "/"; path = path + cxxFile; - if (cmSystemTools::FileExists(path.c_str())) { + if (cmSystemTools::FileExists(path)) { found = true; } } } if (!found) { cxxFile = root + ".txx"; - if (cmSystemTools::FileExists(cxxFile.c_str())) { + if (cmSystemTools::FileExists(cxxFile)) { found = true; } for (std::string path : this->IncludeDirectories) { path = path + "/"; path = path + cxxFile; - if (cmSystemTools::FileExists(path.c_str())) { + if (cmSystemTools::FileExists(path)) { found = true; } } @@ -426,7 +426,7 @@ protected: path = path + "/"; } path = path + fname; - if (cmSystemTools::FileExists(path.c_str(), true) && + if (cmSystemTools::FileExists(path, true) && !cmSystemTools::FileIsDirectory(path)) { std::string fp = cmSystemTools::CollapseFullPath(path); this->DirectoryToFileToPathMap[extraPath ? extraPath : ""][fname] = fp; @@ -440,7 +440,7 @@ protected: path = path + "/"; } path = path + fname; - if (cmSystemTools::FileExists(path.c_str(), true) && + if (cmSystemTools::FileExists(path, true) && !cmSystemTools::FileIsDirectory(path)) { std::string fp = cmSystemTools::CollapseFullPath(path); this->DirectoryToFileToPathMap[extraPath][fname] = fp; diff --git a/Source/cmQTWrapCPPCommand.cxx b/Source/cmQTWrapCPPCommand.cxx index 923d5ab..09cc63a 100644 --- a/Source/cmQTWrapCPPCommand.cxx +++ b/Source/cmQTWrapCPPCommand.cxx @@ -47,7 +47,7 @@ bool cmQTWrapCPPCommand::InitialPass(std::vector const& args, // Compute the name of the header from which to generate the file. std::string hname; - if (cmSystemTools::FileIsFullPath(j->c_str())) { + if (cmSystemTools::FileIsFullPath(*j)) { hname = *j; } else { if (curr && curr->GetPropertyAsBool("GENERATED")) { diff --git a/Source/cmQTWrapUICommand.cxx b/Source/cmQTWrapUICommand.cxx index bbd80f9..da36cdf 100644 --- a/Source/cmQTWrapUICommand.cxx +++ b/Source/cmQTWrapUICommand.cxx @@ -55,7 +55,7 @@ bool cmQTWrapUICommand::InitialPass(std::vector const& args, // Compute the name of the ui file from which to generate others. std::string uiName; - if (cmSystemTools::FileIsFullPath(j->c_str())) { + if (cmSystemTools::FileIsFullPath(*j)) { uiName = *j; } else { if (curr && curr->GetPropertyAsBool("GENERATED")) { diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx index d845e8b..0f3cb23 100644 --- a/Source/cmQtAutoGenInitializer.cxx +++ b/Source/cmQtAutoGenInitializer.cxx @@ -169,9 +169,9 @@ static std::string FileProjectRelativePath(cmMakefile* makefile, std::string res; { std::string pSource = cmSystemTools::RelativePath( - makefile->GetCurrentSourceDirectory(), fileName.c_str()); + makefile->GetCurrentSourceDirectory(), fileName); std::string pBinary = cmSystemTools::RelativePath( - makefile->GetCurrentBinaryDirectory(), fileName.c_str()); + makefile->GetCurrentBinaryDirectory(), fileName); if (pSource.size() < pBinary.size()) { res = std::move(pSource); } else if (pBinary.size() < fileName.size()) { @@ -1387,7 +1387,7 @@ bool cmQtAutoGenInitializer::RccListInputs(std::string const& fileName, std::vector& files, std::string& error) { - if (!cmSystemTools::FileExists(fileName.c_str())) { + if (!cmSystemTools::FileExists(fileName)) { error = "rcc resource file does not exist:\n "; error += Quoted(fileName); error += "\n"; diff --git a/Source/cmRemoveDefinitionsCommand.cxx b/Source/cmRemoveDefinitionsCommand.cxx index 8311b4b..8d3f688 100644 --- a/Source/cmRemoveDefinitionsCommand.cxx +++ b/Source/cmRemoveDefinitionsCommand.cxx @@ -16,7 +16,7 @@ bool cmRemoveDefinitionsCommand::InitialPass( } for (std::string const& i : args) { - this->Makefile->RemoveDefineFlag(i.c_str()); + this->Makefile->RemoveDefineFlag(i); } return true; } diff --git a/Source/cmServerProtocol.cxx b/Source/cmServerProtocol.cxx index df68d04..fbfaa40 100644 --- a/Source/cmServerProtocol.cxx +++ b/Source/cmServerProtocol.cxx @@ -103,7 +103,7 @@ void getCMakeInputs(const cmGlobalGenerator* gg, const std::string& sourceDir, std::string toAdd = lf; if (!sourceDir.empty()) { const std::string& relative = - cmSystemTools::RelativePath(sourceDir.c_str(), lf.c_str()); + cmSystemTools::RelativePath(sourceDir, lf); if (toAdd.size() > relative.size()) { toAdd = relative; } @@ -548,8 +548,8 @@ cmServerResponse cmServerProtocol1::ProcessCMakeInputs( const cmake* cm = this->CMakeInstance(); const cmGlobalGenerator* gg = cm->GetGlobalGenerator(); const std::string cmakeRootDir = cmSystemTools::GetCMakeRoot(); - const std::string buildDir = cm->GetHomeOutputDirectory(); - const std::string sourceDir = cm->GetHomeDirectory(); + const std::string& buildDir = cm->GetHomeOutputDirectory(); + const std::string& sourceDir = cm->GetHomeDirectory(); Json::Value result = Json::objectValue; result[kSOURCE_DIRECTORY_KEY] = sourceDir; @@ -675,8 +675,7 @@ static Json::Value DumpSourceFileGroup(const LanguageData& data, Json::Value sourcesValue = Json::arrayValue; for (auto const& i : files) { - const std::string relPath = - cmSystemTools::RelativePath(baseDir.c_str(), i.c_str()); + const std::string relPath = cmSystemTools::RelativePath(baseDir, i); sourcesValue.append(relPath.size() < i.size() ? relPath : i); } @@ -922,7 +921,7 @@ static Json::Value DumpTarget(cmGeneratorTarget* target, auto dest = installTargetGenerator->GetDestination(config); std::string installPath; - if (!dest.empty() && cmSystemTools::FileIsFullPath(dest.c_str())) { + if (!dest.empty() && cmSystemTools::FileIsFullPath(dest)) { installPath = dest; } else { std::string installPrefix = diff --git a/Source/cmSetPropertyCommand.cxx b/Source/cmSetPropertyCommand.cxx index 7efcc04..171b62e 100644 --- a/Source/cmSetPropertyCommand.cxx +++ b/Source/cmSetPropertyCommand.cxx @@ -167,7 +167,7 @@ bool cmSetPropertyCommand::HandleDirectoryMode() // Construct the directory name. Interpret relative paths with // respect to the current directory. std::string dir = *this->Names.begin(); - if (!cmSystemTools::FileIsFullPath(dir.c_str())) { + if (!cmSystemTools::FileIsFullPath(dir)) { dir = this->Makefile->GetCurrentSourceDirectory(); dir += "/"; dir += *this->Names.begin(); diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx index 215f974..6792d66 100644 --- a/Source/cmSourceFile.cxx +++ b/Source/cmSourceFile.cxx @@ -192,7 +192,7 @@ bool cmSourceFile::TryFullPath(const std::string& path, const std::string& ext) tryPath += "."; tryPath += ext; } - if (cmSystemTools::FileExists(tryPath.c_str())) { + if (cmSystemTools::FileExists(tryPath)) { this->FullPath = tryPath; return true; } diff --git a/Source/cmSourceFileLocation.cxx b/Source/cmSourceFileLocation.cxx index 5558ef3..bd8d318 100644 --- a/Source/cmSourceFileLocation.cxx +++ b/Source/cmSourceFileLocation.cxx @@ -31,10 +31,10 @@ cmSourceFileLocation::cmSourceFileLocation(cmMakefile const* mf, cmSourceFileLocationKind kind) : Makefile(mf) { - this->AmbiguousDirectory = !cmSystemTools::FileIsFullPath(name.c_str()); + this->AmbiguousDirectory = !cmSystemTools::FileIsFullPath(name); this->AmbiguousExtension = true; this->Directory = cmSystemTools::GetFilenamePath(name); - if (cmSystemTools::FileIsFullPath(this->Directory.c_str())) { + if (cmSystemTools::FileIsFullPath(this->Directory)) { this->Directory = cmSystemTools::CollapseFullPath(this->Directory); } this->Name = cmSystemTools::GetFilenameName(name); @@ -112,7 +112,7 @@ void cmSourceFileLocation::UpdateExtension(const std::string& name) tryPath += "/"; } tryPath += this->Name; - if (cmSystemTools::FileExists(tryPath.c_str(), true)) { + if (cmSystemTools::FileExists(tryPath, true)) { // We found a source file named by the user on disk. Trust it's // extension. this->Name = cmSystemTools::GetFilenameName(name); diff --git a/Source/cmSourceGroupCommand.cxx b/Source/cmSourceGroupCommand.cxx index 87ecc56..8c9b63c 100644 --- a/Source/cmSourceGroupCommand.cxx +++ b/Source/cmSourceGroupCommand.cxx @@ -28,7 +28,7 @@ std::string getFullFilePath(const std::string& currentPath, { std::string fullPath = path; - if (!cmSystemTools::FileIsFullPath(path.c_str())) { + if (!cmSystemTools::FileIsFullPath(path)) { fullPath = currentPath; fullPath += "/"; fullPath += path; @@ -234,7 +234,7 @@ bool cmSourceGroupCommand::InitialPass(std::vector const& args, parsedArguments[kFilesOptionName]; for (auto const& filesArg : filesArguments) { std::string src = filesArg; - if (!cmSystemTools::FileIsFullPath(src.c_str())) { + if (!cmSystemTools::FileIsFullPath(src)) { src = this->Makefile->GetCurrentSourceDirectory(); src += "/"; src += filesArg; diff --git a/Source/cmState.cxx b/Source/cmState.cxx index 00d7e9a..bb891b5 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -93,7 +93,7 @@ cmStateEnums::CacheEntryType cmState::StringToCacheEntryType(const char* s) bool cmState::IsCacheEntryType(std::string const& key) { for (int i = 0; cmCacheEntryTypes[i]; ++i) { - if (strcmp(key.c_str(), cmCacheEntryTypes[i]) == 0) { + if (key == cmCacheEntryTypes[i]) { return true; } } @@ -514,9 +514,9 @@ void cmState::SetSourceDirectory(std::string const& sourceDirectory) cmSystemTools::ConvertToUnixSlashes(this->SourceDirectory); } -const char* cmState::GetSourceDirectory() const +std::string const& cmState::GetSourceDirectory() const { - return this->SourceDirectory.c_str(); + return this->SourceDirectory; } void cmState::SetBinaryDirectory(std::string const& binaryDirectory) @@ -595,9 +595,9 @@ unsigned int cmState::GetCacheMinorVersion() const return this->CacheManager->GetCacheMinorVersion(); } -const char* cmState::GetBinaryDirectory() const +std::string const& cmState::GetBinaryDirectory() const { - return this->BinaryDirectory.c_str(); + return this->BinaryDirectory; } cmStateSnapshot cmState::CreateBaseSnapshot() diff --git a/Source/cmState.h b/Source/cmState.h index 7282f0a..6cbf82d 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -138,9 +138,9 @@ public: const char* GetGlobalProperty(const std::string& prop); bool GetGlobalPropertyAsBool(const std::string& prop); - const char* GetSourceDirectory() const; + std::string const& GetSourceDirectory() const; void SetSourceDirectory(std::string const& sourceDirectory); - const char* GetBinaryDirectory() const; + std::string const& GetBinaryDirectory() const; void SetBinaryDirectory(std::string const& binaryDirectory); void SetWindowsShell(bool windowsShell); diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 5b6d3c3..88cfe81 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -877,7 +877,7 @@ bool cmSystemTools::DoesFileExistWithExtensions( hname = name; hname += "."; hname += headerExt; - if (cmSystemTools::FileExists(hname.c_str())) { + if (cmSystemTools::FileExists(hname)) { return true; } } @@ -895,7 +895,7 @@ std::string cmSystemTools::FileExistsInParentDirectories(const char* fname, std::string prevDir; while (dir != prevDir) { std::string path = dir + "/" + file; - if (cmSystemTools::FileExists(path.c_str())) { + if (cmSystemTools::FileExists(path)) { return path; } if (dir.size() < strlen(toplevel)) { @@ -1371,7 +1371,7 @@ bool cmSystemTools::Split(const char* s, std::vector& l) return res; } -std::string cmSystemTools::ConvertToOutputPath(const char* path) +std::string cmSystemTools::ConvertToOutputPath(std::string const& path) { #if defined(_WIN32) && !defined(__CYGWIN__) if (s_ForceUnixPaths) { @@ -1408,15 +1408,16 @@ std::string cmSystemTools::ConvertToRunCommandPath(const char* path) } // compute the relative path from here to there -std::string cmSystemTools::RelativePath(const char* local, const char* remote) +std::string cmSystemTools::RelativePath(std::string const& local, + std::string const& remote) { if (!cmSystemTools::FileIsFullPath(local)) { cmSystemTools::Error("RelativePath must be passed a full path to local: ", - local); + local.c_str()); } if (!cmSystemTools::FileIsFullPath(remote)) { cmSystemTools::Error("RelativePath must be passed a full path to remote: ", - remote); + remote.c_str()); } return cmsys::SystemTools::RelativePath(local, remote); } @@ -1570,9 +1571,9 @@ bool cmSystemTools::CreateTar(const char* outFileName, a.SetMTime(mtime); a.SetVerbose(verbose); for (auto path : files) { - if (cmSystemTools::FileIsFullPath(path.c_str())) { + if (cmSystemTools::FileIsFullPath(path)) { // Get the relative path to the file. - path = cmSystemTools::RelativePath(cwd.c_str(), path.c_str()); + path = cmSystemTools::RelativePath(cwd, path); } if (!a.Add(path)) { break; @@ -2177,19 +2178,19 @@ void cmSystemTools::FindCMakeResources(const char* argv0) cmSystemToolsCMakeGUICommand = exe_dir; cmSystemToolsCMakeGUICommand += "/cmake-gui"; cmSystemToolsCMakeGUICommand += cmSystemTools::GetExecutableExtension(); - if (!cmSystemTools::FileExists(cmSystemToolsCMakeGUICommand.c_str())) { + if (!cmSystemTools::FileExists(cmSystemToolsCMakeGUICommand)) { cmSystemToolsCMakeGUICommand.clear(); } cmSystemToolsCMakeCursesCommand = exe_dir; cmSystemToolsCMakeCursesCommand += "/ccmake"; cmSystemToolsCMakeCursesCommand += cmSystemTools::GetExecutableExtension(); - if (!cmSystemTools::FileExists(cmSystemToolsCMakeCursesCommand.c_str())) { + if (!cmSystemTools::FileExists(cmSystemToolsCMakeCursesCommand)) { cmSystemToolsCMakeCursesCommand.clear(); } cmSystemToolsCMClDepsCommand = exe_dir; cmSystemToolsCMClDepsCommand += "/cmcldeps"; cmSystemToolsCMClDepsCommand += cmSystemTools::GetExecutableExtension(); - if (!cmSystemTools::FileExists(cmSystemToolsCMClDepsCommand.c_str())) { + if (!cmSystemTools::FileExists(cmSystemToolsCMClDepsCommand)) { cmSystemToolsCMClDepsCommand.clear(); } @@ -2204,7 +2205,7 @@ void cmSystemTools::FindCMakeResources(const char* argv0) } if (cmSystemToolsCMakeRoot.empty() || !cmSystemTools::FileExists( - (cmSystemToolsCMakeRoot + "/Modules/CMake.cmake").c_str())) { + (cmSystemToolsCMakeRoot + "/Modules/CMake.cmake"))) { // Build tree has "/bin[/]/cmake" and // "/CMakeFiles/CMakeSourceDir.txt". std::string dir = cmSystemTools::GetFilenamePath(exe_dir); diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index d1e07c5..a53afde 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -354,7 +354,7 @@ public: static bool GetForceUnixPaths() { return s_ForceUnixPaths; } // ConvertToOutputPath use s_ForceUnixPaths - static std::string ConvertToOutputPath(const char* path); + static std::string ConvertToOutputPath(std::string const& path); static void ConvertToOutputSlashes(std::string& path); // ConvertToRunCommandPath does not use s_ForceUnixPaths and should @@ -370,7 +370,8 @@ public: /a/b/c/d to /a/b/c1/d1 -> ../../c1/d1 from /usr/src to /usr/src/test/blah/foo.cpp -> test/blah/foo.cpp */ - static std::string RelativePath(const char* local, const char* remote); + static std::string RelativePath(std::string const& local, + std::string const& remote); /** Joins two paths while collapsing x/../ parts * For example CollapseCombinedPath("a/b/c", "../../d") results in "a/d" diff --git a/Source/cmTargetCompileDefinitionsCommand.cxx b/Source/cmTargetCompileDefinitionsCommand.cxx index bd4121d..4e716dc 100644 --- a/Source/cmTargetCompileDefinitionsCommand.cxx +++ b/Source/cmTargetCompileDefinitionsCommand.cxx @@ -33,7 +33,7 @@ std::string cmTargetCompileDefinitionsCommand::Join( std::string defs; std::string sep; for (std::string const& it : content) { - if (cmHasLiteralPrefix(it.c_str(), "-D")) { + if (cmHasLiteralPrefix(it, "-D")) { defs += sep + it.substr(2); } else { defs += sep + it; diff --git a/Source/cmTargetIncludeDirectoriesCommand.cxx b/Source/cmTargetIncludeDirectoriesCommand.cxx index dcec830..fc546cc 100644 --- a/Source/cmTargetIncludeDirectoriesCommand.cxx +++ b/Source/cmTargetIncludeDirectoriesCommand.cxx @@ -38,7 +38,7 @@ std::string cmTargetIncludeDirectoriesCommand::Join( std::string prefix = this->Makefile->GetCurrentSourceDirectory() + std::string("/"); for (std::string const& it : content) { - if (cmSystemTools::FileIsFullPath(it.c_str()) || + if (cmSystemTools::FileIsFullPath(it) || cmGeneratorExpression::Find(it) == 0) { dirs += sep + it; } else { @@ -60,7 +60,7 @@ bool cmTargetIncludeDirectoriesCommand::HandleDirectContent( this->Makefile->GetCurrentSourceDirectory() + std::string("/"); std::set sdirs; for (std::string const& it : content) { - if (cmSystemTools::FileIsFullPath(it.c_str()) || + if (cmSystemTools::FileIsFullPath(it) || cmGeneratorExpression::Find(it) == 0) { sdirs.insert(it); } else { diff --git a/Source/cmTryCompileCommand.cxx b/Source/cmTryCompileCommand.cxx index b6bfbfa..3ff84ce 100644 --- a/Source/cmTryCompileCommand.cxx +++ b/Source/cmTryCompileCommand.cxx @@ -28,7 +28,7 @@ bool cmTryCompileCommand::InitialPass(std::vector const& argv, // if They specified clean then we clean up what we can if (this->SrcFileSignature) { if (!this->Makefile->GetCMakeInstance()->GetDebugTryCompile()) { - this->CleanupFiles(this->BinaryDirectory.c_str()); + this->CleanupFiles(this->BinaryDirectory); } } return true; diff --git a/Source/cmTryRunCommand.cxx b/Source/cmTryRunCommand.cxx index 94edf93..9396138 100644 --- a/Source/cmTryRunCommand.cxx +++ b/Source/cmTryRunCommand.cxx @@ -153,7 +153,7 @@ bool cmTryRunCommand::InitialPass(std::vector const& argv, // if we created a directory etc, then cleanup after ourselves if (!this->Makefile->GetCMakeInstance()->GetDebugTryCompile()) { - this->CleanupFiles(this->BinaryDirectory.c_str()); + this->CleanupFiles(this->BinaryDirectory); } return true; } diff --git a/Source/cmUseMangledMesaCommand.cxx b/Source/cmUseMangledMesaCommand.cxx index 8d4b018..ea012f6 100644 --- a/Source/cmUseMangledMesaCommand.cxx +++ b/Source/cmUseMangledMesaCommand.cxx @@ -23,7 +23,7 @@ bool cmUseMangledMesaCommand::InitialPass(std::vector const& args, std::string glh = inputDir; glh += "/"; glh += "gl.h"; - if (!cmSystemTools::FileExists(glh.c_str())) { + if (!cmSystemTools::FileExists(glh)) { std::string e = "Bad path to Mesa, could not find: "; e += glh; e += " "; diff --git a/Source/cmUtilitySourceCommand.cxx b/Source/cmUtilitySourceCommand.cxx index 0ce437c..1140800 100644 --- a/Source/cmUtilitySourceCommand.cxx +++ b/Source/cmUtilitySourceCommand.cxx @@ -66,14 +66,14 @@ bool cmUtilitySourceCommand::InitialPass(std::vector const& args, utilitySource = utilitySource + "/" + relativeSource; // If the directory doesn't exist, the source has not been included. - if (!cmSystemTools::FileExists(utilitySource.c_str())) { + if (!cmSystemTools::FileExists(utilitySource)) { return true; } // Make sure all the files exist in the source directory. while (arg != args.end()) { std::string file = utilitySource + "/" + *arg++; - if (!cmSystemTools::FileExists(file.c_str())) { + if (!cmSystemTools::FileExists(file)) { return true; } } diff --git a/Source/cmWriteFileCommand.cxx b/Source/cmWriteFileCommand.cxx index fc5fd21..3464a1b 100644 --- a/Source/cmWriteFileCommand.cxx +++ b/Source/cmWriteFileCommand.cxx @@ -33,7 +33,7 @@ bool cmWriteFileCommand::InitialPass(std::vector const& args, } } - if (!this->Makefile->CanIWriteThisFile(fileName.c_str())) { + if (!this->Makefile->CanIWriteThisFile(fileName)) { std::string e = "attempted to write a file: " + fileName + " into a source directory."; this->SetError(e); @@ -42,7 +42,7 @@ bool cmWriteFileCommand::InitialPass(std::vector const& args, } std::string dir = cmSystemTools::GetFilenamePath(fileName); - cmSystemTools::MakeDirectory(dir.c_str()); + cmSystemTools::MakeDirectory(dir); mode_t mode = 0; diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 39beb9f..5620723 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -487,7 +487,7 @@ void cmake::ReadListFile(const std::vector& args, if (this->GetWorkingMode() != NORMAL_MODE) { std::string file(cmSystemTools::CollapseFullPath(path)); cmSystemTools::ConvertToUnixSlashes(file); - mf.SetScriptModeFile(file.c_str()); + mf.SetScriptModeFile(file); mf.SetArgcArgv(args); } @@ -783,10 +783,10 @@ void cmake::SetDirectoriesFromFile(const char* arg) cacheFile += "/CMakeCache.txt"; std::string listFile = path; listFile += "/CMakeLists.txt"; - if (cmSystemTools::FileExists(cacheFile.c_str())) { + if (cmSystemTools::FileExists(cacheFile)) { cachePath = path; } - if (cmSystemTools::FileExists(listFile.c_str())) { + if (cmSystemTools::FileExists(listFile)) { listPath = path; } } else if (cmSystemTools::FileExists(arg)) { @@ -869,7 +869,7 @@ int cmake::AddCMakePaths() "Path to cpack program executable.", cmStateEnums::INTERNAL); #endif if (!cmSystemTools::FileExists( - (cmSystemTools::GetCMakeRoot() + "/Modules/CMake.cmake").c_str())) { + (cmSystemTools::GetCMakeRoot() + "/Modules/CMake.cmake"))) { // couldn't find modules cmSystemTools::Error( "Could not find CMAKE_ROOT !!!\n" @@ -1003,7 +1003,7 @@ void cmake::SetHomeDirectory(const std::string& dir) } } -const char* cmake::GetHomeDirectory() const +std::string const& cmake::GetHomeDirectory() const { return this->State->GetSourceDirectory(); } @@ -1016,7 +1016,7 @@ void cmake::SetHomeOutputDirectory(const std::string& dir) } } -const char* cmake::GetHomeOutputDirectory() const +std::string const& cmake::GetHomeOutputDirectory() const { return this->State->GetBinaryDirectory(); } @@ -1027,11 +1027,11 @@ std::string cmake::FindCacheFile(const std::string& binaryDir) cmSystemTools::ConvertToUnixSlashes(cachePath); std::string cacheFile = cachePath; cacheFile += "/CMakeCache.txt"; - if (!cmSystemTools::FileExists(cacheFile.c_str())) { + if (!cmSystemTools::FileExists(cacheFile)) { // search in parent directories for cache std::string cmakeFiles = cachePath; cmakeFiles += "/CMakeFiles"; - if (cmSystemTools::FileExists(cmakeFiles.c_str())) { + if (cmSystemTools::FileExists(cmakeFiles)) { std::string cachePathFound = cmSystemTools::FileExistsInParentDirectories("CMakeCache.txt", cachePath.c_str(), "/"); @@ -1087,7 +1087,7 @@ int cmake::DoPreConfigureChecks() // Make sure the Source directory contains a CMakeLists.txt file. std::string srcList = this->GetHomeDirectory(); srcList += "/CMakeLists.txt"; - if (!cmSystemTools::FileExists(srcList.c_str())) { + if (!cmSystemTools::FileExists(srcList)) { std::ostringstream err; if (cmSystemTools::FileIsDirectory(this->GetHomeDirectory())) { err << "The source directory \"" << this->GetHomeDirectory() @@ -1272,7 +1272,7 @@ int cmake::ActualConfigure() } if (!res) { this->AddCacheEntry( - "CMAKE_HOME_DIRECTORY", this->GetHomeDirectory(), + "CMAKE_HOME_DIRECTORY", this->GetHomeDirectory().c_str(), "Source directory with the top level CMakeLists.txt file for this " "project", cmStateEnums::INTERNAL); @@ -1509,14 +1509,14 @@ void cmake::PreLoadCMakeFiles() std::string pre_load = this->GetHomeDirectory(); if (!pre_load.empty()) { pre_load += "/PreLoad.cmake"; - if (cmSystemTools::FileExists(pre_load.c_str())) { + if (cmSystemTools::FileExists(pre_load)) { this->ReadListFile(args, pre_load.c_str()); } } pre_load = this->GetHomeOutputDirectory(); if (!pre_load.empty()) { pre_load += "/PreLoad.cmake"; - if (cmSystemTools::FileExists(pre_load.c_str())) { + if (cmSystemTools::FileExists(pre_load)) { this->ReadListFile(args, pre_load.c_str()); } } @@ -1724,7 +1724,7 @@ int cmake::LoadCache() // if it does exist, but isn't readable then warn the user std::string cacheFile = this->GetHomeOutputDirectory(); cacheFile += "/CMakeCache.txt"; - if (cmSystemTools::FileExists(cacheFile.c_str())) { + if (cmSystemTools::FileExists(cacheFile)) { cmSystemTools::Error( "There is a CMakeCache.txt file for the current binary tree but " "cmake does not have permission to read it. Please check the " @@ -1891,7 +1891,7 @@ int cmake::CheckBuildSystem() } // If the file provided does not exist, we have to rerun. - if (!cmSystemTools::FileExists(this->CheckBuildSystemArgument.c_str())) { + if (!cmSystemTools::FileExists(this->CheckBuildSystemArgument)) { if (verbose) { std::ostringstream msg; msg << "Re-run cmake missing file: " << this->CheckBuildSystemArgument @@ -1945,8 +1945,7 @@ int cmake::CheckBuildSystem() cmSystemTools::ExpandListArgument(productStr, products); } for (std::string const& p : products) { - if (!(cmSystemTools::FileExists(p.c_str()) || - cmSystemTools::FileIsSymlink(p))) { + if (!(cmSystemTools::FileExists(p) || cmSystemTools::FileIsSymlink(p))) { if (verbose) { std::ostringstream msg; msg << "Re-run cmake, missing byproduct: " << p << "\n"; @@ -2144,7 +2143,7 @@ int cmake::GetSystemInformation(std::vector& args) std::string cwd = cmSystemTools::GetCurrentWorkingDirectory(); std::string destPath = cwd + "/__cmake_systeminformation"; cmSystemTools::RemoveADirectory(destPath); - if (!cmSystemTools::MakeDirectory(destPath.c_str())) { + if (!cmSystemTools::MakeDirectory(destPath)) { std::cerr << "Error: --system-information must be run from a " "writable directory!\n"; return 1; @@ -2176,7 +2175,7 @@ int cmake::GetSystemInformation(std::vector& args) } // no option assume it is the output file else { - if (!cmSystemTools::FileIsFullPath(arg.c_str())) { + if (!cmSystemTools::FileIsFullPath(arg)) { resultFile = cwd; resultFile += "/"; } @@ -2429,7 +2428,7 @@ int cmake::Build(const std::string& dir, const std::string& target, cmGlobalVisualStudio8Generator::GetGenerateStampList(); // Note that the stampList file only exists for VS generators. - if (cmSystemTools::FileExists(stampList.c_str()) && + if (cmSystemTools::FileExists(stampList) && !cmakeCheckStampList(stampList.c_str(), false)) { // Correctly initialize the home (=source) and home output (=binary) diff --git a/Source/cmake.h b/Source/cmake.h index 02c6cdb..1ac549b 100644 --- a/Source/cmake.h +++ b/Source/cmake.h @@ -142,9 +142,9 @@ public: * path-to-source cmake was run with. */ void SetHomeDirectory(const std::string& dir); - const char* GetHomeDirectory() const; + std::string const& GetHomeDirectory() const; void SetHomeOutputDirectory(const std::string& dir); - const char* GetHomeOutputDirectory() const; + std::string const& GetHomeOutputDirectory() const; //@} /** diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index 70e4fde..0988c3c 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -641,7 +641,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector& args) // If error occurs we want to continue copying next files. bool return_value = false; for (std::string::size_type cc = 2; cc < args.size(); cc++) { - if (!cmSystemTools::MakeDirectory(args[cc].c_str())) { + if (!cmSystemTools::MakeDirectory(args[cc])) { std::cerr << "Error creating directory \"" << args[cc] << "\".\n"; return_value = true; } @@ -668,7 +668,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector& args) // Complain if the file could not be removed, still exists, // and the -f option was not given. if (!cmSystemTools::RemoveFile(args[cc]) && !force && - cmSystemTools::FileExists(args[cc].c_str())) { + cmSystemTools::FileExists(args[cc])) { return 1; } } @@ -789,7 +789,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector& args) // Command to change directory and run a program. if (args[1] == "chdir" && args.size() >= 4) { std::string const& directory = args[2]; - if (!cmSystemTools::FileExists(directory.c_str())) { + if (!cmSystemTools::FileExists(directory)) { cmSystemTools::Error("Directory does not exist for chdir command: ", args[2].c_str()); return 1; @@ -826,7 +826,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector& args) count = atoi(args[3].c_str()); } if (count) { - cmSystemTools::MakeDirectory(dirName.c_str()); + cmSystemTools::MakeDirectory(dirName); // write the count into the directory std::string fName = dirName; fName += "/count.txt"; @@ -1274,8 +1274,7 @@ int cmcmd::SymlinkExecutable(std::vector& args) bool cmcmd::SymlinkInternal(std::string const& file, std::string const& link) { - if (cmSystemTools::FileExists(link.c_str()) || - cmSystemTools::FileIsSymlink(link)) { + if (cmSystemTools::FileExists(link) || cmSystemTools::FileIsSymlink(link)) { cmSystemTools::RemoveFile(link); } #if defined(_WIN32) && !defined(__CYGWIN__) ----------------------------------------------------------------------- Summary of changes: Help/variable/MSVC.rst | 6 ++-- Help/variable/MSVC_VERSION.rst | 3 ++ Source/CPack/cmCPackArchiveGenerator.cxx | 3 +- Source/CPack/cmCPackGenerator.cxx | 14 ++++---- Source/CPack/cmCPackNSISGenerator.cxx | 12 +++---- Source/CPack/cpack.cxx | 2 +- Source/CTest/cmCTestBuildAndTestHandler.cxx | 6 ++-- Source/CTest/cmCTestBuildHandler.cxx | 2 +- Source/CTest/cmCTestConfigureCommand.cxx | 2 +- Source/CTest/cmCTestCoverageHandler.cxx | 20 +++++------ Source/CTest/cmCTestGIT.cxx | 12 +++---- Source/CTest/cmCTestLaunch.cxx | 10 +++--- Source/CTest/cmCTestMemCheckHandler.cxx | 24 ++++++------- Source/CTest/cmCTestMultiProcessHandler.cxx | 8 ++--- Source/CTest/cmCTestRunTest.cxx | 4 +-- Source/CTest/cmCTestScriptHandler.cxx | 20 +++++------ Source/CTest/cmCTestSubmitCommand.cxx | 2 +- Source/CTest/cmCTestSubmitHandler.cxx | 12 +++---- Source/CTest/cmCTestTestHandler.cxx | 12 +++---- Source/CTest/cmCTestUpdateHandler.cxx | 14 ++++---- Source/CTest/cmCTestUploadCommand.cxx | 2 +- Source/CTest/cmCTestVC.cxx | 2 +- Source/CTest/cmParseCoberturaCoverage.cxx | 2 +- Source/cmAddCompileOptionsCommand.cxx | 2 +- Source/cmAddCustomCommandCommand.cxx | 4 +-- Source/cmAddCustomTargetCommand.cxx | 2 +- Source/cmAddDefinitionsCommand.cxx | 2 +- Source/cmAddExecutableCommand.cxx | 2 +- Source/cmAddLibraryCommand.cxx | 2 +- Source/cmAddSubDirectoryCommand.cxx | 4 +-- Source/cmAuxSourceDirectoryCommand.cxx | 2 +- Source/cmCPluginAPI.cxx | 4 +-- Source/cmCTest.cxx | 38 ++++++++++---------- Source/cmCacheManager.cxx | 6 ++-- Source/cmComputeLinkInformation.cxx | 11 +++--- Source/cmConditionEvaluator.cxx | 2 +- Source/cmConfigureFileCommand.cxx | 2 +- Source/cmCoreTryCompile.cxx | 20 +++++------ Source/cmCoreTryCompile.h | 2 +- Source/cmCustomCommandGenerator.cxx | 2 +- Source/cmDependsC.cxx | 23 ++++++------- Source/cmDependsFortran.cxx | 20 +++++------ Source/cmExecProgramCommand.cxx | 4 +-- Source/cmExecuteProcessCommand.cxx | 2 +- Source/cmExportBuildAndroidMKGenerator.cxx | 3 +- Source/cmExportCommand.cxx | 8 ++--- Source/cmExportFileGenerator.cxx | 22 ++++++------ Source/cmExportInstallFileGenerator.cxx | 14 ++++---- Source/cmExtraCodeBlocksGenerator.cxx | 14 ++++---- Source/cmExtraCodeLiteGenerator.cxx | 19 +++++----- Source/cmExtraKateGenerator.cxx | 16 ++++----- Source/cmExtraKateGenerator.h | 3 +- Source/cmExtraSublimeTextGenerator.cxx | 3 +- Source/cmFileCommand.cxx | 44 +++++++++++------------- Source/cmFindLibraryCommand.cxx | 2 +- Source/cmFindPackageCommand.cxx | 13 ++++--- Source/cmFindPathCommand.cxx | 4 +-- Source/cmFortranParserImpl.cxx | 6 ++-- Source/cmGeneratedFileStream.cxx | 2 +- Source/cmGeneratorExpression.cxx | 2 +- Source/cmGeneratorExpressionNode.cxx | 3 +- Source/cmGeneratorTarget.cxx | 10 +++--- Source/cmGetDirectoryPropertyCommand.cxx | 2 +- Source/cmGetPropertyCommand.cxx | 2 +- Source/cmGhsMultiTargetGenerator.cxx | 2 +- Source/cmGlobalGenerator.cxx | 20 +++++------ Source/cmGlobalGhsMultiGenerator.cxx | 4 +-- Source/cmGlobalNinjaGenerator.cxx | 4 +-- Source/cmGlobalUnixMakefileGenerator3.cxx | 7 ++-- Source/cmGlobalVisualStudioGenerator.cxx | 2 +- Source/cmGlobalXCodeGenerator.cxx | 3 +- Source/cmGlobalXCodeGenerator.h | 2 +- Source/cmIncludeCommand.cxx | 4 +-- Source/cmIncludeDirectoryCommand.cxx | 2 +- Source/cmInstallCommand.cxx | 8 ++--- Source/cmInstallDirectoryGenerator.cxx | 2 +- Source/cmInstallExportGenerator.cxx | 2 +- Source/cmInstallFilesCommand.cxx | 4 +-- Source/cmInstallGenerator.cxx | 4 +-- Source/cmInstallProgramsCommand.cxx | 4 +-- Source/cmLinkDirectoriesCommand.cxx | 2 +- Source/cmLoadCacheCommand.cxx | 2 +- Source/cmLocalGenerator.cxx | 28 +++++++-------- Source/cmLocalGenerator.h | 4 +-- Source/cmLocalUnixMakefileGenerator3.cxx | 19 +++++----- Source/cmLocalUnixMakefileGenerator3.h | 3 +- Source/cmLocalVisualStudio7Generator.cxx | 3 +- Source/cmMakeDirectoryCommand.cxx | 4 +-- Source/cmMakefile.cxx | 30 ++++++++-------- Source/cmMakefile.h | 19 +++++----- Source/cmMakefileExecutableTargetGenerator.cxx | 10 +++--- Source/cmMakefileLibraryTargetGenerator.cxx | 10 +++--- Source/cmMakefileTargetGenerator.cxx | 28 ++++++--------- Source/cmMakefileUtilityTargetGenerator.cxx | 8 ++--- Source/cmNinjaTargetGenerator.cxx | 8 ++--- Source/cmOSXBundleGenerator.cxx | 10 +++--- Source/cmOrderDirectories.cxx | 2 +- Source/cmOutputConverter.cxx | 4 +-- Source/cmOutputRequiredFilesCommand.cxx | 22 ++++++------ Source/cmQTWrapCPPCommand.cxx | 2 +- Source/cmQTWrapUICommand.cxx | 2 +- Source/cmQtAutoGenInitializer.cxx | 6 ++-- Source/cmRemoveDefinitionsCommand.cxx | 2 +- Source/cmServerProtocol.cxx | 11 +++--- Source/cmSetPropertyCommand.cxx | 2 +- Source/cmSourceFile.cxx | 2 +- Source/cmSourceFileLocation.cxx | 6 ++-- Source/cmSourceGroupCommand.cxx | 4 +-- Source/cmState.cxx | 10 +++--- Source/cmState.h | 4 +-- Source/cmSystemTools.cxx | 25 +++++++------- Source/cmSystemTools.h | 5 +-- Source/cmTargetCompileDefinitionsCommand.cxx | 2 +- Source/cmTargetIncludeDirectoriesCommand.cxx | 4 +-- Source/cmTryCompileCommand.cxx | 2 +- Source/cmTryRunCommand.cxx | 2 +- Source/cmUseMangledMesaCommand.cxx | 2 +- Source/cmUtilitySourceCommand.cxx | 4 +-- Source/cmWriteFileCommand.cxx | 4 +-- Source/cmake.cxx | 37 ++++++++++---------- Source/cmake.h | 4 +-- Source/cmcmd.cxx | 11 +++--- 122 files changed, 476 insertions(+), 509 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 2 00:05:12 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 2 Feb 2018 00:05:12 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1009-ga53697a Message-ID: <20180202050512.A331D103570@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via a53697acc76c8fa452cf083ca9f02b3f1cfd7711 (commit) from 5a16e762e21e22e7a212acc7e2bc7bd027d66166 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a53697acc76c8fa452cf083ca9f02b3f1cfd7711 commit a53697acc76c8fa452cf083ca9f02b3f1cfd7711 Author: Kitware Robot AuthorDate: Fri Feb 2 00:01:06 2018 -0500 Commit: Kitware Robot CommitDate: Fri Feb 2 00:01:06 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 7d735ea..d4ecf6e 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 10) -set(CMake_VERSION_PATCH 20180201) +set(CMake_VERSION_PATCH 20180202) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 2 07:25:05 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 2 Feb 2018 07:25:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1018-g457bcbd Message-ID: <20180202122505.BF448103126@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 457bcbd4f9e4972ed55aebf642770b79fa5e8a58 (commit) via 62c5fc80b1a82d677b66134e00cec44ab2e6a466 (commit) via 52ed76e46e6c295c4e6bfafd86f5b16f67606581 (commit) via d280327713a8bfd96223bc653316d987f5b9218b (commit) via df1693bdfc7bc0afa26b2f8673006186a822c735 (commit) via 20676cbaca92d1b3ad486518e34e99aef75ebe11 (commit) via 8285aa9e4e2df09b35f4faa930da6577979d4d2a (commit) via be46f9fb6e9fc0b33198ccf5396e0188e56940e4 (commit) via 854feacc60c5d1dcf53652a764841e1d9d602ac3 (commit) from a53697acc76c8fa452cf083ca9f02b3f1cfd7711 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=457bcbd4f9e4972ed55aebf642770b79fa5e8a58 commit 457bcbd4f9e4972ed55aebf642770b79fa5e8a58 Merge: 62c5fc8 df1693b Author: Brad King AuthorDate: Fri Feb 2 12:23:04 2018 +0000 Commit: Kitware Robot CommitDate: Fri Feb 2 07:24:07 2018 -0500 Merge topic 'simplify-ccg-converter' df1693bd cmCustomCommandGenerator: Simplify cmOutputConverter access Acked-by: Kitware Robot Merge-request: !1738 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=62c5fc80b1a82d677b66134e00cec44ab2e6a466 commit 62c5fc80b1a82d677b66134e00cec44ab2e6a466 Merge: 52ed76e 8285aa9 Author: Brad King AuthorDate: Fri Feb 2 12:23:15 2018 +0000 Commit: Kitware Robot CommitDate: Fri Feb 2 07:23:38 2018 -0500 Merge topic 'test-cuda-missing-check' 8285aa9e Tests: Add missing error check in CudaOnly.GPUDebugFlag Acked-by: Kitware Robot Acked-by: Robert Maynard Merge-request: !1739 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=52ed76e46e6c295c4e6bfafd86f5b16f67606581 commit 52ed76e46e6c295c4e6bfafd86f5b16f67606581 Merge: d280327 20676cb Author: Brad King AuthorDate: Fri Feb 2 12:22:54 2018 +0000 Commit: Kitware Robot CommitDate: Fri Feb 2 07:23:08 2018 -0500 Merge topic 'ninja-unused-device-link' 20676cba Ninja: Remove unused device link line code Acked-by: Kitware Robot Merge-request: !1737 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d280327713a8bfd96223bc653316d987f5b9218b commit d280327713a8bfd96223bc653316d987f5b9218b Merge: a53697a be46f9f Author: Brad King AuthorDate: Fri Feb 2 12:22:30 2018 +0000 Commit: Kitware Robot CommitDate: Fri Feb 2 07:22:40 2018 -0500 Merge topic 'update-kwsys' be46f9fb Merge branch 'upstream-KWSys' into update-kwsys 854feacc KWSys 2018-02-01 (04fcc449) Acked-by: Kitware Robot Merge-request: !1736 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=df1693bdfc7bc0afa26b2f8673006186a822c735 commit df1693bdfc7bc0afa26b2f8673006186a822c735 Author: Brad King AuthorDate: Thu Feb 1 11:13:24 2018 -0500 Commit: Brad King CommitDate: Thu Feb 1 14:58:25 2018 -0500 cmCustomCommandGenerator: Simplify cmOutputConverter access In commit v3.4.0-rc1~480^2~3 (cmCustomCommandGenerator: Port to cmOutputConverter, 2015-06-04), cmCustomCommandGenerator's access to the local generator was removed so it needed to construct its own cmOutputConverter instance. Access to the local generator was then restored by commit v3.4.0-rc1~285^2~21 (cmCustomCommandGenerator: Require cmLocalGenerator in API, 2015-07-25), so now we can use its cmOutputConverter base class methods directly. diff --git a/Source/cmCustomCommandGenerator.cxx b/Source/cmCustomCommandGenerator.cxx index 0f5119e..136cf39 100644 --- a/Source/cmCustomCommandGenerator.cxx +++ b/Source/cmCustomCommandGenerator.cxx @@ -8,7 +8,6 @@ #include "cmGeneratorTarget.h" #include "cmLocalGenerator.h" #include "cmMakefile.h" -#include "cmOutputConverter.h" #include "cmStateTypes.h" #include "cmSystemTools.h" @@ -167,8 +166,7 @@ void cmCustomCommandGenerator::AppendArguments(unsigned int c, if (this->OldStyle) { cmd += escapeForShellOldStyle(arg); } else { - cmOutputConverter converter(this->LG->GetStateSnapshot()); - cmd += converter.EscapeForShell(arg, this->MakeVars); + cmd += this->LG->EscapeForShell(arg, this->MakeVars); } } } https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=20676cbaca92d1b3ad486518e34e99aef75ebe11 commit 20676cbaca92d1b3ad486518e34e99aef75ebe11 Author: Brad King AuthorDate: Thu Feb 1 14:26:25 2018 -0500 Commit: Brad King CommitDate: Thu Feb 1 14:36:09 2018 -0500 Ninja: Remove unused device link line code Remove the `PRE_LINK` and `POST_BUILD` variables. They are not referenced by `WriteDeviceLinkRule`. Remove the `byproducts` local variable from `WriteDeviceLinkStatement` and all the code populating it. We never used the result. diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index eb595ba..ddbc772 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -685,16 +685,11 @@ void cmNinjaNormalTargetGenerator::WriteDeviceLinkStatement() } } - cmNinjaDeps byproducts; - if (!this->TargetNameImport.empty()) { const std::string impLibPath = localGen.ConvertToOutputFormat( targetOutputImplib, cmOutputConverter::SHELL); vars["TARGET_IMPLIB"] = impLibPath; EnsureParentDirectoryExists(impLibPath); - if (genTarget.HasImportLibrary()) { - byproducts.push_back(targetOutputImplib); - } } const std::string objPath = GetGeneratorTarget()->GetSupportDirectory(); @@ -712,29 +707,6 @@ void cmNinjaNormalTargetGenerator::WriteDeviceLinkStatement() std::replace(link_path.begin(), link_path.end(), '\\', '/'); } - const std::vector* cmdLists[3] = { - &genTarget.GetPreBuildCommands(), &genTarget.GetPreLinkCommands(), - &genTarget.GetPostBuildCommands() - }; - - std::vector preLinkCmdLines, postBuildCmdLines; - vars["PRE_LINK"] = localGen.BuildCommandLine(preLinkCmdLines); - vars["POST_BUILD"] = localGen.BuildCommandLine(postBuildCmdLines); - - std::vector* cmdLineLists[3] = { &preLinkCmdLines, - &preLinkCmdLines, - &postBuildCmdLines }; - - for (unsigned i = 0; i != 3; ++i) { - for (cmCustomCommand const& cc : *cmdLists[i]) { - cmCustomCommandGenerator ccg(cc, cfgName, this->GetLocalGenerator()); - localGen.AppendCustomCommandLines(ccg, *cmdLineLists[i]); - std::vector const& ccByproducts = ccg.GetByproducts(); - std::transform(ccByproducts.begin(), ccByproducts.end(), - std::back_inserter(byproducts), MapToNinjaPath()); - } - } - cmGlobalNinjaGenerator& globalGen = *this->GetGlobalGenerator(); // Device linking currently doesn't support response files so https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8285aa9e4e2df09b35f4faa930da6577979d4d2a commit 8285aa9e4e2df09b35f4faa930da6577979d4d2a Author: Brad King AuthorDate: Thu Feb 1 09:07:50 2018 -0500 Commit: Brad King CommitDate: Thu Feb 1 09:07:50 2018 -0500 Tests: Add missing error check in CudaOnly.GPUDebugFlag If `cudaMallocManaged` fails then later use of `has_debug` is not valid. diff --git a/Tests/CudaOnly/GPUDebugFlag/main.cu b/Tests/CudaOnly/GPUDebugFlag/main.cu index 8b97a3f..1f3fc12 100644 --- a/Tests/CudaOnly/GPUDebugFlag/main.cu +++ b/Tests/CudaOnly/GPUDebugFlag/main.cu @@ -49,6 +49,11 @@ int main(int argc, char** argv) { bool* has_debug; cudaError_t err = cudaMallocManaged(&has_debug, sizeof(bool)); + if (err != cudaSuccess) { + std::cerr << "cudaMallocManaged failed:\n" + << " " << cudaGetErrorString(err) << std::endl; + return 1; + } debug_kernel<<<1, 1>>>(has_debug); err = cudaDeviceSynchronize(); https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=be46f9fb6e9fc0b33198ccf5396e0188e56940e4 commit be46f9fb6e9fc0b33198ccf5396e0188e56940e4 Merge: 5a16e76 854feac Author: Brad King AuthorDate: Thu Feb 1 08:15:44 2018 -0500 Commit: Brad King CommitDate: Thu Feb 1 08:15:44 2018 -0500 Merge branch 'upstream-KWSys' into update-kwsys * upstream-KWSys: KWSys 2018-02-01 (04fcc449) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=854feacc60c5d1dcf53652a764841e1d9d602ac3 commit 854feacc60c5d1dcf53652a764841e1d9d602ac3 Author: KWSys Upstream AuthorDate: Thu Feb 1 07:44:45 2018 -0500 Commit: Brad King CommitDate: Thu Feb 1 08:15:44 2018 -0500 KWSys 2018-02-01 (04fcc449) Code extracted from: https://gitlab.kitware.com/utils/kwsys.git at commit 04fcc449646eb2ff3d701986946a1db60b2161b7 (master). Upstream Shortlog ----------------- Ben Boeckel (11): ba270398 SystemToolsAppendComponents: move strings when building components cfd0f1e6 JoinPath: push back as a character 6770cb3e GetFilenameName: optionally don't search for \ on non-Windows 22b189b0 ConvertToUnixSlashes: remove escaped space logic 342d69a4 ConvertToUnixSlashes: short-circuit on hasDoubleSlash 5dd87350 ConvertToUnixSlashes: remove pos1 3b46b7c0 ConvertToUnixSlashes: bail early on empty paths 55d1d6ab CollapseFullPath: reserve space for components 68807138 CollapseFullPath: prefer .empty() to .length() == 0 71a6de42 CollapseFullPath: refactor the overloads to share implementations 318550c7 CheckCollapsePath: add more test cases diff --git a/CMakeLists.txt b/CMakeLists.txt index 2570e5b..c0154c8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -496,6 +496,16 @@ IF(KWSYS_USE_SystemTools) KWSYS_CXX_STAT_HAS_ST_MTIM=${KWSYS_CXX_STAT_HAS_ST_MTIM} KWSYS_CXX_STAT_HAS_ST_MTIMESPEC=${KWSYS_CXX_STAT_HAS_ST_MTIMESPEC} ) + IF(NOT WIN32) + IF(KWSYS_STANDALONE) + OPTION(KWSYS_SYSTEMTOOLS_SUPPORT_WINDOWS_SLASHES "If true, Windows paths will be supported on Unix as well" ON) + ENDIF() + IF(KWSYS_SYSTEMTOOLS_SUPPORT_WINDOWS_SLASHES) + SET_PROPERTY(SOURCE SystemTools.cxx testSystemTools.cxx APPEND PROPERTY COMPILE_DEFINITIONS + KWSYS_SYSTEMTOOLS_SUPPORT_WINDOWS_SLASHES + ) + ENDIF() + ENDIF() # Disable getpwnam for static linux builds since it depends on shared glibc GET_PROPERTY(SHARED_LIBS_SUPPORTED GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS) diff --git a/SystemTools.cxx b/SystemTools.cxx index 999beb3..38910c8 100644 --- a/SystemTools.cxx +++ b/SystemTools.cxx @@ -1884,21 +1884,23 @@ static void ConvertVMSToUnix(std::string& path) // convert windows slashes to unix slashes void SystemTools::ConvertToUnixSlashes(std::string& path) { + if (path.empty()) { + return; + } + const char* pathCString = path.c_str(); bool hasDoubleSlash = false; #ifdef __VMS ConvertVMSToUnix(path); #else const char* pos0 = pathCString; - const char* pos1 = pathCString + 1; for (std::string::size_type pos = 0; *pos0; ++pos) { - // make sure we don't convert an escaped space to a unix slash - if (*pos0 == '\\' && *pos1 != ' ') { + if (*pos0 == '\\') { path[pos] = '/'; } // Also, reuse the loop to check for slash followed by another slash - if (*pos1 == '/' && *(pos1 + 1) == '/' && !hasDoubleSlash) { + if (!hasDoubleSlash && *(pos0 + 1) == '/' && *(pos0 + 2) == '/') { #ifdef _WIN32 // However, on windows if the first characters are both slashes, // then keep them that way, so that network paths can be handled. @@ -1911,43 +1913,41 @@ void SystemTools::ConvertToUnixSlashes(std::string& path) } pos0++; - pos1++; } if (hasDoubleSlash) { SystemTools::ReplaceString(path, "//", "/"); } #endif + // remove any trailing slash - if (!path.empty()) { - // if there is a tilda ~ then replace it with HOME - pathCString = path.c_str(); - if (pathCString[0] == '~' && - (pathCString[1] == '/' || pathCString[1] == '\0')) { - std::string homeEnv; - if (SystemTools::GetEnv("HOME", homeEnv)) { - path.replace(0, 1, homeEnv); - } + // if there is a tilda ~ then replace it with HOME + pathCString = path.c_str(); + if (pathCString[0] == '~' && + (pathCString[1] == '/' || pathCString[1] == '\0')) { + std::string homeEnv; + if (SystemTools::GetEnv("HOME", homeEnv)) { + path.replace(0, 1, homeEnv); } + } #ifdef HAVE_GETPWNAM - else if (pathCString[0] == '~') { - std::string::size_type idx = path.find_first_of("/\0"); - std::string user = path.substr(1, idx - 1); - passwd* pw = getpwnam(user.c_str()); - if (pw) { - path.replace(0, idx, pw->pw_dir); - } + else if (pathCString[0] == '~') { + std::string::size_type idx = path.find_first_of("/\0"); + std::string user = path.substr(1, idx - 1); + passwd* pw = getpwnam(user.c_str()); + if (pw) { + path.replace(0, idx, pw->pw_dir); } + } #endif - // remove trailing slash if the path is more than - // a single / - pathCString = path.c_str(); - size_t size = path.size(); - if (size > 1 && *path.rbegin() == '/') { - // if it is c:/ then do not remove the trailing slash - if (!((size == 3 && pathCString[1] == ':'))) { - path.resize(size - 1); - } + // remove trailing slash if the path is more than + // a single / + pathCString = path.c_str(); + size_t size = path.size(); + if (size > 1 && *path.rbegin() == '/') { + // if it is c:/ then do not remove the trailing slash + if (!((size == 3 && pathCString[1] == ':'))) { + path.resize(size - 1); } } } @@ -3171,8 +3171,8 @@ void SystemTools::CheckTranslationPath(std::string& path) static void SystemToolsAppendComponents( std::vector& out_components, - std::vector::const_iterator first, - std::vector::const_iterator last) + std::vector::iterator first, + std::vector::iterator last) { static const std::string up = ".."; static const std::string cur = "."; @@ -3182,7 +3182,11 @@ static void SystemToolsAppendComponents( out_components.resize(out_components.size() - 1); } } else if (!i->empty() && *i != cur) { +#if __cplusplus >= 201103L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201103L) + out_components.push_back(std::move(*i)); +#else out_components.push_back(*i); +#endif } } } @@ -3190,63 +3194,18 @@ static void SystemToolsAppendComponents( std::string SystemTools::CollapseFullPath(const std::string& in_path, const char* in_base) { - // Collect the output path components. - std::vector out_components; - - // Split the input path components. - std::vector path_components; - SystemTools::SplitPath(in_path, path_components); - - // If the input path is relative, start with a base path. - if (path_components[0].empty()) { - std::vector base_components; - if (in_base) { - // Use the given base path. - SystemTools::SplitPath(in_base, base_components); + // Use the current working directory as a base path. + char buf[2048]; + const char* res_in_base = in_base; + if (!res_in_base) { + if (const char* cwd = Getcwd(buf, 2048)) { + res_in_base = cwd; } else { - // Use the current working directory as a base path. - char buf[2048]; - if (const char* cwd = Getcwd(buf, 2048)) { - SystemTools::SplitPath(cwd, base_components); - } else { - base_components.push_back(""); - } + res_in_base = ""; } - - // Append base path components to the output path. - out_components.push_back(base_components[0]); - SystemToolsAppendComponents(out_components, base_components.begin() + 1, - base_components.end()); } - // Append input path components to the output path. - SystemToolsAppendComponents(out_components, path_components.begin(), - path_components.end()); - - // Transform the path back to a string. - std::string newPath = SystemTools::JoinPath(out_components); - - // Update the translation table with this potentially new path. I am not - // sure why this line is here, it seems really questionable, but yet I - // would put good money that if I remove it something will break, basically - // from what I can see it created a mapping from the collapsed path, to be - // replaced by the input path, which almost completely does the opposite of - // this function, the only thing preventing this from happening a lot is - // that if the in_path has a .. in it, then it is not added to the - // translation table. So for most calls this either does nothing due to the - // .. or it adds a translation between identical paths as nothing was - // collapsed, so I am going to try to comment it out, and see what hits the - // fan, hopefully quickly. - // Commented out line below: - // SystemTools::AddTranslationPath(newPath, in_path); - - SystemTools::CheckTranslationPath(newPath); -#ifdef _WIN32 - newPath = SystemTools::GetActualCaseForPath(newPath); - SystemTools::ConvertToUnixSlashes(newPath); -#endif - // Return the reconstructed path. - return newPath; + return SystemTools::CollapseFullPath(in_path, std::string(res_in_base)); } std::string SystemTools::CollapseFullPath(const std::string& in_path, @@ -3258,9 +3217,10 @@ std::string SystemTools::CollapseFullPath(const std::string& in_path, // Split the input path components. std::vector path_components; SystemTools::SplitPath(in_path, path_components); + out_components.reserve(path_components.size()); // If the input path is relative, start with a base path. - if (path_components[0].length() == 0) { + if (path_components[0].empty()) { std::vector base_components; // Use the given base path. SystemTools::SplitPath(in_base, base_components); @@ -3619,7 +3579,7 @@ std::string SystemTools::JoinPath( // All remaining components are always separated with a slash. while (first != last) { - result.append("/"); + result.push_back('/'); result.append((*first++)); } @@ -3715,7 +3675,12 @@ std::string SystemTools::GetFilenamePath(const std::string& filename) */ std::string SystemTools::GetFilenameName(const std::string& filename) { - std::string::size_type slash_pos = filename.find_last_of("/\\"); +#if defined(_WIN32) || defined(KWSYS_SYSTEMTOOLS_SUPPORT_WINDOWS_SLASHES) + const char* separators = "/\\"; +#else + char separators = '/'; +#endif + std::string::size_type slash_pos = filename.find_last_of(separators); if (slash_pos != std::string::npos) { return filename.substr(slash_pos + 1); } else { diff --git a/testSystemTools.cxx b/testSystemTools.cxx index f1321e5..e436a2b 100644 --- a/testSystemTools.cxx +++ b/testSystemTools.cxx @@ -39,19 +39,19 @@ typedef unsigned short mode_t; static const char* toUnixPaths[][2] = { { "/usr/local/bin/passwd", "/usr/local/bin/passwd" }, { "/usr/lo cal/bin/pa sswd", "/usr/lo cal/bin/pa sswd" }, - { "/usr/lo\\ cal/bin/pa\\ sswd", "/usr/lo\\ cal/bin/pa\\ sswd" }, + { "/usr/lo\\ cal/bin/pa\\ sswd", "/usr/lo/ cal/bin/pa/ sswd" }, { "c:/usr/local/bin/passwd", "c:/usr/local/bin/passwd" }, { "c:/usr/lo cal/bin/pa sswd", "c:/usr/lo cal/bin/pa sswd" }, - { "c:/usr/lo\\ cal/bin/pa\\ sswd", "c:/usr/lo\\ cal/bin/pa\\ sswd" }, + { "c:/usr/lo\\ cal/bin/pa\\ sswd", "c:/usr/lo/ cal/bin/pa/ sswd" }, { "\\usr\\local\\bin\\passwd", "/usr/local/bin/passwd" }, { "\\usr\\lo cal\\bin\\pa sswd", "/usr/lo cal/bin/pa sswd" }, - { "\\usr\\lo\\ cal\\bin\\pa\\ sswd", "/usr/lo\\ cal/bin/pa\\ sswd" }, + { "\\usr\\lo\\ cal\\bin\\pa\\ sswd", "/usr/lo/ cal/bin/pa/ sswd" }, { "c:\\usr\\local\\bin\\passwd", "c:/usr/local/bin/passwd" }, { "c:\\usr\\lo cal\\bin\\pa sswd", "c:/usr/lo cal/bin/pa sswd" }, - { "c:\\usr\\lo\\ cal\\bin\\pa\\ sswd", "c:/usr/lo\\ cal/bin/pa\\ sswd" }, + { "c:\\usr\\lo\\ cal\\bin\\pa\\ sswd", "c:/usr/lo/ cal/bin/pa/ sswd" }, { "\\\\usr\\local\\bin\\passwd", "//usr/local/bin/passwd" }, { "\\\\usr\\lo cal\\bin\\pa sswd", "//usr/lo cal/bin/pa sswd" }, - { "\\\\usr\\lo\\ cal\\bin\\pa\\ sswd", "//usr/lo\\ cal/bin/pa\\ sswd" }, + { "\\\\usr\\lo\\ cal\\bin\\pa\\ sswd", "//usr/lo/ cal/bin/pa/ sswd" }, { KWSYS_NULLPTR, KWSYS_NULLPTR } }; @@ -700,6 +700,16 @@ static bool CheckCollapsePath() bool res = true; res &= CheckCollapsePath("/usr/share/*", "/usr/share/*"); res &= CheckCollapsePath("C:/Windows/*", "C:/Windows/*"); + res &= CheckCollapsePath("/usr/share/../lib", "/usr/lib"); + res &= CheckCollapsePath("/usr/share/./lib", "/usr/share/lib"); + res &= CheckCollapsePath("/usr/share/../../lib", "/lib"); + res &= CheckCollapsePath("/usr/share/.././../lib", "/lib"); + res &= CheckCollapsePath("/../lib", "/lib"); + res &= CheckCollapsePath("/../lib/", "/lib"); + res &= CheckCollapsePath("/", "/"); + res &= CheckCollapsePath("C:/", "C:/"); + res &= CheckCollapsePath("C:/../", "C:/"); + res &= CheckCollapsePath("C:/../../", "C:/"); return res; } @@ -764,20 +774,26 @@ static bool CheckGetFilenameName() const char* windowsFilepath = "C:\\somewhere\\something"; const char* unixFilepath = "/somewhere/something"; - std::string expectedFilename = "something"; +#if defined(_WIN32) || defined(KWSYS_SYSTEMTOOLS_SUPPORT_WINDOWS_SLASHES) + std::string expectedWindowsFilename = "something"; +#else + std::string expectedWindowsFilename = "C:\\somewhere\\something"; +#endif + std::string expectedUnixFilename = "something"; bool res = true; std::string filename = kwsys::SystemTools::GetFilenameName(windowsFilepath); - if (filename != expectedFilename) { + if (filename != expectedWindowsFilename) { std::cerr << "GetFilenameName(" << windowsFilepath << ") yielded " - << filename << " instead of " << expectedFilename << std::endl; + << filename << " instead of " << expectedWindowsFilename + << std::endl; res = false; } filename = kwsys::SystemTools::GetFilenameName(unixFilepath); - if (filename != expectedFilename) { + if (filename != expectedUnixFilename) { std::cerr << "GetFilenameName(" << unixFilepath << ") yielded " << filename - << " instead of " << expectedFilename << std::endl; + << " instead of " << expectedUnixFilename << std::endl; res = false; } return res; ----------------------------------------------------------------------- Summary of changes: Source/cmCustomCommandGenerator.cxx | 4 +- Source/cmNinjaNormalTargetGenerator.cxx | 28 ------ Source/kwsys/CMakeLists.txt | 10 +++ Source/kwsys/SystemTools.cxx | 141 ++++++++++++------------------- Source/kwsys/testSystemTools.cxx | 36 +++++--- Tests/CudaOnly/GPUDebugFlag/main.cu | 5 ++ 6 files changed, 95 insertions(+), 129 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 2 08:05:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 2 Feb 2018 08:05:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1020-gb12069f Message-ID: <20180202130504.0B1E51033DB@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via b12069f7b0dc0a5e9b9031dcae2cca1b1ff7281d (commit) via bc3697fa51e087953ec0e40a0a865e87c896e3a8 (commit) from 457bcbd4f9e4972ed55aebf642770b79fa5e8a58 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b12069f7b0dc0a5e9b9031dcae2cca1b1ff7281d commit b12069f7b0dc0a5e9b9031dcae2cca1b1ff7281d Merge: 457bcbd bc3697f Author: Brad King AuthorDate: Fri Feb 2 12:58:04 2018 +0000 Commit: Kitware Robot CommitDate: Fri Feb 2 07:58:11 2018 -0500 Merge topic 'UseSWIG-fix-regression' bc3697fa UseSWIG: Restore support for like-named .i files in different modules Acked-by: Kitware Robot Merge-request: !1734 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bc3697fa51e087953ec0e40a0a865e87c896e3a8 commit bc3697fa51e087953ec0e40a0a865e87c896e3a8 Author: Marc Chevrier AuthorDate: Thu Feb 1 14:49:05 2018 +0100 Commit: Brad King CommitDate: Fri Feb 2 07:41:44 2018 -0500 UseSWIG: Restore support for like-named .i files in different modules Fix logic added by commit 2ee10119ea (swig: fix incremental build in case of removed interface files, 2017-11-06). Name the extra targets added for Makefile generators using both the module name and .i base name to avoid collisions across modules. Also make sure the extra targets added for all .i files in a module are added as dependencies instead of just the last one. Fixes: #17704 diff --git a/Modules/UseSWIG.cmake b/Modules/UseSWIG.cmake index b38e2b7..959893f 100644 --- a/Modules/UseSWIG.cmake +++ b/Modules/UseSWIG.cmake @@ -219,7 +219,7 @@ macro(SWIG_ADD_SOURCE_TO_MODULE name outfiles infile) if(CMAKE_GENERATOR MATCHES "Make") get_filename_component(swig_generated_timestamp "${swig_generated_file_fullname}" NAME_WE) - set(swig_gen_target gen_${swig_generated_timestamp}) + set(swig_gen_target gen_${name}_${swig_generated_timestamp}) set(swig_generated_timestamp "${swig_outdir}/${swig_generated_timestamp}.stamp") set(swig_custom_output ${swig_generated_timestamp}) @@ -311,9 +311,11 @@ macro(SWIG_ADD_LIBRARY name) endforeach() set(swig_generated_sources) + set(swig_generated_targets) foreach(it ${swig_dot_i_sources}) SWIG_ADD_SOURCE_TO_MODULE(${name} swig_generated_source ${it}) set(swig_generated_sources ${swig_generated_sources} "${swig_generated_source}") + list(APPEND swig_generated_targets "${swig_gen_target}") endforeach() get_directory_property(swig_extra_clean_files ADDITIONAL_MAKE_CLEAN_FILES) set_directory_properties(PROPERTIES @@ -324,7 +326,7 @@ macro(SWIG_ADD_LIBRARY name) ${swig_other_sources}) if(CMAKE_GENERATOR MATCHES "Make") # see IMPLICIT_DEPENDS above - add_dependencies(${SWIG_MODULE_${name}_REAL_NAME} ${swig_gen_target}) + add_dependencies(${SWIG_MODULE_${name}_REAL_NAME} ${swig_generated_targets}) endif() if("${_SAM_TYPE}" STREQUAL "MODULE") set_target_properties(${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES NO_SONAME ON) ----------------------------------------------------------------------- Summary of changes: Modules/UseSWIG.cmake | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Sat Feb 3 00:05:06 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Sat, 3 Feb 2018 00:05:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1021-g09d7ed2 Message-ID: <20180203050506.76C4B102E19@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 09d7ed20dfd534b467a21bf341c2073ecc66a5b2 (commit) from b12069f7b0dc0a5e9b9031dcae2cca1b1ff7281d (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=09d7ed20dfd534b467a21bf341c2073ecc66a5b2 commit 09d7ed20dfd534b467a21bf341c2073ecc66a5b2 Author: Kitware Robot AuthorDate: Sat Feb 3 00:01:12 2018 -0500 Commit: Kitware Robot CommitDate: Sat Feb 3 00:01:12 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index d4ecf6e..f984f1a 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 10) -set(CMake_VERSION_PATCH 20180202) +set(CMake_VERSION_PATCH 20180203) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Sun Feb 4 00:05:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Sun, 4 Feb 2018 00:05:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1022-gb4a06e2 Message-ID: <20180204050504.3450C103315@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via b4a06e2cf7129155ed9260fd71eac5a2557c297f (commit) from 09d7ed20dfd534b467a21bf341c2073ecc66a5b2 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b4a06e2cf7129155ed9260fd71eac5a2557c297f commit b4a06e2cf7129155ed9260fd71eac5a2557c297f Author: Kitware Robot AuthorDate: Sun Feb 4 00:01:09 2018 -0500 Commit: Kitware Robot CommitDate: Sun Feb 4 00:01:09 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index f984f1a..86e41dd 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 10) -set(CMake_VERSION_PATCH 20180203) +set(CMake_VERSION_PATCH 20180204) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 5 00:05:05 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 5 Feb 2018 00:05:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1023-g30ee1dc Message-ID: <20180205050505.4FCF3103447@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 30ee1dc7b0bf0b6deb5627617e275d60a3e7d757 (commit) from b4a06e2cf7129155ed9260fd71eac5a2557c297f (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=30ee1dc7b0bf0b6deb5627617e275d60a3e7d757 commit 30ee1dc7b0bf0b6deb5627617e275d60a3e7d757 Author: Kitware Robot AuthorDate: Mon Feb 5 00:01:09 2018 -0500 Commit: Kitware Robot CommitDate: Mon Feb 5 00:01:09 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 86e41dd..a6e8503 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 10) -set(CMake_VERSION_PATCH 20180204) +set(CMake_VERSION_PATCH 20180205) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 5 08:45:06 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 5 Feb 2018 08:45:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1029-g213ecf0 Message-ID: <20180205134506.20CD0102CC0@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 213ecf05d681522dfa6ca8396281494a2c7b7b9a (commit) via e559b45ff86cfe7d6a82348bb8b97d9d77fa50f8 (commit) via 4d9ccd0abd7aee723d33e78d040375e92336ca3b (commit) via c4ffbb79c0b52f6ed80304493730cfc3ebb15069 (commit) via a8ee7406a74cbc4d5e341ad33210b8eeb99af48f (commit) via 6d148d6d53913710408a8a1006dd93998c44260a (commit) from 30ee1dc7b0bf0b6deb5627617e275d60a3e7d757 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=213ecf05d681522dfa6ca8396281494a2c7b7b9a commit 213ecf05d681522dfa6ca8396281494a2c7b7b9a Merge: e559b45 a8ee740 Author: Brad King AuthorDate: Mon Feb 5 13:41:35 2018 +0000 Commit: Kitware Robot CommitDate: Mon Feb 5 08:43:05 2018 -0500 Merge topic 'autogen-improve-multi-config' a8ee7406 Autogen: Improved multi-config include scheme Acked-by: Kitware Robot Merge-request: !1735 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e559b45ff86cfe7d6a82348bb8b97d9d77fa50f8 commit e559b45ff86cfe7d6a82348bb8b97d9d77fa50f8 Merge: 4d9ccd0 c4ffbb7 Author: Brad King AuthorDate: Mon Feb 5 13:41:57 2018 +0000 Commit: Kitware Robot CommitDate: Mon Feb 5 08:42:33 2018 -0500 Merge topic 'autogen-documentation' c4ffbb79 Autogen: Documentation: Update for AUTORCC changes Acked-by: Kitware Robot Merge-request: !1744 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4d9ccd0abd7aee723d33e78d040375e92336ca3b commit 4d9ccd0abd7aee723d33e78d040375e92336ca3b Merge: 30ee1dc 6d148d6 Author: Brad King AuthorDate: Mon Feb 5 13:41:20 2018 +0000 Commit: Kitware Robot CommitDate: Mon Feb 5 08:41:52 2018 -0500 Merge topic 'vs-static-ConvertToWindowsSlash' 6d148d6d cmVisualStudio10TargetGenerator: Limit scope of ConvertToWindowsSlash() Acked-by: Kitware Robot Merge-request: !1741 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c4ffbb79c0b52f6ed80304493730cfc3ebb15069 commit c4ffbb79c0b52f6ed80304493730cfc3ebb15069 Author: Sebastian Holtermann AuthorDate: Sat Feb 3 10:12:01 2018 +0100 Commit: Sebastian Holtermann CommitDate: Sat Feb 3 10:12:01 2018 +0100 Autogen: Documentation: Update for AUTORCC changes diff --git a/Help/manual/cmake-qt.7.rst b/Help/manual/cmake-qt.7.rst index e5c593f..724d8ec 100644 --- a/Help/manual/cmake-qt.7.rst +++ b/Help/manual/cmake-qt.7.rst @@ -217,19 +217,16 @@ enabling :prop_sf:`SKIP_AUTORCC` or the broader :prop_sf:`SKIP_AUTOGEN`. Visual Studio Generators ======================== -When using the :manual:`Visual Studio generators ` -CMake tries to use a ``PRE_BUILD`` -:command:`custom command ` instead -of a :command:`custom target ` for autogen. -``PRE_BUILD`` can't be used when the autogen target depends on files. +When using the :manual:`Visual Studio generators `, +CMake uses a ``PRE_BUILD`` :command:`custom command ` for +:prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`. +If the :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC` processing depends on files, +a :command:`custom target ` is used instead. This happens when -- :prop_tgt:`AUTOMOC` or :prop_tgt:`AUTOUIC` is enabled and the origin target - depends on :prop_sf:`GENERATED` files which aren't excluded from autogen by - :prop_sf:`SKIP_AUTOMOC`, :prop_sf:`SKIP_AUTOUIC`, :prop_sf:`SKIP_AUTOGEN` - or :policy:`CMP0071` -- :prop_tgt:`AUTORCC` is enabled and a ``.qrc`` file is listed in - the origin target sources +- The origin target depends on :prop_sf:`GENERATED` files which aren't excluded + from :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC` by :prop_sf:`SKIP_AUTOMOC`, + :prop_sf:`SKIP_AUTOUIC`, :prop_sf:`SKIP_AUTOGEN` or :policy:`CMP0071` - :prop_tgt:`AUTOGEN_TARGET_DEPENDS` lists a source file qtmain.lib on Windows diff --git a/Help/prop_tgt/AUTORCC.rst b/Help/prop_tgt/AUTORCC.rst index c0f6a26..3cc5990 100644 --- a/Help/prop_tgt/AUTORCC.rst +++ b/Help/prop_tgt/AUTORCC.rst @@ -13,6 +13,11 @@ as target sources at build time and invoke ``rcc`` accordingly. This property is initialized by the value of the :variable:`CMAKE_AUTORCC` variable if it is set when a target is created. +By default :prop_tgt:`AUTORCC` is processed inside a +:command:`custom command `. +If the ``.qrc`` file is :prop_sf:`GENERATED` though, a +:command:`custom target ` is used instead. + Additional command line options for rcc can be set via the :prop_sf:`AUTORCC_OPTIONS` source file property on the ``.qrc`` file. https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a8ee7406a74cbc4d5e341ad33210b8eeb99af48f commit a8ee7406a74cbc4d5e341ad33210b8eeb99af48f Author: Sebastian Holtermann AuthorDate: Wed Jan 31 13:54:37 2018 +0100 Commit: Sebastian Holtermann CommitDate: Fri Feb 2 09:10:40 2018 +0100 Autogen: Improved multi-config include scheme For multi configuration generators AUTOMOC generates the moc files that are included in `mocs_compilation.cpp` in `AUTOGEN_BUILD_DIR/include_$/`. By doing so each configuration reads different moc files when compiling `mocs_compilation.cpp`. Since we do not (need to) rewrite `mocs_compilation.cpp` on a configuration change anymore, the files also does not need to be recompiled anymore. Not having to rewrite and recompile `mocs_compilation.cpp` on a configuration change anymore was the main objective of this patch. In a similar fashion AUTORCC generates a `qrc_BASE_CMAKE.cpp` file below `AUTOGEN_BUILD_DIR/include_$/` and `qrc_BASE.cpp` becomes a mere wrapper that includes this actuall rcc output file (when using multi configuration generators). The template files `Modules/AutoRccInfo.cmake.in` and `Modules/AutogenInfo.cmake.in` were removed in favor of writing the info `.cmake` files manually. Closes #17230 diff --git a/Modules/AutoRccInfo.cmake.in b/Modules/AutoRccInfo.cmake.in deleted file mode 100644 index cbab4a7..0000000 --- a/Modules/AutoRccInfo.cmake.in +++ /dev/null @@ -1,7 +0,0 @@ -# Meta -set(ARCC_MULTI_CONFIG @_multi_config@) -# Directories and files -set(ARCC_BUILD_DIR @_build_dir@) -# Qt environment -set(ARCC_RCC_EXECUTABLE @_qt_rcc_executable@) -set(ARCC_RCC_LIST_OPTIONS @_qt_rcc_list_options@) diff --git a/Modules/AutogenInfo.cmake.in b/Modules/AutogenInfo.cmake.in deleted file mode 100644 index 7320c0a..0000000 --- a/Modules/AutogenInfo.cmake.in +++ /dev/null @@ -1,32 +0,0 @@ -# Meta -set(AM_MULTI_CONFIG @_multi_config@) -set(AM_PARALLEL @_parallel@) -# Directories and files -set(AM_CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@/") -set(AM_CMAKE_SOURCE_DIR "@CMAKE_SOURCE_DIR@/") -set(AM_CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@/") -set(AM_CMAKE_CURRENT_BINARY_DIR "@CMAKE_CURRENT_BINARY_DIR@/") -set(AM_CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE "@CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE@") -set(AM_BUILD_DIR @_build_dir@) -set(AM_SOURCES @_sources@) -set(AM_HEADERS @_headers@) -set(AM_SETTINGS_FILE @_settings_file@) -# Qt environment -set(AM_QT_VERSION_MAJOR @_qt_version_major@) -set(AM_QT_MOC_EXECUTABLE @_qt_moc_executable@) -set(AM_QT_UIC_EXECUTABLE @_qt_uic_executable@) -# MOC settings -set(AM_MOC_SKIP @_moc_skip@) -set(AM_MOC_DEFINITIONS @_moc_compile_defs@) -set(AM_MOC_INCLUDES @_moc_include_dirs@) -set(AM_MOC_OPTIONS @_moc_options@) -set(AM_MOC_RELAXED_MODE @_moc_relaxed_mode@) -set(AM_MOC_MACRO_NAMES @_moc_macro_names@) -set(AM_MOC_DEPEND_FILTERS @_moc_depend_filters@) -set(AM_MOC_PREDEFS_CMD @_moc_predefs_cmd@) -# UIC settings -set(AM_UIC_SKIP @_uic_skip@) -set(AM_UIC_TARGET_OPTIONS @_uic_target_options@) -set(AM_UIC_OPTIONS_FILES @_qt_uic_options_files@) -set(AM_UIC_OPTIONS_OPTIONS @_qt_uic_options_options@) -set(AM_UIC_SEARCH_PATHS @_uic_search_paths@) diff --git a/Source/cmQtAutoGen.cxx b/Source/cmQtAutoGen.cxx index 18ecbe7..6e9ca44 100644 --- a/Source/cmQtAutoGen.cxx +++ b/Source/cmQtAutoGen.cxx @@ -17,10 +17,6 @@ std::string const genNameMoc = "AutoMoc"; std::string const genNameUic = "AutoUic"; std::string const genNameRcc = "AutoRcc"; -std::string const mcNameSingle = "SINGLE"; -std::string const mcNameWrapper = "WRAPPER"; -std::string const mcNameMulti = "MULTI"; - // - Static functions /// @brief Merges newOpts into baseOpts @@ -102,30 +98,6 @@ std::string cmQtAutoGen::GeneratorNameUpper(GeneratorT genType) return cmSystemTools::UpperCase(cmQtAutoGen::GeneratorName(genType)); } -std::string const& cmQtAutoGen::MultiConfigName(MultiConfigT config) -{ - switch (config) { - case MultiConfigT::SINGLE: - return mcNameSingle; - case MultiConfigT::WRAPPER: - return mcNameWrapper; - case MultiConfigT::MULTI: - return mcNameMulti; - } - return mcNameWrapper; -} - -cmQtAutoGen::MultiConfigT cmQtAutoGen::MultiConfigType(std::string const& name) -{ - if (name == mcNameSingle) { - return MultiConfigT::SINGLE; - } - if (name == mcNameMulti) { - return MultiConfigT::MULTI; - } - return MultiConfigT::WRAPPER; -} - std::string cmQtAutoGen::Quoted(std::string const& text) { static const char* rep[18] = { "\\", "\\\\", "\"", "\\\"", "\a", "\\a", diff --git a/Source/cmQtAutoGen.h b/Source/cmQtAutoGen.h index 30ce0f6..67f61b1 100644 --- a/Source/cmQtAutoGen.h +++ b/Source/cmQtAutoGen.h @@ -28,25 +28,12 @@ public: RCC }; - /// @brief Multiconfiguration type - enum class MultiConfigT - { - SINGLE, // Single configuration - WRAPPER, // Multi configuration using wrapper files - MULTI // Multi configuration using per config sources - }; - public: /// @brief Returns the generator name static std::string const& GeneratorName(GeneratorT genType); /// @brief Returns the generator name in upper case static std::string GeneratorNameUpper(GeneratorT genType); - /// @brief Returns the multi configuration name string - static std::string const& MultiConfigName(MultiConfigT config); - /// @brief Returns the multi configuration type - static MultiConfigT MultiConfigType(std::string const& name); - /// @brief Returns a the string escaped and enclosed in quotes static std::string Quoted(std::string const& text); diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx index 0f3cb23..41142e5 100644 --- a/Source/cmQtAutoGenInitializer.cxx +++ b/Source/cmQtAutoGenInitializer.cxx @@ -68,43 +68,6 @@ static std::size_t GetParallelCPUCount() return count; } -static void AddDefinitionEscaped(cmMakefile* makefile, const char* key, - std::string const& value) -{ - makefile->AddDefinition(key, - cmOutputConverter::EscapeForCMake(value).c_str()); -} - -static void AddDefinitionEscaped(cmMakefile* makefile, const char* key, - const std::vector& values) -{ - makefile->AddDefinition( - key, cmOutputConverter::EscapeForCMake(cmJoin(values, ";")).c_str()); -} - -static void AddDefinitionEscaped(cmMakefile* makefile, const char* key, - const std::set& values) -{ - makefile->AddDefinition( - key, cmOutputConverter::EscapeForCMake(cmJoin(values, ";")).c_str()); -} - -static void AddDefinitionEscaped( - cmMakefile* makefile, const char* key, - const std::vector>& lists) -{ - std::vector seplist; - for (const std::vector& list : lists) { - std::string blist = "{"; - blist += cmJoin(list, ";"); - blist += "}"; - seplist.push_back(std::move(blist)); - } - makefile->AddDefinition(key, cmOutputConverter::EscapeForCMake( - cmJoin(seplist, cmQtAutoGen::ListSep)) - .c_str()); -} - static bool AddToSourceGroup(cmMakefile* makefile, std::string const& fileName, cmQtAutoGen::GeneratorT genType) { @@ -234,8 +197,8 @@ cmQtAutoGenInitializer::cmQtAutoGenInitializer( , MocEnabled(mocEnabled) , UicEnabled(uicEnabled) , RccEnabled(rccEnabled) + , MultiConfig(false) , QtVersionMajor(qtVersionMajor) - , MultiConfig(MultiConfigT::WRAPPER) { this->QtVersionMinor = cmQtAutoGenInitializer::GetQtMinorVersion(target, this->QtVersionMajor); @@ -248,30 +211,12 @@ void cmQtAutoGenInitializer::InitCustomTargets() cmGlobalGenerator* globalGen = localGen->GetGlobalGenerator(); // Configurations + this->MultiConfig = globalGen->IsMultiConfig(); this->ConfigDefault = makefile->GetConfigurations(this->ConfigsList); if (this->ConfigsList.empty()) { this->ConfigsList.push_back(this->ConfigDefault); } - // Multi configuration - { - if (!globalGen->IsMultiConfig()) { - this->MultiConfig = MultiConfigT::SINGLE; - } - - // FIXME: Xcode does not support per-config sources, yet. - // (EXCLUDED_SOURCE_FILE_NAMES) - // if (globalGen->GetName().find("Xcode") != std::string::npos) { - // return MultiConfigT::MULTI; - //} - - // FIXME: Visual Studio does not support per-config sources, yet. - // (EXCLUDED_SOURCE_FILE_NAMES) - // if (globalGen->GetName().find("Visual Studio") != std::string::npos) { - // return MultiConfigT::MULTI; - //} - } - // Autogen target name this->AutogenTargetName = this->Target->GetName(); this->AutogenTargetName += "_autogen"; @@ -285,7 +230,7 @@ void cmQtAutoGenInitializer::InitCustomTargets() // Autogen info dir this->DirInfo = cbd; this->DirInfo += makefile->GetCMakeInstance()->GetCMakeFilesDirectory(); - this->DirInfo += "/"; + this->DirInfo += '/'; this->DirInfo += this->AutogenTargetName; this->DirInfo += ".dir"; cmSystemTools::ConvertToUnixSlashes(this->DirInfo); @@ -294,7 +239,7 @@ void cmQtAutoGenInitializer::InitCustomTargets() this->DirBuild = GetSafeProperty(this->Target, "AUTOGEN_BUILD_DIR"); if (this->DirBuild.empty()) { this->DirBuild = cbd; - this->DirBuild += "/"; + this->DirBuild += '/'; this->DirBuild += this->AutogenTargetName; } cmSystemTools::ConvertToUnixSlashes(this->DirBuild); @@ -340,32 +285,32 @@ void cmQtAutoGenInitializer::InitCustomTargets() { std::string base = this->DirInfo; base += "/AutogenOldSettings"; - if (this->MultiConfig == MultiConfigT::SINGLE) { - AddCleanFile(makefile, base.append(".cmake")); - } else { + if (this->MultiConfig) { for (std::string const& cfg : this->ConfigsList) { std::string filename = base; - filename += "_"; + filename += '_'; filename += cfg; filename += ".cmake"; AddCleanFile(makefile, filename); } + } else { + AddCleanFile(makefile, base.append(".cmake")); } } // Add moc compilation to generated files list if (this->MocEnabled) { - std::string const mocsComp = this->DirBuild + "/mocs_compilation.cpp"; - auto files = this->AddGeneratedSource(mocsComp, GeneratorT::MOC); - for (std::string& file : files) { - autogenProvides.push_back(std::move(file)); - } + std::string mocsComp = this->DirBuild + "/mocs_compilation.cpp"; + this->AddGeneratedSource(mocsComp, GeneratorT::MOC); + autogenProvides.push_back(std::move(mocsComp)); } // Add autogen includes directory to the origin target INCLUDE_DIRECTORIES - if (this->MocEnabled || this->UicEnabled) { - std::string includeDir = this->DirBuild + "/include"; - if (this->MultiConfig != MultiConfigT::SINGLE) { + if (this->MocEnabled || this->UicEnabled || + (this->RccEnabled && this->MultiConfig)) { + std::string includeDir = this->DirBuild; + includeDir += "/include"; + if (this->MultiConfig) { includeDir += "_$"; } this->Target->AddIncludeDirectory(includeDir, true); @@ -674,9 +619,10 @@ void cmQtAutoGenInitializer::InitCustomTargets() } for (Qrc& qrc : this->Qrcs) { // Register file at target - std::vector const ccOutput = - this->AddGeneratedSource(qrc.RccFile, GeneratorT::RCC); + this->AddGeneratedSource(qrc.RccFile, GeneratorT::RCC); + std::vector ccOutput; + ccOutput.push_back(qrc.RccFile); cmCustomCommandLines commandLines; { cmCustomCommandLine currentLine; @@ -905,51 +851,6 @@ void cmQtAutoGenInitializer::SetupCustomTargets() { cmMakefile* makefile = this->Target->Target->GetMakefile(); - // forget the variables added here afterwards again: - cmMakefile::ScopePushPop varScope(makefile); - static_cast(varScope); - - // Configuration suffixes - std::map configSuffixes; - for (std::string const& cfg : this->ConfigsList) { - std::string& suffix = configSuffixes[cfg]; - suffix = "_"; - suffix += cfg; - } - - // Basic setup - AddDefinitionEscaped(makefile, "_multi_config", - MultiConfigName(this->MultiConfig)); - AddDefinitionEscaped(makefile, "_build_dir", this->DirBuild); - { - std::string parallel = GetSafeProperty(this->Target, "AUTOGEN_PARALLEL"); - // Autodetect number of CPUs - if (parallel.empty() || (parallel == "AUTO")) { - parallel = std::to_string(GetParallelCPUCount()); - } - AddDefinitionEscaped(makefile, "_parallel", parallel); - } - - if (this->MocEnabled || this->UicEnabled) { - AddDefinitionEscaped(makefile, "_qt_version_major", this->QtVersionMajor); - AddDefinitionEscaped(makefile, "_settings_file", - this->AutogenSettingsFile); - AddDefinitionEscaped(makefile, "_sources", this->Sources); - AddDefinitionEscaped(makefile, "_headers", this->Headers); - - if (this->MocEnabled) { - this->SetupCustomTargetsMoc(); - } - if (this->UicEnabled) { - this->SetupCustomTargetsUic(); - } - } - if (this->RccEnabled) { - AddDefinitionEscaped(makefile, "_qt_rcc_executable", this->RccExecutable); - AddDefinitionEscaped(makefile, "_qt_rcc_list_options", - this->RccListOptions); - } - // Create info directory on demand if (!cmSystemTools::MakeDirectory(this->DirInfo)) { std::string emsg = ("Could not create directory: "); @@ -957,21 +858,33 @@ void cmQtAutoGenInitializer::SetupCustomTargets() cmSystemTools::Error(emsg.c_str()); } - auto ReOpenInfoFile = [](cmsys::ofstream& ofs, - std::string const& fileName) -> bool { + // Configuration include directories + std::string includeDir = "include"; + std::map includeDirs; + for (std::string const& cfg : this->ConfigsList) { + std::string& dir = includeDirs[cfg]; + dir = "include_"; + dir += cfg; + } + + auto OpenInfoFile = [](cmsys::ofstream& ofs, + std::string const& fileName) -> bool { // Ensure we have write permission - mode_t perm = 0; + if (cmSystemTools::FileExists(fileName)) { + mode_t perm = 0; #if defined(_WIN32) && !defined(__CYGWIN__) - mode_t mode_write = S_IWRITE; + mode_t mode_write = S_IWRITE; #else - mode_t mode_write = S_IWUSR; + mode_t mode_write = S_IWUSR; #endif - cmSystemTools::GetPermissions(fileName, perm); - if (!(perm & mode_write)) { - cmSystemTools::SetPermissions(fileName, perm | mode_write); + cmSystemTools::GetPermissions(fileName, perm); + if (!(perm & mode_write)) { + cmSystemTools::SetPermissions(fileName, perm | mode_write); + } } - ofs.open(fileName.c_str(), std::ios::app); + ofs.open(fileName.c_str(), + (std::ios::out | std::ios::binary | std::ios::trunc)); if (!ofs) { // File open error std::string error = "Internal CMake error when trying to open file: "; @@ -984,88 +897,177 @@ void cmQtAutoGenInitializer::SetupCustomTargets() // Generate autogen target info file if (this->MocEnabled || this->UicEnabled) { - { - std::string infoFileIn = cmSystemTools::GetCMakeRoot(); - infoFileIn += "/Modules/AutogenInfo.cmake.in"; - makefile->ConfigureFile( - infoFileIn.c_str(), this->AutogenInfoFile.c_str(), false, true, false); + if (this->MocEnabled) { + this->SetupCustomTargetsMoc(); + } + if (this->UicEnabled) { + this->SetupCustomTargetsUic(); + } + + // Parallel processing + this->Parallel = GetSafeProperty(this->Target, "AUTOGEN_PARALLEL"); + if (this->Parallel.empty() || (this->Parallel == "AUTO")) { + // Autodetect number of CPUs + this->Parallel = std::to_string(GetParallelCPUCount()); } - // Append custom definitions to info file - // -------------------------------------- cmsys::ofstream ofs; - if (ReOpenInfoFile(ofs, this->AutogenInfoFile)) { - auto OfsWriteMap = [&ofs]( - const char* key, std::map const& map) { + if (OpenInfoFile(ofs, this->AutogenInfoFile)) { + // Utility lambdas + auto CWrite = [&ofs](const char* key, std::string const& value) { + ofs << "set(" << key << " " << cmOutputConverter::EscapeForCMake(value) + << ")\n"; + }; + auto CWriteList = [&CWrite](const char* key, + std::vector const& list) { + CWrite(key, cmJoin(list, ";")); + }; + auto CWriteNestedLists = [&CWrite]( + const char* key, std::vector> const& lists) { + std::vector seplist; + for (const std::vector& list : lists) { + std::string blist = "{"; + blist += cmJoin(list, ";"); + blist += "}"; + seplist.push_back(std::move(blist)); + } + CWrite(key, cmJoin(seplist, cmQtAutoGen::ListSep)); + }; + auto CWriteSet = [&CWrite](const char* key, + std::set const& list) { + CWrite(key, cmJoin(list, ";")); + }; + auto CWriteMap = [&ofs](const char* key, + std::map const& map) { for (auto const& item : map) { ofs << "set(" << key << "_" << item.first << " " << cmOutputConverter::EscapeForCMake(item.second) << ")\n"; } }; - ofs << "# Configurations options\n"; - OfsWriteMap("AM_CONFIG_SUFFIX", configSuffixes); - OfsWriteMap("AM_MOC_DEFINITIONS", this->ConfigMocDefines); - OfsWriteMap("AM_MOC_INCLUDES", this->ConfigMocIncludes); - OfsWriteMap("AM_UIC_TARGET_OPTIONS", this->ConfigUicOptions); - // Settings files (only require for multi configuration generators) - if (this->MultiConfig != MultiConfigT::SINGLE) { + auto MfDef = [makefile](const char* key) { + return std::string(makefile->GetSafeDefinition(key)); + }; + + // Write + ofs << "# Meta\n"; + CWrite("AM_MULTI_CONFIG", this->MultiConfig ? "TRUE" : "FALSE"); + CWrite("AM_PARALLEL", this->Parallel); + + ofs << "# Directories\n"; + CWrite("AM_CMAKE_SOURCE_DIR", MfDef("CMAKE_SOURCE_DIR")); + CWrite("AM_CMAKE_BINARY_DIR", MfDef("CMAKE_BINARY_DIR")); + CWrite("AM_CMAKE_CURRENT_SOURCE_DIR", MfDef("CMAKE_CURRENT_SOURCE_DIR")); + CWrite("AM_CMAKE_CURRENT_BINARY_DIR", MfDef("CMAKE_CURRENT_BINARY_DIR")); + CWrite("AM_CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE", + MfDef("CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE")); + CWrite("AM_BUILD_DIR", this->DirBuild); + if (this->MultiConfig) { + CWriteMap("AM_INCLUDE_DIR", includeDirs); + } else { + CWrite("AM_INCLUDE_DIR", includeDir); + } + + ofs << "# Files\n"; + CWriteList("AM_SOURCES", this->Sources); + CWriteList("AM_HEADERS", this->Headers); + if (this->MultiConfig) { std::map settingsFiles; for (std::string const& cfg : this->ConfigsList) { settingsFiles[cfg] = AppendFilenameSuffix(this->AutogenSettingsFile, "_" + cfg); } - OfsWriteMap("AM_SETTINGS_FILE", settingsFiles); + CWriteMap("AM_SETTINGS_FILE", settingsFiles); + } else { + CWrite("AM_SETTINGS_FILE", this->AutogenSettingsFile); + } + + ofs << "# Qt\n"; + CWrite("AM_QT_VERSION_MAJOR", this->QtVersionMajor); + CWrite("AM_QT_MOC_EXECUTABLE", this->MocExecutable); + CWrite("AM_QT_UIC_EXECUTABLE", this->UicExecutable); + + if (this->MocEnabled) { + ofs << "# MOC settings\n"; + CWriteSet("AM_MOC_SKIP", this->MocSkip); + CWrite("AM_MOC_DEFINITIONS", this->MocDefines); + CWriteMap("AM_MOC_DEFINITIONS", this->MocDefinesConfig); + CWrite("AM_MOC_INCLUDES", this->MocIncludes); + CWriteMap("AM_MOC_INCLUDES", this->MocIncludesConfig); + CWrite("AM_MOC_OPTIONS", + GetSafeProperty(this->Target, "AUTOMOC_MOC_OPTIONS")); + CWrite("AM_MOC_RELAXED_MODE", MfDef("CMAKE_AUTOMOC_RELAXED_MODE")); + CWrite("AM_MOC_MACRO_NAMES", + GetSafeProperty(this->Target, "AUTOMOC_MACRO_NAMES")); + CWrite("AM_MOC_DEPEND_FILTERS", + GetSafeProperty(this->Target, "AUTOMOC_DEPEND_FILTERS")); + CWrite("AM_MOC_PREDEFS_CMD", this->MocPredefsCmd); + } + + if (this->UicEnabled) { + ofs << "# UIC settings\n"; + CWriteSet("AM_UIC_SKIP", this->UicSkip); + CWrite("AM_UIC_TARGET_OPTIONS", this->UicOptions); + CWriteMap("AM_UIC_TARGET_OPTIONS", this->UicOptionsConfig); + CWriteList("AM_UIC_OPTIONS_FILES", this->UicFileFiles); + CWriteNestedLists("AM_UIC_OPTIONS_OPTIONS", this->UicFileOptions); + CWriteList("AM_UIC_SEARCH_PATHS", this->UicSearchPaths); } } } // Generate auto RCC info files if (this->RccEnabled) { - std::string infoFileIn = cmSystemTools::GetCMakeRoot(); - infoFileIn += "/Modules/AutoRccInfo.cmake.in"; for (Qrc const& qrc : this->Qrcs) { - // Configure info file - makefile->ConfigureFile(infoFileIn.c_str(), qrc.InfoFile.c_str(), false, - true, false); - - // Append custom definitions to info file - // -------------------------------------- cmsys::ofstream ofs; - if (ReOpenInfoFile(ofs, qrc.InfoFile)) { - { - ofs << "# Job\n"; - auto OfsWrite = [&ofs](const char* key, std::string const& value) { - ofs << "set(" << key << " " - << cmOutputConverter::EscapeForCMake(value) << ")\n"; - - }; - OfsWrite("ARCC_SETTINGS_FILE", qrc.SettingsFile); - OfsWrite("ARCC_SOURCE", qrc.QrcFile); - OfsWrite("ARCC_OUTPUT", qrc.RccFile); - OfsWrite("ARCC_OPTIONS", cmJoin(qrc.Options, ";")); - OfsWrite("ARCC_INPUTS", cmJoin(qrc.Resources, ";")); - } - { - ofs << "# Configurations options\n"; - auto OfsWriteMap = [&ofs]( - const char* key, std::map const& map) { - for (auto const& item : map) { - ofs << "set(" << key << "_" << item.first << " " - << cmOutputConverter::EscapeForCMake(item.second) << ")\n"; - } - }; - OfsWriteMap("ARCC_CONFIG_SUFFIX", configSuffixes); - - // Settings files (only require for multi configuration generators) - if (this->MultiConfig != MultiConfigT::SINGLE) { - std::map settingsFiles; - for (std::string const& cfg : this->ConfigsList) { - settingsFiles[cfg] = - AppendFilenameSuffix(qrc.SettingsFile, "_" + cfg); - } - OfsWriteMap("ARCC_SETTINGS_FILE", settingsFiles); + if (OpenInfoFile(ofs, qrc.InfoFile)) { + // Utility lambdas + auto CWrite = [&ofs](const char* key, std::string const& value) { + ofs << "set(" << key << " " + << cmOutputConverter::EscapeForCMake(value) << ")\n"; + }; + auto CWriteMap = [&ofs]( + const char* key, std::map const& map) { + for (auto const& item : map) { + ofs << "set(" << key << "_" << item.first << " " + << cmOutputConverter::EscapeForCMake(item.second) << ")\n"; + } + }; + + // Write + ofs << "# Configurations\n"; + CWrite("ARCC_MULTI_CONFIG", this->MultiConfig ? "TRUE" : "FALSE"); + + ofs << "# Settings file\n"; + if (this->MultiConfig) { + std::map settingsFiles; + for (std::string const& cfg : this->ConfigsList) { + settingsFiles[cfg] = + AppendFilenameSuffix(qrc.SettingsFile, "_" + cfg); } + CWriteMap("ARCC_SETTINGS_FILE", settingsFiles); + } else { + CWrite("ARCC_SETTINGS_FILE", qrc.SettingsFile); } + + ofs << "# Directories\n"; + CWrite("ARCC_BUILD_DIR", this->DirBuild); + if (this->MultiConfig) { + CWriteMap("ARCC_INCLUDE_DIR", includeDirs); + } else { + CWrite("ARCC_INCLUDE_DIR", includeDir); + } + + ofs << "# Rcc executable\n"; + CWrite("ARCC_RCC_EXECUTABLE", this->RccExecutable); + CWrite("ARCC_RCC_LIST_OPTIONS", cmJoin(this->RccListOptions, ";")); + + ofs << "# Rcc job\n"; + CWrite("ARCC_SOURCE", qrc.QrcFile); + CWrite("ARCC_OUTPUT_CHECKSUM", qrc.PathChecksum); + CWrite("ARCC_OUTPUT_NAME", + cmSystemTools::GetFilenameName(qrc.RccFile)); + CWrite("ARCC_OPTIONS", cmJoin(qrc.Options, ";")); + CWrite("ARCC_INPUTS", cmJoin(qrc.Resources, ";")); } else { break; } @@ -1078,25 +1080,13 @@ void cmQtAutoGenInitializer::SetupCustomTargetsMoc() cmLocalGenerator* localGen = this->Target->GetLocalGenerator(); cmMakefile* makefile = this->Target->Target->GetMakefile(); - AddDefinitionEscaped(makefile, "_moc_skip", this->MocSkip); - AddDefinitionEscaped(makefile, "_moc_options", - GetSafeProperty(this->Target, "AUTOMOC_MOC_OPTIONS")); - AddDefinitionEscaped(makefile, "_moc_relaxed_mode", - makefile->IsOn("CMAKE_AUTOMOC_RELAXED_MODE") ? "TRUE" - : "FALSE"); - AddDefinitionEscaped(makefile, "_moc_macro_names", - GetSafeProperty(this->Target, "AUTOMOC_MACRO_NAMES")); - AddDefinitionEscaped( - makefile, "_moc_depend_filters", - GetSafeProperty(this->Target, "AUTOMOC_DEPEND_FILTERS")); - - // Compiler predefines + // Moc predefs command if (this->Target->GetPropertyAsBool("AUTOMOC_COMPILER_PREDEFINES") && this->QtVersionGreaterOrEqual(5, 8)) { - AddDefinitionEscaped( - makefile, "_moc_predefs_cmd", - makefile->GetSafeDefinition("CMAKE_CXX_COMPILER_PREDEFINES_COMMAND")); + this->MocPredefsCmd = + makefile->GetSafeDefinition("CMAKE_CXX_COMPILER_PREDEFINES_COMMAND"); } + // Moc includes and compile definitions { auto GetIncludeDirs = [this, @@ -1117,25 +1107,23 @@ void cmQtAutoGenInitializer::SetupCustomTargetsMoc() }; // Default configuration settings - std::string const includeDirs = GetIncludeDirs(this->ConfigDefault); - std::string const compileDefs = GetCompileDefinitions(this->ConfigDefault); + this->MocIncludes = GetIncludeDirs(this->ConfigDefault); + this->MocDefines = GetCompileDefinitions(this->ConfigDefault); // Other configuration settings for (std::string const& cfg : this->ConfigsList) { { std::string const configIncludeDirs = GetIncludeDirs(cfg); - if (configIncludeDirs != includeDirs) { - this->ConfigMocIncludes[cfg] = configIncludeDirs; + if (configIncludeDirs != this->MocIncludes) { + this->MocIncludesConfig[cfg] = configIncludeDirs; } } { std::string const configCompileDefs = GetCompileDefinitions(cfg); - if (configCompileDefs != compileDefs) { - this->ConfigMocDefines[cfg] = configCompileDefs; + if (configCompileDefs != this->MocDefines) { + this->MocDefinesConfig[cfg] = configCompileDefs; } } } - AddDefinitionEscaped(makefile, "_moc_include_dirs", includeDirs); - AddDefinitionEscaped(makefile, "_moc_compile_defs", compileDefs); } // Moc executable @@ -1162,7 +1150,7 @@ void cmQtAutoGenInitializer::SetupCustomTargetsMoc() } if (err.empty()) { - AddDefinitionEscaped(makefile, "_qt_moc_executable", mocExec); + this->MocExecutable = mocExec; } else { err += " ("; err += this->Target->GetName(); @@ -1178,19 +1166,15 @@ void cmQtAutoGenInitializer::SetupCustomTargetsUic() // Uic search paths { - std::vector uicSearchPaths; - { - std::string const usp = - GetSafeProperty(this->Target, "AUTOUIC_SEARCH_PATHS"); - if (!usp.empty()) { - cmSystemTools::ExpandListArgument(usp, uicSearchPaths); - std::string const srcDir = makefile->GetCurrentSourceDirectory(); - for (std::string& path : uicSearchPaths) { - path = cmSystemTools::CollapseFullPath(path, srcDir); - } + std::string const usp = + GetSafeProperty(this->Target, "AUTOUIC_SEARCH_PATHS"); + if (!usp.empty()) { + cmSystemTools::ExpandListArgument(usp, this->UicSearchPaths); + std::string const srcDir = makefile->GetCurrentSourceDirectory(); + for (std::string& path : this->UicSearchPaths) { + path = cmSystemTools::CollapseFullPath(path, srcDir); } } - AddDefinitionEscaped(makefile, "_uic_search_paths", uicSearchPaths); } // Uic target options { @@ -1201,60 +1185,51 @@ void cmQtAutoGenInitializer::SetupCustomTargetsUic() }; // Default settings - std::string const uicOpts = UicGetOpts(this->ConfigDefault); - AddDefinitionEscaped(makefile, "_uic_target_options", uicOpts); + this->UicOptions = UicGetOpts(this->ConfigDefault); // Configuration specific settings for (std::string const& cfg : this->ConfigsList) { std::string const configUicOpts = UicGetOpts(cfg); - if (configUicOpts != uicOpts) { - this->ConfigUicOptions[cfg] = configUicOpts; + if (configUicOpts != this->UicOptions) { + this->UicOptionsConfig[cfg] = configUicOpts; } } } // .ui files skip and options { - std::vector uiFileFiles; - std::vector> uiFileOptions; - { - std::string const uiExt = "ui"; - std::string pathError; - for (cmSourceFile* sf : makefile->GetSourceFiles()) { - // sf->GetExtension() is only valid after sf->GetFullPath() ... - // Since we're iterating over source files that might be not in the - // target we need to check for path errors (not existing files). - std::string const& fPath = sf->GetFullPath(&pathError); - if (!pathError.empty()) { - pathError.clear(); - continue; + std::string const uiExt = "ui"; + std::string pathError; + for (cmSourceFile* sf : makefile->GetSourceFiles()) { + // sf->GetExtension() is only valid after sf->GetFullPath() ... + // Since we're iterating over source files that might be not in the + // target we need to check for path errors (not existing files). + std::string const& fPath = sf->GetFullPath(&pathError); + if (!pathError.empty()) { + pathError.clear(); + continue; + } + if (sf->GetExtension() == uiExt) { + std::string const absFile = cmSystemTools::GetRealPath(fPath); + // Check if the .ui file should be skipped + if (sf->GetPropertyAsBool("SKIP_AUTOUIC") || + sf->GetPropertyAsBool("SKIP_AUTOGEN")) { + this->UicSkip.insert(absFile); } - if (sf->GetExtension() == uiExt) { - std::string const absFile = cmSystemTools::GetRealPath(fPath); - // Check if the .ui file should be skipped - if (sf->GetPropertyAsBool("SKIP_AUTOUIC") || - sf->GetPropertyAsBool("SKIP_AUTOGEN")) { - this->UicSkip.insert(absFile); - } - // Check if the .ui file has uic options - std::string const uicOpts = GetSafeProperty(sf, "AUTOUIC_OPTIONS"); - if (!uicOpts.empty()) { - // Check if file isn't skipped - if (this->UicSkip.count(absFile) == 0) { - uiFileFiles.push_back(absFile); - std::vector optsVec; - cmSystemTools::ExpandListArgument(uicOpts, optsVec); - uiFileOptions.push_back(std::move(optsVec)); - } + // Check if the .ui file has uic options + std::string const uicOpts = GetSafeProperty(sf, "AUTOUIC_OPTIONS"); + if (!uicOpts.empty()) { + // Check if file isn't skipped + if (this->UicSkip.count(absFile) == 0) { + this->UicFileFiles.push_back(absFile); + std::vector optsVec; + cmSystemTools::ExpandListArgument(uicOpts, optsVec); + this->UicFileOptions.push_back(std::move(optsVec)); } } } } - AddDefinitionEscaped(makefile, "_qt_uic_options_files", uiFileFiles); - AddDefinitionEscaped(makefile, "_qt_uic_options_options", uiFileOptions); } - AddDefinitionEscaped(makefile, "_uic_skip", this->UicSkip); - // Uic executable { std::string err; @@ -1280,7 +1255,7 @@ void cmQtAutoGenInitializer::SetupCustomTargetsUic() } if (err.empty()) { - AddDefinitionEscaped(makefile, "_qt_uic_executable", uicExec); + this->UicExecutable = uicExec; } else { err += " ("; err += this->Target->GetName(); @@ -1290,45 +1265,22 @@ void cmQtAutoGenInitializer::SetupCustomTargetsUic() } } -std::vector cmQtAutoGenInitializer::AddGeneratedSource( - std::string const& filename, GeneratorT genType) +void cmQtAutoGenInitializer::AddGeneratedSource(std::string const& filename, + GeneratorT genType) { - std::vector genFiles; - // Register source file in makefile and source group - if (this->MultiConfig != MultiConfigT::MULTI) { - genFiles.push_back(filename); - } else { - for (std::string const& cfg : this->ConfigsList) { - genFiles.push_back(AppendFilenameSuffix(filename, "_" + cfg)); - } - } + // Register source file in makefile + cmMakefile* makefile = this->Target->Target->GetMakefile(); { - cmMakefile* makefile = this->Target->Target->GetMakefile(); - for (std::string const& genFile : genFiles) { - { - cmSourceFile* gFile = makefile->GetOrCreateSource(genFile, true); - gFile->SetProperty("GENERATED", "1"); - gFile->SetProperty("SKIP_AUTOGEN", "On"); - } - AddToSourceGroup(makefile, genFile, genType); - } + cmSourceFile* gFile = makefile->GetOrCreateSource(filename, true); + gFile->SetProperty("GENERATED", "1"); + gFile->SetProperty("SKIP_AUTOGEN", "On"); } - // Add source file to target - if (this->MultiConfig != MultiConfigT::MULTI) { - this->Target->AddSource(filename); - } else { - for (std::string const& cfg : this->ConfigsList) { - std::string src = "$<$Target->AddSource(src); - } - } + // Add source file to source group + AddToSourceGroup(makefile, filename, genType); - return genFiles; + // Add source file to target + this->Target->AddSource(filename); } std::string cmQtAutoGenInitializer::GetQtMajorVersion( @@ -1400,7 +1352,8 @@ bool cmQtAutoGenInitializer::RccListInputs(std::string const& fileName, return false; } - // Run rcc list command in the directory of the qrc file with the pathless + // Run rcc list command in the directory of the qrc file with the + // pathless // qrc file name argument. This way rcc prints relative paths. // This avoids issues on Windows when the qrc file is in a path that // contains non-ASCII characters. diff --git a/Source/cmQtAutoGenInitializer.h b/Source/cmQtAutoGenInitializer.h index a667017..2a47e46 100644 --- a/Source/cmQtAutoGenInitializer.h +++ b/Source/cmQtAutoGenInitializer.h @@ -21,6 +21,7 @@ public: static std::string GetQtMinorVersion(cmGeneratorTarget const* target, std::string const& qtVersionMajor); + /// @brief Rcc job information class Qrc { public: @@ -55,8 +56,7 @@ private: void SetupCustomTargetsMoc(); void SetupCustomTargetsUic(); - std::vector AddGeneratedSource(std::string const& filename, - GeneratorT genType); + void AddGeneratedSource(std::string const& filename, GeneratorT genType); bool QtVersionGreaterOrEqual(unsigned long requestMajor, unsigned long requestMinor) const; @@ -70,15 +70,18 @@ private: bool MocEnabled; bool UicEnabled; bool RccEnabled; + bool MultiConfig; // Qt std::string QtVersionMajor; std::string QtVersionMinor; + std::string MocExecutable; + std::string UicExecutable; std::string RccExecutable; std::vector RccListOptions; // Configurations std::string ConfigDefault; std::vector ConfigsList; - MultiConfigT MultiConfig; + std::string Parallel; // Names std::string AutogenTargetName; std::string AutogenFolder; @@ -91,11 +94,21 @@ private: // Sources std::vector Headers; std::vector Sources; + // Moc + std::string MocPredefsCmd; std::set MocSkip; + std::string MocIncludes; + std::map MocIncludesConfig; + std::string MocDefines; + std::map MocDefinesConfig; + // Uic std::set UicSkip; - std::map ConfigMocIncludes; - std::map ConfigMocDefines; - std::map ConfigUicOptions; + std::vector UicSearchPaths; + std::string UicOptions; + std::map UicOptionsConfig; + std::vector UicFileFiles; + std::vector> UicFileOptions; + // Rcc std::vector Qrcs; }; diff --git a/Source/cmQtAutoGeneratorMocUic.cxx b/Source/cmQtAutoGeneratorMocUic.cxx index 037279a..6be65ee 100644 --- a/Source/cmQtAutoGeneratorMocUic.cxx +++ b/Source/cmQtAutoGeneratorMocUic.cxx @@ -672,19 +672,24 @@ void cmQtAutoGeneratorMocUic::JobMocT::Process(WorkerT& wrk) { // Compute build file name if (!IncludeString.empty()) { - BuildFile = wrk.Base().AutogenIncludeDirAbs; + BuildFile = wrk.Base().AutogenIncludeDir; + BuildFile += '/'; BuildFile += IncludeString; } else { - std::string buildRel = wrk.Base().FilePathChecksum.getPart(SourceFile); - buildRel += '/'; - buildRel += "moc_"; - buildRel += cmSystemTools::GetFilenameWithoutLastExtension(SourceFile); - if (wrk.Base().MultiConfig != MultiConfigT::SINGLE) { - buildRel += wrk.Base().ConfigSuffix; + std::string rel = wrk.Base().FilePathChecksum.getPart(SourceFile); + rel += "/moc_"; + rel += cmSystemTools::GetFilenameWithoutLastExtension(SourceFile); + rel += ".cpp"; + // Register relative file path + wrk.Gen().ParallelMocAutoRegister(rel); + // Absolute build path + if (wrk.Base().MultiConfig) { + BuildFile = wrk.Base().AutogenIncludeDir; + BuildFile += '/'; + BuildFile += rel; + } else { + BuildFile = wrk.Base().AbsoluteBuildPath(rel); } - buildRel += ".cpp"; - wrk.Gen().ParallelMocAutoRegister(buildRel); - BuildFile = wrk.Base().AbsoluteBuildPath(buildRel); } if (UpdateRequired(wrk)) { @@ -871,7 +876,8 @@ void cmQtAutoGeneratorMocUic::JobMocT::GenerateMoc(WorkerT& wrk) void cmQtAutoGeneratorMocUic::JobUicT::Process(WorkerT& wrk) { // Compute build file name - BuildFile = wrk.Base().AutogenIncludeDirAbs; + BuildFile = wrk.Base().AutogenIncludeDir; + BuildFile += '/'; BuildFile += IncludeString; if (UpdateRequired(wrk)) { @@ -1208,20 +1214,7 @@ bool cmQtAutoGeneratorMocUic::Init(cmMakefile* makefile) } // -- Meta - Base_.MultiConfig = MultiConfigType(InfoGet("AM_MULTI_CONFIG")); - - Base_.ConfigSuffix = InfoGetConfig("AM_CONFIG_SUFFIX"); - if (Base_.ConfigSuffix.empty()) { - Base_.ConfigSuffix = "_"; - Base_.ConfigSuffix += InfoConfig(); - } - - SettingsFile_ = InfoGetConfig("AM_SETTINGS_FILE"); - if (SettingsFile_.empty()) { - Log().ErrorFile(GeneratorT::GEN, InfoFile(), "Settings file name missing"); - return false; - } - + Base_.MultiConfig = InfoGetBool("AM_MULTI_CONFIG"); { unsigned long num = Base_.NumThreads; if (cmSystemTools::StringToULong(InfoGet("AM_PARALLEL"), &num)) { @@ -1244,6 +1237,23 @@ bool cmQtAutoGeneratorMocUic::Init(cmMakefile* makefile) "Autogen build directory missing"); return false; } + // include directory + { + std::string dirRel = InfoGetConfig("AM_INCLUDE_DIR"); + if (dirRel.empty()) { + Log().ErrorFile(GeneratorT::GEN, InfoFile(), + "Autogen include directory missing"); + return false; + } + Base_.AutogenIncludeDir = Base_.AbsoluteBuildPath(dirRel); + } + + // - Files + SettingsFile_ = InfoGetConfig("AM_SETTINGS_FILE"); + if (SettingsFile_.empty()) { + Log().ErrorFile(GeneratorT::GEN, InfoFile(), "Settings file name missing"); + return false; + } // - Qt environment { @@ -1438,30 +1448,17 @@ bool cmQtAutoGeneratorMocUic::Init(cmMakefile* makefile) Base().CurrentSourceDir, Base().CurrentBinaryDir, Base().ProjectSourceDir, Base().ProjectBinaryDir); - // include directory - Base_.AutogenIncludeDirRel = "include"; - if (Base().MultiConfig != MultiConfigT::SINGLE) { - Base_.AutogenIncludeDirRel += Base().ConfigSuffix; - } - Base_.AutogenIncludeDirRel += "/"; - Base_.AutogenIncludeDirAbs = - Base_.AbsoluteBuildPath(Base().AutogenIncludeDirRel); - // Moc variables if (Moc().Enabled) { // Mocs compilation file - Moc_.CompFileRel = "mocs_compilation"; - if (Base_.MultiConfig == MultiConfigT::MULTI) { - Moc_.CompFileRel += Base().ConfigSuffix; - } - Moc_.CompFileRel += ".cpp"; - Moc_.CompFileAbs = Base_.AbsoluteBuildPath(Moc().CompFileRel); + Moc_.CompFileAbs = Base().AbsoluteBuildPath("mocs_compilation.cpp"); // Moc predefs file if (!Moc_.PredefsCmd.empty()) { Moc_.PredefsFileRel = "moc_predefs"; - if (Base_.MultiConfig != MultiConfigT::SINGLE) { - Moc_.PredefsFileRel += Base().ConfigSuffix; + if (Base_.MultiConfig) { + Moc_.PredefsFileRel += '_'; + Moc_.PredefsFileRel += InfoConfig(); } Moc_.PredefsFileRel += ".h"; Moc_.PredefsFileAbs = Base_.AbsoluteBuildPath(Moc().PredefsFileRel); @@ -1731,7 +1728,7 @@ void cmQtAutoGeneratorMocUic::SettingsFileWrite() void cmQtAutoGeneratorMocUic::CreateDirectories() { // Create AUTOGEN include directory - if (!FileSys().MakeDirectory(GeneratorT::GEN, Base().AutogenIncludeDirAbs)) { + if (!FileSys().MakeDirectory(GeneratorT::GEN, Base().AutogenIncludeDir)) { RegisterJobError(); } } @@ -1980,9 +1977,10 @@ void cmQtAutoGeneratorMocUic::ParallelMocAutoUpdated() void cmQtAutoGeneratorMocUic::MocGenerateCompilation() { std::lock_guard mocLock(JobsMutex_); - if (!JobThreadsAbort_ && Moc().Enabled) { - // Compose mocs compilation file content + if (!JobError_ && Moc().Enabled) { + // Write mocs compilation build file { + // Compose mocs compilation file content std::string content = "// This file is autogenerated. Changes will be overwritten.\n"; if (MocAutoFiles_.empty()) { @@ -1992,19 +1990,22 @@ void cmQtAutoGeneratorMocUic::MocGenerateCompilation() content += "enum some_compilers { need_more_than_nothing };\n"; } else { // Valid content + char const sbeg = Base().MultiConfig ? '<' : '"'; + char const send = Base().MultiConfig ? '>' : '"'; for (std::string const& mocfile : MocAutoFiles_) { - content += "#include \""; + content += "#include "; + content += sbeg; content += mocfile; - content += "\"\n"; + content += send; + content += '\n'; } } - std::string const& compRel = Moc().CompFileRel; std::string const& compAbs = Moc().CompFileAbs; if (FileSys().FileDiffers(compAbs, content)) { // Actually write mocs compilation file if (Log().Verbose()) { - Log().Info(GeneratorT::MOC, "Generating MOC compilation " + compRel); + Log().Info(GeneratorT::MOC, "Generating MOC compilation " + compAbs); } if (!FileSys().FileWrite(GeneratorT::MOC, compAbs, content)) { Log().ErrorFile(GeneratorT::MOC, compAbs, @@ -2015,10 +2016,13 @@ void cmQtAutoGeneratorMocUic::MocGenerateCompilation() } else if (MocAutoFileUpdated_) { // Only touch mocs compilation file if (Log().Verbose()) { - Log().Info(GeneratorT::MOC, "Touching mocs compilation " + compRel); + Log().Info(GeneratorT::MOC, "Touching mocs compilation " + compAbs); } FileSys().Touch(compAbs); } } + // Write mocs compilation wrapper file + if (Base().MultiConfig) { + } } } diff --git a/Source/cmQtAutoGeneratorMocUic.h b/Source/cmQtAutoGeneratorMocUic.h index 215e25a..696d5bd 100644 --- a/Source/cmQtAutoGeneratorMocUic.h +++ b/Source/cmQtAutoGeneratorMocUic.h @@ -68,7 +68,7 @@ public: public: // -- Volatile methods BaseSettingsT(FileSystem* fileSystem) - : MultiConfig(MultiConfigT::WRAPPER) + : MultiConfig(false) , IncludeProjectDirsBefore(false) , QtVersionMajor(4) , NumThreads(1) @@ -83,8 +83,7 @@ public: // -- Attributes // - Config - std::string ConfigSuffix; - MultiConfigT MultiConfig; + bool MultiConfig; bool IncludeProjectDirsBefore; unsigned int QtVersionMajor; unsigned int NumThreads; @@ -94,8 +93,7 @@ public: std::string CurrentSourceDir; std::string CurrentBinaryDir; std::string AutogenBuildDir; - std::string AutogenIncludeDirRel; - std::string AutogenIncludeDirAbs; + std::string AutogenIncludeDir; // - Files cmFilePathChecksum FilePathChecksum; std::vector HeaderExtensions; @@ -128,7 +126,6 @@ public: bool SettingsChanged = false; bool RelaxedMode = false; std::string Executable; - std::string CompFileRel; std::string CompFileAbs; std::string PredefsFileRel; std::string PredefsFileAbs; diff --git a/Source/cmQtAutoGeneratorRcc.cxx b/Source/cmQtAutoGeneratorRcc.cxx index e8ff75a..2bf00f7 100644 --- a/Source/cmQtAutoGeneratorRcc.cxx +++ b/Source/cmQtAutoGeneratorRcc.cxx @@ -14,8 +14,8 @@ // -- Class methods cmQtAutoGeneratorRcc::cmQtAutoGeneratorRcc() - : SettingsChanged_(false) - , MultiConfig_(MultiConfigT::WRAPPER) + : MultiConfig_(false) + , SettingsChanged_(false) , Stage_(StageT::SETTINGS_READ) , Error_(false) , Generate_(false) @@ -31,16 +31,18 @@ cmQtAutoGeneratorRcc::~cmQtAutoGeneratorRcc() bool cmQtAutoGeneratorRcc::Init(cmMakefile* makefile) { - // Utility lambdas - auto InfoGet = [makefile](const char* key) { + // -- Utility lambdas + auto InfoGet = [makefile](std::string const& key) { return makefile->GetSafeDefinition(key); }; - auto InfoGetList = [makefile](const char* key) -> std::vector { + auto InfoGetList = + [makefile](std::string const& key) -> std::vector { std::vector list; cmSystemTools::ExpandListArgument(makefile->GetSafeDefinition(key), list); return list; }; - auto InfoGetConfig = [makefile, this](const char* key) -> std::string { + auto InfoGetConfig = [makefile, + this](std::string const& key) -> std::string { const char* valueConf = nullptr; { std::string keyConf = key; @@ -54,7 +56,7 @@ bool cmQtAutoGeneratorRcc::Init(cmMakefile* makefile) return std::string(valueConf); }; auto InfoGetConfigList = - [&InfoGetConfig](const char* key) -> std::vector { + [&InfoGetConfig](std::string const& key) -> std::vector { std::vector list; cmSystemTools::ExpandListArgument(InfoGetConfig(key), list); return list; @@ -66,20 +68,23 @@ bool cmQtAutoGeneratorRcc::Init(cmMakefile* makefile) return false; } - // -- Meta - MultiConfig_ = MultiConfigType(InfoGet("ARCC_MULTI_CONFIG")); - ConfigSuffix_ = InfoGetConfig("ARCC_CONFIG_SUFFIX"); - if (ConfigSuffix_.empty()) { - ConfigSuffix_ = "_"; - ConfigSuffix_ += InfoConfig(); - } - - SettingsFile_ = InfoGetConfig("ARCC_SETTINGS_FILE"); + // - Configurations + MultiConfig_ = makefile->IsOn("ARCC_MULTI_CONFIG"); - // - Files and directories + // - Directories AutogenBuildDir_ = InfoGet("ARCC_BUILD_DIR"); + if (AutogenBuildDir_.empty()) { + Log().ErrorFile(GeneratorT::RCC, InfoFile(), "Build directory empty"); + return false; + } - // - Qt environment + IncludeDir_ = InfoGetConfig("ARCC_INCLUDE_DIR"); + if (IncludeDir_.empty()) { + Log().ErrorFile(GeneratorT::RCC, InfoFile(), "Include directory empty"); + return false; + } + + // - Rcc executable RccExecutable_ = InfoGet("ARCC_RCC_EXECUTABLE"); RccListOptions_ = InfoGetList("ARCC_RCC_LIST_OPTIONS"); @@ -87,10 +92,14 @@ bool cmQtAutoGeneratorRcc::Init(cmMakefile* makefile) QrcFile_ = InfoGet("ARCC_SOURCE"); QrcFileName_ = cmSystemTools::GetFilenameName(QrcFile_); QrcFileDir_ = cmSystemTools::GetFilenamePath(QrcFile_); - RccFile_ = InfoGet("ARCC_OUTPUT"); + RccPathChecksum_ = InfoGet("ARCC_OUTPUT_CHECKSUM"); + RccFileName_ = InfoGet("ARCC_OUTPUT_NAME"); Options_ = InfoGetConfigList("ARCC_OPTIONS"); Inputs_ = InfoGetList("ARCC_INPUTS"); + // - Settings file + SettingsFile_ = InfoGetConfig("ARCC_SETTINGS_FILE"); + // - Validity checks if (SettingsFile_.empty()) { Log().ErrorFile(GeneratorT::RCC, InfoFile(), "Settings file name missing"); @@ -109,7 +118,7 @@ bool cmQtAutoGeneratorRcc::Init(cmMakefile* makefile) Log().ErrorFile(GeneratorT::RCC, InfoFile(), "rcc input file missing"); return false; } - if (RccFile_.empty()) { + if (RccFileName_.empty()) { Log().ErrorFile(GeneratorT::RCC, InfoFile(), "rcc output file missing"); return false; } @@ -117,22 +126,21 @@ bool cmQtAutoGeneratorRcc::Init(cmMakefile* makefile) // Init derived information // ------------------------ + RccFilePublic_ = AutogenBuildDir_; + RccFilePublic_ += '/'; + RccFilePublic_ += RccPathChecksum_; + RccFilePublic_ += '/'; + RccFilePublic_ += RccFileName_; + // Compute rcc output file name - { - std::string suffix; - switch (MultiConfig_) { - case MultiConfigT::SINGLE: - break; - case MultiConfigT::WRAPPER: - suffix = "_CMAKE"; - suffix += ConfigSuffix_; - suffix += "_"; - break; - case MultiConfigT::MULTI: - suffix = ConfigSuffix_; - break; - } - RccFileBuild_ = AppendFilenameSuffix(RccFile_, suffix); + if (IsMultiConfig()) { + RccFileOutput_ = AutogenBuildDir_; + RccFileOutput_ += '/'; + RccFileOutput_ += IncludeDir_; + RccFileOutput_ += '/'; + RccFileOutput_ += MultiConfigOutput(); + } else { + RccFileOutput_ = RccFilePublic_; } return true; @@ -234,6 +242,16 @@ void cmQtAutoGeneratorRcc::SetStage(StageT stage) } } +std::string cmQtAutoGeneratorRcc::MultiConfigOutput() const +{ + static std::string const suffix = "_CMAKE_"; + std::string res; + res += RccPathChecksum_; + res += '/'; + res += AppendFilenameSuffix(RccFileName_, suffix); + return res; +} + void cmQtAutoGeneratorRcc::SettingsFileRead() { // Compose current settings strings @@ -248,7 +266,9 @@ void cmQtAutoGeneratorRcc::SettingsFileRead() str += sep; str += QrcFile_; str += sep; - str += RccFile_; + str += RccPathChecksum_; + str += sep; + str += RccFileName_; str += sep; str += cmJoin(Options_, ";"); str += sep; @@ -302,10 +322,10 @@ bool cmQtAutoGeneratorRcc::TestQrcRccFiles() // Do basic checks if rcc generation is required // Test if the rcc output file exists - if (!FileSys().FileExists(RccFileBuild_)) { + if (!FileSys().FileExists(RccFileOutput_)) { if (Log().Verbose()) { std::string reason = "Generating "; - reason += Quoted(RccFileBuild_); + reason += Quoted(RccFileOutput_); reason += " from its source file "; reason += Quoted(QrcFile_); reason += " because it doesn't exist"; @@ -319,7 +339,7 @@ bool cmQtAutoGeneratorRcc::TestQrcRccFiles() if (SettingsChanged_) { if (Log().Verbose()) { std::string reason = "Generating "; - reason += Quoted(RccFileBuild_); + reason += Quoted(RccFileOutput_); reason += " from "; reason += Quoted(QrcFile_); reason += " because the RCC settings changed"; @@ -334,7 +354,7 @@ bool cmQtAutoGeneratorRcc::TestQrcRccFiles() bool isOlder = false; { std::string error; - isOlder = FileSys().FileIsOlderThan(RccFileBuild_, QrcFile_, &error); + isOlder = FileSys().FileIsOlderThan(RccFileOutput_, QrcFile_, &error); if (!error.empty()) { Log().ErrorFile(GeneratorT::RCC, QrcFile_, error); Error_ = true; @@ -343,7 +363,7 @@ bool cmQtAutoGeneratorRcc::TestQrcRccFiles() if (isOlder) { if (Log().Verbose()) { std::string reason = "Generating "; - reason += Quoted(RccFileBuild_); + reason += Quoted(RccFileOutput_); reason += " because it is older than "; reason += Quoted(QrcFile_); Log().Info(GeneratorT::RCC, reason); @@ -437,10 +457,10 @@ bool cmQtAutoGeneratorRcc::TestResources() break; } // Check if the resource file is newer than the build file - if (FileSys().FileIsOlderThan(RccFileBuild_, resFile, &error)) { + if (FileSys().FileIsOlderThan(RccFileOutput_, resFile, &error)) { if (Log().Verbose()) { std::string reason = "Generating "; - reason += Quoted(RccFileBuild_); + reason += Quoted(RccFileOutput_); reason += " from "; reason += Quoted(QrcFile_); reason += " because it is older than "; @@ -469,7 +489,7 @@ void cmQtAutoGeneratorRcc::TestInfoFile() bool isOlder = false; { std::string error; - isOlder = FileSys().FileIsOlderThan(RccFileBuild_, InfoFile(), &error); + isOlder = FileSys().FileIsOlderThan(RccFileOutput_, InfoFile(), &error); if (!error.empty()) { Log().ErrorFile(GeneratorT::RCC, QrcFile_, error); Error_ = true; @@ -478,13 +498,13 @@ void cmQtAutoGeneratorRcc::TestInfoFile() if (isOlder) { if (Log().Verbose()) { std::string reason = "Touching "; - reason += Quoted(RccFileBuild_); + reason += Quoted(RccFileOutput_); reason += " because it is older than "; reason += Quoted(InfoFile()); Log().Info(GeneratorT::RCC, reason); } // Touch build file - FileSys().Touch(RccFileBuild_); + FileSys().Touch(RccFileOutput_); BuildFileChanged_ = true; } } @@ -493,7 +513,7 @@ void cmQtAutoGeneratorRcc::TestInfoFile() void cmQtAutoGeneratorRcc::GenerateParentDir() { // Make sure the parent directory exists - if (!FileSys().MakeParentDirectory(GeneratorT::RCC, RccFileBuild_)) { + if (!FileSys().MakeParentDirectory(GeneratorT::RCC, RccFileOutput_)) { Error_ = true; } } @@ -521,7 +541,7 @@ bool cmQtAutoGeneratorRcc::GenerateRcc() std::string emsg = "The rcc process failed to compile\n "; emsg += Quoted(QrcFile_); emsg += "\ninto\n "; - emsg += Quoted(RccFileBuild_); + emsg += Quoted(RccFileOutput_); if (ProcessResult_.error()) { emsg += "\n"; emsg += ProcessResult_.ErrorMessage; @@ -529,7 +549,7 @@ bool cmQtAutoGeneratorRcc::GenerateRcc() Log().ErrorCommand(GeneratorT::RCC, emsg, Process_->Setup().Command, ProcessResult_.StdOut); } - FileSys().FileRemove(RccFileBuild_); + FileSys().FileRemove(RccFileOutput_); Error_ = true; } // Clean up @@ -545,7 +565,7 @@ bool cmQtAutoGeneratorRcc::GenerateRcc() cmd.push_back(RccExecutable_); cmd.insert(cmd.end(), Options_.begin(), Options_.end()); cmd.push_back("-o"); - cmd.push_back(RccFileBuild_); + cmd.push_back(RccFileOutput_); cmd.push_back(QrcFile_); // We're done here if the process fails to start return !StartProcess(AutogenBuildDir_, cmd, true); @@ -557,32 +577,34 @@ bool cmQtAutoGeneratorRcc::GenerateRcc() void cmQtAutoGeneratorRcc::GenerateWrapper() { // Generate a wrapper source file on demand - if (MultiConfig_ == MultiConfigT::WRAPPER) { - // Wrapper file name - std::string const& wrapperAbs = RccFile_; + if (IsMultiConfig()) { // Wrapper file content - std::string content = "// This is an autogenerated configuration " - "wrapper file. Changes will be overwritten.\n" - "#include \""; - content += cmSystemTools::GetFilenameName(RccFileBuild_); - content += "\"\n"; + std::string content; + content += "// This is an autogenerated configuration wrapper file.\n"; + content += "// Changes will be overwritten.\n"; + content += "#include <"; + content += MultiConfigOutput(); + content += ">\n"; + // Write content to file - if (FileSys().FileDiffers(wrapperAbs, content)) { + if (FileSys().FileDiffers(RccFilePublic_, content)) { // Write new wrapper file if (Log().Verbose()) { - Log().Info(GeneratorT::RCC, "Generating RCC wrapper " + wrapperAbs); + Log().Info(GeneratorT::RCC, + "Generating RCC wrapper file " + RccFilePublic_); } - if (!FileSys().FileWrite(GeneratorT::RCC, wrapperAbs, content)) { - Log().ErrorFile(GeneratorT::RCC, wrapperAbs, + if (!FileSys().FileWrite(GeneratorT::RCC, RccFilePublic_, content)) { + Log().ErrorFile(GeneratorT::RCC, RccFilePublic_, "RCC wrapper file writing failed"); Error_ = true; } } else if (BuildFileChanged_) { // Just touch the wrapper file if (Log().Verbose()) { - Log().Info(GeneratorT::RCC, "Touching RCC wrapper " + wrapperAbs); + Log().Info(GeneratorT::RCC, + "Touching RCC wrapper file " + RccFilePublic_); } - FileSys().Touch(wrapperAbs); + FileSys().Touch(RccFilePublic_); } } } diff --git a/Source/cmQtAutoGeneratorRcc.h b/Source/cmQtAutoGeneratorRcc.h index 8a69c6c..55e0998 100644 --- a/Source/cmQtAutoGeneratorRcc.h +++ b/Source/cmQtAutoGeneratorRcc.h @@ -5,7 +5,6 @@ #include "cmConfigure.h" // IWYU pragma: keep -#include "cmQtAutoGen.h" #include "cmQtAutoGenerator.h" #include "cm_uv.h" @@ -26,7 +25,7 @@ private: // -- Types /// @brief Processing stage - enum class StageT + enum class StageT : unsigned char { SETTINGS_READ, TEST_QRC_RCC_FILES, @@ -62,17 +61,18 @@ private: void GenerateWrapper(); // -- Utility + bool IsMultiConfig() const { return MultiConfig_; } + std::string MultiConfigOutput() const; bool StartProcess(std::string const& workingDirectory, std::vector const& command, bool mergedOutput); private: // -- Config settings - bool SettingsChanged_; - std::string ConfigSuffix_; - MultiConfigT MultiConfig_; + bool MultiConfig_; // -- Directories std::string AutogenBuildDir_; + std::string IncludeDir_; // -- Qt environment std::string RccExecutable_; std::vector RccListOptions_; @@ -80,9 +80,10 @@ private: std::string QrcFile_; std::string QrcFileName_; std::string QrcFileDir_; - std::string RccFile_; - std::string RccFileWrapper_; - std::string RccFileBuild_; + std::string RccPathChecksum_; + std::string RccFileName_; + std::string RccFileOutput_; + std::string RccFilePublic_; std::vector Options_; std::vector Inputs_; // -- Subprocess @@ -91,6 +92,7 @@ private: // -- Settings file std::string SettingsFile_; std::string SettingsString_; + bool SettingsChanged_; // -- libuv loop StageT Stage_; bool Error_; https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6d148d6d53913710408a8a1006dd93998c44260a commit 6d148d6d53913710408a8a1006dd93998c44260a Author: Vitaly Stakhovsky AuthorDate: Thu Feb 1 19:09:34 2018 -0500 Commit: Vitaly Stakhovsky CommitDate: Thu Feb 1 19:09:34 2018 -0500 cmVisualStudio10TargetGenerator: Limit scope of ConvertToWindowsSlash() It is no longer used outside this class, so its scope can be limited to file. diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 9115eb7..ec31bd6 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -18,6 +18,8 @@ #include #include // IWYU pragma: keep +static void ConvertToWindowsSlash(std::string& s); + static std::string cmVS10EscapeXML(std::string arg) { cmSystemTools::ReplaceString(arg, "&", "&"); @@ -482,7 +484,7 @@ void cmVisualStudio10TargetGenerator::Generate() std::string propsLocal; propsLocal += this->DefaultArtifactDir; propsLocal += "\\nasm.props"; - this->ConvertToWindowsSlash(propsLocal); + ConvertToWindowsSlash(propsLocal); this->Makefile->ConfigureFile(propsTemplate.c_str(), propsLocal.c_str(), false, true, true); std::string import = std::string("ConvertToWindowsSlash(props); + ConvertToWindowsSlash(props); this->WriteString("", 2); (*this->BuildFileStream) << "GetCurrentSourceDirectory()) + "/" + path; } - this->ConvertToWindowsSlash(path); + ConvertToWindowsSlash(path); hintReferences.push_back(HintReference(name, path)); } } @@ -617,7 +619,7 @@ void cmVisualStudio10TargetGenerator::WriteDotNetReferences() if (cmsys::SystemTools::FileExists(ri, true)) { std::string name = cmsys::SystemTools::GetFilenameWithoutExtension(ri); std::string path = ri; - this->ConvertToWindowsSlash(path); + ConvertToWindowsSlash(path); hintReferences.push_back(HintReference(name, path)); } else { this->WriteDotNetReference(ri, ""); @@ -691,11 +693,11 @@ void cmVisualStudio10TargetGenerator::WriteEmbeddedResourceGroup() if (!resxObjs.empty()) { this->WriteString("\n", 1); std::string srcDir = this->Makefile->GetCurrentSourceDirectory(); - this->ConvertToWindowsSlash(srcDir); + ConvertToWindowsSlash(srcDir); for (cmSourceFile const* oi : resxObjs) { std::string obj = oi->GetFullPath(); this->WriteString("ConvertToWindowsSlash(obj); + ConvertToWindowsSlash(obj); bool useRelativePath = false; if (this->ProjectType == csproj && this->InSourceBuild) { // If we do an in-source build and the resource file is in a @@ -704,7 +706,7 @@ void cmVisualStudio10TargetGenerator::WriteEmbeddedResourceGroup() // visual studio does not show the file in the IDE. Sorry. if (obj.find(srcDir) == 0) { obj = this->ConvertPath(obj, true); - this->ConvertToWindowsSlash(obj); + ConvertToWindowsSlash(obj); useRelativePath = true; } } @@ -728,7 +730,7 @@ void cmVisualStudio10TargetGenerator::WriteEmbeddedResourceGroup() } } else { std::string binDir = this->Makefile->GetCurrentBinaryDirectory(); - this->ConvertToWindowsSlash(binDir); + ConvertToWindowsSlash(binDir); // If the resource was NOT added using a relative path (which should // be the default), we have to provide a link here if (!useRelativePath) { @@ -767,7 +769,7 @@ void cmVisualStudio10TargetGenerator::WriteEmbeddedResourceGroup() designerResource = cmsys::SystemTools::GetFilenameName(designerResource); } - this->ConvertToWindowsSlash(designerResource); + ConvertToWindowsSlash(designerResource); this->WriteString("", 3); (*this->BuildFileStream) << designerResource << "\n"; @@ -827,7 +829,7 @@ void cmVisualStudio10TargetGenerator::WriteXamlFilesGroup() link = cmsys::SystemTools::GetFilenameName(obj); } if (!link.empty()) { - this->ConvertToWindowsSlash(link); + ConvertToWindowsSlash(link); this->WriteString("", 3); (*this->BuildFileStream) << link << "\n"; } @@ -1055,7 +1057,7 @@ void cmVisualStudio10TargetGenerator::WriteMSToolConfigurationValuesManaged( } std::string outDir = this->GeneratorTarget->GetDirectory(config) + "/"; - this->ConvertToWindowsSlash(outDir); + ConvertToWindowsSlash(outDir); this->WriteString("", 2); (*this->BuildFileStream) << cmVS10EscapeXML(outDir) << "\n"; @@ -1235,7 +1237,7 @@ void cmVisualStudio10TargetGenerator::WriteCustomRule( d != ccg.GetDepends().end(); ++d) { std::string dep; if (this->LocalGenerator->GetRealDependency(*d, *i, dep)) { - this->ConvertToWindowsSlash(dep); + ConvertToWindowsSlash(dep); inputs << ";" << cmVS10EscapeXML(dep); } } @@ -1245,7 +1247,7 @@ void cmVisualStudio10TargetGenerator::WriteCustomRule( for (std::vector::const_iterator o = ccg.GetOutputs().begin(); o != ccg.GetOutputs().end(); ++o) { std::string out = *o; - this->ConvertToWindowsSlash(out); + ConvertToWindowsSlash(out); outputs << sep << cmVS10EscapeXML(out); sep = ";"; } @@ -1323,7 +1325,7 @@ std::string cmVisualStudio10TargetGenerator::ConvertPath( : path.c_str(); } -void cmVisualStudio10TargetGenerator::ConvertToWindowsSlash(std::string& s) +static void ConvertToWindowsSlash(std::string& s) { // first convert all of the slashes std::string::size_type pos = 0; @@ -1424,7 +1426,7 @@ void cmVisualStudio10TargetGenerator::WriteGroups() for (cmSourceFile const* oi : resxObjs) { std::string obj = oi->GetFullPath(); this->WriteString("ConvertToWindowsSlash(obj); + ConvertToWindowsSlash(obj); (*this->BuildFileStream) << cmVS10EscapeXML(obj) << "\">\n"; this->WriteString("Resource Files\n", 3); this->WriteString("\n", 2); @@ -1526,7 +1528,7 @@ void cmVisualStudio10TargetGenerator::WriteGroupSources( std::string const& filter = sourceGroup->GetFullName(); this->WriteString("<", 2); std::string path = this->ConvertPath(source, s.RelativePath); - this->ConvertToWindowsSlash(path); + ConvertToWindowsSlash(path); (*this->BuildFileStream) << name << " Include=\"" << cmVS10EscapeXML(path); if (!filter.empty()) { (*this->BuildFileStream) << "\">\n"; @@ -1599,7 +1601,7 @@ void cmVisualStudio10TargetGenerator::WriteExtraSource(cmSourceFile const* sf) sourceLink = cmsys::SystemTools::GetFilenameName(fullFileName); } if (!sourceLink.empty()) { - this->ConvertToWindowsSlash(sourceLink); + ConvertToWindowsSlash(sourceLink); } } } @@ -1871,7 +1873,7 @@ void cmVisualStudio10TargetGenerator::WriteSource(std::string const& tool, this->GlobalGenerator->PathTooLong(this->GeneratorTarget, sf, sourceRel); } } - this->ConvertToWindowsSlash(sourceFile); + ConvertToWindowsSlash(sourceFile); this->WriteString("<", 2); (*this->BuildFileStream) << tool << " Include=\"" << cmVS10EscapeXML(sourceFile) << "\"" @@ -2262,8 +2264,8 @@ void cmVisualStudio10TargetGenerator::WritePathAndIncrementalLinkOptions() outDir = this->GeneratorTarget->GetDirectory(config) + "/"; targetNameFull = this->GeneratorTarget->GetFullName(config); } - this->ConvertToWindowsSlash(intermediateDir); - this->ConvertToWindowsSlash(outDir); + ConvertToWindowsSlash(intermediateDir); + ConvertToWindowsSlash(outDir); this->WritePlatformConfigTag("OutDir", config, 2); *this->BuildFileStream << cmVS10EscapeXML(outDir) << "\n"; @@ -2350,7 +2352,7 @@ std::vector cmVisualStudio10TargetGenerator::GetIncludes( this->LocalGenerator->GetIncludeDirectories(includes, this->GeneratorTarget, lang, config); for (std::string& i : includes) { - this->ConvertToWindowsSlash(i); + ConvertToWindowsSlash(i); } return includes; } @@ -2580,7 +2582,7 @@ void cmVisualStudio10TargetGenerator::WriteClOptions( // Specify the compiler program database file if configured. std::string pdb = this->GeneratorTarget->GetCompilePDBPath(configName); if (!pdb.empty()) { - this->ConvertToWindowsSlash(pdb); + ConvertToWindowsSlash(pdb); this->WriteString("", 3); *this->BuildFileStream << cmVS10EscapeXML(pdb) << "\n"; @@ -3032,7 +3034,7 @@ void cmVisualStudio10TargetGenerator::WriteManifestOptions( this->WriteString("", 3); for (cmSourceFile const* mi : manifest_srcs) { std::string m = this->ConvertPath(mi->GetFullPath(), false); - this->ConvertToWindowsSlash(m); + ConvertToWindowsSlash(m); (*this->BuildFileStream) << m << ";"; } (*this->BuildFileStream) << "\n"; @@ -3063,7 +3065,7 @@ void cmVisualStudio10TargetGenerator::WriteAntBuildOptions( std::string antBuildPath = rootDir; this->WriteString("\n", 2); this->WriteString("", 3); - this->ConvertToWindowsSlash(antBuildPath); + ConvertToWindowsSlash(antBuildPath); (*this->BuildFileStream) << cmVS10EscapeXML(antBuildPath) << "\n"; } @@ -3150,7 +3152,7 @@ void cmVisualStudio10TargetGenerator::WriteAntBuildOptions( { std::string manifest_xml = rootDir + "/AndroidManifest.xml"; - this->ConvertToWindowsSlash(manifest_xml); + ConvertToWindowsSlash(manifest_xml); this->WriteString("", 3); (*this->BuildFileStream) << cmVS10EscapeXML(manifest_xml) << "\n"; @@ -3429,7 +3431,7 @@ bool cmVisualStudio10TargetGenerator::ComputeLibOptions( if (l.IsPath && cmVS10IsTargetsFile(l.Value)) { std::string path = this->LocalGenerator->ConvertToRelativePath(currentBinDir, l.Value); - this->ConvertToWindowsSlash(path); + ConvertToWindowsSlash(path); this->AddTargetsFileAndConfigPair(path, config); } } @@ -3475,7 +3477,7 @@ void cmVisualStudio10TargetGenerator::AddLibraries( if (l.IsPath) { std::string path = this->LocalGenerator->ConvertToRelativePath(currentBinDir, l.Value); - this->ConvertToWindowsSlash(path); + ConvertToWindowsSlash(path); if (cmVS10IsTargetsFile(l.Value)) { vsTargetVec.push_back(path); } else { @@ -3694,7 +3696,7 @@ void cmVisualStudio10TargetGenerator::WriteProjectReferences() path += dt->GetName(); path += computeProjectFileExtension(dt, *this->Configurations.begin()); } - this->ConvertToWindowsSlash(path); + ConvertToWindowsSlash(path); (*this->BuildFileStream) << cmVS10EscapeXML(path) << "\">\n"; this->WriteString("", 3); (*this->BuildFileStream) << "{" << this->GlobalGenerator->GetGUID(name) @@ -3825,7 +3827,7 @@ void cmVisualStudio10TargetGenerator::WriteWinRTPackageCertificateKeyFile() this->GeneratorTarget->GetCertificates(certificates, ""); for (cmSourceFile const* si : certificates) { pfxFile = this->ConvertPath(si->GetFullPath(), false); - this->ConvertToWindowsSlash(pfxFile); + ConvertToWindowsSlash(pfxFile); break; } @@ -3835,7 +3837,7 @@ void cmVisualStudio10TargetGenerator::WriteWinRTPackageCertificateKeyFile() // Move the manifest to a project directory to avoid clashes std::string artifactDir = this->LocalGenerator->GetTargetDirectory(this->GeneratorTarget); - this->ConvertToWindowsSlash(artifactDir); + ConvertToWindowsSlash(artifactDir); this->WriteString("\n", 1); this->WriteString("", 2); (*this->BuildFileStream) << cmVS10EscapeXML(artifactDir) @@ -3843,7 +3845,7 @@ void cmVisualStudio10TargetGenerator::WriteWinRTPackageCertificateKeyFile() this->WriteString("", 2); std::string resourcePriFile = this->DefaultArtifactDir + "/resources.pri"; - this->ConvertToWindowsSlash(resourcePriFile); + ConvertToWindowsSlash(resourcePriFile); (*this->BuildFileStream) << resourcePriFile << "\n"; // If we are missing files and we don't have a certificate and @@ -3854,7 +3856,7 @@ void cmVisualStudio10TargetGenerator::WriteWinRTPackageCertificateKeyFile() pfxFile = this->DefaultArtifactDir + "/Windows_TemporaryKey.pfx"; cmSystemTools::CopyAFile(templateFolder + "/Windows_TemporaryKey.pfx", pfxFile, false); - this->ConvertToWindowsSlash(pfxFile); + ConvertToWindowsSlash(pfxFile); this->AddedFiles.push_back(pfxFile); } @@ -4098,7 +4100,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWP80() std::string("/WMAppManifest.xml"); std::string artifactDir = this->LocalGenerator->GetTargetDirectory(this->GeneratorTarget); - this->ConvertToWindowsSlash(artifactDir); + ConvertToWindowsSlash(artifactDir); std::string artifactDirXML = cmVS10EscapeXML(artifactDir); std::string targetNameXML = cmVS10EscapeXML(this->GeneratorTarget->GetName()); @@ -4145,7 +4147,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWP80() /* clang-format on */ std::string sourceFile = this->ConvertPath(manifestFile, false); - this->ConvertToWindowsSlash(sourceFile); + ConvertToWindowsSlash(sourceFile); this->WriteString("BuildFileStream) << cmVS10EscapeXML(sourceFile) << "\">\n"; this->WriteString("Designer\n", 3); @@ -4155,14 +4157,14 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWP80() std::string smallLogo = this->DefaultArtifactDir + "/SmallLogo.png"; cmSystemTools::CopyAFile(templateFolder + "/SmallLogo.png", smallLogo, false); - this->ConvertToWindowsSlash(smallLogo); + ConvertToWindowsSlash(smallLogo); this->WriteString("BuildFileStream) << cmVS10EscapeXML(smallLogo) << "\" />\n"; this->AddedFiles.push_back(smallLogo); std::string logo = this->DefaultArtifactDir + "/Logo.png"; cmSystemTools::CopyAFile(templateFolder + "/Logo.png", logo, false); - this->ConvertToWindowsSlash(logo); + ConvertToWindowsSlash(logo); this->WriteString("BuildFileStream) << cmVS10EscapeXML(logo) << "\" />\n"; this->AddedFiles.push_back(logo); @@ -4171,7 +4173,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWP80() this->DefaultArtifactDir + "/ApplicationIcon.png"; cmSystemTools::CopyAFile(templateFolder + "/ApplicationIcon.png", applicationIcon, false); - this->ConvertToWindowsSlash(applicationIcon); + ConvertToWindowsSlash(applicationIcon); this->WriteString("BuildFileStream) << cmVS10EscapeXML(applicationIcon) << "\" />\n"; this->AddedFiles.push_back(applicationIcon); @@ -4183,7 +4185,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWP81() this->DefaultArtifactDir + "/package.appxManifest"; std::string artifactDir = this->LocalGenerator->GetTargetDirectory(this->GeneratorTarget); - this->ConvertToWindowsSlash(artifactDir); + ConvertToWindowsSlash(artifactDir); std::string artifactDirXML = cmVS10EscapeXML(artifactDir); std::string targetNameXML = cmVS10EscapeXML(this->GeneratorTarget->GetName()); @@ -4246,7 +4248,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWS80() this->DefaultArtifactDir + "/package.appxManifest"; std::string artifactDir = this->LocalGenerator->GetTargetDirectory(this->GeneratorTarget); - this->ConvertToWindowsSlash(artifactDir); + ConvertToWindowsSlash(artifactDir); std::string artifactDirXML = cmVS10EscapeXML(artifactDir); std::string targetNameXML = cmVS10EscapeXML(this->GeneratorTarget->GetName()); @@ -4301,7 +4303,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWS81() this->DefaultArtifactDir + "/package.appxManifest"; std::string artifactDir = this->LocalGenerator->GetTargetDirectory(this->GeneratorTarget); - this->ConvertToWindowsSlash(artifactDir); + ConvertToWindowsSlash(artifactDir); std::string artifactDirXML = cmVS10EscapeXML(artifactDir); std::string targetNameXML = cmVS10EscapeXML(this->GeneratorTarget->GetName()); @@ -4361,7 +4363,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWS10_0() this->DefaultArtifactDir + "/package.appxManifest"; std::string artifactDir = this->LocalGenerator->GetTargetDirectory(this->GeneratorTarget); - this->ConvertToWindowsSlash(artifactDir); + ConvertToWindowsSlash(artifactDir); std::string artifactDirXML = cmVS10EscapeXML(artifactDir); std::string targetNameXML = cmVS10EscapeXML(this->GeneratorTarget->GetName()); @@ -4423,7 +4425,7 @@ void cmVisualStudio10TargetGenerator::WriteCommonMissingFiles( cmSystemTools::GetCMakeRoot() + "/Templates/Windows"; std::string sourceFile = this->ConvertPath(manifestFile, false); - this->ConvertToWindowsSlash(sourceFile); + ConvertToWindowsSlash(sourceFile); this->WriteString("BuildFileStream) << cmVS10EscapeXML(sourceFile) << "\">\n"; this->WriteString("Designer\n", 3); @@ -4433,7 +4435,7 @@ void cmVisualStudio10TargetGenerator::WriteCommonMissingFiles( std::string smallLogo = this->DefaultArtifactDir + "/SmallLogo.png"; cmSystemTools::CopyAFile(templateFolder + "/SmallLogo.png", smallLogo, false); - this->ConvertToWindowsSlash(smallLogo); + ConvertToWindowsSlash(smallLogo); this->WriteString("BuildFileStream) << cmVS10EscapeXML(smallLogo) << "\" />\n"; this->AddedFiles.push_back(smallLogo); @@ -4441,14 +4443,14 @@ void cmVisualStudio10TargetGenerator::WriteCommonMissingFiles( std::string smallLogo44 = this->DefaultArtifactDir + "/SmallLogo44x44.png"; cmSystemTools::CopyAFile(templateFolder + "/SmallLogo44x44.png", smallLogo44, false); - this->ConvertToWindowsSlash(smallLogo44); + ConvertToWindowsSlash(smallLogo44); this->WriteString("BuildFileStream) << cmVS10EscapeXML(smallLogo44) << "\" />\n"; this->AddedFiles.push_back(smallLogo44); std::string logo = this->DefaultArtifactDir + "/Logo.png"; cmSystemTools::CopyAFile(templateFolder + "/Logo.png", logo, false); - this->ConvertToWindowsSlash(logo); + ConvertToWindowsSlash(logo); this->WriteString("BuildFileStream) << cmVS10EscapeXML(logo) << "\" />\n"; this->AddedFiles.push_back(logo); @@ -4456,7 +4458,7 @@ void cmVisualStudio10TargetGenerator::WriteCommonMissingFiles( std::string storeLogo = this->DefaultArtifactDir + "/StoreLogo.png"; cmSystemTools::CopyAFile(templateFolder + "/StoreLogo.png", storeLogo, false); - this->ConvertToWindowsSlash(storeLogo); + ConvertToWindowsSlash(storeLogo); this->WriteString("BuildFileStream) << cmVS10EscapeXML(storeLogo) << "\" />\n"; this->AddedFiles.push_back(storeLogo); @@ -4464,14 +4466,14 @@ void cmVisualStudio10TargetGenerator::WriteCommonMissingFiles( std::string splashScreen = this->DefaultArtifactDir + "/SplashScreen.png"; cmSystemTools::CopyAFile(templateFolder + "/SplashScreen.png", splashScreen, false); - this->ConvertToWindowsSlash(splashScreen); + ConvertToWindowsSlash(splashScreen); this->WriteString("BuildFileStream) << cmVS10EscapeXML(splashScreen) << "\" />\n"; this->AddedFiles.push_back(splashScreen); // This file has already been added to the build so don't copy it std::string keyFile = this->DefaultArtifactDir + "/Windows_TemporaryKey.pfx"; - this->ConvertToWindowsSlash(keyFile); + ConvertToWindowsSlash(keyFile); this->WriteString("BuildFileStream) << cmVS10EscapeXML(keyFile) << "\" />\n"; } @@ -4542,7 +4544,7 @@ void cmVisualStudio10TargetGenerator::GetCSharpSourceLink( if (const char* l = sf->GetProperty("VS_CSHARP_Link")) { link = l; } - this->ConvertToWindowsSlash(link); + ConvertToWindowsSlash(link); } } } @@ -4553,7 +4555,7 @@ std::string cmVisualStudio10TargetGenerator::GetCMakeFilePath( // Always search in the standard modules location. std::string path = cmSystemTools::GetCMakeRoot() + "/"; path += relativeFilePath; - this->ConvertToWindowsSlash(path); + ConvertToWindowsSlash(path); return path; } diff --git a/Source/cmVisualStudio10TargetGenerator.h b/Source/cmVisualStudio10TargetGenerator.h index 2bc5da9..33d4fb7 100644 --- a/Source/cmVisualStudio10TargetGenerator.h +++ b/Source/cmVisualStudio10TargetGenerator.h @@ -54,7 +54,6 @@ private: }; std::string ConvertPath(std::string const& path, bool forceRelative); - static void ConvertToWindowsSlash(std::string& s); void WriteString(const char* line, int indentLevel); void WriteProjectConfigurations(); void WriteProjectConfigurationValues(); ----------------------------------------------------------------------- Summary of changes: Help/manual/cmake-qt.7.rst | 19 +- Help/prop_tgt/AUTORCC.rst | 5 + Modules/AutoRccInfo.cmake.in | 7 - Modules/AutogenInfo.cmake.in | 32 -- Source/cmQtAutoGen.cxx | 28 -- Source/cmQtAutoGen.h | 13 - Source/cmQtAutoGenInitializer.cxx | 545 +++++++++++++--------------- Source/cmQtAutoGenInitializer.h | 25 +- Source/cmQtAutoGeneratorMocUic.cxx | 104 +++--- Source/cmQtAutoGeneratorMocUic.h | 9 +- Source/cmQtAutoGeneratorRcc.cxx | 150 ++++---- Source/cmQtAutoGeneratorRcc.h | 18 +- Source/cmVisualStudio10TargetGenerator.cxx | 102 +++--- Source/cmVisualStudio10TargetGenerator.h | 1 - 14 files changed, 486 insertions(+), 572 deletions(-) delete mode 100644 Modules/AutoRccInfo.cmake.in delete mode 100644 Modules/AutogenInfo.cmake.in hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 5 08:55:02 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 5 Feb 2018 08:55:02 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1031-gfba5980 Message-ID: <20180205135502.EDF8E103491@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via fba5980fa6d94c101e8729414bb4f787fb310b68 (commit) via b95eda9b11ff2ba8baccf6208bb43c4c3cfa3479 (commit) from 213ecf05d681522dfa6ca8396281494a2c7b7b9a (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fba5980fa6d94c101e8729414bb4f787fb310b68 commit fba5980fa6d94c101e8729414bb4f787fb310b68 Merge: 213ecf0 b95eda9 Author: Brad King AuthorDate: Mon Feb 5 13:47:32 2018 +0000 Commit: Kitware Robot CommitDate: Mon Feb 5 08:47:36 2018 -0500 Merge topic 'fix_help_cmake_parse_arguments' b95eda9b Help: Fix code example in cmake_parse_arguments.rst Acked-by: Kitware Robot Merge-request: !1747 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b95eda9b11ff2ba8baccf6208bb43c4c3cfa3479 commit b95eda9b11ff2ba8baccf6208bb43c4c3cfa3479 Author: Kai Wolf AuthorDate: Sun Feb 4 08:41:03 2018 +0100 Commit: Kai Wolf CommitDate: Sun Feb 4 08:41:03 2018 +0100 Help: Fix code example in cmake_parse_arguments.rst diff --git a/Help/command/cmake_parse_arguments.rst b/Help/command/cmake_parse_arguments.rst index b334a89..efbef54 100644 --- a/Help/command/cmake_parse_arguments.rst +++ b/Help/command/cmake_parse_arguments.rst @@ -62,7 +62,7 @@ as the real :command:`install` command: .. code-block:: cmake - function(MY_INSTALL) + macro(my_install) set(options OPTIONAL FAST) set(oneValueArgs DESTINATION RENAME) set(multiValueArgs TARGETS CONFIGURATIONS) ----------------------------------------------------------------------- Summary of changes: Help/command/cmake_parse_arguments.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 5 09:35:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 5 Feb 2018 09:35:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1033-ga40768b Message-ID: <20180205143504.73013103607@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via a40768b5af2ace2028e70efc04f65f4f8fd113f0 (commit) via 04167e39c329e8e1cfb5bab12b6492af8bcd4bdd (commit) from fba5980fa6d94c101e8729414bb4f787fb310b68 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a40768b5af2ace2028e70efc04f65f4f8fd113f0 commit a40768b5af2ace2028e70efc04f65f4f8fd113f0 Merge: fba5980 04167e3 Author: Brad King AuthorDate: Mon Feb 5 14:27:53 2018 +0000 Commit: Kitware Robot CommitDate: Mon Feb 5 09:28:01 2018 -0500 Merge topic 'bootstrap-try-clang' 04167e39 bootstrap: Add Clang to known compiler candidates Acked-by: Kitware Robot Merge-request: !1749 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=04167e39c329e8e1cfb5bab12b6492af8bcd4bdd commit 04167e39c329e8e1cfb5bab12b6492af8bcd4bdd Author: Axel Huebl AuthorDate: Mon Feb 5 11:26:15 2018 +0100 Commit: Brad King CommitDate: Mon Feb 5 08:58:41 2018 -0500 bootstrap: Add Clang to known compiler candidates Add `clang` and `clang++` after the corresponding `gcc` and `g++` candidates. Otherwise it is not tried on platforms where we do not enumerate the toolchain pair candidates. diff --git a/bootstrap b/bootstrap index 83e67c5..005f4f3 100755 --- a/bootstrap +++ b/bootstrap @@ -220,8 +220,8 @@ cmake_doc_dir_default="`cmake_install_dest_default DOC ${cmake_doc_dir_keyword}` cmake_man_dir_default="`cmake_install_dest_default MAN ${cmake_man_dir_keyword}`" cmake_xdgdata_dir_default="`cmake_install_dest_default XDGDATA ${cmake_xdgdata_dir_keyword}`" -CMAKE_KNOWN_C_COMPILERS="cc gcc xlc icc tcc" -CMAKE_KNOWN_CXX_COMPILERS="aCC xlC CC g++ c++ icc como " +CMAKE_KNOWN_C_COMPILERS="cc gcc clang xlc icc tcc" +CMAKE_KNOWN_CXX_COMPILERS="aCC xlC CC g++ clang++ c++ icc como " CMAKE_KNOWN_MAKE_PROCESSORS="gmake make" CMAKE_PROBLEMATIC_FILES="\ ----------------------------------------------------------------------- Summary of changes: bootstrap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 5 11:15:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 5 Feb 2018 11:15:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1036-g9c1efb6 Message-ID: <20180205161504.5E35C1033CC@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 9c1efb614dee294cb3a1077e8a232573f309c605 (commit) via acbbccf70458adaf5cb215a1845a115ded520f20 (commit) via 22ac06edb84fe73751c21ea4a3d9810434a85753 (commit) from a40768b5af2ace2028e70efc04f65f4f8fd113f0 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9c1efb614dee294cb3a1077e8a232573f309c605 commit 9c1efb614dee294cb3a1077e8a232573f309c605 Merge: a40768b acbbccf Author: Brad King AuthorDate: Mon Feb 5 16:14:23 2018 +0000 Commit: Kitware Robot CommitDate: Mon Feb 5 11:14:31 2018 -0500 Merge topic 'doc-3.11-relnotes' acbbccf7 Help: Organize and revise 3.11 release notes 22ac06ed Help: Consolidate 3.11 release notes Acked-by: Kitware Robot Merge-request: !1751 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=acbbccf70458adaf5cb215a1845a115ded520f20 commit acbbccf70458adaf5cb215a1845a115ded520f20 Author: Brad King AuthorDate: Mon Feb 5 10:17:44 2018 -0500 Commit: Brad King CommitDate: Mon Feb 5 10:56:36 2018 -0500 Help: Organize and revise 3.11 release notes Add section headers similar to the 3.10 release notes and move each individual bullet into an appropriate section. Revise a few bullets. diff --git a/Help/release/3.11.rst b/Help/release/3.11.rst index d611650..b57ac29 100644 --- a/Help/release/3.11.rst +++ b/Help/release/3.11.rst @@ -7,140 +7,51 @@ CMake 3.11 Release Notes Changes made since CMake 3.10 include the following. -* When using :prop_tgt:`AUTOMOC` or :prop_tgt:`AUTOUIC`, CMake starts multiple - parallel ``moc`` or ``uic`` processes to reduce the build time. - The new :variable:`CMAKE_AUTOGEN_PARALLEL` variable and - :prop_tgt:`AUTOGEN_PARALLEL` target property allow to modify the number of - parallel ``moc`` or ``uic`` processes to start. - By default CMake starts a single ``moc`` or ``uic`` process for each physical - CPU on the host system. +New Features +============ -* The :module:`FindBLAS` and :module:`FindLAPACK` modules learned to support - `FLAME `__ ``blis`` and ``libflame``. - -* Variables containing newlines in their values now get truncated before the - newline when they are written to the cache file. In addition, a warning - comment is written to the cache file, and a warning message is displayed to - the user on the console. - -* The :module:`CheckIncludeFile` module ``check_include_file`` macro - learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. - -* The :module:`CheckIncludeFileCXX` module ``check_include_file_cxx`` macro - learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. - -* The :module:`CheckIncludeFiles` module ``check_include_files`` macro - learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. +Platforms +--------- -* The :module:`CheckIncludeFiles` module :command:`CHECK_INCLUDE_FILES` - command gained a ``LANGUAGE`` option to specify whether to check using the - ``C`` or ``CXX`` compiler. - -* The :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable was added - to enable setting of default permissions for directories created implicitly - during installation of files by :command:`install` and - :command:`file(INSTALL)`. - -* The :variable:`CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable was added - which serves the same purpose during packaging as the - :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable serves during - installation (e.g. ``make install``). - -* A :variable:`CMAKE_JOB_POOLS` variable was added specify a value to use for - the :prop_gbl:`JOB_POOLS` property. This enables control over build - parallelism with command line configuration parameters when using the Ninja - generator. +* TI C/C++ compilers are now supported by the :generator:`Ninja` generator. -* The :manual:`cmake(1)` ``--open `` command line option can now - be used to open generated IDE projects like Visual Studio solutions - or Xcode projects. +Generators +---------- * The :generator:`CodeBlocks` extra generator learned to check a :variable:`CMAKE_CODEBLOCKS_COMPILER_ID` variable for a custom compiler identification value to place in the project file. -* The :module:`CPackIFW` module gained new - :variable:`CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR` variable to control - if the target directory should not be deleted when uninstalling. - -* The :module:`CPackRPM` module learned to enable enforcing of execute - privileges on programs and shared libraries. - See :variable:`CPACK_RPM_INSTALL_WITH_EXEC` variable. - -* :manual:`cpack(1)` gained ``--trace`` and ``--trace-expand`` options. - -* The :command:`ctest_start` command no longer sets - :variable:`CTEST_RUN_CURRENT_SCRIPT` due to issues with scoping if it is - called from inside a function. Instead, it sets an internal variable in - CTest. However, setting :variable:`CTEST_RUN_CURRENT_SCRIPT` to 0 at the - global scope still prevents the script from being re-run at the end. - -* A :variable:`CMAKE_CUDA_SEPARABLE_COMPILATION` variable was added to - initialize the :prop_tgt:`CUDA_SEPARABLE_COMPILATION` target property - on targets when they are created. - -* The :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands - gained ``NETRC`` and ``NETRC_FILE`` options to specify use of a - ``.netrc`` file. - -* The :module:`ExternalProject` module gained ``NETRC`` and ``NETRC_FILE`` - options to specify use of a ``.netrc`` file. - -* The :variable:`CMAKE_NETRC` and :variable:`CMAKE_NETRC_FILE` variables - were added to specify use of a ``.netrc`` file by the - :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands and - the :module:`ExternalProject` module. - -* :command:`add_library` and :command:`add_executable` commands can now be - called without any sources and will not complain as long as sources will - be added later via :command:`target_sources`. - -* An explicit deprecation diagnostic was added for policies ``CMP0037`` - through ``CMP0054`` (``CMP0036`` and below were already deprecated). - The :manual:`cmake-policies(7)` manual explains that the OLD behaviors - of all policies are deprecated and that projects should port to the - NEW behaviors. - -* The :command:`doxygen_add_docs` function of the :module:`FindDoxygen` module - now supports a new ``DOXYGEN_VERBATIM_VARS`` list variable. Any - ``DOXYGEN_...`` variable contained in that list will bypass the automatic - quoting logic, leaving its contents untouched when transferring them to the - output Doxyfile. +* The :ref:`Makefile Generators` and the :generator:`Ninja` generator learned + to add compiler launcher tools along with the compiler for the ``Fortran`` + language (``C``, ``CXX``, and ``CUDA`` were supported previously). + See the :variable:`CMAKE__COMPILER_LAUNCHER` variable and + :prop_tgt:`_COMPILER_LAUNCHER` target property for details. * :ref:`Visual Studio Generators` learned to support the ``COMPILE_LANGUAGE`` :manual:`generator expression ` in target-wide :prop_tgt:`COMPILE_DEFINITIONS`, :prop_tgt:`INCLUDE_DIRECTORIES`, :prop_tgt:`COMPILE_OPTIONS`, and - :command:`file(GENERATE)`. + :command:`file(GENERATE)`. See generator expression documentation + for caveats. * The :generator:`Xcode` generator learned to support the ``COMPILE_LANGUAGE`` :manual:`generator expression ` in target-wide :prop_tgt:`COMPILE_DEFINITIONS` and :prop_tgt:`INCLUDE_DIRECTORIES`. It previously supported only :prop_tgt:`COMPILE_OPTIONS` and :command:`file(GENERATE)`. + See generator expression documentation for caveats. -* The :module:`ExternalProject` module learnt to substitute ```` - in comments, commands, working directory and byproducts. +Commands +-------- -* A new :module:`FetchContent` module was added which supports populating - content at configure time using any of the download/update methods - supported by :command:`ExternalProject_Add`. This allows the content - to be used immediately during the configure stage, such as with - :command:`add_subdirectory`, etc. Hierarchical project structures are - well supported, allowing parent projects to override the content details - of child projects and ensuring content is not populated multiple times - throughout the whole project tree. - -* A :module:`FindIconv` module was added to locate iconv support. - -* The :module:`FindOpenGL` module now prefers GLVND libraries if available. - See policy :policy:`CMP0072`. +* :command:`add_library` and :command:`add_executable` commands can now be + called without any sources and will not complain as long as sources are + added later via the :command:`target_sources` command. -* The :ref:`Makefile Generators` and the :generator:`Ninja` generator learned - to add compiler launcher tools along with the compiler for the ``Fortran`` - language (``C``, ``CXX``, and ``CUDA`` were supported previously). - See the :variable:`CMAKE__COMPILER_LAUNCHER` variable and - :prop_tgt:`_COMPILER_LAUNCHER` target property for details. +* The :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands + gained ``NETRC`` and ``NETRC_FILE`` options to specify use of a + ``.netrc`` file. * The :command:`target_compile_definitions` command learned to set the :prop_tgt:`INTERFACE_COMPILE_DEFINITIONS` property on @@ -162,14 +73,8 @@ Changes made since CMake 3.10 include the following. * The :command:`target_link_libraries` command learned to set the :prop_tgt:`INTERFACE_LINK_LIBRARIES` property on :ref:`Imported Targets`. -* :ref:`Alias Targets` may now alias :ref:`Imported Targets` that are - created with the ``GLOBAL`` option to :command:`add_library`. - -* The :module:`GenerateExportHeader` module learned an optional - ``INCLUDE_GUARD_NAME`` parameter to change the name of the include guard - symbol written to the generated export header. - Additionally, it now adds a comment after the closing ``#endif`` on the - generated export header's include guard. +Variables +--------- * A :variable:`CMAKE_GENERATOR_INSTANCE` variable was introduced to hold the selected instance of the generator's corresponding @@ -177,64 +82,197 @@ Changes made since CMake 3.10 include the following. :generator:`Visual Studio 15 2017` generator to hold the selected instance of Visual Studio persistently. -* Added new target-property :prop_tgt:`IMPORTED_GLOBAL` which - indicates if an :ref:`IMPORTED target ` is - globally visible. - It will be set automatically if such an imported target is - created with the ``GLOBAL`` flag. +* A :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable was added + to enable setting of default permissions for directories created implicitly + during installation of files by :command:`install` and + :command:`file(INSTALL)`, e.g. during ``make install``. -* Additionally, it is now also possible to promote a local imported - target to become globally visible by setting its - :prop_tgt:`IMPORTED_GLOBAL` property to `TRUE`. (However, this - promotion can only succeed if it is done from within the same - directory where the imported target was created in the first - place.) Setting it to `FALSE` is not supported! +* A :variable:`CMAKE_JOB_POOLS` variable was added specify a value to use for + the :prop_gbl:`JOB_POOLS` property. This enables control over build + parallelism with command line configuration parameters when using the Ninja + generator. -* The minimum deployment target set in the - :variable:`CMAKE_OSX_DEPLOYMENT_TARGET` variable used to be only - applied for macOS regardless of the selected SDK. It is now properly - set for the target platform selected by :variable:`CMAKE_OSX_SYSROOT`. +* The :variable:`CMAKE_NETRC` and :variable:`CMAKE_NETRC_FILE` variables + were added to specify use of a ``.netrc`` file by the + :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands and + the :module:`ExternalProject` module. - If for example the sysroot variable specifies an iOS SDK then the - value in ``CMAKE_OSX_DEPLOYMENT_TARGET`` is interpreted as minimum - iOS version. +* A :variable:`CMAKE_CUDA_SEPARABLE_COMPILATION` variable was added to + initialize the :prop_tgt:`CUDA_SEPARABLE_COMPILATION` target property + on targets when they are created. -* The ``KDevelop3`` generator has been removed. +Properties +---------- * The :prop_sf:`COMPILE_DEFINITIONS` source file property learned to support :manual:`generator expressions `. -* Source file learns new properties: +* A :prop_sf:`COMPILE_OPTIONS` source file property was added to manage list + of options to pass to the compiler. - * A :prop_sf:`COMPILE_OPTIONS` source file property was added to manage list - of options to pass to the compiler. +* An :prop_tgt:`IMPORTED_GLOBAL` target property was added to indicate + whether an :ref:`IMPORTED target ` is globally visible. + It is automatically set to a true value for targets created with the + ``GLOBAL`` option to :command:`add_library` or :command:`add_executable`. + Additionally, project code may now *promote* a local imported target + to be globally visible by setting this property to ``TRUE``. - * An :prop_sf:`INCLUDE_DIRECTORIES` source file property was added to specify - list of preprocessor include file search directories. - -* TI C/C++ compilers are now supported by the :generator:`Ninja` generator. - -* | The command add_jar from :module:`UseJava` module learns how to generate native - headers files using option -h of javac tool. - | This capability requires, at least, version 1.8 of Javac tool. - | Command create_javah will no longer be supported due to the - `suppression of javah tool `_ in the version 1.10 - of the JDK, so ``add_jar(GENERATE_NATIVE_HEADERS)`` must be used instead. +* An :prop_sf:`INCLUDE_DIRECTORIES` source file property was added to specify + list of preprocessor include file search directories. * Source file properties :prop_sf:`VS_SHADER_DISABLE_OPTIMIZATIONS` and :prop_sf:`VS_SHADER_ENABLE_DEBUG` have been added to specify more details of ``.hlsl`` sources with :ref:`Visual Studio Generators`. -* ``INTERFACE`` libraries may now have custom properties set on them if they - start with either an underscore (``_``) or a lowercase ASCII character. The - original intention was to only allow properties which made sense for +Modules +------- + +* The :module:`CheckIncludeFile` module ``check_include_file`` macro + learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. + +* The :module:`CheckIncludeFileCXX` module ``check_include_file_cxx`` macro + learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. + +* The :module:`CheckIncludeFiles` module ``check_include_files`` macro + learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. + +* The :module:`CheckIncludeFiles` module :command:`CHECK_INCLUDE_FILES` + command gained a ``LANGUAGE`` option to specify whether to check using the + ``C`` or ``CXX`` compiler. + +* The :module:`CMakePackageConfigHelpers` module + :command:`write_basic_package_version_file` command learned a new + ``SameMinorVersion`` mode for the ``COMPATIBILITY`` argument. + +* The :module:`ExternalProject` module learned to substitute ```` + in comments, commands, working directory and byproducts. + +* The :module:`ExternalProject` module gained ``NETRC`` and ``NETRC_FILE`` + options to specify use of a ``.netrc`` file. + +* A new :module:`FetchContent` module was added which supports populating + content at configure time using any of the download/update methods + supported by :command:`ExternalProject_Add`. This allows the content + to be used immediately during the configure stage, such as with + :command:`add_subdirectory`, etc. Hierarchical project structures are + well supported, allowing parent projects to override the content details + of child projects and ensuring content is not populated multiple times + throughout the whole project tree. + +* The :module:`FindBLAS` and :module:`FindLAPACK` modules learned to support + `FLAME`_ ``blis`` and ``libflame``. + +* The :module:`FindDoxygen` module :command:`doxygen_add_docs` function + now supports a new ``DOXYGEN_VERBATIM_VARS`` list variable. Any + ``DOXYGEN_...`` variable contained in that list will bypass the automatic + quoting logic, leaving its contents untouched when transferring them to the + output ``Doxyfile``. + +* A :module:`FindIconv` module was added to locate iconv support. + +* The :module:`GenerateExportHeader` module ``GENERATE_EXPORT_HEADER`` command + gained an ``INCLUDE_GUARD_NAME`` option to change the name of the include + guard symbol written to the generated export header. + Additionally, it now adds a comment after the closing ``#endif`` on the + generated export header's include guard. + +* The :module:`UseJava` module ``add_jar`` command gained a + ``GENERATE_NATIVE_HEADERS`` option to generate native header files + using ``javac -h`` for ``javac`` 1.8 or above. This supersedes + ``create_javah``, which no longer works with JDK 1.10 and above due + to removal of the ``javah`` tool by `JEP 313`_. + +.. _`FLAME`: https://github.com/flame +.. _`JEP 313`: http://openjdk.java.net/jeps/313 + +Autogen +------- + +* When using :prop_tgt:`AUTOMOC` or :prop_tgt:`AUTOUIC`, CMake now starts + multiple parallel ``moc`` or ``uic`` processes to reduce the build time. + A new :variable:`CMAKE_AUTOGEN_PARALLEL` variable and + :prop_tgt:`AUTOGEN_PARALLEL` target property may be set to specify the + number of parallel ``moc`` or ``uic`` processes to start. The default + is derived from the number of CPUs on the host. + +CTest +----- + +* The :command:`ctest_start` command no longer sets + :variable:`CTEST_RUN_CURRENT_SCRIPT` due to issues with scoping if it is + called from inside a function. Instead, it sets an internal variable in + CTest. However, setting :variable:`CTEST_RUN_CURRENT_SCRIPT` to 0 at the + global scope still prevents the script from being re-run at the end. + +CPack +----- + +* :manual:`cpack(1)` gained ``--trace`` and ``--trace-expand`` options. + +* The :module:`CPackIFW` module gained new + :variable:`CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR` variable to control + if the target directory should not be deleted when uninstalling. + +* The :module:`CPackRPM` module learned to enable enforcing of execute + privileges on programs and shared libraries. + See :variable:`CPACK_RPM_INSTALL_WITH_EXEC` variable. + +* A :variable:`CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable was added + which serves the same purpose during packaging (e.g. ``make package``) as the + :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable serves during + installation (e.g. ``make install``). + +Other +----- + +* :ref:`Alias Targets` may now alias :ref:`Imported Targets` that are + created with the ``GLOBAL`` option to :command:`add_library`. + +* :ref:`Interface Libraries` may now have custom properties set on them if + they start with either an underscore (``_``) or a lowercase ASCII character. + The original intention was to only allow properties which made sense for ``INTERFACE`` libraries, but it also blocked usage of custom properties. -* The :command:`write_basic_package_version_file` understands a new - ``SameMinorVersion`` option for the ``COMPATIBILITY`` argument. +* The :manual:`cmake(1)` ``--open `` command-line option was added + to open generated IDE projects like Visual Studio solutions or Xcode + projects. + +Deprecated and Removed Features +=============================== + +* An explicit deprecation diagnostic was added for policies ``CMP0037`` + through ``CMP0054`` (``CMP0036`` and below were already deprecated). + The :manual:`cmake-policies(7)` manual explains that the OLD behaviors + of all policies are deprecated and that projects should port to the + NEW behaviors. + +* The ``KDevelop3`` generator has been removed. + +Other Changes +============= + +* Policy :policy:`CMP0037` no longer reserves target names associated + with optional features, such as ``test`` and ``package``, unless + the corresponding feature is enabled. + +* The :module:`FindOpenGL` module now prefers GLVND libraries if available. + See policy :policy:`CMP0072`. + +* The minimum deployment target set in the + :variable:`CMAKE_OSX_DEPLOYMENT_TARGET` variable used to be only + applied for macOS regardless of the selected SDK. It is now properly + set for the target platform selected by :variable:`CMAKE_OSX_SYSROOT`. + For example, if the sysroot variable specifies an iOS SDK then the + value in ``CMAKE_OSX_DEPLOYMENT_TARGET`` is interpreted as minimum + iOS version. * The :generator:`Xcode` generator behavior of generating one project - file per :command:`project()` command could now be controlled with the + file per :command:`project()` command may now be controlled with the :variable:`CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY` variable. This could be useful to speed up the CMake generation step for large projects and to work-around a bug in the ``ZERO_CHECK`` logic. + +* Since the ``CMakeCache.txt`` format does not support newlines in values, + values containing newlines are now truncated before writing to the file. + In addition, a warning comment is written to the cache file, and a warning + message is displayed to the user on the console. https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=22ac06edb84fe73751c21ea4a3d9810434a85753 commit 22ac06edb84fe73751c21ea4a3d9810434a85753 Author: Brad King AuthorDate: Mon Feb 5 09:32:26 2018 -0500 Commit: Brad King CommitDate: Mon Feb 5 09:32:26 2018 -0500 Help: Consolidate 3.11 release notes Run the `Utilities/Release/consolidate-relnotes.bash` script to move notes from `Help/release/dev/*` into `Help/release/3.11.rst`. diff --git a/Help/release/3.11.rst b/Help/release/3.11.rst new file mode 100644 index 0000000..d611650 --- /dev/null +++ b/Help/release/3.11.rst @@ -0,0 +1,240 @@ +CMake 3.11 Release Notes +************************ + +.. only:: html + + .. contents:: + +Changes made since CMake 3.10 include the following. + +* When using :prop_tgt:`AUTOMOC` or :prop_tgt:`AUTOUIC`, CMake starts multiple + parallel ``moc`` or ``uic`` processes to reduce the build time. + The new :variable:`CMAKE_AUTOGEN_PARALLEL` variable and + :prop_tgt:`AUTOGEN_PARALLEL` target property allow to modify the number of + parallel ``moc`` or ``uic`` processes to start. + By default CMake starts a single ``moc`` or ``uic`` process for each physical + CPU on the host system. + +* The :module:`FindBLAS` and :module:`FindLAPACK` modules learned to support + `FLAME `__ ``blis`` and ``libflame``. + +* Variables containing newlines in their values now get truncated before the + newline when they are written to the cache file. In addition, a warning + comment is written to the cache file, and a warning message is displayed to + the user on the console. + +* The :module:`CheckIncludeFile` module ``check_include_file`` macro + learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. + +* The :module:`CheckIncludeFileCXX` module ``check_include_file_cxx`` macro + learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. + +* The :module:`CheckIncludeFiles` module ``check_include_files`` macro + learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. + +* The :module:`CheckIncludeFiles` module :command:`CHECK_INCLUDE_FILES` + command gained a ``LANGUAGE`` option to specify whether to check using the + ``C`` or ``CXX`` compiler. + +* The :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable was added + to enable setting of default permissions for directories created implicitly + during installation of files by :command:`install` and + :command:`file(INSTALL)`. + +* The :variable:`CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable was added + which serves the same purpose during packaging as the + :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable serves during + installation (e.g. ``make install``). + +* A :variable:`CMAKE_JOB_POOLS` variable was added specify a value to use for + the :prop_gbl:`JOB_POOLS` property. This enables control over build + parallelism with command line configuration parameters when using the Ninja + generator. + +* The :manual:`cmake(1)` ``--open `` command line option can now + be used to open generated IDE projects like Visual Studio solutions + or Xcode projects. + +* The :generator:`CodeBlocks` extra generator learned to check a + :variable:`CMAKE_CODEBLOCKS_COMPILER_ID` variable for a custom + compiler identification value to place in the project file. + +* The :module:`CPackIFW` module gained new + :variable:`CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR` variable to control + if the target directory should not be deleted when uninstalling. + +* The :module:`CPackRPM` module learned to enable enforcing of execute + privileges on programs and shared libraries. + See :variable:`CPACK_RPM_INSTALL_WITH_EXEC` variable. + +* :manual:`cpack(1)` gained ``--trace`` and ``--trace-expand`` options. + +* The :command:`ctest_start` command no longer sets + :variable:`CTEST_RUN_CURRENT_SCRIPT` due to issues with scoping if it is + called from inside a function. Instead, it sets an internal variable in + CTest. However, setting :variable:`CTEST_RUN_CURRENT_SCRIPT` to 0 at the + global scope still prevents the script from being re-run at the end. + +* A :variable:`CMAKE_CUDA_SEPARABLE_COMPILATION` variable was added to + initialize the :prop_tgt:`CUDA_SEPARABLE_COMPILATION` target property + on targets when they are created. + +* The :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands + gained ``NETRC`` and ``NETRC_FILE`` options to specify use of a + ``.netrc`` file. + +* The :module:`ExternalProject` module gained ``NETRC`` and ``NETRC_FILE`` + options to specify use of a ``.netrc`` file. + +* The :variable:`CMAKE_NETRC` and :variable:`CMAKE_NETRC_FILE` variables + were added to specify use of a ``.netrc`` file by the + :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands and + the :module:`ExternalProject` module. + +* :command:`add_library` and :command:`add_executable` commands can now be + called without any sources and will not complain as long as sources will + be added later via :command:`target_sources`. + +* An explicit deprecation diagnostic was added for policies ``CMP0037`` + through ``CMP0054`` (``CMP0036`` and below were already deprecated). + The :manual:`cmake-policies(7)` manual explains that the OLD behaviors + of all policies are deprecated and that projects should port to the + NEW behaviors. + +* The :command:`doxygen_add_docs` function of the :module:`FindDoxygen` module + now supports a new ``DOXYGEN_VERBATIM_VARS`` list variable. Any + ``DOXYGEN_...`` variable contained in that list will bypass the automatic + quoting logic, leaving its contents untouched when transferring them to the + output Doxyfile. + +* :ref:`Visual Studio Generators` learned to support the ``COMPILE_LANGUAGE`` + :manual:`generator expression ` in + target-wide :prop_tgt:`COMPILE_DEFINITIONS`, + :prop_tgt:`INCLUDE_DIRECTORIES`, :prop_tgt:`COMPILE_OPTIONS`, and + :command:`file(GENERATE)`. + +* The :generator:`Xcode` generator learned to support the ``COMPILE_LANGUAGE`` + :manual:`generator expression ` in + target-wide :prop_tgt:`COMPILE_DEFINITIONS` and + :prop_tgt:`INCLUDE_DIRECTORIES`. It previously supported only + :prop_tgt:`COMPILE_OPTIONS` and :command:`file(GENERATE)`. + +* The :module:`ExternalProject` module learnt to substitute ```` + in comments, commands, working directory and byproducts. + +* A new :module:`FetchContent` module was added which supports populating + content at configure time using any of the download/update methods + supported by :command:`ExternalProject_Add`. This allows the content + to be used immediately during the configure stage, such as with + :command:`add_subdirectory`, etc. Hierarchical project structures are + well supported, allowing parent projects to override the content details + of child projects and ensuring content is not populated multiple times + throughout the whole project tree. + +* A :module:`FindIconv` module was added to locate iconv support. + +* The :module:`FindOpenGL` module now prefers GLVND libraries if available. + See policy :policy:`CMP0072`. + +* The :ref:`Makefile Generators` and the :generator:`Ninja` generator learned + to add compiler launcher tools along with the compiler for the ``Fortran`` + language (``C``, ``CXX``, and ``CUDA`` were supported previously). + See the :variable:`CMAKE__COMPILER_LAUNCHER` variable and + :prop_tgt:`_COMPILER_LAUNCHER` target property for details. + +* The :command:`target_compile_definitions` command learned to set the + :prop_tgt:`INTERFACE_COMPILE_DEFINITIONS` property on + :ref:`Imported Targets`. + +* The :command:`target_compile_features` command learned to set the + :prop_tgt:`INTERFACE_COMPILE_FEATURES` property on :ref:`Imported Targets`. + +* The :command:`target_compile_options` command learned to set the + :prop_tgt:`INTERFACE_COMPILE_OPTIONS` property on :ref:`Imported Targets`. + +* The :command:`target_include_directories` command learned to set the + :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` property on + :ref:`Imported Targets`. + +* The :command:`target_sources` command learned to set the + :prop_tgt:`INTERFACE_SOURCES` property on :ref:`Imported Targets`. + +* The :command:`target_link_libraries` command learned to set the + :prop_tgt:`INTERFACE_LINK_LIBRARIES` property on :ref:`Imported Targets`. + +* :ref:`Alias Targets` may now alias :ref:`Imported Targets` that are + created with the ``GLOBAL`` option to :command:`add_library`. + +* The :module:`GenerateExportHeader` module learned an optional + ``INCLUDE_GUARD_NAME`` parameter to change the name of the include guard + symbol written to the generated export header. + Additionally, it now adds a comment after the closing ``#endif`` on the + generated export header's include guard. + +* A :variable:`CMAKE_GENERATOR_INSTANCE` variable was introduced + to hold the selected instance of the generator's corresponding + native tools if multiple are available. This is used by the + :generator:`Visual Studio 15 2017` generator to hold the + selected instance of Visual Studio persistently. + +* Added new target-property :prop_tgt:`IMPORTED_GLOBAL` which + indicates if an :ref:`IMPORTED target ` is + globally visible. + It will be set automatically if such an imported target is + created with the ``GLOBAL`` flag. + +* Additionally, it is now also possible to promote a local imported + target to become globally visible by setting its + :prop_tgt:`IMPORTED_GLOBAL` property to `TRUE`. (However, this + promotion can only succeed if it is done from within the same + directory where the imported target was created in the first + place.) Setting it to `FALSE` is not supported! + +* The minimum deployment target set in the + :variable:`CMAKE_OSX_DEPLOYMENT_TARGET` variable used to be only + applied for macOS regardless of the selected SDK. It is now properly + set for the target platform selected by :variable:`CMAKE_OSX_SYSROOT`. + + If for example the sysroot variable specifies an iOS SDK then the + value in ``CMAKE_OSX_DEPLOYMENT_TARGET`` is interpreted as minimum + iOS version. + +* The ``KDevelop3`` generator has been removed. + +* The :prop_sf:`COMPILE_DEFINITIONS` source file property learned to support + :manual:`generator expressions `. + +* Source file learns new properties: + + * A :prop_sf:`COMPILE_OPTIONS` source file property was added to manage list + of options to pass to the compiler. + + * An :prop_sf:`INCLUDE_DIRECTORIES` source file property was added to specify + list of preprocessor include file search directories. + +* TI C/C++ compilers are now supported by the :generator:`Ninja` generator. + +* | The command add_jar from :module:`UseJava` module learns how to generate native + headers files using option -h of javac tool. + | This capability requires, at least, version 1.8 of Javac tool. + | Command create_javah will no longer be supported due to the + `suppression of javah tool `_ in the version 1.10 + of the JDK, so ``add_jar(GENERATE_NATIVE_HEADERS)`` must be used instead. + +* Source file properties :prop_sf:`VS_SHADER_DISABLE_OPTIMIZATIONS` and + :prop_sf:`VS_SHADER_ENABLE_DEBUG` have been added to specify more + details of ``.hlsl`` sources with :ref:`Visual Studio Generators`. + +* ``INTERFACE`` libraries may now have custom properties set on them if they + start with either an underscore (``_``) or a lowercase ASCII character. The + original intention was to only allow properties which made sense for + ``INTERFACE`` libraries, but it also blocked usage of custom properties. + +* The :command:`write_basic_package_version_file` understands a new + ``SameMinorVersion`` option for the ``COMPATIBILITY`` argument. + +* The :generator:`Xcode` generator behavior of generating one project + file per :command:`project()` command could now be controlled with the + :variable:`CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY` variable. + This could be useful to speed up the CMake generation step for + large projects and to work-around a bug in the ``ZERO_CHECK`` logic. diff --git a/Help/release/dev/CheckIncludeFile-required-libs.rst b/Help/release/dev/CheckIncludeFile-required-libs.rst deleted file mode 100644 index 14c43d1..0000000 --- a/Help/release/dev/CheckIncludeFile-required-libs.rst +++ /dev/null @@ -1,11 +0,0 @@ -CheckIncludeFile-required-libs ------------------------------- - -* The :module:`CheckIncludeFile` module ``check_include_file`` macro - learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. - -* The :module:`CheckIncludeFileCXX` module ``check_include_file_cxx`` macro - learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. - -* The :module:`CheckIncludeFiles` module ``check_include_files`` macro - learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. diff --git a/Help/release/dev/CheckIncludeFiles-language-CXX.rst b/Help/release/dev/CheckIncludeFiles-language-CXX.rst deleted file mode 100644 index 1631a5e..0000000 --- a/Help/release/dev/CheckIncludeFiles-language-CXX.rst +++ /dev/null @@ -1,6 +0,0 @@ -CheckIncludeFiles-language-CXX ------------------------------- - -* The :module:`CheckIncludeFiles` module :command:`CHECK_INCLUDE_FILES` - command gained a ``LANGUAGE`` option to specify whether to check using the - ``C`` or ``CXX`` compiler. diff --git a/Help/release/dev/CodeBlocks-custom-compiler-id.rst b/Help/release/dev/CodeBlocks-custom-compiler-id.rst deleted file mode 100644 index 893bd5c..0000000 --- a/Help/release/dev/CodeBlocks-custom-compiler-id.rst +++ /dev/null @@ -1,6 +0,0 @@ -CodeBlocks-custom-compiler-id ------------------------------ - -* The :generator:`CodeBlocks` extra generator learned to check a - :variable:`CMAKE_CODEBLOCKS_COMPILER_ID` variable for a custom - compiler identification value to place in the project file. diff --git a/Help/release/dev/ExternalProject-DOWNLOAD_DIR.rst b/Help/release/dev/ExternalProject-DOWNLOAD_DIR.rst deleted file mode 100644 index 823a14b..0000000 --- a/Help/release/dev/ExternalProject-DOWNLOAD_DIR.rst +++ /dev/null @@ -1,5 +0,0 @@ -ExternalProject ---------------- - -* The :module:`ExternalProject` module learnt to substitute ```` - in comments, commands, working directory and byproducts. diff --git a/Help/release/dev/FetchContent.rst b/Help/release/dev/FetchContent.rst deleted file mode 100644 index 3b12977..0000000 --- a/Help/release/dev/FetchContent.rst +++ /dev/null @@ -1,11 +0,0 @@ -FetchContent ------------- - -* A new :module:`FetchContent` module was added which supports populating - content at configure time using any of the download/update methods - supported by :command:`ExternalProject_Add`. This allows the content - to be used immediately during the configure stage, such as with - :command:`add_subdirectory`, etc. Hierarchical project structures are - well supported, allowing parent projects to override the content details - of child projects and ensuring content is not populated multiple times - throughout the whole project tree. diff --git a/Help/release/dev/FindIconv.rst b/Help/release/dev/FindIconv.rst deleted file mode 100644 index 98f2591..0000000 --- a/Help/release/dev/FindIconv.rst +++ /dev/null @@ -1,4 +0,0 @@ -FindIconv ---------- - -* A :module:`FindIconv` module was added to locate iconv support. diff --git a/Help/release/dev/FindOpenGL-glvnd-policy.rst b/Help/release/dev/FindOpenGL-glvnd-policy.rst deleted file mode 100644 index 3348acf..0000000 --- a/Help/release/dev/FindOpenGL-glvnd-policy.rst +++ /dev/null @@ -1,5 +0,0 @@ -FindOpenGL-glvnd-policy ------------------------ - -* The :module:`FindOpenGL` module now prefers GLVND libraries if available. - See policy :policy:`CMP0072`. diff --git a/Help/release/dev/GenerateExportHeader-include-guard.rst b/Help/release/dev/GenerateExportHeader-include-guard.rst deleted file mode 100644 index fa2be42..0000000 --- a/Help/release/dev/GenerateExportHeader-include-guard.rst +++ /dev/null @@ -1,8 +0,0 @@ -GenerateExportHeader-include-guard ----------------------------------- - -* The :module:`GenerateExportHeader` module learned an optional - ``INCLUDE_GUARD_NAME`` parameter to change the name of the include guard - symbol written to the generated export header. - Additionally, it now adds a comment after the closing ``#endif`` on the - generated export header's include guard. diff --git a/Help/release/dev/RemoveKDevelop3.rst b/Help/release/dev/RemoveKDevelop3.rst deleted file mode 100644 index 805ad26..0000000 --- a/Help/release/dev/RemoveKDevelop3.rst +++ /dev/null @@ -1,4 +0,0 @@ -RemoveKDevelop3 ---------------- - -* The ``KDevelop3`` generator has been removed. diff --git a/Help/release/dev/UseJava-add_jar-native-headers.rst b/Help/release/dev/UseJava-add_jar-native-headers.rst deleted file mode 100644 index 0370a67..0000000 --- a/Help/release/dev/UseJava-add_jar-native-headers.rst +++ /dev/null @@ -1,9 +0,0 @@ -UseJava-add_jar-native-headers ------------------------------- - -* | The command add_jar from :module:`UseJava` module learns how to generate native - headers files using option -h of javac tool. - | This capability requires, at least, version 1.8 of Javac tool. - | Command create_javah will no longer be supported due to the - `suppression of javah tool `_ in the version 1.10 - of the JDK, so ``add_jar(GENERATE_NATIVE_HEADERS)`` must be used instead. diff --git a/Help/release/dev/WriteBasicConfigVersionFile_SameMinorVersion.rst b/Help/release/dev/WriteBasicConfigVersionFile_SameMinorVersion.rst deleted file mode 100644 index 7f1c4d0..0000000 --- a/Help/release/dev/WriteBasicConfigVersionFile_SameMinorVersion.rst +++ /dev/null @@ -1,5 +0,0 @@ -WriteBasicConfigFile_SameMinorVersion -------------------------------------- - -* The :command:`write_basic_package_version_file` understands a new - ``SameMinorVersion`` option for the ``COMPATIBILITY`` argument. diff --git a/Help/release/dev/autogen-parallel.rst b/Help/release/dev/autogen-parallel.rst deleted file mode 100644 index 50ae9a6..0000000 --- a/Help/release/dev/autogen-parallel.rst +++ /dev/null @@ -1,10 +0,0 @@ -autogen-parallel ----------------- - -* When using :prop_tgt:`AUTOMOC` or :prop_tgt:`AUTOUIC`, CMake starts multiple - parallel ``moc`` or ``uic`` processes to reduce the build time. - The new :variable:`CMAKE_AUTOGEN_PARALLEL` variable and - :prop_tgt:`AUTOGEN_PARALLEL` target property allow to modify the number of - parallel ``moc`` or ``uic`` processes to start. - By default CMake starts a single ``moc`` or ``uic`` process for each physical - CPU on the host system. diff --git a/Help/release/dev/blas-lapack-flame.rst b/Help/release/dev/blas-lapack-flame.rst deleted file mode 100644 index fdc3a69..0000000 --- a/Help/release/dev/blas-lapack-flame.rst +++ /dev/null @@ -1,5 +0,0 @@ -blas-lapack-flame ------------------ - -* The :module:`FindBLAS` and :module:`FindLAPACK` modules learned to support - `FLAME `__ ``blis`` and ``libflame``. diff --git a/Help/release/dev/cache-newline.rst b/Help/release/dev/cache-newline.rst deleted file mode 100644 index 96900bb..0000000 --- a/Help/release/dev/cache-newline.rst +++ /dev/null @@ -1,7 +0,0 @@ -cache-newline -------------- - -* Variables containing newlines in their values now get truncated before the - newline when they are written to the cache file. In addition, a warning - comment is written to the cache file, and a warning message is displayed to - the user on the console. diff --git a/Help/release/dev/cmake-default-dir-install-permissions.rst b/Help/release/dev/cmake-default-dir-install-permissions.rst deleted file mode 100644 index 8325fda..0000000 --- a/Help/release/dev/cmake-default-dir-install-permissions.rst +++ /dev/null @@ -1,12 +0,0 @@ -cmake-default-dir-install-permissions -------------------------------------- - -* The :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable was added - to enable setting of default permissions for directories created implicitly - during installation of files by :command:`install` and - :command:`file(INSTALL)`. - -* The :variable:`CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable was added - which serves the same purpose during packaging as the - :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable serves during - installation (e.g. ``make install``). diff --git a/Help/release/dev/cmake-job-pool.rst b/Help/release/dev/cmake-job-pool.rst deleted file mode 100644 index 836d9c1..0000000 --- a/Help/release/dev/cmake-job-pool.rst +++ /dev/null @@ -1,7 +0,0 @@ -cmake-job-pool --------------- - -* A :variable:`CMAKE_JOB_POOLS` variable was added specify a value to use for - the :prop_gbl:`JOB_POOLS` property. This enables control over build - parallelism with command line configuration parameters when using the Ninja - generator. diff --git a/Help/release/dev/cmake-open.rst b/Help/release/dev/cmake-open.rst deleted file mode 100644 index a8f77ae..0000000 --- a/Help/release/dev/cmake-open.rst +++ /dev/null @@ -1,6 +0,0 @@ -cmake-open ----------- - -* The :manual:`cmake(1)` ``--open `` command line option can now - be used to open generated IDE projects like Visual Studio solutions - or Xcode projects. diff --git a/Help/release/dev/cpack-rpm-check-executable-flags.rst b/Help/release/dev/cpack-rpm-check-executable-flags.rst deleted file mode 100644 index 5221417..0000000 --- a/Help/release/dev/cpack-rpm-check-executable-flags.rst +++ /dev/null @@ -1,6 +0,0 @@ -cpack-rpm-check-executable-flags --------------------------------- - -* The :module:`CPackRPM` module learned to enable enforcing of execute - privileges on programs and shared libraries. - See :variable:`CPACK_RPM_INSTALL_WITH_EXEC` variable. diff --git a/Help/release/dev/cpack_trace.rst b/Help/release/dev/cpack_trace.rst deleted file mode 100644 index 1152385..0000000 --- a/Help/release/dev/cpack_trace.rst +++ /dev/null @@ -1,4 +0,0 @@ -cpack_trace ------------ - -* :manual:`cpack(1)` gained ``--trace`` and ``--trace-expand`` options. diff --git a/Help/release/dev/cpackifw-package-remove-target-dir.rst b/Help/release/dev/cpackifw-package-remove-target-dir.rst deleted file mode 100644 index 52dfc04..0000000 --- a/Help/release/dev/cpackifw-package-remove-target-dir.rst +++ /dev/null @@ -1,6 +0,0 @@ -cpackifw-package-remove-target-dir ----------------------------------- - -* The :module:`CPackIFW` module gained new - :variable:`CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR` variable to control - if the target directory should not be deleted when uninstalling. diff --git a/Help/release/dev/ctest_start_function_scope.rst b/Help/release/dev/ctest_start_function_scope.rst deleted file mode 100644 index f949c2b..0000000 --- a/Help/release/dev/ctest_start_function_scope.rst +++ /dev/null @@ -1,8 +0,0 @@ -ctest_start_function_scope --------------------------- - -* The :command:`ctest_start` command no longer sets - :variable:`CTEST_RUN_CURRENT_SCRIPT` due to issues with scoping if it is - called from inside a function. Instead, it sets an internal variable in - CTest. However, setting :variable:`CTEST_RUN_CURRENT_SCRIPT` to 0 at the - global scope still prevents the script from being re-run at the end. diff --git a/Help/release/dev/cuda-sep-comp-var.rst b/Help/release/dev/cuda-sep-comp-var.rst deleted file mode 100644 index 23536ef..0000000 --- a/Help/release/dev/cuda-sep-comp-var.rst +++ /dev/null @@ -1,6 +0,0 @@ -cuda-sep-comp-var ------------------ - -* A :variable:`CMAKE_CUDA_SEPARABLE_COMPILATION` variable was added to - initialize the :prop_tgt:`CUDA_SEPARABLE_COMPILATION` target property - on targets when they are created. diff --git a/Help/release/dev/curl_netrc_options.rst b/Help/release/dev/curl_netrc_options.rst deleted file mode 100644 index 850c9ce..0000000 --- a/Help/release/dev/curl_netrc_options.rst +++ /dev/null @@ -1,14 +0,0 @@ -curl_netrc_options ------------------- - -* The :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands - gained ``NETRC`` and ``NETRC_FILE`` options to specify use of a - ``.netrc`` file. - -* The :module:`ExternalProject` module gained ``NETRC`` and ``NETRC_FILE`` - options to specify use of a ``.netrc`` file. - -* The :variable:`CMAKE_NETRC` and :variable:`CMAKE_NETRC_FILE` variables - were added to specify use of a ``.netrc`` file by the - :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands and - the :module:`ExternalProject` module. diff --git a/Help/release/dev/defer-target-source-check.rst b/Help/release/dev/defer-target-source-check.rst deleted file mode 100644 index 65f5488..0000000 --- a/Help/release/dev/defer-target-source-check.rst +++ /dev/null @@ -1,6 +0,0 @@ -defer-target-source-check -------------------------- - -* :command:`add_library` and :command:`add_executable` commands can now be - called without any sources and will not complain as long as sources will - be added later via :command:`target_sources`. diff --git a/Help/release/dev/deprecate-policy-old.rst b/Help/release/dev/deprecate-policy-old.rst deleted file mode 100644 index bcfa70a..0000000 --- a/Help/release/dev/deprecate-policy-old.rst +++ /dev/null @@ -1,8 +0,0 @@ -deprecate-policy-old --------------------- - -* An explicit deprecation diagnostic was added for policies ``CMP0037`` - through ``CMP0054`` (``CMP0036`` and below were already deprecated). - The :manual:`cmake-policies(7)` manual explains that the OLD behaviors - of all policies are deprecated and that projects should port to the - NEW behaviors. diff --git a/Help/release/dev/doxygen-verbatim-vars.rst b/Help/release/dev/doxygen-verbatim-vars.rst deleted file mode 100644 index 761290e..0000000 --- a/Help/release/dev/doxygen-verbatim-vars.rst +++ /dev/null @@ -1,8 +0,0 @@ -FindDoxygen ------------ - -* The :command:`doxygen_add_docs` function of the :module:`FindDoxygen` module - now supports a new ``DOXYGEN_VERBATIM_VARS`` list variable. Any - ``DOXYGEN_...`` variable contained in that list will bypass the automatic - quoting logic, leaving its contents untouched when transferring them to the - output Doxyfile. diff --git a/Help/release/dev/extend-compile-language-genex.rst b/Help/release/dev/extend-compile-language-genex.rst deleted file mode 100644 index 7c09376..0000000 --- a/Help/release/dev/extend-compile-language-genex.rst +++ /dev/null @@ -1,14 +0,0 @@ -extend-compile-language-genex ------------------------------ - -* :ref:`Visual Studio Generators` learned to support the ``COMPILE_LANGUAGE`` - :manual:`generator expression ` in - target-wide :prop_tgt:`COMPILE_DEFINITIONS`, - :prop_tgt:`INCLUDE_DIRECTORIES`, :prop_tgt:`COMPILE_OPTIONS`, and - :command:`file(GENERATE)`. - -* The :generator:`Xcode` generator learned to support the ``COMPILE_LANGUAGE`` - :manual:`generator expression ` in - target-wide :prop_tgt:`COMPILE_DEFINITIONS` and - :prop_tgt:`INCLUDE_DIRECTORIES`. It previously supported only - :prop_tgt:`COMPILE_OPTIONS` and :command:`file(GENERATE)`. diff --git a/Help/release/dev/fortran-compiler-launcher.rst b/Help/release/dev/fortran-compiler-launcher.rst deleted file mode 100644 index ce254f1..0000000 --- a/Help/release/dev/fortran-compiler-launcher.rst +++ /dev/null @@ -1,8 +0,0 @@ -fortran-compiler-launcher -------------------------- - -* The :ref:`Makefile Generators` and the :generator:`Ninja` generator learned - to add compiler launcher tools along with the compiler for the ``Fortran`` - language (``C``, ``CXX``, and ``CUDA`` were supported previously). - See the :variable:`CMAKE__COMPILER_LAUNCHER` variable and - :prop_tgt:`_COMPILER_LAUNCHER` target property for details. diff --git a/Help/release/dev/generalize-importedtargets-behavior.rst b/Help/release/dev/generalize-importedtargets-behavior.rst deleted file mode 100644 index c6f4523..0000000 --- a/Help/release/dev/generalize-importedtargets-behavior.rst +++ /dev/null @@ -1,25 +0,0 @@ -generalize-importedtargets-behavior ------------------------------------ - -* The :command:`target_compile_definitions` command learned to set the - :prop_tgt:`INTERFACE_COMPILE_DEFINITIONS` property on - :ref:`Imported Targets`. - -* The :command:`target_compile_features` command learned to set the - :prop_tgt:`INTERFACE_COMPILE_FEATURES` property on :ref:`Imported Targets`. - -* The :command:`target_compile_options` command learned to set the - :prop_tgt:`INTERFACE_COMPILE_OPTIONS` property on :ref:`Imported Targets`. - -* The :command:`target_include_directories` command learned to set the - :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` property on - :ref:`Imported Targets`. - -* The :command:`target_sources` command learned to set the - :prop_tgt:`INTERFACE_SOURCES` property on :ref:`Imported Targets`. - -* The :command:`target_link_libraries` command learned to set the - :prop_tgt:`INTERFACE_LINK_LIBRARIES` property on :ref:`Imported Targets`. - -* :ref:`Alias Targets` may now alias :ref:`Imported Targets` that are - created with the ``GLOBAL`` option to :command:`add_library`. diff --git a/Help/release/dev/generator-instance.rst b/Help/release/dev/generator-instance.rst deleted file mode 100644 index a3ff658..0000000 --- a/Help/release/dev/generator-instance.rst +++ /dev/null @@ -1,8 +0,0 @@ -generator-instance ------------------- - -* A :variable:`CMAKE_GENERATOR_INSTANCE` variable was introduced - to hold the selected instance of the generator's corresponding - native tools if multiple are available. This is used by the - :generator:`Visual Studio 15 2017` generator to hold the - selected instance of Visual Studio persistently. diff --git a/Help/release/dev/imported-promotion.rst b/Help/release/dev/imported-promotion.rst deleted file mode 100644 index d184178..0000000 --- a/Help/release/dev/imported-promotion.rst +++ /dev/null @@ -1,15 +0,0 @@ -imported-promotion ------------------- - -* Added new target-property :prop_tgt:`IMPORTED_GLOBAL` which - indicates if an :ref:`IMPORTED target ` is - globally visible. - It will be set automatically if such an imported target is - created with the ``GLOBAL`` flag. - -* Additionally, it is now also possible to promote a local imported - target to become globally visible by setting its - :prop_tgt:`IMPORTED_GLOBAL` property to `TRUE`. (However, this - promotion can only succeed if it is done from within the same - directory where the imported target was created in the first - place.) Setting it to `FALSE` is not supported! diff --git a/Help/release/dev/iphone-deployment-target.rst b/Help/release/dev/iphone-deployment-target.rst deleted file mode 100644 index 7a20a6d..0000000 --- a/Help/release/dev/iphone-deployment-target.rst +++ /dev/null @@ -1,11 +0,0 @@ -iphone-deployment-target ------------------------- - -* The minimum deployment target set in the - :variable:`CMAKE_OSX_DEPLOYMENT_TARGET` variable used to be only - applied for macOS regardless of the selected SDK. It is now properly - set for the target platform selected by :variable:`CMAKE_OSX_SYSROOT`. - - If for example the sysroot variable specifies an iOS SDK then the - value in ``CMAKE_OSX_DEPLOYMENT_TARGET`` is interpreted as minimum - iOS version. diff --git a/Help/release/dev/src-COMPILE_DEFINITIONS-genex.rst b/Help/release/dev/src-COMPILE_DEFINITIONS-genex.rst deleted file mode 100644 index 892344f..0000000 --- a/Help/release/dev/src-COMPILE_DEFINITIONS-genex.rst +++ /dev/null @@ -1,5 +0,0 @@ -src-COMPILE_DEFINITIONS-genex ------------------------------ - -* The :prop_sf:`COMPILE_DEFINITIONS` source file property learned to support - :manual:`generator expressions `. diff --git a/Help/release/dev/src-new-properties-COMPILE_OPTIONS-and-INCLUDE_DIRECTORIES.rst b/Help/release/dev/src-new-properties-COMPILE_OPTIONS-and-INCLUDE_DIRECTORIES.rst deleted file mode 100644 index d06c109..0000000 --- a/Help/release/dev/src-new-properties-COMPILE_OPTIONS-and-INCLUDE_DIRECTORIES.rst +++ /dev/null @@ -1,10 +0,0 @@ -src-new-properties-COMPILE_OPTIONS-and-INCLUDE_DIRECTORIES ----------------------------------------------------------- - -* Source file learns new properties: - - * A :prop_sf:`COMPILE_OPTIONS` source file property was added to manage list - of options to pass to the compiler. - - * An :prop_sf:`INCLUDE_DIRECTORIES` source file property was added to specify - list of preprocessor include file search directories. diff --git a/Help/release/dev/ti-compiler-depfile-support.rst b/Help/release/dev/ti-compiler-depfile-support.rst deleted file mode 100644 index f870afd..0000000 --- a/Help/release/dev/ti-compiler-depfile-support.rst +++ /dev/null @@ -1,4 +0,0 @@ -ti-compiler-depfile-support ---------------------------- - -* TI C/C++ compilers are now supported by the :generator:`Ninja` generator. diff --git a/Help/release/dev/vs-hlsl-opt-dbg.rst b/Help/release/dev/vs-hlsl-opt-dbg.rst deleted file mode 100644 index 8f398ae..0000000 --- a/Help/release/dev/vs-hlsl-opt-dbg.rst +++ /dev/null @@ -1,6 +0,0 @@ -vs-hlsl-opt-dbg ---------------- - -* Source file properties :prop_sf:`VS_SHADER_DISABLE_OPTIMIZATIONS` and - :prop_sf:`VS_SHADER_ENABLE_DEBUG` have been added to specify more - details of ``.hlsl`` sources with :ref:`Visual Studio Generators`. diff --git a/Help/release/dev/whitelist-more-interface-properties.rst b/Help/release/dev/whitelist-more-interface-properties.rst deleted file mode 100644 index 793361c..0000000 --- a/Help/release/dev/whitelist-more-interface-properties.rst +++ /dev/null @@ -1,7 +0,0 @@ -whitelist-more-interface-properties ------------------------------------ - -* ``INTERFACE`` libraries may now have custom properties set on them if they - start with either an underscore (``_``) or a lowercase ASCII character. The - original intention was to only allow properties which made sense for - ``INTERFACE`` libraries, but it also blocked usage of custom properties. diff --git a/Help/release/dev/write-single-xcodeproj.rst b/Help/release/dev/write-single-xcodeproj.rst deleted file mode 100644 index d5e9fef..0000000 --- a/Help/release/dev/write-single-xcodeproj.rst +++ /dev/null @@ -1,8 +0,0 @@ -write-single-xcodeproj ----------------------- - -* The :generator:`Xcode` generator behavior of generating one project - file per :command:`project()` command could now be controlled with the - :variable:`CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY` variable. - This could be useful to speed up the CMake generation step for - large projects and to work-around a bug in the ``ZERO_CHECK`` logic. diff --git a/Help/release/index.rst b/Help/release/index.rst index 6472b51..552922e 100644 --- a/Help/release/index.rst +++ b/Help/release/index.rst @@ -15,6 +15,7 @@ Releases .. toctree:: :maxdepth: 1 + 3.11 <3.11> 3.10 <3.10> 3.9 <3.9> 3.8 <3.8> ----------------------------------------------------------------------- Summary of changes: Help/release/3.11.rst | 278 ++++++++++++++++++++ .../release/dev/CheckIncludeFile-required-libs.rst | 11 - .../release/dev/CheckIncludeFiles-language-CXX.rst | 6 - Help/release/dev/CodeBlocks-custom-compiler-id.rst | 6 - Help/release/dev/ExternalProject-DOWNLOAD_DIR.rst | 5 - Help/release/dev/FetchContent.rst | 11 - Help/release/dev/FindIconv.rst | 4 - Help/release/dev/FindOpenGL-glvnd-policy.rst | 5 - .../dev/GenerateExportHeader-include-guard.rst | 8 - Help/release/dev/RemoveKDevelop3.rst | 4 - .../release/dev/UseJava-add_jar-native-headers.rst | 9 - ...riteBasicConfigVersionFile_SameMinorVersion.rst | 5 - Help/release/dev/autogen-parallel.rst | 10 - Help/release/dev/blas-lapack-flame.rst | 5 - Help/release/dev/cache-newline.rst | 7 - .../dev/cmake-default-dir-install-permissions.rst | 12 - Help/release/dev/cmake-job-pool.rst | 7 - Help/release/dev/cmake-open.rst | 6 - .../dev/cpack-rpm-check-executable-flags.rst | 6 - Help/release/dev/cpack_trace.rst | 4 - .../dev/cpackifw-package-remove-target-dir.rst | 6 - Help/release/dev/ctest_start_function_scope.rst | 8 - Help/release/dev/cuda-sep-comp-var.rst | 6 - Help/release/dev/curl_netrc_options.rst | 14 - Help/release/dev/defer-target-source-check.rst | 6 - Help/release/dev/deprecate-policy-old.rst | 8 - Help/release/dev/doxygen-verbatim-vars.rst | 8 - Help/release/dev/extend-compile-language-genex.rst | 14 - Help/release/dev/fortran-compiler-launcher.rst | 8 - .../dev/generalize-importedtargets-behavior.rst | 25 -- Help/release/dev/generator-instance.rst | 8 - Help/release/dev/imported-promotion.rst | 15 -- Help/release/dev/iphone-deployment-target.rst | 11 - Help/release/dev/src-COMPILE_DEFINITIONS-genex.rst | 5 - ...ies-COMPILE_OPTIONS-and-INCLUDE_DIRECTORIES.rst | 10 - Help/release/dev/ti-compiler-depfile-support.rst | 4 - Help/release/dev/vs-hlsl-opt-dbg.rst | 6 - .../dev/whitelist-more-interface-properties.rst | 7 - Help/release/dev/write-single-xcodeproj.rst | 8 - Help/release/index.rst | 1 + 40 files changed, 279 insertions(+), 308 deletions(-) create mode 100644 Help/release/3.11.rst delete mode 100644 Help/release/dev/CheckIncludeFile-required-libs.rst delete mode 100644 Help/release/dev/CheckIncludeFiles-language-CXX.rst delete mode 100644 Help/release/dev/CodeBlocks-custom-compiler-id.rst delete mode 100644 Help/release/dev/ExternalProject-DOWNLOAD_DIR.rst delete mode 100644 Help/release/dev/FetchContent.rst delete mode 100644 Help/release/dev/FindIconv.rst delete mode 100644 Help/release/dev/FindOpenGL-glvnd-policy.rst delete mode 100644 Help/release/dev/GenerateExportHeader-include-guard.rst delete mode 100644 Help/release/dev/RemoveKDevelop3.rst delete mode 100644 Help/release/dev/UseJava-add_jar-native-headers.rst delete mode 100644 Help/release/dev/WriteBasicConfigVersionFile_SameMinorVersion.rst delete mode 100644 Help/release/dev/autogen-parallel.rst delete mode 100644 Help/release/dev/blas-lapack-flame.rst delete mode 100644 Help/release/dev/cache-newline.rst delete mode 100644 Help/release/dev/cmake-default-dir-install-permissions.rst delete mode 100644 Help/release/dev/cmake-job-pool.rst delete mode 100644 Help/release/dev/cmake-open.rst delete mode 100644 Help/release/dev/cpack-rpm-check-executable-flags.rst delete mode 100644 Help/release/dev/cpack_trace.rst delete mode 100644 Help/release/dev/cpackifw-package-remove-target-dir.rst delete mode 100644 Help/release/dev/ctest_start_function_scope.rst delete mode 100644 Help/release/dev/cuda-sep-comp-var.rst delete mode 100644 Help/release/dev/curl_netrc_options.rst delete mode 100644 Help/release/dev/defer-target-source-check.rst delete mode 100644 Help/release/dev/deprecate-policy-old.rst delete mode 100644 Help/release/dev/doxygen-verbatim-vars.rst delete mode 100644 Help/release/dev/extend-compile-language-genex.rst delete mode 100644 Help/release/dev/fortran-compiler-launcher.rst delete mode 100644 Help/release/dev/generalize-importedtargets-behavior.rst delete mode 100644 Help/release/dev/generator-instance.rst delete mode 100644 Help/release/dev/imported-promotion.rst delete mode 100644 Help/release/dev/iphone-deployment-target.rst delete mode 100644 Help/release/dev/src-COMPILE_DEFINITIONS-genex.rst delete mode 100644 Help/release/dev/src-new-properties-COMPILE_OPTIONS-and-INCLUDE_DIRECTORIES.rst delete mode 100644 Help/release/dev/ti-compiler-depfile-support.rst delete mode 100644 Help/release/dev/vs-hlsl-opt-dbg.rst delete mode 100644 Help/release/dev/whitelist-more-interface-properties.rst delete mode 100644 Help/release/dev/write-single-xcodeproj.rst hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 5 11:45:03 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 5 Feb 2018 11:45:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1040-gf211193 Message-ID: <20180205164503.18C59103140@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via f211193afee5ff478d61ff0678e13b6180c481a5 (commit) via 363770f5f6017de82e5372d7dbe03a66edc2c995 (commit) via 51b287c40cd80a0c27caa3f99cd8d729c20cc3e5 (commit) via e29df9924a358b2021bdd2c3bd75cc69a1101bdf (commit) from 9c1efb614dee294cb3a1077e8a232573f309c605 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f211193afee5ff478d61ff0678e13b6180c481a5 commit f211193afee5ff478d61ff0678e13b6180c481a5 Author: Brad King AuthorDate: Mon Feb 5 11:40:43 2018 -0500 Commit: Brad King CommitDate: Mon Feb 5 11:40:43 2018 -0500 Begin post-3.11 development diff --git a/Help/release/dev/0-sample-topic.rst b/Help/release/dev/0-sample-topic.rst new file mode 100644 index 0000000..e4cc01e --- /dev/null +++ b/Help/release/dev/0-sample-topic.rst @@ -0,0 +1,7 @@ +0-sample-topic +-------------- + +* This is a sample release note for the change in a topic. + Developers should add similar notes for each topic branch + making a noteworthy change. Each document should be named + and titled to match the topic name to avoid merge conflicts. diff --git a/Help/release/index.rst b/Help/release/index.rst index 7375faf..552922e 100644 --- a/Help/release/index.rst +++ b/Help/release/index.rst @@ -7,6 +7,8 @@ CMake Release Notes This file should include the adjacent "dev.txt" file in development versions but not in release versions. +.. include:: dev.txt + Releases ======== diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 8fd129a..d422d29 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 0) -set(CMake_VERSION_RC 1) +set(CMake_VERSION_PATCH 20180205) +#set(CMake_VERSION_RC 1) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=363770f5f6017de82e5372d7dbe03a66edc2c995 commit 363770f5f6017de82e5372d7dbe03a66edc2c995 Merge: 9c1efb6 51b287c Author: Brad King AuthorDate: Mon Feb 5 11:39:26 2018 -0500 Commit: Brad King CommitDate: Mon Feb 5 11:39:26 2018 -0500 Merge branch 'release-3.11' ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- Utilities/Release/upload_release.cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 5 11:45:05 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 5 Feb 2018 11:45:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.10.2-1038-g51b287c Message-ID: <20180205164505.DE3F5103320@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, release has been updated via 51b287c40cd80a0c27caa3f99cd8d729c20cc3e5 (commit) via e29df9924a358b2021bdd2c3bd75cc69a1101bdf (commit) via 9c1efb614dee294cb3a1077e8a232573f309c605 (commit) via acbbccf70458adaf5cb215a1845a115ded520f20 (commit) via 22ac06edb84fe73751c21ea4a3d9810434a85753 (commit) via a40768b5af2ace2028e70efc04f65f4f8fd113f0 (commit) via 04167e39c329e8e1cfb5bab12b6492af8bcd4bdd (commit) via fba5980fa6d94c101e8729414bb4f787fb310b68 (commit) via 213ecf05d681522dfa6ca8396281494a2c7b7b9a (commit) via e559b45ff86cfe7d6a82348bb8b97d9d77fa50f8 (commit) via 4d9ccd0abd7aee723d33e78d040375e92336ca3b (commit) via 30ee1dc7b0bf0b6deb5627617e275d60a3e7d757 (commit) via b95eda9b11ff2ba8baccf6208bb43c4c3cfa3479 (commit) via b4a06e2cf7129155ed9260fd71eac5a2557c297f (commit) via c4ffbb79c0b52f6ed80304493730cfc3ebb15069 (commit) via 09d7ed20dfd534b467a21bf341c2073ecc66a5b2 (commit) via b12069f7b0dc0a5e9b9031dcae2cca1b1ff7281d (commit) via bc3697fa51e087953ec0e40a0a865e87c896e3a8 (commit) via 457bcbd4f9e4972ed55aebf642770b79fa5e8a58 (commit) via 62c5fc80b1a82d677b66134e00cec44ab2e6a466 (commit) via 52ed76e46e6c295c4e6bfafd86f5b16f67606581 (commit) via d280327713a8bfd96223bc653316d987f5b9218b (commit) via a8ee7406a74cbc4d5e341ad33210b8eeb99af48f (commit) via a53697acc76c8fa452cf083ca9f02b3f1cfd7711 (commit) via 6d148d6d53913710408a8a1006dd93998c44260a (commit) via df1693bdfc7bc0afa26b2f8673006186a822c735 (commit) via 20676cbaca92d1b3ad486518e34e99aef75ebe11 (commit) via 8285aa9e4e2df09b35f4faa930da6577979d4d2a (commit) via be46f9fb6e9fc0b33198ccf5396e0188e56940e4 (commit) via 854feacc60c5d1dcf53652a764841e1d9d602ac3 (commit) via 5a16e762e21e22e7a212acc7e2bc7bd027d66166 (commit) via efe22af20e0613308df935a05256d55fc420e42b (commit) via f8ca0ab3ac858730874176bf332808061fe179c6 (commit) via 3ffc9b99bb20b56d5dc232fee8c988aa34474a2f (commit) via f04cc45850bf0eab1abe75680e3f6794830d0003 (commit) via 8cb92c25d7fc60581d9be6af7c145ecd2ad3f84e (commit) via 70695e72a665e0491be056181464f261e836a844 (commit) via b844a414c7c0e7b32a43e14b71f30088ec473f46 (commit) via 315b0927e951019b43714f654f7b039b32ae14a9 (commit) via ce130c7a6bce84a9af3859c6f58a8d6c9f16afc7 (commit) via 0def36043f339210d117825a7149fc58c2907cae (commit) via 9ecbec5e01951e288a405deaba39a41a133fda0a (commit) via 767553674ed025351c8ce6fd68511a6d28cf0c95 (commit) via 901c4a1e05ae7d01dcf4208dfd1b11e1534d4895 (commit) via 88ed556d99068a5e1bf303e69a156a25fb985bcf (commit) via 14a13d30eefd657e56022d30d8976cfdfaf9ab06 (commit) via f2b8d67f1946bc59e95d1184f7ad64ac16193466 (commit) via 6dfd0f929416dbdf50ca44ebe19418e8a45782ad (commit) via f9235fd474682ba95231de0bc7285a39e35db83f (commit) via c0e7a137025789c41349ae0935609e7bd083587a (commit) via a0c04e71eb2eb4b06c7a4fcfd9be21f9ac6a38ad (commit) via 653b894683abe63233cb8679b34ea39d9017e317 (commit) via e2db8531f1ff1f0ea798023b58517f64a18c995a (commit) via 4499cc8bb65e217e1cb2959452ed391af82e757b (commit) via a7ee918f197300ffed8f4ae0fafe6c3c2f4ea1b6 (commit) via 3fd01be56bfa0215bcabbe27f1690654c3755b43 (commit) via 174693dafe2dcc7dad6394ed051791da39ff05b1 (commit) via 0a37b515affb386472758e43d53efa983dbe0701 (commit) via efa5a26d021cf5476bebff54dd28f115c962ae9b (commit) via 063684503b5b5a696559b3c3cea2f1d3cc8dee29 (commit) via a50828cc519d57016acc86074a446181532974ce (commit) via f5b5a72096236cbcac46bbcf57c6e39a1909bb90 (commit) via c7cee1a11e1c18b48d026dfae9fc8a9ddcfa238f (commit) via aed227fd5ae6775a5bbdd54540666a70163c9fcb (commit) via 9e341f05b033e0a4835a43cf6c68b922dfd11f6e (commit) via 365e02e73ea9e6177ff5fb6de73e4187eded8afc (commit) via e7c0298d5c53471ffd21dac695ce5795affddfe8 (commit) via 8cddc89926edaf9d87c1b763749af337d30fed5f (commit) via 4443adc1c0450a49a4413669a8ade5487f9f3026 (commit) via 45f6aa3235691dbbcedae082c2513cdf13ec2fd1 (commit) via fa583869f7e75cdc4c7499f0dbfab2cdac5061bd (commit) via 1fe66c462b3232a6f549b868d2f9ccd73c8bd1d0 (commit) via 142938225e572d846c956f9b1f54d24a960379ab (commit) via ed91b81c0d75e7dc84f7c1dc53c98732d56a0879 (commit) via eddea58148223c545ad53523161e31fa544dc3c2 (commit) via e6267df94efb3890194dde4f6fb7c27e2728bad0 (commit) via bb352337850ac2b47819aa1e25398133e916f10f (commit) via 9f74aaeb7d6649241c4a478410e87d092c462960 (commit) via f83330ed6cefc8ff6332db6bc9aca30b8c12c3e9 (commit) via c6312835d5813fadf7dc818878d6c824bfece44b (commit) via 7771657cd0e23364b55be4ad343f9291bb10ea98 (commit) via 79f22e84089e3f7a29cfea3275af6fafc5d3c091 (commit) via 99e473ca83f08f442be08c27d256ed0699f94c5f (commit) via fc57afde05afeb95fc6f6205c996e3c9b1bc72f3 (commit) via 20ca9d8f6f4ddd7b56829425950332d972efef11 (commit) via 92cd3d06772ada13935790d66927ab4663c7d628 (commit) via 18153217e27d2cf560d874313557ec9fa2bcffdb (commit) via a271286f417731916cd60c546665ec030bc5b2c7 (commit) via 53f77fad2f305d84b7cc7a15ebee6fa0afbd237e (commit) via e07cf68f46a8383466e7ef4cab1e33e035525c71 (commit) via c3d576f5d685f2703ebed0dd0e76209b0fd6e6cf (commit) via 4a5727d375e893f147b46e2a58aea647a9afddcf (commit) via 1d65f688345d3a7993506a334504b260e246906b (commit) via b07b1aa416ecd90110937ee3cd84b9f9c8be5e8d (commit) via 13347740e2fe00ad51493c89087f1bbbc35b224c (commit) via 74092d92bffa26b0e17da638dabcbc462c3f407a (commit) via a24dbba3482d5c5b8542c56047ec78dd40215a06 (commit) via 0e793e7bedf78fa639f1cf48900a4932dbfd48de (commit) via f343106b19eec139764dc965f9110f503aafbf9c (commit) via b50fb70be8eb629083eb2ad2e0b413793bbdde06 (commit) via c85bb007df37aad9f20355cdf4d7ca9af562cb20 (commit) via 9a52b80d066f6c782a28878d3b28ae458f9331b3 (commit) via d71be346a4502cb444edc59227675eeb8f41a51b (commit) via 234a069de3e365c20bc6ef42e83520a7e2547f95 (commit) via 8b79107add5f27e06559ea6566b2c950857eae1e (commit) via 7c30a3a3c321575ee8f3bd82b9e617456c2a7396 (commit) via bb33bb657efef38f98a780e5eb2341e34b4b9b27 (commit) via 3ec5f7c1a2fbfec42be1012210471f6b532e93a3 (commit) via 1ad58d30321757327675451ba6d095b5204b999c (commit) via fa3ac83af0edf958d26b246109db6e3d6d128d70 (commit) via d1d8daf15adfc6fc23cabbf37e230d0445b70405 (commit) via 499e36d932910186e1c1db1cc0d18fe93e47ee55 (commit) via 5c724c4ca83059b13e6fd64dad9ee88f59162166 (commit) via aaf3c5b32c9e75fb738fcc00228551f678db26d5 (commit) via 721647c8e58eb1f584414d008be8e1451895bcff (commit) via 76f5a87cf1b653e254d26aff0f7fcf2115fb5e24 (commit) via 03050c5689f5b6bd91b378316a919018629133fc (commit) via 312512e2baa608e0eaaaa893114f07e40044f8b2 (commit) via e46ca12acf7b166eb865d4818d18a769219368a5 (commit) via 5189c1e322381c65aa849e3b52d9b1e3b3541979 (commit) via 99ba188c23f70928d973cecca4f9be2a49ce4436 (commit) via c4dc6485eb3bd51fdc88eee03218b9755c373282 (commit) via e342e4100a597dc8a7f94c55409e619a4848754f (commit) via cd8e31a1bf7429514078c2923a1a9580113f9d4f (commit) via af9e654045f11028e50dac4781e297834129a749 (commit) via e9c8ea75575afdb4e87b262641ee4071ef42b4c6 (commit) via f8e89468150ba6a3010324805527dd5e6d9cd8bc (commit) via 7a75657084c518a39b192c7ee1568588944677af (commit) via 239a3ef8215416d3fa7d7c1b0bf812b17b3437df (commit) via 9b1a3d244b60ae231a161192caf4fe9b40efbdc3 (commit) via b886b46ccb37a273e63f472a767b58aea50af724 (commit) via 044831117955dfa33ed4e0c7799ea3f37258b149 (commit) via c3b80e86640630036e855775692268531e94f3c1 (commit) via 05e9cdb81ecddba496f21d0c9e35e9536261337f (commit) via 1a9da3c055d84479dc011ff66ecf887d92fadf23 (commit) via 56fd8b3c7272e3d57333a86b2214f8673b9d557a (commit) via 2de6aa846ffbfb8fe258828fc96121a514a31284 (commit) via 52573b32397caed753ac9e5318d77786a1ff801e (commit) via 06d607271ed73c2540647c6d257f8deacd86ecae (commit) via 551bd0b3e8ccd8c5cd8fff15a940797b8677a310 (commit) via 9198e6a27b02a39ae5b7a96839e54da6588c3a3f (commit) via 2d64f9f08dab62a3aa2215e0ed8f3dd8bcdc1fbf (commit) via 1345bdf1b6520a2f0c9891ad3c6fee00a6a5f18d (commit) via e6a80ccfc440ac8dd5e9e5405744c2423560fc02 (commit) via 93bc5848e75101477215c3131b7b7ff2b4eb7053 (commit) via 25243014e5367108604e03682b04dd5ec1e93673 (commit) via b1ae9aaf790757d3fa43cccbb0e935171c191fff (commit) via f4082b0e9b1ce139a29fba5951cec068862fe28b (commit) via ff62b00522d1ddaeb88be241ab4a022f935b5c00 (commit) via 695951bc46fa4bc4eaf686c4ee6dce24c579bc45 (commit) via 9c52b587b6dfa54266bcebbe7e111d7dde437a75 (commit) via ce863c17d08e6631c4a194fc3f9fb3f63ea65d11 (commit) via 98628de812c4724fb2da199abb5fe08eeb5a1a64 (commit) via 3b588ac58256540e6dc974cf2d1a122c95f19171 (commit) via cd3e1600224a51cbc56b0d546a6f8486f1cf8d31 (commit) via 3073bd1f3deecaaf090202075382e372a3b3656a (commit) via 78b1c2e09ee5005d75e31c68c1c7b112e4b36d90 (commit) via 3f935e690a337a7a692c30d4d14082e08d1bed7c (commit) via 2c6f5baaa7e101cdd3e5769a3fd8d49d0501b8e6 (commit) via da1a500ceee74e61c7f1e082618911bb5f98ece6 (commit) via 5cbf3653ff25a42577e9473b447a4b9afb128875 (commit) via 4829ea239aa2b45170ce841e14d8e1ec076240ee (commit) via b058d92b33ab37a56ac4dcf2f1e49aec89f554e3 (commit) via 5d13fa1010223a65e64f5270db06ada9c6a0ae0d (commit) via de9c3d796491daf6276fe6df25b3ef5d85501ff0 (commit) via 63f263b27fa9b9c63f038ff108118726bc9c5c64 (commit) via c81ace7ab7e5e325fef9339ed3ea05abbd0f8be4 (commit) via 2a9614039ed7b9f9c5d28922131aef51c530d70a (commit) via a629c338a1a7a09f827a185af4f8586fd8dd570d (commit) via 1f35d3f20a0d7929fb8efc19b6bdc546c16a2c71 (commit) via 856dc73e024672e650bb47a9b4acd898ad54008e (commit) via 6ab316c98da3cb928c83a0b9fdda98c99e749eca (commit) via e720a34399f6613bf89321977646871d15c91a1f (commit) via c2bed75ebed14345cd1cf5f1e4c75eac6e8cb3ff (commit) via 5c3c70201d225359e235e53132788e6f75c2661b (commit) via 17c3e418b033488991a42267007463f71f1b3605 (commit) via eae771844031e2028f050168ef11beb11c6e3aff (commit) via 11c4ea7f110b267d057c432395642f713a52758d (commit) via f3e9beddfb357b5836d01c04655b6508fd52324c (commit) via ab1be0891333e1d623c7d561879b2ce26368de83 (commit) via 51caac6958c9adb31dae4c2a61bd0bfce9e45a23 (commit) via 73bb781df05e46a93e878535996f4753b8e5e06c (commit) via b4e6911bf51c05001c1b3cbcc04587afa6ba4577 (commit) via 6db7b35236b81a73047a47c0f70f8befbf2ca51f (commit) via b58d48c15f9ee18015960e2eed7410f5166c855f (commit) via f4a26c748b5ea2cafecdf5490b744a2b167c01ae (commit) via 3c08d2075fae7ef62838f18e1af5d398c6401572 (commit) via 2557cad5ec5084f86d4bb56c82939a49fc9d3071 (commit) via ffa6f8752b6928190c61ccb32f9c2776de422ad2 (commit) via 927c6035745bb732712463af8e3d6619c5b6b1f4 (commit) via e68a269cd2d3f402271cb3ed930a4d11551c1e76 (commit) via a7d344be712cddd906f066809896c208ae99702c (commit) via be2f0509037880a94f487867bee088a231054f4b (commit) via 33802b316855b69f2a542574caa4dd2fbe569b11 (commit) via c89c87c9be3917c1ab26253b050eafca1a254cb0 (commit) via 60febda45541c65e0ca7fb4535c629c77c17e13a (commit) via ff91a5d54b5458eaebab6be814624925a02eccd7 (commit) via a1d491ca2721d234eb10553a9e336f51752aa2a0 (commit) via 7c525c84166d2d45933fb9907682d4f834392520 (commit) via c2aec68333e2d75e41c1b2bd7897e0563dac3e11 (commit) via cbe7314bb0f0ce5dbc7a5a9d71f3688c810cf731 (commit) via c1ea96d04c90ac174989b3771ff90c001189036b (commit) via 84e2a7e58a897f9003f02afb2b0feb9c5923a27f (commit) via d0b00a848f45361fd5e2646938a57fcdf834d38d (commit) via 1c681f92004effec738545dce53d4a52329b7675 (commit) via bffdc2e2e1697ffc0ad1fa1f16e9f1092e6a6489 (commit) via 2868019b2f93f2eb50de901d8a58ceb9b5790ae5 (commit) via b1fd31382654564e01eb0224bd18df81f61cb82f (commit) via 657898ecad4fecff001964b3f0e27e77b5f9ffcd (commit) via 9cfa213aa62e8a7b73fd0ba63e6e80ba86082e52 (commit) via 79908ae4aec7d02d900e53b21ef195b7bfc94725 (commit) via 45ee4979fb7c92502f6015ca3d93128f7c921b51 (commit) via 6f4b661383fccc5f2f5a936499ba11cf2000b535 (commit) via a008578deebfa71b38786281450e3d9cf84f5847 (commit) via 488baaf0d6144cd7cedfbbd3bb6eadcc72257fc4 (commit) via a6e9b9c9e4460f77fc173a3610b167e15f66f4ec (commit) via c10119df62cf212f9274c6a5c0af609bae4f1b03 (commit) via af30899cb4431d6712fea5ac09215a92b3f16ccb (commit) via 8b49fc3c6f46f6606614de5705d6ca6fbf16b886 (commit) via e8b57c2283f731f42b4c7eece0531dab67df3d41 (commit) via 2489e5af5b66aee1681b74b7b744072c5fb8046f (commit) via c9f66540591303d8ba9bce83865059b79bdc6e01 (commit) via b4dfe1d8163055f9f40a4c18f5eccccb28f06559 (commit) via 7accd7ebe2b6e9999e427c23a81c6e6811033a1d (commit) via 47b8a421b000fa2a6428e160b2937488344b6b56 (commit) via 60216e158fe2f9e68d1dff6676852c45e9d1ffc2 (commit) via 27cbbf0ed047ef4adbe33b3a0bb21812577660b7 (commit) via c42b377c298af131ca4dbc120538aec1a56ff4be (commit) via a9c483071eb8a5b5da38726f42be98a2392f7a7f (commit) via 2bd232b536b59824053bbf3d6a2ac120f493090f (commit) via 675adaa4a4c5348049324d8cabe0cdde7a3d0ef0 (commit) via 7b78242d602c5ffa1831478ef624bc41642ca1ff (commit) via cfd338728bcc11a192378748940620c780d88668 (commit) via 46abfedb8395f7e72281bd8eb7bd4f118c311140 (commit) via 506fda1cf026a88378589009b62ca8bf633c5197 (commit) via c2f79c98677d43fb8686f9e4309acddfae8f3dfd (commit) via e1f0518de09a54065459a728993563d84fb85a6a (commit) via eae0a85d84fe12f058f8542aa4d05cfdf5c61cb1 (commit) via 46ad7215979cd60c00589f6f0abdcff2856069e8 (commit) via af56d7f5999a1ead7916fa6e65ed8db88b1f5ab7 (commit) via c4d75459dbea2a914b167f09cfa42b0b482aeecd (commit) via 4cf08c96f8e6cba3af3b73d0e7317e2d1547a4c0 (commit) via 0795d25b78d5b7682aea091d260eaf1bca7afd0a (commit) via dcc606ad47d61ab37e7ab520aafabc9731f088f1 (commit) via 1ab4d186a7d5a3481d2f0978aaebd6bf0bc7f891 (commit) via 07e1a74361b89c1080db1bca904dcd82e955777d (commit) via ae7c7b6db5d6765768e95485b2db1a1b18cfbded (commit) via 8c450b316fdcc210df913e3824d51a8f426b6d07 (commit) via be304fb8c0af5e3d9e32754f3a5b711a8d63cbda (commit) via 66335350a35e37b347034e81b1d4c5f9218f22d5 (commit) via 2d5fdc25df8c8b9f10282b8cbc07cf86f2e0c9b8 (commit) via 30fcb925762280b3a904f8f2598449927414ebd6 (commit) via fe8d74cc6022b814f08486df3b575c1dbe875f18 (commit) via 3f4924aa60889dd2a34a2a1ba6877528779867d0 (commit) via 37a3738b1a67c5c2c98847e1d1856e40dc98363f (commit) via 45f287212998c7ed8f928ef3b95f44acbaedc83f (commit) via 8f1666b207ff2ea69b822eaf79b25192029db846 (commit) via b2369ad4099fbd96ff66fa4a917fcc843ee3c55f (commit) via 969c1f94aed7abbc71dc73b442817fe86a43b4df (commit) via f74c25802de11e4e4578b1c9473f99d106491da8 (commit) via 6c3f374e99cccc65024dc5a94a410fd46cbad16d (commit) via 513eb014eb691373dc06b76a441f45074ec9afbf (commit) via d91b2d9158cbe5d65bfcc8f7512503d7f226ad91 (commit) via 5e9512a358497924af7026fa0d612368405596c2 (commit) via d6dfde3cd35b4e1747f5658b585022961aa800b3 (commit) via b0716fbcc5be83ecd082e8b6d101f1137d6f16f8 (commit) via a91fde135d8a9fb03a28d0760f0c052a26350b91 (commit) via ddc4f9a3c05fa24240fde1ba6c0ab28b7d2e91ea (commit) via d08f3f551fa94b13a1d43338eaed68bcecb95cff (commit) via 1be22978e0ec3766c457216af348c8dca4d7cca2 (commit) via e9237334a6beab7090cc702ca8d4e0914f5bfe07 (commit) via b5e21d7d2ed3168c9efcbc25c67d2c330d76d4d0 (commit) via fcebff75f912f50bdc7fd30f4185141255ba4b1f (commit) via 3dd2edf4ab94f5044b73b20151592c8e94a5160a (commit) via 5238e6db70d275e42048479b737781fc97d82ea1 (commit) via c13b68e61f3e89f9f52834c46a65fc7192ceb318 (commit) via 4d6b09037d8c640763504ad1378d42b12ef975aa (commit) via 05da65bc22dee788576504cdd203e5fdd5f9d633 (commit) via dd945345715b90b2a1db769865c79d86a1dfad06 (commit) via da3a329a0642818070f276c9a40c94b54792e2b8 (commit) via 6297d6c7fd6f80dafe17c0aefeeb0439432aa4b0 (commit) via d56deff7d127b030739bd0034609d0046121d8cd (commit) via b044f69a413123f15a05034c00a8e3763764a1e5 (commit) via b1e9f67137733bc109d355450fcd06edda4784c5 (commit) via 433a2d495a2481c63b82c11a30f7c642d6abe63f (commit) via 89ec1aacd781dcaf4aa0c6899bface518ac6afca (commit) via e44c5828d368c81a1f478bf9c12ad4ff1bb87772 (commit) via e40541339ae8a780bc410f0ef8b22d01e594c1ba (commit) via ce629c5ddeb7d4a87ac287c293fb164099812ca2 (commit) via ae89a6e110badd54c1aa8a2957f15e260224c7df (commit) via 1906dd3e3d63b18784e551cb3c21b02a073dab34 (commit) via 2cd2dd9cdefa283cdf42008c9b8e6116b6f78ec3 (commit) via 947d6de8339d13422aa2c0b018b125f07c1003d3 (commit) via 847110e6faeffb85d12a1c145b3846263ee35bdc (commit) via e2edc9280c86d99e39412ec19be23dd366c70695 (commit) via 5fbfa18fadf945963687cd95627c1bc62b68948a (commit) via bc88329e5ba7b1a14538f23f4fa223ac8d6d5895 (commit) via efd279cdfb64f1ca9ab2dd55c55e836634431198 (commit) via 8a53242df98be391070d7a34590e127c28e2e985 (commit) via 6e921648d292c81f2d0e62803f45a4f79aa892ca (commit) via 89d12746306571a323549ad0f8d11284999053d5 (commit) via b9bada655ec1a68d65a2536f300c9d6f9cd7aabc (commit) via 81868e6badbb36947a6e89b0e97f2f0526d59a67 (commit) via 1f4d7a0715dd33100c61bd51d0504840923300f6 (commit) via 48f7e2d30000dc57c31d3e3ab81077950704a587 (commit) via f09fda97d88094d56d0f8f40fa361b920feccd46 (commit) via 7e0eb77f2f0da764ba9d8a4045351bd7799e101d (commit) via 61ab5a8ef451484d3014118ed193eeba83bb22a4 (commit) via 4c199a4c28a0647c0277c7009b5f6e81b26333bb (commit) via 2567e5df69c1a4276c5e51dfa6c49482b24b1545 (commit) via 1138feb38f4e6d259ded23312b7f0f2184ac816a (commit) via 4ffb0f8b45a5abd51a04a399461c9096019a87f8 (commit) via 118815f095e9737dc05806a4d6734a3b9de37e39 (commit) via fab1b432eb1207513bee57039ecb21d95f880f89 (commit) via 6c5d3989f71d9a1952a508404e858965fd320010 (commit) via f7f34a46e674fcf0326b0dbbc6dbb35c9e3c022f (commit) via edebf6f31ad33d4b2d69eb7ccaf2de1e94abe5fb (commit) via f4a314394039708e772374e54a31959f2de14825 (commit) via a3bba2a5ad30287a22f2a700de6a60f0869b8dac (commit) via 11615b297fcb34fe1e51f74a66e72cc70efdf703 (commit) via 2c089d80de3945e4f08f13557d59e04cbc942a60 (commit) via e0560c1111fc8afb90df08d20ec11e4178cf00be (commit) via ff41a4b817749be1e51ebb6ab15bab6f0e488139 (commit) via 0a87dbf56826b5e2c12dec86c1c4b24df2ccce83 (commit) via 91a1446d212104ac40c27559723295f1c5ff2629 (commit) via d88451568dae61422d9d1b5796ad450ad28e0eb6 (commit) via bc7fd08f23acb32146e5caf9d5461ee64d563566 (commit) via 2c1ecab64da6a8c7738770316ddf8a72bbf8eb1f (commit) via 1642eb7749622ffb50b8279355b42f4262cde000 (commit) via 3ab7bf82852a43871edd6b2d026f35caeeb71307 (commit) via 64b624f118ac4f86e4a1b799b3d2130b5065847b (commit) via 1e6d1dd358dc7aace3a1effa4f1646e1272be3dc (commit) via 011f2de484c0be3a4c21cca5982c0b7452a32e30 (commit) via 8111a6b66597d46ced1d2970a680a6768309fe71 (commit) via 6eaa984e3aabd93da5b7a6c985308c2debef2aa6 (commit) via f408a604437b286f5c98420c119ac4f7370e3a49 (commit) via 3c413e2a31b4fcb6a99dba04669c6a6517b97832 (commit) via c267ea1c3e54626e4ab2283dc7529ed8aa8beac8 (commit) via 3e1f5b11e0cfaeb28d1bc4de36e5856344ccb87c (commit) via cd2ed4b87adf83e406a1c02c169d50e29743879c (commit) via 8caec41e6e1debb2b54a63c370f6268ca76544ff (commit) via 497f4bb941a84bacfca2392759de6cb8e23b0684 (commit) via 77f6fdfc2f11d07dd44ad9fd38a2d6bc89b3abc1 (commit) via 63367d2840a98e59562094c940dc746bdc7b72b2 (commit) via 40dea7e4b2e1c4518337bba284a233bf6f788a1a (commit) via 0d22a23fd2382320907d8d3b97d8784281c40681 (commit) via 89ed729af150b7850976843475bc1f3058eea86d (commit) via 4017bf40de512e977d59c12f4e3f6c91f5dd953d (commit) via 8f4663ffb265b6216cc9da9019e6169e27f0d8ec (commit) via 31d59ff3b104f012d5eca9e15c1558e2c67ef495 (commit) via 31c6b9adbff0fd7113ce4b97bc4ad9514615deb8 (commit) via 4309ed25eee874ee73a715897550e2ea18631f41 (commit) via 1f29bc4092edf57cfb61882d7d7358db7e53ebe6 (commit) via d09af9461964d22d6946893b52b82c5c9a752f28 (commit) via 92c7b5260795153f4152e8562a7abac3d6d77d8a (commit) via 05af537ecc6b89af5f0bb8051b63d08fb105e36b (commit) via 258e6f1b1e1d20bc48a5892f5d9d339269fa2704 (commit) via 414843599339259c6525ccc11127d8738cb83578 (commit) via 3ba57ddf895019b378ef0f20716e40e001d67f90 (commit) via d0390f8be0a640942892b1dda114f472ff5e0218 (commit) via 228468cf3e1c600e49a581a59e9f998be2c03f11 (commit) via 70fba77b2614a064640a6e8f68803a3b349740ea (commit) via 1edfb2c47a2a48e111d7f060184c3e618a712ea4 (commit) via 08d574e9d7b17971468aa0399d950edb147b57ca (commit) via deaa19cfedfb3d3c51fae64df809aa01fff1f55c (commit) via 20eef60869c93297cedf45414903691954a9860b (commit) via 099a4ea50c4fbe5fe13cf6fa4abcf970c49e787c (commit) via 66c0b36d75e16d4b62022b498df06440a843fdd6 (commit) via e41536405884fc3d6342748a20cc3f391d4a3221 (commit) via 4d6c27360636ecaa9f815306fecb3b5fbcce68bc (commit) via bad72ccb7f5276ae0fa387fbd94cc102a34c1877 (commit) via 493ad0565e5cecf32da6dcefd8dec78ae10eab0f (commit) via 740e598c8ef708656175709a2b51476604005863 (commit) via c9cbc326487592d47590bbf7498eab0901e3eb16 (commit) via 8ef14467e4622f8f923f2a05a90c8fa0e12f76f9 (commit) via b5bbf06c26260329855b26ecdea44027c3f0f598 (commit) via 7bf21414301cde129d7d76f4f9980128deb6849e (commit) via 1eac7c6ee58e73302d2049376ff3f114a8e6826e (commit) via 0816f7496b31829533419fa42932d00d9b0851ff (commit) via 1f3933d3825e6e99cc60065a8666c5e22bb1e7c2 (commit) via 14ebad533dd278137e5a4768768217ca95c4ca24 (commit) via 3ce7eecedc2686520af930fb86cf5c7a79fd4fb1 (commit) via 438ed3bfc180fbee98fa07af1eb427c6da209b68 (commit) via de706fe0d47b8d6fd9ed269d6caedbbfb9b71258 (commit) via 08229348a89ee4b9da893ed2ba448cb2a94ce572 (commit) via 8950183b3834dc2179dc4965138b1091e291ae9f (commit) via 40b95ee8e6ee57ee87b791e831ac3508f77db9a4 (commit) via b0ff528adc3ec53c06bcead3845f9c2f7251c4d3 (commit) via d4fb3136d5b32ac17ce6bc00d9f62163ba5bd800 (commit) via cfe4e2db1fd609fea5da355cd61e0b77e185f258 (commit) via a9c42e3ec09fa9cdf308344d12b0cc8c2e44d905 (commit) via c095e2ad540edee8521b891f0eba9ebeb3ce5ac3 (commit) via fcf32645946ae46219e91b9f6e87e42fb0574f9e (commit) via 739ae1d090094eea6fc545d4d1567b7db9f9683c (commit) via d15f199c142226cde18514b1ee1495c6a40e1633 (commit) via 86399e49398cc9e8028e280eee3e89992ab3fd11 (commit) via 4966c8d8dabfb8e1077d69137f32031fa38a9ae5 (commit) via f67f76c2b3a4c50d4116ce806df0c7f861e227dd (commit) via 76fa3b383e037f69089f0b193708456d3f47c8ed (commit) via 6fb568cef6c8eebe1730c51bee7f4f92ce805c39 (commit) via 44111e5cc04ee689627acf5468d08e05c12b33aa (commit) via 4b7618d17028da30bf0421e56aed6789bba4a12a (commit) via 1d2d9c18bd477a6fab1744d8da13bf5d760a0e03 (commit) via 4549eed94706d20ebbb1e8187f5b028c7bd4aa2e (commit) via 0d1b6c89dcefa4d2d690d5ed030022c82b5503bd (commit) via f1299f5d82479b9acd103697fe08ab12edfd6a5d (commit) via d9154e521a815d9cceabc9a4a04c795628df0fd7 (commit) via ccc9a6c706ad34cdb92457e701b5fcf3d7760af2 (commit) via 907bc3543727767b72e3d9085dbb3c02b1a717ae (commit) via 7ab9a62572058d6cd8e5bf130d7aa27d5a2e50f2 (commit) via 4bc5c08476f28a23f42b4566a760b21cef60c4b3 (commit) via 7341930ade835ce48641b5415cdd3f738772edf2 (commit) via 671958d2884e2d2597362265620b73f43d414870 (commit) via 5f2e2c387deb7f798cbc54d0980503e05873eaaa (commit) via 1e148aba7078359e2e5b4d7080a6e1cb6592d94a (commit) via 1e2911b8cd512663ef35bf05de0b5f8156abc171 (commit) via 8164298935cdd0970a4e86327184866496694b65 (commit) via 10f58b27ac1015e4f1615372bb5168e43afcdf3a (commit) via e80cc856da6901338486d9183b527fbcbbe385dd (commit) via 3fdc4397e121f5125c103dc96e1e37b3e3454a5b (commit) via a363c9356d60ea2cfdae7bd8a35b87cac463c4fc (commit) via f0b3fab179d0ebad7e0bcc6e564d989f992bcb84 (commit) via 540d08f4858ddbb8d0356f77f878b9fbb7af8f80 (commit) via b1504f9f97849777f4690565f8b5879372e7dd51 (commit) via e9fcd1545facf6300181db843260008e1069c7b4 (commit) via 54b4ff2aee015768a990cb3fccb79f8e87b38a19 (commit) via 4988746e76703269d76c3fb633bafc0767fafbe4 (commit) via 6ce6fd426ee7649a40c2f253dbc5f814650f0992 (commit) via 45b6776ab301f4b5ec51e27863ffe061b1a0d60a (commit) via d7868687c814cded6319dd0cfd9fff5c737bf0f0 (commit) via b8ef28ae1f442144f55e23b8defffe01aa350c44 (commit) via 0b6ad59ea6b74379f4aefb42c2402355c393c656 (commit) via a2c4e3489d9ccd7150b6fda2ea7254c21dcde1b2 (commit) via cc66d356510c51b5240239a212a511fb0d23dc9a (commit) via 95e86eafd71928dbdcdcd135951a172891eb6189 (commit) via 3395aec7b8d8242d1eb6c18b57aa4cbab3e9c6bc (commit) via 372dc9b0879d36e4017122ab0e7c7fd63a0763d5 (commit) via 7971202b3c58f78008f5b651c048910fcc49c49f (commit) via fb7e52ca3d920ca1de8b2abb23da3d83db988eca (commit) via 5cab8c307c7df585152e3ab9e007574cb0e690dc (commit) via f11321efd11ce4958d45f4673465b5b9484f1af2 (commit) via 0af9da29e487f0a6c60c379f0773a68b40ce2625 (commit) via f658bdaa7c7899a46caf402d4114999019897d46 (commit) via f00e6c7c7024a784d2da310ba7b5f4a67e60fdff (commit) via 6273b8354902e1af124d6f9b4a0ba23cf5e8a9b9 (commit) via 0b8597a86ee8bed2c34f52d309fd57b5f29a1595 (commit) via 227a7974f426e0966d1736c66dd606b068985d1b (commit) via c97734280f5e5f2eab588b7b9f177a8e7f19c042 (commit) via 7d1ed84ceaa1c3467c091de302c778b5989bd03c (commit) via bd10c3cf82f6e9d58b121498eaa2b9d8cc19dd2f (commit) via 77aab3e5155995fc224a1f81d241448de093cfe4 (commit) via 57199deafaca949e0588556ebf78bb9437e31365 (commit) via 1f5b2a8de93dc828d0cdc650478999133273c2c7 (commit) via 834d1878415fddb04b388b042dba7ce55a9a8a5d (commit) via c6a83ecf1761eea8d0907ea9d8913fe56029a00d (commit) via a6005371b05eff6104cd94848c610cd7af841ab6 (commit) via 362a1f336d29fb315db937dcce4dbd894bbffd2d (commit) via c365a0787058e41f0e96f4dd2447cb71a17f7696 (commit) via 62d8bff146b28c10c11ad7ef8114f8d06f2fcad8 (commit) via ba6caafa42afb7fa2c7d8d0d49c73d79efee1e9c (commit) via 9720c142559ad8b48326de1fb636ae66e1f74184 (commit) via 0f57e1515770d146de3294770aa63b8d727eabe6 (commit) via 1efb6e566fd2d35fc744559efad095dbef8cf0c6 (commit) via 14fe6d431b12139ea2aeb5bcc09efd0f964597aa (commit) via adf491379549fbee522793ffda9a5d153cc9c3bb (commit) via ec37222d59116f9ae6c9bceb79fe5941a5ef46b4 (commit) via 93d5f464cc9cdf4a3b30565828ce23065ce51d01 (commit) via 0fe1966b7994969c2220efbec51bf49c0406fac8 (commit) via c62ffdcd4f6f638a7d57221528ffbe112887c1b4 (commit) via f984296ba8c663eba747454338d8839cdeb96421 (commit) via 548e8f6ffedb57fcdee56633ba454ae0ddf38983 (commit) via 9dee52bacad3a5b3794b0101b7b16d6bc9b0553a (commit) via 3b1bb703a2f75f26fd453e50f848b5dbd64bc169 (commit) via d25bcab161bfccb43cbeb43dfe96c805e2c27530 (commit) via e81b7a2075b06ef12c3ab175ac4e20eaa50b80b2 (commit) via 62822ce68a34ca5f4756b0128c7e824eacf5dbbf (commit) via 158fb9755cffa427461addcaa6da8d18ec6246c6 (commit) via bbac777698bf30be07a0edcc34ddc1a1e16b2dc5 (commit) via de0035fdcccb4c8acc92bf1db0a76b3c1f18003f (commit) via 687a26b7023748cc98317eae53ee2ac3cc520bda (commit) via e770b1b86e7157db4191096f226a8b0175819cff (commit) via 1c40558e9179779a097b9b5937a48c5da0000561 (commit) via 51045535e8e7add1f53d3599cdee2cf0f50c16f8 (commit) via 1bc603344725920dbc518c9e9545741edc0139d3 (commit) via a3f8371c574fc41ae23e02e5514f641f819d4708 (commit) via bd49ae5109cb8bf0fc1110bab8b829f5f28bfdd9 (commit) via be4702781d5bfe092daa2f6bfa1012c047e2161a (commit) via e016d6d255f36cc17e85e27761fd01ef048a1b93 (commit) via e1a09cfbd1d1802b5fc4ae9b4918bb00ce468dcc (commit) via 79fde6a324545f6461020c957af1f63e5f2a72da (commit) via 3de52db69cc0c9568067c02492eddf5396147e0c (commit) via ffc9c89dae80372f7504c4b30292e6f5da514c2a (commit) via 9accb48d175d5163266cc7792c2dbb5ca5fed0d2 (commit) via ea63c522ef7561365c90e1e1f7c7e37403bac53b (commit) via 5b1c84b449cbe84e429c968dd450673203493d5b (commit) via c50f08cdd88171fefda154623bba3aa21a2ceac2 (commit) via f5e48edaae37fbf9afa668671b3a8d3e5537321b (commit) via b8b87489770bd29ffcfc4b2faec3f98bd089f3ff (commit) via a2031d3a3a6ff26640f5c8cc0d76a0076c6e74cc (commit) via b7100756d739e1a46820b700607e738f17985e30 (commit) via 976370d134a2d7b22b6f43f6031b0ee850a01d9d (commit) via f313541adb677f754953d1598d3e8b234ad975b2 (commit) via 92910e282adedff8c2dba488db84fb917318bb5b (commit) via dd792b08b50d17ea4d3ff5ba17bec45550a8ed16 (commit) via 060cf73ec8c2d5d73d698b1ff547d425d8ec7eb3 (commit) via 98206571fb68881fe373c040ae703aac318fe6d7 (commit) via 22f440ae6930c8ef9eccfa65530c6b59949657ef (commit) via b6dd3969e819a7a2508c8f705ef7e13fb7e11dff (commit) via 6ecd8b601b6c09d1f07bf5b2ae0cec694522d2c7 (commit) via a442624def318c950936c8d49964c4b3bfb0487d (commit) via 79b241dee076d594f5527a148142c0c15a5909dc (commit) via 52a5c4a877d066a283e76bd5b6e63a9f3eec31ea (commit) via 4a8bbc520aa62187fb70aaf0c28daa67e275c26e (commit) via 9432f686e62082045f53bd0ec8f8911966476df1 (commit) via d06b8264212c893b5da8d7499328eb403aaaad37 (commit) via 83068cb1edb3258af9315b5e73e674717a829531 (commit) via 729dda542010ed584d08630d2e5ab1ff3129e5e8 (commit) via 0236e5080229e5ce05c43077a56dc5b58fc644fd (commit) via 0b7822f49aef20ad758c637abe813463652cf9b0 (commit) via b8e7af979d3d6dfef05fcebefe18907963221220 (commit) via 8616e9ba246242ff39d166afd2458fc78031918e (commit) via f92304c789336f1d5e01a596ea024525c1a2b8f7 (commit) via 2c06e9e73ed2214f0f96e392ca2a35f74ee6efa6 (commit) via c89e8522bbe0d5526b2d2e6751511fe9737b37e8 (commit) via 21541bb5ccde705afa8400a9a2b6f4454580fa5e (commit) via e841ae823edc3021aaa5b297be715344a9bca47e (commit) via d5681e353ad94db8cfd0343bd50b090a6cda8c71 (commit) via 8c97382c8e2f5699be72089371c67949c7e49461 (commit) via d8290531a9c98773ef233c23b81af76e8a7e099c (commit) via caa1c4967a29feee1789a7fc548f5bdf1eb44781 (commit) via 411397f913d93e988da9bf1b1a4305c55fe78d5f (commit) via 66419bc04620c5748df77e2b563d65b0e97b623a (commit) via 5f87ea160378265c70c97d1f627c23e6faf02378 (commit) via 6bffc13ef1c85ec565273d25e811fd6c326533f0 (commit) via 7f881d159ceb2de70f7d648ad3c113ce18d1a3a7 (commit) via 2f8711d9583ced09fc1b7e3a733a32988e6c9d88 (commit) via bfbe4aaeb8d31676960175d07d6f412277d8cd9d (commit) via bfcc20343c966ee031426e04c5eab504a0af8e27 (commit) via 3519c8f2473c40fd6d2ce86e29742ef30b7e11f1 (commit) via 4c40ab261c94a72ba5dcd9fab47c035d94a22964 (commit) via be8ec418965b89dd4b05412d78be7395ad4b4a56 (commit) via 740ccb1f1de5d7d764bf98bd3c322e5c6b07f70b (commit) via a4faf8638744edf7e3dd8931b55ba87e8f7738be (commit) via a13cc4d7028f7240ce4ff4c5f43e90ef8f61bba0 (commit) via 22e67bc6bb138d1fb09555f1fdeaaba14312d3da (commit) via e61c1cf64c4f39b00e0f8ed81466e85c773d9ba2 (commit) via 47c326c36bff1669f17ea2d89c49dc9152f8268a (commit) via 3c6dab8b72c1a0736a5ddb4c470cf7b7b544ceb1 (commit) via 006a4956a296ed5a9c01fbd5c242c240dc3aac99 (commit) via 4d0bcc94c4b965dc08f826d2242248fa3db885b7 (commit) via 340fae777a45c318cf71cd0fbd51bf30194761f2 (commit) via 4d611868dfe37e73aaba4cdfde37b17e8a2ec7c1 (commit) via 6287365ab090078be306b3199f2e42d8e423311f (commit) via 5cb64508a3c2c17f3a8c798d60ad426e286cf39e (commit) via f223a7caf494949c241133b7a7a1408738d6b376 (commit) via cbd37fbec37b7fdd05925c46f2d252ad368ebe76 (commit) via 3bcaa870078d875b65f17d82661a133f6d5cbdfc (commit) via dd700e9bfb2a498632845e76ce95dd38bb866a7b (commit) via 8112059ee7f38f0eb5cdcaba8185aec659abcbfc (commit) via 32cfa7b324de799eefb2f7370fb54b700d1a87a5 (commit) via 92b212e87542552a8dd095608098609a3ebe1d6d (commit) via 4a3c19a5835de0049cdb2acea7be8ffeaff08aba (commit) via b2f612a0fabfb87e79b60f440c05a2cecde424f0 (commit) via d094b6796a3d9ee91a00f9541416e5d1e9304da8 (commit) via 5fa414594eb4c1ca9e7041eb443d503ff495d90d (commit) via a3e029effd84dc185a9cc12e9b4efd48c70dffa6 (commit) via c2ea729c87cee2fb19d34090ef00e42d12fb59f2 (commit) via 5d43e46ad5e2760f0e149959dc09b1414d54f362 (commit) via 21806e6f5f817c4c6cd1d2a304839b460d1fdbbc (commit) via eee4124f3a9f2f7f560b76dccfe43dfca5769ee2 (commit) via c5fdd66252a843eff182e6f6b773ef11a16e162b (commit) via 3eee33012e10a77b6b337dc70b2dc6b2320c5ecc (commit) via 868fdb439a2b984de3247cda5616991f6bf7c839 (commit) via 1e9b7d3ceb882d3feb59324b6e55d40cc795576b (commit) via f43b9219c738944fea33043b1985696c862c84ac (commit) via a3abb85c6ff5aebe2220ae612512a434b491eedd (commit) via 90f8db269fcc6978badd93b5f985dee2e01feab3 (commit) via b56b51fcafabc678e90474871cd282450949152a (commit) via 07185055d57f28347a1850a1f06787ac93f20afd (commit) via b311b8751819ec881824c61ef8de03387ff40c3f (commit) via 9af5f6727716ab8b9b61815ec67e1c4ffe1213b6 (commit) via 8e654a37857b7cefabf142b16fe8a6e03b75b5df (commit) via 3726ded116e405d28d7d2bbd0abc1b929ab0adb0 (commit) via b0e2f1415e680337f4b70b19e319efeba0eb6f12 (commit) via 85457b63c859f238ef324757f1042cc846cedbc7 (commit) via 95646591d62966043f0bc25364211594adc8d963 (commit) via 5def40891fc1ad0a7d7ba7a16bd11b2d26fa66ab (commit) via c07b18d8835fbc4ddc0364f6f3531cc515f309fc (commit) via 71c28bddba25847f65cfebefe884d8e88eedc1af (commit) via d5cad740789bdb2933b5d189f5cd5b7aada9700b (commit) via caffddd620393fd9c73c1ce97d0451ce5570dedf (commit) via 9e961930ee1ab526467651935bf7c285c170432d (commit) via 04f869bb4645aae8171f70746898ca20d3c05be1 (commit) via 89a628e28f68daf124129aa1810ba50a420a64c2 (commit) via d4805dd47bc6ea586e16ac5eb9f5bd07f2ff6901 (commit) via cd5002579d64898e6392934e2acb33b199765846 (commit) via a4ddc7357ae880b3695dccec44e383cfa77c7572 (commit) via fbe91dba6a615d799f3ece996ddccdabb819c4dc (commit) via 4ff89fb6084d84aabe2e64aeccad03794af65a8a (commit) via 6e613ff399166c59e881331027e65c601feab807 (commit) via 923b8fadd5fe6af56197cf3916a3292b60c0e8db (commit) via acb4cb950023be9300699a0220715bebb50306ad (commit) via 8b5ae1c1d310fc6eb13b2cde5712b4e319f01f3e (commit) via e04f1d1b47f395cd702574041aa17e52e71499d8 (commit) via 458c589fe33fb5e827e9dbcd7799a0cac2559dba (commit) via 00e39a4afcb65b3c78acc81e6080c204be84f16f (commit) via 24e2bc42191b6001b8683d929dd097f68332698f (commit) via 65f21a7eadc2144f0c85cd883cf63a6eb7681528 (commit) via 1882ba2e0506deeb06f334b7459921286238d719 (commit) via b67762ff3c4e24be75090cb2dca6c2b0e7f08dcb (commit) via 784e429d1fa4635bad640d69b8207bfcb1750eb7 (commit) via 08f66764b320efb6b023febb3e2e4787f2e6c976 (commit) via 0c1912e3e58bebe9eb7c6dcac7a478dc607dba66 (commit) via b1d3fb7fba735d829c2cd655830161871827d82e (commit) via 53c6da8b9e549b07996b446981b4fce9577904a5 (commit) via c55fe43fc1da70e9b0c1545c0864634bc5aaf63d (commit) via b31d5e1dfdea5abcf95de05baf7b0e53cc18937a (commit) via 1f1c2a9fdf84e1fb6f3399f7f30ad8b7c8d8669d (commit) via eea976e930fcb7e8f92968c241d50ed49a1f1f0b (commit) via e1243a50a759f797ee7f2d18ed08df1bc3dd0692 (commit) via 72d3161a7f5d350d848d5b44cf343bac19e22238 (commit) via 51ccfaacb88303bb2774cead91069e1c25888137 (commit) via 7dbeb3ac5c7e0985063a5473c98fdbee102f2a4d (commit) via f19c70c3d29f277f82f18820d36ca17e9ba398ae (commit) via e5fdbcc9da3855f5301f62d2d7ba39ad039ce7d4 (commit) via baa19f658f947047dddac0228bcd52591829983d (commit) via fb3c5bfdbe87786169dfe6d3ddaa86f4f6a5676f (commit) via daeadde88871f4e2473ce429f459ae8d6ed0ffb8 (commit) via 65c5833858a92dc15978f08fe2acdf852c930ee6 (commit) via 8f8f118327e25a3af912b504dcb3ebad5c841818 (commit) via e91e69cfb5a9bdb1cad7a6442913c15af88ce5ad (commit) via d18ff3a5c662a9f5d3b44236ea0084b154f32a9b (commit) via 16a93de0a81e913d71f86835b267516ea4875517 (commit) via 9698eef88ad50d9d470a270c26d4f7023cddcd80 (commit) via afd9a339a1d7cbdf9aafff4ee6c454382e923aa9 (commit) via 2ae880fa8f04a2026939b1df9613b64a301aa522 (commit) via 4d52b46c7046a23948221d4142d768b9ff834e33 (commit) via 7ec847395d1302e2a09e090d486426f984342d04 (commit) via 8e7e7af5c8b3ce20a5d6d449b74b861c71f86842 (commit) via a62d50ec56087bc6364c2e6c097b312167839957 (commit) via fd56d6a8e637750cbf2e038bde12164962c66bc4 (commit) via c7f175d637f9755ab53668f1c0f937e5c4cbf067 (commit) via 5f382cd8222d0cec719823b56b2237bea7fc015c (commit) via d5624a40f2c99a4beb27e5914c2fa9cecce259c9 (commit) via 6720807d57f0aca43a2ad5e0c377e7bd82216284 (commit) via f88ef9a9b853b4d85010d9281393b5e0fca058d7 (commit) via 08ce62bee5bee6805fbb01c1821c438028e858dc (commit) via 66b37132b6c7d347a0fe83ee5082a751e8e0d9aa (commit) via 345ae8d0e1133971e8acff93d6fcdf653c4d2e11 (commit) via 1da5a6ea39d77a13f0ef15aa2fc0e78b452cb4ef (commit) via 967ba2e18055943faabf6eec39703bcad95a7551 (commit) via dc24013bfc9537dba7b8b79411899b6afb34da14 (commit) via 9100ea1d82538b300145d589ca4961ff2050ac4d (commit) via b0c2cd47f0b62f3586e3f45ed554357ac27dd576 (commit) via 521cb89e0254323bf29395ce6bdefd6a112a009d (commit) via 35b8a26be15e625bc087d9a8a8b8b15cebf033b4 (commit) via a4fd74b90a91396f316990ba056c7c6bd6034b94 (commit) via 566f77b7f9747b037b0aed937020e17460b44f23 (commit) via 9b503cc86e047fb8d9929e49f96f82f2a74af562 (commit) via f81d186b156af01027e76cb8407a3ae64ad74991 (commit) via 325f34d1507d391e5125d0a57e3575ecbe4e6f13 (commit) via 176281e131f244bfc987a696951a87ea9b909840 (commit) via cf0c25995d6fd213727f578b35139a822fbaee77 (commit) via 2ff906b34e661cff80b7909bf2d4136b35c41fed (commit) via 4043463179d5e238cd1505f68fe0a4e75f4feba4 (commit) via be11a85286ad538654dacce63a6be0af0c3c5bec (commit) via ab9d5896ae43789872fca2e83d556912abb60254 (commit) via 2a85b5ac768cde4a9bbe98551528c8bae1e268a8 (commit) via 75819b8626abf0e64895ef19acd27dbd0fa9255b (commit) via 27ed3b3537676e6090a0845e4805bb4a65d05bae (commit) via 1cd285fe06088d6dad58a3b52c071579aa0ce8b8 (commit) via a87f82e0258148f3047a3487c832a569dd841e09 (commit) via b2a0b549bb9fea678517a52caf333eae009901dd (commit) via 85ae0ba796c26b9ba2f7025e267d3f438db388c6 (commit) via 87a0b54a05cbd1de1db16c88e6a79788735c64a6 (commit) via 9c4a74559d291e194563c80404a1c432c3ba9d01 (commit) via 2b7d59f3109483bfa45dc41e2a2f6a2f82addfec (commit) via fe2c2b0ffb567ca7d51036c69845091f70736a50 (commit) via 0f6f7c8ab1979b89c4400ebab39532be4bc269fb (commit) via c5a82d0f883b4e8f34c380117316d3fa1a97c3d2 (commit) via 25773650400a6c584da45a92f9b51905101d9420 (commit) via 08353542e578cf756573c41ec4696dbf1c6513f0 (commit) via 4a6348dbbd35c51fabf01d517357129ed9480c85 (commit) via 5fd979a8a3bc13aaf20c2833fe513df192d82fb1 (commit) via 6e078505444faf3b140e9032ddfdd23d3d5e3fd6 (commit) via 7dfeafaaaa15e0ff80e00cb875d4f037bf08b0aa (commit) via d261704ef529b420ac04335364344a91b4c9d95f (commit) via be592b23bd737c5c3ea9c111a139d2dd81a622b9 (commit) via 00e13993fde86d3674882aa9e63c46b4e1041462 (commit) via 8e6d6337cdfa62dd5412057c6dcb6d7c23709f6e (commit) via 2ea17412a9a40bd66342a1761ac8f067f5d2ab09 (commit) via 89fa46e29b27398808026950ae60956b648d4312 (commit) via cb7d0a80faadb507f1bdd46f0e5991648c8a492a (commit) via f5bc78263e15f07fc1fed15d970d7ecf9e84f7cc (commit) via fb114a40aa29c73c067a357d843cd12e187e95dc (commit) via c1930caffe827b937d05dca9ffb82ba0b0b20eb2 (commit) via b9ef87431b8507f6085ac77acb8bf5a7d554be45 (commit) via ee5867287ad4d71d6318294a51eb9eed1b2cde21 (commit) via 5b34fb20215b0b925357b98c9ae77b04ef7b2816 (commit) via 8f9301ba255a75956eb80942686808e8f4b114ce (commit) via e24d2b58b4009b023c54f7ec21018d1873e14f47 (commit) via 2392f6ea3e3fc4d541594ea7e86be2bb607ba876 (commit) via 36cc43788a9b74d5a23d298850bed07f2ccbe45c (commit) via cd2cdfe2537a43e9ab8700cc0d653f76630f1ed5 (commit) via 23ab451a13aa0113de365d2f1a9f82598b160a27 (commit) via bd863785dbc210f97ffecd7c4fcf65b526d4e52d (commit) via 3bc21a70b5c026d2dfe400ea3180f33bbaf529ea (commit) via f26009dde6b152f1d32e676202c8982ec409938a (commit) via c871446abc9f9f33bd302ed059037d719eb9e2d9 (commit) via 9f1916aaaae830cdaa7dbfea5035f62fbc7920e7 (commit) via 1615cdedf5ed1566c9fcc887a4c20ebba6945bf8 (commit) via 98314d536e23168333bce28703668683192d7bd2 (commit) via e31288582977c10972af9baa3b0e41d758094d21 (commit) via 47f8998d92ba637c67bd6eef63e7ab44224db074 (commit) via 501b08ea6760c7b5169e65ab906ee3fdc80504b0 (commit) via 5c4482133100ff2b58063c60ce80b6595bb20cf5 (commit) via b40d45cdb101a91fb2f7cc6fa8078337816aa92d (commit) via 78aeb30075fc97c1171937a45a1816f1012d2ce4 (commit) via c860999213fcf6114084688cad7b8e70264401cc (commit) via e8a4036e9621d567fa47a118aa5583f85fae811a (commit) via 1fe9e49bad0ad4f540ceda028106d9af89084946 (commit) via d0606946d7620b21e3884056f374c8ef308346d6 (commit) via 313a565729407fd13a7b0b702b4a7509ad7fa8d5 (commit) via a12830c2fd3acf5b6ba67c2356593e965fdf1982 (commit) via 6c231077256a7032c2833c45166290c50c39a11a (commit) via 8203895caa5d767e87760b22deea36fa2f5e99bf (commit) via 7a06f9973a349ad07d19c8794966a11047790b84 (commit) via b77501d4c7341337174f29cae623d8e1905af29a (commit) via ac38bb3aa633c8abf01b3ddad003afd5664c3410 (commit) via b62eb8f69728f9ff1a7ab3aae6e69224763c86a6 (commit) via 67c981fdc25e01ae52daa67c447a03fd05b40634 (commit) via b1a06e472607efac5dded07ba0ca28c451f169dc (commit) via ea1bb90270357ecd033c11c941b83e76e6d1525b (commit) via 7669695a74959dbad7c801facea4c7428875ffc3 (commit) via 5d3b917d3841d6c69a06470c9557674b1287f093 (commit) via d23a0c4d0e35d50f8f3f1a950a68df576294a77a (commit) via 5c887742c5f9e91b4d96c79a64782cff3b631849 (commit) via 11e2f53e3051a3da681a9ed9e4255c2d8fbc86fc (commit) via 5c07d3900dfca4a1c7eb37cd00f448a8312dca03 (commit) via fd93616b745218edbeaa2077da3fb78842b34a7b (commit) via 1a6ef0bdb27fcf07e54a6754235ece70e752aa5c (commit) via 163be8714a279aa16e4511d0059e9cd471f0a256 (commit) via 3b272ff8e424b4f3e32fbc541732fdb6798cd978 (commit) via 002d0a1cf96f535066b2e2158b9b5956a16353a7 (commit) via 9d3aa95ca4c20d9eb47e8a588c9279c6f37bb4a9 (commit) via 7904b659ea71fdac47e72edd8309c72b4f7d7e8b (commit) via 38bb98de511e41ae48c6c5193cc0333d54033365 (commit) via 78def0e25749249b500e8093e34df46217c526ef (commit) via 9aaf287d634db618c2961a063a3dda36d13d645b (commit) via 83e207a54e158972e4beeb36439daa5e80744d24 (commit) via c1a55e333f99062530386b51675b9ea3c4bf40c9 (commit) via 6d20c44f3df2b642235b64ba4be789cd9e2b5362 (commit) via 0d7086e3daa67d6679f5ab01d9b187c333cca627 (commit) via 98cbcedd7414f9e33e166b09ef082c6ecabcb7cf (commit) via 6afc841e74cf15bab2bf30966a4ea277d9fff33f (commit) via d9bc6fd45191731d707af248fae4958732c2bc94 (commit) via c167a9b18c2fab97d43f401c5da652e76baecaa3 (commit) via 23dd8b9e93d670a6e19e8a0278611aa147ab87e8 (commit) via 15892aa3c0bd111dde2c15c9c10875d01c8acc2b (commit) via 18eae3f04db49608348283b4860e9eede69bf0a8 (commit) via ec2f901202fd2907b84ad5f0280a347a8bd9f751 (commit) via 8bef3e31bddf1ea7ab3fe6a0871e76d52806cfcb (commit) via e8d0b4312e0454ed3a0787acb2ecbef2c3a364a9 (commit) via 9ffb9cb873c08e801abbbc46c9df691d406e43d0 (commit) via 4eefad236aad84c1f4ca38fcd3533a0ec7401a3b (commit) via a16930167dcec066eb70925b82ecfd27e48d2660 (commit) via 05d8892e6113272c9b9ab73ceb9c8319e6690a25 (commit) via 0682e77f3b65850d37d8d91533c62b30a348454b (commit) via 43edaee0ce663e4f1c2cfdfa4742450640a2f6e1 (commit) via 1e9304bccb933956f8c8349f2dd89927dd0ec08b (commit) via 7e896029cd6bc0a19b7e0ed6fa7b876e0f1764b3 (commit) via a4c829167dc8fa24e151d2afde7896b4588b24ad (commit) via 670ad047b34d983daf1f17f8b32c4abe2b7f22b1 (commit) via deeba85f81bb031384c1c014d7adcb733da491b4 (commit) via 2ee10119eac2802a234543581b1303d91b944afa (commit) via 30fcf13be6680d6a4eb112f98cc2d99c6881f401 (commit) via 9f30cd13dad63b2a327162285711cd36dcc20b92 (commit) via f8f3338582c863642fef9a31a8d8345cdd78d263 (commit) via 3b853ffd1605cab8a72a66a6312840644227e1e9 (commit) via 0e3518ac05a24d3a61dc354b41e43999126274dd (commit) via 77b73ff1345977b91915c900a006761fe7c099a6 (commit) via 7bd4c1c1bbe94c85e4e361ffcafb3c0ec204d8a6 (commit) via 27b62fa4c564c1346bae6b957ba5cd6d9d32969c (commit) via bd68d0c252f4ebf91d03837e8404b3cb8c4f7465 (commit) via 482f71c491ada6a55348efe0abb6e418df5aa558 (commit) via 05e9f6ec52a2cb87b529ee41059d809446a8e50d (commit) via 2ae78569b43228026c929f3c1e7627119a091910 (commit) via cdf5f34b0c2ce8b984721f13a4dcd598a3d593e3 (commit) via e80dc2ad7fd8cde15ad62ffd7743eba20fbc8524 (commit) via b551beb6facee72d1c1af455a9e4e8ecc7be959f (commit) via 6a3922bebea607dcc23944b1fe79b7b613a893d1 (commit) via a7347c022eb67272eea7dca5a58d0b94806b7d95 (commit) via fcb39aaa19360ae9096f2f2567e3afb1630cc370 (commit) via b5d8610430b844231278db9ca3f807e2c433a608 (commit) via 1348f97784e0aaa1c4254011bfc9b6990993ee53 (commit) via 517cfe0b8c327ee4d68de777b812c4854e3d46a8 (commit) via dc059ae70b2ec79bce2b534876a2f4006293d3b6 (commit) via c37c4771cb876146ae0d23a2008482d6fcd53e35 (commit) via d70bdc72ce5f480947077e435433fc6cf524be4d (commit) via 6e2193a26dd3e73af41a86f672d84144beb5a3c9 (commit) via e673e6f053f7320f78a2ce9ed262f9c11e503998 (commit) via b104bcfd98add349f7624887073c79a84ae41c44 (commit) via 62d736f74ad2eaa737d37ba0b30c8a137782537b (commit) via 6a54dbe8caeaaa78a8ac78b282d80128f0201f9a (commit) via bccd442f7183de1da8e97cfd4a4be2d3b21a807c (commit) via 73db89c2c2d997f6e1992dd1eab05e54792bd164 (commit) via 2dabcebf3ce1b331c723055322b3fbe2e8ab482d (commit) via 3d6e45af611983d85b130b4f874d862f7d998013 (commit) via c2e130e8f4c09c20fadf67c6c12a3734261c4803 (commit) via 277994eb43b6759dcb1f986b24aca614e5c4b9e0 (commit) via 35a52bd1b4d0350d3c7e94611dd90ddb4b123352 (commit) via 854e482a59d6696bbb6988a045ac701e26bb038a (commit) via 335816efad6904fb5c6059a791d7b0eea4882bc0 (commit) via 4c626b7e43c27de0dce4b8af15290cce861f9dc8 (commit) via 4bd5af6302f0b7bafecf9ca7919287fe4d3f09e0 (commit) via 0ce082b7c823c0f88fbb329ca05d69a8f60f3851 (commit) via 36346de4809bf443ca9ca8daea2bdc1af7874b68 (commit) via bbc9c96691c06cdcff0227ad8292e2a2ea60ec00 (commit) via 701a637e4d0294ad76df7c11244c9b9b2e84716d (commit) via 777e87ae00e8920bd6bf971fb40a07e373061500 (commit) via 51e0d611f5732c40bf31662a0ba5e43cca0d40a6 (commit) via ea09ee0cc35440a2005869d4828d8894ab268a28 (commit) via d802f357d79244ed6d1e3e796162730aabb11205 (commit) via 1fc31f2f432ea8d0108e9c7d9662b05c391e84d1 (commit) via 5464e23ff5e822b8a99a3cd234c54ff4632ccb98 (commit) via 3048777006e1d10646e7b62f46406859dc4d0812 (commit) via 817331aae8c9f166baa7ada5e015dcb5442c0038 (commit) via 193e40daa5012b13b8de6202a89c24257be327fa (commit) via fdd1e18759070d27e85f1792d85a3aebc71c2f5a (commit) via d455a04c53be4e52313185c7322fc9073dc2437f (commit) via f61052ad390773610e14367c14fb53ad2e6b789e (commit) via 39c2feaf8c4dcb9c3a30c68a066fb70e126d7fe6 (commit) via f5d2988ea7cc60778dbaa21860aad264c7aa7a81 (commit) via 2636d86ce2f45f06bdcf4cb60c15df55838a3aa7 (commit) via d46b4ba83532d8954e473a26112288cd8e693775 (commit) via a0ec14d36361567e374672e0d115e584548702b8 (commit) via 8eb39bf24c9394efe78c6346e6e3f2244254ac97 (commit) via 9d742defd925e63eefe37e22f61c22bdec49c044 (commit) via 7576e9f8a30bb50a3157fe5e3ec493be8a9299bc (commit) via 7d3f33e6129232a6814af47a19a72fd500414508 (commit) via a57bad6c3d0dbc885bb71dfe465d09a380c35960 (commit) via 1c222d85447d6f237c39d7fc3d4d970ea4fa44f1 (commit) via c693db0f62f1a8246458140418398bf76c02e7c4 (commit) via 77e758a3edab6836151d5b1e690096c4f33dbd23 (commit) via 4e46f97c84431e860aab3da78495b6c0e8c37725 (commit) via cdc9c110a5bbe82d761f1a6d58b202a41b245de6 (commit) via 4857aec5d5bdee608d0e4fcf1a921de2a1c1b89c (commit) via ac1d19029119c32c67da555a892e9948b29eb067 (commit) via 93cd33310351d6e42b5287815b98b841585ac0ca (commit) via a0d00a17102d2740c1cf4b55fbf37308c7283f20 (commit) via e26015347a6ae0185ae49b17efa40e6d4731ef16 (commit) via e4e9ce7cbe9b41dd535d5246153900cb9657c6ba (commit) via 978c98b7bda6286d153c7b942509a92b66cb8fbc (commit) via 5b9da05b7acc27ce40d27afcda0029284a0a4590 (commit) via 0987a399ec01813e16c0a2c86d481e2b8e2aab25 (commit) via fccbe2d30b15c8e3f389e6cf0284ff7f9daae090 (commit) via 9ba15bfcebac56b51d9504bf6e46907e25fc96f3 (commit) via 3c3682289dfe62fa2448e1be7ab714e674b475d8 (commit) via 72d27964b92ddb4d8ee85e32a27d0e56d642ec1c (commit) via 562bcb84ab5dcca0a49104b0dab3b8a02881a0dc (commit) via 6341596e2996a86d58deeb3469c8a82c21c84b8f (commit) via 8c6fa52515a0d3ad9190f6f6cb9e00ce564a7012 (commit) via 9c2e8cf8a2f9ca169b993d021f3f560e60702e76 (commit) via 31336538b845e5ec66234c0708dabd6e43fe10d9 (commit) via 8a6cdbae16273418d036da8a13aea722ca39cbb3 (commit) via 11225ec6de6d210c24526641dd8b13f03e65adc5 (commit) via fd2e6212a66cd443bbf3e5b6e2cfd77ef1fb7b61 (commit) via 89add9b3e6a9d8aef4f63e3e03a8478480d66f11 (commit) via 08dca58358c95a41615150513a006379c4ee7825 (commit) via ae5f40696ef6efc62b663457b72184f682a23fe2 (commit) via 409527a03ced550fbc295faf965aebc7b8dbe003 (commit) via 6a4a61d9e1017190f122219681c239b82cfe9390 (commit) via 52680d8092bf3c32e3fa27460b22434d58095f27 (commit) via 025221df2a84500df2fb9ea6bebaf42baaa79400 (commit) via 41d796be155e0da8fec66cb281429ed0eb91650d (commit) via 2ad3576594b3009775c4caba9b8b5f952f9e0e27 (commit) via ccf1155977e5bf51c64c3ae34d9603a389da278b (commit) via 9bfc43a5e5f82f9477ea761cc739fa289e3b92e2 (commit) via 58e0692b62b5be1703142e8d7cc2373c8cee7508 (commit) via e48397ee2930090ff41c8febeea27542b4580ec0 (commit) via a7b770686a2aede19f1714c38a3a7697d8c798ee (commit) via 9bec6afa7a79e4669fe5c1b10e1acaa404e65573 (commit) via 20f462dffc36c58329bda1c14030ba5768360bbf (commit) via 4d7fedf8a27b99f9d916dcf51e46a214c3194ebb (commit) via 5784ab8fcab556d4d73b15b7d84bf167daf4c5a2 (commit) via ced94bcbd91b9ff486367f5187cf5760c02a707b (commit) via 3d42c3eda2ed65e1b510d76f28330b42263edffa (commit) via 8ffc1c3d89a5562d40a5bd86c457a3173a1469d0 (commit) via dfaf84ca7328256348a656fb8d45e76a3f7c6b85 (commit) via dcca130bb00d121266935aa2be0b72957b857a7c (commit) via b779b8e85f20930491aea7b9da3b79f61c675804 (commit) via 197b4e18d45331eab5225e6cb9433a13430fd0ba (commit) via 971b8c3c80372adf6cef54313927bc462f51d7da (commit) via a2611d816b49bce8a85678455b6e80ed0f30fb3e (commit) via 103501c4e008a274aae1f25a3c2e2137b9e4c8e5 (commit) via 2d0b3e6ed2e6b21bf24050c023215126aa131a60 (commit) via 8b100985984e81a5636494bad0faa9630450ac73 (commit) via fb88d2b5bef30a405e6127db41c8b77e70534db8 (commit) via 494906a8a21f44e9233632d9be7f93ee3990aaaf (commit) via fe4b25ec2fa09a50b6ffbfcf29e118afdfba0659 (commit) via e40fd9fd19923c84be725da41c233100f400bd93 (commit) via 6a8c765c8f6a6a62efe4b10c54d748870525ce1a (commit) via 0278ec84d823b3d910cf5fc614b30b76984ac135 (commit) via 6b829ff23dea13f5f70ea57b3594efd0726ff598 (commit) via 20696a53e4f3a85886c1266c45923ea67f0ad494 (commit) via 606ece67ef971af6fcd11051ae9d5aab7c07027c (commit) via 82f95c958467b3076372247d9a0a7d6d0414c96e (commit) via 576c079faadbff2bd5fafcbc9cecc03797625922 (commit) via 98cb9f3ee98261d0e7a591ba3b1971d49f1a2ee8 (commit) via 206354ac4c2b0e245cc02f3c9f8b82990f829ee8 (commit) via cec4b86f0a271fa9ad67f9c2e779a0f27d74e563 (commit) via 74705612781013f7bb07139cf96be9b58880338b (commit) via e419a67a56ff33f82498073c91e533981a9fb2d1 (commit) via fe4d6f1fd6a0af755e30e71430082667f9683e5e (commit) via b0207cec320673dcff29417ab689164de49ad8b0 (commit) via b5dd256d948947467b3059218a9347d0cf2c513b (commit) via 53d8be41183e663d340c0bc210dfe1f4ec97e711 (commit) via 296eb9ad4c36379c58e2a4461e765de329d23b5d (commit) via b2c6c3574e29d5076af43b4fe5a0220748a8d6ed (commit) via 393e0fbe630a698d9c8c972059e5de1da727f76a (commit) via 640709e7db054e90d5e6609eeb16a01af34b5a5a (commit) via d41582fc94e823cbfbb214e08e73ad214619a71a (commit) via 7519594000cbe175107612c0c7c9cdafd0ba06b0 (commit) via d93b8009f94af242cc38b6fcf0eb752325e73aa0 (commit) via 047af6e94e182601f4ff46467e5e682b1418560e (commit) via 4edcf4f169808a734a4ed869adc5b92825d69be8 (commit) via 07253b89190c850ced214b2d9415b6d84e2120c1 (commit) via ef6ccfda6038fdf726a337e81fbb378fa02e227f (commit) via 11dcf81c44148295fd04b98fd808224ff7b44ed7 (commit) via 4e7f67383f297d708efbb6640c9bee188a127d4e (commit) via 6e4e7c6547fb4d379d564340d015af20e4a4e892 (commit) via 48c713d32445620c81f20f6039490823827e9176 (commit) via 17ddf126f0140be566d76de7b0718266da85f697 (commit) via 57132765e078a8654d1166d7d8a1c29ec01f47b4 (commit) via f86f3e21d0d979d1eab6e0196086e259a2e2b824 (commit) via 9ded2fad79d2bcf70ddd35dced11018161e80f5d (commit) via 685d69ad2932adde43f0ff5b25f7272c744d9e14 (commit) via 6b0328f24b705e35fdb253a04ac715851ca3a590 (commit) via 3e0441d87735241eb496b22bb8856bb29575b941 (commit) via fa501bc8262e4a0fa6207d351eef3bf6822748ef (commit) via 054a47c46d65a14e4acf3cca1ed683f70a15eb42 (commit) via 9ffb35386fb923a5959eec482bfa131aa3feaa18 (commit) via 17edfa41983c61574e897eda923c90fd33ba8ac3 (commit) via a19b811363422213fd0ac2d089f7585d9be73a42 (commit) via 6b3cd64d42740618e0df6507194076185c1d91e2 (commit) via 314613d1afd069dd896aa0d5112dfbf2b82af3c3 (commit) via 358ceee5d84723f60c2db5cdff52445d478d6a42 (commit) via d20927533014312ae4b6ef6c1a3da5daf4e60618 (commit) via ec0dbd044a06b9f7d6cd6d708d975b5dcb05babe (commit) via c412f40b5ac35ea7ca95ad45cc90d088e09fcb11 (commit) via d45aa38a068ef38331b5dab195c42502e3829eb0 (commit) via 60c272b69ae1c3363aba02488c04c83f66264251 (commit) via 754e39dd36cdeea4a15fca9ef9fa29f0fa8006d4 (commit) via 5d67e9025d1c7f1259477450831135667b6f1eeb (commit) via 344d149ae45251125f3dad038d9f10e531eb6fd1 (commit) via ad9327d936dbbad8d6c818b41fe7c93b7d6a76e6 (commit) via 6dec363028ad969fb1a7b160e42ab815ccbb60ca (commit) via b0b94cdec5bb201e64aac4b3877a1a635b9f1119 (commit) via 0dba1db9d5d9f2c555c718acde5ec550503fae6f (commit) via 0f23697eb0625c7c0eedbe46bbb98f62b6cd89c6 (commit) via 1f436c5803660c599b1c263f9a4a6924d72474bf (commit) via 7a67f5c599adfec5be97343293548b08b7637093 (commit) via 6cdd03ee1e12f6da3c995fd012cff4d6baea7686 (commit) via d0fbf3d4cb787691eda03c16eda5116ebabced80 (commit) via b361990007a4d40f5a0f682455bcea89efd7eecc (commit) via 01c836c951f99b0a26c8b5ac4e3c0587a920e26b (commit) via 1e56634faa44c9a26b0e7a4f529396d761f8833d (commit) via 60e74d2f19d33e5b8afc7f8834f36c5cb1d2c810 (commit) via 60f982aab4fc99bab5cafee1db148f61ba3b9d77 (commit) via 800c0e810520bd6fe2827c9c89b0b863df1592b9 (commit) via 9de7ae6e5ec46f87b318591c0e1a32f98df26c63 (commit) via 42461a2a01e314dffe8841bef329d44d180e0044 (commit) via 9c3bdbd584bf449ccc80565185839ccd7ab939a5 (commit) via 386f7c6e98a6ed2bb64915670b28aa7e95b517a6 (commit) via 060fd23313271df7c1c8f1c14a662edeff118a0e (commit) via 7b26768dfaf0af31b545672387c8f4fd15634df2 (commit) via 9628f0c00175ca53d5c58dbffbea8e89f5c6461a (commit) via 96d642c7b87e303813b75aaa3412f8e532d2b925 (commit) via 5de37a4a6474fa569e2ac28d5e9c164b6e7d2f46 (commit) via e1409101c99f7a3487990e9927e8bd0e275f564f (commit) via e258fe03968d27871d6a57e3f4571bc8fbba6b9b (commit) via df92617b7323978c0a8d589fd6b41fcc2c67613e (commit) via e44b0cb2f0d6d0065faabd510efdcfc6359a8025 (commit) via 18eec1153956c946ce48b33c3890e8862cdbd06c (commit) via d0b6c2da8b7fda317e11c66a4b133d4a88eaeef6 (commit) via 7e69e0851033bf9ebec398979236b1868d7667a7 (commit) via 8df52df84d04d8faa50ce940358845ff67fdc3e1 (commit) via 0d508b1ee1841aaf899c4cb32fb913b42358776c (commit) via 016daf0391f8f4bfda1d42b7c86516acca1f0b2b (commit) via 48dcb2f0556a6780e50c94ff2e50d5b7c705ac68 (commit) via add1ba92f716121830d91dc136e9eb0096ec9e53 (commit) via 1943dc6bd5820424352db08dd2d65fb5a3cb2ef6 (commit) via 192ab741ec65c96945893367bd3d04c08ca0f47a (commit) via 3976a1066afc89e23f4f7be2040c1e7835324f03 (commit) via a4b216711b982da7ba89ff2e16f3923254172817 (commit) via 4594880be7493096f9fe57eec46bf51a973257e2 (commit) via 5fd0ce61f71ff84c51e1ad25ebd53fd1e2444d8c (commit) via 86edb6660b8b938cf291e69cc73e01fc30c69809 (commit) via 7237d9489a5ed6224147c91c83fa828af88b1bf2 (commit) via 027bcee513788b5ab17c3328a14cb8ac8354ba00 (commit) via 5d6ba8f2daab9ebff570f36908d48defdf37d607 (commit) via 401737f9ff810fd053e523916ecc968a9a0b8328 (commit) via 48a58e91a6c50539260fb9744b98fb8857a8803c (commit) via 6ada7f2e9baab9a75084d162a8ea2114487b3291 (commit) via 6e1fd9269c6b65340dce9aff53b6d15ffca2baba (commit) via f3bb9fcf0c3aeceaf5a01051dde8079b51ecbd55 (commit) via 5731f6d5b1986a7ee13e83ff73971a9f44e0229a (commit) via 0be7d61abf970186b3a83cc6a2aebd3b208b0618 (commit) via 3f567a98470ffa812783a749f052ee1e6ae1d202 (commit) via 8af7a16be7290b84c233c5e7749600aa57c4a28a (commit) via 60c688c6c37e9867462950c2fb2be7f3aef756b4 (commit) via f3bbb37b253a1f4a26809d6f132b3996aa2e16fc (commit) via 54739743e5be7e1094699ebca24bdc14fecaae3a (commit) via 0a6dd27e86cf23e29f025da8553ed52cd4a4015c (commit) via dba09a3c217eddb087be5a6b61dbf5bc1e507b48 (commit) via ea6e5903e7e5feb9df7c904bd94b119e83d35e18 (commit) via e110ab9e218634b4aefec138a89ea856738f897f (commit) via 6702ace882318f17c31a4e4a5e3d1af03d48be1d (commit) via 75ce489c20cba483443324446db8894114dba557 (commit) via f1a4ecdc0c62b46c90df5e8d20e6f61d06063894 (commit) via c551ff588b48cc4c286922779651890da0f3c22c (commit) via dead049e0b4ff531866ef9bf362f3f5e8fb177aa (commit) via c798dc8573a205f90663e9983b793b21fea28521 (commit) via ff09abb8dbd8f71a445615c08da9d099b8a063db (commit) via cb8f26f199e18be231f40f523bfe64375e749e35 (commit) via a483b7eac257381a98deb750f516e3e699dfbce4 (commit) via 4e96dc02c3a305644d935550ae3dd01df61a45b0 (commit) via 720c217ed59af8247c1fe5d16b2b5ee6fcd050c1 (commit) via 60a7452811d779957eedc37992331c7c3deff9ed (commit) via 7986103940d455afe0c6757ada0d908a084e448e (commit) via e67eb42fa1a9f5ffa2f1ae9307706ddf5ec696e2 (commit) via e1d6ede019d5afadd978428493132154de747fc6 (commit) via 8e3b207ebb2243de44c910861c42e4dec4beaf60 (commit) via 4a4d62430be91f13588e62d71932d2f6332fcf2e (commit) via ba8aa6899d69068cfc5d04a5d21552fe45a3380c (commit) via 7f9783c2db342ea7fdb8a390713b427965aa635e (commit) from c1e087a9d3af74299d7681c9f9de59e5977a1539 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Auxiliary/bash-completion/cmake | 2 +- Auxiliary/cmake-mode.el | 2 +- Auxiliary/vim/cmake.vim.in | 4 +- Auxiliary/vim/extract-upper-case.pl | 5 + Auxiliary/vim/indent/cmake.vim | 20 +- Auxiliary/vim/syntax/cmake.vim | 26 +- CMakeLists.txt | 30 +- CTestCustom.cmake.in | 6 - CompileFlags.cmake | 4 + Copyright.txt | 2 +- Help/command/add_custom_command.rst | 6 +- Help/command/add_executable.rst | 18 +- Help/command/add_library.rst | 20 +- Help/command/add_subdirectory.rst | 2 +- Help/command/cmake_parse_arguments.rst | 2 +- Help/command/enable_language.rst | 8 +- Help/command/execute_process.rst | 6 +- Help/command/file.rst | 27 +- Help/command/find_package.rst | 2 +- Help/command/foreach.rst | 8 +- Help/command/install.rst | 20 +- Help/command/project.rst | 6 +- Help/command/target_compile_definitions.rst | 7 +- Help/command/target_compile_features.rst | 9 +- Help/command/target_compile_options.rst | 11 +- Help/command/target_include_directories.rst | 8 +- Help/command/target_link_libraries.rst | 3 +- Help/command/target_sources.rst | 7 +- Help/dev/maint.rst | 7 + Help/dev/testing.rst | 2 +- Help/generator/KDevelop3.rst | 25 - Help/generator/Visual Studio 15 2017.rst | 18 +- Help/manual/cmake-generator-expressions.7.rst | 48 +- Help/manual/cmake-generators.7.rst | 1 - Help/manual/cmake-modules.7.rst | 2 + Help/manual/cmake-policies.7.rst | 8 + Help/manual/cmake-properties.7.rst | 6 + Help/manual/cmake-qt.7.rst | 22 +- Help/manual/cmake-server.7.rst | 66 +- Help/manual/cmake-variables.7.rst | 14 + Help/manual/cmake.1.rst | 7 +- Help/manual/cpack.1.rst | 6 + Help/manual/ctest.1.rst | 308 +- Help/module/FetchContent.rst | 1 + Help/module/FindIconv.rst | 1 + Help/policy/CMP0037.rst | 9 +- Help/policy/CMP0072.rst | 26 + Help/prop_gbl/DEBUG_CONFIGURATIONS.rst | 7 +- Help/prop_gbl/JOB_POOLS.rst | 3 + Help/prop_sf/COMPILE_DEFINITIONS.rst | 10 + Help/prop_sf/COMPILE_FLAGS.rst | 6 +- Help/prop_sf/COMPILE_OPTIONS.rst | 17 + Help/prop_sf/GENERATED.rst | 23 +- Help/prop_sf/INCLUDE_DIRECTORIES.rst | 18 + Help/prop_sf/VS_SHADER_DISABLE_OPTIMIZATIONS.rst | 6 + Help/prop_sf/VS_SHADER_ENABLE_DEBUG.rst | 6 + Help/prop_tgt/AUTOGEN_PARALLEL.rst | 21 + Help/prop_tgt/AUTOMOC.rst | 6 +- Help/prop_tgt/AUTORCC.rst | 5 + Help/prop_tgt/AUTOUIC.rst | 3 + Help/prop_tgt/COMPILE_FLAGS.rst | 2 +- Help/prop_tgt/CUDA_SEPARABLE_COMPILATION.rst | 4 + Help/prop_tgt/IMPORTED_GLOBAL.rst | 22 + Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst | 2 +- Help/prop_tgt/LINK_FLAGS.rst | 5 +- Help/prop_tgt/OUTPUT_NAME.rst | 3 +- Help/release/3.11.rst | 278 ++ Help/release/3.4.rst | 2 +- Help/release/3.6.rst | 2 +- Help/release/3.7.rst | 2 +- Help/release/index.rst | 1 + Help/variable/CMAKE_AUTOGEN_PARALLEL.rst | 10 + Help/variable/CMAKE_AUTOMOC_MACRO_NAMES.rst | 2 +- Help/variable/CMAKE_BUILD_TYPE.rst | 4 +- Help/variable/CMAKE_CODEBLOCKS_COMPILER_ID.rst | 13 + Help/variable/CMAKE_CROSSCOMPILING.rst | 26 +- Help/variable/CMAKE_CUDA_SEPARABLE_COMPILATION.rst | 6 + Help/variable/CMAKE_EXTRA_GENERATOR.rst | 2 +- Help/variable/CMAKE_GENERATOR_INSTANCE.rst | 24 + Help/variable/CMAKE_INCLUDE_CURRENT_DIR.rst | 2 +- .../CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE.rst | 2 +- ...CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst | 29 + Help/variable/CMAKE_JOB_POOLS.rst | 6 + .../CMAKE_LANG_COMPILER_EXTERNAL_TOOLCHAIN.rst | 2 +- Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst | 3 +- Help/variable/CMAKE_LANG_FLAGS_CONFIG.rst | 4 + Help/variable/CMAKE_LANG_FLAGS_CONFIG_INIT.rst | 10 + Help/variable/CMAKE_LANG_FLAGS_DEBUG.rst | 5 +- Help/variable/CMAKE_LANG_FLAGS_DEBUG_INIT.rst | 9 +- Help/variable/CMAKE_LANG_FLAGS_INIT.rst | 8 +- Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL.rst | 6 +- Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL_INIT.rst | 9 +- Help/variable/CMAKE_LANG_FLAGS_RELEASE.rst | 5 +- Help/variable/CMAKE_LANG_FLAGS_RELEASE_INIT.rst | 9 +- Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO.rst | 6 +- .../CMAKE_LANG_FLAGS_RELWITHDEBINFO_INIT.rst | 9 +- .../CMAKE_LANG_GHS_KERNEL_FLAGS_CONFIG.rst | 5 + .../variable/CMAKE_LANG_GHS_KERNEL_FLAGS_DEBUG.rst | 5 +- .../CMAKE_LANG_GHS_KERNEL_FLAGS_MINSIZEREL.rst | 6 +- .../CMAKE_LANG_GHS_KERNEL_FLAGS_RELEASE.rst | 5 +- .../CMAKE_LANG_GHS_KERNEL_FLAGS_RELWITHDEBINFO.rst | 6 +- Help/variable/CMAKE_NETRC.rst | 9 + Help/variable/CMAKE_NETRC_FILE.rst | 9 + Help/variable/CMAKE_OSX_DEPLOYMENT_TARGET.rst | 10 +- Help/variable/CMAKE_OSX_VARIABLE.txt | 5 +- .../CMAKE_PROJECT_PROJECT-NAME_INCLUDE.rst | 2 +- Help/variable/CMAKE_SYSTEM_NAME.rst | 3 + ...CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY.rst | 9 + ...CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst | 11 + Help/variable/CTEST_RUN_CURRENT_SCRIPT.rst | 5 + Help/variable/LIBRARY_OUTPUT_PATH.rst | 2 +- Help/variable/MSVC.rst | 6 +- Help/variable/MSVC_VERSION.rst | 3 + .../AndroidTestUtilities/PushToAndroidDevice.cmake | 2 +- Modules/AutogenInfo.cmake.in | 37 - .../BasicConfigVersion-SameMinorVersion.cmake.in | 50 + Modules/CMakeASMInformation.cmake | 33 +- Modules/CMakeCInformation.cmake | 32 +- Modules/CMakeCSharpInformation.cmake | 58 +- Modules/CMakeCUDAInformation.cmake | 26 +- Modules/CMakeCXXInformation.cmake | 29 +- Modules/CMakeCommonLanguageInclude.cmake | 114 +- Modules/CMakeDetermineASMCompiler.cmake | 6 +- Modules/CMakeDetermineCCompiler.cmake | 2 +- Modules/CMakeDetermineCUDACompiler.cmake | 3 + Modules/CMakeDetermineCXXCompiler.cmake | 2 +- Modules/CMakeDetermineFortranCompiler.cmake | 2 +- Modules/CMakeDetermineSwiftCompiler.cmake | 2 + Modules/CMakeDetermineSystem.cmake | 2 +- Modules/CMakeExpandImportedTargets.cmake | 4 + Modules/CMakeFindBinUtils.cmake | 13 +- Modules/CMakeFindCodeBlocks.cmake | 3 + Modules/CMakeFindKDevelop3.cmake | 13 - Modules/CMakeFindPackageMode.cmake | 2 +- Modules/CMakeFindSublimeText2.cmake | 23 + Modules/CMakeFortranCompilerId.F.in | 41 +- Modules/CMakeFortranInformation.cmake | 35 +- Modules/CMakeGenericSystem.cmake | 2 +- Modules/CMakeInitializeConfigs.cmake | 39 + Modules/CMakeJavaInformation.cmake | 2 +- Modules/CMakePackageConfigHelpers.cmake | 12 +- Modules/CMakeRCInformation.cmake | 25 +- Modules/CMakeSystemSpecificInformation.cmake | 1 - Modules/CPack.cmake | 19 +- Modules/CPackComponent.cmake | 2 +- Modules/CPackDeb.cmake | 34 +- Modules/CPackIFW.cmake | 12 +- Modules/CPackRPM.cmake | 154 +- Modules/CPackWIX.cmake | 4 +- Modules/CTest.cmake | 2 +- Modules/CTestTargets.cmake | 5 +- Modules/CheckCCompilerFlag.cmake | 1 + Modules/CheckCSourceCompiles.cmake | 1 + Modules/CheckCSourceRuns.cmake | 2 + Modules/CheckCXXCompilerFlag.cmake | 1 + Modules/CheckCXXSourceCompiles.cmake | 2 + Modules/CheckCXXSourceRuns.cmake | 2 + Modules/CheckCXXSymbolExists.cmake | 1 + Modules/CheckFortranCompilerFlag.cmake | 1 + Modules/CheckFortranFunctionExists.cmake | 2 + Modules/CheckFortranSourceCompiles.cmake | 1 + Modules/CheckFunctionExists.cmake | 2 + Modules/CheckIPOSupported.cmake | 2 +- Modules/CheckIncludeFile.cmake | 5 + Modules/CheckIncludeFileCXX.cmake | 5 + Modules/CheckIncludeFiles.cmake | 45 +- Modules/CheckLanguage.cmake | 8 + Modules/CheckLibraryExists.cmake | 2 + Modules/CheckPrototypeDefinition.cmake | 4 +- Modules/CheckStructHasMember.cmake | 1 + Modules/CheckSymbolExists.cmake | 2 + Modules/CheckTypeSize.cmake | 6 +- Modules/CheckVariableExists.cmake | 2 + Modules/Compiler/Clang.cmake | 3 +- Modules/Compiler/Cray-C.cmake | 3 +- Modules/Compiler/Cray-CXX.cmake | 3 +- Modules/Compiler/Cray-Fortran.cmake | 7 +- Modules/Compiler/Cray.cmake | 7 + Modules/Compiler/CrayPrgEnv.cmake | 3 +- Modules/Compiler/IAR-FindBinUtils.cmake | 2 +- Modules/Compiler/IAR.cmake | 2 +- Modules/Compiler/Intel-C.cmake | 3 +- Modules/Compiler/Intel-CXX.cmake | 11 + Modules/Compiler/MSVC-ASM.cmake | 1 + Modules/Compiler/TI-C.cmake | 2 + Modules/Compiler/TI-CXX.cmake | 2 + Modules/Compiler/XL.cmake | 2 + Modules/DeployQt4.cmake | 14 +- Modules/Documentation.cmake | 2 +- Modules/ExternalProject-download.cmake.in | 2 + Modules/ExternalProject.cmake | 81 +- Modules/FeatureSummary.cmake | 2 +- Modules/FetchContent.cmake | 916 ++++++ Modules/FetchContent/CMakeLists.cmake.in | 21 + Modules/FindAVIFile.cmake | 10 +- Modules/FindBLAS.cmake | 85 +- Modules/FindBZip2.cmake | 2 + Modules/FindBoost.cmake | 100 +- Modules/FindCUDA.cmake | 91 +- Modules/FindCUDA/make2cmake.cmake | 2 +- Modules/FindCUDA/run_nvcc.cmake | 6 +- Modules/FindCxxTest.cmake | 2 +- Modules/FindDCMTK.cmake | 2 +- Modules/FindDevIL.cmake | 2 +- Modules/FindDoxygen.cmake | 64 +- Modules/FindFLEX.cmake | 2 +- Modules/FindFLTK.cmake | 378 +-- Modules/FindFLTK2.cmake | 29 +- Modules/FindFreetype.cmake | 7 +- Modules/FindGDAL.cmake | 21 - Modules/FindGIF.cmake | 8 - Modules/FindGTK.cmake | 7 +- Modules/FindGTK2.cmake | 2 - Modules/FindHDF5.cmake | 2 +- Modules/FindICU.cmake | 21 +- Modules/FindIconv.cmake | 133 + Modules/FindImageMagick.cmake | 9 + Modules/FindJNI.cmake | 8 +- Modules/FindJava.cmake | 34 +- Modules/FindKDE3.cmake | 3 +- Modules/FindLAPACK.cmake | 15 + Modules/FindLibLZMA.cmake | 2 +- Modules/FindLua50.cmake | 4 +- Modules/FindMPEG.cmake | 20 +- Modules/FindMPEG2.cmake | 20 +- Modules/FindMPI.cmake | 435 ++- Modules/FindMatlab.cmake | 6 +- Modules/FindOpenCL.cmake | 8 +- Modules/FindOpenGL.cmake | 54 +- Modules/FindOpenMP.cmake | 6 +- Modules/FindOpenSSL.cmake | 2 +- Modules/FindOpenThreads.cmake | 21 - Modules/FindPNG.cmake | 4 +- Modules/FindPerlLibs.cmake | 212 +- Modules/FindPike.cmake | 9 +- Modules/FindPkgConfig.cmake | 261 +- Modules/FindPostgreSQL.cmake | 2 +- Modules/FindPythonInterp.cmake | 3 + Modules/FindPythonLibs.cmake | 7 +- Modules/FindQt.cmake | 12 +- Modules/FindQt3.cmake | 35 +- Modules/FindQt4.cmake | 24 +- Modules/FindRuby.cmake | 24 +- Modules/FindSelfPackers.cmake | 8 - Modules/FindSquish.cmake | 3 - Modules/FindTCL.cmake | 53 +- Modules/FindTclStub.cmake | 2 +- Modules/FindUnixCommands.cmake | 24 - Modules/Findosg_functions.cmake | 21 - Modules/FindwxWidgets.cmake | 9 +- Modules/FindwxWindows.cmake | 7 +- Modules/GNUInstallDirs.cmake | 2 +- Modules/GenerateExportHeader.cmake | 9 +- Modules/GetPrerequisites.cmake | 2 - Modules/ITKCompatibility.cmake | 2 +- Modules/InstallRequiredSystemLibraries.cmake | 18 +- Modules/Platform/AIX-GNU.cmake | 4 +- Modules/Platform/Darwin-Clang.cmake | 15 + Modules/Platform/Windows-Flang-Fortran.cmake | 3 + Modules/Platform/Windows-MSVC.cmake | 6 +- Modules/Qt4Macros.cmake | 2 +- Modules/SelectLibraryConfigurations.cmake | 7 +- Modules/SquishTestScript.cmake | 2 +- Modules/UseEcos.cmake | 2 +- Modules/UseJava.cmake | 82 +- Modules/UseSWIG.cmake | 153 +- Modules/WriteBasicConfigVersionFile.cmake | 2 +- Modules/exportheader.cmake.in | 2 +- Source/CMakeLists.txt | 58 +- Source/CMakeVersion.cmake | 6 +- Source/CMakeVersion.rc.in | 37 + Source/CMakeVersionCompute.cmake | 10 + Source/CPack/IFW/cmCPackIFWGenerator.cxx | 15 +- Source/CPack/IFW/cmCPackIFWInstaller.cxx | 15 +- Source/CPack/IFW/cmCPackIFWInstaller.h | 4 + Source/CPack/WiX/cmCMakeToWixPath.cxx | 39 + Source/CPack/WiX/cmCMakeToWixPath.h | 12 + Source/CPack/WiX/cmCPackWIXGenerator.cxx | 41 +- Source/CPack/WiX/cmCPackWIXGenerator.h | 9 +- Source/CPack/WiX/cmWIXFilesSourceWriter.cxx | 4 +- Source/CPack/WiX/cmWIXPatchParser.cxx | 2 +- Source/CPack/bills-comments.txt | 2 +- Source/CPack/cmCPackArchiveGenerator.cxx | 11 +- Source/CPack/cmCPackDebGenerator.cxx | 4 +- Source/CPack/cmCPackDragNDropGenerator.cxx | 27 +- Source/CPack/cmCPackGenerator.cxx | 101 +- Source/CPack/cmCPackGenerator.h | 19 +- Source/CPack/cmCPackGeneratorFactory.cxx | 4 +- Source/CPack/cmCPackNSISGenerator.cxx | 33 +- Source/CPack/cmCPackOSXX11Generator.cxx | 7 +- Source/CPack/cmCPackPackageMakerGenerator.cxx | 10 +- Source/CPack/cmCPackProductBuildGenerator.cxx | 7 +- Source/CPack/cpack.cxx | 28 +- Source/CTest/cmCTestBatchTestHandler.cxx | 123 - Source/CTest/cmCTestBatchTestHandler.h | 33 - Source/CTest/cmCTestBuildAndTestHandler.cxx | 47 +- Source/CTest/cmCTestBuildAndTestHandler.h | 3 +- Source/CTest/cmCTestBuildHandler.cxx | 36 +- Source/CTest/cmCTestBuildHandler.h | 8 +- Source/CTest/cmCTestConfigureCommand.cxx | 2 +- Source/CTest/cmCTestConfigureHandler.cxx | 22 +- Source/CTest/cmCTestCoverageHandler.cxx | 79 +- Source/CTest/cmCTestGIT.cxx | 12 +- Source/CTest/cmCTestLaunch.cxx | 12 +- Source/CTest/cmCTestMemCheckHandler.cxx | 69 +- Source/CTest/cmCTestMultiProcessHandler.cxx | 162 +- Source/CTest/cmCTestMultiProcessHandler.h | 12 +- Source/CTest/cmCTestRunTest.cxx | 253 +- Source/CTest/cmCTestRunTest.h | 33 +- Source/CTest/cmCTestSVN.cxx | 4 +- Source/CTest/cmCTestScriptHandler.cxx | 96 +- Source/CTest/cmCTestScriptHandler.h | 13 +- Source/CTest/cmCTestStartCommand.cxx | 2 +- Source/CTest/cmCTestSubmitCommand.cxx | 2 +- Source/CTest/cmCTestSubmitHandler.cxx | 59 +- Source/CTest/cmCTestTestCommand.cxx | 10 +- Source/CTest/cmCTestTestHandler.cxx | 70 +- Source/CTest/cmCTestTestHandler.h | 17 +- Source/CTest/cmCTestUpdateHandler.cxx | 30 +- Source/CTest/cmCTestUploadCommand.cxx | 2 +- Source/CTest/cmCTestVC.cxx | 2 +- Source/CTest/cmParseCoberturaCoverage.cxx | 2 +- Source/CTest/cmParseGTMCoverage.cxx | 2 +- Source/CTest/cmParseMumpsCoverage.cxx | 2 +- Source/CTest/cmProcess.cxx | 736 ++++- Source/CTest/cmProcess.h | 94 +- Source/Checks/cm_cxx14_check.cmake | 36 + .../{cm_cxx14_cstdio.cpp => cm_cxx14_check.cpp} | 0 Source/Checks/cm_cxx14_cstdio.cmake | 33 - Source/Checks/cm_cxx17_check.cmake | 36 + Source/Checks/cm_cxx17_check.cpp | 7 + Source/Checks/cm_cxx_attribute_fallthrough.cxx | 11 - Source/Checks/cm_cxx_fallthrough.cxx | 11 - Source/Checks/cm_cxx_features.cmake | 7 - Source/Checks/cm_cxx_gnu_fallthrough.cxx | 11 - Source/CursesDialog/CMakeLists.txt | 26 +- Source/CursesDialog/ccmake.cxx | 1 + Source/LexerParser/cmCommandArgumentLexer.cxx | 21 +- Source/LexerParser/cmCommandArgumentLexer.in.l | 21 +- Source/Modules/FindLibUUID.cmake | 85 + Source/Modules/OverrideC.cmake | 3 + Source/Modules/OverrideCXX.cmake | 3 + Source/QtDialog/CMakeLists.txt | 6 +- Source/QtDialog/CMakeSetup.cxx | 1 + Source/QtDialog/CMakeSetupDialog.cxx | 36 +- Source/QtDialog/CMakeSetupDialog.h | 1 - Source/QtDialog/QCMake.cxx | 38 +- Source/QtDialog/QCMake.h | 8 + Source/QtDialog/RegexExplorer.cxx | 4 +- Source/bindexplib.cxx | 75 +- Source/cmAddCompileOptionsCommand.cxx | 2 +- Source/cmAddCustomCommandCommand.cxx | 161 +- Source/cmAddCustomTargetCommand.cxx | 45 +- Source/cmAddDefinitionsCommand.cxx | 2 +- Source/cmAddExecutableCommand.cxx | 57 +- Source/cmAddLibraryCommand.cxx | 49 +- Source/cmAddSubDirectoryCommand.cxx | 4 +- Source/cmAlgorithms.h | 77 +- Source/cmAuxSourceDirectoryCommand.cxx | 10 +- Source/cmCMakeHostSystemInformationCommand.cxx | 14 + Source/cmCMakeHostSystemInformationCommand.h | 2 +- Source/cmCPluginAPI.cxx | 8 +- Source/cmCTest.cxx | 207 +- Source/cmCTest.h | 44 +- Source/cmCacheManager.cxx | 80 +- Source/cmCacheManager.h | 19 +- Source/cmCommandArgumentParserHelper.cxx | 39 +- Source/cmCommandArgumentParserHelper.h | 19 +- Source/cmCommands.cxx | 2 +- Source/cmCommonTargetGenerator.cxx | 2 +- Source/cmComputeComponentGraph.cxx | 6 +- Source/cmComputeLinkDepends.cxx | 7 +- Source/cmComputeLinkInformation.cxx | 53 +- Source/cmComputeTargetDepends.cxx | 13 +- Source/cmConditionEvaluator.cxx | 2 +- Source/cmConfigure.cmake.h.in | 13 +- Source/cmConfigureFileCommand.cxx | 2 +- Source/cmConnection.cxx | 19 +- Source/cmConnection.h | 5 +- Source/cmConvertMSBuildXMLToJSON.py | 2 +- Source/cmCoreTryCompile.cxx | 30 +- Source/cmCoreTryCompile.h | 2 +- Source/cmCurl.cxx | 38 + Source/cmCurl.h | 2 + Source/cmCustomCommandGenerator.cxx | 11 +- Source/cmDependsC.cxx | 25 +- Source/cmDependsFortran.cxx | 76 +- Source/cmDependsFortran.h | 2 +- Source/cmDependsJavaParserHelper.cxx | 5 +- Source/cmDocumentation.cxx | 4 +- Source/cmDocumentationSection.cxx | 6 +- Source/cmDuration.cxx | 27 + Source/cmDuration.h | 24 + Source/cmELF.cxx | 3 +- Source/cmExecProgramCommand.cxx | 4 +- Source/cmExecuteProcessCommand.cxx | 2 +- Source/cmExpandedCommandArgument.cxx | 5 + Source/cmExpandedCommandArgument.h | 1 + Source/cmExportBuildAndroidMKGenerator.cxx | 3 +- Source/cmExportBuildFileGenerator.cxx | 2 +- Source/cmExportCommand.cxx | 10 +- Source/cmExportFileGenerator.cxx | 24 +- Source/cmExportInstallAndroidMKGenerator.h | 2 +- Source/cmExportInstallFileGenerator.cxx | 16 +- Source/cmExternalMakefileProjectGenerator.cxx | 7 + Source/cmExternalMakefileProjectGenerator.h | 5 +- Source/cmExtraCodeBlocksGenerator.cxx | 37 +- Source/cmExtraCodeLiteGenerator.cxx | 58 +- Source/cmExtraEclipseCDT4Generator.cxx | 4 +- Source/cmExtraKateGenerator.cxx | 16 +- Source/cmExtraKateGenerator.h | 3 +- Source/cmExtraSublimeTextGenerator.cxx | 100 +- Source/cmExtraSublimeTextGenerator.h | 6 + Source/cmFSPermissions.cxx | 34 + Source/cmFSPermissions.h | 45 + Source/cmFileCommand.cxx | 181 +- Source/cmFilePathChecksum.cxx | 10 +- Source/cmFilePathChecksum.h | 4 +- Source/cmFindCommon.cxx | 4 +- Source/cmFindLibraryCommand.cxx | 6 +- Source/cmFindPackageCommand.cxx | 21 +- Source/cmFindPathCommand.cxx | 4 +- Source/cmFindProgramCommand.cxx | 2 +- Source/cmForEachCommand.cxx | 5 +- Source/cmFortranParserImpl.cxx | 6 +- Source/cmGeneratedFileStream.cxx | 2 +- Source/cmGeneratorExpression.cxx | 18 +- Source/cmGeneratorExpression.h | 85 + Source/cmGeneratorExpressionEvaluationFile.cxx | 6 +- Source/cmGeneratorExpressionEvaluator.cxx | 7 +- Source/cmGeneratorExpressionLexer.cxx | 22 +- Source/cmGeneratorExpressionNode.cxx | 40 +- Source/cmGeneratorTarget.cxx | 63 +- Source/cmGetDirectoryPropertyCommand.cxx | 2 +- Source/cmGetPropertyCommand.cxx | 2 +- Source/cmGhsMultiTargetGenerator.cxx | 10 +- Source/cmGlobalGenerator.cxx | 393 ++- Source/cmGlobalGenerator.h | 30 +- Source/cmGlobalGhsMultiGenerator.cxx | 4 +- Source/cmGlobalKdevelopGenerator.cxx | 589 ---- Source/cmGlobalKdevelopGenerator.h | 81 - Source/cmGlobalNinjaGenerator.cxx | 9 +- Source/cmGlobalUnixMakefileGenerator3.cxx | 41 +- Source/cmGlobalUnixMakefileGenerator3.h | 3 - Source/cmGlobalVisualStudio10Generator.cxx | 17 +- Source/cmGlobalVisualStudio10Generator.h | 45 +- Source/cmGlobalVisualStudio11Generator.cxx | 14 +- Source/cmGlobalVisualStudio11Generator.h | 16 +- Source/cmGlobalVisualStudio12Generator.h | 18 +- Source/cmGlobalVisualStudio14Generator.cxx | 17 +- Source/cmGlobalVisualStudio14Generator.h | 16 +- Source/cmGlobalVisualStudio15Generator.cxx | 47 + Source/cmGlobalVisualStudio15Generator.h | 17 +- Source/cmGlobalVisualStudio71Generator.cxx | 37 +- Source/cmGlobalVisualStudio71Generator.h | 27 +- Source/cmGlobalVisualStudio7Generator.cxx | 111 +- Source/cmGlobalVisualStudio7Generator.h | 40 +- Source/cmGlobalVisualStudio8Generator.cxx | 67 +- Source/cmGlobalVisualStudio8Generator.h | 44 +- Source/cmGlobalVisualStudio9Generator.cxx | 6 +- Source/cmGlobalVisualStudio9Generator.h | 8 +- Source/cmGlobalVisualStudioGenerator.cxx | 151 +- Source/cmGlobalVisualStudioGenerator.h | 15 +- Source/cmGlobalXCodeGenerator.cxx | 530 ++-- Source/cmGlobalXCodeGenerator.h | 13 +- Source/cmGraphVizWriter.cxx | 4 +- Source/cmIDEOptions.cxx | 57 +- Source/cmIDEOptions.h | 20 +- Source/cmIncludeCommand.cxx | 4 +- Source/cmIncludeDirectoryCommand.cxx | 8 +- Source/cmIncludeExternalMSProjectCommand.cxx | 5 +- Source/cmInstallCommand.cxx | 15 +- Source/cmInstallCommandArguments.cxx | 4 +- Source/cmInstallDirectoryGenerator.cxx | 2 +- Source/cmInstallExportGenerator.cxx | 2 +- Source/cmInstallFilesCommand.cxx | 7 +- Source/cmInstallGenerator.cxx | 4 +- Source/cmInstallProgramsCommand.cxx | 4 +- Source/cmInstallTargetGenerator.cxx | 28 +- Source/cmLinkDirectoriesCommand.cxx | 2 +- Source/cmLinkedTree.h | 6 +- Source/cmListFileCache.cxx | 16 +- Source/cmListFileCache.h | 4 + Source/cmLoadCacheCommand.cxx | 2 +- Source/cmLocalCommonGenerator.cxx | 15 + Source/cmLocalCommonGenerator.h | 6 + Source/cmLocalGenerator.cxx | 198 +- Source/cmLocalGenerator.h | 51 +- Source/cmLocalNinjaGenerator.cxx | 17 +- Source/cmLocalNinjaGenerator.h | 5 - Source/cmLocalUnixMakefileGenerator3.cxx | 89 +- Source/cmLocalUnixMakefileGenerator3.h | 13 +- Source/cmLocalVisualStudio10Generator.cxx | 14 +- Source/cmLocalVisualStudio10Generator.h | 10 +- Source/cmLocalVisualStudio7Generator.cxx | 291 +- Source/cmLocalVisualStudio7Generator.h | 16 +- Source/cmLocalVisualStudioGenerator.cxx | 14 +- Source/cmLocalVisualStudioGenerator.h | 6 +- Source/cmLocalXCodeGenerator.cxx | 12 +- Source/cmLocalXCodeGenerator.h | 2 +- Source/cmMacroCommand.cxx | 3 +- Source/cmMakeDirectoryCommand.cxx | 4 +- Source/cmMakefile.cxx | 466 +-- Source/cmMakefile.h | 99 +- Source/cmMakefileExecutableTargetGenerator.cxx | 17 +- Source/cmMakefileLibraryTargetGenerator.cxx | 23 +- Source/cmMakefileTargetGenerator.cxx | 182 +- Source/cmMakefileTargetGenerator.h | 3 - Source/cmMakefileUtilityTargetGenerator.cxx | 11 +- Source/cmMessageCommand.cxx | 2 +- Source/cmNinjaNormalTargetGenerator.cxx | 35 +- Source/cmNinjaTargetGenerator.cxx | 96 +- Source/cmNinjaTargetGenerator.h | 3 + Source/cmOSXBundleGenerator.cxx | 14 +- Source/cmOrderDirectories.cxx | 2 +- Source/cmOutputConverter.cxx | 4 +- Source/cmOutputRequiredFilesCommand.cxx | 22 +- Source/cmParseArgumentsCommand.cxx | 26 +- Source/cmPipeConnection.cxx | 51 +- Source/cmPipeConnection.h | 4 +- Source/cmPolicies.h | 6 +- Source/cmProcessOutput.cxx | 2 +- Source/cmProjectCommand.cxx | 2 +- Source/cmQTWrapCPPCommand.cxx | 6 +- Source/cmQTWrapUICommand.cxx | 10 +- Source/cmQtAutoGen.cxx | 333 +-- Source/cmQtAutoGen.h | 54 +- Source/cmQtAutoGenDigest.h | 64 - Source/cmQtAutoGenInitializer.cxx | 1415 +++++++++ Source/cmQtAutoGenInitializer.h | 115 + Source/cmQtAutoGenerator.cxx | 634 ++++ Source/cmQtAutoGenerator.h | 252 ++ Source/cmQtAutoGeneratorInitializer.cxx | 1236 -------- Source/cmQtAutoGeneratorInitializer.h | 24 - Source/cmQtAutoGeneratorMocUic.cxx | 2028 +++++++++++++ Source/cmQtAutoGeneratorMocUic.h | 438 +++ Source/cmQtAutoGeneratorRcc.cxx | 638 +++++ Source/cmQtAutoGeneratorRcc.h | 103 + Source/cmQtAutoGenerators.cxx | 2335 --------------- Source/cmQtAutoGenerators.h | 248 -- Source/cmRemoveDefinitionsCommand.cxx | 2 +- Source/cmSearchPath.cxx | 4 +- Source/cmServer.cxx | 101 +- Source/cmServer.h | 13 +- Source/cmServerConnection.cxx | 71 +- Source/cmServerConnection.h | 6 +- Source/cmServerDictionary.h | 8 + Source/cmServerProtocol.cxx | 265 +- Source/cmServerProtocol.h | 1 + Source/cmSetCommand.cxx | 14 +- Source/cmSetPropertyCommand.cxx | 2 +- Source/cmSourceFile.cxx | 9 +- Source/cmSourceFile.h | 8 +- Source/cmSourceFileLocation.cxx | 36 +- Source/cmSourceFileLocation.h | 10 +- Source/cmSourceFileLocationKind.h | 15 + Source/cmSourceGroup.cxx | 57 +- Source/cmSourceGroup.h | 16 +- Source/cmSourceGroupCommand.cxx | 228 +- Source/cmSourceGroupCommand.h | 23 +- Source/cmStandardLexer.h | 2 +- Source/cmState.cxx | 14 +- Source/cmState.h | 7 +- Source/cmStateSnapshot.cxx | 6 + Source/cmSystemTools.cxx | 103 +- Source/cmSystemTools.h | 27 +- Source/cmTarget.cxx | 116 +- Source/cmTarget.h | 7 + Source/cmTargetCompileDefinitionsCommand.cxx | 13 +- Source/cmTargetCompileDefinitionsCommand.h | 1 - Source/cmTargetCompileFeaturesCommand.cxx | 13 +- Source/cmTargetCompileFeaturesCommand.h | 1 - Source/cmTargetCompileOptionsCommand.cxx | 13 +- Source/cmTargetCompileOptionsCommand.h | 1 - Source/cmTargetDepend.h | 2 +- Source/cmTargetIncludeDirectoriesCommand.cxx | 18 +- Source/cmTargetIncludeDirectoriesCommand.h | 1 - Source/cmTargetLinkLibrariesCommand.cxx | 207 +- Source/cmTargetLinkLibrariesCommand.h | 3 + Source/cmTargetPropCommandBase.cxx | 15 +- Source/cmTargetPropCommandBase.h | 1 - Source/cmTargetPropertyComputer.cxx | 8 + Source/cmTargetSourcesCommand.cxx | 9 +- Source/cmTargetSourcesCommand.h | 1 - Source/cmTestGenerator.cxx | 10 + Source/cmTestGenerator.h | 5 + Source/cmTimestamp.cxx | 8 +- Source/cmTryCompileCommand.cxx | 2 +- Source/cmTryRunCommand.cxx | 15 +- Source/cmUVHandlePtr.cxx | 227 ++ Source/cmUVHandlePtr.h | 222 ++ Source/cmUVSignalHackRAII.h | 44 + Source/cmUnsetCommand.cxx | 13 +- Source/cmUseMangledMesaCommand.cxx | 6 +- Source/cmUtilitySourceCommand.cxx | 4 +- Source/cmUtils.hxx | 2 +- Source/cmVS141CLFlagTable.h | 4 + Source/cmVSSetupHelper.cxx | 36 +- Source/cmVSSetupHelper.h | 4 + Source/cmVariableWatchCommand.cxx | 18 +- Source/cmVisualStudio10TargetGenerator.cxx | 822 +++--- Source/cmVisualStudio10TargetGenerator.h | 28 +- Source/cmVisualStudioGeneratorOptions.cxx | 120 +- Source/cmVisualStudioGeneratorOptions.h | 4 + Source/cmWriteFileCommand.cxx | 4 +- Source/cmXCodeObject.cxx | 26 +- Source/cmXCodeObject.h | 2 +- Source/cmXMLWriter.h | 18 + Source/cm_codecvt.cxx | 14 +- Source/cm_thread.hxx | 44 + Source/cmake.cxx | 201 +- Source/cmake.h | 33 +- Source/cmakemain.cxx | 60 +- Source/cmakexbuild.cxx | 7 +- Source/cmcmd.cxx | 65 +- Source/ctest.cxx | 3 +- Source/kwsys/CMakeLists.txt | 83 +- Source/kwsys/CommandLineArguments.cxx | 47 +- Source/kwsys/Configure.h.in | 3 - Source/kwsys/Configure.hxx.in | 33 + Source/kwsys/ConsoleBuf.hxx.in | 2 + Source/kwsys/Directory.cxx | 2 +- Source/kwsys/DynamicLoader.cxx | 19 +- Source/kwsys/DynamicLoader.hxx.in | 4 +- Source/kwsys/EncodingCXX.cxx | 12 +- Source/kwsys/Glob.cxx | 10 +- Source/kwsys/Process.h.in | 10 +- Source/kwsys/ProcessUNIX.c | 35 +- Source/kwsys/ProcessWin32.c | 20 +- Source/kwsys/RegularExpression.cxx | 313 +- Source/kwsys/RegularExpression.hxx.in | 233 +- Source/kwsys/SharedForward.h.in | 2 +- Source/kwsys/SystemInformation.cxx | 145 +- Source/kwsys/SystemInformation.hxx.in | 6 +- Source/kwsys/SystemTools.cxx | 250 +- Source/kwsys/SystemTools.hxx.in | 26 +- Source/kwsys/hash_map.hxx.in | 2 +- Source/kwsys/hash_set.hxx.in | 2 +- Source/kwsys/hashtable.hxx.in | 13 +- Source/kwsys/kwsysPlatformTestsC.c | 15 + Source/kwsys/kwsysPlatformTestsCXX.cxx | 2 +- Source/kwsys/testCommandLineArguments.cxx | 4 +- Source/kwsys/testCommandLineArguments1.cxx | 6 +- Source/kwsys/testConfigure.cxx | 30 + Source/kwsys/testEncoding.cxx | 9 +- Source/kwsys/testProcess.c | 32 +- Source/kwsys/testSystemTools.cxx | 98 +- Templates/TestDriver.cxx.in | 4 +- Tests/CFBundleTest/np_macmain.cpp | 2 +- Tests/CMakeBuildTest.cmake.in | 9 +- .../target_compile_definitions/CMakeLists.txt | 22 +- .../target_compile_definitions/consumer.c | 20 +- .../target_compile_definitions/consumer.cpp | 2 - .../target_compile_options/CMakeLists.txt | 23 +- .../target_compile_options/consumer.c | 20 +- .../target_compile_options/consumer.cpp | 2 - .../target_include_directories/CMakeLists.txt | 20 +- .../target_include_directories/consumer.c | 10 +- .../target_include_directories/consumer.cpp | 6 +- Tests/CMakeInstall.cmake | 13 +- Tests/CMakeLib/CMakeLists.txt | 23 +- Tests/CMakeLib/testEncoding.cxx | 2 +- Tests/CMakeLib/testUVRAII.cxx | 181 ++ Tests/CMakeLists.txt | 255 +- .../SelectLibraryConfigurations/CMakeLists.txt | 5 +- Tests/CMakeServerLib/CMakeLists.txt | 8 +- Tests/CMakeServerLib/testServerBuffering.cpp | 5 +- ...yResult-components-lintian-dpkgdeb-checks.cmake | 2 +- .../RunCPackVerifyResult-compression.cmake | 2 +- Tests/CTestConfig/CMakeLists.txt | 35 +- Tests/CTestConfig/dashboard.cmake.in | 4 +- Tests/CTestTest/test.cmake.in | 2 +- Tests/CTestTest2/test.cmake.in | 1 + Tests/CTestTestStopTime/GetDate.cmake | 2 +- Tests/CTestTestTimeout/timeout.cmake | 2 +- Tests/CheckFortran.cmake | 7 + Tests/Contracts/Home.cmake | 19 + Tests/Contracts/PLplot/CMakeLists.txt | 18 + Tests/Contracts/PLplot/Configure.cmake | 4 + Tests/Contracts/Trilinos/CMakeLists.txt | 19 +- Tests/Contracts/Trilinos/Configure.cmake | 7 + Tests/Contracts/Trilinos/EnvScript.cmake | 32 - Tests/Contracts/Trilinos/RunTest.cmake | 7 - Tests/Contracts/VTK/CMakeLists.txt | 19 +- Tests/Contracts/VTK/Configure.cmake | 3 + Tests/Contracts/VTK/RunTest.cmake | 3 - Tests/Contracts/cse-snapshot/CMakeLists.txt | 114 - Tests/Contracts/cse-snapshot/Dashboard.cmake.in | 76 - Tests/Contracts/cse-snapshot/RunTest.cmake | 3 - Tests/Cuda/CMakeLists.txt | 1 + Tests/Cuda/Complex/CMakeLists.txt | 2 +- Tests/Cuda/MixedStandardLevels/CMakeLists.txt | 14 + Tests/Cuda/MixedStandardLevels/main.cu | 10 + Tests/Cuda/ObjectLibrary/CMakeLists.txt | 11 +- Tests/Cuda/ObjectLibrary/Conflicts/CMakeLists.txt | 2 + Tests/Cuda/ObjectLibrary/Conflicts/static.cu | 17 + Tests/Cuda/ObjectLibrary/main.cpp | 20 +- Tests/Cuda/ObjectLibrary/static.cpp | 4 +- Tests/Cuda/ObjectLibrary/static.cu | 6 +- Tests/CudaOnly/CMakeLists.txt | 3 +- Tests/CudaOnly/GPUDebugFlag/CMakeLists.txt | 23 + Tests/CudaOnly/GPUDebugFlag/main.cu | 71 + Tests/CudaOnly/ResolveDeviceSymbols/CMakeLists.txt | 16 +- Tests/CudaOnly/ResolveDeviceSymbols/main.cu | 11 +- Tests/CudaOnly/SeparateCompilation/CMakeLists.txt | 9 +- Tests/CudaOnly/WithDefs/CMakeLists.txt | 19 +- Tests/CudaOnly/WithDefs/inc_cuda/inc_cuda.h | 1 + Tests/CudaOnly/WithDefs/main.notcu | 29 + Tests/CudaOnly/WithDefs/main_for_vs.cu | 1 - Tests/CustomCommandByproducts/CMakeLists.txt | 8 +- Tests/ExportImport/CMakeLists.txt | 5 +- Tests/ExternalOBJ/CMakeLists.txt | 2 +- Tests/FindBoost/CMakeLists.txt | 14 + Tests/FindBoost/Test/CMakeLists.txt | 11 +- Tests/FindBoost/TestFail/CMakeLists.txt | 18 + Tests/FindBoost/{Test => TestFail}/main.cxx | 0 Tests/FindDoxygen/CMakeLists.txt | 10 + Tests/FindDoxygen/QuotingTest/CMakeLists.txt | 34 + Tests/FindIconv/CMakeLists.txt | 10 + Tests/FindIconv/Test/CMakeLists.txt | 14 + Tests/FindIconv/Test/main.cxx | 52 + Tests/FindOpenGL/Test/CMakeLists.txt | 3 +- Tests/FindOpenSSL/rand/main.cc | 2 +- Tests/FindPackageTest/CMakeLists.txt | 91 +- Tests/FindPatch/Test/CMakeLists.txt | 4 +- Tests/Fortran/CMakeLists.txt | 2 +- Tests/FortranModules/CMakeLists.txt | 5 +- Tests/FortranModules/test_preprocess.F90 | 2 +- Tests/FortranModules/test_preprocess_module.F90 | 2 +- Tests/FortranOnly/CMakeLists.txt | 4 +- Tests/GeneratorExpression/CMakeLists.txt | 47 +- Tests/GeneratorExpression/srcgenex.c | 12 - Tests/GeneratorExpression/srcgenex.c.in | 12 + Tests/GeneratorExpression/srcgenex_includes.c.in | 12 + Tests/GeneratorExpression/srcgenex_includes.h.in | 7 + Tests/Java/CMakeLists.txt | 3 + Tests/JavaExportImport/CMakeLists.txt | 5 +- Tests/JavaNativeHeaders/CMakeLists.txt | 18 + Tests/JavaNativeHeaders/D.cpp | 10 + Tests/JavaNativeHeaders/D.java | 19 + Tests/JavaNativeHeaders/E.cpp | 10 + Tests/JavaNativeHeaders/E.java | 19 + Tests/JavaNativeHeaders/HelloWorld3.java | 15 + Tests/MacRuntimePath/CMakeLists.txt | 5 +- Tests/MissingInstall/CMakeLists.txt | 8 +- Tests/OutDir/CMakeLists.txt | 5 +- Tests/OutOfSource/CMakeLists.txt | 2 +- Tests/PrecompiledHeader/CMakeLists.txt | 5 +- Tests/Properties/CMakeLists.txt | 2 +- Tests/Qt4Autogen/CMakeLists.txt | 9 + Tests/Qt4Deploy/CMakeLists.txt | 7 +- Tests/Qt5Autogen/CMakeLists.txt | 6 + Tests/QtAutoUicInterface/CMakeLists.txt | 76 - Tests/QtAutogen/AutogenTest.cmake | 53 + Tests/QtAutogen/CMakeLists.txt | 233 -- Tests/QtAutogen/CommonTests.cmake | 44 + .../{complex => Complex}/Adir/CMakeLists.txt | 0 Tests/QtAutogen/{complex => Complex}/Adir/libA.cpp | 0 Tests/QtAutogen/{complex => Complex}/Adir/libA.h | 0 .../{complex => Complex}/Bdir/CMakeLists.txt | 0 Tests/QtAutogen/{complex => Complex}/Bdir/libB.cpp | 0 Tests/QtAutogen/{complex => Complex}/Bdir/libB.h | 0 Tests/QtAutogen/Complex/CMakeLists.txt | 85 + Tests/QtAutogen/{complex => Complex}/abc.cpp | 0 Tests/QtAutogen/{complex => Complex}/abc.h | 0 Tests/QtAutogen/{complex => Complex}/abc_p.h | 0 Tests/QtAutogen/{complex => Complex}/bar.cpp | 0 Tests/QtAutogen/{complex => Complex}/blub.cpp | 0 Tests/QtAutogen/{complex => Complex}/blub.h | 0 Tests/QtAutogen/{complex => Complex}/calwidget.cpp | 0 Tests/QtAutogen/{complex => Complex}/calwidget.h | 0 Tests/QtAutogen/{complex => Complex}/calwidget.ui | 0 .../QtAutogen/{complex => Complex}/codeeditor.cpp | 0 Tests/QtAutogen/{complex => Complex}/codeeditor.h | 0 .../QtAutogen/{complex => Complex}/debug_class.cpp | 0 Tests/QtAutogen/{complex => Complex}/debug_class.h | 0 .../QtAutogen/{complex => Complex}/debug_class.ui | 0 .../{complex => Complex}/debug_resource.qrc | 0 Tests/QtAutogen/{complex => Complex}/foo.cpp | 0 Tests/QtAutogen/{complex => Complex}/foo.h | 0 Tests/QtAutogen/{complex => Complex}/gadget.cpp | 0 Tests/QtAutogen/{complex => Complex}/gadget.h | 0 Tests/QtAutogen/{complex => Complex}/generated.cpp | 0 Tests/QtAutogen/{complex => Complex}/generated.h | 0 .../{complex => Complex}/generated.txt.in | 0 .../{complex => Complex}/generated_resource.qrc.in | 0 Tests/QtAutogen/{complex => Complex}/libC.cpp | 0 Tests/QtAutogen/{complex => Complex}/libC.h | 0 Tests/QtAutogen/{complex => Complex}/main.cpp | 0 .../{complex => Complex}/multiplewidgets.cpp | 0 .../{complex => Complex}/multiplewidgets.h | 0 .../{complex => Complex}/myinterface.h.in | 0 .../{complex => Complex}/myotherinterface.h.in | 0 .../{complex => Complex}/private_slot.cpp | 0 .../QtAutogen/{complex => Complex}/private_slot.h | 0 .../{complex => Complex}/resourcetester.cpp | 0 .../{complex => Complex}/resourcetester.h | 0 .../{complex => Complex}/second_resource.qrc | 0 .../{complex => Complex}/second_widget.cpp | 0 .../QtAutogen/{complex => Complex}/second_widget.h | 0 .../{complex => Complex}/second_widget.ui | 0 Tests/QtAutogen/{complex => Complex}/sub/bar.h | 0 .../{complex => Complex}/targetObjectsTest.cpp | 0 Tests/QtAutogen/{complex => Complex}/test.qrc | 0 Tests/QtAutogen/{complex => Complex}/widget1.ui | 0 Tests/QtAutogen/{complex => Complex}/widget2.ui | 0 Tests/QtAutogen/{complex => Complex}/xyz.cpp | 0 Tests/QtAutogen/{complex => Complex}/xyz.h | 0 Tests/QtAutogen/{complex => Complex}/yaf.cpp | 0 Tests/QtAutogen/{complex => Complex}/yaf.h | 0 Tests/QtAutogen/{complex => Complex}/yaf_p.h | 0 Tests/QtAutogen/DefinesTest/CMakeLists.txt | 13 + .../{defines_test => DefinesTest}/defines_test.cpp | 0 Tests/QtAutogen/MacOsFW/CMakeLists.txt | 21 + .../{macosFW => MacOsFW}/src/CMakeLists.txt | 0 .../{macosFW => MacOsFW}/src/macos_fw_lib.cpp | 0 .../{macosFW => MacOsFW}/src/macos_fw_lib.h | 0 .../{macosFW => MacOsFW}/test/CMakeLists.txt | 0 .../{macosFW => MacOsFW}/test/testMacosFWLib.cpp | 0 .../{macosFW => MacOsFW}/test/testMacosFWLib.h | 0 Tests/QtAutogen/MocCMP0071/CMakeLists.txt | 6 + Tests/QtAutogen/MocCMP0071/NEW/CMakeLists.txt | 16 + Tests/QtAutogen/MocCMP0071/OLD/CMakeLists.txt | 18 + Tests/QtAutogen/{mocCMP0071 => MocCMP0071}/Obj.cpp | 0 Tests/QtAutogen/{mocCMP0071 => MocCMP0071}/Obj.hpp | 0 Tests/QtAutogen/{mocCMP0071 => MocCMP0071}/Obj_p.h | 0 .../QtAutogen/{mocCMP0071 => MocCMP0071}/main.cpp | 0 Tests/QtAutogen/MocDepends/CMakeLists.txt | 139 + .../object_invalid.hpp.in | 0 .../{mocDepends => MocDepends}/object_valid.hpp.in | 0 .../{mocDepends => MocDepends}/simpleLib.cpp.in | 0 .../{mocDepends => MocDepends}/simpleLib.hpp.in | 0 .../{mocDepends => MocDepends}/testATDFile.cpp | 0 .../{mocDepends => MocDepends}/testATDTarget.cpp | 0 .../{mocDepends => MocDepends}/testGenFile.cpp | 0 .../{mocDepends => MocDepends}/testGenLib.cpp | 0 .../{mocDepends => MocDepends}/testGenLib.hpp | 0 .../{mocDepends => MocDepends}/testGenTarget.cpp | 0 Tests/QtAutogen/MocInclude/EObjA.cpp | 44 + .../QtAutogen/{mocInclude => MocInclude}/EObjA.hpp | 0 .../{mocInclude => MocInclude}/EObjAExtra.cpp | 0 .../{mocInclude => MocInclude}/EObjAExtra.hpp | 0 Tests/QtAutogen/MocInclude/EObjAExtra_p.hpp | 14 + Tests/QtAutogen/MocInclude/EObjA_p.hpp | 14 + Tests/QtAutogen/MocInclude/EObjB.cpp | 45 + .../QtAutogen/{mocInclude => MocInclude}/EObjB.hpp | 0 Tests/QtAutogen/MocInclude/EObjB_p.hpp | 14 + .../QtAutogen/{mocInclude => MocInclude}/LObjA.cpp | 0 .../QtAutogen/{mocInclude => MocInclude}/LObjA.hpp | 0 Tests/QtAutogen/MocInclude/LObjA_p.h | 14 + .../QtAutogen/{mocInclude => MocInclude}/LObjB.cpp | 0 .../QtAutogen/{mocInclude => MocInclude}/LObjB.hpp | 0 Tests/QtAutogen/MocInclude/LObjB_p.h | 14 + .../QtAutogen/{mocInclude => MocInclude}/ObjA.cpp | 0 .../QtAutogen/{mocInclude => MocInclude}/ObjA.hpp | 0 Tests/QtAutogen/MocInclude/ObjA_p.h | 14 + .../QtAutogen/{mocInclude => MocInclude}/ObjB.cpp | 0 .../QtAutogen/{mocInclude => MocInclude}/ObjB.hpp | 0 Tests/QtAutogen/MocInclude/ObjB_p.h | 14 + .../QtAutogen/{mocInclude => MocInclude}/SObjA.cpp | 0 .../QtAutogen/{mocInclude => MocInclude}/SObjA.hpp | 0 .../{mocInclude => MocInclude}/SObjB.cpp.in | 0 .../{mocInclude => MocInclude}/SObjB.hpp.in | 0 .../QtAutogen/{mocInclude => MocInclude}/SObjC.cpp | 0 .../QtAutogen/{mocInclude => MocInclude}/SObjC.hpp | 0 .../{mocInclude => MocInclude}/SObjCExtra.cpp | 0 .../{mocInclude => MocInclude}/SObjCExtra.hpp | 0 .../{mocInclude => MocInclude}/SObjCExtra.moc.in | 0 Tests/QtAutogen/MocInclude/shared.cmake | 71 + .../subExtra/EObjBExtra.cpp | 0 .../subExtra/EObjBExtra.hpp | 0 .../QtAutogen/MocInclude/subExtra/EObjBExtra_p.hpp | 14 + .../{mocInclude => MocInclude}/subGlobal/GObj.cpp | 0 .../{mocInclude => MocInclude}/subGlobal/GObj.hpp | 0 Tests/QtAutogen/MocInclude/subGlobal/GObj_p.hpp | 17 + Tests/QtAutogen/MocIncludeRelaxed/CMakeLists.txt | 20 + .../RMain.cpp | 0 .../RObjA.cpp | 0 .../RObjA.hpp | 0 .../RObjB.cpp | 0 .../RObjB.hpp | 0 .../RObjBExtra.hpp | 0 .../RObjC.cpp | 0 .../RObjC.hpp | 0 .../main.cpp | 0 Tests/QtAutogen/MocIncludeStrict/CMakeLists.txt | 10 + .../main.cpp | 0 Tests/QtAutogen/MocMacroName/CMakeLists.txt | 17 + .../CustomMacros.hpp | 0 Tests/QtAutogen/MocMacroName/Gadget.cpp | 6 + Tests/QtAutogen/MocMacroName/Gadget.hpp | 19 + Tests/QtAutogen/MocMacroName/Object.cpp | 10 + Tests/QtAutogen/MocMacroName/Object.hpp | 22 + .../Object1Aliased.cpp | 0 .../Object1Aliased.hpp | 0 .../Object2Aliased.cpp | 0 .../Object2Aliased.hpp | 0 .../{mocMacroName => MocMacroName}/main.cpp | 0 Tests/QtAutogen/MocOnly/CMakeLists.txt | 15 + Tests/QtAutogen/MocOnly/IncA.cpp | 19 + Tests/QtAutogen/MocOnly/IncA.hpp | 15 + Tests/QtAutogen/MocOnly/IncB.cpp | 19 + Tests/QtAutogen/MocOnly/IncB.hpp | 15 + .../{mocOnlySource => MocOnly}/StyleA.cpp | 0 Tests/QtAutogen/MocOnly/StyleA.hpp | 17 + .../{mocOnlySource => MocOnly}/StyleB.cpp | 0 Tests/QtAutogen/MocOnly/StyleB.hpp | 16 + Tests/QtAutogen/MocOnly/main.cpp | 14 + Tests/QtAutogen/MocOptions/CMakeLists.txt | 9 + Tests/QtAutogen/MocOptions/Object.cpp | 5 + Tests/QtAutogen/MocOptions/Object.hpp | 13 + Tests/QtAutogen/MocOptions/main.cpp | 7 + Tests/QtAutogen/MocSkipSource/CMakeLists.txt | 36 + .../{skipSource => MocSkipSource}/qItemA.cpp | 0 .../{skipSource => MocSkipSource}/qItemA.hpp | 0 .../{skipSource => MocSkipSource}/qItemB.cpp | 0 .../{skipSource => MocSkipSource}/qItemB.hpp | 0 .../{skipSource => MocSkipSource}/qItemC.cpp | 0 .../{skipSource => MocSkipSource}/qItemC.hpp | 0 .../{skipSource => MocSkipSource}/qItemD.cpp | 0 .../{skipSource => MocSkipSource}/qItemD.hpp | 0 Tests/QtAutogen/MocSkipSource/skipMoc.cpp | 16 + Tests/QtAutogen/ObjectLibrary/CMakeLists.txt | 18 + .../a/CMakeLists.txt | 0 .../{objectLibrary => ObjectLibrary}/a/classa.cpp | 0 .../{objectLibrary => ObjectLibrary}/a/classa.h | 0 .../{objectLibrary => ObjectLibrary}/b/classb.cpp | 0 .../{objectLibrary => ObjectLibrary}/b/classb.h | 0 .../{objectLibrary => ObjectLibrary}/main.cpp | 0 Tests/QtAutogen/Parallel/CMakeLists.txt | 10 + .../{sameName => Parallel}/aaa/bbb/data.qrc | 0 .../{sameName => Parallel}/aaa/bbb/item.cpp | 0 .../{sameName => Parallel}/aaa/bbb/item.hpp | 0 .../QtAutogen/{sameName => Parallel}/aaa/data.qrc | 0 .../QtAutogen/{sameName => Parallel}/aaa/item.cpp | 0 .../QtAutogen/{sameName => Parallel}/aaa/item.hpp | 0 Tests/QtAutogen/{sameName => Parallel}/aaa/view.ui | 0 .../{sameName => Parallel}/bbb/aaa/data.qrc | 0 .../{sameName => Parallel}/bbb/aaa/item.cpp | 0 .../{sameName => Parallel}/bbb/aaa/item.hpp | 0 .../QtAutogen/{sameName => Parallel}/bbb/data.qrc | 0 .../QtAutogen/{sameName => Parallel}/bbb/item.cpp | 0 .../QtAutogen/{sameName => Parallel}/bbb/item.hpp | 0 Tests/QtAutogen/{sameName => Parallel}/bbb/view.ui | 0 .../QtAutogen/{sameName => Parallel}/ccc/data.qrc | 0 .../QtAutogen/{sameName => Parallel}/ccc/item.cpp | 0 .../QtAutogen/{sameName => Parallel}/ccc/item.hpp | 0 Tests/QtAutogen/{sameName => Parallel}/ccc/view.ui | 0 Tests/QtAutogen/{sameName => Parallel}/data.qrc | 0 Tests/QtAutogen/{sameName => Parallel}/item.cpp | 0 Tests/QtAutogen/{sameName => Parallel}/item.hpp | 0 Tests/QtAutogen/{sameName => Parallel}/main.cpp | 0 Tests/QtAutogen/Parallel/parallel.cmake | 24 + Tests/QtAutogen/{sameName => Parallel}/view.ui | 0 Tests/QtAutogen/Parallel1/CMakeLists.txt | 10 + Tests/QtAutogen/Parallel2/CMakeLists.txt | 10 + Tests/QtAutogen/Parallel3/CMakeLists.txt | 10 + Tests/QtAutogen/Parallel4/CMakeLists.txt | 10 + Tests/QtAutogen/ParallelAUTO/CMakeLists.txt | 10 + Tests/QtAutogen/RccEmpty/CMakeLists.txt | 8 + Tests/QtAutogen/{ => RccEmpty}/rccEmpty.cpp | 0 Tests/QtAutogen/{ => RccEmpty}/rccEmptyRes.qrc | 0 Tests/QtAutogen/RccOffMocLibrary/CMakeLists.txt | 17 + Tests/QtAutogen/{ => RccOffMocLibrary}/empty.cpp | 0 Tests/QtAutogen/{ => RccOffMocLibrary}/empty.h | 0 .../{ => RccOffMocLibrary}/not_generated_file.qrc | 0 Tests/QtAutogen/RccOnly/CMakeLists.txt | 8 + Tests/QtAutogen/{ => RccOnly}/rccOnly.cpp | 0 Tests/QtAutogen/{ => RccOnly}/rccOnlyRes.qrc | 0 Tests/QtAutogen/RccSkipSource/CMakeLists.txt | 23 + Tests/QtAutogen/{ => RccSkipSource}/skipRcc.cpp | 0 .../{skipSource => RccSkipSource}/skipRccBad1.qrc | 0 .../{skipSource => RccSkipSource}/skipRccBad2.qrc | 0 .../{skipSource => RccSkipSource}/skipRccGood.qrc | 0 Tests/QtAutogen/RerunMocBasic/CMakeLists.txt | 65 + .../RerunMocBasic/MocBasic/CMakeLists.txt | 24 + .../RerunMocBasic/MocBasic}/input.txt | 0 Tests/QtAutogen/RerunMocBasic/MocBasic/main.cpp.in | 23 + .../RerunMocBasic/MocBasic}/res1.qrc | 0 .../RerunMocBasic/MocBasic}/test1a.h.in | 0 .../RerunMocBasic/MocBasic}/test1b.h.in | 0 .../RerunMocBasic}/dummy.cpp | 0 Tests/QtAutogen/RerunMocPlugin/CMakeLists.txt | 105 + .../RerunMocPlugin/MocPlugin/CMakeLists.txt | 31 + .../RerunMocPlugin/MocPlugin}/StyleA.cpp | 0 .../RerunMocPlugin/MocPlugin}/StyleA.hpp | 0 .../RerunMocPlugin/MocPlugin}/StyleA.json | 0 .../RerunMocPlugin/MocPlugin}/StyleA_Custom.json | 0 .../RerunMocPlugin/MocPlugin}/StyleB.cpp | 0 .../RerunMocPlugin/MocPlugin}/StyleB.hpp | 0 .../RerunMocPlugin/MocPlugin}/StyleC.cpp | 0 .../RerunMocPlugin/MocPlugin}/StyleC.hpp | 0 .../RerunMocPlugin/MocPlugin}/StyleD.cpp | 0 .../RerunMocPlugin/MocPlugin}/StyleD.hpp | 0 .../RerunMocPlugin/MocPlugin}/StyleE.cpp | 0 .../RerunMocPlugin/MocPlugin}/StyleE.hpp | 0 .../RerunMocPlugin/MocPlugin}/StyleEInclude.hpp | 0 .../RerunMocPlugin/MocPlugin}/UtilityMacros.hpp | 0 .../RerunMocPlugin/MocPlugin}/jsonIn/StyleB.json | 0 .../MocPlugin}/jsonIn/StyleB_Custom.json | 0 .../RerunMocPlugin/MocPlugin}/jsonIn/StyleC.json | 0 .../RerunMocPlugin/MocPlugin}/jsonIn/StyleD.json | 0 .../RerunMocPlugin/MocPlugin}/jsonIn/StyleE.json | 0 .../RerunMocPlugin/MocPlugin}/main.cpp | 0 .../RerunMocPlugin}/dummy.cpp | 0 Tests/QtAutogen/RerunRccDepends/CMakeLists.txt | 139 + .../RerunRccDepends/RccDepends/CMakeLists.txt | 33 + .../RerunRccDepends/RccDepends}/main.cpp | 0 .../RccDepends}/resGen/input.txt.in | 0 .../RccDepends}/resGen/inputAdded.txt.in | 0 .../RerunRccDepends/RccDepends}/resGenA.qrc.in | 0 .../RerunRccDepends/RccDepends}/resGenB.qrc.in | 0 .../RccDepends}/resPlain/input.txt.in | 0 .../RccDepends}/resPlain/inputAdded.txt.in | 0 .../RerunRccDepends/RccDepends}/resPlainA.qrc.in | 0 .../RerunRccDepends/RccDepends}/resPlainB.qrc.in | 0 .../RerunRccDepends}/dummy.cpp | 0 Tests/QtAutogen/SameName/CMakeLists.txt | 39 + .../{sameName => SameName}/aaa/bbb/data.qrc | 0 .../{sameName => SameName}/aaa/bbb/item.cpp | 0 .../{sameName => SameName}/aaa/bbb/item.hpp | 0 .../QtAutogen/{sameName => SameName}/aaa/data.qrc | 0 .../QtAutogen/{sameName => SameName}/aaa/item.cpp | 0 .../QtAutogen/{sameName => SameName}/aaa/item.hpp | 0 Tests/QtAutogen/{sameName => SameName}/aaa/view.ui | 0 .../{sameName => SameName}/bbb/aaa/data.qrc | 0 .../{sameName => SameName}/bbb/aaa/item.cpp | 0 .../{sameName => SameName}/bbb/aaa/item.hpp | 0 .../QtAutogen/{sameName => SameName}/bbb/data.qrc | 0 .../QtAutogen/{sameName => SameName}/bbb/item.cpp | 0 .../QtAutogen/{sameName => SameName}/bbb/item.hpp | 0 Tests/QtAutogen/{sameName => SameName}/bbb/view.ui | 0 .../QtAutogen/{sameName => SameName}/ccc/data.qrc | 0 .../QtAutogen/{sameName => SameName}/ccc/item.cpp | 0 .../QtAutogen/{sameName => SameName}/ccc/item.hpp | 0 Tests/QtAutogen/{sameName => SameName}/ccc/view.ui | 0 Tests/QtAutogen/{sameName => SameName}/data.qrc | 0 Tests/QtAutogen/{sameName => SameName}/item.cpp | 0 Tests/QtAutogen/{sameName => SameName}/item.hpp | 0 Tests/QtAutogen/{sameName => SameName}/main.cpp | 0 Tests/QtAutogen/{sameName => SameName}/view.ui | 0 Tests/QtAutogen/StaticLibraryCycle/CMakeLists.txt | 20 + Tests/QtAutogen/StaticLibraryCycle/a.cpp | 12 + Tests/QtAutogen/StaticLibraryCycle/a.h | 15 + .../b.cpp | 0 .../{staticLibraryCycle => StaticLibraryCycle}/b.h | 0 .../c.cpp | 0 .../{staticLibraryCycle => StaticLibraryCycle}/c.h | 0 .../main.cpp | 0 Tests/QtAutogen/TestMacros.cmake | 60 + Tests/QtAutogen/UicInclude/CMakeLists.txt | 11 + .../QtAutogen/{uicInclude => UicInclude}/PageC.ui | 0 .../QtAutogen/{uicInclude => UicInclude}/PageC2.ui | 0 .../{uicInclude => UicInclude}/dirA/PageA.ui | 0 .../{uicInclude => UicInclude}/dirB/PageB.ui | 0 .../{uicInclude => UicInclude}/dirB/PageB2.ui | 0 .../dirB/subB/PageBsub.ui | 0 .../QtAutogen/{uicInclude => UicInclude}/main.cpp | 0 .../QtAutogen/{uicInclude => UicInclude}/main.hpp | 0 .../{uicInclude => UicInclude}/subC/PageCsub.ui | 0 Tests/QtAutogen/UicInterface/CMakeLists.txt | 58 + .../UicInterface}/klocalizedstring.cpp | 0 .../UicInterface}/klocalizedstring.h | 0 .../UicInterface}/libwidget.cpp | 0 .../UicInterface}/libwidget.h | 0 .../UicInterface}/libwidget.ui | 0 .../UicInterface}/main.cpp | 0 .../UicInterface}/mywidget.cpp | 0 .../UicInterface}/mywidget.h | 0 .../UicInterface}/mywidget.ui | 0 Tests/QtAutogen/UicOnly/CMakeLists.txt | 8 + Tests/QtAutogen/UicOnly/UicOnly.cpp | 18 + Tests/QtAutogen/UicOnly/UicOnly.hpp | 15 + Tests/QtAutogen/UicOnly/main.cpp | 7 + Tests/QtAutogen/UicOnly/uiA.ui | 24 + Tests/QtAutogen/UicOnly/uiB.ui | 24 + Tests/QtAutogen/UicOnly/uiC.ui | 24 + Tests/QtAutogen/UicOnly/uiD.ui | 24 + Tests/QtAutogen/UicSkipSource/CMakeLists.txt | 22 + Tests/QtAutogen/UicSkipSource/skipUic.cpp | 22 + .../{skipSource => UicSkipSource}/skipUicGen.cpp | 0 .../{skipSource => UicSkipSource}/skipUicGen.hpp | 0 .../skipUicNoGen1.cpp | 0 .../skipUicNoGen1.hpp | 0 .../skipUicNoGen2.cpp | 0 .../skipUicNoGen2.hpp | 0 .../{skipSource => UicSkipSource}/ui_nogen1.h | 0 Tests/QtAutogen/UicSkipSource/ui_nogen2.h | 6 + .../{skipSource => UicSkipSource}/uigen1.ui | 0 .../{skipSource => UicSkipSource}/uigen2.ui | 0 Tests/QtAutogen/complex/CMakeLists.txt | 82 - Tests/QtAutogen/defines_test/CMakeLists.txt | 4 - Tests/QtAutogen/macosFW/CMakeLists.txt | 20 - Tests/QtAutogen/mocCMP0071/CMakeLists.txt | 4 - Tests/QtAutogen/mocCMP0071/NEW/CMakeLists.txt | 16 - Tests/QtAutogen/mocCMP0071/OLD/CMakeLists.txt | 18 - Tests/QtAutogen/mocDepends/CMakeLists.txt | 151 - Tests/QtAutogen/mocInclude/EObjA.cpp | 43 - Tests/QtAutogen/mocInclude/EObjAExtra_p.hpp | 12 - Tests/QtAutogen/mocInclude/EObjA_p.hpp | 12 - Tests/QtAutogen/mocInclude/EObjB.cpp | 44 - Tests/QtAutogen/mocInclude/EObjB_p.hpp | 12 - Tests/QtAutogen/mocInclude/LObjA_p.h | 12 - Tests/QtAutogen/mocInclude/LObjB_p.h | 12 - Tests/QtAutogen/mocInclude/ObjA_p.h | 12 - Tests/QtAutogen/mocInclude/ObjB_p.h | 12 - Tests/QtAutogen/mocInclude/shared.cmake | 71 - .../QtAutogen/mocInclude/subExtra/EObjBExtra_p.hpp | 12 - Tests/QtAutogen/mocInclude/subGlobal/GObj_p.hpp | 15 - Tests/QtAutogen/mocIncludeRelaxed/CMakeLists.txt | 17 - Tests/QtAutogen/mocIncludeStrict/CMakeLists.txt | 6 - Tests/QtAutogen/mocMacroName/CMakeLists.txt | 8 - Tests/QtAutogen/mocMacroName/Gadget.cpp | 6 - Tests/QtAutogen/mocMacroName/Gadget.hpp | 15 - Tests/QtAutogen/mocMacroName/Object.cpp | 9 - Tests/QtAutogen/mocMacroName/Object.hpp | 19 - Tests/QtAutogen/mocOnlySource/StyleA.hpp | 15 - Tests/QtAutogen/mocOnlySource/StyleB.hpp | 16 - Tests/QtAutogen/mocOnlySource/main.cpp | 9 - Tests/QtAutogen/objectLibrary/CMakeLists.txt | 14 - Tests/QtAutogen/sameName/CMakeLists.txt | 34 - Tests/QtAutogen/skipMoc.cpp | 16 - Tests/QtAutogen/skipSource/ui_nogen2.h | 6 - Tests/QtAutogen/skipUic.cpp | 22 - Tests/QtAutogen/staticLibraryCycle/CMakeLists.txt | 17 - Tests/QtAutogen/staticLibraryCycle/a.cpp | 7 - Tests/QtAutogen/staticLibraryCycle/a.h | 13 - Tests/QtAutogen/uicInclude/CMakeLists.txt | 8 - Tests/QtAutogen/uicOnlySource/uiconly.cpp | 18 - Tests/QtAutogen/uicOnlySource/uiconly.h | 20 - Tests/QtAutogen/uicOnlySource/uiconly.ui | 24 - Tests/QtAutogenRerun/CMakeLists.txt | 52 - Tests/QtAutogenRerun/defines_test/CMakeLists.txt | 4 - Tests/QtAutogenRerun/defines_test/defines_test.cpp | 38 - Tests/QtAutogenRerun/mocPlugin.cmake | 96 - Tests/QtAutogenRerun/mocPlugin/CMakeLists.txt | 35 - Tests/QtAutogenRerun/mocRerun.cmake | 60 - Tests/QtAutogenRerun/mocRerun/CMakeLists.txt | 33 - Tests/QtAutogenRerun/mocRerun/main.cpp.in | 18 - Tests/QtAutogenRerun/rccDepends.cmake | 131 - Tests/QtAutogenRerun/rccDepends/CMakeLists.txt | 41 - Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake | 2 +- Tests/RunCMake/BuildDepends/RunCMakeTest.cmake | 2 +- Tests/RunCMake/CMP0037/CMP0037-NEW-colon.cmake | 2 +- Tests/RunCMake/CMP0037/CMP0037-NEW-reserved.cmake | 2 +- Tests/RunCMake/CMP0037/CMP0037-NEW-space.cmake | 2 +- .../CMP0037/CMP0037-OLD-reserved-result.txt | 1 - .../CMP0037/CMP0037-OLD-reserved-stderr.txt | 10 + Tests/RunCMake/CMP0037/CMP0037-OLD-reserved.cmake | 2 +- .../RunCMake/CMP0037/CMP0037-OLD-space-result.txt | 1 - .../RunCMake/CMP0037/CMP0037-OLD-space-stderr.txt | 10 + Tests/RunCMake/CMP0037/CMP0037-OLD-space.cmake | 2 +- Tests/RunCMake/CMP0037/CMP0037-WARN-colon.cmake | 2 +- .../CMP0037/CMP0037-WARN-reserved-stderr.txt | 36 + Tests/RunCMake/CMP0037/CMP0037-WARN-reserved.cmake | 4 + Tests/RunCMake/CMP0037/CMP0037-WARN-space.cmake | 2 +- Tests/RunCMake/CMP0037/CMakeLists.txt | 2 +- .../NEW-cond-package-result.txt} | 0 Tests/RunCMake/CMP0037/NEW-cond-package-stderr.txt | 4 + Tests/RunCMake/CMP0037/NEW-cond-package.cmake | 5 + .../NEW-cond-package_source-result.txt} | 0 .../CMP0037/NEW-cond-package_source-stderr.txt | 5 + .../RunCMake/CMP0037/NEW-cond-package_source.cmake | 5 + .../NEW-cond-test-result.txt} | 0 Tests/RunCMake/CMP0037/NEW-cond-test-stderr.txt | 4 + Tests/RunCMake/CMP0037/NEW-cond-test.cmake | 5 + Tests/RunCMake/CMP0037/NEW-cond.cmake | 4 + Tests/RunCMake/CMP0037/OLD-cond-package-stderr.txt | 10 + Tests/RunCMake/CMP0037/OLD-cond-package.cmake | 5 + .../CMP0037/OLD-cond-package_source-stderr.txt | 10 + .../RunCMake/CMP0037/OLD-cond-package_source.cmake | 5 + Tests/RunCMake/CMP0037/OLD-cond-stderr.txt | 10 + Tests/RunCMake/CMP0037/OLD-cond-test-stderr.txt | 10 + Tests/RunCMake/CMP0037/OLD-cond-test.cmake | 5 + Tests/RunCMake/CMP0037/OLD-cond.cmake | 5 + Tests/RunCMake/CMP0037/RunCMakeTest.cmake | 17 + .../RunCMake/CMP0037/WARN-cond-package-stderr.txt | 11 + Tests/RunCMake/CMP0037/WARN-cond-package.cmake | 5 + .../CMP0037/WARN-cond-package_source-stderr.txt | 11 + .../CMP0037/WARN-cond-package_source.cmake | 5 + Tests/RunCMake/CMP0037/WARN-cond-test-stderr.txt | 11 + Tests/RunCMake/CMP0037/WARN-cond-test.cmake | 5 + Tests/RunCMake/CMP0037/WARN-cond.cmake | 4 + Tests/RunCMake/CMP0038/CMP0038-OLD-result.txt | 1 - Tests/RunCMake/CMP0038/CMP0038-OLD-stderr.txt | 10 + Tests/RunCMake/CMP0039/CMP0039-OLD-result.txt | 1 - Tests/RunCMake/CMP0039/CMP0039-OLD-stderr.txt | 10 + .../CMP0040/CMP0040-OLD-existing-target-result.txt | 1 - .../CMP0040/CMP0040-OLD-existing-target-stderr.txt | 10 + .../CMP0040/CMP0040-OLD-missing-target-result.txt | 1 - .../CMP0040/CMP0040-OLD-missing-target-stderr.txt | 10 + Tests/RunCMake/CMP0041/CMP0041-OLD-result.txt | 1 - Tests/RunCMake/CMP0041/CMP0041-OLD-stderr.txt | 10 + Tests/RunCMake/CMP0041/CMP0041-tid-OLD-result.txt | 1 - Tests/RunCMake/CMP0041/CMP0041-tid-OLD-stderr.txt | 10 + Tests/RunCMake/CMP0042/CMP0042-OLD-result.txt | 1 - Tests/RunCMake/CMP0042/CMP0042-OLD-stderr.txt | 10 + Tests/RunCMake/CMP0043/CMP0043-OLD-result.txt | 1 - Tests/RunCMake/CMP0043/CMP0043-OLD-stderr.txt | 10 + Tests/RunCMake/CMP0045/CMP0045-OLD-result.txt | 1 - Tests/RunCMake/CMP0045/CMP0045-OLD-stderr.txt | 10 + .../CMP0046-OLD-existing-dependency-stderr.txt | 10 + .../CMP0046-OLD-missing-dependency-stderr.txt | 10 + Tests/RunCMake/CMP0049/CMP0049-OLD-result.txt | 1 - Tests/RunCMake/CMP0049/CMP0049-OLD-stderr.txt | 10 + Tests/RunCMake/CMP0050/CMP0050-OLD-result.txt | 1 - Tests/RunCMake/CMP0050/CMP0050-OLD-stderr.txt | 10 + Tests/RunCMake/CMP0051/CMP0051-OLD-result.txt | 1 - Tests/RunCMake/CMP0051/CMP0051-OLD-stderr.txt | 13 +- Tests/RunCMake/CMP0053/CMP0053-OLD-stderr.txt | 13 +- Tests/RunCMake/CMP0054/CMP0054-OLD-stderr.txt | 11 +- .../CMP0054/CMP0054-keywords-OLD-stderr.txt | 11 +- .../CMP0054-policy-command-scope-stderr.txt | 11 +- .../CMP0054-policy-foreach-scope-stderr.txt | 55 +- .../CMP0054/CMP0054-policy-nested-if-stderr.txt | 11 +- .../CMP0054/CMP0054-policy-while-scope-stderr.txt | 55 +- Tests/RunCMake/CMP0060/CMP0060-Common.cmake | 3 +- Tests/RunCMake/CMP0060/CMP0060-WARN-ON-stderr.txt | 2 +- Tests/RunCMake/CMP0060/CMakeLists.txt | 3 +- Tests/RunCMake/CMakeLists.txt | 18 +- .../RunCMake/COMPILE_LANGUAGE-genex/CMakeLists.txt | 3 - .../CompileDefinitions-stderr-VS.txt | 8 - .../CompileDefinitions-stderr-Xcode.txt | 9 - .../CompileDefinitions.cmake | 5 - .../CompileOptions-stderr-VS.txt | 8 - .../COMPILE_LANGUAGE-genex/CompileOptions.cmake | 5 - .../IncludeDirectories-stderr-VS.txt | 8 - .../IncludeDirectories-stderr-Xcode.txt | 9 - .../IncludeDirectories.cmake | 5 - .../COMPILE_LANGUAGE-genex/RunCMakeTest.cmake | 20 - Tests/RunCMake/COMPILE_LANGUAGE-genex/main.cpp | 5 - .../CPack/ArchiveCommon/common_helpers.cmake | 17 +- Tests/RunCMake/CPack/CPackTestHelpers.cmake | 21 + Tests/RunCMake/CPack/DEB/Helpers.cmake | 15 +- Tests/RunCMake/CPack/README.txt | 23 +- Tests/RunCMake/CPack/RPM/Helpers.cmake | 23 +- Tests/RunCMake/CPack/RunCMakeTest.cmake | 3 +- Tests/RunCMake/CPack/STGZ/Helpers.cmake | 29 +- .../tests/CPACK_INSTALL_SCRIPT/ExpectedFiles.cmake | 2 +- .../CUSTOM_BINARY_SPEC_FILE/ExpectedFiles.cmake | 4 +- .../CPack/tests/CUSTOM_NAMES/ExpectedFiles.cmake | 6 +- .../CPack/tests/DEBUGINFO/ExpectedFiles.cmake | 10 +- Tests/RunCMake/CPack/tests/DEBUGINFO/test.cmake | 4 + .../ExpectedFiles.cmake | 2 +- .../tests/DEFAULT_PERMISSIONS/ExpectedFiles.cmake | 6 + .../tests/DEFAULT_PERMISSIONS/VerifyResult.cmake | 39 + .../invalid_CMAKE_var-stderr.txt | 1 + .../invalid_CPACK_var-stderr.txt | 1 + .../CPack/tests/DEFAULT_PERMISSIONS/test.cmake | 34 + .../CPack/tests/DEPENDENCIES/ExpectedFiles.cmake | 10 +- .../RunCMake/CPack/tests/DIST/ExpectedFiles.cmake | 2 +- .../CPack/tests/EMPTY_DIR/ExpectedFiles.cmake | 2 +- .../RunCMake/CPack/tests/EXTRA/ExpectedFiles.cmake | 6 +- .../tests/EXTRA_SLASH_IN_PATH/ExpectedFiles.cmake | 5 +- .../CPack/tests/EXTRA_SLASH_IN_PATH/test.cmake | 4 + .../CPack/tests/GENERATE_SHLIBS/VerifyResult.cmake | 7 +- .../CPack/tests/GENERATE_SHLIBS/test.cmake | 7 +- .../tests/INSTALL_SCRIPTS/ExpectedFiles.cmake | 4 +- .../CPack/tests/LONG_FILENAMES/ExpectedFiles.cmake | 2 +- .../CPack/tests/MAIN_COMPONENT/ExpectedFiles.cmake | 6 +- .../CPack/tests/MD5SUMS/ExpectedFiles.cmake | 2 +- .../CPack/tests/MINIMAL/ExpectedFiles.cmake | 2 +- .../tests/PACKAGE_CHECKSUM/ExpectedFiles.cmake | 2 +- .../ExpectedFiles.cmake | 2 + .../tests/PER_COMPONENT_FIELDS/ExpectedFiles.cmake | 6 +- .../tests/SINGLE_DEBUGINFO/ExpectedFiles.cmake | 16 +- .../CPack/tests/SOURCE_PACKAGE/ExpectedFiles.cmake | 1 + .../CPack/tests/SUGGESTS/ExpectedFiles.cmake | 2 +- .../CPack/tests/SUGGESTS/VerifyResult.cmake | 2 +- .../CPack/tests/SYMLINKS/ExpectedFiles.cmake | 11 +- .../CPack/tests/USER_FILELIST/ExpectedFiles.cmake | 2 +- .../CPack/tests/VERSION/ExpectedFiles.cmake | 2 +- Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake | 2 +- .../{ClangTidy => CacheNewline}/CMakeLists.txt | 0 .../RunCMake/CacheNewline/CacheNewline-check.cmake | 16 + .../RunCMake/CacheNewline/CacheNewline-stderr.txt | 2 + Tests/RunCMake/CacheNewline/CacheNewline.cmake | 5 + Tests/RunCMake/CacheNewline/RunCMakeTest.cmake | 3 + Tests/RunCMake/CacheNewline/cache-regex.txt | 6 + .../CheckIncludeFilesMissingLanguage-result.txt} | 0 .../CheckIncludeFilesMissingLanguage-stderr.txt | 8 + .../CheckIncludeFilesMissingLanguage.cmake | 3 + .../CheckModules/CheckIncludeFilesOk.cmake | 6 + .../CheckModules/CheckIncludeFilesOkNoC.cmake | 4 + .../CheckIncludeFilesUnknownArgument-result.txt} | 0 .../CheckIncludeFilesUnknownArgument-stderr.txt | 8 + .../CheckIncludeFilesUnknownArgument.cmake | 3 + .../CheckIncludeFilesUnknownLanguage-result.txt} | 0 .../CheckIncludeFilesUnknownLanguage-stderr.txt | 10 + .../CheckIncludeFilesUnknownLanguage.cmake | 3 + Tests/RunCMake/CheckModules/RunCMakeTest.cmake | 6 + ...C-Build-stdout.txt => Fortran-Build-stdout.txt} | 0 ...-stdout.txt => Fortran-launch-Build-stdout.txt} | 0 .../RunCMake/CompilerLauncher/Fortran-launch.cmake | 3 + Tests/RunCMake/CompilerLauncher/Fortran.cmake | 4 + Tests/RunCMake/CompilerLauncher/RunCMakeTest.cmake | 3 + Tests/RunCMake/CompilerLauncher/main.F | 2 + Tests/RunCMake/Cpplint/C-error-Build-result.txt | 2 +- .../Cpplint/C-error-launch-Build-result.txt | 2 +- Tests/RunCMake/Cpplint/CXX-error-Build-result.txt | 2 +- .../Cpplint/CXX-error-launch-Build-result.txt | 2 +- .../ExternalProject/CMAKE_CACHE_ARGS.cmake | 3 +- .../ExternalProject/CMAKE_CACHE_DEFAULT_ARGS.cmake | 3 +- .../RunCMake/ExternalProject/CMAKE_CACHE_mix.cmake | 3 +- Tests/RunCMake/ExternalProject/RunCMakeTest.cmake | 35 +- .../ExternalProject/Substitutions-build-stdout.txt | 7 + Tests/RunCMake/ExternalProject/Substitutions.cmake | 25 + Tests/RunCMake/ExternalProject/UsesTerminal.cmake | 3 +- .../{FindBoost => FetchContent}/CMakeLists.txt | 0 Tests/RunCMake/FetchContent/DirOverrides.cmake | 46 + .../FetchContent/DirectIgnoresDetails-stdout.txt | 1 + .../FetchContent/DirectIgnoresDetails.cmake | 12 + .../DownloadTwice-result.txt} | 0 .../RunCMake/FetchContent/DownloadTwice-stderr.txt | 1 + Tests/RunCMake/FetchContent/DownloadTwice.cmake | 9 + .../FetchContent/FirstDetailsWin-stdout.txt | 1 + Tests/RunCMake/FetchContent/FirstDetailsWin.cmake | 16 + Tests/RunCMake/FetchContent/GetProperties.cmake | 67 + .../MissingDetails-result.txt} | 0 .../FetchContent/MissingDetails-stderr.txt | 1 + Tests/RunCMake/FetchContent/MissingDetails.cmake | 3 + Tests/RunCMake/FetchContent/RunCMakeTest.cmake | 28 + Tests/RunCMake/FetchContent/SameGenerator.cmake | 17 + Tests/RunCMake/FetchContent/ScriptMode.cmake | 35 + Tests/RunCMake/FetchContent/VarDefinitions.cmake | 75 + .../COMPILE_LANGUAGE-genex-result.txt | 1 - .../File_Generate/COMPILE_LANGUAGE-genex.cmake | 8 +- .../File_Generate/CarryPermissions-result.txt | 1 - .../File_Generate/GenerateSource-result.txt | 1 - .../OutputNameMatchesOtherSources-result.txt | 1 - Tests/RunCMake/File_Generate/ReRunCMake-result.txt | 1 - Tests/RunCMake/File_Generate/RunCMakeTest.cmake | 18 +- .../File_Generate/WriteIfDifferent-result.txt | 1 - Tests/RunCMake/FindOpenGL/CMP0072-NEW-stdout.txt | 3 + Tests/RunCMake/FindOpenGL/CMP0072-NEW.cmake | 2 + Tests/RunCMake/FindOpenGL/CMP0072-OLD-stdout.txt | 3 + Tests/RunCMake/FindOpenGL/CMP0072-OLD.cmake | 2 + Tests/RunCMake/FindOpenGL/CMP0072-WARN-stderr.txt | 21 + Tests/RunCMake/FindOpenGL/CMP0072-WARN-stdout.txt | 3 + Tests/RunCMake/FindOpenGL/CMP0072-WARN.cmake | 1 + Tests/RunCMake/FindOpenGL/CMP0072-common.cmake | 13 + .../{MultiLint => FindOpenGL}/CMakeLists.txt | 0 Tests/RunCMake/FindOpenGL/RunCMakeTest.cmake | 5 + .../FindPkgConfig_IMPORTED_TARGET.cmake | 61 + .../FindPkgConfig_PKGCONFIG_PATH.cmake | 2 +- Tests/RunCMake/GenerateExportHeader/GEH.cmake | 12 +- .../GenerateExportHeader/RunCMakeTest.cmake | 4 +- .../includeguard/CMakeLists.txt | 19 + .../includeguard/libincludeguard.cpp | 0 .../GenerateExportHeader/includeguard/main.cpp.in | 10 + .../GenerateExportHeader/libshared/CMakeLists.txt | 2 - .../GenerateExportHeader/libstatic/CMakeLists.txt | 2 - .../reference/Empty/libshared_export.h | 2 +- .../reference/Empty/libstatic_export.h | 2 +- .../reference/MinGW/libshared_export.h | 2 +- .../reference/MinGW/libstatic_export.h | 2 +- .../reference/UNIX/libshared_export.h | 2 +- .../reference/UNIX/libstatic_export.h | 2 +- .../UNIX_DeprecatedOnly/libshared_export.h | 2 +- .../UNIX_DeprecatedOnly/libstatic_export.h | 2 +- .../reference/Win32-Clang/libshared_export.h | 2 +- .../reference/Win32-Clang/libstatic_export.h | 2 +- .../reference/Win32/libshared_export.h | 2 +- .../reference/Win32/libstatic_export.h | 2 +- .../reference/WinEmpty/libshared_export.h | 2 +- .../reference/WinEmpty/libstatic_export.h | 2 +- .../BadTargetTypeObject-stderr.txt | 6 +- .../GeneratorExpression/BadTargetTypeObject.cmake | 3 +- .../GeneratorExpression/CMP0044-WARN.cmake | 2 +- .../COMPILE_LANGUAGE-add_custom_command-stderr.txt | 2 +- .../COMPILE_LANGUAGE-add_custom_command.cmake | 8 +- .../COMPILE_LANGUAGE-add_custom_target-stderr.txt | 2 +- .../COMPILE_LANGUAGE-add_custom_target.cmake | 5 +- .../COMPILE_LANGUAGE-add_executable-stderr.txt | 2 +- .../COMPILE_LANGUAGE-add_executable.cmake | 3 - .../COMPILE_LANGUAGE-add_library-stderr.txt | 2 +- .../COMPILE_LANGUAGE-add_library.cmake | 3 - .../COMPILE_LANGUAGE-target_sources-stderr.txt | 2 +- .../COMPILE_LANGUAGE-target_sources.cmake | 5 +- .../NonValidTarget-CXX_COMPILER_ID-stderr.txt | 2 +- .../NonValidTarget-CXX_COMPILER_ID.cmake | 6 +- .../NonValidTarget-CXX_COMPILER_VERSION-stderr.txt | 2 +- .../NonValidTarget-CXX_COMPILER_VERSION.cmake | 6 +- .../NonValidTarget-C_COMPILER_ID-stderr.txt | 2 +- .../NonValidTarget-C_COMPILER_ID.cmake | 10 +- .../NonValidTarget-C_COMPILER_VERSION-stderr.txt | 2 +- .../NonValidTarget-C_COMPILER_VERSION.cmake | 10 +- .../NonValidTarget-TARGET_POLICY-stderr.txt | 2 +- .../NonValidTarget-TARGET_POLICY.cmake | 6 +- .../NonValidTarget-TARGET_PROPERTY-stderr.txt | 2 +- .../NonValidTarget-TARGET_PROPERTY.cmake | 6 +- .../TARGET_PROPERTY-SOURCES-check.cmake | 3 - .../ValidTarget-TARGET_PDB_FILE.cmake | 3 +- .../BadInstance-result.txt} | 0 .../GeneratorInstance/BadInstance-stderr.txt | 10 + .../GeneratorInstance/BadInstance-toolchain.cmake | 1 + .../BadInstance.cmake} | 0 .../BadInstanceToolchain-result.txt} | 0 .../BadInstanceToolchain-stderr.txt | 10 + .../BadInstanceToolchain.cmake} | 0 .../CMakeLists.txt | 0 .../GeneratorInstance/DefaultInstance.cmake | 13 + .../MissingInstance-result.txt} | 0 .../GeneratorInstance/MissingInstance-stderr.txt | 8 + .../MissingInstance-toolchain.cmake | 1 + .../MissingInstance.cmake} | 0 .../MissingInstanceToolchain-result.txt} | 0 .../MissingInstanceToolchain-stderr.txt | 8 + .../MissingInstanceToolchain.cmake} | 0 .../NoInstance-result.txt} | 0 .../GeneratorInstance/NoInstance-stderr.txt | 4 + Tests/RunCMake/GeneratorInstance/NoInstance.cmake | 7 + .../RunCMake/GeneratorInstance/RunCMakeTest.cmake | 22 + Tests/RunCMake/GoogleTest/RunCMakeTest.cmake | 2 +- .../BinInInstallPrefix-CMP0052-OLD-stderr.txt | 8 + .../SrcInInstallPrefix-CMP0052-OLD-stderr.txt | 8 + Tests/RunCMake/Make/IncludeRegexSubdir-check.cmake | 4 + Tests/RunCMake/Make/IncludeRegexSubdir.cmake | 3 + .../Make/IncludeRegexSubdir/CMakeLists.txt | 1 + Tests/RunCMake/Make/RunCMakeTest.cmake | 1 + .../RunCMake/ObjectLibrary/LinkObjRHS1-stderr.txt | 4 +- Tests/RunCMake/RunCMake.cmake | 20 +- Tests/RunCMake/RuntimePath/RunCMakeTest.cmake | 2 +- .../CMakeLists.txt | 0 .../RelativeIncludeDir-result.txt} | 0 .../SourceProperties/RelativeIncludeDir-stderr.txt | 4 + .../SourceProperties/RelativeIncludeDir.cmake | 4 + Tests/RunCMake/SourceProperties/RunCMakeTest.cmake | 3 + Tests/RunCMake/SourceProperties/empty.c | 5 + Tests/RunCMake/Syntax/CMP0053-At-OLD-stderr.txt | 13 +- .../RunCMake/TargetPolicies/PolicyList-stderr.txt | 1 + .../BadInvalidName-result.txt} | 0 .../BadInvalidName-stderr.txt | 50 + .../BadInvalidName.cmake | 8 + .../BadInvalidName1-result.txt | 1 - .../BadInvalidName1-stderr.txt | 8 - .../BadInvalidName1.cmake | 7 - .../BadInvalidName1/CMakeLists.txt | 2 + .../BadInvalidName2-result.txt | 1 - .../BadInvalidName2-stderr.txt | 8 - .../BadInvalidName2.cmake | 7 - .../BadInvalidName2/CMakeLists.txt | 2 + .../BadInvalidName3-result.txt | 1 - .../BadInvalidName3-stderr.txt | 8 - .../BadInvalidName3.cmake | 7 - .../BadInvalidName3/CMakeLists.txt | 2 + .../BadInvalidName4-result.txt | 1 - .../BadInvalidName4-stderr.txt | 8 - .../BadInvalidName4.cmake | 9 - .../BadInvalidName4/CMakeLists.txt | 2 + .../BadInvalidName5-result.txt | 1 - .../BadInvalidName5-stderr.txt | 9 - .../BadInvalidName5.cmake | 7 - .../BadInvalidName5/CMakeLists.txt | 2 + .../BadInvalidName6-result.txt | 1 - .../BadInvalidName6-stderr.txt | 8 - .../BadInvalidName6.cmake | 7 - .../BadInvalidName6/CMakeLists.txt | 2 + .../BadInvalidName7-result.txt | 1 - .../BadInvalidName7-stderr.txt | 8 - .../BadInvalidName7.cmake | 9 - .../BadInvalidName7/CMakeLists.txt | 2 + .../BadInvalidName8-result.txt | 1 - .../BadInvalidName8-stderr.txt | 8 - .../BadInvalidName8.cmake | 7 - .../BadInvalidName8/CMakeLists.txt | 2 + .../BadSelfReference-result.txt} | 0 .../BadSelfReference-stderr.txt | 37 + .../BadSelfReference.cmake | 6 + .../BadSelfReference1-result.txt | 1 - .../BadSelfReference1-stderr.txt | 6 - .../BadSelfReference1.cmake | 7 - .../BadSelfReference1/CMakeLists.txt | 2 + .../BadSelfReference2-result.txt | 1 - .../BadSelfReference2-stderr.txt | 6 - .../BadSelfReference2.cmake | 9 - .../BadSelfReference2/CMakeLists.txt | 2 + .../BadSelfReference3-result.txt | 1 - .../BadSelfReference3-stderr.txt | 6 - .../BadSelfReference3.cmake | 8 - .../BadSelfReference3/CMakeLists.txt | 2 + .../BadSelfReference4-result.txt | 1 - .../BadSelfReference4-stderr.txt | 6 - .../BadSelfReference4.cmake | 10 - .../BadSelfReference4/CMakeLists.txt | 2 + .../BadSelfReference5-result.txt | 1 - .../BadSelfReference5-stderr.txt | 6 - .../BadSelfReference5.cmake | 10 - .../BadSelfReference5/CMakeLists.txt | 2 + .../BadSelfReference6-result.txt | 1 - .../BadSelfReference6-stderr.txt | 6 - .../BadSelfReference6.cmake | 10 - .../BadSelfReference6/CMakeLists.txt | 2 + .../RunCMakeTest.cmake | 16 +- .../TargetPropertyGeneratorExpressions/main.cpp | 0 .../TargetSources/ConfigNotAllowed-stderr.txt | 2 - .../TargetSources/OriginDebugIDE-result.txt | 1 - .../TargetSources/OriginDebugIDE-stderr.txt | 40 - Tests/RunCMake/TargetSources/OriginDebugIDE.cmake | 4 - Tests/RunCMake/TargetSources/RunCMakeTest.cmake | 4 +- Tests/RunCMake/VS10Project/RunCMakeTest.cmake | 1 + .../VS10Project/VsCSharpWithoutSources-check.cmake | 5 + .../VS10Project/VsCSharpWithoutSources.cmake | 7 + Tests/RunCMake/XcodeProject/DeploymentTarget.c | 26 + Tests/RunCMake/XcodeProject/DeploymentTarget.cmake | 32 + .../PerConfigPerSourceDefinitions-result.txt} | 0 .../PerConfigPerSourceDefinitions-stderr.txt | 8 + .../PerConfigPerSourceDefinitions.cmake | 3 + .../PerConfigPerSourceIncludeDirs-result.txt} | 0 .../PerConfigPerSourceIncludeDirs-stderr.txt | 8 + .../PerConfigPerSourceIncludeDirs.cmake | 3 + .../PerConfigPerSourceOptions-result.txt} | 0 .../PerConfigPerSourceOptions-stderr.txt | 8 + .../XcodeProject/PerConfigPerSourceOptions.cmake | 3 + Tests/RunCMake/XcodeProject/RunCMakeTest.cmake | 22 + Tests/RunCMake/XcodeProject/XcodeBundles.cmake | 3 + .../XcodeGenerateTopLevelProjectOnly-check.cmake | 3 + .../XcodeGenerateTopLevelProjectOnly.cmake | 3 + .../XcodeProject/XcodeIOSInstallCombined.cmake | 3 + .../XcodeIOSInstallCombinedPrune.cmake | 3 + .../XcodeIOSInstallCombinedSingleArch.cmake | 3 + .../XcodeProject/subproject/CMakeLists.txt | 1 + Tests/RunCMake/add_executable/NoSources-stderr.txt | 2 +- .../NoSourcesButLinkObjects-stderr.txt | 9 +- .../add_executable/OnlyObjectSources-result.txt | 1 - .../add_executable/OnlyObjectSources-stderr.txt | 11 - Tests/RunCMake/add_executable/RunCMakeTest.cmake | 4 +- .../add_library/MODULEwithNoSources-stderr.txt | 7 +- .../MODULEwithNoSourcesButLinkObjects-stderr.txt | 7 +- .../MODULEwithOnlyObjectSources-stderr.txt | 1 - .../add_library/OBJECTwithNoSources-result.txt | 2 +- .../add_library/OBJECTwithNoSources-stderr.txt | 6 +- .../OBJECTwithNoSourcesButLinkObjects-stderr.txt | 3 +- .../OBJECTwithOnlyObjectSources-stderr.txt | 3 +- .../add_library/SHAREDwithNoSources-stderr.txt | 7 +- .../SHAREDwithNoSourcesButLinkObjects-stderr.txt | 7 +- .../SHAREDwithOnlyObjectSources-stderr.txt | 1 - .../add_library/STATICwithNoSources-stderr.txt | 7 +- .../STATICwithNoSourcesButLinkObjects-stderr.txt | 7 +- .../STATICwithOnlyObjectSources-stderr.txt | 1 - .../UNKNOWNwithNoSourcesButLinkObjects-result.txt | 1 - .../UNKNOWNwithNoSourcesButLinkObjects-stderr.txt | 5 - .../UNKNOWNwithNoSourcesButLinkObjects.cmake | 2 +- Tests/RunCMake/alias_targets/RunCMakeTest.cmake | 1 + .../imported-global-target-stderr.txt | 2 + .../alias_targets/imported-global-target.cmake | 46 + .../alias_targets/imported-target-stderr.txt | 12 +- Tests/RunCMake/alias_targets/imported-target.cmake | 44 +- Tests/RunCMake/ctest_fixtures/CMakeLists.txt.in | 6 +- .../FunctionScope-stdout.txt} | 0 Tests/RunCMake/ctest_start/RunCMakeTest.cmake | 2 + Tests/RunCMake/ctest_start/test.cmake.in | 10 +- ...ingUTF8-stderr.txt => EncodingUTF-8-stderr.txt} | 0 Tests/RunCMake/execute_process/RunCMakeTest.cmake | 1 + .../DOWNLOAD-netrc-bad-result.txt} | 0 Tests/RunCMake/file/DOWNLOAD-netrc-bad-stderr.txt | 19 + Tests/RunCMake/file/DOWNLOAD-netrc-bad.cmake | 15 + .../RunCMake/file/DOWNLOAD-netrc-bad.txt | 0 Tests/RunCMake/file/RunCMakeTest.cmake | 2 + .../UPLOAD-netrc-bad-result.txt} | 0 Tests/RunCMake/file/UPLOAD-netrc-bad-stderr.txt | 19 + Tests/RunCMake/file/UPLOAD-netrc-bad.cmake | 15 + .../RunCMake/file/UPLOAD-netrc-bad.txt | 0 .../BadRangeInFunction-result.txt} | 0 .../RunCMake/foreach/BadRangeInFunction-stderr.txt | 5 + Tests/RunCMake/foreach/BadRangeInFunction.cmake | 5 + .../RunCMake/{MultiLint => foreach}/CMakeLists.txt | 0 Tests/RunCMake/foreach/RunCMakeTest.cmake | 3 + Tests/RunCMake/get_property/RunCMakeTest.cmake | 4 + .../get_property/target_properties-stderr.txt | 8 +- .../RunCMake/get_property/target_properties.cmake | 7 + .../interface_library/global-interface-stderr.txt | 4 +- .../interface_library/target_commands-stderr.txt | 16 +- Tests/RunCMake/interface_library/whitelist.cmake | 10 + Tests/RunCMake/message/RunCMakeTest.cmake | 2 +- Tests/RunCMake/project/CMP0048-OLD-stderr.txt | 10 + .../project/ProjectDescription2-stderr.txt | 2 +- .../IMPORTED_GLOBAL-result.txt} | 0 .../set_property/IMPORTED_GLOBAL-stderr.txt | 61 + .../set_property/IMPORTED_GLOBAL-stdout.txt | 17 + Tests/RunCMake/set_property/IMPORTED_GLOBAL.cmake | 53 + .../set_property/IMPORTED_GLOBAL/CMakeLists.txt | 8 + Tests/RunCMake/set_property/RunCMakeTest.cmake | 1 + .../RunCMake/set_property/test.cpp | 0 .../imported_target-stderr.txt | 7 +- .../target_compile_features/imported_target.cmake | 10 +- .../invalid_args_on_interface-stderr.txt | 2 +- .../target_link_libraries/ImportedTarget.cmake | 2 + .../ImportedTargetFailure-result.txt} | 0 .../ImportedTargetFailure-stderr.txt | 5 + .../ImportedTargetFailure.cmake | 2 + .../MixedSignature-stderr.txt | 4 +- .../target_link_libraries/RunCMakeTest.cmake | 2 + .../RunCMake/test_include_dirs/RunCMakeTest.cmake | 2 +- Tests/Server/CMakeLists.txt | 12 +- Tests/Server/cmakelib.py | 190 +- Tests/Server/server-test.py | 172 +- Tests/SimpleInstall/CMakeLists.txt | 7 +- Tests/SimpleInstallS2/CMakeLists.txt | 7 +- Tests/SourceFileIncludeDirProperty/CMakeLists.txt | 15 + Tests/SourceFileIncludeDirProperty/main.c | 7 + Tests/SourceFileIncludeDirProperty/source/header.h | 2 + Tests/SourceFileIncludeDirProperty/target/header.h | 2 + Tests/SourceGroups/CMakeLists.txt | 10 +- Tests/SourceGroups/main.c | 7 +- Tests/SourceGroups/tree_empty_prefix_bar.c | 4 + Tests/SourceGroups/tree_empty_prefix_foo.c | 4 + Tests/StagingPrefix/CMakeLists.txt | 5 +- Tests/TryCompile/CMakeLists.txt | 4 +- Tests/VSGNUFortran/CMakeLists.txt | 5 +- Utilities/GitSetup/config.sample | 32 - Utilities/GitSetup/git-gerrit-push | 74 - Utilities/GitSetup/git-gitlab-push | 177 -- Utilities/GitSetup/setup-gerrit | 147 - Utilities/GitSetup/setup-gitlab | 140 - Utilities/GitSetup/setup-hooks | 4 +- Utilities/GitSetup/setup-ssh | 111 - Utilities/GitSetup/setup-stage | 82 - Utilities/GitSetup/setup-upstream | 104 - Utilities/GitSetup/tips | 4 +- Utilities/IWYU/mapping.imp | 10 + Utilities/KWIML/Copyright.txt | 2 +- Utilities/KWIML/include/kwiml/abi.h | 17 +- Utilities/KWIML/include/kwiml/int.h | 15 +- Utilities/KWIML/src/version.h.in | 2 +- Utilities/KWIML/test/test_int_format.h | 9 +- Utilities/Release/linux64_release.cmake | 7 +- Utilities/Release/upload_release.cmake | 2 +- Utilities/Release/win32_release.cmake | 26 +- Utilities/Release/win64_release.cmake | 23 +- Utilities/Scripts/update-curl.bash | 2 +- Utilities/Scripts/update-gitsetup.bash | 7 + Utilities/Scripts/update-libuv.bash | 2 + Utilities/cmcurl/CMake/Utilities.cmake | 2 +- Utilities/cmcurl/CMake/curl-config.cmake | 59 + Utilities/cmcurl/CMakeLists.txt | 31 +- Utilities/cmcurl/COPYING | 2 +- Utilities/cmcurl/include/curl/curl.h | 19 +- Utilities/cmcurl/include/curl/curlver.h | 6 +- Utilities/cmcurl/include/curl/system.h | 6 +- Utilities/cmcurl/lib/CMakeLists.txt | 19 +- Utilities/cmcurl/lib/Makefile.inc | 9 +- Utilities/cmcurl/lib/asyn-ares.c | 26 +- Utilities/cmcurl/lib/asyn-thread.c | 3 +- Utilities/cmcurl/lib/conncache.c | 333 ++- Utilities/cmcurl/lib/conncache.h | 32 +- Utilities/cmcurl/lib/connect.c | 125 +- Utilities/cmcurl/lib/connect.h | 7 +- Utilities/cmcurl/lib/content_encoding.c | 846 +++++- Utilities/cmcurl/lib/content_encoding.h | 45 +- Utilities/cmcurl/lib/cookie.c | 2 +- Utilities/cmcurl/lib/curl_addrinfo.c | 3 + Utilities/cmcurl/lib/curl_config.h.cmake | 6 +- Utilities/cmcurl/lib/curl_fnmatch.c | 36 +- Utilities/cmcurl/lib/curl_ntlm_core.c | 25 +- Utilities/cmcurl/lib/curl_path.c | 195 ++ Utilities/cmcurl/lib/curl_path.h | 44 + Utilities/cmcurl/lib/curl_setup.h | 15 +- Utilities/cmcurl/lib/curl_sha256.h | 32 + Utilities/cmcurl/lib/curlx.h | 12 +- Utilities/cmcurl/lib/easy.c | 122 +- Utilities/cmcurl/lib/file.c | 4 +- Utilities/cmcurl/lib/formdata.c | 2 +- Utilities/cmcurl/lib/ftp.c | 57 +- Utilities/cmcurl/lib/ftplistparser.c | 175 +- Utilities/cmcurl/lib/hostasyn.c | 10 +- Utilities/cmcurl/lib/hostcheck.c | 3 + Utilities/cmcurl/lib/hostip.c | 25 +- Utilities/cmcurl/lib/hostip4.c | 9 +- Utilities/cmcurl/lib/hostip6.c | 10 +- Utilities/cmcurl/lib/hostsyn.c | 10 +- Utilities/cmcurl/lib/http.c | 127 +- Utilities/cmcurl/lib/http2.c | 13 +- Utilities/cmcurl/lib/http_chunks.c | 42 +- Utilities/cmcurl/lib/http_proxy.c | 14 +- Utilities/cmcurl/lib/imap.c | 62 +- Utilities/cmcurl/lib/krb5.c | 3 +- Utilities/cmcurl/lib/ldap.c | 4 +- Utilities/cmcurl/lib/llist.c | 6 +- Utilities/cmcurl/lib/memdebug.c | 36 +- Utilities/cmcurl/lib/memdebug.h | 15 +- Utilities/cmcurl/lib/mime.c | 183 +- Utilities/cmcurl/lib/mime.h | 5 +- Utilities/cmcurl/lib/multi.c | 202 +- Utilities/cmcurl/lib/multihandle.h | 4 - Utilities/cmcurl/lib/openldap.c | 32 +- Utilities/cmcurl/lib/parsedate.c | 2 - Utilities/cmcurl/lib/pingpong.c | 23 +- Utilities/cmcurl/lib/pingpong.h | 4 +- Utilities/cmcurl/lib/pop3.c | 37 +- Utilities/cmcurl/lib/progress.c | 48 +- Utilities/cmcurl/lib/rand.c | 8 +- Utilities/cmcurl/lib/security.c | 2 - Utilities/cmcurl/lib/select.c | 12 +- Utilities/cmcurl/lib/sendf.c | 44 +- Utilities/cmcurl/lib/setopt.c | 2556 +++++++++++++++++ Utilities/cmcurl/lib/setopt.h | 29 + Utilities/cmcurl/lib/sha256.c | 262 ++ Utilities/cmcurl/lib/share.c | 6 +- Utilities/cmcurl/lib/share.h | 5 +- Utilities/cmcurl/lib/smb.c | 31 +- Utilities/cmcurl/lib/smb.h | 33 +- Utilities/cmcurl/lib/smtp.c | 45 +- Utilities/cmcurl/lib/socks.c | 4 +- Utilities/cmcurl/lib/speedcheck.c | 2 +- Utilities/cmcurl/lib/ssh-libssh.c | 2733 ++++++++++++++++++ Utilities/cmcurl/lib/ssh.c | 218 +- Utilities/cmcurl/lib/ssh.h | 69 +- Utilities/cmcurl/lib/strtoofft.c | 5 +- Utilities/cmcurl/lib/strtoofft.h | 10 +- Utilities/cmcurl/lib/telnet.c | 8 +- Utilities/cmcurl/lib/tftp.c | 4 +- Utilities/cmcurl/lib/timeval.c | 98 +- Utilities/cmcurl/lib/timeval.h | 27 +- Utilities/cmcurl/lib/transfer.c | 64 +- Utilities/cmcurl/lib/url.c | 3029 +++----------------- Utilities/cmcurl/lib/url.h | 16 +- Utilities/cmcurl/lib/urldata.h | 73 +- Utilities/cmcurl/lib/vauth/digest.c | 194 +- Utilities/cmcurl/lib/vauth/digest.h | 6 +- Utilities/cmcurl/lib/vauth/ntlm.c | 3 +- Utilities/cmcurl/lib/version.c | 65 +- Utilities/cmcurl/lib/vtls/axtls.c | 2 +- Utilities/cmcurl/lib/vtls/cyassl.c | 4 +- Utilities/cmcurl/lib/vtls/darwinssl.c | 96 +- Utilities/cmcurl/lib/vtls/gskit.c | 6 +- Utilities/cmcurl/lib/vtls/gtls.c | 2 +- Utilities/cmcurl/lib/vtls/mbedtls.c | 2 +- Utilities/cmcurl/lib/vtls/nss.c | 2 +- Utilities/cmcurl/lib/vtls/openssl.c | 88 +- Utilities/cmcurl/lib/vtls/polarssl.c | 2 +- Utilities/cmcurl/lib/vtls/schannel.c | 2 +- Utilities/cmcurl/lib/vtls/vtls.c | 25 +- Utilities/cmcurl/lib/vtls/vtls.h | 2 +- Utilities/cmlibuv/CMakeLists.txt | 3 +- Utilities/cmlibuv/LICENSE | 4 +- Utilities/cmlibuv/include/pthread-barrier.h | 1 + Utilities/cmlibuv/include/uv-errno.h | 12 + Utilities/cmlibuv/include/uv-os390.h | 3 + Utilities/cmlibuv/include/uv-unix.h | 96 + Utilities/cmlibuv/include/uv-version.h | 2 +- Utilities/cmlibuv/include/uv-win.h | 28 +- Utilities/cmlibuv/include/uv.h | 63 +- Utilities/cmlibuv/src/threadpool.c | 18 +- Utilities/cmlibuv/src/unix/aix-common.c | 292 ++ Utilities/cmlibuv/src/unix/aix.c | 242 +- Utilities/cmlibuv/src/unix/android-ifaddrs.c | 49 +- Utilities/cmlibuv/src/unix/atomic-ops.h | 5 +- Utilities/cmlibuv/src/unix/bsd-ifaddrs.c | 23 +- Utilities/cmlibuv/src/unix/core.c | 45 +- Utilities/cmlibuv/src/unix/freebsd.c | 87 +- Utilities/cmlibuv/src/unix/fs.c | 177 +- Utilities/cmlibuv/src/unix/fsevents.c | 28 +- Utilities/cmlibuv/src/unix/getaddrinfo.c | 30 + Utilities/cmlibuv/src/unix/ibmi.c | 112 + Utilities/cmlibuv/src/unix/internal.h | 15 +- Utilities/cmlibuv/src/unix/kqueue.c | 38 +- Utilities/cmlibuv/src/unix/linux-core.c | 14 +- Utilities/cmlibuv/src/unix/loop.c | 2 +- Utilities/cmlibuv/src/unix/netbsd.c | 57 +- Utilities/cmlibuv/src/unix/openbsd.c | 33 +- Utilities/cmlibuv/src/unix/os390-syscalls.c | 229 +- Utilities/cmlibuv/src/unix/os390-syscalls.h | 3 + Utilities/cmlibuv/src/unix/os390.c | 175 +- Utilities/cmlibuv/src/unix/pipe.c | 53 + Utilities/cmlibuv/src/unix/poll.c | 25 +- Utilities/cmlibuv/src/unix/process.c | 42 +- Utilities/cmlibuv/src/unix/proctitle.c | 35 +- Utilities/cmlibuv/src/unix/pthread-barrier.c | 121 - Utilities/cmlibuv/src/unix/signal.c | 7 +- Utilities/cmlibuv/src/unix/stream.c | 39 +- Utilities/cmlibuv/src/unix/sunos.c | 4 +- Utilities/cmlibuv/src/unix/tcp.c | 101 +- Utilities/cmlibuv/src/unix/thread.c | 197 +- Utilities/cmlibuv/src/unix/tty.c | 36 + Utilities/cmlibuv/src/unix/udp.c | 8 +- Utilities/cmlibuv/src/uv-data-getter-setters.c | 96 + Utilities/cmlibuv/src/win/dl.c | 55 +- Utilities/cmlibuv/src/win/error.c | 2 +- Utilities/cmlibuv/src/win/fs.c | 581 ++-- Utilities/cmlibuv/src/win/getaddrinfo.c | 71 + Utilities/cmlibuv/src/win/handle.c | 5 + Utilities/cmlibuv/src/win/internal.h | 1 - Utilities/cmlibuv/src/win/pipe.c | 137 +- Utilities/cmlibuv/src/win/process.c | 31 +- Utilities/cmlibuv/src/win/signal.c | 2 +- Utilities/cmlibuv/src/win/stream-inl.h | 3 +- Utilities/cmlibuv/src/win/tcp.c | 32 +- Utilities/cmlibuv/src/win/thread.c | 6 + Utilities/cmlibuv/src/win/timer.c | 2 +- Utilities/cmlibuv/src/win/tty.c | 121 +- Utilities/cmlibuv/src/win/udp.c | 51 +- Utilities/cmlibuv/src/win/util.c | 11 +- Utilities/cmlibuv/src/win/winapi.c | 10 + Utilities/cmlibuv/src/win/winapi.h | 26 + Utilities/cmlibuv/src/win/winsock.c | 28 + Utilities/cmlibuv/src/win/winsock.h | 3 + bootstrap | 61 +- 1798 files changed, 36441 insertions(+), 21483 deletions(-) delete mode 100644 Help/generator/KDevelop3.rst create mode 100644 Help/module/FetchContent.rst create mode 100644 Help/module/FindIconv.rst create mode 100644 Help/policy/CMP0072.rst create mode 100644 Help/prop_sf/COMPILE_OPTIONS.rst create mode 100644 Help/prop_sf/INCLUDE_DIRECTORIES.rst create mode 100644 Help/prop_sf/VS_SHADER_DISABLE_OPTIMIZATIONS.rst create mode 100644 Help/prop_sf/VS_SHADER_ENABLE_DEBUG.rst create mode 100644 Help/prop_tgt/AUTOGEN_PARALLEL.rst create mode 100644 Help/prop_tgt/IMPORTED_GLOBAL.rst create mode 100644 Help/release/3.11.rst create mode 100644 Help/variable/CMAKE_AUTOGEN_PARALLEL.rst create mode 100644 Help/variable/CMAKE_CODEBLOCKS_COMPILER_ID.rst create mode 100644 Help/variable/CMAKE_CUDA_SEPARABLE_COMPILATION.rst create mode 100644 Help/variable/CMAKE_GENERATOR_INSTANCE.rst create mode 100644 Help/variable/CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst create mode 100644 Help/variable/CMAKE_JOB_POOLS.rst create mode 100644 Help/variable/CMAKE_LANG_FLAGS_CONFIG.rst create mode 100644 Help/variable/CMAKE_LANG_FLAGS_CONFIG_INIT.rst create mode 100644 Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_CONFIG.rst create mode 100644 Help/variable/CMAKE_NETRC.rst create mode 100644 Help/variable/CMAKE_NETRC_FILE.rst create mode 100644 Help/variable/CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY.rst create mode 100644 Help/variable/CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst create mode 100644 Help/variable/CTEST_RUN_CURRENT_SCRIPT.rst delete mode 100644 Modules/AutogenInfo.cmake.in create mode 100644 Modules/BasicConfigVersion-SameMinorVersion.cmake.in delete mode 100644 Modules/CMakeFindKDevelop3.cmake create mode 100644 Modules/CMakeFindSublimeText2.cmake create mode 100644 Modules/CMakeInitializeConfigs.cmake create mode 100644 Modules/Compiler/MSVC-ASM.cmake create mode 100644 Modules/FetchContent.cmake create mode 100644 Modules/FetchContent/CMakeLists.cmake.in create mode 100644 Modules/FindIconv.cmake create mode 100644 Modules/Platform/Windows-Flang-Fortran.cmake create mode 100644 Source/CMakeVersion.rc.in create mode 100644 Source/CPack/WiX/cmCMakeToWixPath.cxx create mode 100644 Source/CPack/WiX/cmCMakeToWixPath.h delete mode 100644 Source/CTest/cmCTestBatchTestHandler.cxx delete mode 100644 Source/CTest/cmCTestBatchTestHandler.h create mode 100644 Source/Checks/cm_cxx14_check.cmake rename Source/Checks/{cm_cxx14_cstdio.cpp => cm_cxx14_check.cpp} (100%) delete mode 100644 Source/Checks/cm_cxx14_cstdio.cmake create mode 100644 Source/Checks/cm_cxx17_check.cmake create mode 100644 Source/Checks/cm_cxx17_check.cpp delete mode 100644 Source/Checks/cm_cxx_attribute_fallthrough.cxx delete mode 100644 Source/Checks/cm_cxx_fallthrough.cxx delete mode 100644 Source/Checks/cm_cxx_gnu_fallthrough.cxx create mode 100644 Source/Modules/FindLibUUID.cmake create mode 100644 Source/Modules/OverrideC.cmake create mode 100644 Source/Modules/OverrideCXX.cmake create mode 100644 Source/cmDuration.cxx create mode 100644 Source/cmDuration.h create mode 100644 Source/cmFSPermissions.cxx create mode 100644 Source/cmFSPermissions.h delete mode 100644 Source/cmGlobalKdevelopGenerator.cxx delete mode 100644 Source/cmGlobalKdevelopGenerator.h delete mode 100644 Source/cmQtAutoGenDigest.h create mode 100644 Source/cmQtAutoGenInitializer.cxx create mode 100644 Source/cmQtAutoGenInitializer.h create mode 100644 Source/cmQtAutoGenerator.cxx create mode 100644 Source/cmQtAutoGenerator.h delete mode 100644 Source/cmQtAutoGeneratorInitializer.cxx delete mode 100644 Source/cmQtAutoGeneratorInitializer.h create mode 100644 Source/cmQtAutoGeneratorMocUic.cxx create mode 100644 Source/cmQtAutoGeneratorMocUic.h create mode 100644 Source/cmQtAutoGeneratorRcc.cxx create mode 100644 Source/cmQtAutoGeneratorRcc.h delete mode 100644 Source/cmQtAutoGenerators.cxx delete mode 100644 Source/cmQtAutoGenerators.h create mode 100644 Source/cmSourceFileLocationKind.h create mode 100644 Source/cmUVHandlePtr.cxx create mode 100644 Source/cmUVHandlePtr.h create mode 100644 Source/cmUVSignalHackRAII.h create mode 100644 Source/cm_thread.hxx create mode 100644 Source/kwsys/testConfigure.cxx create mode 100644 Tests/CMakeLib/testUVRAII.cxx create mode 100644 Tests/Contracts/Home.cmake create mode 100644 Tests/Contracts/PLplot/CMakeLists.txt create mode 100644 Tests/Contracts/PLplot/Configure.cmake create mode 100644 Tests/Contracts/Trilinos/Configure.cmake delete mode 100644 Tests/Contracts/Trilinos/EnvScript.cmake delete mode 100644 Tests/Contracts/Trilinos/RunTest.cmake create mode 100644 Tests/Contracts/VTK/Configure.cmake delete mode 100644 Tests/Contracts/VTK/RunTest.cmake delete mode 100644 Tests/Contracts/cse-snapshot/CMakeLists.txt delete mode 100644 Tests/Contracts/cse-snapshot/Dashboard.cmake.in delete mode 100644 Tests/Contracts/cse-snapshot/RunTest.cmake create mode 100644 Tests/Cuda/MixedStandardLevels/CMakeLists.txt create mode 100644 Tests/Cuda/MixedStandardLevels/main.cu create mode 100644 Tests/Cuda/ObjectLibrary/Conflicts/CMakeLists.txt create mode 100644 Tests/Cuda/ObjectLibrary/Conflicts/static.cu create mode 100644 Tests/CudaOnly/GPUDebugFlag/CMakeLists.txt create mode 100644 Tests/CudaOnly/GPUDebugFlag/main.cu create mode 100644 Tests/CudaOnly/WithDefs/inc_cuda/inc_cuda.h delete mode 100644 Tests/CudaOnly/WithDefs/main_for_vs.cu create mode 100644 Tests/FindBoost/TestFail/CMakeLists.txt copy Tests/FindBoost/{Test => TestFail}/main.cxx (100%) create mode 100644 Tests/FindDoxygen/QuotingTest/CMakeLists.txt create mode 100644 Tests/FindIconv/CMakeLists.txt create mode 100644 Tests/FindIconv/Test/CMakeLists.txt create mode 100644 Tests/FindIconv/Test/main.cxx delete mode 100644 Tests/GeneratorExpression/srcgenex.c create mode 100644 Tests/GeneratorExpression/srcgenex.c.in create mode 100644 Tests/GeneratorExpression/srcgenex_includes.c.in create mode 100644 Tests/GeneratorExpression/srcgenex_includes.h.in create mode 100644 Tests/JavaNativeHeaders/CMakeLists.txt create mode 100644 Tests/JavaNativeHeaders/D.cpp create mode 100644 Tests/JavaNativeHeaders/D.java create mode 100644 Tests/JavaNativeHeaders/E.cpp create mode 100644 Tests/JavaNativeHeaders/E.java create mode 100644 Tests/JavaNativeHeaders/HelloWorld3.java create mode 100644 Tests/Qt4Autogen/CMakeLists.txt create mode 100644 Tests/Qt5Autogen/CMakeLists.txt delete mode 100644 Tests/QtAutoUicInterface/CMakeLists.txt create mode 100644 Tests/QtAutogen/AutogenTest.cmake delete mode 100644 Tests/QtAutogen/CMakeLists.txt create mode 100644 Tests/QtAutogen/CommonTests.cmake rename Tests/QtAutogen/{complex => Complex}/Adir/CMakeLists.txt (100%) rename Tests/QtAutogen/{complex => Complex}/Adir/libA.cpp (100%) rename Tests/QtAutogen/{complex => Complex}/Adir/libA.h (100%) rename Tests/QtAutogen/{complex => Complex}/Bdir/CMakeLists.txt (100%) rename Tests/QtAutogen/{complex => Complex}/Bdir/libB.cpp (100%) rename Tests/QtAutogen/{complex => Complex}/Bdir/libB.h (100%) create mode 100644 Tests/QtAutogen/Complex/CMakeLists.txt rename Tests/QtAutogen/{complex => Complex}/abc.cpp (100%) rename Tests/QtAutogen/{complex => Complex}/abc.h (100%) rename Tests/QtAutogen/{complex => Complex}/abc_p.h (100%) rename Tests/QtAutogen/{complex => Complex}/bar.cpp (100%) rename Tests/QtAutogen/{complex => Complex}/blub.cpp (100%) rename Tests/QtAutogen/{complex => Complex}/blub.h (100%) rename Tests/QtAutogen/{complex => Complex}/calwidget.cpp (100%) rename Tests/QtAutogen/{complex => Complex}/calwidget.h (100%) rename Tests/QtAutogen/{complex => Complex}/calwidget.ui (100%) rename Tests/QtAutogen/{complex => Complex}/codeeditor.cpp (100%) rename Tests/QtAutogen/{complex => Complex}/codeeditor.h (100%) rename Tests/QtAutogen/{complex => Complex}/debug_class.cpp (100%) rename Tests/QtAutogen/{complex => Complex}/debug_class.h (100%) rename Tests/QtAutogen/{complex => Complex}/debug_class.ui (100%) rename Tests/QtAutogen/{complex => Complex}/debug_resource.qrc (100%) rename Tests/QtAutogen/{complex => Complex}/foo.cpp (100%) rename Tests/QtAutogen/{complex => Complex}/foo.h (100%) rename Tests/QtAutogen/{complex => Complex}/gadget.cpp (100%) rename Tests/QtAutogen/{complex => Complex}/gadget.h (100%) rename Tests/QtAutogen/{complex => Complex}/generated.cpp (100%) rename Tests/QtAutogen/{complex => Complex}/generated.h (100%) rename Tests/QtAutogen/{complex => Complex}/generated.txt.in (100%) rename Tests/QtAutogen/{complex => Complex}/generated_resource.qrc.in (100%) rename Tests/QtAutogen/{complex => Complex}/libC.cpp (100%) rename Tests/QtAutogen/{complex => Complex}/libC.h (100%) rename Tests/QtAutogen/{complex => Complex}/main.cpp (100%) rename Tests/QtAutogen/{complex => Complex}/multiplewidgets.cpp (100%) rename Tests/QtAutogen/{complex => Complex}/multiplewidgets.h (100%) rename Tests/QtAutogen/{complex => Complex}/myinterface.h.in (100%) rename Tests/QtAutogen/{complex => Complex}/myotherinterface.h.in (100%) rename Tests/QtAutogen/{complex => Complex}/private_slot.cpp (100%) rename Tests/QtAutogen/{complex => Complex}/private_slot.h (100%) rename Tests/QtAutogen/{complex => Complex}/resourcetester.cpp (100%) rename Tests/QtAutogen/{complex => Complex}/resourcetester.h (100%) rename Tests/QtAutogen/{complex => Complex}/second_resource.qrc (100%) rename Tests/QtAutogen/{complex => Complex}/second_widget.cpp (100%) rename Tests/QtAutogen/{complex => Complex}/second_widget.h (100%) rename Tests/QtAutogen/{complex => Complex}/second_widget.ui (100%) rename Tests/QtAutogen/{complex => Complex}/sub/bar.h (100%) rename Tests/QtAutogen/{complex => Complex}/targetObjectsTest.cpp (100%) rename Tests/QtAutogen/{complex => Complex}/test.qrc (100%) rename Tests/QtAutogen/{complex => Complex}/widget1.ui (100%) rename Tests/QtAutogen/{complex => Complex}/widget2.ui (100%) rename Tests/QtAutogen/{complex => Complex}/xyz.cpp (100%) rename Tests/QtAutogen/{complex => Complex}/xyz.h (100%) rename Tests/QtAutogen/{complex => Complex}/yaf.cpp (100%) rename Tests/QtAutogen/{complex => Complex}/yaf.h (100%) rename Tests/QtAutogen/{complex => Complex}/yaf_p.h (100%) create mode 100644 Tests/QtAutogen/DefinesTest/CMakeLists.txt rename Tests/QtAutogen/{defines_test => DefinesTest}/defines_test.cpp (100%) create mode 100644 Tests/QtAutogen/MacOsFW/CMakeLists.txt rename Tests/QtAutogen/{macosFW => MacOsFW}/src/CMakeLists.txt (100%) rename Tests/QtAutogen/{macosFW => MacOsFW}/src/macos_fw_lib.cpp (100%) rename Tests/QtAutogen/{macosFW => MacOsFW}/src/macos_fw_lib.h (100%) rename Tests/QtAutogen/{macosFW => MacOsFW}/test/CMakeLists.txt (100%) rename Tests/QtAutogen/{macosFW => MacOsFW}/test/testMacosFWLib.cpp (100%) rename Tests/QtAutogen/{macosFW => MacOsFW}/test/testMacosFWLib.h (100%) create mode 100644 Tests/QtAutogen/MocCMP0071/CMakeLists.txt create mode 100644 Tests/QtAutogen/MocCMP0071/NEW/CMakeLists.txt create mode 100644 Tests/QtAutogen/MocCMP0071/OLD/CMakeLists.txt rename Tests/QtAutogen/{mocCMP0071 => MocCMP0071}/Obj.cpp (100%) rename Tests/QtAutogen/{mocCMP0071 => MocCMP0071}/Obj.hpp (100%) rename Tests/QtAutogen/{mocCMP0071 => MocCMP0071}/Obj_p.h (100%) rename Tests/QtAutogen/{mocCMP0071 => MocCMP0071}/main.cpp (100%) create mode 100644 Tests/QtAutogen/MocDepends/CMakeLists.txt rename Tests/QtAutogen/{mocDepends => MocDepends}/object_invalid.hpp.in (100%) rename Tests/QtAutogen/{mocDepends => MocDepends}/object_valid.hpp.in (100%) rename Tests/QtAutogen/{mocDepends => MocDepends}/simpleLib.cpp.in (100%) rename Tests/QtAutogen/{mocDepends => MocDepends}/simpleLib.hpp.in (100%) rename Tests/QtAutogen/{mocDepends => MocDepends}/testATDFile.cpp (100%) rename Tests/QtAutogen/{mocDepends => MocDepends}/testATDTarget.cpp (100%) rename Tests/QtAutogen/{mocDepends => MocDepends}/testGenFile.cpp (100%) rename Tests/QtAutogen/{mocDepends => MocDepends}/testGenLib.cpp (100%) rename Tests/QtAutogen/{mocDepends => MocDepends}/testGenLib.hpp (100%) rename Tests/QtAutogen/{mocDepends => MocDepends}/testGenTarget.cpp (100%) create mode 100644 Tests/QtAutogen/MocInclude/EObjA.cpp rename Tests/QtAutogen/{mocInclude => MocInclude}/EObjA.hpp (100%) rename Tests/QtAutogen/{mocInclude => MocInclude}/EObjAExtra.cpp (100%) rename Tests/QtAutogen/{mocInclude => MocInclude}/EObjAExtra.hpp (100%) create mode 100644 Tests/QtAutogen/MocInclude/EObjAExtra_p.hpp create mode 100644 Tests/QtAutogen/MocInclude/EObjA_p.hpp create mode 100644 Tests/QtAutogen/MocInclude/EObjB.cpp rename Tests/QtAutogen/{mocInclude => MocInclude}/EObjB.hpp (100%) create mode 100644 Tests/QtAutogen/MocInclude/EObjB_p.hpp rename Tests/QtAutogen/{mocInclude => MocInclude}/LObjA.cpp (100%) rename Tests/QtAutogen/{mocInclude => MocInclude}/LObjA.hpp (100%) create mode 100644 Tests/QtAutogen/MocInclude/LObjA_p.h rename Tests/QtAutogen/{mocInclude => MocInclude}/LObjB.cpp (100%) rename Tests/QtAutogen/{mocInclude => MocInclude}/LObjB.hpp (100%) create mode 100644 Tests/QtAutogen/MocInclude/LObjB_p.h rename Tests/QtAutogen/{mocInclude => MocInclude}/ObjA.cpp (100%) rename Tests/QtAutogen/{mocInclude => MocInclude}/ObjA.hpp (100%) create mode 100644 Tests/QtAutogen/MocInclude/ObjA_p.h rename Tests/QtAutogen/{mocInclude => MocInclude}/ObjB.cpp (100%) rename Tests/QtAutogen/{mocInclude => MocInclude}/ObjB.hpp (100%) create mode 100644 Tests/QtAutogen/MocInclude/ObjB_p.h rename Tests/QtAutogen/{mocInclude => MocInclude}/SObjA.cpp (100%) rename Tests/QtAutogen/{mocInclude => MocInclude}/SObjA.hpp (100%) rename Tests/QtAutogen/{mocInclude => MocInclude}/SObjB.cpp.in (100%) rename Tests/QtAutogen/{mocInclude => MocInclude}/SObjB.hpp.in (100%) rename Tests/QtAutogen/{mocInclude => MocInclude}/SObjC.cpp (100%) rename Tests/QtAutogen/{mocInclude => MocInclude}/SObjC.hpp (100%) rename Tests/QtAutogen/{mocInclude => MocInclude}/SObjCExtra.cpp (100%) rename Tests/QtAutogen/{mocInclude => MocInclude}/SObjCExtra.hpp (100%) rename Tests/QtAutogen/{mocInclude => MocInclude}/SObjCExtra.moc.in (100%) create mode 100644 Tests/QtAutogen/MocInclude/shared.cmake rename Tests/QtAutogen/{mocInclude => MocInclude}/subExtra/EObjBExtra.cpp (100%) rename Tests/QtAutogen/{mocInclude => MocInclude}/subExtra/EObjBExtra.hpp (100%) create mode 100644 Tests/QtAutogen/MocInclude/subExtra/EObjBExtra_p.hpp rename Tests/QtAutogen/{mocInclude => MocInclude}/subGlobal/GObj.cpp (100%) rename Tests/QtAutogen/{mocInclude => MocInclude}/subGlobal/GObj.hpp (100%) create mode 100644 Tests/QtAutogen/MocInclude/subGlobal/GObj_p.hpp create mode 100644 Tests/QtAutogen/MocIncludeRelaxed/CMakeLists.txt rename Tests/QtAutogen/{mocIncludeRelaxed => MocIncludeRelaxed}/RMain.cpp (100%) rename Tests/QtAutogen/{mocIncludeRelaxed => MocIncludeRelaxed}/RObjA.cpp (100%) rename Tests/QtAutogen/{mocIncludeRelaxed => MocIncludeRelaxed}/RObjA.hpp (100%) rename Tests/QtAutogen/{mocIncludeRelaxed => MocIncludeRelaxed}/RObjB.cpp (100%) rename Tests/QtAutogen/{mocIncludeRelaxed => MocIncludeRelaxed}/RObjB.hpp (100%) rename Tests/QtAutogen/{mocIncludeRelaxed => MocIncludeRelaxed}/RObjBExtra.hpp (100%) rename Tests/QtAutogen/{mocIncludeRelaxed => MocIncludeRelaxed}/RObjC.cpp (100%) rename Tests/QtAutogen/{mocIncludeRelaxed => MocIncludeRelaxed}/RObjC.hpp (100%) rename Tests/QtAutogen/{mocIncludeRelaxed => MocIncludeRelaxed}/main.cpp (100%) create mode 100644 Tests/QtAutogen/MocIncludeStrict/CMakeLists.txt rename Tests/QtAutogen/{mocIncludeStrict => MocIncludeStrict}/main.cpp (100%) create mode 100644 Tests/QtAutogen/MocMacroName/CMakeLists.txt rename Tests/QtAutogen/{mocMacroName => MocMacroName}/CustomMacros.hpp (100%) create mode 100644 Tests/QtAutogen/MocMacroName/Gadget.cpp create mode 100644 Tests/QtAutogen/MocMacroName/Gadget.hpp create mode 100644 Tests/QtAutogen/MocMacroName/Object.cpp create mode 100644 Tests/QtAutogen/MocMacroName/Object.hpp rename Tests/QtAutogen/{mocMacroName => MocMacroName}/Object1Aliased.cpp (100%) rename Tests/QtAutogen/{mocMacroName => MocMacroName}/Object1Aliased.hpp (100%) rename Tests/QtAutogen/{mocMacroName => MocMacroName}/Object2Aliased.cpp (100%) rename Tests/QtAutogen/{mocMacroName => MocMacroName}/Object2Aliased.hpp (100%) rename Tests/QtAutogen/{mocMacroName => MocMacroName}/main.cpp (100%) create mode 100644 Tests/QtAutogen/MocOnly/CMakeLists.txt create mode 100644 Tests/QtAutogen/MocOnly/IncA.cpp create mode 100644 Tests/QtAutogen/MocOnly/IncA.hpp create mode 100644 Tests/QtAutogen/MocOnly/IncB.cpp create mode 100644 Tests/QtAutogen/MocOnly/IncB.hpp rename Tests/QtAutogen/{mocOnlySource => MocOnly}/StyleA.cpp (100%) create mode 100644 Tests/QtAutogen/MocOnly/StyleA.hpp rename Tests/QtAutogen/{mocOnlySource => MocOnly}/StyleB.cpp (100%) create mode 100644 Tests/QtAutogen/MocOnly/StyleB.hpp create mode 100644 Tests/QtAutogen/MocOnly/main.cpp create mode 100644 Tests/QtAutogen/MocOptions/CMakeLists.txt create mode 100644 Tests/QtAutogen/MocOptions/Object.cpp create mode 100644 Tests/QtAutogen/MocOptions/Object.hpp create mode 100644 Tests/QtAutogen/MocOptions/main.cpp create mode 100644 Tests/QtAutogen/MocSkipSource/CMakeLists.txt rename Tests/QtAutogen/{skipSource => MocSkipSource}/qItemA.cpp (100%) rename Tests/QtAutogen/{skipSource => MocSkipSource}/qItemA.hpp (100%) rename Tests/QtAutogen/{skipSource => MocSkipSource}/qItemB.cpp (100%) rename Tests/QtAutogen/{skipSource => MocSkipSource}/qItemB.hpp (100%) rename Tests/QtAutogen/{skipSource => MocSkipSource}/qItemC.cpp (100%) rename Tests/QtAutogen/{skipSource => MocSkipSource}/qItemC.hpp (100%) rename Tests/QtAutogen/{skipSource => MocSkipSource}/qItemD.cpp (100%) rename Tests/QtAutogen/{skipSource => MocSkipSource}/qItemD.hpp (100%) create mode 100644 Tests/QtAutogen/MocSkipSource/skipMoc.cpp create mode 100644 Tests/QtAutogen/ObjectLibrary/CMakeLists.txt rename Tests/QtAutogen/{objectLibrary => ObjectLibrary}/a/CMakeLists.txt (100%) rename Tests/QtAutogen/{objectLibrary => ObjectLibrary}/a/classa.cpp (100%) rename Tests/QtAutogen/{objectLibrary => ObjectLibrary}/a/classa.h (100%) rename Tests/QtAutogen/{objectLibrary => ObjectLibrary}/b/classb.cpp (100%) rename Tests/QtAutogen/{objectLibrary => ObjectLibrary}/b/classb.h (100%) rename Tests/QtAutogen/{objectLibrary => ObjectLibrary}/main.cpp (100%) create mode 100644 Tests/QtAutogen/Parallel/CMakeLists.txt copy Tests/QtAutogen/{sameName => Parallel}/aaa/bbb/data.qrc (100%) copy Tests/QtAutogen/{sameName => Parallel}/aaa/bbb/item.cpp (100%) copy Tests/QtAutogen/{sameName => Parallel}/aaa/bbb/item.hpp (100%) copy Tests/QtAutogen/{sameName => Parallel}/aaa/data.qrc (100%) copy Tests/QtAutogen/{sameName => Parallel}/aaa/item.cpp (100%) copy Tests/QtAutogen/{sameName => Parallel}/aaa/item.hpp (100%) copy Tests/QtAutogen/{sameName => Parallel}/aaa/view.ui (100%) copy Tests/QtAutogen/{sameName => Parallel}/bbb/aaa/data.qrc (100%) copy Tests/QtAutogen/{sameName => Parallel}/bbb/aaa/item.cpp (100%) copy Tests/QtAutogen/{sameName => Parallel}/bbb/aaa/item.hpp (100%) copy Tests/QtAutogen/{sameName => Parallel}/bbb/data.qrc (100%) copy Tests/QtAutogen/{sameName => Parallel}/bbb/item.cpp (100%) copy Tests/QtAutogen/{sameName => Parallel}/bbb/item.hpp (100%) copy Tests/QtAutogen/{sameName => Parallel}/bbb/view.ui (100%) copy Tests/QtAutogen/{sameName => Parallel}/ccc/data.qrc (100%) copy Tests/QtAutogen/{sameName => Parallel}/ccc/item.cpp (100%) copy Tests/QtAutogen/{sameName => Parallel}/ccc/item.hpp (100%) copy Tests/QtAutogen/{sameName => Parallel}/ccc/view.ui (100%) copy Tests/QtAutogen/{sameName => Parallel}/data.qrc (100%) copy Tests/QtAutogen/{sameName => Parallel}/item.cpp (100%) copy Tests/QtAutogen/{sameName => Parallel}/item.hpp (100%) copy Tests/QtAutogen/{sameName => Parallel}/main.cpp (100%) create mode 100644 Tests/QtAutogen/Parallel/parallel.cmake copy Tests/QtAutogen/{sameName => Parallel}/view.ui (100%) create mode 100644 Tests/QtAutogen/Parallel1/CMakeLists.txt create mode 100644 Tests/QtAutogen/Parallel2/CMakeLists.txt create mode 100644 Tests/QtAutogen/Parallel3/CMakeLists.txt create mode 100644 Tests/QtAutogen/Parallel4/CMakeLists.txt create mode 100644 Tests/QtAutogen/ParallelAUTO/CMakeLists.txt create mode 100644 Tests/QtAutogen/RccEmpty/CMakeLists.txt rename Tests/QtAutogen/{ => RccEmpty}/rccEmpty.cpp (100%) rename Tests/QtAutogen/{ => RccEmpty}/rccEmptyRes.qrc (100%) create mode 100644 Tests/QtAutogen/RccOffMocLibrary/CMakeLists.txt rename Tests/QtAutogen/{ => RccOffMocLibrary}/empty.cpp (100%) rename Tests/QtAutogen/{ => RccOffMocLibrary}/empty.h (100%) rename Tests/QtAutogen/{ => RccOffMocLibrary}/not_generated_file.qrc (100%) create mode 100644 Tests/QtAutogen/RccOnly/CMakeLists.txt rename Tests/QtAutogen/{ => RccOnly}/rccOnly.cpp (100%) rename Tests/QtAutogen/{ => RccOnly}/rccOnlyRes.qrc (100%) create mode 100644 Tests/QtAutogen/RccSkipSource/CMakeLists.txt rename Tests/QtAutogen/{ => RccSkipSource}/skipRcc.cpp (100%) rename Tests/QtAutogen/{skipSource => RccSkipSource}/skipRccBad1.qrc (100%) rename Tests/QtAutogen/{skipSource => RccSkipSource}/skipRccBad2.qrc (100%) rename Tests/QtAutogen/{skipSource => RccSkipSource}/skipRccGood.qrc (100%) create mode 100644 Tests/QtAutogen/RerunMocBasic/CMakeLists.txt create mode 100644 Tests/QtAutogen/RerunMocBasic/MocBasic/CMakeLists.txt rename Tests/{QtAutogenRerun/mocRerun => QtAutogen/RerunMocBasic/MocBasic}/input.txt (100%) create mode 100644 Tests/QtAutogen/RerunMocBasic/MocBasic/main.cpp.in rename Tests/{QtAutogenRerun/mocRerun => QtAutogen/RerunMocBasic/MocBasic}/res1.qrc (100%) rename Tests/{QtAutogenRerun/mocRerun => QtAutogen/RerunMocBasic/MocBasic}/test1a.h.in (100%) rename Tests/{QtAutogenRerun/mocRerun => QtAutogen/RerunMocBasic/MocBasic}/test1b.h.in (100%) copy Tests/{QtAutogenRerun => QtAutogen/RerunMocBasic}/dummy.cpp (100%) create mode 100644 Tests/QtAutogen/RerunMocPlugin/CMakeLists.txt create mode 100644 Tests/QtAutogen/RerunMocPlugin/MocPlugin/CMakeLists.txt rename Tests/{QtAutogenRerun/mocPlugin => QtAutogen/RerunMocPlugin/MocPlugin}/StyleA.cpp (100%) rename Tests/{QtAutogenRerun/mocPlugin => QtAutogen/RerunMocPlugin/MocPlugin}/StyleA.hpp (100%) rename Tests/{QtAutogenRerun/mocPlugin => QtAutogen/RerunMocPlugin/MocPlugin}/StyleA.json (100%) rename Tests/{QtAutogenRerun/mocPlugin => QtAutogen/RerunMocPlugin/MocPlugin}/StyleA_Custom.json (100%) rename Tests/{QtAutogenRerun/mocPlugin => QtAutogen/RerunMocPlugin/MocPlugin}/StyleB.cpp (100%) rename Tests/{QtAutogenRerun/mocPlugin => QtAutogen/RerunMocPlugin/MocPlugin}/StyleB.hpp (100%) rename Tests/{QtAutogenRerun/mocPlugin => QtAutogen/RerunMocPlugin/MocPlugin}/StyleC.cpp (100%) rename Tests/{QtAutogenRerun/mocPlugin => QtAutogen/RerunMocPlugin/MocPlugin}/StyleC.hpp (100%) rename Tests/{QtAutogenRerun/mocPlugin => QtAutogen/RerunMocPlugin/MocPlugin}/StyleD.cpp (100%) rename Tests/{QtAutogenRerun/mocPlugin => QtAutogen/RerunMocPlugin/MocPlugin}/StyleD.hpp (100%) rename Tests/{QtAutogenRerun/mocPlugin => QtAutogen/RerunMocPlugin/MocPlugin}/StyleE.cpp (100%) rename Tests/{QtAutogenRerun/mocPlugin => QtAutogen/RerunMocPlugin/MocPlugin}/StyleE.hpp (100%) rename Tests/{QtAutogenRerun/mocPlugin => QtAutogen/RerunMocPlugin/MocPlugin}/StyleEInclude.hpp (100%) rename Tests/{QtAutogenRerun/mocPlugin => QtAutogen/RerunMocPlugin/MocPlugin}/UtilityMacros.hpp (100%) rename Tests/{QtAutogenRerun/mocPlugin => QtAutogen/RerunMocPlugin/MocPlugin}/jsonIn/StyleB.json (100%) rename Tests/{QtAutogenRerun/mocPlugin => QtAutogen/RerunMocPlugin/MocPlugin}/jsonIn/StyleB_Custom.json (100%) rename Tests/{QtAutogenRerun/mocPlugin => QtAutogen/RerunMocPlugin/MocPlugin}/jsonIn/StyleC.json (100%) rename Tests/{QtAutogenRerun/mocPlugin => QtAutogen/RerunMocPlugin/MocPlugin}/jsonIn/StyleD.json (100%) rename Tests/{QtAutogenRerun/mocPlugin => QtAutogen/RerunMocPlugin/MocPlugin}/jsonIn/StyleE.json (100%) rename Tests/{QtAutogenRerun/mocPlugin => QtAutogen/RerunMocPlugin/MocPlugin}/main.cpp (100%) copy Tests/{QtAutogenRerun => QtAutogen/RerunMocPlugin}/dummy.cpp (100%) create mode 100644 Tests/QtAutogen/RerunRccDepends/CMakeLists.txt create mode 100644 Tests/QtAutogen/RerunRccDepends/RccDepends/CMakeLists.txt rename Tests/{QtAutogenRerun/rccDepends => QtAutogen/RerunRccDepends/RccDepends}/main.cpp (100%) rename Tests/{QtAutogenRerun/rccDepends => QtAutogen/RerunRccDepends/RccDepends}/resGen/input.txt.in (100%) rename Tests/{QtAutogenRerun/rccDepends => QtAutogen/RerunRccDepends/RccDepends}/resGen/inputAdded.txt.in (100%) rename Tests/{QtAutogenRerun/rccDepends => QtAutogen/RerunRccDepends/RccDepends}/resGenA.qrc.in (100%) rename Tests/{QtAutogenRerun/rccDepends => QtAutogen/RerunRccDepends/RccDepends}/resGenB.qrc.in (100%) rename Tests/{QtAutogenRerun/rccDepends => QtAutogen/RerunRccDepends/RccDepends}/resPlain/input.txt.in (100%) rename Tests/{QtAutogenRerun/rccDepends => QtAutogen/RerunRccDepends/RccDepends}/resPlain/inputAdded.txt.in (100%) rename Tests/{QtAutogenRerun/rccDepends => QtAutogen/RerunRccDepends/RccDepends}/resPlainA.qrc.in (100%) rename Tests/{QtAutogenRerun/rccDepends => QtAutogen/RerunRccDepends/RccDepends}/resPlainB.qrc.in (100%) rename Tests/{QtAutogenRerun => QtAutogen/RerunRccDepends}/dummy.cpp (100%) create mode 100644 Tests/QtAutogen/SameName/CMakeLists.txt rename Tests/QtAutogen/{sameName => SameName}/aaa/bbb/data.qrc (100%) rename Tests/QtAutogen/{sameName => SameName}/aaa/bbb/item.cpp (100%) rename Tests/QtAutogen/{sameName => SameName}/aaa/bbb/item.hpp (100%) rename Tests/QtAutogen/{sameName => SameName}/aaa/data.qrc (100%) rename Tests/QtAutogen/{sameName => SameName}/aaa/item.cpp (100%) rename Tests/QtAutogen/{sameName => SameName}/aaa/item.hpp (100%) rename Tests/QtAutogen/{sameName => SameName}/aaa/view.ui (100%) rename Tests/QtAutogen/{sameName => SameName}/bbb/aaa/data.qrc (100%) rename Tests/QtAutogen/{sameName => SameName}/bbb/aaa/item.cpp (100%) rename Tests/QtAutogen/{sameName => SameName}/bbb/aaa/item.hpp (100%) rename Tests/QtAutogen/{sameName => SameName}/bbb/data.qrc (100%) rename Tests/QtAutogen/{sameName => SameName}/bbb/item.cpp (100%) rename Tests/QtAutogen/{sameName => SameName}/bbb/item.hpp (100%) rename Tests/QtAutogen/{sameName => SameName}/bbb/view.ui (100%) rename Tests/QtAutogen/{sameName => SameName}/ccc/data.qrc (100%) rename Tests/QtAutogen/{sameName => SameName}/ccc/item.cpp (100%) rename Tests/QtAutogen/{sameName => SameName}/ccc/item.hpp (100%) rename Tests/QtAutogen/{sameName => SameName}/ccc/view.ui (100%) rename Tests/QtAutogen/{sameName => SameName}/data.qrc (100%) rename Tests/QtAutogen/{sameName => SameName}/item.cpp (100%) rename Tests/QtAutogen/{sameName => SameName}/item.hpp (100%) rename Tests/QtAutogen/{sameName => SameName}/main.cpp (100%) rename Tests/QtAutogen/{sameName => SameName}/view.ui (100%) create mode 100644 Tests/QtAutogen/StaticLibraryCycle/CMakeLists.txt create mode 100644 Tests/QtAutogen/StaticLibraryCycle/a.cpp create mode 100644 Tests/QtAutogen/StaticLibraryCycle/a.h rename Tests/QtAutogen/{staticLibraryCycle => StaticLibraryCycle}/b.cpp (100%) rename Tests/QtAutogen/{staticLibraryCycle => StaticLibraryCycle}/b.h (100%) rename Tests/QtAutogen/{staticLibraryCycle => StaticLibraryCycle}/c.cpp (100%) rename Tests/QtAutogen/{staticLibraryCycle => StaticLibraryCycle}/c.h (100%) rename Tests/QtAutogen/{staticLibraryCycle => StaticLibraryCycle}/main.cpp (100%) create mode 100644 Tests/QtAutogen/TestMacros.cmake create mode 100644 Tests/QtAutogen/UicInclude/CMakeLists.txt rename Tests/QtAutogen/{uicInclude => UicInclude}/PageC.ui (100%) rename Tests/QtAutogen/{uicInclude => UicInclude}/PageC2.ui (100%) rename Tests/QtAutogen/{uicInclude => UicInclude}/dirA/PageA.ui (100%) rename Tests/QtAutogen/{uicInclude => UicInclude}/dirB/PageB.ui (100%) rename Tests/QtAutogen/{uicInclude => UicInclude}/dirB/PageB2.ui (100%) rename Tests/QtAutogen/{uicInclude => UicInclude}/dirB/subB/PageBsub.ui (100%) rename Tests/QtAutogen/{uicInclude => UicInclude}/main.cpp (100%) rename Tests/QtAutogen/{uicInclude => UicInclude}/main.hpp (100%) rename Tests/QtAutogen/{uicInclude => UicInclude}/subC/PageCsub.ui (100%) create mode 100644 Tests/QtAutogen/UicInterface/CMakeLists.txt rename Tests/{QtAutoUicInterface => QtAutogen/UicInterface}/klocalizedstring.cpp (100%) rename Tests/{QtAutoUicInterface => QtAutogen/UicInterface}/klocalizedstring.h (100%) rename Tests/{QtAutoUicInterface => QtAutogen/UicInterface}/libwidget.cpp (100%) rename Tests/{QtAutoUicInterface => QtAutogen/UicInterface}/libwidget.h (100%) rename Tests/{QtAutoUicInterface => QtAutogen/UicInterface}/libwidget.ui (100%) rename Tests/{QtAutoUicInterface => QtAutogen/UicInterface}/main.cpp (100%) rename Tests/{QtAutoUicInterface => QtAutogen/UicInterface}/mywidget.cpp (100%) rename Tests/{QtAutoUicInterface => QtAutogen/UicInterface}/mywidget.h (100%) rename Tests/{QtAutoUicInterface => QtAutogen/UicInterface}/mywidget.ui (100%) create mode 100644 Tests/QtAutogen/UicOnly/CMakeLists.txt create mode 100644 Tests/QtAutogen/UicOnly/UicOnly.cpp create mode 100644 Tests/QtAutogen/UicOnly/UicOnly.hpp create mode 100644 Tests/QtAutogen/UicOnly/main.cpp create mode 100644 Tests/QtAutogen/UicOnly/uiA.ui create mode 100644 Tests/QtAutogen/UicOnly/uiB.ui create mode 100644 Tests/QtAutogen/UicOnly/uiC.ui create mode 100644 Tests/QtAutogen/UicOnly/uiD.ui create mode 100644 Tests/QtAutogen/UicSkipSource/CMakeLists.txt create mode 100644 Tests/QtAutogen/UicSkipSource/skipUic.cpp rename Tests/QtAutogen/{skipSource => UicSkipSource}/skipUicGen.cpp (100%) rename Tests/QtAutogen/{skipSource => UicSkipSource}/skipUicGen.hpp (100%) rename Tests/QtAutogen/{skipSource => UicSkipSource}/skipUicNoGen1.cpp (100%) rename Tests/QtAutogen/{skipSource => UicSkipSource}/skipUicNoGen1.hpp (100%) rename Tests/QtAutogen/{skipSource => UicSkipSource}/skipUicNoGen2.cpp (100%) rename Tests/QtAutogen/{skipSource => UicSkipSource}/skipUicNoGen2.hpp (100%) rename Tests/QtAutogen/{skipSource => UicSkipSource}/ui_nogen1.h (100%) create mode 100644 Tests/QtAutogen/UicSkipSource/ui_nogen2.h rename Tests/QtAutogen/{skipSource => UicSkipSource}/uigen1.ui (100%) rename Tests/QtAutogen/{skipSource => UicSkipSource}/uigen2.ui (100%) delete mode 100644 Tests/QtAutogen/complex/CMakeLists.txt delete mode 100644 Tests/QtAutogen/defines_test/CMakeLists.txt delete mode 100644 Tests/QtAutogen/macosFW/CMakeLists.txt delete mode 100644 Tests/QtAutogen/mocCMP0071/CMakeLists.txt delete mode 100644 Tests/QtAutogen/mocCMP0071/NEW/CMakeLists.txt delete mode 100644 Tests/QtAutogen/mocCMP0071/OLD/CMakeLists.txt delete mode 100644 Tests/QtAutogen/mocDepends/CMakeLists.txt delete mode 100644 Tests/QtAutogen/mocInclude/EObjA.cpp delete mode 100644 Tests/QtAutogen/mocInclude/EObjAExtra_p.hpp delete mode 100644 Tests/QtAutogen/mocInclude/EObjA_p.hpp delete mode 100644 Tests/QtAutogen/mocInclude/EObjB.cpp delete mode 100644 Tests/QtAutogen/mocInclude/EObjB_p.hpp delete mode 100644 Tests/QtAutogen/mocInclude/LObjA_p.h delete mode 100644 Tests/QtAutogen/mocInclude/LObjB_p.h delete mode 100644 Tests/QtAutogen/mocInclude/ObjA_p.h delete mode 100644 Tests/QtAutogen/mocInclude/ObjB_p.h delete mode 100644 Tests/QtAutogen/mocInclude/shared.cmake delete mode 100644 Tests/QtAutogen/mocInclude/subExtra/EObjBExtra_p.hpp delete mode 100644 Tests/QtAutogen/mocInclude/subGlobal/GObj_p.hpp delete mode 100644 Tests/QtAutogen/mocIncludeRelaxed/CMakeLists.txt delete mode 100644 Tests/QtAutogen/mocIncludeStrict/CMakeLists.txt delete mode 100644 Tests/QtAutogen/mocMacroName/CMakeLists.txt delete mode 100644 Tests/QtAutogen/mocMacroName/Gadget.cpp delete mode 100644 Tests/QtAutogen/mocMacroName/Gadget.hpp delete mode 100644 Tests/QtAutogen/mocMacroName/Object.cpp delete mode 100644 Tests/QtAutogen/mocMacroName/Object.hpp delete mode 100644 Tests/QtAutogen/mocOnlySource/StyleA.hpp delete mode 100644 Tests/QtAutogen/mocOnlySource/StyleB.hpp delete mode 100644 Tests/QtAutogen/mocOnlySource/main.cpp delete mode 100644 Tests/QtAutogen/objectLibrary/CMakeLists.txt delete mode 100644 Tests/QtAutogen/sameName/CMakeLists.txt delete mode 100644 Tests/QtAutogen/skipMoc.cpp delete mode 100644 Tests/QtAutogen/skipSource/ui_nogen2.h delete mode 100644 Tests/QtAutogen/skipUic.cpp delete mode 100644 Tests/QtAutogen/staticLibraryCycle/CMakeLists.txt delete mode 100644 Tests/QtAutogen/staticLibraryCycle/a.cpp delete mode 100644 Tests/QtAutogen/staticLibraryCycle/a.h delete mode 100644 Tests/QtAutogen/uicInclude/CMakeLists.txt delete mode 100644 Tests/QtAutogen/uicOnlySource/uiconly.cpp delete mode 100644 Tests/QtAutogen/uicOnlySource/uiconly.h delete mode 100644 Tests/QtAutogen/uicOnlySource/uiconly.ui delete mode 100644 Tests/QtAutogenRerun/CMakeLists.txt delete mode 100644 Tests/QtAutogenRerun/defines_test/CMakeLists.txt delete mode 100644 Tests/QtAutogenRerun/defines_test/defines_test.cpp delete mode 100644 Tests/QtAutogenRerun/mocPlugin.cmake delete mode 100644 Tests/QtAutogenRerun/mocPlugin/CMakeLists.txt delete mode 100644 Tests/QtAutogenRerun/mocRerun.cmake delete mode 100644 Tests/QtAutogenRerun/mocRerun/CMakeLists.txt delete mode 100644 Tests/QtAutogenRerun/mocRerun/main.cpp.in delete mode 100644 Tests/QtAutogenRerun/rccDepends.cmake delete mode 100644 Tests/QtAutogenRerun/rccDepends/CMakeLists.txt delete mode 100644 Tests/RunCMake/CMP0037/CMP0037-OLD-reserved-result.txt create mode 100644 Tests/RunCMake/CMP0037/CMP0037-OLD-reserved-stderr.txt delete mode 100644 Tests/RunCMake/CMP0037/CMP0037-OLD-space-result.txt create mode 100644 Tests/RunCMake/CMP0037/CMP0037-OLD-space-stderr.txt create mode 100644 Tests/RunCMake/CMP0037/CMP0037-WARN-reserved-stderr.txt create mode 100644 Tests/RunCMake/CMP0037/CMP0037-WARN-reserved.cmake rename Tests/RunCMake/{COMPILE_LANGUAGE-genex/CompileDefinitions-result.txt => CMP0037/NEW-cond-package-result.txt} (100%) create mode 100644 Tests/RunCMake/CMP0037/NEW-cond-package-stderr.txt create mode 100644 Tests/RunCMake/CMP0037/NEW-cond-package.cmake rename Tests/RunCMake/{COMPILE_LANGUAGE-genex/CompileOptions-result.txt => CMP0037/NEW-cond-package_source-result.txt} (100%) create mode 100644 Tests/RunCMake/CMP0037/NEW-cond-package_source-stderr.txt create mode 100644 Tests/RunCMake/CMP0037/NEW-cond-package_source.cmake rename Tests/RunCMake/{COMPILE_LANGUAGE-genex/IncludeDirectories-result.txt => CMP0037/NEW-cond-test-result.txt} (100%) create mode 100644 Tests/RunCMake/CMP0037/NEW-cond-test-stderr.txt create mode 100644 Tests/RunCMake/CMP0037/NEW-cond-test.cmake create mode 100644 Tests/RunCMake/CMP0037/NEW-cond.cmake create mode 100644 Tests/RunCMake/CMP0037/OLD-cond-package-stderr.txt create mode 100644 Tests/RunCMake/CMP0037/OLD-cond-package.cmake create mode 100644 Tests/RunCMake/CMP0037/OLD-cond-package_source-stderr.txt create mode 100644 Tests/RunCMake/CMP0037/OLD-cond-package_source.cmake create mode 100644 Tests/RunCMake/CMP0037/OLD-cond-stderr.txt create mode 100644 Tests/RunCMake/CMP0037/OLD-cond-test-stderr.txt create mode 100644 Tests/RunCMake/CMP0037/OLD-cond-test.cmake create mode 100644 Tests/RunCMake/CMP0037/OLD-cond.cmake create mode 100644 Tests/RunCMake/CMP0037/WARN-cond-package-stderr.txt create mode 100644 Tests/RunCMake/CMP0037/WARN-cond-package.cmake create mode 100644 Tests/RunCMake/CMP0037/WARN-cond-package_source-stderr.txt create mode 100644 Tests/RunCMake/CMP0037/WARN-cond-package_source.cmake create mode 100644 Tests/RunCMake/CMP0037/WARN-cond-test-stderr.txt create mode 100644 Tests/RunCMake/CMP0037/WARN-cond-test.cmake create mode 100644 Tests/RunCMake/CMP0037/WARN-cond.cmake delete mode 100644 Tests/RunCMake/CMP0038/CMP0038-OLD-result.txt create mode 100644 Tests/RunCMake/CMP0038/CMP0038-OLD-stderr.txt delete mode 100644 Tests/RunCMake/CMP0039/CMP0039-OLD-result.txt create mode 100644 Tests/RunCMake/CMP0039/CMP0039-OLD-stderr.txt delete mode 100644 Tests/RunCMake/CMP0040/CMP0040-OLD-existing-target-result.txt create mode 100644 Tests/RunCMake/CMP0040/CMP0040-OLD-existing-target-stderr.txt delete mode 100644 Tests/RunCMake/CMP0040/CMP0040-OLD-missing-target-result.txt create mode 100644 Tests/RunCMake/CMP0040/CMP0040-OLD-missing-target-stderr.txt delete mode 100644 Tests/RunCMake/CMP0041/CMP0041-OLD-result.txt create mode 100644 Tests/RunCMake/CMP0041/CMP0041-OLD-stderr.txt delete mode 100644 Tests/RunCMake/CMP0041/CMP0041-tid-OLD-result.txt create mode 100644 Tests/RunCMake/CMP0041/CMP0041-tid-OLD-stderr.txt delete mode 100644 Tests/RunCMake/CMP0042/CMP0042-OLD-result.txt create mode 100644 Tests/RunCMake/CMP0042/CMP0042-OLD-stderr.txt delete mode 100644 Tests/RunCMake/CMP0043/CMP0043-OLD-result.txt create mode 100644 Tests/RunCMake/CMP0043/CMP0043-OLD-stderr.txt delete mode 100644 Tests/RunCMake/CMP0045/CMP0045-OLD-result.txt create mode 100644 Tests/RunCMake/CMP0045/CMP0045-OLD-stderr.txt create mode 100644 Tests/RunCMake/CMP0046/CMP0046-OLD-existing-dependency-stderr.txt create mode 100644 Tests/RunCMake/CMP0046/CMP0046-OLD-missing-dependency-stderr.txt delete mode 100644 Tests/RunCMake/CMP0049/CMP0049-OLD-result.txt create mode 100644 Tests/RunCMake/CMP0049/CMP0049-OLD-stderr.txt delete mode 100644 Tests/RunCMake/CMP0050/CMP0050-OLD-result.txt create mode 100644 Tests/RunCMake/CMP0050/CMP0050-OLD-stderr.txt delete mode 100644 Tests/RunCMake/CMP0051/CMP0051-OLD-result.txt delete mode 100644 Tests/RunCMake/COMPILE_LANGUAGE-genex/CMakeLists.txt delete mode 100644 Tests/RunCMake/COMPILE_LANGUAGE-genex/CompileDefinitions-stderr-VS.txt delete mode 100644 Tests/RunCMake/COMPILE_LANGUAGE-genex/CompileDefinitions-stderr-Xcode.txt delete mode 100644 Tests/RunCMake/COMPILE_LANGUAGE-genex/CompileDefinitions.cmake delete mode 100644 Tests/RunCMake/COMPILE_LANGUAGE-genex/CompileOptions-stderr-VS.txt delete mode 100644 Tests/RunCMake/COMPILE_LANGUAGE-genex/CompileOptions.cmake delete mode 100644 Tests/RunCMake/COMPILE_LANGUAGE-genex/IncludeDirectories-stderr-VS.txt delete mode 100644 Tests/RunCMake/COMPILE_LANGUAGE-genex/IncludeDirectories-stderr-Xcode.txt delete mode 100644 Tests/RunCMake/COMPILE_LANGUAGE-genex/IncludeDirectories.cmake delete mode 100644 Tests/RunCMake/COMPILE_LANGUAGE-genex/RunCMakeTest.cmake delete mode 100644 Tests/RunCMake/COMPILE_LANGUAGE-genex/main.cpp create mode 100644 Tests/RunCMake/CPack/tests/DEFAULT_PERMISSIONS/ExpectedFiles.cmake create mode 100644 Tests/RunCMake/CPack/tests/DEFAULT_PERMISSIONS/VerifyResult.cmake create mode 100644 Tests/RunCMake/CPack/tests/DEFAULT_PERMISSIONS/invalid_CMAKE_var-stderr.txt create mode 100644 Tests/RunCMake/CPack/tests/DEFAULT_PERMISSIONS/invalid_CPACK_var-stderr.txt create mode 100644 Tests/RunCMake/CPack/tests/DEFAULT_PERMISSIONS/test.cmake copy Tests/RunCMake/{ClangTidy => CacheNewline}/CMakeLists.txt (100%) create mode 100644 Tests/RunCMake/CacheNewline/CacheNewline-check.cmake create mode 100644 Tests/RunCMake/CacheNewline/CacheNewline-stderr.txt create mode 100644 Tests/RunCMake/CacheNewline/CacheNewline.cmake create mode 100644 Tests/RunCMake/CacheNewline/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/CacheNewline/cache-regex.txt copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => CheckModules/CheckIncludeFilesMissingLanguage-result.txt} (100%) create mode 100644 Tests/RunCMake/CheckModules/CheckIncludeFilesMissingLanguage-stderr.txt create mode 100644 Tests/RunCMake/CheckModules/CheckIncludeFilesMissingLanguage.cmake create mode 100644 Tests/RunCMake/CheckModules/CheckIncludeFilesOk.cmake create mode 100644 Tests/RunCMake/CheckModules/CheckIncludeFilesOkNoC.cmake copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => CheckModules/CheckIncludeFilesUnknownArgument-result.txt} (100%) create mode 100644 Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownArgument-stderr.txt create mode 100644 Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownArgument.cmake copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => CheckModules/CheckIncludeFilesUnknownLanguage-result.txt} (100%) create mode 100644 Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownLanguage-stderr.txt create mode 100644 Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownLanguage.cmake copy Tests/RunCMake/CompilerLauncher/{C-Build-stdout.txt => Fortran-Build-stdout.txt} (100%) copy Tests/RunCMake/CompilerLauncher/{C-Build-stdout.txt => Fortran-launch-Build-stdout.txt} (100%) create mode 100644 Tests/RunCMake/CompilerLauncher/Fortran-launch.cmake create mode 100644 Tests/RunCMake/CompilerLauncher/Fortran.cmake create mode 100644 Tests/RunCMake/CompilerLauncher/main.F create mode 100644 Tests/RunCMake/ExternalProject/Substitutions-build-stdout.txt create mode 100644 Tests/RunCMake/ExternalProject/Substitutions.cmake copy Tests/RunCMake/{FindBoost => FetchContent}/CMakeLists.txt (100%) create mode 100644 Tests/RunCMake/FetchContent/DirOverrides.cmake create mode 100644 Tests/RunCMake/FetchContent/DirectIgnoresDetails-stdout.txt create mode 100644 Tests/RunCMake/FetchContent/DirectIgnoresDetails.cmake copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => FetchContent/DownloadTwice-result.txt} (100%) create mode 100644 Tests/RunCMake/FetchContent/DownloadTwice-stderr.txt create mode 100644 Tests/RunCMake/FetchContent/DownloadTwice.cmake create mode 100644 Tests/RunCMake/FetchContent/FirstDetailsWin-stdout.txt create mode 100644 Tests/RunCMake/FetchContent/FirstDetailsWin.cmake create mode 100644 Tests/RunCMake/FetchContent/GetProperties.cmake copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => FetchContent/MissingDetails-result.txt} (100%) create mode 100644 Tests/RunCMake/FetchContent/MissingDetails-stderr.txt create mode 100644 Tests/RunCMake/FetchContent/MissingDetails.cmake create mode 100644 Tests/RunCMake/FetchContent/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/FetchContent/SameGenerator.cmake create mode 100644 Tests/RunCMake/FetchContent/ScriptMode.cmake create mode 100644 Tests/RunCMake/FetchContent/VarDefinitions.cmake delete mode 100644 Tests/RunCMake/File_Generate/COMPILE_LANGUAGE-genex-result.txt delete mode 100644 Tests/RunCMake/File_Generate/CarryPermissions-result.txt delete mode 100644 Tests/RunCMake/File_Generate/GenerateSource-result.txt delete mode 100644 Tests/RunCMake/File_Generate/OutputNameMatchesOtherSources-result.txt delete mode 100644 Tests/RunCMake/File_Generate/ReRunCMake-result.txt delete mode 100644 Tests/RunCMake/File_Generate/WriteIfDifferent-result.txt create mode 100644 Tests/RunCMake/FindOpenGL/CMP0072-NEW-stdout.txt create mode 100644 Tests/RunCMake/FindOpenGL/CMP0072-NEW.cmake create mode 100644 Tests/RunCMake/FindOpenGL/CMP0072-OLD-stdout.txt create mode 100644 Tests/RunCMake/FindOpenGL/CMP0072-OLD.cmake create mode 100644 Tests/RunCMake/FindOpenGL/CMP0072-WARN-stderr.txt create mode 100644 Tests/RunCMake/FindOpenGL/CMP0072-WARN-stdout.txt create mode 100644 Tests/RunCMake/FindOpenGL/CMP0072-WARN.cmake create mode 100644 Tests/RunCMake/FindOpenGL/CMP0072-common.cmake copy Tests/RunCMake/{MultiLint => FindOpenGL}/CMakeLists.txt (100%) create mode 100644 Tests/RunCMake/FindOpenGL/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/GenerateExportHeader/includeguard/CMakeLists.txt copy Modules/IntelVSImplicitPath/hello.f => Tests/RunCMake/GenerateExportHeader/includeguard/libincludeguard.cpp (100%) create mode 100644 Tests/RunCMake/GenerateExportHeader/includeguard/main.cpp.in copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => GeneratorInstance/BadInstance-result.txt} (100%) create mode 100644 Tests/RunCMake/GeneratorInstance/BadInstance-stderr.txt create mode 100644 Tests/RunCMake/GeneratorInstance/BadInstance-toolchain.cmake copy Tests/RunCMake/{GeneratorPlatform/BadPlatform.cmake => GeneratorInstance/BadInstance.cmake} (100%) copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => GeneratorInstance/BadInstanceToolchain-result.txt} (100%) create mode 100644 Tests/RunCMake/GeneratorInstance/BadInstanceToolchain-stderr.txt copy Tests/RunCMake/{GeneratorPlatform/BadPlatform.cmake => GeneratorInstance/BadInstanceToolchain.cmake} (100%) copy Tests/RunCMake/{FindBoost => GeneratorInstance}/CMakeLists.txt (100%) create mode 100644 Tests/RunCMake/GeneratorInstance/DefaultInstance.cmake copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => GeneratorInstance/MissingInstance-result.txt} (100%) create mode 100644 Tests/RunCMake/GeneratorInstance/MissingInstance-stderr.txt create mode 100644 Tests/RunCMake/GeneratorInstance/MissingInstance-toolchain.cmake copy Tests/RunCMake/{GeneratorPlatform/BadPlatform.cmake => GeneratorInstance/MissingInstance.cmake} (100%) copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => GeneratorInstance/MissingInstanceToolchain-result.txt} (100%) create mode 100644 Tests/RunCMake/GeneratorInstance/MissingInstanceToolchain-stderr.txt copy Tests/RunCMake/{GeneratorPlatform/BadPlatform.cmake => GeneratorInstance/MissingInstanceToolchain.cmake} (100%) copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => GeneratorInstance/NoInstance-result.txt} (100%) create mode 100644 Tests/RunCMake/GeneratorInstance/NoInstance-stderr.txt create mode 100644 Tests/RunCMake/GeneratorInstance/NoInstance.cmake create mode 100644 Tests/RunCMake/GeneratorInstance/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/IfacePaths/BinInInstallPrefix-CMP0052-OLD-stderr.txt create mode 100644 Tests/RunCMake/IfacePaths/SrcInInstallPrefix-CMP0052-OLD-stderr.txt create mode 100644 Tests/RunCMake/Make/IncludeRegexSubdir-check.cmake create mode 100644 Tests/RunCMake/Make/IncludeRegexSubdir.cmake create mode 100644 Tests/RunCMake/Make/IncludeRegexSubdir/CMakeLists.txt copy Tests/RunCMake/{ObjectLibrary => SourceProperties}/CMakeLists.txt (100%) copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => SourceProperties/RelativeIncludeDir-result.txt} (100%) create mode 100644 Tests/RunCMake/SourceProperties/RelativeIncludeDir-stderr.txt create mode 100644 Tests/RunCMake/SourceProperties/RelativeIncludeDir.cmake create mode 100644 Tests/RunCMake/SourceProperties/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/SourceProperties/empty.c copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => TargetPropertyGeneratorExpressions/BadInvalidName-result.txt} (100%) create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName-stderr.txt create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName.cmake delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName1-result.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName1-stderr.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName1.cmake create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName1/CMakeLists.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName2-result.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName2-stderr.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName2.cmake create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName2/CMakeLists.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName3-result.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName3-stderr.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName3.cmake create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName3/CMakeLists.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName4-result.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName4-stderr.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName4.cmake create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName4/CMakeLists.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName5-result.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName5-stderr.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName5.cmake create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName5/CMakeLists.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName6-result.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName6-stderr.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName6.cmake create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName6/CMakeLists.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName7-result.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName7-stderr.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName7.cmake create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName7/CMakeLists.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName8-result.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName8-stderr.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName8.cmake create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName8/CMakeLists.txt copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => TargetPropertyGeneratorExpressions/BadSelfReference-result.txt} (100%) create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference-stderr.txt create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference.cmake delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference1-result.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference1-stderr.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference1.cmake create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference1/CMakeLists.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference2-result.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference2-stderr.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference2.cmake create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference2/CMakeLists.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference3-result.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference3-stderr.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference3.cmake create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference3/CMakeLists.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference4-result.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference4-stderr.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference4.cmake create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference4/CMakeLists.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference5-result.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference5-stderr.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference5.cmake create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference5/CMakeLists.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference6-result.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference6-stderr.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference6.cmake create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference6/CMakeLists.txt copy Modules/DummyCXXFile.cxx => Tests/RunCMake/TargetPropertyGeneratorExpressions/main.cpp (100%) delete mode 100644 Tests/RunCMake/TargetSources/OriginDebugIDE-result.txt delete mode 100644 Tests/RunCMake/TargetSources/OriginDebugIDE-stderr.txt delete mode 100644 Tests/RunCMake/TargetSources/OriginDebugIDE.cmake create mode 100644 Tests/RunCMake/VS10Project/VsCSharpWithoutSources-check.cmake create mode 100644 Tests/RunCMake/VS10Project/VsCSharpWithoutSources.cmake create mode 100644 Tests/RunCMake/XcodeProject/DeploymentTarget.c create mode 100644 Tests/RunCMake/XcodeProject/DeploymentTarget.cmake copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => XcodeProject/PerConfigPerSourceDefinitions-result.txt} (100%) create mode 100644 Tests/RunCMake/XcodeProject/PerConfigPerSourceDefinitions-stderr.txt create mode 100644 Tests/RunCMake/XcodeProject/PerConfigPerSourceDefinitions.cmake copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => XcodeProject/PerConfigPerSourceIncludeDirs-result.txt} (100%) create mode 100644 Tests/RunCMake/XcodeProject/PerConfigPerSourceIncludeDirs-stderr.txt create mode 100644 Tests/RunCMake/XcodeProject/PerConfigPerSourceIncludeDirs.cmake copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => XcodeProject/PerConfigPerSourceOptions-result.txt} (100%) create mode 100644 Tests/RunCMake/XcodeProject/PerConfigPerSourceOptions-stderr.txt create mode 100644 Tests/RunCMake/XcodeProject/PerConfigPerSourceOptions.cmake create mode 100644 Tests/RunCMake/XcodeProject/XcodeGenerateTopLevelProjectOnly-check.cmake create mode 100644 Tests/RunCMake/XcodeProject/XcodeGenerateTopLevelProjectOnly.cmake create mode 100644 Tests/RunCMake/XcodeProject/subproject/CMakeLists.txt delete mode 100644 Tests/RunCMake/add_executable/OnlyObjectSources-result.txt delete mode 100644 Tests/RunCMake/add_executable/OnlyObjectSources-stderr.txt delete mode 100644 Tests/RunCMake/add_library/MODULEwithOnlyObjectSources-stderr.txt delete mode 100644 Tests/RunCMake/add_library/SHAREDwithOnlyObjectSources-stderr.txt delete mode 100644 Tests/RunCMake/add_library/STATICwithOnlyObjectSources-stderr.txt delete mode 100644 Tests/RunCMake/add_library/UNKNOWNwithNoSourcesButLinkObjects-result.txt delete mode 100644 Tests/RunCMake/add_library/UNKNOWNwithNoSourcesButLinkObjects-stderr.txt create mode 100644 Tests/RunCMake/alias_targets/imported-global-target-stderr.txt create mode 100644 Tests/RunCMake/alias_targets/imported-global-target.cmake copy Tests/RunCMake/{CTestCommandLine/test-load-pass-stderr.txt => ctest_start/FunctionScope-stdout.txt} (100%) copy Tests/RunCMake/execute_process/{EncodingUTF8-stderr.txt => EncodingUTF-8-stderr.txt} (100%) copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => file/DOWNLOAD-netrc-bad-result.txt} (100%) create mode 100644 Tests/RunCMake/file/DOWNLOAD-netrc-bad-stderr.txt create mode 100644 Tests/RunCMake/file/DOWNLOAD-netrc-bad.cmake copy Modules/IntelVSImplicitPath/hello.f => Tests/RunCMake/file/DOWNLOAD-netrc-bad.txt (100%) copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => file/UPLOAD-netrc-bad-result.txt} (100%) create mode 100644 Tests/RunCMake/file/UPLOAD-netrc-bad-stderr.txt create mode 100644 Tests/RunCMake/file/UPLOAD-netrc-bad.cmake copy Modules/IntelVSImplicitPath/hello.f => Tests/RunCMake/file/UPLOAD-netrc-bad.txt (100%) copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => foreach/BadRangeInFunction-result.txt} (100%) create mode 100644 Tests/RunCMake/foreach/BadRangeInFunction-stderr.txt create mode 100644 Tests/RunCMake/foreach/BadRangeInFunction.cmake copy Tests/RunCMake/{MultiLint => foreach}/CMakeLists.txt (100%) create mode 100644 Tests/RunCMake/foreach/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/project/CMP0048-OLD-stderr.txt copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => set_property/IMPORTED_GLOBAL-result.txt} (100%) create mode 100644 Tests/RunCMake/set_property/IMPORTED_GLOBAL-stderr.txt create mode 100644 Tests/RunCMake/set_property/IMPORTED_GLOBAL-stdout.txt create mode 100644 Tests/RunCMake/set_property/IMPORTED_GLOBAL.cmake create mode 100644 Tests/RunCMake/set_property/IMPORTED_GLOBAL/CMakeLists.txt copy Modules/IntelVSImplicitPath/hello.f => Tests/RunCMake/set_property/test.cpp (100%) create mode 100644 Tests/RunCMake/target_link_libraries/ImportedTarget.cmake copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => target_link_libraries/ImportedTargetFailure-result.txt} (100%) create mode 100644 Tests/RunCMake/target_link_libraries/ImportedTargetFailure-stderr.txt create mode 100644 Tests/RunCMake/target_link_libraries/ImportedTargetFailure.cmake create mode 100644 Tests/SourceFileIncludeDirProperty/CMakeLists.txt create mode 100644 Tests/SourceFileIncludeDirProperty/main.c create mode 100644 Tests/SourceFileIncludeDirProperty/source/header.h create mode 100644 Tests/SourceFileIncludeDirProperty/target/header.h create mode 100644 Tests/SourceGroups/tree_empty_prefix_bar.c create mode 100644 Tests/SourceGroups/tree_empty_prefix_foo.c delete mode 100644 Utilities/GitSetup/config.sample delete mode 100755 Utilities/GitSetup/git-gerrit-push delete mode 100755 Utilities/GitSetup/git-gitlab-push delete mode 100755 Utilities/GitSetup/setup-gerrit delete mode 100755 Utilities/GitSetup/setup-gitlab delete mode 100755 Utilities/GitSetup/setup-ssh delete mode 100755 Utilities/GitSetup/setup-stage delete mode 100755 Utilities/GitSetup/setup-upstream create mode 100644 Utilities/cmcurl/CMake/curl-config.cmake create mode 100644 Utilities/cmcurl/lib/curl_path.c create mode 100644 Utilities/cmcurl/lib/curl_path.h create mode 100644 Utilities/cmcurl/lib/curl_sha256.h create mode 100644 Utilities/cmcurl/lib/setopt.c create mode 100644 Utilities/cmcurl/lib/setopt.h create mode 100644 Utilities/cmcurl/lib/sha256.c create mode 100644 Utilities/cmcurl/lib/ssh-libssh.c create mode 100644 Utilities/cmlibuv/src/unix/aix-common.c create mode 100644 Utilities/cmlibuv/src/unix/ibmi.c delete mode 100644 Utilities/cmlibuv/src/unix/pthread-barrier.c create mode 100644 Utilities/cmlibuv/src/uv-data-getter-setters.c hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 6 00:05:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 6 Feb 2018 00:05:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1041-gf7c08c3 Message-ID: <20180206050504.4A009103664@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via f7c08c333b3ccd86134f73a8a3df5bf59c53bdd8 (commit) from f211193afee5ff478d61ff0678e13b6180c481a5 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f7c08c333b3ccd86134f73a8a3df5bf59c53bdd8 commit f7c08c333b3ccd86134f73a8a3df5bf59c53bdd8 Author: Kitware Robot AuthorDate: Tue Feb 6 00:01:07 2018 -0500 Commit: Kitware Robot CommitDate: Tue Feb 6 00:01:07 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index d422d29..6c2abb5 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180205) +set(CMake_VERSION_PATCH 20180206) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 7 00:05:06 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 7 Feb 2018 00:05:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1042-g5656ebc Message-ID: <20180207050506.542EE103721@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 5656ebc87cab02762d242326c6e5397393e671d7 (commit) from f7c08c333b3ccd86134f73a8a3df5bf59c53bdd8 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5656ebc87cab02762d242326c6e5397393e671d7 commit 5656ebc87cab02762d242326c6e5397393e671d7 Author: Kitware Robot AuthorDate: Wed Feb 7 00:01:05 2018 -0500 Commit: Kitware Robot CommitDate: Wed Feb 7 00:01:05 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 6c2abb5..1aa1ccc 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180206) +set(CMake_VERSION_PATCH 20180207) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 8 00:05:06 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 8 Feb 2018 00:05:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1043-g1da3f3e Message-ID: <20180208050506.5EB7910373C@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 1da3f3e916de5ac6e64b473575d02bb3d358fc76 (commit) from 5656ebc87cab02762d242326c6e5397393e671d7 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1da3f3e916de5ac6e64b473575d02bb3d358fc76 commit 1da3f3e916de5ac6e64b473575d02bb3d358fc76 Author: Kitware Robot AuthorDate: Thu Feb 8 00:01:12 2018 -0500 Commit: Kitware Robot CommitDate: Thu Feb 8 00:01:12 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 1aa1ccc..3023daa 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180207) +set(CMake_VERSION_PATCH 20180208) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 9 00:05:06 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 9 Feb 2018 00:05:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1044-gb0c3696 Message-ID: <20180209050506.940DD103A36@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via b0c36962058331f48b2eaef671b56b64563b16f9 (commit) from 1da3f3e916de5ac6e64b473575d02bb3d358fc76 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b0c36962058331f48b2eaef671b56b64563b16f9 commit b0c36962058331f48b2eaef671b56b64563b16f9 Author: Kitware Robot AuthorDate: Fri Feb 9 00:01:06 2018 -0500 Commit: Kitware Robot CommitDate: Fri Feb 9 00:01:06 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 3023daa..09c8a36 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180208) +set(CMake_VERSION_PATCH 20180209) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Sat Feb 10 00:05:10 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Sat, 10 Feb 2018 00:05:10 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1045-g1f39bfa Message-ID: <20180210050510.67F58104992@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 1f39bfad47a3e873d6a96bb66e0b94325f024cfd (commit) from b0c36962058331f48b2eaef671b56b64563b16f9 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1f39bfad47a3e873d6a96bb66e0b94325f024cfd commit 1f39bfad47a3e873d6a96bb66e0b94325f024cfd Author: Kitware Robot AuthorDate: Sat Feb 10 00:01:12 2018 -0500 Commit: Kitware Robot CommitDate: Sat Feb 10 00:01:12 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 09c8a36..56c17ca 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180209) +set(CMake_VERSION_PATCH 20180210) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Sun Feb 11 00:05:03 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Sun, 11 Feb 2018 00:05:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1046-ge24cda0 Message-ID: <20180211050503.64BCB106AF5@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via e24cda008e3ea1cbb22d17d29c5c39999facb4b7 (commit) from 1f39bfad47a3e873d6a96bb66e0b94325f024cfd (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e24cda008e3ea1cbb22d17d29c5c39999facb4b7 commit e24cda008e3ea1cbb22d17d29c5c39999facb4b7 Author: Kitware Robot AuthorDate: Sun Feb 11 00:01:05 2018 -0500 Commit: Kitware Robot CommitDate: Sun Feb 11 00:01:05 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 56c17ca..3d7f2be 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180210) +set(CMake_VERSION_PATCH 20180211) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 12 00:05:03 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 12 Feb 2018 00:05:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1047-g0465d3c Message-ID: <20180212050503.7063310741D@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 0465d3c204e8cc7c677dd6a34d3ea884bc5e7954 (commit) from e24cda008e3ea1cbb22d17d29c5c39999facb4b7 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0465d3c204e8cc7c677dd6a34d3ea884bc5e7954 commit 0465d3c204e8cc7c677dd6a34d3ea884bc5e7954 Author: Kitware Robot AuthorDate: Mon Feb 12 00:01:11 2018 -0500 Commit: Kitware Robot CommitDate: Mon Feb 12 00:01:11 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 3d7f2be..cf18a3f 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180211) +set(CMake_VERSION_PATCH 20180212) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 13 00:05:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 13 Feb 2018 00:05:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1048-gab84167 Message-ID: <20180213050504.274A710762B@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via ab8416776de32e6b6225743721315b8dcbd2d01e (commit) from 0465d3c204e8cc7c677dd6a34d3ea884bc5e7954 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ab8416776de32e6b6225743721315b8dcbd2d01e commit ab8416776de32e6b6225743721315b8dcbd2d01e Author: Kitware Robot AuthorDate: Tue Feb 13 00:01:07 2018 -0500 Commit: Kitware Robot CommitDate: Tue Feb 13 00:01:07 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index cf18a3f..af74da2 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180212) +set(CMake_VERSION_PATCH 20180213) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 13 11:15:06 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 13 Feb 2018 11:15:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1052-g31550eb Message-ID: <20180213161506.49AD410653F@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 31550ebf31a59be391319c2885db46ea8b3a0875 (commit) via 210a80f48dd1268c424df137ad08a916147cdd97 (commit) via 917852396866933f35cd723318f42290753873ff (commit) via c85ef9c339a9aea5160217e33f917b5d130c9fab (commit) from ab8416776de32e6b6225743721315b8dcbd2d01e (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=31550ebf31a59be391319c2885db46ea8b3a0875 commit 31550ebf31a59be391319c2885db46ea8b3a0875 Merge: 210a80f c85ef9c Author: Brad King AuthorDate: Tue Feb 13 16:12:02 2018 +0000 Commit: Kitware Robot CommitDate: Tue Feb 13 11:12:14 2018 -0500 Merge topic 'autogen-write-on-change-only' c85ef9c3 Autogen: Overwrite info files when changed only Acked-by: Kitware Robot Merge-request: !1753 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=210a80f48dd1268c424df137ad08a916147cdd97 commit 210a80f48dd1268c424df137ad08a916147cdd97 Merge: ab84167 9178523 Author: Brad King AuthorDate: Tue Feb 13 16:08:32 2018 +0000 Commit: Kitware Robot CommitDate: Tue Feb 13 11:08:38 2018 -0500 Merge topic 'FindImageMagick-FixFor7.0.x' 91785239 FindImageMagick: Add 7.0 library names Acked-by: Kitware Robot Merge-request: !1754 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=917852396866933f35cd723318f42290753873ff commit 917852396866933f35cd723318f42290753873ff Author: Roman W?ger AuthorDate: Tue Feb 6 20:43:25 2018 +0100 Commit: Brad King CommitDate: Tue Feb 6 14:54:33 2018 -0500 FindImageMagick: Add 7.0 library names For ImageMagick 7.0.x we need to consider `CORE_RL_MagickWand_` and `CORE_RL_MagickCore_`. diff --git a/Modules/FindImageMagick.cmake b/Modules/FindImageMagick.cmake index c16bbf2..881bff1 100644 --- a/Modules/FindImageMagick.cmake +++ b/Modules/FindImageMagick.cmake @@ -206,7 +206,7 @@ foreach(component ${ImageMagick_FIND_COMPONENTS} list(APPEND ImageMagick_REQUIRED_VARS ImageMagick_Magick++_LIBRARY) elseif(component STREQUAL "MagickWand") FIND_IMAGEMAGICK_API(MagickWand "wand/MagickWand.h;MagickWand/MagickWand.h" - Wand MagickWand CORE_RL_wand_ + Wand MagickWand CORE_RL_wand_ CORE_RL_MagickWand_ MagickWand-6 MagickWand-7 MagickWand-Q16 MagickWand-Q8 MagickWand-Q16HDRI MagickWand-Q8HDRI MagickWand-6.Q64 MagickWand-6.Q32 MagickWand-6.Q64HDRI MagickWand-6.Q32HDRI @@ -217,7 +217,7 @@ foreach(component ${ImageMagick_FIND_COMPONENTS} list(APPEND ImageMagick_REQUIRED_VARS ImageMagick_MagickWand_LIBRARY) elseif(component STREQUAL "MagickCore") FIND_IMAGEMAGICK_API(MagickCore "magick/MagickCore.h;MagickCore/MagickCore.h" - Magick MagickCore CORE_RL_magick_ + Magick MagickCore CORE_RL_magick_ CORE_RL_MagickCore_ MagickCore-6 MagickCore-7 MagickCore-Q16 MagickCore-Q8 MagickCore-Q16HDRI MagickCore-Q8HDRI MagickCore-6.Q64 MagickCore-6.Q32 MagickCore-6.Q64HDRI MagickCore-6.Q32HDRI https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c85ef9c339a9aea5160217e33f917b5d130c9fab commit c85ef9c339a9aea5160217e33f917b5d130c9fab Author: Sebastian Holtermann AuthorDate: Tue Feb 6 14:51:44 2018 +0100 Commit: Brad King CommitDate: Tue Feb 6 11:20:08 2018 -0500 Autogen: Overwrite info files when changed only Check if the content of the AUTOMOC/UIC/RCC info file will change before overwriting it. This avoids unnecessary AUTORCC rebuilds when AUTORCC unrelated CMake settings change. diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx index 41142e5..93c78b5 100644 --- a/Source/cmQtAutoGenInitializer.cxx +++ b/Source/cmQtAutoGenInitializer.cxx @@ -8,6 +8,7 @@ #include "cmCustomCommandLines.h" #include "cmDuration.h" #include "cmFilePathChecksum.h" +#include "cmGeneratedFileStream.h" #include "cmGeneratorTarget.h" #include "cmGlobalGenerator.h" #include "cmLinkItem.h" @@ -22,7 +23,6 @@ #include "cmStateTypes.h" #include "cmSystemTools.h" #include "cmTarget.h" -#include "cm_sys_stat.h" #include "cmake.h" #include "cmsys/FStream.hxx" #include "cmsys/SystemInformation.hxx" @@ -867,34 +867,6 @@ void cmQtAutoGenInitializer::SetupCustomTargets() dir += cfg; } - auto OpenInfoFile = [](cmsys::ofstream& ofs, - std::string const& fileName) -> bool { - // Ensure we have write permission - if (cmSystemTools::FileExists(fileName)) { - mode_t perm = 0; -#if defined(_WIN32) && !defined(__CYGWIN__) - mode_t mode_write = S_IWRITE; -#else - mode_t mode_write = S_IWUSR; -#endif - cmSystemTools::GetPermissions(fileName, perm); - if (!(perm & mode_write)) { - cmSystemTools::SetPermissions(fileName, perm | mode_write); - } - } - - ofs.open(fileName.c_str(), - (std::ios::out | std::ios::binary | std::ios::trunc)); - if (!ofs) { - // File open error - std::string error = "Internal CMake error when trying to open file: "; - error += Quoted(fileName); - error += " for writing."; - cmSystemTools::Error(error.c_str()); - } - return static_cast(ofs); - }; - // Generate autogen target info file if (this->MocEnabled || this->UicEnabled) { if (this->MocEnabled) { @@ -911,8 +883,10 @@ void cmQtAutoGenInitializer::SetupCustomTargets() this->Parallel = std::to_string(GetParallelCPUCount()); } - cmsys::ofstream ofs; - if (OpenInfoFile(ofs, this->AutogenInfoFile)) { + cmGeneratedFileStream ofs; + ofs.SetCopyIfDifferent(true); + ofs.Open(this->AutogenInfoFile.c_str(), false, true); + if (ofs) { // Utility lambdas auto CWrite = [&ofs](const char* key, std::string const& value) { ofs << "set(" << key << " " << cmOutputConverter::EscapeForCMake(value) @@ -1012,14 +986,18 @@ void cmQtAutoGenInitializer::SetupCustomTargets() CWriteNestedLists("AM_UIC_OPTIONS_OPTIONS", this->UicFileOptions); CWriteList("AM_UIC_SEARCH_PATHS", this->UicSearchPaths); } + } else { + return; } } // Generate auto RCC info files if (this->RccEnabled) { for (Qrc const& qrc : this->Qrcs) { - cmsys::ofstream ofs; - if (OpenInfoFile(ofs, qrc.InfoFile)) { + cmGeneratedFileStream ofs; + ofs.SetCopyIfDifferent(true); + ofs.Open(qrc.InfoFile.c_str(), false, true); + if (ofs) { // Utility lambdas auto CWrite = [&ofs](const char* key, std::string const& value) { ofs << "set(" << key << " " @@ -1069,7 +1047,7 @@ void cmQtAutoGenInitializer::SetupCustomTargets() CWrite("ARCC_OPTIONS", cmJoin(qrc.Options, ";")); CWrite("ARCC_INPUTS", cmJoin(qrc.Resources, ";")); } else { - break; + return; } } } ----------------------------------------------------------------------- Summary of changes: Modules/FindImageMagick.cmake | 4 ++-- Source/cmQtAutoGenInitializer.cxx | 46 ++++++++++--------------------------- 2 files changed, 14 insertions(+), 36 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 13 11:25:03 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 13 Feb 2018 11:25:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1058-g3b8b379 Message-ID: <20180213162503.F181A106A8F@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 3b8b379852bbbe3a942834072e4533f2592d00ef (commit) via 16c6764f9bf86298c9cc9407d9e22d0aca189514 (commit) via 43cd9467cd2b0c1dde6e69a042032ea83422dbda (commit) via 101ef67b99ed0455cced14d0a1f85ab8a47e11a6 (commit) via 2a730e24c618768ecbb5bdd67886e7bc9bfc8a7f (commit) via 4349393d1d55abb9977d62d921af2e1fd9f27f29 (commit) from 31550ebf31a59be391319c2885db46ea8b3a0875 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3b8b379852bbbe3a942834072e4533f2592d00ef commit 3b8b379852bbbe3a942834072e4533f2592d00ef Merge: 16c6764 43cd946 Author: Brad King AuthorDate: Tue Feb 13 11:18:35 2018 -0500 Commit: Brad King CommitDate: Tue Feb 13 11:18:35 2018 -0500 Merge branch 'release-3.11' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=16c6764f9bf86298c9cc9407d9e22d0aca189514 commit 16c6764f9bf86298c9cc9407d9e22d0aca189514 Merge: 31550eb 4349393 Author: Brad King AuthorDate: Tue Feb 13 16:17:16 2018 +0000 Commit: Kitware Robot CommitDate: Tue Feb 13 11:17:25 2018 -0500 Merge topic '17711-reset-xcode-target-var' 4349393d cmGlobalXCodeGenerator: Properly initialize TARGETS variable Acked-by: Kitware Robot Merge-request: !1757 ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalXCodeGenerator.cxx | 1 + 1 file changed, 1 insertion(+) hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 13 11:25:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 13 Feb 2018 11:25:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.10.2-1044-g43cd946 Message-ID: <20180213162504.297D710716B@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, release has been updated via 43cd9467cd2b0c1dde6e69a042032ea83422dbda (commit) via 101ef67b99ed0455cced14d0a1f85ab8a47e11a6 (commit) via 2a730e24c618768ecbb5bdd67886e7bc9bfc8a7f (commit) via 4349393d1d55abb9977d62d921af2e1fd9f27f29 (commit) via 917852396866933f35cd723318f42290753873ff (commit) via c85ef9c339a9aea5160217e33f917b5d130c9fab (commit) from 51b287c40cd80a0c27caa3f99cd8d729c20cc3e5 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Modules/FindImageMagick.cmake | 4 ++-- Source/cmGlobalXCodeGenerator.cxx | 1 + Source/cmQtAutoGenInitializer.cxx | 46 ++++++++++--------------------------- 3 files changed, 15 insertions(+), 36 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 13 11:35:02 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 13 Feb 2018 11:35:02 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1060-g58c6376 Message-ID: <20180213163502.8948F10763A@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 58c637643d0e26c345cb8307d51677ae3bda4f05 (commit) via 193082a3c803a6418f0f1b5976dc34a91cf30805 (commit) from 3b8b379852bbbe3a942834072e4533f2592d00ef (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=58c637643d0e26c345cb8307d51677ae3bda4f05 commit 58c637643d0e26c345cb8307d51677ae3bda4f05 Merge: 3b8b379 193082a Author: Brad King AuthorDate: Tue Feb 13 16:28:22 2018 +0000 Commit: Kitware Robot CommitDate: Tue Feb 13 11:28:31 2018 -0500 Merge topic 'more-misc-typos' 193082a3 MAINT: Misc. typos Acked-by: Kitware Robot Merge-request: !1758 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=193082a3c803a6418f0f1b5976dc34a91cf30805 commit 193082a3c803a6418f0f1b5976dc34a91cf30805 Author: luz.paz AuthorDate: Thu Feb 8 06:27:21 2018 -0500 Commit: Brad King CommitDate: Tue Feb 13 11:24:30 2018 -0500 MAINT: Misc. typos Found via `codespell -q 3 -I ../cmake-whitelist.txt`. diff --git a/Modules/FindCUDA.cmake b/Modules/FindCUDA.cmake index 0a31ac2..119fc13 100644 --- a/Modules/FindCUDA.cmake +++ b/Modules/FindCUDA.cmake @@ -175,7 +175,7 @@ # -- Same as CUDA_ADD_EXECUTABLE except that a library is created. # # CUDA_BUILD_CLEAN_TARGET() -# -- Creates a convience target that deletes all the dependency files +# -- 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. # @@ -1564,7 +1564,7 @@ macro(CUDA_WRAP_SRCS cuda_target format generated_files) # Bring in the dependencies. Creates a variable CUDA_NVCC_DEPEND ####### cuda_include_nvcc_dependencies(${cmake_dependency_file}) - # Convience string for output ########################################### + # Convenience string for output ######################################### if(CUDA_BUILD_EMULATION) set(cuda_build_type "Emulation") else() @@ -1975,9 +1975,9 @@ endmacro() ############################################################################### ############################################################################### macro(CUDA_BUILD_CLEAN_TARGET) - # Call this after you add all your CUDA targets, and you will get a convience - # target. You should also make clean after running this target to get the - # build system to generate all the code again. + # Call this after you add all your CUDA targets, and you will get a + # convenience target. You should also make clean after running this target + # to get the build system to generate all the code again. set(cuda_clean_target_name clean_cuda_depends) if (CMAKE_GENERATOR MATCHES "Visual Studio") diff --git a/Modules/UseJava.cmake b/Modules/UseJava.cmake index 939bd7b..7b138f5 100644 --- a/Modules/UseJava.cmake +++ b/Modules/UseJava.cmake @@ -36,7 +36,7 @@ # The default OUTPUT_DIR can also be changed by setting the variable # CMAKE_JAVA_TARGET_OUTPUT_DIR. # -# Optionaly, using option GENERATE_NATIVE_HEADERS, native header files can be generated +# 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 diff --git a/Source/cmFindBase.cxx b/Source/cmFindBase.cxx index 417cdd2..7069386 100644 --- a/Source/cmFindBase.cxx +++ b/Source/cmFindBase.cxx @@ -225,8 +225,8 @@ void cmFindBase::FillCMakeVariablePath() { cmSearchPath& paths = this->LabeledPaths[PathLabel::CMake]; - // Add CMake varibles of the same name as the previous environment - // varibles CMAKE_*_PATH to be used most of the time with -D + // Add CMake variables of the same name as the previous environment + // variables CMAKE_*_PATH to be used most of the time with -D // command line options std::string var = "CMAKE_"; var += this->CMakePathName; diff --git a/Source/cmQtAutoGeneratorMocUic.cxx b/Source/cmQtAutoGeneratorMocUic.cxx index 6be65ee..37cf0f8 100644 --- a/Source/cmQtAutoGeneratorMocUic.cxx +++ b/Source/cmQtAutoGeneratorMocUic.cxx @@ -434,7 +434,7 @@ bool cmQtAutoGeneratorMocUic::JobParseT::ParseMocSource(WorkerT& wrk, JobHandleT jobHandle(new JobMocT(std::move(jobPre.SourceFile), FileName, std::move(jobPre.IncludeString))); if (jobPre.self) { - // Read depdendencies from this source + // Read dependencies from this source static_cast(*jobHandle).FindDependencies(wrk, meta.Content); } if (!wrk.Gen().ParallelJobPushMoc(jobHandle)) { @@ -452,7 +452,7 @@ bool cmQtAutoGeneratorMocUic::JobParseT::ParseMocHeader(WorkerT& wrk, if (!macroName.empty()) { JobHandleT jobHandle( new JobMocT(std::string(FileName), std::string(), std::string())); - // Read depdendencies from this source + // Read dependencies from this source static_cast(*jobHandle).FindDependencies(wrk, meta.Content); success = wrk.Gen().ParallelJobPushMoc(jobHandle); } @@ -1373,7 +1373,7 @@ bool cmQtAutoGeneratorMocUic::Init(cmMakefile* makefile) // Compare list sizes if (sources.size() != options.size()) { std::ostringstream ost; - ost << "files/options lists sizes missmatch (" << sources.size() << "/" + ost << "files/options lists sizes mismatch (" << sources.size() << "/" << options.size() << ")"; Log().ErrorFile(GeneratorT::UIC, InfoFile(), ost.str()); return false; diff --git a/Source/cmRulePlaceholderExpander.h b/Source/cmRulePlaceholderExpander.h index 7b19210..a7d8cee 100644 --- a/Source/cmRulePlaceholderExpander.h +++ b/Source/cmRulePlaceholderExpander.h @@ -24,7 +24,7 @@ public: this->TargetImpLib = targetImpLib; } - // Create a struct to hold the varibles passed into + // Create a struct to hold the variables passed into // ExpandRuleVariables struct RuleVariables { diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index cd11c4b..734ac93 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -509,7 +509,7 @@ std::string cmTarget::ProcessSourceItemCMP0049(const std::string& s) { std::string src = s; - // For backwards compatibility replace varibles in source names. + // For backwards compatibility replace variables in source names. // This should eventually be removed. this->Makefile->ExpandVariablesInString(src); if (src != s) { diff --git a/Tests/CTestTest/test.cmake.in b/Tests/CTestTest/test.cmake.in index 589bd44..23166a7 100644 --- a/Tests/CTestTest/test.cmake.in +++ b/Tests/CTestTest/test.cmake.in @@ -62,7 +62,7 @@ COVERAGE_COMMAND:FILEPATH=@COVERAGE_COMMAND@ set (CTEST_DASHBOARD_ROOT "@CMAKE_CURRENT_BINARY_DIR@/Tests/CTestTest") -# set any extra environment varibles here +# set any extra environment variables here set (CTEST_ENVIRONMENT ) diff --git a/Tests/Complex/Cache/CMakeCache.txt b/Tests/Complex/Cache/CMakeCache.txt index 17c55aa..727faa2 100644 --- a/Tests/Complex/Cache/CMakeCache.txt +++ b/Tests/Complex/Cache/CMakeCache.txt @@ -5,7 +5,7 @@ # If you do want to change a value, simply edit, save, and exit the editor. # The syntax for the file is as follows: # KEY:TYPE=VALUE -# KEY is the name of a varible in the cache. +# KEY is the name of a variable in the cache. # TYPE is a hint to GUI's for the type of VALUE, DO NOT EDIT TYPE!. # VALUE is the current value for the KEY. diff --git a/Tests/ComplexOneConfig/Cache/CMakeCache.txt b/Tests/ComplexOneConfig/Cache/CMakeCache.txt index 17c55aa..727faa2 100644 --- a/Tests/ComplexOneConfig/Cache/CMakeCache.txt +++ b/Tests/ComplexOneConfig/Cache/CMakeCache.txt @@ -5,7 +5,7 @@ # If you do want to change a value, simply edit, save, and exit the editor. # The syntax for the file is as follows: # KEY:TYPE=VALUE -# KEY is the name of a varible in the cache. +# KEY is the name of a variable in the cache. # TYPE is a hint to GUI's for the type of VALUE, DO NOT EDIT TYPE!. # VALUE is the current value for the KEY. ----------------------------------------------------------------------- Summary of changes: Modules/FindCUDA.cmake | 10 +++++----- Modules/UseJava.cmake | 2 +- Source/cmFindBase.cxx | 4 ++-- Source/cmQtAutoGeneratorMocUic.cxx | 6 +++--- Source/cmRulePlaceholderExpander.h | 2 +- Source/cmTarget.cxx | 2 +- Tests/CTestTest/test.cmake.in | 2 +- Tests/Complex/Cache/CMakeCache.txt | 2 +- Tests/ComplexOneConfig/Cache/CMakeCache.txt | 2 +- 9 files changed, 16 insertions(+), 16 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 14 00:05:05 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 14 Feb 2018 00:05:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1061-gd870148 Message-ID: <20180214050505.AA42B107676@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via d870148537319da2e86237cbd8baf6815975e594 (commit) from 58c637643d0e26c345cb8307d51677ae3bda4f05 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d870148537319da2e86237cbd8baf6815975e594 commit d870148537319da2e86237cbd8baf6815975e594 Author: Kitware Robot AuthorDate: Wed Feb 14 00:01:12 2018 -0500 Commit: Kitware Robot CommitDate: Wed Feb 14 00:01:12 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index af74da2..c42b5d2 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180213) +set(CMake_VERSION_PATCH 20180214) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 14 09:45:05 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 14 Feb 2018 09:45:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1067-gead859f Message-ID: <20180214144505.AC62F10737B@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via ead859f50c749172125601a20c728ad6f820c50b (commit) via 34d35cd592da862085733761bfbecff8ebc7662a (commit) via 7593c9ce8c86ab280870ba10ba158cfbde92c017 (commit) via a71ab3be0e668731885740a11d29d378069d9677 (commit) via 22e8b3af041f49842aeafa2d97129f422404d7de (commit) via b721b9a3814ea85462197a911da12b94c2906a3f (commit) from d870148537319da2e86237cbd8baf6815975e594 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ead859f50c749172125601a20c728ad6f820c50b commit ead859f50c749172125601a20c728ad6f820c50b Merge: 34d35cd 22e8b3a Author: Brad King AuthorDate: Wed Feb 14 14:43:30 2018 +0000 Commit: Kitware Robot CommitDate: Wed Feb 14 09:43:38 2018 -0500 Merge topic 'ninja-cmd' 22e8b3af Ninja: Generate scripts for long custom command sequences Acked-by: Kitware Robot Merge-request: !1604 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=34d35cd592da862085733761bfbecff8ebc7662a commit 34d35cd592da862085733761bfbecff8ebc7662a Merge: 7593c9c a71ab3b Author: Brad King AuthorDate: Wed Feb 14 14:36:19 2018 +0000 Commit: Kitware Robot CommitDate: Wed Feb 14 09:36:59 2018 -0500 Merge topic 'help_string_MAKE_C_IDENTIFIER' a71ab3be Help: Expand string(MAKE_C_IDENTIFIER) docs Acked-by: Kitware Robot Merge-request: !1760 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7593c9ce8c86ab280870ba10ba158cfbde92c017 commit 7593c9ce8c86ab280870ba10ba158cfbde92c017 Merge: d870148 b721b9a Author: Brad King AuthorDate: Wed Feb 14 14:36:08 2018 +0000 Commit: Kitware Robot CommitDate: Wed Feb 14 09:36:17 2018 -0500 Merge topic 'const-members' b721b9a3 cmVisualStudio10TargetGenerator: Make some data members const; simplify Acked-by: Kitware Robot Merge-request: !1750 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a71ab3be0e668731885740a11d29d378069d9677 commit a71ab3be0e668731885740a11d29d378069d9677 Author: Craig Scott AuthorDate: Sun Feb 11 21:04:26 2018 +1100 Commit: Craig Scott CommitDate: Sun Feb 11 21:04:26 2018 +1100 Help: Expand string(MAKE_C_IDENTIFIER) docs The MAKE_C_IDENTIFIER subcommand was also buried in the docs for the TIMESTAMP subcommand, so it has been pulled out to its own subheading. diff --git a/Help/command/string.rst b/Help/command/string.rst index fb3893f..d8da7be 100644 --- a/Help/command/string.rst +++ b/Help/command/string.rst @@ -282,6 +282,18 @@ CONFIGURE Transform a string like :command:`configure_file` transforms a file. +MAKE_C_IDENTIFIER +""""""""""""""""" + +:: + + string(MAKE_C_IDENTIFIER ) + +Convert each non-alphanumeric character in the ```` to an +underscore and store the result in the ````. If the first +character of the string is a digit, an underscore will also be prepended to +the result. + RANDOM """""" @@ -346,13 +358,6 @@ If no explicit ```` is given it will default to: %Y-%m-%dT%H:%M:%S for local time. %Y-%m-%dT%H:%M:%SZ for UTC. - -:: - - string(MAKE_C_IDENTIFIER ) - -Write a string which can be used as an identifier in C. - .. note:: If the ``SOURCE_DATE_EPOCH`` environment variable is set, diff --git a/Help/manual/cmake-generator-expressions.7.rst b/Help/manual/cmake-generator-expressions.7.rst index 0f6d4cf..13948d3 100644 --- a/Help/manual/cmake-generator-expressions.7.rst +++ b/Help/manual/cmake-generator-expressions.7.rst @@ -289,7 +289,8 @@ Available output expressions are: ``$`` Content of ``...`` converted to upper case. ``$`` - Content of ``...`` converted to a C identifier. + Content of ``...`` converted to a C identifier. The conversion follows the + same behavior as :command:`string(MAKE_C_IDENTIFIER)`. ``$`` List of objects resulting from build of ``objLib``. ``objLib`` must be an object of type ``OBJECT_LIBRARY``. https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=22e8b3af041f49842aeafa2d97129f422404d7de commit 22e8b3af041f49842aeafa2d97129f422404d7de Author: Roger Leigh AuthorDate: Thu Dec 14 16:09:02 2017 +0000 Commit: Brad King CommitDate: Tue Feb 6 13:24:46 2018 -0500 Ninja: Generate scripts for long custom command sequences Ninja runs just one command line for every build statement, so the Ninja generator needs to `&&`-chain multiple commands together into one long string. For long custom command sequences this can exceed the maximum command-line length for the operating system. In such cases, write the commands out to a script instead, and then run the script from Ninja's one command line. Co-Author: Brad King Fixes: #15612 diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index 8c889fc..c1af92f 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -10,6 +10,7 @@ #include #include +#include "cmCryptoHash.h" #include "cmCustomCommand.h" #include "cmCustomCommandGenerator.h" #include "cmGeneratedFileStream.h" @@ -24,6 +25,7 @@ #include "cmStateTypes.h" #include "cmSystemTools.h" #include "cmake.h" +#include "cmsys/FStream.hxx" cmLocalNinjaGenerator::cmLocalNinjaGenerator(cmGlobalGenerator* gg, cmMakefile* mf) @@ -286,8 +288,51 @@ void cmLocalNinjaGenerator::AppendCustomCommandDeps( } } +std::string cmLocalNinjaGenerator::WriteCommandScript( + std::vector const& cmdLines, std::string const& customStep, + cmGeneratorTarget const* target) const +{ + std::string scriptPath; + if (target) { + scriptPath = target->GetSupportDirectory(); + } else { + scriptPath = this->GetCurrentBinaryDirectory(); + scriptPath += cmake::GetCMakeFilesDirectory(); + } + cmSystemTools::MakeDirectory(scriptPath); + scriptPath += '/'; + scriptPath += customStep; +#ifdef _WIN32 + scriptPath += ".bat"; +#else + scriptPath += ".sh"; +#endif + + cmsys::ofstream script(scriptPath.c_str()); + +#ifndef _WIN32 + script << "set -e\n\n"; +#endif + + for (auto const& i : cmdLines) { + std::string cmd = i; + // The command line was built assuming it would be written to + // the build.ninja file, so it uses '$$' for '$'. Remove this + // for the raw shell script. + cmSystemTools::ReplaceString(cmd, "$$", "$"); +#ifdef _WIN32 + script << cmd << " || exit /b" << '\n'; +#else + script << cmd << '\n'; +#endif + } + + return scriptPath; +} + std::string cmLocalNinjaGenerator::BuildCommandLine( - const std::vector& cmdLines) + std::vector const& cmdLines, std::string const& customStep, + cmGeneratorTarget const* target) const { // If we have no commands but we need to build a command anyway, use noop. // This happens when building a POST_BUILD value for link targets that @@ -296,6 +341,35 @@ std::string cmLocalNinjaGenerator::BuildCommandLine( return cmGlobalNinjaGenerator::SHELL_NOOP; } + // If this is a custom step then we will have no '$VAR' ninja placeholders. + // This means we can deal with long command sequences by writing to a script. + // Do this if the command lines are on the scale of the OS limit. + if (!customStep.empty()) { + size_t cmdLinesTotal = 0; + for (std::string const& cmd : cmdLines) { + cmdLinesTotal += cmd.length() + 6; + } + if (cmdLinesTotal > cmSystemTools::CalculateCommandLineLengthLimit() / 2) { + std::string const scriptPath = + this->WriteCommandScript(cmdLines, customStep, target); + std::string cmd +#ifndef _WIN32 + = "/bin/sh " +#endif + ; + cmd += this->ConvertToOutputFormat( + this->GetGlobalNinjaGenerator()->ConvertToNinjaPath(scriptPath), + cmOutputConverter::SHELL); + + // Add an unused argument based on script content so that Ninja + // knows when the command lines change. + cmd += " "; + cmCryptoHash hash(cmCryptoHash::AlgoSHA256); + cmd += hash.HashFile(scriptPath).substr(0, 16); + return cmd; + } + } + std::ostringstream cmd; for (std::vector::const_iterator li = cmdLines.begin(); li != cmdLines.end(); ++li) @@ -406,10 +480,16 @@ void cmLocalNinjaGenerator::WriteCustomCommandBuildStatement( "Phony custom command for " + ninjaOutputs[0], ninjaOutputs, ninjaDeps, cmNinjaDeps(), orderOnlyDeps, cmNinjaVars()); } else { + std::string customStep = cmSystemTools::GetFilenameName(ninjaOutputs[0]); + // Hash full path to make unique. + customStep += '-'; + cmCryptoHash hash(cmCryptoHash::AlgoSHA256); + customStep += hash.HashString(ninjaOutputs[0]).substr(0, 7); + this->GetGlobalNinjaGenerator()->WriteCustomCommandBuild( - this->BuildCommandLine(cmdLines), this->ConstructComment(ccg), - "Custom command for " + ninjaOutputs[0], cc->GetDepfile(), - cc->GetUsesTerminal(), + this->BuildCommandLine(cmdLines, customStep), + this->ConstructComment(ccg), "Custom command for " + ninjaOutputs[0], + cc->GetDepfile(), cc->GetUsesTerminal(), /*restat*/ !symbolic || !byproducts.empty(), ninjaOutputs, ninjaDeps, orderOnlyDeps); } diff --git a/Source/cmLocalNinjaGenerator.h b/Source/cmLocalNinjaGenerator.h index 95d8a61..f772fb0 100644 --- a/Source/cmLocalNinjaGenerator.h +++ b/Source/cmLocalNinjaGenerator.h @@ -59,7 +59,10 @@ public: return this->HomeRelativeOutputPath; } - std::string BuildCommandLine(const std::vector& cmdLines); + std::string BuildCommandLine( + std::vector const& cmdLines, + std::string const& customStep = std::string(), + cmGeneratorTarget const* target = nullptr) const; void AppendTargetOutputs(cmGeneratorTarget* target, cmNinjaDeps& outputs); void AppendTargetDepends( @@ -98,6 +101,10 @@ private: std::string MakeCustomLauncher(cmCustomCommandGenerator const& ccg); + std::string WriteCommandScript(std::vector const& cmdLines, + std::string const& customStep, + cmGeneratorTarget const* target) const; + std::string HomeRelativeOutputPath; typedef std::map> diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index ddbc772..f1fb2d2 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -976,8 +976,10 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() preLinkCmdLines.push_back("cd " + homeOutDir); } - vars["PRE_LINK"] = localGen.BuildCommandLine(preLinkCmdLines); - std::string postBuildCmdLine = localGen.BuildCommandLine(postBuildCmdLines); + vars["PRE_LINK"] = localGen.BuildCommandLine(preLinkCmdLines, "pre-link", + this->GeneratorTarget); + std::string postBuildCmdLine = localGen.BuildCommandLine( + postBuildCmdLines, "post-build", this->GeneratorTarget); cmNinjaVars symlinkVars; bool const symlinkNeeded = diff --git a/Source/cmNinjaUtilityTargetGenerator.cxx b/Source/cmNinjaUtilityTargetGenerator.cxx index 7adeb8e..cc6d4b9 100644 --- a/Source/cmNinjaUtilityTargetGenerator.cxx +++ b/Source/cmNinjaUtilityTargetGenerator.cxx @@ -96,8 +96,8 @@ void cmNinjaUtilityTargetGenerator::Generate() this->GetBuildFileStream(), "Utility command for " + this->GetTargetName(), outputs, deps); } else { - std::string command = - this->GetLocalGenerator()->BuildCommandLine(commands); + std::string command = this->GetLocalGenerator()->BuildCommandLine( + commands, "utility", this->GeneratorTarget); const char* echoStr = this->GetGeneratorTarget()->GetProperty("EchoString"); std::string desc; diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 08bfebe..62157bb 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -816,6 +816,8 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release ADD_TEST_MACRO(CustomCommandByproducts CustomCommandByproducts) + ADD_TEST_MACRO(CommandLength CommandLength) + ADD_TEST_MACRO(EmptyDepends ${CMAKE_CTEST_COMMAND}) add_test(CustomCommandWorkingDirectory ${CMAKE_CTEST_COMMAND} diff --git a/Tests/CommandLength/CMakeLists.txt b/Tests/CommandLength/CMakeLists.txt new file mode 100644 index 0000000..6836051 --- /dev/null +++ b/Tests/CommandLength/CMakeLists.txt @@ -0,0 +1,17 @@ +cmake_minimum_required(VERSION 3.10) +project(CommandLength C) + +add_executable(CommandLength test.c) +add_custom_command(TARGET CommandLength POST_BUILD VERBATIM + COMMAND ${CMAKE_COMMAND} -E make_directory log) + +set(msg "xxxx $$$$ yyyy") +set(msg "${msg} ${msg}") +set(msg "${msg} ${msg}") +set(msg "${msg} ${msg}") +set(msg "${msg} ${msg}") +foreach(i RANGE 1 1000) + add_custom_command(TARGET CommandLength POST_BUILD VERBATIM + COMMAND ${CMAKE_COMMAND} -E echo "${i} ${msg}" > log/${i} + ) +endforeach() diff --git a/Tests/CommandLength/test.c b/Tests/CommandLength/test.c new file mode 100644 index 0000000..f8b643a --- /dev/null +++ b/Tests/CommandLength/test.c @@ -0,0 +1,4 @@ +int main() +{ + return 0; +} https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b721b9a3814ea85462197a911da12b94c2906a3f commit b721b9a3814ea85462197a911da12b94c2906a3f Author: Vitaly Stakhovsky AuthorDate: Mon Feb 5 09:59:46 2018 -0500 Commit: Vitaly Stakhovsky CommitDate: Mon Feb 5 19:50:54 2018 -0500 cmVisualStudio10TargetGenerator: Make some data members const; simplify diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index ec31bd6..92d67db 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -84,16 +84,15 @@ static std::string computeProjectFileExtension(cmGeneratorTarget const* t, cmVisualStudio10TargetGenerator::cmVisualStudio10TargetGenerator( cmGeneratorTarget* target, cmGlobalVisualStudio10Generator* gg) + : GeneratorTarget(target) + , Makefile(target->Target->GetMakefile()) + , Platform(gg->GetPlatformName()) + , Name(target->GetName()) + , GUID(gg->GetGUID(this->Name)) + , GlobalGenerator(gg) + , LocalGenerator((cmLocalVisualStudio7Generator*)target->GetLocalGenerator()) { - this->GlobalGenerator = gg; - this->GeneratorTarget = target; - this->Makefile = target->Target->GetMakefile(); this->Makefile->GetConfigurations(this->Configurations); - this->LocalGenerator = - (cmLocalVisualStudio7Generator*)this->GeneratorTarget->GetLocalGenerator(); - this->Name = this->GeneratorTarget->GetName(); - this->GUID = this->GlobalGenerator->GetGUID(this->Name); - this->Platform = gg->GetPlatformName(); this->NsightTegra = gg->IsNsightTegra(); for (int i = 0; i < 4; ++i) { this->NsightTegraVersion[i] = 0; @@ -602,8 +601,7 @@ void cmVisualStudio10TargetGenerator::WriteDotNetReferences() if (!name.empty()) { std::string path = i.second.GetValue(); if (!cmsys::SystemTools::FileIsFullPath(path)) { - path = std::string(this->GeneratorTarget->Target->GetMakefile() - ->GetCurrentSourceDirectory()) + + path = std::string(this->Makefile->GetCurrentSourceDirectory()) + "/" + path; } ConvertToWindowsSlash(path); @@ -994,11 +992,8 @@ void cmVisualStudio10TargetGenerator::WriteProjectConfigurationValues() void cmVisualStudio10TargetGenerator::WriteMSToolConfigurationValues( std::string const& config) { - cmGlobalVisualStudio10Generator* gg = - static_cast(this->GlobalGenerator); - const char* mfcFlag = - this->GeneratorTarget->Target->GetMakefile()->GetDefinition( - "CMAKE_MFC_FLAG"); + cmGlobalVisualStudio10Generator* gg = this->GlobalGenerator; + const char* mfcFlag = this->Makefile->GetDefinition("CMAKE_MFC_FLAG"); if (mfcFlag) { std::string const mfcFlagValue = mfcFlag; @@ -1046,8 +1041,7 @@ void cmVisualStudio10TargetGenerator::WriteMSToolConfigurationValues( void cmVisualStudio10TargetGenerator::WriteMSToolConfigurationValuesManaged( std::string const& config) { - cmGlobalVisualStudio10Generator* gg = - static_cast(this->GlobalGenerator); + cmGlobalVisualStudio10Generator* gg = this->GlobalGenerator; Options& o = *(this->ClOptions[config]); @@ -1100,8 +1094,7 @@ void cmVisualStudio10TargetGenerator::WriteMSToolConfigurationValuesManaged( void cmVisualStudio10TargetGenerator::WriteNsightTegraConfigurationValues( std::string const&) { - cmGlobalVisualStudio10Generator* gg = - static_cast(this->GlobalGenerator); + cmGlobalVisualStudio10Generator* gg = this->GlobalGenerator; const char* toolset = gg->GetPlatformToolset(); std::string ntv = ""; ntv += toolset ? toolset : "Default"; @@ -1226,7 +1219,7 @@ void cmVisualStudio10TargetGenerator::WriteCustomRule( for (std::vector::const_iterator i = this->Configurations.begin(); i != this->Configurations.end(); ++i) { - cmCustomCommandGenerator ccg(command, *i, this->LocalGenerator); + cmCustomCommandGenerator ccg(command, *i, lg); std::string comment = lg->ConstructComment(ccg); comment = cmVS10EscapeComment(comment); std::string script = cmVS10EscapeXML(lg->ConstructScript(ccg)); @@ -1236,7 +1229,7 @@ void cmVisualStudio10TargetGenerator::WriteCustomRule( for (std::vector::const_iterator d = ccg.GetDepends().begin(); d != ccg.GetDepends().end(); ++d) { std::string dep; - if (this->LocalGenerator->GetRealDependency(*d, *i, dep)) { + if (lg->GetRealDependency(*d, *i, dep)) { ConvertToWindowsSlash(dep); inputs << ";" << cmVS10EscapeXML(dep); } @@ -1334,6 +1327,7 @@ static void ConvertToWindowsSlash(std::string& s) pos++; } } + void cmVisualStudio10TargetGenerator::WriteGroups() { if (this->ProjectType == csproj) { @@ -2110,8 +2104,7 @@ bool cmVisualStudio10TargetGenerator::OutputSourceSpecificFlags( (*this->BuildFileStream) << firstString; firstString = ""; // only do firstString once hasFlags = true; - cmGlobalVisualStudio10Generator* gg = - static_cast(this->GlobalGenerator); + cmGlobalVisualStudio10Generator* gg = this->GlobalGenerator; cmIDEFlagTable const* flagtable = nullptr; const std::string& srclang = source->GetLanguage(); if (srclang == "C" || srclang == "CXX") { @@ -2374,8 +2367,7 @@ bool cmVisualStudio10TargetGenerator::ComputeClOptions( // copied from cmLocalVisualStudio7Generator.cxx 805 // TODO: Integrate code below with cmLocalVisualStudio7Generator. - cmGlobalVisualStudio10Generator* gg = - static_cast(this->GlobalGenerator); + cmGlobalVisualStudio10Generator* gg = this->GlobalGenerator; std::unique_ptr pOptions; switch (this->ProjectType) { case vcxproj: @@ -2422,15 +2414,11 @@ bool cmVisualStudio10TargetGenerator::ComputeClOptions( std::string baseFlagVar = "CMAKE_"; baseFlagVar += langForClCompile; baseFlagVar += "_FLAGS"; - flags = - this->GeneratorTarget->Target->GetMakefile()->GetRequiredDefinition( - baseFlagVar); + flags = this->Makefile->GetRequiredDefinition(baseFlagVar); std::string flagVar = baseFlagVar + std::string("_") + cmSystemTools::UpperCase(configName); flags += " "; - flags += - this->GeneratorTarget->Target->GetMakefile()->GetRequiredDefinition( - flagVar); + flags += this->Makefile->GetRequiredDefinition(flagVar); this->LocalGenerator->AddCompileOptions(flags, this->GeneratorTarget, langForClCompile, configName); } @@ -2446,8 +2434,7 @@ bool cmVisualStudio10TargetGenerator::ComputeClOptions( this->GeneratorTarget->IsIPOEnabled(linkLanguage, configName); // Get preprocessor definitions for this directory. - std::string defineFlags = - this->GeneratorTarget->Target->GetMakefile()->GetDefineFlags(); + std::string defineFlags = this->Makefile->GetDefineFlags(); if (this->MSTools) { if (this->ProjectType == vcxproj) { clOptions.FixExceptionHandlingDefault(); @@ -2605,8 +2592,7 @@ bool cmVisualStudio10TargetGenerator::ComputeRcOptions() bool cmVisualStudio10TargetGenerator::ComputeRcOptions( std::string const& configName) { - cmGlobalVisualStudio10Generator* gg = - static_cast(this->GlobalGenerator); + cmGlobalVisualStudio10Generator* gg = this->GlobalGenerator; auto pOptions = cm::make_unique( this->LocalGenerator, Options::ResourceCompiler, gg->GetRcFlagTable()); Options& rcOptions = *pOptions; @@ -2666,8 +2652,7 @@ bool cmVisualStudio10TargetGenerator::ComputeCudaOptions() bool cmVisualStudio10TargetGenerator::ComputeCudaOptions( std::string const& configName) { - cmGlobalVisualStudio10Generator* gg = - static_cast(this->GlobalGenerator); + cmGlobalVisualStudio10Generator* gg = this->GlobalGenerator; auto pOptions = cm::make_unique( this->LocalGenerator, Options::CudaCompiler, gg->GetCudaFlagTable()); Options& cudaOptions = *pOptions; @@ -2683,8 +2668,7 @@ bool cmVisualStudio10TargetGenerator::ComputeCudaOptions( configName); // Get preprocessor definitions for this directory. - std::string defineFlags = - this->GeneratorTarget->Target->GetMakefile()->GetDefineFlags(); + std::string defineFlags = this->Makefile->GetDefineFlags(); cudaOptions.Parse(flags.c_str()); cudaOptions.Parse(defineFlags.c_str()); @@ -2804,8 +2788,7 @@ bool cmVisualStudio10TargetGenerator::ComputeCudaLinkOptions() bool cmVisualStudio10TargetGenerator::ComputeCudaLinkOptions( std::string const& configName) { - cmGlobalVisualStudio10Generator* gg = - static_cast(this->GlobalGenerator); + cmGlobalVisualStudio10Generator* gg = this->GlobalGenerator; auto pOptions = cm::make_unique( this->LocalGenerator, Options::CudaCompiler, gg->GetCudaFlagTable()); Options& cudaLinkOptions = *pOptions; @@ -2873,8 +2856,7 @@ bool cmVisualStudio10TargetGenerator::ComputeMasmOptions() bool cmVisualStudio10TargetGenerator::ComputeMasmOptions( std::string const& configName) { - cmGlobalVisualStudio10Generator* gg = - static_cast(this->GlobalGenerator); + cmGlobalVisualStudio10Generator* gg = this->GlobalGenerator; auto pOptions = cm::make_unique( this->LocalGenerator, Options::MasmCompiler, gg->GetMasmFlagTable()); Options& masmOptions = *pOptions; @@ -2933,8 +2915,7 @@ bool cmVisualStudio10TargetGenerator::ComputeNasmOptions() bool cmVisualStudio10TargetGenerator::ComputeNasmOptions( std::string const& configName) { - cmGlobalVisualStudio10Generator* gg = - static_cast(this->GlobalGenerator); + cmGlobalVisualStudio10Generator* gg = this->GlobalGenerator; auto pOptions = cm::make_unique( this->LocalGenerator, Options::NasmCompiler, gg->GetNasmFlagTable()); Options& nasmOptions = *pOptions; @@ -2994,8 +2975,7 @@ void cmVisualStudio10TargetGenerator::WriteLibOptions( libflags, cmSystemTools::UpperCase(config), this->GeneratorTarget); if (!libflags.empty()) { this->WriteString("\n", 2); - cmGlobalVisualStudio10Generator* gg = - static_cast(this->GlobalGenerator); + cmGlobalVisualStudio10Generator* gg = this->GlobalGenerator; cmVisualStudioGeneratorOptions libOptions( this->LocalGenerator, cmVisualStudioGeneratorOptions::Linker, gg->GetLibFlagTable(), 0, this); @@ -3185,8 +3165,7 @@ bool cmVisualStudio10TargetGenerator::ComputeLinkOptions() bool cmVisualStudio10TargetGenerator::ComputeLinkOptions( std::string const& config) { - cmGlobalVisualStudio10Generator* gg = - static_cast(this->GlobalGenerator); + cmGlobalVisualStudio10Generator* gg = this->GlobalGenerator; auto pOptions = cm::make_unique(this->LocalGenerator, Options::Linker, gg->GetLinkFlagTable(), nullptr, this); @@ -3217,12 +3196,10 @@ bool cmVisualStudio10TargetGenerator::ComputeLinkOptions( linkFlagVarBase += linkType; linkFlagVarBase += "_LINKER_FLAGS"; flags += " "; - flags += this->GeneratorTarget->Target->GetMakefile()->GetRequiredDefinition( - linkFlagVarBase); + flags += this->Makefile->GetRequiredDefinition(linkFlagVarBase); std::string linkFlagVar = linkFlagVarBase + "_" + CONFIG; flags += " "; - flags += this->GeneratorTarget->Target->GetMakefile()->GetRequiredDefinition( - linkFlagVar); + flags += this->Makefile->GetRequiredDefinition(linkFlagVar); const char* targetLinkFlags = this->GeneratorTarget->GetProperty("LINK_FLAGS"); if (targetLinkFlags) { @@ -3679,8 +3656,7 @@ void cmVisualStudio10TargetGenerator::WriteProjectReferences() } // skip fortran targets as they can not be processed by MSBuild // the only reference will be in the .sln file - if (static_cast(this->GlobalGenerator) - ->TargetIsFortranOnly(dt)) { + if (this->GlobalGenerator->TargetIsFortranOnly(dt)) { continue; } this->WriteString("BuildFileStream) << name << "\n"; this->WriteDotNetReferenceCustomTags(name); if (csproj == this->ProjectType) { - if (!static_cast(this->GlobalGenerator) - ->TargetCanBeReferenced(dt)) { + if (!this->GlobalGenerator->TargetCanBeReferenced(dt)) { this->WriteString( "false\n", 3); } @@ -3921,8 +3896,7 @@ bool cmVisualStudio10TargetGenerator::IsXamlSource( void cmVisualStudio10TargetGenerator::WriteApplicationTypeSettings() { - cmGlobalVisualStudio10Generator* gg = - static_cast(this->GlobalGenerator); + cmGlobalVisualStudio10Generator* gg = this->GlobalGenerator; bool isAppContainer = false; bool const isWindowsPhone = this->GlobalGenerator->TargetsWindowsPhone(); bool const isWindowsStore = this->GlobalGenerator->TargetsWindowsStore(); diff --git a/Source/cmVisualStudio10TargetGenerator.h b/Source/cmVisualStudio10TargetGenerator.h index 33d4fb7..adef127 100644 --- a/Source/cmVisualStudio10TargetGenerator.h +++ b/Source/cmVisualStudio10TargetGenerator.h @@ -190,19 +190,19 @@ private: bool InSourceBuild; std::vector Configurations; std::vector TargetsFileAndConfigsVec; - cmGeneratorTarget* GeneratorTarget; - cmMakefile* Makefile; - std::string Platform; - std::string GUID; - std::string Name; + cmGeneratorTarget* const GeneratorTarget; + cmMakefile* const Makefile; + std::string const Platform; + std::string const Name; + std::string const GUID; bool MSTools; bool Managed; bool NsightTegra; int NsightTegraVersion[4]; bool TargetCompileAsWinRT; - cmGlobalVisualStudio10Generator* GlobalGenerator; + cmGlobalVisualStudio10Generator* const GlobalGenerator; cmGeneratedFileStream* BuildFileStream; - cmLocalVisualStudio7Generator* LocalGenerator; + cmLocalVisualStudio7Generator* const LocalGenerator; std::set SourcesVisited; std::set CSharpCustomCommandNames; bool IsMissingFiles; ----------------------------------------------------------------------- Summary of changes: Help/command/string.rst | 19 ++-- Help/manual/cmake-generator-expressions.7.rst | 3 +- Source/cmLocalNinjaGenerator.cxx | 88 ++++++++++++++++++- Source/cmLocalNinjaGenerator.h | 9 +- Source/cmNinjaNormalTargetGenerator.cxx | 6 +- Source/cmNinjaUtilityTargetGenerator.cxx | 4 +- Source/cmVisualStudio10TargetGenerator.cxx | 92 +++++++------------- Source/cmVisualStudio10TargetGenerator.h | 14 +-- Tests/CMakeLists.txt | 2 + Tests/CommandLength/CMakeLists.txt | 17 ++++ .../DummyCXXFile.cxx => Tests/CommandLength/test.c | 0 11 files changed, 171 insertions(+), 83 deletions(-) create mode 100644 Tests/CommandLength/CMakeLists.txt copy Modules/DummyCXXFile.cxx => Tests/CommandLength/test.c (100%) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 15 00:05:05 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 15 Feb 2018 00:05:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1068-gcbdec57 Message-ID: <20180215050505.A5FC61079AE@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via cbdec57937597c67be8ca138f37c66c9aa7936ff (commit) from ead859f50c749172125601a20c728ad6f820c50b (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cbdec57937597c67be8ca138f37c66c9aa7936ff commit cbdec57937597c67be8ca138f37c66c9aa7936ff Author: Kitware Robot AuthorDate: Thu Feb 15 00:01:08 2018 -0500 Commit: Kitware Robot CommitDate: Thu Feb 15 00:01:08 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index c42b5d2..6d0108d 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180214) +set(CMake_VERSION_PATCH 20180215) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 15 08:45:09 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 15 Feb 2018 08:45:09 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1073-gcab9838 Message-ID: <20180215134509.4CD951038DC@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via cab9838b4c015d57476b579275adcad4e724354f (commit) via 8bd3e13ec305798c02cb2d4aecb7766fd11b99bb (commit) via 02edf08be2b9476f442b702c6c00447912425cc2 (commit) via b6d68766b1a8537a3a130a38aa91936e579da6fd (commit) via 56e1688517ab040cf9554926070830df475980b3 (commit) from cbdec57937597c67be8ca138f37c66c9aa7936ff (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cab9838b4c015d57476b579275adcad4e724354f commit cab9838b4c015d57476b579275adcad4e724354f Merge: 8bd3e13 02edf08 Author: Brad King AuthorDate: Thu Feb 15 08:43:32 2018 -0500 Commit: Brad King CommitDate: Thu Feb 15 08:43:32 2018 -0500 Merge branch 'release-3.11' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8bd3e13ec305798c02cb2d4aecb7766fd11b99bb commit 8bd3e13ec305798c02cb2d4aecb7766fd11b99bb Merge: cbdec57 b6d6876 Author: Brad King AuthorDate: Thu Feb 15 13:41:49 2018 +0000 Commit: Kitware Robot CommitDate: Thu Feb 15 08:42:47 2018 -0500 Merge topic 'export-android-mk' b6d68766 Android.mk: Fix export of static libraries with PRIVATE dependencies 56e16885 Android.mk: Evaluate generator expressions up front Acked-by: Kitware Robot Merge-request: !1766 ----------------------------------------------------------------------- Summary of changes: Source/cmExportBuildAndroidMKGenerator.cxx | 28 ++++++++++++++++------------ Tests/RunCMake/AndroidMK/AndroidMK.cmake | 2 +- 2 files changed, 17 insertions(+), 13 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 15 08:45:09 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 15 Feb 2018 08:45:09 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.10.2-1047-g02edf08 Message-ID: <20180215134509.6DBDE104640@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, release has been updated via 02edf08be2b9476f442b702c6c00447912425cc2 (commit) via b6d68766b1a8537a3a130a38aa91936e579da6fd (commit) via 56e1688517ab040cf9554926070830df475980b3 (commit) from 43cd9467cd2b0c1dde6e69a042032ea83422dbda (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Source/cmExportBuildAndroidMKGenerator.cxx | 28 ++++++++++++++++------------ Tests/RunCMake/AndroidMK/AndroidMK.cmake | 2 +- 2 files changed, 17 insertions(+), 13 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 15 08:55:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 15 Feb 2018 08:55:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.10.2-1078-ga2ec98b Message-ID: <20180215135504.BFD82107538@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via a2ec98b7d97df67d50e90e790b2bd235f7c278cc (commit) via b5d18cbd7777cba22f844b0b3672db20ab21c836 (commit) via 0bef9eb410566aa10536331d086d4a3ee265a526 (commit) via d6048bd153979c268a2943b26fd71be7c5f11251 (commit) via b513a879ec0dc23df1d4557d17b3b2fed3b94f7b (commit) from cab9838b4c015d57476b579275adcad4e724354f (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a2ec98b7d97df67d50e90e790b2bd235f7c278cc commit a2ec98b7d97df67d50e90e790b2bd235f7c278cc Merge: b5d18cb 0bef9eb Author: Brad King AuthorDate: Thu Feb 15 13:49:44 2018 +0000 Commit: Kitware Robot CommitDate: Thu Feb 15 08:50:29 2018 -0500 Merge topic 'enhanced-UseSWIG-Module' 0bef9eb4 UseSWIG: modernize module d6048bd1 UseSWIG: Re-work test framework Acked-by: Kitware Robot Merge-request: !1707 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b5d18cbd7777cba22f844b0b3672db20ab21c836 commit b5d18cbd7777cba22f844b0b3672db20ab21c836 Merge: cab9838 b513a87 Author: Brad King AuthorDate: Thu Feb 15 13:49:21 2018 +0000 Commit: Kitware Robot CommitDate: Thu Feb 15 08:49:44 2018 -0500 Merge topic 'directory-property-TESTS' b513a879 Tests management: add TESTS directory property Acked-by: Kitware Robot Merge-request: !1748 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0bef9eb410566aa10536331d086d4a3ee265a526 commit 0bef9eb410566aa10536331d086d4a3ee265a526 Author: Marc Chevrier AuthorDate: Mon Jan 29 10:40:25 2018 +0100 Commit: Marc Chevrier CommitDate: Wed Feb 14 08:35:04 2018 +0100 UseSWIG: modernize module diff --git a/Help/release/dev/UseSWIG-modernize-module.rst b/Help/release/dev/UseSWIG-modernize-module.rst new file mode 100644 index 0000000..925c119 --- /dev/null +++ b/Help/release/dev/UseSWIG-modernize-module.rst @@ -0,0 +1,6 @@ +UseSWIG-modernize-module +------------------------ + +* The :module:`UseSWIG` gained a whole refresh and is now more consistent with + standard CMake commands to generate libraries and is fully configurable through + properties. diff --git a/Modules/UseSWIG.cmake b/Modules/UseSWIG.cmake index cc30669..6d35d1b 100644 --- a/Modules/UseSWIG.cmake +++ b/Modules/UseSWIG.cmake @@ -5,7 +5,7 @@ UseSWIG ------- -Defines the following macros for use with SWIG: +Defines the following command for use with SWIG: .. command:: swig_add_library @@ -14,20 +14,47 @@ Defines the following macros for use with SWIG: swig_add_library( [TYPE ] LANGUAGE + [NO_PROXY] + [OUTPUT_DIR ] + [OUTFILE_DIR ] SOURCES ... - ) + ) - The variable ``SWIG_MODULE__REAL_NAME`` will be set to the name - of the swig module target library. + Targets created with command ``swig_add_library`` have the same capabilities as targets + created with command :command:`add_library`, so can be used with any command accepting a target + especially command :command:`target_link_libraries`. -.. command:: swig_link_libraries + The arguments are: - Link libraries to swig module:: + ``TYPE`` + ``SHARED``, ``MODULE`` and ``STATIC`` have same semantic as command :command:`add_library`. + if ``USE_BUILD_SHARED_LIBS`` is specified, library type will be ``STATIC`` or ``SHARED`` + based on whether the current value of the variable :variable:`BUILD_SHARED_LIBS` is ``ON``. + If none is specified, ``MODULE`` will be used. - swig_link_libraries( [ libraries ]) + ``LANGUAGE`` + Specify the target language. -Source file properties on module files can be set before the invocation -of the ``swig_add_library`` macro to specify special behavior of SWIG: + ``NO_PROXY`` + Prevent the generation of the wrapper layer (swig ``-noproxy`` option). + + ``OUTPUT_DIR`` + Specify where to write the language specific files (swig ``-outdir`` option). + If not specified, variable ``CMAKE_SWIG_OUTDIR`` will be used. If none is specified, + :variable:`CMAKE_CURRENT_BINARY_DIR` is used. + + ``OUTFILE_DIR`` + Specify an output directory name where the generated source file will be placed + (swig -o option). If not specified, variable ``SWIG_OUTFILE_DIR`` will be used. + If none is specified, option ``OUTPUT_DIR`` or variable ``CMAKE_SWIG_OUTDIR`` is used. + + ``SOURCES`` + List of sources for the library. Files with extension ``.i`` will be identified as sources + for ``SWIG`` tool. Other files will be handled in the standard way. + +Source files properties on module files **must** be set before the invocation +of the ``swig_add_library`` command to specify special behavior of SWIG and ensure +generated files will receive required settings. ``CPLUSPLUS`` Call SWIG in c++ mode. For example: @@ -37,9 +64,17 @@ of the ``swig_add_library`` macro to specify special behavior of SWIG: set_property(SOURCE mymod.i PROPERTY CPLUSPLUS ON) swig_add_library(mymod LANGUAGE python SOURCES mymod.i) -``SWIG_FLAGS`` - Add custom flags to the SWIG executable. +``INCLUDE_DIRECTORIES``, ``COMPILE_DEFINITIONS`` and ``COMPILE_OPTIONS`` + Add custom flags to SWIG compiler and have same semantic as properties + :prop_sf:`INCLUDE_DIRECTORIES`, :prop_sf:`COMPILE_DEFINITIONS` and :prop_sf:`COMPILE_OPTIONS`. + +``GENERATED_INCLUDE_DIRECTORIES``, ``GENERATED_COMPILE_DEFINITIONS`` and ``GENERATED_COMPILE_OPTIONS`` + Add custom flags to the C/C++ generated source. They will fill, respectively, + properties :prop_sf:`INCLUDE_DIRECTORIES`, :prop_sf:`COMPILE_DEFINITIONS` and + :prop_sf:`COMPILE_OPTIONS` of generated C/C++ file. +``DEPENDS`` + Specify additional dependencies to the source file. ``SWIG_MODULE_NAME`` Specify the actual import name of the module in the target language. @@ -50,6 +85,34 @@ of the ``swig_add_library`` macro to specify special behavior of SWIG: set_property(SOURCE mymod.i PROPERTY SWIG_MODULE_NAME mymod_realname) +Target library properties can be set to apply same configuration to all SWIG input files. + +``SWIG_INCLUDE_DIRECTORIES``, ``SWIG_COMPILE_DEFINITIONS`` and ``SWIG_COMPILE_OPTIONS`` + These properties will be applied to all SWIG input files and have same semantic as + target properties :prop_tgt:`INCLUDE_DIRECTORIES`, :prop_tgt:`COMPILE_DEFINITIONS` and + :prop_tgt:`COMPILE_OPTIONS`. + + .. code-block:: cmake + + swig_add_library(mymod LANGUAGE python SOURCES mymod.i) + set_property(TARGET mymod PROPERTY SWIG_COMPILE_DEFINITIONS MY_DEF1 MY_DEF2) + set_property(TARGET mymod PROPERTY SWIG_COMPILE_OPTIONS -bla -blb) + +``SWIG_GENERATED_INCLUDE_DIRECTORIES``, ``SWIG_GENERATED_COMPILE_DEFINITIONS`` and ``SWIG_GENERATED_COMPILE_OPTIONS`` + These properties will populate, respectively, properties :prop_sf:`INCLUDE_DIRECTORIES`, + :prop_sf:`COMPILE_DEFINITIONS` and :prop_sf:`COMPILE_FLAGS` of all generated C/C++ files. + +``SWIG_DEPENDS`` + Add dependencies to all SWIG input files. + +``SWIG_SUPPORT_FILES`` + This output property list of wrapper files generated during SWIG compilation. + + .. code-block:: cmake + + swig_add_library(mymod LANGUAGE python SOURCES mymod.i) + get_property(support_files TARGET mymod PROPERTY SWIG_SUPPORT_FILES) + Some variables can be set to specify special behavior of SWIG: ``CMAKE_SWIG_FLAGS`` @@ -66,34 +129,56 @@ Some variables can be set to specify special behavior of SWIG: Specify extra dependencies for the generated module for ````. #]=======================================================================] + +cmake_policy (VERSION 3.11) + set(SWIG_CXX_EXTENSION "cxx") set(SWIG_EXTRA_LIBRARIES "") set(SWIG_PYTHON_EXTRA_FILE_EXTENSIONS ".py") set(SWIG_JAVA_EXTRA_FILE_EXTENSIONS ".java" "JNI.java") +## +## PRIVATE functions +## +function (__SWIG_COMPUTE_TIMESTAMP name language infile workingdir __timestamp) + get_filename_component(filename "${infile}" NAME_WE) + set(${__timestamp} + "${workingdir}/${filename}${language}.stamp" PARENT_SCOPE) + # get_filename_component(filename "${infile}" ABSOLUTE) + # string(UUID uuid NAMESPACE 9735D882-D2F8-4E1D-88C9-A0A4F1F6ECA4 + # NAME ${name}-${language}-${filename} TYPE SHA1) + # set(${__timestamp} "${workingdir}/${uuid}.stamp" PARENT_SCOPE) +endfunction() + # # For given swig module initialize variables associated with it # macro(SWIG_MODULE_INITIALIZE name language) - string(TOUPPER "${language}" swig_uppercase_language) - string(TOLOWER "${language}" swig_lowercase_language) - set(SWIG_MODULE_${name}_LANGUAGE "${swig_uppercase_language}") - set(SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG "${swig_lowercase_language}") + string(TOUPPER "${language}" SWIG_MODULE_${name}_LANGUAGE) + string(TOLOWER "${language}" SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG) - set(SWIG_MODULE_${name}_REAL_NAME "${name}") - if (";${CMAKE_SWIG_FLAGS};" MATCHES ";-noproxy;") + set(SWIG_MODULE_${name}_NAME "${name}") + set(SWIG_MODULE_${name}_EXTRA_FLAGS) + if (NOT DEFINED SWIG_MODULE_${name}_NOPROXY) + set (SWIG_MODULE_${name}_NOPROXY FALSE) + endif() + if ("-noproxy" IN_LIST CMAKE_SWIG_FLAGS) set (SWIG_MODULE_${name}_NOPROXY TRUE) endif () - if("x${SWIG_MODULE_${name}_LANGUAGE}" STREQUAL "xUNKNOWN") + + if (SWIG_MODULE_${name}_NOPROXY AND NOT "-noproxy" IN_LIST CMAKE_SWIG_FLAGS) + list (APPEND SWIG_MODULE_${name}_EXTRA_FLAGS "-noproxy") + endif() + if(SWIG_MODULE_${name}_LANGUAGE STREQUAL "UNKNOWN") message(FATAL_ERROR "SWIG Error: Language \"${language}\" not found") - elseif("x${SWIG_MODULE_${name}_LANGUAGE}" STREQUAL "xPYTHON" AND NOT SWIG_MODULE_${name}_NOPROXY) + elseif(SWIG_MODULE_${name}_LANGUAGE STREQUAL "PYTHON" AND NOT SWIG_MODULE_${name}_NOPROXY) # swig will produce a module.py containing an 'import _modulename' statement, # which implies having a corresponding _modulename.so (*NIX), _modulename.pyd (Win32), # unless the -noproxy flag is used - set(SWIG_MODULE_${name}_REAL_NAME "_${name}") - elseif("x${SWIG_MODULE_${name}_LANGUAGE}" STREQUAL "xPERL") - set(SWIG_MODULE_${name}_EXTRA_FLAGS "-shadow") + set(SWIG_MODULE_${name}_NAME "_${name}") + elseif(SWIG_MODULE_${name}_LANGUAGE STREQUAL "PERL") + list(APPEND SWIG_MODULE_${name}_EXTRA_FLAGS "-shadow") endif() endmacro() @@ -102,79 +187,108 @@ endmacro() # will be generated. This is internal swig macro. # -macro(SWIG_GET_EXTRA_OUTPUT_FILES language outfiles generatedpath infile) - set(${outfiles} "") - get_source_file_property(SWIG_GET_EXTRA_OUTPUT_FILES_module_basename - ${infile} SWIG_MODULE_NAME) - if(SWIG_GET_EXTRA_OUTPUT_FILES_module_basename STREQUAL "NOTFOUND") +function(SWIG_GET_EXTRA_OUTPUT_FILES language outfiles generatedpath infile) + set(files) + get_source_file_property(module_basename + "${infile}" SWIG_MODULE_NAME) + if(NOT swig_module_basename) # try to get module name from "%module foo" syntax - if ( EXISTS ${infile} ) - file ( STRINGS ${infile} _MODULE_NAME REGEX "[ ]*%module[ ]*[a-zA-Z0-9_]+.*" ) + if ( EXISTS "${infile}" ) + file ( STRINGS "${infile}" module_basename REGEX "[ ]*%module[ ]*[a-zA-Z0-9_]+.*" ) endif () - if ( _MODULE_NAME ) - string ( REGEX REPLACE "[ ]*%module[ ]*([a-zA-Z0-9_]+).*" "\\1" _MODULE_NAME "${_MODULE_NAME}" ) - set(SWIG_GET_EXTRA_OUTPUT_FILES_module_basename "${_MODULE_NAME}") + if ( module_basename ) + string ( REGEX REPLACE "[ ]*%module[ ]*([a-zA-Z0-9_]+).*" "\\1" module_basename "${module_basename}" ) else () # try to get module name from "%module (options=...) foo" syntax - if ( EXISTS ${infile} ) - file ( STRINGS ${infile} _MODULE_NAME REGEX "[ ]*%module[ ]*\\(.*\\)[ ]*[a-zA-Z0-9_]+.*" ) + if ( EXISTS "${infile}" ) + file ( STRINGS "${infile}" module_basename REGEX "[ ]*%module[ ]*\\(.*\\)[ ]*[a-zA-Z0-9_]+.*" ) endif () - if ( _MODULE_NAME ) - string ( REGEX REPLACE "[ ]*%module[ ]*\\(.*\\)[ ]*([a-zA-Z0-9_]+).*" "\\1" _MODULE_NAME "${_MODULE_NAME}" ) - set(SWIG_GET_EXTRA_OUTPUT_FILES_module_basename "${_MODULE_NAME}") + if ( module_basename ) + string ( REGEX REPLACE "[ ]*%module[ ]*\\(.*\\)[ ]*([a-zA-Z0-9_]+).*" "\\1" module_basename "${module_basename}" ) else () # fallback to file basename - get_filename_component(SWIG_GET_EXTRA_OUTPUT_FILES_module_basename ${infile} NAME_WE) + get_filename_component(module_basename "${infile}" NAME_WE) endif () endif () endif() foreach(it ${SWIG_${language}_EXTRA_FILE_EXTENSIONS}) - set(extra_file "${generatedpath}/${SWIG_GET_EXTRA_OUTPUT_FILES_module_basename}${it}") - list(APPEND ${outfiles} ${extra_file}) - # Treat extra outputs as plain files regardless of language. - set_property(SOURCE "${extra_file}" PROPERTY LANGUAGE "") + set(extra_file "${generatedpath}/${module_basename}${it}") + list(APPEND files "${extra_file}") endforeach() -endmacro() + # Treat extra outputs as plain files regardless of language. + set_source_files_properties(${files} PROPERTIES LANGUAGE "") + + set (${outfiles} ${files} PARENT_SCOPE) +endfunction() # # Take swig (*.i) file and add proper custom commands for it # -macro(SWIG_ADD_SOURCE_TO_MODULE name outfiles infile) - set(swig_full_infile ${infile}) +function(SWIG_ADD_SOURCE_TO_MODULE name outfiles infile) get_filename_component(swig_source_file_name_we "${infile}" NAME_WE) - get_source_file_property(swig_source_file_generated ${infile} GENERATED) - get_source_file_property(swig_source_file_cplusplus ${infile} CPLUSPLUS) - get_source_file_property(swig_source_file_flags ${infile} SWIG_FLAGS) - if("${swig_source_file_flags}" STREQUAL "NOTFOUND") - set(swig_source_file_flags "") - endif() - get_filename_component(swig_source_file_fullname "${infile}" ABSOLUTE) + get_source_file_property(swig_source_file_cplusplus "${infile}" CPLUSPLUS) # If CMAKE_SWIG_OUTDIR was specified then pass it to -outdir if(CMAKE_SWIG_OUTDIR) - set(swig_outdir ${CMAKE_SWIG_OUTDIR}) + set(outdir ${CMAKE_SWIG_OUTDIR}) else() - set(swig_outdir ${CMAKE_CURRENT_BINARY_DIR}) + set(outdir ${CMAKE_CURRENT_BINARY_DIR}) endif() if(SWIG_OUTFILE_DIR) - set(swig_outfile_dir ${SWIG_OUTFILE_DIR}) + set(outfiledir ${SWIG_OUTFILE_DIR}) else() - set(swig_outfile_dir ${swig_outdir}) + set(outfiledir ${outdir}) endif() + if(SWIG_WORKING_DIR) + set (workingdir "${SWIG_WORKING_DIR}") + else() + set(workingdir "${outdir}") + endif() + + set (swig_source_file_flags ${CMAKE_SWIG_FLAGS}) + # handle various swig compile flags properties + get_source_file_property (include_directories "${infile}" INCLUDE_DIRECTORIES) + if (include_directories) + list (APPEND swig_source_file_flags "-I$-I>") + endif() + set (property "$") + list (APPEND swig_source_file_flags "$<$:-I$-I>>") + + set (property "$") + list (APPEND swig_source_file_flags "$<$:-D$-D>>") + get_source_file_property (compile_definitions "${infile}" COMPILE_DEFINITIONS) + if (compile_definitions) + list (APPEND swig_source_file_flags "-D$-D>") + endif() + + list (APPEND swig_source_file_flags "$") + get_source_file_property (compile_options "${infile}" COMPILE_OPTIONS) + if (compile_options) + list (APPEND swig_source_file_flags ${compile_options}) + endif() + + # legacy support + get_source_file_property (swig_flags "${infile}" SWIG_FLAGS) + if (swig_flags) + list (APPEND swig_source_file_flags ${swig_flags}) + endif() + + get_filename_component(swig_source_file_fullname "${infile}" ABSOLUTE) + if (NOT SWIG_MODULE_${name}_NOPROXY) SWIG_GET_EXTRA_OUTPUT_FILES(${SWIG_MODULE_${name}_LANGUAGE} swig_extra_generated_files - "${swig_outdir}" + "${outdir}" "${swig_source_file_fullname}") endif() set(swig_generated_file_fullname - "${swig_outfile_dir}/${swig_source_file_name_we}") + "${outfiledir}/${swig_source_file_name_we}") # add the language into the name of the file (i.e. TCL_wrap) # this allows for the same .i file to be wrapped into different languages string(APPEND swig_generated_file_fullname @@ -188,45 +302,47 @@ macro(SWIG_ADD_SOURCE_TO_MODULE name outfiles infile) ".c") endif() - #message("Full path to source file: ${swig_source_file_fullname}") - #message("Full path to the output file: ${swig_generated_file_fullname}") - get_directory_property(cmake_include_directories INCLUDE_DIRECTORIES) - list(REMOVE_DUPLICATES cmake_include_directories) - set(swig_include_dirs) - foreach(it ${cmake_include_directories}) - set(swig_include_dirs ${swig_include_dirs} "-I${it}") - endforeach() + get_directory_property (cmake_include_directories INCLUDE_DIRECTORIES) + list (REMOVE_DUPLICATES cmake_include_directories) + set (swig_include_dirs) + if (cmake_include_directories) + set (swig_include_dirs "-I$-I>") + endif() set(swig_special_flags) # default is c, so add c++ flag if it is c++ if(swig_source_file_cplusplus) - set(swig_special_flags ${swig_special_flags} "-c++") + list (APPEND swig_special_flags "-c++") endif() - if("x${SWIG_MODULE_${name}_LANGUAGE}" STREQUAL "xCSHARP") - if(NOT ";${swig_source_file_flags};${CMAKE_SWIG_FLAGS};" MATCHES ";-dllimport;") + + set (swig_extra_flags) + if(SWIG_MODULE_${name}_LANGUAGE STREQUAL "CSHARP") + if(NOT ("-dllimport" IN_LIST swig_source_file_flags OR "-dllimport" IN_LIST SWIG_MODULE_${name}_EXTRA_FLAGS)) # This makes sure that the name used in the generated DllImport # matches the library name created by CMake - set(SWIG_MODULE_${name}_EXTRA_FLAGS "-dllimport;${name}") + list (APPEND SWIG_MODULE_${name}_EXTRA_FLAGS "-dllimport" "${name}") endif() endif() - set(swig_extra_flags) - if(SWIG_MODULE_${name}_EXTRA_FLAGS) - set(swig_extra_flags ${swig_extra_flags} ${SWIG_MODULE_${name}_EXTRA_FLAGS}) + list (APPEND swig_extra_flags ${SWIG_MODULE_${name}_EXTRA_FLAGS}) + + # dependencies + set (swig_dependencies ${SWIG_MODULE_${name}_EXTRA_DEPS} $) + get_source_file_property(file_depends "${infile}" DEPENDS) + if (file_depends) + list (APPEND swig_dependencies ${file_depends}) endif() + # IMPLICIT_DEPENDS below can not handle situations where a dependent file is # removed. We need an extra step with timestamp and custom target, see #16830 # As this is needed only for Makefile generator do it conditionally if(CMAKE_GENERATOR MATCHES "Make") - get_filename_component(swig_generated_timestamp - "${swig_generated_file_fullname}" NAME_WE) - set(swig_gen_target gen_${name}_${swig_generated_timestamp}) - set(swig_generated_timestamp - "${swig_outdir}/${swig_generated_timestamp}.stamp") - set(swig_custom_output ${swig_generated_timestamp}) + __swig_compute_timestamp(${name} ${SWIG_MODULE_${name}_LANGUAGE} + "${infile}" "${workingdir}" swig_generated_timestamp) + set(swig_custom_output "${swig_generated_timestamp}") set(swig_custom_products BYPRODUCTS "${swig_generated_file_fullname}" ${swig_extra_generated_files}) set(swig_timestamp_command - COMMAND ${CMAKE_COMMAND} -E touch ${swig_generated_timestamp}) + COMMAND ${CMAKE_COMMAND} -E touch "${swig_generated_timestamp}") else() set(swig_custom_output "${swig_generated_file_fullname}" ${swig_extra_generated_files}) @@ -236,34 +352,41 @@ macro(SWIG_ADD_SOURCE_TO_MODULE name outfiles infile) add_custom_command( OUTPUT ${swig_custom_output} ${swig_custom_products} - # Let's create the ${swig_outdir} at execution time, in case dir contains $(OutDir) - COMMAND ${CMAKE_COMMAND} -E make_directory ${swig_outdir} + # Let's create the ${outdir} at execution time, in case dir contains $(OutDir) + COMMAND "${CMAKE_COMMAND}" -E make_directory ${outdir} ${outfiledir} ${swig_timestamp_command} COMMAND "${SWIG_EXECUTABLE}" - ARGS "-${SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG}" - ${swig_source_file_flags} - ${CMAKE_SWIG_FLAGS} - -outdir ${swig_outdir} + "-${SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG}" + "${swig_source_file_flags}" + -outdir "${outdir}" ${swig_special_flags} ${swig_extra_flags} - ${swig_include_dirs} + "${swig_include_dirs}" -o "${swig_generated_file_fullname}" "${swig_source_file_fullname}" MAIN_DEPENDENCY "${swig_source_file_fullname}" - DEPENDS ${SWIG_MODULE_${name}_EXTRA_DEPS} + DEPENDS ${swig_dependencies} IMPLICIT_DEPENDS CXX "${swig_source_file_fullname}" - COMMENT "Swig source") - if(CMAKE_GENERATOR MATCHES "Make") - add_custom_target(${swig_gen_target} DEPENDS ${swig_generated_timestamp}) - endif() - unset(swig_generated_timestamp) - unset(swig_custom_output) - unset(swig_custom_products) - unset(swig_timestamp_command) + COMMENT "Swig source" + COMMAND_EXPAND_LISTS) set_source_files_properties("${swig_generated_file_fullname}" ${swig_extra_generated_files} PROPERTIES GENERATED 1) - set(${outfiles} "${swig_generated_file_fullname}" ${swig_extra_generated_files}) -endmacro() + + ## add all properties for generated file to various properties + get_property (include_directories SOURCE "${infile}" PROPERTY GENERATED_INCLUDE_DIRECTORIES) + set_property (SOURCE "${swig_generated_file_fullname}" PROPERTY INCLUDE_DIRECTORIES ${include_directories} $) + + get_property (compile_definitions SOURCE "${infile}" PROPERTY GENERATED_COMPILE_DEFINITIONS) + set_property (SOURCE "${swig_generated_file_fullname}" PROPERTY COMPILE_DEFINITIONS $ ${compile_definitions}) + + get_property (compile_options SOURCE "${infile}" PROPERTY GENERATED_COMPILE_OPTIONS) + set_property (SOURCE "${swig_generated_file_fullname}" PROPERTY COMPILE_OPTIONS $ ${compile_options}) + + set(${outfiles} "${swig_generated_file_fullname}" ${swig_extra_generated_files} PARENT_SCOPE) + + # legacy support + set (swig_generated_file_fullname "${swig_generated_file_fullname}" PARENT_SCOPE) +endfunction() # # Create Swig module @@ -277,13 +400,26 @@ macro(SWIG_ADD_MODULE name language) endmacro() -macro(SWIG_ADD_LIBRARY name) - set(options "") +function(SWIG_ADD_LIBRARY name) + set(options NO_PROXY) set(oneValueArgs LANGUAGE - TYPE) + TYPE + OUTPUT_DIR + OUTFILE_DIR) set(multiValueArgs SOURCES) cmake_parse_arguments(_SAM "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + if (TARGET ${name}) + # a target with same name is already defined. + # call NOW add_library command to raise the most useful error message + add_library(${name}) + return() + endif() + + if (_SAM_UNPARSED_ARGUMENTS) + message(FATAL_ERROR "SWIG_ADD_LIBRARY: ${_SAM_UNPARSED_ARGUMENTS}: unexpected arguments") + endif() + if(NOT DEFINED _SAM_LANGUAGE) message(FATAL_ERROR "SWIG_ADD_LIBRARY: Missing LANGUAGE argument") endif() @@ -294,50 +430,83 @@ macro(SWIG_ADD_LIBRARY name) if(NOT DEFINED _SAM_TYPE) set(_SAM_TYPE MODULE) - elseif("${_SAM_TYPE}" STREQUAL "USE_BUILD_SHARED_LIBS") + elseif(_SAM_TYPE STREQUAL "USE_BUILD_SHARED_LIBS") unset(_SAM_TYPE) endif() - swig_module_initialize(${name} ${_SAM_LANGUAGE}) + set (workingdir "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${name}.dir") + # set special variable to pass extra information to command SWIG_ADD_SOURCE_TO_MODULE + # which cannot be changed due to legacy compatibility + set (SWIG_WORKING_DIR "${workingdir}") - set(swig_dot_i_sources) - set(swig_other_sources) - foreach(it ${_SAM_SOURCES}) - if(${it} MATCHES "\\.i$") - set(swig_dot_i_sources ${swig_dot_i_sources} "${it}") + set (outputdir "${_SAM_OUTPUT_DIR}") + if (NOT _SAM_OUTPUT_DIR) + if (CMAKE_SWIG_OUTDIR) + set (outputdir "${CMAKE_SWIG_OUTDIR}") else() - set(swig_other_sources ${swig_other_sources} "${it}") + set (outputdir "${CMAKE_CURRENT_BINARY_DIR}") endif() - endforeach() + endif() + + set (outfiledir "${_SAM_OUTFILE_DIR}") + if(NOT _SAM_OUTFILE_DIR) + if (SWIG_OUTFILE_DIR) + set (outfiledir "${SWIG_OUTFILE_DIR}") + else() + if (_SAM_OUTPUT_DIR OR CMAKE_SWIG_OUTDIR) + set (outfiledir "${outputdir}") + else() + set (outfiledir "${workingdir}") + endif() + endif() + endif() + # set again, locally, predefined variables to ensure compatibility + # with command SWIG_ADD_SOURCE_TO_MODULE + set(CMAKE_SWIG_OUTDIR "${outputdir}") + set(SWIG_OUTFILE_DIR "${outfiledir}") + + set (SWIG_MODULE_${name}_NOPROXY ${_SAM_NO_PROXY}) + swig_module_initialize(${name} ${_SAM_LANGUAGE}) + + set(swig_dot_i_sources ${_SAM_SOURCES}) + list(FILTER swig_dot_i_sources INCLUDE REGEX "\\.i$") + set(swig_other_sources ${_SAM_SOURCES}) + list(REMOVE_ITEM swig_other_sources ${swig_dot_i_sources}) set(swig_generated_sources) - set(swig_generated_targets) - foreach(it ${swig_dot_i_sources}) - SWIG_ADD_SOURCE_TO_MODULE(${name} swig_generated_source ${it}) - set(swig_generated_sources ${swig_generated_sources} "${swig_generated_source}") - list(APPEND swig_generated_targets "${swig_gen_target}") + set(swig_generated_timestamps) + foreach(swig_it IN LISTS swig_dot_i_sources) + SWIG_ADD_SOURCE_TO_MODULE(${name} swig_generated_source "${swig_it}") + list (APPEND swig_generated_sources "${swig_generated_source}") + if(CMAKE_GENERATOR MATCHES "Make") + __swig_compute_timestamp(${name} ${SWIG_MODULE_${name}_LANGUAGE} "${swig_it}" + "${workingdir}" swig_timestamp) + list (APPEND swig_generated_timestamps "${swig_timestamp}") + endif() endforeach() - get_directory_property(swig_extra_clean_files ADDITIONAL_MAKE_CLEAN_FILES) - set_directory_properties(PROPERTIES - ADDITIONAL_MAKE_CLEAN_FILES "${swig_extra_clean_files};${swig_generated_sources}") - add_library(${SWIG_MODULE_${name}_REAL_NAME} + set_property (DIRECTORY APPEND PROPERTY + ADDITIONAL_MAKE_CLEAN_FILES ${swig_generated_sources} ${swig_generated_timestamps}) + + add_library(${name} ${_SAM_TYPE} ${swig_generated_sources} ${swig_other_sources}) + set_target_properties(${name} PROPERTIES OUTPUT_NAME "${SWIG_MODULE_${name}_NAME}") if(CMAKE_GENERATOR MATCHES "Make") # see IMPLICIT_DEPENDS above - add_dependencies(${SWIG_MODULE_${name}_REAL_NAME} ${swig_generated_targets}) + add_custom_target(${name}_swig_compilation DEPENDS ${swig_generated_timestamps}) + add_dependencies(${name} ${name}_swig_compilation) endif() - if("${_SAM_TYPE}" STREQUAL "MODULE") - set_target_properties(${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES NO_SONAME ON) + if(_SAM_TYPE STREQUAL "MODULE") + set_target_properties(${name} PROPERTIES NO_SONAME ON) endif() string(TOLOWER "${_SAM_LANGUAGE}" swig_lowercase_language) - if ("${swig_lowercase_language}" STREQUAL "octave") - set_target_properties(${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES PREFIX "") - set_target_properties(${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES SUFFIX ".oct") - elseif ("${swig_lowercase_language}" STREQUAL "go") - set_target_properties(${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES PREFIX "") - elseif ("${swig_lowercase_language}" STREQUAL "java") + if (swig_lowercase_language STREQUAL "octave") + set_target_properties(${name} PROPERTIES PREFIX "") + set_target_properties(${name} PROPERTIES SUFFIX ".oct") + elseif (swig_lowercase_language STREQUAL "go") + set_target_properties(${name} PROPERTIES PREFIX "") + elseif (swig_lowercase_language STREQUAL "java") if (APPLE) # In java you want: # System.loadLibrary("LIBRARY"); @@ -345,15 +514,15 @@ macro(SWIG_ADD_LIBRARY name) # MacOS : libLIBRARY.jnilib # Windows: LIBRARY.dll # Linux : libLIBRARY.so - set_target_properties (${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES SUFFIX ".jnilib") + set_target_properties (${name} PROPERTIES SUFFIX ".jnilib") endif () - elseif ("${swig_lowercase_language}" STREQUAL "lua") - if("${_SAM_TYPE}" STREQUAL "MODULE") - set_target_properties(${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES PREFIX "") + elseif (swig_lowercase_language STREQUAL "lua") + if(_SAM_TYPE STREQUAL "MODULE") + set_target_properties(${name} PROPERTIES PREFIX "") endif() - elseif ("${swig_lowercase_language}" STREQUAL "python") + elseif (swig_lowercase_language STREQUAL "python") # this is only needed for the python case where a _modulename.so is generated - set_target_properties(${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES PREFIX "") + set_target_properties(${name} PROPERTIES PREFIX "") # Python extension modules on Windows must have the extension ".pyd" # instead of ".dll" as of Python 2.5. Older python versions do support # this suffix. @@ -363,40 +532,60 @@ macro(SWIG_ADD_LIBRARY name) # .pyd is now the only filename extension that will be searched for. # if(WIN32 AND NOT CYGWIN) - set_target_properties(${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES SUFFIX ".pyd") + set_target_properties(${name} PROPERTIES SUFFIX ".pyd") endif() - elseif ("${swig_lowercase_language}" STREQUAL "r") - set_target_properties(${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES PREFIX "") - elseif ("${swig_lowercase_language}" STREQUAL "ruby") + elseif (swig_lowercase_language STREQUAL "r") + set_target_properties(${name} PROPERTIES PREFIX "") + elseif (swig_lowercase_language STREQUAL "ruby") # In ruby you want: # require 'LIBRARY' # then ruby will look for a library whose name is platform dependent, namely # MacOS : LIBRARY.bundle # Windows: LIBRARY.dll # Linux : LIBRARY.so - set_target_properties (${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES PREFIX "") + set_target_properties (${name} PROPERTIES PREFIX "") if (APPLE) - set_target_properties (${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES SUFFIX ".bundle") + set_target_properties (${name} PROPERTIES SUFFIX ".bundle") endif () - elseif ("${swig_lowercase_language}" STREQUAL "perl") + elseif (swig_lowercase_language STREQUAL "perl") # assume empty prefix because we expect the module to be dynamically loaded - set_target_properties (${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES PREFIX "") + set_target_properties (${name} PROPERTIES PREFIX "") if (APPLE) - set_target_properties (${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES SUFFIX ".dylib") + set_target_properties (${name} PROPERTIES SUFFIX ".dylib") endif () else() # assume empty prefix because we expect the module to be dynamically loaded - set_target_properties (${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES PREFIX "") + set_target_properties (${name} PROPERTIES PREFIX "") endif () -endmacro() + # target property SWIG_SUPPORT_FILES lists proxy support files + if (NOT SWIG_MODULE_${name}_NOPROXY) + string(TOUPPER "${_SAM_LANGUAGE}" swig_uppercase_language) + foreach (swig_it IN LISTS SWIG_${swig_uppercase_language}_EXTRA_FILE_EXTENSIONS) + set (swig_support_files ${swig_generated_sources}) + list (FILTER swig_support_files INCLUDE REGEX ".*${swig_it}$") + set_property (TARGET ${name} APPEND PROPERTY SWIG_SUPPORT_FILES ${swig_support_files}) + endforeach() + endif() + + # to ensure legacy behavior, export some variables + set (SWIG_MODULE_${name}_LANGUAGE "${SWIG_MODULE_${name}_LANGUAGE}" PARENT_SCOPE) + set (SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG "${SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG}" PARENT_SCOPE) + set (SWIG_MODULE_${name}_REAL_NAME "${name}" PARENT_SCOPE) + set (SWIG_MODULE_${name}_NOPROXY "${SWIG_MODULE_${name}_NOPROXY}" PARENT_SCOPE) + set (SWIG_MODULE_${name}_EXTRA_FLAGS "${SWIG_MODULE_${name}_EXTRA_FLAGS}" PARENT_SCOPE) + # the last one is a bit crazy but it is documented, so... + # NOTA: works as expected if only ONE input file is specified + set (swig_generated_file_fullname "${swig_generated_file_fullname}" PARENT_SCOPE) +endfunction() # # Like TARGET_LINK_LIBRARIES but for swig modules # -macro(SWIG_LINK_LIBRARIES name) +function(SWIG_LINK_LIBRARIES name) + message(DEPRECATION "SWIG_LINK_LIBRARIES is deprecated. Use TARGET_LINK_LIBRARIES instead.") if(SWIG_MODULE_${name}_REAL_NAME) - target_link_libraries(${SWIG_MODULE_${name}_REAL_NAME} ${ARGN}) + target_link_libraries(${name} ${ARGN}) else() message(SEND_ERROR "Cannot find Swig library \"${name}\".") endif() -endmacro() +endfunction() diff --git a/Tests/RunCMake/UseSWIG/LegacyConfiguration.cmake b/Tests/RunCMake/UseSWIG/BasicConfiguration.cmake similarity index 53% copy from Tests/RunCMake/UseSWIG/LegacyConfiguration.cmake copy to Tests/RunCMake/UseSWIG/BasicConfiguration.cmake index 3f400bf..94d8dd3 100644 --- a/Tests/RunCMake/UseSWIG/LegacyConfiguration.cmake +++ b/Tests/RunCMake/UseSWIG/BasicConfiguration.cmake @@ -3,55 +3,66 @@ find_package(SWIG REQUIRED) include(${SWIG_USE_FILE}) unset(SWIG_LANG_TYPE) +unset(SWIG_LANG_INCLUDE_DIRECTORIES) +unset(SWIG_LANG_DEFINITIONS) +unset(SWIG_LANG_OPTIONS) +unset(SWIG_LANG_LIBRARIES) + if(${language} MATCHES python) find_package(PythonInterp REQUIRED) find_package(PythonLibs REQUIRED) - include_directories(${PYTHON_INCLUDE_PATH}) + set(SWIG_LANG_INCLUDE_DIRECTORIES ${PYTHON_INCLUDE_PATH}) set(SWIG_LANG_LIBRARIES ${PYTHON_LIBRARIES}) endif() if(${language} MATCHES perl) find_package(Perl REQUIRED) find_package(PerlLibs REQUIRED) - include_directories(${PERL_INCLUDE_PATH}) + set(SWIG_LANG_INCLUDE_DIRECTORIES ${PERL_INCLUDE_PATH}) separate_arguments(c_flags UNIX_COMMAND "${PERL_EXTRA_C_FLAGS}") - add_compile_options(${c_flags}) + set(SWIG_LANG_OPTIONS ${c_flags}) set(SWIG_LANG_LIBRARIES ${PERL_LIBRARY}) endif() if(${language} MATCHES tcl) find_package(TCL REQUIRED) - include_directories(${TCL_INCLUDE_PATH}) + set(SWIG_LANG_INCLUDE_DIRECTORIES ${TCL_INCLUDE_PATH}) set(SWIG_LANG_LIBRARIES ${TCL_LIBRARY}) endif() if(${language} MATCHES ruby) find_package(Ruby REQUIRED) - include_directories(${RUBY_INCLUDE_PATH}) + set(SWIG_LANG_INCLUDE_DIRECTORIES ${RUBY_INCLUDE_PATH}) set(SWIG_LANG_LIBRARIES ${RUBY_LIBRARY}) endif() if(${language} MATCHES php4) find_package(PHP4 REQUIRED) - include_directories(${PHP4_INCLUDE_PATH}) + set(SWIG_LANG_INCLUDE_DIRECTORIES ${PHP4_INCLUDE_PATH}) set(SWIG_LANG_LIBRARIES ${PHP4_LIBRARY}) endif() if(${language} MATCHES pike) find_package(Pike REQUIRED) - include_directories(${PIKE_INCLUDE_PATH}) + set(SWIG_LANG_INCLUDE_DIRECTORIES ${PIKE_INCLUDE_PATH}) set(SWIG_LANG_LIBRARIES ${PIKE_LIBRARY}) endif() if(${language} MATCHES lua) find_package(Lua REQUIRED) - include_directories(${LUA_INCLUDE_DIR}) + set(SWIG_LANG_INCLUDE_DIRECTORIES ${LUA_INCLUDE_DIR}) set(SWIG_LANG_TYPE TYPE SHARED) set(SWIG_LANG_LIBRARIES ${LUA_LIBRARIES}) endif() unset(CMAKE_SWIG_FLAGS) -include_directories(${CMAKE_CURRENT_LIST_DIR}) +set (CMAKE_INCLUDE_CURRENT_DIR ON) + +set_property(SOURCE example.i PROPERTY CPLUSPLUS ON) +set_property(SOURCE example.i PROPERTY COMPILE_OPTIONS -includeall) + +set_property(SOURCE example.i PROPERTY GENERATED_INCLUDE_DIRECTORIES ${SWIG_LANG_INCLUDE_DIRECTORIES}) +set_property(SOURCE example.i PROPERTY GENERATED_COMPILE_DEFINITIONS ${SWIG_LANG_DEFINITIONS}) +set_property(SOURCE example.i PROPERTY GENERATED_COMPILE_OPTIONS ${SWIG_LANG_OPTIONS}) + -set_source_files_properties(example.i PROPERTIES CPLUSPLUS ON) -set_source_files_properties(example.i PROPERTIES SWIG_FLAGS "-includeall") SWIG_ADD_LIBRARY(example LANGUAGE "${language}" ${SWIG_LANG_TYPE} SOURCES example.i example.cxx) -SWIG_LINK_LIBRARIES(example ${SWIG_LANG_LIBRARIES}) +TARGET_LINK_LIBRARIES(example PRIVATE ${SWIG_LANG_LIBRARIES}) diff --git a/Tests/RunCMake/UseSWIG/BasicPerl.cmake b/Tests/RunCMake/UseSWIG/BasicPerl.cmake new file mode 100644 index 0000000..67ad6bc --- /dev/null +++ b/Tests/RunCMake/UseSWIG/BasicPerl.cmake @@ -0,0 +1,18 @@ + +set(language "perl") + +include (BasicConfiguration.cmake) + +if (WIN32) + file (TO_CMAKE_PATH "$ENV{PATH}" perl_path) + string (REPLACE ";" "$" perl_path "${perl_path}") + set (perl_env "PATH=$$${perl_path}") +else() + set (perl_env "LD_LIBRARY_PATH=$") +endif() + +add_custom_target (RunTest + COMMAND "${CMAKE_COMMAND}" -E env "${perl_env}" + "${PERL_EXECUTABLE}" "-I$" + "${CMAKE_CURRENT_SOURCE_DIR}/runme.pl" + DEPENDS example) diff --git a/Tests/RunCMake/UseSWIG/LegacyPython.cmake b/Tests/RunCMake/UseSWIG/BasicPython.cmake similarity index 51% copy from Tests/RunCMake/UseSWIG/LegacyPython.cmake copy to Tests/RunCMake/UseSWIG/BasicPython.cmake index f3d9e2b..0d8c824 100644 --- a/Tests/RunCMake/UseSWIG/LegacyPython.cmake +++ b/Tests/RunCMake/UseSWIG/BasicPython.cmake @@ -1,9 +1,9 @@ set(language "python") -include (LegacyConfiguration.cmake) +include (BasicConfiguration.cmake) -add_custom_target (RunPython - COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$" +add_custom_target (RunTest + COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$" "${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/runme.py" - DEPENDS ${SWIG_MODULE_example_REAL_NAME}) + DEPENDS example) diff --git a/Tests/RunCMake/UseSWIG/LegacyConfiguration.cmake b/Tests/RunCMake/UseSWIG/LegacyConfiguration.cmake index 3f400bf..3ce0790 100644 --- a/Tests/RunCMake/UseSWIG/LegacyConfiguration.cmake +++ b/Tests/RunCMake/UseSWIG/LegacyConfiguration.cmake @@ -1,4 +1,7 @@ +# Prevent deprecated warnings from new UseSWIG module +set (CMAKE_WARN_DEPRECATED FALSE) + find_package(SWIG REQUIRED) include(${SWIG_USE_FILE}) diff --git a/Tests/RunCMake/UseSWIG/LegacyPerl.cmake b/Tests/RunCMake/UseSWIG/LegacyPerl.cmake index cfa8c53..3428c46 100644 --- a/Tests/RunCMake/UseSWIG/LegacyPerl.cmake +++ b/Tests/RunCMake/UseSWIG/LegacyPerl.cmake @@ -11,7 +11,7 @@ else() set (perl_env "LD_LIBRARY_PATH=$") endif() -add_custom_target (RunPerl +add_custom_target (RunTest COMMAND "${CMAKE_COMMAND}" -E env "${perl_env}" "${PERL_EXECUTABLE}" "-I$" "${CMAKE_CURRENT_SOURCE_DIR}/runme.pl" diff --git a/Tests/RunCMake/UseSWIG/LegacyPython.cmake b/Tests/RunCMake/UseSWIG/LegacyPython.cmake index f3d9e2b..8b47aa2 100644 --- a/Tests/RunCMake/UseSWIG/LegacyPython.cmake +++ b/Tests/RunCMake/UseSWIG/LegacyPython.cmake @@ -3,7 +3,7 @@ set(language "python") include (LegacyConfiguration.cmake) -add_custom_target (RunPython +add_custom_target (RunTest COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$" "${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/runme.py" DEPENDS ${SWIG_MODULE_example_REAL_NAME}) diff --git a/Tests/RunCMake/UseSWIG/MultipleModules.cmake b/Tests/RunCMake/UseSWIG/MultipleModules.cmake new file mode 100644 index 0000000..e3d579f --- /dev/null +++ b/Tests/RunCMake/UseSWIG/MultipleModules.cmake @@ -0,0 +1,30 @@ + +find_package(SWIG REQUIRED) +include(${SWIG_USE_FILE}) + +find_package(PythonLibs REQUIRED) +find_package(PerlLibs REQUIRED) + +unset(CMAKE_SWIG_FLAGS) + +set (CMAKE_INCLUDE_CURRENT_DIR ON) + +set_property(SOURCE example.i PROPERTY CPLUSPLUS ON) +set_property(SOURCE example.i PROPERTY COMPILE_OPTIONS -includeall) + +set_property(SOURCE example.i PROPERTY GENERATED_INCLUDE_DIRECTORIES ${PYTHON_INCLUDE_PATH}) + +swig_add_library(example1 + LANGUAGE python + SOURCES example.i example.cxx) +target_link_libraries(example1 PRIVATE ${PYTHON_LIBRARIES}) + +# re-use sample interface file for another plugin +set_property(SOURCE example.i PROPERTY GENERATED_INCLUDE_DIRECTORIES ${PERL_INCLUDE_PATH}) +separate_arguments(c_flags UNIX_COMMAND "${PERL_EXTRA_C_FLAGS}") +set_property(SOURCE example.i PROPERTY GENERATED_COMPILE_OPTIONS ${c_flags}) + +swig_add_library(example2 + LANGUAGE perl + SOURCES example.i example.cxx) +target_link_libraries(example2 PRIVATE ${PERL_LIBRARY}) diff --git a/Tests/RunCMake/UseSWIG/RunCMakeTest.cmake b/Tests/RunCMake/UseSWIG/RunCMakeTest.cmake index cbeba66..c63ff2e 100644 --- a/Tests/RunCMake/UseSWIG/RunCMakeTest.cmake +++ b/Tests/RunCMake/UseSWIG/RunCMakeTest.cmake @@ -1,13 +1,23 @@ include(RunCMake) -function(run_SWIG group language) - set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${group}${language}-build) +function(run_SWIG test) + cmake_parse_arguments(_SWIG_TEST "" "TARGET" "" ${ARGN}) + if (_SWIG_TEST_TARGET) + list (INSERT _SWIG_TEST_TARGET 0 --target) + endif() + + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${test}-build) set(RunCMake_TEST_NO_CLEAN 1) file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") - run_cmake(${group}${language}) - run_cmake_command(${group}${language}-test ${CMAKE_COMMAND} --build ${RunCMake_TEST_BINARY_DIR} --target Run${language}) + run_cmake(${test}) + run_cmake_command(${test}-test ${CMAKE_COMMAND} --build ${RunCMake_TEST_BINARY_DIR} ${_SWIG_TEST_TARGET}) endfunction() -run_SWIG(Legacy Python) -run_SWIG(Legacy Perl) +run_SWIG(LegacyPython TARGET RunTest) +run_SWIG(LegacyPerl TARGET RunTest) + +run_SWIG(BasicPython TARGET RunTest) +run_SWIG(BasicPerl TARGET RunTest) + +run_SWIG(MultipleModules) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d6048bd153979c268a2943b26fd71be7c5f11251 commit d6048bd153979c268a2943b26fd71be7c5f11251 Author: Marc Chevrier AuthorDate: Mon Jan 29 09:46:51 2018 +0100 Commit: Marc Chevrier CommitDate: Wed Feb 14 08:35:04 2018 +0100 UseSWIG: Re-work test framework diff --git a/Modules/UseSWIG.cmake b/Modules/UseSWIG.cmake index 959893f..cc30669 100644 --- a/Modules/UseSWIG.cmake +++ b/Modules/UseSWIG.cmake @@ -378,6 +378,12 @@ macro(SWIG_ADD_LIBRARY name) if (APPLE) set_target_properties (${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES SUFFIX ".bundle") endif () + elseif ("${swig_lowercase_language}" STREQUAL "perl") + # assume empty prefix because we expect the module to be dynamically loaded + set_target_properties (${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES PREFIX "") + if (APPLE) + set_target_properties (${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES SUFFIX ".dylib") + endif () else() # assume empty prefix because we expect the module to be dynamically loaded set_target_properties (${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES PREFIX "") diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index d5bd297..31069fa 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -358,6 +358,11 @@ if(CMake_TEST_FindMatlab) add_RunCMake_test(FindMatlab) endif() +# UseSWIG related tests +if(CMake_TEST_UseSWIG) + add_RunCMake_test(UseSWIG) +endif() + add_executable(pseudo_emulator pseudo_emulator.c) add_executable(pseudo_emulator_custom_command pseudo_emulator_custom_command.c) add_RunCMake_test(CrosscompilingEmulator diff --git a/Tests/RunCMake/UseSWIG/CMakeLists.txt b/Tests/RunCMake/UseSWIG/CMakeLists.txt new file mode 100644 index 0000000..f452db1 --- /dev/null +++ b/Tests/RunCMake/UseSWIG/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 2.8.4) +project(${RunCMake_TEST} CXX) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/SwigTest/CMakeLists.txt b/Tests/RunCMake/UseSWIG/LegacyConfiguration.cmake similarity index 74% rename from Tests/SwigTest/CMakeLists.txt rename to Tests/RunCMake/UseSWIG/LegacyConfiguration.cmake index 65f5c93..3f400bf 100644 --- a/Tests/SwigTest/CMakeLists.txt +++ b/Tests/RunCMake/UseSWIG/LegacyConfiguration.cmake @@ -1,54 +1,52 @@ -set(language "python") - -cmake_minimum_required (VERSION 2.6) - -project(example_${language}_class) find_package(SWIG REQUIRED) include(${SWIG_USE_FILE}) unset(SWIG_LANG_TYPE) if(${language} MATCHES python) - find_package(PythonLibs) + find_package(PythonInterp REQUIRED) + find_package(PythonLibs REQUIRED) include_directories(${PYTHON_INCLUDE_PATH}) set(SWIG_LANG_LIBRARIES ${PYTHON_LIBRARIES}) endif() if(${language} MATCHES perl) - find_package(PerlLibs) + find_package(Perl REQUIRED) + find_package(PerlLibs REQUIRED) include_directories(${PERL_INCLUDE_PATH}) - add_definitions(${PERL_EXTRA_C_FLAGS}) + separate_arguments(c_flags UNIX_COMMAND "${PERL_EXTRA_C_FLAGS}") + add_compile_options(${c_flags}) set(SWIG_LANG_LIBRARIES ${PERL_LIBRARY}) endif() if(${language} MATCHES tcl) - find_package(TCL) + find_package(TCL REQUIRED) include_directories(${TCL_INCLUDE_PATH}) set(SWIG_LANG_LIBRARIES ${TCL_LIBRARY}) endif() if(${language} MATCHES ruby) - find_package(Ruby) + find_package(Ruby REQUIRED) include_directories(${RUBY_INCLUDE_PATH}) set(SWIG_LANG_LIBRARIES ${RUBY_LIBRARY}) endif() if(${language} MATCHES php4) - find_package(PHP4) + find_package(PHP4 REQUIRED) include_directories(${PHP4_INCLUDE_PATH}) set(SWIG_LANG_LIBRARIES ${PHP4_LIBRARY}) endif() if(${language} MATCHES pike) - find_package(Pike) + find_package(Pike REQUIRED) include_directories(${PIKE_INCLUDE_PATH}) set(SWIG_LANG_LIBRARIES ${PIKE_LIBRARY}) endif() if(${language} MATCHES lua) - find_package(Lua) + find_package(Lua REQUIRED) include_directories(${LUA_INCLUDE_DIR}) set(SWIG_LANG_TYPE TYPE SHARED) set(SWIG_LANG_LIBRARIES ${LUA_LIBRARIES}) endif() -include_directories(${CMAKE_CURRENT_SOURCE_DIR}) +unset(CMAKE_SWIG_FLAGS) -set(CMAKE_SWIG_FLAGS "") +include_directories(${CMAKE_CURRENT_LIST_DIR}) set_source_files_properties(example.i PROPERTIES CPLUSPLUS ON) set_source_files_properties(example.i PROPERTIES SWIG_FLAGS "-includeall") diff --git a/Tests/RunCMake/UseSWIG/LegacyPerl.cmake b/Tests/RunCMake/UseSWIG/LegacyPerl.cmake new file mode 100644 index 0000000..cfa8c53 --- /dev/null +++ b/Tests/RunCMake/UseSWIG/LegacyPerl.cmake @@ -0,0 +1,18 @@ + +set(language "perl") + +include (LegacyConfiguration.cmake) + +if (WIN32) + file (TO_CMAKE_PATH "$ENV{PATH}" perl_path) + string (REPLACE ";" "$" perl_path "${perl_path}") + set (perl_env "PATH=$$${perl_path}") +else() + set (perl_env "LD_LIBRARY_PATH=$") +endif() + +add_custom_target (RunPerl + COMMAND "${CMAKE_COMMAND}" -E env "${perl_env}" + "${PERL_EXECUTABLE}" "-I$" + "${CMAKE_CURRENT_SOURCE_DIR}/runme.pl" + DEPENDS ${SWIG_MODULE_example_REAL_NAME}) diff --git a/Tests/RunCMake/UseSWIG/LegacyPython.cmake b/Tests/RunCMake/UseSWIG/LegacyPython.cmake new file mode 100644 index 0000000..f3d9e2b --- /dev/null +++ b/Tests/RunCMake/UseSWIG/LegacyPython.cmake @@ -0,0 +1,9 @@ + +set(language "python") + +include (LegacyConfiguration.cmake) + +add_custom_target (RunPython + COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$" + "${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/runme.py" + DEPENDS ${SWIG_MODULE_example_REAL_NAME}) diff --git a/Tests/RunCMake/UseSWIG/RunCMakeTest.cmake b/Tests/RunCMake/UseSWIG/RunCMakeTest.cmake new file mode 100644 index 0000000..cbeba66 --- /dev/null +++ b/Tests/RunCMake/UseSWIG/RunCMakeTest.cmake @@ -0,0 +1,13 @@ +include(RunCMake) + +function(run_SWIG group language) + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${group}${language}-build) + set(RunCMake_TEST_NO_CLEAN 1) + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + run_cmake(${group}${language}) + run_cmake_command(${group}${language}-test ${CMAKE_COMMAND} --build ${RunCMake_TEST_BINARY_DIR} --target Run${language}) +endfunction() + +run_SWIG(Legacy Python) +run_SWIG(Legacy Perl) diff --git a/Tests/SwigTest/example.cxx b/Tests/RunCMake/UseSWIG/example.cxx similarity index 100% rename from Tests/SwigTest/example.cxx rename to Tests/RunCMake/UseSWIG/example.cxx diff --git a/Tests/SwigTest/example.h b/Tests/RunCMake/UseSWIG/example.h similarity index 100% rename from Tests/SwigTest/example.h rename to Tests/RunCMake/UseSWIG/example.h diff --git a/Tests/SwigTest/example.i b/Tests/RunCMake/UseSWIG/example.i similarity index 99% rename from Tests/SwigTest/example.i rename to Tests/RunCMake/UseSWIG/example.i index 75700b3..fbdf724 100644 --- a/Tests/SwigTest/example.i +++ b/Tests/RunCMake/UseSWIG/example.i @@ -7,4 +7,3 @@ /* Let's just grab the original header file here */ %include "example.h" - diff --git a/Tests/SwigTest/runme.php4 b/Tests/RunCMake/UseSWIG/runme.php4 similarity index 100% rename from Tests/SwigTest/runme.php4 rename to Tests/RunCMake/UseSWIG/runme.php4 diff --git a/Tests/SwigTest/runme.pike b/Tests/RunCMake/UseSWIG/runme.pike old mode 100755 new mode 100644 similarity index 100% rename from Tests/SwigTest/runme.pike rename to Tests/RunCMake/UseSWIG/runme.pike diff --git a/Tests/SwigTest/runme.pl b/Tests/RunCMake/UseSWIG/runme.pl similarity index 99% rename from Tests/SwigTest/runme.pl rename to Tests/RunCMake/UseSWIG/runme.pl index 5bfb3d8..965e063 100644 --- a/Tests/SwigTest/runme.pl +++ b/Tests/RunCMake/UseSWIG/runme.pl @@ -54,4 +54,3 @@ examplec::delete_Shape($s); print $examplec::Shape_nshapes," shapes remain\n"; print "Goodbye\n"; - diff --git a/Tests/RunCMake/UseSWIG/runme.py b/Tests/RunCMake/UseSWIG/runme.py new file mode 100644 index 0000000..af5e07d --- /dev/null +++ b/Tests/RunCMake/UseSWIG/runme.py @@ -0,0 +1,52 @@ +# file: runme.py + +# This file illustrates the shadow-class C++ interface generated +# by SWIG. + +from __future__ import print_function + +import example + +# ----- Object creation ----- + +print ("Creating some objects:") +c = example.Circle(10) +print (" Created circle", c) +s = example.Square(10) +print (" Created square", s) + +# ----- Access a static member ----- + +print ("\nA total of", example.cvar.Shape_nshapes,"shapes were created") + +# ----- Member data access ----- + +# Set the location of the object + +c.x = 20 +c.y = 30 + +s.x = -10 +s.y = 5 + +print ("\nHere is their current position:") +print (" Circle = (%f, %f)" % (c.x,c.y)) +print (" Square = (%f, %f)" % (s.x,s.y)) + +# ----- Call some methods ----- + +print ("\nHere are some properties of the shapes:") +for o in [c,s]: + print (" ", o) + print (" area = ", o.area()) + print (" perimeter = ", o.perimeter()) + +print ("\nGuess I'll clean up now") + +# Note: this invokes the virtual destructor +del c +del s + +s = 3 +print (example.cvar.Shape_nshapes,"shapes remain") +print ("Goodbye") diff --git a/Tests/SwigTest/runme.rb b/Tests/RunCMake/UseSWIG/runme.rb similarity index 100% rename from Tests/SwigTest/runme.rb rename to Tests/RunCMake/UseSWIG/runme.rb diff --git a/Tests/SwigTest/runme.tcl b/Tests/RunCMake/UseSWIG/runme.tcl similarity index 99% rename from Tests/SwigTest/runme.tcl rename to Tests/RunCMake/UseSWIG/runme.tcl index c7f4725..6055cf6 100644 --- a/Tests/SwigTest/runme.tcl +++ b/Tests/RunCMake/UseSWIG/runme.tcl @@ -47,4 +47,3 @@ rename s "" puts "$Shape_nshapes shapes remain" puts "Goodbye" - diff --git a/Tests/SwigTest/runme2.tcl b/Tests/RunCMake/UseSWIG/runme2.tcl similarity index 99% rename from Tests/SwigTest/runme2.tcl rename to Tests/RunCMake/UseSWIG/runme2.tcl index 88ec2f6..d0b5c21 100644 --- a/Tests/SwigTest/runme2.tcl +++ b/Tests/RunCMake/UseSWIG/runme2.tcl @@ -67,4 +67,3 @@ delete_Shape $s puts "$Shape_nshapes shapes remain" puts "Goodbye" - diff --git a/Tests/SwigTest/runme.py b/Tests/SwigTest/runme.py deleted file mode 100644 index ed3909e..0000000 --- a/Tests/SwigTest/runme.py +++ /dev/null @@ -1,51 +0,0 @@ -# file: runme.py - -# This file illustrates the shadow-class C++ interface generated -# by SWIG. - -import example - -# ----- Object creation ----- - -print "Creating some objects:" -c = example.Circle(10) -print " Created circle", c -s = example.Square(10) -print " Created square", s - -# ----- Access a static member ----- - -print "\nA total of", example.cvar.Shape_nshapes,"shapes were created" - -# ----- Member data access ----- - -# Set the location of the object - -c.x = 20 -c.y = 30 - -s.x = -10 -s.y = 5 - -print "\nHere is their current position:" -print " Circle = (%f, %f)" % (c.x,c.y) -print " Square = (%f, %f)" % (s.x,s.y) - -# ----- Call some methods ----- - -print "\nHere are some properties of the shapes:" -for o in [c,s]: - print " ", o - print " area = ", o.area() - print " perimeter = ", o.perimeter() - -print "\nGuess I'll clean up now" - -# Note: this invokes the virtual destructor -del c -del s - -s = 3 -print example.cvar.Shape_nshapes,"shapes remain" -print "Goodbye" - https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b513a879ec0dc23df1d4557d17b3b2fed3b94f7b commit b513a879ec0dc23df1d4557d17b3b2fed3b94f7b Author: Marc Chevrier AuthorDate: Thu Feb 1 15:49:22 2018 +0100 Commit: Marc Chevrier CommitDate: Thu Feb 8 19:16:28 2018 +0100 Tests management: add TESTS directory property Implements: #17680 diff --git a/Help/manual/cmake-properties.7.rst b/Help/manual/cmake-properties.7.rst index 00a932f..d3e58d0 100644 --- a/Help/manual/cmake-properties.7.rst +++ b/Help/manual/cmake-properties.7.rst @@ -84,6 +84,7 @@ Properties on Directories /prop_dir/RULE_LAUNCH_LINK /prop_dir/SOURCE_DIR /prop_dir/SUBDIRECTORIES + /prop_dir/TESTS /prop_dir/TEST_INCLUDE_FILES /prop_dir/VARIABLES /prop_dir/VS_GLOBAL_SECTION_POST_section diff --git a/Help/prop_dir/TESTS.rst b/Help/prop_dir/TESTS.rst new file mode 100644 index 0000000..c6e1d88 --- /dev/null +++ b/Help/prop_dir/TESTS.rst @@ -0,0 +1,7 @@ +TESTS +----- + +List of tests. + +This read-only property holds a :ref:`;-list ` of tests +defined so far by the :command:`add_test` command. diff --git a/Help/release/dev/directory-property-TESTS.rst b/Help/release/dev/directory-property-TESTS.rst new file mode 100644 index 0000000..9de2531 --- /dev/null +++ b/Help/release/dev/directory-property-TESTS.rst @@ -0,0 +1,5 @@ +directory-property-TESTS +------------------------ + +* The :prop_dir:`TESTS` directory property was added to hold the list of tests defined by + command :command:`add_test`. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index b468208..82c6e81 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -3641,6 +3641,20 @@ void cmMakefile::AppendProperty(const std::string& prop, const char* value, const char* cmMakefile::GetProperty(const std::string& prop) const { + // Check for computed properties. + static std::string output; + if (prop == "TESTS") { + std::vector keys; + // get list of keys + std::transform(this->Tests.begin(), this->Tests.end(), + std::back_inserter(keys), + [](decltype(this->Tests)::value_type const& pair) { + return pair.first; + }); + output = cmJoin(keys, ";"); + return output.c_str(); + } + return this->StateSnapshot.GetDirectory().GetProperty(prop); } diff --git a/Tests/RunCMake/get_property/directory_properties-stderr.txt b/Tests/RunCMake/get_property/directory_properties-stderr.txt index 6d5bcdb..89f5618 100644 --- a/Tests/RunCMake/get_property/directory_properties-stderr.txt +++ b/Tests/RunCMake/get_property/directory_properties-stderr.txt @@ -19,4 +19,12 @@ get_property: -->[^<;]*/Tests/RunCMake/get_property<-- get_directory_property: -->[^<;]*/Tests/RunCMake/get_property/directory_properties-build/directory_properties<-- get_property: -->[^<;]*/Tests/RunCMake/get_property/directory_properties-build/directory_properties<-- get_directory_property: -->[^<;]*/Tests/RunCMake/get_property/directory_properties<-- -get_property: -->[^<;]*/Tests/RunCMake/get_property/directory_properties<--$ +get_property: -->[^<;]*/Tests/RunCMake/get_property/directory_properties<-- +get_directory_property: --><-- +get_property: --><-- +get_directory_property: -->test1;test2<-- +get_property: -->test1;test2<-- +get_directory_property: -->test1;test2;test3<-- +get_property: -->test1;test2;test3<-- +get_directory_property: -->Sub/test1;Sub/test2<-- +get_property: -->Sub/test1;Sub/test2<--$ diff --git a/Tests/RunCMake/get_property/directory_properties.cmake b/Tests/RunCMake/get_property/directory_properties.cmake index 4e68738..9b978fd 100644 --- a/Tests/RunCMake/get_property/directory_properties.cmake +++ b/Tests/RunCMake/get_property/directory_properties.cmake @@ -28,3 +28,12 @@ check_directory_property("${CMAKE_CURRENT_SOURCE_DIR}" BINARY_DIR) check_directory_property("${CMAKE_CURRENT_SOURCE_DIR}" SOURCE_DIR) check_directory_property("${CMAKE_CURRENT_SOURCE_DIR}/directory_properties" BINARY_DIR) check_directory_property("${CMAKE_CURRENT_SOURCE_DIR}/directory_properties" SOURCE_DIR) + +check_directory_property("${CMAKE_CURRENT_SOURCE_DIR}" TESTS) +add_test(NAME test1 COMMAND "${CMAKE_COMMAND}" -E echo "test1") +add_test(NAME test2 COMMAND "${CMAKE_COMMAND}" -E echo "test2") +check_directory_property("${CMAKE_CURRENT_SOURCE_DIR}" TESTS) +add_test(NAME test3 COMMAND "${CMAKE_COMMAND}" -E echo "test3") +check_directory_property("${CMAKE_CURRENT_SOURCE_DIR}" TESTS) + +check_directory_property("${CMAKE_CURRENT_SOURCE_DIR}/directory_properties" TESTS) diff --git a/Tests/RunCMake/get_property/directory_properties/CMakeLists.txt b/Tests/RunCMake/get_property/directory_properties/CMakeLists.txt index 7318b97..95106ad 100644 --- a/Tests/RunCMake/get_property/directory_properties/CMakeLists.txt +++ b/Tests/RunCMake/get_property/directory_properties/CMakeLists.txt @@ -4,3 +4,6 @@ subdirs(sub2) add_custom_target(CustomSub) add_library(InterfaceSub INTERFACE) add_library(my::InterfaceSub ALIAS InterfaceSub) + +add_test(Sub/test1 COMMAND "${CMAKE_COMMAND}" -E echo "Sub/test1") +add_test(Sub/test2 COMMAND "${CMAKE_COMMAND}" -E echo "Sub/test2") ----------------------------------------------------------------------- Summary of changes: Help/manual/cmake-properties.7.rst | 1 + Help/prop_dir/TESTS.rst | 7 + Help/release/dev/UseSWIG-modernize-module.rst | 6 + Help/release/dev/directory-property-TESTS.rst | 5 + Modules/UseSWIG.cmake | 485 ++++++++++++++------ Source/cmMakefile.cxx | 14 + Tests/RunCMake/CMakeLists.txt | 5 + Tests/RunCMake/UseSWIG/BasicConfiguration.cmake | 68 +++ Tests/RunCMake/UseSWIG/BasicPerl.cmake | 18 + Tests/RunCMake/UseSWIG/BasicPython.cmake | 9 + Tests/RunCMake/{CMP0041 => UseSWIG}/CMakeLists.txt | 0 .../UseSWIG/LegacyConfiguration.cmake} | 29 +- Tests/RunCMake/UseSWIG/LegacyPerl.cmake | 18 + Tests/RunCMake/UseSWIG/LegacyPython.cmake | 9 + Tests/RunCMake/UseSWIG/MultipleModules.cmake | 30 ++ Tests/RunCMake/UseSWIG/RunCMakeTest.cmake | 23 + Tests/{SwigTest => RunCMake/UseSWIG}/example.cxx | 0 Tests/{SwigTest => RunCMake/UseSWIG}/example.h | 0 Tests/{SwigTest => RunCMake/UseSWIG}/example.i | 1 - Tests/{SwigTest => RunCMake/UseSWIG}/runme.php4 | 0 Tests/{SwigTest => RunCMake/UseSWIG}/runme.pike | 0 Tests/{SwigTest => RunCMake/UseSWIG}/runme.pl | 1 - Tests/RunCMake/UseSWIG/runme.py | 52 +++ Tests/{SwigTest => RunCMake/UseSWIG}/runme.rb | 0 Tests/{SwigTest => RunCMake/UseSWIG}/runme.tcl | 1 - Tests/{SwigTest => RunCMake/UseSWIG}/runme2.tcl | 1 - .../get_property/directory_properties-stderr.txt | 10 +- .../get_property/directory_properties.cmake | 9 + .../directory_properties/CMakeLists.txt | 3 + Tests/SwigTest/runme.py | 51 -- 30 files changed, 641 insertions(+), 215 deletions(-) create mode 100644 Help/prop_dir/TESTS.rst create mode 100644 Help/release/dev/UseSWIG-modernize-module.rst create mode 100644 Help/release/dev/directory-property-TESTS.rst create mode 100644 Tests/RunCMake/UseSWIG/BasicConfiguration.cmake create mode 100644 Tests/RunCMake/UseSWIG/BasicPerl.cmake create mode 100644 Tests/RunCMake/UseSWIG/BasicPython.cmake copy Tests/RunCMake/{CMP0041 => UseSWIG}/CMakeLists.txt (100%) rename Tests/{SwigTest/CMakeLists.txt => RunCMake/UseSWIG/LegacyConfiguration.cmake} (70%) create mode 100644 Tests/RunCMake/UseSWIG/LegacyPerl.cmake create mode 100644 Tests/RunCMake/UseSWIG/LegacyPython.cmake create mode 100644 Tests/RunCMake/UseSWIG/MultipleModules.cmake create mode 100644 Tests/RunCMake/UseSWIG/RunCMakeTest.cmake rename Tests/{SwigTest => RunCMake/UseSWIG}/example.cxx (100%) rename Tests/{SwigTest => RunCMake/UseSWIG}/example.h (100%) rename Tests/{SwigTest => RunCMake/UseSWIG}/example.i (99%) rename Tests/{SwigTest => RunCMake/UseSWIG}/runme.php4 (100%) rename Tests/{SwigTest => RunCMake/UseSWIG}/runme.pike (100%) mode change 100755 => 100644 rename Tests/{SwigTest => RunCMake/UseSWIG}/runme.pl (99%) create mode 100644 Tests/RunCMake/UseSWIG/runme.py rename Tests/{SwigTest => RunCMake/UseSWIG}/runme.rb (100%) rename Tests/{SwigTest => RunCMake/UseSWIG}/runme.tcl (99%) rename Tests/{SwigTest => RunCMake/UseSWIG}/runme2.tcl (99%) delete mode 100644 Tests/SwigTest/runme.py hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 15 11:15:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 15 Feb 2018 11:15:04 -0500 (EST) Subject: [Cmake-commits] CMake annotated tag, v3.11.0-rc1, created. v3.11.0-rc1 Message-ID: <20180215161504.38BAC106829@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The annotated tag, v3.11.0-rc1 has been created at 1b782eb2dc83d8fff0b92c7c612e05612d2ad604 (tag) tagging 02edf08be2b9476f442b702c6c00447912425cc2 (commit) replaces v3.10.2 tagged by Brad King on Thu Feb 15 11:01:09 2018 -0500 - Log ----------------------------------------------------------------- CMake 3.11.0-rc1 -----BEGIN PGP SIGNATURE----- iQJKBAABCgA0FiEExsJlMku+vcNQtRPQLSzvEDSSFoQFAlqFrsUWHGJyYWQua2lu Z0BraXR3YXJlLmNvbQAKCRAtLO8QNJIWhDY9D/oDnKbGR8N6zADMYTyb9LIrtRTo WjBl04zgDK/VN9bk/xQ+oOCivpiHkQefWfyx80Qu9EEG6vIMUYvC6t0TpnKpQhnG fKxp9bLwmcuViRhDJBqfaId7y4336aSH/0cfNdsr9iBjD/NI1CqXunIw0YfFXzuW uZu0zWoXzWP4b0L0WZ7DrAQ35sHG1Kd0+sEQ/XMFUkBcRmo5NoyInY5YunxivhnV zEV/5v1XAFEFK1v1IjwUB3MU++hnyDQ2KpY76n9CsL3p2SBpL3FCr/A4rs98KDgR B9hja/jlDmbZvo406QvyfdRZx3uealSx+dNb5hZf28JoF/u62DmhBPTzUcG7TSLT hHB6j4xcn0xYO0hp8+UqyiG89LqfXVykv1vt2SOWN78SEZcDnR04byRBfi6vcYiV g2RQVfx28a0yAaVUCWCyo1HVohnuLterB1Fi8I9g4OFbYVS1klFcqf735dG7pfWw xSMZ+2+IsPJeU6f8CRg8CMoRa23rDoHa3rUjZBFnHh9DTdsX6YvfydL5jz6TAArr ZbmSMJ7X2z8RvPLvl2rW9fu3tfHNCnWOc0aQKwBaXME8ChIKb7lrzPBx7jwvPt2i y7+qyx1q8SW/RtFm1tAGHBleYT1U1HqqfTFBpGzr6nhgbTSLigWXc88M/gJXH6mt HM8sxCThOlVtmiczpQ== =LUDE -----END PGP SIGNATURE----- Aaron Bray (1): FindCUDA: Update to properly find MSVC 2017 compiler tools Aaron Orenstein (1): Performance: Improve efficiency of source file lookup in cmMakefile Alex Neundorf (2): Generators: remove KDevelop3 generator Generators: adjust error message for the removed KDevelop3 generator Anton Danielsson (1): ASM: ADSP assembler identification Axel Huebl (1): bootstrap: Add Clang to known compiler candidates Ben Boeckel (17): FindBoost: use CMake's compiler version rather than querying again FindBoost: support more than one number in version components cmTargetPropertyComputer: whitelist custom properties add_library: mention that Xcode requires a real source file COMPILE_FLAGS: do not imply that the property is a list cmake: specify source file extensions cmSourceFileLocation: allow skipping ambiguous extensions cmSourceFile: mark known locations as such FindOpenGL: remove duplicate OpenGL::GL reference genex: generated files have known extensions cmAddCustomCommandCommand: store keywords in strings cmAddCustomCommandCommand: use std::string const& for FileIsFullPath cmGeneratorExpressionNode: avoid some strlen in $ cmTarget: use static strings for special property names cmGeneratorExpressionLexer: only tokenize strings with a '$' cmGeneratorTarget: make keyword strings const cmExpandedCommandArgument: add an overload for const char* Benito Palacios Sanchez (1): cmGlobalXCodeGenerator: Support XCTest for XCode 6.4 Beren Minor (2): Unhardcode the CMAKE_CONFIGURATION_TYPES values Help: Add references and backticks in LINK_FLAGS prop_tgt Betsy McPhail (6): cmCTest: Remove dead code Tests: Remove incorrect use of 'test-timeout' option Help: Divide ctest(1) manual options into sections Help: Normalize capitalization of 'CTest' in ctest(1) manual Help: Add 'Label and Subproject Summary' section to ctest(1) manual CTest: Expand 'Label and Subproject Summary' section of manual Bill Hoffman (1): Update cpplint support to return 0 and mark warnings for CDash. Brad King (541): Merge branch 'release-3.10' Begin post-3.10 development Merge topic 'cpack-dmg-explicit-hfs' Merge branch 'release-3.10' Merge topic 'findopenmp-fix-verbose' Merge topic 'minor-fixes' Merge branch 'release-3.10' Merge branch 'upstream-KWSys' into update-kwsys Merge topic 'revise-3.10-relnotes' Merge topic 'FindJava-tolerant-versions' Merge topic 'FindCUDA-cuda-9-nppi' Merge topic 'ipo-escape-toolchain-path' Merge topic 'FindProtobuf-doc-typo' Merge topic 'target_properties_doc_cleanup' Merge topic 'doc_bundle_wrong_plist_property' Merge branch 'release-3.10' Merge topic 'xcode-tests-ios-deployment-target' Merge topic 'tryrun-strcpy' Tests: Refactor RunCMake output line ignore regex construction Tests: Teach RunCMake to ignore clang unused sanitizer flag warnings Merge topic 'doc-lang-clarify' Merge topic 'test-tolerate-clang-sanitizers' Merge topic 'update-curl' Merge topic 'update-kwsys' Merge topic 'autogen-skip-ui' Merge topic 'UseJava_OUTPUT_DIR' Merge topic 'ExternalProject-CMP0054' Merge topic 'simplify-env-var-determination' Merge topic 'linked-tree' Merge topic 'cpack-deb-mr-1296-fix' Merge branch 'release-3.10' FindPythonLibs: Prefer libs early in search path regardless of name FindPythonLibs: Allow find_library to search paths from system environment Merge topic 'clang-msvc-help' Merge topic 'FindXMLRPC-no-includes' Merge topic 'FindPythonLibs-names-per-dir' Merge branch 'release-3.10' Merge branch 'release-3.10' Merge branch 'upstream-KWSys' into update-kwsys Merge topic 'update-kwsys' Merge topic 'cpack-dmg-errors' Merge topic 'cpack-wix-cygwin' Merge topic 'UseJava-add_jar-split-build-and-output-dirs' Merge topic 'imported-interface-no-system' Merge topic 'Linux-CUDA-OpenCL' Merge topic 'vs-2017-cl-check' Merge branch 'release-3.10' Merge topic 'findopenmp-lib-paths' Merge topic 'vs-cuda-machine' Merge topic 'module-fetchcontent' Merge topic 'cmake-open' Merge branch 'release-3.10' VS,Xcode: Add CMakeLists.txt sources without mutating targets Merge topic 'ide-direct-CMakeLists.txt' Merge topic 'ti-compiler-depfile-support' Merge topic 'curl_netrc_options' Add infrastructure for generators to select a build tool instance ExternalProject: Propagate the generator instance CheckLanguage: Pass generator instance into check cmVSSetupHelper: Add option to specify an instance VS: Select and save a VS 2017 instance persistently Merge branch 'release-3.10' Merge topic 'flang-remove-boundscheck' Merge branch 'release-3.10' Tests: Exclude bad RunCMake.add_executable case on multi-arch Xcode Merge topic 'generator-instance' Merge topic 'doc-cxx-std-msvc' Merge topic 'gnuid-cmp54-fix' Merge topic 'help_parse_arguments' Merge topic 'FindOpenCL-more-versions' Merge topic 'FindCUDA-doc-format' Merge branch 'release-3.10' Merge topic 'defer-target-source-check' Merge topic 'findmpi-core-count' Merge topic 'omp-oacc-werror-return-type' Merge topic 'windows_symlinks' Merge topic 'flang-windows' Merge topic 'server-codemodel-install-dest' Merge branch 'release-3.10' Merge topic 'clang-cl-TP' Merge topic 'cm-array-begins-size' Help: Add notes for topic 'generalize-importedtargets-behavior' Merge branch 'release-3.10' cmGlobalGenerator: Refactor test and package target conditions Tests: Do not enable languages in all cases of RunCMake.CMP0037 Tests: Add RunCMake.CMP0037 case for WARN on reserved targets Merge branch 'backport-fix-co-compile' into fix-co-compile Merge topic 'cmp0040-wording' Merge topic 'cmdparser-strcpy' Merge topic 'findICU_update' Merge topic 'generalize-importedtargets-behavior' Merge topic 'autogen-static-library-cycles' Merge topic 'fix-co-compile' Merge topic 'cpack-rpm-dist-test-fix' Merge topic 'cpack-deb-0-so-version-support' Merge topic 'autogen-qrc-file-name' Merge topic 'freetype-windows' Merge branch 'release-3.10' Merge topic 'vs-diagnostics-flag' CMP0037: De-duplicate check and message generation CMP0037: Allow test and package targets when features are not enabled Merge topic 'minifixes' Merge topic 'vs-hlsl-opt-dbg' Merge topic '15468-xcode-hide-zero-check-source-group' Merge topic 'cmp0037-conditional-targets' Merge topic 'update-vim-syntax' Merge topic 'autogen-change-rcc-config-suffix' Merge branch 'release-3.10' Merge topic 'mingw-clang-c-compile-features' Merge topic 'windows-embed-cmake-version' Merge topic 'notes_timestamp' Merge topic '16780-write-single-xcodeproj' Merge branch 'backport-3.9' into autogen-moc-predefs-no-moc-options Merge topic 'autogen-moc-predefs-no-moc-options' Merge branch 'backport-3.9-autogen-moc-predefs-no-moc-options' into release-3.9 Merge branch 'release-3.9' Merge branch 'release-3.10' Merge branch 'upstream-KWSys' into update-kwsys Merge branch 'release-3.10' Help: Document CMP0037 relaxation of test and package targets Add deprecation warnings for policies CMP0054 and below Merge topic 'doc-cmp0037-update' Merge topic 'update-kwsys' Merge topic 'deprecate-policy-old' Merge branch 'upstream-KWSys' into update-kwsys CMake 3.9.5 Merge branch 'release-3.9' Tests: Fix CTestTestCrash test under ubsan Tests: Honor already-set CTEST_REAL_HOME in case of repeat run Tests: Drop unused contract test Tests: Drop unused contract test environment script Tests: Factor out contract test HOME finding Tests: Refactor contract test activation Merge topic 'update-kwsys' Merge topic 'server-refactor' Merge topic 'bzip2-windows' Merge topic 'test-crash-ubsan' Merge topic 'test-contract-refactor' Merge topic 'typos' Tests: Pass generator instance into check for Fortran Tests: Avoid hanging on check for Fortran Merge branch 'upstream-KWSys' into update-kwsys Merge topic 'server-test-info' Merge topic 'findboost-compiler-version' Merge topic 'update-CheckFortran' Merge topic 'csharp-version-english' Tests: Add contract test for PLplot Merge branch 'implicit-lib-gcceh' into release-3.9 Merge topic 'implicit-lib-gcceh' Merge topic 'FindOpenGL-clarify-libraries' Merge topic 'irsl-win2018' Merge branch 'release-3.9' Merge branch 'release-3.10' Merge topic 'flang-windows' Merge topic 'update-kwsys' Merge topic 'imported-promotion' Merge topic 'contract-plplot' Merge topic 'fortran-flags-docstring' Merge topic 'cmake-default-dir-install-permissions' Merge topic 'FindHDF5-c-version' Merge branch 'release-3.10' Tests: In CTestTest2 configure KWSys encoding to match CMake Merge branch 'upstream-KWSys' into update-kwsys Windows: Do not report manifest tool update notification as failure Merge topic 'FindOpenGL-no-glvnd-for-GL' Merge branch 'release-3.10' Merge topic 'windows-mt-update-quiet' Merge topic 'update-kwsys' CMake 3.9.6 Merge topic 'test-CTestTest2-intl' Merge topic 'csharp-settings-property' Merge topic 'cmakeServerRequiredCMakeVersion' Merge topic 'update-ctest-documentation' Merge branch 'release-3.9' Merge topic 'doxygen_dot' cmcmd: Fix typo in RunCommand logic Merge topic 'windows-mt-update-quiet' Merge branch 'release-3.10' Merge branch 'release-3.10' Merge topic 'xcodeForLoopCleanup' Merge topic 'swig-broken-dependency-scan' Merge topic 'ctest-warning' Merge topic 'xcode64' Merge topic 'cmake-gui-qt-static-windows' Utilities/Release: Remove unused setting in Linux build Utilities/Release: Build static executables on Windows Merge branch 'release-3.10' Merge topic 'rel-win-static' Help: Add notes for topic 'CheckIncludeFiles-language-CXX' Utilities/Release: Update to openssl-1.0.2m Utilities/Release: Update to openssl-1.1.0g Tests: Fix FindPatch test on Windows Merge topic 'update-prebuilt-openssl' Merge topic 'ctest-chrono' FindMatlab: Avoid if() auto-dereference in 64-bit host detection cmSourceGroup: Return strings from GetName and GetFullName VS: Order .vcxproj.filters files deterministically MSVC: Fix MSVC_VERSION when mixing MSVC C/C++ with Intel Fortran FindRuby: Fix match of '.' in version numbers FindRuby: Add support for versions 2.2, 2.3, and 2.4 Merge topic 'FindOpenGL-glvnd-preference' Merge topic 'test-FindPatch-windows' Merge topic 'msvc-version' Merge topic 'fmpi-command-not-found' Merge topic 'fomp-no-def-path' Merge topic 'FindMatlab-better-host-detect' Merge branch 'release-3.10' Tests: Add test for bad foreach inside a function FindOpenGL: Add policy CMP0072 to prefer GLVND for legacy GL CUDA: Add CMAKE_CUDA_SEPARABLE_COMPILATION variable IWYU: Suppress warnings from the internal Clang Merge topic 'test-bad-foreach-in-function' Merge topic 'FindRuby-through-2.4' Merge topic 'blas-lapack-flame' clang-tidy: Clarify comment explaining purpose of CLANG_TIDY_SHA1 Tests: Remove unnecessary result files from RunCMake.File_Generate Tests: Decouple COMPILE_LANGUAGE in file(GENERATE) from COMPILE_OPTIONS Genex: Fix COMPILE_LANGUAGE messages to allow file(GENERATE) with Xcode Genex: Enable COMPILE_LANGUAGE for file(GENERATE) with Visual Studio Merge topic 'vs-source-group-order' Merge topic 'serverBugFixHasInstallRule' Merge topic 'FindOpenGL-glvnd-policy' Merge topic 'perf-source-lookup' Merge topic 'iwyu-suppress-clang-warnings' Merge topic 'cuda-sep-comp-var' Merge topic 'ctest-chrono' Merge topic 'cpack-minor-cleanup-and-tests-extension' Merge topic 'autogen-rcc-custom-command' Merge topic 'fix-cmake-server-bad-buffering' Merge branch 'release-3.10' Merge branch 'release-3.10' Merge topic 'tidy-sha1-comment' Genex: Enable COMPILE_LANGUAGE for COMPILE_OPTIONS with Visual Studio Merge topic 'gtest-fix-discovery' IWYU: Add more mappings for std::__decay_and_strip Fortran: Add option to run the compiler through launcher tools Merge topic 'serverFixTestDiscovery' Merge topic 'server-target-isGeneratorProvided' Merge topic 'iwyu-workaround' Merge topic 'hardcoded-path-removal' Merge topic 'extend-compile-language-genex' Merge branch 'release-3.10' GNUInstallDirs: Update link to 64-bit ABI documents CMakeFindBinUtils: Improve switch between MSVC- and GNU-like tools IWYU: Add mappings for std::enable_if on chrono durations bootstrap: Add infrastructure to detect threading flags AIX: Add -pthread flag to enable std::thread with GCC Merge topic 'GNUInstallDirs-update-link' Merge topic 'cuda-implicit-include-dirs' Merge topic 'fortran-compiler-launcher' Merge topic 'cppcheck_testdriver' Merge topic 'win-clang-debug' Merge topic 'CheckIncludeFiles-language-CXX' Merge topic 'clang-cl-fix' Merge topic 'aix-threads' Merge topic 'CodeBlocks-custom-compiler-id' Merge branch 'release-3.10' CheckIncludeFiles: Fix name of source file used for check Merge topic 'CheckIncludeFiles-fix-src-name' Merge topic 'findiconv-module' Merge topic 'findcuda-separable-compilation-fix' Merge topic 'whitelist-more-interface-properties' Merge topic 'CMakeFindBinUtils-improve-switch' cmStandardLexer.h: Do not include a C++ header Merge branch 'upstream-KWSys' into update-kwsys Simplify CM_FALLTHROUGH implementation Merge topic 'libuv-raii' cmUVHandlePtr: Move to CMakeLib to make it available everywhere cmUVHandlePtr: Add uv_timer_ptr cmUVHandlePtr: Add uv_process_ptr GitSetup: Restrict import to files we need Merge branch 'upstream-GitSetup' into update-gitsetup Merge topic 'update-kwsys' Merge topic 'simplify-fallthrough' Merge topic 'fixCMakeVersionRC' Merge topic 'fix-cmake-server-bad-buffering-test' Merge topic 'bootstrap-clang-5' Merge topic 'libuv-raii' Merge topic 'simplify_target_link_libraries' Merge topic 'update-gitsetup' Merge branch 'release-3.10' Merge branch 'upstream-KWSys' into update-kwsys Merge topic 'cmake-job-pool' Merge topic 'update-kwsys' Merge topic 'csharp_project_without_sources' Merge topic 'cpack-pkg-fix' Merge branch 'release-3.10' Merge topic 'pragma-once' Merge topic 'add_library-mention-xcode-objlib-behavior' Use CM_FALLTHROUGH in Windows-specific code Merge topic 'ctest-chrono' Merge topic 'win-fallthrough' Merge topic 'update-cpplint' Merge topic 'src-genex-refactoring' Merge topic 'include_external_ms_project_support_non_windows_target' Merge topic 'update-cm-thread' Merge branch 'upstream-KWSys' into update-kwsys cmake-gui: Update RegexExplorer for changes to KWSys Help: Document that ASM should be enabled last Merge topic 'findmpi-found-cond' Merge topic 'findmpi-notfound-spam' Merge topic 'update-kwsys' Merge topic 'src-COMPILE_DEFINITIONS-genex' Merge topic 'doc-lang-order' Merge branch 'release-3.10' server: drop "ctestInfo" backtrace information Merge branch 'backport-revert-server-target-backtraces' into revert-server-target-backtraces Merge branch 'upstream-KWSys' into update-kwsys Merge topic 'gtest-discovery-timeout' Merge topic 'revert-server-target-backtraces' Merge branch 'release-3.10' Merge topic 'splitRCPatchComponent' Merge topic 'FindOpenCL-amd-sdk' Merge topic 'externalproject_download_dir' Merge topic 'cpack-rpm-check-executable-flags' CTest: Fix regression in test timeout compuatation Merge branch 'automoc-apple-framework' into autogen-fix-library-deps Merge branch 'automoc-apple-framework' into autogen-fix-library-deps Merge topic 'fix-ctest-chrono' CTest: Fix regression in build-and-test timeout compuatation CTest: Fix regression in build-and-test timeout forwarding cmCTestBuildAndTestHandler: Convert timeout to std::chrono::duration Merge topic 'update-kwsys' Merge topic 'autogen-fix-library-deps' Merge branch 'release-3.10' Merge topic 'cuda_darwin_proper_install_names_flags' Merge branch 'release-3.10' Merge branch 'upstream-KWSys' into update-kwsys CTest: Simplify std::chrono::duration conversion to double CTest: Remove unfinished batch test mode Merge topic 'update-kwsys' Merge topic 'ctest-remove-unfinished-batch-mode' Merge topic 'cpack-generator-scripts-enable-all-cmake-policies' CTest: Use integer-representable value for "infinite" timeout Merge branch 'upstream-KWSys' into update-kwsys Merge topic 'fix-ctest-chrono' Merge topic 'fix-iar-binutils-for-cxx' Merge topic 'FindPkgConfig_doc_cleanup' Merge branch 'release-3.10' Merge topic 'update-kwsys' Merge topic 'use-std-string' Merge topic 'FindPerlLibs-MacOS-failure' Merge topic 'irsl-msvc-omp-fix' Merge topic 'findmpi-builtin-fix' Merge branch 'release-3.10' Merge branch 'release-3.10' Merge topic 'cmGraphVizWriter_Interface_Dependers' Merge topic 'irsl-intel-fortran-only-fix' Merge topic 'autogen-separate-tests' Merge topic 'per-source-COMPILE_LANGUAGE-genex-support' Merge branch 'release-3.10' Merge topic 'fix_failing_ResolveDeviceSymbols_test' Merge topic 'makefile-simplify-fortran' Merge topic 'vs-vcxproj-lowercase-utf-8' Merge topic 'FindFLTK-per-config' Merge branch 'upstream-KWSys' into update-kwsys Merge topic 'cuda-mixed-cxx-standard' Merge topic 'update-kwsys' Merge branch 'backport-autogen-nested-lists-fix' into autogen-nested-lists-fix Merge topic 'autogen-nested-lists-fix' Merge branch 'release-3.10' cmcmd: Fix cmake_symlink_library for inconsistent slashes Copyright.txt: Update year range to end in 2018 Merge topic 'solaris_warning_single' Merge topic 'FindBLAS-modernize' Merge topic 'objlib-dedup' Merge topic 'cmake_symlink_library-slashes' Merge topic 'use-override' Merge topic 'cpackifw-package-remove-target-dir' Merge topic 'copyright-year' cmGlobalNinjaGenerator: Avoid using deprecated std::ptr_fun Merge topic 'FindPkgConfig_search_path_fix' Generalize check for C++14 constructs Compile CMake as C++17 if supported by the compiler Merge topic 'self-c++17' Merge topic '17431-iphone-deployment-target' Merge topic 'execute_process_UTF8_keyword' Merge topic 'use_generator_is_multi_config' libuv: unix: restart syscalls interrupted by our signal handler cmCTest: Remove unused member LastStopTimeout cmCTest: Refactor stop time calculations cmCTestRunTest: Subsume ResolveTimeout into only call site cmCTestMultiProcessHandler: Check stop time more directly cmCTestMultiProcessHandler: Fix StartNextTests loop on not-started test Merge branch 'upstream-KWIML' into update-kwiml Merge topic 'msvc2017-findcuda' Merge topic 'FindCUDA-deduplicate-c+std-host-flags' Merge topic 'vs-ranged-for' Merge topic 'vs10-target-generator-range-for' Merge topic 'doc-OUTPUT_NAME-clarify' Merge topic 'doc-CMAKE_SYSTEM_NAME-mode' Merge topic 'COMPILE_FLAGS-clarify-sf-prop-documentation' Merge topic 'cpack_versions' Merge topic 'FindPostgres_support_for_v10' Merge branch 'release-3.10' cmCTestMultiProcessHandler: Add helper to make libuv use SA_RESTART Merge topic 'update-kwiml' Merge topic 'serverTestInfoExpandVariables' Merge topic 'unhardcode-configuration-types' Merge branch 'release-3.10' MSVC: Avoid warning when enabling ASM language with C compiler Merge topic 'doc-install-arg-order' Merge topic 'doc-fixes' Merge topic 'FindBoost-1.66' Merge topic 'cuda_msvc_support_complex_gencode_signatures' Merge topic 'misc-typos' Merge topic 'specify-source-extensions' Merge topic 'msvc-asm' Merge branch 'backport-autogen-nexist-source-fix' into autogen-nexist-source-fix Merge topic 'autogen-nexist-source-fix' Merge branch 'release-3.10' cmLocalVisualStudio7Generator: Clarify condition for target that compiles cmLocalVisualStudio7Generator: Clarify variable name of compiled language cmVisualStudio10TargetGenerator: Factor out include dir computation Merge topic 'ctest-libuv' Merge topic 'avoid-ambiguous-extension-logic-for-known-paths' Merge topic 'cuda_allow_G_to_device_debugging_on_msvc' Tests: Remove redundant code from RunCMake.GenerateExportHeader case GNU: Use -fvisibility on AIX when supported Genex: Enable COMPILE_LANGUAGE for COMPILE_DEFINITIONS with VS and Xcode Genex: Enable COMPILE_LANGUAGE for INCLUDE_DIRECTORIES with VS and Xcode Merge topic 'gnu-visibility-aix' Merge topic 'CheckIncludeFile-required-libs' Merge topic 'extend-compile-language-genex' libuv: Teach import script to add missing newlines Merge topic 'fix-documentation' CTest: Fix decoding of MBCS character split by buffering CTest: Fix process output read error cases Merge topic 'msvc_cuda_8_explicitly_specify_cuda_language' Merge topic 'fix_ninja_cuda' Merge topic 'FindTCL-thread-suffix' Merge topic 'ctest-libuv-output-decode' Merge topic 'autogen-parallel' Merge branch 'release-3.10' Merge topic 'cache-truncate-newlines' Merge topic 'FindOpenGL-fix-typo' Merge branch 'upstream-libuv' into update-libuv libuv: Update build within CMake IWYU: Add more workaround mappings for internal bits Merge topic 'iwyu' Merge topic 'docs_cmake_crosscompiling' Merge topic 'heading_automoc_macro_names' Merge topic 'genex-output-known-extension' Merge topic 'FindPythonInterp-windows-current-user' Merge topic 'FindJava-jdk-10' Merge topic 'update-libuv' Merge topic 'serverCrashIfNoMinVersionSpecified' Merge topic 'boost-optional-components' Merge topic 'autogen-first-line-fix' cpack: Enable MSVC debug hook earlier Extend libuv file translate mode workaround to all executables Merge topic 'feature-codelite-fortran' Merge topic 'recognize-versioned-shared-libraries' include_regular_expression: Fix propagation to subdirectories Merge topic 'libuv-restore-fmode' Merge topic 'generic-inc-sep-typo-remove' Merge topic 'vcxproj-spaces' Merge topic 'UseJava-native-headers-generation' Merge topic 'cpack_trace' Merge topic 'GenerateExportHeader-include-guard' Merge branch 'upstream-KWSys' into update-kwsys curl: Update script to get curl 7.58.0 Merge branch 'upstream-curl' into update-curl Makefile,Ninja: Use tool-specific response file flag for include dirs XL: Enable use of response files for includes and objects Merge topic 'stdstring' Merge topic 'windows-resources-through-link' Merge topic 'fix-include_regular_expression-subdir' Merge topic 'sourceFile-new-properties' Merge topic 'update-kwsys' Merge topic 'RemoveKDevelop3' Merge topic 'server-polish-opt-handshake' Merge topic 'fix-cray-pic' Merge topic 'xl-qoptfile' Merge topic 'CPackDeb-help-typo' cmUVSignalHackRAII: Use nullptr instead of NULL De-duplicate cmUVSignalHackRAII Help/dev: Add log step to 'release' branch instructions Merge topic 'doc-dev-release' Tests: Speed up RunCMake.GeneratorExpression Tests: Speed up RunCMake.TargetPropertyGeneratorExpressions Merge topic 'update-curl' Merge topic 'ctest-chrono' Merge topic 'dedup-uv-signal-hack' Merge topic 'test-genex-speedup' Merge topic 'intel-cxx17-flags' Merge topic 'ctest_start_function_scope' Merge topic 'reduce-temporaries' cmGlobalXCodeGenerator: Avoid -Wconditional-uninitialized warning Makefile,Ninja: De-duplicate ComputeObjectFilenames method FindCUDA: Fix regression in per-config flags Merge topic 'xcode-gen-warning' Merge topic 'vcxproj-DebugInformationFormat-newline' Merge topic 'doc-typo-CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE' Merge topic 'doc-typo-CMAKE_INCLUDE_CURRENT_DIR' Merge topic 'update_foreach_range_doc' Windows: Embed version information into cmake-gui CheckIPOSupported: Document existing Fortran support Windows: Increase stack size used by CMake binaries Merge topic 'FindCUDA-restore-config-types' Merge topic 'adsp-asmembler-identification' Merge topic 'dedup-ComputeObjectFilenames' Merge topic 'vs-restore-order' Merge topic 'CheckIPOSupported-doc-Fortran' Merge topic 'source_group-TREE-args' Merge topic 'generate_speedup' Merge topic 'msvc_cuda_files_use_consistent_obj_names' Merge topic 'windows-embed-cmake-gui-version' Merge topic 'windows-cmake-stack-size' UseSWIG: Convert docs to a bracket comment UseSWIG: Improve documentation markup Merge topic 'perf-from-callgrind' Merge topic 'findmpi-linker-parsing-enh' Merge topic 'UseSWIG-doc-clarify' Merge topic 'std-string-apis' Merge topic 'msvc-doc-fix' Merge branch 'upstream-KWSys' into update-kwsys Tests: Add missing error check in CudaOnly.GPUDebugFlag Ninja: Remove unused device link line code cmCustomCommandGenerator: Simplify cmOutputConverter access Merge topic 'update-kwsys' Merge topic 'ninja-unused-device-link' Merge topic 'test-cuda-missing-check' Merge topic 'simplify-ccg-converter' Merge topic 'UseSWIG-fix-regression' Merge topic 'vs-static-ConvertToWindowsSlash' Merge topic 'autogen-documentation' Merge topic 'autogen-improve-multi-config' Merge topic 'fix_help_cmake_parse_arguments' Merge topic 'bootstrap-try-clang' Help: Consolidate 3.11 release notes Help: Organize and revise 3.11 release notes Merge topic 'doc-3.11-relnotes' Help: Drop development topic notes to prepare release CMake 3.11.0-rc1 version update Merge branch '17711-reset-xcode-target-var' into release-3.11 Merge branch 'FindImageMagick-FixFor7.0.x' into release-3.11 Merge branch 'autogen-write-on-change-only' into release-3.11 Android.mk: Evaluate generator expressions up front Android.mk: Fix export of static libraries with PRIVATE dependencies Merge branch 'export-android-mk' into release-3.11 Bryon Bean (7): cmCTestMultiProcessHandler: Factor out duplicate test finish logic cmCTestRunTest: Drop unused members cmCTestRunTest: Modernize constructor and destructor decls cmProcess: Remove unused ReportStatus method cmProcess: Use explicit enum for process state cmProcess: Use explicit enum for process exit exception CTest: Re-implement test process handling using libuv Byoungchan Lee (1): cmComputeLinkInformation: Better RPATH detection for versioned libraries. Christian Pfeiffer (37): Fortran: Use same DOC for flags as other languages FindOpenMP: Use NO_DEFAULT_PATH where appropriate FindMPI: Treat 'command not found' as an error FindOpenMP: Enable policy CMP0012 Merge topic 'fomp-cmp0012' FindQt4: Set PLUGINS and IMPORTS dir even if empty wxWidgets: Respect WX_CONFIG and WXRC_CMD env vars FindImageMagick: Add more library names Modules: Remove paths set as global Unix prefixes FindAVIFile: Replace PATHS with updated suffixes FindPike: Update names and paths FindMPEG,2: Update to current libmpeg2 behavior Modules: Replace coded PATHS with PATH_SUFFIXES IRSL: Install the 1041 folder for Intel compilers Merge topic 'imagemagick-6-freebsd-names' Merge topic 'wxwidgets-env-variables' Merge topic 'findqt4-dirs-fix' Merge topic 'irsl-intel-1041-folder' FindIconv: Add the FindIconv module. IRSL: Skip libgfxoffload if no Intel C++ is used FindLibLZMA: Add library name for Windows Merge topic 'findliblzma-win-name' Merge topic 'winarm64' FindMPI: Move MSMPI/MPICH2 mpiexec search Merge topic 'findmpi-new-mpiexec-search' FindOpenMP: Employ genex where possible Merge topic 'findopenmp-genex' GenericSystem: Remove misspelled flag default FindMPI: Improve link information parsing Intel: Correct the C11 ext flag Intel: Add C++17 compiler options FindMPI: Use more CMake variables FindMPI: Retain unused link paths FindMPI: Set up environment variables for wrapper FindMPI: Support for IMPI's compiler check FindMPI: Discard IMPI boilerplate text Help: Clarify MSVC and MSVC_VERSION variables Christoph Ruediger (1): Help: Improved MAIN_DEPENDENCY documentation of add_custom_command() Chuck Atkins (1): Cray: Add common PIC flags Clinton Stimpson (1): cmCPackDragNDropGenerator: Improve error reporting Craig Scott (31): FetchContent: New module for populating content at configure time FetchContent: Add tests Merge topic 'cross_link_CheckLanguage_enable_language' Xcode: use ranged for loops, cleanup existing for loops Merge topic 'fetchcontent-support-use-before-project-command' Help: Fix cross-reference in COMPILE_FLAGS target property docs Merge topic 'compile_flags_xref_fix' Merge topic 'WriteBasicConfigVersionFile_SameMinorVersion' CTest: Check failed fixture dependencies before test command and args Merge topic 'check_fixtures_before_exe_existence' ExternalProject: Support substituting FindPkgConfig: Cleanup docs FindPkgConfig: Make IMPORTED_TARGET test verify NO...PATH properly FindPkgConfig: Fix IMPORTED_TARGET NO...PATH option handling Solaris: Fix shadowed declaration warning Merge topic 'ctest-update-timing-summary-manual' execute_process: Allow UTF-8 as a synonym for the UTF8 keyword GENERATOR_IS_MULTI_CONFIG: Use for multi-config checks in Tests GENERATOR_IS_MULTI_CONFIG: Use for multi-config checks in Modules FindDoxygen: Add DOXYGEN_VERBATIM_VARS for quote prevention Merge topic 'doxygen_verbatim_vars' Merge topic 'various-typos' Merge topic 'improve_generated_property_docs' Merge topic 'add_cuda_to_source_regex' Merge topic 'cmSourceGroup-modern-cxx' Merge topic 'FindDoxygen-macos-utils' Help: Explain meaning and limitations of CMAKE_CROSSCOMPILING Help: Fix heading level for CMAKE_AUTOMOC_MACRO_NAMES Help: CMAKE__COMPILER_EXTERNAL_TOOLCHAIN typo removal Merge topic 'reword-cmake-E-time-help' Merge topic 'docs_cmake_lang_compiler_external_toolchain' Cristian Adam (1): Check*: Added include guards Curl Upstream (1): curl 2018-01-23 (d6c21c8e) Daniele E. Domenichelli (2): WriteBasicConfigVersionFile: Add SameMinorVersion COMPATIBILITY option WriteBasicConfigVersionFile: Fix messages in ExactVersion tests David Adam (4): CheckIncludeFiles: extend to allow a LANGUAGE argument CheckIncludeFiles: add unit tests CheckIncludeFiles: clean up documentation of new features CheckIncludeFiles: improve warning for missing argument David Hirvonen (1): FindCUDA: de-duplicates C++11 flag when propagating host flags. Deniz Bahadir (9): Defer check for sources within a target until generation. cmTargetPropCommandBase: Fix typo in error message Teach target_* commands to set INTERFACE properties of IMPORTED targets Add support for IMPORTED GLOBAL targets to be aliased cmTarget: Simplified and fixed a string-comparision. Add new target-property `IMPORTED_GLOBAL`. target_link_libraries: Return earlier on some error. target_link_libraries: Slightly fix some error-messages. target_link_libraries: Simplify implementation and add comments. Domen Vrankar (11): CPack/Deb: handle shlibs file generation when SOVERSION set to 0 CMake: enable setting default dir creation permissions Move file/dir permissions code to common file. CPack test: expand output checking fallback CPack: enable setting default dir creation permissions CPack: documentation typo fix CPack: set variable commands in lower case CPack test: correctly handle CPACK_PACKAGING_INSTALL_PREFIX CPack tests: add possibility for expecting config developer warnings CPack/RPM: check executable flags for debuginfo packages CPack: enable all CMake policies for generator scripts Don Hinton (1): CheckIncludeFiles: Honor CMAKE_REQUIRED_LIBRARIES Felix Schwitzer (1): swig: fix incremental build in case of removed interface files Francisco Facioni (1): Ninja: Fixes CUDA device link in Windows Francois Budin (2): FindICU: Search in 'sbin' directories for icu tools FindICU: Add support for static libraries on Windows Frank Winklmeier (2): cmLocalGenerator: remove public GetImportedGeneratorTargets cmLocalGenerator: change ImportedGeneratorTargets from vector to map GitSetup Upstream (1): GitSetup 2017-10-26 (1639317d) Gregor Jasny (7): cmake: Add --open option for IDE generators cmake-gui: Use cmake::Open to open generated project Xcode: Do not create ZERO_CHECK source group Xcode: Add option to generate only topmost project file Xcode: rename embedded SDK query function Darwin: Emit deployment target that matches the SDK cmGlobalXCodeGenerator: Properly initialize TARGETS variable Harry Mallon (2): FindOpenCL: Add support for AMD OpenCL SDK Light Cpack.cmake: Document some CPACK_* default values Henry Schreiner (1): FindCUDA: Improve documentation formatting markup Isaiah Norton (1): CPack: accept --trace and --trace-expand Isuru Fernando (3): Flang: Add partial support on Windows Flang: Identify as simulating MSVC on Windows Flang: Add support for compiling sources on Windows J M Dieterich (1): Find{BLAS,LAPACK}: Add support for FLAME blis and libflame Jacek Blaszczynski (3): Add Arm64 support to COFF symbol export feature Use IMAGE_FILE_HEADER and add missing Arm 32bit images support Address code review feedback Jamil Appa (1): FindCUDA: Add cublas device library to separable compilation Jean-Christophe Fillion-Robin (1): FetchContent: Support use of the module before "project()" command Jean-Philippe Lebel (1): CPack/IFW: Add option to control deletion of the install directory Jeremiah van Oosten (1): VS: Add source file property to set hlsl debug and optimization flags Justin Berger (12): Tests: reworked server tests to allow other operation modes server: Updated server tests to try various communication channels utility: Added minimal std::thread drop-in server: Swapped to cm_thread impl misc: Added utility method to allow working with stacks test: Updated server test harness to try to cause fragmentation utility: Disabled copy ctors in thread classes tests: unconditionally enabled server tests Add RAII handles for libuv handle types tests: Added tests to verify UV RAII semantics/constructs server: Switched to a auto model for handles utilities: Swapped to use std C++11 mutex/threading constructs Justin Goshi (12): cmake-server: Add target install destinations to codemodel VS generator: support /diagnostics compiler flag Windows: Embed version information into CMake binaries server: add "ctestInfo" request to get test info server: return minimum cmake required version for each project server: project has install rule bug fix server: ctestInfo fix to return all tests server: return whether or not a target is generator provided Windows: Fix version embedding in CMake binaries CMakeVersion RC file: Split patch into 2 components server: Expand generator expressions for test info server: fix crash if no min version specified KWIML Upstream (1): KWIML 2018-01-09 (9c2d6cae) KWSys Upstream (15): KWSys 2017-10-10 (239bc737) KWSys 2017-10-12 (ef0ad34d) KWSys 2017-11-01 (6ffca34c) KWSys 2017-11-02 (54f0901a) KWSys 2017-11-07 (5249a82d) KWSys 2017-11-09 (40d7b1bb) KWSys 2017-11-30 (fa1ab7b8) KWSys 2017-12-01 (0f0023b1) KWSys 2017-12-05 (9376537e) KWSys 2017-12-07 (4aee0036) KWSys 2017-12-08 (2d27b1d0) KWSys 2017-12-12 (3ba214b7) KWSys 2017-12-15 (8f755ee9) KWSys 2018-01-23 (0579db1c) KWSys 2018-02-01 (04fcc449) Kai Wolf (1): Help: Fix code example in cmake_parse_arguments.rst Kitware Robot (123): CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp Kyle Edwards (9): Help: note that CMAKE_SYSTEM_NAME is not set in script mode Help: fix documentation for OUTPUT_NAME Help: improve install() documentation of argument ordering cmCacheManager: Truncate values containing newlines cmCacheManager: Test and document newline truncation behavior GenerateExportHeader: add INCLUDE_GUARD_NAME option GenerateExportHeader: add release notes, tests for include guard changes cmCTestScriptHandler: Add new field ShouldRunCurrentScript Help: add release notes, documentation for CTEST_RUN_CURRENT_SCRIPT behavior Luz Paz (1): Various typo fixes Manuel N??ez (3): Call GetRealPath through cmSystemTools instead of KWSys directly cmSystemTools: Implement GetRealPath on Windows cmTimestamp: For symlinks switch to timestamp of resolved path Marc Chevrier (14): UseJava: OUTPUT_DIR must exists in all cases. UseJava: add_jar OUTPUT_DIR option used only for jar generation. Refactor per-source generator expression evaluation Add generator expression support to per-source COMPILE_DEFINITIONS FindPerlLibs: fix MacOS failure FindPerlLibs: refactoring FindPerlLibs: Add support for MSYS and CYGWIN Genex: Per-source $ support add_jar: add option GENERATE_NATIVE_HEADERS LocalGenerator: refactoring sourceFile properties: add property COMPILE_OPTIONS VisualStudio generators: refactoring sourceFile properties: add property INCLUDE_DIRECTORIES UseSWIG: Restore support for like-named .i files in different modules Mark Salisbury (2): FindFreetype: Normalize slashes when legacy FREETYPE_LIBRARY is specified FindBZip2: Normalize slashes when legacy BZIP2_LIBRARIES is specified Mateusz Janek (1): source_group: Fix TREE argument parsing Matt McCormick (1): Ninja: add CMAKE_JOB_POOLS variable as default for JOBS_POOLS Matthias Maennich (5): cmLinkedTree: avoid unnecessary copies during Push of T cm{Unset,Set}Command: use std::string to determine the env variable name Replace cmArray{Begin,End,Size} by their standard counterparts cm_codecvt: cleanup superfluous semicolons cmForEachCommand: prevent leakage Melven Roehrig-Zoellner (1): CodeBlocks: add option for the CB compiler ID Michael St?rmer (1): VS: Enable generation of CSharp projects without initial .cs files Nico M?ller (1): Compiler/TI: Add support for depfile generation for Ninja Noel Eck (1): UseSWIG: Clarify documentation of SWIG_OUTFILE_DIR Patrick Boettcher (1): update vim-syntax to latest cmake-commit Paul "TBBle" Hampson (6): FindBoost: Boost 1.66.0 dependency and release update FindBoost: Fix incorrect alphabetisation of headers list FindBoost: Implement "Architecture and Address Model" tag FindBoost: Search for upstream-packaged libs next to includes FindBoost: Generate imported targets for future Boost versions Linkify target_link_libraries in DEBUG_CONFIGURATIONS Pavel P (1): Windows: Add support for running CMake tools through a symlink Pavel Solodovnikov (3): objlib: fix unchecked insertions in `cmGeneratorTarget::GetLanguages` Reduce allocation of temporary values on heap. Reduce raw string pointers usage. Robert Dailey (1): VS: Use newline for empty DebugInformationFormat tags Robert Maynard (11): Help: enable_language now documents the CheckLanguage module Cuda: ResolveDeviceSymbols now properly execute everywhere. cmMakefile: Refactor determining a targets C++ standard level CUDA: Fix CUDA_STANDARD selection via cxx_std_11 with CXX_STANDARD GENERATED: Improve the documentation of the GENERATED file property CUDA: Add cu as default source file extension CUDA: gencode signature that list multiple code types now supported. CUDA: Allow -G to control device debuging on MSVC. CUDA: MSVC will now state files are cuda files when needed Help: Better explain that foreach(RANGE ) is inclusive. CUDA: Use MSVC default pattern for naming object files Roger Leigh (2): FindBoost: Use CMAKE_CXX_COMPILER_ID for Intel compiler FindBoost: Add Windows ABI tag for Clang debug Rolf Eike Beer (6): TryRun: do not call strcpy() cmCommandArgumentParserHelper: constify some char* values cmCommandArgumentParser: remove the variable tokens from the class FindBLAS: use FPHSA FindBLAS: simplify if() FindBLAS: optionally query pkg-config for a library Roman W?ger (1): FindImageMagick: Add 7.0 library names Sebastian Holtermann (47): Autogen: Don't add AUTOMOC_MOC_OPTIONS to moc-predefs command Autogen: Introduce standalone RCC generator class Autogen: Switch to use custom commands for RCC Autogen: Remove rcc code from cmQtAutoGenerators Autogen: Rename cmQtAutoGenerators to cmQtAutoGeneratorMocUic Autogen: Add and use cmQtAutoGenerator base class Autogen: Make cmQtAutoGeneratorInitializer an instantiable class Autogen: Detect rcc feature once during configuration Autogen: Use project relative paths in rcc custom command comment Autogen: Use integers instead of strings for the Qt version Autogen: Fix library dependency forwarding to _autogen target Autogen: Tests: Add basic scripts for separate tests Autogen: Tests: Separate mocOnly and mocOnlyOpts tests Autogen: Tests: Separate uicOnly test Autogen: Tests: Separate RccOnly and RccEmpty tests Autogen: Tests: Separate RccOffMocLibrary test Autogen: Tests: Separate MocSkipSource test Autogen: Tests: Separate UicSkipSource test Autogen: Tests: Separate RccSkipSource test Autogen: Tests: Separate MocMacroName test Autogen: Tests: Separate MocDepends test Autogen: Tests: Separate MocInclude test Autogen: Tests: Separate MocCMP0071 test Autogen: Tests: Separate UicInclude test Autogen: Tests: Separate ObjectLibrary test Autogen: Tests: Separate MacOsFW test Autogen: Tests: Separate SameName test Autogen: Tests: Separate StaticLibraryCycle test Autogen: Tests: Separate Complex test Autogen: Tests: Separate RerunMocBasic test Autogen: Tests: Separate RerunMocPlugin test Autogen: Tests: Separate RerunRccDepends test Autogen: Tests: Move QtAutoUicInterface test to QtAutogen/UicInterface Autogen: Fix for problematic nested lists separator Autogen: Ignore not existing source files in cmMakefile Autogen: Tests: Fix MocInclude test(s) Autogen: Process files concurrently in AUTOMOC and AUTOUIC Autogen: Tests: Add AUTOGEN_PARALLEL tests Autogen: Add documentation for (CMAKE_)AUTOGEN_PARALLEL Autogen: Add release notes for (CMAKE_)AUTOGEN_PARALLEL Autogen: Rename cmQtAutogeneratorInitializer to cmQtAutoGenInitializer Autogen: AUTOMOC/UIC fix for moc/uic include on the first line Autogen: Tests: Extend AUTOMOC include patterns test Autogen: Tests: Extend AUTOUIC include patterns test Autogen: Improved multi-config include scheme Autogen: Documentation: Update for AUTORCC changes Autogen: Overwrite info files when changed only Sergiu Deitsch (1): FindBoost: support OPTIONAL_COMPONENTS Shane Parris (4): file(DOWNLOAD|UPLOAD): Add 'NETRC' and 'NETRC_FILE' suboption Add testcases for file(DOWNLOAD|UPLOAD) netrc options ExternalProject: Add support for NETRC and NETRC_FILE suboption Add dev notes for topic 'curl_netrc_options' Stefan Br?ns (1): FindJava: ignore javah for JDK 10, it has been removed Stefano Sinigardi (3): FindFLTK: fix indentation FindFLTK: revise .rst markup FindFLTK: Find debug and release variants separately Stephen Sorley (2): cpack wix: fix path error on cygwin cpack wix: support WiX generator on Cygwin Sylvain Joubert (1): TestDriver: fix style-'variableScope' cppcheck warning Takenori Yamamoto (1): FindOpenCL: Add support for CUDA OpenCL on Linux Taylor Braun-Jones (1): Help: Reword misleading docs for cmake -E time Thomas Thielemann (1): FindDoxygen: On macOS search in '/Applications/Utilities' too Tobias Hunger (2): Server-mode: Rename functions to reflect what they do Server-mode: Document protocol version for optional handshake arguments Tobias R. Henle (1): CodeLite: Better support for Fortran and Windows Tobias Svehagen (1): CPackDeb: Fix typo in documentation Tomoki Imai (2): cmGlobalGenerator: Add IsIncludeExternalMSProjectSupported method include_external_msproject: Support non-Windows target platforms Vitaly Stakhovsky (10): cmIDEOptions: use std::string instead of const char* VS: Emit "utf-8" encoding as lowercase in .vcxproj headers VS: Use 'override' keyword for overridden methods in generator classes VS: Use range-based 'for' loops in generator code VS: Modernize 'for' loops in cmVisualStudio10TargetGenerator to C++11 cmSourceGroup: code improvements; use std::string and C++11 loops cmVisualStudio10TargetGenerator: remove redundant space char in some tags cmMakefile: use std::string in more methods; cleanup c_str()s VS: Restore the order of the AdditionalIncludeDirectories tag cmVisualStudio10TargetGenerator: Limit scope of ConvertToWindowsSlash() Werner Palfinger (1): FindPythonInterp: support single-user installs on Windows Wouter Klouwen (7): CTest: correct misleading warning message for RUN_SERIAL tests CTest: use std::chrono::steady_clock for time keeping CTest: adopt std::chrono::system_clock CTest: convert timeouts to std::chrono::duration CTest: introduce cmDuration CTest: add safe conversion from cmDuration to integer types Make use of std::chrono throughout every component Yoshinori Tahara (1): VS: Fix warnings in generated references to '.settings' files Yurii Batrak (2): Makefiles: Avoid nested make calls for Fortran module dependencies Makefiles: Drop 'requires' step and its supporting infrastructure Zack Galbreath (1): CTest: fix Time formatting in Notes.xml libuv upstream (1): libuv 2018-01-19 (63de1eca) lorenz (1): FindTCL: Find 8.6 libraries with 't' suffix luz.paz (1): MAINT: Misc. typos luzpaz (1): Fix trivial typos in text silvioprog (2): Help: Fix typo in CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE docs Help: Fix typo in CMAKE_INCLUDE_CURRENT_DIR docs vim-cmake-syntax upstream (1): vim-cmake-syntax 2017-10-31 (a8a846f0) ----------------------------------------------------------------------- hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 16 00:05:07 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 16 Feb 2018 00:05:07 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-32-g269722a Message-ID: <20180216050508.07B8F107547@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 269722ae5b458c6e925c35fdebf5c8f35b3a182c (commit) from a2ec98b7d97df67d50e90e790b2bd235f7c278cc (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=269722ae5b458c6e925c35fdebf5c8f35b3a182c commit 269722ae5b458c6e925c35fdebf5c8f35b3a182c Author: Kitware Robot AuthorDate: Fri Feb 16 00:01:12 2018 -0500 Commit: Kitware Robot CommitDate: Fri Feb 16 00:01:12 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 6d0108d..27281fe 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180215) +set(CMake_VERSION_PATCH 20180216) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 16 09:25:06 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 16 Feb 2018 09:25:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-34-gd97c9ff Message-ID: <20180216142506.D63EE107477@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via d97c9ffb6c7189d5e617c1d69e8fe168e7813293 (commit) via 5089f560e706733084d8c9bae34778a31dfe3110 (commit) from 269722ae5b458c6e925c35fdebf5c8f35b3a182c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d97c9ffb6c7189d5e617c1d69e8fe168e7813293 commit d97c9ffb6c7189d5e617c1d69e8fe168e7813293 Merge: 269722a 5089f56 Author: Brad King AuthorDate: Fri Feb 16 14:22:38 2018 +0000 Commit: Kitware Robot CommitDate: Fri Feb 16 09:22:56 2018 -0500 Merge topic 'genex-IN_LIST-operator' 5089f560 Genex: Add IN_LIST logical operator Acked-by: Kitware Robot Merge-request: !1724 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5089f560e706733084d8c9bae34778a31dfe3110 commit 5089f560e706733084d8c9bae34778a31dfe3110 Author: Marc Chevrier AuthorDate: Mon Jan 29 11:44:54 2018 +0100 Commit: Marc Chevrier CommitDate: Wed Feb 7 10:57:18 2018 +0100 Genex: Add IN_LIST logical operator Implements #17679 diff --git a/Help/manual/cmake-generator-expressions.7.rst b/Help/manual/cmake-generator-expressions.7.rst index 0f6d4cf..149ec4b 100644 --- a/Help/manual/cmake-generator-expressions.7.rst +++ b/Help/manual/cmake-generator-expressions.7.rst @@ -57,6 +57,8 @@ Available logical expressions are: ``1`` if ``a`` is STREQUAL ``b``, else ``0`` ``$`` ``1`` if ``a`` is EQUAL ``b`` in a numeric comparison, else ``0`` +``$`` + ``1`` if ``a`` is IN_LIST ``b``, else ``0`` ``$`` ``1`` if config is ``cfg``, else ``0``. This is a case-insensitive comparison. The mapping in :prop_tgt:`MAP_IMPORTED_CONFIG_` is also considered by diff --git a/Help/release/dev/genex-IN_LIST-logical-operator.rst b/Help/release/dev/genex-IN_LIST-logical-operator.rst new file mode 100644 index 0000000..28fa7ce --- /dev/null +++ b/Help/release/dev/genex-IN_LIST-logical-operator.rst @@ -0,0 +1,5 @@ +genex-IN_LIST-logical-operator +------------------------------ + +* A new ``$`` :manual:`generator expression ` + has been added. diff --git a/Source/cmGeneratorExpressionNode.cxx b/Source/cmGeneratorExpressionNode.cxx index c1f1ee4..0d22028 100644 --- a/Source/cmGeneratorExpressionNode.cxx +++ b/Source/cmGeneratorExpressionNode.cxx @@ -275,6 +275,31 @@ static const struct EqualNode : public cmGeneratorExpressionNode } } equalNode; +static const struct InListNode : public cmGeneratorExpressionNode +{ + InListNode() {} + + int NumExpectedParameters() const override { return 2; } + + std::string Evaluate( + const std::vector& parameters, + cmGeneratorExpressionContext* /*context*/, + const GeneratorExpressionContent* /*content*/, + cmGeneratorExpressionDAGChecker* /*dagChecker*/) const override + { + std::vector values; + cmSystemTools::ExpandListArgument(parameters[1], values); + if (values.empty()) { + return "0"; + } + + return std::find(values.cbegin(), values.cend(), parameters.front()) == + values.cend() + ? "0" + : "1"; + } +} inListNode; + static const struct LowerCaseNode : public cmGeneratorExpressionNode { LowerCaseNode() {} @@ -1827,6 +1852,7 @@ const cmGeneratorExpressionNode* cmGeneratorExpressionNode::GetNode( nodeMap["TARGET_BUNDLE_CONTENT_DIR"] = &targetBundleContentDirNode; nodeMap["STREQUAL"] = &strEqualNode; nodeMap["EQUAL"] = &equalNode; + nodeMap["IN_LIST"] = &inListNode; nodeMap["LOWER_CASE"] = &lowerCaseNode; nodeMap["UPPER_CASE"] = &upperCaseNode; nodeMap["MAKE_C_IDENTIFIER"] = &makeCIdentifierNode; diff --git a/Tests/GeneratorExpression/CMakeLists.txt b/Tests/GeneratorExpression/CMakeLists.txt index 19d12e5..3d08704 100644 --- a/Tests/GeneratorExpression/CMakeLists.txt +++ b/Tests/GeneratorExpression/CMakeLists.txt @@ -57,6 +57,11 @@ add_custom_target(check-part1 ALL -Dtest_strequal_angle_r_comma=$,$> -Dtest_strequal_both_empty=$ -Dtest_strequal_one_empty=$ + -Dtest_inlist_true=$b> + -Dtest_inlist_false=$b> + -Dtest_inlist_empty_1=$ + -Dtest_inlist_empty_2=$ + -Dtest_inlist_empty_3=$ -Dtest_angle_r=$ -Dtest_comma=$ -Dtest_semicolon=$ diff --git a/Tests/GeneratorExpression/check-part1.cmake b/Tests/GeneratorExpression/check-part1.cmake index 60b193f..41bcd6d 100644 --- a/Tests/GeneratorExpression/check-part1.cmake +++ b/Tests/GeneratorExpression/check-part1.cmake @@ -49,6 +49,11 @@ check(test_strequal_semicolon "1") check(test_strequal_angle_r_comma "0") check(test_strequal_both_empty "1") check(test_strequal_one_empty "0") +check(test_inlist_true "1") +check(test_inlist_false "0") +check(test_inlist_empty_1 "0") +check(test_inlist_empty_2 "0") +check(test_inlist_empty_3 "0") check(test_angle_r ">") check(test_comma ",") check(test_semicolon ";") ----------------------------------------------------------------------- Summary of changes: Help/manual/cmake-generator-expressions.7.rst | 2 ++ .../release/dev/genex-IN_LIST-logical-operator.rst | 5 ++++ Source/cmGeneratorExpressionNode.cxx | 26 ++++++++++++++++++++ Tests/GeneratorExpression/CMakeLists.txt | 5 ++++ Tests/GeneratorExpression/check-part1.cmake | 5 ++++ 5 files changed, 43 insertions(+) create mode 100644 Help/release/dev/genex-IN_LIST-logical-operator.rst hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 16 09:45:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 16 Feb 2018 09:45:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-37-g524696e Message-ID: <20180216144504.0539A103590@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 524696ec1007408d5344ce08c1408a56be86b6eb (commit) via e78e24f68cba269117ad5a321e1ec8503a5f1d29 (commit) via 602988e1e568048dd30e9e2213bc788f7c7ff708 (commit) from d97c9ffb6c7189d5e617c1d69e8fe168e7813293 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=524696ec1007408d5344ce08c1408a56be86b6eb commit 524696ec1007408d5344ce08c1408a56be86b6eb Merge: d97c9ff e78e24f Author: Brad King AuthorDate: Fri Feb 16 14:39:10 2018 +0000 Commit: Kitware Robot CommitDate: Fri Feb 16 09:39:47 2018 -0500 Merge topic 'file_cmd_touch' e78e24f6 Replaces execute_process calls to touch files with file(TOUCH) calls 602988e1 Adds file(TOUCH) and file(TOUCH_NOCREATE) sub-commands Acked-by: Kitware Robot Merge-request: !1705 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e78e24f68cba269117ad5a321e1ec8503a5f1d29 commit e78e24f68cba269117ad5a321e1ec8503a5f1d29 Author: Shane Parris AuthorDate: Fri Jan 26 13:42:44 2018 -0500 Commit: Shane Parris CommitDate: Thu Feb 15 10:54:38 2018 -0500 Replaces execute_process calls to touch files with file(TOUCH) calls diff --git a/Modules/ExternalData.cmake b/Modules/ExternalData.cmake index 7331fb2..e5dbcd9 100644 --- a/Modules/ExternalData.cmake +++ b/Modules/ExternalData.cmake @@ -1133,7 +1133,7 @@ if("${ExternalData_ACTION}" STREQUAL "fetch") if(file_up_to_date) # Touch the file to convince the build system it is up to date. - execute_process(COMMAND "${CMAKE_COMMAND}" -E touch "${file}") + file(TOUCH "${file}") else() _ExternalData_link_or_copy("${obj}" "${file}") endif() diff --git a/Tests/QtAutogen/RerunRccDepends/CMakeLists.txt b/Tests/QtAutogen/RerunRccDepends/CMakeLists.txt index 2e6a5bd..f9c52b7 100644 --- a/Tests/QtAutogen/RerunRccDepends/CMakeLists.txt +++ b/Tests/QtAutogen/RerunRccDepends/CMakeLists.txt @@ -45,8 +45,7 @@ file(TIMESTAMP "${rccDepBinGen}" rdGenBefore "${timeformat}") # - Change a resource files listed in the .qrc file # - Rebuild execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) -execute_process(COMMAND "${CMAKE_COMMAND}" -E touch "${rccDepBD}/resPlain/input.txt") -execute_process(COMMAND "${CMAKE_COMMAND}" -E touch "${rccDepBD}/resGen/input.txt") +file(TOUCH "${rccDepBD}/resPlain/input.txt" "${rccDepBD}/resGen/input.txt") execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${rccDepBD}" RESULT_VARIABLE result) if (result) message(SEND_ERROR "Second build of rccDepends failed.") @@ -97,8 +96,7 @@ file(TIMESTAMP "${rccDepBinGen}" rdGenBefore "${timeformat}") # - Change a newly added resource files listed in the .qrc file # - Rebuild execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) -execute_process(COMMAND "${CMAKE_COMMAND}" -E touch "${rccDepBD}/resPlain/inputAdded.txt") -execute_process(COMMAND "${CMAKE_COMMAND}" -E touch "${rccDepBD}/resGen/inputAdded.txt") +file(TOUCH "${rccDepBD}/resPlain/inputAdded.txt" "${rccDepBD}/resGen/inputAdded.txt") execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${rccDepBD}" RESULT_VARIABLE result) if (result) message(SEND_ERROR "Fourth build of rccDepends failed.") diff --git a/Tests/RunCMake/VS10Project/VsCSharpCustomTags.cmake b/Tests/RunCMake/VS10Project/VsCSharpCustomTags.cmake index 45766a0..96be54b 100644 --- a/Tests/RunCMake/VS10Project/VsCSharpCustomTags.cmake +++ b/Tests/RunCMake/VS10Project/VsCSharpCustomTags.cmake @@ -16,8 +16,7 @@ set(fileNames) foreach(e ${fileExtensions}) set(currentFile "${CMAKE_CURRENT_BINARY_DIR}/foo.${e}") list(APPEND fileNames ${currentFile}) - execute_process(COMMAND ${CMAKE_COMMAND} -E touch - "${currentFile}") + file(TOUCH "${currentFile}") string(TOUPPER ${e} eUC) set_source_files_properties("${currentFile}" PROPERTIES https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=602988e1e568048dd30e9e2213bc788f7c7ff708 commit 602988e1e568048dd30e9e2213bc788f7c7ff708 Author: Shane Parris AuthorDate: Fri Jan 26 13:42:35 2018 -0500 Commit: Shane Parris CommitDate: Thu Feb 15 10:54:18 2018 -0500 Adds file(TOUCH) and file(TOUCH_NOCREATE) sub-commands diff --git a/Help/command/file.rst b/Help/command/file.rst index 5ce86e5..5e18077 100644 --- a/Help/command/file.rst +++ b/Help/command/file.rst @@ -285,6 +285,23 @@ If neither ``TLS`` option is given CMake will check variables :: + file(TOUCH [...]) + file(TOUCH_NOCREATE [...]) + +Create a file with no content if it does not yet exist. If the file already +exists, its access and/or modification will be updated to the time when the +function call is executed. + +Use TOUCH_NOCREATE to touch a file if it exists but not create it. If a file +does not exist it will be silently ignored. + +With TOUCH and TOUCH_NOCREATE the contents of an existing file will not be +modified. + +------------------------------------------------------------------------------ + +:: + file(TIMESTAMP [] [UTC]) Compute a string representation of the modification time of ```` diff --git a/Help/release/dev/file_cmd_touch.rst b/Help/release/dev/file_cmd_touch.rst new file mode 100644 index 0000000..b1b1e3c --- /dev/null +++ b/Help/release/dev/file_cmd_touch.rst @@ -0,0 +1,6 @@ +file_cmd_touch +------------------ + +* The :command:`file(TOUCH)` and :command:`file(TOUCH_NOCREATE)` commands + were added to expose TOUCH functionality without having to use CMake's + command-line tool mode with :command:`execute_process`. diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index d3dcc01..8492c17 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -160,6 +160,12 @@ bool cmFileCommand::InitialPass(std::vector const& args, if (subCommand == "TO_NATIVE_PATH") { return this->HandleCMakePathCommand(args, true); } + if (subCommand == "TOUCH") { + return this->HandleTouchCommand(args, true); + } + if (subCommand == "TOUCH_NOCREATE") { + return this->HandleTouchCommand(args, false); + } if (subCommand == "TIMESTAMP") { return this->HandleTimestampCommand(args); } @@ -905,6 +911,38 @@ bool cmFileCommand::HandleMakeDirectoryCommand( return true; } +bool cmFileCommand::HandleTouchCommand(std::vector const& args, + bool create) +{ + // File command has at least one argument + assert(args.size() > 1); + + std::vector::const_iterator i = args.begin(); + + i++; // Get rid of subcommand + + for (; i != args.end(); ++i) { + std::string tfile = *i; + if (!cmsys::SystemTools::FileIsFullPath(tfile)) { + tfile = this->Makefile->GetCurrentSourceDirectory(); + tfile += "/" + *i; + } + if (!this->Makefile->CanIWriteThisFile(tfile)) { + std::string e = + "attempted to touch a file: " + tfile + " in a source directory."; + this->SetError(e); + cmSystemTools::SetFatalErrorOccured(); + return false; + } + if (!cmSystemTools::Touch(tfile, create)) { + std::string error = "problem touching file: " + tfile; + this->SetError(error); + return false; + } + } + return true; +} + bool cmFileCommand::HandleDifferentCommand( std::vector const& args) { diff --git a/Source/cmFileCommand.h b/Source/cmFileCommand.h index 17269f3..719dca2 100644 --- a/Source/cmFileCommand.h +++ b/Source/cmFileCommand.h @@ -39,6 +39,7 @@ protected: bool HandleHashCommand(std::vector const& args); bool HandleStringsCommand(std::vector const& args); bool HandleGlobCommand(std::vector const& args, bool recurse); + bool HandleTouchCommand(std::vector const& args, bool create); bool HandleMakeDirectoryCommand(std::vector const& args); bool HandleRelativePathCommand(std::vector const& args); diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index 0988c3c..e7d92d4 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -689,8 +689,6 @@ int cmcmd::ExecuteCMakeCommand(std::vector& args) // Touch file if (args[1] == "touch_nocreate" && args.size() > 2) { for (std::string::size_type cc = 2; cc < args.size(); cc++) { - // Complain if the file could not be removed, still exists, - // and the -f option was not given. if (!cmSystemTools::Touch(args[cc], false)) { return 1; } diff --git a/Tests/RunCMake/file/RunCMakeTest.cmake b/Tests/RunCMake/file/RunCMakeTest.cmake index 3be4fb7..9a72333 100644 --- a/Tests/RunCMake/file/RunCMakeTest.cmake +++ b/Tests/RunCMake/file/RunCMakeTest.cmake @@ -5,6 +5,9 @@ run_cmake(DOWNLOAD-unused-argument) run_cmake(DOWNLOAD-httpheader-not-set) run_cmake(DOWNLOAD-netrc-bad) run_cmake(DOWNLOAD-pass-not-set) +run_cmake(TOUCH) +run_cmake(TOUCH-error-in-source-directory) +run_cmake(TOUCH-error-missing-directory) run_cmake(UPLOAD-unused-argument) run_cmake(UPLOAD-httpheader-not-set) run_cmake(UPLOAD-netrc-bad) diff --git a/Tests/RunCMake/file/TOUCH-error-in-source-directory-result.txt b/Tests/RunCMake/file/TOUCH-error-in-source-directory-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/file/TOUCH-error-in-source-directory-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/file/TOUCH-error-in-source-directory-stderr.txt b/Tests/RunCMake/file/TOUCH-error-in-source-directory-stderr.txt new file mode 100644 index 0000000..f899c75 --- /dev/null +++ b/Tests/RunCMake/file/TOUCH-error-in-source-directory-stderr.txt @@ -0,0 +1 @@ +.*file attempted to touch a file: diff --git a/Tests/RunCMake/file/TOUCH-error-in-source-directory.cmake b/Tests/RunCMake/file/TOUCH-error-in-source-directory.cmake new file mode 100644 index 0000000..9aa7c56 --- /dev/null +++ b/Tests/RunCMake/file/TOUCH-error-in-source-directory.cmake @@ -0,0 +1,2 @@ +set(CMAKE_DISABLE_SOURCE_CHANGES ON) +file(TOUCH "${CMAKE_CURRENT_SOURCE_DIR}/touch_test") diff --git a/Tests/RunCMake/file/TOUCH-error-missing-directory-result.txt b/Tests/RunCMake/file/TOUCH-error-missing-directory-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/file/TOUCH-error-missing-directory-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/file/TOUCH-error-missing-directory-stderr.txt b/Tests/RunCMake/file/TOUCH-error-missing-directory-stderr.txt new file mode 100644 index 0000000..f52e11a --- /dev/null +++ b/Tests/RunCMake/file/TOUCH-error-missing-directory-stderr.txt @@ -0,0 +1 @@ +.*file problem touching file: diff --git a/Tests/RunCMake/file/TOUCH-error-missing-directory.cmake b/Tests/RunCMake/file/TOUCH-error-missing-directory.cmake new file mode 100644 index 0000000..0cfb8d9 --- /dev/null +++ b/Tests/RunCMake/file/TOUCH-error-missing-directory.cmake @@ -0,0 +1 @@ +file(TOUCH "${CMAKE_CURRENT_BINARY_DIR}/missing/directory/file.to-touch") diff --git a/Tests/RunCMake/file/TOUCH-result.txt b/Tests/RunCMake/file/TOUCH-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/file/TOUCH-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/file/TOUCH-stderr.txt b/Tests/RunCMake/file/TOUCH-stderr.txt new file mode 100644 index 0000000..9f31676 --- /dev/null +++ b/Tests/RunCMake/file/TOUCH-stderr.txt @@ -0,0 +1,9 @@ +^CMake Error at TOUCH\.cmake:[0-9]+ \(file\): + file must be called with at least two arguments\. +Call Stack \(most recent call first\): + CMakeLists\.txt:[0-9]+ \(include\) ++ +CMake Error at TOUCH\.cmake:[0-9]+ \(file\): + file must be called with at least two arguments\. +Call Stack \(most recent call first\): + CMakeLists\.txt:[0-9]+ \(include\) diff --git a/Tests/RunCMake/file/TOUCH.cmake b/Tests/RunCMake/file/TOUCH.cmake new file mode 100644 index 0000000..8931eb5 --- /dev/null +++ b/Tests/RunCMake/file/TOUCH.cmake @@ -0,0 +1,16 @@ +set(file "${CMAKE_CURRENT_BINARY_DIR}/file-to-touch") + +file(REMOVE "${file}") +file(TOUCH_NOCREATE "${file}") +if(EXISTS "${file}") + message(FATAL_ERROR "error: TOUCH_NOCREATE created a file!") +endif() + +file(TOUCH "${file}") +if(NOT EXISTS "${file}") + message(FATAL_ERROR "error: TOUCH did not create a file!") +endif() +file(REMOVE "${file}") + +file(TOUCH) +file(TOUCH_NOCREATE) ----------------------------------------------------------------------- Summary of changes: Help/command/file.rst | 17 +++++++++ Help/release/dev/file_cmd_touch.rst | 6 ++++ Modules/ExternalData.cmake | 2 +- Source/cmFileCommand.cxx | 38 ++++++++++++++++++++ Source/cmFileCommand.h | 1 + Source/cmcmd.cxx | 2 -- Tests/QtAutogen/RerunRccDepends/CMakeLists.txt | 6 ++-- .../RunCMake/VS10Project/VsCSharpCustomTags.cmake | 3 +- Tests/RunCMake/file/RunCMakeTest.cmake | 3 ++ .../TOUCH-error-in-source-directory-result.txt} | 0 .../TOUCH-error-in-source-directory-stderr.txt | 1 + .../file/TOUCH-error-in-source-directory.cmake | 2 ++ .../TOUCH-error-missing-directory-result.txt} | 0 .../file/TOUCH-error-missing-directory-stderr.txt | 1 + .../file/TOUCH-error-missing-directory.cmake | 1 + .../TOUCH-result.txt} | 0 Tests/RunCMake/file/TOUCH-stderr.txt | 9 +++++ Tests/RunCMake/file/TOUCH.cmake | 16 +++++++++ 18 files changed, 99 insertions(+), 9 deletions(-) create mode 100644 Help/release/dev/file_cmd_touch.rst copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => file/TOUCH-error-in-source-directory-result.txt} (100%) create mode 100644 Tests/RunCMake/file/TOUCH-error-in-source-directory-stderr.txt create mode 100644 Tests/RunCMake/file/TOUCH-error-in-source-directory.cmake copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => file/TOUCH-error-missing-directory-result.txt} (100%) create mode 100644 Tests/RunCMake/file/TOUCH-error-missing-directory-stderr.txt create mode 100644 Tests/RunCMake/file/TOUCH-error-missing-directory.cmake copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => file/TOUCH-result.txt} (100%) create mode 100644 Tests/RunCMake/file/TOUCH-stderr.txt create mode 100644 Tests/RunCMake/file/TOUCH.cmake hooks/post-receive -- CMake From kwrobot at kitware.com Sat Feb 17 00:05:06 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Sat, 17 Feb 2018 00:05:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-38-g3b6fe84 Message-ID: <20180217050506.1ADD9107E49@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 3b6fe84cb764b27d70500ba416a58b9a8d641929 (commit) from 524696ec1007408d5344ce08c1408a56be86b6eb (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3b6fe84cb764b27d70500ba416a58b9a8d641929 commit 3b6fe84cb764b27d70500ba416a58b9a8d641929 Author: Kitware Robot AuthorDate: Sat Feb 17 00:01:14 2018 -0500 Commit: Kitware Robot CommitDate: Sat Feb 17 00:01:14 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 27281fe..29a2a21 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180216) +set(CMake_VERSION_PATCH 20180217) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Sun Feb 18 00:05:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Sun, 18 Feb 2018 00:05:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-39-g33ace6e Message-ID: <20180218050504.7792E1078B5@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 33ace6eb91d5c7bcd76f6b5ed2611b679a70260f (commit) from 3b6fe84cb764b27d70500ba416a58b9a8d641929 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=33ace6eb91d5c7bcd76f6b5ed2611b679a70260f commit 33ace6eb91d5c7bcd76f6b5ed2611b679a70260f Author: Kitware Robot AuthorDate: Sun Feb 18 00:01:06 2018 -0500 Commit: Kitware Robot CommitDate: Sun Feb 18 00:01:06 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 29a2a21..31a2194 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180217) +set(CMake_VERSION_PATCH 20180218) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 19 00:05:06 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 19 Feb 2018 00:05:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-40-ga99ff55 Message-ID: <20180219050506.23150107F60@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via a99ff558afbee4578cf0fe05619978cbbbc03d38 (commit) from 33ace6eb91d5c7bcd76f6b5ed2611b679a70260f (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a99ff558afbee4578cf0fe05619978cbbbc03d38 commit a99ff558afbee4578cf0fe05619978cbbbc03d38 Author: Kitware Robot AuthorDate: Mon Feb 19 00:01:12 2018 -0500 Commit: Kitware Robot CommitDate: Mon Feb 19 00:01:12 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 31a2194..8ebd007 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180218) +set(CMake_VERSION_PATCH 20180219) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 20 00:05:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 20 Feb 2018 00:05:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-41-g3141981 Message-ID: <20180220050504.C7B511077B9@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 31419815aa8cd376b1cdfd1d77c0d5c4802f4ecc (commit) from a99ff558afbee4578cf0fe05619978cbbbc03d38 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=31419815aa8cd376b1cdfd1d77c0d5c4802f4ecc commit 31419815aa8cd376b1cdfd1d77c0d5c4802f4ecc Author: Kitware Robot AuthorDate: Tue Feb 20 00:01:08 2018 -0500 Commit: Kitware Robot CommitDate: Tue Feb 20 00:01:08 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 8ebd007..1477f0d 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180219) +set(CMake_VERSION_PATCH 20180220) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 20 11:45:05 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 20 Feb 2018 11:45:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-49-g3bc3762 Message-ID: <20180220164505.1878A106786@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 3bc3762c7c54ba0280413b3782473e078e1b00c8 (commit) via 1fbd5f4a7eb97137df8aec9e02bf61305efd415b (commit) via 088c1876efcc9e10eb2023d7dd748971a24de266 (commit) via 377254b19560c536e94bfc273b91838996c35d1a (commit) via b25b39ad76d4e0f03ff0d4b833de45fdde68b096 (commit) via 287e7a175c8e8034cf195fff169db718a480fdbc (commit) via 1667e244539cfef183c4d66972fbf1e8d06fbfe2 (commit) via c01eede89474ffb1e52595138b18b080e655a46c (commit) from 31419815aa8cd376b1cdfd1d77c0d5c4802f4ecc (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3bc3762c7c54ba0280413b3782473e078e1b00c8 commit 3bc3762c7c54ba0280413b3782473e078e1b00c8 Merge: 1fbd5f4 c01eede Author: Brad King AuthorDate: Tue Feb 20 16:42:07 2018 +0000 Commit: Kitware Robot CommitDate: Tue Feb 20 11:42:23 2018 -0500 Merge topic 'findzlib-folder-priority' c01eede8 FindZLIB: Search names per directory Acked-by: Kitware Robot Merge-request: !1769 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1fbd5f4a7eb97137df8aec9e02bf61305efd415b commit 1fbd5f4a7eb97137df8aec9e02bf61305efd415b Merge: 088c187 b25b39a Author: Brad King AuthorDate: Tue Feb 20 16:41:35 2018 +0000 Commit: Kitware Robot CommitDate: Tue Feb 20 11:41:50 2018 -0500 Merge topic 'CheckCSourceRuns-log-run-output' b25b39ad CheckCSourceRuns: Teach CHECK_C_SOURCE_RUNS to log run output Acked-by: Kitware Robot Merge-request: !1772 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=088c1876efcc9e10eb2023d7dd748971a24de266 commit 088c1876efcc9e10eb2023d7dd748971a24de266 Merge: 377254b 287e7a1 Author: Brad King AuthorDate: Tue Feb 20 16:40:23 2018 +0000 Commit: Kitware Robot CommitDate: Tue Feb 20 11:41:15 2018 -0500 Merge topic 'follow-up-misc-typos' 287e7a17 Maint: misc. typos Acked-by: Kitware Robot Merge-request: !1771 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=377254b19560c536e94bfc273b91838996c35d1a commit 377254b19560c536e94bfc273b91838996c35d1a Merge: 3141981 1667e24 Author: Brad King AuthorDate: Tue Feb 20 16:39:38 2018 +0000 Commit: Kitware Robot CommitDate: Tue Feb 20 11:40:18 2018 -0500 Merge topic 'help_fixup' 1667e244 Help: Fix command references in CMAKE_NETRC* variable documentation Acked-by: Kitware Robot Merge-request: !1770 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b25b39ad76d4e0f03ff0d4b833de45fdde68b096 commit b25b39ad76d4e0f03ff0d4b833de45fdde68b096 Author: Edward Z. Yang AuthorDate: Thu Feb 15 23:03:51 2018 -0800 Commit: Brad King CommitDate: Fri Feb 16 09:51:26 2018 -0500 CheckCSourceRuns: Teach CHECK_C_SOURCE_RUNS to log run output Signed-off-by: Edward Z. Yang Fixes: #17745 diff --git a/Modules/CheckCSourceRuns.cmake b/Modules/CheckCSourceRuns.cmake index fa51346..7eb050c 100644 --- a/Modules/CheckCSourceRuns.cmake +++ b/Modules/CheckCSourceRuns.cmake @@ -92,7 +92,8 @@ macro(CHECK_C_SOURCE_RUNS SOURCE VAR) CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS} -DCMAKE_SKIP_RPATH:BOOL=${CMAKE_SKIP_RPATH} "${CHECK_C_SOURCE_COMPILES_ADD_INCLUDES}" - COMPILE_OUTPUT_VARIABLE OUTPUT) + COMPILE_OUTPUT_VARIABLE OUTPUT + RUN_OUTPUT_VARIABLE RUN_OUTPUT) # if it did not compile make the return value fail code of 1 if(NOT ${VAR}_COMPILED) set(${VAR}_EXITCODE 1) @@ -104,8 +105,10 @@ macro(CHECK_C_SOURCE_RUNS SOURCE VAR) message(STATUS "Performing Test ${VAR} - Success") endif() file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log - "Performing C SOURCE FILE Test ${VAR} succeeded with the following output:\n" + "Performing C SOURCE FILE Test ${VAR} succeeded with the following compile output:\n" "${OUTPUT}\n" + "...and run output:\n" + "${RUN_OUTPUT}\n" "Return value: ${${VAR}}\n" "Source file was:\n${SOURCE}\n") else() @@ -119,8 +122,10 @@ macro(CHECK_C_SOURCE_RUNS SOURCE VAR) message(STATUS "Performing Test ${VAR} - Failed") endif() file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log - "Performing C SOURCE FILE Test ${VAR} failed with the following output:\n" + "Performing C SOURCE FILE Test ${VAR} failed with the following compile output:\n" "${OUTPUT}\n" + "...and run output:\n" + "${RUN_OUTPUT}\n" "Return value: ${${VAR}_EXITCODE}\n" "Source file was:\n${SOURCE}\n") https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=287e7a175c8e8034cf195fff169db718a480fdbc commit 287e7a175c8e8034cf195fff169db718a480fdbc Author: luz.paz AuthorDate: Thu Feb 15 22:02:13 2018 -0500 Commit: Brad King CommitDate: Fri Feb 16 09:47:17 2018 -0500 Maint: misc. typos Found via `codespell` diff --git a/Help/manual/cmake-developer.7.rst b/Help/manual/cmake-developer.7.rst index cd509ac..41fe90c 100644 --- a/Help/manual/cmake-developer.7.rst +++ b/Help/manual/cmake-developer.7.rst @@ -943,7 +943,7 @@ populated: endif() The ``RELEASE`` variant should be listed first in the property -so that that variant is chosen if the user uses a configuration which is +so that the variant is chosen if the user uses a configuration which is not an exact match for any listed ``IMPORTED_CONFIGURATIONS``. Most of the cache variables should be hidden in the ``ccmake`` interface unless diff --git a/Modules/CMakeTestCSharpCompiler.cmake b/Modules/CMakeTestCSharpCompiler.cmake index f3b95fd..6715c30 100644 --- a/Modules/CMakeTestCSharpCompiler.cmake +++ b/Modules/CMakeTestCSharpCompiler.cmake @@ -15,7 +15,7 @@ unset(CMAKE_CSharp_COMPILER_WORKS CACHE) set(test_compile_file "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCSharpCompiler.cs") # This file is used by EnableLanguage in cmGlobalGenerator to -# determine that that selected C# compiler can actually compile +# determine that the selected C# compiler can actually compile # and link the most basic of programs. If not, a fatal error # is set and cmake stops processing commands and will not generate # any makefiles or projects. diff --git a/Modules/CMakeTestCUDACompiler.cmake b/Modules/CMakeTestCUDACompiler.cmake index df5ec72..f0454da 100644 --- a/Modules/CMakeTestCUDACompiler.cmake +++ b/Modules/CMakeTestCUDACompiler.cmake @@ -15,7 +15,7 @@ include(CMakeTestCompilerCommon) unset(CMAKE_CUDA_COMPILER_WORKS CACHE) # This file is used by EnableLanguage in cmGlobalGenerator to -# determine that that selected cuda compiler can actually compile +# determine that the selected cuda compiler can actually compile # and link the most basic of programs. If not, a fatal error # is set and cmake stops processing commands and will not generate # any makefiles or projects. diff --git a/Modules/CMakeTestCXXCompiler.cmake b/Modules/CMakeTestCXXCompiler.cmake index 7b80dc0..e4d49ae 100644 --- a/Modules/CMakeTestCXXCompiler.cmake +++ b/Modules/CMakeTestCXXCompiler.cmake @@ -16,7 +16,7 @@ include(CMakeTestCompilerCommon) unset(CMAKE_CXX_COMPILER_WORKS CACHE) # This file is used by EnableLanguage in cmGlobalGenerator to -# determine that that selected C++ compiler can actually compile +# determine that the selected C++ compiler can actually compile # and link the most basic of programs. If not, a fatal error # is set and cmake stops processing commands and will not generate # any makefiles or projects. diff --git a/Modules/CMakeTestFortranCompiler.cmake b/Modules/CMakeTestFortranCompiler.cmake index 3c150a8..e9860e9 100644 --- a/Modules/CMakeTestFortranCompiler.cmake +++ b/Modules/CMakeTestFortranCompiler.cmake @@ -16,7 +16,7 @@ include(CMakeTestCompilerCommon) unset(CMAKE_Fortran_COMPILER_WORKS CACHE) # This file is used by EnableLanguage in cmGlobalGenerator to -# determine that that selected Fortran compiler can actually compile +# determine that the selected Fortran compiler can actually compile # and link the most basic of programs. If not, a fatal error # is set and cmake stops processing commands and will not generate # any makefiles or projects. diff --git a/Modules/CMakeTestJavaCompiler.cmake b/Modules/CMakeTestJavaCompiler.cmake index 23fdbdc..3c33573 100644 --- a/Modules/CMakeTestJavaCompiler.cmake +++ b/Modules/CMakeTestJavaCompiler.cmake @@ -3,7 +3,7 @@ # This file is used by EnableLanguage in cmGlobalGenerator to -# determine that that selected Fortran compiler can actually compile +# determine that the selected Fortran compiler can actually compile # and link the most basic of programs. If not, a fatal error # is set and cmake stops processing commands and will not generate # any makefiles or projects. diff --git a/Modules/CMakeTestRCCompiler.cmake b/Modules/CMakeTestRCCompiler.cmake index c510d3a..3123a6c 100644 --- a/Modules/CMakeTestRCCompiler.cmake +++ b/Modules/CMakeTestRCCompiler.cmake @@ -3,7 +3,7 @@ # This file is used by EnableLanguage in cmGlobalGenerator to -# determine that that selected RC compiler can actually compile +# determine that the selected RC compiler can actually compile # and link the most basic of programs. If not, a fatal error # is set and cmake stops processing commands and will not generate # any makefiles or projects. diff --git a/Modules/CMakeTestSwiftCompiler.cmake b/Modules/CMakeTestSwiftCompiler.cmake index bcd5c33..858c1be 100644 --- a/Modules/CMakeTestSwiftCompiler.cmake +++ b/Modules/CMakeTestSwiftCompiler.cmake @@ -16,7 +16,7 @@ include(CMakeTestCompilerCommon) unset(CMAKE_Swift_COMPILER_WORKS CACHE) # This file is used by EnableLanguage in cmGlobalGenerator to -# determine that that selected C++ compiler can actually compile +# determine that the selected C++ compiler can actually compile # and link the most basic of programs. If not, a fatal error # is set and cmake stops processing commands and will not generate # any makefiles or projects. diff --git a/Modules/CPackRPM.cmake b/Modules/CPackRPM.cmake index bb5181f..258922c 100644 --- a/Modules/CPackRPM.cmake +++ b/Modules/CPackRPM.cmake @@ -1984,7 +1984,7 @@ function(cpack_rpm_generate_package) endif() if(DEFINED CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}) - # Prefix can be replaced by Prefixes but the old version stil works so we'll ignore it for now + # Prefix can be replaced by Prefixes but the old version still works so we'll ignore it for now # Requires* is a special case because it gets transformed to Requires(pre/post/preun/postun) # Auto* is a special case because the tags can not be queried by querytags rpmbuild flag set(special_case_tags_ PREFIX REQUIRES_PRE REQUIRES_POST REQUIRES_PREUN REQUIRES_POSTUN AUTOPROV AUTOREQ AUTOREQPROV) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1667e244539cfef183c4d66972fbf1e8d06fbfe2 commit 1667e244539cfef183c4d66972fbf1e8d06fbfe2 Author: Shane Parris AuthorDate: Thu Feb 15 16:52:01 2018 -0500 Commit: Brad King CommitDate: Fri Feb 16 09:41:03 2018 -0500 Help: Fix command references in CMAKE_NETRC* variable documentation diff --git a/Help/variable/CMAKE_NETRC.rst b/Help/variable/CMAKE_NETRC.rst index 52f857e..903ec31 100644 --- a/Help/variable/CMAKE_NETRC.rst +++ b/Help/variable/CMAKE_NETRC.rst @@ -2,7 +2,7 @@ CMAKE_NETRC ----------- This variable is used to initialize the ``NETRC`` option for -:command:`file(DOWNLOAD)` and :command:`file(DOWNLOAD)` commands and the +:command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands and the module :module:`ExternalProject`. See those commands for additional information. diff --git a/Help/variable/CMAKE_NETRC_FILE.rst b/Help/variable/CMAKE_NETRC_FILE.rst index 1508f1e..0f09afe 100644 --- a/Help/variable/CMAKE_NETRC_FILE.rst +++ b/Help/variable/CMAKE_NETRC_FILE.rst @@ -2,7 +2,7 @@ CMAKE_NETRC_FILE ---------------- This variable is used to initialize the ``NETRC_FILE`` option for -:command:`file(DOWNLOAD)` and :command:`file(DOWNLOAD)` commands and the +:command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands and the module :module:`ExternalProject`. See those commands for additional information. https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c01eede89474ffb1e52595138b18b080e655a46c commit c01eede89474ffb1e52595138b18b080e655a46c Author: Stefan Hacker AuthorDate: Thu Feb 15 20:48:50 2018 +0100 Commit: Stefan Hacker CommitDate: Thu Feb 15 21:38:48 2018 +0100 FindZLIB: Search names per directory FindZLIB accepts various names for zlib (e.g. "z", "zlib", ...) in various search locations. Before this patch zlib ignored the priority implied by the search locations and instead prioritized based on the library name. Consequently ensuring the pick of a zlib from e.g. a CMAKE_PREFIX_PATH was not possible if it didn't have the highest priority name ("z"). This unexpected behavior led to bugs in third party projects (e.g. https://github.com/Microsoft/vcpkg/issues/1939). A common way to encounter the issue in the wild is on Windows with the popular Anaconda python distribution which puts a "z.lib" in a lib/ subdirectory reachable from a bin/ path in PATH. From then on cmake will always pick up this library instead of the one intended by the user. This patch adds the NAMES_PER_DIR option to the find_library calls made by FindZLIB making it search each directory for all names before considering lower priority directory names resolving these issues. diff --git a/Modules/FindZLIB.cmake b/Modules/FindZLIB.cmake index 4065999..a5c04ac 100644 --- a/Modules/FindZLIB.cmake +++ b/Modules/FindZLIB.cmake @@ -75,8 +75,8 @@ endforeach() # Allow ZLIB_LIBRARY to be set manually, as the location of the zlib library if(NOT ZLIB_LIBRARY) foreach(search ${_ZLIB_SEARCHES}) - find_library(ZLIB_LIBRARY_RELEASE NAMES ${ZLIB_NAMES} ${${search}} PATH_SUFFIXES lib) - find_library(ZLIB_LIBRARY_DEBUG NAMES ${ZLIB_NAMES_DEBUG} ${${search}} PATH_SUFFIXES lib) + find_library(ZLIB_LIBRARY_RELEASE NAMES ${ZLIB_NAMES} NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib) + find_library(ZLIB_LIBRARY_DEBUG NAMES ${ZLIB_NAMES_DEBUG} NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib) endforeach() include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake) ----------------------------------------------------------------------- Summary of changes: Help/manual/cmake-developer.7.rst | 2 +- Help/variable/CMAKE_NETRC.rst | 2 +- Help/variable/CMAKE_NETRC_FILE.rst | 2 +- Modules/CMakeTestCSharpCompiler.cmake | 2 +- Modules/CMakeTestCUDACompiler.cmake | 2 +- Modules/CMakeTestCXXCompiler.cmake | 2 +- Modules/CMakeTestFortranCompiler.cmake | 2 +- Modules/CMakeTestJavaCompiler.cmake | 2 +- Modules/CMakeTestRCCompiler.cmake | 2 +- Modules/CMakeTestSwiftCompiler.cmake | 2 +- Modules/CPackRPM.cmake | 2 +- Modules/CheckCSourceRuns.cmake | 11 ++++++++--- Modules/FindZLIB.cmake | 4 ++-- 13 files changed, 21 insertions(+), 16 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 20 11:55:05 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 20 Feb 2018 11:55:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-57-ga8d182f Message-ID: <20180220165505.29785107840@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via a8d182fbbfc40b34c4ea11b1d6bf787f5fcf7386 (commit) via cab9af7e9754a0a0aa718e3e467152c1524e805c (commit) via 846a4dd1185e990da0948f97e245e704a1d68c93 (commit) via 8a99ccc5ed2ce7204b29126f884121bdc39b7bbe (commit) via 10f39ca7f7c9b2396101d4ebd7b5933276017b85 (commit) via 689eeb67cb87a9ed1d91a4971806488d00e68f42 (commit) via a1dee224b8f92a16a84ac285620136d04adb880a (commit) via ed000d7d30434c8cc0be50c8aa19d7ee12e2101b (commit) from 3bc3762c7c54ba0280413b3782473e078e1b00c8 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a8d182fbbfc40b34c4ea11b1d6bf787f5fcf7386 commit a8d182fbbfc40b34c4ea11b1d6bf787f5fcf7386 Merge: 846a4dd cab9af7 Author: Brad King AuthorDate: Tue Feb 20 16:54:10 2018 +0000 Commit: Kitware Robot CommitDate: Tue Feb 20 11:54:15 2018 -0500 Merge topic 'ti-depfile-flag-fix' cab9af7e Compiler/TI: Fix depfile generation for C++ Acked-by: Kitware Robot Merge-request: !1774 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cab9af7e9754a0a0aa718e3e467152c1524e805c commit cab9af7e9754a0a0aa718e3e467152c1524e805c Author: Grzegorz Dobinski AuthorDate: Fri Feb 16 17:07:26 2018 -0500 Commit: Brad King CommitDate: Tue Feb 20 11:52:11 2018 -0500 Compiler/TI: Fix depfile generation for C++ In commit v3.11.0-rc1~466^2 (Compiler/TI: Add support for depfile generation for Ninja, 2017-10-16) the flag for C++ was added in a variable with a typo in its name. Fix the spelling. Issue: #17360 diff --git a/Modules/Compiler/TI-CXX.cmake b/Modules/Compiler/TI-CXX.cmake index 8b0069b..4c6af06 100644 --- a/Modules/Compiler/TI-CXX.cmake +++ b/Modules/Compiler/TI-CXX.cmake @@ -2,7 +2,7 @@ set(CMAKE_LIBRARY_PATH_FLAG "--search_path=") set(CMAKE_LINK_LIBRARY_FLAG "--library=") set(CMAKE_INCLUDE_FLAG_CXX "--include_path=") -set(CMAKE_DEPFILE_FLAGS_CCX "--preproc_with_compile --preproc_dependency=") +set(CMAKE_DEPFILE_FLAGS_CXX "--preproc_with_compile --preproc_dependency=") set(CMAKE_CXX_CREATE_ASSEMBLY_SOURCE " --compile_only --skip_assembler --cpp_file= --output_file=") set(CMAKE_CXX_CREATE_PREPROCESSED_SOURCE " --preproc_only --cpp_file= --output_file=") https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=846a4dd1185e990da0948f97e245e704a1d68c93 commit 846a4dd1185e990da0948f97e245e704a1d68c93 Merge: 8a99ccc 689eeb6 Author: Brad King AuthorDate: Tue Feb 20 16:47:43 2018 +0000 Commit: Kitware Robot CommitDate: Tue Feb 20 11:47:51 2018 -0500 Merge topic 'string-join' 689eeb67 string: Add JOIN subcommand Acked-by: Kitware Robot Acked-by: Pavel Solodovnikov Merge-request: !1762 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8a99ccc5ed2ce7204b29126f884121bdc39b7bbe commit 8a99ccc5ed2ce7204b29126f884121bdc39b7bbe Merge: 10f39ca ed000d7 Author: Brad King AuthorDate: Tue Feb 20 16:46:16 2018 +0000 Commit: Kitware Robot CommitDate: Tue Feb 20 11:46:21 2018 -0500 Merge topic 'ninja-cmake-deps' ed000d7d Ninja: Don't add custom command outputs to phony rule for CMake inputs Acked-by: Kitware Robot Merge-request: !1768 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=10f39ca7f7c9b2396101d4ebd7b5933276017b85 commit 10f39ca7f7c9b2396101d4ebd7b5933276017b85 Merge: 3bc3762 a1dee22 Author: Brad King AuthorDate: Tue Feb 20 16:44:51 2018 +0000 Commit: Kitware Robot CommitDate: Tue Feb 20 11:44:59 2018 -0500 Merge topic 'msvc-parallel-build-17696' a1dee224 CMake: Enable /MP for MSVC toolchain Acked-by: Kitware Robot Merge-request: !1718 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=689eeb67cb87a9ed1d91a4971806488d00e68f42 commit 689eeb67cb87a9ed1d91a4971806488d00e68f42 Author: Alex Turbov AuthorDate: Sun Feb 11 21:20:57 2018 +0800 Commit: Brad King CommitDate: Fri Feb 16 10:04:47 2018 -0500 string: Add JOIN subcommand This is just like CONCAT but accepts a glue string to put between each value. `JOIN ""` is equivalent to `CONCAT`. diff --git a/Help/command/string.rst b/Help/command/string.rst index fb3893f..709559d 100644 --- a/Help/command/string.rst +++ b/Help/command/string.rst @@ -151,6 +151,16 @@ CONCAT Concatenate all the input arguments together and store the result in the named output variable. +JOIN +"""" + +:: + + string(JOIN [...]) + +Join all the input arguments together using the glue +string and store the result in the named output variable. + TOLOWER """"""" diff --git a/Help/release/dev/string-join.rst b/Help/release/dev/string-join.rst new file mode 100644 index 0000000..5cca711 --- /dev/null +++ b/Help/release/dev/string-join.rst @@ -0,0 +1,5 @@ +string-join +----------- + +* The :command:`string` command learned a ``JOIN`` sub-command + to concatenate input strings separated by a glue string. diff --git a/Source/cmStringCommand.cxx b/Source/cmStringCommand.cxx index 55af078..9631912 100644 --- a/Source/cmStringCommand.cxx +++ b/Source/cmStringCommand.cxx @@ -68,6 +68,9 @@ bool cmStringCommand::InitialPass(std::vector const& args, if (subCommand == "CONCAT") { return this->HandleConcatCommand(args); } + if (subCommand == "JOIN") { + return this->HandleJoinCommand(args); + } if (subCommand == "SUBSTRING") { return this->HandleSubstringCommand(args); } @@ -677,8 +680,26 @@ bool cmStringCommand::HandleConcatCommand(std::vector const& args) return false; } - std::string const& variableName = args[1]; - std::string value = cmJoin(cmMakeRange(args).advance(2), std::string()); + return this->joinImpl(args, std::string(), 1); +} + +bool cmStringCommand::HandleJoinCommand(std::vector const& args) +{ + if (args.size() < 3) { + this->SetError("sub-command JOIN requires at least two arguments."); + return false; + } + + return this->joinImpl(args, args[1], 2); +} + +bool cmStringCommand::joinImpl(std::vector const& args, + std::string const& glue, const size_t varIdx) +{ + std::string const& variableName = args[varIdx]; + // NOTE Items to concat/join placed right after the variable for + // both `CONCAT` and `JOIN` sub-commands. + std::string value = cmJoin(cmMakeRange(args).advance(varIdx + 1), glue); this->Makefile->AddDefinition(variableName, value.c_str()); return true; diff --git a/Source/cmStringCommand.h b/Source/cmStringCommand.h index b287e37..569ed83 100644 --- a/Source/cmStringCommand.h +++ b/Source/cmStringCommand.h @@ -5,6 +5,7 @@ #include "cmConfigure.h" // IWYU pragma: keep +#include #include #include @@ -48,6 +49,7 @@ protected: bool HandleAppendCommand(std::vector const& args); bool HandlePrependCommand(std::vector const& args); bool HandleConcatCommand(std::vector const& args); + bool HandleJoinCommand(std::vector const& args); bool HandleStripCommand(std::vector const& args); bool HandleRandomCommand(std::vector const& args); bool HandleFindCommand(std::vector const& args); @@ -56,6 +58,9 @@ protected: bool HandleGenexStripCommand(std::vector const& args); bool HandleUuidCommand(std::vector const& args); + bool joinImpl(std::vector const& args, std::string const& glue, + size_t varIdx); + class RegexReplacement { public: diff --git a/Tests/RunCMake/string/Join.cmake b/Tests/RunCMake/string/Join.cmake new file mode 100644 index 0000000..081f1e4 --- /dev/null +++ b/Tests/RunCMake/string/Join.cmake @@ -0,0 +1,16 @@ +string(JOIN % out) +if(NOT out STREQUAL "") + message(FATAL_ERROR "\"string(JOIN % out)\" set out to \"${out}\"") +endif() +string(JOIN % out a) +if(NOT out STREQUAL "a") + message(FATAL_ERROR "\"string(JOIN % out a)\" set out to \"${out}\"") +endif() +string(JOIN % out a "b") +if(NOT out STREQUAL "a%b") + message(FATAL_ERROR "\"string(JOIN % out a \"b\")\" set out to \"${out}\"") +endif() +string(JOIN :: out a "b") +if(NOT out STREQUAL "a::b") + message(FATAL_ERROR "\"string(JOIN :: out a \"b\")\" set out to \"${out}\"") +endif() diff --git a/Tests/RunCMake/string/JoinNoArgs-result.txt b/Tests/RunCMake/string/JoinNoArgs-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/string/JoinNoArgs-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/string/JoinNoArgs-stderr.txt b/Tests/RunCMake/string/JoinNoArgs-stderr.txt new file mode 100644 index 0000000..d9dcec3 --- /dev/null +++ b/Tests/RunCMake/string/JoinNoArgs-stderr.txt @@ -0,0 +1,4 @@ +CMake Error at JoinNoArgs.cmake:1 \(string\): + string sub-command JOIN requires at least two arguments. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/string/JoinNoArgs.cmake b/Tests/RunCMake/string/JoinNoArgs.cmake new file mode 100644 index 0000000..35ba4d9 --- /dev/null +++ b/Tests/RunCMake/string/JoinNoArgs.cmake @@ -0,0 +1 @@ +string(JOIN) diff --git a/Tests/RunCMake/string/JoinNoVar-result.txt b/Tests/RunCMake/string/JoinNoVar-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/string/JoinNoVar-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/string/JoinNoVar-stderr.txt b/Tests/RunCMake/string/JoinNoVar-stderr.txt new file mode 100644 index 0000000..90701a9 --- /dev/null +++ b/Tests/RunCMake/string/JoinNoVar-stderr.txt @@ -0,0 +1,4 @@ +CMake Error at JoinNoVar.cmake:1 \(string\): + string sub-command JOIN requires at least two arguments. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/string/JoinNoVar.cmake b/Tests/RunCMake/string/JoinNoVar.cmake new file mode 100644 index 0000000..35f7b92 --- /dev/null +++ b/Tests/RunCMake/string/JoinNoVar.cmake @@ -0,0 +1 @@ +string(JOIN ";") diff --git a/Tests/RunCMake/string/RunCMakeTest.cmake b/Tests/RunCMake/string/RunCMakeTest.cmake index 513d1e3..211337a 100644 --- a/Tests/RunCMake/string/RunCMakeTest.cmake +++ b/Tests/RunCMake/string/RunCMakeTest.cmake @@ -9,6 +9,10 @@ run_cmake(PrependNoArgs) run_cmake(Concat) run_cmake(ConcatNoArgs) +run_cmake(Join) +run_cmake(JoinNoArgs) +run_cmake(JoinNoVar) + run_cmake(Timestamp) run_cmake(TimestampEmpty) run_cmake(TimestampInvalid) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a1dee224b8f92a16a84ac285620136d04adb880a commit a1dee224b8f92a16a84ac285620136d04adb880a Author: Robert Dailey AuthorDate: Mon Jan 29 11:34:28 2018 -0600 Commit: Robert Dailey CommitDate: Thu Feb 15 10:45:37 2018 -0600 CMake: Enable /MP for MSVC toolchain A new cache option named `CMake_MSVC_PARALLEL` is now available that can be used to control the usage of [`/MP`][1] to the MSVC compiler. This enables parallelized builds on a per-translation unit basis. To enable `/MP`, specify value `ON` to the option. Using an integral non-zero value will control the specific number of threads used with the `/MP` option, as opposed to letting the toolchain decide for you. Fixes #17696 [1]: https://docs.microsoft.com/en-us/cpp/build/reference/mp-build-with-multiple-processes diff --git a/CompileFlags.cmake b/CompileFlags.cmake index 32e7005..ec9b31b 100644 --- a/CompileFlags.cmake +++ b/CompileFlags.cmake @@ -82,3 +82,26 @@ endif () if (CMAKE_ANSI_CFLAGS) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_ANSI_CFLAGS}") endif () + +# Allow per-translation-unit parallel builds when using MSVC +if(CMAKE_GENERATOR MATCHES "Visual Studio" AND + (CMAKE_C_COMPILER_ID MATCHES "MSVC|Intel" OR + CMAKE_CXX_COMPILER_ID MATCHES "MSVC|Intel")) + + set(CMake_MSVC_PARALLEL ON CACHE STRING "\ +Enables /MP flag for parallel builds using MSVC. Specify an \ +integer value to control the number of threads used (Only \ +works on some older versions of Visual Studio). Setting to \ +ON lets the toolchain decide how many threads to use. Set to \ +OFF to disable /MP completely." ) + + if(CMake_MSVC_PARALLEL) + if(CMake_MSVC_PARALLEL GREATER 0) + string(APPEND CMAKE_C_FLAGS " /MP${CMake_MSVC_PARALLEL}") + string(APPEND CMAKE_CXX_FLAGS " /MP${CMake_MSVC_PARALLEL}") + else() + string(APPEND CMAKE_C_FLAGS " /MP") + string(APPEND CMAKE_CXX_FLAGS " /MP") + endif() + endif() +endif() https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ed000d7d30434c8cc0be50c8aa19d7ee12e2101b commit ed000d7d30434c8cc0be50c8aa19d7ee12e2101b Author: Patrick Stewart AuthorDate: Thu Feb 15 14:30:34 2018 +0000 Commit: Patrick Stewart CommitDate: Thu Feb 15 15:03:53 2018 +0000 Ninja: Don't add custom command outputs to phony rule for CMake inputs diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index b251f86..8410609 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -1384,8 +1384,14 @@ void cmGlobalNinjaGenerator::WriteTargetRebuildManifest(std::ostream& os) /*explicitDeps=*/cmNinjaDeps(), implicitDeps, /*orderOnlyDeps=*/cmNinjaDeps(), variables); + cmNinjaDeps missingInputs; + std::set_difference(std::make_move_iterator(implicitDeps.begin()), + std::make_move_iterator(implicitDeps.end()), + CustomCommandOutputs.begin(), CustomCommandOutputs.end(), + std::back_inserter(missingInputs)); + this->WritePhonyBuild(os, "A missing CMake input file is not an error.", - implicitDeps, cmNinjaDeps()); + missingInputs, cmNinjaDeps()); } std::string cmGlobalNinjaGenerator::ninjaCmd() const ----------------------------------------------------------------------- Summary of changes: CompileFlags.cmake | 23 ++++++++++++++++++ Help/command/string.rst | 10 ++++++++ Help/release/dev/string-join.rst | 5 ++++ Modules/Compiler/TI-CXX.cmake | 2 +- Source/cmGlobalNinjaGenerator.cxx | 8 ++++++- Source/cmStringCommand.cxx | 25 ++++++++++++++++++-- Source/cmStringCommand.h | 5 ++++ Tests/RunCMake/string/Join.cmake | 16 +++++++++++++ .../JoinNoArgs-result.txt} | 0 Tests/RunCMake/string/JoinNoArgs-stderr.txt | 4 ++++ Tests/RunCMake/string/JoinNoArgs.cmake | 1 + .../JoinNoVar-result.txt} | 0 Tests/RunCMake/string/JoinNoVar-stderr.txt | 4 ++++ Tests/RunCMake/string/JoinNoVar.cmake | 1 + Tests/RunCMake/string/RunCMakeTest.cmake | 4 ++++ 15 files changed, 104 insertions(+), 4 deletions(-) create mode 100644 Help/release/dev/string-join.rst create mode 100644 Tests/RunCMake/string/Join.cmake copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => string/JoinNoArgs-result.txt} (100%) create mode 100644 Tests/RunCMake/string/JoinNoArgs-stderr.txt create mode 100644 Tests/RunCMake/string/JoinNoArgs.cmake copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => string/JoinNoVar-result.txt} (100%) create mode 100644 Tests/RunCMake/string/JoinNoVar-stderr.txt create mode 100644 Tests/RunCMake/string/JoinNoVar.cmake hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 20 12:05:35 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 20 Feb 2018 12:05:35 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-60-gb892526 Message-ID: <20180220170535.89D41102D87@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via b89252689cf5d63495de4b0458aa3c239acd01d4 (commit) via 82c23d6afcc862f3000607ab1521e72ca743a3b0 (commit) via eded0bae2e71c2d315a45004ee37b27ff42f2453 (commit) from a8d182fbbfc40b34c4ea11b1d6bf787f5fcf7386 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b89252689cf5d63495de4b0458aa3c239acd01d4 commit b89252689cf5d63495de4b0458aa3c239acd01d4 Merge: a8d182f 82c23d6 Author: Brad King AuthorDate: Tue Feb 20 11:55:46 2018 -0500 Commit: Brad King CommitDate: Tue Feb 20 11:55:46 2018 -0500 Merge branch 'release-3.11' ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 20 12:05:35 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 20 Feb 2018 12:05:35 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.11.0-rc1-4-g82c23d6 Message-ID: <20180220170535.9D2F9103138@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, release has been updated via 82c23d6afcc862f3000607ab1521e72ca743a3b0 (commit) via cab9af7e9754a0a0aa718e3e467152c1524e805c (commit) via eded0bae2e71c2d315a45004ee37b27ff42f2453 (commit) via 1667e244539cfef183c4d66972fbf1e8d06fbfe2 (commit) from 02edf08be2b9476f442b702c6c00447912425cc2 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Help/variable/CMAKE_NETRC.rst | 2 +- Help/variable/CMAKE_NETRC_FILE.rst | 2 +- Modules/Compiler/TI-CXX.cmake | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 21 00:05:05 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 21 Feb 2018 00:05:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-61-g4e6f94d Message-ID: <20180221050505.16BF0107B08@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 4e6f94d49ca591ff90ead5f00df71b22f97241e6 (commit) from b89252689cf5d63495de4b0458aa3c239acd01d4 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4e6f94d49ca591ff90ead5f00df71b22f97241e6 commit 4e6f94d49ca591ff90ead5f00df71b22f97241e6 Author: Kitware Robot AuthorDate: Wed Feb 21 00:01:09 2018 -0500 Commit: Kitware Robot CommitDate: Wed Feb 21 00:01:09 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 1477f0d..58b3594 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180220) +set(CMake_VERSION_PATCH 20180221) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 21 10:45:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 21 Feb 2018 10:45:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-67-gfef0018 Message-ID: <20180221154504.95229108EFE@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via fef001884f28bf2e3d6159bb0c8ef4ed2253f2e9 (commit) via fcae625f48856883e9dd3733d87c5d1703ad011c (commit) via 283562624c6a29ce0bad9beca81571f4691ca29d (commit) via e936b6bb5a7e930ac030645a412021383be408d7 (commit) via 6cced7872557fe92228114ce6bf55a30ef91e358 (commit) via 67db3ff958302d09dca208ff54c699beb4a9d13d (commit) from 4e6f94d49ca591ff90ead5f00df71b22f97241e6 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fef001884f28bf2e3d6159bb0c8ef4ed2253f2e9 commit fef001884f28bf2e3d6159bb0c8ef4ed2253f2e9 Merge: fcae625 6cced78 Author: Brad King AuthorDate: Wed Feb 21 15:43:49 2018 +0000 Commit: Kitware Robot CommitDate: Wed Feb 21 10:44:08 2018 -0500 Merge topic 'FindLua-tolerate-var' 6cced787 FindLua: Fix error when LUA_INCLUDE_PREFIX is set as a variable Acked-by: Kitware Robot Merge-request: !1778 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fcae625f48856883e9dd3733d87c5d1703ad011c commit fcae625f48856883e9dd3733d87c5d1703ad011c Merge: 2835626 67db3ff Author: Brad King AuthorDate: Wed Feb 21 15:43:33 2018 +0000 Commit: Kitware Robot CommitDate: Wed Feb 21 10:43:40 2018 -0500 Merge topic 'FindwxWidget/fix-eating-minusL-in-path' 67db3ff9 Fix eating "-L" in path names Acked-by: Kitware Robot Merge-request: !1775 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=283562624c6a29ce0bad9beca81571f4691ca29d commit 283562624c6a29ce0bad9beca81571f4691ca29d Merge: 4e6f94d e936b6b Author: Brad King AuthorDate: Wed Feb 21 15:43:03 2018 +0000 Commit: Kitware Robot CommitDate: Wed Feb 21 10:43:09 2018 -0500 Merge topic 'find-linker' e936b6bb CMakeFindBinUtils: Find linker in PATH Acked-by: Kitware Robot Merge-request: !1720 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e936b6bb5a7e930ac030645a412021383be408d7 commit e936b6bb5a7e930ac030645a412021383be408d7 Author: xoviat AuthorDate: Tue Jan 30 13:41:16 2018 -0600 Commit: Brad King CommitDate: Wed Feb 21 10:42:15 2018 -0500 CMakeFindBinUtils: Find linker in PATH Fixes: #17693 diff --git a/Modules/CMakeFindBinUtils.cmake b/Modules/CMakeFindBinUtils.cmake index ece0547..1b6823c 100644 --- a/Modules/CMakeFindBinUtils.cmake +++ b/Modules/CMakeFindBinUtils.cmake @@ -19,6 +19,25 @@ # on UNIX, cygwin and mingw +if(CMAKE_LINKER) + # we only get here if CMAKE_LINKER was specified using -D or a pre-made CMakeCache.txt + # (e.g. via ctest) or set in CMAKE_TOOLCHAIN_FILE + # find the linker in the PATH if necessary + get_filename_component(_CMAKE_USER_LINKER_PATH "${CMAKE_LINKER}" PATH) + if(NOT _CMAKE_USER_LINKER_PATH) + find_program(CMAKE_LINKER_WITH_PATH NAMES ${CMAKE_LINKER} HINTS ${_CMAKE_TOOLCHAIN_LOCATION}) + if(CMAKE_LINKER_WITH_PATH) + set(CMAKE_LINKER ${CMAKE_LINKER_WITH_PATH}) + get_property(_CMAKE_LINKER_CACHED CACHE CMAKE_LINKER PROPERTY TYPE) + if(_CMAKE_LINKER_CACHED) + set(CMAKE_LINKER "${CMAKE_LINKER}" CACHE STRING "Default Linker" FORCE) + endif() + unset(_CMAKE_LINKER_CACHED) + endif() + unset(CMAKE_LINKER_WITH_PATH CACHE) + endif() +endif() + # if it's the MS C/CXX compiler, search for link if("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_SIMULATE_ID}" STREQUAL "xMSVC" OR "x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL "xMSVC" https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6cced7872557fe92228114ce6bf55a30ef91e358 commit 6cced7872557fe92228114ce6bf55a30ef91e358 Author: Frank Benkstein AuthorDate: Mon Feb 19 17:50:16 2018 +0100 Commit: Brad King CommitDate: Tue Feb 20 16:13:45 2018 -0500 FindLua: Fix error when LUA_INCLUDE_PREFIX is set as a variable We use `LUA_INCLUDE_PREFIX` for the result of an internal `find_path` call and unset the cache entry before each use. Unset a plain variable of this name too in case it was set by project code. Otherwise the `find_path` call may be skipped and the wrong value used, leading to errors. diff --git a/Modules/FindLua.cmake b/Modules/FindLua.cmake index b59b9b3..7eba206 100644 --- a/Modules/FindLua.cmake +++ b/Modules/FindLua.cmake @@ -122,6 +122,7 @@ endif () if (NOT LUA_VERSION_STRING) foreach (subdir IN LISTS _lua_include_subdirs) unset(LUA_INCLUDE_PREFIX CACHE) + unset(LUA_INCLUDE_PREFIX) find_path(LUA_INCLUDE_PREFIX ${subdir}/lua.h HINTS ENV LUA_DIR https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=67db3ff958302d09dca208ff54c699beb4a9d13d commit 67db3ff958302d09dca208ff54c699beb4a9d13d Author: Raffi Enficiaud AuthorDate: Sat Feb 17 16:15:57 2018 +0100 Commit: Raffi Enficiaud CommitDate: Sat Feb 17 16:15:57 2018 +0100 Fix eating "-L" in path names When the path containing the wxLibraries contains a "-L", a "string(REPLACE "-L" ...) replaces the content and results in a wrong path. The regex fixes this. diff --git a/Modules/FindwxWidgets.cmake b/Modules/FindwxWidgets.cmake index e21ec38..965948e 100644 --- a/Modules/FindwxWidgets.cmake +++ b/Modules/FindwxWidgets.cmake @@ -837,7 +837,7 @@ else() # extract linkdirs (-L) for rpath (i.e., LINK_DIRECTORIES) string(REGEX MATCHALL "-L[^;]+" wxWidgets_LIBRARY_DIRS "${wxWidgets_LIBRARIES}") - string(REPLACE "-L" "" + string(REGEX REPLACE "-L([^;]+)" "\\1" wxWidgets_LIBRARY_DIRS "${wxWidgets_LIBRARY_DIRS}") DBG_MSG_V("wxWidgets_LIBRARIES=${wxWidgets_LIBRARIES}") ----------------------------------------------------------------------- Summary of changes: Modules/CMakeFindBinUtils.cmake | 19 +++++++++++++++++++ Modules/FindLua.cmake | 1 + Modules/FindwxWidgets.cmake | 2 +- 3 files changed, 21 insertions(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 21 14:55:05 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 21 Feb 2018 14:55:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-72-g42793ae Message-ID: <20180221195505.AF7A410A5A1@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 42793aeabc58607fb4ed37039f69f368df0196e7 (commit) via 8f869ad716a7488c9ac20daf96690f75490f3121 (commit) via d513a4035b088311eede69cd54040b42eb6c70cd (commit) via bfffe42b98b85790c93315eecaf62637a246b040 (commit) via 1cf7c54a6b17105c6bb696c0da3a77045411fb3e (commit) from fef001884f28bf2e3d6159bb0c8ef4ed2253f2e9 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=42793aeabc58607fb4ed37039f69f368df0196e7 commit 42793aeabc58607fb4ed37039f69f368df0196e7 Merge: 8f869ad d513a40 Author: Brad King AuthorDate: Wed Feb 21 14:52:45 2018 -0500 Commit: Brad King CommitDate: Wed Feb 21 14:52:45 2018 -0500 Merge branch 'release-3.11' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8f869ad716a7488c9ac20daf96690f75490f3121 commit 8f869ad716a7488c9ac20daf96690f75490f3121 Merge: fef0018 bfffe42 Author: Brad King AuthorDate: Wed Feb 21 19:45:03 2018 +0000 Commit: Kitware Robot CommitDate: Wed Feb 21 14:45:11 2018 -0500 Merge topic 'autogen-depend-filters-documentation' bfffe42b Autogen: Doc: Extend AUTOMOC_DEPEND_FILTERS documentation 1cf7c54a Autogen: Doc: Extend AUTOGEN_TARGET_DEPENDS documentation Acked-by: Kitware Robot Merge-request: !1782 ----------------------------------------------------------------------- Summary of changes: Help/prop_tgt/AUTOGEN_TARGET_DEPENDS.rst | 30 +++++++--- Help/prop_tgt/AUTOMOC_DEPEND_FILTERS.rst | 95 ++++++++++++++++++++++++------ 2 files changed, 99 insertions(+), 26 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 21 14:55:05 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 21 Feb 2018 14:55:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.11.0-rc1-7-gd513a40 Message-ID: <20180221195505.C88BE10A5A7@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, release has been updated via d513a4035b088311eede69cd54040b42eb6c70cd (commit) via bfffe42b98b85790c93315eecaf62637a246b040 (commit) via 1cf7c54a6b17105c6bb696c0da3a77045411fb3e (commit) from 82c23d6afcc862f3000607ab1521e72ca743a3b0 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Help/prop_tgt/AUTOGEN_TARGET_DEPENDS.rst | 30 +++++++--- Help/prop_tgt/AUTOMOC_DEPEND_FILTERS.rst | 95 ++++++++++++++++++++++++------ 2 files changed, 99 insertions(+), 26 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 22 00:05:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 22 Feb 2018 00:05:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-73-ga08ede9 Message-ID: <20180222050504.AE7EA10A6BA@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via a08ede979bd0c57906c8ebf4120192f8202ce0d8 (commit) from 42793aeabc58607fb4ed37039f69f368df0196e7 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a08ede979bd0c57906c8ebf4120192f8202ce0d8 commit a08ede979bd0c57906c8ebf4120192f8202ce0d8 Author: Kitware Robot AuthorDate: Thu Feb 22 00:01:07 2018 -0500 Commit: Kitware Robot CommitDate: Thu Feb 22 00:01:07 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 58b3594..b6f25bb 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180221) +set(CMake_VERSION_PATCH 20180222) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 22 11:25:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 22 Feb 2018 11:25:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-77-g8d70cdd Message-ID: <20180222162504.440B510A67A@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 8d70cddd223b9276ef05ad1a7f0094b3b1ed94c2 (commit) via dcb45a11610f3b4d954b5bdc1d86f465d58ec646 (commit) via 13c5a91197dc99004e2c53864487aabdf09de936 (commit) via 972f7caad354e0bb04d338446601d391e4b0efbd (commit) from a08ede979bd0c57906c8ebf4120192f8202ce0d8 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8d70cddd223b9276ef05ad1a7f0094b3b1ed94c2 commit 8d70cddd223b9276ef05ad1a7f0094b3b1ed94c2 Merge: dcb45a1 13c5a91 Author: Brad King AuthorDate: Thu Feb 22 11:24:32 2018 -0500 Commit: Brad King CommitDate: Thu Feb 22 11:24:32 2018 -0500 Merge branch 'release-3.11' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=dcb45a11610f3b4d954b5bdc1d86f465d58ec646 commit dcb45a11610f3b4d954b5bdc1d86f465d58ec646 Merge: a08ede9 972f7ca Author: Brad King AuthorDate: Thu Feb 22 16:23:46 2018 +0000 Commit: Kitware Robot CommitDate: Thu Feb 22 11:24:04 2018 -0500 Merge topic 'test-CompileFeatures-c11-range' 972f7caa Tests: Make CompileFeatures C dialect check consistent with impl Acked-by: Kitware Robot Merge-request: !1785 ----------------------------------------------------------------------- Summary of changes: Tests/CompileFeatures/default_dialect.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 22 11:25:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 22 Feb 2018 11:25:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.11.0-rc1-9-g13c5a91 Message-ID: <20180222162504.555B510A6A9@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, release has been updated via 13c5a91197dc99004e2c53864487aabdf09de936 (commit) via 972f7caad354e0bb04d338446601d391e4b0efbd (commit) from d513a4035b088311eede69cd54040b42eb6c70cd (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Tests/CompileFeatures/default_dialect.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 22 11:35:03 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 22 Feb 2018 11:35:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-79-g8ac6c7e Message-ID: <20180222163504.C823010AB4C@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 8ac6c7e7f3234f4a2e5e4108114f173f16d4d388 (commit) via 8a55ad2c5bd6a52a7e607ce62574ce8271fd0a68 (commit) from 8d70cddd223b9276ef05ad1a7f0094b3b1ed94c2 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8ac6c7e7f3234f4a2e5e4108114f173f16d4d388 commit 8ac6c7e7f3234f4a2e5e4108114f173f16d4d388 Merge: 8d70cdd 8a55ad2 Author: Brad King AuthorDate: Thu Feb 22 16:26:53 2018 +0000 Commit: Kitware Robot CommitDate: Thu Feb 22 11:26:57 2018 -0500 Merge topic 'test-ExternalProject-serial' 8a55ad2c Tests: Run ExternalProject tests serially Acked-by: Kitware Robot Merge-request: !1783 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8a55ad2c5bd6a52a7e607ce62574ce8271fd0a68 commit 8a55ad2c5bd6a52a7e607ce62574ce8271fd0a68 Author: Brad King AuthorDate: Wed Feb 21 08:09:09 2018 -0500 Commit: Brad King CommitDate: Wed Feb 21 08:32:43 2018 -0500 Tests: Run ExternalProject tests serially These tests use a lot of resources, so run them separately from other tests to avoid competition (which may cause spurious timeouts). diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 62157bb..93837dd 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -1445,6 +1445,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release ) list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/ExternalProject") set_tests_properties(ExternalProject PROPERTIES + RUN_SERIAL 1 TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT}) add_test(NAME ExternalProjectSubdir @@ -1484,6 +1485,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release ) list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/ExternalProjectLocal") set_tests_properties(ExternalProjectLocal PROPERTIES + RUN_SERIAL 1 TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT}) add_test(ExternalProjectUpdateSetup ${CMAKE_CTEST_COMMAND} @@ -1499,6 +1501,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release ) list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/ExternalProjectUpdate") set_tests_properties(ExternalProjectUpdateSetup PROPERTIES + RUN_SERIAL 1 TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT}) add_test(NAME ExternalProjectUpdate @@ -1513,6 +1516,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release ) list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/ExternalProjectUpdate") set_tests_properties(ExternalProjectUpdate PROPERTIES + RUN_SERIAL 1 TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT} WORKING_DIRECTORY ${CMake_SOURCE_DIR}/Tests/ExternalProjectUpdate DEPENDS ExternalProjectUpdateSetup ) ----------------------------------------------------------------------- Summary of changes: Tests/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 22 11:45:02 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 22 Feb 2018 11:45:02 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-85-g020be37 Message-ID: <20180222164502.7916710A295@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 020be379f4993cad5f2ca2066286f6f449b21f52 (commit) via 5c0223886e68a305d0f8f6d60a010dd8c5ae0290 (commit) via b0e2b256c8e96188f3888cdeb1b7c9c881e47aa8 (commit) via 46436581c668365ff8df25dcfca5b13a0fd50200 (commit) via 965f977c7c90512f80776781dfeb52bc7e73bcff (commit) via 83f8e764676fca5f99fb66abfdc2fa3febea36e9 (commit) from 8ac6c7e7f3234f4a2e5e4108114f173f16d4d388 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=020be379f4993cad5f2ca2066286f6f449b21f52 commit 020be379f4993cad5f2ca2066286f6f449b21f52 Merge: 5c02238 965f977 Author: Brad King AuthorDate: Thu Feb 22 16:37:05 2018 +0000 Commit: Kitware Robot CommitDate: Thu Feb 22 11:37:10 2018 -0500 Merge topic 'fortran-compiler' 965f977c Fortran: Adjust compiler candidates based on host platform Acked-by: Kitware Robot Merge-request: !1780 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5c0223886e68a305d0f8f6d60a010dd8c5ae0290 commit 5c0223886e68a305d0f8f6d60a010dd8c5ae0290 Merge: b0e2b25 4643658 Author: Brad King AuthorDate: Thu Feb 22 16:36:22 2018 +0000 Commit: Kitware Robot CommitDate: Thu Feb 22 11:36:34 2018 -0500 Merge topic 'setidentifier_move' 46436581 cmGeneratorExpression: Use std::move to avoid vector copies Acked-by: Kitware Robot Merge-request: !1779 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b0e2b256c8e96188f3888cdeb1b7c9c881e47aa8 commit b0e2b256c8e96188f3888cdeb1b7c9c881e47aa8 Merge: 8ac6c7e 83f8e76 Author: Brad King AuthorDate: Thu Feb 22 16:34:41 2018 +0000 Commit: Kitware Robot CommitDate: Thu Feb 22 11:34:50 2018 -0500 Merge topic 'cmake-build-global-gen' 83f8e764 cmake: Fix global generator path style in --build mode Acked-by: Kitware Robot Merge-request: !1784 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=46436581c668365ff8df25dcfca5b13a0fd50200 commit 46436581c668365ff8df25dcfca5b13a0fd50200 Author: Frank Winklmeier AuthorDate: Tue Feb 20 15:38:08 2018 +0100 Commit: Brad King CommitDate: Wed Feb 21 11:11:50 2018 -0500 cmGeneratorExpression: Use std::move to avoid vector copies Use move semantics in GeneratorExpressionContent::SetIdentifier and ::SetParameters to avoid vector copies. diff --git a/Source/cmGeneratorExpressionEvaluator.h b/Source/cmGeneratorExpressionEvaluator.h index 92dac79..0561799 100644 --- a/Source/cmGeneratorExpressionEvaluator.h +++ b/Source/cmGeneratorExpressionEvaluator.h @@ -7,6 +7,7 @@ #include #include +#include #include struct cmGeneratorExpressionContext; @@ -64,17 +65,16 @@ private: struct GeneratorExpressionContent : public cmGeneratorExpressionEvaluator { GeneratorExpressionContent(const char* startContent, size_t length); - void SetIdentifier( - std::vector const& identifier) + + void SetIdentifier(std::vector identifier) { - this->IdentifierChildren = identifier; + this->IdentifierChildren = std::move(identifier); } void SetParameters( - std::vector> const& - parameters) + std::vector> parameters) { - this->ParamChildren = parameters; + this->ParamChildren = std::move(parameters); } Type GetType() const override diff --git a/Source/cmGeneratorExpressionParser.cxx b/Source/cmGeneratorExpressionParser.cxx index 278de04..7b4dc7b 100644 --- a/Source/cmGeneratorExpressionParser.cxx +++ b/Source/cmGeneratorExpressionParser.cxx @@ -6,6 +6,7 @@ #include #include +#include cmGeneratorExpressionParser::cmGeneratorExpressionParser( const std::vector& tokens) @@ -92,7 +93,7 @@ void cmGeneratorExpressionParser::ParseGeneratorExpression( assert(this->it != this->Tokens.end()); ++this->it; --this->NestingLevel; - content->SetIdentifier(identifier); + content->SetIdentifier(std::move(identifier)); result.push_back(content); return; } @@ -198,8 +199,8 @@ void cmGeneratorExpressionParser::ParseGeneratorExpression( ((this->it - 1)->Content - startToken->Content) + (this->it - 1)->Length; GeneratorExpressionContent* content = new GeneratorExpressionContent(startToken->Content, contentLength); - content->SetIdentifier(identifier); - content->SetParameters(parameters); + content->SetIdentifier(std::move(identifier)); + content->SetParameters(std::move(parameters)); result.push_back(content); } https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=965f977c7c90512f80776781dfeb52bc7e73bcff commit 965f977c7c90512f80776781dfeb52bc7e73bcff Author: xoviat AuthorDate: Tue Feb 20 13:56:32 2018 -0600 Commit: Brad King CommitDate: Wed Feb 21 10:23:38 2018 -0500 Fortran: Adjust compiler candidates based on host platform Typical Fortran compiler command-line tool names differ on Windows and non-Windows platforms. Also, the name `ifc` should not be used on Windows because there is an `ifc.exe` tool in Visual Studio that is unrelated. Fixes: #17752 diff --git a/Modules/CMakeDetermineFortranCompiler.cmake b/Modules/CMakeDetermineFortranCompiler.cmake index cf502f6..5ddd64f 100644 --- a/Modules/CMakeDetermineFortranCompiler.cmake +++ b/Modules/CMakeDetermineFortranCompiler.cmake @@ -66,12 +66,20 @@ else() # The order is 95 or newer compilers first, then 90, # then 77 or older compilers, gnu is always last in the group, # so if you paid for a compiler it is picked by default. - set(CMAKE_Fortran_COMPILER_LIST - ftn - ifort ifc af95 af90 efc f95 pathf2003 pathf95 pgf95 pgfortran lf95 xlf95 - fort flang gfortran gfortran-4 g95 f90 pathf90 pgf90 xlf90 epcf90 fort77 - frt pgf77 xlf fl32 af77 g77 f77 nag - ) + if(CMAKE_HOST_WIN32) + set(CMAKE_Fortran_COMPILER_LIST + ifort pgf95 pgfortran lf95 fort + flang gfortran gfortran-4 g95 f90 pgf90 + pgf77 g77 f77 nag + ) + else() + set(CMAKE_Fortran_COMPILER_LIST + ftn + ifort ifc efc pgf95 pgfortran lf95 xlf95 fort + flang gfortran gfortran-4 g95 f90 pgf90 + frt pgf77 xlf g77 f77 nag + ) + endif() # Vendor-specific compiler names. set(_Fortran_COMPILER_NAMES_GNU gfortran gfortran-4 g95 g77) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=83f8e764676fca5f99fb66abfdc2fa3febea36e9 commit 83f8e764676fca5f99fb66abfdc2fa3febea36e9 Author: Brad King AuthorDate: Wed Feb 21 10:02:52 2018 -0500 Commit: Brad King CommitDate: Wed Feb 21 10:13:47 2018 -0500 cmake: Fix global generator path style in --build mode Fix the `--build` code path so that `cmSystemTools::SetForceUnixPaths` is called with the global generator's path style. This makes forwarding of `--target subdir/src.c.obj` match the slash style the generator placed in the build system. Fixes: #17742 diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 5620723..f4f4a15 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -2387,17 +2387,17 @@ int cmake::Build(const std::string& dir, const std::string& target, std::cerr << "Error: could not find CMAKE_GENERATOR in Cache\n"; return 1; } - std::unique_ptr gen( - this->CreateGlobalGenerator(cachedGenerator)); - if (!gen.get()) { + cmGlobalGenerator* gen = this->CreateGlobalGenerator(cachedGenerator); + if (!gen) { std::cerr << "Error: could create CMAKE_GENERATOR \"" << cachedGenerator << "\"\n"; return 1; } + this->SetGlobalGenerator(gen); const char* cachedGeneratorInstance = this->State->GetCacheEntryValue("CMAKE_GENERATOR_INSTANCE"); if (cachedGeneratorInstance) { - cmMakefile mf(gen.get(), this->GetCurrentSnapshot()); + cmMakefile mf(gen, this->GetCurrentSnapshot()); if (!gen->SetGeneratorInstance(cachedGeneratorInstance, &mf)) { return 1; } ----------------------------------------------------------------------- Summary of changes: Modules/CMakeDetermineFortranCompiler.cmake | 20 ++++++++++++++------ Source/cmGeneratorExpressionEvaluator.h | 12 ++++++------ Source/cmGeneratorExpressionParser.cxx | 7 ++++--- Source/cmake.cxx | 8 ++++---- 4 files changed, 28 insertions(+), 19 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 23 00:05:05 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 23 Feb 2018 00:05:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-86-g1f082f2 Message-ID: <20180223050506.0488D10A71E@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 1f082f2b608a05d0a8aa1c34b36827783ce20117 (commit) from 020be379f4993cad5f2ca2066286f6f449b21f52 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1f082f2b608a05d0a8aa1c34b36827783ce20117 commit 1f082f2b608a05d0a8aa1c34b36827783ce20117 Author: Kitware Robot AuthorDate: Fri Feb 23 00:01:11 2018 -0500 Commit: Kitware Robot CommitDate: Fri Feb 23 00:01:11 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index b6f25bb..b2684f3 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180222) +set(CMake_VERSION_PATCH 20180223) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 23 08:25:08 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 23 Feb 2018 08:25:08 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-92-g4732dbf Message-ID: <20180223132508.BF06310A7A0@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 4732dbf32d783f2527478ec11fd603590c13e2a7 (commit) via f6fc689c26dcc10408f3208f1399769da06ecfc2 (commit) via c786164fe04480fef246aafd1e1c38d04a0f73fa (commit) via 481420ee89992cd8e761ce36808b3dc73ccc16d2 (commit) via 94eee5e683b80e0ffd8e0c4fd3a45b03f0f37b18 (commit) via 84de8b80ec1fcb32c0455359b9abb414b65ad17c (commit) from 1f082f2b608a05d0a8aa1c34b36827783ce20117 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4732dbf32d783f2527478ec11fd603590c13e2a7 commit 4732dbf32d783f2527478ec11fd603590c13e2a7 Merge: f6fc689 84de8b8 Author: Brad King AuthorDate: Fri Feb 23 13:20:37 2018 +0000 Commit: Kitware Robot CommitDate: Fri Feb 23 08:24:14 2018 -0500 Merge topic 'ninja-depfile-name' 84de8b80 Ninja: Use as dependency file .d if needed. Acked-by: Kitware Robot Merge-request: !1781 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f6fc689c26dcc10408f3208f1399769da06ecfc2 commit f6fc689c26dcc10408f3208f1399769da06ecfc2 Merge: c786164 481420e Author: Brad King AuthorDate: Fri Feb 23 13:19:23 2018 +0000 Commit: Kitware Robot CommitDate: Fri Feb 23 08:22:51 2018 -0500 Merge topic '14297-partial-xcode-zero-check' 481420ee Xcode: Generate ZERO_CHECK generator target only once Acked-by: Kitware Robot Merge-request: !1790 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c786164fe04480fef246aafd1e1c38d04a0f73fa commit c786164fe04480fef246aafd1e1c38d04a0f73fa Merge: 1f082f2 94eee5e Author: Brad King AuthorDate: Fri Feb 23 13:18:46 2018 +0000 Commit: Kitware Robot CommitDate: Fri Feb 23 08:19:49 2018 -0500 Merge topic 'std-thread-link' 94eee5e6 CMakeLib: Link to system thread libraries to support std::thread Acked-by: Kitware Robot Acked-by: Daniel Chabrowski Merge-request: !1789 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=481420ee89992cd8e761ce36808b3dc73ccc16d2 commit 481420ee89992cd8e761ce36808b3dc73ccc16d2 Author: Gregor Jasny AuthorDate: Wed Feb 21 23:42:55 2018 +0100 Commit: Gregor Jasny CommitDate: Thu Feb 22 21:15:48 2018 +0100 Xcode: Generate ZERO_CHECK generator target only once In case CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY has been enabled generate only the root-level ZERO_CHECK target so targets in subdirectories pick up the root generator target of ZERO_CHECK. For the case that CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY is not enabled more investigation and a proper and final fix is still needed. Issue: 14297 diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index 2a38599..d3f5aac 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -459,7 +459,11 @@ void cmGlobalXCodeGenerator::AddExtraTargets( // Add ZERO_CHECK bool regenerate = !mf->IsOn("CMAKE_SUPPRESS_REGENERATION"); - if (regenerate) { + bool generateTopLevelProjectOnly = + mf->IsOn("CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY"); + bool isTopLevel = + !root->GetStateSnapshot().GetBuildsystemDirectoryParent().IsValid(); + if (regenerate && (isTopLevel || !generateTopLevelProjectOnly)) { this->CreateReRunCMakeFile(root, gens); std::string file = this->ConvertToRelativeForMake(this->CurrentReRunCMakeMakefile.c_str()); diff --git a/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake b/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake index 64a07f0..5eff6b9 100644 --- a/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake +++ b/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake @@ -236,3 +236,17 @@ if(XCODE_VERSION VERSION_GREATER_EQUAL 8) deploymeny_target_test(${SDK}) endforeach() endif() + +function(XcodeDependOnZeroCheck) + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeDependOnZeroCheck-build) + set(RunCMake_TEST_NO_CLEAN 1) + + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + + run_cmake(XcodeDependOnZeroCheck) + run_cmake_command(XcodeDependOnZeroCheck-build ${CMAKE_COMMAND} --build . --target parentdirlib) + run_cmake_command(XcodeDependOnZeroCheck-build ${CMAKE_COMMAND} --build . --target subdirlib) +endfunction() + +XcodeDependOnZeroCheck() diff --git a/Tests/RunCMake/XcodeProject/XcodeDependOnZeroCheck-build-stdout.txt b/Tests/RunCMake/XcodeProject/XcodeDependOnZeroCheck-build-stdout.txt new file mode 100644 index 0000000..92c9a29 --- /dev/null +++ b/Tests/RunCMake/XcodeProject/XcodeDependOnZeroCheck-build-stdout.txt @@ -0,0 +1 @@ +BUILD AGGREGATE TARGET ZERO_CHECK diff --git a/Tests/RunCMake/XcodeProject/XcodeDependOnZeroCheck.cmake b/Tests/RunCMake/XcodeProject/XcodeDependOnZeroCheck.cmake new file mode 100644 index 0000000..d759a65 --- /dev/null +++ b/Tests/RunCMake/XcodeProject/XcodeDependOnZeroCheck.cmake @@ -0,0 +1,4 @@ +set(CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY TRUE) +project(XcodeDependOnZeroCheck CXX) +add_subdirectory(zerocheck) +add_library(parentdirlib foo.cpp) diff --git a/Tests/RunCMake/XcodeProject/zerocheck/CMakeLists.txt b/Tests/RunCMake/XcodeProject/zerocheck/CMakeLists.txt new file mode 100644 index 0000000..4adde99 --- /dev/null +++ b/Tests/RunCMake/XcodeProject/zerocheck/CMakeLists.txt @@ -0,0 +1,2 @@ +project(subproject) +add_library(subdirlib ../foo.cpp) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=94eee5e683b80e0ffd8e0c4fd3a45b03f0f37b18 commit 94eee5e683b80e0ffd8e0c4fd3a45b03f0f37b18 Author: Brad King AuthorDate: Thu Feb 22 12:57:29 2018 -0500 Commit: Brad King CommitDate: Thu Feb 22 12:59:20 2018 -0500 CMakeLib: Link to system thread libraries to support std::thread Some environments require linking to thread libraries for `std::thread`. Express this direct dependency of CMakeLib explicitly. Previously this was done indirectly through our bundled libuv, but that does not work when using a system libuv. Fixes: #17757 diff --git a/CMakeLists.txt b/CMakeLists.txt index e4d2a9a..6623959 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -310,6 +310,8 @@ endmacro() # Simply to improve readability of the main script. #----------------------------------------------------------------------- macro (CMAKE_BUILD_UTILITIES) + find_package(Threads) + #--------------------------------------------------------------------- # Create the kwsys library for CMake. set(KWSYS_NAMESPACE cmsys) diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index e7c0732..a0010a2 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -765,6 +765,7 @@ target_link_libraries(CMakeLib cmsys ${CMAKE_LIBUV_LIBRARIES} ${CMAKE_LIBRHASH_LIBRARIES} ${CMake_KWIML_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} ) if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR MATCHES "sparc") https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=84de8b80ec1fcb32c0455359b9abb414b65ad17c commit 84de8b80ec1fcb32c0455359b9abb414b65ad17c Author: Claus Klein AuthorDate: Tue Feb 20 21:42:50 2018 +0100 Commit: Claus Klein CommitDate: Tue Feb 20 21:42:50 2018 +0100 Ninja: Use as dependency file .d if needed. diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index f4faf47..e18959b 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -856,9 +856,27 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement( vars["FLAGS"] = this->ComputeFlagsForObject(source, language); vars["DEFINES"] = this->ComputeDefines(source, language); vars["INCLUDES"] = this->ComputeIncludes(source, language); + if (!this->NeedDepTypeMSVC(language)) { - vars["DEP_FILE"] = this->GetLocalGenerator()->ConvertToOutputFormat( - objectFileName + ".d", cmOutputConverter::SHELL); + bool replaceExt(false); + if (!language.empty()) { + std::string repVar = "CMAKE_"; + repVar += language; + repVar += "_DEPFILE_EXTENSION_REPLACE"; + replaceExt = this->Makefile->IsOn(repVar); + } + if (!replaceExt) { + // use original code + vars["DEP_FILE"] = this->GetLocalGenerator()->ConvertToOutputFormat( + objectFileName + ".d", cmOutputConverter::SHELL); + } else { + // Replace the original source file extension with the + // depend file extension. + std::string dependFileName = + cmSystemTools::GetFilenameWithoutLastExtension(objectFileName) + ".d"; + vars["DEP_FILE"] = this->GetLocalGenerator()->ConvertToOutputFormat( + objectFileDir + "/" + dependFileName, cmOutputConverter::SHELL); + } } this->ExportObjectCompileCommand( ----------------------------------------------------------------------- Summary of changes: CMakeLists.txt | 2 ++ Source/CMakeLists.txt | 1 + Source/cmGlobalXCodeGenerator.cxx | 6 +++++- Source/cmNinjaTargetGenerator.cxx | 22 ++++++++++++++++++-- Tests/RunCMake/XcodeProject/RunCMakeTest.cmake | 14 +++++++++++++ .../XcodeDependOnZeroCheck-build-stdout.txt | 1 + .../XcodeProject/XcodeDependOnZeroCheck.cmake | 4 ++++ .../RunCMake/XcodeProject/zerocheck/CMakeLists.txt | 2 ++ 8 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 Tests/RunCMake/XcodeProject/XcodeDependOnZeroCheck-build-stdout.txt create mode 100644 Tests/RunCMake/XcodeProject/XcodeDependOnZeroCheck.cmake create mode 100644 Tests/RunCMake/XcodeProject/zerocheck/CMakeLists.txt hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 23 08:55:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 23 Feb 2018 08:55:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-95-gebf0a08 Message-ID: <20180223135504.22A2210A57B@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via ebf0a0827992be5cc03e530f9dc06bd1d05c1aa6 (commit) via 72a85d9f0bbfc69c53dfd5831699d6ff46772ccd (commit) via 36fc89b7d935bd360a6e9c46681c8cf0faff745b (commit) from 4732dbf32d783f2527478ec11fd603590c13e2a7 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ebf0a0827992be5cc03e530f9dc06bd1d05c1aa6 commit ebf0a0827992be5cc03e530f9dc06bd1d05c1aa6 Merge: 4732dbf 72a85d9 Author: Brad King AuthorDate: Fri Feb 23 08:50:40 2018 -0500 Commit: Brad King CommitDate: Fri Feb 23 08:50:40 2018 -0500 Merge branch 'release-3.11' ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 23 08:55:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 23 Feb 2018 08:55:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.11.0-rc1-13-g72a85d9 Message-ID: <20180223135504.7DA1710A58A@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, release has been updated via 72a85d9f0bbfc69c53dfd5831699d6ff46772ccd (commit) via 481420ee89992cd8e761ce36808b3dc73ccc16d2 (commit) via 36fc89b7d935bd360a6e9c46681c8cf0faff745b (commit) via 94eee5e683b80e0ffd8e0c4fd3a45b03f0f37b18 (commit) from 13c5a91197dc99004e2c53864487aabdf09de936 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: CMakeLists.txt | 2 ++ Source/CMakeLists.txt | 1 + Source/cmGlobalXCodeGenerator.cxx | 6 +++++- Tests/RunCMake/XcodeProject/RunCMakeTest.cmake | 14 ++++++++++++++ .../XcodeProject/XcodeDependOnZeroCheck-build-stdout.txt | 1 + Tests/RunCMake/XcodeProject/XcodeDependOnZeroCheck.cmake | 4 ++++ Tests/RunCMake/XcodeProject/zerocheck/CMakeLists.txt | 2 ++ 7 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 Tests/RunCMake/XcodeProject/XcodeDependOnZeroCheck-build-stdout.txt create mode 100644 Tests/RunCMake/XcodeProject/XcodeDependOnZeroCheck.cmake create mode 100644 Tests/RunCMake/XcodeProject/zerocheck/CMakeLists.txt hooks/post-receive -- CMake From kwrobot at kitware.com Sat Feb 24 00:05:09 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Sat, 24 Feb 2018 00:05:09 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-96-ga4e7538 Message-ID: <20180224050509.66A4310A7BB@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via a4e7538a748ddf708f2250cd2fd472caddb1b21c (commit) from ebf0a0827992be5cc03e530f9dc06bd1d05c1aa6 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a4e7538a748ddf708f2250cd2fd472caddb1b21c commit a4e7538a748ddf708f2250cd2fd472caddb1b21c Author: Kitware Robot AuthorDate: Sat Feb 24 00:01:37 2018 -0500 Commit: Kitware Robot CommitDate: Sat Feb 24 00:01:37 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index b2684f3..1486231 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180223) +set(CMake_VERSION_PATCH 20180224) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Sun Feb 25 00:05:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Sun, 25 Feb 2018 00:05:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-97-gb595381 Message-ID: <20180225050504.A440510A514@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via b59538182285c7252b362d047c52d45312e4244b (commit) from a4e7538a748ddf708f2250cd2fd472caddb1b21c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b59538182285c7252b362d047c52d45312e4244b commit b59538182285c7252b362d047c52d45312e4244b Author: Kitware Robot AuthorDate: Sun Feb 25 00:01:07 2018 -0500 Commit: Kitware Robot CommitDate: Sun Feb 25 00:01:07 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 1486231..deea684 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180224) +set(CMake_VERSION_PATCH 20180225) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 26 00:05:05 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 26 Feb 2018 00:05:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-98-g25613b9 Message-ID: <20180226050505.6BCCF10A9E1@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 25613b9fa46e6433f987e9e9f47533db3a0939f3 (commit) from b59538182285c7252b362d047c52d45312e4244b (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=25613b9fa46e6433f987e9e9f47533db3a0939f3 commit 25613b9fa46e6433f987e9e9f47533db3a0939f3 Author: Kitware Robot AuthorDate: Mon Feb 26 00:01:05 2018 -0500 Commit: Kitware Robot CommitDate: Mon Feb 26 00:01:05 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index deea684..f1fdb60 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180225) +set(CMake_VERSION_PATCH 20180226) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 26 09:05:06 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 26 Feb 2018 09:05:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-110-gf7430b2 Message-ID: <20180226140506.154EC10B18B@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via f7430b2538211ea59d5a853148de3b282796bf6a (commit) via ba806600f721abdbb7d21e8c09d76d91cc554568 (commit) via 3bc18cd0fb0174af4e34dfc42263553e2127c4eb (commit) via e4df2313c172592cc83e4f1cd6a3f358cc07cb22 (commit) via 1f7ad8ab5c053a0c9680984eed507e0bfe68f5db (commit) via 8621a26c06f6d691b2d98fabf19f0195304ba0d1 (commit) via 8ab3660a1ed0bf213d297e4dc8a7c3548cb14555 (commit) via b6ef4bc329552eb3e4e39156c05f1e2944a88e89 (commit) via 2d1e5adaeb5827ebdd3111388f2fcda98656b8ac (commit) via a18147e93328af6754a44c72c563436efe358f42 (commit) via 076a356cd1972a149898fdba77d1dd83981447b4 (commit) via b723fe3d7d65a748ad53f77b1e0b014c673212fa (commit) from 25613b9fa46e6433f987e9e9f47533db3a0939f3 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f7430b2538211ea59d5a853148de3b282796bf6a commit f7430b2538211ea59d5a853148de3b282796bf6a Merge: ba80660 b6ef4bc Author: Brad King AuthorDate: Mon Feb 26 14:01:56 2018 +0000 Commit: Kitware Robot CommitDate: Mon Feb 26 09:02:07 2018 -0500 Merge topic 'extend_suppress_regeneration' b6ef4bc3 Document and extend the CMAKE_SUPPRESS_REGENERATION variable Acked-by: Kitware Robot Merge-request: !1792 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ba806600f721abdbb7d21e8c09d76d91cc554568 commit ba806600f721abdbb7d21e8c09d76d91cc554568 Merge: 3bc18cd 8ab3660 Author: Brad King AuthorDate: Mon Feb 26 14:00:55 2018 +0000 Commit: Kitware Robot CommitDate: Mon Feb 26 09:01:24 2018 -0500 Merge topic 'outputconverter_speedup' 8ab3660a cmOutputConverter: Inline some functions and avoid string re-allocations Acked-by: Kitware Robot Acked-by: Pavel Solodovnikov Merge-request: !1788 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3bc18cd0fb0174af4e34dfc42263553e2127c4eb commit 3bc18cd0fb0174af4e34dfc42263553e2127c4eb Merge: e4df231 2d1e5ad Author: Brad King AuthorDate: Mon Feb 26 14:00:44 2018 +0000 Commit: Kitware Robot CommitDate: Mon Feb 26 09:00:51 2018 -0500 Merge topic 'getsource_optimize' 2d1e5ada cmMakefile: Improve performance of GetSource for known files Acked-by: Kitware Robot Merge-request: !1764 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e4df2313c172592cc83e4f1cd6a3f358cc07cb22 commit e4df2313c172592cc83e4f1cd6a3f358cc07cb22 Merge: 1f7ad8a a18147e Author: Brad King AuthorDate: Mon Feb 26 13:59:24 2018 +0000 Commit: Kitware Robot CommitDate: Mon Feb 26 08:59:32 2018 -0500 Merge topic 'ipo-support' a18147e9 MSVC,Clang,Flang: Add IPO support Acked-by: Kitware Robot Merge-request: !1721 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1f7ad8ab5c053a0c9680984eed507e0bfe68f5db commit 1f7ad8ab5c053a0c9680984eed507e0bfe68f5db Merge: 8621a26 076a356 Author: Brad King AuthorDate: Mon Feb 26 13:57:16 2018 +0000 Commit: Kitware Robot CommitDate: Mon Feb 26 08:57:25 2018 -0500 Merge topic 'project-references-csharp-17678' 076a356c VS: Support C# project references Acked-by: Kitware Robot Merge-request: !1752 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8621a26c06f6d691b2d98fabf19f0195304ba0d1 commit 8621a26c06f6d691b2d98fabf19f0195304ba0d1 Merge: 25613b9 b723fe3 Author: Brad King AuthorDate: Mon Feb 26 13:55:58 2018 +0000 Commit: Kitware Robot CommitDate: Mon Feb 26 08:56:09 2018 -0500 Merge topic 'vs-cpp-improvements' b723fe3d VS: Convert loops to C++11, other C++ improvements Acked-by: Kitware Robot Merge-request: !1786 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8ab3660a1ed0bf213d297e4dc8a7c3548cb14555 commit 8ab3660a1ed0bf213d297e4dc8a7c3548cb14555 Author: Frank Winklmeier AuthorDate: Thu Feb 22 16:05:40 2018 +0100 Commit: Frank Winklmeier CommitDate: Fri Feb 23 17:23:10 2018 +0100 cmOutputConverter: Inline some functions and avoid string re-allocations Use std::string (with correct initial size) in cmOutputConverter::Shell__GetArgument instead of ostringstream. This avoids several re-allocations of the string buffer. In addition, convert some of the private static members into inline free functions to avoid function calls. diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx index 25db929..6519dd9 100644 --- a/Source/cmOutputConverter.cxx +++ b/Source/cmOutputConverter.cxx @@ -6,7 +6,7 @@ #include #include #include -#include +#include #include #include "cmAlgorithms.h" @@ -341,12 +341,14 @@ redirection character (for example, ^>, ^<, or ^| ). If you need to use the caret character itself (^), use two in a row (^^). */ -int cmOutputConverter::Shell__CharIsWhitespace(char c) +/* Some helpers to identify character classes */ +namespace { +inline int Shell__CharIsWhitespace(char c) { return ((c == ' ') || (c == '\t')); } -int cmOutputConverter::Shell__CharNeedsQuotesOnUnix(char c) +inline int Shell__CharNeedsQuotesOnUnix(char c) { return ((c == '\'') || (c == '`') || (c == ';') || (c == '#') || (c == '&') || (c == '$') || (c == '(') || (c == ')') || (c == '~') || @@ -354,12 +356,18 @@ int cmOutputConverter::Shell__CharNeedsQuotesOnUnix(char c) (c == '\\')); } -int cmOutputConverter::Shell__CharNeedsQuotesOnWindows(char c) +inline int Shell__CharNeedsQuotesOnWindows(char c) { return ((c == '\'') || (c == '#') || (c == '&') || (c == '<') || (c == '>') || (c == '|') || (c == '^')); } +inline int Shell__CharIsMakeVariableName(char c) +{ + return c && (c == '_' || isalpha((static_cast(c)))); +} +} + int cmOutputConverter::Shell__CharNeedsQuotes(char c, int flags) { /* On Windows the built-in command shell echo never needs quotes. */ @@ -386,11 +394,6 @@ int cmOutputConverter::Shell__CharNeedsQuotes(char c, int flags) return 0; } -int cmOutputConverter::Shell__CharIsMakeVariableName(char c) -{ - return c && (c == '_' || isalpha((static_cast(c)))); -} - const char* cmOutputConverter::Shell__SkipMakeVariables(const char* c) { while (*c == '$' && *(c + 1) == '(') { @@ -481,7 +484,9 @@ int cmOutputConverter::Shell__ArgumentNeedsQuotes(const char* in, int flags) std::string cmOutputConverter::Shell__GetArgument(const char* in, int flags) { - std::ostringstream out; + /* Output will be at least as long as input string. */ + std::string out; + out.reserve(strlen(in)); /* String iterator. */ const char* c; @@ -495,11 +500,11 @@ std::string cmOutputConverter::Shell__GetArgument(const char* in, int flags) /* Add the opening quote for this argument. */ if (flags & Shell_Flag_WatcomQuote) { if (flags & Shell_Flag_IsUnix) { - out << '"'; + out += '"'; } - out << '\''; + out += '\''; } else { - out << '"'; + out += '"'; } } @@ -511,7 +516,7 @@ std::string cmOutputConverter::Shell__GetArgument(const char* in, int flags) if (skip != c) { /* Copy to the end of the make variable references. */ while (c != skip) { - out << *c++; + out += *c++; } /* The make variable reference eliminates any escaping needed @@ -531,7 +536,7 @@ std::string cmOutputConverter::Shell__GetArgument(const char* in, int flags) quoted argument. */ if (*c == '\\' || *c == '"' || *c == '`' || *c == '$') { /* This character needs a backslash to escape it. */ - out << '\\'; + out += '\\'; } } else if (flags & Shell_Flag_EchoWindows) { /* On Windows the built-in command shell echo never needs escaping. */ @@ -545,11 +550,11 @@ std::string cmOutputConverter::Shell__GetArgument(const char* in, int flags) backslashes. */ while (windows_backslashes > 0) { --windows_backslashes; - out << '\\'; + out += '\\'; } /* Add the backslash to escape the double-quote. */ - out << '\\'; + out += '\\'; } else { /* We encountered a normal character. This eliminates any escaping needed for preceding backslashes. */ @@ -562,7 +567,7 @@ std::string cmOutputConverter::Shell__GetArgument(const char* in, int flags) if (flags & Shell_Flag_Make) { /* In Makefiles a dollar is written $$. The make tool will replace it with just $ before passing it to the shell. */ - out << "$$"; + out += "$$"; } else if (flags & Shell_Flag_VSIDE) { /* In a VS IDE a dollar is written "$". If this is written in an un-quoted argument it starts a quoted segment, inserts @@ -570,30 +575,30 @@ std::string cmOutputConverter::Shell__GetArgument(const char* in, int flags) argument it ends quoting, inserts the $ and restarts quoting. Either way the $ is isolated from surrounding text to avoid looking like a variable reference. */ - out << "\"$\""; + out += "\"$\""; } else { /* Otherwise a dollar is written just $. */ - out << '$'; + out += '$'; } } else if (*c == '#') { if ((flags & Shell_Flag_Make) && (flags & Shell_Flag_WatcomWMake)) { /* In Watcom WMake makefiles a pound is written $#. The make tool will replace it with just # before passing it to the shell. */ - out << "$#"; + out += "$#"; } else { /* Otherwise a pound is written just #. */ - out << '#'; + out += '#'; } } else if (*c == '%') { if ((flags & Shell_Flag_VSIDE) || ((flags & Shell_Flag_Make) && ((flags & Shell_Flag_MinGWMake) || (flags & Shell_Flag_NMake)))) { /* In the VS IDE, NMake, or MinGW make a percent is written %%. */ - out << "%%"; + out += "%%"; } else { /* Otherwise a percent is written just %. */ - out << '%'; + out += '%'; } } else if (*c == ';') { if (flags & Shell_Flag_VSIDE) { @@ -602,14 +607,14 @@ std::string cmOutputConverter::Shell__GetArgument(const char* in, int flags) inserts the ; and ends the segment. If it is written in a quoted argument it ends quoting, inserts the ; and restarts quoting. Either way the ; is isolated. */ - out << "\";\""; + out += "\";\""; } else { /* Otherwise a semicolon is written just ;. */ - out << ';'; + out += ';'; } } else { /* Store this character. */ - out << *c; + out += *c; } } @@ -617,19 +622,19 @@ std::string cmOutputConverter::Shell__GetArgument(const char* in, int flags) /* Add enough backslashes to escape any trailing ones. */ while (windows_backslashes > 0) { --windows_backslashes; - out << '\\'; + out += '\\'; } /* Add the closing quote for this argument. */ if (flags & Shell_Flag_WatcomQuote) { - out << '\''; + out += '\''; if (flags & Shell_Flag_IsUnix) { - out << '"'; + out += '"'; } } else { - out << '"'; + out += '"'; } } - return out.str(); + return out; } diff --git a/Source/cmOutputConverter.h b/Source/cmOutputConverter.h index ae15055..ed7143c 100644 --- a/Source/cmOutputConverter.h +++ b/Source/cmOutputConverter.h @@ -117,11 +117,7 @@ public: private: cmState* GetState() const; - static int Shell__CharIsWhitespace(char c); - static int Shell__CharNeedsQuotesOnUnix(char c); - static int Shell__CharNeedsQuotesOnWindows(char c); static int Shell__CharNeedsQuotes(char c, int flags); - static int Shell__CharIsMakeVariableName(char c); static const char* Shell__SkipMakeVariables(const char* c); static int Shell__ArgumentNeedsQuotes(const char* in, int flags); static std::string Shell__GetArgument(const char* in, int flags); https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b6ef4bc329552eb3e4e39156c05f1e2944a88e89 commit b6ef4bc329552eb3e4e39156c05f1e2944a88e89 Author: Shane Parris AuthorDate: Fri Feb 23 08:56:22 2018 -0500 Commit: Shane Parris CommitDate: Fri Feb 23 11:20:15 2018 -0500 Document and extend the CMAKE_SUPPRESS_REGENERATION variable Fixes: https://gitlab.kitware.com/cmake/cmake/issues/16815 diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index 3ac5123..13a72df 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -178,6 +178,7 @@ Variables that Change Behavior /variable/CMAKE_STAGING_PREFIX /variable/CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS /variable/CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE + /variable/CMAKE_SUPPRESS_REGENERATION /variable/CMAKE_SYSROOT /variable/CMAKE_SYSROOT_COMPILE /variable/CMAKE_SYSROOT_LINK diff --git a/Help/release/dev/variable-CMAKE_SUPPRESS_REGENERATION.rst b/Help/release/dev/variable-CMAKE_SUPPRESS_REGENERATION.rst new file mode 100644 index 0000000..dfe678c --- /dev/null +++ b/Help/release/dev/variable-CMAKE_SUPPRESS_REGENERATION.rst @@ -0,0 +1,6 @@ +variable-CMAKE_SUPPRESS_REGENERATION +------------------------------------ + +* The :variable:`CMAKE_SUPPRESS_REGENERATION` variable was extended to support the + :generator:`Ninja` and :ref:`Makefile Generators`. +* The :variable:`CMAKE_SUPPRESS_REGENERATION` variable is now documented. diff --git a/Help/variable/CMAKE_SUPPRESS_REGENERATION.rst b/Help/variable/CMAKE_SUPPRESS_REGENERATION.rst new file mode 100644 index 0000000..ed47e1a --- /dev/null +++ b/Help/variable/CMAKE_SUPPRESS_REGENERATION.rst @@ -0,0 +1,11 @@ +CMAKE_SUPPRESS_REGENERATION +--------------------------- + +If CMAKE_SUPPRESS_REGENERATION is ``OFF``, which is default, then CMake adds a +special target on which all other targets depend that checks the build system +and optionally re-runs CMake to regenerate the build system when the target +specification source changes. + +If this variable evaluates to ``ON`` at the end of the top-level +``CMakeLists.txt`` file, CMake will not add the regeneration target to the +build system or perform any build system checks. diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 8410609..55a403e 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -1223,11 +1223,13 @@ void cmGlobalNinjaGenerator::WriteUnknownExplicitDependencies(std::ostream& os) for (std::string const& file : files) { knownDependencies.insert(this->ConvertToNinjaPath(file)); } - // get list files which are implicit dependencies as well and will be phony - // for rebuild manifest - std::vector const& lf = lg->GetMakefile()->GetListFiles(); - for (std::string const& j : lf) { - knownDependencies.insert(this->ConvertToNinjaPath(j)); + if (!this->GlobalSettingIsOn("CMAKE_SUPPRESS_REGENERATION")) { + // get list files which are implicit dependencies as well and will be + // phony for rebuild manifest + std::vector const& lf = lg->GetMakefile()->GetListFiles(); + for (std::string const& j : lf) { + knownDependencies.insert(this->ConvertToNinjaPath(j)); + } } std::vector const& ef = lg->GetMakefile()->GetEvaluationFiles(); @@ -1335,6 +1337,9 @@ void cmGlobalNinjaGenerator::WriteTargetAll(std::ostream& os) void cmGlobalNinjaGenerator::WriteTargetRebuildManifest(std::ostream& os) { + if (this->GlobalSettingIsOn("CMAKE_SUPPRESS_REGENERATION")) { + return; + } cmLocalGenerator* lg = this->LocalGenerators[0]; std::ostringstream cmd; diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index d990a6c..43032fb 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -256,6 +256,10 @@ void cmGlobalUnixMakefileGenerator3::WriteMainMakefile2() void cmGlobalUnixMakefileGenerator3::WriteMainCMakefile() { + if (this->GlobalSettingIsOn("CMAKE_SUPPRESS_REGENERATION")) { + return; + } + // Open the output file. This should not be copy-if-different // because the check-build-system step compares the makefile time to // see if the build system must be regenerated. @@ -525,7 +529,10 @@ void cmGlobalUnixMakefileGenerator3::WriteConvenienceRules( std::vector depends; std::vector commands; - depends.push_back("cmake_check_build_system"); + bool regenerate = !this->GlobalSettingIsOn("CMAKE_SUPPRESS_REGENERATION"); + if (regenerate) { + depends.push_back("cmake_check_build_system"); + } // write the target convenience rules for (cmLocalGenerator* localGen : this->LocalGenerators) { @@ -558,7 +565,9 @@ void cmGlobalUnixMakefileGenerator3::WriteConvenienceRules( tmp += "Makefile2"; commands.push_back(lg->GetRecursiveMakeCall(tmp.c_str(), name)); depends.clear(); - depends.push_back("cmake_check_build_system"); + if (regenerate) { + depends.push_back("cmake_check_build_system"); + } lg->WriteMakeRule(ruleFileStream, "Build rule for target.", name, depends, commands, true); @@ -609,7 +618,10 @@ void cmGlobalUnixMakefileGenerator3::WriteConvenienceRules2( // write the directory level rules for this local gen this->WriteDirectoryRules2(ruleFileStream, lg); - depends.push_back("cmake_check_build_system"); + bool regenerate = !this->GlobalSettingIsOn("CMAKE_SUPPRESS_REGENERATION"); + if (regenerate) { + depends.push_back("cmake_check_build_system"); + } // for each target Generate the rule files for each target. const std::vector& targets = lg->GetGeneratorTargets(); @@ -715,7 +727,9 @@ void cmGlobalUnixMakefileGenerator3::WriteConvenienceRules2( commands.push_back(progCmd.str()); } depends.clear(); - depends.push_back("cmake_check_build_system"); + if (regenerate) { + depends.push_back("cmake_check_build_system"); + } localName = lg->GetRelativeTargetDirectory(gtarget); localName += "/rule"; lg->WriteMakeRule(ruleFileStream, @@ -898,7 +912,9 @@ void cmGlobalUnixMakefileGenerator3::WriteHelpRule( "for this Makefile:"); lg->AppendEcho(commands, "... all (the default if no target is provided)"); lg->AppendEcho(commands, "... clean"); - lg->AppendEcho(commands, "... depend"); + if (!this->GlobalSettingIsOn("CMAKE_SUPPRESS_REGENERATION")) { + lg->AppendEcho(commands, "... depend"); + } // Keep track of targets already listed. std::set emittedTargets; diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx index ab8ad70..87804ff 100644 --- a/Source/cmGlobalVisualStudio8Generator.cxx +++ b/Source/cmGlobalVisualStudio8Generator.cxx @@ -217,7 +217,7 @@ bool cmGlobalVisualStudio8Generator::AddCheckTarget() cmMakefile* mf = lg->GetMakefile(); // Skip the target if no regeneration is to be done. - if (mf->IsOn("CMAKE_SUPPRESS_REGENERATION")) { + if (this->GlobalSettingIsOn("CMAKE_SUPPRESS_REGENERATION")) { return false; } diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index d3f5aac..0d5dad2 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -458,7 +458,7 @@ void cmGlobalXCodeGenerator::AddExtraTargets( makeHelper.push_back(""); // placeholder, see below // Add ZERO_CHECK - bool regenerate = !mf->IsOn("CMAKE_SUPPRESS_REGENERATION"); + bool regenerate = !this->GlobalSettingIsOn("CMAKE_SUPPRESS_REGENERATION"); bool generateTopLevelProjectOnly = mf->IsOn("CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY"); bool isTopLevel = diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index ddd8cc4..c9237a8 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -760,7 +760,8 @@ void cmLocalUnixMakefileGenerator3::WriteSpecialTargetsBottom( // Write special "cmake_check_build_system" target to run cmake with // the --check-build-system flag. - { + if (!this->GlobalGenerator->GlobalSettingIsOn( + "CMAKE_SUPPRESS_REGENERATION")) { // Build command to run CMake to check if anything needs regenerating. std::string cmakefileName = cmake::GetCMakeFilesDirectoryPostSlash(); cmakefileName += "Makefile.cmake"; @@ -1580,7 +1581,11 @@ void cmLocalUnixMakefileGenerator3::WriteLocalAllRules( std::string recursiveTarget = this->GetCurrentBinaryDirectory(); recursiveTarget += "/all"; - depends.push_back("cmake_check_build_system"); + bool regenerate = + !this->GlobalGenerator->GlobalSettingIsOn("CMAKE_SUPPRESS_REGENERATION"); + if (regenerate) { + depends.push_back("cmake_check_build_system"); + } std::string progressDir = this->GetBinaryDirectory(); progressDir += cmake::GetCMakeFilesDirectory(); @@ -1643,7 +1648,7 @@ void cmLocalUnixMakefileGenerator3::WriteLocalAllRules( if (!noall || cmSystemTools::IsOff(noall)) { // Drive the build before installing. depends.push_back("all"); - } else { + } else if (regenerate) { // At least make sure the build system is up to date. depends.push_back("cmake_check_build_system"); } @@ -1657,24 +1662,26 @@ void cmLocalUnixMakefileGenerator3::WriteLocalAllRules( this->WriteMakeRule(ruleFileStream, "Prepare targets for installation.", "preinstall/fast", depends, commands, true); - // write the depend rule, really a recompute depends rule - depends.clear(); - commands.clear(); - std::string cmakefileName = cmake::GetCMakeFilesDirectoryPostSlash(); - cmakefileName += "Makefile.cmake"; - { - std::string runRule = - "$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)"; - runRule += " --check-build-system "; - runRule += - this->ConvertToOutputFormat(cmakefileName, cmOutputConverter::SHELL); - runRule += " 1"; - commands.push_back(std::move(runRule)); + if (regenerate) { + // write the depend rule, really a recompute depends rule + depends.clear(); + commands.clear(); + std::string cmakefileName = cmake::GetCMakeFilesDirectoryPostSlash(); + cmakefileName += "Makefile.cmake"; + { + std::string runRule = + "$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)"; + runRule += " --check-build-system "; + runRule += + this->ConvertToOutputFormat(cmakefileName, cmOutputConverter::SHELL); + runRule += " 1"; + commands.push_back(std::move(runRule)); + } + this->CreateCDCommand(commands, this->GetBinaryDirectory(), + this->GetCurrentBinaryDirectory()); + this->WriteMakeRule(ruleFileStream, "clear depends", "depend", depends, + commands, true); } - this->CreateCDCommand(commands, this->GetBinaryDirectory(), - this->GetCurrentBinaryDirectory()); - this->WriteMakeRule(ruleFileStream, "clear depends", "depend", depends, - commands, true); } void cmLocalUnixMakefileGenerator3::ClearDependencies(cmMakefile* mf, diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 98b1c44..16d5381 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -210,7 +210,8 @@ void cmLocalVisualStudio7Generator::CreateSingleVCProj( cmSourceFile* cmLocalVisualStudio7Generator::CreateVCProjBuildRule() { - if (this->Makefile->IsOn("CMAKE_SUPPRESS_REGENERATION")) { + if (this->GlobalGenerator->GlobalSettingIsOn( + "CMAKE_SUPPRESS_REGENERATION")) { return nullptr; } https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2d1e5adaeb5827ebdd3111388f2fcda98656b8ac commit 2d1e5adaeb5827ebdd3111388f2fcda98656b8ac Author: Frank Winklmeier AuthorDate: Tue Feb 13 18:18:50 2018 +0100 Commit: Frank Winklmeier CommitDate: Fri Feb 23 17:06:28 2018 +0100 cmMakefile: Improve performance of GetSource for known files Store "Known" files separately in KnownFileSearchIndex. This avoids creating the rather expensive cmSourceFileLocation object for source files that are already known. For large projects this results in a factor 3-4 speedup of cmGlobalGenerator::Compute(). diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 82c6e81..47d75af 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -3138,6 +3138,14 @@ void cmMakefile::SetArgcArgv(const std::vector& args) cmSourceFile* cmMakefile::GetSource(const std::string& sourceName, cmSourceFileLocationKind kind) const { + // First check "Known" paths (avoids the creation of cmSourceFileLocation) + if (kind == cmSourceFileLocationKind::Known) { + auto sfsi = this->KnownFileSearchIndex.find(sourceName); + if (sfsi != this->KnownFileSearchIndex.end()) { + return sfsi->second; + } + } + cmSourceFileLocation sfl(this, sourceName, kind); auto name = this->GetCMakeInstance()->StripExtension(sfl.GetName()); #if defined(_WIN32) || defined(__APPLE__) @@ -3170,6 +3178,10 @@ cmSourceFile* cmMakefile::CreateSource(const std::string& sourceName, name = cmSystemTools::LowerCase(name); #endif this->SourceFileSearchIndex[name].push_back(sf); + // for "Known" paths add direct lookup (used for faster lookup in GetSource) + if (kind == cmSourceFileLocationKind::Known) { + this->KnownFileSearchIndex[sourceName] = sf; + } return sf; } diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 5a30790..95ba53a 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -861,6 +861,9 @@ protected: typedef std::unordered_map SourceFileMap; SourceFileMap SourceFileSearchIndex; + // For "Known" paths we can store a direct filename to cmSourceFile map + std::unordered_map KnownFileSearchIndex; + // Tests std::map Tests; https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a18147e93328af6754a44c72c563436efe358f42 commit a18147e93328af6754a44c72c563436efe358f42 Author: xoviat AuthorDate: Tue Jan 30 13:34:02 2018 -0600 Commit: Brad King CommitDate: Fri Feb 23 10:27:57 2018 -0500 MSVC,Clang,Flang: Add IPO support Fixes: #17692 diff --git a/Modules/Platform/Windows-MSVC.cmake b/Modules/Platform/Windows-MSVC.cmake index 0737c12..a1f54c0 100644 --- a/Modules/Platform/Windows-MSVC.cmake +++ b/Modules/Platform/Windows-MSVC.cmake @@ -293,6 +293,34 @@ macro(__windows_compiler_msvc lang) set(CMAKE_${lang}_LINK_EXECUTABLE "${_CMAKE_VS_LINK_EXE} ${CMAKE_CL_NOLOGO} ${CMAKE_START_TEMP_FILE} /out: /implib: /pdb: /version:.${_PLATFORM_LINK_FLAGS} ${CMAKE_END_TEMP_FILE}") + if("x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xMSVC") + set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES) + set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES) + + set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "/GL") + set(CMAKE_${lang}_LINK_OPTIONS_IPO "/INCREMENTAL:NO" "/LTCG") + string(REPLACE " " "/LTCG " + CMAKE_${lang}_CREATE_STATIC_LIBRARY_IPO "${CMAKE_${lang}_CREATE_STATIC_LIBRARY}") + elseif("x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xClang" OR + "x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xFlang") + set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES) + set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES) + + # '-flto=thin' available since Clang 3.9 and Xcode 8 + # * http://clang.llvm.org/docs/ThinLTO.html#clang-llvm + # * https://trac.macports.org/wiki/XcodeVersionInfo + set(_CMAKE_LTO_THIN TRUE) + if(CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.9) + set(_CMAKE_LTO_THIN FALSE) + endif() + + if(_CMAKE_LTO_THIN) + set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-flto=thin") + else() + set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-flto") + endif() + endif() + if("x${lang}" STREQUAL "xC" OR "x${lang}" STREQUAL "xCXX") if(CMAKE_VS_PLATFORM_TOOLSET MATCHES "v[0-9]+_clang_.*") https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=076a356cd1972a149898fdba77d1dd83981447b4 commit 076a356cd1972a149898fdba77d1dd83981447b4 Author: Robert Dailey AuthorDate: Mon Feb 5 15:43:25 2018 -0600 Commit: Robert Dailey CommitDate: Fri Feb 23 08:53:17 2018 -0600 VS: Support C# project references When specifying a pure C# target in the `target_link_libraries()` call to another C++ target, a `` was setup for it (we wanted this) but also a corresponding `.lib` was added under `` (we didn't want this). This change introduces a check that prevents `.lib` linker options from being used when the corresponding target for that library is a C# target. Fixes: #17678 diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index a4570e1..fa7dc51 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -737,26 +737,24 @@ bool cmGlobalVisualStudioGenerator::TargetIsFortranOnly( bool cmGlobalVisualStudioGenerator::TargetIsCSharpOnly( cmGeneratorTarget const* gt) { - // check to see if this is a C# build - std::set languages; - { - // Issue diagnostic if the source files depend on the config. - std::vector sources; - if (!gt->GetConfigCommonSourceFiles(sources)) { - return false; - } - // Only "real" targets are allowed to be C# targets. - if (gt->Target->GetType() > cmStateEnums::OBJECT_LIBRARY) { - return false; - } + // C# targets can be defined with add_library() (using SHARED or STATIC) and + // also using add_executable(). We do not treat imported C# targets the same + // (these come in as UTILITY) + if (gt->GetType() != cmStateEnums::SHARED_LIBRARY && + gt->GetType() != cmStateEnums::STATIC_LIBRARY && + gt->GetType() != cmStateEnums::EXECUTABLE) { + return false; } - gt->GetLanguages(languages, ""); - if (languages.size() == 1) { - if (*languages.begin() == "CSharp") { - return true; - } + + // Issue diagnostic if the source files depend on the config. + std::vector sources; + if (!gt->GetConfigCommonSourceFiles(sources)) { + return false; } - return false; + + std::set languages; + gt->GetLanguages(languages, ""); + return languages.size() == 1 && languages.count("CSharp") > 0; } bool cmGlobalVisualStudioGenerator::TargetCanBeReferenced( diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 92d67db..48a5c0a 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -3451,6 +3451,17 @@ void cmVisualStudio10TargetGenerator::AddLibraries( std::string currentBinDir = this->LocalGenerator->GetCurrentBinaryDirectory(); for (cmComputeLinkInformation::Item const& l : libs) { + // Do not allow C# targets to be added to the LIB listing. LIB files are + // used for linking C++ dependencies. C# libraries do not have lib files. + // Instead, they compile down to C# reference libraries (DLL files). The + // `` elements added to the vcxproj are enough for the + // IDE to deduce the DLL file required by other C# projects that need its + // reference library. + if (l.Target && + cmGlobalVisualStudioGenerator::TargetIsCSharpOnly(l.Target)) { + continue; + } + if (l.IsPath) { std::string path = this->LocalGenerator->ConvertToRelativePath(currentBinDir, l.Value); diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 93837dd..0ce6d72 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -348,6 +348,7 @@ if(BUILD_TESTING) if(${CMAKE_GENERATOR} MATCHES "Visual Studio ([^89]|[89][0-9])") ADD_TEST_MACRO(CSharpOnly CSharpOnly) ADD_TEST_MACRO(CSharpLinkToCxx CSharpLinkToCxx) + ADD_TEST_MACRO(CSharpLinkFromCxx CSharpLinkFromCxx) endif() ADD_TEST_MACRO(COnly COnly) diff --git a/Tests/CSharpLinkFromCxx/.gitattributes b/Tests/CSharpLinkFromCxx/.gitattributes new file mode 100644 index 0000000..57a3904 --- /dev/null +++ b/Tests/CSharpLinkFromCxx/.gitattributes @@ -0,0 +1 @@ +UsefulManagedCppClass.* -format.clang-format diff --git a/Tests/CSharpLinkFromCxx/CMakeLists.txt b/Tests/CSharpLinkFromCxx/CMakeLists.txt new file mode 100644 index 0000000..9a1a993 --- /dev/null +++ b/Tests/CSharpLinkFromCxx/CMakeLists.txt @@ -0,0 +1,19 @@ +# Take a C# shared library and link it to a managed C++ shared library +cmake_minimum_required(VERSION 3.10) +project (CSharpLinkFromCxx CXX CSharp) + +add_library(CSharpLibrary SHARED UsefulCSharpClass.cs) + +# we have to change the default flags for the +# managed C++ project to build +string(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) +string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}) + +# The C# project is a dependency of the C++/CLI project +add_library(ManagedCppLibrary SHARED UsefulManagedCppClass.cpp UsefulManagedCppClass.hpp) +target_compile_options(ManagedCppLibrary PRIVATE "/clr") +target_link_libraries(ManagedCppLibrary PUBLIC CSharpLibrary) + +# Main executable for the test framework +add_executable(CSharpLinkFromCxx CSharpLinkFromCxx.cs) +target_link_libraries(CSharpLinkFromCxx PRIVATE ManagedCppLibrary) diff --git a/Tests/CSharpLinkFromCxx/CSharpLinkFromCxx.cs b/Tests/CSharpLinkFromCxx/CSharpLinkFromCxx.cs new file mode 100644 index 0000000..31a74eb --- /dev/null +++ b/Tests/CSharpLinkFromCxx/CSharpLinkFromCxx.cs @@ -0,0 +1,16 @@ +using System; +using CSharpLibrary; + +namespace CSharpLinkFromCxx +{ + internal class CSharpLinkFromCxx + { + public static void Main(string[] args) + { + Console.WriteLine("Starting test for CSharpLinkFromCxx"); + + var useful = new UsefulManagedCppClass(); + useful.RunTest(); + } + } +} diff --git a/Tests/CSharpLinkFromCxx/UsefulCSharpClass.cs b/Tests/CSharpLinkFromCxx/UsefulCSharpClass.cs new file mode 100644 index 0000000..749e57d --- /dev/null +++ b/Tests/CSharpLinkFromCxx/UsefulCSharpClass.cs @@ -0,0 +1,12 @@ +using System; + +namespace CSharpLibrary +{ + public class UsefulCSharpClass + { + public string GetSomethingUseful() + { + return "Something Useful"; + } + } +} diff --git a/Tests/CSharpLinkFromCxx/UsefulManagedCppClass.cpp b/Tests/CSharpLinkFromCxx/UsefulManagedCppClass.cpp new file mode 100644 index 0000000..9468812 --- /dev/null +++ b/Tests/CSharpLinkFromCxx/UsefulManagedCppClass.cpp @@ -0,0 +1,15 @@ +#include "UsefulManagedCppClass.hpp" + +namespace CSharpLibrary +{ + UsefulManagedCppClass::UsefulManagedCppClass() + { + auto useful = gcnew UsefulCSharpClass(); + m_usefulString = useful->GetSomethingUseful(); + } + + void UsefulManagedCppClass::RunTest() + { + Console::WriteLine("Printing from Managed CPP Class: " + m_usefulString); + } +} diff --git a/Tests/CSharpLinkFromCxx/UsefulManagedCppClass.hpp b/Tests/CSharpLinkFromCxx/UsefulManagedCppClass.hpp new file mode 100644 index 0000000..def7cea --- /dev/null +++ b/Tests/CSharpLinkFromCxx/UsefulManagedCppClass.hpp @@ -0,0 +1,16 @@ +using namespace System; + +namespace CSharpLibrary +{ + public ref class UsefulManagedCppClass + { + public: + + UsefulManagedCppClass(); + void RunTest(); + + private: + + String^ m_usefulString; + }; +} https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b723fe3d7d65a748ad53f77b1e0b014c673212fa commit b723fe3d7d65a748ad53f77b1e0b014c673212fa Author: Vitaly Stakhovsky AuthorDate: Wed Feb 21 21:18:59 2018 -0500 Commit: Vitaly Stakhovsky CommitDate: Wed Feb 21 21:18:59 2018 -0500 VS: Convert loops to C++11, other C++ improvements diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 92d67db..f38bf73 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -856,10 +856,7 @@ void cmVisualStudio10TargetGenerator::WriteTargetSpecificReferences() void cmVisualStudio10TargetGenerator::WriteTargetsFileReferences() { - for (std::vector::iterator i = - this->TargetsFileAndConfigsVec.begin(); - i != this->TargetsFileAndConfigsVec.end(); ++i) { - TargetsFileAndConfigs const& tac = *i; + for (TargetsFileAndConfigs const& tac : this->TargetsFileAndConfigsVec) { this->WriteString("BuildFileStream) << tac.File << "\" "; (*this->BuildFileStream) << "Condition=\""; @@ -894,10 +891,9 @@ void cmVisualStudio10TargetGenerator::WriteWinRTReferences() } if (!references.empty()) { this->WriteString("\n", 1); - for (std::vector::iterator ri = references.begin(); - ri != references.end(); ++ri) { + for (std::string const& ri : references) { this->WriteString("BuildFileStream) << cmVS10EscapeXML(*ri) << "\">\n"; + (*this->BuildFileStream) << cmVS10EscapeXML(ri) << "\">\n"; this->WriteString("true\n", 3); this->WriteString("\n", 2); } @@ -910,13 +906,11 @@ void cmVisualStudio10TargetGenerator::WriteWinRTReferences() void cmVisualStudio10TargetGenerator::WriteProjectConfigurations() { this->WriteString("\n", 1); - for (std::vector::const_iterator i = - this->Configurations.begin(); - i != this->Configurations.end(); ++i) { + for (std::string const& c : this->Configurations) { this->WriteString("BuildFileStream) << *i << "|" << this->Platform << "\">\n"; + (*this->BuildFileStream) << c << "|" << this->Platform << "\">\n"; this->WriteString("", 3); - (*this->BuildFileStream) << *i << "\n"; + (*this->BuildFileStream) << c << "\n"; this->WriteString("", 3); (*this->BuildFileStream) << cmVS10EscapeXML(this->Platform) << "\n"; @@ -927,10 +921,8 @@ void cmVisualStudio10TargetGenerator::WriteProjectConfigurations() void cmVisualStudio10TargetGenerator::WriteProjectConfigurationValues() { - for (std::vector::const_iterator i = - this->Configurations.begin(); - i != this->Configurations.end(); ++i) { - this->WritePlatformConfigTag("PropertyGroup", *i, 1, + for (std::string const& c : this->Configurations) { + this->WritePlatformConfigTag("PropertyGroup", c, 1, " Label=\"Configuration\"", "\n"); if (this->ProjectType != csproj) { @@ -977,12 +969,12 @@ void cmVisualStudio10TargetGenerator::WriteProjectConfigurationValues() if (this->MSTools) { if (!this->Managed) { - this->WriteMSToolConfigurationValues(*i); + this->WriteMSToolConfigurationValues(c); } else { - this->WriteMSToolConfigurationValuesManaged(*i); + this->WriteMSToolConfigurationValuesManaged(c); } } else if (this->NsightTegra) { - this->WriteNsightTegraConfigurationValues(*i); + this->WriteNsightTegraConfigurationValues(c); } this->WriteString("\n", 1); @@ -1132,10 +1124,8 @@ void cmVisualStudio10TargetGenerator::WriteCustomCommands() this->CSharpCustomCommandNames.clear(); std::vector customCommands; this->GeneratorTarget->GetCustomCommands(customCommands, ""); - for (std::vector::const_iterator si = - customCommands.begin(); - si != customCommands.end(); ++si) { - this->WriteCustomCommand(*si); + for (cmSourceFile const* si : customCommands) { + this->WriteCustomCommand(si); } // Add CMakeLists.txt file with rule to re-run CMake for user convenience. @@ -1154,9 +1144,8 @@ void cmVisualStudio10TargetGenerator::WriteCustomCommand( if (this->SourcesVisited.insert(sf).second) { if (std::vector const* depends = this->GeneratorTarget->GetSourceDepends(sf)) { - for (std::vector::const_iterator di = depends->begin(); - di != depends->end(); ++di) { - this->WriteCustomCommand(*di); + for (cmSourceFile const* di : *depends) { + this->WriteCustomCommand(di); } } if (cmCustomCommand const* command = sf->GetCustomCommand()) { @@ -1179,10 +1168,10 @@ void cmVisualStudio10TargetGenerator::WriteCustomRule( // VS 10 will always rebuild a custom command attached to a .rule // file that doesn't exist so create the file explicitly. if (source->GetPropertyAsBool("__CMAKE_RULE")) { - if (!cmSystemTools::FileExists(sourcePath.c_str())) { + if (!cmSystemTools::FileExists(sourcePath)) { // Make sure the path exists for the file std::string path = cmSystemTools::GetFilenamePath(sourcePath); - cmSystemTools::MakeDirectory(path.c_str()); + cmSystemTools::MakeDirectory(path); cmsys::ofstream fout(sourcePath.c_str()); if (fout) { fout << "# generated from CMake\n"; @@ -1216,20 +1205,17 @@ void cmVisualStudio10TargetGenerator::WriteCustomRule( this->WriteString("\n", 2); this->WriteString("\n", 1); } - for (std::vector::const_iterator i = - this->Configurations.begin(); - i != this->Configurations.end(); ++i) { - cmCustomCommandGenerator ccg(command, *i, lg); + for (std::string const& c : this->Configurations) { + cmCustomCommandGenerator ccg(command, c, lg); std::string comment = lg->ConstructComment(ccg); comment = cmVS10EscapeComment(comment); std::string script = cmVS10EscapeXML(lg->ConstructScript(ccg)); // input files for custom command std::stringstream inputs; inputs << cmVS10EscapeXML(source->GetFullPath()); - for (std::vector::const_iterator d = ccg.GetDepends().begin(); - d != ccg.GetDepends().end(); ++d) { + for (std::string const& d : ccg.GetDepends()) { std::string dep; - if (lg->GetRealDependency(*d, *i, dep)) { + if (lg->GetRealDependency(d, c, dep)) { ConvertToWindowsSlash(dep); inputs << ";" << cmVS10EscapeXML(dep); } @@ -1237,15 +1223,14 @@ void cmVisualStudio10TargetGenerator::WriteCustomRule( // output files for custom command std::stringstream outputs; const char* sep = ""; - for (std::vector::const_iterator o = ccg.GetOutputs().begin(); - o != ccg.GetOutputs().end(); ++o) { - std::string out = *o; + for (std::string const& o : ccg.GetOutputs()) { + std::string out = o; ConvertToWindowsSlash(out); outputs << sep << cmVS10EscapeXML(out); sep = ";"; } if (this->ProjectType == csproj) { - std::string name = "CustomCommand_" + *i + "_" + + std::string name = "CustomCommand_" + c + "_" + cmSystemTools::ComputeStringMD5(sourcePath); std::string inputs_s = inputs.str(); std::string outputs_s = outputs.str(); @@ -1253,10 +1238,10 @@ void cmVisualStudio10TargetGenerator::WriteCustomRule( script = cmVS10EscapeQuotes(script); inputs_s = cmVS10EscapeQuotes(inputs_s); outputs_s = cmVS10EscapeQuotes(outputs_s); - this->WriteCustomRuleCSharp(*i, name, script, inputs_s, outputs_s, + this->WriteCustomRuleCSharp(c, name, script, inputs_s, outputs_s, comment); } else { - this->WriteCustomRuleCpp(*i, script, inputs.str(), outputs.str(), + this->WriteCustomRuleCpp(c, script, inputs.str(), outputs.str(), comment); } } @@ -1314,8 +1299,8 @@ std::string cmVisualStudio10TargetGenerator::ConvertPath( { return forceRelative ? cmSystemTools::RelativePath( - this->LocalGenerator->GetCurrentBinaryDirectory(), path.c_str()) - : path.c_str(); + this->LocalGenerator->GetCurrentBinaryDirectory(), path) + : path; } static void ConvertToWindowsSlash(std::string& s) @@ -1341,10 +1326,8 @@ void cmVisualStudio10TargetGenerator::WriteGroups() this->GeneratorTarget->GetAllConfigSources(); std::set groupsUsed; - for (std::vector::const_iterator si = - sources.begin(); - si != sources.end(); ++si) { - std::string const& source = si->Source->GetFullPath(); + for (cmGeneratorTarget::AllConfigSource const& si : sources) { + std::string const& source = si.Source->GetFullPath(); cmSourceGroup* sourceGroup = this->Makefile->FindSourceGroup(source, sourceGroups); groupsUsed.insert(sourceGroup); @@ -1376,9 +1359,8 @@ void cmVisualStudio10TargetGenerator::WriteGroups() "xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n"); this->WriteString(project_defaults.c_str(), 0); - for (ToolSourceMap::const_iterator ti = this->Tools.begin(); - ti != this->Tools.end(); ++ti) { - this->WriteGroupSources(ti->first.c_str(), ti->second, sourceGroups); + for (auto const& ti : this->Tools) { + this->WriteGroupSources(ti.first.c_str(), ti.second, sourceGroups); } // Added files are images and the manifest. @@ -1510,7 +1492,7 @@ void cmVisualStudio10TargetGenerator::AddMissingSourceGroups( } void cmVisualStudio10TargetGenerator::WriteGroupSources( - const char* name, ToolSources const& sources, + std::string const& name, ToolSources const& sources, std::vector& sourceGroups) { this->WriteString("\n", 1); @@ -1847,7 +1829,7 @@ void cmVisualStudio10TargetGenerator::WriteSource(std::string const& tool, std::string sourceFile = this->ConvertPath(sf->GetFullPath(), forceRelative); if (this->LocalGenerator->GetVersion() == cmGlobalVisualStudioGenerator::VS10 && - cmSystemTools::FileIsFullPath(sourceFile.c_str())) { + cmSystemTools::FileIsFullPath(sourceFile)) { // Normal path conversion resulted in a full path. VS 10 (but not 11) // refuses to show the property page in the IDE for a source file with a // full path (not starting in a '.' or '/' AFAICT). CMake <= 2.8.4 used a @@ -2168,7 +2150,7 @@ bool cmVisualStudio10TargetGenerator::OutputSourceSpecificFlags( *source); } clOptions.AddIncludes(includeList); - clOptions.SetConfiguration(config.c_str()); + clOptions.SetConfiguration(config); clOptions.PrependInheritedString("AdditionalOptions"); clOptions.OutputAdditionalIncludeDirectories(*this->BuildFileStream, " ", "\n", lang); diff --git a/Source/cmVisualStudio10TargetGenerator.h b/Source/cmVisualStudio10TargetGenerator.h index adef127..124db4e 100644 --- a/Source/cmVisualStudio10TargetGenerator.h +++ b/Source/cmVisualStudio10TargetGenerator.h @@ -153,7 +153,7 @@ private: void WriteEvent(const char* name, std::vector const& commands, std::string const& configName); - void WriteGroupSources(const char* name, ToolSources const& sources, + void WriteGroupSources(std::string const& name, ToolSources const& sources, std::vector&); void AddMissingSourceGroups(std::set& groupsUsed, const std::vector& allGroups); diff --git a/Source/cmVisualStudioGeneratorOptions.cxx b/Source/cmVisualStudioGeneratorOptions.cxx index ccbff83..fb74fda 100644 --- a/Source/cmVisualStudioGeneratorOptions.cxx +++ b/Source/cmVisualStudioGeneratorOptions.cxx @@ -152,9 +152,8 @@ bool cmVisualStudioGeneratorOptions::IsManaged() const bool cmVisualStudioGeneratorOptions::UsingUnicode() const { // Look for the a _UNICODE definition. - for (std::vector::const_iterator di = this->Defines.begin(); - di != this->Defines.end(); ++di) { - if (*di == "_UNICODE") { + for (std::string const& di : this->Defines) { + if (di == "_UNICODE") { return true; } } @@ -163,9 +162,8 @@ bool cmVisualStudioGeneratorOptions::UsingUnicode() const bool cmVisualStudioGeneratorOptions::UsingSBCS() const { // Look for the a _SBCS definition. - for (std::vector::const_iterator di = this->Defines.begin(); - di != this->Defines.end(); ++di) { - if (*di == "_SBCS") { + for (std::string const& di : this->Defines) { + if (di == "_SBCS") { return true; } } @@ -227,7 +225,7 @@ void cmVisualStudioGeneratorOptions::FixCudaCodeGeneration() // It translates to -arch= -code=. cmSystemTools::ReplaceString(arch_name, "sm_", "compute_"); } - for (auto const& c : codes) { + for (std::string const& c : codes) { std::string entry = arch_name + "," + c; result.push_back(entry); } @@ -237,7 +235,7 @@ void cmVisualStudioGeneratorOptions::FixCudaCodeGeneration() // -gencode=, // -gencode=,[,] // -gencode=,"," - for (auto const& e : gencode) { + for (std::string const& e : gencode) { std::string entry = e; cmSystemTools::ReplaceString(entry, "arch=", ""); cmSystemTools::ReplaceString(entry, "code=", ""); @@ -285,7 +283,7 @@ void cmVisualStudioGeneratorOptions::FixManifestUACFlags() uacExecuteLevelMap["highestAvailable"] = "HighestAvailable"; uacExecuteLevelMap["requireAdministrator"] = "RequireAdministrator"; - for (auto const& subopt : subOptions) { + for (std::string const& subopt : subOptions) { std::vector keyValue; cmsys::SystemTools::Split(subopt, keyValue, '='); if (keyValue.size() != 2 || (uacMap.find(keyValue[0]) == uacMap.end())) { @@ -332,9 +330,8 @@ void cmVisualStudioGeneratorOptions::Parse(const char* flags) // Process flags that need to be represented specially in the IDE // project file. - for (std::vector::iterator ai = args.begin(); ai != args.end(); - ++ai) { - this->HandleFlag(ai->c_str()); + for (std::string const& ai : args) { + this->HandleFlag(ai.c_str()); } } @@ -437,7 +434,8 @@ cmIDEOptions::FlagValue cmVisualStudioGeneratorOptions::TakeFlag( return value; } -void cmVisualStudioGeneratorOptions::SetConfiguration(const char* config) +void cmVisualStudioGeneratorOptions::SetConfiguration( + const std::string& config) { this->Configuration = config; } @@ -566,31 +564,27 @@ void cmVisualStudioGeneratorOptions::OutputFlagMap(std::ostream& fout, const char* indent) { if (this->Version >= cmGlobalVisualStudioGenerator::VS10) { - for (std::map::iterator m = this->FlagMap.begin(); - m != this->FlagMap.end(); ++m) { + for (auto const& m : this->FlagMap) { fout << indent; if (!this->Configuration.empty()) { this->TargetGenerator->WritePlatformConfigTag( - m->first.c_str(), this->Configuration.c_str(), 0, 0, 0, &fout); + m.first.c_str(), this->Configuration.c_str(), 0, 0, 0, &fout); } else { - fout << "<" << m->first << ">"; + fout << "<" << m.first << ">"; } const char* sep = ""; - for (std::vector::iterator i = m->second.begin(); - i != m->second.end(); ++i) { - fout << sep << cmVisualStudio10GeneratorOptionsEscapeForXML(*i); + for (std::string const& i : m.second) { + fout << sep << cmVisualStudio10GeneratorOptionsEscapeForXML(i); sep = ";"; } - fout << "first << ">\n"; + fout << "\n"; } } else { - for (std::map::iterator m = this->FlagMap.begin(); - m != this->FlagMap.end(); ++m) { - fout << indent << m->first << "=\""; + for (auto const& m : this->FlagMap) { + fout << indent << m.first << "=\""; const char* sep = ""; - for (std::vector::iterator i = m->second.begin(); - i != m->second.end(); ++i) { - fout << sep << cmVisualStudioGeneratorOptionsEscapeForXML(*i); + for (std::string const& i : m.second) { + fout << sep << cmVisualStudioGeneratorOptionsEscapeForXML(i); sep = ";"; } fout << "\"\n"; diff --git a/Source/cmVisualStudioGeneratorOptions.h b/Source/cmVisualStudioGeneratorOptions.h index 2dffe9b..2c56d42 100644 --- a/Source/cmVisualStudioGeneratorOptions.h +++ b/Source/cmVisualStudioGeneratorOptions.h @@ -91,7 +91,7 @@ public: const char* suffix, const std::string& lang); void OutputFlagMap(std::ostream& fout, const char* indent); - void SetConfiguration(const char* config); + void SetConfiguration(const std::string& config); private: cmLocalVisualStudioGenerator* LocalGenerator; ----------------------------------------------------------------------- Summary of changes: Help/manual/cmake-variables.7.rst | 1 + .../dev/variable-CMAKE_SUPPRESS_REGENERATION.rst | 6 ++ Help/variable/CMAKE_SUPPRESS_REGENERATION.rst | 11 +++ Modules/Platform/Windows-MSVC.cmake | 28 ++++++ Source/cmGlobalNinjaGenerator.cxx | 15 ++- Source/cmGlobalUnixMakefileGenerator3.cxx | 26 ++++- Source/cmGlobalVisualStudio8Generator.cxx | 2 +- Source/cmGlobalVisualStudioGenerator.cxx | 34 ++++--- Source/cmGlobalXCodeGenerator.cxx | 2 +- Source/cmLocalUnixMakefileGenerator3.cxx | 47 ++++++---- Source/cmLocalVisualStudio7Generator.cxx | 3 +- Source/cmMakefile.cxx | 12 +++ Source/cmMakefile.h | 3 + Source/cmOutputConverter.cxx | 69 +++++++------- Source/cmOutputConverter.h | 4 - Source/cmVisualStudio10TargetGenerator.cxx | 99 +++++++++----------- Source/cmVisualStudio10TargetGenerator.h | 2 +- Source/cmVisualStudioGeneratorOptions.cxx | 48 +++++----- Source/cmVisualStudioGeneratorOptions.h | 2 +- Tests/CMakeLists.txt | 1 + Tests/CSharpLinkFromCxx/.gitattributes | 1 + Tests/CSharpLinkFromCxx/CMakeLists.txt | 19 ++++ Tests/CSharpLinkFromCxx/CSharpLinkFromCxx.cs | 16 ++++ Tests/CSharpLinkFromCxx/UsefulCSharpClass.cs | 12 +++ Tests/CSharpLinkFromCxx/UsefulManagedCppClass.cpp | 15 +++ Tests/CSharpLinkFromCxx/UsefulManagedCppClass.hpp | 16 ++++ 26 files changed, 325 insertions(+), 169 deletions(-) create mode 100644 Help/release/dev/variable-CMAKE_SUPPRESS_REGENERATION.rst create mode 100644 Help/variable/CMAKE_SUPPRESS_REGENERATION.rst create mode 100644 Tests/CSharpLinkFromCxx/.gitattributes create mode 100644 Tests/CSharpLinkFromCxx/CMakeLists.txt create mode 100644 Tests/CSharpLinkFromCxx/CSharpLinkFromCxx.cs create mode 100644 Tests/CSharpLinkFromCxx/UsefulCSharpClass.cs create mode 100644 Tests/CSharpLinkFromCxx/UsefulManagedCppClass.cpp create mode 100644 Tests/CSharpLinkFromCxx/UsefulManagedCppClass.hpp hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 27 00:05:05 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 27 Feb 2018 00:05:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-111-g464ae1b Message-ID: <20180227050505.B711810AD7F@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 464ae1bcc0f3b3264934c1f6c756e5ef919d3f2b (commit) from f7430b2538211ea59d5a853148de3b282796bf6a (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=464ae1bcc0f3b3264934c1f6c756e5ef919d3f2b commit 464ae1bcc0f3b3264934c1f6c756e5ef919d3f2b Author: Kitware Robot AuthorDate: Tue Feb 27 00:01:09 2018 -0500 Commit: Kitware Robot CommitDate: Tue Feb 27 00:01:09 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index f1fdb60..2ce7e03 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180226) +set(CMake_VERSION_PATCH 20180227) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 27 09:35:06 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 27 Feb 2018 09:35:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-120-ge73016b Message-ID: <20180227143506.B412010A81F@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via e73016bc06b58bb8a3cc1f4238c9596d8fd2703a (commit) via 0b8db75b476152829aea45a155d1b8854aa70d31 (commit) via 2bcccd07bdf4f382776cfb55c716cf09a785fb74 (commit) via 2edd5cb9e0b4d0ba84308df3d1d0cfe9345c8ae1 (commit) via e708dac65f52b44b991e0358f8ffb04bad9a649b (commit) via 7b1c14241ddd120fbf93d206c8b3708b38556263 (commit) via be9731965e9a41fc58f73b8f243e52fd38678f06 (commit) via e1cd936c62cdcd8a2031e899238310a1ec12196d (commit) via 4964fe1e5ad74cb5b166002498e48c807e4fa7d2 (commit) from 464ae1bcc0f3b3264934c1f6c756e5ef919d3f2b (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e73016bc06b58bb8a3cc1f4238c9596d8fd2703a commit e73016bc06b58bb8a3cc1f4238c9596d8fd2703a Merge: 0b8db75 e708dac Author: Brad King AuthorDate: Tue Feb 27 09:33:52 2018 -0500 Commit: Brad King CommitDate: Tue Feb 27 09:33:52 2018 -0500 Merge branch 'release-3.11' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0b8db75b476152829aea45a155d1b8854aa70d31 commit 0b8db75b476152829aea45a155d1b8854aa70d31 Merge: 2bcccd0 4964fe1 Author: Brad King AuthorDate: Tue Feb 27 14:27:05 2018 +0000 Commit: Kitware Robot CommitDate: Tue Feb 27 09:27:43 2018 -0500 Merge topic 'contract-plplot' 4964fe1e Tests: Update PLplot contract test repository URL Acked-by: Kitware Robot Merge-request: !1801 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2bcccd07bdf4f382776cfb55c716cf09a785fb74 commit 2bcccd07bdf4f382776cfb55c716cf09a785fb74 Merge: 2edd5cb 7b1c142 Author: Brad King AuthorDate: Tue Feb 27 14:25:49 2018 +0000 Commit: Kitware Robot CommitDate: Tue Feb 27 09:26:31 2018 -0500 Merge topic 'modules-restore-path-suffixes' 7b1c1424 Modules: Restore recently removed search path suffixes Acked-by: Kitware Robot Merge-request: !1802 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2edd5cb9e0b4d0ba84308df3d1d0cfe9345c8ae1 commit 2edd5cb9e0b4d0ba84308df3d1d0cfe9345c8ae1 Merge: 464ae1b e1cd936 Author: Brad King AuthorDate: Tue Feb 27 14:25:40 2018 +0000 Commit: Kitware Robot CommitDate: Tue Feb 27 09:25:48 2018 -0500 Merge topic 'unixtimefix' e1cd936c Tests: Fix TIMESTAMP-UnixTime test under SOURCE_DATE_EPOCH=1 Acked-by: Kitware Robot Merge-request: !1800 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4964fe1e5ad74cb5b166002498e48c807e4fa7d2 commit 4964fe1e5ad74cb5b166002498e48c807e4fa7d2 Author: Brad King AuthorDate: Mon Feb 26 09:33:08 2018 -0500 Commit: Brad King CommitDate: Mon Feb 26 09:33:56 2018 -0500 Tests: Update PLplot contract test repository URL Use a `git://` protocol URL documented by the repository hosting infrastructure. After some updates to that infrastructure, the `https://` URL with the `.git` extension no longer works reliably. diff --git a/Tests/Contracts/PLplot/CMakeLists.txt b/Tests/Contracts/PLplot/CMakeLists.txt index b87b4c3..7051d62 100644 --- a/Tests/Contracts/PLplot/CMakeLists.txt +++ b/Tests/Contracts/PLplot/CMakeLists.txt @@ -9,7 +9,7 @@ if(NOT PLplot_GIT_TAG) set(PLplot_GIT_TAG "plplot-5.13.0") endif() ExternalProject_Add(PLplot - GIT_REPOSITORY "https://git.code.sf.net/p/plplot/plplot.git" + GIT_REPOSITORY "git://git.code.sf.net/p/plplot/plplot" GIT_TAG "${PLplot_GIT_TAG}" PREFIX "${PLplot_PREFIX}" CMAKE_ARGS ----------------------------------------------------------------------- Summary of changes: Modules/FindGDAL.cmake | 3 +++ Modules/FindGIF.cmake | 2 ++ Modules/FindOpenThreads.cmake | 3 +++ Modules/Findosg_functions.cmake | 3 +++ Tests/CMakeTests/String-TIMESTAMP-UnixTime.cmake | 6 +++--- Tests/CMakeTests/StringTest.cmake.in | 2 +- Tests/Contracts/PLplot/CMakeLists.txt | 2 +- 7 files changed, 16 insertions(+), 5 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 27 09:35:06 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 27 Feb 2018 09:35:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.11.0-rc1-17-ge708dac Message-ID: <20180227143506.C0C5B10A7FF@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, release has been updated via e708dac65f52b44b991e0358f8ffb04bad9a649b (commit) via 7b1c14241ddd120fbf93d206c8b3708b38556263 (commit) via be9731965e9a41fc58f73b8f243e52fd38678f06 (commit) via e1cd936c62cdcd8a2031e899238310a1ec12196d (commit) from 72a85d9f0bbfc69c53dfd5831699d6ff46772ccd (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Modules/FindGDAL.cmake | 3 +++ Modules/FindGIF.cmake | 2 ++ Modules/FindOpenThreads.cmake | 3 +++ Modules/Findosg_functions.cmake | 3 +++ Tests/CMakeTests/String-TIMESTAMP-UnixTime.cmake | 6 +++--- Tests/CMakeTests/StringTest.cmake.in | 2 +- 6 files changed, 15 insertions(+), 4 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 27 10:45:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 27 Feb 2018 10:45:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc1-122-g4da456c Message-ID: <20180227154504.4598910302D@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 4da456c7fee39e366aa707871fad84fbbd0a723e (commit) via ac925ec09e2dd4b373353d312e9e50b6165a66d0 (commit) from e73016bc06b58bb8a3cc1f4238c9596d8fd2703a (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4da456c7fee39e366aa707871fad84fbbd0a723e commit 4da456c7fee39e366aa707871fad84fbbd0a723e Merge: e73016b ac925ec Author: Brad King AuthorDate: Tue Feb 27 10:40:05 2018 -0500 Commit: Brad King CommitDate: Tue Feb 27 10:40:05 2018 -0500 Merge branch 'release-3.11' ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 27 10:45:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 27 Feb 2018 10:45:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.11.0-rc1-18-gac925ec Message-ID: <20180227154504.58424103186@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, release has been updated via ac925ec09e2dd4b373353d312e9e50b6165a66d0 (commit) from e708dac65f52b44b991e0358f8ffb04bad9a649b (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 27 10:55:02 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 27 Feb 2018 10:55:02 -0500 (EST) Subject: [Cmake-commits] CMake annotated tag, v3.11.0-rc2, created. v3.11.0-rc2 Message-ID: <20180227155502.D014D10A72F@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The annotated tag, v3.11.0-rc2 has been created at bd5f76efdad9d2d96bf6a05be01856075087d94c (tag) tagging ac925ec09e2dd4b373353d312e9e50b6165a66d0 (commit) replaces v3.11.0-rc1 tagged by Brad King on Tue Feb 27 10:41:10 2018 -0500 - Log ----------------------------------------------------------------- CMake 3.11.0-rc2 -----BEGIN PGP SIGNATURE----- iQJKBAABCgA0FiEExsJlMku+vcNQtRPQLSzvEDSSFoQFAlqVfBYWHGJyYWQua2lu Z0BraXR3YXJlLmNvbQAKCRAtLO8QNJIWhHSOD/48A6ytcLHzlyVXcdQccLoHIrV0 GOeXmqdzOnA1NN0rUJVb4DBDxjObpjrmgZTwyJmL6M6Je3oYYMiVCsswDsie1lCO RabzNrk/Tpfaz0F0lQem2pSB9jFLoTQ7Bj4ELLISRiP1++naUlPHVikyk21U63pz CzUPoTrlp5YenZ+HQhEpfPUb3SQyzY8xfNU5xW97lkscugCwNHWstGZkFIsJfeB8 dSnqKECAdY5qDoQcmEWQRY+7KRahyHeLVFRYiPMd8Rbf9niwTOn4lUgPpSaDR4jW rxrz7HIIHu0ftupU1R7jkIZbIHQFfGaH3xR34nyOgh8Uktgk1gchYVwJtc97wG2h ah3Mmdo7zoLB9R/z3Zfn5STN5zjZlYy7HaAdItOrCZo+2MVLJZ606BQmDTgcaR1z WvUo6AM1Jc3Vu71Pk3+0NFCuk7nFKmenwVEUMaHJxgqXc7uzB7VO+NYbMxDjfZTW LpSzdDEFESpUd5pJ0C5Kb2Dio+335b9jQ8y0JkJFZGYPRa5LCxyf0o4bYfegPrsh /jiBi/ttztTb4dFMxLB+C1Bm/eVf1Av9/kLci2uyiqWZR+eOzelIG6YZVoe3jRv5 v3zv5Fw0IVEDYFKqAgie0ALNQxOgjH/5yDkizTNWX526C0wOKhgERC6Gsmry46Tn vioj9rLzxvqkbAqzqA== =liAy -----END PGP SIGNATURE----- Bernhard M. Wiedemann (1): Tests: Fix TIMESTAMP-UnixTime test under SOURCE_DATE_EPOCH=1 Brad King (12): Merge branch 'help_fixup' into release-3.11 Merge branch 'ti-depfile-flag-fix' into release-3.11 Merge branch 'autogen-depend-filters-documentation' into release-3.11 Tests: Make CompileFeatures C dialect check consistent with impl Merge branch 'test-CompileFeatures-c11-range' into release-3.11 CMakeLib: Link to system thread libraries to support std::thread Merge branch 'std-thread-link' into release-3.11 Merge branch '14297-partial-xcode-zero-check' into release-3.11 Merge branch 'unixtimefix' into release-3.11 Modules: Restore recently removed search path suffixes Merge branch 'modules-restore-path-suffixes' into release-3.11 CMake 3.11.0-rc2 Gregor Jasny (1): Xcode: Generate ZERO_CHECK generator target only once Grzegorz Dobinski (1): Compiler/TI: Fix depfile generation for C++ Sebastian Holtermann (2): Autogen: Doc: Extend AUTOGEN_TARGET_DEPENDS documentation Autogen: Doc: Extend AUTOMOC_DEPEND_FILTERS documentation Shane Parris (1): Help: Fix command references in CMAKE_NETRC* variable documentation ----------------------------------------------------------------------- hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 28 00:05:05 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 28 Feb 2018 00:05:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc2-105-gcc87b1f Message-ID: <20180228050505.D780610AC83@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via cc87b1f0d7c0c20baec921b75c5662553bfdbff0 (commit) from 4da456c7fee39e366aa707871fad84fbbd0a723e (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cc87b1f0d7c0c20baec921b75c5662553bfdbff0 commit cc87b1f0d7c0c20baec921b75c5662553bfdbff0 Author: Kitware Robot AuthorDate: Wed Feb 28 00:01:10 2018 -0500 Commit: Kitware Robot CommitDate: Wed Feb 28 00:01:10 2018 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 2ce7e03..307b65d 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 11) -set(CMake_VERSION_PATCH 20180227) +set(CMake_VERSION_PATCH 20180228) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 28 08:25:04 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 28 Feb 2018 08:25:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc2-111-g82de050 Message-ID: <20180228132504.E667610A96E@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 82de05088f762371c6cd753ae19533dc9f5cd6b2 (commit) via 74dac86c7625b1c33ccc564155a7f8982f1ce67f (commit) via 514e845f4eea3322d13836c2e83ea9999fb79987 (commit) via eaf9f69d41961353bf0fc9d63c543f957692d714 (commit) via 596a7f262aa9dd505e4b8f3c3da22e265e38b0ed (commit) via 8182ebca32a42c157697d6afdc07678afed1443d (commit) from cc87b1f0d7c0c20baec921b75c5662553bfdbff0 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=82de05088f762371c6cd753ae19533dc9f5cd6b2 commit 82de05088f762371c6cd753ae19533dc9f5cd6b2 Merge: 74dac86 eaf9f69 Author: Brad King AuthorDate: Wed Feb 28 13:16:52 2018 +0000 Commit: Kitware Robot CommitDate: Wed Feb 28 08:17:33 2018 -0500 Merge topic 'co-compile-with-launcher' eaf9f69d41 Fix combined use of compiler launcher with lint tools Acked-by: Kitware Robot Merge-request: !1791 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=74dac86c7625b1c33ccc564155a7f8982f1ce67f commit 74dac86c7625b1c33ccc564155a7f8982f1ce67f Merge: 514e845 596a7f2 Author: Brad King AuthorDate: Wed Feb 28 13:16:22 2018 +0000 Commit: Kitware Robot CommitDate: Wed Feb 28 08:16:52 2018 -0500 Merge topic 'findjava-jar-in-dev-component' 596a7f262a FindJava: Add Java_JAR_EXECUTABLE to a component: Development Acked-by: Kitware Robot Merge-request: !1807 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=514e845f4eea3322d13836c2e83ea9999fb79987 commit 514e845f4eea3322d13836c2e83ea9999fb79987 Merge: cc87b1f 8182ebc Author: Brad King AuthorDate: Wed Feb 28 13:16:05 2018 +0000 Commit: Kitware Robot CommitDate: Wed Feb 28 08:16:14 2018 -0500 Merge topic 'ideoptions-string' 8182ebca32 cmIDEOptions: use std::string Acked-by: Kitware Robot Merge-request: !1804 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=eaf9f69d41961353bf0fc9d63c543f957692d714 commit eaf9f69d41961353bf0fc9d63c543f957692d714 Author: Ilya A. Kriveshko AuthorDate: Thu Feb 22 08:01:07 2018 -0500 Commit: Brad King CommitDate: Tue Feb 27 13:07:04 2018 -0500 Fix combined use of compiler launcher with lint tools When using ccache with clang-tidy, ccache needs to wrap compiler invocation, rather than cmake invocation. But it needs to do it without affecting the command line that iwyu-like tools are receiving. With this fix, if __run_co_compile is used, compile launcher is passed using the new --launcher option, but if __run_co_compile is not needed, compiler launcher is prepended to the command line as before. To better illustrate the change: with this fix if running clang-tidy with CXX_COMPILER_LAUNCHER set to "/usr/bin/time;-p;ccache" (time -p added strictly for illustration purposes), the command line changes from: /usr/bin/time -p ccache cmake -E __run_co_compile \ --tidy=clang-tidy ... -- g++ ... to: cmake -E __run_co_compile \ --launcher="/usr/bin/time;-p;ccache" \ --tidy=clang-tidy ... -- g++ ... This allows the compiler to be run via the launcher, but leaves tidy (& friends) invocations unaffected. Fixes: #16493 diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 73cf1f0..abe5ff3 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -643,6 +643,18 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( source.GetFullPath(), workingDirectory, compileCommand); } + // See if we need to use a compiler launcher like ccache or distcc + std::string compilerLauncher; + if (!compileCommands.empty() && (lang == "C" || lang == "CXX" || + lang == "Fortran" || lang == "CUDA")) { + std::string const clauncher_prop = lang + "_COMPILER_LAUNCHER"; + const char* clauncher = + this->GeneratorTarget->GetProperty(clauncher_prop); + if (clauncher && *clauncher) { + compilerLauncher = clauncher; + } + } + // Maybe insert an include-what-you-use runner. if (!compileCommands.empty() && (lang == "C" || lang == "CXX")) { std::string const iwyu_prop = lang + "_INCLUDE_WHAT_YOU_USE"; @@ -656,6 +668,13 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( if ((iwyu && *iwyu) || (tidy && *tidy) || (cpplint && *cpplint) || (cppcheck && *cppcheck)) { std::string run_iwyu = "$(CMAKE_COMMAND) -E __run_co_compile"; + if (!compilerLauncher.empty()) { + // In __run_co_compile case the launcher command is supplied + // via --launcher= and consumed + run_iwyu += " --launcher="; + run_iwyu += this->LocalGenerator->EscapeForShell(compilerLauncher); + compilerLauncher.clear(); + } if (iwyu && *iwyu) { run_iwyu += " --iwyu="; run_iwyu += this->LocalGenerator->EscapeForShell(iwyu); @@ -682,21 +701,15 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( } } - // Maybe insert a compiler launcher like ccache or distcc - if (!compileCommands.empty() && (lang == "C" || lang == "CXX" || - lang == "Fortran" || lang == "CUDA")) { - std::string const clauncher_prop = lang + "_COMPILER_LAUNCHER"; - const char* clauncher = - this->GeneratorTarget->GetProperty(clauncher_prop); - if (clauncher && *clauncher) { - std::vector launcher_cmd; - cmSystemTools::ExpandListArgument(clauncher, launcher_cmd, true); - for (std::string& i : launcher_cmd) { - i = this->LocalGenerator->EscapeForShell(i); - } - std::string const& run_launcher = cmJoin(launcher_cmd, " ") + " "; - compileCommands.front().insert(0, run_launcher); + // If compiler launcher was specified and not consumed above, it + // goes to the beginning of the command line. + if (!compileCommands.empty() && !compilerLauncher.empty()) { + std::vector args; + cmSystemTools::ExpandListArgument(compilerLauncher, args, true); + for (std::string& i : args) { + i = this->LocalGenerator->EscapeForShell(i); } + compileCommands.front().insert(0, cmJoin(args, " ") + " "); } std::string launcher; diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index f4faf47..60c5a65 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -653,6 +653,17 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang) cmSystemTools::ExpandListArgument(compileCmd, compileCmds); } + // See if we need to use a compiler launcher like ccache or distcc + std::string compilerLauncher; + if (!compileCmds.empty() && + (lang == "C" || lang == "CXX" || lang == "Fortran" || lang == "CUDA")) { + std::string const clauncher_prop = lang + "_COMPILER_LAUNCHER"; + const char* clauncher = this->GeneratorTarget->GetProperty(clauncher_prop); + if (clauncher && *clauncher) { + compilerLauncher = clauncher; + } + } + // Maybe insert an include-what-you-use runner. if (!compileCmds.empty() && (lang == "C" || lang == "CXX")) { std::string const iwyu_prop = lang + "_INCLUDE_WHAT_YOU_USE"; @@ -668,6 +679,13 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang) std::string run_iwyu = this->GetLocalGenerator()->ConvertToOutputFormat( cmSystemTools::GetCMakeCommand(), cmOutputConverter::SHELL); run_iwyu += " -E __run_co_compile"; + if (!compilerLauncher.empty()) { + // In __run_co_compile case the launcher command is supplied + // via --launcher= and consumed + run_iwyu += " --launcher="; + run_iwyu += this->LocalGenerator->EscapeForShell(compilerLauncher); + compilerLauncher.clear(); + } if (iwyu && *iwyu) { run_iwyu += " --iwyu="; run_iwyu += this->GetLocalGenerator()->EscapeForShell(iwyu); @@ -693,20 +711,15 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang) } } - // Maybe insert a compiler launcher like ccache or distcc - if (!compileCmds.empty() && - (lang == "C" || lang == "CXX" || lang == "Fortran" || lang == "CUDA")) { - std::string const clauncher_prop = lang + "_COMPILER_LAUNCHER"; - const char* clauncher = this->GeneratorTarget->GetProperty(clauncher_prop); - if (clauncher && *clauncher) { - std::vector launcher_cmd; - cmSystemTools::ExpandListArgument(clauncher, launcher_cmd, true); - for (std::string& i : launcher_cmd) { - i = this->LocalGenerator->EscapeForShell(i); - } - std::string const& run_launcher = cmJoin(launcher_cmd, " ") + " "; - compileCmds.front().insert(0, run_launcher); + // If compiler launcher was specified and not consumed above, it + // goes to the beginning of the command line. + if (!compileCmds.empty() && !compilerLauncher.empty()) { + std::vector args; + cmSystemTools::ExpandListArgument(compilerLauncher, args, true); + for (std::string& i : args) { + i = this->LocalGenerator->EscapeForShell(i); } + compileCmds.front().insert(0, cmJoin(args, " ") + " "); } if (!compileCmds.empty()) { diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index e7d92d4..6f3a90f 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -359,7 +359,8 @@ struct CoCompileJob int cmcmd::HandleCoCompileCommands(std::vector& args) { std::vector jobs; - std::string sourceFile; // store --source= + std::string sourceFile; // store --source= + std::vector launchers; // store --launcher= // Default is to run the original command found after -- if the option // does not need to do that, it should be specified here, currently only @@ -390,15 +391,17 @@ int cmcmd::HandleCoCompileCommands(std::vector& args) } } } - if (cmHasLiteralPrefix(arg, "--source=")) { - sourceFile = arg.substr(9); - optionFound = true; - } - // if it was not a co-compiler or --source then error if (!optionFound) { - std::cerr << "__run_co_compile given unknown argument: " << arg - << "\n"; - return 1; + if (cmHasLiteralPrefix(arg, "--source=")) { + sourceFile = arg.substr(9); + } else if (cmHasLiteralPrefix(arg, "--launcher=")) { + cmSystemTools::ExpandListArgument(arg.substr(11), launchers, true); + } else { + // if it was not a co-compiler or --source/--launcher then error + std::cerr << "__run_co_compile given unknown argument: " << arg + << "\n"; + return 1; + } } } else { // if not doing_options then push to orig_cmd orig_cmd.push_back(arg); @@ -436,6 +439,11 @@ int cmcmd::HandleCoCompileCommands(std::vector& args) return 0; } + // Prepend launcher argument(s), if any + if (!launchers.empty()) { + orig_cmd.insert(orig_cmd.begin(), launchers.begin(), launchers.end()); + } + // Now run the real compiler command and return its result value int ret; if (!cmSystemTools::RunSingleCommand(orig_cmd, nullptr, nullptr, &ret, https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=596a7f262aa9dd505e4b8f3c3da22e265e38b0ed commit 596a7f262aa9dd505e4b8f3c3da22e265e38b0ed Author: Giel van Schijndel AuthorDate: Tue Feb 27 15:11:49 2018 +0100 Commit: Giel van Schijndel CommitDate: Tue Feb 27 17:32:09 2018 +0100 FindJava: Add Java_JAR_EXECUTABLE to a component: Development All discovered executables were placed in a component, except for 'jar'. This forced the use of find_package(Java) without any component specification. This commit adds 'jar' to the 'Development' component, because that's what it's used for. diff --git a/Modules/FindJava.cmake b/Modules/FindJava.cmake index e3f5af6..c56c197 100644 --- a/Modules/FindJava.cmake +++ b/Modules/FindJava.cmake @@ -18,7 +18,7 @@ # :: # # Runtime = User just want to execute some Java byte-compiled -# Development = Development tools (java, javac, javah and javadoc), includes Runtime component +# Development = Development tools (java, javac, javah, jar and javadoc), includes Runtime component # IdlJ = idl compiler for Java # JarSigner = signer tool for jar # @@ -237,16 +237,16 @@ if(Java_FIND_COMPONENTS) endif() elseif(component STREQUAL "Development") list(APPEND _JAVA_REQUIRED_VARS Java_JAVA_EXECUTABLE Java_JAVAC_EXECUTABLE - Java_JAVADOC_EXECUTABLE) + Java_JAR_EXECUTABLE Java_JAVADOC_EXECUTABLE) if(Java_VERSION VERSION_LESS "1.10") list(APPEND _JAVA_REQUIRED_VARS Java_JAVAH_EXECUTABLE) if(Java_JAVA_EXECUTABLE AND Java_JAVAC_EXECUTABLE - AND Java_JAVAH_EXECUTABLE AND Java_JAVADOC_EXECUTABLE) + AND Java_JAVAH_EXECUTABLE AND Java_JAR_EXECUTABLE AND Java_JAVADOC_EXECUTABLE) set(Java_Development_FOUND TRUE) endif() else() if(Java_JAVA_EXECUTABLE AND Java_JAVAC_EXECUTABLE - AND Java_JAVADOC_EXECUTABLE) + AND Java_JAR_EXECUTABLE AND Java_JAVADOC_EXECUTABLE) set(Java_Development_FOUND TRUE) endif() endif() https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8182ebca32a42c157697d6afdc07678afed1443d commit 8182ebca32a42c157697d6afdc07678afed1443d Author: Vitaly Stakhovsky AuthorDate: Mon Feb 26 11:24:45 2018 -0500 Commit: Vitaly Stakhovsky CommitDate: Mon Feb 26 11:24:45 2018 -0500 cmIDEOptions: use std::string diff --git a/Source/cmIDEOptions.cxx b/Source/cmIDEOptions.cxx index 354b757..f996788 100644 --- a/Source/cmIDEOptions.cxx +++ b/Source/cmIDEOptions.cxx @@ -25,7 +25,7 @@ cmIDEOptions::~cmIDEOptions() { } -void cmIDEOptions::HandleFlag(const char* flag) +void cmIDEOptions::HandleFlag(std::string const& flag) { // If the last option was -D then this option is the definition. if (this->DoingDefine) { @@ -49,26 +49,27 @@ void cmIDEOptions::HandleFlag(const char* flag) } // Look for known arguments. - if (flag[0] == '-' || (this->AllowSlash && flag[0] == '/')) { + size_t len = flag.length(); + if (len > 0 && (flag[0] == '-' || (this->AllowSlash && flag[0] == '/'))) { // Look for preprocessor definitions. - if (this->AllowDefine && flag[1] == 'D') { - if (flag[2] == '\0') { + if (this->AllowDefine && len > 1 && flag[1] == 'D') { + if (len <= 2) { // The next argument will have the definition. this->DoingDefine = true; } else { // Store this definition. - this->Defines.push_back(flag + 2); + this->Defines.push_back(flag.substr(2)); } return; } // Look for include directory. - if (this->AllowInclude && flag[1] == 'I') { - if (flag[2] == '\0') { + if (this->AllowInclude && len > 1 && flag[1] == 'I') { + if (len <= 2) { // The next argument will have the include directory. this->DoingInclude = true; } else { // Store this include directory. - this->Includes.push_back(flag + 2); + this->Includes.push_back(flag.substr(2)); } return; } @@ -92,8 +93,9 @@ void cmIDEOptions::HandleFlag(const char* flag) } bool cmIDEOptions::CheckFlagTable(cmIDEFlagTable const* table, - const char* flag, bool& flag_handled) + std::string const& flag, bool& flag_handled) { + const char* pf = flag.c_str() + 1; // Look for an entry in the flag table matching this flag. for (cmIDEFlagTable const* entry = table; entry->IDEName; ++entry) { bool entry_found = false; @@ -102,17 +104,17 @@ bool cmIDEOptions::CheckFlagTable(cmIDEFlagTable const* table, // the entry specifies UserRequired we must match only if a // non-empty value is given. int n = static_cast(strlen(entry->commandFlag)); - if ((strncmp(flag + 1, entry->commandFlag, n) == 0 || + if ((strncmp(pf, entry->commandFlag, n) == 0 || (entry->special & cmIDEFlagTable::CaseInsensitive && - cmsysString_strncasecmp(flag + 1, entry->commandFlag, n))) && + cmsysString_strncasecmp(pf, entry->commandFlag, n))) && (!(entry->special & cmIDEFlagTable::UserRequired) || - static_cast(strlen(flag + 1)) > n)) { - this->FlagMapUpdate(entry, flag + n + 1); + static_cast(strlen(pf)) > n)) { + this->FlagMapUpdate(entry, std::string(pf + n)); entry_found = true; } - } else if (strcmp(flag + 1, entry->commandFlag) == 0 || + } else if (strcmp(pf, entry->commandFlag) == 0 || (entry->special & cmIDEFlagTable::CaseInsensitive && - cmsysString_strcasecmp(flag + 1, entry->commandFlag) == 0)) { + cmsysString_strcasecmp(pf, entry->commandFlag) == 0)) { if (entry->special & cmIDEFlagTable::UserFollowing) { // This flag expects a value in the following argument. this->DoingFollowing = entry; @@ -137,7 +139,7 @@ bool cmIDEOptions::CheckFlagTable(cmIDEFlagTable const* table, } void cmIDEOptions::FlagMapUpdate(cmIDEFlagTable const* entry, - const char* new_value) + std::string const& new_value) { if (entry->special & cmIDEFlagTable::UserIgnored) { // Ignore the user-specified value. @@ -157,9 +159,9 @@ void cmIDEOptions::AddDefine(const std::string& def) this->Defines.push_back(def); } -void cmIDEOptions::AddDefines(const char* defines) +void cmIDEOptions::AddDefines(std::string const& defines) { - if (defines) { + if (!defines.empty()) { // Expand the list of definitions. cmSystemTools::ExpandListArgument(defines, this->Defines); } @@ -179,9 +181,9 @@ void cmIDEOptions::AddInclude(const std::string& include) this->Includes.push_back(include); } -void cmIDEOptions::AddIncludes(const char* includes) +void cmIDEOptions::AddIncludes(std::string const& includes) { - if (includes) { + if (!includes.empty()) { // Expand the list of includes. cmSystemTools::ExpandListArgument(includes, this->Includes); } diff --git a/Source/cmIDEOptions.h b/Source/cmIDEOptions.h index 54cb524..a4e5757 100644 --- a/Source/cmIDEOptions.h +++ b/Source/cmIDEOptions.h @@ -22,12 +22,12 @@ public: // Store definitions, includes and flags. void AddDefine(const std::string& define); - void AddDefines(const char* defines); + void AddDefines(std::string const& defines); void AddDefines(const std::vector& defines); std::vector const& GetDefines() const; void AddInclude(const std::string& includes); - void AddIncludes(const char* includes); + void AddIncludes(std::string const& includes); void AddIncludes(const std::vector& includes); std::vector const& GetIncludes() const; @@ -95,11 +95,12 @@ protected: FlagTableCount = 16 }; cmIDEFlagTable const* FlagTable[FlagTableCount]; - void HandleFlag(const char* flag); - bool CheckFlagTable(cmIDEFlagTable const* table, const char* flag, + void HandleFlag(std::string const& flag); + bool CheckFlagTable(cmIDEFlagTable const* table, std::string const& flag, bool& flag_handled); - void FlagMapUpdate(cmIDEFlagTable const* entry, const char* new_value); - virtual void StoreUnknownFlag(const char* flag) = 0; + void FlagMapUpdate(cmIDEFlagTable const* entry, + std::string const& new_value); + virtual void StoreUnknownFlag(std::string const& flag) = 0; }; #endif diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 16d5381..500a0aa 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -1678,8 +1678,8 @@ bool cmLocalVisualStudio7Generator::WriteGroup( } Options fileOptions(this, tool, table, gg->ExtraFlagTable); fileOptions.Parse(fc.CompileFlags.c_str()); - fileOptions.AddDefines(fc.CompileDefs.c_str()); - fileOptions.AddDefines(fc.CompileDefsConfig.c_str()); + fileOptions.AddDefines(fc.CompileDefs); + fileOptions.AddDefines(fc.CompileDefsConfig); // validate source level include directories std::vector includes; this->AppendIncludeDirectories(includes, fc.IncludeDirs, **sf); diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index c7b60b9..ed4a201 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -2138,7 +2138,7 @@ bool cmVisualStudio10TargetGenerator::OutputSourceSpecificFlags( clOptions.AddDefines( genexInterpreter.Evaluate(configDefines, "COMPILE_DEFINITIONS")); } else { - clOptions.AddDefines(configDefines.c_str()); + clOptions.AddDefines(configDefines); } std::vector includeList; if (configDependentIncludes) { diff --git a/Source/cmVisualStudioGeneratorOptions.cxx b/Source/cmVisualStudioGeneratorOptions.cxx index fb74fda..2095d23 100644 --- a/Source/cmVisualStudioGeneratorOptions.cxx +++ b/Source/cmVisualStudioGeneratorOptions.cxx @@ -331,7 +331,7 @@ void cmVisualStudioGeneratorOptions::Parse(const char* flags) // Process flags that need to be represented specially in the IDE // project file. for (std::string const& ai : args) { - this->HandleFlag(ai.c_str()); + this->HandleFlag(ai); } } @@ -393,23 +393,23 @@ void cmVisualStudioGeneratorOptions::Reparse(std::string const& key) this->Parse(original.c_str()); } -void cmVisualStudioGeneratorOptions::StoreUnknownFlag(const char* flag) +void cmVisualStudioGeneratorOptions::StoreUnknownFlag(std::string const& flag) { // Look for Intel Fortran flags that do not map well in the flag table. if (this->CurrentTool == FortranCompiler) { - if (strcmp(flag, "/dbglibs") == 0) { + if (flag == "/dbglibs") { this->FortranRuntimeDebug = true; return; } - if (strcmp(flag, "/threads") == 0) { + if (flag == "/threads") { this->FortranRuntimeMT = true; return; } - if (strcmp(flag, "/libs:dll") == 0) { + if (flag == "/libs:dll") { this->FortranRuntimeDLL = true; return; } - if (strcmp(flag, "/libs:static") == 0) { + if (flag == "/libs:static") { this->FortranRuntimeDLL = false; return; } @@ -417,7 +417,7 @@ void cmVisualStudioGeneratorOptions::StoreUnknownFlag(const char* flag) // This option is not known. Store it in the output flags. std::string const opts = cmOutputConverter::EscapeWindowsShellArgument( - flag, cmOutputConverter::Shell_Flag_AllowMakeVariables | + flag.c_str(), cmOutputConverter::Shell_Flag_AllowMakeVariables | cmOutputConverter::Shell_Flag_VSIDE); this->AppendFlagString(this->UnknownFlagField, opts); } diff --git a/Source/cmVisualStudioGeneratorOptions.h b/Source/cmVisualStudioGeneratorOptions.h index 2c56d42..5c3e415 100644 --- a/Source/cmVisualStudioGeneratorOptions.h +++ b/Source/cmVisualStudioGeneratorOptions.h @@ -107,7 +107,7 @@ private: std::string UnknownFlagField; - virtual void StoreUnknownFlag(const char* flag); + void StoreUnknownFlag(std::string const& flag) override; FlagValue TakeFlag(std::string const& key); }; ----------------------------------------------------------------------- Summary of changes: Modules/FindJava.cmake | 8 +++--- Source/cmIDEOptions.cxx | 42 +++++++++++++++------------- Source/cmIDEOptions.h | 13 +++++---- Source/cmLocalVisualStudio7Generator.cxx | 4 +-- Source/cmMakefileTargetGenerator.cxx | 41 +++++++++++++++++---------- Source/cmNinjaTargetGenerator.cxx | 39 +++++++++++++++++--------- Source/cmVisualStudio10TargetGenerator.cxx | 2 +- Source/cmVisualStudioGeneratorOptions.cxx | 14 +++++----- Source/cmVisualStudioGeneratorOptions.h | 2 +- Source/cmcmd.cxx | 26 +++++++++++------ 10 files changed, 114 insertions(+), 77 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 28 16:55:14 2018 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 28 Feb 2018 16:55:14 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.11.0-rc2-113-g730eece Message-ID: <20180228215514.2030C10AB4D@public.kitware.com> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 730eeceb75bf9c9074f5abb8bcf6f3ed41115d2b (commit) via 92a4c236f62e7266204002df2dc2fe8820e299d6 (commit) from 82de05088f762371c6cd753ae19533dc9f5cd6b2 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=730eeceb75bf9c9074f5abb8bcf6f3ed41115d2b commit 730eeceb75bf9c9074f5abb8bcf6f3ed41115d2b Merge: 82de050 92a4c23 Author: Craig Scott AuthorDate: Wed Feb 28 21:45:55 2018 +0000 Commit: Kitware Robot CommitDate: Wed Feb 28 16:46:15 2018 -0500 Merge topic 'doc_test_prop_WORKING_DIRECTORY' 92a4c236f6 Help: Fix wrong default for WORKING_DIRECTORY test property Acked-by: Kitware Robot Acked-by: Brad King Merge-request: !1806 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=92a4c236f62e7266204002df2dc2fe8820e299d6 commit 92a4c236f62e7266204002df2dc2fe8820e299d6 Author: Craig Scott AuthorDate: Tue Feb 27 22:28:33 2018 +1100 Commit: Craig Scott CommitDate: Tue Feb 27 22:28:33 2018 +1100 Help: Fix wrong default for WORKING_DIRECTORY test property diff --git a/Help/prop_test/WORKING_DIRECTORY.rst b/Help/prop_test/WORKING_DIRECTORY.rst index 5222a19..92a0409 100644 --- a/Help/prop_test/WORKING_DIRECTORY.rst +++ b/Help/prop_test/WORKING_DIRECTORY.rst @@ -3,5 +3,7 @@ WORKING_DIRECTORY The directory from which the test executable will be called. -If this is not set it is called from the directory the test executable -is located in. +If this is not set, the test will be run with the working directory set to the +binary directory associated with where the test was created (i.e. the +:variable:`CMAKE_CURRENT_BINARY_DIR` for where :command:`add_test` was +called). ----------------------------------------------------------------------- Summary of changes: Help/prop_test/WORKING_DIRECTORY.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) hooks/post-receive -- CMake