From kwrobot at kitware.com Fri Feb 1 00:03:06 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 1 Feb 2019 00:03:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.13.3-1265-g9512a58 Message-ID: <20190201050306.7AB90103121@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 9512a582389df6f588781eed41cf826a7bacabe0 (commit) from d526327079e23748dd2a87acd4d9b4b1174725bf (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=9512a582389df6f588781eed41cf826a7bacabe0 commit 9512a582389df6f588781eed41cf826a7bacabe0 Author: Kitware Robot AuthorDate: Fri Feb 1 00:01:07 2019 -0500 Commit: Kitware Robot CommitDate: Fri Feb 1 00:01:07 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 3f37c95..0a65114 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 13) -set(CMake_VERSION_PATCH 20190131) +set(CMake_VERSION_PATCH 20190201) #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 1 08:13:09 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 1 Feb 2019 08:13:09 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.13.3-1273-g0479ae4 Message-ID: <20190201131310.1194C1282C2@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 0479ae492a6bc6058ae86d3ce01ac26fcc71c744 (commit) via a906d7b41c8ff2656f3fa3dc5765be79ba31166a (commit) via cf3af44af2b73ab6a89a8773b5fc3bee8276a47c (commit) via f45d8b2f2303b07792ff29e31b95d12f29157fe1 (commit) via 1c6c2bae285ecce518d68f708729840df9c28fb0 (commit) via 1293ed8507be7e854dcb9437a5b7062ec740ff69 (commit) via eaf53158f49e6e7581613376e8c054e18bdffc23 (commit) via ef8f237686c2a0b51249bfd46d9498abeb019e76 (commit) from 9512a582389df6f588781eed41cf826a7bacabe0 (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=0479ae492a6bc6058ae86d3ce01ac26fcc71c744 commit 0479ae492a6bc6058ae86d3ce01ac26fcc71c744 Merge: a906d7b 1293ed8 Author: Brad King AuthorDate: Fri Feb 1 13:12:30 2019 +0000 Commit: Kitware Robot CommitDate: Fri Feb 1 08:12:42 2019 -0500 Merge topic 'implicit-incs-cleanup' 1293ed8507 ParseImplicitIncludeInfo: keep implicit incl. consistent when rerunning cmake eaf53158f4 CrayPrgEnv/ParseImplicitIncludes: simplify for new implict include parser ef8f237686 ParseImplicitIncludeInfo: add SunPro Fortran and PGI compiler, Cray fix Acked-by: Kitware Robot Merge-request: !2894 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a906d7b41c8ff2656f3fa3dc5765be79ba31166a commit a906d7b41c8ff2656f3fa3dc5765be79ba31166a Merge: cf3af44 f45d8b2 Author: Brad King AuthorDate: Fri Feb 1 13:11:12 2019 +0000 Commit: Kitware Robot CommitDate: Fri Feb 1 08:12:09 2019 -0500 Merge topic 'document-list' f45d8b2f23 Help: improve details on `CMAKE_LANG_CREATE_SHARED_*` Acked-by: Kitware Robot Merge-request: !2899 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cf3af44af2b73ab6a89a8773b5fc3bee8276a47c commit cf3af44af2b73ab6a89a8773b5fc3bee8276a47c Merge: 9512a58 1c6c2ba Author: Brad King AuthorDate: Fri Feb 1 13:10:58 2019 +0000 Commit: Kitware Robot CommitDate: Fri Feb 1 08:11:19 2019 -0500 Merge topic 'server-normalize-paths' 1c6c2bae28 cmake-server: Normalize build and source directories Acked-by: Kitware Robot Merge-request: !2898 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f45d8b2f2303b07792ff29e31b95d12f29157fe1 commit f45d8b2f2303b07792ff29e31b95d12f29157fe1 Author: Saleem Abdulrasool AuthorDate: Thu Jan 31 09:55:52 2019 -0800 Commit: Saleem Abdulrasool CommitDate: Thu Jan 31 09:55:52 2019 -0800 Help: improve details on `CMAKE_LANG_CREATE_SHARED_*` Add a note that the `CMAKE__CREATE_SHARED_*` rule variables are semicolon delimited lists that can run multiple commands. diff --git a/Help/variable/CMAKE_LANG_CREATE_SHARED_LIBRARY.rst b/Help/variable/CMAKE_LANG_CREATE_SHARED_LIBRARY.rst index be89f85..16fcc03 100644 --- a/Help/variable/CMAKE_LANG_CREATE_SHARED_LIBRARY.rst +++ b/Help/variable/CMAKE_LANG_CREATE_SHARED_LIBRARY.rst @@ -4,4 +4,5 @@ CMAKE__CREATE_SHARED_LIBRARY Rule variable to create a shared library. This is a rule variable that tells CMake how to create a shared -library for the language ````. +library for the language ````. This rule variable is a ``;`` delimited +list of commands to run to perform the linking step. diff --git a/Help/variable/CMAKE_LANG_CREATE_SHARED_MODULE.rst b/Help/variable/CMAKE_LANG_CREATE_SHARED_MODULE.rst index ae5f69d..807229d 100644 --- a/Help/variable/CMAKE_LANG_CREATE_SHARED_MODULE.rst +++ b/Help/variable/CMAKE_LANG_CREATE_SHARED_MODULE.rst @@ -4,4 +4,5 @@ CMAKE__CREATE_SHARED_MODULE Rule variable to create a shared module. This is a rule variable that tells CMake how to create a shared -library for the language ````. +library for the language ````. This rule variable is a ``;`` delimited +list of commands to run. https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1c6c2bae285ecce518d68f708729840df9c28fb0 commit 1c6c2bae285ecce518d68f708729840df9c28fb0 Author: Gregor Jasny AuthorDate: Thu Jan 31 16:58:49 2019 +0100 Commit: Brad King CommitDate: Thu Jan 31 12:49:56 2019 -0500 cmake-server: Normalize build and source directories Fixes: #18862 diff --git a/Source/cmServerProtocol.cxx b/Source/cmServerProtocol.cxx index c3c8156..203ee93 100644 --- a/Source/cmServerProtocol.cxx +++ b/Source/cmServerProtocol.cxx @@ -222,13 +222,22 @@ bool cmServerProtocol1::DoActivate(const cmServerRequest& request, std::string* errorMessage) { std::string sourceDirectory = request.Data[kSOURCE_DIRECTORY_KEY].asString(); - const std::string buildDirectory = - request.Data[kBUILD_DIRECTORY_KEY].asString(); + std::string buildDirectory = request.Data[kBUILD_DIRECTORY_KEY].asString(); std::string generator = request.Data[kGENERATOR_KEY].asString(); std::string extraGenerator = request.Data[kEXTRA_GENERATOR_KEY].asString(); std::string toolset = request.Data[kTOOLSET_KEY].asString(); std::string platform = request.Data[kPLATFORM_KEY].asString(); + // normalize source and build directory + if (!sourceDirectory.empty()) { + sourceDirectory = cmSystemTools::CollapseFullPath(sourceDirectory); + cmSystemTools::ConvertToUnixSlashes(sourceDirectory); + } + if (!buildDirectory.empty()) { + buildDirectory = cmSystemTools::CollapseFullPath(buildDirectory); + cmSystemTools::ConvertToUnixSlashes(buildDirectory); + } + if (buildDirectory.empty()) { setErrorMessage(errorMessage, std::string("\"") + kBUILD_DIRECTORY_KEY + https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1293ed8507be7e854dcb9437a5b7062ec740ff69 commit 1293ed8507be7e854dcb9437a5b7062ec740ff69 Author: Chuck Cranor AuthorDate: Wed Jan 30 12:05:21 2019 -0700 Commit: Chuck Cranor CommitDate: Wed Jan 30 12:05:21 2019 -0700 ParseImplicitIncludeInfo: keep implicit incl. consistent when rerunning cmake The first time you run cmake, it sets the implicit include path to the value reported by the parser (and this value gets saved in CMake${lang}Compiler.cmake). But if you re-run cmake, UnixPaths.cmake blindly appends an extra /usr/include to the value saved in CMake${lang}Compiler.cmake. That should not be harmful in most cases, but we want later runs of cmake to be consistent with the initial one. Resolve using a solution suggested by Brad King: - UnixPaths now sets the default implicit include path in a new variable named _CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES_INIT This value is only used the first time cmake is run (by CMakeDetermineCompilerABI.cmake when it calls the implicit include parser). - if CMakeDetermineCompilerABI.cmake successfully calls the implicit include parser, it overwrites the value in _CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES_INIT with the value returned by the parser - CMakeDetermineCompilerABI.cmake always sets CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES to the above value of _CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES_INIT - the final value of CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES gets saved to CMake${lang}Compiler.cmake when it is regenerated after the compiler tests are done. - CMakeDetermineCompilerABI.cmake is only executed the first time cmake is run. Additional runs of cmake directly load the implicit include path from the value saved in CMake${lang}Compiler.cmake (the parser and _INIT variable are not used). The above depends on UnixPaths.cmake being loaded to set the _INIT value before CMakeDetermineCompilerABI.cmake runs the implicit include parser. diff --git a/Modules/CMakeDetermineCompilerABI.cmake b/Modules/CMakeDetermineCompilerABI.cmake index e55b83f..fd1d5fb 100644 --- a/Modules/CMakeDetermineCompilerABI.cmake +++ b/Modules/CMakeDetermineCompilerABI.cmake @@ -89,16 +89,18 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src) endif() # Parse implicit include directory for this language, if available. - set (implicit_incdirs "") if(CMAKE_${lang}_VERBOSE_FLAG) + set (implicit_incdirs "") cmake_parse_implicit_include_info("${OUTPUT}" "${lang}" implicit_incdirs log rv) file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log "Parsed ${lang} implicit include dir info from above output: rv=${rv}\n${log}\n\n") - if("${rv}" STREQUAL "done") # update parent if parse completed ok - set(CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES "${implicit_incdirs}" PARENT_SCOPE) + if("${rv}" STREQUAL "done") + # We parsed implicit include directories, so override the default initializer. + set(_CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES_INIT "${implicit_incdirs}") endif() endif() + set(CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES "${_CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES_INIT}" PARENT_SCOPE) # Parse implicit linker information for this language, if available. set(implicit_dirs "") diff --git a/Modules/Platform/UnixPaths.cmake b/Modules/Platform/UnixPaths.cmake index fc22fce..4ae4514 100644 --- a/Modules/Platform/UnixPaths.cmake +++ b/Modules/Platform/UnixPaths.cmake @@ -69,14 +69,17 @@ list(APPEND CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES ) # Default per-language values. These may be later replaced after -# parsing the implicit link directories from compiler output. -list(APPEND CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES +# parsing the implicit directory information from compiler output. +set(_CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES_INIT + ${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES} /usr/include ) -list(APPEND CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES +set(_CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES_INIT + ${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES} /usr/include ) -list(APPEND CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES +set(_CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES_INIT + ${CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES} /usr/include ) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=eaf53158f49e6e7581613376e8c054e18bdffc23 commit eaf53158f49e6e7581613376e8c054e18bdffc23 Author: Chuck Cranor AuthorDate: Tue Jan 29 08:17:44 2019 -0700 Commit: Chuck Cranor CommitDate: Tue Jan 29 08:17:44 2019 -0700 CrayPrgEnv/ParseImplicitIncludes: simplify for new implict include parser Remove now redundant implicit parser code from CrayPrgEnv.cmake, as this function is now supported in the general cmake code (e.g. Modules/CMakeParseImplicit{Include,Link}Info.cmake). This simplifies __CrayPrgEnv_setup() to take only one arg (${lang}) and allows us to remove a level of inclusion as CrayPrgEnv-${lang}.cmake is now compiler independent we do not need the CrayPrgEnv-${compiler}-${lang} files any more. diff --git a/Modules/Compiler/CrayPrgEnv-C.cmake b/Modules/Compiler/CrayPrgEnv-C.cmake index 6b461ce..76aa93b 100644 --- a/Modules/Compiler/CrayPrgEnv-C.cmake +++ b/Modules/Compiler/CrayPrgEnv-C.cmake @@ -4,8 +4,4 @@ endif() set(__craylinux_crayprgenv_c 1) include(Compiler/CrayPrgEnv) -macro(__CrayPrgEnv_setup_C compiler_cmd link_cmd) - __CrayPrgEnv_setup(C - ${CMAKE_ROOT}/Modules/CMakeCCompilerABI.c - ${compiler_cmd} ${link_cmd}) -endmacro() +__CrayPrgEnv_setup(C) diff --git a/Modules/Compiler/CrayPrgEnv-CXX.cmake b/Modules/Compiler/CrayPrgEnv-CXX.cmake index aad85b6..442370e 100644 --- a/Modules/Compiler/CrayPrgEnv-CXX.cmake +++ b/Modules/Compiler/CrayPrgEnv-CXX.cmake @@ -4,8 +4,4 @@ endif() set(__craylinux_crayprgenv_cxx 1) include(Compiler/CrayPrgEnv) -macro(__CrayPrgEnv_setup_CXX compiler_cmd link_cmd) - __CrayPrgEnv_setup(CXX - ${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp - ${compiler_cmd} ${link_cmd}) -endmacro() +__CrayPrgEnv_setup(CXX) diff --git a/Modules/Compiler/CrayPrgEnv-Cray-C.cmake b/Modules/Compiler/CrayPrgEnv-Cray-C.cmake deleted file mode 100644 index 547a4b4..0000000 --- a/Modules/Compiler/CrayPrgEnv-Cray-C.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_cray_c) - return() -endif() -set(__craylinux_crayprgenv_cray_c 1) - -include(Compiler/CrayPrgEnv-C) -__CrayPrgEnv_setup_C("/opt/cray/cce/.*/ccfe" "/opt/cray/cce/.*/ld") diff --git a/Modules/Compiler/CrayPrgEnv-Cray-CXX.cmake b/Modules/Compiler/CrayPrgEnv-Cray-CXX.cmake deleted file mode 100644 index df8452c..0000000 --- a/Modules/Compiler/CrayPrgEnv-Cray-CXX.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_cray_cxx) - return() -endif() -set(__craylinux_crayprgenv_cray_cxx 1) - -include(Compiler/CrayPrgEnv-CXX) -__CrayPrgEnv_setup_CXX("/opt/cray/cce/.*/ccfe" "/opt/cray/cce/.*/ld") diff --git a/Modules/Compiler/CrayPrgEnv-Cray-Fortran.cmake b/Modules/Compiler/CrayPrgEnv-Cray-Fortran.cmake deleted file mode 100644 index 9f46a04..0000000 --- a/Modules/Compiler/CrayPrgEnv-Cray-Fortran.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_cray_fortran) - return() -endif() -set(__craylinux_crayprgenv_cray_fortran 1) - -include(Compiler/CrayPrgEnv-Fortran) -__CrayPrgEnv_setup_Fortran("/opt/cray/cce/.*/ftnfe" "/opt/cray/cce/.*/ld") diff --git a/Modules/Compiler/CrayPrgEnv-Fortran.cmake b/Modules/Compiler/CrayPrgEnv-Fortran.cmake index 9c4d269..85f82d3 100644 --- a/Modules/Compiler/CrayPrgEnv-Fortran.cmake +++ b/Modules/Compiler/CrayPrgEnv-Fortran.cmake @@ -4,8 +4,4 @@ endif() set(__craylinux_crayprgenv_fortran 1) include(Compiler/CrayPrgEnv) -macro(__CrayPrgEnv_setup_Fortran compiler_cmd link_cmd) - __CrayPrgEnv_setup(Fortran - ${CMAKE_ROOT}/Modules/CMakeFortranCompilerABI.F - ${compiler_cmd} ${link_cmd}) -endmacro() +__CrayPrgEnv_setup(Fortran) diff --git a/Modules/Compiler/CrayPrgEnv-GNU-C.cmake b/Modules/Compiler/CrayPrgEnv-GNU-C.cmake deleted file mode 100644 index 248081b..0000000 --- a/Modules/Compiler/CrayPrgEnv-GNU-C.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_gnu_c) - return() -endif() -set(__craylinux_crayprgenv_gnu_c 1) - -include(Compiler/CrayPrgEnv-C) -__CrayPrgEnv_setup_C("/opt/gcc/.*/cc1" "/opt/gcc/.*/collect2") diff --git a/Modules/Compiler/CrayPrgEnv-GNU-CXX.cmake b/Modules/Compiler/CrayPrgEnv-GNU-CXX.cmake deleted file mode 100644 index be4eb6d..0000000 --- a/Modules/Compiler/CrayPrgEnv-GNU-CXX.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_gnu_cxx) - return() -endif() -set(__craylinux_crayprgenv_gnu_cxx 1) - -include(Compiler/CrayPrgEnv-CXX) -__CrayPrgEnv_setup_CXX("/opt/gcc/.*/cc1plus" "/opt/gcc/.*/collect2") diff --git a/Modules/Compiler/CrayPrgEnv-GNU-Fortran.cmake b/Modules/Compiler/CrayPrgEnv-GNU-Fortran.cmake deleted file mode 100644 index 8bd23ff..0000000 --- a/Modules/Compiler/CrayPrgEnv-GNU-Fortran.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_gnu_fortran) - return() -endif() -set(__craylinux_crayprgenv_gnu_fortran 1) - -include(Compiler/CrayPrgEnv-Fortran) -__CrayPrgEnv_setup_Fortran("/opt/gcc/.*/f951" "/opt/gcc/.*/collect2") diff --git a/Modules/Compiler/CrayPrgEnv-Intel-C.cmake b/Modules/Compiler/CrayPrgEnv-Intel-C.cmake deleted file mode 100644 index 83c4e38..0000000 --- a/Modules/Compiler/CrayPrgEnv-Intel-C.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_intel_c) - return() -endif() -set(__craylinux_crayprgenv_intel_c 1) - -include(Compiler/CrayPrgEnv-C) -__CrayPrgEnv_setup_C("/opt/intel/.*/mcpcom" "^ld ") diff --git a/Modules/Compiler/CrayPrgEnv-Intel-CXX.cmake b/Modules/Compiler/CrayPrgEnv-Intel-CXX.cmake deleted file mode 100644 index 3c3c3e6..0000000 --- a/Modules/Compiler/CrayPrgEnv-Intel-CXX.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_intel_cxx) - return() -endif() -set(__craylinux_crayprgenv_intel_cxx 1) - -include(Compiler/CrayPrgEnv-CXX) -__CrayPrgEnv_setup_CXX("/opt/intel/.*/mcpcom" "^ld ") diff --git a/Modules/Compiler/CrayPrgEnv-Intel-Fortran.cmake b/Modules/Compiler/CrayPrgEnv-Intel-Fortran.cmake deleted file mode 100644 index 08a316d..0000000 --- a/Modules/Compiler/CrayPrgEnv-Intel-Fortran.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_intel_fortran) - return() -endif() -set(__craylinux_crayprgenv_intel_fortran 1) - -include(Compiler/CrayPrgEnv-Fortran) -__CrayPrgEnv_setup_Fortran("/opt/intel/.*/fortcom" "^ld ") diff --git a/Modules/Compiler/CrayPrgEnv-PGI-C.cmake b/Modules/Compiler/CrayPrgEnv-PGI-C.cmake deleted file mode 100644 index f45767c..0000000 --- a/Modules/Compiler/CrayPrgEnv-PGI-C.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_pgi_c) - return() -endif() -set(__craylinux_crayprgenv_pgi_c 1) - -include(Compiler/CrayPrgEnv-C) -__CrayPrgEnv_setup_C("/opt/pgi/[^ ]*/pgc" "/usr/bin/ld") diff --git a/Modules/Compiler/CrayPrgEnv-PGI-CXX.cmake b/Modules/Compiler/CrayPrgEnv-PGI-CXX.cmake deleted file mode 100644 index a2a286f..0000000 --- a/Modules/Compiler/CrayPrgEnv-PGI-CXX.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_pgi_cxx) - return() -endif() -set(__craylinux_crayprgenv_pgi_cxx 1) - -include(Compiler/CrayPrgEnv-CXX) -__CrayPrgEnv_setup_CXX("/opt/pgi/[^ ]*/pgcpp" "/usr/bin/ld") diff --git a/Modules/Compiler/CrayPrgEnv-PGI-Fortran.cmake b/Modules/Compiler/CrayPrgEnv-PGI-Fortran.cmake deleted file mode 100644 index f6ba7c0..0000000 --- a/Modules/Compiler/CrayPrgEnv-PGI-Fortran.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_pgi_fortran) - return() -endif() -set(__craylinux_crayprgenv_pgi_fortran 1) - -include(Compiler/CrayPrgEnv-Fortran) -__CrayPrgEnv_setup_Fortran("/opt/pgi/[^ ]*/pgf" "/usr/bin/ld") diff --git a/Modules/Compiler/CrayPrgEnv.cmake b/Modules/Compiler/CrayPrgEnv.cmake index 05e3fc7..6c1c770 100644 --- a/Modules/Compiler/CrayPrgEnv.cmake +++ b/Modules/Compiler/CrayPrgEnv.cmake @@ -4,54 +4,7 @@ if(__craylinux_crayprgenv) endif() set(__craylinux_crayprgenv 1) -macro(__cray_extract_args cmd tag_regex out_var make_absolute) - string(REGEX MATCHALL "${tag_regex}" args "${cmd}") - foreach(arg IN LISTS args) - string(REGEX REPLACE "^${tag_regex}$" "\\2" param "${arg}") - if(make_absolute) - get_filename_component(param "${param}" ABSOLUTE) - endif() - list(APPEND ${out_var} ${param}) - endforeach() -endmacro() - -function(__cray_extract_implicit src compiler_cmd link_cmd lang include_dirs_var link_dirs_var link_libs_var) - set(BIN "${CMAKE_PLATFORM_INFO_DIR}/CrayExtractImplicit_${lang}.bin") - execute_process( - COMMAND ${CMAKE_${lang}_COMPILER} ${CMAKE_${lang}_VERBOSE_FLAG} -o ${BIN} - RESULT_VARIABLE result - OUTPUT_VARIABLE output - ERROR_VARIABLE error - ) - if(EXISTS "${BIN}") - file(REMOVE "${BIN}") - endif() - set(include_dirs) - set(link_dirs) - set(link_libs) - string(REGEX REPLACE "\r?\n" ";" output_lines "${output}\n${error}") - foreach(line IN LISTS output_lines) - if("${line}" MATCHES "${compiler_cmd}") - __cray_extract_args("${line}" " -(I ?|isystem )([^ ]*)" include_dirs 1) - set(processed_include 1) - endif() - if("${line}" MATCHES "${link_cmd}") - __cray_extract_args("${line}" " -(L ?)([^ ]*)" link_dirs 1) - __cray_extract_args("${line}" " -(l ?)([^ ]*)" link_libs 0) - set(processed_link 1) - endif() - if(processed_include AND processed_link) - break() - endif() - endforeach() - - set(${include_dirs_var} "${include_dirs}" PARENT_SCOPE) - set(${link_dirs_var} "${link_dirs}" PARENT_SCOPE) - set(${link_libs_var} "${link_libs}" PARENT_SCOPE) - set(CRAY_${lang}_EXTRACTED_IMPLICIT 1 CACHE INTERNAL "" FORCE) -endfunction() - -macro(__CrayPrgEnv_setup lang test_src compiler_cmd link_cmd) +macro(__CrayPrgEnv_setup lang) if(DEFINED ENV{CRAYPE_VERSION}) message(STATUS "Cray Programming Environment $ENV{CRAYPE_VERSION} ${lang}") elseif(DEFINED ENV{ASYNCPE_VERSION}) @@ -81,12 +34,4 @@ macro(__CrayPrgEnv_setup lang test_src compiler_cmd link_cmd) set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") set(CMAKE_LINK_SEARCH_START_STATIC TRUE) endif() - if(NOT CRAY_${lang}_EXTRACTED_IMPLICIT) - __cray_extract_implicit( - ${test_src} ${compiler_cmd} ${link_cmd} ${lang} - CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES - CMAKE_${lang}_IMPLICIT_LINK_DIRECTORIES - CMAKE_${lang}_IMPLICIT_LINK_LIBRARIES - ) - endif() endmacro() https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ef8f237686c2a0b51249bfd46d9498abeb019e76 commit ef8f237686c2a0b51249bfd46d9498abeb019e76 Author: Chuck Cranor AuthorDate: Tue Jan 29 07:48:03 2019 -0700 Commit: Chuck Cranor CommitDate: Tue Jan 29 07:48:03 2019 -0700 ParseImplicitIncludeInfo: add SunPro Fortran and PGI compiler, Cray fix Add implicit include parser for PGI compiler ID. PGI verbose output for CXX differs from C and Fortran, so CXX is broken out into its own case. The C and Fortran compilers take "-YI,path" and "-Mnostdinc" to change or disable the builtin include path. The last arg on the command line appears to override previous args (e.g. "-YI,path1 -YI,path2" will set the path to "path2" ... the previous "-YI,path1" gets undone). The CXX compiler verbose output reports with "-I" rather than "-stdinc" for the built in path. In addition with CXX "-Mnostdinc" does not completely zero the include path (e.g. "#include " still works with "-Mnostdinc"... "-I/usr/include" still shows up in the verbose output). Minor adjustments to get the SunPro parser to handle Fortran as well. Fixes for Cray compiler support (Modules/Compiler/Cray-{C,CXX}.cmake): The *_COMPILE_OPTION flags contain options like "-h c99,gnu" ... these options need to be in double quotes (they are currently not). Otherwise, cmake treats them as lists and tries to run the compiler with "-h;c99,gnu" and fails when it is "Detecting C compile features"... Also, the Cray-CXX.cmake contains "__compiler_cray(C)" instead of "__compiler_cray(CXX)" -- this error prevents the correct VERBOSE flags for CXX from being defined which prevents the implicit include parser from running. Add additional test cases for PGI and SunPro Fortran to the Tests/RunCMake/ParseImplicitIncludeInfo area. diff --git a/Modules/CMakeParseImplicitIncludeInfo.cmake b/Modules/CMakeParseImplicitIncludeInfo.cmake index 211406d..21e24b7 100644 --- a/Modules/CMakeParseImplicitIncludeInfo.cmake +++ b/Modules/CMakeParseImplicitIncludeInfo.cmake @@ -27,9 +27,52 @@ function(cmake_parse_implicit_include_line line lang id_var log_var state_var) endif() endif() + # PGI compiler + if("${CMAKE_${lang}_COMPILER_ID}" STREQUAL "PGI") + # pgc++ verbose output differs + if(("${lang}" STREQUAL "C" OR "${lang}" STREQUAL "Fortran") AND + "${line}" MATCHES "^/" AND + "${line}" MATCHES "/pgc |/pgf901 |/pgftnc " AND + "${line}" MATCHES " -cmdline ") + # cmdline has unparsed cmdline, remove it + string(REGEX REPLACE "-cmdline .*" "" line "${line}") + if("${line}" MATCHES " -nostdinc ") + set(rv "") # defined, but empty + else() + string(REGEX MATCHALL " -stdinc ([^ ]*)" incs "${line}") + foreach(inc IN LISTS incs) + string(REGEX REPLACE " -stdinc ([^ ]*)" "\\1" idir "${inc}") + string(REPLACE ":" ";" idir "${idir}") + list(APPEND rv ${idir}) + endforeach() + endif() + if(DEFINED rv) + string(APPEND log " got implicit includes via PGI C/F parser!\n") + else() + string(APPEND log " warning: PGI C/F parse failed!\n") + endif() + elseif("${lang}" STREQUAL "CXX" AND "${line}" MATCHES "^/" AND + "${line}" MATCHES "/pggpp1 " AND "${line}" MATCHES " -I") + # oddly, -Mnostdinc does not get rid of system -I's, at least in + # PGI 18.10.1 ... + string(REGEX MATCHALL " (-I ?)([^ ]*)" incs "${line}") + foreach(inc IN LISTS incs) + string(REGEX REPLACE " (-I ?)([^ ]*)" "\\2" idir "${inc}") + if(NOT "${idir}" STREQUAL "-") # filter out "-I-" + list(APPEND rv "${idir}") + endif() + endforeach() + if(DEFINED rv) + string(APPEND log " got implicit includes via PGI CXX parser!\n") + else() + string(APPEND log " warning: PGI CXX parse failed!\n") + endif() + endif() + endif() + # SunPro compiler if("${CMAKE_${lang}_COMPILER_ID}" STREQUAL "SunPro" AND - "${line}" MATCHES "-D__SUNPRO_C") + ("${line}" MATCHES "-D__SUNPRO_C" OR "${line}" MATCHES "-D__SUNPRO_F") ) string(REGEX MATCHALL " (-I ?)([^ ]*)" incs "${line}") foreach(inc IN LISTS incs) string(REGEX REPLACE " (-I ?)([^ ]*)" "\\2" idir "${inc}") @@ -38,8 +81,10 @@ function(cmake_parse_implicit_include_line line lang id_var log_var state_var) endif() endforeach() if(rv) - # /usr/include appears to be hardwired in - list(APPEND rv "/usr/include") + if ("${lang}" STREQUAL "C" OR "${lang}" STREQUAL "CXX") + # /usr/include appears to be hardwired in + list(APPEND rv "/usr/include") + endif() string(APPEND log " got implicit includes via sunpro parser!\n") else() string(APPEND log " warning: sunpro parse failed!\n") diff --git a/Modules/Compiler/Cray-C.cmake b/Modules/Compiler/Cray-C.cmake index d34154c..b3c96ee 100644 --- a/Modules/Compiler/Cray-C.cmake +++ b/Modules/Compiler/Cray-C.cmake @@ -8,13 +8,13 @@ string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -DNDEBUG") string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -DNDEBUG") if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1) - set(CMAKE_C90_STANDARD_COMPILE_OPTION -h noc99,conform) - set(CMAKE_C90_EXTENSION_COMPILE_OPTION -h noc99,gnu) - set(CMAKE_C99_STANDARD_COMPILE_OPTION -h c99,conform) - set(CMAKE_C99_EXTENSION_COMPILE_OPTION -h c99,gnu) + set(CMAKE_C90_STANDARD_COMPILE_OPTION "-h noc99,conform") + set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-h noc99,gnu") + set(CMAKE_C99_STANDARD_COMPILE_OPTION "-h c99,conform") + set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-h c99,gnu") if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 8.5) - set(CMAKE_C11_STANDARD_COMPILE_OPTION -h std=c11,conform) - set(CMAKE_C11_EXTENSION_COMPILE_OPTION -h std=c11,gnu) + set(CMAKE_C11_STANDARD_COMPILE_OPTION "-h std=c11,conform") + set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-h std=c11,gnu") endif () endif () diff --git a/Modules/Compiler/Cray-CXX.cmake b/Modules/Compiler/Cray-CXX.cmake index ff97e92..bbb5718 100644 --- a/Modules/Compiler/Cray-CXX.cmake +++ b/Modules/Compiler/Cray-CXX.cmake @@ -2,21 +2,21 @@ # file Copyright.txt or https://cmake.org/licensing for details. include(Compiler/Cray) -__compiler_cray(C) +__compiler_cray(CXX) string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -DNDEBUG") string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -DNDEBUG") if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1) - set(CMAKE_CXX98_STANDARD_COMPILE_OPTION -h conform) - set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION -h gnu) + set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-h conform") + set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-h gnu") if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.4) - set(CMAKE_CXX11_STANDARD_COMPILE_OPTION -h std=c++11) - set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION -h std=c++11,gnu) + set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-h std=c++11") + set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-h std=c++11,gnu") endif() if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.6) - set(CMAKE_CXX14_STANDARD_COMPILE_OPTION -h std=c++14) - set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION -h std=c++14,gnu) + set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-h std=c++14") + set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-h std=c++14,gnu") endif () endif () diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/ParseImplicitIncludeInfo.cmake b/Tests/RunCMake/ParseImplicitIncludeInfo/ParseImplicitIncludeInfo.cmake index a9029dc..ce8d45b 100644 --- a/Tests/RunCMake/ParseImplicitIncludeInfo/ParseImplicitIncludeInfo.cmake +++ b/Tests/RunCMake/ParseImplicitIncludeInfo/ParseImplicitIncludeInfo.cmake @@ -21,6 +21,10 @@ set(targets freebsd-C-Clang-3.3.0 freebsd-CXX-Clang-3.3.0 freebsd-Fortran-GNU-4.6.4 linux-C-GNU-7.3.0 linux-CXX-GNU-7.3.0 linux-Fortran-GNU-7.3.0 linux-C-Intel-18.0.0.20170811 linux-CXX-Intel-18.0.0.20170811 + linux-C-PGI-18.10.1 linux-CXX-PGI-18.10.1 + linux-Fortran-PGI-18.10.1 linux_pgf77-Fortran-PGI-18.10.1 + linux_nostdinc-C-PGI-18.10.1 linux_nostdinc-CXX-PGI-18.10.1 + linux_nostdinc-Fortran-PGI-18.10.1 linux-C-XL-12.1.0 linux-CXX-XL-12.1.0 linux-Fortran-XL-14.1.0 linux_nostdinc-C-XL-12.1.0 linux_nostdinc-CXX-XL-12.1.0 linux_nostdinc_i-C-XL-12.1.0 linux_nostdinc-CXX-XL-12.1.0 @@ -30,7 +34,7 @@ set(targets netbsd-C-GNU-4.8.5 netbsd-CXX-GNU-4.8.5 netbsd_nostdinc-C-GNU-4.8.5 netbsd_nostdinc-CXX-GNU-4.8.5 openbsd-C-Clang-5.0.1 openbsd-CXX-Clang-5.0.1 - sunos-C-SunPro-5.13.0 sunos-CXX-SunPro-5.13.0 + sunos-C-SunPro-5.13.0 sunos-CXX-SunPro-5.13.0 sunos-Fortran-SunPro-8.8.0 ) include(${CMAKE_ROOT}/Modules/CMakeParseImplicitIncludeInfo.cmake) diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-C-PGI-18.10.1.input b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-C-PGI-18.10.1.input new file mode 100644 index 0000000..cfc3e7b --- /dev/null +++ b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-C-PGI-18.10.1.input @@ -0,0 +1,36 @@ +CMAKE_LANG=C +CMAKE_C_COMPILER_ABI= +CMAKE_C_COMPILER_AR= +CMAKE_C_COMPILER_ARCHITECTURE_ID= +CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN= +CMAKE_C_COMPILER_ID=PGI +CMAKE_C_COMPILER_LAUNCHER= +CMAKE_C_COMPILER_LOADED=1 +CMAKE_C_COMPILER_RANLIB= +CMAKE_C_COMPILER_TARGET= +CMAKE_C_COMPILER_VERSION=18.10.1 +CMAKE_C_COMPILER_VERSION_INTERAL= +Change Dir: /tmp/ii/CMakeFiles/CMakeTmp + +Run Build Command:"/usr/bin/make" "cmTC_81a12/fast" +/usr/bin/make -f CMakeFiles/cmTC_81a12.dir/build.make CMakeFiles/cmTC_81a12.dir/build +make[1]: Entering directory '/tmp/ii/CMakeFiles/CMakeTmp' +Building C object CMakeFiles/cmTC_81a12.dir/CMakeCCompilerABI.c.o +/mnt/pgi/linux86-64/2018/bin/pgcc -v -o CMakeFiles/cmTC_81a12.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.10/Modules/CMakeCCompilerABI.c +Export PGI_CURR_CUDA_HOME=/mnt/pgi/linux86-64/2018/cuda/9.1 +Export PGI=/mnt/pgi + +/mnt/pgi/linux86-64/18.10/bin/pgc /usr/share/cmake-3.10/Modules/CMakeCCompilerABI.c -opt 1 -x 119 0xa10000 -x 122 0x40 -x 123 0x1000 -x 127 4 -x 127 17 -x 19 0x400000 -x 28 0x40000 -x 120 0x10000000 -x 70 0x8000 -x 122 1 -x 125 0x20000 -quad -x 59 4 -tp k8 -x 120 0x1000 -astype 0 -stdinc /mnt/pgi/linux86-64/18.10/include-gcc70:/mnt/pgi/linux86-64/18.10/include:/usr/lib/gcc/x86_64-linux-gnu/7/include:/usr/local/include:/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed:/usr/include/x86_64-linux-gnu:/usr/include -def unix -def __unix -def __unix__ -def linux -def __linux -def __linux__ -def __NO_MATH_INLINES -def __LP64__ -def __x86_64 -def __x86_64__ -def __LONG_MAX__=9223372036854775807L -def '__SIZE_TYPE__=unsigned long int' -def '__PTRDIFF_TYPE__=long int' -def __extension__= -def __amd_64__amd64__ -def __k8 -def __k8__ -def __SSE__ -def __MMX__ -def __SSE2__ -def __SSE3__ -predicate '#machine(x86_64) #lint(off) #system(posix) #cpu(x86_64)' -cmdline '+pgcc /usr/share/cmake-3.10/Modules/CMakeCCompilerABI.c -v -o CMakeFiles/cmTC_81a12.dir/CMakeCCompilerABI.c.o -c' -outfile CMakeFiles/cmTC_81a12.dir/CMakeCCompilerABI.c.o -x 123 0x80000000 -x 123 4 -x 2 0x400 -preinclude _c_macros.h -x 119 0x20 -def __pgnu_vsn=70300 -x 120 0x200000 -x 70 0x40000000 -x 164 0x800000 -y 163 0xc0000000 -x 189 0x10 -y 189 0x4000000 -asm /tmp/pgccl1BeHkOmG3zk.s +PGC/x86-64 Linux 18.10-1: compilation successful + +/usr/bin/as /tmp/pgccl1BeHkOmG3zk.s -o CMakeFiles/cmTC_81a12.dir/CMakeCCompilerABI.c.o +Unlinking /tmp/pgccl1BeHkOmG3zk.s +Unlinking /tmp/pgccJ1BePEjJHZ9x.ll +Linking C executable cmTC_81a12 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_81a12.dir/link.txt --verbose=1 +/mnt/pgi/linux86-64/2018/bin/pgcc -v CMakeFiles/cmTC_81a12.dir/CMakeCCompilerABI.c.o -o cmTC_81a12 +Export PGI_CURR_CUDA_HOME=/mnt/pgi/linux86-64/2018/cuda/9.1 +Export PGI=/mnt/pgi + +/usr/bin/ld /usr/lib/x86_64-linux-gnu/crt1.o /usr/lib/x86_64-linux-gnu/crti.o /mnt/pgi/linux86-64/18.10/lib/trace_init.o /usr/lib/gcc/x86_64-linux-gnu/7/crtbegin.o /mnt/pgi/linux86-64/18.10/lib/initmp.o --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 /mnt/pgi/linux86-64/18.10/lib/pgi.ld -L/mnt/pgi/linux86-64/18.10/lib -L/usr/lib64 -L/usr/lib/gcc/x86_64-linux-gnu/7 CMakeFiles/cmTC_81a12.dir/CMakeCCompilerABI.c.o -rpath /mnt/pgi/linux86-64/18.10/lib -rpath /usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib64 -o cmTC_81a12 -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib64 -lpgmp -lnuma -lpthread --start-group -lpgmath -lnspgc -lpgc --end-group -lm -lgcc -lc -lgcc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/7/crtend.o /usr/lib/x86_64-linux-gnu/crtn.o +make[1]: Leaving directory '/tmp/ii/CMakeFiles/CMakeTmp' diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-C-PGI-18.10.1.output b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-C-PGI-18.10.1.output new file mode 100644 index 0000000..289c530 --- /dev/null +++ b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-C-PGI-18.10.1.output @@ -0,0 +1 @@ +/mnt/pgi/linux86-64/18.10/include-gcc70;/mnt/pgi/linux86-64/18.10/include;/usr/lib/gcc/x86_64-linux-gnu/7/include;/usr/local/include;/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed;/usr/include/x86_64-linux-gnu;/usr/include diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-CXX-PGI-18.10.1.input b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-CXX-PGI-18.10.1.input new file mode 100644 index 0000000..f95627e --- /dev/null +++ b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-CXX-PGI-18.10.1.input @@ -0,0 +1,40 @@ +CMAKE_LANG=CXX +CMAKE_CXX_COMPILER_ABI= +CMAKE_CXX_COMPILER_AR= +CMAKE_CXX_COMPILER_ARCHITECTURE_ID= +CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN= +CMAKE_CXX_COMPILER_ID=PGI +CMAKE_CXX_COMPILER_LAUNCHER= +CMAKE_CXX_COMPILER_LOADED=1 +CMAKE_CXX_COMPILER_RANLIB= +CMAKE_CXX_COMPILER_TARGET= +CMAKE_CXX_COMPILER_VERSION=18.10.1 +CMAKE_CXX_COMPILER_VERSION_INTERAL= +Change Dir: /tmp/ii/CMakeFiles/CMakeTmp + +Run Build Command:"/usr/bin/make" "cmTC_9932f/fast" +/usr/bin/make -f CMakeFiles/cmTC_9932f.dir/build.make CMakeFiles/cmTC_9932f.dir/build +make[1]: Entering directory '/tmp/ii/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_9932f.dir/CMakeCXXCompilerABI.cpp.o +/mnt/pgi/linux86-64/2018/bin/pgc++ -v -o CMakeFiles/cmTC_9932f.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.10/Modules/CMakeCXXCompilerABI.cpp +Export PGI_CURR_CUDA_HOME=/mnt/pgi/linux86-64/2018/cuda/9.1 +Export PGI=/mnt/pgi + +/mnt/pgi/linux86-64/18.10/bin/pggpp1 --llalign -Dunix -D__unix -D__unix__ -Dlinux -D__linux -D__linux__ -D__NO_MATH_INLINES -D__LP64__ -D__x86_64 -D__x86_64__ -D__LONG_MAX__=9223372036854775807L '-D__SIZE_TYPE__=unsigned long int' '-D__PTRDIFF_TYPE__=long int' -D__extension__= -D__amd_64__amd64__ -D__k8 -D__k8__ -D__SSE__ -D__MMX__ -D__SSE2__ -D__SSE3__ -D__PGI -D_GNU_SOURCE -D_PGCG_SOURCE -I- -I/mnt/pgi/linux86-64/18.10/include-gcc70 -I/mnt/pgi/linux86-64/18.10/include -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include --preinclude _cplus_preinclude.h --preinclude_macros _cplus_macros.h --gnu_version=70300 -D__pgnu_vsn=70300 -q -o /tmp/pgc++9bCe3jXUexoO.il /usr/share/cmake-3.10/Modules/CMakeCXXCompilerABI.cpp + +/mnt/pgi/linux86-64/18.10/bin/pggpp2 /usr/share/cmake-3.10/Modules/CMakeCXXCompilerABI.cpp -opt 1 -x 119 0xa10000 -x 122 0x40 -x 123 0x1000 -x 127 4 -x 127 17 -x 19 0x400000 -x 28 0x40000 -x 120 0x10000000 -x 70 0x8000 -x 122 1 -x 125 0x20000 -quad -x 59 4 -tp k8 -x 120 0x1000 -astype 0 -fn /usr/share/cmake-3.10/Modules/CMakeCXXCompilerABI.cpp -il /tmp/pgc++9bCe3jXUexoO.il -x 117 0x600 -x 123 0x80000000 -x 123 4 -x 119 0x20 -def __pgnu_vsn=70300 -x 120 0x200000 -x 70 0x40000000 -x 164 0x800000 -y 163 0xc0000000 -x 189 0x10 -y 189 0x4000000 -gnuvsn 70300 -x 69 0x200 -cmdline '+pgc++ /tmp/pgc++9bCe3jXUexoO.il -v -o CMakeFiles/cmTC_9932f.dir/CMakeCXXCompilerABI.cpp.o -c' -asm /tmp/pgc++LbCeVyAxx_Yt.s +PGCC/x86 Linux 18.10-1: compilation successful + +/usr/bin/as /tmp/pgc++LbCeVyAxx_Yt.s -o CMakeFiles/cmTC_9932f.dir/CMakeCXXCompilerABI.cpp.o +Action(ReadTIFile(./CMakeCXXCompilerABI.ti)) +Unlinking /tmp/pgc++9bCe3jXUexoO.il +Unlinking /tmp/pgc++LbCeVyAxx_Yt.s +Unlinking /tmp/pgc++nbCeNEnzNVv3.ll +Linking CXX executable cmTC_9932f +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_9932f.dir/link.txt --verbose=1 +/mnt/pgi/linux86-64/2018/bin/pgc++ -v CMakeFiles/cmTC_9932f.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_9932f +Export PGI_CURR_CUDA_HOME=/mnt/pgi/linux86-64/2018/cuda/9.1 +Export PGI=/mnt/pgi + +/usr/bin/ld /usr/lib/x86_64-linux-gnu/crt1.o /usr/lib/x86_64-linux-gnu/crti.o /mnt/pgi/linux86-64/18.10/lib/trace_init.o /usr/lib/gcc/x86_64-linux-gnu/7/crtbegin.o /mnt/pgi/linux86-64/18.10/lib/initmp.o --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 /mnt/pgi/linux86-64/18.10/lib/pgi.ld -L/mnt/pgi/linux86-64/18.10/lib -L/usr/lib64 -L/usr/lib/gcc/x86_64-linux-gnu/7 CMakeFiles/cmTC_9932f.dir/CMakeCXXCompilerABI.cpp.o -rpath /mnt/pgi/linux86-64/18.10/lib -rpath /usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib64 -o cmTC_9932f -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib64 -latomic -lpgatm -lstdc++ -lpgmp -lnuma -lpthread --start-group -lpgmath -lnspgc -lpgc --end-group -lm -lgcc -lc -lgcc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/7/crtend.o /usr/lib/x86_64-linux-gnu/crtn.o +make[1]: Leaving directory '/tmp/ii/CMakeFiles/CMakeTmp' diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-CXX-PGI-18.10.1.output b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-CXX-PGI-18.10.1.output new file mode 100644 index 0000000..8c9d24a --- /dev/null +++ b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-CXX-PGI-18.10.1.output @@ -0,0 +1 @@ +/mnt/pgi/linux86-64/18.10/include-gcc70;/mnt/pgi/linux86-64/18.10/include;/usr/include/c++/7;/usr/include/x86_64-linux-gnu/c++/7;/usr/include/c++/7/backward;/usr/lib/gcc/x86_64-linux-gnu/7/include;/usr/local/include;/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed;/usr/include/x86_64-linux-gnu;/usr/include diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-Fortran-PGI-18.10.1.input b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-Fortran-PGI-18.10.1.input new file mode 100644 index 0000000..fe49bcd --- /dev/null +++ b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-Fortran-PGI-18.10.1.input @@ -0,0 +1,47 @@ +CMAKE_LANG=Fortran +CMAKE_Fortran_COMPILER_ABI= +CMAKE_Fortran_COMPILER_AR= +CMAKE_Fortran_COMPILER_ARCHITECTURE_ID= +CMAKE_Fortran_COMPILER_EXTERNAL_TOOLCHAIN= +CMAKE_Fortran_COMPILER_ID=PGI +CMAKE_Fortran_COMPILER_LAUNCHER= +CMAKE_Fortran_COMPILER_LOADED=1 +CMAKE_Fortran_COMPILER_RANLIB= +CMAKE_Fortran_COMPILER_TARGET= +CMAKE_Fortran_COMPILER_VERSION=18.10.1 +CMAKE_Fortran_COMPILER_VERSION_INTERAL= +Change Dir: /tmp/ii/CMakeFiles/CMakeTmp + +Run Build Command:"/usr/bin/make" "cmTC_1e8d2/fast" +/usr/bin/make -f CMakeFiles/cmTC_1e8d2.dir/build.make CMakeFiles/cmTC_1e8d2.dir/build +make[1]: Entering directory '/tmp/ii/CMakeFiles/CMakeTmp' +Building Fortran object CMakeFiles/cmTC_1e8d2.dir/CMakeFortranCompilerABI.F.o +/mnt/pgi/linux86-64/2018/bin/pgfortran -v -c /usr/share/cmake-3.10/Modules/CMakeFortranCompilerABI.F -o CMakeFiles/cmTC_1e8d2.dir/CMakeFortranCompilerABI.F.o +Export PGI_CURR_CUDA_HOME=/mnt/pgi/linux86-64/2018/cuda/9.1 +Export PGI=/mnt/pgi + +/mnt/pgi/linux86-64/18.10/bin/pgf901 /usr/share/cmake-3.10/Modules/CMakeFortranCompilerABI.F -opt 1 -nohpf -nostatic -x 19 0x400000 -quad -x 59 4 -x 15 2 -x 49 0x400004 -x 51 0x20 -x 57 0x4c -x 58 0x10000 -x 124 0x1000 -tp k8 -x 57 0xfb0000 -x 58 0x78031040 -x 47 0x08 -x 48 4608 -x 49 0x100 -x 120 0x200 -stdinc /mnt/pgi/linux86-64/18.10/include-gcc70:/mnt/pgi/linux86-64/18.10/include:/usr/lib/gcc/x86_64-linux-gnu/7/include:/usr/local/include:/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed:/usr/include/x86_64-linux-gnu:/usr/include -cmdline '+pgfortran /usr/share/cmake-3.10/Modules/CMakeFortranCompilerABI.F -v -c -o CMakeFiles/cmTC_1e8d2.dir/CMakeFortranCompilerABI.F.o' -def unix -def __unix -def __unix__ -def linux -def __linux -def __linux__ -def __NO_MATH_INLINES -def __LP64__ -def __x86_64 -def __x86_64__ -def __LONG_MAX__=9223372036854775807L -def '__SIZE_TYPE__=unsigned long int' -def '__PTRDIFF_TYPE__=long int' -def __extension__= -def __amd_64__amd64__ -def __k8 -def __k8__ -def __SSE__ -def __MMX__ -def __SSE2__ -def __SSE3__ -preprocess -nofreeform -vect 48 -x 54 1 -x 70 0x40000000 -y 163 0xc0000000 -x 189 0x10 -modexport /tmp/pgfortranSoCeegQjDEd5.cmod -modindex /tmp/pgfortranmoCeK26CaVn7.cmdx -output /tmp/pgfortranSoCeeXSv8E7w.ilm + 0 inform, 0 warnings, 0 severes, 0 fatal for cmakefortrancompilerabi +PGF90/x86-64 Linux 18.10-1: compilation successful + +/mnt/pgi/linux86-64/18.10/bin/pgf902 /tmp/pgfortranSoCeeXSv8E7w.ilm -fn /usr/share/cmake-3.10/Modules/CMakeFortranCompilerABI.F -opt 1 -x 51 0x20 -x 119 0xa10000 -x 122 0x40 -x 123 0x1000 -x 127 4 -x 127 17 -x 19 0x400000 -x 28 0x40000 -x 120 0x10000000 -x 70 0x8000 -x 122 1 -x 125 0x20000 -quad -x 59 4 -tp k8 -x 120 0x1000 -x 124 0x1400 -y 15 2 -x 57 0x3b0000 -x 58 0x48000000 -x 49 0x100 -x 120 0x200 -astype 0 -x 68 0x20 -x 70 0x40000000 -x 164 0x800000 -x 124 1 -y 163 0xc0000000 -x 189 0x10 -y 189 0x4000000 -cmdline '+pgfortran /usr/share/cmake-3.10/Modules/CMakeFortranCompilerABI.F -v -c -o CMakeFiles/cmTC_1e8d2.dir/CMakeFortranCompilerABI.F.o' -asm /tmp/pgfortranSoCeeRr681iB.s + 0 inform, 0 warnings, 0 severes, 0 fatal for cmakefortrancompilerabi +PGF90/x86-64 Linux 18.10-1: compilation successful + +/usr/bin/as /tmp/pgfortranSoCeeRr681iB.s -o CMakeFiles/cmTC_1e8d2.dir/CMakeFortranCompilerABI.F.o + +/mnt/pgi/linux86-64/18.10/bin/pgappend -noerror CMakeFiles/cmTC_1e8d2.dir/CMakeFortranCompilerABI.F.o -name .IPDINFO /tmp/pgfortranSoCeegQjDEd5.cmod -name .IPEINFO /tmp/pgfortranmoCeK26CaVn7.cmdx +Unlinking /tmp/pgfortranSoCeeXSv8E7w.ilm +Unlinking /tmp/pgfortranmoCeK5sPGGfq.stb +Unlinking /tmp/pgfortranSoCeegQjDEd5.cmod +Unlinking /tmp/pgfortranmoCeK26CaVn7.cmdx +Unlinking /tmp/pgfortranSoCeeRr681iB.s +Unlinking /tmp/pgfortranmoCeKdFYP9Gu.ll +Linking Fortran executable cmTC_1e8d2 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_1e8d2.dir/link.txt --verbose=1 +/mnt/pgi/linux86-64/2018/bin/pgfortran -v CMakeFiles/cmTC_1e8d2.dir/CMakeFortranCompilerABI.F.o -o cmTC_1e8d2 +Export PGI_CURR_CUDA_HOME=/mnt/pgi/linux86-64/2018/cuda/9.1 +Export PGI=/mnt/pgi + +/usr/bin/ld /usr/lib/x86_64-linux-gnu/crt1.o /usr/lib/x86_64-linux-gnu/crti.o /mnt/pgi/linux86-64/18.10/lib/trace_init.o /usr/lib/gcc/x86_64-linux-gnu/7/crtbegin.o /mnt/pgi/linux86-64/18.10/lib/initmp.o /mnt/pgi/linux86-64/18.10/lib/f90main.o --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 /mnt/pgi/linux86-64/18.10/lib/pgi.ld -L/mnt/pgi/linux86-64/18.10/lib -L/usr/lib64 -L/usr/lib/gcc/x86_64-linux-gnu/7 CMakeFiles/cmTC_1e8d2.dir/CMakeFortranCompilerABI.F.o -rpath /mnt/pgi/linux86-64/18.10/lib -rpath /usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib64 -o cmTC_1e8d2 -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib64 -lpgf90rtl -lpgf90 -lpgf90_rpm1 -lpgf902 -lpgf90rtl -lpgftnrtl -lpgmp -lnuma -lpthread --start-group -lpgmath -lnspgc -lpgc --end-group -lrt -lpthread -lm -lgcc -lc -lgcc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/7/crtend.o /usr/lib/x86_64-linux-gnu/crtn.o +make[1]: Leaving directory '/tmp/ii/CMakeFiles/CMakeTmp' diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-Fortran-PGI-18.10.1.output b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-Fortran-PGI-18.10.1.output new file mode 100644 index 0000000..289c530 --- /dev/null +++ b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-Fortran-PGI-18.10.1.output @@ -0,0 +1 @@ +/mnt/pgi/linux86-64/18.10/include-gcc70;/mnt/pgi/linux86-64/18.10/include;/usr/lib/gcc/x86_64-linux-gnu/7/include;/usr/local/include;/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed;/usr/include/x86_64-linux-gnu;/usr/include diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-C-PGI-18.10.1.input b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-C-PGI-18.10.1.input new file mode 100644 index 0000000..5e2e49a --- /dev/null +++ b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-C-PGI-18.10.1.input @@ -0,0 +1,36 @@ +CMAKE_LANG=C +CMAKE_C_COMPILER_ABI= +CMAKE_C_COMPILER_AR= +CMAKE_C_COMPILER_ARCHITECTURE_ID= +CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN= +CMAKE_C_COMPILER_ID=PGI +CMAKE_C_COMPILER_LAUNCHER= +CMAKE_C_COMPILER_LOADED=1 +CMAKE_C_COMPILER_RANLIB= +CMAKE_C_COMPILER_TARGET= +CMAKE_C_COMPILER_VERSION=18.10.1 +CMAKE_C_COMPILER_VERSION_INTERAL= +Change Dir: /tmp/ii/CMakeFiles/CMakeTmp + +Run Build Command:"/usr/bin/make" "cmTC_a7f0d/fast" +/usr/bin/make -f CMakeFiles/cmTC_a7f0d.dir/build.make CMakeFiles/cmTC_a7f0d.dir/build +make[1]: Entering directory '/tmp/ii/CMakeFiles/CMakeTmp' +Building C object CMakeFiles/cmTC_a7f0d.dir/CMakeCCompilerABI.c.o +/mnt/pgi/linux86-64/2018/bin/pgcc -Mnostdinc -v -o CMakeFiles/cmTC_a7f0d.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.10/Modules/CMakeCCompilerABI.c +Export PGI_CURR_CUDA_HOME=/mnt/pgi/linux86-64/2018/cuda/9.1 +Export PGI=/mnt/pgi + +/mnt/pgi/linux86-64/18.10/bin/pgc /usr/share/cmake-3.10/Modules/CMakeCCompilerABI.c -opt 1 -x 119 0xa10000 -x 122 0x40 -x 123 0x1000 -x 127 4 -x 127 17 -x 19 0x400000 -x 28 0x40000 -x 120 0x10000000 -x 70 0x8000 -x 122 1 -x 125 0x20000 -quad -x 59 4 -tp k8 -x 120 0x1000 -astype 0 -nostdinc -def unix -def __unix -def __unix__ -def linux -def __linux -def __linux__ -def __NO_MATH_INLINES -def __LP64__ -def __x86_64 -def __x86_64__ -def __LONG_MAX__=9223372036854775807L -def '__SIZE_TYPE__=unsigned long int' -def '__PTRDIFF_TYPE__=long int' -def __extension__= -def __amd_64__amd64__ -def __k8 -def __k8__ -def __SSE__ -def __MMX__ -def __SSE2__ -def __SSE3__ -predicate '#machine(x86_64) #lint(off) #system(posix) #cpu(x86_64)' -cmdline '+pgcc /usr/share/cmake-3.10/Modules/CMakeCCompilerABI.c -Mnostdinc -v -o CMakeFiles/cmTC_a7f0d.dir/CMakeCCompilerABI.c.o -c' -outfile CMakeFiles/cmTC_a7f0d.dir/CMakeCCompilerABI.c.o -x 123 0x80000000 -x 123 4 -x 2 0x400 -x 119 0x20 -def __pgnu_vsn=70300 -x 120 0x200000 -x 70 0x40000000 -x 164 0x800000 -y 163 0xc0000000 -x 189 0x10 -y 189 0x4000000 -asm /tmp/pgccjRkfBrHQsITu.s +PGC/x86-64 Linux 18.10-1: compilation successful + +/usr/bin/as /tmp/pgccjRkfBrHQsITu.s -o CMakeFiles/cmTC_a7f0d.dir/CMakeCCompilerABI.c.o +Unlinking /tmp/pgccjRkfBrHQsITu.s +Unlinking /tmp/pgccrRkfZClhdaSG.ll +Linking C executable cmTC_a7f0d +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_a7f0d.dir/link.txt --verbose=1 +/mnt/pgi/linux86-64/2018/bin/pgcc -Mnostdinc -v CMakeFiles/cmTC_a7f0d.dir/CMakeCCompilerABI.c.o -o cmTC_a7f0d +Export PGI_CURR_CUDA_HOME=/mnt/pgi/linux86-64/2018/cuda/9.1 +Export PGI=/mnt/pgi + +/usr/bin/ld /usr/lib/x86_64-linux-gnu/crt1.o /usr/lib/x86_64-linux-gnu/crti.o /mnt/pgi/linux86-64/18.10/lib/trace_init.o /usr/lib/gcc/x86_64-linux-gnu/7/crtbegin.o /mnt/pgi/linux86-64/18.10/lib/initmp.o --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 /mnt/pgi/linux86-64/18.10/lib/pgi.ld -L/mnt/pgi/linux86-64/18.10/lib -L/usr/lib64 -L/usr/lib/gcc/x86_64-linux-gnu/7 CMakeFiles/cmTC_a7f0d.dir/CMakeCCompilerABI.c.o -rpath /mnt/pgi/linux86-64/18.10/lib -rpath /usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib64 -o cmTC_a7f0d -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib64 -lpgmp -lnuma -lpthread --start-group -lpgmath -lnspgc -lpgc --end-group -lm -lgcc -lc -lgcc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/7/crtend.o /usr/lib/x86_64-linux-gnu/crtn.o +make[1]: Leaving directory '/tmp/ii/CMakeFiles/CMakeTmp' diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-C-PGI-18.10.1.output b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-C-PGI-18.10.1.output new file mode 100644 index 0000000..e69de29 diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-CXX-PGI-18.10.1.input b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-CXX-PGI-18.10.1.input new file mode 100644 index 0000000..dd2b55d --- /dev/null +++ b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-CXX-PGI-18.10.1.input @@ -0,0 +1,40 @@ +CMAKE_LANG=CXX +CMAKE_CXX_COMPILER_ABI= +CMAKE_CXX_COMPILER_AR= +CMAKE_CXX_COMPILER_ARCHITECTURE_ID= +CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN= +CMAKE_CXX_COMPILER_ID=PGI +CMAKE_CXX_COMPILER_LAUNCHER= +CMAKE_CXX_COMPILER_LOADED=1 +CMAKE_CXX_COMPILER_RANLIB= +CMAKE_CXX_COMPILER_TARGET= +CMAKE_CXX_COMPILER_VERSION=18.10.1 +CMAKE_CXX_COMPILER_VERSION_INTERAL= +Change Dir: /tmp/ii/CMakeFiles/CMakeTmp + +Run Build Command:"/usr/bin/make" "cmTC_90855/fast" +/usr/bin/make -f CMakeFiles/cmTC_90855.dir/build.make CMakeFiles/cmTC_90855.dir/build +make[1]: Entering directory '/tmp/ii/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_90855.dir/CMakeCXXCompilerABI.cpp.o +/mnt/pgi/linux86-64/2018/bin/pgc++ -Mnostdinc -v -o CMakeFiles/cmTC_90855.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.10/Modules/CMakeCXXCompilerABI.cpp +Export PGI_CURR_CUDA_HOME=/mnt/pgi/linux86-64/2018/cuda/9.1 +Export PGI=/mnt/pgi + +/mnt/pgi/linux86-64/18.10/bin/pggpp1 --llalign -Dunix -D__unix -D__unix__ -Dlinux -D__linux -D__linux__ -D__NO_MATH_INLINES -D__LP64__ -D__x86_64 -D__x86_64__ -D__LONG_MAX__=9223372036854775807L '-D__SIZE_TYPE__=unsigned long int' '-D__PTRDIFF_TYPE__=long int' -D__extension__= -D__amd_64__amd64__ -D__k8 -D__k8__ -D__SSE__ -D__MMX__ -D__SSE2__ -D__SSE3__ -D__PGI -D_GNU_SOURCE -D_PGCG_SOURCE -I- -I/mnt/pgi/linux86-64/18.10/include-gcc70 -I/mnt/pgi/linux86-64/18.10/include -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include --preinclude _cplus_preinclude.h --preinclude_macros _cplus_macros.h --gnu_version=70300 -D__pgnu_vsn=70300 -q -o /tmp/pgc++X3kftwl3x0Hl.il /usr/share/cmake-3.10/Modules/CMakeCXXCompilerABI.cpp + +/mnt/pgi/linux86-64/18.10/bin/pggpp2 /usr/share/cmake-3.10/Modules/CMakeCXXCompilerABI.cpp -opt 1 -x 119 0xa10000 -x 122 0x40 -x 123 0x1000 -x 127 4 -x 127 17 -x 19 0x400000 -x 28 0x40000 -x 120 0x10000000 -x 70 0x8000 -x 122 1 -x 125 0x20000 -quad -x 59 4 -tp k8 -x 120 0x1000 -astype 0 -fn /usr/share/cmake-3.10/Modules/CMakeCXXCompilerABI.cpp -il /tmp/pgc++X3kftwl3x0Hl.il -x 117 0x600 -x 123 0x80000000 -x 123 4 -x 119 0x20 -def __pgnu_vsn=70300 -x 120 0x200000 -x 70 0x40000000 -x 164 0x800000 -y 163 0xc0000000 -x 189 0x10 -y 189 0x4000000 -gnuvsn 70300 -x 69 0x200 -cmdline '+pgc++ /tmp/pgc++X3kftwl3x0Hl.il -Mnostdinc -v -o CMakeFiles/cmTC_90855.dir/CMakeCXXCompilerABI.cpp.o -c' -asm /tmp/pgc++53kfRignAQXZ.s +PGCC/x86 Linux 18.10-1: compilation successful + +/usr/bin/as /tmp/pgc++53kfRignAQXZ.s -o CMakeFiles/cmTC_90855.dir/CMakeCXXCompilerABI.cpp.o +Action(ReadTIFile(./CMakeCXXCompilerABI.ti)) +Unlinking /tmp/pgc++X3kftwl3x0Hl.il +Unlinking /tmp/pgc++53kfRignAQXZ.s +Unlinking /tmp/pgc++b3kfdox2AAgc.ll +Linking CXX executable cmTC_90855 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_90855.dir/link.txt --verbose=1 +/mnt/pgi/linux86-64/2018/bin/pgc++ -Mnostdinc -v CMakeFiles/cmTC_90855.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_90855 +Export PGI_CURR_CUDA_HOME=/mnt/pgi/linux86-64/2018/cuda/9.1 +Export PGI=/mnt/pgi + +/usr/bin/ld /usr/lib/x86_64-linux-gnu/crt1.o /usr/lib/x86_64-linux-gnu/crti.o /mnt/pgi/linux86-64/18.10/lib/trace_init.o /usr/lib/gcc/x86_64-linux-gnu/7/crtbegin.o /mnt/pgi/linux86-64/18.10/lib/initmp.o --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 /mnt/pgi/linux86-64/18.10/lib/pgi.ld -L/mnt/pgi/linux86-64/18.10/lib -L/usr/lib64 -L/usr/lib/gcc/x86_64-linux-gnu/7 CMakeFiles/cmTC_90855.dir/CMakeCXXCompilerABI.cpp.o -rpath /mnt/pgi/linux86-64/18.10/lib -rpath /usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib64 -o cmTC_90855 -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib64 -latomic -lpgatm -lstdc++ -lpgmp -lnuma -lpthread --start-group -lpgmath -lnspgc -lpgc --end-group -lm -lgcc -lc -lgcc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/7/crtend.o /usr/lib/x86_64-linux-gnu/crtn.o +make[1]: Leaving directory '/tmp/ii/CMakeFiles/CMakeTmp' diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-CXX-PGI-18.10.1.output b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-CXX-PGI-18.10.1.output new file mode 100644 index 0000000..8c9d24a --- /dev/null +++ b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-CXX-PGI-18.10.1.output @@ -0,0 +1 @@ +/mnt/pgi/linux86-64/18.10/include-gcc70;/mnt/pgi/linux86-64/18.10/include;/usr/include/c++/7;/usr/include/x86_64-linux-gnu/c++/7;/usr/include/c++/7/backward;/usr/lib/gcc/x86_64-linux-gnu/7/include;/usr/local/include;/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed;/usr/include/x86_64-linux-gnu;/usr/include diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-Fortran-PGI-18.10.1.input b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-Fortran-PGI-18.10.1.input new file mode 100644 index 0000000..12727f0 --- /dev/null +++ b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-Fortran-PGI-18.10.1.input @@ -0,0 +1,47 @@ +CMAKE_LANG=Fortran +CMAKE_Fortran_COMPILER_ABI= +CMAKE_Fortran_COMPILER_AR= +CMAKE_Fortran_COMPILER_ARCHITECTURE_ID= +CMAKE_Fortran_COMPILER_EXTERNAL_TOOLCHAIN= +CMAKE_Fortran_COMPILER_ID=PGI +CMAKE_Fortran_COMPILER_LAUNCHER= +CMAKE_Fortran_COMPILER_LOADED=1 +CMAKE_Fortran_COMPILER_RANLIB= +CMAKE_Fortran_COMPILER_TARGET= +CMAKE_Fortran_COMPILER_VERSION=18.10.1 +CMAKE_Fortran_COMPILER_VERSION_INTERAL= +Change Dir: /tmp/ii/CMakeFiles/CMakeTmp + +Run Build Command:"/usr/bin/make" "cmTC_b7462/fast" +/usr/bin/make -f CMakeFiles/cmTC_b7462.dir/build.make CMakeFiles/cmTC_b7462.dir/build +make[1]: Entering directory '/tmp/ii/CMakeFiles/CMakeTmp' +Building Fortran object CMakeFiles/cmTC_b7462.dir/CMakeFortranCompilerABI.F.o +/mnt/pgi/linux86-64/2018/bin/pgfortran -Mnostdinc -v -c /usr/share/cmake-3.10/Modules/CMakeFortranCompilerABI.F -o CMakeFiles/cmTC_b7462.dir/CMakeFortranCompilerABI.F.o +Export PGI_CURR_CUDA_HOME=/mnt/pgi/linux86-64/2018/cuda/9.1 +Export PGI=/mnt/pgi + +/mnt/pgi/linux86-64/18.10/bin/pgf901 /usr/share/cmake-3.10/Modules/CMakeFortranCompilerABI.F -opt 1 -nohpf -nostatic -x 19 0x400000 -quad -x 59 4 -x 15 2 -x 49 0x400004 -x 51 0x20 -x 57 0x4c -x 58 0x10000 -x 124 0x1000 -tp k8 -x 57 0xfb0000 -x 58 0x78031040 -x 47 0x08 -x 48 4608 -x 49 0x100 -x 120 0x200 -nostdinc -cmdline '+pgfortran /usr/share/cmake-3.10/Modules/CMakeFortranCompilerABI.F -Mnostdinc -v -c -o CMakeFiles/cmTC_b7462.dir/CMakeFortranCompilerABI.F.o' -def unix -def __unix -def __unix__ -def linux -def __linux -def __linux__ -def __NO_MATH_INLINES -def __LP64__ -def __x86_64 -def __x86_64__ -def __LONG_MAX__=9223372036854775807L -def '__SIZE_TYPE__=unsigned long int' -def '__PTRDIFF_TYPE__=long int' -def __extension__= -def __amd_64__amd64__ -def __k8 -def __k8__ -def __SSE__ -def __MMX__ -def __SSE2__ -def __SSE3__ -preprocess -nofreeform -vect 48 -x 54 1 -x 70 0x40000000 -y 163 0xc0000000 -x 189 0x10 -modexport /tmp/pgfortranoelfQQWHVV3l.cmod -modindex /tmp/pgfortran_elf6-1UcVhp.cmdx -output /tmp/pgfortranUelfk_cqURUw.ilm + 0 inform, 0 warnings, 0 severes, 0 fatal for cmakefortrancompilerabi +PGF90/x86-64 Linux 18.10-1: compilation successful + +/mnt/pgi/linux86-64/18.10/bin/pgf902 /tmp/pgfortranUelfk_cqURUw.ilm -fn /usr/share/cmake-3.10/Modules/CMakeFortranCompilerABI.F -opt 1 -x 51 0x20 -x 119 0xa10000 -x 122 0x40 -x 123 0x1000 -x 127 4 -x 127 17 -x 19 0x400000 -x 28 0x40000 -x 120 0x10000000 -x 70 0x8000 -x 122 1 -x 125 0x20000 -quad -x 59 4 -tp k8 -x 120 0x1000 -x 124 0x1400 -y 15 2 -x 57 0x3b0000 -x 58 0x48000000 -x 49 0x100 -x 120 0x200 -astype 0 -x 68 0x20 -x 70 0x40000000 -x 164 0x800000 -x 124 1 -y 163 0xc0000000 -x 189 0x10 -y 189 0x4000000 -cmdline '+pgfortran /usr/share/cmake-3.10/Modules/CMakeFortranCompilerABI.F -Mnostdinc -v -c -o CMakeFiles/cmTC_b7462.dir/CMakeFortranCompilerABI.F.o' -asm /tmp/pgfortranUelfk-LC2Ixm.s + 0 inform, 0 warnings, 0 severes, 0 fatal for cmakefortrancompilerabi +PGF90/x86-64 Linux 18.10-1: compilation successful + +/usr/bin/as /tmp/pgfortranUelfk-LC2Ixm.s -o CMakeFiles/cmTC_b7462.dir/CMakeFortranCompilerABI.F.o + +/mnt/pgi/linux86-64/18.10/bin/pgappend -noerror CMakeFiles/cmTC_b7462.dir/CMakeFortranCompilerABI.F.o -name .IPDINFO /tmp/pgfortranoelfQQWHVV3l.cmod -name .IPEINFO /tmp/pgfortran_elf6-1UcVhp.cmdx +Unlinking /tmp/pgfortranUelfk_cqURUw.ilm +Unlinking /tmp/pgfortranEelfAVAFcE2q.stb +Unlinking /tmp/pgfortranoelfQQWHVV3l.cmod +Unlinking /tmp/pgfortran_elf6-1UcVhp.cmdx +Unlinking /tmp/pgfortranUelfk-LC2Ixm.s +Unlinking /tmp/pgfortranEelfA4vWZ2Nt.ll +Linking Fortran executable cmTC_b7462 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_b7462.dir/link.txt --verbose=1 +/mnt/pgi/linux86-64/2018/bin/pgfortran -v -Mnostdinc CMakeFiles/cmTC_b7462.dir/CMakeFortranCompilerABI.F.o -o cmTC_b7462 +Export PGI_CURR_CUDA_HOME=/mnt/pgi/linux86-64/2018/cuda/9.1 +Export PGI=/mnt/pgi + +/usr/bin/ld /usr/lib/x86_64-linux-gnu/crt1.o /usr/lib/x86_64-linux-gnu/crti.o /mnt/pgi/linux86-64/18.10/lib/trace_init.o /usr/lib/gcc/x86_64-linux-gnu/7/crtbegin.o /mnt/pgi/linux86-64/18.10/lib/initmp.o /mnt/pgi/linux86-64/18.10/lib/f90main.o --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 /mnt/pgi/linux86-64/18.10/lib/pgi.ld -L/mnt/pgi/linux86-64/18.10/lib -L/usr/lib64 -L/usr/lib/gcc/x86_64-linux-gnu/7 CMakeFiles/cmTC_b7462.dir/CMakeFortranCompilerABI.F.o -rpath /mnt/pgi/linux86-64/18.10/lib -rpath /usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib64 -o cmTC_b7462 -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib64 -lpgf90rtl -lpgf90 -lpgf90_rpm1 -lpgf902 -lpgf90rtl -lpgftnrtl -lpgmp -lnuma -lpthread --start-group -lpgmath -lnspgc -lpgc --end-group -lrt -lpthread -lm -lgcc -lc -lgcc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/7/crtend.o /usr/lib/x86_64-linux-gnu/crtn.o +make[1]: Leaving directory '/tmp/ii/CMakeFiles/CMakeTmp' diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-Fortran-PGI-18.10.1.output b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-Fortran-PGI-18.10.1.output new file mode 100644 index 0000000..e69de29 diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_pgf77-Fortran-PGI-18.10.1.input b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_pgf77-Fortran-PGI-18.10.1.input new file mode 100644 index 0000000..01abe8d --- /dev/null +++ b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_pgf77-Fortran-PGI-18.10.1.input @@ -0,0 +1,35 @@ +CMAKE_LANG=Fortran +CMAKE_Fortran_COMPILER_ABI= +CMAKE_Fortran_COMPILER_AR= +CMAKE_Fortran_COMPILER_ARCHITECTURE_ID= +CMAKE_Fortran_COMPILER_EXTERNAL_TOOLCHAIN= +CMAKE_Fortran_COMPILER_ID=PGI +CMAKE_Fortran_COMPILER_LAUNCHER= +CMAKE_Fortran_COMPILER_LOADED=1 +CMAKE_Fortran_COMPILER_RANLIB= +CMAKE_Fortran_COMPILER_TARGET= +CMAKE_Fortran_COMPILER_VERSION=18.10.1 +CMAKE_Fortran_COMPILER_VERSION_INTERAL= +Change Dir: /tmp/ii/CMakeFiles/CMakeTmp + +Run Build Command:"/usr/bin/make" "cmTC_ea063/fast" +/usr/bin/make -f CMakeFiles/cmTC_ea063.dir/build.make CMakeFiles/cmTC_ea063.dir/build +make[1]: Entering directory '/tmp/ii/CMakeFiles/CMakeTmp' +Building Fortran object CMakeFiles/cmTC_ea063.dir/CMakeFortranCompilerABI.F.o +/mnt/pgi/linux86-64/2018/bin/pgf77 -v -c /usr/share/cmake-3.10/Modules/CMakeFortranCompilerABI.F -o CMakeFiles/cmTC_ea063.dir/CMakeFortranCompilerABI.F.o +Export PGI=/mnt/pgi + +/mnt/pgi/linux86-64/18.10/bin/pgftnc /usr/share/cmake-3.10/Modules/CMakeFortranCompilerABI.F -opt 1 -x 119 0xa10000 -x 122 0x40 -x 123 0x1000 -x 127 4 -x 127 17 -x 19 0x400000 -x 28 0x40000 -x 120 0x10000000 -x 70 0x8000 -x 122 1 -x 125 0x20000 -quad -x 59 4 -tp k8 -x 120 0x1000 -x 51 0x20 -x 124 0x1401 -astype 0 -stdinc /mnt/pgi/linux86-64/18.10/include-gcc70:/mnt/pgi/linux86-64/18.10/include:/usr/lib/gcc/x86_64-linux-gnu/7/include:/usr/local/include:/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed:/usr/include/x86_64-linux-gnu:/usr/include -def unix -def __unix -def __unix__ -def linux -def __linux -def __linux__ -def __NO_MATH_INLINES -def __LP64__ -def __x86_64 -def __x86_64__ -def __LONG_MAX__=9223372036854775807L -def '__SIZE_TYPE__=unsigned long int' -def '__PTRDIFF_TYPE__=long int' -def __extension__= -def __amd_64__amd64__ -def __k8 -def __k8__ -def __SSE__ -def __MMX__ -def __SSE2__ -def __SSE3__ -preprocess -cmdline '+pgf77 /usr/share/cmake-3.10/Modules/CMakeFortranCompilerABI.F -v -c -o CMakeFiles/cmTC_ea063.dir/CMakeFortranCompilerABI.F.o' -x 70 0x40000000 -x 164 0x800000 -x 124 1 -asm /tmp/pgf77RxHebkuzkjES.s + 0 inform, 0 warnings, 0 severes, 0 fatal for cmakefortrancompilerabi +PGFTN/x86-64 Linux 18.10-1: compilation successful + +/usr/bin/as /tmp/pgf77RxHebkuzkjES.s -o CMakeFiles/cmTC_ea063.dir/CMakeFortranCompilerABI.F.o +Unlinking /tmp/pgf77RxHebkuzkjES.s +Unlinking /tmp/pgf77dxHejAvLAzcs.ll +Linking Fortran executable cmTC_ea063 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_ea063.dir/link.txt --verbose=1 +/mnt/pgi/linux86-64/2018/bin/pgf77 -v CMakeFiles/cmTC_ea063.dir/CMakeFortranCompilerABI.F.o -o cmTC_ea063 +Export PGI=/mnt/pgi + +/usr/bin/ld /usr/lib/x86_64-linux-gnu/crt1.o /usr/lib/x86_64-linux-gnu/crti.o /mnt/pgi/linux86-64/18.10/lib/trace_init.o /usr/lib/gcc/x86_64-linux-gnu/7/crtbegin.o /mnt/pgi/linux86-64/18.10/lib/initmp.o /mnt/pgi/linux86-64/18.10/lib/pgfmain.o --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 /mnt/pgi/linux86-64/18.10/lib/pgi.ld -L/mnt/pgi/linux86-64/18.10/lib -L/usr/lib64 -L/usr/lib/gcc/x86_64-linux-gnu/7 CMakeFiles/cmTC_ea063.dir/CMakeFortranCompilerABI.F.o -rpath /mnt/pgi/linux86-64/18.10/lib -rpath /usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib64 -o cmTC_ea063 -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib64 -lpgftnrtl -lpgmp -lnuma -lpthread --start-group -lpgmath -lnspgc -lpgc --end-group -lrt -lpthread -lm -lgcc -lc -lgcc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/7/crtend.o /usr/lib/x86_64-linux-gnu/crtn.o +make[1]: Leaving directory '/tmp/ii/CMakeFiles/CMakeTmp' diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_pgf77-Fortran-PGI-18.10.1.output b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_pgf77-Fortran-PGI-18.10.1.output new file mode 100644 index 0000000..289c530 --- /dev/null +++ b/Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_pgf77-Fortran-PGI-18.10.1.output @@ -0,0 +1 @@ +/mnt/pgi/linux86-64/18.10/include-gcc70;/mnt/pgi/linux86-64/18.10/include;/usr/lib/gcc/x86_64-linux-gnu/7/include;/usr/local/include;/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed;/usr/include/x86_64-linux-gnu;/usr/include diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/data/sunos-Fortran-SunPro-8.8.0.input b/Tests/RunCMake/ParseImplicitIncludeInfo/data/sunos-Fortran-SunPro-8.8.0.input new file mode 100644 index 0000000..4a2bedd --- /dev/null +++ b/Tests/RunCMake/ParseImplicitIncludeInfo/data/sunos-Fortran-SunPro-8.8.0.input @@ -0,0 +1,40 @@ +CMAKE_LANG=Fortran +CMAKE_Fortran_COMPILER_ABI= +CMAKE_Fortran_COMPILER_AR= +CMAKE_Fortran_COMPILER_ARCHITECTURE_ID= +CMAKE_Fortran_COMPILER_EXTERNAL_TOOLCHAIN= +CMAKE_Fortran_COMPILER_ID=SunPro +CMAKE_Fortran_COMPILER_LAUNCHER= +CMAKE_Fortran_COMPILER_LOADED=1 +CMAKE_Fortran_COMPILER_RANLIB= +CMAKE_Fortran_COMPILER_TARGET= +CMAKE_Fortran_COMPILER_VERSION=8.8.0 +CMAKE_Fortran_COMPILER_VERSION_INTERAL= +Change Dir: /tmp/ii/CMakeFiles/CMakeTmp + +Run Build Command:"/opt/csw/bin/gmake" "cmTC_adcec/fast" +/opt/csw/bin/gmake -f CMakeFiles/cmTC_adcec.dir/build.make CMakeFiles/cmTC_adcec.dir/build +gmake[1]: Entering directory '/tmp/ii/CMakeFiles/CMakeTmp' +Building Fortran object CMakeFiles/cmTC_adcec.dir/CMakeFortranCompilerABI.F.o +/opt/developerstudio12.6/bin/sunf95 -v -c /tmp/CMake/Modules/CMakeFortranCompilerABI.F -o CMakeFiles/cmTC_adcec.dir/CMakeFortranCompilerABI.F.o +### f90: Note: NLSPATH = /opt/developerstudio12.6/bin/../lib/locale/%L/LC_MESSAGES/%N.cat:/opt/developerstudio12.6/bin/../../lib/locale/%L/LC_MESSAGES/%N.cat +### command line files and options (expanded): +### -v -c /tmp/CMake/Modules/CMakeFortranCompilerABI.F -o CMakeFiles/cmTC_adcec.dir/CMakeFortranCompilerABI.F.o +/opt/developerstudio12.6/bin/fpp -undef -vax=bslash -Y/opt/developerstudio12.6/lib/compilers/include/f95 -D__SunOS_5_10 -D__SunOS_RELEASE=0x051000 -D__SUNPRO_F90=0x880 -D__SUNPRO_F95=0x880 -D__unix -D__SVR4__ -D__svr4__ -D__SVR4 -D__sun -D__sun__ -D__SunOS -D__sparcv8 -D__sparcv8plus -D__sparc -D__sparc__ -Dsun -Dunix -Dsparc -D__SUN_PREFETCH -I/opt/developerstudio12.6/lib/compilers/include/f95 /tmp/CMake/Modules/CMakeFortranCompilerABI.F /tmp/fpp.1548681160.26580.01.f +/opt/developerstudio12.6/lib/compilers/bin/f90comp -E/tmp/CMake/Modules/CMakeFortranCompilerABI.F -m3 -ev -xall -xivdep=loop -H "/opt/developerstudio12.6/bin/f90 -v -c " -I/opt/developerstudio12.6/lib/compilers/include/f95 -p/opt/developerstudio12.6/lib/compilers/modules -m32 -y-m32 -xmemalign=8i -iorounding=processor-defined -xhasc=yes -xdebuginfo=%none -y-xdebuginfo=%none -y-xglobalize=no -xcache=generic -y-xcache=generic -y-xassume_control=optimize -xassume_control=optimize -y-xdbggen=dwarf+incl -keepmod=yes -y-ir -y/tmp/f90comp.1548681160.26580.02.ir /tmp/fpp.1548681160.26580.01.f +/opt/developerstudio12.6/lib/compilers/bin/cg -Qy -fsimple=0 -xarch=sparcvis2 -m32 -xchip=generic -xcache=generic -comdat -ftrap=division,invalid,overflow -xdebuginfo=%none -xbuiltin=%none -xcode=abs32 -xannotate=yes -xmemalign=8i -xprefetch=auto,explicit -xprefetch_auto_type=no%indirect_array_access -xcheck=stkovf -xcheck=noreturn -xvector=no -oo CMakeFiles/cmTC_adcec.dir/CMakeFortranCompilerABI.F.o -ir /tmp/f90comp.1548681160.26580.02.ir +rm /tmp/f90comp.1548681160.26580.02.ir +rm /tmp/fpp.1548681160.26580.01.f +Linking Fortran executable cmTC_adcec +/tmp/CMake/bin/cmake -E cmake_link_script CMakeFiles/cmTC_adcec.dir/link.txt --verbose=1 +/opt/developerstudio12.6/bin/sunf95 -v CMakeFiles/cmTC_adcec.dir/CMakeFortranCompilerABI.F.o -o cmTC_adcec +### f90: Note: NLSPATH = /opt/developerstudio12.6/bin/../lib/locale/%L/LC_MESSAGES/%N.cat:/opt/developerstudio12.6/bin/../../lib/locale/%L/LC_MESSAGES/%N.cat +### command line files and options (expanded): +### -v CMakeFiles/cmTC_adcec.dir/CMakeFortranCompilerABI.F.o -o cmTC_adcec +### f90: Note: LD_LIBRARY_PATH = (null) +### f90: Note: LD_RUN_PATH = (null) +### f90: Note: LD_OPTIONS = (null) +ln -s /opt/developerstudio12.6/lib/compilers /tmp/lib_link.1548681161.26655.01 +/usr/ccs/bin/ld -zld32=-S/tmp/lib_link.1548681161.26655.01/libldstab_ws.so -zld64=-S/tmp/lib_link.1548681161.26655.01/sparcv9/libldstab_ws.so -zld32=-S/tmp/lib_link.1548681161.26655.01/libld_annotate.so -zld64=-S/tmp/lib_link.1548681161.26655.01/sparcv9/libld_annotate.so /opt/developerstudio12.6/lib/compilers/crti.o /opt/developerstudio12.6/lib/compilers/crt1.o /opt/developerstudio12.6/lib/compilers/misalign.o /opt/developerstudio12.6/lib/compilers/values-xi.o CMakeFiles/cmTC_adcec.dir/CMakeFortranCompilerABI.F.o -o cmTC_adcec -Y "P,/opt/developerstudio12.6/lib/compilers/sparcvis2:/opt/developerstudio12.6/lib/compilers:/opt/developerstudio12.6/lib:/usr/ccs/lib:/lib:/usr/lib" -Qy -R/opt/developerstudio12.6/lib -t -lfsu -lsunmath -lmtsk -lm -lc /opt/developerstudio12.6/lib/compilers/crtn.o +rm /tmp/lib_link.1548681161.26655.01 +gmake[1]: Leaving directory '/tmp/ii/CMakeFiles/CMakeTmp' diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/data/sunos-Fortran-SunPro-8.8.0.output b/Tests/RunCMake/ParseImplicitIncludeInfo/data/sunos-Fortran-SunPro-8.8.0.output new file mode 100644 index 0000000..3c31e16 --- /dev/null +++ b/Tests/RunCMake/ParseImplicitIncludeInfo/data/sunos-Fortran-SunPro-8.8.0.output @@ -0,0 +1 @@ +/opt/developerstudio12.6/lib/compilers/include/f95 ----------------------------------------------------------------------- Summary of changes: Help/variable/CMAKE_LANG_CREATE_SHARED_LIBRARY.rst | 3 +- Help/variable/CMAKE_LANG_CREATE_SHARED_MODULE.rst | 3 +- Modules/CMakeDetermineCompilerABI.cmake | 8 +-- Modules/CMakeParseImplicitIncludeInfo.cmake | 51 +++++++++++++++++-- Modules/Compiler/Cray-C.cmake | 12 ++--- Modules/Compiler/Cray-CXX.cmake | 14 +++--- Modules/Compiler/CrayPrgEnv-C.cmake | 6 +-- Modules/Compiler/CrayPrgEnv-CXX.cmake | 6 +-- Modules/Compiler/CrayPrgEnv-Cray-C.cmake | 7 --- Modules/Compiler/CrayPrgEnv-Cray-CXX.cmake | 7 --- Modules/Compiler/CrayPrgEnv-Cray-Fortran.cmake | 7 --- Modules/Compiler/CrayPrgEnv-Fortran.cmake | 6 +-- Modules/Compiler/CrayPrgEnv-GNU-C.cmake | 7 --- Modules/Compiler/CrayPrgEnv-GNU-CXX.cmake | 7 --- Modules/Compiler/CrayPrgEnv-GNU-Fortran.cmake | 7 --- Modules/Compiler/CrayPrgEnv-Intel-C.cmake | 7 --- Modules/Compiler/CrayPrgEnv-Intel-CXX.cmake | 7 --- Modules/Compiler/CrayPrgEnv-Intel-Fortran.cmake | 7 --- Modules/Compiler/CrayPrgEnv-PGI-C.cmake | 7 --- Modules/Compiler/CrayPrgEnv-PGI-CXX.cmake | 7 --- Modules/Compiler/CrayPrgEnv-PGI-Fortran.cmake | 7 --- Modules/Compiler/CrayPrgEnv.cmake | 57 +--------------------- Modules/Platform/UnixPaths.cmake | 11 +++-- Source/cmServerProtocol.cxx | 13 ++++- .../ParseImplicitIncludeInfo.cmake | 6 ++- .../data/linux-C-PGI-18.10.1.input | 36 ++++++++++++++ .../data/linux-C-PGI-18.10.1.output | 1 + .../data/linux-CXX-PGI-18.10.1.input | 40 +++++++++++++++ .../data/linux-CXX-PGI-18.10.1.output | 1 + .../data/linux-Fortran-PGI-18.10.1.input | 47 ++++++++++++++++++ .../data/linux-Fortran-PGI-18.10.1.output | 1 + .../data/linux_nostdinc-C-PGI-18.10.1.input | 36 ++++++++++++++ .../data/linux_nostdinc-C-PGI-18.10.1.output} | 0 .../data/linux_nostdinc-CXX-PGI-18.10.1.input | 40 +++++++++++++++ .../data/linux_nostdinc-CXX-PGI-18.10.1.output | 1 + .../data/linux_nostdinc-Fortran-PGI-18.10.1.input | 47 ++++++++++++++++++ .../linux_nostdinc-Fortran-PGI-18.10.1.output} | 0 .../data/linux_pgf77-Fortran-PGI-18.10.1.input | 35 +++++++++++++ .../data/linux_pgf77-Fortran-PGI-18.10.1.output | 1 + .../data/sunos-Fortran-SunPro-8.8.0.input | 40 +++++++++++++++ .../data/sunos-Fortran-SunPro-8.8.0.output | 1 + 41 files changed, 424 insertions(+), 183 deletions(-) delete mode 100644 Modules/Compiler/CrayPrgEnv-Cray-C.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-Cray-CXX.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-Cray-Fortran.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-GNU-C.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-GNU-CXX.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-GNU-Fortran.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-Intel-C.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-Intel-CXX.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-Intel-Fortran.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-PGI-C.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-PGI-CXX.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-PGI-Fortran.cmake create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-C-PGI-18.10.1.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-C-PGI-18.10.1.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-CXX-PGI-18.10.1.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-CXX-PGI-18.10.1.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-Fortran-PGI-18.10.1.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-Fortran-PGI-18.10.1.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-C-PGI-18.10.1.input copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-C-PGI-18.10.1.output} (100%) create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-CXX-PGI-18.10.1.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-CXX-PGI-18.10.1.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-Fortran-PGI-18.10.1.input copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-Fortran-PGI-18.10.1.output} (100%) create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_pgf77-Fortran-PGI-18.10.1.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_pgf77-Fortran-PGI-18.10.1.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/sunos-Fortran-SunPro-8.8.0.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/sunos-Fortran-SunPro-8.8.0.output hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 1 08:33:03 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 1 Feb 2019 08:33:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.13.3-1277-g13c550a Message-ID: <20190201133303.D7025111EF8@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 13c550aabc4110d47e38b3df053d18dada49ab54 (commit) via 1545b896bb5786fe4077f4f362a4faab3d95f0c4 (commit) via 1faebf33f46cdd09d5ba1768f2f0879df23563a8 (commit) via 17b1d7995efb14e14b15926dbb5fc530b71ed149 (commit) from 0479ae492a6bc6058ae86d3ce01ac26fcc71c744 (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=13c550aabc4110d47e38b3df053d18dada49ab54 commit 13c550aabc4110d47e38b3df053d18dada49ab54 Merge: 0479ae4 1545b89 Author: Brad King AuthorDate: Fri Feb 1 08:23:21 2019 -0500 Commit: Brad King CommitDate: Fri Feb 1 08:23:21 2019 -0500 Merge branch 'release-3.13' ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 1 08:33:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 1 Feb 2019 08:33:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.13.3-18-g1545b89 Message-ID: <20190201133304.E517F1102A0@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 1545b896bb5786fe4077f4f362a4faab3d95f0c4 (commit) via 6f5e4a53bca7ce5c15b1d030ef99bb2b3a1b0d2e (commit) via 1faebf33f46cdd09d5ba1768f2f0879df23563a8 (commit) via 2df6d69014c8f8c0191dbf30d8c406225edbef3e (commit) via b598dfb65edd75e0da763d36dcdc3d19016a8d27 (commit) via 17b1d7995efb14e14b15926dbb5fc530b71ed149 (commit) via d9dd68cb60ed09e32cbda8bbd3e31c86a8778e66 (commit) from a57fcfa3e0989a74d1e1c6c24132e285cdace2b1 (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/FindLAPACK.cmake | 4 ++-- Source/cmInstallTargetGenerator.cxx | 25 ++++++++++++++++++++-- Source/cmQtAutoGenInitializer.cxx | 12 +++++++++++ Tests/RunCMake/Autogen/QtInFunction.cmake | 13 +++++++++++ ...Qt-stderr.txt => QtInFunctionNested-stderr.txt} | 0 Tests/RunCMake/Autogen/QtInFunctionNested.cmake | 17 +++++++++++++++ Tests/RunCMake/Autogen/QtInFunctionProperty.cmake | 21 ++++++++++++++++++ Tests/RunCMake/Autogen/RunCMakeTest.cmake | 5 +++++ Tests/RunCMake/CMakeLists.txt | 9 +++++++- .../Framework/InstallBeforeFramework.cmake | 5 +++++ Tests/RunCMake/Framework/RunCMakeTest.cmake | 2 ++ 11 files changed, 108 insertions(+), 5 deletions(-) create mode 100644 Tests/RunCMake/Autogen/QtInFunction.cmake copy Tests/RunCMake/Autogen/{NoQt-stderr.txt => QtInFunctionNested-stderr.txt} (100%) create mode 100644 Tests/RunCMake/Autogen/QtInFunctionNested.cmake create mode 100644 Tests/RunCMake/Autogen/QtInFunctionProperty.cmake create mode 100644 Tests/RunCMake/Framework/InstallBeforeFramework.cmake hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 1 10:03:06 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 1 Feb 2019 10:03:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.13.4-1260-g0c61b86 Message-ID: <20190201150306.C97FA1135E8@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 0c61b8699cb2b1c75e033c6a7d27f0b93c0dc7bc (commit) via 30c3effa89ceda247cd2ff29b5d3f4da8c7a8ff6 (commit) from 13c550aabc4110d47e38b3df053d18dada49ab54 (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=0c61b8699cb2b1c75e033c6a7d27f0b93c0dc7bc commit 0c61b8699cb2b1c75e033c6a7d27f0b93c0dc7bc Merge: 13c550a 30c3eff Author: Brad King AuthorDate: Fri Feb 1 09:54:23 2019 -0500 Commit: Brad King CommitDate: Fri Feb 1 09:54:23 2019 -0500 Merge branch 'release-3.13' ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 1 10:03:06 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 1 Feb 2019 10:03:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.13.4 Message-ID: <20190201150306.D8258113603@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 30c3effa89ceda247cd2ff29b5d3f4da8c7a8ff6 (commit) from 1545b896bb5786fe4077f4f362a4faab3d95f0c4 (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 Fri Feb 1 10:03:06 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 1 Feb 2019 10:03:06 -0500 (EST) Subject: [Cmake-commits] CMake annotated tag, v3.13.4, created. v3.13.4 Message-ID: <20190201150306.EAD8B113603@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.13.4 has been created at cf4d91137d5db9729a793092817fc2ebd252e6e2 (tag) tagging 30c3effa89ceda247cd2ff29b5d3f4da8c7a8ff6 (commit) replaces v3.13.3 tagged by Brad King on Fri Feb 1 09:53:40 2019 -0500 - Log ----------------------------------------------------------------- CMake 3.13.4 -----BEGIN PGP SIGNATURE----- iQJKBAABCgA0FiEExsJlMku+vcNQtRPQLSzvEDSSFoQFAlxUXXQWHGJyYWQua2lu Z0BraXR3YXJlLmNvbQAKCRAtLO8QNJIWhAXPEACHtMhhS4R4xwYHO7Grmf1REjRy Kq2FVP+6zE0+XVH4xiQ9NlY2Piqm9/0fDmFeU5RC/MGmKA1WwgCF0yuuyo0qDw2j QAiEuj+VNrfG3dB8XBfEsr0JpdoEOo4PIT7dQTJk3uWRibktv7k9XLMZ+KDCVkQS /BSYHheD+CCz3WKErjeuLQEvNV/ZttjrmHuk6BP3nIXIOqcD16PPHEIRxcbCsRK+ mQnmDTgGhr+ZVjvFmPcLBCHWKzxYl7A2oKuT3fusPtQ/D3kjWIwcXK27pP36l1t/ aZiJCYkN7gJOSiiDmzBKMmBzuZ0EBp0J5BSGZ+h6Lj1gfv1TYGyFav91KPr3Hm/j fmZ2AAS4/Lcy2m3TLFBsWcDj5wZPFSc1Z5Az9NlwGrk0chTjnUkZ4IbXhrzdbfDY DvOZE8YGJNeUtpA05MoaBJA5QfDKw1JX0gmt76blnG4FCHtsMiM9pcBC/4jQn2yW 88w82Z9646T8svAiSX4zRZ+1QHLslNHzeMtmqh7NOc1JDIKi35X1yARWcJ056gYo cvDD03N41RBd6pzAAvNUVWhetlcj0wxE/IW26UGRa21msMRouEIOWQYe0lLwne95 RDQ9QgvBFIcnmIRpeazgfoVHs4377AN7hIlTFPFa6p8L/dXonyF+W83L1jBTmXi0 2z2TbB0kPDttXR0Blg== =gYq9 -----END PGP SIGNATURE----- Ben Boeckel (2): Tests: add cases for providing Qt5Core_VERSION manually AutoGen: query Qt5 version from directory properties Brad King (13): Merge branch 'backport-cmake-warn-no-src-build-dir' into release-3.13 Revert "file: Allow DOWNLOAD/UPLOAD using alternate authentication methods" Merge branch 'revert-file-alt-httpauth' into release-3.13 Intel: Record support for relaxed constexpr by version 18.0.5 Merge branch 'intel-compile-features' into release-3.13 Merge branch 'doxygen-escaping' into release-3.13 Merge branch 'add-missing-macos-framework' into release-3.13 macOS: Restore compatibility for setting FRAMEWORK after install() Merge branch 'backport-restore-install-late-framework' into release-3.13 Merge branch 'backport-autogen-qt-version-from-dirprops' into release-3.13 FindLAPACK: Distinguish check result variable name from FindBLAS Merge branch 'backport-FindLAPACK-typo' into release-3.13 CMake 3.13.4 Chuck Atkins (1): macOS: Add missing explicit dependency on CoreServices framework Craig Scott (3): cmake: Convert no source/build dir error to warning Help: Add 3.13.4 release note for no source/build dir error/warning FindDoxygen: Escape backslashes in default values ----------------------------------------------------------------------- hooks/post-receive -- CMake From kwrobot at kitware.com Sat Feb 2 00:03:07 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Sat, 2 Feb 2019 00:03:07 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.13.4-1261-gdfec0f4 Message-ID: <20190202050308.0109C20FE@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 dfec0f4a11a6895617e778a0dfcad0668ad23f49 (commit) from 0c61b8699cb2b1c75e033c6a7d27f0b93c0dc7bc (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=dfec0f4a11a6895617e778a0dfcad0668ad23f49 commit dfec0f4a11a6895617e778a0dfcad0668ad23f49 Author: Kitware Robot AuthorDate: Sat Feb 2 00:01:06 2019 -0500 Commit: Kitware Robot CommitDate: Sat Feb 2 00:01:06 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 0a65114..b8c995c 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 13) -set(CMake_VERSION_PATCH 20190201) +set(CMake_VERSION_PATCH 20190202) #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 3 00:03:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Sun, 3 Feb 2019 00:03:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.13.4-1262-g1494028 Message-ID: <20190203050304.103304C7E@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 149402898caf5953462ca32d3c7c892b447614f8 (commit) from dfec0f4a11a6895617e778a0dfcad0668ad23f49 (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=149402898caf5953462ca32d3c7c892b447614f8 commit 149402898caf5953462ca32d3c7c892b447614f8 Author: Kitware Robot AuthorDate: Sun Feb 3 00:01:05 2019 -0500 Commit: Kitware Robot CommitDate: Sun Feb 3 00:01:05 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index b8c995c..a799c4a 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 13) -set(CMake_VERSION_PATCH 20190202) +set(CMake_VERSION_PATCH 20190203) #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 4 00:03:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 4 Feb 2019 00:03:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.13.4-1263-gd401c10 Message-ID: <20190204050304.8E75511E608@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 d401c10db5cc5afc009bbb31c4ea11e4914687db (commit) from 149402898caf5953462ca32d3c7c892b447614f8 (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=d401c10db5cc5afc009bbb31c4ea11e4914687db commit d401c10db5cc5afc009bbb31c4ea11e4914687db Author: Kitware Robot AuthorDate: Mon Feb 4 00:01:05 2019 -0500 Commit: Kitware Robot CommitDate: Mon Feb 4 00:01:05 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index a799c4a..0d1fb40 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 13) -set(CMake_VERSION_PATCH 20190203) +set(CMake_VERSION_PATCH 20190204) #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 4 07:53:06 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 4 Feb 2019 07:53:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.13.4-1270-ga5ec7f8 Message-ID: <20190204125306.105481282E8@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 a5ec7f868f2c7c9714a525a9872b9eaa528d064b (commit) via 40e12882609619a902d19b94de442b2874bf7a45 (commit) via dc4a2749a52cb7f96ad8d7146ee4d680a2beb5fa (commit) via f5d72be57a00f18ed2b18fc2eb6ccedee3544542 (commit) via cff026dbc01f975857236a11fc033af48b5e130a (commit) via 6c21722adbc1745b6362ca9501692805c19eb8ac (commit) via cb01b8c8ba1754b40e74d89d2c6dfef5dc8c44d3 (commit) from d401c10db5cc5afc009bbb31c4ea11e4914687db (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=a5ec7f868f2c7c9714a525a9872b9eaa528d064b commit a5ec7f868f2c7c9714a525a9872b9eaa528d064b Merge: 40e1288 f5d72be Author: Brad King AuthorDate: Mon Feb 4 12:48:54 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 4 07:49:01 2019 -0500 Merge topic 'vs-wince-deployment' f5d72be57a VS: Fix deployment for WinCE projects Acked-by: Kitware Robot Merge-request: !2907 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=40e12882609619a902d19b94de442b2874bf7a45 commit 40e12882609619a902d19b94de442b2874bf7a45 Merge: dc4a274 cff026d Author: Brad King AuthorDate: Mon Feb 4 12:47:08 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 4 07:47:15 2019 -0500 Merge topic 'winrtrefs' cff026dbc0 VS: Fix WinRT component references 6c21722adb Tests: Fix VSWinStorePhone test with Windows 10 SDK 17763 Acked-by: Kitware Robot Merge-request: !2906 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=dc4a2749a52cb7f96ad8d7146ee4d680a2beb5fa commit dc4a2749a52cb7f96ad8d7146ee4d680a2beb5fa Merge: d401c10 cb01b8c Author: Brad King AuthorDate: Mon Feb 4 12:46:21 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 4 07:46:29 2019 -0500 Merge topic 'set-env-warning' cb01b8c8ba set: warn of extra arguments after ENV value. Acked-by: Kitware Robot Merge-request: !2903 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f5d72be57a00f18ed2b18fc2eb6ccedee3544542 commit f5d72be57a00f18ed2b18fc2eb6ccedee3544542 Author: Wil Stark AuthorDate: Fri Feb 1 10:15:39 2019 -0800 Commit: Brad King CommitDate: Fri Feb 1 13:59:09 2019 -0500 VS: Fix deployment for WinCE projects Fixes: #18868 diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 9d7dd07..0ebfe3b 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -376,7 +376,13 @@ void cmVisualStudio10TargetGenerator::Generate() { Elem e0(BuildFileStream, "Project"); e0.Attribute("DefaultTargets", "Build"); - e0.Attribute("ToolsVersion", this->GlobalGenerator->GetToolsVersion()); + const char* toolsVersion = this->GlobalGenerator->GetToolsVersion(); + if (this->GlobalGenerator->GetVersion() == + cmGlobalVisualStudioGenerator::VS12 && + this->GlobalGenerator->TargetsWindowsCE()) { + toolsVersion = "4.0"; + } + e0.Attribute("ToolsVersion", toolsVersion); e0.Attribute("xmlns", "http://schemas.microsoft.com/developer/msbuild/2003"); diff --git a/Tests/RunCMake/VS10ProjectWinCE/VsCEDebuggerDeploy-check.cmake b/Tests/RunCMake/VS10ProjectWinCE/VsCEDebuggerDeploy-check.cmake index c66676f..6ab3833 100644 --- a/Tests/RunCMake/VS10ProjectWinCE/VsCEDebuggerDeploy-check.cmake +++ b/Tests/RunCMake/VS10ProjectWinCE/VsCEDebuggerDeploy-check.cmake @@ -13,6 +13,7 @@ endif() set(FoundCEAdditionalFiles FALSE) set(FoundRemoteDirectory FALSE) +set(FoundToolsVersion4 FALSE) file(STRINGS "${vcProjectFile}" lines) foreach(line IN LISTS lines) @@ -20,6 +21,8 @@ foreach(line IN LISTS lines) set(FoundCEAdditionalFiles TRUE) elseif(line MATCHES " *[A-Za-z0-9\\]+ *$") set(FoundRemoteDirectory TRUE) + elseif(line MATCHES " * *$") + set(FoundToolsVersion4 TRUE) endif() endforeach() @@ -32,3 +35,8 @@ if(NOT FoundRemoteDirectory) set(RunCMake_TEST_FAILED "RemoteDirectory not found or not set correctly.") return() endif() + +if(NOT FoundToolsVersion4) + set(RunCMake_TEST_FAILED "Failed to find correct ToolsVersion=\"4.0\" .") + return() +endif() https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cff026dbc01f975857236a11fc033af48b5e130a commit cff026dbc01f975857236a11fc033af48b5e130a Author: Gilles Khouzam AuthorDate: Fri Feb 1 09:40:58 2019 -0800 Commit: Brad King CommitDate: Fri Feb 1 13:04:52 2019 -0500 VS: Fix WinRT component references WinRT components need to be referenced in a similar way that managed code libraries are referenced. Validate that the library reference is a WinRT component and reference it through the project. Add test coverage for `VS_WINRT_COMPONENT`. While at it, fix the IOT reference failing on Win10 SDK 17763 which doesn't include it anymore. Fixes: #18846 diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 9d7dd07..c4040e1 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -3884,8 +3884,8 @@ void cmVisualStudio10TargetGenerator::WriteProjectReferences(Elem& e0) this->WriteDotNetReferenceCustomTags(e2, name); // If the dependency target is not managed (compiled with /clr or - // C# target) we cannot reference it and have to set - // 'ReferenceOutputAssembly' to false. + // C# target) and not a WinRT component we cannot reference it and + // have to set 'ReferenceOutputAssembly' to false. auto referenceNotManaged = dt->GetManagedType("") < cmGeneratorTarget::ManagedType::Mixed; // Workaround to check for manually set /clr flags. @@ -3902,6 +3902,12 @@ void cmVisualStudio10TargetGenerator::WriteProjectReferences(Elem& e0) if (referenceNotManaged && dt->GetType() == cmStateEnums::STATIC_LIBRARY) { referenceNotManaged = !dt->IsCSharpOnly(); } + + // Referencing WinRT components is okay. + if (referenceNotManaged) { + referenceNotManaged = !dt->GetPropertyAsBool("VS_WINRT_COMPONENT"); + } + if (referenceNotManaged) { e2.Element("ReferenceOutputAssembly", "false"); e2.Element("CopyToOutputDirectory", "Never"); diff --git a/Tests/VSWinStorePhone/CMakeLists.txt b/Tests/VSWinStorePhone/CMakeLists.txt index eefd9a6..efc7760 100644 --- a/Tests/VSWinStorePhone/CMakeLists.txt +++ b/Tests/VSWinStorePhone/CMakeLists.txt @@ -8,6 +8,8 @@ elseif(MSVC_VERSION GREATER 1600) set(COMPILER_VERSION "11") endif() +add_subdirectory(WinRT) + set (APP_MANIFEST_NAME Package.appxmanifest) if("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsPhone") set(PLATFORM WP) @@ -149,5 +151,4 @@ if("${SHORT_VERSION}" STREQUAL "10.0") set_property(TARGET ${EXE_NAME} PROPERTY VS_SDK_REFERENCES "Microsoft.UniversalCRT.Debug, Version=${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}") endif() - -target_link_libraries(${EXE_NAME} d3d11) +target_link_libraries(${EXE_NAME} d3d11 JusticeLeagueWinRT) diff --git a/Tests/VSWinStorePhone/Direct3DApp1/CubeRenderer.cpp b/Tests/VSWinStorePhone/Direct3DApp1/CubeRenderer.cpp index 1c969cd..3ba35fa 100644 --- a/Tests/VSWinStorePhone/Direct3DApp1/CubeRenderer.cpp +++ b/Tests/VSWinStorePhone/Direct3DApp1/CubeRenderer.cpp @@ -6,11 +6,15 @@ using namespace DirectX; using namespace Microsoft::WRL; using namespace Windows::Foundation; using namespace Windows::UI::Core; +using namespace JusticeLeagueWinRT; CubeRenderer::CubeRenderer() : m_loadingComplete(false) , m_indexCount(0) { + // Create a new WinRT object to validate that we can link properly + Batman ^ hero = ref new Batman(); + hero->savePeople(); } void CubeRenderer::CreateDeviceResources() diff --git a/Tests/VSWinStorePhone/WinRT/Batman.cpp b/Tests/VSWinStorePhone/WinRT/Batman.cpp new file mode 100644 index 0000000..e092258 --- /dev/null +++ b/Tests/VSWinStorePhone/WinRT/Batman.cpp @@ -0,0 +1,14 @@ +#include "Batman.h" + +using namespace JusticeLeagueWinRT; +using namespace Platform; + +Batman::Batman() +{ +} + +void Batman::savePeople() +{ + int i = 0; + i++; +} diff --git a/Tests/VSWinStorePhone/WinRT/Batman.h b/Tests/VSWinStorePhone/WinRT/Batman.h new file mode 100644 index 0000000..e2dcabc --- /dev/null +++ b/Tests/VSWinStorePhone/WinRT/Batman.h @@ -0,0 +1,12 @@ +#pragma once + +namespace JusticeLeagueWinRT { +public +ref class Batman sealed +{ +public: + Batman(); + + void savePeople(); +}; +} diff --git a/Tests/VSWinStorePhone/WinRT/CMakeLists.txt b/Tests/VSWinStorePhone/WinRT/CMakeLists.txt new file mode 100644 index 0000000..bb93333 --- /dev/null +++ b/Tests/VSWinStorePhone/WinRT/CMakeLists.txt @@ -0,0 +1,13 @@ +project(JusticeLeagueWinRT CXX) + +# create project +add_library(JusticeLeagueWinRT SHARED + "${CMAKE_CURRENT_SOURCE_DIR}/Batman.cpp" + "${CMAKE_CURRENT_SOURCE_DIR}/Batman.h" +) + +set_target_properties(JusticeLeagueWinRT PROPERTIES + VS_WINRT_COMPONENT TRUE + VS_GLOBAL_ROOTNAMESPACE "JusticeLeagueWinRT" + OUTPUT_NAME "JusticeLeagueWinRT" +) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6c21722adbc1745b6362ca9501692805c19eb8ac commit 6c21722adbc1745b6362ca9501692805c19eb8ac Author: Gilles Khouzam AuthorDate: Fri Feb 1 09:40:58 2019 -0800 Commit: Brad King CommitDate: Fri Feb 1 13:02:16 2019 -0500 Tests: Fix VSWinStorePhone test with Windows 10 SDK 17763 The Windows 10 SDK no longer includes IOT. diff --git a/Tests/VSWinStorePhone/CMakeLists.txt b/Tests/VSWinStorePhone/CMakeLists.txt index acda117..eefd9a6 100644 --- a/Tests/VSWinStorePhone/CMakeLists.txt +++ b/Tests/VSWinStorePhone/CMakeLists.txt @@ -139,7 +139,11 @@ if("${SHORT_VERSION}" STREQUAL "10.0") message(STATUS "Targeting Windows 10. Setting Extensions to version ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}") set_property(TARGET ${EXE_NAME} PROPERTY VS_DESKTOP_EXTENSIONS_VERSION "${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}") set_property(TARGET ${EXE_NAME} PROPERTY VS_MOBILE_EXTENSIONS_VERSION "${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}") - set_property(TARGET ${EXE_NAME} PROPERTY VS_IOT_EXTENSIONS_VERSION "${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}") + + # The last IOT reference is on 10.0.17134.0, so only add it if supported + if("${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}" VERSION_LESS "10.0.17135.0") + set_property(TARGET ${EXE_NAME} PROPERTY VS_IOT_EXTENSIONS_VERSION "${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}") + endif() # Add a reference to an SDK set_property(TARGET ${EXE_NAME} PROPERTY VS_SDK_REFERENCES "Microsoft.UniversalCRT.Debug, Version=${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}") https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cb01b8c8ba1754b40e74d89d2c6dfef5dc8c44d3 commit cb01b8c8ba1754b40e74d89d2c6dfef5dc8c44d3 Author: Taylor Holberton AuthorDate: Thu Jan 31 19:26:14 2019 -0500 Commit: Brad King CommitDate: Fri Feb 1 06:10:34 2019 -0500 set: warn of extra arguments after ENV value. Fixes: #18842 diff --git a/Help/command/set.rst b/Help/command/set.rst index dd5ea13..c0e02e2 100644 --- a/Help/command/set.rst +++ b/Help/command/set.rst @@ -86,7 +86,7 @@ Set Environment Variable .. code-block:: cmake - set(ENV{} ...) + set(ENV{} []) Sets an :manual:`Environment Variable ` to the given value. @@ -95,3 +95,10 @@ Subsequent calls of ``$ENV{}`` will return this new value. This command affects only the current CMake process, not the process from which CMake was called, nor the system environment at large, nor the environment of subsequent build or test processes. + +If no argument is given after ``ENV{}`` or if ```` is +an empty string, then this command will clear any existing value of the +environment variable. + +Arguments after ```` are ignored. If extra arguments are found, +then an author warning is issued. diff --git a/Source/cmSetCommand.cxx b/Source/cmSetCommand.cxx index b09e3ca..6bd071c 100644 --- a/Source/cmSetCommand.cxx +++ b/Source/cmSetCommand.cxx @@ -38,6 +38,14 @@ bool cmSetCommand::InitialPass(std::vector const& args, putEnvArg += args[1]; cmSystemTools::PutEnv(putEnvArg); } + // if there's extra arguments, warn user + // that they are ignored by this command. + if (args.size() > 2) { + std::string m = "Only the first value argument is used when setting " + "an environment variable. Argument '" + + args[2] + "' and later are unused."; + this->Makefile->IssueMessage(MessageType::AUTHOR_WARNING, m); + } return true; } diff --git a/Tests/RunCMake/set/ExtraEnvValue-stderr.txt b/Tests/RunCMake/set/ExtraEnvValue-stderr.txt new file mode 100644 index 0000000..f61f9d2 --- /dev/null +++ b/Tests/RunCMake/set/ExtraEnvValue-stderr.txt @@ -0,0 +1,6 @@ +CMake Warning \(dev\) at ExtraEnvValue.cmake:1 \(set\): + Only the first value argument is used when setting an environment variable. + Argument 'value_2' and later are unused. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) +This warning is for project developers. Use -Wno-dev to suppress it. diff --git a/Tests/RunCMake/set/ExtraEnvValue.cmake b/Tests/RunCMake/set/ExtraEnvValue.cmake new file mode 100644 index 0000000..768a6ea --- /dev/null +++ b/Tests/RunCMake/set/ExtraEnvValue.cmake @@ -0,0 +1 @@ +set (ENV{sample_key} value_1 value_2) diff --git a/Tests/RunCMake/set/RunCMakeTest.cmake b/Tests/RunCMake/set/RunCMakeTest.cmake index ea63d0b..b3bd0a4 100644 --- a/Tests/RunCMake/set/RunCMakeTest.cmake +++ b/Tests/RunCMake/set/RunCMakeTest.cmake @@ -4,3 +4,4 @@ run_cmake(ParentScope) run_cmake(ParentPulling) run_cmake(ParentPullingRecursive) run_cmake(UnknownCacheType) +run_cmake(ExtraEnvValue) ----------------------------------------------------------------------- Summary of changes: Help/command/set.rst | 9 ++++++++- Source/cmSetCommand.cxx | 8 ++++++++ Source/cmVisualStudio10TargetGenerator.cxx | 18 +++++++++++++++--- .../VS10ProjectWinCE/VsCEDebuggerDeploy-check.cmake | 8 ++++++++ Tests/RunCMake/set/ExtraEnvValue-stderr.txt | 6 ++++++ Tests/RunCMake/set/ExtraEnvValue.cmake | 1 + Tests/RunCMake/set/RunCMakeTest.cmake | 1 + Tests/VSWinStorePhone/CMakeLists.txt | 11 ++++++++--- Tests/VSWinStorePhone/Direct3DApp1/CubeRenderer.cpp | 4 ++++ Tests/VSWinStorePhone/WinRT/Batman.cpp | 14 ++++++++++++++ Tests/VSWinStorePhone/WinRT/Batman.h | 12 ++++++++++++ Tests/VSWinStorePhone/WinRT/CMakeLists.txt | 13 +++++++++++++ 12 files changed, 98 insertions(+), 7 deletions(-) create mode 100644 Tests/RunCMake/set/ExtraEnvValue-stderr.txt create mode 100644 Tests/RunCMake/set/ExtraEnvValue.cmake create mode 100644 Tests/VSWinStorePhone/WinRT/Batman.cpp create mode 100644 Tests/VSWinStorePhone/WinRT/Batman.h create mode 100644 Tests/VSWinStorePhone/WinRT/CMakeLists.txt hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 4 08:13:03 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 4 Feb 2019 08:13:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.13.4-1276-g6e91f5d Message-ID: <20190204131303.77BD611D9D0@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 6e91f5d6204e650c808b6585074faa248ee6e6a9 (commit) via 254b7260f49caaca78b16761d70d6239626d2129 (commit) via cd8a930d61f0aa6c139b1f81302c9258b4102012 (commit) via 6d407ae439f1db086dd7a3675c8efce93a19fed3 (commit) via 2ddf3f4467bdd600027dd3532515d05d44996871 (commit) via b9d44fc35081a3354429137dff09a8959d8a2a92 (commit) from a5ec7f868f2c7c9714a525a9872b9eaa528d064b (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=6e91f5d6204e650c808b6585074faa248ee6e6a9 commit 6e91f5d6204e650c808b6585074faa248ee6e6a9 Merge: a5ec7f8 254b726 Author: Brad King AuthorDate: Mon Feb 4 13:04:26 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 4 08:04:31 2019 -0500 Merge topic 'cmSourceFile_refactor' 254b7260f4 cmSourceFile: Check if a file is GENERATED first in the full path computation cd8a930d61 cmSourceFile: Refactor FindFullPath method 6d407ae439 Use cmSourceFile::GetIsGenerated 2ddf3f4467 cmSourceFile: Add IsGenerated method b9d44fc350 cmSourceFile: Additional static property strings Acked-by: Kitware Robot Merge-request: !2908 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=254b7260f49caaca78b16761d70d6239626d2129 commit 254b7260f49caaca78b16761d70d6239626d2129 Author: Sebastian Holtermann AuthorDate: Fri Feb 1 17:11:49 2019 +0100 Commit: Sebastian Holtermann CommitDate: Sat Feb 2 18:39:22 2019 +0100 cmSourceFile: Check if a file is GENERATED first in the full path computation In `cmSourceFile::FindFullPath` check first if the file is GENERATED before aborting on `FindFullPathFailed`. This allows recomputation of the full path when the GENERATED property was set after the file path was computed with an error. diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx index fbc1293..d05fb68 100644 --- a/Source/cmSourceFile.cxx +++ b/Source/cmSourceFile.cxx @@ -113,11 +113,6 @@ std::string const& cmSourceFile::GetFullPath() const bool cmSourceFile::FindFullPath(std::string* error) { - // If this method has already failed once do not try again. - if (this->FindFullPathFailed) { - return false; - } - // If the file is generated compute the location without checking on disk. if (this->GetIsGenerated()) { // The file is either already a full path or is relative to the @@ -127,6 +122,11 @@ bool cmSourceFile::FindFullPath(std::string* error) return true; } + // If this method has already failed once do not try again. + if (this->FindFullPathFailed) { + return false; + } + // The file is not generated. It must exist on disk. cmMakefile const* makefile = this->Location.GetMakefile(); // Location path https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cd8a930d61f0aa6c139b1f81302c9258b4102012 commit cd8a930d61f0aa6c139b1f81302c9258b4102012 Author: Sebastian Holtermann AuthorDate: Fri Feb 1 12:50:28 2019 +0100 Commit: Sebastian Holtermann CommitDate: Sat Feb 2 18:39:22 2019 +0100 cmSourceFile: Refactor FindFullPath method Refactors the cmSourceFile::FindFullPath method to use lambdas. diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx index 9d2bf90..fbc1293 100644 --- a/Source/cmSourceFile.cxx +++ b/Source/cmSourceFile.cxx @@ -2,7 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmSourceFile.h" -#include +#include +#include #include "cmCustomCommand.h" #include "cmGlobalGenerator.h" @@ -117,87 +118,83 @@ bool cmSourceFile::FindFullPath(std::string* error) return false; } - // If the file is generated compute the location without checking on - // disk. + // If the file is generated compute the location without checking on disk. if (this->GetIsGenerated()) { // The file is either already a full path or is relative to the // build directory for the target. this->Location.DirectoryUseBinary(); - this->FullPath = this->Location.GetDirectory(); - this->FullPath += "/"; - this->FullPath += this->Location.GetName(); + this->FullPath = this->Location.GetFullPath(); return true; } // The file is not generated. It must exist on disk. - cmMakefile const* mf = this->Location.GetMakefile(); - const char* tryDirs[3] = { nullptr, nullptr, nullptr }; - if (this->Location.DirectoryIsAmbiguous()) { - tryDirs[0] = mf->GetCurrentSourceDirectory().c_str(); - tryDirs[1] = mf->GetCurrentBinaryDirectory().c_str(); - } else { - tryDirs[0] = ""; - } - - cmake const* const cmakeInst = mf->GetCMakeInstance(); - std::vector const& srcExts = cmakeInst->GetSourceExtensions(); - std::vector const& hdrExts = cmakeInst->GetHeaderExtensions(); - for (const char* const* di = tryDirs; *di; ++di) { - std::string tryPath = this->Location.GetDirectory(); - if (!tryPath.empty()) { - tryPath += "/"; - } - tryPath += this->Location.GetName(); - tryPath = cmSystemTools::CollapseFullPath(tryPath, *di); - if (this->TryFullPath(tryPath, "")) { + cmMakefile const* makefile = this->Location.GetMakefile(); + // Location path + std::string const lPath = this->Location.GetFullPath(); + // List of extension lists + std::array const*, 2> const extsLists = { + { &makefile->GetCMakeInstance()->GetSourceExtensions(), + &makefile->GetCMakeInstance()->GetHeaderExtensions() } + }; + + // Tries to find the file in a given directory + auto findInDir = [this, &extsLists, &lPath](std::string const& dir) -> bool { + // Compute full path + std::string const fullPath = cmSystemTools::CollapseFullPath(lPath, dir); + // Try full path + if (cmSystemTools::FileExists(fullPath)) { + this->FullPath = fullPath; return true; } - for (std::string const& ext : srcExts) { - if (this->TryFullPath(tryPath, ext)) { - return true; + // Try full path with extension + for (auto exts : extsLists) { + for (std::string const& ext : *exts) { + if (!ext.empty()) { + std::string extPath = fullPath; + extPath += '.'; + extPath += ext; + if (cmSystemTools::FileExists(extPath)) { + this->FullPath = extPath; + return true; + } + } } } - for (std::string const& ext : hdrExts) { - if (this->TryFullPath(tryPath, ext)) { - return true; - } + // File not found + return false; + }; + + // Try to find the file in various directories + if (this->Location.DirectoryIsAmbiguous()) { + if (findInDir(makefile->GetCurrentSourceDirectory()) || + findInDir(makefile->GetCurrentBinaryDirectory())) { + return true; + } + } else { + if (findInDir({})) { + return true; } } - std::ostringstream e; - std::string missing = this->Location.GetDirectory(); - if (!missing.empty()) { - missing += "/"; - } - missing += this->Location.GetName(); - e << "Cannot find source file:\n " << missing << "\nTried extensions"; - for (std::string const& srcExt : srcExts) { - e << " ." << srcExt; - } - for (std::string const& ext : hdrExts) { - e << " ." << ext; + // Compose error + std::string err; + err += "Cannot find source file:\n "; + err += lPath; + err += "\nTried extensions"; + for (auto exts : extsLists) { + for (std::string const& ext : *exts) { + err += " ."; + err += ext; + } } - if (error) { - *error = e.str(); + if (error != nullptr) { + *error = std::move(err); } else { - this->Location.GetMakefile()->IssueMessage(MessageType::FATAL_ERROR, - e.str()); + makefile->IssueMessage(MessageType::FATAL_ERROR, err); } this->FindFullPathFailed = true; - return false; -} -bool cmSourceFile::TryFullPath(const std::string& path, const std::string& ext) -{ - std::string tryPath = path; - if (!ext.empty()) { - tryPath += "."; - tryPath += ext; - } - if (cmSystemTools::FileExists(tryPath)) { - this->FullPath = tryPath; - return true; - } + // File not found return false; } diff --git a/Source/cmSourceFile.h b/Source/cmSourceFile.h index 7f37ef3..a82a58a 100644 --- a/Source/cmSourceFile.h +++ b/Source/cmSourceFile.h @@ -120,7 +120,6 @@ private: bool IsGenerated = false; bool FindFullPath(std::string* error); - bool TryFullPath(const std::string& path, const std::string& ext); void CheckExtension(); void CheckLanguage(std::string const& ext); diff --git a/Source/cmSourceFileLocation.cxx b/Source/cmSourceFileLocation.cxx index 13d2d7e..acacba2 100644 --- a/Source/cmSourceFileLocation.cxx +++ b/Source/cmSourceFileLocation.cxx @@ -42,6 +42,16 @@ cmSourceFileLocation::cmSourceFileLocation(cmMakefile const* mf, } } +std::string cmSourceFileLocation::GetFullPath() const +{ + std::string path = this->GetDirectory(); + if (!path.empty()) { + path += '/'; + } + path += this->GetName(); + return path; +} + void cmSourceFileLocation::Update(cmSourceFileLocation const& loc) { if (this->AmbiguousDirectory && !loc.AmbiguousDirectory) { diff --git a/Source/cmSourceFileLocation.h b/Source/cmSourceFileLocation.h index cb35703..87040b8 100644 --- a/Source/cmSourceFileLocation.h +++ b/Source/cmSourceFileLocation.h @@ -80,6 +80,11 @@ public: const std::string& GetName() const { return this->Name; } /** + * Get the full file path composed of GetDirectory() and GetName(). + */ + std::string GetFullPath() const; + + /** * Get the cmMakefile instance for which the source file was created. */ cmMakefile const* GetMakefile() const { return this->Makefile; } https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6d407ae439f1db086dd7a3675c8efce93a19fed3 commit 6d407ae439f1db086dd7a3675c8efce93a19fed3 Author: Sebastian Holtermann AuthorDate: Fri Feb 1 16:40:25 2019 +0100 Commit: Sebastian Holtermann CommitDate: Fri Feb 1 17:02:53 2019 +0100 Use cmSourceFile::GetIsGenerated diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx index 397508c..e408de3 100644 --- a/Source/cmExtraCodeBlocksGenerator.cxx +++ b/Source/cmExtraCodeBlocksGenerator.cxx @@ -362,7 +362,7 @@ void cmExtraCodeBlocksGenerator::CreateNewProjectFile( // don't add source files from UTILITY target which have the // GENERATED property set: if (gt->GetType() == cmStateEnums::UTILITY && - s->GetPropertyAsBool("GENERATED")) { + s->GetIsGenerated()) { continue; } diff --git a/Source/cmExtraKateGenerator.cxx b/Source/cmExtraKateGenerator.cxx index e28a865..23ba6b7 100644 --- a/Source/cmExtraKateGenerator.cxx +++ b/Source/cmExtraKateGenerator.cxx @@ -256,7 +256,7 @@ std::string cmExtraKateGenerator::GenerateFilesString( const std::vector& sources = makefile->GetSourceFiles(); for (cmSourceFile* sf : sources) { - if (sf->GetPropertyAsBool("GENERATED")) { + if (sf->GetIsGenerated()) { continue; } diff --git a/Source/cmFileAPICodemodel.cxx b/Source/cmFileAPICodemodel.cxx index 4597d4f..45e8303 100644 --- a/Source/cmFileAPICodemodel.cxx +++ b/Source/cmFileAPICodemodel.cxx @@ -882,7 +882,7 @@ Json::Value Target::DumpSource(cmGeneratorTarget::SourceAndKind const& sk, std::string const path = sk.Source.Value->GetFullPath(); source["path"] = RelativeIfUnder(this->TopSource, path); - if (sk.Source.Value->GetPropertyAsBool("GENERATED")) { + if (sk.Source.Value->GetIsGenerated()) { source["isGenerated"] = true; } this->AddBacktrace(source, sk.Source.Backtrace); diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index f1b32ee..b428ae1 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -2460,7 +2460,7 @@ cmXCodeObject* cmGlobalXCodeGenerator::CreateUtilityTarget( this->AddXCodeProjBuildRule(gtgt, sources); for (auto sourceFile : sources) { - if (!sourceFile->GetPropertyAsBool("GENERATED")) { + if (!sourceFile->GetIsGenerated()) { this->CreateXCodeFileReference(sourceFile, gtgt); } } diff --git a/Source/cmJsonObjects.cxx b/Source/cmJsonObjects.cxx index 4b6b4d5..d723ced 100644 --- a/Source/cmJsonObjects.cxx +++ b/Source/cmJsonObjects.cxx @@ -323,7 +323,7 @@ static Json::Value DumpSourceFilesList( fileData.SetDefines(defines); } - fileData.IsGenerated = file->GetPropertyAsBool("GENERATED"); + fileData.IsGenerated = file->GetIsGenerated(); std::vector& groupFileList = fileGroups[fileData]; groupFileList.push_back(file->GetFullPath()); } diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index c29c657..5d76dc2 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -1000,7 +1000,7 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement( // (either attached to this source file or another one), assume that one of // the target dependencies, OBJECT_DEPENDS or header file custom commands // will rebuild the file. - if (source->GetPropertyAsBool("GENERATED") && + if (source->GetIsGenerated() && !source->GetPropertyAsBool("__CMAKE_GENERATED_BY_CMAKE") && !source->GetCustomCommand() && !this->GetGlobalGenerator()->HasCustomCommandOutput(sourceFileName)) { diff --git a/Source/cmQTWrapCPPCommand.cxx b/Source/cmQTWrapCPPCommand.cxx index d2133ed..6acc7ef 100644 --- a/Source/cmQTWrapCPPCommand.cxx +++ b/Source/cmQTWrapCPPCommand.cxx @@ -50,7 +50,7 @@ bool cmQTWrapCPPCommand::InitialPass(std::vector const& args, if (cmSystemTools::FileIsFullPath(*j)) { hname = *j; } else { - if (curr && curr->GetPropertyAsBool("GENERATED")) { + if (curr && curr->GetIsGenerated()) { hname = this->Makefile->GetCurrentBinaryDirectory(); } else { hname = this->Makefile->GetCurrentSourceDirectory(); diff --git a/Source/cmQTWrapUICommand.cxx b/Source/cmQTWrapUICommand.cxx index 25dcd1a..43b1fb9 100644 --- a/Source/cmQTWrapUICommand.cxx +++ b/Source/cmQTWrapUICommand.cxx @@ -58,7 +58,7 @@ bool cmQTWrapUICommand::InitialPass(std::vector const& args, if (cmSystemTools::FileIsFullPath(*j)) { uiName = *j; } else { - if (curr && curr->GetPropertyAsBool("GENERATED")) { + if (curr && curr->GetIsGenerated()) { uiName = this->Makefile->GetCurrentBinaryDirectory(); } else { uiName = this->Makefile->GetCurrentSourceDirectory(); diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx index caeed15..41d29e8 100644 --- a/Source/cmQtAutoGenInitializer.cxx +++ b/Source/cmQtAutoGenInitializer.cxx @@ -686,7 +686,7 @@ bool cmQtAutoGenInitializer::InitScanFiles() if ((this->Moc.Enabled && !sf->GetPropertyAsBool("SKIP_AUTOMOC")) || (this->Uic.Enabled && !sf->GetPropertyAsBool("SKIP_AUTOUIC"))) { // Register source - const bool generated = sf->GetPropertyAsBool("GENERATED"); + const bool generated = sf->GetIsGenerated(); if (fileType == cmSystemTools::HEADER_FILE_FORMAT) { if (generated) { this->AutogenTarget.HeadersGenerated.push_back(absPath); @@ -712,7 +712,7 @@ bool cmQtAutoGenInitializer::InitScanFiles() qrc.QrcFile = cmSystemTools::GetRealPath(fPath); qrc.QrcName = cmSystemTools::GetFilenameWithoutLastExtension(qrc.QrcFile); - qrc.Generated = sf->GetPropertyAsBool("GENERATED"); + qrc.Generated = sf->GetIsGenerated(); // RCC options { std::string const opts = sf->GetSafeProperty("AUTORCC_OPTIONS"); diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx index cc72fb0..9d2bf90 100644 --- a/Source/cmSourceFile.cxx +++ b/Source/cmSourceFile.cxx @@ -119,7 +119,7 @@ bool cmSourceFile::FindFullPath(std::string* error) // If the file is generated compute the location without checking on // disk. - if (this->GetPropertyAsBool(propGENERATED)) { + if (this->GetIsGenerated()) { // The file is either already a full path or is relative to the // build directory for the target. this->Location.DirectoryUseBinary(); https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2ddf3f4467bdd600027dd3532515d05d44996871 commit 2ddf3f4467bdd600027dd3532515d05d44996871 Author: Sebastian Holtermann AuthorDate: Fri Feb 1 16:28:21 2019 +0100 Commit: Sebastian Holtermann CommitDate: Fri Feb 1 16:55:35 2019 +0100 cmSourceFile: Add IsGenerated method All cmSourceFiles are checked at least once whether they're `GENERATED` or not. This adds a convenience method `GetIsGenerated` that returns a private boolean cache variable `IsGenerated`. `IsGenerated` is updated every time the `GENERATED` property is written. diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx index 5ac902f..cc72fb0 100644 --- a/Source/cmSourceFile.cxx +++ b/Source/cmSourceFile.cxx @@ -17,8 +17,6 @@ cmSourceFile::cmSourceFile(cmMakefile* mf, const std::string& name, cmSourceFileLocationKind kind) : Location(mf, name, kind) { - this->CustomCommand = nullptr; - this->FindFullPathFailed = false; } cmSourceFile::~cmSourceFile() @@ -244,12 +242,22 @@ bool cmSourceFile::Matches(cmSourceFileLocation const& loc) void cmSourceFile::SetProperty(const std::string& prop, const char* value) { this->Properties.SetProperty(prop, value); + + // Update IsGenerated flag + if (prop == propGENERATED) { + this->IsGenerated = cmSystemTools::IsOn(value); + } } void cmSourceFile::AppendProperty(const std::string& prop, const char* value, bool asString) { this->Properties.AppendProperty(prop, value, asString); + + // Update IsGenerated flag + if (prop == propGENERATED) { + this->IsGenerated = this->GetPropertyAsBool(propGENERATED); + } } const char* cmSourceFile::GetPropertyForUser(const std::string& prop) diff --git a/Source/cmSourceFile.h b/Source/cmSourceFile.h index 9936e5a..7f37ef3 100644 --- a/Source/cmSourceFile.h +++ b/Source/cmSourceFile.h @@ -55,6 +55,10 @@ public: command like get_property or get_source_file_property. */ const char* GetPropertyForUser(const std::string& prop); + ///! Checks is the GENERATED property is set and true + /// @return Equivalent to GetPropertyAsBool("GENERATED") + bool GetIsGenerated() const { return this->IsGenerated; } + /** * The full path to the file. The non-const version of this method * may attempt to locate the file on disk and finalize its location. @@ -106,13 +110,14 @@ public: private: cmSourceFileLocation Location; cmPropertyMap Properties; - cmCustomCommand* CustomCommand; + cmCustomCommand* CustomCommand = nullptr; std::string Extension; std::string Language; std::string FullPath; std::string ObjectLibrary; std::vector Depends; - bool FindFullPathFailed; + bool FindFullPathFailed = false; + bool IsGenerated = false; bool FindFullPath(std::string* error); bool TryFullPath(const std::string& path, const std::string& ext); https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b9d44fc35081a3354429137dff09a8959d8a2a92 commit b9d44fc35081a3354429137dff09a8959d8a2a92 Author: Sebastian Holtermann AuthorDate: Fri Feb 1 16:21:32 2019 +0100 Commit: Sebastian Holtermann CommitDate: Fri Feb 1 16:21:32 2019 +0100 cmSourceFile: Additional static property strings diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx index efc6bb5..5ac902f 100644 --- a/Source/cmSourceFile.cxx +++ b/Source/cmSourceFile.cxx @@ -32,6 +32,8 @@ std::string const& cmSourceFile::GetExtension() const } const std::string cmSourceFile::propLANGUAGE = "LANGUAGE"; +const std::string cmSourceFile::propLOCATION = "LOCATION"; +const std::string cmSourceFile::propGENERATED = "GENERATED"; void cmSourceFile::SetObjectLibrary(std::string const& objlib) { @@ -119,7 +121,7 @@ bool cmSourceFile::FindFullPath(std::string* error) // If the file is generated compute the location without checking on // disk. - if (this->GetPropertyAsBool("GENERATED")) { + if (this->GetPropertyAsBool(propGENERATED)) { // The file is either already a full path or is relative to the // build directory for the target. this->Location.DirectoryUseBinary(); @@ -266,7 +268,7 @@ const char* cmSourceFile::GetPropertyForUser(const std::string& prop) // cmSourceFileLocation class to commit to a particular full path to // the source file as late as possible. If the users requests the // LOCATION property we must commit now. - if (prop == "LOCATION") { + if (prop == propLOCATION) { // Commit to a location. this->GetFullPath(); } @@ -278,7 +280,7 @@ const char* cmSourceFile::GetPropertyForUser(const std::string& prop) const char* cmSourceFile::GetProperty(const std::string& prop) const { // Check for computed properties. - if (prop == "LOCATION") { + if (prop == propLOCATION) { if (this->FullPath.empty()) { return nullptr; } diff --git a/Source/cmSourceFile.h b/Source/cmSourceFile.h index ab0f229..9936e5a 100644 --- a/Source/cmSourceFile.h +++ b/Source/cmSourceFile.h @@ -120,6 +120,8 @@ private: void CheckLanguage(std::string const& ext); static const std::string propLANGUAGE; + static const std::string propLOCATION; + static const std::string propGENERATED; }; // TODO: Factor out into platform information modules. ----------------------------------------------------------------------- Summary of changes: Source/cmExtraCodeBlocksGenerator.cxx | 2 +- Source/cmExtraKateGenerator.cxx | 2 +- Source/cmFileAPICodemodel.cxx | 2 +- Source/cmGlobalXCodeGenerator.cxx | 2 +- Source/cmJsonObjects.cxx | 2 +- Source/cmNinjaTargetGenerator.cxx | 2 +- Source/cmQTWrapCPPCommand.cxx | 2 +- Source/cmQTWrapUICommand.cxx | 2 +- Source/cmQtAutoGenInitializer.cxx | 4 +- Source/cmSourceFile.cxx | 149 ++++++++++++++++++---------------- Source/cmSourceFile.h | 12 ++- Source/cmSourceFileLocation.cxx | 10 +++ Source/cmSourceFileLocation.h | 5 ++ 13 files changed, 112 insertions(+), 84 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 5 00:03:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 5 Feb 2019 00:03:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.13.4-1277-g762a41f Message-ID: <20190205050304.BD7311278EF@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 762a41fd19dff29de41009bfe7bcf69917e5ffb0 (commit) from 6e91f5d6204e650c808b6585074faa248ee6e6a9 (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=762a41fd19dff29de41009bfe7bcf69917e5ffb0 commit 762a41fd19dff29de41009bfe7bcf69917e5ffb0 Author: Kitware Robot AuthorDate: Tue Feb 5 00:01:05 2019 -0500 Commit: Kitware Robot CommitDate: Tue Feb 5 00:01:05 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 0d1fb40..39a5b3d 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 13) -set(CMake_VERSION_PATCH 20190204) +set(CMake_VERSION_PATCH 20190205) #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 5 07:33:07 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 5 Feb 2019 07:33:07 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.13.4-1279-g25e6168 Message-ID: <20190205123307.BE69A1281A0@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 25e616862dac08aae7c4a3ad01839acfe7342ec7 (commit) via 96dece6dc11627d0e7b5588f63f2578b581cfb77 (commit) from 762a41fd19dff29de41009bfe7bcf69917e5ffb0 (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=25e616862dac08aae7c4a3ad01839acfe7342ec7 commit 25e616862dac08aae7c4a3ad01839acfe7342ec7 Merge: 762a41f 96dece6 Author: Brad King AuthorDate: Tue Feb 5 12:29:36 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 5 07:29:59 2019 -0500 Merge topic 'swift-xcode-10.2' 96dece6dc1 Xcode: Update default Swift language version for Xcode 10.2 Acked-by: Kitware Robot Merge-request: !2912 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=96dece6dc11627d0e7b5588f63f2578b581cfb77 commit 96dece6dc11627d0e7b5588f63f2578b581cfb77 Author: Brad King AuthorDate: Mon Feb 4 12:05:08 2019 -0500 Commit: Brad King CommitDate: Mon Feb 4 13:26:10 2019 -0500 Xcode: Update default Swift language version for Xcode 10.2 Xcode 10.2 no longer supports Swift language versions before 4.0. Fixes: #18871 diff --git a/Help/variable/CMAKE_Swift_LANGUAGE_VERSION.rst b/Help/variable/CMAKE_Swift_LANGUAGE_VERSION.rst index 50121e2..b4a74eb 100644 --- a/Help/variable/CMAKE_Swift_LANGUAGE_VERSION.rst +++ b/Help/variable/CMAKE_Swift_LANGUAGE_VERSION.rst @@ -1,5 +1,9 @@ CMAKE_Swift_LANGUAGE_VERSION ---------------------------- -Set to the Swift language version number. If not set, the legacy "2.3" -version is assumed. +Set to the Swift language version number. If not set, the oldest legacy +version known to be available in the host Xcode version is assumed: + +* Swift ``4.0`` for Xcode 10.2 and above. +* Swift ``3.0`` for Xcode 8.3 and above. +* Swift ``2.3`` for Xcode 8.2 and below. diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake index 2a0dbd3..cdbaea6 100644 --- a/Modules/CMakeDetermineCompilerId.cmake +++ b/Modules/CMakeDetermineCompilerId.cmake @@ -332,6 +332,8 @@ Id flags: ${testflags} ${CMAKE_${lang}_COMPILER_ID_FLAGS_ALWAYS} if("${lang}" STREQUAL "Swift") if(CMAKE_Swift_LANGUAGE_VERSION) set(id_lang_version "SWIFT_VERSION = ${CMAKE_Swift_LANGUAGE_VERSION};") + elseif(XCODE_VERSION VERSION_GREATER_EQUAL 10.2) + set(id_lang_version "SWIFT_VERSION = 4.0;") elseif(XCODE_VERSION VERSION_GREATER_EQUAL 8.3) set(id_lang_version "SWIFT_VERSION = 3.0;") else() diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index b428ae1..16f8a0e 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -3142,6 +3142,8 @@ bool cmGlobalXCodeGenerator::CreateXCodeObjects( if (const char* vers = this->CurrentMakefile->GetDefinition( "CMAKE_Swift_LANGUAGE_VERSION")) { swiftVersion = vers; + } else if (this->XcodeVersion >= 102) { + swiftVersion = "4.0"; } else if (this->XcodeVersion >= 83) { swiftVersion = "3.0"; } else { diff --git a/Tests/SwiftOnly/CMakeLists.txt b/Tests/SwiftOnly/CMakeLists.txt index cf4463c..e5f8588 100644 --- a/Tests/SwiftOnly/CMakeLists.txt +++ b/Tests/SwiftOnly/CMakeLists.txt @@ -1,7 +1,9 @@ cmake_minimum_required(VERSION 3.3) project(SwiftOnly Swift) -if(NOT XCODE_VERSION VERSION_LESS 8.0) +if(NOT XCODE_VERSION VERSION_LESS 10.2) + set(CMAKE_Swift_LANGUAGE_VERSION 5.0) +elseif(NOT XCODE_VERSION VERSION_LESS 8.0) set(CMAKE_Swift_LANGUAGE_VERSION 3.0) endif() ----------------------------------------------------------------------- Summary of changes: Help/variable/CMAKE_Swift_LANGUAGE_VERSION.rst | 8 ++++++-- Modules/CMakeDetermineCompilerId.cmake | 2 ++ Source/cmGlobalXCodeGenerator.cxx | 2 ++ Tests/SwiftOnly/CMakeLists.txt | 4 +++- 4 files changed, 13 insertions(+), 3 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 5 07:43:08 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 5 Feb 2019 07:43:08 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.13.4-1285-gc6d679f Message-ID: <20190205124308.0648411F45D@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 c6d679f0d904b19b3be411b399b5904a5da7ea78 (commit) via c03072f2f7a08c6ddf0cec58dfc8ea2b83f4c1a9 (commit) via d3d2c3cd497e09281a8f237b5a4cd35d8cd298f0 (commit) via e8ee8cab97bdb084d4555ee3e76eb33303e3bc85 (commit) via 11da882a1293b39ddd054342b1e6f2f3bd1bc934 (commit) via 36cf44a7a3a8931c97790db6df61439d4dd86ea3 (commit) from 25e616862dac08aae7c4a3ad01839acfe7342ec7 (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=c6d679f0d904b19b3be411b399b5904a5da7ea78 commit c6d679f0d904b19b3be411b399b5904a5da7ea78 Merge: c03072f d3d2c3c Author: Brad King AuthorDate: Tue Feb 5 12:30:55 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 5 07:36:36 2019 -0500 Merge topic 'vs-fortran-target-check' d3d2c3cd49 VS: Fix Fortran target type selection when linking C++ targets Acked-by: Kitware Robot Merge-request: !2913 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c03072f2f7a08c6ddf0cec58dfc8ea2b83f4c1a9 commit c03072f2f7a08c6ddf0cec58dfc8ea2b83f4c1a9 Merge: 25e6168 e8ee8ca Author: Brad King AuthorDate: Tue Feb 5 12:30:19 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 5 07:33:04 2019 -0500 Merge topic '17870-iphone-friendly-cmake' e8ee8cab97 Xcode: Completely disable code signing for compiler id detection 11da882a12 Apple: Introduce separate system name for iOS, tvOS, and watchOS 36cf44a7a3 Tests: Isolate RunCMake.XcodeProject per-device cases from host arch Acked-by: Kitware Robot Merge-request: !2392 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d3d2c3cd497e09281a8f237b5a4cd35d8cd298f0 commit d3d2c3cd497e09281a8f237b5a4cd35d8cd298f0 Author: Brad King AuthorDate: Mon Feb 4 09:41:57 2019 -0500 Commit: Brad King CommitDate: Mon Feb 4 14:13:46 2019 -0500 VS: Fix Fortran target type selection when linking C++ targets Since commit 2c9f35789d (VS: Decide project type by linker lang as fallback, 2017-03-30, v3.9.0-rc1~340^2) we consider the linker language when detecting whether to generate a `.vfproj` or `.vcxproj` file. However, this could cause C-only projects to become `.vfproj` files if they link to Fortran projects. Instead we should consider only the `LINKER_LANGUAGE` property on the target itself. This approach is already used for CSharp. It allows project code to specify the project file type for a target with no sources but does not allow linked targets to affect it. Fixes: #18687 diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index 77be592..1922906 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -813,7 +813,6 @@ bool cmGlobalVisualStudioGenerator::TargetIsFortranOnly( cmGeneratorTarget const* gt) { // check to see if this is a fortran build - std::set languages; { // Issue diagnostic if the source files depend on the config. std::vector sources; @@ -821,27 +820,21 @@ bool cmGlobalVisualStudioGenerator::TargetIsFortranOnly( return false; } } + // If there's only one source language, Fortran has to be used // in order for the sources to compile. - // Note: Via linker propagation, LINKER_LANGUAGE could become CXX in - // this situation and mismatch from the actual language of the linker. + std::set languages; gt->GetLanguages(languages, ""); - if (languages.size() == 1) { - if (*languages.begin() == "Fortran") { - return true; - } - } - - // In the case of mixed object files or sources mixed with objects, - // decide the language based on the value of LINKER_LANGUAGE. - // This will not make it possible to mix source files of different - // languages, but object libraries will be linked together in the - // same fashion as other generators do. - if (gt->GetLinkerLanguage("") == "Fortran") { - return true; - } - - return false; + // Consider an explicit linker language property, but *not* the + // computed linker language that may depend on linked targets. + // This allows the project to control the language choice in + // a target with none of its own sources, e.g. when also using + // object libraries. + const char* linkLang = gt->GetProperty("LINKER_LANGUAGE"); + if (linkLang && *linkLang) { + languages.insert(linkLang); + } + return languages.size() == 1 && *languages.begin() == "Fortran"; } bool cmGlobalVisualStudioGenerator::TargetCompare::operator()( diff --git a/Tests/Fortran/CMakeLists.txt b/Tests/Fortran/CMakeLists.txt index 52623d0..7023615 100644 --- a/Tests/Fortran/CMakeLists.txt +++ b/Tests/Fortran/CMakeLists.txt @@ -99,6 +99,11 @@ function(test_fortran_c_interface_module) target_link_libraries(myc myfort) set_property(TARGET myc PROPERTY COMPILE_DEFINITIONS ${MYC_DEFS}) + add_library(myfort_obj OBJECT mysub.f) + add_library(myc_use_obj myc.c $) + add_executable(mainc_use_obj mainc.c) + target_link_libraries(mainc_use_obj myc_use_obj) + add_library(mycxx mycxx.cxx) target_link_libraries(mycxx myc) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e8ee8cab97bdb084d4555ee3e76eb33303e3bc85 commit e8ee8cab97bdb084d4555ee3e76eb33303e3bc85 Author: Gregor Jasny AuthorDate: Wed Jan 30 12:49:23 2019 +0100 Commit: Brad King CommitDate: Mon Feb 4 09:03:35 2019 -0500 Xcode: Completely disable code signing for compiler id detection Issue: #17870 diff --git a/Help/manual/cmake-toolchains.7.rst b/Help/manual/cmake-toolchains.7.rst index 565368b..d214e4a 100644 --- a/Help/manual/cmake-toolchains.7.rst +++ b/Help/manual/cmake-toolchains.7.rst @@ -564,6 +564,8 @@ code signing. If the :generator:`Xcode` generator is being used and code signing is required or desired, the developmemt team ID can be specified via the ``CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM`` CMake variable. This team ID will then be included in the generated Xcode project. +By default, CMake avoids the need for code signing during the internal +configuration phase (i.e compiler ID and feature detection). .. _`Switching Between Device and Simulator`: diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake index a63d317..5eb7ac9 100644 --- a/Modules/CMakeDetermineCompilerId.cmake +++ b/Modules/CMakeDetermineCompilerId.cmake @@ -358,18 +358,6 @@ Id flags: ${testflags} ${CMAKE_${lang}_COMPILER_ID_FLAGS_ALWAYS} else() set(id_sdkroot "") endif() - if(CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM) - set(id_development_team - "DEVELOPMENT_TEAM = \"${CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM}\";") - else() - set(id_development_team "") - endif() - if(DEFINED CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY) - set(id_code_sign_identity - "CODE_SIGN_IDENTITY = \"${CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY}\";") - else() - set(id_code_sign_identity "CODE_SIGN_IDENTITY = \"\";") - endif() configure_file(${CMAKE_ROOT}/Modules/CompilerId/Xcode-3.pbxproj.in ${id_dir}/CompilerId${lang}.xcodeproj/project.pbxproj @ONLY) unset(_ENV_MACOSX_DEPLOYMENT_TARGET) diff --git a/Modules/CompilerId/Xcode-3.pbxproj.in b/Modules/CompilerId/Xcode-3.pbxproj.in index 4686b64..813c074 100644 --- a/Modules/CompilerId/Xcode-3.pbxproj.in +++ b/Modules/CompilerId/Xcode-3.pbxproj.in @@ -72,8 +72,7 @@ 1DEB928608733DD80010E9CD = { isa = XCBuildConfiguration; buildSettings = { - @id_development_team@ - @id_code_sign_identity@ + CODE_SIGN_IDENTITY = ""; PRODUCT_NAME = CompilerId at id_lang@; }; name = Debug; https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=11da882a1293b39ddd054342b1e6f2f3bd1bc934 commit 11da882a1293b39ddd054342b1e6f2f3bd1bc934 Author: Gregor Jasny AuthorDate: Mon Jan 15 22:21:10 2018 +0100 Commit: Brad King CommitDate: Mon Feb 4 09:03:35 2019 -0500 Apple: Introduce separate system name for iOS, tvOS, and watchOS - Remove code signing requirements for non-macOS - Do not set deployment target for non-macOS - Build static library for compiler feature detection for non-macOS - Use framework to run CompilerId tests for watchOS - Port tests to new SDK handling - Add new Apple cross-compiling section to toolchain documentation Closes: #17870 diff --git a/Help/manual/cmake-toolchains.7.rst b/Help/manual/cmake-toolchains.7.rst index 8554e87..565368b 100644 --- a/Help/manual/cmake-toolchains.7.rst +++ b/Help/manual/cmake-toolchains.7.rst @@ -522,3 +522,72 @@ See also target properties: * :prop_tgt:`ANDROID_SECURE_PROPS_PATH` * :prop_tgt:`ANDROID_SKIP_ANT_STEP` * :prop_tgt:`ANDROID_STL_TYPE` + +.. _`Cross Compiling for iOS, tvOS, or watchOS`: + +Cross Compiling for iOS, tvOS, or watchOS +----------------------------------------- + +For cross-compiling to iOS, tvOS, or watchOS, the :generator:`Xcode` +generator is recommended. The :generator:`Unix Makefiles` or +:generator:`Ninja` generators can also be used, but they require the +project to handle more areas like target CPU selection and code signing. + +Any of the three systems can be targetted by setting the +:variable:`CMAKE_SYSTEM_NAME` variable to a value from the table below. +By default, the latest Device SDK is chosen. As for all Apple platforms, +a different SDK (e.g. a simulator) can be selected by setting the +:variable:`CMAKE_OSX_SYSROOT` variable, although this should rarely be +necessary (see :ref:`Switching Between Device and Simulator` below). +A list of available SDKs can be obtained by running ``xcodebuild -showsdks``. + +======= ================= ==================== ================ +OS CMAKE_SYSTEM_NAME Device SDK (default) Simulator SDK +======= ================= ==================== ================ +iOS iOS iphoneos iphonesimulator +tvOS tvOS appletvos appletvsimulator +watchOS watchOS watchos watchsimulator +======= ================= ==================== ================ + +For example, to create a CMake configuration for iOS, the following +command is sufficient: + +.. code-block:: console + + cmake .. -GXcode -DCMAKE_SYSTEM_NAME=iOS + +Code Signing +^^^^^^^^^^^^ + +Some build artifacts for the embedded Apple platforms require mandatory +code signing. If the :generator:`Xcode` generator is being used and +code signing is required or desired, the developmemt team ID can be +specified via the ``CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM`` CMake variable. +This team ID will then be included in the generated Xcode project. + +.. _`Switching Between Device and Simulator`: + +Switching Between Device and Simulator +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +When configuring for any of the embedded platforms, one can target either +real devices or the simulator. Both have their own separate SDK, but CMake +only supports specifying a single SDK for the configuration phase. This +means the developer must select one or the other at configuration time. +When using the :generator:`Xcode` generator, this is less of a limitation +because Xcode still allows you to build for either a device or a simulator, +even though configuration was only performed for one of the two. From +within the Xcode IDE, builds are performed for the selected "destination" +platform. When building from the command line, the desired sdk can be +specified directly by passing a ``-sdk`` option to the underlying build +tool (``xcodebuild``). For example: + +.. code-block:: console + + $ cmake --build ... -- -sdk iphonesimulator + +Please note that checks made during configuration were performed against +the configure-time SDK and might not hold true for other SDKs. Commands +like :command:`find_package`, :command:`find_library`, etc. store and use +details only for the configured SDK/platform, so they can be problematic +if wanting to switch between device and simulator builds. diff --git a/Help/release/dev/iphone-friendly-cmake.rst b/Help/release/dev/iphone-friendly-cmake.rst new file mode 100644 index 0000000..f32f0d1 --- /dev/null +++ b/Help/release/dev/iphone-friendly-cmake.rst @@ -0,0 +1,5 @@ +iphone-friendly-cmake +--------------------- + +* CMake now supports :ref:`Cross Compiling for iOS, tvOS, or watchOS` + using simple toolchain files. diff --git a/Modules/CMakeDetermineCCompiler.cmake b/Modules/CMakeDetermineCCompiler.cmake index 4f355f3..d7f6f97 100644 --- a/Modules/CMakeDetermineCCompiler.cmake +++ b/Modules/CMakeDetermineCCompiler.cmake @@ -106,7 +106,7 @@ if(NOT CMAKE_C_COMPILER_ID_RUN) # ... # /path/to/cc ...CompilerIdC/... # to extract the compiler front-end for the language. - set(CMAKE_C_COMPILER_ID_TOOL_MATCH_REGEX "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerIdC/(\\./)?(CompilerIdC.xctest/)?CompilerIdC[ \t\n\\\"]") + set(CMAKE_C_COMPILER_ID_TOOL_MATCH_REGEX "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerIdC/(\\./)?(CompilerIdC.(framework|xctest)/)?CompilerIdC[ \t\n\\\"]") set(CMAKE_C_COMPILER_ID_TOOL_MATCH_INDEX 2) include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake) diff --git a/Modules/CMakeDetermineCXXCompiler.cmake b/Modules/CMakeDetermineCXXCompiler.cmake index 96b4209..bd878b2 100644 --- a/Modules/CMakeDetermineCXXCompiler.cmake +++ b/Modules/CMakeDetermineCXXCompiler.cmake @@ -101,7 +101,7 @@ if(NOT CMAKE_CXX_COMPILER_ID_RUN) # ... # /path/to/cc ...CompilerIdCXX/... # to extract the compiler front-end for the language. - set(CMAKE_CXX_COMPILER_ID_TOOL_MATCH_REGEX "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerIdCXX/(\\./)?(CompilerIdCXX.xctest/)?CompilerIdCXX[ \t\n\\\"]") + set(CMAKE_CXX_COMPILER_ID_TOOL_MATCH_REGEX "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerIdCXX/(\\./)?(CompilerIdCXX.(framework|xctest)/)?CompilerIdCXX[ \t\n\\\"]") set(CMAKE_CXX_COMPILER_ID_TOOL_MATCH_INDEX 2) include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake) diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake index 2a0dbd3..a63d317 100644 --- a/Modules/CMakeDetermineCompilerId.cmake +++ b/Modules/CMakeDetermineCompilerId.cmake @@ -352,6 +352,8 @@ Id flags: ${testflags} ${CMAKE_${lang}_COMPILER_ID_FLAGS_ALWAYS} if(CMAKE_OSX_SYSROOT MATCHES "(^|/)[Ii][Pp][Hh][Oo][Nn][Ee]" OR CMAKE_OSX_SYSROOT MATCHES "(^|/)[Aa][Pp][Pp][Ll][Ee][Tt][Vv]") set(id_product_type "com.apple.product-type.bundle.unit-test") + elseif(CMAKE_OSX_SYSROOT MATCHES "(^|/)[Ww][Aa][Tt][Cc][Hh]") + set(id_product_type "com.apple.product-type.framework") endif() else() set(id_sdkroot "") @@ -366,7 +368,7 @@ Id flags: ${testflags} ${CMAKE_${lang}_COMPILER_ID_FLAGS_ALWAYS} set(id_code_sign_identity "CODE_SIGN_IDENTITY = \"${CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY}\";") else() - set(id_code_sign_identity "") + set(id_code_sign_identity "CODE_SIGN_IDENTITY = \"\";") endif() configure_file(${CMAKE_ROOT}/Modules/CompilerId/Xcode-3.pbxproj.in ${id_dir}/CompilerId${lang}.xcodeproj/project.pbxproj @ONLY) @@ -491,6 +493,9 @@ ${CMAKE_${lang}_COMPILER_ID_OUTPUT} # com.apple.package-type.bundle.unit-test ${_glob_id_dir}/*.xctest/* + + # com.apple.product-type.framework + ${_glob_id_dir}/*.framework/* ) list(REMOVE_ITEM files "${src}") set(COMPILER_${lang}_PRODUCED_FILES "") diff --git a/Modules/CMakeTestCCompiler.cmake b/Modules/CMakeTestCCompiler.cmake index f74a1c6..7bf6fde 100644 --- a/Modules/CMakeTestCCompiler.cmake +++ b/Modules/CMakeTestCCompiler.cmake @@ -11,6 +11,12 @@ endif() include(CMakeTestCompilerCommon) +# work around enforced code signing and / or missing exectuable target type +set(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE ${CMAKE_TRY_COMPILE_TARGET_TYPE}) +if(_CMAKE_FEATURE_DETECTION_TARGET_TYPE) + set(CMAKE_TRY_COMPILE_TARGET_TYPE ${_CMAKE_FEATURE_DETECTION_TARGET_TYPE}) +endif() + # Remove any cached result from an older CMake version. # We now store this in CMakeCCompiler.cmake. unset(CMAKE_C_COMPILER_WORKS CACHE) @@ -86,4 +92,6 @@ else() endif() endif() +set(CMAKE_TRY_COMPILE_TARGET_TYPE ${__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE}) +unset(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE) unset(__CMAKE_C_COMPILER_OUTPUT) diff --git a/Modules/CMakeTestCXXCompiler.cmake b/Modules/CMakeTestCXXCompiler.cmake index fe6bd25..7e595b7 100644 --- a/Modules/CMakeTestCXXCompiler.cmake +++ b/Modules/CMakeTestCXXCompiler.cmake @@ -11,6 +11,12 @@ endif() include(CMakeTestCompilerCommon) +# work around enforced code signing and / or missing exectuable target type +set(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE ${CMAKE_TRY_COMPILE_TARGET_TYPE}) +if(_CMAKE_FEATURE_DETECTION_TARGET_TYPE) + set(CMAKE_TRY_COMPILE_TARGET_TYPE ${_CMAKE_FEATURE_DETECTION_TARGET_TYPE}) +endif() + # Remove any cached result from an older CMake version. # We now store this in CMakeCXXCompiler.cmake. unset(CMAKE_CXX_COMPILER_WORKS CACHE) @@ -79,4 +85,6 @@ else() endif() endif() +set(CMAKE_TRY_COMPILE_TARGET_TYPE ${__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE}) +unset(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE) unset(__CMAKE_CXX_COMPILER_OUTPUT) diff --git a/Modules/Platform/Darwin-Initialize.cmake b/Modules/Platform/Darwin-Initialize.cmake index 3db77aa..2d797f6 100644 --- a/Modules/Platform/Darwin-Initialize.cmake +++ b/Modules/Platform/Darwin-Initialize.cmake @@ -34,7 +34,7 @@ string(REGEX REPLACE "^([0-9]+\\.[0-9]+).*$" "\\1" # CMAKE_OSX_DEPLOYMENT_TARGET # Set cache variable - end user may change this during ccmake or cmake-gui configure. -if(_CURRENT_OSX_VERSION VERSION_GREATER 10.3) +if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND _CURRENT_OSX_VERSION VERSION_GREATER 10.3) set(CMAKE_OSX_DEPLOYMENT_TARGET "$ENV{MACOSX_DEPLOYMENT_TARGET}" CACHE STRING "Minimum OS X version to target for deployment (at runtime); newer APIs weak linked. Set to empty string for default value.") endif() @@ -49,6 +49,12 @@ elseif(NOT "x$ENV{SDKROOT}" STREQUAL "x" AND (NOT "x$ENV{SDKROOT}" MATCHES "/" OR IS_DIRECTORY "$ENV{SDKROOT}")) # Use the value of SDKROOT from the environment. set(_CMAKE_OSX_SYSROOT_DEFAULT "$ENV{SDKROOT}") +elseif(CMAKE_SYSTEM_NAME STREQUAL iOS) + set(_CMAKE_OSX_SYSROOT_DEFAULT "iphoneos") +elseif(CMAKE_SYSTEM_NAME STREQUAL tvOS) + set(_CMAKE_OSX_SYSROOT_DEFAULT "appletvos") +elseif(CMAKE_SYSTEM_NAME STREQUAL watchOS) + set(_CMAKE_OSX_SYSROOT_DEFAULT "watchos") elseif("${CMAKE_GENERATOR}" MATCHES Xcode OR CMAKE_OSX_DEPLOYMENT_TARGET OR CMAKE_OSX_ARCHITECTURES MATCHES "[^;]" diff --git a/Modules/Platform/Darwin.cmake b/Modules/Platform/Darwin.cmake index 727baa6..a73ffba 100644 --- a/Modules/Platform/Darwin.cmake +++ b/Modules/Platform/Darwin.cmake @@ -1,5 +1,13 @@ set(APPLE 1) +if(CMAKE_SYSTEM_NAME STREQUAL "iOS" OR CMAKE_SYSTEM_NAME STREQUAL "tvOS" OR CMAKE_SYSTEM_NAME STREQUAL "watchOS") + set(CMAKE_MACOSX_BUNDLE ON) + + set(CMAKE_FIND_ROOT_PATH "${_CMAKE_OSX_SYSROOT_PATH}") + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +endif() + # Darwin versions: # 6.x == Mac OSX 10.2 (Jaguar) # 7.x == Mac OSX 10.3 (Panther) diff --git a/Modules/Platform/iOS-Determine-CXX.cmake b/Modules/Platform/iOS-Determine-CXX.cmake new file mode 100644 index 0000000..ac80fa6 --- /dev/null +++ b/Modules/Platform/iOS-Determine-CXX.cmake @@ -0,0 +1 @@ +include(Platform/Darwin-Determine-CXX) diff --git a/Modules/Platform/iOS-Initialize.cmake b/Modules/Platform/iOS-Initialize.cmake new file mode 100644 index 0000000..41399a3 --- /dev/null +++ b/Modules/Platform/iOS-Initialize.cmake @@ -0,0 +1,7 @@ +include(Platform/Darwin-Initialize) + +if(NOT _CMAKE_OSX_SYSROOT_PATH MATCHES "/iPhone(OS|Simulator)") + message(FATAL_ERROR "${CMAKE_OSX_SYSROOT} is not an iOS SDK") +endif() + +set(_CMAKE_FEATURE_DETECTION_TARGET_TYPE STATIC_LIBRARY) diff --git a/Modules/Platform/iOS.cmake b/Modules/Platform/iOS.cmake new file mode 100644 index 0000000..850ddc2 --- /dev/null +++ b/Modules/Platform/iOS.cmake @@ -0,0 +1 @@ +include(Platform/Darwin) diff --git a/Modules/Platform/tvOS-Determine-CXX.cmake b/Modules/Platform/tvOS-Determine-CXX.cmake new file mode 100644 index 0000000..ac80fa6 --- /dev/null +++ b/Modules/Platform/tvOS-Determine-CXX.cmake @@ -0,0 +1 @@ +include(Platform/Darwin-Determine-CXX) diff --git a/Modules/Platform/tvOS-Initialize.cmake b/Modules/Platform/tvOS-Initialize.cmake new file mode 100644 index 0000000..6834c80 --- /dev/null +++ b/Modules/Platform/tvOS-Initialize.cmake @@ -0,0 +1,7 @@ +include(Platform/Darwin-Initialize) + +if(NOT _CMAKE_OSX_SYSROOT_PATH MATCHES "/AppleTV(OS|Simulator)") + message(FATAL_ERROR "${CMAKE_OSX_SYSROOT} is not an tvOS SDK") +endif() + +set(_CMAKE_FEATURE_DETECTION_TARGET_TYPE STATIC_LIBRARY) diff --git a/Modules/Platform/tvOS.cmake b/Modules/Platform/tvOS.cmake new file mode 100644 index 0000000..850ddc2 --- /dev/null +++ b/Modules/Platform/tvOS.cmake @@ -0,0 +1 @@ +include(Platform/Darwin) diff --git a/Modules/Platform/watchOS-Determine-CXX.cmake b/Modules/Platform/watchOS-Determine-CXX.cmake new file mode 100644 index 0000000..ac80fa6 --- /dev/null +++ b/Modules/Platform/watchOS-Determine-CXX.cmake @@ -0,0 +1 @@ +include(Platform/Darwin-Determine-CXX) diff --git a/Modules/Platform/watchOS-Initialize.cmake b/Modules/Platform/watchOS-Initialize.cmake new file mode 100644 index 0000000..2f396d3 --- /dev/null +++ b/Modules/Platform/watchOS-Initialize.cmake @@ -0,0 +1,7 @@ +include(Platform/Darwin-Initialize) + +if(NOT _CMAKE_OSX_SYSROOT_PATH MATCHES "/Watch(OS|Simulator)") + message(FATAL_ERROR "${CMAKE_OSX_SYSROOT} is not an watchOS SDK") +endif() + +set(_CMAKE_FEATURE_DETECTION_TARGET_TYPE STATIC_LIBRARY) diff --git a/Modules/Platform/watchOS.cmake b/Modules/Platform/watchOS.cmake new file mode 100644 index 0000000..850ddc2 --- /dev/null +++ b/Modules/Platform/watchOS.cmake @@ -0,0 +1 @@ +include(Platform/Darwin) diff --git a/Tests/RunCMake/XcodeProject/DeploymentTarget.cmake b/Tests/RunCMake/XcodeProject/DeploymentTarget.cmake index 6281352..288735e 100644 --- a/Tests/RunCMake/XcodeProject/DeploymentTarget.cmake +++ b/Tests/RunCMake/XcodeProject/DeploymentTarget.cmake @@ -3,28 +3,21 @@ project(DeploymentTarget C) # using Xcode 7.1 SDK versions for deployment targets -if(SDK MATCHES iphone) - set(CMAKE_OSX_SYSROOT ${SDK}) - set(CMAKE_OSX_ARCHITECTURES "armv7;x86_64") +if(CMAKE_SYSTEM_NAME STREQUAL "iOS") set(CMAKE_OSX_DEPLOYMENT_TARGET "9.1") set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "NO") -elseif(SDK MATCHES watch) - set(CMAKE_OSX_SYSROOT ${SDK}) - set(CMAKE_OSX_ARCHITECTURES "armv7k;i386") +elseif(CMAKE_SYSTEM_NAME STREQUAL "watchOS") set(CMAKE_OSX_DEPLOYMENT_TARGET "2.0") set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "") set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "YES") -elseif(SDK MATCHES appletv) - set(CMAKE_OSX_SYSROOT ${SDK}) +elseif(CMAKE_SYSTEM_NAME STREQUAL "tvOS") set(CMAKE_OSX_DEPLOYMENT_TARGET "9.0") - set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64") set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "") set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "YES") else() - set(CMAKE_OSX_SYSROOT ${SDK}) set(CMAKE_OSX_DEPLOYMENT_TARGET "10.11") endif() diff --git a/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake b/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake index 6ea0c0c..4918f7c 100644 --- a/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake +++ b/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake @@ -1,9 +1,5 @@ include(RunCMake) -if(XCODE_VERSION VERSION_GREATER_EQUAL 9) - set(IOS_DEPLOYMENT_TARGET "-DCMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET=10") -endif() - run_cmake(ExplicitCMakeLists) run_cmake(XcodeFileType) @@ -65,8 +61,8 @@ if(NOT XCODE_VERSION VERSION_LESS 5) set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeInstallIOS-build) set(RunCMake_TEST_NO_CLEAN 1) set(RunCMake_TEST_OPTIONS - "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_BINARY_DIR}/ios_install" - "${IOS_DEPLOYMENT_TARGET}") + "-DCMAKE_SYSTEM_NAME=iOS" + "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_BINARY_DIR}/ios_install") file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") @@ -81,7 +77,7 @@ if(NOT XCODE_VERSION VERSION_LESS 5) set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesOSX-build) set(RunCMake_TEST_NO_CLEAN 1) set(RunCMake_TEST_OPTIONS - "-DTEST_IOS=OFF" + "-DCMAKE_SYSTEM_NAME=Darwin" "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install") file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") @@ -98,9 +94,8 @@ if(NOT XCODE_VERSION VERSION_LESS 5) set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesIOS-build) set(RunCMake_TEST_NO_CLEAN 1) set(RunCMake_TEST_OPTIONS - "-DTEST_IOS=ON" - "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install" - "${IOS_DEPLOYMENT_TARGET}") + "-DCMAKE_SYSTEM_NAME=iOS" + "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install") file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") @@ -118,7 +113,7 @@ if(NOT XCODE_VERSION VERSION_LESS 7) set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesWatchOS-build) set(RunCMake_TEST_NO_CLEAN 1) set(RunCMake_TEST_OPTIONS - "-DTEST_WATCHOS=ON" + "-DCMAKE_SYSTEM_NAME=watchOS" "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install") file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") @@ -137,7 +132,7 @@ if(NOT XCODE_VERSION VERSION_LESS 7.1) set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesTvOS-build) set(RunCMake_TEST_NO_CLEAN 1) set(RunCMake_TEST_OPTIONS - "-DTEST_TVOS=ON" + "-DCMAKE_SYSTEM_NAME=tvOS" "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install") file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") @@ -163,9 +158,9 @@ if(NOT XCODE_VERSION VERSION_LESS 6) set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeIOSInstallCombined-build) set(RunCMake_TEST_NO_CLEAN 1) set(RunCMake_TEST_OPTIONS - "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install" + "-DCMAKE_SYSTEM_NAME=iOS" "-DCMAKE_IOS_INSTALL_COMBINED=YES" - "${IOS_DEPLOYMENT_TARGET}") + "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install") file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") @@ -182,9 +177,9 @@ if(NOT XCODE_VERSION VERSION_LESS 6) set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeIOSInstallCombinedPrune-build) set(RunCMake_TEST_NO_CLEAN 1) set(RunCMake_TEST_OPTIONS - "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install" + "-DCMAKE_SYSTEM_NAME=iOS" "-DCMAKE_IOS_INSTALL_COMBINED=YES" - "${IOS_DEPLOYMENT_TARGET}") + "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install") file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") @@ -201,9 +196,9 @@ if(NOT XCODE_VERSION VERSION_LESS 6) set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeIOSInstallCombinedSingleArch-build) set(RunCMake_TEST_NO_CLEAN 1) set(RunCMake_TEST_OPTIONS - "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install" + "-DCMAKE_SYSTEM_NAME=iOS" "-DCMAKE_IOS_INSTALL_COMBINED=YES" - "${IOS_DEPLOYMENT_TARGET}") + "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install") file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") @@ -240,10 +235,10 @@ if(NOT XCODE_VERSION VERSION_LESS 5) endif() if(XCODE_VERSION VERSION_GREATER_EQUAL 8) - function(deploymeny_target_test SDK) + function(deployment_target_test SystemName SDK) set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/DeploymentTarget-${SDK}-build) set(RunCMake_TEST_NO_CLEAN 1) - set(RunCMake_TEST_OPTIONS "-DSDK=${SDK}") + set(RunCMake_TEST_OPTIONS "-DCMAKE_SYSTEM_NAME=${SystemName}" "-DCMAKE_OSX_SYSROOT=${SDK}") file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") @@ -252,9 +247,13 @@ if(XCODE_VERSION VERSION_GREATER_EQUAL 8) run_cmake_command(DeploymentTarget-${SDK} ${CMAKE_COMMAND} --build .) endfunction() - foreach(SDK macosx iphoneos iphonesimulator appletvos appletvsimulator watchos watchsimulator) - deploymeny_target_test(${SDK}) - endforeach() + deployment_target_test(Darwin macosx) + deployment_target_test(iOS iphoneos) + deployment_target_test(iOS iphonesimulator) + deployment_target_test(tvOS appletvos) + deployment_target_test(tvOS appletvsimulator) + deployment_target_test(watchOS watchos) + deployment_target_test(watchOS watchsimulator) endif() # Please add macOS-only tests above before the device-specific tests. diff --git a/Tests/RunCMake/XcodeProject/XcodeBundles.cmake b/Tests/RunCMake/XcodeProject/XcodeBundles.cmake index 5d19ee8..ef772ea 100644 --- a/Tests/RunCMake/XcodeProject/XcodeBundles.cmake +++ b/Tests/RunCMake/XcodeProject/XcodeBundles.cmake @@ -3,27 +3,12 @@ cmake_minimum_required(VERSION 3.3) enable_language(C) -# due to lack of toolchain file it might point to running macOS version -unset(CMAKE_OSX_DEPLOYMENT_TARGET CACHE) - -if(TEST_IOS) - set(CMAKE_OSX_SYSROOT iphoneos) - set(CMAKE_OSX_ARCHITECTURES "armv7") +if(CMAKE_SYSTEM_NAME STREQUAL "iOS") set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "NO") -endif(TEST_IOS) - -if(TEST_WATCHOS) - set(CMAKE_OSX_SYSROOT watchos) - set(CMAKE_OSX_ARCHITECTURES "armv7k") - set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") - set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "") - set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "YES") endif() -if(TEST_TVOS) - set(CMAKE_OSX_SYSROOT appletvos) - set(CMAKE_OSX_ARCHITECTURES "arm64") +if(CMAKE_SYSTEM_NAME STREQUAL "tvOS" OR CMAKE_SYSTEM_NAME STREQUAL "watchOS") set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "") set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "YES") @@ -41,7 +26,7 @@ add_dependencies(AppBundleTest AppBundle) # with custom extension -if (NOT TEST_IOS AND NOT TEST_WATCHOS AND NOT TEST_TVOS) +if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") add_executable(AppBundleExt MACOSX_BUNDLE main.m) set_target_properties(AppBundleExt PROPERTIES BUNDLE_EXTENSION "foo") install(TARGETS AppBundleExt BUNDLE DESTINATION FooExtension) @@ -55,7 +40,7 @@ endif() # Shared Framework (not supported for iOS on Xcode < 6) -if(NOT TEST_IOS OR NOT XCODE_VERSION VERSION_LESS 6) +if(NOT CMAKE_SYSTEM_NAME STREQUAL "iOS" OR NOT XCODE_VERSION VERSION_LESS 6) add_library(SharedFramework SHARED main.c) set_target_properties(SharedFramework PROPERTIES FRAMEWORK TRUE) diff --git a/Tests/RunCMake/XcodeProject/XcodeIOSInstallCombined.cmake b/Tests/RunCMake/XcodeProject/XcodeIOSInstallCombined.cmake index d7f3920..7f31d94 100644 --- a/Tests/RunCMake/XcodeProject/XcodeIOSInstallCombined.cmake +++ b/Tests/RunCMake/XcodeProject/XcodeIOSInstallCombined.cmake @@ -2,10 +2,10 @@ cmake_minimum_required(VERSION 3.3) project(IOSInstallCombined CXX) -# due to lack of toolchain file it might point to running macOS version -unset(CMAKE_OSX_DEPLOYMENT_TARGET CACHE) +if(XCODE_VERSION VERSION_GREATER_EQUAL 9) + set(CMAKE_OSX_DEPLOYMENT_TARGET 10) +endif() -set(CMAKE_OSX_SYSROOT iphoneos) set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT "dwarf") set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "NO") diff --git a/Tests/RunCMake/XcodeProject/XcodeIOSInstallCombinedPrune.cmake b/Tests/RunCMake/XcodeProject/XcodeIOSInstallCombinedPrune.cmake index 28ab883..ec11dbb 100644 --- a/Tests/RunCMake/XcodeProject/XcodeIOSInstallCombinedPrune.cmake +++ b/Tests/RunCMake/XcodeProject/XcodeIOSInstallCombinedPrune.cmake @@ -2,10 +2,10 @@ cmake_minimum_required(VERSION 3.3) project(XcodeIOSInstallCombinedPrune CXX) -# due to lack of toolchain file it might point to running macOS version -unset(CMAKE_OSX_DEPLOYMENT_TARGET CACHE) +if(XCODE_VERSION VERSION_GREATER_EQUAL 9) + set(CMAKE_OSX_DEPLOYMENT_TARGET 10) +endif() -set(CMAKE_OSX_SYSROOT iphoneos) set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT "dwarf") diff --git a/Tests/RunCMake/XcodeProject/XcodeIOSInstallCombinedSingleArch.cmake b/Tests/RunCMake/XcodeProject/XcodeIOSInstallCombinedSingleArch.cmake index 5e7961a..58e96b4 100644 --- a/Tests/RunCMake/XcodeProject/XcodeIOSInstallCombinedSingleArch.cmake +++ b/Tests/RunCMake/XcodeProject/XcodeIOSInstallCombinedSingleArch.cmake @@ -2,10 +2,10 @@ cmake_minimum_required(VERSION 3.3) project(XcodeIOSInstallCombinedSingleArch CXX) -# due to lack of toolchain file it might point to running macOS version -unset(CMAKE_OSX_DEPLOYMENT_TARGET CACHE) +if(XCODE_VERSION VERSION_GREATER_EQUAL 9) + set(CMAKE_OSX_DEPLOYMENT_TARGET 10) +endif() -set(CMAKE_OSX_SYSROOT iphoneos) set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT "dwarf") diff --git a/Tests/RunCMake/XcodeProject/XcodeInstallIOS.cmake b/Tests/RunCMake/XcodeProject/XcodeInstallIOS.cmake index a797410..ab31387 100644 --- a/Tests/RunCMake/XcodeProject/XcodeInstallIOS.cmake +++ b/Tests/RunCMake/XcodeProject/XcodeInstallIOS.cmake @@ -2,11 +2,8 @@ cmake_minimum_required(VERSION 2.8.5) project(XcodeInstallIOS) -set(CMAKE_OSX_SYSROOT iphoneos) set(XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "NO") -set(CMAKE_OSX_ARCHITECTURES "armv7;i386") - add_library(foo STATIC foo.cpp) install(TARGETS foo ARCHIVE DESTINATION lib) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=36cf44a7a3a8931c97790db6df61439d4dd86ea3 commit 36cf44a7a3a8931c97790db6df61439d4dd86ea3 Author: Brad King AuthorDate: Mon Feb 4 08:58:56 2019 -0500 Commit: Brad King CommitDate: Mon Feb 4 09:02:47 2019 -0500 Tests: Isolate RunCMake.XcodeProject per-device cases from host arch Run all host cases before per-device cases. Do not expose the host `CMAKE_OSX_ARCHITECTURES` environment value to the per-device tests. diff --git a/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake b/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake index fb04005..6ea0c0c 100644 --- a/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake +++ b/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake @@ -25,6 +25,40 @@ run_cmake(PerConfigPerSourceOptions) run_cmake(PerConfigPerSourceDefinitions) run_cmake(PerConfigPerSourceIncludeDirs) +function(XcodeSchemaGeneration) + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeSchemaGeneration-build) + set(RunCMake_TEST_NO_CLEAN 1) + set(RunCMake_TEST_OPTIONS "-DCMAKE_XCODE_GENERATE_SCHEME=ON") + + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + + run_cmake(XcodeSchemaGeneration) + run_cmake_command(XcodeSchemaGeneration-build xcodebuild -scheme foo build) +endfunction() + +if(NOT XCODE_VERSION VERSION_LESS 7) + XcodeSchemaGeneration() + run_cmake(XcodeSchemaProperty) +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() + +# Isolate device tests from host architecture selection. +unset(ENV{CMAKE_OSX_ARCHITECTURES}) + # Use a single build tree for a few tests without cleaning. if(NOT XCODE_VERSION VERSION_LESS 5) @@ -205,23 +239,6 @@ if(NOT XCODE_VERSION VERSION_LESS 5) unset(RunCMake_TEST_OPTIONS) endif() -function(XcodeSchemaGeneration) - set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeSchemaGeneration-build) - set(RunCMake_TEST_NO_CLEAN 1) - set(RunCMake_TEST_OPTIONS "-DCMAKE_XCODE_GENERATE_SCHEME=ON") - - file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") - file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") - - run_cmake(XcodeSchemaGeneration) - run_cmake_command(XcodeSchemaGeneration-build xcodebuild -scheme foo build) -endfunction() - -if(NOT XCODE_VERSION VERSION_LESS 7) - XcodeSchemaGeneration() - run_cmake(XcodeSchemaProperty) -endif() - if(XCODE_VERSION VERSION_GREATER_EQUAL 8) function(deploymeny_target_test SDK) set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/DeploymentTarget-${SDK}-build) @@ -240,16 +257,4 @@ if(XCODE_VERSION VERSION_GREATER_EQUAL 8) 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() +# Please add macOS-only tests above before the device-specific tests. ----------------------------------------------------------------------- Summary of changes: Help/manual/cmake-toolchains.7.rst | 71 +++++++++++++ Help/release/dev/iphone-friendly-cmake.rst | 5 + Modules/CMakeDetermineCCompiler.cmake | 2 +- Modules/CMakeDetermineCXXCompiler.cmake | 2 +- Modules/CMakeDetermineCompilerId.cmake | 17 +--- Modules/CMakeTestCCompiler.cmake | 8 ++ Modules/CMakeTestCXXCompiler.cmake | 8 ++ Modules/CompilerId/Xcode-3.pbxproj.in | 3 +- Modules/Platform/Darwin-Initialize.cmake | 8 +- Modules/Platform/Darwin.cmake | 8 ++ Modules/Platform/iOS-Determine-CXX.cmake | 1 + Modules/Platform/iOS-Initialize.cmake | 7 ++ Modules/Platform/iOS.cmake | 1 + Modules/Platform/tvOS-Determine-CXX.cmake | 1 + Modules/Platform/tvOS-Initialize.cmake | 7 ++ Modules/Platform/tvOS.cmake | 1 + Modules/Platform/watchOS-Determine-CXX.cmake | 1 + Modules/Platform/watchOS-Initialize.cmake | 7 ++ Modules/Platform/watchOS.cmake | 1 + Source/cmGlobalVisualStudioGenerator.cxx | 31 +++--- Tests/Fortran/CMakeLists.txt | 5 + Tests/RunCMake/XcodeProject/DeploymentTarget.cmake | 13 +-- Tests/RunCMake/XcodeProject/RunCMakeTest.cmake | 110 +++++++++++---------- Tests/RunCMake/XcodeProject/XcodeBundles.cmake | 23 +---- .../XcodeProject/XcodeIOSInstallCombined.cmake | 6 +- .../XcodeIOSInstallCombinedPrune.cmake | 6 +- .../XcodeIOSInstallCombinedSingleArch.cmake | 6 +- Tests/RunCMake/XcodeProject/XcodeInstallIOS.cmake | 3 - 28 files changed, 232 insertions(+), 130 deletions(-) create mode 100644 Help/release/dev/iphone-friendly-cmake.rst create mode 100644 Modules/Platform/iOS-Determine-CXX.cmake create mode 100644 Modules/Platform/iOS-Initialize.cmake create mode 100644 Modules/Platform/iOS.cmake create mode 100644 Modules/Platform/tvOS-Determine-CXX.cmake create mode 100644 Modules/Platform/tvOS-Initialize.cmake create mode 100644 Modules/Platform/tvOS.cmake create mode 100644 Modules/Platform/watchOS-Determine-CXX.cmake create mode 100644 Modules/Platform/watchOS-Initialize.cmake create mode 100644 Modules/Platform/watchOS.cmake hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 5 07:53:06 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 5 Feb 2019 07:53:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.13.4-1291-gf47d980 Message-ID: <20190205125306.F12781282AF@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 f47d980f73a065485bb7090a850f2ac4044c2dfd (commit) via ab01ce91eee2ff8b00d56a5044a54404d4d3f49c (commit) via 9ddbf4c6e65b17b76dd6ccca72c5b3a0b7cbb1ad (commit) via 8372c054729984a76e3e619b4c28865006d905d0 (commit) via b6cf08626785fc6401220928be8ab37b89bc669c (commit) via ed0fa784ebb2b7e4d6db8b40d16f84f34692890a (commit) from c6d679f0d904b19b3be411b399b5904a5da7ea78 (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=f47d980f73a065485bb7090a850f2ac4044c2dfd commit f47d980f73a065485bb7090a850f2ac4044c2dfd Merge: ab01ce9 9ddbf4c Author: Brad King AuthorDate: Tue Feb 5 12:47:29 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 5 07:49:07 2019 -0500 Merge topic 'update-kwsys' 9ddbf4c6e6 Merge branch 'upstream-KWSys' into update-kwsys 8372c05472 KWSys 2019-02-05 (65802a20) Acked-by: Kitware Robot Merge-request: !2918 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ab01ce91eee2ff8b00d56a5044a54404d4d3f49c commit ab01ce91eee2ff8b00d56a5044a54404d4d3f49c Merge: c6d679f b6cf086 Author: Brad King AuthorDate: Tue Feb 5 12:46:51 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 5 07:47:14 2019 -0500 Merge topic 'autogen_single_all_sources_iteration' b6cf086267 Autogen: Iterate over makefile sources only once ed0fa784eb cmSystemTools: Let `GetFileFormat` accept a `std::stding const&` Acked-by: Kitware Robot Merge-request: !2909 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9ddbf4c6e65b17b76dd6ccca72c5b3a0b7cbb1ad commit 9ddbf4c6e65b17b76dd6ccca72c5b3a0b7cbb1ad Merge: 762a41f 8372c05 Author: Brad King AuthorDate: Tue Feb 5 07:20:34 2019 -0500 Commit: Brad King CommitDate: Tue Feb 5 07:20:34 2019 -0500 Merge branch 'upstream-KWSys' into update-kwsys * upstream-KWSys: KWSys 2019-02-05 (65802a20) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8372c054729984a76e3e619b4c28865006d905d0 commit 8372c054729984a76e3e619b4c28865006d905d0 Author: KWSys Upstream AuthorDate: Tue Feb 5 07:19:44 2019 -0500 Commit: Brad King CommitDate: Tue Feb 5 07:20:29 2019 -0500 KWSys 2019-02-05 (65802a20) Code extracted from: https://gitlab.kitware.com/utils/kwsys.git at commit 65802a20ec4b9a774518151c3f8772e082163601 (master). Upstream Shortlog ----------------- Nicolae Vartolomei (1): d1536b02 macOS: Better approximation for AvailablePhysicalMemory diff --git a/SystemInformation.cxx b/SystemInformation.cxx index 6c12355..f323efc 100644 --- a/SystemInformation.cxx +++ b/SystemInformation.cxx @@ -4424,7 +4424,8 @@ bool SystemInformationImplementation::ParseSysCtl() &count) == KERN_SUCCESS) { len = sizeof(value); err = sysctlbyname("hw.pagesize", &value, &len, KWSYS_NULLPTR, 0); - int64_t available_memory = vmstat.free_count * value; + int64_t available_memory = + (vmstat.free_count + vmstat.inactive_count) * value; this->AvailablePhysicalMemory = static_cast(available_memory / 1048576); } https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b6cf08626785fc6401220928be8ab37b89bc669c commit b6cf08626785fc6401220928be8ab37b89bc669c Author: Sebastian Holtermann AuthorDate: Sat Feb 2 12:44:05 2019 +0100 Commit: Sebastian Holtermann CommitDate: Sat Feb 2 18:42:08 2019 +0100 Autogen: Iterate over makefile sources only once In QtAutoGen we used to iterate over all makefile source two times to extract file parameters for moc and uic respectively. This patch merges both iterations into one loop. This makes the code easier to understand and likely faster to execute as well. diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx index 1d64247..a96d574 100644 --- a/Source/cmQtAutoGenInitializer.cxx +++ b/Source/cmQtAutoGenInitializer.cxx @@ -616,40 +616,6 @@ bool cmQtAutoGenInitializer::InitUic() } } } - // .ui files skip and options - { - 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->Uic.Skip.insert(absFile); - } - // Check if the .ui file has uic options - std::string const uicOpts = sf->GetSafeProperty("AUTOUIC_OPTIONS"); - if (!uicOpts.empty()) { - // Check if file isn't skipped - if (this->Uic.Skip.count(absFile) == 0) { - this->Uic.FileFiles.push_back(absFile); - std::vector optsVec; - cmSystemTools::ExpandListArgument(uicOpts, optsVec); - this->Uic.FileOptions.push_back(std::move(optsVec)); - } - } - } - } - } // Uic executable return GetUicExecutable(); @@ -664,18 +630,30 @@ bool cmQtAutoGenInitializer::InitScanFiles() { cmMakefile* makefile = this->Target->Target->GetMakefile(); + // String constants + std::string const SKIP_AUTOGEN_str = "SKIP_AUTOGEN"; + std::string const SKIP_AUTOMOC_str = "SKIP_AUTOMOC"; + std::string const SKIP_AUTOUIC_str = "SKIP_AUTOUIC"; + // Scan through target files { - std::string const qrcExt = "qrc"; + // String constants + std::string const qrc_str = "qrc"; + std::string const SKIP_AUTORCC_str = "SKIP_AUTORCC"; + std::string const AUTORCC_OPTIONS_str = "AUTORCC_OPTIONS"; + + // Scan through target files std::vector srcFiles; this->Target->GetConfigCommonSourceFiles(srcFiles); for (cmSourceFile* sf : srcFiles) { - if (sf->GetPropertyAsBool("SKIP_AUTOGEN")) { + if (sf->GetPropertyAsBool(SKIP_AUTOGEN_str)) { continue; } + // sf->GetExtension() is only valid after sf->GetFullPath() ... std::string const& fPath = sf->GetFullPath(); std::string const& ext = sf->GetExtension(); + // Register generated files that will be scanned by moc or uic if (this->Moc.Enabled || this->Uic.Enabled) { cmSystemTools::FileFormat const fileType = @@ -683,8 +661,10 @@ bool cmQtAutoGenInitializer::InitScanFiles() if ((fileType == cmSystemTools::CXX_FILE_FORMAT) || (fileType == cmSystemTools::HEADER_FILE_FORMAT)) { std::string const absPath = cmSystemTools::GetRealPath(fPath); - if ((this->Moc.Enabled && !sf->GetPropertyAsBool("SKIP_AUTOMOC")) || - (this->Uic.Enabled && !sf->GetPropertyAsBool("SKIP_AUTOUIC"))) { + if ((this->Moc.Enabled && + !sf->GetPropertyAsBool(SKIP_AUTOMOC_str)) || + (this->Uic.Enabled && + !sf->GetPropertyAsBool(SKIP_AUTOUIC_str))) { // Register source const bool generated = sf->GetIsGenerated(); if (fileType == cmSystemTools::HEADER_FILE_FORMAT) { @@ -704,10 +684,9 @@ bool cmQtAutoGenInitializer::InitScanFiles() } } // Register rcc enabled files - if (this->Rcc.Enabled && (ext == qrcExt) && - !sf->GetPropertyAsBool("SKIP_AUTORCC")) { - // Register qrc file - { + if (this->Rcc.Enabled) { + if ((ext == qrc_str) && !sf->GetPropertyAsBool(SKIP_AUTORCC_str)) { + // Register qrc file Qrc qrc; qrc.QrcFile = cmSystemTools::GetRealPath(fPath); qrc.QrcName = @@ -715,7 +694,7 @@ bool cmQtAutoGenInitializer::InitScanFiles() qrc.Generated = sf->GetIsGenerated(); // RCC options { - std::string const opts = sf->GetSafeProperty("AUTORCC_OPTIONS"); + std::string const opts = sf->GetSafeProperty(AUTORCC_OPTIONS_str); if (!opts.empty()) { cmSystemTools::ExpandListArgument(opts, qrc.Options); } @@ -731,43 +710,65 @@ bool cmQtAutoGenInitializer::InitScanFiles() // mocs_compilation.cpp source acknowledged by this target. this->Target->ClearSourcesCache(); + // Scan through all source files in the makefile to extract moc and uic + // parameters. Historically we support non target source file parameters. + // The reason is that their file names might be discovered from source files + // at generation time. if (this->Moc.Enabled || this->Uic.Enabled) { - // Read skip files from makefile sources - { + // String constants + std::string const ui_str = "ui"; + std::string const AUTOUIC_OPTIONS_str = "AUTOUIC_OPTIONS"; + + 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 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& fullPath = sf->GetFullPath(&pathError); + if (!pathError.empty() || fullPath.empty()) { + continue; + } + + // Check file type + auto const fileType = cmSystemTools::GetFileFormat(sf->GetExtension()); + bool const isSource = (fileType == cmSystemTools::CXX_FILE_FORMAT) || + (fileType == cmSystemTools::HEADER_FILE_FORMAT); + bool const isUi = (this->Moc.Enabled && sf->GetExtension() == ui_str); + + // Process only certain file types + if (isSource || isUi) { + std::string const absFile = cmSystemTools::GetRealPath(fullPath); + // Acquire file properties + bool const skipAUTOGEN = sf->GetPropertyAsBool(SKIP_AUTOGEN_str); + bool const skipMoc = (this->Moc.Enabled && isSource) && + (skipAUTOGEN || sf->GetPropertyAsBool(SKIP_AUTOMOC_str)); + bool const skipUic = this->Uic.Enabled && + (skipAUTOGEN || sf->GetPropertyAsBool(SKIP_AUTOUIC_str)); + + // Register moc and uic skipped file + if (skipMoc) { + this->Moc.Skip.insert(absFile); } - cmSystemTools::FileFormat const fileType = - cmSystemTools::GetFileFormat(sf->GetExtension()); - if (!(fileType == cmSystemTools::CXX_FILE_FORMAT) && - !(fileType == cmSystemTools::HEADER_FILE_FORMAT)) { - continue; + if (skipUic) { + this->Uic.Skip.insert(absFile); } - const bool skipAll = sf->GetPropertyAsBool("SKIP_AUTOGEN"); - const bool mocSkip = this->Moc.Enabled && - (skipAll || sf->GetPropertyAsBool("SKIP_AUTOMOC")); - const bool uicSkip = this->Uic.Enabled && - (skipAll || sf->GetPropertyAsBool("SKIP_AUTOUIC")); - if (mocSkip || uicSkip) { - std::string const absFile = cmSystemTools::GetRealPath(fPath); - if (mocSkip) { - this->Moc.Skip.insert(absFile); - } - if (uicSkip) { - this->Uic.Skip.insert(absFile); + + // Check if the .ui file has uic options + if (isUi && !skipUic) { + std::string const uicOpts = sf->GetSafeProperty(AUTOUIC_OPTIONS_str); + if (!uicOpts.empty()) { + this->Uic.FileFiles.push_back(absFile); + std::vector optsVec; + cmSystemTools::ExpandListArgument(uicOpts, optsVec); + this->Uic.FileOptions.push_back(std::move(optsVec)); } } } } + } - // Process GENERATED sources and headers + // Process GENERATED sources and headers + if (this->Moc.Enabled || this->Uic.Enabled) { if (!this->AutogenTarget.SourcesGenerated.empty() || !this->AutogenTarget.HeadersGenerated.empty()) { // Check status of policy CMP0071 @@ -843,13 +844,14 @@ bool cmQtAutoGenInitializer::InitScanFiles() } } } - // Sort headers and sources - if (this->Moc.Enabled || this->Uic.Enabled) { - std::sort(this->AutogenTarget.Headers.begin(), - this->AutogenTarget.Headers.end()); - std::sort(this->AutogenTarget.Sources.begin(), - this->AutogenTarget.Sources.end()); - } + } + + // Sort headers and sources + if (this->Moc.Enabled || this->Uic.Enabled) { + std::sort(this->AutogenTarget.Headers.begin(), + this->AutogenTarget.Headers.end()); + std::sort(this->AutogenTarget.Sources.begin(), + this->AutogenTarget.Sources.end()); } // Process qrc files https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ed0fa784ebb2b7e4d6db8b40d16f84f34692890a commit ed0fa784ebb2b7e4d6db8b40d16f84f34692890a Author: Sebastian Holtermann AuthorDate: Sat Feb 2 11:29:22 2019 +0100 Commit: Sebastian Holtermann CommitDate: Sat Feb 2 18:42:08 2019 +0100 cmSystemTools: Let `GetFileFormat` accept a `std::stding const&` The `const char*` used formerly was converted to a `std::string` internally anyway. diff --git a/Source/cmExtraCodeLiteGenerator.cxx b/Source/cmExtraCodeLiteGenerator.cxx index 2fa593c..0773edc 100644 --- a/Source/cmExtraCodeLiteGenerator.cxx +++ b/Source/cmExtraCodeLiteGenerator.cxx @@ -223,7 +223,7 @@ std::string cmExtraCodeLiteGenerator::CollectSourceFiles( for (cmSourceFile* s : sources) { // check whether it is a source or a include file // then put it accordingly into one of the two containers - switch (cmSystemTools::GetFileFormat(s->GetExtension().c_str())) { + switch (cmSystemTools::GetFileFormat(s->GetExtension())) { case cmSystemTools::C_FILE_FORMAT: case cmSystemTools::CXX_FILE_FORMAT: case cmSystemTools::CUDA_FILE_FORMAT: diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx index 41d29e8..1d64247 100644 --- a/Source/cmQtAutoGenInitializer.cxx +++ b/Source/cmQtAutoGenInitializer.cxx @@ -679,7 +679,7 @@ bool cmQtAutoGenInitializer::InitScanFiles() // Register generated files that will be scanned by moc or uic if (this->Moc.Enabled || this->Uic.Enabled) { cmSystemTools::FileFormat const fileType = - cmSystemTools::GetFileFormat(ext.c_str()); + cmSystemTools::GetFileFormat(ext); if ((fileType == cmSystemTools::CXX_FILE_FORMAT) || (fileType == cmSystemTools::HEADER_FILE_FORMAT)) { std::string const absPath = cmSystemTools::GetRealPath(fPath); @@ -745,7 +745,7 @@ bool cmQtAutoGenInitializer::InitScanFiles() continue; } cmSystemTools::FileFormat const fileType = - cmSystemTools::GetFileFormat(sf->GetExtension().c_str()); + cmSystemTools::GetFileFormat(sf->GetExtension()); if (!(fileType == cmSystemTools::CXX_FILE_FORMAT) && !(fileType == cmSystemTools::HEADER_FILE_FORMAT)) { continue; diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 5d8c079..1d20e2f 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -1330,13 +1330,11 @@ bool cmSystemTools::SimpleGlob(const std::string& glob, return res; } -cmSystemTools::FileFormat cmSystemTools::GetFileFormat(const char* cext) +cmSystemTools::FileFormat cmSystemTools::GetFileFormat(std::string const& ext) { - if (!cext || *cext == 0) { + if (ext.empty()) { return cmSystemTools::NO_FILE_FORMAT; } - // std::string ext = cmSystemTools::LowerCase(cext); - std::string ext = cext; if (ext == "c" || ext == ".c" || ext == "m" || ext == ".m") { return cmSystemTools::C_FILE_FORMAT; } diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index fcb2cce..0f92fe2 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -334,7 +334,7 @@ public: /** * Determine the file type based on the extension */ - static FileFormat GetFileFormat(const char* ext); + static FileFormat GetFileFormat(std::string const& ext); /** Windows if this is true, the CreateProcess in RunCommand will * not show new console windows when running programs. ----------------------------------------------------------------------- Summary of changes: Source/cmExtraCodeLiteGenerator.cxx | 2 +- Source/cmQtAutoGenInitializer.cxx | 160 ++++++++++++++++++------------------ Source/cmSystemTools.cxx | 6 +- Source/cmSystemTools.h | 2 +- Source/kwsys/SystemInformation.cxx | 3 +- 5 files changed, 87 insertions(+), 86 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 6 00:03:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 6 Feb 2019 00:03:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.13.4-1292-g3a2387b Message-ID: <20190206050305.0308E1186B9@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 3a2387bce79a6c8ea79f64e80079accbbd8696b2 (commit) from f47d980f73a065485bb7090a850f2ac4044c2dfd (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=3a2387bce79a6c8ea79f64e80079accbbd8696b2 commit 3a2387bce79a6c8ea79f64e80079accbbd8696b2 Author: Kitware Robot AuthorDate: Wed Feb 6 00:01:07 2019 -0500 Commit: Kitware Robot CommitDate: Wed Feb 6 00:01:07 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 39a5b3d..324d825 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 13) -set(CMake_VERSION_PATCH 20190205) +set(CMake_VERSION_PATCH 20190206) #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 6 06:53:12 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 6 Feb 2019 06:53:12 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.13.4-1297-gd672950 Message-ID: <20190206115313.6E60D111A59@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 d6729505cbc049bda35ec571a00787ac4ce62736 (commit) via 4400ac07f7bb7da1d85244d1b5ddc2dfd75273f1 (commit) via 850ef90a66a8f81369b3d11c74398ccaefbe5324 (commit) via a28caabf453ab41851b75a40a2e49706439f9478 (commit) via 1f802295f2e42fd38477f22d7275ebe166a48f10 (commit) from 3a2387bce79a6c8ea79f64e80079accbbd8696b2 (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=d6729505cbc049bda35ec571a00787ac4ce62736 commit d6729505cbc049bda35ec571a00787ac4ce62736 Merge: 4400ac0 850ef90 Author: Brad King AuthorDate: Wed Feb 6 11:51:22 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 6 06:51:30 2019 -0500 Merge topic 'relax_CUDA_RESOLVE_DEVICE_SYMBOLS_constraints' 850ef90a66 CUDA: Honor CUDA_RESOLVE_DEVICE_SYMBOLS for more target types Acked-by: Kitware Robot Acked-by: Robert Maynard Merge-request: !2900 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4400ac07f7bb7da1d85244d1b5ddc2dfd75273f1 commit 4400ac07f7bb7da1d85244d1b5ddc2dfd75273f1 Merge: 3a2387b a28caab Author: Brad King AuthorDate: Wed Feb 6 11:50:27 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 6 06:50:36 2019 -0500 Merge topic 'autogen_same_name_different_extension' a28caabf45 Autogen: AUTOMOC support for files with the same name but different extensions 1f802295f2 Autogen: Extend the SameName test with same name but different extension files Acked-by: Kitware Robot Merge-request: !2920 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=850ef90a66a8f81369b3d11c74398ccaefbe5324 commit 850ef90a66a8f81369b3d11c74398ccaefbe5324 Author: Robert Maynard AuthorDate: Thu Jan 31 17:34:41 2019 -0500 Commit: Brad King CommitDate: Tue Feb 5 11:09:48 2019 -0500 CUDA: Honor CUDA_RESOLVE_DEVICE_SYMBOLS for more target types `CUDA_RESOLVE_DEVICE_SYMBOLS` can be used with shared, module, and executable target types. This relaxation is to allow for better interoperability with linkers that automatically do CUDA device symbol resolution and have no way to disable it. diff --git a/Help/prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS.rst b/Help/prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS.rst index 127d79f..ef74ae2 100644 --- a/Help/prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS.rst +++ b/Help/prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS.rst @@ -1,12 +1,18 @@ CUDA_RESOLVE_DEVICE_SYMBOLS --------------------------- -CUDA only: Enables device linking for the specific static library target +CUDA only: Enables device linking for the specific library target -If set this will enable device linking on this static library target. Normally +If set this will enable device linking on the library target. Normally device linking is deferred until a shared library or executable is generated, allowing for multiple static libraries to resolve device symbols at the same -time. +time when they are used by a shared library or executable. + +By default static library targets have this property is disabled, +while shared, module, and executable targets have this property enabled. + +Note that device linking is not supported for :ref:`Object Libraries`. + For instance: diff --git a/Help/release/dev/CUDA_RESOLVE_DEVICE_SYMBOLS.rst b/Help/release/dev/CUDA_RESOLVE_DEVICE_SYMBOLS.rst new file mode 100644 index 0000000..32db233 --- /dev/null +++ b/Help/release/dev/CUDA_RESOLVE_DEVICE_SYMBOLS.rst @@ -0,0 +1,6 @@ +CUDA_RESOLVE_DEVICE_SYMBOLS +--------------------------- + +* The :prop_tgt:`CUDA_RESOLVE_DEVICE_SYMBOLS` target property is now supported + on shared library, module library, and executable targets. Previously it was + only honored on static libraries. diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx index e576b5f..e8ae5ae 100644 --- a/Source/cmMakefileExecutableTargetGenerator.cxx +++ b/Source/cmMakefileExecutableTargetGenerator.cxx @@ -95,7 +95,13 @@ void cmMakefileExecutableTargetGenerator::WriteDeviceExecutableRule( const bool hasCUDA = (std::find(closure->Languages.begin(), closure->Languages.end(), cuda_lang) != closure->Languages.end()); - if (!hasCUDA) { + + bool doDeviceLinking = true; + if (const char* resolveDeviceSymbols = + this->GeneratorTarget->GetProperty("CUDA_RESOLVE_DEVICE_SYMBOLS")) { + doDeviceLinking = cmSystemTools::IsOn(resolveDeviceSymbols); + } + if (!hasCUDA || !doDeviceLinking) { return; } diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 72181ab..5a1ef4e 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -133,9 +133,12 @@ void cmMakefileLibraryTargetGenerator::WriteStaticLibraryRules() (std::find(closure->Languages.begin(), closure->Languages.end(), cuda_lang) != closure->Languages.end()); - const bool resolveDeviceSymbols = - this->GeneratorTarget->GetPropertyAsBool("CUDA_RESOLVE_DEVICE_SYMBOLS"); - if (hasCUDA && resolveDeviceSymbols) { + bool doDeviceLinking = false; + if (const char* resolveDeviceSymbols = + this->GeneratorTarget->GetProperty("CUDA_RESOLVE_DEVICE_SYMBOLS")) { + doDeviceLinking = cmSystemTools::IsOn(resolveDeviceSymbols); + } + if (hasCUDA && doDeviceLinking) { std::string linkRuleVar = "CMAKE_CUDA_DEVICE_LINK_LIBRARY"; this->WriteDeviceLibraryRules(linkRuleVar, false); } @@ -168,7 +171,12 @@ void cmMakefileLibraryTargetGenerator::WriteSharedLibraryRules(bool relink) const bool hasCUDA = (std::find(closure->Languages.begin(), closure->Languages.end(), cuda_lang) != closure->Languages.end()); - if (hasCUDA) { + bool doDeviceLinking = true; + if (const char* resolveDeviceSymbols = + this->GeneratorTarget->GetProperty("CUDA_RESOLVE_DEVICE_SYMBOLS")) { + doDeviceLinking = cmSystemTools::IsOn(resolveDeviceSymbols); + } + if (hasCUDA && doDeviceLinking) { std::string linkRuleVar = "CMAKE_CUDA_DEVICE_LINK_LIBRARY"; this->WriteDeviceLibraryRules(linkRuleVar, relink); } @@ -209,7 +217,12 @@ void cmMakefileLibraryTargetGenerator::WriteModuleLibraryRules(bool relink) const bool hasCUDA = (std::find(closure->Languages.begin(), closure->Languages.end(), cuda_lang) != closure->Languages.end()); - if (hasCUDA) { + bool doDeviceLinking = true; + if (const char* resolveDeviceSymbols = + this->GeneratorTarget->GetProperty("CUDA_RESOLVE_DEVICE_SYMBOLS")) { + doDeviceLinking = cmSystemTools::IsOn(resolveDeviceSymbols); + } + if (hasCUDA && doDeviceLinking) { std::string linkRuleVar = "CMAKE_CUDA_DEVICE_LINK_LIBRARY"; this->WriteDeviceLibraryRules(linkRuleVar, relink); } diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index 0d05782..cbc0103 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -566,22 +566,23 @@ void cmNinjaNormalTargetGenerator::WriteDeviceLinkStatement() (std::find(closure->Languages.begin(), closure->Languages.end(), cuda_lang) != closure->Languages.end()); - bool shouldHaveDeviceLinking = false; - switch (genTarget.GetType()) { - case cmStateEnums::SHARED_LIBRARY: - case cmStateEnums::MODULE_LIBRARY: - case cmStateEnums::EXECUTABLE: - shouldHaveDeviceLinking = true; - break; - case cmStateEnums::STATIC_LIBRARY: - shouldHaveDeviceLinking = - genTarget.GetPropertyAsBool("CUDA_RESOLVE_DEVICE_SYMBOLS"); - break; - default: - break; + bool doDeviceLinking = false; + if (const char* resolveDeviceSymbols = + genTarget.GetProperty("CUDA_RESOLVE_DEVICE_SYMBOLS")) { + doDeviceLinking = cmSystemTools::IsOn(resolveDeviceSymbols); + } else { + switch (genTarget.GetType()) { + case cmStateEnums::SHARED_LIBRARY: + case cmStateEnums::MODULE_LIBRARY: + case cmStateEnums::EXECUTABLE: + doDeviceLinking = true; + break; + default: + break; + } } - if (!(shouldHaveDeviceLinking && hasCUDA)) { + if (!(doDeviceLinking && hasCUDA)) { return; } diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 178e717..8e08417 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -2998,18 +2998,19 @@ bool cmVisualStudio10TargetGenerator::ComputeCudaLinkOptions( // Determine if we need to do a device link bool doDeviceLinking = false; - switch (this->GeneratorTarget->GetType()) { - case cmStateEnums::SHARED_LIBRARY: - case cmStateEnums::MODULE_LIBRARY: - case cmStateEnums::EXECUTABLE: - doDeviceLinking = true; - break; - case cmStateEnums::STATIC_LIBRARY: - doDeviceLinking = this->GeneratorTarget->GetPropertyAsBool( - "CUDA_RESOLVE_DEVICE_SYMBOLS"); - break; - default: - break; + if (const char* resolveDeviceSymbols = + this->GeneratorTarget->GetProperty("CUDA_RESOLVE_DEVICE_SYMBOLS")) { + doDeviceLinking = cmSystemTools::IsOn(resolveDeviceSymbols); + } else { + switch (this->GeneratorTarget->GetType()) { + case cmStateEnums::SHARED_LIBRARY: + case cmStateEnums::MODULE_LIBRARY: + case cmStateEnums::EXECUTABLE: + doDeviceLinking = true; + break; + default: + break; + } } cudaLinkOptions.AddFlag("PerformDeviceLink", diff --git a/Tests/CudaOnly/CMakeLists.txt b/Tests/CudaOnly/CMakeLists.txt index 9c4f86a..f1fd344 100644 --- a/Tests/CudaOnly/CMakeLists.txt +++ b/Tests/CudaOnly/CMakeLists.txt @@ -7,6 +7,17 @@ ADD_TEST_MACRO(CudaOnly.ResolveDeviceSymbols CudaOnlyResolveDeviceSymbols) ADD_TEST_MACRO(CudaOnly.SeparateCompilation CudaOnlySeparateCompilation) ADD_TEST_MACRO(CudaOnly.WithDefs CudaOnlyWithDefs) +add_test(NAME CudaOnly.DontResolveDeviceSymbols COMMAND + ${CMAKE_CTEST_COMMAND} -C $ + --build-and-test + "${CMAKE_CURRENT_SOURCE_DIR}/DontResolveDeviceSymbols/" + "${CMAKE_CURRENT_BINARY_DIR}/DontResolveDeviceSymbols/" + ${build_generator_args} + --build-project DontResolveDeviceSymbols + --build-options ${build_options} + --test-command ${CMAKE_CTEST_COMMAND} -V -C $ + ) + if(MSVC) ADD_TEST_MACRO(CudaOnly.PDB CudaOnlyPDB) endif() diff --git a/Tests/CudaOnly/DontResolveDeviceSymbols/CMakeLists.txt b/Tests/CudaOnly/DontResolveDeviceSymbols/CMakeLists.txt new file mode 100644 index 0000000..6190089 --- /dev/null +++ b/Tests/CudaOnly/DontResolveDeviceSymbols/CMakeLists.txt @@ -0,0 +1,50 @@ +cmake_minimum_required(VERSION 3.13) +project (DontResolveDeviceSymbols CUDA) + +# Find nm and dumpbin +if(CMAKE_NM) + set(dump_command ${CMAKE_NM}) + set(dump_args --defined-only) + set(symbol_name cudaRegisterLinkedBinary) +else() + include(GetPrerequisites) + message(STATUS "calling list_prerequisites to find dumpbin") + list_prerequisites("${CMAKE_COMMAND}" 0 0 0) + if(gp_dumpbin) + set(dump_command ${gp_dumpbin}) + set(dump_args /SYMBOLS) + set(symbol_name nv_fatb) + endif() +endif() + + +#Goal for this example: +# Build a static library that defines multiple methods and kernels that +# use each other. +# Don't resolve the device symbols in the static library +# Don't resolve the device symbols in the executable library +# Verify that we can't use those device symbols from anything +string(APPEND CMAKE_CUDA_FLAGS " -gencode arch=compute_30,code=[compute_30] -gencode arch=compute_50,code=\\\"compute_50\\\"") +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CUDA_STANDARD 11) + +add_library(CUDANoDeviceResolve SHARED file1.cu) +set_target_properties(CUDANoDeviceResolve + PROPERTIES + CUDA_SEPARABLE_COMPILATION ON + CUDA_RESOLVE_DEVICE_SYMBOLS OFF + POSITION_INDEPENDENT_CODE ON) +if(MSVC) + target_link_options(CUDANoDeviceResolve PRIVATE "/FORCE:UNRESOLVED") +endif() + +if(dump_command) +add_custom_command(TARGET CUDANoDeviceResolve POST_BUILD + COMMAND ${CMAKE_COMMAND} + -DDUMP_COMMAND=${dump_command} + -DDUMP_ARGS=${dump_args} + -DSYMBOL_NAME=${symbol_name} + -DTEST_LIBRARY_PATH=$ + -P ${CMAKE_CURRENT_SOURCE_DIR}/verify.cmake + ) +endif() diff --git a/Tests/CudaOnly/DontResolveDeviceSymbols/file1.cu b/Tests/CudaOnly/DontResolveDeviceSymbols/file1.cu new file mode 100644 index 0000000..3924f67 --- /dev/null +++ b/Tests/CudaOnly/DontResolveDeviceSymbols/file1.cu @@ -0,0 +1,69 @@ + +#include + +static __global__ void file1_kernel(int in, int* out) +{ + *out = in * in; +} + +int choose_cuda_device() +{ + int nDevices = 0; + cudaError_t err = cudaGetDeviceCount(&nDevices); + if (err != cudaSuccess) { + std::cerr << "Failed to retrieve the number of CUDA enabled devices" + << std::endl; + return 1; + } + for (int i = 0; i < nDevices; ++i) { + cudaDeviceProp prop; + cudaError_t err = cudaGetDeviceProperties(&prop, i); + if (err != cudaSuccess) { + std::cerr << "Could not retrieve properties from CUDA device " << i + << std::endl; + return 1; + } + std::cout << "prop.major: " << prop.major << std::endl; + if (prop.major >= 3) { + err = cudaSetDevice(i); + if (err != cudaSuccess) { + std::cout << "Could not select CUDA device " << i << std::endl; + } else { + return 0; + } + } + } + + std::cout << "Could not find a CUDA enabled card supporting compute >=3.0" + << std::endl; + + return 1; +} + +int file1_launch_kernel() +{ + int ret = choose_cuda_device(); + if (ret) { + return 0; + } + + int input = 4; + + int* output; + cudaError_t err = cudaMallocManaged(&output, sizeof(int)); + cudaDeviceSynchronize(); + if (err != cudaSuccess) { + return 1; + } + + file1_kernel<<<1, 1>>>(input, output); + cudaDeviceSynchronize(); + err = cudaGetLastError(); + std::cout << err << " " << cudaGetErrorString(err) << std::endl; + if (err == cudaSuccess) { + // This kernel launch should failed as the device linking never occured + std::cerr << "file1_kernel: kernel launch should have failed" << std::endl; + return 1; + } + return 0; +} diff --git a/Tests/CudaOnly/DontResolveDeviceSymbols/main.cu b/Tests/CudaOnly/DontResolveDeviceSymbols/main.cu new file mode 100644 index 0000000..84a7a19 --- /dev/null +++ b/Tests/CudaOnly/DontResolveDeviceSymbols/main.cu @@ -0,0 +1,7 @@ + +#include + +int main(int argc, char** argv) +{ + return 0; +} diff --git a/Tests/CudaOnly/DontResolveDeviceSymbols/verify.cmake b/Tests/CudaOnly/DontResolveDeviceSymbols/verify.cmake new file mode 100644 index 0000000..9bb426d --- /dev/null +++ b/Tests/CudaOnly/DontResolveDeviceSymbols/verify.cmake @@ -0,0 +1,14 @@ +execute_process(COMMAND ${DUMP_COMMAND} ${DUMP_ARGS} ${TEST_LIBRARY_PATH} + RESULT_VARIABLE RESULT + OUTPUT_VARIABLE OUTPUT + ERROR_VARIABLE ERROR +) + +if(NOT "${RESULT}" STREQUAL "0") + message(FATAL_ERROR "${DUMP_COMMAND} failed [${RESULT}] [${OUTPUT}] [${ERROR}]") +endif() + +if("${OUTPUT}" MATCHES "${SYMBOL_NAME}") + message(FATAL_ERROR + "The '${SYMBOL_NAME}' symbol is defined; device linking occurred!") +endif() https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a28caabf453ab41851b75a40a2e49706439f9478 commit a28caabf453ab41851b75a40a2e49706439f9478 Author: Sebastian Holtermann AuthorDate: Tue Feb 5 15:43:27 2019 +0100 Commit: Sebastian Holtermann CommitDate: Tue Feb 5 15:51:53 2019 +0100 Autogen: AUTOMOC support for files with the same name but different extensions This adds support for AUTOMOC to moc header files with the same but different extensions (e.g `obj.h`, `obj.hpp`, `obj.hxx`). If a moc file would appear multiple times in `mocs_compilation.cpp`, a number suffix is appended to the name to make it unique. Closes #14489 diff --git a/Source/cmQtAutoGeneratorMocUic.cxx b/Source/cmQtAutoGeneratorMocUic.cxx index 0ba5224..ddff4cf 100644 --- a/Source/cmQtAutoGeneratorMocUic.cxx +++ b/Source/cmQtAutoGeneratorMocUic.cxx @@ -678,19 +678,21 @@ void cmQtAutoGeneratorMocUic::JobMocT::Process(WorkerT& wrk) BuildFile += '/'; BuildFile += IncludeString; } else { - std::string rel = wrk.FileSys().GetFilePathChecksum(SourceFile); - rel += "/moc_"; - rel += wrk.FileSys().GetFilenameWithoutLastExtension(SourceFile); - rel += ".cpp"; - // Register relative file path - wrk.Gen().ParallelMocAutoRegister(rel); + // Relative build path + std::string relPath = wrk.FileSys().GetFilePathChecksum(SourceFile); + relPath += "/moc_"; + relPath += wrk.FileSys().GetFilenameWithoutLastExtension(SourceFile); + + // Register relative file path with duplication check + relPath = wrk.Gen().ParallelMocAutoRegister(relPath); + // Absolute build path if (wrk.Base().MultiConfig) { BuildFile = wrk.Base().AutogenIncludeDir; BuildFile += '/'; - BuildFile += rel; + BuildFile += relPath; } else { - BuildFile = wrk.Base().AbsoluteBuildPath(rel); + BuildFile = wrk.Base().AbsoluteBuildPath(relPath); } } @@ -1953,11 +1955,31 @@ bool cmQtAutoGeneratorMocUic::ParallelMocIncluded( return (MocIncludedFiles_.find(sourceFile) != MocIncludedFiles_.end()); } -void cmQtAutoGeneratorMocUic::ParallelMocAutoRegister( - std::string const& mocFile) +std::string cmQtAutoGeneratorMocUic::ParallelMocAutoRegister( + std::string const& baseName) { - std::lock_guard mocLock(JobsMutex_); - MocAutoFiles_.emplace(mocFile); + std::string res; + { + std::lock_guard mocLock(JobsMutex_); + res = baseName; + res += ".cpp"; + if (MocAutoFiles_.find(res) == MocAutoFiles_.end()) { + MocAutoFiles_.emplace(res); + } else { + // Append number suffix to the file name + for (unsigned int ii = 2; ii != 1024; ++ii) { + res = baseName; + res += '_'; + res += std::to_string(ii); + res += ".cpp"; + if (MocAutoFiles_.find(res) == MocAutoFiles_.end()) { + MocAutoFiles_.emplace(res); + break; + } + } + } + } + return res; } void cmQtAutoGeneratorMocUic::ParallelMocAutoUpdated() diff --git a/Source/cmQtAutoGeneratorMocUic.h b/Source/cmQtAutoGeneratorMocUic.h index 32a6006..c22df29 100644 --- a/Source/cmQtAutoGeneratorMocUic.h +++ b/Source/cmQtAutoGeneratorMocUic.h @@ -389,7 +389,7 @@ public: bool ParallelJobPushMoc(JobHandleT& jobHandle); bool ParallelJobPushUic(JobHandleT& jobHandle); bool ParallelMocIncluded(std::string const& sourceFile); - void ParallelMocAutoRegister(std::string const& mocFile); + std::string ParallelMocAutoRegister(std::string const& baseName); void ParallelMocAutoUpdated(); private: https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1f802295f2e42fd38477f22d7275ebe166a48f10 commit 1f802295f2e42fd38477f22d7275ebe166a48f10 Author: Sebastian Holtermann AuthorDate: Tue Feb 5 14:58:37 2019 +0100 Commit: Sebastian Holtermann CommitDate: Tue Feb 5 15:51:53 2019 +0100 Autogen: Extend the SameName test with same name but different extension files diff --git a/Tests/QtAutogen/SameName/CMakeLists.txt b/Tests/QtAutogen/SameName/CMakeLists.txt index 6d42499..8d4f71f 100644 --- a/Tests/QtAutogen/SameName/CMakeLists.txt +++ b/Tests/QtAutogen/SameName/CMakeLists.txt @@ -17,6 +17,10 @@ add_executable(sameName ccc/item.cpp ccc/data.qrc item.cpp + object.h + object.h++ + object.hpp + object.hxx data.qrc main.cpp ) diff --git a/Tests/QtAutogen/SameName/main.cpp b/Tests/QtAutogen/SameName/main.cpp index a4ffcb3..92f15cd 100644 --- a/Tests/QtAutogen/SameName/main.cpp +++ b/Tests/QtAutogen/SameName/main.cpp @@ -3,14 +3,25 @@ #include "bbb/aaa/item.hpp" #include "bbb/item.hpp" #include "ccc/item.hpp" +#include "item.hpp" +#include "object.h" +#include "object.h++" +#include "object.hpp" +#include "object.hxx" int main(int argv, char** args) { - // Object instances + // Item instances + ::Item item; ::aaa::Item aaa_item; ::aaa::bbb::Item aaa_bbb_item; ::bbb::Item bbb_item; ::bbb::aaa::Item bbb_aaa_item; ::ccc::Item ccc_item; + // Object instances + ::Object_h obj_h; + ::Object_hplpl obj_hplpl; + ::Object_hpp obj_hpp; + ::Object_hxx obj_hxx; return 0; } diff --git a/Tests/QtAutogen/SameName/object.h b/Tests/QtAutogen/SameName/object.h new file mode 100644 index 0000000..8662094 --- /dev/null +++ b/Tests/QtAutogen/SameName/object.h @@ -0,0 +1,13 @@ +#ifndef OBJECT_H +#define OBJECT_H + +#include + +class Object_h : public QObject +{ + Q_OBJECT + Q_SLOT + void go(){}; +}; + +#endif diff --git a/Tests/QtAutogen/SameName/object.h++ b/Tests/QtAutogen/SameName/object.h++ new file mode 100644 index 0000000..64222b7 --- /dev/null +++ b/Tests/QtAutogen/SameName/object.h++ @@ -0,0 +1,13 @@ +#ifndef OBJECT_HPLPL +#define OBJECT_HPLPL + +#include + +class Object_hplpl : public QObject +{ + Q_OBJECT + Q_SLOT + void go(){}; +}; + +#endif diff --git a/Tests/QtAutogen/SameName/object.hpp b/Tests/QtAutogen/SameName/object.hpp new file mode 100644 index 0000000..035050e --- /dev/null +++ b/Tests/QtAutogen/SameName/object.hpp @@ -0,0 +1,13 @@ +#ifndef OBJECT_HPP +#define OBJECT_HPP + +#include + +class Object_hpp : public QObject +{ + Q_OBJECT + Q_SLOT + void go(){}; +}; + +#endif diff --git a/Tests/QtAutogen/SameName/object.hxx b/Tests/QtAutogen/SameName/object.hxx new file mode 100644 index 0000000..c3c050f --- /dev/null +++ b/Tests/QtAutogen/SameName/object.hxx @@ -0,0 +1,13 @@ +#ifndef OBJECT_HXX +#define OBJECT_HXX + +#include + +class Object_hxx : public QObject +{ + Q_OBJECT + Q_SLOT + void go(){}; +}; + +#endif ----------------------------------------------------------------------- Summary of changes: Help/prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS.rst | 12 ++++-- Help/release/dev/CUDA_RESOLVE_DEVICE_SYMBOLS.rst | 6 +++ Source/cmMakefileExecutableTargetGenerator.cxx | 8 +++- Source/cmMakefileLibraryTargetGenerator.cxx | 23 +++++++--- Source/cmNinjaNormalTargetGenerator.cxx | 29 +++++++------ Source/cmQtAutoGeneratorMocUic.cxx | 46 ++++++++++++++------ Source/cmQtAutoGeneratorMocUic.h | 2 +- Source/cmVisualStudio10TargetGenerator.cxx | 25 +++++------ Tests/CudaOnly/CMakeLists.txt | 11 +++++ .../DontResolveDeviceSymbols/CMakeLists.txt | 50 ++++++++++++++++++++++ .../main.cu => DontResolveDeviceSymbols/file1.cu} | 33 +++++++------- .../DontResolveDeviceSymbols/main.cu} | 2 - .../verify.cmake | 4 +- Tests/QtAutogen/SameName/CMakeLists.txt | 4 ++ Tests/QtAutogen/SameName/main.cpp | 13 +++++- Tests/QtAutogen/SameName/object.h | 13 ++++++ Tests/QtAutogen/SameName/object.h++ | 13 ++++++ .../object_valid.hpp.in => SameName/object.hpp} | 5 +-- Tests/QtAutogen/SameName/object.hxx | 13 ++++++ 19 files changed, 240 insertions(+), 72 deletions(-) create mode 100644 Help/release/dev/CUDA_RESOLVE_DEVICE_SYMBOLS.rst create mode 100644 Tests/CudaOnly/DontResolveDeviceSymbols/CMakeLists.txt copy Tests/CudaOnly/{SeparateCompilation/main.cu => DontResolveDeviceSymbols/file1.cu} (63%) copy Tests/{Cuda/ProperLinkFlags/main.cxx => CudaOnly/DontResolveDeviceSymbols/main.cu} (77%) copy Tests/CudaOnly/{ResolveDeviceSymbols => DontResolveDeviceSymbols}/verify.cmake (70%) create mode 100644 Tests/QtAutogen/SameName/object.h create mode 100644 Tests/QtAutogen/SameName/object.h++ copy Tests/QtAutogen/{AutogenTargetDepends/object_valid.hpp.in => SameName/object.hpp} (62%) create mode 100644 Tests/QtAutogen/SameName/object.hxx hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 6 07:03:05 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 6 Feb 2019 07:03:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.13.4-1299-gd423192 Message-ID: <20190206120305.28511127CBD@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 d423192062e1199ae9ab6b95c28082505a1f4b02 (commit) via 75a75d2754f10ed3ebe2d796acc167f8610bfe42 (commit) from d6729505cbc049bda35ec571a00787ac4ce62736 (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=d423192062e1199ae9ab6b95c28082505a1f4b02 commit d423192062e1199ae9ab6b95c28082505a1f4b02 Merge: d672950 75a75d2 Author: Brad King AuthorDate: Wed Feb 6 11:54:46 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 6 06:54:52 2019 -0500 Merge topic 'deprecate-xcode-4' 75a75d2754 Xcode: deprecate support for Xcode 4 Acked-by: Kitware Robot Merge-request: !2922 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=75a75d2754f10ed3ebe2d796acc167f8610bfe42 commit 75a75d2754f10ed3ebe2d796acc167f8610bfe42 Author: Gregor Jasny AuthorDate: Tue Feb 5 19:35:24 2019 +0100 Commit: Brad King CommitDate: Wed Feb 6 06:53:42 2019 -0500 Xcode: deprecate support for Xcode 4 diff --git a/Help/generator/Xcode.rst b/Help/generator/Xcode.rst index 968c26a..71430c7 100644 --- a/Help/generator/Xcode.rst +++ b/Help/generator/Xcode.rst @@ -3,7 +3,9 @@ Xcode Generate Xcode project files. -This supports Xcode 3.0 and above. +This supports Xcode 3.0 and above. Support for Xcode versions prior +to Xcode 5 is deprecated and will be dropped in a future version of +CMake. Toolset Selection ^^^^^^^^^^^^^^^^^ diff --git a/Help/release/dev/deprecate-xcode-4.rst b/Help/release/dev/deprecate-xcode-4.rst new file mode 100644 index 0000000..84786ae --- /dev/null +++ b/Help/release/dev/deprecate-xcode-4.rst @@ -0,0 +1,6 @@ +deprecate-xcode-4 +----------------- + +* The :generator:`Xcode` generator deprecated support for Xcode + versions prior to Xcode 5. Support for those will be dropped in a + future version of CMake. ----------------------------------------------------------------------- Summary of changes: Help/generator/Xcode.rst | 4 +++- Help/release/dev/deprecate-xcode-4.rst | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 Help/release/dev/deprecate-xcode-4.rst hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 6 10:13:05 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 6 Feb 2019 10:13:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.13.4-1306-g062cfd9 Message-ID: <20190206151305.A1D8A127FF5@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 062cfd991faac000d484c74e5af7d65726c655dc (commit) via e97a4bed4f35e2508227460b0c537c9868925a6e (commit) via bf1c2a2593e28c4e754420df6984f7f0f183e930 (commit) via 0b882e42134b54e7fd4b0e29f73c4e3cc89aa5fc (commit) via 6f23321d405930241fa431cfda7650f2993f0c19 (commit) via aa9161fd577bfd6a6bf98200d4e437effe9f0628 (commit) via 0d1a9282c42cd278f99b09bb16cace47be421717 (commit) from d423192062e1199ae9ab6b95c28082505a1f4b02 (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=062cfd991faac000d484c74e5af7d65726c655dc commit 062cfd991faac000d484c74e5af7d65726c655dc Author: Brad King AuthorDate: Wed Feb 6 10:11:11 2019 -0500 Commit: Brad King CommitDate: Wed Feb 6 10:11:11 2019 -0500 Begin post-3.14 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 4fcd4ca..2318e03 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 ffb88ef..ef4318b 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 14) -set(CMake_VERSION_PATCH 0) -set(CMake_VERSION_RC 1) +set(CMake_VERSION_PATCH 20190206) +#set(CMake_VERSION_RC 1) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e97a4bed4f35e2508227460b0c537c9868925a6e commit e97a4bed4f35e2508227460b0c537c9868925a6e Merge: 6f23321 bf1c2a2 Author: Brad King AuthorDate: Wed Feb 6 10:09:19 2019 -0500 Commit: Brad King CommitDate: Wed Feb 6 10:09:19 2019 -0500 Merge branch 'release-3.14' ----------------------------------------------------------------------- Summary of changes: Help/release/3.14.rst | 341 +++++++++++++++++++++ Help/release/dev/CUDA_RESOLVE_DEVICE_SYMBOLS.rst | 6 - Help/release/dev/EXCLUDE_FROM_ALL.rst | 7 - Help/release/dev/ExternalProject-log-options.rst | 8 - .../ExternalProject-non-cmake-source-subdir.rst | 7 - Help/release/dev/FindCURL-components.rst | 5 - Help/release/dev/FindGDAL-target.rst | 4 - Help/release/dev/FindGIF-modernize.rst | 4 - Help/release/dev/FindICE-more-exe.rst | 5 - Help/release/dev/FindLibLZMA-target.rst | 4 - Help/release/dev/FindMatlab-2018a-API.rst | 7 - Help/release/dev/FindOctave.rst | 4 - Help/release/dev/FindPostgreSQL-target.rst | 4 - Help/release/dev/FindPython-NumPy-component.rst | 5 - Help/release/dev/FindSQLite3-module.rst | 4 - Help/release/dev/FindX11-imported-targets.rst | 32 -- .../dev/INTERFACE_POSITION_INDEPENDENT_CODE.rst | 5 - Help/release/dev/UseSWIG-CMP0086.rst | 6 - Help/release/dev/UseSWIG-source-file-ext.rst | 5 - Help/release/dev/autogen-origin-depends.rst | 7 - Help/release/dev/autogen_executables.rst | 9 - Help/release/dev/autogen_global_target.rst | 8 - Help/release/dev/better-empty-list-behavior.rst | 9 - Help/release/dev/bison_target_policy.rst | 6 - Help/release/dev/check-fortran-run.rst | 6 - Help/release/dev/check-functions-LINK_OPTIONS.rst | 5 - Help/release/dev/cmake-build-verbose.rst | 6 - Help/release/dev/cmake-gui-s-b.rst | 5 - Help/release/dev/cmake_role-global-property.rst | 6 - Help/release/dev/compare_files-ignore-eol.rst | 6 - Help/release/dev/cpack-deb-tar-format.rst | 7 - Help/release/dev/cppcheck-exit-code.rst | 6 - Help/release/dev/ctest-done.rst | 5 - Help/release/dev/ctest-show-only-json-v1.rst | 6 - Help/release/dev/ctest-submit-url.rst | 7 - Help/release/dev/deprecate-findqt.rst | 8 - Help/release/dev/deprecate-policy-old.rst | 8 - Help/release/dev/deprecate-xcode-4.rst | 6 - .../dev/fetchcontent-reduce-boilerplate.rst | 8 - Help/release/dev/file-read_symlink.rst | 5 - Help/release/dev/file-size.rst | 5 - Help/release/dev/fileapi.rst | 5 - Help/release/dev/find-package-resolve-symlinks.rst | 6 - Help/release/dev/find_fontconfig.rst | 6 - Help/release/dev/find_libinput.rst | 6 - Help/release/dev/findgit-imported-target.rst | 5 - Help/release/dev/findpython-script.rst | 6 - Help/release/dev/fortran-compiler-id.rst | 5 - Help/release/dev/genex-in_list-empty-args.rst | 5 - .../dev/get_filename_component_last_ext.rst | 6 - Help/release/dev/if-supports-cache-defined.rst | 5 - Help/release/dev/install-code-script-genex.rst | 5 - Help/release/dev/install-defaults.rst | 12 - Help/release/dev/install-subdirectory-order.rst | 5 - Help/release/dev/iphone-friendly-cmake.rst | 5 - Help/release/dev/link-option-PIE.rst | 9 - Help/release/dev/max-recursion-depth.rst | 6 - Help/release/dev/object-library-link.rst | 5 - Help/release/dev/rel-win7.rst | 6 - Help/release/dev/relative-rpath.rst | 8 - Help/release/dev/submit-method.rst | 6 - Help/release/dev/try_compile-LINK_OPTIONS.rst | 5 - Help/release/dev/vs-debug-utility-targets.rst | 6 - Help/release/dev/vs2019.rst | 14 - Help/release/index.rst | 1 + Source/CMakeVersion.cmake | 2 +- Utilities/Release/upload_release.cmake | 2 +- 67 files changed, 344 insertions(+), 415 deletions(-) create mode 100644 Help/release/3.14.rst delete mode 100644 Help/release/dev/CUDA_RESOLVE_DEVICE_SYMBOLS.rst delete mode 100644 Help/release/dev/EXCLUDE_FROM_ALL.rst delete mode 100644 Help/release/dev/ExternalProject-log-options.rst delete mode 100644 Help/release/dev/ExternalProject-non-cmake-source-subdir.rst delete mode 100644 Help/release/dev/FindCURL-components.rst delete mode 100644 Help/release/dev/FindGDAL-target.rst delete mode 100644 Help/release/dev/FindGIF-modernize.rst delete mode 100644 Help/release/dev/FindICE-more-exe.rst delete mode 100644 Help/release/dev/FindLibLZMA-target.rst delete mode 100644 Help/release/dev/FindMatlab-2018a-API.rst delete mode 100644 Help/release/dev/FindOctave.rst delete mode 100644 Help/release/dev/FindPostgreSQL-target.rst delete mode 100644 Help/release/dev/FindPython-NumPy-component.rst delete mode 100644 Help/release/dev/FindSQLite3-module.rst delete mode 100644 Help/release/dev/FindX11-imported-targets.rst delete mode 100644 Help/release/dev/INTERFACE_POSITION_INDEPENDENT_CODE.rst delete mode 100644 Help/release/dev/UseSWIG-CMP0086.rst delete mode 100644 Help/release/dev/UseSWIG-source-file-ext.rst delete mode 100644 Help/release/dev/autogen-origin-depends.rst delete mode 100644 Help/release/dev/autogen_executables.rst delete mode 100644 Help/release/dev/autogen_global_target.rst delete mode 100644 Help/release/dev/better-empty-list-behavior.rst delete mode 100644 Help/release/dev/bison_target_policy.rst delete mode 100644 Help/release/dev/check-fortran-run.rst delete mode 100644 Help/release/dev/check-functions-LINK_OPTIONS.rst delete mode 100644 Help/release/dev/cmake-build-verbose.rst delete mode 100644 Help/release/dev/cmake-gui-s-b.rst delete mode 100644 Help/release/dev/cmake_role-global-property.rst delete mode 100644 Help/release/dev/compare_files-ignore-eol.rst delete mode 100644 Help/release/dev/cpack-deb-tar-format.rst delete mode 100644 Help/release/dev/cppcheck-exit-code.rst delete mode 100644 Help/release/dev/ctest-done.rst delete mode 100644 Help/release/dev/ctest-show-only-json-v1.rst delete mode 100644 Help/release/dev/ctest-submit-url.rst delete mode 100644 Help/release/dev/deprecate-findqt.rst delete mode 100644 Help/release/dev/deprecate-policy-old.rst delete mode 100644 Help/release/dev/deprecate-xcode-4.rst delete mode 100644 Help/release/dev/fetchcontent-reduce-boilerplate.rst delete mode 100644 Help/release/dev/file-read_symlink.rst delete mode 100644 Help/release/dev/file-size.rst delete mode 100644 Help/release/dev/fileapi.rst delete mode 100644 Help/release/dev/find-package-resolve-symlinks.rst delete mode 100644 Help/release/dev/find_fontconfig.rst delete mode 100644 Help/release/dev/find_libinput.rst delete mode 100644 Help/release/dev/findgit-imported-target.rst delete mode 100644 Help/release/dev/findpython-script.rst delete mode 100644 Help/release/dev/fortran-compiler-id.rst delete mode 100644 Help/release/dev/genex-in_list-empty-args.rst delete mode 100644 Help/release/dev/get_filename_component_last_ext.rst delete mode 100644 Help/release/dev/if-supports-cache-defined.rst delete mode 100644 Help/release/dev/install-code-script-genex.rst delete mode 100644 Help/release/dev/install-defaults.rst delete mode 100644 Help/release/dev/install-subdirectory-order.rst delete mode 100644 Help/release/dev/iphone-friendly-cmake.rst delete mode 100644 Help/release/dev/link-option-PIE.rst delete mode 100644 Help/release/dev/max-recursion-depth.rst delete mode 100644 Help/release/dev/object-library-link.rst delete mode 100644 Help/release/dev/rel-win7.rst delete mode 100644 Help/release/dev/relative-rpath.rst delete mode 100644 Help/release/dev/submit-method.rst delete mode 100644 Help/release/dev/try_compile-LINK_OPTIONS.rst delete mode 100644 Help/release/dev/vs-debug-utility-targets.rst delete mode 100644 Help/release/dev/vs2019.rst hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 6 10:13:08 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 6 Feb 2019 10:13:08 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.13.4-1304-gbf1c2a2 Message-ID: <20190206151308.66A8E127CCD@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 bf1c2a2593e28c4e754420df6984f7f0f183e930 (commit) via 0b882e42134b54e7fd4b0e29f73c4e3cc89aa5fc (commit) via 6f23321d405930241fa431cfda7650f2993f0c19 (commit) via aa9161fd577bfd6a6bf98200d4e437effe9f0628 (commit) via 0d1a9282c42cd278f99b09bb16cace47be421717 (commit) via d423192062e1199ae9ab6b95c28082505a1f4b02 (commit) via 75a75d2754f10ed3ebe2d796acc167f8610bfe42 (commit) via d6729505cbc049bda35ec571a00787ac4ce62736 (commit) via 4400ac07f7bb7da1d85244d1b5ddc2dfd75273f1 (commit) via 3a2387bce79a6c8ea79f64e80079accbbd8696b2 (commit) via 850ef90a66a8f81369b3d11c74398ccaefbe5324 (commit) via a28caabf453ab41851b75a40a2e49706439f9478 (commit) via 1f802295f2e42fd38477f22d7275ebe166a48f10 (commit) via f47d980f73a065485bb7090a850f2ac4044c2dfd (commit) via ab01ce91eee2ff8b00d56a5044a54404d4d3f49c (commit) via c6d679f0d904b19b3be411b399b5904a5da7ea78 (commit) via c03072f2f7a08c6ddf0cec58dfc8ea2b83f4c1a9 (commit) via 25e616862dac08aae7c4a3ad01839acfe7342ec7 (commit) via 9ddbf4c6e65b17b76dd6ccca72c5b3a0b7cbb1ad (commit) via 8372c054729984a76e3e619b4c28865006d905d0 (commit) via 762a41fd19dff29de41009bfe7bcf69917e5ffb0 (commit) via d3d2c3cd497e09281a8f237b5a4cd35d8cd298f0 (commit) via 96dece6dc11627d0e7b5588f63f2578b581cfb77 (commit) via e8ee8cab97bdb084d4555ee3e76eb33303e3bc85 (commit) via 11da882a1293b39ddd054342b1e6f2f3bd1bc934 (commit) via 36cf44a7a3a8931c97790db6df61439d4dd86ea3 (commit) via 6e91f5d6204e650c808b6585074faa248ee6e6a9 (commit) via a5ec7f868f2c7c9714a525a9872b9eaa528d064b (commit) via 40e12882609619a902d19b94de442b2874bf7a45 (commit) via dc4a2749a52cb7f96ad8d7146ee4d680a2beb5fa (commit) via d401c10db5cc5afc009bbb31c4ea11e4914687db (commit) via 149402898caf5953462ca32d3c7c892b447614f8 (commit) via b6cf08626785fc6401220928be8ab37b89bc669c (commit) via ed0fa784ebb2b7e4d6db8b40d16f84f34692890a (commit) via 254b7260f49caaca78b16761d70d6239626d2129 (commit) via cd8a930d61f0aa6c139b1f81302c9258b4102012 (commit) via dfec0f4a11a6895617e778a0dfcad0668ad23f49 (commit) via f5d72be57a00f18ed2b18fc2eb6ccedee3544542 (commit) via cff026dbc01f975857236a11fc033af48b5e130a (commit) via 6c21722adbc1745b6362ca9501692805c19eb8ac (commit) via 6d407ae439f1db086dd7a3675c8efce93a19fed3 (commit) via 2ddf3f4467bdd600027dd3532515d05d44996871 (commit) via b9d44fc35081a3354429137dff09a8959d8a2a92 (commit) via 0c61b8699cb2b1c75e033c6a7d27f0b93c0dc7bc (commit) via 13c550aabc4110d47e38b3df053d18dada49ab54 (commit) via 0479ae492a6bc6058ae86d3ce01ac26fcc71c744 (commit) via a906d7b41c8ff2656f3fa3dc5765be79ba31166a (commit) via cf3af44af2b73ab6a89a8773b5fc3bee8276a47c (commit) via cb01b8c8ba1754b40e74d89d2c6dfef5dc8c44d3 (commit) via 9512a582389df6f588781eed41cf826a7bacabe0 (commit) via f45d8b2f2303b07792ff29e31b95d12f29157fe1 (commit) via 1c6c2bae285ecce518d68f708729840df9c28fb0 (commit) via d526327079e23748dd2a87acd4d9b4b1174725bf (commit) via 29368abde7d5b4d3d6f734aa530e82dd9f4ee739 (commit) via 1b46f2f12a368e6e4049b814d0b8499394fa442e (commit) via ca0310b919cb389618d480cbdc0124609051866a (commit) via a2dc420cd4946eb3b17fcdcc6c32dafc7c679ad5 (commit) via 0933707d5c8b18401834e0787157e2de68f98e51 (commit) via dc9f4f9eca3ee046bbb2f974ab9ae9af7ffc46cf (commit) via fb823855158855b6c967ef8dc7947762c097f914 (commit) via 24bee427b5da710c5f9941f5cddb455df1a2ea82 (commit) via 9aef4a732ba6b0d20c9953d171514fa4c0daaddf (commit) via 1b3b0fa43a51aed03f38b98f30d9383bc6d377d6 (commit) via 74cba6a3fde29649a924bc54269ed3449743eb5f (commit) via 591899bc9643881610f665ac2e8787774a6b78b0 (commit) via cba5b22db34c73c32653894d39888b44b9f25558 (commit) via 9eaa6aa599ebc4f380fbc36e352fd5ad25c5bcd7 (commit) via 5107a84d46ad245221843adbef092118649e6dc7 (commit) via 9329e1e30ef4de637d0e71950933f1725f28b475 (commit) via 0779bc9393efeaf1bb3bbf35619617d317d37308 (commit) via 8ea30a44d38057fed134532f6d3b6e8626a1ccff (commit) via bb735025dea634285a43b32b98af7ac25c5f8e76 (commit) via ea9a376085b22a6e19bb4c6334e186052db51f16 (commit) via de7eb1a3d0e1389437a37513f566244344032c1e (commit) via 20291e8e7293fd0ba0f5c66fe57388ee20381ccb (commit) via a624a3e1b3105e94ad30722e3053679a3b7d5b7e (commit) via f4f3b6b9af13366b16ce5a3be7af6c2b68c8be09 (commit) via 699cd032128afcda78e12a76b227faa6c1f6a258 (commit) via 1293ed8507be7e854dcb9437a5b7062ec740ff69 (commit) via eb2c23868fe712a0c79b3afe6618e20507c0f9f5 (commit) via 1180fc87803b39cc03e503e4d08fa7d68656da8a (commit) via 3f9822ff6d2e38ef9aedc54d654e3afc635596fd (commit) via 91d98542d26318d8f51c434e689ccf6cddc2d3d0 (commit) via 062d21c36a57ad9c7528ea3f490595492853f1f8 (commit) via 17ac7c4024147386bd059523eff12951f3c0ef7d (commit) via 198650ae7399cc086c49e58b0a9e03e9efb86235 (commit) via a37614667d2a1d7d3e4db5e1ec8df644bfbe39fa (commit) via e3b26f0004e20c11818e8c6cdd6c778c379d8c67 (commit) via c22e373a3077a90a4f1ed509774412a0ab82d992 (commit) via 8a7f93d000f1676d6051027b0608ca7658c8f00e (commit) via eff9c69740d5d4a26025a89f517a612e446077c0 (commit) via ec027aa64a8f5ee59d4962673cc8e8ec1abd5d85 (commit) via be7b30f67e7e5c8b0186ba622dc06ce8ffe2df4e (commit) via b323407235a3671eb11c7a039ce1c2f134025c73 (commit) via 9d20fe014f3b81fa7d7a3b7d203b58abe6fd5ce6 (commit) via dfb2d6178e68379683a012c7c9306b851c1350a6 (commit) via c68465f7908336a29c48539cb9ac0dcb32310abb (commit) via ba30b94435bc621767fb887d081a257cdec8a633 (commit) via 748d024551d8f447046363ad617fc72bdd977fd2 (commit) via d685a46f56b6f7ccf5763b87611bf383e3aa8cb7 (commit) via d36629661197b4255da2a1864ce7ec016b415d24 (commit) via c30f9b1cdefc2fa26d89bc692001a4f1050f6038 (commit) via bcec7d0778eb87ea58d720d9e20710dc2cdfdab6 (commit) via 8ec149003e756d4a40f86b9025acb15f7ff82136 (commit) via 340e8a9c3db63cfe62382adc746e192d792fc9c6 (commit) via f64099cf5e5a659340cf221dd32a6cfa8bfe47d3 (commit) via 95210d027a03192532fcf2c71c98c79fd4cc0fd1 (commit) via 9c4cdc43f68c46984cbf7ce7d5f22aadcdde1a00 (commit) via d21769d5ddad9a76c3f2c773b8be6961ad159af3 (commit) via d6fbd438c4ca89a4e5e7eec612b142f8e86faa17 (commit) via b05b778a2dfbcb6978d652dfa27bd52cc649f736 (commit) via d75fec5a88f81a8c16cdeab46766e92a14d1d3cf (commit) via f201c9257d4516fc4ff3f1e0fee0515b43a111dd (commit) via 8c92db829b41243790c7dcc5300227f591a727a8 (commit) via c31b6e616d5c2d697696540ca2e8faf14160d2b0 (commit) via bcee24aecc1eaf6615eac9f24ae06acdf38845d3 (commit) via eaf53158f49e6e7581613376e8c054e18bdffc23 (commit) via ef8f237686c2a0b51249bfd46d9498abeb019e76 (commit) via 9620cb935a49e7b4955f5b1d0ffa2e93b4327591 (commit) via 60c06620a690f0cbeeaa3fba762e19cd031669ca (commit) via 90ac5e6384735deb0ac523684010b2f4701d4f4d (commit) via e7be5638a04ad6e47aafaed29139c6382fdea1cb (commit) via 5134e11ee4291c1eb53aa5014af2af75a2e33f3b (commit) via da402a081b6575b4813e5e8798105317b451ac1e (commit) via 147d36ce93d563df4ce1899facbb256e6bc9bbb2 (commit) via fa7077e7411f4f85724deae3427acb29be729567 (commit) via eeb34232fc2b76dc8b9bde25b2ca696d91b51b5a (commit) via bcb1297faf4e4f7bab665b80bc49b8bbabf33a9f (commit) via 62c0b1aebb827fc8a133cedfa343322d28714501 (commit) via 0fd742a6ffa637b8ccac3b61b42bd10b2c3a87cc (commit) via 95ef818c7df5f8f92130f11cad0e9b72d470dcdc (commit) via 17cef3806d958bd03ec08b925fe585a0cfa204fa (commit) via bf774e521b0a08dd8e09a93f76471cad593db3c6 (commit) via 142e67eac64613a836dd21542963878104c9b088 (commit) via 66801f4d40227c46904ad54848bd1da959604cbf (commit) via 439fe2e253410305ff7018416ff5ff26aa851d53 (commit) via 186d9b083db0e3fc77d9d92821e3cf45e06271da (commit) via 2fc69ba0b33e8f5f1b6301f37fc1479fba420b93 (commit) via fc96aa03f8a3d3133aaddab27bfc0b684594558b (commit) via 03dbb62d31d4a115fed09049cf6995ce89d2fabe (commit) via 5f34bdc7f9f1fd8cca69757b06b3de8fdb4930b7 (commit) via f16dfdf71f8f81e1be9c3ea18652d8d87c1cb265 (commit) via 8e495333c0914a0684d6d82e2cc15327c9f811f3 (commit) via f677a3d7defdb82d79bca2faf09da6d9338773b3 (commit) via c1922c9660298bb0e70204e66d596adb3d104ac0 (commit) via a844c7248d7cfca9569ea8aa6a2147f564a5b2f1 (commit) via a5098cad94c152e397b258be69ae152eb1bda3df (commit) via 1593e16d881bf74fd8981e1290d20f28191f1f0e (commit) via 2a9220c34d26d33b5733ba41a25c44e02c8cdb3a (commit) via dc752c9d2d4bc2c0ad047689bd01bb75aa8f8fb9 (commit) via ce57bc8e04e1b30dd2645df111783a8961296070 (commit) via 70fabb8f25b41b2cf332335bb14f3627c786626f (commit) via f3f9ca1d7c3fd95b5f361c3e8bb7b815bfd0f86d (commit) via 6d572018687cc2b398f59519e87f17c68836b267 (commit) via f411e936be6c5d0070c67aeb3baea150a01024a1 (commit) via f832f15509ae269d236c0c7a5e06808b78fdaba2 (commit) via 0e2cdacf7b51c915acd1a2a9e58a080d2667b4cb (commit) via f2ddedfa5802c8aece994bb643b5139212d87777 (commit) via 438651506a5417be70e71f54f4ed7add0c2604d3 (commit) via b6a957c9696706a338cdeef63540bf8a4c42d22d (commit) via f725750f040c3649d51af1543c03cf6c45307c12 (commit) via a94355c7b781378f73b70010ee97f9d5d6209e68 (commit) via 611d5274de677a42bdf744c48f0e4a29ea1bb1cd (commit) via be2cc309f1f653609d3c9983203541de2b1f9a08 (commit) via ad0853b3d41bc8e0eae4f0baafab457ad52a9a7b (commit) via 2e91627dea507ec6f4406d561b073bdc14860cb1 (commit) via 939dc9a58c5667ea18809c3a5e97ef1b60eb746c (commit) via 568343767e5852f0e5751341a3aa44ab6feffb8a (commit) via b9e6d04558bdafab67aa392052d7136cdc4a7be2 (commit) via 880e38059939f3259b42f4ed3cd9c6142d73437f (commit) via 638667efa2b0e5fff5c63bf936748a60b602ae90 (commit) via 3ca44029668c057fb208c5f153c4d398bee954cb (commit) via cb6c233eccfbb600ec16716224062627df2ff2c0 (commit) via 1a45266cb544d73a7d7e46d6129ead1faf71fa85 (commit) via 40628b2519ae1553a33f701cf46ee8fbbd013b85 (commit) via 24b6e4830d9027e63db7dfafa500aaeb652d3a4c (commit) via 15bc4a25e50d18ba081f31ffd8fc4724b83460b5 (commit) via 9a2bddb7042485a35329cf8644f8da1cbfd2398f (commit) via a8f51555235a1a747e540a0859ab146f927dfd0b (commit) via b4ccb6cd32029efa802dfdfa889c75bc16f65cf1 (commit) via 40745ad35ac57b437dcd6d74e846e9cd9743808f (commit) via c18fc30d1a0c67780fdea4ccd0a84a601ad7e8ef (commit) via 9f84cbd8c323a5a59b666a8bc8199e52a181bb35 (commit) via 5a6e683a32c8ba9f7610e4ca0c6c3d9e7888d934 (commit) via 73a6605e069dbe05b8303007620544f9c73f0273 (commit) via a5f7652fb9325c285d2e8a76404120b83fab79ea (commit) via 29fbd3c9a0ab2a27e9deadccd160d15e5e80e70e (commit) via 094f01d0f019147afbdfc1c18ad1a6ca232eb3b8 (commit) via 55671b41d2d182ce8d3201012ec55badd7116615 (commit) via 0d8d7a6896c5065c4baa1c4f5489e2424535ce6a (commit) via d47aa71b395b9d2d641d928ae90f10a135f22b49 (commit) via 26b7a8e77ecafea417a0430276533ec5e58fa33a (commit) via 8f56f22b84b52238dca066cc431c6e82f5380fe4 (commit) via 626c51f47be79c5438cc349f51ba1b4973194bfc (commit) via fd45cbf40ee809d6b900f22247fef06e3d349c78 (commit) via db35e3cfd606a156cbb518af19603da7f22c26d8 (commit) via 533f95c8479c6c04ec23263244671bd81a98ea39 (commit) via d2fcc6748aa2a7888fc1d0d8366f19141c2cf2c0 (commit) via a7973ccb5310b24acdc9176555b458bad6000a43 (commit) via 049410c0b61aa1894cab8b3885c78d59fdcbcd9e (commit) via 43aa632f57bb31514719b7f0d629a9285147f7f8 (commit) via 460a146e2b8da5355e4638706002715aed85acbc (commit) via 0df37903715d900fa5cfa3c51176649ed69d7d50 (commit) via fb2e418c64d915b4d75f55f815e67923216def62 (commit) via 20922d673375e6b819eba32e84471922b008b8a9 (commit) via edda30d0f5c7230b7854d8d714159ad68a2344ef (commit) via 7a25ef326bc53293f2dd288a7c092b4080658821 (commit) via e50a36df488be05dfbc85005c88ec8d4c5314a76 (commit) via 513e77550daaac083cb13b3df53be955a7d0b429 (commit) via 378473f9f184000cb768c1b99e6242e054787f34 (commit) via d67ce0a61e6a4c8b639cb19f575b4f0a5b2d033f (commit) via bee32e96b392ff4e0f2baf8fdc831a9e5240c7d9 (commit) via 1d02491950b0aa05d2053e7fa32b39dca31e537b (commit) via 02f5caf4879018fca79fe01fbd196e65e6227870 (commit) via de13c55d74e0e95aa3799ba132db668212721776 (commit) via a5789224674999ed206464fa7cea62ae31e3dc67 (commit) via e4541b0e3dde49183742eda8100f608d03d0d027 (commit) via f2d7ed1cda590688e4ff4e37119007d0ee7cf893 (commit) via c3203bf31637a960d1bf579fb7092a1ae850cdb5 (commit) via 68eabb357616f7ef469b20dd8d9cb8ce588e113d (commit) via 8ef1916c8226ebf781c4ad0de158d15754d411f5 (commit) via 99337d345ba9d3379135c90854be23403fa8e274 (commit) via a6982cff0d3910723ad4fd40b9c63cf77c872d30 (commit) via 3d63d3ce2fd6064433e2cff9469260aec9deb116 (commit) via a7f5cd45e135dd51d67176fc40e2d769ac5f7db8 (commit) via 22893baed1556420b93c4f3a62b4c450ac354040 (commit) via e898f48bbc944c5525f7f292b55cca8ae2fa4cae (commit) via c1247d861a42fa79e7ca4cc9a793b1fa1f012dce (commit) via 877eed30c7f3fa873b36ec3654c00c50a3977425 (commit) via d8788faa6634e4a837e9d62423bcf4969d90e560 (commit) via fd54b85937b9cbfbc04b05b9a0b9d143ea2be6e5 (commit) via 9e5c13738bdc45b00b529b492bad92800890fb9c (commit) via 20861d758b5c8ee1791ac1f76088ba29431a4e16 (commit) via 68b51fb19af65610f6f36f3a3da2aa34ab0a9c59 (commit) via 5a0784ddea62ee653a3a1199d4ff2140868d2c1d (commit) via fa5bf870df1ce5d9cbcf61be736beb0b1e87b85b (commit) via a1f65014a30c7e9da15c87e3cca1d86b480c5339 (commit) via 3068a0d0dc87a57408c53b23e125b6c6de0c181a (commit) via 405d9cb4b5cf9d849facda5dfa6ec02e57f33be7 (commit) via 614876c638f7a428ff2f47104e2427bdbb64958d (commit) via 08dee696b5831a8cba0a70df5e6b072f91d0c6f8 (commit) via bcc9ea2b3d9cd3b882dbb2a23502b0392cb21d1b (commit) via ad2ed96a85ff2548222093723b923305732a79cb (commit) via 4b017d579d00f1d4d032eda7e179f57bdd1da080 (commit) via cb7fbf1dbbcc88fc7701250db5c3ccdf0ab7396e (commit) via acaf9801d004dc77d8abbb09b2ce3a88fd182322 (commit) via 17e12a9fa99c0a3008da2a611d91e810fad9f102 (commit) via f2fca92686fb360c433d06452700d90dcf62c9fa (commit) via e463133cd2a189d5d2ad3bf95caa4058a2c0d764 (commit) via 05e4fa47738bf44e8ee6501b415df2899b10f6da (commit) via 2993fc347af5db802721f1bbe0a0e05d19a28e89 (commit) via dc6888573da15cd7ddb9f91b70ef3e6c4e7cae15 (commit) via 5990ecb74133e1a9c885fc0ea62896b501d37fef (commit) via d751d2d2ed277c1bfb2882fd90b377983ab4700f (commit) via c765ae495aa25714023d2cf2bcf6a9873da06184 (commit) via 8c5221fb1fad10518c8ef7901a686a9a816baf0e (commit) via 15ad8300621eaf9fe23cda30368f90b420505d43 (commit) via 3e867ed4003e33ace2de6027f9bedb9aa7718b0c (commit) via 97700e9f5b17b1631f6bfef4fec62dad88dc9319 (commit) via ab3b549ee0dcd79607f8347a9b69c9b029590fbd (commit) via 02f7e997e939dbd0c753514edcd580083cebd37c (commit) via c7428e1729239264af84cb9ecb6f05f0b1e04e84 (commit) via 177b5fb61b6d1fc64c70ea3bf65652ccad690dd5 (commit) via 55a2dc3055e8c5f2189c763eb3fd4c9c754d1c05 (commit) via eadaf0c8c3b4112d38a19b20a9d303e83640373d (commit) via 1fba410ecf168ab4af500943608a5fb4fad5dc06 (commit) via 9ea2f0eb948548aab2fc865d62a658e0c78e90f9 (commit) via 4dba5d6ce251257259874bce394b2fba954e200c (commit) via 7e5f9b192e9c3ed7130e1e52b7f9d3243f51e2ab (commit) via 15fe5c4c9d90aa03e146fe8b9585e82c4f3b5ffe (commit) via 0526ae4415f61c5a2adfd78e05b797de1d44fba6 (commit) via d704cc34071f0c6f95099670c94c7f1940ab7fa2 (commit) via d1aa2e11092acdcc22b333e219187026d38549a5 (commit) via fefae527c8c54d249c44313d9b09cdb0157e2f5d (commit) via 67bced8a26348e1cc05d8c04ed90633c642bf3a3 (commit) via 7ac3844ab5a09ad4018c40569ccdc07c313eb407 (commit) via 1a07e1b47d2c0a5b19013f359bbdaecfd17387b2 (commit) via 3132ea801c2466773309edda82387025f903fc12 (commit) via 41e02ea3b82c2c1a302096d3032dc2f52f52b686 (commit) via c902e775ec3fc2f3c6f6c4273142bfe6f73f4c57 (commit) via 2c50a725763eb2201f356852eab98dfdf9c27591 (commit) via dfd5ae7da71ed9330eca7e352b8f9b42babdf3dd (commit) via 6023fe7ff22848bc29ee67395eeb10f066758c06 (commit) via 7408cd39298dfce442d7aa539a90a227433865d5 (commit) via 48ec0bc1401b99e5a2d07392fb98f96d5fec9e50 (commit) via 8bba458ea5d6b792e165560d79efd8d8356f4329 (commit) via 818df52c488a94628169811bddffe05f36c68b42 (commit) via 8144b00e32cf1e24daf41353cbcd1806311ceac9 (commit) via b70c0aed5c616edce5cbc803c7de92580f835f90 (commit) via 264bdac185f85e0508982df1b6efd7c3b8a1d1a4 (commit) via a080914274b32ac53f2449602811aebca7cc7d29 (commit) via 0ffe8f8844bb74e785feec84e4871ec139185625 (commit) via 1ed4d48dcf71df4e8a352bc476262a79d75e299a (commit) via a42b700cc254e284892821dea06ac265744a0939 (commit) via a61c061b6143cb6d8920b1b5796a867c0f104556 (commit) via 65a3abf999b30117447c2e62581fbcaec56aadd9 (commit) via 2e7d4029f42430ac7339d15ae7b6f849b0f7e429 (commit) via 92d132100a0097c867eaa73f4bcca59670cca4f3 (commit) via c09ec7998148e3c69bf0c7fd2d626a6ccc23e37e (commit) via ef61997b1be5c2f542472f8eb48dac62cd26bf5c (commit) via 1c08652580ce3641f38f173074215bb12705ce63 (commit) via 25caf7bafeb18d9394eb2d13686970c68e9ad88c (commit) via cae9d2a61afea3948c8dfaf1f7dbc39ebaa71055 (commit) via 7370b02c36b45bcd92b6c5bb7cc65ecff75b9b2b (commit) via 62fec84ad7b44b7c54130e9eb3686f4fbc22672e (commit) via 2e5307a2a45d456b7fb52e4d3fab1416dc9a1bd8 (commit) via 68e20f674a48be38d60e129f600faf7c483f2b97 (commit) via 5b3af28e4532eadf92dee229870cadc94be9c635 (commit) via bd3685b6cfac90bb553df0330e1732c066fe7dca (commit) via 9e3e93fc6f642e2cf0c1f11753ff8e2267d49ded (commit) via 75a7a237465e37215525831f942a3904d20d1380 (commit) via 1136275ae16cb0cc182e50f73d646445580b2634 (commit) via 1e1209729b26312cb511d5995bd57b6f5d35235e (commit) via 00c7e006a5554911986ec4afe8b03e929d7b72e2 (commit) via 4568d046c46a7357ab48ddfb1117bad39e65572c (commit) via c144db1b8ca1ea2e3dad397123f110956a439030 (commit) via 9e84e14db7e50925a3d7c3995737213d4d8b3921 (commit) via 4fcb0d0213112bb2fdb04bb27e82543b93cfe41d (commit) via fecbc87608f4b1429721292d3414bde9eb9f073f (commit) via 21ab58d3f8782e80145f14eb6e72926c9d17afc6 (commit) via 72e0c115b771fe9e3f4b5a5b6bd3bcdade77a7cb (commit) via 436cc5e991c7be07610d7902a5ce2a00221ca0a2 (commit) via 4a1ec0de3d2102918284eff13763f2aa3d20d119 (commit) via 1a66acdef268865e5816bd56176274034769b1b5 (commit) via 0c9e47d7cdb498f9bc29231587030e0840c9f00c (commit) via 80443184317e97999da63d71549aa1b89997dc3d (commit) via 73092b2213495e06ef2ecfbf5fcca850874d6c88 (commit) via 14f3ba205989a422f1668073a325b057cece0b32 (commit) via 702121c5f3eceeb6b74ede845f1e1297cf113c47 (commit) via b2a72ec72d609547d2278701a56237822c0dcc92 (commit) via 595932c4f0570ab6bdef0a50a321877ffa9c50e4 (commit) via 2ed2d6b46f9fb8f0742ce60bef16f1d636008136 (commit) via ead7117afda23d7cf0c1466ce5229d06240d3de0 (commit) via e7825386e2e9e69728e5a5c3dcbc94814bb7cb1c (commit) via 447b57a2676b5bb7e9f97b15c9fe5fe7d3817a86 (commit) via 6436080996ae6f2482fdeefcc639dc36fefedfd8 (commit) via 5cef3c61fc815393248762c14ba1878aae68394d (commit) via a42e40e78dc3d9c4289a3c9640cae94ecd034373 (commit) via 2915a75615bab216753c902fa716b11f9fc5de83 (commit) via d6475daa79810e332c3d2d1659e3d73250717219 (commit) via 938f06fda69a0f4ef04b2ed43a945a3c901b9750 (commit) via 65e725c95756a4e2348e9fb52b3d5aca7ee21115 (commit) via 65f1fc9d6329feb2d48ee986d4243166a66049af (commit) via 2bedd5fb7c02987ad209f96889e2578a16806e01 (commit) via 22b43b0009f37c41b310dd26a4ecb00361975aaa (commit) via 0f08ed89362d207e18b06e806f127cd683b79141 (commit) via 593d986470ce1938436da312e0c93e3c9c07017e (commit) via 9a3d85cfc501fe3c1655e4a6ae9fd08fd9a1fbb7 (commit) via e68ea269d72773e53db0c6c6848f6f69f3fd7329 (commit) via 45aa9c65a13105ff505e18f5029ef794b7aef9ab (commit) via 8bb7562f1a4e75fa5cd00f4ebd868d1494b63e7a (commit) via 81650e488c734702384ef903630838015a3f81b1 (commit) via b773e58099b2fc8ebdf8319172fb018d0139396d (commit) via a5e948a36f5d1c1cf6a0ea34b04bbc4b6058e7d9 (commit) via c59eae7ebc5423c2b06befd762f8639b0f23b7a0 (commit) via bd54cc774a5b14720a9e741fc40192ea11106443 (commit) via e2c39e05732409d60e7921b45a70dd8b9aa24b5a (commit) via e44cc45530b002546bae11a34e77a3a730fd14e4 (commit) via a8b447d72e13b3356893737adba0a46ea065f70d (commit) via 68a30b50a5894d0425122ae4bbfd40b0492ff116 (commit) via cc2a5261f82c21e15899bba0d9b508fcacda7879 (commit) via a541d113e606b05073810bb1b5dd5a7a8fd2eec8 (commit) via 7721b70e231c94188a8f5643fddad661fe6f1eb1 (commit) via 74dc68b4063193850c2d081139ca72355a39f5c5 (commit) via b056bc34258267c4ae59c72e3777d0a0f0b5a1b1 (commit) via 270965e0c7dadccc3564f7ab825cd4e618a15e42 (commit) via 7414d422b267718e737637fefa01b94502febb0e (commit) via da566d4de885130e182edc80f13691f5ca24bb61 (commit) via 41b0c0dc739c34550b8e9054b9a88405afb6518d (commit) via 67422bf579e5c274794f131f008bec4ec1e7d4b9 (commit) via d7835e4d0e6858eeff12c6e8d09a42db6acad4bd (commit) via 1d328d8119482ca658434c7eddc07178fd363ae0 (commit) via 88b90fb1ff8b5cef816cedcf6dd378cc706806d6 (commit) via 4cf301ca77ccb487f0ef5172d6525667896dc84a (commit) via bf1a1caefeceaaad8f86e613e086b244a569456b (commit) via 11e43a19a47797ed539924022d7c54b2f92125e9 (commit) via e01d04b3a1aade55f4e086c47624869b77639544 (commit) via b2084a330d73f92b7d55d22921b2e2d9e1d462cc (commit) via 5d3b8eed4bf7d4b4b2534861aa96f517479596af (commit) via f7f15a77ea81eb51d5544859189563c708e487a7 (commit) via b90e6134a7af7d6f81a410fac52f17c7585509eb (commit) via 414aa6c81ec62ab2f728fab31aa189ce674484a4 (commit) via d4a42dd4a87c9caa222a7a40150db937258698d2 (commit) via f3b7652efcdd9a2e248ed2ec83ce7fc10944f194 (commit) via cd0881be61149346649f3aef9b69d58bd7a2549a (commit) via c07fa6d98c3ca2bc645c23c4a437d48d57d3eb8d (commit) via 5fe18eee1392c312612fad0e6f408ea7cb1ef29d (commit) via f2f166133402ad5f7998e0fef93b04f56c2f6d07 (commit) via 2033c1e56fd3d9367fc4eb9a2595c3c592575d54 (commit) via 59c408d053cfe90273db04c3804ed91d7ad59d8f (commit) via 214a0bc924b35cc18adddc603bea58d456e74e64 (commit) via b2343ff08682e23f61be27c4faf02f8e2c37abcf (commit) via 427ebecdf5336b9915179464586d929850a95101 (commit) via 9e4b6bcbe8f4d3bf495650309b94b045a3c3d7fe (commit) via 4541c914b587125048c8e82bc3cd687f573f753a (commit) via 613323a78bf33e22f510e41c8733fe2bc8df606a (commit) via bf2503089b19d1462be7838ed7364361481587d4 (commit) via ee555c2a33258a7b272f049aca369edf4d86fa7c (commit) via 9e03a63ba8b6b01ffbf5c0ee207c8c0bf040f494 (commit) via e91f1616d92120bd364437fc915634d48d653512 (commit) via 3e763d506cda64d76c40d327371925e9df7cbca8 (commit) via 77303314dcd58cc820c5e9ad9c30c0428d59b45a (commit) via 97d21092944354cce5de9a68a7d9bc637cda085d (commit) via 0d887397367b4b8c01a584e8e1a4b3192ca7af18 (commit) via a4841e12c0e3865a585774b118e7b9840bc1b253 (commit) via 2119c33b7e7b5fc348c0b4b24e402bcacb18d5db (commit) via 848dc85187ec1e4b2364987d911ce7af93062b45 (commit) via 1f411b0cfaad12c87da02ffc2b20bb791b1f9024 (commit) via 6a23e16ec289ca737b7a4c1020e6b0c71c749672 (commit) via dd90811bbf61fb9066f84463e9817b94324c105f (commit) via 310054ac230d2c7ad2a88052502cbd8939cf2529 (commit) via c459beaf60b21ac906b70d4ccd6ba16d2cae5be6 (commit) via 5ff7fb592e5b9c5a6a0f05055a2bde5623e8cc54 (commit) via 57862079d8956d30711559eadbf0da31b39917f1 (commit) via 4308eb3d165dfc473182021c12ec877e388f60a2 (commit) via 6845e2559d66be8d2c67d936ca597ade05b4ebbc (commit) via beb991110d84e9c0a6b1339e22fa98284b08bac9 (commit) via c834c47dfc8006fbdf95a22ea4241b53d7235915 (commit) via 5b1364a2e39cd799d663c597bafa4222be888088 (commit) via 57e48f16f2c3b73fb27057267c8092a41005bb75 (commit) via bdef729646a5a559c295ef9c0fb83eb8a6b34905 (commit) via 68d316e0cf278021d9fa4553471d29803d09a394 (commit) via d8ed309d0529d9a7b28da561c3640290a8041b68 (commit) via 5a283b79e5fe1739142cc513a9a701855849b2f8 (commit) via 73aca0572b30a46bf5b5e75daa300fabb6bbb8cc (commit) via 0377fe1e2b05b729b2baad6c78b922aa972b7c09 (commit) via 696c6afcafa97d50ae7677d29e0f02e042a58088 (commit) via f15345be41c7b5514c2e0c3bd6cf4b8106b449e7 (commit) via 5951c676e6fd84e08e5ccaff8004c8cd8223f92a (commit) via 283c93fe9abe481836a41eb3e565a02d215965c5 (commit) via 9e8f2e509f61c4478f2176a03e45c1fd35537d82 (commit) via 60666e2cd38d4c2922cc4fdc2e062fec975bc5f3 (commit) via c84fe1e71fb9bd9bbb4a5d5184b58ecffe8192e3 (commit) via 9143627c93aaa3fadd54aabaf662918e8f882c6a (commit) via 003759ba0da49dfa35bccfc1c4432e4ec935cd86 (commit) via ac0b59ef015b296114a97fc61ef4f9677302da03 (commit) via fbb115d198783a32887649dc630e14119a045918 (commit) via 74720a298cec05af29f18315990f64ddfda344f6 (commit) via 10a1477b631d9173a32827a315aebf1941c87564 (commit) via f44a0414aec38f6e70eb2c11c75c9f35bb526259 (commit) via b4444d605430b340a30f92f80ae8eccd37b1cd6b (commit) via 450131cc0e80f22f169f2647dc7ecb1bd1024cf6 (commit) via 971d490e5b22449a9d770e8675799698f857a452 (commit) via 9922e70b1ac308a74bbd3aeceb4cc0406b12f55b (commit) via 5000fed5af6925a7d57083c8806ea0537e97bdda (commit) via 5e4887e67305c2973155dc763701f7d22c08ff55 (commit) via a4332cac4bd178fd1b771154413565ae0b0ce61f (commit) via bfc367054639b9a3de3419c3e66d948f25efc2ec (commit) via b91f6f39f7be92bab1302c4587dd51423f20cf00 (commit) via 89cc3d432bc576d00cb12880b37ec8b348599897 (commit) via 40a732800d52b394d7bd4a81e9aaef04ef5914e6 (commit) via 5ca7e5057bcadbcbe6b933b004ba37ddb5199dba (commit) via 6092a770f66bff959749170141d44188f4b6f3f1 (commit) via 143fbde17b5b22355a372bac774b26e75eba574a (commit) via 18ca9d082072f90eb8412565dbaa242ad0a56c14 (commit) via dd71b683e5ba86708d301cb42affebcdd558dcd4 (commit) via a1b3d79f728f2c626d3aac2e68dbab524baa4634 (commit) via cd32886b2f5c8f6bdcc9185274a934102c821a20 (commit) via ecf3c5c6f322168e11aa37d899b076ef4abc5625 (commit) via 49b3ebf5f5b0500eea9f5e241c5d5024fa3a95fa (commit) via 163cc8bbdd20fceaa6958a071e3d15f53b224864 (commit) via 6d99406e698a3d1b0b69b0fc0f6e09e93fc4ed79 (commit) via 03f74a16cde9e2e7e3433054970cc7cadd31388f (commit) via d07f453f39b477d687dd87aad2e1cd766598b434 (commit) via 67209a9291c672f7c6d6cc36f28e6adbc9c42b8c (commit) via fc41a95f0803abb2b5daa4f0eb21cf38c625bd26 (commit) via 20b7826e1477c4463c9fc7f710f02d5f58a0749f (commit) via f2a78aeed94e9ccf76c1268e8ed934669a08d389 (commit) via d085403f722d107e812dbdef0762674e9e4e4153 (commit) via 1fe3d126a571427114d56e1115e73feb06cd5c3e (commit) via db89590f364c9c95628b367914188ca6a63b8eab (commit) via 757737075a3f998c9ecc93f5c467dabe4b005fee (commit) via 5395c526fc0066aad302298ab9ad46cc19b771ab (commit) via 5bcfe98bd5215d8fc1638879c3ee92ca2c1383b8 (commit) via c9854a5843ac75df32c26140e1b568a3f0018699 (commit) via 90b08fc27bae5c08e1f91a130eabc27cb092c6f5 (commit) via 5a5a1d90f01d6364426be5f08244e9acf0526734 (commit) via 98103e38d0f6b64ded0503462abfc7b09dc8bea7 (commit) via 7b81d8c21e0a0d8756f0afdc0530c2d06ee3bcd4 (commit) via 00530d74d5d07a320c998d6caccc00cf4e59b06d (commit) via 6a796b57b25267e13532e22c0f31551aa7c81acf (commit) via f5da1bb34954b1a9e78f07133f4aa3ce332a329f (commit) via 5b7eb38e8e4711433ba83b22a6a74efd1c6e2de1 (commit) via 6f904d01009bf26d129b2a2f0335e99bf30732ac (commit) via 9045f6a30fc8ce21d2b2298c27ba1da41c23bbf3 (commit) via c1e9b1c283caccd468adfafd0496edd63964b899 (commit) via 99a0a6d8163f27daf08e53da95b8c685bcd5189e (commit) via d3e0e65de3dc8fbc8b96ef9780bffe7390bf6b70 (commit) via 662ab10bc2ec952b89b6a6f5824caf608734051f (commit) via 08be74bfd7e24af9ffdb64dddffd3d56bf52c3ce (commit) via f789441179fb4bc8df01d6a5ec6c235553164d3e (commit) via aaf7c94ddb9d906baff34141e65623e2bee98020 (commit) via e7a88ce48243b953c4234692726c7f663212e5cd (commit) via 11fcecbaadafc86aff75960b4efed06ce76dce74 (commit) via c8ba777f6dfd7a5d8a4c4fa7b420bbdb5b93b366 (commit) via 6b163fc6e5b21f5107afab5a270617ae0efc9ace (commit) via 9816748847fba47bb0633b49cff1432fd677897e (commit) via 261ae28ccde2059905b7febeb5126515c2da39ef (commit) via 124a8632cbdb88be8e9768a83ddb63790d5bf60f (commit) via 77d83568e0aa96c34520b78e3671aa0d140a158e (commit) via 88f1e79f3e8076bd57d9ae54037fd05f655c2960 (commit) via 1b135cdff26e36fdd846edd2625e7edd7943b0b4 (commit) via 938e5c075a612a8d327ad387baceab011beb6904 (commit) via 8a803d784bf65d2c8556eb1e6b6134b878e89c79 (commit) via 124c741f7bb4e32f933b2ef9ca3414985992278e (commit) via a7dcf130e90d08921a7d68a15e8568355ca934f1 (commit) via 1cf9c754db3fcdcd500dbec48e509535135eba1b (commit) via f941320ba1d0b947a31c6f9cca5c9395135226bc (commit) via 52445300d67df73b5b8c288cc33c915053c7ba24 (commit) via 1bac4678eaf7beefb12ad91ecdea0e551b4d0fcf (commit) via 5072598f0795f44e157bef8423feda7de24c5504 (commit) via 94632087b23f26a0a480cdcbab68fbc9aee7d75a (commit) via 428680da92b98755be1a908ee4a5d705d8753bb9 (commit) via ae8525b82f03d3ce0c1e880e62bec0956f90839b (commit) via c79b98af375f33cb4a6db4efdd941c8ee92d5fba (commit) via cbf0c0fce4dfe23912f7cc012c6f0234a5fd694b (commit) via 1d32a35c10b384e8eb0dd2ce68c7bd11424409ac (commit) via 3fe0b6f0ab5532798206142d5d10c5d39a6bbd6b (commit) via 67ac4ed1dc5ad049ab443ce76a3f93b207703cec (commit) via 5257af363442aa4168776b70db1fc58d218a20c8 (commit) via 3bbf77fa01faffe5c430991b73a177ab1966e036 (commit) via f564f65ff551932aa17a9b4511cf66baf3d28f47 (commit) via 70e245f19ec8e753784db6a1153c64e5f5eec16a (commit) via efdc19c58b64cf2fece50cc241a186972e5afa19 (commit) via 8e45c805d99aaa2a9b2c94d5f84b8b874cd4b77f (commit) via 1a0a13a24fdfeca40587685849248d8c80ea0f4b (commit) via 6d3765236852935f5ef312e4b417be4470fbed1f (commit) via d480ede35b82c540e9d93b7bb4280014875f6444 (commit) via 170fcebf2e866ce5266067716025a57c7e7e6ec4 (commit) via 2cc78b962331c776810b3bc15039813a1589cf4f (commit) via 25cae1e85d501c463141388e4eb580bdfae6ed2f (commit) via d780fb15a4bae35f37a3b0e34085ea0b028357e4 (commit) via 87ddcad03e69746cedcef9b9820151c6bfd8d7dc (commit) via 91bcb88c3cbd9500563ccddb8dec721a04e3f7f6 (commit) via 16262ed7628cc6272178eb7ca1503b66b2380cf4 (commit) via 2aae1c1dd26852a5186570ea25924c6103c28d79 (commit) via 0194780abcd2c4853af2c053cabeef3dbb996304 (commit) via 19d86e26e392a80163d90cbc1accaf45412968f8 (commit) via 2462af22bca872e57714d8f22f483b60b4a44d34 (commit) via 9c41382165cef2524eb2aeff862e6961545f2305 (commit) via feafc7f3fed89d1a77ea7e3602b8e6eb57fec9d9 (commit) via 0495ce4f98497ba607c5d297f2d5dee70d9a36c6 (commit) via 2439d546c84a33d6321adc2fb806a9ba38d938c3 (commit) via bc789afac9215ea60069393e3a2af4afb149a84c (commit) via 3f915531adc588a552d4528f638badcffbb2f012 (commit) via fa9853d833a10aeb8ea94abb98c0ebe3d7dfe5be (commit) via b99448e0160d5ca90feaf1431a826953c61275f3 (commit) via f255280fd908e4ef1af5eba6230e81b74d339855 (commit) via e4c5e81f3116f620104d377b78e718ee47723125 (commit) via f7947d90db0b5a452be1714ae8770c2ffa6352d3 (commit) via 0861580a14db044ed1a1c6bb8161ee6786f19eb5 (commit) via 266808c4130a0b40aed236381707462a9368a1eb (commit) via 89d0f720cbef3f675cc705d961830dc12e96f712 (commit) via 64819cca91eb2fd08a3137a87a8423cc239f2e59 (commit) via 3bd814460161f3af682e116aa561efcc30793eff (commit) via 50454c96d691871dce0a7f3176ceccdc09419b32 (commit) via b689679594c99e63003ed8ea8cb85c4f909c4240 (commit) via b2aa3aedeab09ad7b2c95353d2d3c3d867bcec53 (commit) via 32cb564bea57af007d03fa31d80a0177057fc901 (commit) via 7ffa6bf99972a980d995081a66b858eaaca9db7e (commit) via b95b935ccfddb9888802a9fe46a210002fa0e229 (commit) via 37c6a02dc27154881c8b6b03beb7a17528ed5907 (commit) via 7583f7490e23e025d9072533990f7cd9fec4b61d (commit) via d84b2cc334880b811c54586c62e80f73228f991f (commit) via 88b40744b5d750f9a8641f97b08855dee03b848b (commit) via b6eafd5781bfce88e29b5e6d5bf07bfe742c9654 (commit) via 65b54a01ad3ee83023707a5bd4bc119a4ff5b7b1 (commit) via e2d0da3366ca09f98be4f5557397838f4a59f49f (commit) via ed1c375c05e09997c9ffafc739fb6d3c1dca5c27 (commit) via 6589f67fb725df68836646ab1e30f496d58f9e36 (commit) via eef87a37cdfe6493dd292e1278771a8c6c819242 (commit) via 04a9145af5a16ea1329e63b7708886744f50a981 (commit) via 0be5ed7128b59c6ac3b508fa89fe793f5cfdf07c (commit) via dc90cd68778b374122162cd3a87a7b6d27ed6866 (commit) via a9d9e8cafccab60c209a23a7ff71fad572dd7399 (commit) via 34b7003d2a4edd84c54188c36ed6c5828aac5d9b (commit) via dea01ac30a00ddf495eda3b60f3818f2340d8fba (commit) via 9644c835b38d211ee17b5de0bb0ae62fe188eca0 (commit) via b9c6f08276951e815a1fcaef78f4e894471d4195 (commit) via 4b6b2a571c39439f3b07d56f36e6a927ed6d1dd8 (commit) via eb8c7676a4723a44245e47630f12d4868e8e182c (commit) via 42f0125ceb6c34ce5a67e9954d1831b2aeb263ba (commit) via c150bf087c9ba3425d91bb1103589a928fc87098 (commit) via 6615408193aa542833ef34c902a35831bd85d25a (commit) via 3f6ee75a66042370fe48833bcd5c712448ec59c0 (commit) via 7489e95b8ec35c7faa1f9dcfc3a6962a56969531 (commit) via ea0a0601682af00706cf57f6d3e27d4f0895ecbb (commit) via 6a6900f61666977948bffa1409d4633799de323c (commit) via 71e74b4ae453473d597ce5a53e2e8e7641dc832a (commit) via fe9a16c80fe921d2db66c0699b4197f85a281e7e (commit) via dda4755b467db297b04cc1678e0d7c6035ad4c2f (commit) via a23ac516b3ccdba9efb22f19edcb7cd676a510b4 (commit) via 4a5e003d4c69c054a7e0123d9ec3adb5bdbd6e39 (commit) via 287bf93a114cae7461e8bf8da021b135ce561a1a (commit) via abccf484e3c13395520fea544885e139fc79475e (commit) via ed5087e32c517bac158f541fa7ea916c670ec915 (commit) via b29d96701b6df7d32f36ab47618ba1b7af1d9167 (commit) via 8ca8daeb475fdcb2d15e508fe911bbc7ede7773a (commit) via 2d68b2c593b0bc19273e95f98ff29b3d3cff90c7 (commit) via a0841b59bdacc1e550e6607d9e44e79ae456cd19 (commit) via 9d5fe8e96a074b6e112d981302c77e31a1bcde00 (commit) via 80802a002c16249e99c24f62adb8ffbe006b97e0 (commit) via ff69763ca08fbd3a9831ec0c8adb32a7111b1a46 (commit) via 3e922ceb5e8cc4c4d72ddcbd8b485803c49d84f1 (commit) via 555fa77a35b15cf1ed5163bf9fa1782079534ef1 (commit) via b83fe27d8d3f25ed6e229270966b8323f5fc3ae5 (commit) via 7ee0abbde1656b07eb28ddacca3d22bb7aafdbd8 (commit) via 276fdf299306f83b12bd1cc886f5e37d61f25c59 (commit) via 8fce59848b52f71ae310fcd64fcf943fb2c42bf6 (commit) via eb2ec41a0422e9acd4961e32f6f28c20846a292a (commit) via c337b2a0b455942eb747d22c0cd71e60db54989d (commit) via ea3d60cffaa3761f258ff1bea4ba6f589cae7ad7 (commit) via 410a3e4b22c72794d4f96e41c1d37d84d6e7e54d (commit) via c3635e502c9804fc0ab781b9f20e07449d4e6c23 (commit) via 1c03c12b1dfe56be5f303aef022da0fed8dee609 (commit) via 4a8898cd6d4ab86d04f64a699a2dc95d35846744 (commit) via 03d40110dc791a803345150806ef3a13ba3a0957 (commit) via 5751a09092a35554ebdd75ea0aa05c63ec414734 (commit) via 5aa88f0e026c004524b88fd8d2be13ab85f17e71 (commit) via cb995ddea2d633310b270e99d020fe490fff5ec7 (commit) via bab24e782c1bf56ef7263e91e5cf78879699a036 (commit) via c86e82c09299211c76366640dd0f21a6d5acc9e8 (commit) via e0d6d01e522d4207eecc927cffabbb9a8d1b757d (commit) via 8c7367e3f0e5e104630857561b4730a0b32253f9 (commit) via a2f9167c5d02a1cec6213d67bd877bf6d5fac89a (commit) via 0f7cca1dae77550487c2175de8ac2032b8582a55 (commit) via 2e2455cbd3ff429181d147374bbc3810acb98a97 (commit) via d3983f7fc62eb35d08ab69ecdddff47953d86dab (commit) via 45c5958e36cf55b00338b3f69cd48f43c51a03e0 (commit) via 0bfe96a8c35aae2744efad664444ac5a963d74d3 (commit) via e1db7aac307e85154c1abd91afbdf61b65780caf (commit) via d99e1cca20a58abce5c300dbfef98e1180e3c7bf (commit) via 5f3b067bee1b30b6d74ef48f31e9e2bbb27cd27a (commit) via 4b513c0ca31d5a90b283b794397e40168070e400 (commit) via 3e0eb3307f2fd4c70fdb6eb4cd0ab44196107c89 (commit) via dd8c575932b0b1462c3f4f1cbbab1a5fb1526036 (commit) via 33f08eec18b440eac1f24f6f18b971c6203307bd (commit) via 0021d0315392d18ca4ad65f210404e1c217ee9a2 (commit) via 87e810f223bad6fb889e7ae4ad08be98461bf6e2 (commit) via 7630eb1975417ae49e00c58afcea71104a62ea55 (commit) via 83dab0c123c0831c736fed5de3c24c2168e40541 (commit) via dff28141dcddd90b0bb95740d66b8f698cc8da6a (commit) via b5b63da0883bdd3487e7a3b423acbdd5b582326a (commit) via 0f9533e61b775255cf380c97c72dea1c7845e56b (commit) via 99a224e3ee0b6a770c388313a7b32746a95514e8 (commit) via ce1ac9b92d23577f96abd4d750fc8499cc40d70f (commit) via cb85bb3573a89f16fcc9b2852e3ce1bae30838fc (commit) via 2d402239c7bdfc538bd4834112abd92ba571c0a4 (commit) via 049d324e42451fb92d9504551f3885e221f05b8a (commit) via 05f1d7a4627e2bbebaa5a80ee3aaa98467f184b3 (commit) via 1cb7ea61134536d803a64d5fb64fe37bccdcdb2f (commit) via 3454edcd19b627a5a00efd9b70a6960dd675ca5a (commit) via fdd09a02697af76ec316ec1b5c002d70a44543bb (commit) via e6af2f3d2e754f3cda3581082658443b7f37d9ec (commit) via 5651bb08786a2a51f389c44f5904f5de777e987b (commit) via e5a4007a3b4aefeb3d814adb75835adc6111e238 (commit) via 4be7f38d57bdf94a600edace627be8e14f331250 (commit) via 7b3d4799f8c03162d537e65effd3dd8d56fc3386 (commit) via a956ab7f3ba4092ac6685eb0ec1e3185dbb54a43 (commit) via 170bcb6fdca5942d0484042ad38c09b420554792 (commit) via a816fe298d14d8cb27e1a64858bd94c3581f7d05 (commit) via cfd808ff19bbd407dc230458e8a9369412244487 (commit) via 2c3f2dfa5a6cdb272ce63aa4d8bba842e0134f42 (commit) via 5085a984e1ac4d49d68f02058383be21633a3fbf (commit) via 8e5db11fd926ddb615f672a16f2e6fe5643f3a8d (commit) via fc5afbe97094d741b853b045d51351f3a370e87e (commit) via ecf6fc8dc106e181dcd89c099933a8faa96fe897 (commit) via 2295040e85321911d65bd36704560725d9c2ad27 (commit) via 4e174e0960e51fa1b83588d130e435bc6c7af8cc (commit) via 31840e363f61c10770a3d22467396c05e7d3d422 (commit) via 98a39be6cfb7b229ff78f7045c6d5bcd6b6c7509 (commit) via 620e4e5e21ca9070e50038c999dfae20cf5416ef (commit) via 81bea69bd1d52977c3782d26560f34563394f487 (commit) via d69877fe8617031a4077bb2b97d76af6b2e7b088 (commit) via d0e371f516085a8d744eaf3b24902c35a910528a (commit) via 0464298956a204578aa8421ca0b84c089a97e0aa (commit) via a722316bcb20dd73d3da547882836d55a83b56c8 (commit) via c0aab7a84a680d576143d5730afd19b841d85772 (commit) via fad7cfd464542831ad8d3dd9055c00d661d8e15e (commit) via cd4ac7235cb24c80f4661f42aaebb2e08ec7215e (commit) via eaac307aadb0cf7b2075cd6bea5cf2ea44d49227 (commit) via 0780a8f57ac6a593a53fe2fe9ce22c889a77d5fb (commit) via 3542a553bf5149734c9002952795026ffbd06308 (commit) via d8c6427fa158a96a2e41f07d60c924cee94e413b (commit) via 8adf237e52bea9aabc0f5d4ac8884ef9d2349d0f (commit) via f92e953103b7aa0676481c396fb6e521b5cbc64f (commit) via b8db797ae3762af3d3877119ff64f0121f2650f3 (commit) via 243b7c40d44df2c8b1cb0dc55e2a11b15d9e6f5d (commit) via 5191b74524e6e2ccc3484989910da8ca46ebb100 (commit) via e9a1ddc594de6e6251bf06d732775dae2cabe4c8 (commit) via 985a57a1c1ca6989524805bb3e91a222906f88ca (commit) via 53fb6a1f50f9c7bb29fe422c5aea446fef6a8abb (commit) via f266182aecb687f0c20c7fa7019ad0dde3222f46 (commit) via 29f9db5c63dbfa53acdb449fad78d716a4113a88 (commit) via eb973f935f25f5bafdb8d55360a1b122e9dabfa5 (commit) via 78c2edb129594b198157799b3eb327f4a3915908 (commit) via 654fdd8374a4447dc65589eb55b39323384fbc60 (commit) via 7bc72efb3ce30aae61a685c8f973888574728c8d (commit) via 9501a6145dfc5d3905d6b241d6599806ec40fd38 (commit) via e184603378e85046fb6e4d627f47e9853577486e (commit) via 8c25aa2feb589f733b5b80ec231217fc31518752 (commit) via a688c6b92861c77ee8d065ae8c679c317fe8d0c0 (commit) via c339b64cf241788edd9f886daff619eec41dc242 (commit) via aebdad399efb1394f904428b52011513f7dd0b7c (commit) via c2f6872c4e98a24a24675fa3f9fe016230eeb878 (commit) via 7954ba9bc196b34ced6c3359c464afbd0678c2e0 (commit) via 652210e901f5e1e9bf8e25d35423348de8e50c1a (commit) via 8107508b3e610cd2fbbcbf6111f125d39e16f74d (commit) via 6d855fbf442d1ab3b209ac9b46f97ad8e567df41 (commit) via 9c60ae5f1105d6d793f2693630bf09abb7d66935 (commit) via 584ad067ba28924861eeab06cc73d49fdf6f9f89 (commit) via 8df25f9400bef5dd374f74725a72e818c2424f4e (commit) via f1223e34c653e4ed6a5f86fe17ae72e7d7a89e9a (commit) via efc90eed7768e1263c60b299e24c6293df274708 (commit) via 36b7fc7db6a64b4537bea38640e324c9f283a168 (commit) via 21d26a9ecde5a23d6deb6432153c2aede533aead (commit) via 44dc9fc48af8171423b4d5e996a8415dfd5f96c0 (commit) via aba364d190fca77d86412f25968a597edf3d725f (commit) via b9fe2785f2df089c731a64c4939a364d49009333 (commit) via 6c6c13297c67a7838ff8e05fde1bfedb41401b1d (commit) via 454b47ba0bd16a98b15896c732f9a4b91863b581 (commit) via 57a78b55260616053ae0f733d2cecfffc9e7455f (commit) via f77320c12aaf74b7d22463965242a3e01d36d882 (commit) via a5d9aa506350291cfe7ca3e144a97edba74959b1 (commit) via 1d00fd7702d9cf9c1f2d7a1c17bc9a80f345c39b (commit) via 3133fa50948d3f2369a9e5b598ff6537ff7506df (commit) via 66704e4271f3bd3b869c86bcd9aef9be87f831ea (commit) via fc58a40e763cd65053acf774c3cf4e4c743004f1 (commit) via 7fd339b1e5a23d8e04fe3b4607be260bf26a3ec4 (commit) via f61e0975540504c00c7dc6f763a83e8c74fe7d83 (commit) via c17809bcd7014bf64cd9f95d9e38d5198abc4588 (commit) via 73ce99cbfe5712b0f35644baf619ddc0ca754de9 (commit) via f044bbbf08575cb06f468f30680108162d7288d0 (commit) via 7faa4d59a858ef0d7eef77c2ae8e8194c2d87385 (commit) via 6e947179a84cb790616aa038e9bf127e306ad746 (commit) via 2f37ce5e8656dabab304453b15684d60e7a2338c (commit) via a84461160c927279de0435223c35c539e6e22f0e (commit) via 8279302110ee6eb09a16e33b3bf8f8ad4ee13b73 (commit) via 139b39985f26d4517072d49715c3dfd50a0d7001 (commit) via 38e75bb3c6c4c41ff80697876aa7498c80a8623a (commit) via 0fc6faf2ddfb146704146d13b71bfd048128917f (commit) via 772edffbf0c08fc0a6fcf74fb98545b7afcfee13 (commit) via 58ebbf14c232d647e920727225dbf4c64d648128 (commit) via b134e89430404b7ad211ccd7b072c28410fae230 (commit) via 5daf7d92f8971f13fb2f6fac117f44f355ec504a (commit) via cbc772b89d94d5c02c8739d4b428a3de52f4091b (commit) via 014a098479bbe091b47d20c070fb05bc362723c7 (commit) via 18b9cf4abc351f98bbf549604d3c327a554a0143 (commit) via 5f0f84c7e0630d7b8190c18badd5a68e2dd08ff7 (commit) via 0814d74548cda4e2e10183ed84ed8d0c4ff058fb (commit) via 2ef640819fcf9ca741b3ebcb543b9a01ffb40689 (commit) via b736f5f269a1d04532901326304597a284af2c70 (commit) via 6bfcd4db3b4fbbdeda2e8736b0b88204e68b192e (commit) via faf4496db372847f34046acfd0d57dda7812eafa (commit) via 049ca05da93ef7f6fced82a88069a382c6008ebf (commit) via 100366a2674a79cdf654dd17a8929fe9ac2e303c (commit) via cb6229b8b8aabfc9700dae88485c89738af928bc (commit) via f49efe283ed005aac642f5af58ea971d468de88c (commit) via e3ec57483464b4c509e9f8b24e4ac8c6990f823b (commit) via bae71966fb35649dda8fc4f962316e3dbea8f787 (commit) via 2a6e8644dd9650c7c749990410a5c50f12a786cb (commit) via 4833d2ef45cccb8f3e6b5a48f9747386fd9193ac (commit) via 43deb8e004bcf143df8757c65ea5b5fa33bda893 (commit) via 4aad340ec446e3def2bda4f2d474ab0cf86e902e (commit) via e15cac8ee748022d31e734f3ab9529bf6c36ac25 (commit) via 8b3a537c29974da62f4a46f4631bbec1550a2a23 (commit) via 12b471e828e4462cce4354c87bb4fe18aeb600e3 (commit) via 071c0e3ce42010ac62a22dfb62c7b6510506771b (commit) via cee843475d82150cc56d12badd04eb737bff6551 (commit) via 85a035bf00d53d33251f30f850be7be169cbcde8 (commit) via f9c3f7b16479f84cde3b0249f83e53a32960dff3 (commit) via d9195ab081b9c23a96d5a9c1b8e8be4da4f6e976 (commit) via 5bc33226b2a0e8ff3c80b292abbfbc6f6b2c405b (commit) via ada104175454f8e393083f116e200344fe846f34 (commit) via af2960e0fdd8be7cd3ab8b2b894e18a0d3056db9 (commit) via 0d80977af4bbd1c76448307f577a7f22db792e65 (commit) via 6786345210994063030ad82f7ece66a461bbfb76 (commit) via 37317ece8a04054eeeab5de5157f8c366bd69f1a (commit) via c259912b14fc63db0441c30c33b79ebbef058e06 (commit) via a44191abc489373d295ecaeb5c2eb1573c876a1a (commit) via 0d6c98d895abade47ca13586fe56e2d0398c0ca6 (commit) via f32c0a2400238e754b630d99fed66f36dd0f7083 (commit) via 3e6058078433089f145903d25e06dafadeee9629 (commit) via ce2570b2071360c0b4bb4cd3c62ed8cccab26513 (commit) via 4e0c75b78f5745d1369867f25a46ab7d158b4469 (commit) via 2b427c2fadc917ebcaf2f246d53504ce5b6ad754 (commit) via 74cc42e937e3117e9514f0c1561f212a8867bc92 (commit) via 8b83d1fdffeab9d24946552a9b8252c2e0dc4570 (commit) via 3d48c5404cde1ca5f9956d9587f7d5b134a696eb (commit) via a586b60129bb29ad99107164439b38f4de60f599 (commit) via 3804122ab2793b9d54aa8c69df62ed86f526d50f (commit) via ec43aca7037987e189a39ebe2c93c7b4e219a9a7 (commit) via 1ca53f5ef1335561d952603d48c48da549d41271 (commit) via 15ac4aae0e3199fe8ac7f46cf4eb064cbeb1660d (commit) via 3125c47d27d4d57cb31e10c4bd658fc1e352299d (commit) via 36bbd07a765820ddbcaef3db4e2a78d95910f5e1 (commit) via e1dfe8cee619be2db2dcccfae5381376d336c6a3 (commit) via 6962a41e6b83e1ead36ab26b06ebe81aeee0087a (commit) via 5bc64fe6c25f3c02dda7d22eb65c07bdf2e6eb46 (commit) via 2ca89b5a6969ce6b0bca44abf02a072e28e5c1cd (commit) via ea52ec9420a6f147a78276bda8110999faa9e094 (commit) via 9175a378f5d8786a54e35576853e7e6b068f17b0 (commit) via 19d92d5e6e79448337aface8ed40df78240d674b (commit) via 186f69cf26b02ec4e2583c846ab3f2d4211997b7 (commit) via 5731ec30f0596fefede4321e9883043aa7db60ba (commit) via a09274c6ec5a3cbe1d57c48199279946d6c997a7 (commit) via aed259ac414e49933e498639edadfff6290d2a65 (commit) via e653f46677450090b6acb46e9e12543cc307021a (commit) via fc366d25946f7434527658475835d1e587cea4ea (commit) via 4b94f3420c78e1bb7aa1324973e3ec76ba765c27 (commit) via 8369e3e7822712f9415440aede2a470a50925107 (commit) via 664d6178d82edd74e184ff31c8a1faa01b884a48 (commit) via d851a8b457251a577f10055d9fb277b75a82da6c (commit) via a2648dda97454efdc8c785d83cf039f6d2383e9e (commit) via b5f8113ca7796df47bcb04bcd77991885c3b1b07 (commit) via 1dc85a6652bc8255ff7a9ef39028a7df45e3007b (commit) via 9e1ee3a7c90af46a9c8126e3e5136074db5da490 (commit) via 8866f63f60a46f947fb9a6658944988da84867c4 (commit) via b7b2ce56a7f215574144da390b803611b9e5eca1 (commit) via d9d8816f39d625f7f5e6f87ec831badcff4f3f5d (commit) via 95a735116f51285f78acb04d1bdc7863122fd94a (commit) via b10f7ac534ef611fcdd6f09e830be6b9c4e28e11 (commit) via 61e3ceda21800949f1a4411f27efefcda789bd4d (commit) via d5f691be0b78a48e836dc42b97d000ba151c44d6 (commit) via 8b63265ea53dbd2e035a6b616ba0e82bfc0decc0 (commit) via ede1715c1d4f35e806e3dabddd09c39eeed9a628 (commit) via 03879b11af0b2179d879358df3cce3c2b7acb047 (commit) via b4edf7b5d2b2ba8eccfa0230dad98d0815a17d5d (commit) via fc149a72f7e9128c0ad54014d745500fd31eea36 (commit) via f0d52f55f155ac3f3e2bafa072a4e0d7f1431d76 (commit) via 6f5cdc0c83d9c2413c8ff76868df0ce7d1f49bcc (commit) via be9ad8279a29893943b342cc5ffdbf9868fb1b4c (commit) via 7aa41095fd23d31a4572966ba53ad85f61f5bc99 (commit) via b82526c6542afbaea7e315cc4628cacdfe90ebae (commit) via b32474322907fcd2658ad964847fc62b02659517 (commit) via bced9d5e568604509db43b16d8baa7f1c7b4e714 (commit) via a26ac919ef0a098b88c3764d5471f5852071f239 (commit) via 1763f0428193cd6e28af4e49131516299acdf3b7 (commit) via 20aab1a4e7e42ac400a34143403a00c0ac0ec947 (commit) via 59fc717c252fb6613b35ff3a7d2cf01e91ab6a69 (commit) via 64df9ef33a2f4eb9ef0cb17a2844308d9c7f7034 (commit) via f21bad80a297e26b886f15f38f4d87cc5ce9687f (commit) via b3d1d6d895355ee64c74cef1ab0040db02f81894 (commit) via bd2c17d614e89b5786937565302c6fa54f121d22 (commit) via 44a5400d105b957d27780d515d0f1d51781f8de9 (commit) via 22cca9b8100a59cd156e2ba39819171a0cf71881 (commit) via a786062db2bbfe375b51c200122eb3227120af2a (commit) via 0f5c1b404b0f9cbe652cf306e9dca0c25c70876f (commit) via a82282a08c2ddf2eb3a89d61fbf53af1af3c4de9 (commit) via b90ae70a3b3c77109a31dfc275b778205a817d1a (commit) via bfbc5241e928203f934fd4fd83fa8beb35b0fe96 (commit) via 3e5a047f1aee1059d262b4096c5059ce2acad147 (commit) via 06cc050c1fa6141e5c376230ef7ab19ba2942a08 (commit) via e0c26406aa53b5dc4c942017eaf2410d0057aa9a (commit) via 83bbfb1d53077176af86d637f713652e3ee01198 (commit) via 01d5e5c460a2a9cb3962990f8ef278389254f30a (commit) via 254a84986471d6f3405d9bf1798bc3f9582a81e8 (commit) via b173c641c4efbb5fd3f3f4c18676be81abafb066 (commit) via ca355d92d827a26d626a241535fe710600eead0d (commit) via f3a381115fcd9046d754697a67b65a22e05554b5 (commit) via 0dbcc1afbf9c85ac938f533fd7756f0dec9bef70 (commit) via 117272412e9dee1a1595718590a48e4c6750df59 (commit) via aa4ab1f904dfd7f6e3a95d310cd4d38875902c4b (commit) via 6199637e9540627b03d9018ff53a14f005274607 (commit) via 64bc4bda748b6c33d496fe294e959e7609b89260 (commit) via dc551c2b0d8d92227a56faad80781349381869f2 (commit) via abb5945bd0b10b14cdc43966145b1a34125393cc (commit) via 357cdee3a133a943828d85d6441dfdee9d347751 (commit) via 3603b3964b308273725198cafdc2ce78a80fa862 (commit) via f835f189aeb38a791ad09ba5c2d89300a3fd16f1 (commit) via 4c0d97dd98805a5d9fc73ab9818a653888c16103 (commit) via 1b8f0ca5154c9fe8122b31e25dac65a4df94f5b1 (commit) via 9fee70422783af120bdaeff62ba77a71226f611d (commit) via fb93f7f23022254ca8a6c67a2abb39484176b803 (commit) via 06ef9edd51a8ffbd77fb96f733cbe45af84e9559 (commit) via bd04db899f51b93581107ef35fc970b4fd54c410 (commit) via 4fd97bbc2cfb91a29fd25d35e12c5784f2637aee (commit) via 9bb203ed0f983305462a9d42ce9c906a292d42c1 (commit) via 247266aa3f1483c55e3169f02f10db59b87027f1 (commit) via d3b932fa678516d3f5bb7f7209547a876a182d02 (commit) via 71e77972c18e1ab905b36782d7b2c2f838957e26 (commit) via a7d2ffb2325478e4d242e3b7338f8ca1c1898ff7 (commit) via df780bcc018f65b6b182028df06dcd03ca10a4e7 (commit) via dcf11cbcdcfc15f44e07821ded87252ec31bc40b (commit) via fe15a1029cc02ce67f8f050763aca444641510b2 (commit) via 26a70449cce3c29446ebe1562bb2213c2566275b (commit) via 5e12fad8704e4797ecda3906f3b558775b70539f (commit) via 518b0cf3b63956b577c984a3c8735d2d75d174d3 (commit) via 68c86a20cea84f3de7721415a6cde8653e0994fd (commit) via 0470ee96b1268d5565905581fc137ea33cd0c906 (commit) via a39d6f6bc3ac8a99969c8627cc9ce18a095366aa (commit) via f3702546521cbc09f1180365e9389a0eef87831b (commit) via 48849544135924f13f1dea5b05afe17889b91b04 (commit) via 45fb82483cdcdfe154ad0be63ff5729a68eb9439 (commit) via db984477e466761311b5e102e90793b3de27f9b5 (commit) via 72d54f1c532035fd0040a38d24712777400a0aa1 (commit) via 40b3dba52995e2c0275ae1712a169173aed6fcbf (commit) via cc96249e2eee63e90999b1d6cb87dd355696a355 (commit) via 99489d9f10ac23da29c0ed2ed9bd371946df0991 (commit) via b8b598061a3968bcf3998040a3ca76a085592c83 (commit) via ddb967cca1a37501dcf3fbd6f64c2d3be1c0c82b (commit) via 6079a0d00f38a27e17c9d07465e108d9e1f34960 (commit) via 3a7f02197bb71553d47f24130fda1add30dbcb27 (commit) via 3c54955d0d6c994e36cd128ee7b7b286b0425148 (commit) via 1217ff41388e53003424e2f58265ed4321e2030b (commit) via 96c31fad71cab6bd45c094bbde7c4fded5805eef (commit) via f05d7ed5ffb00b4d146172e2fd29a988a534d99e (commit) via 89b5f4fcc7b8d3942fd92409ac57ddc3e7328560 (commit) via e286627334b08b524d228beccd818ebc4a10f799 (commit) via 36e9d2d12427fea463650aee4cf6fb16d3be324d (commit) via c310480c5dc76ad0c1eb4e842869f92121d5b507 (commit) via a16b24c9ce2bde6503d7580d40e0eab38d279788 (commit) via a63a9363b27aa84d01341484f02897814204c922 (commit) via f52dc4cae14a13185d264540229af87fed23c3a3 (commit) via baf8af10a773a032ff8254a38cfc69da3834fa34 (commit) via 7704693e9aa9e278e3fbd1a9de3b6713ea66b2b9 (commit) via 776fd9b947c58be96485e3b579c51e4df239efb4 (commit) via 1c94129e98dfc9a56a3bb69e22f2b31cd1b9083e (commit) via ff800a768c5e5bebdde05326644bfcb5f7fd0452 (commit) via b93b3b55003d4f7467569320061ae8a2b536ae97 (commit) via c4b4d8b3a67718e29edb5676273e528dab566672 (commit) via 0e97ef74d82fa4e18a0701216b1003bd346903b2 (commit) via 2ef8fe2222adbc3e76bd60f79d01451f99de16aa (commit) via 8c8731b422f30a626d4692cde98558eee65ef063 (commit) via 3baa817c34a673025ccfeceb87a7c1f870fbae75 (commit) via 3327d3bb20c2a4505648b59d72cfaada38e1ee93 (commit) via 206ce3c0ba730f34444a8627d6a4f261bf60fc92 (commit) via 94744965f810958b58d94d4b3e4f67566b392396 (commit) via 516c6fc38c0bdfd7905edb169a4ebfef689cf116 (commit) via 4e4551f9f37ab95d70d9226103deb673e8f5cd02 (commit) via ffdec37a197499929e2cbc4fa825f5bf9b7d0f26 (commit) via 48bc74710d4ddcf62e3dcf69e3400e4060a2bdc1 (commit) via a02712840021706cea43bd10ebf742ef38c8f710 (commit) via 1222f02e343e804f1fcc8ff09e56dc13ac233d98 (commit) via 65522e5e0ef95b7424714ec4d67345bf00e9b8bd (commit) via 9463d73cc4d58b190fac0cac6aeee424b5d29514 (commit) via 8db4bd115c566460986ddd2f7a8f4f90ee5baf26 (commit) via f29e2292c90d4fbdadce041b1c9d649aca3c602b (commit) via 860338491ee96274ac110459b3b316149d4585f7 (commit) via e855bd5248bbb7b77b45e269e4fa098b29c9e889 (commit) via 8ba2a8d4a415d2288786a0d56e90b3d7693ad32e (commit) via 85498fccd8ac1dd7345d995e52e1bf63d663071e (commit) via e24ef9694275b9345bf08cf46ca1cf064b34813b (commit) via e4554149c476e9eb9fe00368b2ac1ac7ac9ffe5c (commit) via 3de551cc22bf80f63ec9f05e3e934f42f79b8965 (commit) via 1320122d3fda5974f6ed51cef709481efd2d658d (commit) via eba7273c203f0698ccd716604cc298b7da1d3ee6 (commit) via 724a0346f7bd424ce0e5db246cee46db9f377a6f (commit) via 023188ffb48cc35ebab7cabbafefcd6dd31b750d (commit) via 17e98e00c449ebdceac980c0ce65c800030605db (commit) via a4add4eca2a19b52c44b6cbf074f99788e63d04e (commit) via a848abe24cd9cf05b9ffc9141d3f4a3ea633c056 (commit) via 4193430628757eb664f65bb1810ce5077f68e2b3 (commit) via fdcd559a8ea7748e662c40a0a4a34905611bf238 (commit) via 9fc20a4f3e1865e409d960c87e2e4a366775b72b (commit) via 71db32660eed1f70c06b624e661f8f5c2b938907 (commit) via f5c46dd84ec48cfd1bfe32ed0093a21321e89845 (commit) via 48de9169d0624b323462c084b68cb1fdb693d91b (commit) via a67d1e824c162a7f84a1d2520199c7e5d10080fb (commit) via 7e6b78759904dcf31d780a6e2f14f3821f4f23df (commit) via cf78a7df952a8d7be4228cb1c4a4b38ebc63dae8 (commit) via bb8da283ce40d3bb06df348ea2820dd12213a2e1 (commit) via 389002de96fdabd05b709415712b1d8d8aa264b9 (commit) via df542558c645f9a704fb5bcc2b2e304f6879ab35 (commit) via 1c4c4be509ab548d9e848a8850c30e3dbbb7f8bc (commit) via fe40570608f43aade8f4262e9ca55d98a2b169fd (commit) via c46dfb213997fa9ca26bdb691a2487a85b852720 (commit) via 2a98a0af46b8666eaaeda90f97810b20f7de3844 (commit) via c67ab22cdc680f6322e558b4f2c7cc74b6dbe163 (commit) via 437ce227d927d06b19d59ed2242d78035e61940a (commit) via 242c14ddbd7804531ab8720aa818cacc67bcb4ed (commit) via bfdd1ba604a31b3bb9f0baa29ce6fce467ee2e47 (commit) via 7bed0507554bed0208d66610417b690645768503 (commit) via d80aaad40ba0798861431fda2bf491b07099d87f (commit) via f55b7bdc5dd0dbc6897cb2d5f4673516a6afc4db (commit) via 1674a5b0a4c2432b9fe7c8ceb4287312c46ad763 (commit) via c752edfcb39e53edb972374eff795f027f85b4c7 (commit) via 86c07b916557ac83cd77f6250d090fa45b4b9bc2 (commit) via ab1d7df7575503c8eabdf6f8892b5944b06d98e5 (commit) via e0f0f80f0286b7181b1203693799f5fcfcd8b4af (commit) via 2b2b41f038af97b7bca2213cda0198d2a28f6c2e (commit) via e045fb202ddf9100965ac418f4aa22e65256dd8d (commit) via 3fa0a03b7e4094bef1b66e48ed437e1c0b41c49a (commit) via fb423b3c49d21df851b1d4a91fddfe94d835155b (commit) via 867c9c9c0dc2782b2d822557c8dc83c451409b48 (commit) via a85e5e6f4d53dd158392dd74b9632d84fb583722 (commit) via ff1db47728a37a7775a3b870ff9ffdc3249c3d40 (commit) via fe8acf7c0540ca39300bab5b014e428e84077c7a (commit) via 9891adf74becfa95463f6928fda9f8ac17c934bd (commit) via 20b6561e78f5acceecae7c6fc330f7f7de4f2223 (commit) via 873e59c0c456c2e13e66019c15f3632d06dac0f6 (commit) via b2a798fe32ce25e5ea19f6487ce9cadf9852ea83 (commit) via db749f404c29bc91a06f2ea2fb23d8a30c526a9a (commit) via 44760059fcbd9e84bd560c2be9ea00c5483da8f2 (commit) via 3f22656d8ca3ab264a714d95c4cdfd2cb9972650 (commit) via 575e2cc35da7cef40c521bccf0512483012bc136 (commit) via 53a5aec89998a58dff53946b47426ea692c5ad8d (commit) via f92f93467ecc22419c981f8f5283c81fa9d8eb01 (commit) via 47f9c15c60e2898640fa57aed4c5ff5ee5c0d3ef (commit) via 336893d9eb0ee732683b18e2e9e8a17e86e09d99 (commit) via e5d298b8fdb12283291f37048ae8f68a60a6becb (commit) via 066db7576dda43c6a716b4201c0399a1e3ae9c2b (commit) via b83420e45d963e2decd94336b97c127c75eed990 (commit) via 259292ebcccac1a3aba931d2437e1432f77c0945 (commit) via 95894a605e3c39c73390f4db1868c457b16bf5a2 (commit) via 4961092cad1627bb7703bee8e43439de9ab8fafb (commit) via aa78b61bbcc346e602f7f982ecb8ac8f8e72623d (commit) via 112100da9033fdf678e83ac65580dc456b83a2cb (commit) via 846043dd35cbceec4ec114492ad04805b6ee625a (commit) via b71a9598a408a134bd7d003b6586b345f2b961fe (commit) via f74c406501e5ffb5b6a3c8b76c831ca87e8f0168 (commit) via 0669de5d36b853fa7ff81081de719a0a48e2b654 (commit) via b5e895b5d41dc688bf0acdec352cbccc178a7236 (commit) via 443c574a7cc39ea490fabd1392108e651806a3e6 (commit) via 85aceda0262bff58a0126b2d4e75756e0507fe3c (commit) via 0730fb5c44e8b7bcd07fa902a7704215f2080245 (commit) via 3a77329c40803b02fe33ffc86197c1baf291aaff (commit) via bdc5618e18b9868f46e48641cdd35f361199f28e (commit) via a052479a5c75cc4e892fe68002bc0a4d97013a66 (commit) via 9578c3f0d18a5407a3106a6c487115947d1355e4 (commit) via 08da4f8d70cce97a9a6913d74e6c128ca6c0a40b (commit) via bacb20a3364e6a868cc47720f4a5c9831103af42 (commit) via 34e011748e796972be4a7386207b2a203d6f282f (commit) via c384fc3ca4e4523efa7330d7684f5cf3de672826 (commit) via fa5e5550f3f19842590b2d9e19b3c3e3c1132e02 (commit) via 7413f29fe63296cf34176c5fc68c2c5354b43202 (commit) via d2235fd2538eca934f542ff82f21249c3ff314be (commit) via 7a801b7dfb38c2f9f77fbda0f45ed88b70ca4b87 (commit) via 22ba9b6a328a0eea77559b2d607fe8d525445812 (commit) via 525ff0c3bc1f625756337c2ae724a58ec93ba4d1 (commit) via 87324b9b6a1f29a25c96149e165e99bebe750ef5 (commit) via dfb3f58f79b05dfe7840373aa08a86204c94f33b (commit) via 4ccf278f5bc9815f76f393948c09f82092e9f1ec (commit) via 707ac6aab6e46f8a55d44a57d9612073b2e47bb5 (commit) via ce45effe1324730f2c1a3d69d84b43bf10f09474 (commit) via 133465a0e579db3013887dd0ffc53b54773a7958 (commit) via d955b4f753d450ec10a2f928fcca1a91a50816ce (commit) via 75b85133d8cccb5d2680b0817d8720c6860238b0 (commit) via 9040df31e2da7db351d76dcc72568d44d0223f92 (commit) via 609bdd126d56f81cbf59bacd6931cf8a53c36229 (commit) via 7f68e4a1636a1691422e7a97873d34e1f5612fa1 (commit) via caaa51b9a12c3366582cd948a1ae1b9529d20fe3 (commit) via 5dc4bd1c90448eb4ce4f20a63ce706ce8114f29d (commit) via 1acd1c2b50f461ee2cf90fb7166240f180147f19 (commit) via 69aaf0d07645b9805d86db78d000835757f6a99c (commit) via a79e5e194318304dce8dd65c892cedfdad7c0f22 (commit) via ef9c59c37ef218e22cd132b7d995b2cf9d710a97 (commit) via 1d4b1a5853209be077d36af090ad7a32361a8923 (commit) via 87dfd53b276bff00e5e018b29043d05cf503018e (commit) via 157e3e1bd6465703ca75fcf8cf7ea2f5271a5c65 (commit) via a298c188127d06876ce493f23f8b8c2fc9941895 (commit) via 59d57f023f61446ade0767376cf6b38bb7450e44 (commit) via 4c669a0a34569e5276b8dca47165657aad68cade (commit) via 263afbad64588eb896452cd85546a07321e9db92 (commit) via b8f5eca5e2cff99ec0eeba645e3ccf5ac40d9825 (commit) via c6644709665e55a393d206f899f1cd2d96e8861f (commit) via 9330afea04d8e5c8f5c867af43a95fef0ad08d35 (commit) via bd9bfc644954a48b1bf7ea18fc260a1231840671 (commit) via 0033676796748bd8fe00f3f96d3470405cdb94fe (commit) via 02f566a5592ac0438f03a84d713bae6913a7e39a (commit) via b601bb6f1c30c97e21ea893e8c84b05aab97fcb4 (commit) via 88477e0429f62bc4d8d252da460b9202f2f924be (commit) via e8cc8d22d844a3ffc261b3ca79bb0ce5dc8c6dd6 (commit) via 3f5bfb425af391c1740ff7794f0283be3d0f7589 (commit) via 9b5ebbd8602fbe206f560228db9bcec6ffd68c93 (commit) via 9855a80fd41e384bc3accd07fa8b98f7da7d916d (commit) via d697f4eb489ee42a08f2a15efffe55e1c29860b7 (commit) via d6b7c037b2e360c7b3f3e6952ddc108746274b05 (commit) via bcd61da3503be85d247657827e5fb08db3ecf07d (commit) via f0a9094d809a80ef754642b13d7b66a90b61cee7 (commit) via 4eb77958d208c338c9bfcc32857531eaed78ee73 (commit) via 0f84db3af4403211de9371491d1ad8182969db49 (commit) via 6ece73dccb37278b92e631e1135283ae374f0aa7 (commit) via 42731e94bea0839842fc66cef27af71e12d753e1 (commit) via ee73e733e4ae7a1fe36c3010d8789de4d37dcc1c (commit) via 01c6f99c2d7278d41aa4832df739d4ac1849258c (commit) via 7523c1dcd9398f121ad8989340c8f8f0850adb98 (commit) via bae85447b860c76bfcb5465330660a2f34100c07 (commit) via 213433858f6962be8709b4e3b9332ce1a103b54b (commit) via 4babc9058a996e9cccd183eb25eda5faedd04591 (commit) via 45a49ae58abe835bc3ad446b054fa07035c33d60 (commit) via 9f64974f5eff103ceda107c362c66c2adc1997ba (commit) via 4201a11c2b5a5bdb442f99f88a5f17d6ae7c4a4c (commit) via a4e9391953b9906b085cbc1c6d6909d049e540dd (commit) via 3eebe28ef41a298f9743db44a7265742891fc225 (commit) via 50c4dec07267c8678302b0c4cf0c89a5a02b1d6b (commit) via 2a8c05ddc792c4a0fea82764cdc32204c6d50885 (commit) via f7b8e674636b037f4b2a8e3398ea8251bfc752dc (commit) via 379e5f93a9307eb77cf35052e83853939573ae44 (commit) via 5873815fef1df2dadfeaa8a13190d0365f77838a (commit) via 8a539e7c2fefceefc53006e6be991c107e378a0c (commit) via 216df68b32dbcc949109721dc2a1832f94195d67 (commit) via 6166384e3e279d9289c21e55ac124bf7b77c2355 (commit) via 95bd6317bc199135775a2f19ee7890d3e6991e3d (commit) via c9b8c792719b2c46abf33f0ff0223db51453bf8f (commit) via 6114d85a7db0571bfade96a710f34a01bb2037c8 (commit) via ec4b6854c9a391eb52c092878bd3675ed648f5b7 (commit) via 165a4e487eeea3f2d3fdca6d92866af9fbbaf79f (commit) via 7033a7794259a26dca96451a30d43fbacea20f89 (commit) via 161054386345dd3c3b4817f1e2f3bca49162f487 (commit) via b2c85cb698a922c0e87eb9f4a266be83625e97b7 (commit) via e07f147377b73c2d88a6921988c197c3e6a0150e (commit) via 760c87c73c421329423b7669e00593aeb110c66d (commit) via 786dddc0fd0439b7f7ba1f062d60720f16627856 (commit) via 53e65e8e0a91f7b83e2f0f27781e75c2868a321d (commit) via 33cb7a669d19d9518816babe8ebb45c307d3120b (commit) via bb43a42bb95058b4661059be45f2425bb8363c59 (commit) via 68b8fc4a8c4489ec2852ff1f28f1a7e861746ee9 (commit) via 24fa04018cbfcbbd9c52418be2ead8802eb361c4 (commit) via 57cb90ae7141b344953c9f857663645d8784c6f4 (commit) via 14edbe7e7bee52ff753dc73a9d731d2b27a8ee9d (commit) via 4f4d5a9b3a0d5288570d40c35ec4895f9542e97f (commit) via 0bc20334bc16b1d72a0ae208a38c2a8afddd199e (commit) via 533de8873a6875137f55ec4681c3edfcd2d472cf (commit) via adbaadf0eef855aeb043babceae67e324b69fef0 (commit) via bba42bb91e25a35791e71461858403360192778b (commit) via 2459b5e8324ced6435a12fedf98067a0d9fac5f1 (commit) via 8cabaaf054a16ea9c8332ce8e9291bd026b38c62 (commit) via f56fdf5736501a9ad2a06b2d4f923666edb20592 (commit) via 45c2406ba827dfb22b3dba671dca50876c615fda (commit) via 69275d3b6a9787268f7bd80bb24d8e4cbb18710e (commit) via 1c31eae65982c84d570217dd1493eb1d2ba6ee45 (commit) via 89ab893469576e3cd164019b80bc96daee2ce9b1 (commit) via c8e8c9cc7ca608602ccde413290f10bf2ebb24d5 (commit) via 19998d7b3cb69a4f30d1e151471706b02102e16d (commit) via dc1bb335781abb9a6ffe3f40b413978c81050023 (commit) via 60264705b945f9b1f91c58a52c2974c1399a97b0 (commit) via cf863b2e4ee2fbc44fde6d14cfac1b7733a09b07 (commit) via da1580b48e84cf1fc3bfb518d7e78b61393a0ef2 (commit) via 26494d279fa527857139c128464b6e38260a9a0d (commit) via 3793bed9df0c7f056eaf85c0267088fc8cea647c (commit) via 008cb6aa991a515cd31a9b7e6a5837555ff2d43a (commit) via d17755f9cf583387fab83ad5744b93c746aa5994 (commit) via 160499296c61b0edf2e6b08c44b31444e022528f (commit) via ee7e97a7d35a793985cf6f9aa185069460cf0ec6 (commit) via d7e19032d52f9d1529a27bb1061da33524b69060 (commit) via 518553d9537be7e6c245090e52ba989df5686e19 (commit) via 2296ede5ad67ace711f3f9c2dff33ea1f9b9aeb4 (commit) via afd928f85a845fbaea8d00b69a8e75e2fdfbaeeb (commit) via 59662112396210bf35b5a9cc44a23d96cee955c9 (commit) via d049201facdf788f8560864151f691273bda9c31 (commit) via 5112a76a175f9be8faf55d64f520977ba5d838b6 (commit) via 887ba2dc5ff2668542f43a1fb2d8a6e7cc2ef105 (commit) via c2efb3efcd083523a73a2a9721b7101fbfc0fe0f (commit) via 8ec4b5a93028153c8ec443bee7038843cb8a3866 (commit) via 9e78be8065f6c9c9f363b3e495017715abf9303b (commit) via 0cd778b0aa5093e4918fb9282e1849d8c2810a49 (commit) via e304203c8171b740791f2f9a4febcbfeec238984 (commit) via 1a26a67702b90b0c49d7d110b1a12cbde09c0879 (commit) via 75f73dde0f2ebb14f1cc381ccc48fd3d41a31bc1 (commit) via df4ed1e9ffcdb6b99ccff9e6f44808fdd2abda56 (commit) via 7115aa6c2249ec368fe0dfbd257a22eb0e04042d (commit) via 649479d0532d389aed1ac86aabf24884276dba3a (commit) via 9869b1de3899bf9db3f02240f553d1187290f22c (commit) via eef0ae604726e90c98c485adc0515e981f5ef5e8 (commit) via 7ddc9e353b097a9f6b0910d7d4875bd9c68c64d8 (commit) via b6f6cac378f4107d64b32981ba311b311157ce04 (commit) via 804e11a087fdb44b8c1202521c3ba3bed0bed821 (commit) via 7056f91e40641d63bdeb33d1b57b35a3fc2a08dd (commit) via 31b6825bd2bfea564315ccf6f275023e15e9af06 (commit) via aab8feeec22d7be284029d32f9e033e4791c48b2 (commit) via d120ccd19349447bce8104b8555bb34b13f78e46 (commit) via 29ec12fb4f148cc68007a6b7b79925a5670645c7 (commit) via 8c40cd6ea656a12de998e2144f1c42cc9c491206 (commit) via 1fd8040f266933d8ce6e89517e663495f91a8588 (commit) via b142956829bf52bce5d65fbc82aa82d617eac7f7 (commit) via 7053dd301c694bbc5e13b7e32febd34596b22d4e (commit) via 250b8c16620e6817478c9d64e6063773a9d3be81 (commit) via 93f3f65516c65d79fe7bea54e883f1d767a99b6b (commit) via fc7ee1ca459c3b231aa1fb64aeeaee590c019513 (commit) via 84e7920b3ac9241cf73a468120ff0ea83f9a7c86 (commit) via c88fb94978ba666584243d5999a2c55ea0041309 (commit) via dd4f8b2a48c7962dfa9cf856c36aa1c235248b2d (commit) via 753ab3c978fa763fc5b7d9fc3d08b1a4d7b46e5e (commit) via 52311484dd8c7d3882f7f4c75efe0c3855c2f982 (commit) via dacbb414550db63ff40225f3f6057c3c74bcf5c9 (commit) via a6e02f881dc5e74d79201f761fb28c99a9e7d2af (commit) via a093b1a4f3c8c40c55c50ad8e701ceb599961140 (commit) via 1771ec85b6475c10566026ad7813eb74f732d507 (commit) via 071588414ae0bf197af7bc8fc27884b39e98a324 (commit) via cb5015fb9f91a062fc1c92b698833ee84a71ea50 (commit) via 56c85d9429b1374bd5072763201ecb1e02598745 (commit) via 5b47557c82c24e916c7926d210c9b72ad39c9d2e (commit) via aab69ccd9b20a7560d2c656bc1a53a4afa587240 (commit) via 95b4b9137ab5af70671f88ed9e47ea8e173f748a (commit) via e022e2d8734ffbc0378b75d85b32a2524302dd50 (commit) via f1dd0eeaaf264ebb35b048f423c66296e6967d16 (commit) via 4fc8e8b023c4ebce94a8baacbc086b72ec399aba (commit) via 33632898e9a831931fdb96089a244f53cdc37caf (commit) via 78681bf001f4f29cf2f452327587669078a39461 (commit) via f21d811c7c4c9b61c6c81414b3e8803db392183c (commit) via cd4ed3ecb2ecfe3e2043ae0338a02323a508e0dd (commit) via 004d9ebbd34fcd670b564c7234888016773b8404 (commit) via b82b8705b2af4a7e3413de8aef6b3eb6371f08c4 (commit) via 275290375dbacc090962285da39e73687b44464f (commit) via 74b3eacdc755bc056aac65bf5c0b45aa02d097d4 (commit) via 88ef5737a25b40ce738041b8f9e00df20a131eb6 (commit) via 121a036f73665a18ccadeaf50b00cc623d8ed9df (commit) via acfe53c58817c662b935fbe0f0443de298371731 (commit) via b8bb6ba653df9d53d93824bb7185bf022e9bf2ef (commit) via 0c20d4d67b1f5da52da283f4237fb85a29385acd (commit) via 2a647bcc8cb1df133ea7cb6681ae1a9a9bc70224 (commit) via e5e59a1bc68702395ff63e301cadaee266982fc7 (commit) via 73d9d53ed0333f76e8ded6a91d34fbc43111ab27 (commit) via f7d92deff487810f21b4f7979a5fe1892fabd255 (commit) via 92f3ad7caebe6922a6b682cbb8c8d687cbfc8256 (commit) via 5346c784d51fd13cfa78efcb3e16c35fa83be2da (commit) via f225d79881c8e0d7e0ce788b790c30c0b0ca233d (commit) via 60ca88d7261da8ad77e68d8f82ae67099af70df0 (commit) via 0c1622dca6a521416c747a0ee7d13b176456f996 (commit) via 6c281138a577ccf07ae71b1286df30a3d22746e0 (commit) via d543eb2260fff6c49ab6e5066d376c502e91bf9f (commit) via 1601388212e633d5e83d788cf6e52fd7c99e4883 (commit) via f77a9576e542f7f0b2d32096a65fd232a1fd089e (commit) via fd71ad37152d2d3b843fc491abb2202e155c0114 (commit) via 7bacb2295583f1a0e04a7312c370064310b1834b (commit) via 1cfe2442c4196e592a6d99c7a2a4f5aa94038a78 (commit) via 0d8a4ded12f621a410b60117a64b7842649f0d1d (commit) via ced094e22e1c94da249990668d106a80faaeab57 (commit) via 02eb3c302a71210b375a6b4f9ae604c5e5dafe02 (commit) via e9eaf0f262543db6d458956bfa3d5da7edfb9744 (commit) via aeb24db55400b16c9d53d10b50cdb4668ba93e5f (commit) via bf572ac952d7ddf2b7208efc56f104844aea72e2 (commit) via f76047f34a960272ca29518551fb23504c61ee7e (commit) via fd0e40f1667ed7e835d5a6fcbcf3b4d6489dff2c (commit) via 3b80cd77fb3e1d0ee6a77a590830e7dc620df1a5 (commit) via e2dd6ac9776e4f5a1995dfc606480b627fdbce72 (commit) via 9b20d6568a3cd8bfb71d28d67f2ec59f7f41f929 (commit) via 4f289cdc1ead3273ac248f41cd85ab8eccd4dec1 (commit) via b7cba6ba00e9ae11d86fbb7fbf69eedff9e1c8c2 (commit) via 7d2ee4cb98b85946cc6b9befd33f20fab10e55bf (commit) via 7a0f516ecdbc2ecc50123b54c223f917fc2864d3 (commit) via 2e1fe8fabed9485a5466305624f75c0318780d80 (commit) via 8563e29c81c23b758350ba1716ef3c6213b8c615 (commit) via 0d988f98e531333b32d0f1628acf86f8baa22241 (commit) via f9f96598df3164cf12b6da7764bc74361e3fa414 (commit) via b56f2db87aebd34bfaf24439d56632aa3f3019f8 (commit) via fc8955e8891c645cd369a3cc8b607a14a8ed5bd7 (commit) via 514f0b572ea8ca2ba87810aa8f48185f266a8eaa (commit) via 3499c91a1bf5eadb62c099eaefdf6a9a2f8f90a4 (commit) via 32fdbd57a86e5d350d72de3ebdb60e6ea20de717 (commit) via e92cc2978524a32f65bdb645eec52f353dab987b (commit) via 7772bd31f57fd8b4d6a7937a97671eb34c966835 (commit) via 8f076acdb0af6e319005338e3e25d127043e3275 (commit) via 5dd16bc92cd565cda4060879e1e27baac3a78baf (commit) via f39bc297dbd5fbce2f547408e583f0e9a8205aef (commit) via 2e0aef2d759a07867694e4a9b4e970b92067708b (commit) via b62d15c216136d81c9318913333f3b4947394279 (commit) via d24227da68114b493d1e44a0f0af65c2a8a9305c (commit) via a6e0158712bd25256fb66cf21c047b81d65bc4fe (commit) via f460bbd4c8afab56f93b9831f1f4d8336480fcc5 (commit) via 045b0beae13366420186337170d70e73ec96ebca (commit) via a35981249d9efbf3db943698a1258ac6cbf3a5d5 (commit) via b57560bb0fcb30cefe681c79a75ff29c43ee3931 (commit) via af6f16f1e8a820ff5a08dfa273ceaa309fed7461 (commit) via dc372f6eef54f8a4b436cf631cbf621437076677 (commit) via 846e3d2ceb0c8532e19425afc36455f0d4eedb14 (commit) via 517cc8e1ef8b3471dac452f494cf56889b92d1a0 (commit) via 2f43bd3b6ca886b52fadae50a3bfbbf44029b9cd (commit) via d96aa163109514608ee7c1113e283f4fef0e85a4 (commit) via afd5d17bace86149e2b99dca3cd1a51691318b34 (commit) via e3e5445d83c253c3ddc18b5b02b59e90aa0b9df9 (commit) via 5b56795d57ad79dcc4ce9070481101f28f737eda (commit) via ba906112253737715e635c0ade10d52fbb185233 (commit) via 577a9a88ad832c35982814b7c485cbebc89fffb9 (commit) via 03e381cb8a95b804ee30f94130a5f07ab2a00768 (commit) via c9cedd675b0023c21e5350d69b25df2156836800 (commit) via ae80271ed35469d4d1092beb9665837963ba22ad (commit) via 092a0b104a4aa1c4e6df5db11fab5221fd1e9331 (commit) via 3ea9d81da6499b5828c68d0c694ce0579efc555f (commit) via 424851742e0fb550cdf19c6db0882fd9b15f779e (commit) via e9114f5bcfa41c51e23277e1129f469a6344dd35 (commit) via db8920a2c53d53133dd44f74c2d6cd77fac308a1 (commit) via 9df49ba020ebfa15571ce818631bed6043368c8e (commit) via 0ab5db035ed47182fb8551f9872045eeae1f9cec (commit) via 2b836a01217a8e6f14ba5f0d8b89d660e6c5cfca (commit) via 4422ee3cb25fd1bedea1eb4db6f205a0184c5b19 (commit) via c3e27c25625142aa1f1de36c454f00ee44df8dbd (commit) via c76e024a3dee8933ff5b213149c295e2925b4860 (commit) via f87b0be825ce417fbdc5fd184e6af3d36dd89677 (commit) via 27189b9658a6bbdabc72461459042619d7fa5d11 (commit) via fcb47f43310e68b699f7accb4858ae9ce7053ecf (commit) via 20e14baae79b5fd1f75aecbb167a3642f2c532d8 (commit) via ab6bf9d0adc3de143599d5558a6475af3ba172eb (commit) via e3666e8ffeeda24dcee69a27942678927e895fbc (commit) via f0c8d162f58270d7902fef36e0df2da1a22d2890 (commit) via 342551be71c8ed300e5e6d99fa81ab0ed3a62600 (commit) via 05d3411c190296083ab37457db4b01c8f9812d1f (commit) via 02a1dbbb6c41aeab2d6a491629329a7f6ef47eef (commit) via 50f427e02287682cdd782136ef28a15f75f8fd60 (commit) via 25a970405800e9a79dbd1927cdd2f298e646917c (commit) via 0813581859bd61a9d30c97aa893030bea85f134e (commit) via cef4dcfe9df3c56032d8e47ed2af241a5865f761 (commit) via 10fca3ccc20998fabd5084badc4aef154b38a8b0 (commit) via 0abf88f6f618bd08933f8c817f0c4ac07b0bc52c (commit) via cf57c27150ece9c0c8722021eb2ba38eea94c9bf (commit) via bfc6a945915aa4b2296939e122d747a53701be42 (commit) via 5161714e1d45bd622ac140354b66f9b8030a906c (commit) via 2ba1fb42e29dcf85ada03632c3f782b6f7320114 (commit) via d1ec340f4e705c705920c56c35457fe4997e68d2 (commit) via e07b6f69d821420050706f48e699f48cf70569f7 (commit) via 8713e9cbbc847cf0a97be1d831b555d8fe623287 (commit) via 7337a6d6d262e4bcbd3134855dedf611be1f21f1 (commit) from 30c3effa89ceda247cd2ff29b5d3f4da8c7a8ff6 (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: .clang-tidy | 17 +- .gitattributes | 1 + Auxiliary/vim/syntax/cmake.vim | 8 +- CMakeLists.txt | 45 +- CONTRIBUTING.rst | 4 +- CTestCustom.cmake.in | 1 + CompileFlags.cmake | 7 - Copyright.txt | 7 +- Help/command/FIND_XXX.txt | 2 +- Help/command/add_compile_definitions.rst | 4 +- Help/command/add_compile_options.rst | 43 +- Help/command/add_custom_command.rst | 6 +- Help/command/add_custom_target.rst | 2 +- Help/command/add_definitions.rst | 4 +- Help/command/add_dependencies.rst | 4 +- Help/command/add_executable.rst | 6 +- Help/command/add_library.rst | 10 +- Help/command/add_link_options.rst | 4 +- Help/command/add_subdirectory.rst | 7 +- Help/command/add_test.rst | 10 +- Help/command/aux_source_directory.rst | 2 +- Help/command/break.rst | 4 +- Help/command/build_name.rst | 2 +- Help/command/cmake_host_system_information.rst | 2 +- Help/command/cmake_minimum_required.rst | 16 +- Help/command/cmake_parse_arguments.rst | 22 +- Help/command/cmake_policy.rst | 12 +- Help/command/configure_file.rst | 22 +- Help/command/continue.rst | 6 +- Help/command/create_test_sourcelist.rst | 2 +- Help/command/ctest_build.rst | 4 +- Help/command/ctest_submit.rst | 11 +- Help/command/define_property.rst | 4 +- Help/command/else.rst | 4 +- Help/command/elseif.rst | 9 +- Help/command/enable_language.rst | 6 +- Help/command/enable_testing.rst | 2 +- Help/command/endforeach.rst | 8 +- Help/command/endfunction.rst | 8 +- Help/command/endif.rst | 8 +- Help/command/endmacro.rst | 8 +- Help/command/endwhile.rst | 8 +- Help/command/exec_program.rst | 4 +- Help/command/execute_process.rst | 6 +- Help/command/export.rst | 10 +- Help/command/export_library_dependencies.rst | 2 +- Help/command/file.rst | 90 +- Help/command/find_package.rst | 28 +- Help/command/fltk_wrap_ui.rst | 2 +- Help/command/foreach.rst | 99 +- Help/command/function.rst | 88 +- Help/command/get_cmake_property.rst | 12 +- Help/command/get_directory_property.rst | 6 +- Help/command/get_filename_component.rst | 32 +- Help/command/get_property.rst | 20 +- Help/command/get_source_file_property.rst | 4 +- Help/command/get_target_property.rst | 4 +- Help/command/get_test_property.rst | 2 +- Help/command/if.rst | 120 +- Help/command/include.rst | 10 +- Help/command/include_directories.rst | 2 +- Help/command/include_external_msproject.rst | 2 +- Help/command/include_guard.rst | 2 +- Help/command/include_regular_expression.rst | 4 +- Help/command/install.rst | 128 +- Help/command/install_files.rst | 4 +- Help/command/install_programs.rst | 4 +- Help/command/install_targets.rst | 4 +- Help/command/link_directories.rst | 4 +- Help/command/link_libraries.rst | 2 +- Help/command/list.rst | 60 +- Help/command/load_cache.rst | 11 +- Help/command/load_command.rst | 2 +- Help/command/macro.rst | 138 +- Help/command/make_directory.rst | 4 +- Help/command/mark_as_advanced.rst | 27 +- Help/command/math.rst | 40 +- Help/command/message.rst | 2 +- Help/command/option.rst | 15 +- Help/command/output_required_files.rst | 2 +- Help/command/project.rst | 147 +- Help/command/qt_wrap_cpp.rst | 21 +- Help/command/qt_wrap_ui.rst | 18 +- Help/command/remove.rst | 4 +- Help/command/remove_definitions.rst | 4 +- Help/command/return.rst | 7 +- Help/command/separate_arguments.rst | 46 +- Help/command/set.rst | 29 +- Help/command/set_directory_properties.rst | 10 +- Help/command/set_property.rst | 36 +- Help/command/set_source_files_properties.rst | 10 +- Help/command/set_target_properties.rst | 4 +- Help/command/set_tests_properties.rst | 11 +- Help/command/site_name.rst | 2 +- Help/command/source_group.rst | 2 +- Help/command/string.rst | 46 +- Help/command/subdir_depends.rst | 2 +- Help/command/subdirs.rst | 4 +- Help/command/target_compile_definitions.rst | 4 +- Help/command/target_compile_features.rst | 4 +- Help/command/target_compile_options.rst | 32 +- Help/command/target_include_directories.rst | 4 +- Help/command/target_link_directories.rst | 4 +- Help/command/target_link_libraries.rst | 14 +- Help/command/target_link_options.rst | 4 +- Help/command/target_sources.rst | 4 +- Help/command/try_compile.rst | 28 +- Help/command/try_run.rst | 9 +- Help/command/unset.rst | 21 +- Help/command/use_mangled_mesa.rst | 2 +- Help/command/utility_source.rst | 2 +- Help/command/variable_requires.rst | 2 +- Help/command/variable_watch.rst | 14 +- Help/command/while.rst | 24 +- Help/command/write_file.rst | 4 +- Help/cpack_gen/deb.rst | 32 +- Help/cpack_gen/freebsd.rst | 2 +- Help/cpack_gen/nuget.rst | 2 +- Help/cpack_gen/rpm.rst | 4 +- Help/dev/README.rst | 2 + Help/dev/documentation.rst | 530 ++ Help/dev/review.rst | 27 +- Help/dev/source.rst | 20 +- Help/envvar/ASM_DIALECT.rst | 2 + Help/envvar/ASM_DIALECTFLAGS.rst | 2 + Help/envvar/CC.rst | 2 + Help/envvar/CFLAGS.rst | 2 + Help/envvar/CMAKE_BUILD_PARALLEL_LEVEL.rst | 2 + Help/envvar/CMAKE_CONFIG_TYPE.rst | 2 + Help/envvar/CMAKE_MSVCIDE_RUN_PATH.rst | 2 + Help/envvar/CMAKE_NO_VERBOSE.rst | 8 + Help/envvar/CMAKE_OSX_ARCHITECTURES.rst | 2 + Help/envvar/CSFLAGS.rst | 2 + Help/envvar/CTEST_INTERACTIVE_DEBUG_MODE.rst | 2 + Help/envvar/CTEST_OUTPUT_ON_FAILURE.rst | 2 + Help/envvar/CTEST_PARALLEL_LEVEL.rst | 2 + Help/envvar/CTEST_PROGRESS_OUTPUT.rst | 2 + Help/envvar/CTEST_USE_LAUNCHERS_DEFAULT.rst | 2 + Help/envvar/CUDACXX.rst | 2 + Help/envvar/CUDAFLAGS.rst | 2 + Help/envvar/CUDAHOSTCXX.rst | 2 + Help/envvar/CXX.rst | 2 + Help/envvar/CXXFLAGS.rst | 2 + Help/envvar/DASHBOARD_TEST_FROM_CTEST.rst | 2 + Help/envvar/DESTDIR.rst | 2 + Help/envvar/ENV_VAR.txt | 3 + Help/envvar/FC.rst | 2 + Help/envvar/FFLAGS.rst | 2 + Help/envvar/LDFLAGS.rst | 2 + Help/envvar/MACOSX_DEPLOYMENT_TARGET.rst | 2 + Help/envvar/PackageName_ROOT.rst | 2 + Help/envvar/RC.rst | 2 + Help/envvar/RCFLAGS.rst | 2 + Help/envvar/VERBOSE.rst | 10 + Help/generator/Green Hills MULTI.rst | 40 +- Help/generator/VS_TOOLSET_HOST_ARCH.txt | 7 +- Help/generator/Visual Studio 10 2010.rst | 2 + Help/generator/Visual Studio 11 2012.rst | 2 + Help/generator/Visual Studio 12 2013.rst | 5 + Help/generator/Visual Studio 14 2015.rst | 5 + Help/generator/Visual Studio 15 2017.rst | 5 + Help/generator/Visual Studio 16 2019.rst | 53 + Help/generator/Visual Studio 9 2008.rst | 2 + Help/generator/Xcode.rst | 4 +- Help/index.rst | 1 + Help/manual/ccmake.1.rst | 2 +- Help/manual/cmake-buildsystem.7.rst | 1 + Help/manual/cmake-commands.7.rst | 14 +- Help/manual/cmake-developer.7.rst | 676 +-- Help/manual/cmake-env-variables.7.rst | 10 + Help/manual/cmake-file-api.7.rst | 1111 +++++ Help/manual/cmake-generator-expressions.7.rst | 422 +- Help/manual/cmake-generators.7.rst | 5 + Help/manual/cmake-gui.1.rst | 11 +- Help/manual/cmake-language.7.rst | 81 +- Help/manual/cmake-modules.7.rst | 107 +- Help/manual/cmake-policies.7.rst | 14 + Help/manual/cmake-properties.7.rst | 8 +- Help/manual/cmake-qt.7.rst | 39 +- Help/manual/cmake-toolchains.7.rst | 71 + Help/manual/cmake-variables.7.rst | 64 +- Help/manual/cmake.1.rst | 279 +- Help/manual/cpack.1.rst | 40 +- Help/manual/ctest.1.rst | 126 +- Help/module/CheckFortranSourceRuns.rst | 1 + Help/module/CheckPIESupported.rst | 1 + Help/module/FindFontconfig.rst | 1 + Help/module/FindLibinput.rst | 1 + Help/module/FindOctave.rst | 1 + Help/module/FindSQLite3.rst | 1 + Help/policy/CMP0049.rst | 8 +- Help/policy/CMP0078.rst | 2 + Help/policy/CMP0082.rst | 24 + Help/policy/CMP0083.rst | 62 + Help/policy/CMP0084.rst | 26 + Help/policy/CMP0085.rst | 21 + Help/policy/CMP0086.rst | 20 + Help/policy/CMP0087.rst | 29 + Help/policy/CMP0088.rst | 29 + Help/prop_dir/BUILDSYSTEM_TARGETS.rst | 2 +- Help/prop_dir/COMPILE_OPTIONS.rst | 2 +- Help/prop_dir/EXCLUDE_FROM_ALL.rst | 6 + Help/prop_dir/LINK_DIRECTORIES.rst | 2 +- Help/prop_dir/LINK_OPTIONS.rst | 2 +- Help/prop_dir/SUBDIRECTORIES.rst | 2 +- Help/prop_dir/TESTS.rst | 2 +- Help/prop_gbl/CMAKE_ROLE.rst | 20 + Help/prop_sf/COMPILE_OPTIONS.rst | 2 +- Help/prop_sf/INCLUDE_DIRECTORIES.rst | 2 +- Help/prop_sf/OBJECT_DEPENDS.rst | 2 +- Help/prop_tgt/ANDROID_NATIVE_LIB_DIRECTORIES.rst | 4 +- Help/prop_tgt/AUTOGEN_ORIGIN_DEPENDS.rst | 38 + Help/prop_tgt/AUTOGEN_TARGET_DEPENDS.rst | 21 +- Help/prop_tgt/AUTOMOC.rst | 11 +- Help/prop_tgt/AUTOMOC_EXECUTABLE.rst | 15 + Help/prop_tgt/AUTOMOC_MACRO_NAMES.rst | 2 +- Help/prop_tgt/AUTORCC.rst | 9 +- Help/prop_tgt/AUTORCC_EXECUTABLE.rst | 15 + Help/prop_tgt/AUTOUIC.rst | 9 +- Help/prop_tgt/AUTOUIC_EXECUTABLE.rst | 15 + Help/prop_tgt/BUILD_RPATH.rst | 2 +- Help/prop_tgt/BUILD_RPATH_USE_ORIGIN.rst | 24 + Help/prop_tgt/COMPILE_OPTIONS.rst | 2 +- Help/prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS.rst | 12 +- Help/prop_tgt/EXCLUDE_FROM_ALL.rst | 3 + Help/prop_tgt/GHS_INTEGRITY_APP.rst | 10 + Help/prop_tgt/IMPORTED_OBJECTS.rst | 2 +- .../INTERFACE_POSITION_INDEPENDENT_CODE.rst | 6 + Help/prop_tgt/LANG_CLANG_TIDY.rst | 2 +- Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst | 2 +- Help/prop_tgt/LANG_CPPCHECK.rst | 6 +- Help/prop_tgt/LANG_CPPLINT.rst | 2 +- Help/prop_tgt/LANG_INCLUDE_WHAT_YOU_USE.rst | 2 +- Help/prop_tgt/LINK_DIRECTORIES.rst | 2 +- Help/prop_tgt/LINK_OPTIONS.rst | 2 +- Help/prop_tgt/POSITION_INDEPENDENT_CODE.rst | 5 + Help/prop_tgt/STATIC_LIBRARY_OPTIONS.rst | 2 +- Help/prop_tgt/VS_SDK_REFERENCES.rst | 2 +- Help/prop_tgt/WIN32_EXECUTABLE.rst | 11 +- Help/release/3.14.rst | 341 ++ Help/release/3.6.rst | 2 +- Help/release/index.rst | 1 + Help/variable/CACHE.rst | 5 +- Help/variable/CMAKE_APPBUNDLE_PATH.rst | 2 +- Help/variable/CMAKE_ARGC.rst | 6 +- Help/variable/CMAKE_ARGV0.rst | 4 +- Help/variable/CMAKE_AUTOGEN_ORIGIN_DEPENDS.rst | 11 + Help/variable/CMAKE_AUTOMOC_MACRO_NAMES.rst | 2 +- Help/variable/CMAKE_BUILD_RPATH.rst | 2 +- Help/variable/CMAKE_BUILD_RPATH_USE_ORIGIN.rst | 7 + .../CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES.rst | 2 +- .../CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS.rst | 10 + Help/variable/CMAKE_FIND_ROOT_PATH.rst | 2 +- Help/variable/CMAKE_FRAMEWORK_PATH.rst | 2 +- Help/variable/CMAKE_GENERATOR_TOOLSET.rst | 4 +- Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET.rst | 26 + Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET_NAME.rst | 13 + Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET.rst | 18 + Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET_NAME.rst | 13 + Help/variable/CMAKE_HOME_DIRECTORY.rst | 7 +- Help/variable/CMAKE_IGNORE_PATH.rst | 2 +- Help/variable/CMAKE_INCLUDE_PATH.rst | 2 +- Help/variable/CMAKE_LANG_COMPILER_ID.rst | 3 +- Help/variable/CMAKE_LANG_CREATE_SHARED_LIBRARY.rst | 3 +- Help/variable/CMAKE_LANG_CREATE_SHARED_MODULE.rst | 3 +- .../CMAKE_LANG_GHS_KERNEL_FLAGS_CONFIG.rst | 5 - .../variable/CMAKE_LANG_GHS_KERNEL_FLAGS_DEBUG.rst | 5 - .../CMAKE_LANG_GHS_KERNEL_FLAGS_MINSIZEREL.rst | 5 - .../CMAKE_LANG_GHS_KERNEL_FLAGS_RELEASE.rst | 5 - .../CMAKE_LANG_GHS_KERNEL_FLAGS_RELWITHDEBINFO.rst | 5 - Help/variable/CMAKE_LANG_LINKER_WRAPPER_FLAG.rst | 2 +- Help/variable/CMAKE_LIBRARY_PATH.rst | 2 +- Help/variable/CMAKE_MAXIMUM_RECURSION_DEPTH.rst | 33 + Help/variable/CMAKE_MFC_FLAG.rst | 15 +- Help/variable/CMAKE_MODULE_PATH.rst | 2 +- Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst | 2 + Help/variable/CMAKE_PREFIX_PATH.rst | 2 +- Help/variable/CMAKE_PROGRAM_PATH.rst | 2 +- Help/variable/CMAKE_SYSTEM_IGNORE_PATH.rst | 2 +- Help/variable/CMAKE_SYSTEM_INCLUDE_PATH.rst | 2 +- Help/variable/CMAKE_SYSTEM_LIBRARY_PATH.rst | 2 +- Help/variable/CMAKE_SYSTEM_PREFIX_PATH.rst | 2 +- Help/variable/CMAKE_SYSTEM_PROGRAM_PATH.rst | 2 +- Help/variable/CMAKE_Swift_LANGUAGE_VERSION.rst | 8 +- ...CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE.rst | 10 +- Help/variable/CTEST_CUSTOM_TESTS_IGNORE.rst | 7 + Help/variable/CTEST_CUSTOM_TEST_IGNORE.rst | 7 - Help/variable/CTEST_SCP_COMMAND.rst | 3 +- Help/variable/CTEST_SUBMIT_URL.rst | 5 + Help/variable/CTEST_TRIGGER_SITE.rst | 3 +- Help/variable/ENV.rst | 8 +- Help/variable/GHS-MULTI.rst | 2 +- Help/variable/MSVC_VERSION.rst | 1 + Help/variable/MSYS.rst | 4 + Help/variable/PackageName_ROOT.rst | 2 +- Modules/AddFileDependencies.cmake | 19 +- Modules/AndroidTestUtilities.cmake | 2 +- .../BasicConfigVersion-AnyNewerVersion.cmake.in | 6 + Modules/BasicConfigVersion-ExactVersion.cmake.in | 5 + .../BasicConfigVersion-SameMajorVersion.cmake.in | 5 + .../BasicConfigVersion-SameMinorVersion.cmake.in | 5 + Modules/BundleUtilities.cmake | 81 +- Modules/CMakeASMCompiler.cmake.in | 1 + Modules/CMakeAddFortranSubdirectory.cmake | 81 +- Modules/CMakeBackwardCompatibilityC.cmake | 4 - Modules/CMakeBackwardCompatibilityCXX.cmake | 32 +- Modules/CMakeCCompiler.cmake.in | 2 + Modules/CMakeCUDACompiler.cmake.in | 4 + Modules/CMakeCXXCompiler.cmake.in | 2 + Modules/CMakeCXXInformation.cmake | 7 +- Modules/CMakeCompilerABI.h | 8 +- Modules/CMakeCompilerIdDetection.cmake | 4 +- Modules/CMakeDependentOption.cmake | 43 +- Modules/CMakeDetermineCCompiler.cmake | 7 +- Modules/CMakeDetermineCXXCompiler.cmake | 7 +- Modules/CMakeDetermineCompilerABI.cmake | 40 + Modules/CMakeDetermineCompilerId.cmake | 123 +- Modules/CMakeDetermineSystem.cmake | 1 - Modules/CMakeDetermineVSServicePack.cmake | 62 +- Modules/CMakeExpandImportedTargets.cmake | 73 +- Modules/CMakeFindBinUtils.cmake | 53 +- Modules/CMakeFindFrameworks.cmake | 19 +- Modules/CMakeFindPackageMode.cmake | 55 +- Modules/CMakeForceCompiler.cmake | 129 +- Modules/CMakeFortranCompiler.cmake.in | 1 + Modules/CMakeFortranCompilerABI.F | 8 +- Modules/CMakeFortranCompilerId.F.in | 16 +- Modules/CMakeFortranInformation.cmake | 6 + Modules/CMakeGenericSystem.cmake | 2 + Modules/CMakeGraphVizOptions.cmake | 239 +- Modules/CMakePackageConfigHelpers.cmake | 420 +- Modules/CMakeParseArguments.cmake | 17 +- Modules/CMakeParseImplicitIncludeInfo.cmake | 225 + Modules/CMakePlatformId.h.in | 31 +- Modules/CMakePrintHelpers.cmake | 82 +- Modules/CMakePrintSystemInformation.cmake | 17 +- Modules/CMakePushCheckState.cmake | 97 +- Modules/CMakeTestCCompiler.cmake | 10 + Modules/CMakeTestCXXCompiler.cmake | 10 + Modules/CMakeTestCompilerCommon.cmake | 20 + Modules/CMakeVerifyManifest.cmake | 33 +- Modules/CPack.background.png.in | Bin 47076 -> 44108 bytes Modules/CPack.cmake | 33 +- Modules/CPackComponent.cmake | 615 +-- Modules/CPackIFWConfigureFile.cmake | 53 +- Modules/CTest.cmake | 22 +- Modules/CTestCoverageCollectGCOV.cmake | 127 +- Modules/CTestScriptMode.cmake | 15 +- Modules/CTestUseLaunchers.cmake | 53 +- Modules/CheckCCompilerFlag.cmake | 2 +- Modules/CheckCSourceCompiles.cmake | 31 +- Modules/CheckCSourceRuns.cmake | 36 +- Modules/CheckCXXCompilerFlag.cmake | 3 +- Modules/CheckCXXSourceCompiles.cmake | 31 +- Modules/CheckCXXSourceRuns.cmake | 36 +- Modules/CheckCXXSymbolExists.cmake | 73 +- Modules/CheckFortranCompilerFlag.cmake | 2 +- Modules/CheckFortranFunctionExists.cmake | 61 +- Modules/CheckFortranSourceCompiles.cmake | 57 +- Modules/CheckFortranSourceRuns.cmake | 170 + Modules/CheckFunctionExists.cmake | 91 +- Modules/CheckIPOSupported.cmake | 2 - Modules/CheckIncludeFile.cmake | 80 +- Modules/CheckIncludeFileCXX.cmake | 78 +- Modules/CheckIncludeFiles.cmake | 90 +- Modules/CheckLanguage.cmake | 59 +- Modules/CheckLibraryExists.cmake | 66 +- Modules/CheckPIESupported.cmake | 134 + Modules/CheckPrototypeDefinition.cmake | 89 +- Modules/CheckStructHasMember.cmake | 79 +- Modules/CheckSymbolExists.cmake | 23 +- Modules/CheckTypeSize.cmake | 137 +- Modules/CheckVariableExists.cmake | 70 +- Modules/Compiler/Clang.cmake | 6 + Modules/Compiler/Cray-C.cmake | 12 +- Modules/Compiler/Cray-CXX.cmake | 14 +- Modules/Compiler/CrayPrgEnv-C.cmake | 6 +- Modules/Compiler/CrayPrgEnv-CXX.cmake | 6 +- Modules/Compiler/CrayPrgEnv-Cray-C.cmake | 7 - Modules/Compiler/CrayPrgEnv-Cray-CXX.cmake | 7 - Modules/Compiler/CrayPrgEnv-Cray-Fortran.cmake | 7 - Modules/Compiler/CrayPrgEnv-Fortran.cmake | 6 +- Modules/Compiler/CrayPrgEnv-GNU-C.cmake | 7 - Modules/Compiler/CrayPrgEnv-GNU-CXX.cmake | 7 - Modules/Compiler/CrayPrgEnv-GNU-Fortran.cmake | 7 - Modules/Compiler/CrayPrgEnv-Intel-C.cmake | 7 - Modules/Compiler/CrayPrgEnv-Intel-CXX.cmake | 7 - Modules/Compiler/CrayPrgEnv-Intel-Fortran.cmake | 7 - Modules/Compiler/CrayPrgEnv-PGI-C.cmake | 7 - Modules/Compiler/CrayPrgEnv-PGI-CXX.cmake | 7 - Modules/Compiler/CrayPrgEnv-PGI-Fortran.cmake | 7 - Modules/Compiler/CrayPrgEnv.cmake | 57 +- Modules/Compiler/GHS-C.cmake | 20 - Modules/Compiler/GHS-CXX.cmake | 24 - Modules/Compiler/GHS-DetermineCompiler.cmake | 11 +- Modules/Compiler/GHS.cmake | 6 +- Modules/Compiler/GNU.cmake | 7 + Modules/Compiler/IAR-C.cmake | 13 + Modules/Compiler/IAR-CXX.cmake | 21 + Modules/Compiler/IAR-DetermineCompiler.cmake | 22 +- Modules/Compiler/IAR.cmake | 21 + Modules/Compiler/NVIDIA-CUDA.cmake | 1 + Modules/Compiler/QCC-C-FeatureTests.cmake | 1 + Modules/Compiler/QCC-C.cmake | 3 + Modules/Compiler/QCC-CXX-FeatureTests.cmake | 1 + Modules/Compiler/QCC-CXX.cmake | 3 + Modules/Compiler/SunPro-C.cmake | 4 + Modules/Compiler/SunPro-CXX.cmake | 4 + Modules/Compiler/SunPro-Fortran.cmake | 4 + Modules/Compiler/XL.cmake | 2 +- Modules/CompilerId/GHS_default.gpj.in | 8 + Modules/CompilerId/GHS_lib.gpj.in | 3 + Modules/CompilerId/Xcode-3.pbxproj.in | 3 +- Modules/Dart.cmake | 43 +- Modules/DartConfiguration.tcl.in | 12 +- Modules/DeployQt4.cmake | 12 +- Modules/Documentation.cmake | 15 +- Modules/ExternalProject.cmake | 131 +- Modules/FeatureSummary.cmake | 2 - Modules/FetchContent.cmake | 291 +- Modules/FetchContent/CMakeLists.cmake.in | 2 + Modules/FindALSA.cmake | 77 +- Modules/FindASPELL.cmake | 31 +- Modules/FindAVIFile.cmake | 35 +- Modules/FindArmadillo.cmake | 59 +- Modules/FindBISON.cmake | 197 +- Modules/FindBLAS.cmake | 259 +- Modules/FindBZip2.cmake | 71 +- Modules/FindBacktrace.cmake | 71 +- Modules/FindBoost.cmake | 502 +- Modules/FindBullet.cmake | 67 +- Modules/FindCABLE.cmake | 43 +- Modules/FindCUDA.cmake | 767 ++- Modules/FindCURL.cmake | 134 +- Modules/FindCVS.cmake | 43 +- Modules/FindCoin3D.cmake | 33 +- Modules/FindCups.cmake | 33 +- Modules/FindCurses.cmake | 81 +- Modules/FindCxxTest.cmake | 273 +- Modules/FindCygwin.cmake | 11 +- Modules/FindDCMTK.cmake | 154 +- Modules/FindDart.cmake | 17 +- Modules/FindDevIL.cmake | 59 +- Modules/FindDoxygen.cmake | 19 +- Modules/FindEXPAT.cmake | 53 +- Modules/FindFLEX.cmake | 189 +- Modules/FindFLTK.cmake | 153 +- Modules/FindFLTK2.cmake | 47 +- Modules/FindFontconfig.cmake | 101 + Modules/FindFreetype.cmake | 79 +- Modules/FindGCCXML.cmake | 27 +- Modules/FindGDAL.cmake | 86 +- Modules/FindGIF.cmake | 85 +- Modules/FindGLEW.cmake | 45 +- Modules/FindGLUT.cmake | 65 +- Modules/FindGSL.cmake | 109 +- Modules/FindGTK.cmake | 25 +- Modules/FindGTK2.cmake | 193 +- Modules/FindGTest.cmake | 143 +- Modules/FindGettext.cmake | 111 +- Modules/FindGit.cmake | 55 +- Modules/FindGnuTLS.cmake | 33 +- Modules/FindGnuplot.cmake | 39 +- Modules/FindHDF5.cmake | 209 +- Modules/FindHSPELL.cmake | 45 +- Modules/FindHTMLHelp.cmake | 27 +- Modules/FindHg.cmake | 79 +- Modules/FindICU.cmake | 183 +- Modules/FindIce.cmake | 285 +- Modules/FindIcotool.cmake | 29 +- Modules/FindImageMagick.cmake | 163 +- Modules/FindIntl.cmake | 55 +- Modules/FindJPEG.cmake | 133 +- Modules/FindJasper.cmake | 29 +- Modules/FindJava.cmake | 147 +- Modules/FindKDE3.cmake | 271 +- Modules/FindKDE4.cmake | 47 +- Modules/FindLAPACK.cmake | 271 +- Modules/FindLATEX.cmake | 101 +- Modules/FindLTTngUST.cmake | 63 +- Modules/FindLibArchive.cmake | 29 +- Modules/FindLibLZMA.cmake | 73 +- Modules/FindLibXml2.cmake | 83 +- Modules/FindLibXslt.cmake | 47 +- Modules/FindLibinput.cmake | 82 + Modules/FindLua.cmake | 69 +- Modules/FindLua50.cmake | 61 +- Modules/FindLua51.cmake | 63 +- Modules/FindMFC.cmake | 29 +- Modules/FindMPEG.cmake | 41 +- Modules/FindMPEG2.cmake | 41 +- Modules/FindMPI.cmake | 483 +- Modules/FindMatlab.cmake | 1078 +++-- Modules/FindMotif.cmake | 27 +- Modules/FindODBC.cmake | 4 +- Modules/FindOctave.cmake | 167 + Modules/FindOpenAL.cmake | 31 +- Modules/FindOpenCL.cmake | 59 +- Modules/FindOpenGL.cmake | 245 +- Modules/FindOpenMP.cmake | 145 +- Modules/FindOpenSSL.cmake | 95 +- Modules/FindOpenSceneGraph.cmake | 193 +- Modules/FindOpenThreads.cmake | 49 +- Modules/FindPHP4.cmake | 29 +- Modules/FindPNG.cmake | 87 +- Modules/FindPackageMessage.cmake | 59 +- Modules/FindPatch.cmake | 49 +- Modules/FindPerl.cmake | 27 +- Modules/FindPerlLibs.cmake | 83 +- Modules/FindPhysFS.cmake | 29 +- Modules/FindPike.cmake | 29 +- Modules/FindPkgConfig.cmake | 94 +- Modules/FindPostgreSQL.cmake | 76 +- Modules/FindProducer.cmake | 59 +- Modules/FindProtobuf.cmake | 237 +- Modules/FindPython.cmake | 23 +- Modules/FindPython/Support.cmake | 253 +- Modules/FindPython2.cmake | 23 +- Modules/FindPython3.cmake | 23 +- Modules/FindPythonInterp.cmake | 91 +- Modules/FindPythonLibs.cmake | 85 +- Modules/FindQt.cmake | 71 +- Modules/FindQt3.cmake | 63 +- Modules/FindQt4.cmake | 597 +-- Modules/FindQuickTime.cmake | 29 +- Modules/FindRTI.cmake | 63 +- Modules/FindRuby.cmake | 63 +- Modules/FindSDL.cmake | 139 +- Modules/FindSDL_image.cmake | 69 +- Modules/FindSDL_mixer.cmake | 69 +- Modules/FindSDL_net.cmake | 67 +- Modules/FindSDL_sound.cmake | 157 +- Modules/FindSDL_ttf.cmake | 67 +- Modules/FindSQLite3.cmake | 66 + Modules/FindSWIG.cmake | 47 +- Modules/FindSelfPackers.cmake | 27 +- Modules/FindSquish.cmake | 235 +- Modules/FindSubversion.cmake | 125 +- Modules/FindTCL.cmake | 85 +- Modules/FindTIFF.cmake | 75 +- Modules/FindTclStub.cmake | 85 +- Modules/FindTclsh.cmake | 35 +- Modules/FindThreads.cmake | 164 +- Modules/FindUnixCommands.cmake | 17 +- Modules/FindVulkan.cmake | 53 +- Modules/FindWget.cmake | 25 +- Modules/FindWish.cmake | 35 +- Modules/FindX11.cmake | 513 +- Modules/FindXMLRPC.cmake | 59 +- Modules/FindXalanC.cmake | 81 +- Modules/FindXercesC.cmake | 77 +- Modules/FindZLIB.cmake | 95 +- Modules/Findosg.cmake | 73 +- Modules/FindosgAnimation.cmake | 61 +- Modules/FindosgDB.cmake | 61 +- Modules/FindosgFX.cmake | 61 +- Modules/FindosgGA.cmake | 61 +- Modules/FindosgIntrospection.cmake | 63 +- Modules/FindosgManipulator.cmake | 63 +- Modules/FindosgParticle.cmake | 61 +- Modules/FindosgPresentation.cmake | 65 +- Modules/FindosgProducer.cmake | 61 +- Modules/FindosgQt.cmake | 61 +- Modules/FindosgShadow.cmake | 61 +- Modules/FindosgSim.cmake | 61 +- Modules/FindosgTerrain.cmake | 61 +- Modules/FindosgText.cmake | 61 +- Modules/FindosgUtil.cmake | 61 +- Modules/FindosgViewer.cmake | 61 +- Modules/FindosgVolume.cmake | 61 +- Modules/FindosgWidget.cmake | 63 +- Modules/Findosg_functions.cmake | 23 +- Modules/FindwxWidgets.cmake | 251 +- Modules/FindwxWindows.cmake | 159 +- Modules/GNUInstallDirs.cmake | 253 +- Modules/GenerateExportHeader.cmake | 367 +- Modules/GetPrerequisites.cmake | 365 +- Modules/GoogleTestAddTests.cmake | 1 + Modules/InstallRequiredSystemLibraries.cmake | 109 +- Modules/Internal/CMakeCheckCompilerFlag.cmake | 158 + Modules/Internal/CPack/CPackDeb.cmake | 9 +- Modules/MacroAddFileDependencies.cmake | 27 +- Modules/Platform/Android/abi-common.cmake | 4 - Modules/Platform/CYGWIN-GNU.cmake | 3 + Modules/Platform/Darwin-Initialize.cmake | 8 +- Modules/Platform/Darwin.cmake | 8 + Modules/Platform/DragonFly.cmake | 4 + Modules/Platform/FreeBSD.cmake | 3 + Modules/Platform/Fuchsia.cmake | 3 + Modules/Platform/GHS-MULTI-Initialize.cmake | 8 +- Modules/Platform/Haiku.cmake | 1 + Modules/Platform/IRIX.cmake | 53 - Modules/Platform/IRIX64.cmake | 73 - Modules/Platform/Linux-Intel.cmake | 6 + Modules/Platform/Linux-PGI.cmake | 3 + Modules/Platform/Linux.cmake | 1 + Modules/Platform/NetBSD.cmake | 2 + Modules/Platform/OpenBSD.cmake | 4 + Modules/Platform/SINIX.cmake | 3 + Modules/Platform/SunOS-GNU.cmake | 1 + Modules/Platform/UNIX_SV.cmake | 3 + Modules/Platform/UnixPaths.cmake | 16 +- Modules/Platform/UnixWare.cmake | 3 + Modules/Platform/Windows-GNU.cmake | 3 + Modules/Platform/Windows-Intel-C.cmake | 2 + Modules/Platform/Windows-Intel-CXX.cmake | 2 + Modules/Platform/Windows-MSVC.cmake | 9 +- Modules/Platform/Windows-NVIDIA-CUDA.cmake | 6 +- Modules/Platform/iOS-Determine-CXX.cmake | 1 + Modules/Platform/iOS-Initialize.cmake | 7 + Modules/Platform/iOS.cmake | 1 + Modules/Platform/tvOS-Determine-CXX.cmake | 1 + Modules/Platform/tvOS-Initialize.cmake | 7 + Modules/Platform/tvOS.cmake | 1 + Modules/Platform/watchOS-Determine-CXX.cmake | 1 + Modules/Platform/watchOS-Initialize.cmake | 7 + Modules/Platform/watchOS.cmake | 1 + Modules/ProcessorCount.cmake | 93 +- Modules/Qt4ConfigDependentSettings.cmake | 16 +- Modules/Qt4Macros.cmake | 15 +- Modules/SelectLibraryConfigurations.cmake | 61 +- Modules/SquishTestScript.cmake | 31 +- Modules/TestBigEndian.cmake | 25 +- Modules/TestCXXAcceptsFlag.cmake | 35 +- Modules/TestForANSIForScope.cmake | 25 +- Modules/TestForANSIStreamHeaders.cmake | 25 +- Modules/TestForSSTREAM.cmake | 23 +- Modules/TestForSTDNamespace.cmake | 23 +- Modules/UseEcos.cmake | 57 +- Modules/UseJava.cmake | 1161 ++--- Modules/UseJavaClassFilelist.cmake | 23 +- Modules/UseJavaSymlinks.cmake | 19 +- Modules/UsePkgConfig.cmake | 37 +- Modules/UseQt4.cmake | 19 +- Modules/UseSWIG.cmake | 58 +- Modules/Use_wxWindows.cmake | 61 +- Modules/UsewxWidgets.cmake | 71 +- Modules/WriteBasicConfigVersionFile.cmake | 37 +- Modules/WriteCompilerDetectionHeader.cmake | 460 +- README.rst | 11 +- Source/CMakeLists.txt | 35 +- Source/CMakeVersion.cmake | 6 +- Source/CPack/IFW/cmCPackIFWGenerator.cxx | 4 +- Source/CPack/IFW/cmCPackIFWInstaller.cxx | 7 +- Source/CPack/IFW/cmCPackIFWPackage.cxx | 8 +- Source/CPack/IFW/cmCPackIFWRepository.cxx | 2 +- Source/CPack/OSXScriptLauncher.cxx | 3 +- Source/CPack/WiX/cmCPackWIXGenerator.h | 12 +- Source/CPack/cmCPack7zGenerator.cxx | 4 +- Source/CPack/cmCPackArchiveGenerator.cxx | 21 +- Source/CPack/cmCPackBundleGenerator.cxx | 8 +- Source/CPack/cmCPackDebGenerator.cxx | 60 +- Source/CPack/cmCPackDragNDropGenerator.cxx | 13 +- Source/CPack/cmCPackExternalGenerator.cxx | 3 +- Source/CPack/cmCPackFreeBSDGenerator.cxx | 69 +- Source/CPack/cmCPackGenerator.cxx | 28 +- Source/CPack/cmCPackNSISGenerator.cxx | 12 +- Source/CPack/cmCPackOSXX11Generator.cxx | 10 +- Source/CPack/cmCPackPKGGenerator.cxx | 7 +- Source/CPack/cmCPackPackageMakerGenerator.cxx | 28 +- Source/CPack/cmCPackProductBuildGenerator.cxx | 6 +- Source/CPack/cmCPackRPMGenerator.cxx | 8 +- Source/CPack/cmCPackSTGZGenerator.cxx | 9 +- Source/CPack/cmCPackTGZGenerator.cxx | 4 +- Source/CPack/cmCPackTXZGenerator.cxx | 4 +- Source/CPack/cmCPackTarBZip2Generator.cxx | 4 +- Source/CPack/cmCPackTarCompressGenerator.cxx | 4 +- Source/CPack/cmCPackZIPGenerator.cxx | 4 +- Source/CPack/cpack.cxx | 35 +- Source/CTest/cmCTestBZR.cxx | 4 +- Source/CTest/cmCTestBuildAndTestHandler.cxx | 52 +- Source/CTest/cmCTestBuildCommand.cxx | 19 +- Source/CTest/cmCTestBuildHandler.cxx | 38 +- Source/CTest/cmCTestCVS.cxx | 8 +- Source/CTest/cmCTestConfigureHandler.cxx | 4 +- Source/CTest/cmCTestCoverageHandler.cxx | 17 +- Source/CTest/cmCTestGIT.cxx | 21 +- Source/CTest/cmCTestGenericHandler.cxx | 4 +- Source/CTest/cmCTestGlobalVC.cxx | 4 +- Source/CTest/cmCTestHG.cxx | 7 +- Source/CTest/cmCTestHandlerCommand.cxx | 17 +- Source/CTest/cmCTestLaunch.cxx | 15 +- Source/CTest/cmCTestMemCheckHandler.cxx | 24 +- Source/CTest/cmCTestMultiProcessHandler.cxx | 343 +- Source/CTest/cmCTestMultiProcessHandler.h | 1 + Source/CTest/cmCTestP4.cxx | 12 +- Source/CTest/cmCTestRunScriptCommand.cxx | 3 +- Source/CTest/cmCTestRunTest.h | 6 +- Source/CTest/cmCTestSVN.cxx | 14 +- Source/CTest/cmCTestSVN.h | 2 +- Source/CTest/cmCTestScriptHandler.cxx | 43 +- Source/CTest/cmCTestScriptHandler.h | 5 +- Source/CTest/cmCTestStartCommand.cxx | 2 +- Source/CTest/cmCTestSubmitCommand.cxx | 78 +- Source/CTest/cmCTestSubmitCommand.h | 2 + Source/CTest/cmCTestSubmitHandler.cxx | 918 +--- Source/CTest/cmCTestSubmitHandler.h | 27 +- Source/CTest/cmCTestTestHandler.cxx | 85 +- Source/CTest/cmCTestTestHandler.h | 5 +- Source/CTest/cmCTestUpdateHandler.cxx | 4 +- Source/CTest/cmCTestUploadCommand.cxx | 4 +- Source/CTest/cmCTestVC.cxx | 8 +- Source/CTest/cmParseBlanketJSCoverage.cxx | 2 +- Source/CTest/cmParseCoberturaCoverage.cxx | 17 +- Source/CTest/cmParseDelphiCoverage.cxx | 4 +- Source/CTest/cmParseGTMCoverage.cxx | 9 +- Source/CTest/cmParseJacocoCoverage.cxx | 5 - Source/CTest/cmParseMumpsCoverage.cxx | 5 +- Source/CTest/cmProcess.cxx | 6 +- Source/Checks/cm_cxx_features.cmake | 2 + Source/CursesDialog/ccmake.cxx | 24 +- Source/CursesDialog/cmCursesBoolWidget.h | 5 +- Source/CursesDialog/cmCursesCacheEntryComposite.h | 7 +- Source/CursesDialog/cmCursesDummyWidget.h | 5 +- Source/CursesDialog/cmCursesFilePathWidget.h | 5 +- Source/CursesDialog/cmCursesForm.h | 5 +- Source/CursesDialog/cmCursesLabelWidget.cxx | 4 +- Source/CursesDialog/cmCursesLabelWidget.h | 5 +- Source/CursesDialog/cmCursesLongMessageForm.h | 5 +- Source/CursesDialog/cmCursesMainForm.cxx | 37 +- Source/CursesDialog/cmCursesMainForm.h | 10 +- Source/CursesDialog/cmCursesOptionsWidget.h | 5 +- Source/CursesDialog/cmCursesPathWidget.h | 5 +- Source/CursesDialog/cmCursesStringWidget.h | 5 +- Source/CursesDialog/cmCursesWidget.h | 5 +- Source/LexerParser/cmCommandArgumentLexer.cxx | 6 +- Source/LexerParser/cmCommandArgumentLexer.in.l | 6 +- Source/LexerParser/cmDependsJavaLexer.cxx | 8 +- Source/LexerParser/cmDependsJavaLexer.in.l | 8 +- Source/LexerParser/cmDependsJavaParser.cxx | 2 +- Source/LexerParser/cmDependsJavaParser.y | 2 +- Source/LexerParser/cmExprLexer.cxx | 8 +- Source/LexerParser/cmExprLexer.in.l | 8 +- Source/LexerParser/cmFortranLexer.cxx | 6 +- Source/LexerParser/cmFortranLexer.in.l | 6 +- Source/LexerParser/cmListFileLexer.c | 2 +- Source/LexerParser/cmListFileLexer.in.l | 2 +- Source/QtDialog/AddCacheEntry.cxx | 16 +- Source/QtDialog/CMakeLists.txt | 11 + Source/QtDialog/CMakeSetup.cxx | 79 +- Source/QtDialog/CMakeSetup128.png | Bin 10944 -> 7981 bytes Source/QtDialog/CMakeSetup32.png | Bin 2097 -> 1632 bytes Source/QtDialog/CMakeSetup64.png | Bin 4676 -> 3566 bytes Source/QtDialog/CMakeSetupDialog.cxx | 25 + Source/QtDialog/CMakeSetupDialog.h | 8 + Source/QtDialog/Delete16.png | Bin 731 -> 538 bytes Source/QtDialog/FirstConfigure.cxx | 96 +- Source/QtDialog/FirstConfigure.h | 9 + Source/QtDialog/Plus16.png | Bin 358 -> 207 bytes Source/QtDialog/QCMake.cxx | 73 +- Source/QtDialog/QCMake.h | 17 +- Source/QtDialog/QCMakeCacheView.cxx | 8 +- Source/QtDialog/QCMakeWidgets.cxx | 5 +- Source/QtDialog/QCMakeWidgets.h | 2 +- Source/cmAddCustomCommandCommand.cxx | 8 +- Source/cmAddCustomTargetCommand.cxx | 8 +- Source/cmAddDependenciesCommand.cxx | 6 +- Source/cmAddLibraryCommand.cxx | 8 +- Source/cmAddSubDirectoryCommand.cxx | 6 +- Source/cmAlgorithms.h | 10 +- Source/cmArchiveWrite.cxx | 4 +- Source/cmArchiveWrite.h | 8 +- Source/cmAuxSourceDirectoryCommand.cxx | 1 + Source/cmBase32.cxx | 8 +- Source/cmBreakCommand.cxx | 14 +- Source/cmBuildCommand.cxx | 4 +- Source/cmCLocaleEnvironmentScope.h | 6 +- Source/cmCMakeHostSystemInformationCommand.cxx | 24 +- Source/cmCMakeMinimumRequired.cxx | 6 +- Source/cmCMakePolicyCommand.cxx | 37 +- Source/cmCMakePolicyCommand.h | 1 + Source/cmCPackPropertiesGenerator.h | 6 +- Source/cmCPluginAPI.cxx | 29 +- Source/cmCTest.cxx | 186 +- Source/cmCTest.h | 54 +- Source/cmCacheManager.cxx | 35 +- Source/cmCacheManager.h | 10 +- Source/cmCallVisualStudioMacro.cxx | 4 +- Source/cmCommand.h | 14 +- Source/cmCommandArgumentParserHelper.cxx | 25 +- Source/cmCommandArgumentParserHelper.h | 8 +- Source/cmCommandArgumentsHelper.h | 8 +- Source/cmCommonTargetGenerator.cxx | 6 +- Source/cmComputeComponentGraph.cxx | 8 +- Source/cmComputeLinkDepends.cxx | 14 +- Source/cmComputeLinkDepends.h | 20 +- Source/cmComputeLinkInformation.cxx | 52 +- Source/cmComputeLinkInformation.h | 17 +- Source/cmComputeTargetDepends.cxx | 70 +- Source/cmComputeTargetDepends.h | 3 + Source/cmConditionEvaluator.cxx | 49 +- Source/cmConditionEvaluator.h | 21 +- Source/cmConfigure.cmake.h.in | 5 +- Source/cmConfigureFileCommand.cxx | 4 +- Source/cmConnection.cxx | 4 +- Source/cmConnection.h | 7 +- Source/cmContinueCommand.cxx | 6 +- Source/cmConvertMSBuildXMLToJSON.py | 19 +- Source/cmCoreTryCompile.cxx | 137 +- Source/cmCryptoHash.h | 5 +- Source/cmCurl.cxx | 14 +- Source/cmCustomCommand.cxx | 30 +- Source/cmCustomCommand.h | 24 +- Source/cmCustomCommandGenerator.cxx | 4 +- Source/cmCustomCommandGenerator.h | 4 +- Source/cmDefinitions.h | 13 +- Source/cmDepends.cxx | 28 +- Source/cmDepends.h | 24 +- Source/cmDependsC.cxx | 32 +- Source/cmDependsC.h | 17 +- Source/cmDependsFortran.cxx | 69 +- Source/cmDependsFortran.h | 22 +- Source/cmDependsJava.cxx | 11 +- Source/cmDependsJava.h | 7 +- Source/cmDependsJavaParserHelper.cxx | 4 +- Source/cmDisallowedCommand.cxx | 6 +- Source/cmDocumentation.cxx | 140 +- Source/cmDocumentation.h | 17 +- Source/cmDocumentationEntry.h | 3 +- Source/cmDocumentationFormatter.cxx | 13 +- Source/cmDocumentationFormatter.h | 4 +- Source/cmDocumentationSection.h | 2 +- Source/cmDynamicLoader.cxx | 4 +- Source/cmDynamicLoader.h | 6 +- Source/cmELF.cxx | 2 +- Source/cmELF.h | 2 +- Source/cmExecProgramCommand.cxx | 8 +- Source/cmExecuteProcessCommand.cxx | 18 +- Source/cmExecutionStatus.h | 16 +- Source/cmExpandedCommandArgument.cxx | 11 +- Source/cmExpandedCommandArgument.h | 4 +- Source/cmExportBuildAndroidMKGenerator.cxx | 4 +- Source/cmExportBuildFileGenerator.cxx | 8 +- Source/cmExportCommand.cxx | 10 +- Source/cmExportFileGenerator.cxx | 23 +- Source/cmExportFileGenerator.h | 2 +- Source/cmExportInstallFileGenerator.cxx | 23 +- Source/cmExportSet.h | 5 +- Source/cmExprParserHelper.cxx | 4 +- Source/cmExternalMakefileProjectGenerator.cxx | 13 +- Source/cmExternalMakefileProjectGenerator.h | 5 +- Source/cmExtraCodeBlocksGenerator.cxx | 7 +- Source/cmExtraCodeLiteGenerator.cxx | 21 +- Source/cmExtraCodeLiteGenerator.h | 2 +- Source/cmExtraEclipseCDT4Generator.cxx | 118 +- Source/cmExtraKateGenerator.cxx | 10 +- Source/cmExtraSublimeTextGenerator.cxx | 11 +- Source/cmFLTKWrapUICommand.cxx | 2 +- Source/cmFileAPI.cxx | 800 +++ Source/cmFileAPI.h | 204 + Source/cmFileAPICMakeFiles.cxx | 114 + Source/cmFileAPICMakeFiles.h | 15 + Source/cmFileAPICache.cxx | 106 + Source/cmFileAPICache.h | 15 + Source/cmFileAPICodemodel.cxx | 1247 +++++ Source/cmFileAPICodemodel.h | 15 + Source/cmFileCommand.cxx | 260 +- Source/cmFileCommand.h | 3 + Source/cmFileLock.h | 10 +- Source/cmFileLockPool.cxx | 8 +- Source/cmFileLockPool.h | 10 +- Source/cmFileLockUnix.cxx | 5 +- Source/cmFileLockWin32.cxx | 1 - Source/cmFileMonitor.cxx | 6 - Source/cmFileMonitor.h | 4 +- Source/cmFilePathChecksum.cxx | 4 +- Source/cmFileTimeComparison.cxx | 27 +- Source/cmFileTimeComparison.h | 7 +- Source/cmFindBase.cxx | 4 +- Source/cmFindCommon.cxx | 14 +- Source/cmFindLibraryCommand.cxx | 7 +- Source/cmFindPackageCommand.cxx | 145 +- Source/cmFindPackageCommand.h | 6 +- Source/cmForEachCommand.cxx | 8 +- Source/cmFortranParser.h | 10 +- Source/cmFortranParserImpl.cxx | 9 +- Source/cmFunctionBlocker.h | 2 +- Source/cmFunctionCommand.cxx | 5 - Source/cmFunctionCommand.h | 4 +- Source/cmGeneratedFileStream.cxx | 20 +- Source/cmGeneratedFileStream.h | 13 +- Source/cmGeneratorExpression.cxx | 28 +- Source/cmGeneratorExpression.h | 38 +- Source/cmGeneratorExpressionContext.cxx | 14 +- Source/cmGeneratorExpressionContext.h | 6 +- Source/cmGeneratorExpressionDAGChecker.cxx | 39 +- Source/cmGeneratorExpressionDAGChecker.h | 7 +- Source/cmGeneratorExpressionEvaluationFile.cxx | 14 +- Source/cmGeneratorExpressionEvaluationFile.h | 2 +- Source/cmGeneratorExpressionEvaluator.h | 12 +- Source/cmGeneratorExpressionLexer.cxx | 10 +- Source/cmGeneratorExpressionLexer.h | 4 +- Source/cmGeneratorExpressionNode.cxx | 189 +- Source/cmGeneratorExpressionNode.h | 2 +- Source/cmGeneratorExpressionParser.cxx | 4 +- Source/cmGeneratorExpressionParser.h | 3 +- Source/cmGeneratorTarget.cxx | 638 ++- Source/cmGeneratorTarget.h | 93 +- Source/cmGetDirectoryPropertyCommand.cxx | 4 +- Source/cmGetFilenameComponentCommand.cxx | 14 +- Source/cmGetPropertyCommand.cxx | 3 +- Source/cmGetTargetPropertyCommand.cxx | 8 +- Source/cmGhsMultiGpj.cxx | 31 +- Source/cmGhsMultiGpj.h | 6 +- Source/cmGhsMultiTargetGenerator.cxx | 809 ++-- Source/cmGhsMultiTargetGenerator.h | 102 +- Source/cmGlobVerificationManager.cxx | 5 +- Source/cmGlobVerificationManager.h | 17 +- Source/cmGlobalBorlandMakefileGenerator.cxx | 3 +- Source/cmGlobalBorlandMakefileGenerator.h | 2 +- Source/cmGlobalCommonGenerator.cxx | 4 +- Source/cmGlobalGenerator.cxx | 311 +- Source/cmGlobalGenerator.h | 76 +- Source/cmGlobalGeneratorFactory.h | 28 +- Source/cmGlobalGhsMultiGenerator.cxx | 523 +- Source/cmGlobalGhsMultiGenerator.h | 128 +- Source/cmGlobalJOMMakefileGenerator.cxx | 3 +- Source/cmGlobalJOMMakefileGenerator.h | 2 +- Source/cmGlobalMSYSMakefileGenerator.cxx | 1 + Source/cmGlobalMinGWMakefileGenerator.cxx | 1 + Source/cmGlobalNMakeMakefileGenerator.cxx | 3 +- Source/cmGlobalNMakeMakefileGenerator.h | 2 +- Source/cmGlobalNinjaGenerator.cxx | 72 +- Source/cmGlobalNinjaGenerator.h | 14 +- Source/cmGlobalUnixMakefileGenerator3.cxx | 98 +- Source/cmGlobalUnixMakefileGenerator3.h | 8 +- Source/cmGlobalVisualStudio10Generator.cxx | 379 +- Source/cmGlobalVisualStudio10Generator.h | 41 +- Source/cmGlobalVisualStudio11Generator.cxx | 68 +- Source/cmGlobalVisualStudio11Generator.h | 10 +- Source/cmGlobalVisualStudio12Generator.cxx | 62 +- Source/cmGlobalVisualStudio12Generator.h | 14 +- Source/cmGlobalVisualStudio14Generator.cxx | 59 +- Source/cmGlobalVisualStudio14Generator.h | 11 +- Source/cmGlobalVisualStudio15Generator.cxx | 298 -- Source/cmGlobalVisualStudio15Generator.h | 64 - Source/cmGlobalVisualStudio71Generator.cxx | 19 +- Source/cmGlobalVisualStudio71Generator.h | 5 +- Source/cmGlobalVisualStudio7Generator.cxx | 72 +- Source/cmGlobalVisualStudio7Generator.h | 22 +- Source/cmGlobalVisualStudio8Generator.cxx | 20 +- Source/cmGlobalVisualStudio8Generator.h | 13 +- Source/cmGlobalVisualStudio9Generator.cxx | 41 +- Source/cmGlobalVisualStudio9Generator.h | 11 +- Source/cmGlobalVisualStudioGenerator.cxx | 157 +- Source/cmGlobalVisualStudioGenerator.h | 31 +- Source/cmGlobalVisualStudioVersionedGenerator.cxx | 515 ++ Source/cmGlobalVisualStudioVersionedGenerator.h | 65 + Source/cmGlobalWatcomWMakeGenerator.cxx | 2 +- Source/cmGlobalWatcomWMakeGenerator.h | 2 +- Source/cmGlobalXCodeGenerator.cxx | 186 +- Source/cmGlobalXCodeGenerator.h | 12 +- Source/cmGraphAdjacencyList.h | 9 +- Source/cmGraphVizWriter.cxx | 44 +- Source/cmGraphVizWriter.h | 4 +- Source/cmIDEFlagTable.h | 10 +- Source/cmIDEOptions.cxx | 12 +- Source/cmIfCommand.cxx | 17 +- Source/cmIfCommand.h | 13 +- Source/cmIncludeCommand.cxx | 15 +- Source/cmIncludeDirectoryCommand.cxx | 1 + Source/cmIncludeExternalMSProjectCommand.cxx | 1 + Source/cmInstallCommand.cxx | 426 +- Source/cmInstallCommand.h | 22 + Source/cmInstallCommandArguments.cxx | 21 +- Source/cmInstallCommandArguments.h | 5 +- Source/cmInstallDirectoryGenerator.cxx | 4 +- Source/cmInstallExportAndroidMKGenerator.cxx | 2 +- Source/cmInstallExportGenerator.cxx | 6 +- Source/cmInstallFilesGenerator.cxx | 4 +- Source/cmInstallGenerator.cxx | 13 +- Source/cmInstallGenerator.h | 9 +- Source/cmInstallScriptGenerator.cxx | 72 +- Source/cmInstallScriptGenerator.h | 14 +- Source/cmInstallSubdirectoryGenerator.cxx | 75 + Source/cmInstallSubdirectoryGenerator.h | 41 + Source/cmInstallTargetGenerator.cxx | 45 +- Source/cmInstallTargetGenerator.h | 15 +- Source/cmInstalledFile.cxx | 9 +- Source/cmInstalledFile.h | 2 +- Source/cmJsonObjects.cxx | 32 +- Source/cmLinkDirectoriesCommand.cxx | 6 +- Source/cmLinkItem.cxx | 24 +- Source/cmLinkItem.h | 53 +- Source/cmLinkLineComputer.cxx | 10 +- Source/cmLinkLineComputer.h | 5 +- Source/cmLinkLineDeviceComputer.cxx | 4 +- Source/cmLinkLineDeviceComputer.h | 12 +- Source/cmLinkedTree.h | 3 +- Source/cmListCommand.cxx | 79 +- Source/cmListFileCache.cxx | 53 +- Source/cmListFileCache.h | 74 +- Source/cmLocalCommonGenerator.cxx | 11 +- Source/cmLocalCommonGenerator.h | 2 +- Source/cmLocalGenerator.cxx | 438 +- Source/cmLocalGenerator.h | 83 +- Source/cmLocalGhsMultiGenerator.cxx | 81 +- Source/cmLocalGhsMultiGenerator.h | 11 + Source/cmLocalNinjaGenerator.cxx | 49 +- Source/cmLocalUnixMakefileGenerator3.cxx | 155 +- Source/cmLocalUnixMakefileGenerator3.h | 55 +- Source/cmLocalVisualStudio10Generator.cxx | 1 + Source/cmLocalVisualStudio7Generator.cxx | 31 +- Source/cmLocalVisualStudioGenerator.cxx | 7 +- Source/cmLocalXCodeGenerator.cxx | 4 +- Source/cmLocale.h | 6 +- Source/cmMSVC60LinkLineComputer.h | 6 +- Source/cmMachO.cxx | 12 +- Source/cmMachO.h | 2 +- Source/cmMacroCommand.cxx | 7 +- Source/cmMacroCommand.h | 4 +- Source/cmMakefile.cxx | 359 +- Source/cmMakefile.h | 58 +- Source/cmMakefileExecutableTargetGenerator.cxx | 12 +- Source/cmMakefileLibraryTargetGenerator.cxx | 27 +- Source/cmMakefileTargetGenerator.cxx | 44 +- Source/cmMathCommand.cxx | 4 +- Source/cmMessageCommand.cxx | 22 +- Source/cmMessageType.h | 21 + Source/cmMessenger.cxx | 106 +- Source/cmMessenger.h | 50 +- Source/cmNewLineStyle.cxx | 5 +- Source/cmNewLineStyle.h | 2 +- Source/cmNinjaLinkLineComputer.h | 5 +- Source/cmNinjaNormalTargetGenerator.cxx | 50 +- Source/cmNinjaTargetGenerator.cxx | 59 +- Source/cmNinjaUtilityTargetGenerator.cxx | 7 +- Source/cmOSXBundleGenerator.cxx | 5 +- Source/cmOSXBundleGenerator.h | 5 +- Source/cmOptionCommand.cxx | 4 +- Source/cmOrderDirectories.cxx | 9 +- Source/cmOutputConverter.cxx | 117 - Source/cmOutputConverter.h | 23 - Source/cmOutputRequiredFilesCommand.cxx | 18 +- Source/cmParseArgumentsCommand.cxx | 21 +- Source/cmPathLabel.cxx | 6 +- Source/cmPathLabel.h | 2 +- Source/cmPipeConnection.cxx | 6 +- Source/cmPipeConnection.h | 2 +- Source/cmPolicies.cxx | 16 +- Source/cmPolicies.h | 28 +- Source/cmProcessOutput.cxx | 4 +- Source/cmProcessTools.cxx | 7 +- Source/cmProcessTools.h | 8 +- Source/cmProjectCommand.cxx | 55 +- Source/cmQTWrapCPPCommand.cxx | 2 +- Source/cmQTWrapUICommand.cxx | 2 +- Source/cmQtAutoGen.cxx | 36 + Source/cmQtAutoGen.h | 3 + Source/cmQtAutoGenGlobalInitializer.cxx | 224 + Source/cmQtAutoGenGlobalInitializer.h | 47 + Source/cmQtAutoGenInitializer.cxx | 986 ++-- Source/cmQtAutoGenInitializer.h | 77 +- Source/cmQtAutoGenerator.cxx | 12 +- Source/cmQtAutoGenerator.h | 7 +- Source/cmQtAutoGeneratorMocUic.cxx | 84 +- Source/cmQtAutoGeneratorMocUic.h | 52 +- Source/cmQtAutoGeneratorRcc.cxx | 19 +- Source/cmQtAutoGeneratorRcc.h | 16 +- Source/cmRST.cxx | 13 +- Source/cmRST.h | 2 +- Source/cmRulePlaceholderExpander.cxx | 28 +- Source/cmRulePlaceholderExpander.h | 8 +- Source/cmScriptGenerator.cxx | 15 +- Source/cmScriptGenerator.h | 16 +- Source/cmSearchPath.cxx | 4 +- Source/cmServer.cxx | 30 +- Source/cmServer.h | 12 +- Source/cmServerConnection.cxx | 6 +- Source/cmServerProtocol.cxx | 46 +- Source/cmServerProtocol.h | 20 +- Source/cmSetCommand.cxx | 27 +- Source/cmSetSourceFilesPropertiesCommand.cxx | 16 +- Source/cmSiteNameCommand.cxx | 12 +- Source/cmSourceFile.cxx | 149 +- Source/cmSourceFile.h | 12 +- Source/cmSourceFileLocation.cxx | 20 +- Source/cmSourceFileLocation.h | 15 +- Source/cmSourceGroup.cxx | 6 +- Source/cmSourceGroup.h | 2 +- Source/cmSourceGroupCommand.cxx | 26 +- Source/cmState.cxx | 80 +- Source/cmState.h | 38 +- Source/cmStateDirectory.cxx | 26 + Source/cmStateDirectory.h | 6 + Source/cmStatePrivate.h | 3 +- Source/cmStateSnapshot.cxx | 11 +- Source/cmStateSnapshot.h | 1 + Source/cmString.cxx | 152 + Source/cmString.hxx | 815 ++++ Source/cmStringCommand.cxx | 7 +- Source/cmStringReplaceHelper.cxx | 17 +- Source/cmStringReplaceHelper.h | 11 +- Source/cmSystemTools.cxx | 265 +- Source/cmSystemTools.h | 73 +- Source/cmTarget.cxx | 124 +- Source/cmTarget.h | 21 +- Source/cmTargetCompileDefinitionsCommand.cxx | 4 +- Source/cmTargetCompileFeaturesCommand.cxx | 4 +- Source/cmTargetCompileOptionsCommand.cxx | 4 +- Source/cmTargetDepend.h | 6 + Source/cmTargetIncludeDirectoriesCommand.cxx | 4 +- Source/cmTargetLinkDirectoriesCommand.cxx | 4 +- Source/cmTargetLinkLibrariesCommand.cxx | 64 +- Source/cmTargetLinkOptionsCommand.cxx | 4 +- Source/cmTargetPropCommandBase.cxx | 25 +- Source/cmTargetPropertyComputer.cxx | 11 +- Source/cmTargetSourcesCommand.cxx | 8 +- Source/cmTest.cxx | 4 +- Source/cmTestGenerator.cxx | 62 +- Source/cmTestGenerator.h | 8 +- Source/cmTimestamp.h | 8 +- Source/cmTryCompileCommand.cxx | 3 +- Source/cmTryRunCommand.cxx | 16 +- Source/cmUVHandlePtr.h | 46 +- Source/cmUnexpectedCommand.h | 5 +- Source/cmUseMangledMesaCommand.cxx | 2 +- Source/cmUtilitySourceCommand.cxx | 2 +- Source/cmVS10CLFlagTable.h | 205 - Source/cmVS10CSharpFlagTable.h | 121 - Source/cmVS10CudaFlagTable.h | 54 - Source/cmVS10CudaHostFlagTable.h | 35 - Source/cmVS10LibFlagTable.h | 76 - Source/cmVS10LinkFlagTable.h | 247 - Source/cmVS10MASMFlagTable.h | 76 - Source/cmVS10NASMFlagTable.h | 50 - Source/cmVS10RCFlagTable.h | 7 - Source/cmVS11CLFlagTable.h | 220 - Source/cmVS11CSharpFlagTable.h | 121 - Source/cmVS11LibFlagTable.h | 76 - Source/cmVS11LinkFlagTable.h | 272 -- Source/cmVS11MASMFlagTable.h | 76 - Source/cmVS11RCFlagTable.h | 7 - Source/cmVS12CLFlagTable.h | 222 - Source/cmVS12CSharpFlagTable.h | 121 - Source/cmVS12LibFlagTable.h | 76 - Source/cmVS12LinkFlagTable.h | 272 -- Source/cmVS12MASMFlagTable.h | 76 - Source/cmVS12RCFlagTable.h | 7 - Source/cmVS140CLFlagTable.h | 240 - Source/cmVS140CSharpFlagTable.h | 121 - Source/cmVS140LinkFlagTable.h | 285 -- Source/cmVS141CLFlagTable.h | 258 - Source/cmVS141CSharpFlagTable.h | 126 - Source/cmVS141LinkFlagTable.h | 287 -- Source/cmVS14LibFlagTable.h | 77 - Source/cmVS14MASMFlagTable.h | 76 - Source/cmVS14RCFlagTable.h | 7 - Source/cmVSSetupHelper.cxx | 61 +- Source/cmVSSetupHelper.h | 9 +- Source/cmVariableRequiresCommand.cxx | 2 +- Source/cmVariableWatch.cxx | 8 +- Source/cmVariableWatch.h | 12 +- Source/cmVariableWatchCommand.cxx | 9 +- Source/cmVisualStudio10TargetGenerator.cxx | 319 +- Source/cmVisualStudio10TargetGenerator.h | 11 +- Source/cmVisualStudio10ToolsetOptions.cxx | 128 +- Source/cmVisualStudio10ToolsetOptions.h | 28 +- Source/cmVisualStudioGeneratorOptions.cxx | 3 +- Source/cmVisualStudioSlnParser.cxx | 6 +- Source/cmWhileCommand.cxx | 8 +- Source/cmWriteFileCommand.cxx | 2 +- Source/cmXCodeScheme.cxx | 9 +- Source/cmXCodeScheme.h | 2 +- Source/cmXMLWriter.h | 5 +- Source/cm_codecvt.cxx | 4 +- Source/cm_static_string_view.hxx | 41 + Source/cm_string_view.cxx | 301 ++ Source/cm_string_view.hxx | 217 + Source/cm_thread.hxx | 12 +- Source/cmake.cxx | 291 +- Source/cmake.h | 69 +- Source/cmakemain.cxx | 147 +- Source/cmcldeps.cxx | 2 +- Source/cmcmd.cxx | 136 +- Source/cmparseMSBuildXML.py | 341 -- Source/ctest.cxx | 9 +- Source/kwsys/CMakeLists.txt | 34 +- Source/kwsys/ProcessUNIX.c | 2 +- Source/kwsys/SystemInformation.cxx | 6 +- Source/kwsys/SystemTools.cxx | 269 +- Source/kwsys/SystemTools.hxx.in | 7 + Source/kwsys/kwsysPlatformTests.cmake | 5 + Source/kwsys/testCommandLineArguments.cxx | 35 +- Source/kwsys/testSystemTools.cxx | 46 + Templates/MSBuild/FlagTables/v10_CL.json | 981 ++++ Templates/MSBuild/FlagTables/v10_CSharp.json | 570 +++ Templates/MSBuild/FlagTables/v10_Cuda.json | 224 + Templates/MSBuild/FlagTables/v10_CudaHost.json | 149 + Templates/MSBuild/FlagTables/v10_LIB.json | 297 ++ Templates/MSBuild/FlagTables/v10_Link.json | 1137 +++++ Templates/MSBuild/FlagTables/v10_MASM.json | 295 ++ Templates/MSBuild/FlagTables/v10_NASM.json | 201 + Templates/MSBuild/FlagTables/v10_RC.json | 69 + Templates/MSBuild/FlagTables/v11_CL.json | 1063 ++++ Templates/MSBuild/FlagTables/v11_CSharp.json | 570 +++ Templates/MSBuild/FlagTables/v11_LIB.json | 297 ++ Templates/MSBuild/FlagTables/v11_Link.json | 1272 +++++ Templates/MSBuild/FlagTables/v11_MASM.json | 295 ++ Templates/MSBuild/FlagTables/v11_RC.json | 69 + Templates/MSBuild/FlagTables/v12_CL.json | 1077 +++++ Templates/MSBuild/FlagTables/v12_CSharp.json | 570 +++ Templates/MSBuild/FlagTables/v12_LIB.json | 297 ++ Templates/MSBuild/FlagTables/v12_Link.json | 1272 +++++ Templates/MSBuild/FlagTables/v12_MASM.json | 295 ++ Templates/MSBuild/FlagTables/v12_RC.json | 69 + Templates/MSBuild/FlagTables/v140_CL.json | 1184 +++++ Templates/MSBuild/FlagTables/v140_CSharp.json | 570 +++ Templates/MSBuild/FlagTables/v140_Link.json | 1316 +++++ Templates/MSBuild/FlagTables/v141_CL.json | 1268 +++++ Templates/MSBuild/FlagTables/v141_CSharp.json | 570 +++ Templates/MSBuild/FlagTables/v141_Link.json | 1323 +++++ Templates/MSBuild/FlagTables/v142_CL.json | 1212 +++++ Templates/MSBuild/FlagTables/v142_Link.json | 1323 +++++ Templates/MSBuild/FlagTables/v14_LIB.json | 304 ++ Templates/MSBuild/FlagTables/v14_MASM.json | 295 ++ Templates/MSBuild/FlagTables/v14_RC.json | 69 + Templates/Windows/ApplicationIcon.png | Bin 3392 -> 2335 bytes Templates/Windows/Logo.png | Bin 801 -> 488 bytes Templates/Windows/SmallLogo.png | Bin 329 -> 167 bytes Templates/Windows/SmallLogo44x44.png | Bin 554 -> 265 bytes Templates/Windows/SplashScreen.png | Bin 2146 -> 909 bytes Templates/Windows/StoreLogo.png | Bin 429 -> 227 bytes Tests/CMakeLib/CMakeLists.txt | 1 + Tests/CMakeLib/PseudoMemcheck/memtester.cxx.in | 6 +- Tests/CMakeLib/testString.cxx | 1347 ++++++ Tests/CMakeLib/testSystemTools.cxx | 12 +- Tests/CMakeLib/testUVRAII.cxx | 2 +- Tests/CMakeLists.txt | 315 +- Tests/CMakeOnly/CMakeLists.txt | 2 +- Tests/CMakeTests/FileDownloadInput.png | Bin 358 -> 194 bytes Tests/CMakeTests/FileDownloadTest.cmake.in | 16 +- Tests/CMakeTests/FileUploadTest.cmake.in | 4 +- Tests/CMakeTests/ImplicitLinkInfoTest.cmake.in | 72 - Tests/CMakeTests/StringTest.cmake.in | 2 +- Tests/CMakeTests/StringTestScript.cmake | 25 + .../CTestBuildCommandProjectInSubdir.cmake.in | 1 - Tests/CTestConfig/script.cmake.in | 1 - Tests/CTestCoverageCollectGCOV/test.cmake.in | 1 - Tests/CTestTestBadExe/CTestConfig.cmake | 3 - Tests/CTestTestBadGenerator/CTestConfig.cmake | 3 - Tests/CTestTestCostSerial/CTestConfig.cmake | 3 - Tests/CTestTestCrash/CTestConfig.cmake | 3 - Tests/CTestTestCycle/CTestConfig.cmake | 3 - Tests/CTestTestDepends/CTestConfig.cmake | 3 - Tests/CTestTestFailure/CTestConfig.cmake | 3 - Tests/CTestTestFdSetSize/CTestConfig.cmake | 1 - .../CTestConfig.cmake | 3 - .../CTestConfig.cmake | 3 - .../launcher_linker_test_project/CTestConfig.cmake | 3 - Tests/CTestTestParallel/CTestConfig.cmake | 3 - Tests/CTestTestResourceLock/CTestConfig.cmake | 3 - Tests/CTestTestScheduler/CTestConfig.cmake | 3 - Tests/CTestTestSkipReturnCode/CTestConfig.cmake | 3 - Tests/CTestTestStopTime/CTestConfig.cmake | 3 - Tests/CTestTestSubdir/CTestConfig.cmake | 3 - Tests/CTestTestTimeout/CTestConfig.cmake | 3 - Tests/CTestTestUpload/CTestConfig.cmake | 3 - Tests/CTestTestVerboseOutput/CTestConfig.cmake | 3 - Tests/CTestTestZeroTimeout/CTestConfig.cmake | 3 - Tests/CTestUpdateCommon.cmake | 1 - Tests/CompileOptions/CMakeLists.txt | 17 + Tests/CompileOptions/main.cpp | 15 +- Tests/CudaOnly/CMakeLists.txt | 11 + .../DontResolveDeviceSymbols/CMakeLists.txt | 50 + Tests/CudaOnly/DontResolveDeviceSymbols/file1.cu | 69 + Tests/CudaOnly/DontResolveDeviceSymbols/main.cu | 7 + .../CudaOnly/DontResolveDeviceSymbols/verify.cmake | 14 + Tests/ExportImport/Import/A/CMakeLists.txt | 1 - Tests/ExternalProject/CMakeLists.txt | 18 + Tests/ExternalProjectLocal/CMakeLists.txt | 130 +- Tests/ExternalProjectLocal/Step5/CMakeLists.txt | 71 + .../Step5/MathFunctions/CMakeLists.txt | 0 .../Step5}/MathFunctions/MakeTable.cxx | 0 .../Step5}/MathFunctions/MathFunctions.h | 0 .../Step5}/MathFunctions/mysqrt.cxx | 0 .../ExternalProjectLocal/Step5/TutorialConfig.h.in | 8 + .../Step5}/tutorial.cxx | 0 .../CMakeLists.txt | 20 + .../Example/subdir/Makefile | 2 + Tests/FindBoost/Test/CMakeLists.txt | 3 + Tests/FindBoost/Test/main.cxx | 17 +- Tests/FindCURL/Test/CMakeLists.txt | 2 +- Tests/FindFontconfig/CMakeLists.txt | 10 + Tests/FindFontconfig/Test/CMakeLists.txt | 16 + Tests/FindFontconfig/Test/main.c | 17 + Tests/FindGDAL/CMakeLists.txt | 10 + Tests/FindGDAL/Test/CMakeLists.txt | 16 + Tests/FindGDAL/Test/main.c | 11 + Tests/FindGIF/CMakeLists.txt | 10 + Tests/FindGIF/Test/CMakeLists.txt | 16 + Tests/FindGIF/Test/main.c | 35 + Tests/FindGit/CMakeLists.txt | 10 + Tests/FindGit/Test/CMakeLists.txt | 13 + Tests/FindGit/Test/RunGit.cmake | 20 + Tests/FindJPEG/Test/CMakeLists.txt | 2 + Tests/FindJPEG/Test/main.c | 2 +- Tests/FindLibLZMA/CMakeLists.txt | 10 + Tests/FindLibLZMA/Test/CMakeLists.txt | 14 + Tests/FindLibLZMA/Test/main.c | 15 + Tests/FindLibinput/CMakeLists.txt | 10 + Tests/FindLibinput/Test/CMakeLists.txt | 14 + Tests/FindLibinput/Test/main.c | 13 + Tests/FindMatlab/basic_checks/CMakeLists.txt | 5 +- Tests/FindMatlab/cmake_matlab_unit_tests4.m | 28 + Tests/FindMatlab/cmake_matlab_unit_tests5.m | 20 + Tests/FindMatlab/components_checks/CMakeLists.txt | 4 +- Tests/FindMatlab/failure_reports/CMakeLists.txt | 5 +- Tests/FindMatlab/matlab_wrapper2.cpp | 22 + Tests/FindMatlab/matlab_wrapper3.cpp | 29 + Tests/FindMatlab/r2018a_check/CMakeLists.txt | 84 + Tests/FindOctave/CMakeLists.txt | 10 + Tests/FindOctave/Test/CMakeLists.txt | 20 + Tests/FindOctave/Test/main.cpp | 18 + Tests/FindOctave/Test/testtrue.m | 1 + Tests/FindPackageTest/CMakeLists.txt | 937 +--- .../cmake/SetFoundResolvedConfig.cmake | 1 + Tests/FindPostgreSQL/CMakeLists.txt | 10 + Tests/FindPostgreSQL/Test/CMakeLists.txt | 16 + Tests/FindPostgreSQL/Test/main.c | 15 + Tests/FindPython/CMakeLists.txt | 151 +- Tests/FindPython/FindPythonScript.cmake | 1 + Tests/FindPython/NumPy/CMakeLists.txt | 22 + Tests/FindPython/NumPy/arraytest.c | 58 + Tests/FindPython/NumPyOnly/CMakeLists.txt | 14 + Tests/FindPython/Python/CMakeLists.txt | 12 + Tests/FindPython/Python2/CMakeLists.txt | 12 + Tests/FindPython/Python3/CMakeLists.txt | 12 + Tests/FindSQLite3/CMakeLists.txt | 10 + Tests/FindSQLite3/Test/CMakeLists.txt | 16 + Tests/FindSQLite3/Test/main.c | 10 + Tests/FindThreads/C-only/CMakeLists.txt | 1 - Tests/FindThreads/CXX-only/CMakeLists.txt | 1 - Tests/FindX11/CMakeLists.txt | 10 + Tests/FindX11/Test/CMakeLists.txt | 89 + Tests/FindX11/Test/main.c | 405 ++ Tests/Fortran/CMakeLists.txt | 5 + Tests/FortranOnly/CMakeLists.txt | 11 +- Tests/GhsMulti/CMakeLists.txt | 4 - .../GhsMultiCompilerOptions/CMakeLists.txt | 92 + .../GhsMultiCompilerOptions/CMakeLists.txt.in | 32 + Tests/GhsMulti/GhsMultiCompilerOptions/test.c | 4 + Tests/GhsMulti/GhsMultiCopyFile/CMakeLists.txt | 30 + Tests/GhsMulti/GhsMultiCopyFile/test.c | 4 + .../CMakeLists.txt | 17 + .../GhsMultiDuplicateSourceFilenames/main.c | 17 + .../subfolder/test.c | 4 + .../subfolder/testcase.c | 4 + .../subfolder_test.c | 4 + .../subfolder_test_0.c | 4 + .../GhsMultiDuplicateSourceFilenames/test.c | 4 + .../GhsMultiDuplicateSourceFilenames/testCase.c | 4 + Tests/GhsMulti/GhsMultiExclude/CMakeLists.txt | 17 + .../GhsMultiExclude/exe1.c} | 0 Tests/GhsMulti/GhsMultiExclude/lib1.c | 4 + Tests/GhsMulti/GhsMultiExclude/verify.cmake | 54 + .../GhsMultiIntegrityDD/CMakeLists.txt | 19 + .../GhsMultiIntegrity/GhsMultiIntegrityDD/exe.c | 5 + .../GhsMultiIntegrity/GhsMultiIntegrityDD/func.c | 4 + .../GhsMultiIntegrityDDInt/App/CMakeLists.txt | 4 + .../GhsMultiIntegrityDDInt}/App/Main.c | 0 .../GhsMultiIntegrityDDInt/CMakeLists.txt | 6 + .../GhsMultiIntegrityDDInt/Int/AppDD.int | 12 + .../GhsMultiIntegrityDDInt/Int/CMakeLists.txt | 1 + .../GhsMultiIntegrityDDInt/Lib/CMakeLists.txt | 1 + .../GhsMultiIntegrityDDInt}/Lib/HelperFun.c | 0 .../GhsMultiIntegrityDDInt}/Lib/HelperFun.h | 0 .../GhsMultiIntegrityMonolith/CMakeLists.txt | 20 + .../GhsMultiIntegrityMonolith/exe.c | 5 + .../GhsMultiIntegrityMonolith/func.c | 5 + .../GhsMultiIntegrityMonolith/kernel.c | 15 + .../GhsMultiIntegrityMonolith/test.int | 8 + Tests/GhsMulti/GhsMultiInterface/CMakeLists.txt | 8 + Tests/GhsMulti/GhsMultiLinkTest/CMakeLists.txt | 92 + Tests/GhsMulti/GhsMultiLinkTest/CMakeLists.txt.in | 43 + Tests/GhsMulti/GhsMultiLinkTest/exe1.c | 6 + Tests/GhsMulti/GhsMultiLinkTest/exe1.h | 6 + Tests/GhsMulti/GhsMultiLinkTest/func2.c | 4 + Tests/GhsMulti/GhsMultiLinkTest/func3.c | 4 + Tests/GhsMulti/GhsMultiLinkTest/func4.c | 4 + Tests/GhsMulti/GhsMultiLinkTest/func5.c | 4 + Tests/GhsMulti/GhsMultiLinkTest/func6.c | 4 + Tests/GhsMulti/GhsMultiLinkTest/func7.c | 4 + Tests/GhsMulti/GhsMultiLinkTestSub/CMakeLists.txt | 9 + .../GhsMultiLinkTestSub/sub_exe/CMakeLists.txt | 12 + Tests/GhsMulti/GhsMultiLinkTestSub/sub_exe/exe1.c | 6 + Tests/GhsMulti/GhsMultiLinkTestSub/sub_exe/exe1.h | 6 + .../GhsMultiLinkTestSub/sub_lib/CMakeLists.txt | 7 + Tests/GhsMulti/GhsMultiLinkTestSub/sub_lib/func2.c | 4 + Tests/GhsMulti/GhsMultiLinkTestSub/sub_lib/func3.c | 4 + Tests/GhsMulti/GhsMultiLinkTestSub/sub_lib/func4.c | 4 + Tests/GhsMulti/GhsMultiLinkTestSub/sub_lib/func5.c | 4 + Tests/GhsMulti/GhsMultiLinkTestSub/sub_lib/func6.c | 4 + Tests/GhsMulti/GhsMultiLinkTestSub/sub_lib/func7.c | 4 + .../GhsMultiMultipleProjects/CMakeLists.txt | 17 + Tests/GhsMulti/GhsMultiMultipleProjects/exe1.c | 5 + Tests/GhsMulti/GhsMultiMultipleProjects/lib1.c | 4 + .../GhsMultiMultipleProjects/sub/CMakeLists.txt | 10 + Tests/GhsMulti/GhsMultiMultipleProjects/sub/exe2.c | 6 + Tests/GhsMulti/GhsMultiMultipleProjects/sub/lib2.c | 4 + .../GhsMultiMultipleProjects/sub2/CMakeLists.txt | 10 + .../GhsMulti/GhsMultiMultipleProjects/sub2/exe3.c | 6 + .../GhsMulti/GhsMultiMultipleProjects/sub2/lib3.c | 4 + .../GhsMulti/GhsMultiMultipleProjects/verify.cmake | 58 + .../GhsMulti/GhsMultiObjectLibrary/CMakeLists.txt | 13 + Tests/GhsMulti/GhsMultiObjectLibrary/exe.c | 8 + Tests/GhsMulti/GhsMultiObjectLibrary/sub/testOBJ.c | 4 + Tests/GhsMulti/GhsMultiObjectLibrary/testOBJ.c | 4 + Tests/GhsMulti/GhsMultiObjectLibrary/testOBJ.h | 1 + Tests/GhsMulti/GhsMultiObjectLibrary/testOBJ2.c | 4 + Tests/GhsMulti/GhsMultiPlatform/CMakeLists.txt | 34 + Tests/GhsMulti/GhsMultiPlatform/file1.c | 4 + .../GhsMulti/GhsMultiRenameInstall/CMakeLists.txt | 42 + .../GhsMultiRenameInstall/exe.c} | 0 Tests/GhsMulti/GhsMultiRenameInstall/exe1.c | 5 + Tests/GhsMulti/GhsMultiRenameInstall/lib1.c | 4 + Tests/GhsMulti/GhsMultiSrcGroups/Atest3.c | 4 + Tests/GhsMulti/GhsMultiSrcGroups/CMakeLists.txt | 45 + Tests/GhsMulti/GhsMultiSrcGroups/cmake.rule | 1 + Tests/GhsMulti/GhsMultiSrcGroups/object.o | 1 + .../GhsMultiSrcGroups/resource.pdf} | 0 Tests/GhsMulti/GhsMultiSrcGroups/s2.h | 6 + Tests/GhsMulti/GhsMultiSrcGroups/s4.h | 6 + Tests/GhsMulti/GhsMultiSrcGroups/s5.h | 6 + Tests/GhsMulti/GhsMultiSrcGroups/standard.h | 1 + Tests/GhsMulti/GhsMultiSrcGroups/sub/testOBJ.c | 6 + Tests/GhsMulti/GhsMultiSrcGroups/sub/testOBJ.h | 6 + Tests/GhsMulti/GhsMultiSrcGroups/test1.c | 6 + Tests/GhsMulti/GhsMultiSrcGroups/test1.h | 6 + Tests/GhsMulti/GhsMultiSrcGroups/test2a.c | 4 + Tests/GhsMulti/GhsMultiSrcGroups/test3.c | 4 + Tests/GhsMulti/GhsMultiSrcGroups/test3.h | 1 + Tests/GhsMulti/GhsMultiSrcGroups/test4.c | 4 + Tests/GhsMulti/GhsMultiSrcGroups/test5.c | 4 + Tests/GhsMulti/GhsMultiSrcGroups/test6.c | 4 + Tests/GhsMulti/GhsMultiSrcGroups/test7.c | 4 + Tests/GhsMulti/GhsMultiSrcGroups/testOBJ.c | 11 + Tests/GhsMulti/GhsMultiSrcGroups/testOBJ.h | 6 + Tests/GhsMulti/GhsMultiSrcGroups/textfile.txt | 1 + Tests/GhsMulti/GhsMultiSrcGroups/textfile2.txt | 1 + .../GhsMultiUnsupportedTargets/CMakeLists.txt | 12 + Tests/GhsMulti/GhsMultiUnsupportedTargets/file.c | 4 + Tests/GhsMulti/ReturnNum/App/CMakeLists.txt | 4 - Tests/GhsMulti/ReturnNum/CMakeLists.txt | 3 - Tests/GhsMulti/ReturnNum/Int/AppDD.int | 12 - Tests/GhsMulti/ReturnNum/Int/CMakeLists.txt | 1 - Tests/GhsMulti/ReturnNum/Int/Default.bsp | 35 - Tests/GhsMulti/ReturnNum/Lib/CMakeLists.txt | 1 - .../CMakeLists.txt | 15 - Tests/GhsMultiDuplicateSourceFilenames/main.c | 13 - .../subfolder/test.c | 5 - .../subfolder_test.c | 5 - .../subfolder_test_0.c | 5 - Tests/GhsMultiDuplicateSourceFilenames/test.c | 5 - Tests/InterfaceLibrary/CMakeLists.txt | 1 + .../VistA-FOIA/Packages/Uncategorized/ZZCOVTST.m | 3 + Tests/MumpsCoverage/ZZCOVTST.cmcov | 63 +- Tests/MumpsCoverage/ZZCOVTST.mcov | 3 + Tests/Qt4Autogen/CMakeLists.txt | 2 +- Tests/Qt5Autogen/CMakeLists.txt | 2 +- Tests/QtAutogen/AutogenCoreTest.cmake | 55 + Tests/QtAutogen/AutogenGuiTest.cmake | 55 + .../AutogenOriginDependsOff/CMakeLists.txt | 71 + .../QtAutogen/AutogenOriginDependsOff/a_mc.hpp.in | 9 + Tests/QtAutogen/AutogenOriginDependsOff/a_qt.cpp | 28 + Tests/QtAutogen/AutogenOriginDependsOff/a_qt.hpp | 25 + .../QtAutogen/AutogenOriginDependsOff/b_mc.cpp.in | 9 + Tests/QtAutogen/AutogenOriginDependsOff/b_mc.hpp | 9 + Tests/QtAutogen/AutogenOriginDependsOff/b_qt.cpp | 28 + Tests/QtAutogen/AutogenOriginDependsOff/b_qt.hpp | 25 + .../AutogenOriginDependsOff/config.hpp.in | 8 + .../configure_content.cmake | 10 + Tests/QtAutogen/AutogenOriginDependsOff/main.cpp | 15 + .../AutogenOriginDependsOn/CMakeLists.txt | 91 + .../object_invalid.hpp.in | 0 .../object_valid.hpp.in | 0 .../simpleLib.cpp.in | 0 .../simpleLib.hpp.in | 0 .../testGenFile.cpp | 0 .../testGenLib.cpp | 0 .../testGenLib.hpp | 0 .../testGenTarget.cpp | 0 .../QtAutogen/AutogenTargetDepends/CMakeLists.txt | 54 + .../object_invalid.hpp.in | 0 .../object_valid.hpp.in | 0 .../testATDFile.cpp | 0 .../testATDTarget.cpp | 0 Tests/QtAutogen/AutogenTest.cmake | 53 - Tests/QtAutogen/CommonTests.cmake | 50 - Tests/QtAutogen/Complex/CMakeLists.txt | 2 +- Tests/QtAutogen/GlobalAutogenTarget/CMakeLists.txt | 123 + .../GlobalAutogenTarget/GAT/CMakeLists.txt | 28 + Tests/QtAutogen/GlobalAutogenTarget/GAT/data.qrc | 5 + .../{SameName => GlobalAutogenTarget/GAT}/item.cpp | 0 .../{SameName => GlobalAutogenTarget/GAT}/item.hpp | 0 Tests/QtAutogen/GlobalAutogenTarget/GAT/main.cpp | 15 + .../GlobalAutogenTarget/GAT/sda/CMakeLists.txt | 2 + .../QtAutogen/GlobalAutogenTarget/GAT/sda/sda.cpp | 6 + .../QtAutogen/GlobalAutogenTarget/GAT/sda/sda.hpp | 6 + .../GlobalAutogenTarget/GAT/sdb/CMakeLists.txt | 5 + .../QtAutogen/GlobalAutogenTarget/GAT/sdb/sdb.cpp | 6 + .../QtAutogen/GlobalAutogenTarget/GAT/sdb/sdb.hpp | 6 + .../GlobalAutogenTarget/GAT/sdc/CMakeLists.txt | 5 + .../QtAutogen/GlobalAutogenTarget/GAT/sdc/sdc.cpp | 6 + .../QtAutogen/GlobalAutogenTarget/GAT/sdc/sdc.hpp | 6 + .../{SameName => GlobalAutogenTarget/GAT}/view.ui | 0 Tests/QtAutogen/LowMinimumVersion/CMakeLists.txt | 2 +- Tests/QtAutogen/MacOsFW/CMakeLists.txt | 2 +- Tests/QtAutogen/MocCMP0071/CMakeLists.txt | 2 +- Tests/QtAutogen/MocDepends/CMakeLists.txt | 139 - Tests/QtAutogen/MocIncludeRelaxed/CMakeLists.txt | 2 +- Tests/QtAutogen/MocIncludeStrict/CMakeLists.txt | 2 +- Tests/QtAutogen/MocMacroName/CMakeLists.txt | 2 +- Tests/QtAutogen/MocOnly/CMakeLists.txt | 4 +- Tests/QtAutogen/MocOnly/main.cpp | 6 +- Tests/QtAutogen/MocOptions/CMakeLists.txt | 2 +- Tests/QtAutogen/MocOsMacros/CMakeLists.txt | 2 +- Tests/QtAutogen/MocOsMacros/TestClass.cpp | 5 + Tests/QtAutogen/MocOsMacros/TestClass.hpp | 5 + Tests/QtAutogen/MocSkipSource/CMakeLists.txt | 2 +- Tests/QtAutogen/ObjectLibrary/CMakeLists.txt | 2 +- Tests/QtAutogen/Parallel/CMakeLists.txt | 2 +- Tests/QtAutogen/Parallel1/CMakeLists.txt | 2 +- Tests/QtAutogen/Parallel2/CMakeLists.txt | 2 +- Tests/QtAutogen/Parallel3/CMakeLists.txt | 2 +- Tests/QtAutogen/Parallel4/CMakeLists.txt | 2 +- Tests/QtAutogen/ParallelAUTO/CMakeLists.txt | 2 +- Tests/QtAutogen/RccEmpty/CMakeLists.txt | 2 +- Tests/QtAutogen/RccOffMocLibrary/CMakeLists.txt | 2 +- Tests/QtAutogen/RccOnly/CMakeLists.txt | 2 +- Tests/QtAutogen/RccSkipSource/CMakeLists.txt | 2 +- Tests/QtAutogen/RerunMocBasic/CMakeLists.txt | 2 +- .../RerunMocBasic/MocBasic/CMakeLists.txt | 2 +- Tests/QtAutogen/RerunMocPlugin/CMakeLists.txt | 2 +- .../RerunMocPlugin/MocPlugin/CMakeLists.txt | 2 +- .../QtAutogen/RerunRccConfigChange/CMakeLists.txt | 2 +- .../RccConfigChange/CMakeLists.txt | 2 +- Tests/QtAutogen/RerunRccDepends/CMakeLists.txt | 2 +- .../RerunRccDepends/RccDepends/CMakeLists.txt | 2 +- Tests/QtAutogen/SameName/CMakeLists.txt | 6 +- Tests/QtAutogen/SameName/main.cpp | 13 +- Tests/QtAutogen/SameName/object.h | 13 + Tests/QtAutogen/SameName/object.h++ | 13 + Tests/QtAutogen/SameName/object.hpp | 13 + Tests/QtAutogen/SameName/object.hxx | 13 + Tests/QtAutogen/StaticLibraryCycle/CMakeLists.txt | 2 +- Tests/QtAutogen/Tests.cmake | 47 + Tests/QtAutogen/UicInclude/CMakeLists.txt | 2 +- Tests/QtAutogen/UicInterface/CMakeLists.txt | 6 +- Tests/QtAutogen/UicNoGui/CMakeLists.txt | 16 + Tests/QtAutogen/UicNoGui/MocOnly/CMakeLists.txt | 3 + Tests/QtAutogen/UicNoGui/MocOnly/main.cpp | 15 + Tests/QtAutogen/UicNoGui/NoQt/CMakeLists.txt | 2 + Tests/QtAutogen/UicNoGui/NoQt/main.cpp | 4 + Tests/QtAutogen/UicNoGui/main.cpp | 9 + Tests/QtAutogen/UicOnly/CMakeLists.txt | 2 +- Tests/QtAutogen/UicSkipSource/CMakeLists.txt | 2 +- Tests/RunCMake/Autogen/NoQt-stderr.txt | 4 +- .../RunCMake/Autogen/QtInFunctionNested-stderr.txt | 4 +- .../BundleUtilities/CMP0080-WARN-stderr.txt | 12 +- .../CMP0026/CMP0026-CONFIG-LOCATION-NEW-stderr.txt | 2 +- .../CMP0026/CMP0026-CONFIG-LOCATION-OLD-stderr.txt | 2 +- .../CMP0026-CONFIG-LOCATION-WARN-stderr.txt | 2 +- .../CMP0026/CMP0026-LOCATION-CONFIG-NEW-stderr.txt | 2 +- .../CMP0026/CMP0026-LOCATION-CONFIG-OLD-stderr.txt | 2 +- .../CMP0026-LOCATION-CONFIG-WARN-stderr.txt | 2 +- Tests/RunCMake/CMP0026/CMP0026-NEW-stderr.txt | 2 +- Tests/RunCMake/CMP0026/CMP0026-OLD-stderr.txt | 2 +- Tests/RunCMake/CMP0026/CMP0026-WARN-stderr.txt | 4 +- .../CMP0026/LOCATION-and-TARGET_OBJECTS-stderr.txt | 2 +- Tests/RunCMake/CMP0026/ObjlibNotDefined-stderr.txt | 2 +- .../CMP0026/clear-cached-information-stderr.txt | 2 +- Tests/RunCMake/CMP0051/CMP0051-OLD-stderr.txt | 2 +- Tests/RunCMake/CMP0051/CMP0051-WARN-stderr.txt | 4 +- Tests/RunCMake/CMP0064/CMP0064-OLD-stderr.txt | 10 + Tests/RunCMake/CMakeLists.txt | 94 +- .../BuildAndTest/CMakeLists.txt | 10 + .../CMakeRoleGlobalProperty/CMakeLists.txt | 3 + .../CMakeRoleGlobalProperty/CMakeLists.txt.in | 4 + .../CMakeRoleGlobalProperty/FindDummyPackage.cmake | 8 + .../RunCMake/CMakeRoleGlobalProperty/Project.cmake | 6 + .../CMakeRoleGlobalProperty/RunCMakeTest.cmake | 14 + .../RunCMake/CMakeRoleGlobalProperty/Script.cmake | 6 + .../CMakeRoleGlobalProperty/sub/CMakeLists.txt | 4 + .../RunCMake/CMakeRoleGlobalProperty/test.cmake.in | 7 + Tests/RunCMake/CPack/CPackTestHelpers.cmake | 35 +- .../RunCMake/CPack/RPM/default_expected_stderr.txt | 2 +- Tests/RunCMake/CPack/RunCMakeTest.cmake | 54 +- .../RPM-COMPONENT-stderr.txt | 2 +- .../CPack/tests/EXTERNAL/create_package.cmake | 5 + Tests/RunCMake/CPack/tests/SUGGESTS/RPM-stderr.txt | 2 +- .../CPackCommandLine/NotAGenerator-stderr.txt | 2 +- Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake | 35 + .../show-only_bad-result.txt} | 0 .../CTestCommandLine/show-only_bad-stderr.txt | 1 + .../CTestCommandLine/show-only_human-stdout.txt | 1 + .../CTestCommandLine/show-only_json-v1-check.cmake | 1 + .../CTestCommandLine/show-only_json-v1_check.py | 106 + .../CTestCommandLine/show_only_json_check.py | 24 + .../CTestTimeoutAfterMatch/CTestConfig.cmake.in | 1 - ...build--parallel-no-space-bad-number-result.txt} | 0 ...build--parallel-no-space-bad-number-stderr.txt} | 0 ...uild--parallel-no-space-good-number-stderr.txt} | 0 ...-space-good-number-trailing--target-stderr.txt} | 0 ...Dir--build-jobs-no-space-bad-number-result.txt} | 0 ...Dir--build-jobs-no-space-bad-number-stderr.txt} | 0 ...ir--build-jobs-no-space-good-number-stderr.txt} | 0 ...-space-good-number-trailing--target-stderr.txt} | 0 .../E_compare_files-different-eol-result.txt} | 0 .../E_compare_files-different-eol-stderr.txt | 1 + ...ompare_files-ignore-eol-nonexistent-result.txt} | 0 ...compare_files-ignore-eol-nonexistent-stderr.txt | 1 + .../E_touch-nonexistent-dir-result.txt} | 0 .../CommandLine/E_touch-nonexistent-dir-stderr.txt | 1 + Tests/RunCMake/CommandLine/RunCMakeTest.cmake | 23 + Tests/RunCMake/CommandLine/Wdeprecated-stderr.txt | 2 +- Tests/RunCMake/CommandLine/Wdev-stderr.txt | 4 +- .../CommandLine/Werror_deprecated-stderr.txt | 2 +- Tests/RunCMake/CommandLine/Werror_dev-stderr.txt | 4 +- .../CommandLine/Wno-error_deprecated-stderr.txt | 2 +- .../RunCMake/CommandLine/Wno-error_dev-stderr.txt | 4 +- .../CommandLine/compare_files/.gitattributes | 2 + Tests/RunCMake/CommandLine/compare_files/crlf | 1 + .../CommandLine/compare_files/empty1} | 0 .../CommandLine/compare_files/empty2} | 0 Tests/RunCMake/CommandLine/compare_files/lf | 1 + .../CommandLine/warn-uninitialized-stderr.txt | 53 + .../RunCMake/CommandLine/warn-uninitialized.cmake | 18 + Tests/RunCMake/Cppcheck/C-bad-Build-result.txt | 2 +- .../C-error-Build-result.txt} | 0 Tests/RunCMake/Cppcheck/C-error-Build-stdout.txt | 1 + Tests/RunCMake/Cppcheck/C-error.cmake | 3 + Tests/RunCMake/Cppcheck/RunCMakeTest.cmake | 1 + .../CrosscompilingEmulatorProperty.cmake | 6 + Tests/RunCMake/ExternalData/BadAlgoMap1-stderr.txt | 4 +- Tests/RunCMake/ExternalData/BadAlgoMap2-stderr.txt | 4 +- .../RunCMake/ExternalData/BadHashAlgo1-stderr.txt | 4 +- Tests/RunCMake/ExternalData/BadOption1-stderr.txt | 4 +- Tests/RunCMake/ExternalData/BadOption2-stderr.txt | 4 +- Tests/RunCMake/ExternalData/BadRecurse1-stderr.txt | 4 +- Tests/RunCMake/ExternalData/BadRecurse2-stderr.txt | 4 +- Tests/RunCMake/ExternalData/BadRecurse3-stderr.txt | 4 +- Tests/RunCMake/ExternalData/BadSeries1-stderr.txt | 4 +- Tests/RunCMake/ExternalData/BadSeries2-stderr.txt | 4 +- Tests/RunCMake/ExternalData/BadSeries3-stderr.txt | 4 +- Tests/RunCMake/ExternalData/Directory1-stderr.txt | 4 +- Tests/RunCMake/ExternalData/Directory2-stderr.txt | 4 +- Tests/RunCMake/ExternalData/Directory3-stderr.txt | 4 +- Tests/RunCMake/ExternalData/Directory4-stderr.txt | 4 +- Tests/RunCMake/ExternalData/Directory5-stderr.txt | 4 +- Tests/RunCMake/ExternalData/MissingData-stderr.txt | 4 +- .../MissingDataWithAssociated-stderr.txt | 4 +- .../ExternalData/NoLinkInSource-stderr.txt | 4 +- .../ExternalData/NoURLTemplates-stderr.txt | 4 +- .../LogOutputOnFailure-build-result.txt | 1 + .../LogOutputOnFailure-build-stderr.txt} | 0 .../LogOutputOnFailure-build-stdout.txt | 8 + .../ExternalProject/LogOutputOnFailure.cmake | 20 + .../LogOutputOnFailureMerged-build-result.txt | 1 + .../LogOutputOnFailureMerged-build-stderr.txt} | 0 .../LogOutputOnFailureMerged-build-stdout.txt | 7 + .../ExternalProject/LogOutputOnFailureMerged.cmake | 21 + Tests/RunCMake/ExternalProject/RunCMakeTest.cmake | 7 + Tests/RunCMake/FetchContent/CMakeLists.txt | 4 + .../RunCMake/FetchContent/MakeAvailable-stdout.txt | 2 + Tests/RunCMake/FetchContent/MakeAvailable.cmake | 20 + .../FetchContent/MakeAvailableTwice-stdout.txt | 4 + .../RunCMake/FetchContent/MakeAvailableTwice.cmake | 12 + .../MakeAvailableUndeclared-result.txt} | 0 .../MakeAvailableUndeclared-stderr.txt | 1 + .../FetchContent/MakeAvailableUndeclared.cmake | 3 + Tests/RunCMake/FetchContent/RunCMakeTest.cmake | 4 + .../FetchContent/UsesTerminalOverride-stdout.txt | 2 + .../FetchContent/UsesTerminalOverride.cmake | 17 + .../FetchContent/WithProject/CMakeLists.txt | 5 + .../WithoutProject/confirmMessage.cmake | 1 + Tests/RunCMake/FileAPI/CMakeLists.txt | 3 + Tests/RunCMake/FileAPI/ClientStateful-check.cmake | 68 + Tests/RunCMake/FileAPI/ClientStateful-check.py | 258 + Tests/RunCMake/FileAPI/ClientStateful-prep.cmake | 73 + .../FileAPI/ClientStateful.cmake} | 0 Tests/RunCMake/FileAPI/ClientStateless-check.cmake | 15 + Tests/RunCMake/FileAPI/ClientStateless-check.py | 26 + Tests/RunCMake/FileAPI/ClientStateless-prep.cmake | 5 + .../FileAPI/ClientStateless.cmake} | 0 .../FileAPI/DuplicateStateless-check.cmake | 20 + Tests/RunCMake/FileAPI/DuplicateStateless-check.py | 31 + .../RunCMake/FileAPI/DuplicateStateless-prep.cmake | 10 + .../FileAPI/DuplicateStateless.cmake} | 0 Tests/RunCMake/FileAPI/Empty-check.cmake | 8 + Tests/RunCMake/FileAPI/Empty-check.py | 15 + Tests/RunCMake/FileAPI/Empty-prep.cmake | 1 + .../FileAPI/Empty.cmake} | 0 Tests/RunCMake/FileAPI/EmptyClient-check.cmake | 9 + Tests/RunCMake/FileAPI/EmptyClient-check.py | 20 + Tests/RunCMake/FileAPI/EmptyClient-prep.cmake | 2 + .../FileAPI/EmptyClient.cmake} | 0 Tests/RunCMake/FileAPI/MixedStateless-check.cmake | 16 + Tests/RunCMake/FileAPI/MixedStateless-check.py | 27 + Tests/RunCMake/FileAPI/MixedStateless-prep.cmake | 6 + .../FileAPI/MixedStateless.cmake} | 0 Tests/RunCMake/FileAPI/Nothing-check.cmake | 1 + Tests/RunCMake/FileAPI/Nothing-prep.cmake | 1 + .../FileAPI/Nothing.cmake} | 0 Tests/RunCMake/FileAPI/RunCMakeTest.cmake | 58 + Tests/RunCMake/FileAPI/SharedStateless-check.cmake | 15 + Tests/RunCMake/FileAPI/SharedStateless-check.py | 22 + Tests/RunCMake/FileAPI/SharedStateless-prep.cmake | 6 + .../FileAPI/SharedStateless.cmake} | 0 Tests/RunCMake/FileAPI/Stale-check.cmake | 4 + Tests/RunCMake/FileAPI/Stale-prep.cmake | 1 + .../FileAPI/Stale.cmake} | 0 Tests/RunCMake/FileAPI/alias/CMakeLists.txt | 10 + .../FileAPI/cache-v2-ClientStateful-check.cmake | 11 + .../FileAPI/cache-v2-ClientStateful-prep.cmake | 4 + .../FileAPI/cache-v2-ClientStateless-check.cmake | 11 + .../FileAPI/cache-v2-ClientStateless-prep.cmake | 2 + .../FileAPI/cache-v2-SharedStateless-check.cmake | 10 + .../FileAPI/cache-v2-SharedStateless-prep.cmake | 2 + Tests/RunCMake/FileAPI/cache-v2-check.py | 134 + Tests/RunCMake/FileAPI/cache-v2.cmake | 14 + Tests/RunCMake/FileAPI/check_index.py | 163 + .../cmakeFiles-v1-ClientStateful-check.cmake | 11 + .../cmakeFiles-v1-ClientStateful-prep.cmake | 4 + .../cmakeFiles-v1-ClientStateless-check.cmake | 11 + .../cmakeFiles-v1-ClientStateless-prep.cmake | 2 + .../cmakeFiles-v1-SharedStateless-check.cmake | 10 + .../cmakeFiles-v1-SharedStateless-prep.cmake | 2 + Tests/RunCMake/FileAPI/cmakeFiles-v1-check.py | 94 + Tests/RunCMake/FileAPI/cmakeFiles-v1.cmake | 8 + .../codemodel-v2-ClientStateful-check.cmake | 12 + .../FileAPI/codemodel-v2-ClientStateful-prep.cmake | 4 + .../codemodel-v2-ClientStateless-check.cmake | 12 + .../codemodel-v2-ClientStateless-prep.cmake | 2 + .../codemodel-v2-SharedStateless-check.cmake | 11 + .../codemodel-v2-SharedStateless-prep.cmake | 2 + Tests/RunCMake/FileAPI/codemodel-v2-check.py | 5085 ++++++++++++++++++++ Tests/RunCMake/FileAPI/codemodel-v2.cmake | 35 + Tests/RunCMake/FileAPI/custom/CMakeLists.txt | 5 + Tests/RunCMake/FileAPI/cxx/CMakeLists.txt | 15 + Tests/RunCMake/FileAPI/dir/CMakeLists.txt | 1 + .../sub2 => FileAPI/dir/dir}/CMakeLists.txt | 0 .../FileAPI/dir/dirtest.cmake} | 0 .../{target_link_libraries => FileAPI}/empty.c | 0 .../vtkIncluded.cxx => RunCMake/FileAPI/empty.cxx} | 0 Tests/RunCMake/FileAPI/imported/CMakeLists.txt | 24 + Tests/RunCMake/FileAPI/include_test.cmake | 9 + Tests/RunCMake/FileAPI/object/CMakeLists.txt | 13 + .../FileAPIDummyFile.cmake} | 0 .../RunCMake/FileAPIExternalSource/CMakeLists.txt | 12 + .../empty.c | 0 Tests/RunCMake/FindBoost/RunCMakeTest.cmake | 1 + .../Framework/InstallBeforeFramework-stderr.txt | 7 + .../RunCMake/GNUInstallDirs/Opt-FreeBSD-stderr.txt | 30 + .../GNUInstallDirs/Root-FreeBSD-stderr.txt | 30 + Tests/RunCMake/GNUInstallDirs/RunCMakeTest.cmake | 12 +- .../RunCMake/GNUInstallDirs/Usr-FreeBSD-stderr.txt | 30 + .../GNUInstallDirs/UsrLocal-FreeBSD-stderr.txt | 30 + .../GeneratorExpression/CMP0085-NEW-check.cmake | 6 + .../RunCMake/GeneratorExpression/CMP0085-NEW.cmake | 4 + .../GeneratorExpression/CMP0085-OLD-check.cmake | 6 + .../RunCMake/GeneratorExpression/CMP0085-OLD.cmake | 4 + .../GeneratorExpression/CMP0085-WARN-check.cmake | 6 + .../GeneratorExpression/CMP0085-WARN-stderr.txt | 33 + .../GeneratorExpression/CMP0085-WARN.cmake | 4 + .../NonValidTarget-Fortran_COMPILER_ID-result.txt} | 0 .../NonValidTarget-Fortran_COMPILER_ID-stderr.txt | 9 + .../NonValidTarget-Fortran_COMPILER_ID.cmake | 4 + ...alidTarget-Fortran_COMPILER_VERSION-result.txt} | 0 ...ValidTarget-Fortran_COMPILER_VERSION-stderr.txt | 9 + .../NonValidTarget-Fortran_COMPILER_VERSION.cmake | 4 + .../GeneratorExpression/RunCMakeTest.cmake | 12 + .../RunCMake/GeneratorPlatform/RunCMakeTest.cmake | 4 +- .../BadToolsetHostArchTwice-stderr.txt | 2 +- Tests/RunCMake/GeneratorToolset/RunCMakeTest.cmake | 16 +- .../TestToolsetHostArchNone-stdout.txt | 2 +- .../GeneratorToolset/TestToolsetHostArchNone.cmake | 13 + ....txt => TestToolsetHostArchOnly_x64-stdout.txt} | 0 ...nly.cmake => TestToolsetHostArchOnly_x64.cmake} | 0 .../TestToolsetHostArchOnly_x86-stdout.txt | 2 + ...nly.cmake => TestToolsetHostArchOnly_x86.cmake} | 0 .../GetPrerequisites/ExecutableScripts-stdout.txt | 3 + .../GetPrerequisites/ExecutableScripts.cmake | 19 + Tests/RunCMake/GetPrerequisites/RunCMakeTest.cmake | 1 + Tests/RunCMake/GetPrerequisites/script | 3 + Tests/RunCMake/GetPrerequisites/script.bat | 3 + Tests/RunCMake/GetPrerequisites/script.sh | 3 + Tests/RunCMake/Make/RunCMakeTest.cmake | 17 + Tests/RunCMake/Make/VerboseBuild-build-stdout.txt | 1 + .../VerboseBuild-build-watcom-stdout.txt} | 0 .../Make/VerboseBuild-nowork-gnu-stdout.txt | 1 + Tests/RunCMake/Make/VerboseBuild.cmake | 8 + Tests/RunCMake/{Ninja => Make}/hello.c | 0 Tests/RunCMake/MaxRecursionDepth/CMakeLists.txt | 5 + Tests/RunCMake/MaxRecursionDepth/CMakeLists.txt.in | 2 + Tests/RunCMake/MaxRecursionDepth/CTestCustom.cmake | 3 + .../MaxRecursionDepth/FindRecursivePackage.cmake | 3 + .../RunCMake/MaxRecursionDepth/RunCMakeTest.cmake | 49 + .../add_subdirectory-var-result.txt} | 0 .../add_subdirectory-var-stderr.txt | 10 + .../MaxRecursionDepth/add_subdirectory.cmake | 2 + .../add_subdirectory/CMakeLists.txt | 3 + .../ctest_read_custom_files-default-result.txt} | 0 .../ctest_read_custom_files-default-stderr.txt | 5 + ...ctest_read_custom_files-invalid-var-result.txt} | 0 .../ctest_read_custom_files-invalid-var-stderr.txt | 5 + .../ctest_read_custom_files-var-result.txt} | 0 .../ctest_read_custom_files-var-stderr.txt | 34 + .../ctest_run_script-var-result.txt} | 0 .../ctest_run_script-var-stderr.txt | 51 + .../MaxRecursionDepth/ctest_run_script.cmake.in | 14 + .../find_package-default-result.txt} | 0 .../find_package-default-script-result.txt} | 0 .../find_package-default-script-stderr.txt | 5 + .../find_package-default-stderr.txt | 5 + .../find_package-invalid-var-result.txt} | 0 .../find_package-invalid-var-script-result.txt} | 0 .../find_package-invalid-var-script-stderr.txt | 5 + .../find_package-invalid-var-stderr.txt | 5 + .../find_package-var-result.txt} | 0 .../find_package-var-script-result.txt} | 0 .../find_package-var-script-stderr.txt | 21 + .../MaxRecursionDepth/find_package-var-stderr.txt | 21 + .../RunCMake/MaxRecursionDepth/find_package.cmake | 2 + .../function-default-result.txt} | 0 .../function-default-script-result.txt} | 0 .../function-default-script-stderr.txt | 5 + .../MaxRecursionDepth/function-default-stderr.txt | 5 + .../function-invalid-var-result.txt} | 0 .../function-invalid-var-script-result.txt} | 0 .../function-invalid-var-script-stderr.txt | 5 + .../function-invalid-var-stderr.txt | 5 + .../function-var-result.txt} | 0 .../function-var-script-result.txt} | 0 .../function-var-script-stderr.txt | 21 + .../MaxRecursionDepth/function-var-stderr.txt | 21 + Tests/RunCMake/MaxRecursionDepth/function.cmake | 7 + .../include-default-result.txt} | 0 .../include-default-script-result.txt} | 0 .../include-default-script-stderr.txt | 5 + .../MaxRecursionDepth/include-default-stderr.txt | 5 + .../include-invalid-var-result.txt} | 0 .../include-invalid-var-script-result.txt} | 0 .../include-invalid-var-script-stderr.txt | 5 + .../include-invalid-var-stderr.txt | 5 + .../include-var-result.txt} | 0 .../include-var-script-result.txt} | 0 .../include-var-script-stderr.txt | 21 + .../MaxRecursionDepth/include-var-stderr.txt | 21 + Tests/RunCMake/MaxRecursionDepth/include.cmake | 2 + .../MaxRecursionDepth/include_recursive.cmake | 3 + .../macro-default-result.txt} | 0 .../macro-default-script-result.txt} | 0 .../macro-default-script-stderr.txt | 5 + .../MaxRecursionDepth/macro-default-stderr.txt | 5 + .../macro-invalid-var-result.txt} | 0 .../macro-invalid-var-script-result.txt} | 0 .../macro-invalid-var-script-stderr.txt | 5 + .../MaxRecursionDepth/macro-invalid-var-stderr.txt | 5 + .../macro-var-result.txt} | 0 .../macro-var-script-result.txt} | 0 .../MaxRecursionDepth/macro-var-script-stderr.txt | 21 + .../MaxRecursionDepth/macro-var-stderr.txt | 21 + Tests/RunCMake/MaxRecursionDepth/macro.cmake | 7 + Tests/RunCMake/MaxRecursionDepth/test.cmake.in | 21 + .../try_compile-var-result.txt} | 0 .../MaxRecursionDepth/try_compile-var-stderr.txt | 48 + Tests/RunCMake/MaxRecursionDepth/try_compile.cmake | 6 + .../MaxRecursionDepth/try_compile/CMakeLists.txt | 13 + .../variable_watch-default-result.txt} | 0 .../variable_watch-default-script-result.txt} | 0 .../variable_watch-default-script-stderr.txt | 6 + .../variable_watch-default-stderr.txt | 6 + .../variable_watch-invalid-var-result.txt} | 0 .../variable_watch-invalid-var-script-result.txt} | 0 .../variable_watch-invalid-var-script-stderr.txt | 6 + .../variable_watch-invalid-var-stderr.txt | 6 + .../variable_watch-var-result.txt} | 0 .../variable_watch-var-script-result.txt} | 0 .../variable_watch-var-script-stderr.txt | 22 + .../variable_watch-var-stderr.txt | 22 + .../MaxRecursionDepth/variable_watch.cmake | 9 + Tests/RunCMake/Ninja/RunCMakeTest.cmake | 9 + Tests/RunCMake/Ninja/VerboseBuild-build-stdout.txt | 1 + ...k-stdout.txt => VerboseBuild-nowork-stdout.txt} | 0 Tests/RunCMake/Ninja/VerboseBuild.cmake | 3 + Tests/RunCMake/ObjectLibrary/RunCMakeTest.cmake | 1 + .../ObjectLibrary/TransitiveDependencies.cmake | 7 + Tests/RunCMake/ObjectLibrary/exe2.c | 6 + .../CMakeLists.txt | 0 .../ParseImplicitIncludeInfo.cmake | 107 + .../ParseImplicitIncludeInfo/RunCMakeTest.cmake | 3 + .../ParseImplicitIncludeInfo/data/CMakeLists.txt | 87 + .../RunCMake/ParseImplicitIncludeInfo/data/README | 25 + .../data/aix-C-XL-13.1.3.input | 40 + .../data/aix-C-XL-13.1.3.output | 1 + .../data/aix-CXX-XL-13.1.3.input | 44 + .../data/aix-CXX-XL-13.1.3.output | 1 + .../data/craype-C-Cray-8.7.input | 53 + .../data/craype-C-Cray-8.7.output | 1 + .../data/craype-C-GNU-7.3.0.input | 79 + .../data/craype-C-GNU-7.3.0.output | 1 + .../data/craype-C-Intel-18.0.2.20180210.input | 40 + .../data/craype-C-Intel-18.0.2.20180210.output | 1 + .../data/craype-CXX-Cray-8.7.input | 53 + .../data/craype-CXX-Cray-8.7.output | 1 + .../data/craype-CXX-GNU-7.3.0.input | 82 + .../data/craype-CXX-GNU-7.3.0.output | 1 + .../data/craype-CXX-Intel-18.0.2.20180210.input | 43 + .../data/craype-CXX-Intel-18.0.2.20180210.output | 1 + .../data/craype-Fortran-Cray-8.7.input | 52 + .../data/craype-Fortran-Cray-8.7.output | 1 + .../data/craype-Fortran-GNU-7.3.0.input | 83 + .../data/craype-Fortran-GNU-7.3.0.output | 1 + .../craype-Fortran-Intel-18.0.2.20180210.input | 80 + .../craype-Fortran-Intel-18.0.2.20180210.output | 1 + .../data/darwin-C-AppleClang-8.0.0.8000042.input | 50 + .../data/darwin-C-AppleClang-8.0.0.8000042.output | 1 + .../data/darwin-CXX-AppleClang-8.0.0.8000042.input | 52 + .../darwin-CXX-AppleClang-8.0.0.8000042.output | 1 + ...arwin_nostdinc-C-AppleClang-8.0.0.8000042.input | 44 + ...win_nostdinc-C-AppleClang-8.0.0.8000042.output} | 0 ...win_nostdinc-CXX-AppleClang-8.0.0.8000042.input | 44 + ...n_nostdinc-CXX-AppleClang-8.0.0.8000042.output} | 0 .../ParseImplicitIncludeInfo/data/empty-C.input | 14 + .../ParseImplicitIncludeInfo/data/empty-C.output} | 0 .../ParseImplicitIncludeInfo/data/empty-CXX.input | 14 + .../data/empty-CXX.output} | 0 .../data/freebsd-C-Clang-3.3.0.input | 38 + .../data/freebsd-C-Clang-3.3.0.output | 1 + .../data/freebsd-CXX-Clang-3.3.0.input | 45 + .../data/freebsd-CXX-Clang-3.3.0.output | 1 + .../data/freebsd-Fortran-GNU-4.6.4.input | 78 + .../data/freebsd-Fortran-GNU-4.6.4.output | 1 + .../data/linux-C-GNU-7.3.0.input | 72 + .../data/linux-C-GNU-7.3.0.output | 1 + .../data/linux-C-Intel-18.0.0.20170811.input | 43 + .../data/linux-C-Intel-18.0.0.20170811.output | 1 + .../data/linux-C-PGI-18.10.1.input | 36 + .../data/linux-C-PGI-18.10.1.output | 1 + .../data/linux-C-XL-12.1.0.input | 42 + .../data/linux-C-XL-12.1.0.output | 1 + .../data/linux-C-XL-16.1.0.0.input | 40 + .../data/linux-C-XL-16.1.0.0.output | 1 + .../data/linux-CUDA-NVIDIA-9.2.148.input | 124 + .../data/linux-CUDA-NVIDIA-9.2.148.output | 1 + .../data/linux-CXX-GNU-7.3.0.input | 76 + .../data/linux-CXX-GNU-7.3.0.output | 1 + .../data/linux-CXX-Intel-18.0.0.20170811.input | 46 + .../data/linux-CXX-Intel-18.0.0.20170811.output | 1 + .../data/linux-CXX-PGI-18.10.1.input | 40 + .../data/linux-CXX-PGI-18.10.1.output | 1 + .../data/linux-CXX-XL-12.1.0.input | 42 + .../data/linux-CXX-XL-12.1.0.output | 1 + .../data/linux-CXX-XL-16.1.0.0.input | 40 + .../data/linux-CXX-XL-16.1.0.0.output | 1 + .../data/linux-Fortran-GNU-7.3.0.input | 76 + .../data/linux-Fortran-GNU-7.3.0.output | 1 + .../data/linux-Fortran-PGI-18.10.1.input | 47 + .../data/linux-Fortran-PGI-18.10.1.output | 1 + .../data/linux-Fortran-XL-14.1.0.input | 50 + .../data/linux-Fortran-XL-14.1.0.output | 1 + .../data/linux_nostdinc-C-PGI-18.10.1.input | 36 + .../data/linux_nostdinc-C-PGI-18.10.1.output} | 0 .../data/linux_nostdinc-C-XL-12.1.0.input | 42 + .../data/linux_nostdinc-C-XL-12.1.0.output} | 0 .../data/linux_nostdinc-CXX-PGI-18.10.1.input | 40 + .../data/linux_nostdinc-CXX-PGI-18.10.1.output | 1 + .../data/linux_nostdinc-CXX-XL-12.1.0.input | 42 + .../data/linux_nostdinc-CXX-XL-12.1.0.output} | 0 .../data/linux_nostdinc-Fortran-PGI-18.10.1.input | 47 + .../linux_nostdinc-Fortran-PGI-18.10.1.output} | 0 .../data/linux_nostdinc_i-C-XL-12.1.0.input | 42 + .../data/linux_nostdinc_i-C-XL-12.1.0.output | 1 + .../data/linux_nostdinc_i-CXX-XL-12.1.0.input | 42 + .../data/linux_nostdinc_i-CXX-XL-12.1.0.output | 1 + .../data/linux_pgf77-Fortran-PGI-18.10.1.input | 35 + .../data/linux_pgf77-Fortran-PGI-18.10.1.output | 1 + .../data/mingw.org-C-GNU-4.9.3.input | 70 + .../data/mingw.org-C-GNU-4.9.3.output | 1 + .../data/mingw.org-CXX-GNU-4.9.3.input | 76 + .../data/mingw.org-CXX-GNU-4.9.3.output | 1 + .../data/netbsd-C-GNU-4.8.5.input | 60 + .../data/netbsd-C-GNU-4.8.5.output | 1 + .../data/netbsd-CXX-GNU-4.8.5.input | 62 + .../data/netbsd-CXX-GNU-4.8.5.output | 1 + .../data/netbsd_nostdinc-C-GNU-4.8.5.input | 58 + .../data/netbsd_nostdinc-C-GNU-4.8.5.output} | 0 .../data/netbsd_nostdinc-CXX-GNU-4.8.5.input | 58 + .../data/netbsd_nostdinc-CXX-GNU-4.8.5.output} | 0 .../data/openbsd-C-Clang-5.0.1.input | 37 + .../data/openbsd-C-Clang-5.0.1.output | 1 + .../data/openbsd-CXX-Clang-5.0.1.input | 38 + .../data/openbsd-CXX-Clang-5.0.1.output | 1 + .../data/sunos-C-SunPro-5.13.0.input | 35 + .../data/sunos-C-SunPro-5.13.0.output | 1 + .../data/sunos-CXX-SunPro-5.13.0.input | 38 + .../data/sunos-CXX-SunPro-5.13.0.output | 1 + .../data/sunos-Fortran-SunPro-8.8.0.input | 40 + .../data/sunos-Fortran-SunPro-8.8.0.output | 1 + .../CMP0083-cmp0083_new-check.cmake | 22 + .../CMP0083-cmp0083_old-check.cmake | 20 + .../RunCMake/PositionIndependentCode/CMP0083.cmake | 47 + .../CheckPIESupported.cmake | 18 + .../Genex1-result.txt} | 0 .../PositionIndependentCode/Genex1-stderr.txt | 3 + .../RunCMake/PositionIndependentCode/Genex1.cmake | 9 + .../Genex2-result.txt} | 0 .../PositionIndependentCode/Genex2-stderr.txt | 3 + .../RunCMake/PositionIndependentCode/Genex2.cmake | 9 + .../PIE-pie_off-check.cmake | 7 + .../PositionIndependentCode/PIE-pie_on-check.cmake | 7 + Tests/RunCMake/PositionIndependentCode/PIE.cmake | 22 + .../PositionIndependentCode/PIE_validator.cmake | 32 + .../PositionIndependentCode/RunCMakeTest.cmake | 64 + Tests/RunCMake/README.rst | 11 + Tests/RunCMake/RunCMake.cmake | 9 + Tests/RunCMake/RunCTest.cmake | 8 +- Tests/RunCMake/RuntimePath/Relative.cmake | 69 + Tests/RunCMake/RuntimePath/RelativeCheck.cmake | 4 + Tests/RunCMake/RuntimePath/RunCMakeTest.cmake | 14 + Tests/RunCMake/RuntimePath/main.c | 4 +- .../RunCMake/TargetPolicies/PolicyList-stderr.txt | 1 + .../BadInvalidName-stderr.txt | 16 +- .../BadNonTarget-stderr.txt | 2 +- .../LinkImplementationCycle1-stderr.txt | 2 +- .../LinkImplementationCycle2-stderr.txt | 2 +- .../RunCMake/TargetSources/CMP0076-WARN-stderr.txt | 4 +- .../RunCMake/TargetSources/OriginDebug-stderr.txt | 8 +- Tests/RunCMake/UseSWIG/CMP0078-WARN-stderr.txt | 15 +- Tests/RunCMake/UseSWIG/CMP0078-common.cmake | 2 + .../RunCMake/UseSWIG/CMP0086-NEW-nuild-check.cmake | 4 + Tests/RunCMake/UseSWIG/CMP0086-NEW.cmake | 2 + .../RunCMake/UseSWIG/CMP0086-OLD-build-check.cmake | 4 + Tests/RunCMake/UseSWIG/CMP0086-OLD.cmake | 2 + Tests/RunCMake/UseSWIG/CMP0086-WARN-stderr.txt | 11 + Tests/RunCMake/UseSWIG/CMP0086-WARN.cmake | 1 + Tests/RunCMake/UseSWIG/CMP0086-common.cmake | 11 + Tests/RunCMake/UseSWIG/RunCMakeTest.cmake | 20 + Tests/RunCMake/VS10Project/RunCMakeTest.cmake | 3 + .../VS10Project/SourceGroupCMakeLists-check.cmake | 33 + .../VS10Project/SourceGroupCMakeLists.cmake | 3 + .../VS10Project/VsCSharpDefines-check.cmake | 64 + Tests/RunCMake/VS10Project/VsCSharpDefines.cmake | 18 + .../VS10Project/VsCSharpDeployFiles-check.cmake | 67 + .../RunCMake/VS10Project/VsCSharpDeployFiles.cmake | 27 + .../VS10Project/VsDebuggerCommand-check.cmake | 36 +- Tests/RunCMake/VS10Project/VsDebuggerCommand.cmake | 3 +- .../VsDebuggerCommandArguments-check.cmake | 36 +- .../VS10Project/VsDebuggerCommandArguments.cmake | 3 +- .../VS10Project/VsDebuggerEnvironment-check.cmake | 36 +- .../VS10Project/VsDebuggerEnvironment.cmake | 3 +- .../VS10Project/VsDebuggerWorkingDir-check.cmake | 36 +- .../VS10Project/VsDebuggerWorkingDir.cmake | 3 +- .../CMakeLists.txt | 0 Tests/RunCMake/VS10ProjectWinCE/RunCMakeTest.cmake | 9 + .../VsCEDebuggerDeploy-check.cmake | 42 + .../VS10ProjectWinCE/VsCEDebuggerDeploy.cmake | 13 + .../VS10ProjectWinCE/VsCSharpCFProject-check.cmake | 54 + .../VS10ProjectWinCE/VsCSharpCFProject.cmake | 8 + .../{XcodeProject => VS10ProjectWinCE}/foo.cpp | 0 .../{VS10Project => VS10ProjectWinCE}/foo.cs | 0 .../RunCMake/WorkingDirectory/CTestConfig.cmake.in | 1 - .../RunCMake/WriteBasicConfigVersionFile/All.cmake | 884 ++++ .../ArchIndependent.cmake | 63 + .../WriteBasicConfigVersionFile/CMakeLists.txt | 3 + .../WriteBasicConfigVersionFile/RunCMakeTest.cmake | 4 + Tests/RunCMake/XcodeProject/DeploymentTarget.cmake | 13 +- Tests/RunCMake/XcodeProject/RunCMakeTest.cmake | 110 +- Tests/RunCMake/XcodeProject/XcodeBundles.cmake | 23 +- .../XcodeProject/XcodeIOSInstallCombined.cmake | 6 +- .../XcodeIOSInstallCombinedPrune.cmake | 6 +- .../XcodeIOSInstallCombinedSingleArch.cmake | 6 +- Tests/RunCMake/XcodeProject/XcodeInstallIOS.cmake | 3 - .../CMP0082-ExcludeFromAll/CMakeLists.txt | 1 + .../CMP0082-NEW-install-component-stdout.txt | 4 + .../CMP0082-NEW-install-stdout.txt | 3 + Tests/RunCMake/add_subdirectory/CMP0082-NEW.cmake | 3 + .../add_subdirectory/CMP0082-Nested/CMakeLists.txt | 1 + .../CMP0082-Nested/sub/CMakeLists.txt | 1 + .../CMP0082-NestedSub/CMakeLists.txt | 2 + .../CMP0082-NestedSub/sub/CMakeLists.txt | 1 + .../CMP0082-None}/CMakeLists.txt | 0 .../CMP0082-OLD-install-component-stdout.txt | 4 + .../CMP0082-OLD-install-stdout.txt | 3 + Tests/RunCMake/add_subdirectory/CMP0082-OLD.cmake | 3 + ...MP0082-WARN-Nested-install-component-stdout.txt | 4 + .../CMP0082-WARN-Nested-install-stdout.txt | 3 + .../CMP0082-WARN-Nested-stderr.txt | 7 + .../add_subdirectory/CMP0082-WARN-Nested.cmake | 2 + ...082-WARN-NestedSub-install-component-stdout.txt | 4 + .../CMP0082-WARN-NestedSub-install-stdout.txt | 3 + .../CMP0082-WARN-NestedSub-stderr.txt | 7 + .../add_subdirectory/CMP0082-WARN-NestedSub.cmake | 1 + ...-WARN-NoTopInstall-install-component-stdout.txt | 3 + .../CMP0082-WARN-NoTopInstall-install-stdout.txt | 2 + .../CMP0082-WARN-NoTopInstall.cmake | 1 + .../CMP0082-WARN-None-install-component-stdout.txt | 3 + .../CMP0082-WARN-None-install-stdout.txt | 2 + .../add_subdirectory/CMP0082-WARN-None.cmake | 2 + .../CMP0082-WARN-install-component-stdout.txt | 4 + .../CMP0082-WARN-install-stdout.txt | 3 + .../add_subdirectory/CMP0082-WARN-stderr.txt | 7 + Tests/RunCMake/add_subdirectory/CMP0082-WARN.cmake | 3 + .../add_subdirectory/CMP0082/CMakeLists.txt | 1 + Tests/RunCMake/add_subdirectory/CMakeLists.txt | 7 + .../add_subdirectory/DoesNotExist-stderr.txt | 2 +- .../add_subdirectory/ExcludeFromAll/CMakeLists.txt | 16 + .../add_subdirectory/ExcludeFromAll/check.cmake | 44 + Tests/RunCMake/add_subdirectory/Missing-stderr.txt | 2 +- Tests/RunCMake/add_subdirectory/RunCMakeTest.cmake | 23 + Tests/RunCMake/ctest_build/BuildQuiet-stdout.txt | 1 - Tests/RunCMake/ctest_build/CTestConfig.cmake.in | 1 - .../ctest_cmake_error/CTestConfig.cmake.in | 1 - .../RunCMake/ctest_configure/CTestConfig.cmake.in | 1 - .../ctest_configure/ConfigureQuiet-stdout.txt | 1 - Tests/RunCMake/ctest_coverage/CTestConfig.cmake.in | 1 - .../ctest_disabled_test/CTestConfig.cmake.in | 1 - Tests/RunCMake/ctest_fixtures/CTestConfig.cmake.in | 1 - .../CTestConfig.cmake.in | 1 - Tests/RunCMake/ctest_memcheck/CTestConfig.cmake.in | 3 - .../ctest_skipped_test/CTestConfig.cmake.in | 1 - .../ctest_start/AppendDifferentModel-stdout.txt | 1 - .../ctest_start/AppendDifferentTrack-stdout.txt | 1 - .../ctest_start/AppendNoMatchingTrack-stdout.txt | 1 - .../RunCMake/ctest_start/AppendNoModel-stdout.txt | 1 - .../ctest_start/AppendOldContinuous-stdout.txt | 1 - .../ctest_start/AppendOldNoModel-stdout.txt | 1 - .../ctest_start/AppendSameModel-stdout.txt | 1 - Tests/RunCMake/ctest_start/CTestConfig.cmake.in | 1 - .../RunCMake/ctest_start/ConfigInBuild-stdout.txt | 1 - .../RunCMake/ctest_start/ConfigInSource-stdout.txt | 1 - .../ctest_start/NoAppendDifferentTrack-stdout.txt | 1 - Tests/RunCMake/ctest_start/RunCMakeTest.cmake | 2 - Tests/RunCMake/ctest_submit/CTestConfig.cmake.in | 1 - Tests/RunCMake/ctest_submit/FailDrop-cp-stderr.txt | 3 - Tests/RunCMake/ctest_submit/FailDrop-cp-stdout.txt | 1 - .../RunCMake/ctest_submit/FailDrop-ftp-stderr.txt | 2 - .../RunCMake/ctest_submit/FailDrop-ftp-stdout.txt | 3 - .../RunCMake/ctest_submit/FailDrop-http-stdout.txt | 5 +- .../ctest_submit/FailDrop-https-stdout.txt | 5 +- .../RunCMake/ctest_submit/FailDrop-scp-stderr.txt | 1 - .../RunCMake/ctest_submit/FailDrop-scp-stdout.txt | 1 - .../ctest_submit/FailDrop-xmlrpc-stderr.txt | 1 - .../ctest_submit/FailDrop-xmlrpc-stdout.txt | 1 - ...ETURN_VALUE-result.txt => PARTSDone-result.txt} | 0 Tests/RunCMake/ctest_submit/PARTSDone-stderr.txt | 3 + Tests/RunCMake/ctest_submit/RunCMakeTest.cmake | 5 +- Tests/RunCMake/ctest_test/CTestConfig.cmake.in | 1 - Tests/RunCMake/ctest_upload/CTestConfig.cmake.in | 1 - .../RunCMake/file/CREATE_LINK-COPY_ON_ERROR.cmake | 11 + .../file/CREATE_LINK-SYMBOLIC-noexist.cmake | 4 + Tests/RunCMake/file/CREATE_LINK-SYMBOLIC.cmake | 4 + .../CREATE_LINK-noarg-result.txt} | 0 Tests/RunCMake/file/CREATE_LINK-noarg-stderr.txt | 4 + Tests/RunCMake/file/CREATE_LINK-noarg.cmake | 1 + Tests/RunCMake/file/CREATE_LINK-noexist-stderr.txt | 1 + Tests/RunCMake/file/CREATE_LINK-noexist.cmake | 4 + Tests/RunCMake/file/CREATE_LINK.cmake | 11 + Tests/RunCMake/file/FileOpenFailRead-stderr.txt | 2 +- Tests/RunCMake/file/INSTALL-MESSAGE-bad-stderr.txt | 12 +- .../READ_SYMLINK-noexist-result.txt} | 0 .../RunCMake/file/READ_SYMLINK-noexist-stderr.txt | 6 + Tests/RunCMake/file/READ_SYMLINK-noexist.cmake | 1 + .../READ_SYMLINK-notsymlink-result.txt} | 0 .../file/READ_SYMLINK-notsymlink-stderr.txt | 6 + Tests/RunCMake/file/READ_SYMLINK-notsymlink.cmake | 2 + Tests/RunCMake/file/READ_SYMLINK.cmake | 13 + Tests/RunCMake/file/RunCMakeTest.cmake | 11 + .../SIZE-error-does-not-exist-result.txt} | 0 .../file/SIZE-error-does-not-exist-stderr.txt | 6 + .../RunCMake/file/SIZE-error-does-not-exist.cmake | 3 + Tests/RunCMake/file/SIZE.cmake | 9 + Tests/RunCMake/find_package/CMP0084-NEW-stderr.txt | 20 + Tests/RunCMake/find_package/CMP0084-NEW.cmake | 7 + Tests/RunCMake/find_package/CMP0084-OLD.cmake | 7 + .../RunCMake/find_package/CMP0084-WARN-stderr.txt | 8 + Tests/RunCMake/find_package/CMP0084-WARN.cmake | 6 + .../find_package/PackageRoot/ResolvedConfig.cmake | 1 + Tests/RunCMake/find_package/RunCMakeTest.cmake | 6 + .../find_package/SetFoundResolved-stderr.txt | 10 + Tests/RunCMake/find_package/SetFoundResolved.cmake | 17 + .../get_filename_component/KnownComponents.cmake | 4 +- Tests/RunCMake/get_property/BadArgument-stderr.txt | 2 +- .../RunCMake/get_property/BadDirectory-stderr.txt | 2 +- Tests/RunCMake/get_property/BadScope-stderr.txt | 2 +- Tests/RunCMake/get_property/BadTarget-stderr.txt | 2 +- Tests/RunCMake/get_property/BadTest-stderr.txt | 2 +- Tests/RunCMake/get_property/GlobalName-stderr.txt | 2 +- .../get_property/MissingArgument-stderr.txt | 2 +- Tests/RunCMake/get_property/NoCache-stderr.txt | 2 +- Tests/RunCMake/get_property/NoProperty-stderr.txt | 2 +- Tests/RunCMake/get_property/NoSource-stderr.txt | 2 +- Tests/RunCMake/get_property/NoTarget-stderr.txt | 2 +- Tests/RunCMake/get_property/NoTest-stderr.txt | 2 +- .../RunCMake/get_property/VariableName-stderr.txt | 2 +- .../include_external_msproject/check_utils.cmake | 2 + .../InvalidArgumentsNumber-stderr.txt | 2 +- .../RunCMake/include_guard/InvalidScope-stderr.txt | 2 +- Tests/RunCMake/install/CMP0087-NEW-check.cmake | 7 + Tests/RunCMake/install/CMP0087-NEW.cmake | 3 + Tests/RunCMake/install/CMP0087-NEW/CMakeLists.txt | 7 + Tests/RunCMake/install/CMP0087-OLD-check.cmake | 8 + Tests/RunCMake/install/CMP0087-OLD.cmake | 3 + Tests/RunCMake/install/CMP0087-OLD/CMakeLists.txt | 6 + Tests/RunCMake/install/CMP0087-WARN-stderr.txt | 5 + Tests/RunCMake/install/CMP0087-WARN.cmake | 2 + .../DIRECTORY-DESTINATION-TYPE-result.txt} | 0 .../install/DIRECTORY-DESTINATION-TYPE-stderr.txt | 5 + .../install/DIRECTORY-DESTINATION-TYPE.cmake | 1 + .../DIRECTORY-PATTERN-MESSAGE_NEVER-stderr.txt | 2 +- .../install/DIRECTORY-TYPE-Cache-all-check.cmake | 42 + Tests/RunCMake/install/DIRECTORY-TYPE-Cache.cmake | 13 + .../DIRECTORY-TYPE-CacheDependent-all-check.cmake | 24 + .../install/DIRECTORY-TYPE-CacheDependent.cmake | 7 + .../install/DIRECTORY-TYPE-all-check.cmake | 42 + Tests/RunCMake/install/DIRECTORY-TYPE.cmake | 13 + .../FILES-DESTINATION-TYPE-result.txt} | 0 .../install/FILES-DESTINATION-TYPE-stderr.txt | 5 + .../RunCMake/install/FILES-DESTINATION-TYPE.cmake | 1 + .../install/FILES-TYPE-Cache-all-check.cmake | 29 + Tests/RunCMake/install/FILES-TYPE-Cache.cmake | 13 + .../FILES-TYPE-CacheDependent-all-check.cmake | 17 + .../install/FILES-TYPE-CacheDependent.cmake | 7 + Tests/RunCMake/install/FILES-TYPE-all-check.cmake | 29 + Tests/RunCMake/install/FILES-TYPE.cmake | 13 + Tests/RunCMake/install/RunCMakeTest.cmake | 49 + .../TARGETS-Apple-Defaults-result.txt} | 0 .../install/TARGETS-Apple-Defaults-stderr.txt | 12 + .../RunCMake/install/TARGETS-Apple-Defaults.cmake | 8 + .../install/TARGETS-Defaults-Cache-all-check.cmake | 49 + .../RunCMake/install/TARGETS-Defaults-Cache.cmake | 19 + .../install/TARGETS-Defaults-all-check.cmake | 49 + Tests/RunCMake/install/TARGETS-Defaults.cmake | 19 + .../TARGETS-NAMELINK_COMPONENT-bad-all-stderr.txt | 2 +- .../TARGETS-NAMELINK_COMPONENT-bad-exc-stderr.txt | 2 +- Tests/RunCMake/install/obj3.c | 7 + Tests/RunCMake/install/obj3.h | 6 + Tests/RunCMake/install/obj4.c | 7 + Tests/RunCMake/install/obj4.h | 6 + Tests/RunCMake/install/obj5.c | 7 + Tests/RunCMake/install/obj5.h | 6 + Tests/RunCMake/list/EmptyRemoveAt0-stderr.txt | 2 +- Tests/RunCMake/list/FILTER-NotList-result.txt | 1 - Tests/RunCMake/list/FILTER-NotList-stderr.txt | 4 - Tests/RunCMake/list/FILTER-NotList.cmake | 4 + .../REMOVE_AT-EmptyList-result.txt} | 0 Tests/RunCMake/list/REMOVE_AT-EmptyList-stderr.txt | 4 + Tests/RunCMake/list/REMOVE_AT-EmptyList.cmake | 6 + Tests/RunCMake/list/REMOVE_AT-NotList-stderr.txt | 2 +- Tests/RunCMake/list/REMOVE_AT-NotList.cmake | 4 + .../list/REMOVE_DUPLICATES-NotList-result.txt | 1 - .../list/REMOVE_DUPLICATES-NotList-stderr.txt | 4 - .../RunCMake/list/REMOVE_DUPLICATES-NotList.cmake | 4 + Tests/RunCMake/list/REMOVE_ITEM-NotList-result.txt | 1 - Tests/RunCMake/list/REMOVE_ITEM-NotList-stderr.txt | 4 - Tests/RunCMake/list/REMOVE_ITEM-NotList.cmake | 4 + Tests/RunCMake/list/REVERSE-NotList-result.txt | 1 - Tests/RunCMake/list/REVERSE-NotList-stderr.txt | 4 - Tests/RunCMake/list/REVERSE-NotList.cmake | 4 + Tests/RunCMake/list/RunCMakeTest.cmake | 2 + Tests/RunCMake/list/SORT-NotList-result.txt | 1 - Tests/RunCMake/list/SORT-NotList-stderr.txt | 4 - Tests/RunCMake/list/SORT-NotList.cmake | 4 + Tests/RunCMake/pseudo_cppcheck.c | 19 +- Tests/RunCMake/set/ExtraEnvValue-stderr.txt | 6 + Tests/RunCMake/set/ExtraEnvValue.cmake | 1 + Tests/RunCMake/set/RunCMakeTest.cmake | 2 + Tests/RunCMake/set/UnknownCacheType-stderr.txt | 5 + Tests/RunCMake/set/UnknownCacheType.cmake | 1 + .../set_property/IMPORTED_GLOBAL-stderr.txt | 14 +- Tests/RunCMake/string/AppendNoArgs-stderr.txt | 2 +- Tests/RunCMake/string/ConcatNoArgs-stderr.txt | 2 +- Tests/RunCMake/string/JoinNoArgs-stderr.txt | 2 +- Tests/RunCMake/string/JoinNoVar-stderr.txt | 2 +- Tests/RunCMake/string/PrependNoArgs-stderr.txt | 2 +- Tests/RunCMake/string/UuidBadNamespace-stderr.txt | 2 +- Tests/RunCMake/string/UuidBadType-stderr.txt | 2 +- .../string/UuidMissingNameValue-stderr.txt | 2 +- .../string/UuidMissingNamespace-stderr.txt | 2 +- .../string/UuidMissingNamespaceValue-stderr.txt | 2 +- .../string/UuidMissingTypeValue-stderr.txt | 2 +- .../CMakeLists.txt | 0 .../target_compile_definitions/RunCMakeTest.cmake | 3 + .../empty_keyword_args.cmake | 5 + .../target_compile_features/RunCMakeTest.cmake | 1 + .../alias_target-stderr.txt | 2 +- .../cxx_not_enabled-stderr.txt | 2 +- .../empty_keyword_args.cmake | 5 + .../imported_target-stderr.txt | 2 +- .../invalid_args-stderr.txt | 2 +- .../invalid_args_on_interface-stderr.txt | 2 +- .../no_matching_c_feature-stderr.txt | 2 +- .../no_matching_cxx_feature-stderr.txt | 2 +- .../target_compile_features/no_target-stderr.txt | 2 +- .../not_a_c_feature-stderr.txt | 2 +- .../not_a_cxx_feature-stderr.txt | 2 +- .../not_enough_args-stderr.txt | 2 +- .../utility_target-stderr.txt | 2 +- .../CMakeLists.txt | 0 .../target_compile_options/RunCMakeTest.cmake | 3 + .../empty_keyword_args.cmake | 5 + .../CMakeLists.txt | 0 .../target_include_directories/RunCMakeTest.cmake | 3 + .../empty_keyword_args.cmake | 5 + .../CMakeLists.txt | 0 .../target_link_directories/RunCMakeTest.cmake | 3 + .../empty_keyword_args.cmake | 5 + .../target_link_libraries/CMP0023-NEW-2-stderr.txt | 2 +- .../target_link_libraries/CMP0023-NEW-stderr.txt | 2 +- .../CMP0023-WARN-2-stderr.txt | 2 +- .../target_link_libraries/CMP0023-WARN-stderr.txt | 2 +- .../CMP0079-link-NEW-bogus-stderr.txt | 2 +- .../MixedSignature-stderr.txt | 2 +- .../target_link_libraries/RunCMakeTest.cmake | 1 + .../target_link_libraries/empty_keyword_args.cmake | 4 + .../target_link_options/RunCMakeTest.cmake | 2 + .../target_link_options/empty_keyword_args.cmake | 5 + .../CMakeLists.txt | 0 Tests/RunCMake/target_sources/RunCMakeTest.cmake | 3 + .../target_sources/empty_keyword_args.cmake | 5 + Tests/RunCMake/try_compile/LinkOptions.cmake | 38 + Tests/RunCMake/try_compile/RunCMakeTest.cmake | 7 + Tests/RunCMake/try_compile/lib.c | 4 + Tests/RunCMake/try_compile/main.c | 8 + Tests/RunCMake/try_run/LinkOptions.cmake | 42 + Tests/RunCMake/try_run/RunCMakeTest.cmake | 7 + Tests/RunCMake/try_run/lib.c | 4 + Tests/RunCMake/try_run/main.c | 8 + Tests/Server/cmakelib.py | 4 + Tests/SubDirSpaces/CMakeLists.txt | 2 +- Tests/SwiftOnly/CMakeLists.txt | 4 +- Tests/Tutorial/Complete/CMakeLists.txt | 116 + Tests/Tutorial/Complete/Config.cmake.in | 4 + Tests/Tutorial/Complete/License.txt | 2 + .../Tutorial/Complete/MathFunctions/CMakeLists.txt | 68 + .../Tutorial/Complete/MathFunctions/MakeTable.cxx | 25 + .../Complete/MathFunctions/MathFunctions.cxx | 18 + .../Complete/MathFunctions/MathFunctions.h | 14 + Tests/Tutorial/Complete/MathFunctions/mysqrt.cxx | 45 + Tests/Tutorial/Complete/MathFunctions/mysqrt.h | 6 + Tests/Tutorial/Complete/TutorialConfig.h.in | 3 + Tests/Tutorial/Complete/tutorial.cxx | 25 + Tests/Tutorial/Consumer/CMakeLists.txt | 51 + Tests/Tutorial/Consumer/Config.cmake.in | 14 + Tests/Tutorial/Consumer/consumer.cxx | 11 + Tests/Tutorial/Consumer/directions.txt | 6 + Tests/Tutorial/MultiPackage/CMakeLists.txt | 109 + Tests/Tutorial/MultiPackage/Config.cmake.in | 4 + Tests/Tutorial/MultiPackage/License.txt | 2 + .../MultiPackage/MathFunctions/CMakeLists.txt | 68 + .../MultiPackage/MathFunctions/MakeTable.cxx | 25 + .../MultiPackage/MathFunctions/MathFunctions.cxx | 18 + .../MultiPackage/MathFunctions/MathFunctions.h | 14 + .../Tutorial/MultiPackage/MathFunctions/mysqrt.cxx | 45 + Tests/Tutorial/MultiPackage/MathFunctions/mysqrt.h | 6 + Tests/Tutorial/MultiPackage/MultiCPackConfig.cmake | 7 + Tests/Tutorial/MultiPackage/TutorialConfig.h.in | 3 + Tests/Tutorial/MultiPackage/directions.txt | 34 + Tests/Tutorial/MultiPackage/tutorial.cxx | 25 + Tests/Tutorial/Readme.txt | 16 + Tests/Tutorial/Step1/CMakeLists.txt | 19 +- Tests/Tutorial/Step1/directions.txt | 95 + Tests/Tutorial/Step1/tutorial.cxx | 17 +- Tests/Tutorial/Step10/CMakeLists.txt | 77 + Tests/Tutorial/Step10/License.txt | 2 + Tests/Tutorial/Step10/MathFunctions/CMakeLists.txt | 61 + Tests/Tutorial/Step10/MathFunctions/MakeTable.cxx | 25 + .../Step10/MathFunctions/MathFunctions.cxx | 18 + .../Tutorial/Step10/MathFunctions/MathFunctions.h | 14 + Tests/Tutorial/Step10/MathFunctions/mysqrt.cxx | 45 + Tests/Tutorial/Step10/MathFunctions/mysqrt.h | 6 + Tests/Tutorial/Step10/TutorialConfig.h.in | 3 + Tests/Tutorial/Step10/directions.txt | 38 + Tests/Tutorial/Step10/tutorial.cxx | 25 + Tests/Tutorial/Step11/CMakeLists.txt | 77 + Tests/Tutorial/Step11/License.txt | 2 + Tests/Tutorial/Step11/MathFunctions/CMakeLists.txt | 60 + Tests/Tutorial/Step11/MathFunctions/MakeTable.cxx | 25 + .../Step11/MathFunctions/MathFunctions.cxx | 18 + .../Tutorial/Step11/MathFunctions/MathFunctions.h | 14 + Tests/Tutorial/Step11/MathFunctions/mysqrt.cxx | 45 + Tests/Tutorial/Step11/MathFunctions/mysqrt.h | 6 + Tests/Tutorial/Step11/TutorialConfig.h.in | 3 + Tests/Tutorial/Step11/directions.txt | 104 + Tests/Tutorial/Step11/tutorial.cxx | 25 + Tests/Tutorial/Step2/CMakeLists.txt | 34 +- Tests/Tutorial/Step2/MathFunctions/mysqrt.cxx | 13 +- Tests/Tutorial/Step2/TutorialConfig.h.in | 1 - Tests/Tutorial/Step2/directions.txt | 102 + Tests/Tutorial/Step2/tutorial.cxx | 32 +- Tests/Tutorial/Step3/CMakeLists.txt | 74 +- Tests/Tutorial/Step3/MathFunctions/CMakeLists.txt | 3 - Tests/Tutorial/Step3/MathFunctions/mysqrt.cxx | 13 +- Tests/Tutorial/Step3/directions.txt | 26 + Tests/Tutorial/Step3/tutorial.cxx | 25 +- Tests/Tutorial/Step4/CMakeLists.txt | 72 +- Tests/Tutorial/Step4/MathFunctions/CMakeLists.txt | 7 +- Tests/Tutorial/Step4/MathFunctions/mysqrt.cxx | 23 +- Tests/Tutorial/Step4/TutorialConfig.h.in | 4 - Tests/Tutorial/Step4/directions.txt | 72 + Tests/Tutorial/Step4/tutorial.cxx | 25 +- Tests/Tutorial/Step5/CMakeLists.txt | 86 +- Tests/Tutorial/Step5/MathFunctions/CMakeLists.txt | 23 +- Tests/Tutorial/Step5/MathFunctions/MakeTable.cxx | 35 +- Tests/Tutorial/Step5/MathFunctions/mysqrt.cxx | 27 +- Tests/Tutorial/Step5/TutorialConfig.h.in | 4 - Tests/Tutorial/Step5/directions.txt | 69 + Tests/Tutorial/Step5/tutorial.cxx | 25 +- Tests/Tutorial/Step6/CMakeLists.txt | 94 +- Tests/Tutorial/Step6/License.txt | 2 - Tests/Tutorial/Step6/MathFunctions/CMakeLists.txt | 32 +- Tests/Tutorial/Step6/MathFunctions/MakeTable.cxx | 35 +- Tests/Tutorial/Step6/MathFunctions/mysqrt.cxx | 31 +- Tests/Tutorial/Step6/directions.txt | 104 + Tests/Tutorial/Step6/tutorial.cxx | 25 +- Tests/Tutorial/Step7/CMakeLists.txt | 98 +- Tests/Tutorial/Step7/CTestConfig.cmake | 1 - Tests/Tutorial/Step7/License.txt | 2 +- Tests/Tutorial/Step7/MathFunctions/CMakeLists.txt | 33 +- Tests/Tutorial/Step7/MathFunctions/MakeTable.cxx | 35 +- Tests/Tutorial/Step7/MathFunctions/mysqrt.cxx | 18 +- Tests/Tutorial/Step7/directions.txt | 40 + Tests/Tutorial/Step7/tutorial.cxx | 25 +- Tests/Tutorial/Step8/CMakeLists.txt | 82 + Tests/Tutorial/Step8/License.txt | 2 + Tests/Tutorial/Step8/MathFunctions/CMakeLists.txt | 29 + Tests/Tutorial/Step8/MathFunctions/MakeTable.cxx | 25 + .../{Step7 => Step8}/MathFunctions/MathFunctions.h | 0 Tests/Tutorial/Step8/MathFunctions/mysqrt.cxx | 42 + Tests/Tutorial/Step8/TutorialConfig.h.in | 8 + Tests/Tutorial/Step8/directions.txt | 38 + Tests/Tutorial/Step8/tutorial.cxx | 32 + Tests/Tutorial/Step9/CMakeLists.txt | 81 + Tests/Tutorial/Step9/CTestConfig.cmake | 15 + Tests/Tutorial/Step9/License.txt | 2 + Tests/Tutorial/Step9/MathFunctions/CMakeLists.txt | 35 + Tests/Tutorial/Step9/MathFunctions/MakeTable.cxx | 25 + .../Tutorial/Step9/MathFunctions/MathFunctions.cxx | 18 + .../{Step7 => Step9}/MathFunctions/MathFunctions.h | 0 Tests/Tutorial/Step9/MathFunctions/mysqrt.cxx | 41 + Tests/Tutorial/Step9/MathFunctions/mysqrt.h | 6 + Tests/Tutorial/Step9/TutorialConfig.h.in | 3 + Tests/Tutorial/Step9/directions.txt | 166 + Tests/Tutorial/Step9/tutorial.cxx | 33 + Tests/Unset/CMakeLists.txt | 9 + Tests/UseSWIG/CMakeLists.txt | 26 +- Tests/UseSWIG/ModuleName/CMakeLists.txt | 42 + Tests/UseSWIG/{ => ModuleName}/example.i | 0 Tests/UseSWIG/ModuleName/runme.py | 52 + Tests/UseSWIG/SwigSrcFileExtension/CMakeLists.txt | 28 + Tests/UseSWIG/SwigSrcFileExtension/my_add.i | 9 + Tests/UseSWIG/SwigSrcFileExtension/my_sub.swg | 9 + Tests/UseSWIG/SwigSrcFileExtension/runme.py | 24 + Tests/VSExternalInclude/CMakeLists.txt | 4 +- Tests/VSWinStorePhone/CMakeLists.txt | 11 +- .../Direct3DApp1/Assets/ApplicationIcon.png | Bin 3392 -> 2335 bytes Tests/VSWinStorePhone/Direct3DApp1/Assets/Logo.png | Bin 801 -> 488 bytes .../Direct3DApp1/Assets/SmallLogo.png | Bin 329 -> 167 bytes .../Direct3DApp1/Assets/SmallLogo44x44.png | Bin 554 -> 265 bytes .../Direct3DApp1/Assets/SplashScreen.png | Bin 2146 -> 909 bytes .../Direct3DApp1/Assets/StoreLogo.png | Bin 429 -> 227 bytes .../Assets/Tiles/FlipCycleTileLarge.png | Bin 9930 -> 2953 bytes .../Assets/Tiles/FlipCycleTileMedium.png | Bin 9070 -> 2767 bytes .../Assets/Tiles/FlipCycleTileSmall.png | Bin 3674 -> 1397 bytes .../Assets/Tiles/IconicTileMediumLarge.png | Bin 4937 -> 893 bytes .../Direct3DApp1/Assets/Tiles/IconicTileSmall.png | Bin 3724 -> 516 bytes .../VSWinStorePhone/Direct3DApp1/CubeRenderer.cpp | 4 + Tests/VSWinStorePhone/WinRT/Batman.cpp | 14 + Tests/VSWinStorePhone/WinRT/Batman.h | 12 + Tests/VSWinStorePhone/WinRT/CMakeLists.txt | 13 + Tests/VSXaml/Assets/Logo.scale-100.png | Bin 801 -> 488 bytes Tests/VSXaml/Assets/SmallLogo.scale-100.png | Bin 329 -> 167 bytes Tests/VSXaml/Assets/SplashScreen.scale-100.png | Bin 2146 -> 909 bytes Tests/VSXaml/Assets/StoreLogo.scale-100.png | Bin 429 -> 227 bytes Utilities/Doxygen/CMakeLists.txt | 2 +- Utilities/IWYU/mapping.imp | 12 +- Utilities/Release/linux64_release.cmake | 6 +- Utilities/Release/upload_release.cmake | 2 +- Utilities/Release/win32_release.cmake | 4 +- Utilities/Release/win64_release.cmake | 4 +- Utilities/Sphinx/CMakeLists.txt | 2 +- Utilities/Sphinx/cmake.py | 56 +- Utilities/Sphinx/colors.py | 29 + Utilities/Sphinx/conf.py.in | 1 + Utilities/Sphinx/static/cmake-logo-16.png | Bin 893 -> 692 bytes Utilities/cmThirdParty.h.in | 1 - Utilities/cm_xmlrpc.h | 13 - Utilities/cmcurl/CMakeLists.txt | 3 +- Utilities/cmjsoncpp/src/lib_json/json_reader.cpp | 2 +- Utilities/cmliblzma/liblzma/simple/x86.c | 2 +- Utilities/cmlibuv/CMakeLists.txt | 41 +- Utilities/cmlibuv/include/pthread-barrier.h | 69 - Utilities/cmlibuv/include/uv-errno.h | 437 -- Utilities/cmlibuv/include/uv-unix.h | 478 -- Utilities/cmlibuv/include/uv-version.h | 43 - Utilities/cmlibuv/include/uv-win.h | 687 --- Utilities/cmlibuv/include/uv.h | 86 +- Utilities/cmlibuv/include/{uv-aix.h => uv/aix.h} | 0 .../cmlibuv/include/{ => uv}/android-ifaddrs.h | 0 Utilities/cmlibuv/include/{uv-bsd.h => uv/bsd.h} | 0 .../cmlibuv/include/{uv-darwin.h => uv/darwin.h} | 0 Utilities/cmlibuv/include/uv/errno.h | 443 ++ .../cmlibuv/include/{uv-linux.h => uv/linux.h} | 0 .../cmlibuv/include/{uv-os390.h => uv/os390.h} | 0 .../cmlibuv/include/{uv-posix.h => uv/posix.h} | 0 .../cmlibuv/include/{ => uv}/stdint-msvc2008.h | 0 .../cmlibuv/include/{uv-sunos.h => uv/sunos.h} | 0 .../include/{uv-threadpool.h => uv/threadpool.h} | 0 Utilities/cmlibuv/include/{ => uv}/tree.h | 0 Utilities/cmlibuv/include/uv/unix.h | 497 ++ Utilities/cmlibuv/include/uv/version.h | 43 + Utilities/cmlibuv/include/uv/win.h | 696 +++ Utilities/cmlibuv/src/fs-poll.c | 4 +- Utilities/cmlibuv/src/idna.c | 291 ++ Utilities/cmlibuv/src/idna.h | 31 + Utilities/cmlibuv/src/inet.c | 13 +- Utilities/cmlibuv/src/strscpy.c | 17 + Utilities/cmlibuv/src/strscpy.h | 18 + Utilities/cmlibuv/src/threadpool.c | 96 +- Utilities/cmlibuv/src/timer.c | 181 + Utilities/cmlibuv/src/unix/aix-common.c | 10 +- Utilities/cmlibuv/src/unix/aix.c | 63 +- Utilities/cmlibuv/src/unix/android-ifaddrs.c | 2 +- Utilities/cmlibuv/src/unix/bsd-ifaddrs.c | 23 +- Utilities/cmlibuv/src/unix/bsd-proctitle.c | 93 + Utilities/cmlibuv/src/unix/cmake-bootstrap.c | 1 + Utilities/cmlibuv/src/unix/core.c | 136 +- Utilities/cmlibuv/src/unix/cygwin.c | 2 +- Utilities/cmlibuv/src/unix/darwin-proctitle.c | 147 +- Utilities/cmlibuv/src/unix/freebsd.c | 79 - Utilities/cmlibuv/src/unix/fs.c | 299 +- Utilities/cmlibuv/src/unix/fsevents.c | 72 +- Utilities/cmlibuv/src/unix/getaddrinfo.c | 21 + Utilities/cmlibuv/src/unix/getnameinfo.c | 1 + Utilities/cmlibuv/src/unix/ibmi.c | 3 +- Utilities/cmlibuv/src/unix/internal.h | 45 +- Utilities/cmlibuv/src/unix/kqueue.c | 83 +- Utilities/cmlibuv/src/unix/linux-core.c | 117 +- Utilities/cmlibuv/src/unix/linux-inotify.c | 8 +- Utilities/cmlibuv/src/unix/linux-syscalls.c | 133 - Utilities/cmlibuv/src/unix/linux-syscalls.h | 34 - Utilities/cmlibuv/src/unix/loop.c | 6 +- Utilities/cmlibuv/src/unix/netbsd.c | 71 +- Utilities/cmlibuv/src/unix/openbsd.c | 69 - Utilities/cmlibuv/src/unix/os390-syscalls.c | 29 +- Utilities/cmlibuv/src/unix/os390-syscalls.h | 4 - Utilities/cmlibuv/src/unix/os390.c | 38 +- Utilities/cmlibuv/src/unix/pipe.c | 31 +- Utilities/cmlibuv/src/unix/poll.c | 3 + Utilities/cmlibuv/src/unix/process.c | 6 +- Utilities/cmlibuv/src/unix/proctitle.c | 4 + Utilities/cmlibuv/src/unix/signal.c | 59 +- Utilities/cmlibuv/src/unix/stream.c | 262 +- Utilities/cmlibuv/src/unix/sunos.c | 15 +- Utilities/cmlibuv/src/unix/tcp.c | 21 +- Utilities/cmlibuv/src/unix/thread.c | 146 +- Utilities/cmlibuv/src/unix/timer.c | 172 - Utilities/cmlibuv/src/unix/tty.c | 45 +- Utilities/cmlibuv/src/unix/udp.c | 23 +- Utilities/cmlibuv/src/uv-common.c | 44 +- Utilities/cmlibuv/src/uv-common.h | 127 +- Utilities/cmlibuv/src/uv-data-getter-setters.c | 16 +- Utilities/cmlibuv/src/win/async.c | 10 +- Utilities/cmlibuv/src/win/atomicops-inl.h | 8 +- Utilities/cmlibuv/src/win/core.c | 58 +- Utilities/cmlibuv/src/win/dl.c | 11 +- Utilities/cmlibuv/src/win/error.c | 4 +- Utilities/cmlibuv/src/win/fs-event.c | 25 +- Utilities/cmlibuv/src/win/fs.c | 184 +- Utilities/cmlibuv/src/win/getaddrinfo.c | 40 +- Utilities/cmlibuv/src/win/getnameinfo.c | 50 +- Utilities/cmlibuv/src/win/handle-inl.h | 25 +- Utilities/cmlibuv/src/win/handle.c | 12 +- Utilities/cmlibuv/src/win/internal.h | 114 +- Utilities/cmlibuv/src/win/loop-watcher.c | 2 +- Utilities/cmlibuv/src/win/pipe.c | 1130 +++-- Utilities/cmlibuv/src/win/poll.c | 55 +- Utilities/cmlibuv/src/win/process-stdio.c | 59 +- Utilities/cmlibuv/src/win/process.c | 70 +- Utilities/cmlibuv/src/win/req.c | 25 - Utilities/cmlibuv/src/win/signal.c | 50 +- Utilities/cmlibuv/src/win/stream.c | 36 +- Utilities/cmlibuv/src/win/tcp.c | 213 +- Utilities/cmlibuv/src/win/thread.c | 246 +- Utilities/cmlibuv/src/win/timer.c | 195 - Utilities/cmlibuv/src/win/tty.c | 177 +- Utilities/cmlibuv/src/win/udp.c | 95 +- Utilities/cmlibuv/src/win/util.c | 298 +- Utilities/cmlibuv/src/win/winapi.c | 60 +- Utilities/cmlibuv/src/win/winapi.h | 80 +- Utilities/cmlibuv/src/win/winsock.c | 8 +- bootstrap | 12 +- 2593 files changed, 82883 insertions(+), 33445 deletions(-) create mode 100644 Help/dev/documentation.rst create mode 100644 Help/envvar/CMAKE_NO_VERBOSE.rst create mode 100644 Help/envvar/ENV_VAR.txt create mode 100644 Help/envvar/VERBOSE.rst create mode 100644 Help/generator/Visual Studio 16 2019.rst create mode 100644 Help/manual/cmake-file-api.7.rst create mode 100644 Help/module/CheckFortranSourceRuns.rst create mode 100644 Help/module/CheckPIESupported.rst create mode 100644 Help/module/FindFontconfig.rst create mode 100644 Help/module/FindLibinput.rst create mode 100644 Help/module/FindOctave.rst create mode 100644 Help/module/FindSQLite3.rst create mode 100644 Help/policy/CMP0082.rst create mode 100644 Help/policy/CMP0083.rst create mode 100644 Help/policy/CMP0084.rst create mode 100644 Help/policy/CMP0085.rst create mode 100644 Help/policy/CMP0086.rst create mode 100644 Help/policy/CMP0087.rst create mode 100644 Help/policy/CMP0088.rst create mode 100644 Help/prop_gbl/CMAKE_ROLE.rst create mode 100644 Help/prop_tgt/AUTOGEN_ORIGIN_DEPENDS.rst create mode 100644 Help/prop_tgt/AUTOMOC_EXECUTABLE.rst create mode 100644 Help/prop_tgt/AUTORCC_EXECUTABLE.rst create mode 100644 Help/prop_tgt/AUTOUIC_EXECUTABLE.rst create mode 100644 Help/prop_tgt/BUILD_RPATH_USE_ORIGIN.rst create mode 100644 Help/prop_tgt/GHS_INTEGRITY_APP.rst create mode 100644 Help/release/3.14.rst create mode 100644 Help/variable/CMAKE_AUTOGEN_ORIGIN_DEPENDS.rst create mode 100644 Help/variable/CMAKE_BUILD_RPATH_USE_ORIGIN.rst create mode 100644 Help/variable/CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS.rst create mode 100644 Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET.rst create mode 100644 Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET_NAME.rst create mode 100644 Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET.rst create mode 100644 Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET_NAME.rst delete mode 100644 Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_CONFIG.rst delete mode 100644 Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_DEBUG.rst delete mode 100644 Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_MINSIZEREL.rst delete mode 100644 Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_RELEASE.rst delete mode 100644 Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_RELWITHDEBINFO.rst create mode 100644 Help/variable/CMAKE_MAXIMUM_RECURSION_DEPTH.rst create mode 100644 Help/variable/CTEST_CUSTOM_TESTS_IGNORE.rst delete mode 100644 Help/variable/CTEST_CUSTOM_TEST_IGNORE.rst create mode 100644 Help/variable/CTEST_SUBMIT_URL.rst create mode 100644 Help/variable/MSYS.rst create mode 100644 Modules/CMakeParseImplicitIncludeInfo.cmake create mode 100644 Modules/CheckFortranSourceRuns.cmake create mode 100644 Modules/CheckPIESupported.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-Cray-C.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-Cray-CXX.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-Cray-Fortran.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-GNU-C.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-GNU-CXX.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-GNU-Fortran.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-Intel-C.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-Intel-CXX.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-Intel-Fortran.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-PGI-C.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-PGI-CXX.cmake delete mode 100644 Modules/Compiler/CrayPrgEnv-PGI-Fortran.cmake create mode 100644 Modules/Compiler/QCC-C-FeatureTests.cmake create mode 100644 Modules/Compiler/QCC-CXX-FeatureTests.cmake create mode 100644 Modules/CompilerId/GHS_default.gpj.in create mode 100644 Modules/CompilerId/GHS_lib.gpj.in create mode 100644 Modules/FindFontconfig.cmake create mode 100644 Modules/FindLibinput.cmake create mode 100644 Modules/FindOctave.cmake create mode 100644 Modules/FindSQLite3.cmake create mode 100644 Modules/Internal/CMakeCheckCompilerFlag.cmake delete mode 100644 Modules/Platform/IRIX.cmake delete mode 100644 Modules/Platform/IRIX64.cmake create mode 100644 Modules/Platform/iOS-Determine-CXX.cmake create mode 100644 Modules/Platform/iOS-Initialize.cmake create mode 100644 Modules/Platform/iOS.cmake create mode 100644 Modules/Platform/tvOS-Determine-CXX.cmake create mode 100644 Modules/Platform/tvOS-Initialize.cmake create mode 100644 Modules/Platform/tvOS.cmake create mode 100644 Modules/Platform/watchOS-Determine-CXX.cmake create mode 100644 Modules/Platform/watchOS-Initialize.cmake create mode 100644 Modules/Platform/watchOS.cmake create mode 100644 Source/cmFileAPI.cxx create mode 100644 Source/cmFileAPI.h create mode 100644 Source/cmFileAPICMakeFiles.cxx create mode 100644 Source/cmFileAPICMakeFiles.h create mode 100644 Source/cmFileAPICache.cxx create mode 100644 Source/cmFileAPICache.h create mode 100644 Source/cmFileAPICodemodel.cxx create mode 100644 Source/cmFileAPICodemodel.h delete mode 100644 Source/cmGlobalVisualStudio15Generator.cxx delete mode 100644 Source/cmGlobalVisualStudio15Generator.h create mode 100644 Source/cmGlobalVisualStudioVersionedGenerator.cxx create mode 100644 Source/cmGlobalVisualStudioVersionedGenerator.h create mode 100644 Source/cmInstallSubdirectoryGenerator.cxx create mode 100644 Source/cmInstallSubdirectoryGenerator.h create mode 100644 Source/cmMessageType.h create mode 100644 Source/cmQtAutoGenGlobalInitializer.cxx create mode 100644 Source/cmQtAutoGenGlobalInitializer.h create mode 100644 Source/cmString.cxx create mode 100644 Source/cmString.hxx delete mode 100644 Source/cmVS10CLFlagTable.h delete mode 100644 Source/cmVS10CSharpFlagTable.h delete mode 100644 Source/cmVS10CudaFlagTable.h delete mode 100644 Source/cmVS10CudaHostFlagTable.h delete mode 100644 Source/cmVS10LibFlagTable.h delete mode 100644 Source/cmVS10LinkFlagTable.h delete mode 100644 Source/cmVS10MASMFlagTable.h delete mode 100644 Source/cmVS10NASMFlagTable.h delete mode 100644 Source/cmVS10RCFlagTable.h delete mode 100644 Source/cmVS11CLFlagTable.h delete mode 100644 Source/cmVS11CSharpFlagTable.h delete mode 100644 Source/cmVS11LibFlagTable.h delete mode 100644 Source/cmVS11LinkFlagTable.h delete mode 100644 Source/cmVS11MASMFlagTable.h delete mode 100644 Source/cmVS11RCFlagTable.h delete mode 100644 Source/cmVS12CLFlagTable.h delete mode 100644 Source/cmVS12CSharpFlagTable.h delete mode 100644 Source/cmVS12LibFlagTable.h delete mode 100644 Source/cmVS12LinkFlagTable.h delete mode 100644 Source/cmVS12MASMFlagTable.h delete mode 100644 Source/cmVS12RCFlagTable.h delete mode 100644 Source/cmVS140CLFlagTable.h delete mode 100644 Source/cmVS140CSharpFlagTable.h delete mode 100644 Source/cmVS140LinkFlagTable.h delete mode 100644 Source/cmVS141CLFlagTable.h delete mode 100644 Source/cmVS141CSharpFlagTable.h delete mode 100644 Source/cmVS141LinkFlagTable.h delete mode 100644 Source/cmVS14LibFlagTable.h delete mode 100644 Source/cmVS14MASMFlagTable.h delete mode 100644 Source/cmVS14RCFlagTable.h create mode 100644 Source/cm_static_string_view.hxx create mode 100644 Source/cm_string_view.cxx create mode 100644 Source/cm_string_view.hxx delete mode 100755 Source/cmparseMSBuildXML.py create mode 100644 Templates/MSBuild/FlagTables/v10_CL.json create mode 100644 Templates/MSBuild/FlagTables/v10_CSharp.json create mode 100644 Templates/MSBuild/FlagTables/v10_Cuda.json create mode 100644 Templates/MSBuild/FlagTables/v10_CudaHost.json create mode 100644 Templates/MSBuild/FlagTables/v10_LIB.json create mode 100644 Templates/MSBuild/FlagTables/v10_Link.json create mode 100644 Templates/MSBuild/FlagTables/v10_MASM.json create mode 100644 Templates/MSBuild/FlagTables/v10_NASM.json create mode 100644 Templates/MSBuild/FlagTables/v10_RC.json create mode 100644 Templates/MSBuild/FlagTables/v11_CL.json create mode 100644 Templates/MSBuild/FlagTables/v11_CSharp.json create mode 100644 Templates/MSBuild/FlagTables/v11_LIB.json create mode 100644 Templates/MSBuild/FlagTables/v11_Link.json create mode 100644 Templates/MSBuild/FlagTables/v11_MASM.json create mode 100644 Templates/MSBuild/FlagTables/v11_RC.json create mode 100644 Templates/MSBuild/FlagTables/v12_CL.json create mode 100644 Templates/MSBuild/FlagTables/v12_CSharp.json create mode 100644 Templates/MSBuild/FlagTables/v12_LIB.json create mode 100644 Templates/MSBuild/FlagTables/v12_Link.json create mode 100644 Templates/MSBuild/FlagTables/v12_MASM.json create mode 100644 Templates/MSBuild/FlagTables/v12_RC.json create mode 100644 Templates/MSBuild/FlagTables/v140_CL.json create mode 100644 Templates/MSBuild/FlagTables/v140_CSharp.json create mode 100644 Templates/MSBuild/FlagTables/v140_Link.json create mode 100644 Templates/MSBuild/FlagTables/v141_CL.json create mode 100644 Templates/MSBuild/FlagTables/v141_CSharp.json create mode 100644 Templates/MSBuild/FlagTables/v141_Link.json create mode 100644 Templates/MSBuild/FlagTables/v142_CL.json create mode 100644 Templates/MSBuild/FlagTables/v142_Link.json create mode 100644 Templates/MSBuild/FlagTables/v14_LIB.json create mode 100644 Templates/MSBuild/FlagTables/v14_MASM.json create mode 100644 Templates/MSBuild/FlagTables/v14_RC.json create mode 100644 Tests/CMakeLib/testString.cxx delete mode 100644 Tests/CTestTestFdSetSize/CTestConfig.cmake create mode 100644 Tests/CudaOnly/DontResolveDeviceSymbols/CMakeLists.txt create mode 100644 Tests/CudaOnly/DontResolveDeviceSymbols/file1.cu create mode 100644 Tests/CudaOnly/DontResolveDeviceSymbols/main.cu create mode 100644 Tests/CudaOnly/DontResolveDeviceSymbols/verify.cmake create mode 100644 Tests/ExternalProjectLocal/Step5/CMakeLists.txt copy Tests/{Tutorial => ExternalProjectLocal}/Step5/MathFunctions/CMakeLists.txt (100%) copy Tests/{Tutorial/Step7 => ExternalProjectLocal/Step5}/MathFunctions/MakeTable.cxx (100%) copy Tests/{Tutorial/Step7 => ExternalProjectLocal/Step5}/MathFunctions/MathFunctions.h (100%) copy Tests/{Tutorial/Step7 => ExternalProjectLocal/Step5}/MathFunctions/mysqrt.cxx (100%) create mode 100644 Tests/ExternalProjectLocal/Step5/TutorialConfig.h.in copy Tests/{Tutorial/Step7 => ExternalProjectLocal/Step5}/tutorial.cxx (100%) create mode 100644 Tests/ExternalProjectSourceSubdirNotCMake/CMakeLists.txt create mode 100644 Tests/ExternalProjectSourceSubdirNotCMake/Example/subdir/Makefile create mode 100644 Tests/FindFontconfig/CMakeLists.txt create mode 100644 Tests/FindFontconfig/Test/CMakeLists.txt create mode 100644 Tests/FindFontconfig/Test/main.c create mode 100644 Tests/FindGDAL/CMakeLists.txt create mode 100644 Tests/FindGDAL/Test/CMakeLists.txt create mode 100644 Tests/FindGDAL/Test/main.c create mode 100644 Tests/FindGIF/CMakeLists.txt create mode 100644 Tests/FindGIF/Test/CMakeLists.txt create mode 100644 Tests/FindGIF/Test/main.c create mode 100644 Tests/FindGit/CMakeLists.txt create mode 100644 Tests/FindGit/Test/CMakeLists.txt create mode 100644 Tests/FindGit/Test/RunGit.cmake create mode 100644 Tests/FindLibLZMA/CMakeLists.txt create mode 100644 Tests/FindLibLZMA/Test/CMakeLists.txt create mode 100644 Tests/FindLibLZMA/Test/main.c create mode 100644 Tests/FindLibinput/CMakeLists.txt create mode 100644 Tests/FindLibinput/Test/CMakeLists.txt create mode 100644 Tests/FindLibinput/Test/main.c create mode 100644 Tests/FindMatlab/cmake_matlab_unit_tests4.m create mode 100644 Tests/FindMatlab/cmake_matlab_unit_tests5.m create mode 100644 Tests/FindMatlab/matlab_wrapper2.cpp create mode 100644 Tests/FindMatlab/matlab_wrapper3.cpp create mode 100644 Tests/FindMatlab/r2018a_check/CMakeLists.txt create mode 100644 Tests/FindOctave/CMakeLists.txt create mode 100644 Tests/FindOctave/Test/CMakeLists.txt create mode 100644 Tests/FindOctave/Test/main.cpp create mode 100644 Tests/FindOctave/Test/testtrue.m create mode 100644 Tests/FindPackageTest/cmake/SetFoundResolvedConfig.cmake create mode 100644 Tests/FindPostgreSQL/CMakeLists.txt create mode 100644 Tests/FindPostgreSQL/Test/CMakeLists.txt create mode 100644 Tests/FindPostgreSQL/Test/main.c create mode 100644 Tests/FindPython/FindPythonScript.cmake create mode 100644 Tests/FindPython/NumPy/CMakeLists.txt create mode 100644 Tests/FindPython/NumPy/arraytest.c create mode 100644 Tests/FindPython/NumPyOnly/CMakeLists.txt create mode 100644 Tests/FindSQLite3/CMakeLists.txt create mode 100644 Tests/FindSQLite3/Test/CMakeLists.txt create mode 100644 Tests/FindSQLite3/Test/main.c create mode 100644 Tests/FindX11/CMakeLists.txt create mode 100644 Tests/FindX11/Test/CMakeLists.txt create mode 100644 Tests/FindX11/Test/main.c delete mode 100644 Tests/GhsMulti/CMakeLists.txt create mode 100644 Tests/GhsMulti/GhsMultiCompilerOptions/CMakeLists.txt create mode 100644 Tests/GhsMulti/GhsMultiCompilerOptions/CMakeLists.txt.in create mode 100644 Tests/GhsMulti/GhsMultiCompilerOptions/test.c create mode 100644 Tests/GhsMulti/GhsMultiCopyFile/CMakeLists.txt create mode 100644 Tests/GhsMulti/GhsMultiCopyFile/test.c create mode 100644 Tests/GhsMulti/GhsMultiDuplicateSourceFilenames/CMakeLists.txt create mode 100644 Tests/GhsMulti/GhsMultiDuplicateSourceFilenames/main.c create mode 100644 Tests/GhsMulti/GhsMultiDuplicateSourceFilenames/subfolder/test.c create mode 100644 Tests/GhsMulti/GhsMultiDuplicateSourceFilenames/subfolder/testcase.c create mode 100644 Tests/GhsMulti/GhsMultiDuplicateSourceFilenames/subfolder_test.c create mode 100644 Tests/GhsMulti/GhsMultiDuplicateSourceFilenames/subfolder_test_0.c create mode 100644 Tests/GhsMulti/GhsMultiDuplicateSourceFilenames/test.c create mode 100644 Tests/GhsMulti/GhsMultiDuplicateSourceFilenames/testCase.c create mode 100644 Tests/GhsMulti/GhsMultiExclude/CMakeLists.txt copy Tests/{Wrapping/wrapFLTK.cxx => GhsMulti/GhsMultiExclude/exe1.c} (100%) create mode 100644 Tests/GhsMulti/GhsMultiExclude/lib1.c create mode 100644 Tests/GhsMulti/GhsMultiExclude/verify.cmake create mode 100644 Tests/GhsMulti/GhsMultiIntegrity/GhsMultiIntegrityDD/CMakeLists.txt create mode 100644 Tests/GhsMulti/GhsMultiIntegrity/GhsMultiIntegrityDD/exe.c create mode 100644 Tests/GhsMulti/GhsMultiIntegrity/GhsMultiIntegrityDD/func.c create mode 100644 Tests/GhsMulti/GhsMultiIntegrity/GhsMultiIntegrityDDInt/App/CMakeLists.txt rename Tests/GhsMulti/{ReturnNum => GhsMultiIntegrity/GhsMultiIntegrityDDInt}/App/Main.c (100%) create mode 100644 Tests/GhsMulti/GhsMultiIntegrity/GhsMultiIntegrityDDInt/CMakeLists.txt create mode 100644 Tests/GhsMulti/GhsMultiIntegrity/GhsMultiIntegrityDDInt/Int/AppDD.int create mode 100644 Tests/GhsMulti/GhsMultiIntegrity/GhsMultiIntegrityDDInt/Int/CMakeLists.txt create mode 100644 Tests/GhsMulti/GhsMultiIntegrity/GhsMultiIntegrityDDInt/Lib/CMakeLists.txt rename Tests/GhsMulti/{ReturnNum => GhsMultiIntegrity/GhsMultiIntegrityDDInt}/Lib/HelperFun.c (100%) rename Tests/GhsMulti/{ReturnNum => GhsMultiIntegrity/GhsMultiIntegrityDDInt}/Lib/HelperFun.h (100%) create mode 100644 Tests/GhsMulti/GhsMultiIntegrity/GhsMultiIntegrityMonolith/CMakeLists.txt create mode 100644 Tests/GhsMulti/GhsMultiIntegrity/GhsMultiIntegrityMonolith/exe.c create mode 100644 Tests/GhsMulti/GhsMultiIntegrity/GhsMultiIntegrityMonolith/func.c create mode 100644 Tests/GhsMulti/GhsMultiIntegrity/GhsMultiIntegrityMonolith/kernel.c create mode 100644 Tests/GhsMulti/GhsMultiIntegrity/GhsMultiIntegrityMonolith/test.int create mode 100644 Tests/GhsMulti/GhsMultiInterface/CMakeLists.txt create mode 100644 Tests/GhsMulti/GhsMultiLinkTest/CMakeLists.txt create mode 100644 Tests/GhsMulti/GhsMultiLinkTest/CMakeLists.txt.in create mode 100644 Tests/GhsMulti/GhsMultiLinkTest/exe1.c create mode 100644 Tests/GhsMulti/GhsMultiLinkTest/exe1.h create mode 100644 Tests/GhsMulti/GhsMultiLinkTest/func2.c create mode 100644 Tests/GhsMulti/GhsMultiLinkTest/func3.c create mode 100644 Tests/GhsMulti/GhsMultiLinkTest/func4.c create mode 100644 Tests/GhsMulti/GhsMultiLinkTest/func5.c create mode 100644 Tests/GhsMulti/GhsMultiLinkTest/func6.c create mode 100644 Tests/GhsMulti/GhsMultiLinkTest/func7.c create mode 100644 Tests/GhsMulti/GhsMultiLinkTestSub/CMakeLists.txt create mode 100644 Tests/GhsMulti/GhsMultiLinkTestSub/sub_exe/CMakeLists.txt create mode 100644 Tests/GhsMulti/GhsMultiLinkTestSub/sub_exe/exe1.c create mode 100644 Tests/GhsMulti/GhsMultiLinkTestSub/sub_exe/exe1.h create mode 100644 Tests/GhsMulti/GhsMultiLinkTestSub/sub_lib/CMakeLists.txt create mode 100644 Tests/GhsMulti/GhsMultiLinkTestSub/sub_lib/func2.c create mode 100644 Tests/GhsMulti/GhsMultiLinkTestSub/sub_lib/func3.c create mode 100644 Tests/GhsMulti/GhsMultiLinkTestSub/sub_lib/func4.c create mode 100644 Tests/GhsMulti/GhsMultiLinkTestSub/sub_lib/func5.c create mode 100644 Tests/GhsMulti/GhsMultiLinkTestSub/sub_lib/func6.c create mode 100644 Tests/GhsMulti/GhsMultiLinkTestSub/sub_lib/func7.c create mode 100644 Tests/GhsMulti/GhsMultiMultipleProjects/CMakeLists.txt create mode 100644 Tests/GhsMulti/GhsMultiMultipleProjects/exe1.c create mode 100644 Tests/GhsMulti/GhsMultiMultipleProjects/lib1.c create mode 100644 Tests/GhsMulti/GhsMultiMultipleProjects/sub/CMakeLists.txt create mode 100644 Tests/GhsMulti/GhsMultiMultipleProjects/sub/exe2.c create mode 100644 Tests/GhsMulti/GhsMultiMultipleProjects/sub/lib2.c create mode 100644 Tests/GhsMulti/GhsMultiMultipleProjects/sub2/CMakeLists.txt create mode 100644 Tests/GhsMulti/GhsMultiMultipleProjects/sub2/exe3.c create mode 100644 Tests/GhsMulti/GhsMultiMultipleProjects/sub2/lib3.c create mode 100644 Tests/GhsMulti/GhsMultiMultipleProjects/verify.cmake create mode 100644 Tests/GhsMulti/GhsMultiObjectLibrary/CMakeLists.txt create mode 100644 Tests/GhsMulti/GhsMultiObjectLibrary/exe.c create mode 100644 Tests/GhsMulti/GhsMultiObjectLibrary/sub/testOBJ.c create mode 100644 Tests/GhsMulti/GhsMultiObjectLibrary/testOBJ.c create mode 100644 Tests/GhsMulti/GhsMultiObjectLibrary/testOBJ.h create mode 100644 Tests/GhsMulti/GhsMultiObjectLibrary/testOBJ2.c create mode 100644 Tests/GhsMulti/GhsMultiPlatform/CMakeLists.txt create mode 100644 Tests/GhsMulti/GhsMultiPlatform/file1.c create mode 100644 Tests/GhsMulti/GhsMultiRenameInstall/CMakeLists.txt copy Tests/{Wrapping/wrapFLTK.cxx => GhsMulti/GhsMultiRenameInstall/exe.c} (100%) create mode 100644 Tests/GhsMulti/GhsMultiRenameInstall/exe1.c create mode 100644 Tests/GhsMulti/GhsMultiRenameInstall/lib1.c create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/Atest3.c create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/CMakeLists.txt create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/cmake.rule create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/object.o copy Tests/{Wrapping/vtkIncluded.cxx => GhsMulti/GhsMultiSrcGroups/resource.pdf} (100%) create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/s2.h create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/s4.h create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/s5.h create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/standard.h create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/sub/testOBJ.c create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/sub/testOBJ.h create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/test1.c create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/test1.h create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/test2a.c create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/test3.c create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/test3.h create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/test4.c create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/test5.c create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/test6.c create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/test7.c create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/testOBJ.c create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/testOBJ.h create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/textfile.txt create mode 100644 Tests/GhsMulti/GhsMultiSrcGroups/textfile2.txt create mode 100644 Tests/GhsMulti/GhsMultiUnsupportedTargets/CMakeLists.txt create mode 100644 Tests/GhsMulti/GhsMultiUnsupportedTargets/file.c delete mode 100644 Tests/GhsMulti/ReturnNum/App/CMakeLists.txt delete mode 100644 Tests/GhsMulti/ReturnNum/CMakeLists.txt delete mode 100644 Tests/GhsMulti/ReturnNum/Int/AppDD.int delete mode 100644 Tests/GhsMulti/ReturnNum/Int/CMakeLists.txt delete mode 100644 Tests/GhsMulti/ReturnNum/Int/Default.bsp delete mode 100644 Tests/GhsMulti/ReturnNum/Lib/CMakeLists.txt delete mode 100644 Tests/GhsMultiDuplicateSourceFilenames/CMakeLists.txt delete mode 100644 Tests/GhsMultiDuplicateSourceFilenames/main.c delete mode 100644 Tests/GhsMultiDuplicateSourceFilenames/subfolder/test.c delete mode 100644 Tests/GhsMultiDuplicateSourceFilenames/subfolder_test.c delete mode 100644 Tests/GhsMultiDuplicateSourceFilenames/subfolder_test_0.c delete mode 100644 Tests/GhsMultiDuplicateSourceFilenames/test.c create mode 100644 Tests/QtAutogen/AutogenCoreTest.cmake create mode 100644 Tests/QtAutogen/AutogenGuiTest.cmake create mode 100644 Tests/QtAutogen/AutogenOriginDependsOff/CMakeLists.txt create mode 100644 Tests/QtAutogen/AutogenOriginDependsOff/a_mc.hpp.in create mode 100644 Tests/QtAutogen/AutogenOriginDependsOff/a_qt.cpp create mode 100644 Tests/QtAutogen/AutogenOriginDependsOff/a_qt.hpp create mode 100644 Tests/QtAutogen/AutogenOriginDependsOff/b_mc.cpp.in create mode 100644 Tests/QtAutogen/AutogenOriginDependsOff/b_mc.hpp create mode 100644 Tests/QtAutogen/AutogenOriginDependsOff/b_qt.cpp create mode 100644 Tests/QtAutogen/AutogenOriginDependsOff/b_qt.hpp create mode 100644 Tests/QtAutogen/AutogenOriginDependsOff/config.hpp.in create mode 100644 Tests/QtAutogen/AutogenOriginDependsOff/configure_content.cmake create mode 100644 Tests/QtAutogen/AutogenOriginDependsOff/main.cpp create mode 100644 Tests/QtAutogen/AutogenOriginDependsOn/CMakeLists.txt copy Tests/QtAutogen/{MocDepends => AutogenOriginDependsOn}/object_invalid.hpp.in (100%) copy Tests/QtAutogen/{MocDepends => AutogenOriginDependsOn}/object_valid.hpp.in (100%) rename Tests/QtAutogen/{MocDepends => AutogenOriginDependsOn}/simpleLib.cpp.in (100%) rename Tests/QtAutogen/{MocDepends => AutogenOriginDependsOn}/simpleLib.hpp.in (100%) rename Tests/QtAutogen/{MocDepends => AutogenOriginDependsOn}/testGenFile.cpp (100%) rename Tests/QtAutogen/{MocDepends => AutogenOriginDependsOn}/testGenLib.cpp (100%) rename Tests/QtAutogen/{MocDepends => AutogenOriginDependsOn}/testGenLib.hpp (100%) rename Tests/QtAutogen/{MocDepends => AutogenOriginDependsOn}/testGenTarget.cpp (100%) create mode 100644 Tests/QtAutogen/AutogenTargetDepends/CMakeLists.txt rename Tests/QtAutogen/{MocDepends => AutogenTargetDepends}/object_invalid.hpp.in (100%) rename Tests/QtAutogen/{MocDepends => AutogenTargetDepends}/object_valid.hpp.in (100%) rename Tests/QtAutogen/{MocDepends => AutogenTargetDepends}/testATDFile.cpp (100%) rename Tests/QtAutogen/{MocDepends => AutogenTargetDepends}/testATDTarget.cpp (100%) delete mode 100644 Tests/QtAutogen/AutogenTest.cmake delete mode 100644 Tests/QtAutogen/CommonTests.cmake create mode 100644 Tests/QtAutogen/GlobalAutogenTarget/CMakeLists.txt create mode 100644 Tests/QtAutogen/GlobalAutogenTarget/GAT/CMakeLists.txt create mode 100644 Tests/QtAutogen/GlobalAutogenTarget/GAT/data.qrc copy Tests/QtAutogen/{SameName => GlobalAutogenTarget/GAT}/item.cpp (100%) copy Tests/QtAutogen/{SameName => GlobalAutogenTarget/GAT}/item.hpp (100%) create mode 100644 Tests/QtAutogen/GlobalAutogenTarget/GAT/main.cpp create mode 100644 Tests/QtAutogen/GlobalAutogenTarget/GAT/sda/CMakeLists.txt create mode 100644 Tests/QtAutogen/GlobalAutogenTarget/GAT/sda/sda.cpp create mode 100644 Tests/QtAutogen/GlobalAutogenTarget/GAT/sda/sda.hpp create mode 100644 Tests/QtAutogen/GlobalAutogenTarget/GAT/sdb/CMakeLists.txt create mode 100644 Tests/QtAutogen/GlobalAutogenTarget/GAT/sdb/sdb.cpp create mode 100644 Tests/QtAutogen/GlobalAutogenTarget/GAT/sdb/sdb.hpp create mode 100644 Tests/QtAutogen/GlobalAutogenTarget/GAT/sdc/CMakeLists.txt create mode 100644 Tests/QtAutogen/GlobalAutogenTarget/GAT/sdc/sdc.cpp create mode 100644 Tests/QtAutogen/GlobalAutogenTarget/GAT/sdc/sdc.hpp copy Tests/QtAutogen/{SameName => GlobalAutogenTarget/GAT}/view.ui (100%) delete mode 100644 Tests/QtAutogen/MocDepends/CMakeLists.txt create mode 100644 Tests/QtAutogen/SameName/object.h create mode 100644 Tests/QtAutogen/SameName/object.h++ create mode 100644 Tests/QtAutogen/SameName/object.hpp create mode 100644 Tests/QtAutogen/SameName/object.hxx create mode 100644 Tests/QtAutogen/Tests.cmake create mode 100644 Tests/QtAutogen/UicNoGui/CMakeLists.txt create mode 100644 Tests/QtAutogen/UicNoGui/MocOnly/CMakeLists.txt create mode 100644 Tests/QtAutogen/UicNoGui/MocOnly/main.cpp create mode 100644 Tests/QtAutogen/UicNoGui/NoQt/CMakeLists.txt create mode 100644 Tests/QtAutogen/UicNoGui/NoQt/main.cpp create mode 100644 Tests/QtAutogen/UicNoGui/main.cpp create mode 100644 Tests/RunCMake/CMP0064/CMP0064-OLD-stderr.txt create mode 100644 Tests/RunCMake/CMakeRoleGlobalProperty/BuildAndTest/CMakeLists.txt create mode 100644 Tests/RunCMake/CMakeRoleGlobalProperty/CMakeLists.txt create mode 100644 Tests/RunCMake/CMakeRoleGlobalProperty/CMakeLists.txt.in create mode 100644 Tests/RunCMake/CMakeRoleGlobalProperty/FindDummyPackage.cmake create mode 100644 Tests/RunCMake/CMakeRoleGlobalProperty/Project.cmake create mode 100644 Tests/RunCMake/CMakeRoleGlobalProperty/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/CMakeRoleGlobalProperty/Script.cmake create mode 100644 Tests/RunCMake/CMakeRoleGlobalProperty/sub/CMakeLists.txt create mode 100644 Tests/RunCMake/CMakeRoleGlobalProperty/test.cmake.in copy Tests/RunCMake/{while/MissingArgument-result.txt => CTestCommandLine/show-only_bad-result.txt} (100%) create mode 100644 Tests/RunCMake/CTestCommandLine/show-only_bad-stderr.txt create mode 100644 Tests/RunCMake/CTestCommandLine/show-only_human-stdout.txt create mode 100644 Tests/RunCMake/CTestCommandLine/show-only_json-v1-check.cmake create mode 100644 Tests/RunCMake/CTestCommandLine/show-only_json-v1_check.py create mode 100644 Tests/RunCMake/CTestCommandLine/show_only_json_check.py delete mode 100644 Tests/RunCMake/CTestTimeoutAfterMatch/CTestConfig.cmake.in copy Tests/RunCMake/{while/MissingArgument-result.txt => CommandLine/BuildDir--build--parallel-no-space-bad-number-result.txt} (100%) copy Tests/RunCMake/CommandLine/{BuildDir--build--parallel-bad-number-stderr.txt => BuildDir--build--parallel-no-space-bad-number-stderr.txt} (100%) rename Tests/RunCMake/CommandLine/{BuildDir--build-jobs-no-number-trailing-stderr.txt => BuildDir--build--parallel-no-space-good-number-stderr.txt} (100%) rename Tests/RunCMake/CommandLine/{BuildDir--build-jobs-good-number-trailing-stderr.txt => BuildDir--build--parallel-no-space-good-number-trailing--target-stderr.txt} (100%) copy Tests/RunCMake/{while/MissingArgument-result.txt => CommandLine/BuildDir--build-jobs-no-space-bad-number-result.txt} (100%) copy Tests/RunCMake/CommandLine/{BuildDir--build-jobs-bad-number-stderr.txt => BuildDir--build-jobs-no-space-bad-number-stderr.txt} (100%) rename Tests/RunCMake/CommandLine/{BuildDir--build--parallel-no-number-trailing-stderr.txt => BuildDir--build-jobs-no-space-good-number-stderr.txt} (100%) rename Tests/RunCMake/CommandLine/{BuildDir--build--parallel-good-number-trailing-stderr.txt => BuildDir--build-jobs-no-space-good-number-trailing--target-stderr.txt} (100%) copy Tests/RunCMake/{while/MissingArgument-result.txt => CommandLine/E_compare_files-different-eol-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/E_compare_files-different-eol-stderr.txt copy Tests/RunCMake/{while/MissingArgument-result.txt => CommandLine/E_compare_files-ignore-eol-nonexistent-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/E_compare_files-ignore-eol-nonexistent-stderr.txt copy Tests/RunCMake/{while/MissingArgument-result.txt => CommandLine/E_touch-nonexistent-dir-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/E_touch-nonexistent-dir-stderr.txt create mode 100644 Tests/RunCMake/CommandLine/compare_files/.gitattributes create mode 100644 Tests/RunCMake/CommandLine/compare_files/crlf copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/CommandLine/compare_files/empty1} (100%) copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/CommandLine/compare_files/empty2} (100%) create mode 100644 Tests/RunCMake/CommandLine/compare_files/lf create mode 100644 Tests/RunCMake/CommandLine/warn-uninitialized-stderr.txt create mode 100644 Tests/RunCMake/CommandLine/warn-uninitialized.cmake copy Tests/RunCMake/{GoogleTest/GoogleTest-test-missing-result.txt => Cppcheck/C-error-Build-result.txt} (100%) create mode 100644 Tests/RunCMake/Cppcheck/C-error-Build-stdout.txt create mode 100644 Tests/RunCMake/Cppcheck/C-error.cmake create mode 100644 Tests/RunCMake/ExternalProject/LogOutputOnFailure-build-result.txt copy Tests/RunCMake/{target_link_options/LINK_OPTIONS-shared-result.txt => ExternalProject/LogOutputOnFailure-build-stderr.txt} (100%) create mode 100644 Tests/RunCMake/ExternalProject/LogOutputOnFailure-build-stdout.txt create mode 100644 Tests/RunCMake/ExternalProject/LogOutputOnFailure.cmake create mode 100644 Tests/RunCMake/ExternalProject/LogOutputOnFailureMerged-build-result.txt copy Tests/RunCMake/{target_link_options/LINK_OPTIONS-shared-result.txt => ExternalProject/LogOutputOnFailureMerged-build-stderr.txt} (100%) create mode 100644 Tests/RunCMake/ExternalProject/LogOutputOnFailureMerged-build-stdout.txt create mode 100644 Tests/RunCMake/ExternalProject/LogOutputOnFailureMerged.cmake create mode 100644 Tests/RunCMake/FetchContent/MakeAvailable-stdout.txt create mode 100644 Tests/RunCMake/FetchContent/MakeAvailable.cmake create mode 100644 Tests/RunCMake/FetchContent/MakeAvailableTwice-stdout.txt create mode 100644 Tests/RunCMake/FetchContent/MakeAvailableTwice.cmake copy Tests/RunCMake/{while/MissingArgument-result.txt => FetchContent/MakeAvailableUndeclared-result.txt} (100%) create mode 100644 Tests/RunCMake/FetchContent/MakeAvailableUndeclared-stderr.txt create mode 100644 Tests/RunCMake/FetchContent/MakeAvailableUndeclared.cmake create mode 100644 Tests/RunCMake/FetchContent/UsesTerminalOverride-stdout.txt create mode 100644 Tests/RunCMake/FetchContent/UsesTerminalOverride.cmake create mode 100644 Tests/RunCMake/FetchContent/WithProject/CMakeLists.txt create mode 100644 Tests/RunCMake/FetchContent/WithoutProject/confirmMessage.cmake create mode 100644 Tests/RunCMake/FileAPI/CMakeLists.txt create mode 100644 Tests/RunCMake/FileAPI/ClientStateful-check.cmake create mode 100644 Tests/RunCMake/FileAPI/ClientStateful-check.py create mode 100644 Tests/RunCMake/FileAPI/ClientStateful-prep.cmake copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/FileAPI/ClientStateful.cmake} (100%) create mode 100644 Tests/RunCMake/FileAPI/ClientStateless-check.cmake create mode 100644 Tests/RunCMake/FileAPI/ClientStateless-check.py create mode 100644 Tests/RunCMake/FileAPI/ClientStateless-prep.cmake copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/FileAPI/ClientStateless.cmake} (100%) create mode 100644 Tests/RunCMake/FileAPI/DuplicateStateless-check.cmake create mode 100644 Tests/RunCMake/FileAPI/DuplicateStateless-check.py create mode 100644 Tests/RunCMake/FileAPI/DuplicateStateless-prep.cmake copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/FileAPI/DuplicateStateless.cmake} (100%) create mode 100644 Tests/RunCMake/FileAPI/Empty-check.cmake create mode 100644 Tests/RunCMake/FileAPI/Empty-check.py create mode 100644 Tests/RunCMake/FileAPI/Empty-prep.cmake copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/FileAPI/Empty.cmake} (100%) create mode 100644 Tests/RunCMake/FileAPI/EmptyClient-check.cmake create mode 100644 Tests/RunCMake/FileAPI/EmptyClient-check.py create mode 100644 Tests/RunCMake/FileAPI/EmptyClient-prep.cmake copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/FileAPI/EmptyClient.cmake} (100%) create mode 100644 Tests/RunCMake/FileAPI/MixedStateless-check.cmake create mode 100644 Tests/RunCMake/FileAPI/MixedStateless-check.py create mode 100644 Tests/RunCMake/FileAPI/MixedStateless-prep.cmake copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/FileAPI/MixedStateless.cmake} (100%) create mode 100644 Tests/RunCMake/FileAPI/Nothing-check.cmake create mode 100644 Tests/RunCMake/FileAPI/Nothing-prep.cmake copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/FileAPI/Nothing.cmake} (100%) create mode 100644 Tests/RunCMake/FileAPI/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/FileAPI/SharedStateless-check.cmake create mode 100644 Tests/RunCMake/FileAPI/SharedStateless-check.py create mode 100644 Tests/RunCMake/FileAPI/SharedStateless-prep.cmake copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/FileAPI/SharedStateless.cmake} (100%) create mode 100644 Tests/RunCMake/FileAPI/Stale-check.cmake create mode 100644 Tests/RunCMake/FileAPI/Stale-prep.cmake copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/FileAPI/Stale.cmake} (100%) create mode 100644 Tests/RunCMake/FileAPI/alias/CMakeLists.txt create mode 100644 Tests/RunCMake/FileAPI/cache-v2-ClientStateful-check.cmake create mode 100644 Tests/RunCMake/FileAPI/cache-v2-ClientStateful-prep.cmake create mode 100644 Tests/RunCMake/FileAPI/cache-v2-ClientStateless-check.cmake create mode 100644 Tests/RunCMake/FileAPI/cache-v2-ClientStateless-prep.cmake create mode 100644 Tests/RunCMake/FileAPI/cache-v2-SharedStateless-check.cmake create mode 100644 Tests/RunCMake/FileAPI/cache-v2-SharedStateless-prep.cmake create mode 100644 Tests/RunCMake/FileAPI/cache-v2-check.py create mode 100644 Tests/RunCMake/FileAPI/cache-v2.cmake create mode 100644 Tests/RunCMake/FileAPI/check_index.py create mode 100644 Tests/RunCMake/FileAPI/cmakeFiles-v1-ClientStateful-check.cmake create mode 100644 Tests/RunCMake/FileAPI/cmakeFiles-v1-ClientStateful-prep.cmake create mode 100644 Tests/RunCMake/FileAPI/cmakeFiles-v1-ClientStateless-check.cmake create mode 100644 Tests/RunCMake/FileAPI/cmakeFiles-v1-ClientStateless-prep.cmake create mode 100644 Tests/RunCMake/FileAPI/cmakeFiles-v1-SharedStateless-check.cmake create mode 100644 Tests/RunCMake/FileAPI/cmakeFiles-v1-SharedStateless-prep.cmake create mode 100644 Tests/RunCMake/FileAPI/cmakeFiles-v1-check.py create mode 100644 Tests/RunCMake/FileAPI/cmakeFiles-v1.cmake create mode 100644 Tests/RunCMake/FileAPI/codemodel-v2-ClientStateful-check.cmake create mode 100644 Tests/RunCMake/FileAPI/codemodel-v2-ClientStateful-prep.cmake create mode 100644 Tests/RunCMake/FileAPI/codemodel-v2-ClientStateless-check.cmake create mode 100644 Tests/RunCMake/FileAPI/codemodel-v2-ClientStateless-prep.cmake create mode 100644 Tests/RunCMake/FileAPI/codemodel-v2-SharedStateless-check.cmake create mode 100644 Tests/RunCMake/FileAPI/codemodel-v2-SharedStateless-prep.cmake create mode 100644 Tests/RunCMake/FileAPI/codemodel-v2-check.py create mode 100644 Tests/RunCMake/FileAPI/codemodel-v2.cmake create mode 100644 Tests/RunCMake/FileAPI/custom/CMakeLists.txt create mode 100644 Tests/RunCMake/FileAPI/cxx/CMakeLists.txt create mode 100644 Tests/RunCMake/FileAPI/dir/CMakeLists.txt copy Tests/RunCMake/{get_property/directory_properties/sub2 => FileAPI/dir/dir}/CMakeLists.txt (100%) copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/FileAPI/dir/dirtest.cmake} (100%) copy Tests/RunCMake/{target_link_libraries => FileAPI}/empty.c (100%) copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/FileAPI/empty.cxx} (100%) create mode 100644 Tests/RunCMake/FileAPI/imported/CMakeLists.txt create mode 100644 Tests/RunCMake/FileAPI/include_test.cmake create mode 100644 Tests/RunCMake/FileAPI/object/CMakeLists.txt copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/FileAPIDummyFile.cmake} (100%) create mode 100644 Tests/RunCMake/FileAPIExternalSource/CMakeLists.txt copy Tests/RunCMake/{target_link_libraries => FileAPIExternalSource}/empty.c (100%) create mode 100644 Tests/RunCMake/Framework/InstallBeforeFramework-stderr.txt create mode 100644 Tests/RunCMake/GNUInstallDirs/Opt-FreeBSD-stderr.txt create mode 100644 Tests/RunCMake/GNUInstallDirs/Root-FreeBSD-stderr.txt create mode 100644 Tests/RunCMake/GNUInstallDirs/Usr-FreeBSD-stderr.txt create mode 100644 Tests/RunCMake/GNUInstallDirs/UsrLocal-FreeBSD-stderr.txt create mode 100644 Tests/RunCMake/GeneratorExpression/CMP0085-NEW-check.cmake create mode 100644 Tests/RunCMake/GeneratorExpression/CMP0085-NEW.cmake create mode 100644 Tests/RunCMake/GeneratorExpression/CMP0085-OLD-check.cmake create mode 100644 Tests/RunCMake/GeneratorExpression/CMP0085-OLD.cmake create mode 100644 Tests/RunCMake/GeneratorExpression/CMP0085-WARN-check.cmake create mode 100644 Tests/RunCMake/GeneratorExpression/CMP0085-WARN-stderr.txt create mode 100644 Tests/RunCMake/GeneratorExpression/CMP0085-WARN.cmake copy Tests/RunCMake/{while/MissingArgument-result.txt => GeneratorExpression/NonValidTarget-Fortran_COMPILER_ID-result.txt} (100%) create mode 100644 Tests/RunCMake/GeneratorExpression/NonValidTarget-Fortran_COMPILER_ID-stderr.txt create mode 100644 Tests/RunCMake/GeneratorExpression/NonValidTarget-Fortran_COMPILER_ID.cmake copy Tests/RunCMake/{while/MissingArgument-result.txt => GeneratorExpression/NonValidTarget-Fortran_COMPILER_VERSION-result.txt} (100%) create mode 100644 Tests/RunCMake/GeneratorExpression/NonValidTarget-Fortran_COMPILER_VERSION-stderr.txt create mode 100644 Tests/RunCMake/GeneratorExpression/NonValidTarget-Fortran_COMPILER_VERSION.cmake rename Tests/RunCMake/GeneratorToolset/{TestToolsetHostArchOnly-stdout.txt => TestToolsetHostArchOnly_x64-stdout.txt} (100%) copy Tests/RunCMake/GeneratorToolset/{TestToolsetHostArchOnly.cmake => TestToolsetHostArchOnly_x64.cmake} (100%) create mode 100644 Tests/RunCMake/GeneratorToolset/TestToolsetHostArchOnly_x86-stdout.txt rename Tests/RunCMake/GeneratorToolset/{TestToolsetHostArchOnly.cmake => TestToolsetHostArchOnly_x86.cmake} (100%) create mode 100644 Tests/RunCMake/GetPrerequisites/ExecutableScripts-stdout.txt create mode 100644 Tests/RunCMake/GetPrerequisites/ExecutableScripts.cmake create mode 100755 Tests/RunCMake/GetPrerequisites/script create mode 100755 Tests/RunCMake/GetPrerequisites/script.bat create mode 100755 Tests/RunCMake/GetPrerequisites/script.sh create mode 100644 Tests/RunCMake/Make/VerboseBuild-build-stdout.txt copy Tests/RunCMake/{CTestCommandLine/TestOutputSize-result.txt => Make/VerboseBuild-build-watcom-stdout.txt} (100%) create mode 100644 Tests/RunCMake/Make/VerboseBuild-nowork-gnu-stdout.txt create mode 100644 Tests/RunCMake/Make/VerboseBuild.cmake copy Tests/RunCMake/{Ninja => Make}/hello.c (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/CMakeLists.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/CMakeLists.txt.in create mode 100644 Tests/RunCMake/MaxRecursionDepth/CTestCustom.cmake create mode 100644 Tests/RunCMake/MaxRecursionDepth/FindRecursivePackage.cmake create mode 100644 Tests/RunCMake/MaxRecursionDepth/RunCMakeTest.cmake copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/add_subdirectory-var-result.txt} (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/add_subdirectory-var-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/add_subdirectory.cmake create mode 100644 Tests/RunCMake/MaxRecursionDepth/add_subdirectory/CMakeLists.txt rename Tests/RunCMake/{ctest_submit/FailDrop-xmlrpc-result.txt => MaxRecursionDepth/ctest_read_custom_files-default-result.txt} (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/ctest_read_custom_files-default-stderr.txt rename Tests/RunCMake/{ctest_submit/FailDrop-scp-result.txt => MaxRecursionDepth/ctest_read_custom_files-invalid-var-result.txt} (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/ctest_read_custom_files-invalid-var-stderr.txt rename Tests/RunCMake/{ctest_submit/FailDrop-ftp-result.txt => MaxRecursionDepth/ctest_read_custom_files-var-result.txt} (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/ctest_read_custom_files-var-stderr.txt rename Tests/RunCMake/{ctest_submit/FailDrop-cp-result.txt => MaxRecursionDepth/ctest_run_script-var-result.txt} (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/ctest_run_script-var-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/ctest_run_script.cmake.in copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/find_package-default-result.txt} (100%) copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/find_package-default-script-result.txt} (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/find_package-default-script-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/find_package-default-stderr.txt copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/find_package-invalid-var-result.txt} (100%) copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/find_package-invalid-var-script-result.txt} (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/find_package-invalid-var-script-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/find_package-invalid-var-stderr.txt copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/find_package-var-result.txt} (100%) copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/find_package-var-script-result.txt} (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/find_package-var-script-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/find_package-var-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/find_package.cmake copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/function-default-result.txt} (100%) copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/function-default-script-result.txt} (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/function-default-script-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/function-default-stderr.txt copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/function-invalid-var-result.txt} (100%) copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/function-invalid-var-script-result.txt} (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/function-invalid-var-script-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/function-invalid-var-stderr.txt copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/function-var-result.txt} (100%) copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/function-var-script-result.txt} (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/function-var-script-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/function-var-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/function.cmake copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/include-default-result.txt} (100%) copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/include-default-script-result.txt} (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/include-default-script-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/include-default-stderr.txt copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/include-invalid-var-result.txt} (100%) copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/include-invalid-var-script-result.txt} (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/include-invalid-var-script-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/include-invalid-var-stderr.txt copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/include-var-result.txt} (100%) copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/include-var-script-result.txt} (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/include-var-script-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/include-var-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/include.cmake create mode 100644 Tests/RunCMake/MaxRecursionDepth/include_recursive.cmake copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/macro-default-result.txt} (100%) copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/macro-default-script-result.txt} (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/macro-default-script-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/macro-default-stderr.txt copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/macro-invalid-var-result.txt} (100%) copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/macro-invalid-var-script-result.txt} (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/macro-invalid-var-script-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/macro-invalid-var-stderr.txt copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/macro-var-result.txt} (100%) copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/macro-var-script-result.txt} (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/macro-var-script-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/macro-var-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/macro.cmake create mode 100644 Tests/RunCMake/MaxRecursionDepth/test.cmake.in copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/try_compile-var-result.txt} (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/try_compile-var-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/try_compile.cmake create mode 100644 Tests/RunCMake/MaxRecursionDepth/try_compile/CMakeLists.txt copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/variable_watch-default-result.txt} (100%) copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/variable_watch-default-script-result.txt} (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/variable_watch-default-script-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/variable_watch-default-stderr.txt copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/variable_watch-invalid-var-result.txt} (100%) copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/variable_watch-invalid-var-script-result.txt} (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/variable_watch-invalid-var-script-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/variable_watch-invalid-var-stderr.txt copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/variable_watch-var-result.txt} (100%) copy Tests/RunCMake/{while/MissingArgument-result.txt => MaxRecursionDepth/variable_watch-var-script-result.txt} (100%) create mode 100644 Tests/RunCMake/MaxRecursionDepth/variable_watch-var-script-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/variable_watch-var-stderr.txt create mode 100644 Tests/RunCMake/MaxRecursionDepth/variable_watch.cmake create mode 100644 Tests/RunCMake/Ninja/VerboseBuild-build-stdout.txt copy Tests/RunCMake/Ninja/{NoWorkToDo-nowork-stdout.txt => VerboseBuild-nowork-stdout.txt} (100%) create mode 100644 Tests/RunCMake/Ninja/VerboseBuild.cmake create mode 100644 Tests/RunCMake/ObjectLibrary/TransitiveDependencies.cmake create mode 100644 Tests/RunCMake/ObjectLibrary/exe2.c copy Tests/RunCMake/{target_compile_features => ParseImplicitIncludeInfo}/CMakeLists.txt (100%) create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/ParseImplicitIncludeInfo.cmake create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/CMakeLists.txt create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/README create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/aix-C-XL-13.1.3.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/aix-C-XL-13.1.3.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/aix-CXX-XL-13.1.3.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/aix-CXX-XL-13.1.3.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/craype-C-Cray-8.7.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/craype-C-Cray-8.7.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/craype-C-GNU-7.3.0.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/craype-C-GNU-7.3.0.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/craype-C-Intel-18.0.2.20180210.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/craype-C-Intel-18.0.2.20180210.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/craype-CXX-Cray-8.7.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/craype-CXX-Cray-8.7.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/craype-CXX-GNU-7.3.0.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/craype-CXX-GNU-7.3.0.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/craype-CXX-Intel-18.0.2.20180210.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/craype-CXX-Intel-18.0.2.20180210.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/craype-Fortran-Cray-8.7.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/craype-Fortran-Cray-8.7.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/craype-Fortran-GNU-7.3.0.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/craype-Fortran-GNU-7.3.0.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/craype-Fortran-Intel-18.0.2.20180210.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/craype-Fortran-Intel-18.0.2.20180210.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/darwin-C-AppleClang-8.0.0.8000042.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/darwin-C-AppleClang-8.0.0.8000042.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/darwin-CXX-AppleClang-8.0.0.8000042.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/darwin-CXX-AppleClang-8.0.0.8000042.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/darwin_nostdinc-C-AppleClang-8.0.0.8000042.input copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/ParseImplicitIncludeInfo/data/darwin_nostdinc-C-AppleClang-8.0.0.8000042.output} (100%) create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/darwin_nostdinc-CXX-AppleClang-8.0.0.8000042.input copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/ParseImplicitIncludeInfo/data/darwin_nostdinc-CXX-AppleClang-8.0.0.8000042.output} (100%) create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/empty-C.input copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/ParseImplicitIncludeInfo/data/empty-C.output} (100%) create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/empty-CXX.input copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/ParseImplicitIncludeInfo/data/empty-CXX.output} (100%) create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/freebsd-C-Clang-3.3.0.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/freebsd-C-Clang-3.3.0.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/freebsd-CXX-Clang-3.3.0.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/freebsd-CXX-Clang-3.3.0.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/freebsd-Fortran-GNU-4.6.4.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/freebsd-Fortran-GNU-4.6.4.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-C-GNU-7.3.0.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-C-GNU-7.3.0.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-C-Intel-18.0.0.20170811.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-C-Intel-18.0.0.20170811.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-C-PGI-18.10.1.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-C-PGI-18.10.1.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-C-XL-12.1.0.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-C-XL-12.1.0.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-C-XL-16.1.0.0.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-C-XL-16.1.0.0.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-CUDA-NVIDIA-9.2.148.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-CUDA-NVIDIA-9.2.148.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-CXX-GNU-7.3.0.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-CXX-GNU-7.3.0.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-CXX-Intel-18.0.0.20170811.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-CXX-Intel-18.0.0.20170811.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-CXX-PGI-18.10.1.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-CXX-PGI-18.10.1.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-CXX-XL-12.1.0.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-CXX-XL-12.1.0.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-CXX-XL-16.1.0.0.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-CXX-XL-16.1.0.0.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-Fortran-GNU-7.3.0.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-Fortran-GNU-7.3.0.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-Fortran-PGI-18.10.1.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-Fortran-PGI-18.10.1.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-Fortran-XL-14.1.0.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux-Fortran-XL-14.1.0.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-C-PGI-18.10.1.input copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-C-PGI-18.10.1.output} (100%) create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-C-XL-12.1.0.input copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-C-XL-12.1.0.output} (100%) create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-CXX-PGI-18.10.1.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-CXX-PGI-18.10.1.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-CXX-XL-12.1.0.input copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-CXX-XL-12.1.0.output} (100%) create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-Fortran-PGI-18.10.1.input copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc-Fortran-PGI-18.10.1.output} (100%) create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc_i-C-XL-12.1.0.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc_i-C-XL-12.1.0.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc_i-CXX-XL-12.1.0.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_nostdinc_i-CXX-XL-12.1.0.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_pgf77-Fortran-PGI-18.10.1.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/linux_pgf77-Fortran-PGI-18.10.1.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/mingw.org-C-GNU-4.9.3.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/mingw.org-C-GNU-4.9.3.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/mingw.org-CXX-GNU-4.9.3.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/mingw.org-CXX-GNU-4.9.3.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/netbsd-C-GNU-4.8.5.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/netbsd-C-GNU-4.8.5.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/netbsd-CXX-GNU-4.8.5.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/netbsd-CXX-GNU-4.8.5.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/netbsd_nostdinc-C-GNU-4.8.5.input copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/ParseImplicitIncludeInfo/data/netbsd_nostdinc-C-GNU-4.8.5.output} (100%) create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/netbsd_nostdinc-CXX-GNU-4.8.5.input copy Tests/{Wrapping/vtkIncluded.cxx => RunCMake/ParseImplicitIncludeInfo/data/netbsd_nostdinc-CXX-GNU-4.8.5.output} (100%) create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/openbsd-C-Clang-5.0.1.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/openbsd-C-Clang-5.0.1.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/openbsd-CXX-Clang-5.0.1.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/openbsd-CXX-Clang-5.0.1.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/sunos-C-SunPro-5.13.0.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/sunos-C-SunPro-5.13.0.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/sunos-CXX-SunPro-5.13.0.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/sunos-CXX-SunPro-5.13.0.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/sunos-Fortran-SunPro-8.8.0.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/sunos-Fortran-SunPro-8.8.0.output create mode 100644 Tests/RunCMake/PositionIndependentCode/CMP0083-cmp0083_new-check.cmake create mode 100644 Tests/RunCMake/PositionIndependentCode/CMP0083-cmp0083_old-check.cmake create mode 100644 Tests/RunCMake/PositionIndependentCode/CMP0083.cmake create mode 100644 Tests/RunCMake/PositionIndependentCode/CheckPIESupported.cmake copy Tests/RunCMake/{while/MissingArgument-result.txt => PositionIndependentCode/Genex1-result.txt} (100%) create mode 100644 Tests/RunCMake/PositionIndependentCode/Genex1-stderr.txt create mode 100644 Tests/RunCMake/PositionIndependentCode/Genex1.cmake copy Tests/RunCMake/{while/MissingArgument-result.txt => PositionIndependentCode/Genex2-result.txt} (100%) create mode 100644 Tests/RunCMake/PositionIndependentCode/Genex2-stderr.txt create mode 100644 Tests/RunCMake/PositionIndependentCode/Genex2.cmake create mode 100644 Tests/RunCMake/PositionIndependentCode/PIE-pie_off-check.cmake create mode 100644 Tests/RunCMake/PositionIndependentCode/PIE-pie_on-check.cmake create mode 100644 Tests/RunCMake/PositionIndependentCode/PIE.cmake create mode 100644 Tests/RunCMake/PositionIndependentCode/PIE_validator.cmake create mode 100644 Tests/RunCMake/RuntimePath/Relative.cmake create mode 100644 Tests/RunCMake/RuntimePath/RelativeCheck.cmake create mode 100644 Tests/RunCMake/UseSWIG/CMP0086-NEW-nuild-check.cmake create mode 100644 Tests/RunCMake/UseSWIG/CMP0086-NEW.cmake create mode 100644 Tests/RunCMake/UseSWIG/CMP0086-OLD-build-check.cmake create mode 100644 Tests/RunCMake/UseSWIG/CMP0086-OLD.cmake create mode 100644 Tests/RunCMake/UseSWIG/CMP0086-WARN-stderr.txt create mode 100644 Tests/RunCMake/UseSWIG/CMP0086-WARN.cmake create mode 100644 Tests/RunCMake/UseSWIG/CMP0086-common.cmake create mode 100644 Tests/RunCMake/VS10Project/SourceGroupCMakeLists-check.cmake create mode 100644 Tests/RunCMake/VS10Project/SourceGroupCMakeLists.cmake create mode 100644 Tests/RunCMake/VS10Project/VsCSharpDefines-check.cmake create mode 100644 Tests/RunCMake/VS10Project/VsCSharpDefines.cmake create mode 100644 Tests/RunCMake/VS10Project/VsCSharpDeployFiles-check.cmake create mode 100644 Tests/RunCMake/VS10Project/VsCSharpDeployFiles.cmake copy Tests/RunCMake/{VS10Project => VS10ProjectWinCE}/CMakeLists.txt (100%) create mode 100644 Tests/RunCMake/VS10ProjectWinCE/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/VS10ProjectWinCE/VsCEDebuggerDeploy-check.cmake create mode 100644 Tests/RunCMake/VS10ProjectWinCE/VsCEDebuggerDeploy.cmake create mode 100644 Tests/RunCMake/VS10ProjectWinCE/VsCSharpCFProject-check.cmake create mode 100644 Tests/RunCMake/VS10ProjectWinCE/VsCSharpCFProject.cmake copy Tests/RunCMake/{XcodeProject => VS10ProjectWinCE}/foo.cpp (100%) copy Tests/RunCMake/{VS10Project => VS10ProjectWinCE}/foo.cs (100%) delete mode 100644 Tests/RunCMake/WorkingDirectory/CTestConfig.cmake.in create mode 100644 Tests/RunCMake/WriteBasicConfigVersionFile/All.cmake create mode 100644 Tests/RunCMake/WriteBasicConfigVersionFile/ArchIndependent.cmake create mode 100644 Tests/RunCMake/WriteBasicConfigVersionFile/CMakeLists.txt create mode 100644 Tests/RunCMake/WriteBasicConfigVersionFile/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-ExcludeFromAll/CMakeLists.txt create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-NEW-install-component-stdout.txt create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-NEW-install-stdout.txt create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-NEW.cmake create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-Nested/CMakeLists.txt create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-Nested/sub/CMakeLists.txt create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-NestedSub/CMakeLists.txt create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-NestedSub/sub/CMakeLists.txt copy Tests/RunCMake/{get_property/directory_properties/sub2 => add_subdirectory/CMP0082-None}/CMakeLists.txt (100%) create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-OLD-install-component-stdout.txt create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-OLD-install-stdout.txt create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-OLD.cmake create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-WARN-Nested-install-component-stdout.txt create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-WARN-Nested-install-stdout.txt create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-WARN-Nested-stderr.txt create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-WARN-Nested.cmake create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-WARN-NestedSub-install-component-stdout.txt create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-WARN-NestedSub-install-stdout.txt create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-WARN-NestedSub-stderr.txt create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-WARN-NestedSub.cmake create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-WARN-NoTopInstall-install-component-stdout.txt create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-WARN-NoTopInstall-install-stdout.txt create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-WARN-NoTopInstall.cmake create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-WARN-None-install-component-stdout.txt create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-WARN-None-install-stdout.txt create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-WARN-None.cmake create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-WARN-install-component-stdout.txt create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-WARN-install-stdout.txt create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-WARN-stderr.txt create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082-WARN.cmake create mode 100644 Tests/RunCMake/add_subdirectory/CMP0082/CMakeLists.txt create mode 100644 Tests/RunCMake/add_subdirectory/ExcludeFromAll/check.cmake delete mode 100644 Tests/RunCMake/ctest_build/CTestConfig.cmake.in delete mode 100644 Tests/RunCMake/ctest_cmake_error/CTestConfig.cmake.in delete mode 100644 Tests/RunCMake/ctest_configure/CTestConfig.cmake.in delete mode 100644 Tests/RunCMake/ctest_coverage/CTestConfig.cmake.in delete mode 100644 Tests/RunCMake/ctest_disabled_test/CTestConfig.cmake.in delete mode 100644 Tests/RunCMake/ctest_fixtures/CTestConfig.cmake.in delete mode 100644 Tests/RunCMake/ctest_skipped_test/CTestConfig.cmake.in delete mode 100644 Tests/RunCMake/ctest_start/CTestConfig.cmake.in delete mode 100644 Tests/RunCMake/ctest_submit/FailDrop-cp-stderr.txt delete mode 100644 Tests/RunCMake/ctest_submit/FailDrop-cp-stdout.txt delete mode 100644 Tests/RunCMake/ctest_submit/FailDrop-ftp-stderr.txt delete mode 100644 Tests/RunCMake/ctest_submit/FailDrop-ftp-stdout.txt delete mode 100644 Tests/RunCMake/ctest_submit/FailDrop-scp-stderr.txt delete mode 100644 Tests/RunCMake/ctest_submit/FailDrop-scp-stdout.txt delete mode 100644 Tests/RunCMake/ctest_submit/FailDrop-xmlrpc-stderr.txt delete mode 100644 Tests/RunCMake/ctest_submit/FailDrop-xmlrpc-stdout.txt copy Tests/RunCMake/ctest_submit/{RepeatRETURN_VALUE-result.txt => PARTSDone-result.txt} (100%) create mode 100644 Tests/RunCMake/ctest_submit/PARTSDone-stderr.txt delete mode 100644 Tests/RunCMake/ctest_test/CTestConfig.cmake.in delete mode 100644 Tests/RunCMake/ctest_upload/CTestConfig.cmake.in create mode 100644 Tests/RunCMake/file/CREATE_LINK-COPY_ON_ERROR.cmake create mode 100644 Tests/RunCMake/file/CREATE_LINK-SYMBOLIC-noexist.cmake create mode 100644 Tests/RunCMake/file/CREATE_LINK-SYMBOLIC.cmake copy Tests/RunCMake/{while/MissingArgument-result.txt => file/CREATE_LINK-noarg-result.txt} (100%) create mode 100644 Tests/RunCMake/file/CREATE_LINK-noarg-stderr.txt create mode 100644 Tests/RunCMake/file/CREATE_LINK-noarg.cmake create mode 100644 Tests/RunCMake/file/CREATE_LINK-noexist-stderr.txt create mode 100644 Tests/RunCMake/file/CREATE_LINK-noexist.cmake create mode 100644 Tests/RunCMake/file/CREATE_LINK.cmake copy Tests/RunCMake/{while/MissingArgument-result.txt => file/READ_SYMLINK-noexist-result.txt} (100%) create mode 100644 Tests/RunCMake/file/READ_SYMLINK-noexist-stderr.txt create mode 100644 Tests/RunCMake/file/READ_SYMLINK-noexist.cmake copy Tests/RunCMake/{while/MissingArgument-result.txt => file/READ_SYMLINK-notsymlink-result.txt} (100%) create mode 100644 Tests/RunCMake/file/READ_SYMLINK-notsymlink-stderr.txt create mode 100644 Tests/RunCMake/file/READ_SYMLINK-notsymlink.cmake create mode 100644 Tests/RunCMake/file/READ_SYMLINK.cmake copy Tests/RunCMake/{while/MissingArgument-result.txt => file/SIZE-error-does-not-exist-result.txt} (100%) create mode 100644 Tests/RunCMake/file/SIZE-error-does-not-exist-stderr.txt create mode 100644 Tests/RunCMake/file/SIZE-error-does-not-exist.cmake create mode 100644 Tests/RunCMake/file/SIZE.cmake create mode 100644 Tests/RunCMake/find_package/CMP0084-NEW-stderr.txt create mode 100644 Tests/RunCMake/find_package/CMP0084-NEW.cmake create mode 100644 Tests/RunCMake/find_package/CMP0084-OLD.cmake create mode 100644 Tests/RunCMake/find_package/CMP0084-WARN-stderr.txt create mode 100644 Tests/RunCMake/find_package/CMP0084-WARN.cmake create mode 100644 Tests/RunCMake/find_package/PackageRoot/ResolvedConfig.cmake create mode 100644 Tests/RunCMake/find_package/SetFoundResolved-stderr.txt create mode 100644 Tests/RunCMake/find_package/SetFoundResolved.cmake create mode 100644 Tests/RunCMake/install/CMP0087-NEW-check.cmake create mode 100644 Tests/RunCMake/install/CMP0087-NEW.cmake create mode 100644 Tests/RunCMake/install/CMP0087-NEW/CMakeLists.txt create mode 100644 Tests/RunCMake/install/CMP0087-OLD-check.cmake create mode 100644 Tests/RunCMake/install/CMP0087-OLD.cmake create mode 100644 Tests/RunCMake/install/CMP0087-OLD/CMakeLists.txt create mode 100644 Tests/RunCMake/install/CMP0087-WARN-stderr.txt create mode 100644 Tests/RunCMake/install/CMP0087-WARN.cmake copy Tests/RunCMake/{while/MissingArgument-result.txt => install/DIRECTORY-DESTINATION-TYPE-result.txt} (100%) create mode 100644 Tests/RunCMake/install/DIRECTORY-DESTINATION-TYPE-stderr.txt create mode 100644 Tests/RunCMake/install/DIRECTORY-DESTINATION-TYPE.cmake create mode 100644 Tests/RunCMake/install/DIRECTORY-TYPE-Cache-all-check.cmake create mode 100644 Tests/RunCMake/install/DIRECTORY-TYPE-Cache.cmake create mode 100644 Tests/RunCMake/install/DIRECTORY-TYPE-CacheDependent-all-check.cmake create mode 100644 Tests/RunCMake/install/DIRECTORY-TYPE-CacheDependent.cmake create mode 100644 Tests/RunCMake/install/DIRECTORY-TYPE-all-check.cmake create mode 100644 Tests/RunCMake/install/DIRECTORY-TYPE.cmake copy Tests/RunCMake/{while/MissingArgument-result.txt => install/FILES-DESTINATION-TYPE-result.txt} (100%) create mode 100644 Tests/RunCMake/install/FILES-DESTINATION-TYPE-stderr.txt create mode 100644 Tests/RunCMake/install/FILES-DESTINATION-TYPE.cmake create mode 100644 Tests/RunCMake/install/FILES-TYPE-Cache-all-check.cmake create mode 100644 Tests/RunCMake/install/FILES-TYPE-Cache.cmake create mode 100644 Tests/RunCMake/install/FILES-TYPE-CacheDependent-all-check.cmake create mode 100644 Tests/RunCMake/install/FILES-TYPE-CacheDependent.cmake create mode 100644 Tests/RunCMake/install/FILES-TYPE-all-check.cmake create mode 100644 Tests/RunCMake/install/FILES-TYPE.cmake copy Tests/RunCMake/{while/MissingArgument-result.txt => install/TARGETS-Apple-Defaults-result.txt} (100%) create mode 100644 Tests/RunCMake/install/TARGETS-Apple-Defaults-stderr.txt create mode 100644 Tests/RunCMake/install/TARGETS-Apple-Defaults.cmake create mode 100644 Tests/RunCMake/install/TARGETS-Defaults-Cache-all-check.cmake create mode 100644 Tests/RunCMake/install/TARGETS-Defaults-Cache.cmake create mode 100644 Tests/RunCMake/install/TARGETS-Defaults-all-check.cmake create mode 100644 Tests/RunCMake/install/TARGETS-Defaults.cmake create mode 100644 Tests/RunCMake/install/obj3.c create mode 100644 Tests/RunCMake/install/obj3.h create mode 100644 Tests/RunCMake/install/obj4.c create mode 100644 Tests/RunCMake/install/obj4.h create mode 100644 Tests/RunCMake/install/obj5.c create mode 100644 Tests/RunCMake/install/obj5.h delete mode 100644 Tests/RunCMake/list/FILTER-NotList-result.txt delete mode 100644 Tests/RunCMake/list/FILTER-NotList-stderr.txt copy Tests/RunCMake/{while/MissingArgument-result.txt => list/REMOVE_AT-EmptyList-result.txt} (100%) create mode 100644 Tests/RunCMake/list/REMOVE_AT-EmptyList-stderr.txt create mode 100644 Tests/RunCMake/list/REMOVE_AT-EmptyList.cmake delete mode 100644 Tests/RunCMake/list/REMOVE_DUPLICATES-NotList-result.txt delete mode 100644 Tests/RunCMake/list/REMOVE_DUPLICATES-NotList-stderr.txt delete mode 100644 Tests/RunCMake/list/REMOVE_ITEM-NotList-result.txt delete mode 100644 Tests/RunCMake/list/REMOVE_ITEM-NotList-stderr.txt delete mode 100644 Tests/RunCMake/list/REVERSE-NotList-result.txt delete mode 100644 Tests/RunCMake/list/REVERSE-NotList-stderr.txt delete mode 100644 Tests/RunCMake/list/SORT-NotList-result.txt delete mode 100644 Tests/RunCMake/list/SORT-NotList-stderr.txt create mode 100644 Tests/RunCMake/set/ExtraEnvValue-stderr.txt create mode 100644 Tests/RunCMake/set/ExtraEnvValue.cmake create mode 100644 Tests/RunCMake/set/UnknownCacheType-stderr.txt create mode 100644 Tests/RunCMake/set/UnknownCacheType.cmake copy Tests/RunCMake/{target_link_options => target_compile_definitions}/CMakeLists.txt (100%) create mode 100644 Tests/RunCMake/target_compile_definitions/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/target_compile_definitions/empty_keyword_args.cmake create mode 100644 Tests/RunCMake/target_compile_features/empty_keyword_args.cmake copy Tests/RunCMake/{target_link_options => target_compile_options}/CMakeLists.txt (100%) create mode 100644 Tests/RunCMake/target_compile_options/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/target_compile_options/empty_keyword_args.cmake copy Tests/RunCMake/{target_link_options => target_include_directories}/CMakeLists.txt (100%) create mode 100644 Tests/RunCMake/target_include_directories/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/target_include_directories/empty_keyword_args.cmake copy Tests/RunCMake/{target_link_options => target_link_directories}/CMakeLists.txt (100%) create mode 100644 Tests/RunCMake/target_link_directories/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/target_link_directories/empty_keyword_args.cmake create mode 100644 Tests/RunCMake/target_link_libraries/empty_keyword_args.cmake create mode 100644 Tests/RunCMake/target_link_options/empty_keyword_args.cmake copy Tests/RunCMake/{target_link_options => target_sources}/CMakeLists.txt (100%) create mode 100644 Tests/RunCMake/target_sources/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/target_sources/empty_keyword_args.cmake create mode 100644 Tests/RunCMake/try_compile/LinkOptions.cmake create mode 100644 Tests/RunCMake/try_compile/lib.c create mode 100644 Tests/RunCMake/try_compile/main.c create mode 100644 Tests/RunCMake/try_run/LinkOptions.cmake create mode 100644 Tests/RunCMake/try_run/lib.c create mode 100644 Tests/RunCMake/try_run/main.c create mode 100644 Tests/Tutorial/Complete/CMakeLists.txt create mode 100644 Tests/Tutorial/Complete/Config.cmake.in create mode 100644 Tests/Tutorial/Complete/License.txt create mode 100644 Tests/Tutorial/Complete/MathFunctions/CMakeLists.txt create mode 100644 Tests/Tutorial/Complete/MathFunctions/MakeTable.cxx create mode 100644 Tests/Tutorial/Complete/MathFunctions/MathFunctions.cxx create mode 100644 Tests/Tutorial/Complete/MathFunctions/MathFunctions.h create mode 100644 Tests/Tutorial/Complete/MathFunctions/mysqrt.cxx create mode 100644 Tests/Tutorial/Complete/MathFunctions/mysqrt.h create mode 100644 Tests/Tutorial/Complete/TutorialConfig.h.in create mode 100644 Tests/Tutorial/Complete/tutorial.cxx create mode 100644 Tests/Tutorial/Consumer/CMakeLists.txt create mode 100644 Tests/Tutorial/Consumer/Config.cmake.in create mode 100644 Tests/Tutorial/Consumer/consumer.cxx create mode 100644 Tests/Tutorial/Consumer/directions.txt create mode 100644 Tests/Tutorial/MultiPackage/CMakeLists.txt create mode 100644 Tests/Tutorial/MultiPackage/Config.cmake.in create mode 100644 Tests/Tutorial/MultiPackage/License.txt create mode 100644 Tests/Tutorial/MultiPackage/MathFunctions/CMakeLists.txt create mode 100644 Tests/Tutorial/MultiPackage/MathFunctions/MakeTable.cxx create mode 100644 Tests/Tutorial/MultiPackage/MathFunctions/MathFunctions.cxx create mode 100644 Tests/Tutorial/MultiPackage/MathFunctions/MathFunctions.h create mode 100644 Tests/Tutorial/MultiPackage/MathFunctions/mysqrt.cxx create mode 100644 Tests/Tutorial/MultiPackage/MathFunctions/mysqrt.h create mode 100644 Tests/Tutorial/MultiPackage/MultiCPackConfig.cmake create mode 100644 Tests/Tutorial/MultiPackage/TutorialConfig.h.in create mode 100644 Tests/Tutorial/MultiPackage/directions.txt create mode 100644 Tests/Tutorial/MultiPackage/tutorial.cxx create mode 100644 Tests/Tutorial/Readme.txt create mode 100644 Tests/Tutorial/Step1/directions.txt create mode 100644 Tests/Tutorial/Step10/CMakeLists.txt create mode 100644 Tests/Tutorial/Step10/License.txt create mode 100644 Tests/Tutorial/Step10/MathFunctions/CMakeLists.txt create mode 100644 Tests/Tutorial/Step10/MathFunctions/MakeTable.cxx create mode 100644 Tests/Tutorial/Step10/MathFunctions/MathFunctions.cxx create mode 100644 Tests/Tutorial/Step10/MathFunctions/MathFunctions.h create mode 100644 Tests/Tutorial/Step10/MathFunctions/mysqrt.cxx create mode 100644 Tests/Tutorial/Step10/MathFunctions/mysqrt.h create mode 100644 Tests/Tutorial/Step10/TutorialConfig.h.in create mode 100644 Tests/Tutorial/Step10/directions.txt create mode 100644 Tests/Tutorial/Step10/tutorial.cxx create mode 100644 Tests/Tutorial/Step11/CMakeLists.txt create mode 100644 Tests/Tutorial/Step11/License.txt create mode 100644 Tests/Tutorial/Step11/MathFunctions/CMakeLists.txt create mode 100644 Tests/Tutorial/Step11/MathFunctions/MakeTable.cxx create mode 100644 Tests/Tutorial/Step11/MathFunctions/MathFunctions.cxx create mode 100644 Tests/Tutorial/Step11/MathFunctions/MathFunctions.h create mode 100644 Tests/Tutorial/Step11/MathFunctions/mysqrt.cxx create mode 100644 Tests/Tutorial/Step11/MathFunctions/mysqrt.h create mode 100644 Tests/Tutorial/Step11/TutorialConfig.h.in create mode 100644 Tests/Tutorial/Step11/directions.txt create mode 100644 Tests/Tutorial/Step11/tutorial.cxx create mode 100644 Tests/Tutorial/Step2/directions.txt create mode 100644 Tests/Tutorial/Step3/directions.txt create mode 100644 Tests/Tutorial/Step4/directions.txt create mode 100644 Tests/Tutorial/Step5/directions.txt delete mode 100644 Tests/Tutorial/Step6/License.txt create mode 100644 Tests/Tutorial/Step6/directions.txt delete mode 100644 Tests/Tutorial/Step7/CTestConfig.cmake create mode 100644 Tests/Tutorial/Step7/directions.txt create mode 100644 Tests/Tutorial/Step8/CMakeLists.txt create mode 100644 Tests/Tutorial/Step8/License.txt create mode 100644 Tests/Tutorial/Step8/MathFunctions/CMakeLists.txt create mode 100644 Tests/Tutorial/Step8/MathFunctions/MakeTable.cxx copy Tests/Tutorial/{Step7 => Step8}/MathFunctions/MathFunctions.h (100%) create mode 100644 Tests/Tutorial/Step8/MathFunctions/mysqrt.cxx create mode 100644 Tests/Tutorial/Step8/TutorialConfig.h.in create mode 100644 Tests/Tutorial/Step8/directions.txt create mode 100644 Tests/Tutorial/Step8/tutorial.cxx create mode 100644 Tests/Tutorial/Step9/CMakeLists.txt create mode 100644 Tests/Tutorial/Step9/CTestConfig.cmake create mode 100644 Tests/Tutorial/Step9/License.txt create mode 100644 Tests/Tutorial/Step9/MathFunctions/CMakeLists.txt create mode 100644 Tests/Tutorial/Step9/MathFunctions/MakeTable.cxx create mode 100644 Tests/Tutorial/Step9/MathFunctions/MathFunctions.cxx copy Tests/Tutorial/{Step7 => Step9}/MathFunctions/MathFunctions.h (100%) create mode 100644 Tests/Tutorial/Step9/MathFunctions/mysqrt.cxx create mode 100644 Tests/Tutorial/Step9/MathFunctions/mysqrt.h create mode 100644 Tests/Tutorial/Step9/TutorialConfig.h.in create mode 100644 Tests/Tutorial/Step9/directions.txt create mode 100644 Tests/Tutorial/Step9/tutorial.cxx create mode 100644 Tests/UseSWIG/ModuleName/CMakeLists.txt copy Tests/UseSWIG/{ => ModuleName}/example.i (100%) create mode 100644 Tests/UseSWIG/ModuleName/runme.py create mode 100644 Tests/UseSWIG/SwigSrcFileExtension/CMakeLists.txt create mode 100644 Tests/UseSWIG/SwigSrcFileExtension/my_add.i create mode 100644 Tests/UseSWIG/SwigSrcFileExtension/my_sub.swg create mode 100755 Tests/UseSWIG/SwigSrcFileExtension/runme.py create mode 100644 Tests/VSWinStorePhone/WinRT/Batman.cpp create mode 100644 Tests/VSWinStorePhone/WinRT/Batman.h create mode 100644 Tests/VSWinStorePhone/WinRT/CMakeLists.txt create mode 100644 Utilities/Sphinx/colors.py delete mode 100644 Utilities/cm_xmlrpc.h delete mode 100644 Utilities/cmlibuv/include/pthread-barrier.h delete mode 100644 Utilities/cmlibuv/include/uv-errno.h delete mode 100644 Utilities/cmlibuv/include/uv-unix.h delete mode 100644 Utilities/cmlibuv/include/uv-version.h delete mode 100644 Utilities/cmlibuv/include/uv-win.h rename Utilities/cmlibuv/include/{uv-aix.h => uv/aix.h} (100%) rename Utilities/cmlibuv/include/{ => uv}/android-ifaddrs.h (100%) rename Utilities/cmlibuv/include/{uv-bsd.h => uv/bsd.h} (100%) rename Utilities/cmlibuv/include/{uv-darwin.h => uv/darwin.h} (100%) create mode 100644 Utilities/cmlibuv/include/uv/errno.h rename Utilities/cmlibuv/include/{uv-linux.h => uv/linux.h} (100%) rename Utilities/cmlibuv/include/{uv-os390.h => uv/os390.h} (100%) rename Utilities/cmlibuv/include/{uv-posix.h => uv/posix.h} (100%) rename Utilities/cmlibuv/include/{ => uv}/stdint-msvc2008.h (100%) rename Utilities/cmlibuv/include/{uv-sunos.h => uv/sunos.h} (100%) rename Utilities/cmlibuv/include/{uv-threadpool.h => uv/threadpool.h} (100%) rename Utilities/cmlibuv/include/{ => uv}/tree.h (100%) create mode 100644 Utilities/cmlibuv/include/uv/unix.h create mode 100644 Utilities/cmlibuv/include/uv/version.h create mode 100644 Utilities/cmlibuv/include/uv/win.h create mode 100644 Utilities/cmlibuv/src/idna.c create mode 100644 Utilities/cmlibuv/src/idna.h create mode 100644 Utilities/cmlibuv/src/strscpy.c create mode 100644 Utilities/cmlibuv/src/strscpy.h create mode 100644 Utilities/cmlibuv/src/timer.c create mode 100644 Utilities/cmlibuv/src/unix/bsd-proctitle.c delete mode 100644 Utilities/cmlibuv/src/unix/timer.c delete mode 100644 Utilities/cmlibuv/src/win/req.c delete mode 100644 Utilities/cmlibuv/src/win/timer.c hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 7 00:03:06 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 7 Feb 2019 00:03:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.13.4-1307-gc2ffcb3 Message-ID: <20190207050306.41D091138AE@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 c2ffcb3aabc5d422784eed7d11412e754087ea58 (commit) from 062cfd991faac000d484c74e5af7d65726c655dc (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=c2ffcb3aabc5d422784eed7d11412e754087ea58 commit c2ffcb3aabc5d422784eed7d11412e754087ea58 Author: Kitware Robot AuthorDate: Thu Feb 7 00:01:07 2019 -0500 Commit: Kitware Robot CommitDate: Thu Feb 7 00:01:07 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index ef4318b..39cb7e6 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 14) -set(CMake_VERSION_PATCH 20190206) +set(CMake_VERSION_PATCH 20190207) #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 7 06:43:11 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 7 Feb 2019 06:43:11 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.13.4-1309-gf60ec9e Message-ID: <20190207114311.29F62111D71@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 f60ec9e63a3a237ba868d2a454152a59a8c38b6a (commit) via 822697996e3c3fb92eaa817584d0bf6e0bd76b22 (commit) from c2ffcb3aabc5d422784eed7d11412e754087ea58 (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=f60ec9e63a3a237ba868d2a454152a59a8c38b6a commit f60ec9e63a3a237ba868d2a454152a59a8c38b6a Merge: c2ffcb3 8226979 Author: Brad King AuthorDate: Thu Feb 7 11:42:23 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 7 06:42:30 2019 -0500 Merge topic 'vs-csharp-nowarn-numbers' 822697996e VS: Fix nowarn compiler option to accept warning numbers. Acked-by: Kitware Robot Merge-request: !2923 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=822697996e3c3fb92eaa817584d0bf6e0bd76b22 commit 822697996e3c3fb92eaa817584d0bf6e0bd76b22 Author: Wil Stark AuthorDate: Tue Feb 5 15:12:38 2019 -0800 Commit: Brad King CommitDate: Thu Feb 7 06:39:45 2019 -0500 VS: Fix nowarn compiler option to accept warning numbers. Warning disables are transferred to the VS IDE `` node. Fixes: #18878 diff --git a/Source/cmGlobalVisualStudio10Generator.cxx b/Source/cmGlobalVisualStudio10Generator.cxx index 07656ed..d8b2e89 100644 --- a/Source/cmGlobalVisualStudio10Generator.cxx +++ b/Source/cmGlobalVisualStudio10Generator.cxx @@ -1136,6 +1136,8 @@ static unsigned int cmLoadFlagTableSpecial(Json::Value entry, value |= cmIDEFlagTable::CaseInsensitive; } else if (s == "SpaceAppendable") { value |= cmIDEFlagTable::SpaceAppendable; + } else if (s == "CommaAppendable") { + value |= cmIDEFlagTable::CommaAppendable; } } } diff --git a/Source/cmIDEFlagTable.h b/Source/cmIDEFlagTable.h index 28d5d53..ff93432 100644 --- a/Source/cmIDEFlagTable.h +++ b/Source/cmIDEFlagTable.h @@ -29,6 +29,9 @@ struct cmIDEFlagTable SpaceAppendable = (1 << 7), // a flag that if specified multiple times // should have its value appended to the // old value with spaces + CommaAppendable = (1 << 8), // a flag that if specified multiple times + // should have its value appended to the + // old value with commas (e.g. C# /nowarn UserValueIgnored = UserValue | UserIgnored, UserValueRequired = UserValue | UserRequired diff --git a/Source/cmIDEOptions.cxx b/Source/cmIDEOptions.cxx index ee0c782..ea67d45 100644 --- a/Source/cmIDEOptions.cxx +++ b/Source/cmIDEOptions.cxx @@ -148,6 +148,8 @@ void cmIDEOptions::FlagMapUpdate(cmIDEFlagTable const* entry, this->FlagMap[entry->IDEName].push_back(new_value); } else if (entry->special & cmIDEFlagTable::SpaceAppendable) { this->FlagMap[entry->IDEName].append_with_space(new_value); + } else if (entry->special & cmIDEFlagTable::CommaAppendable) { + this->FlagMap[entry->IDEName].append_with_comma(new_value); } else { // Use the user-specified value. this->FlagMap[entry->IDEName] = new_value; diff --git a/Source/cmIDEOptions.h b/Source/cmIDEOptions.h index a4e5757..4a43073 100644 --- a/Source/cmIDEOptions.h +++ b/Source/cmIDEOptions.h @@ -65,12 +65,22 @@ protected: this->derived::operator=(r); return *this; } + FlagValue& append_with_comma(std::string const& r) + { + return append_with_separator(r, ','); + } FlagValue& append_with_space(std::string const& r) { + return append_with_separator(r, ' '); + } + + private: + FlagValue& append_with_separator(std::string const& r, char separator) + { this->resize(1); std::string& l = this->operator[](0); if (!l.empty()) { - l += " "; + l += separator; } l += r; return *this; diff --git a/Templates/MSBuild/FlagTables/v10_CSharp.json b/Templates/MSBuild/FlagTables/v10_CSharp.json index a0780a4..5989aea 100644 --- a/Templates/MSBuild/FlagTables/v10_CSharp.json +++ b/Templates/MSBuild/FlagTables/v10_CSharp.json @@ -299,11 +299,15 @@ "flags": [] }, { - "name": "DisabledWarnings", - "switch": "nowarn", + "name": "NoWarn", + "switch": "nowarn:", "comment": "", "value": "", - "flags": [] + "flags": [ + "UserValue", + "UserRequired", + "CommaAppendable" + ] }, { "name": "CheckForOverflowUnderflow", diff --git a/Templates/MSBuild/FlagTables/v11_CSharp.json b/Templates/MSBuild/FlagTables/v11_CSharp.json index a0780a4..5989aea 100644 --- a/Templates/MSBuild/FlagTables/v11_CSharp.json +++ b/Templates/MSBuild/FlagTables/v11_CSharp.json @@ -299,11 +299,15 @@ "flags": [] }, { - "name": "DisabledWarnings", - "switch": "nowarn", + "name": "NoWarn", + "switch": "nowarn:", "comment": "", "value": "", - "flags": [] + "flags": [ + "UserValue", + "UserRequired", + "CommaAppendable" + ] }, { "name": "CheckForOverflowUnderflow", diff --git a/Templates/MSBuild/FlagTables/v12_CSharp.json b/Templates/MSBuild/FlagTables/v12_CSharp.json index a0780a4..5989aea 100644 --- a/Templates/MSBuild/FlagTables/v12_CSharp.json +++ b/Templates/MSBuild/FlagTables/v12_CSharp.json @@ -299,11 +299,15 @@ "flags": [] }, { - "name": "DisabledWarnings", - "switch": "nowarn", + "name": "NoWarn", + "switch": "nowarn:", "comment": "", "value": "", - "flags": [] + "flags": [ + "UserValue", + "UserRequired", + "CommaAppendable" + ] }, { "name": "CheckForOverflowUnderflow", diff --git a/Templates/MSBuild/FlagTables/v140_CSharp.json b/Templates/MSBuild/FlagTables/v140_CSharp.json index a0780a4..5989aea 100644 --- a/Templates/MSBuild/FlagTables/v140_CSharp.json +++ b/Templates/MSBuild/FlagTables/v140_CSharp.json @@ -299,11 +299,15 @@ "flags": [] }, { - "name": "DisabledWarnings", - "switch": "nowarn", + "name": "NoWarn", + "switch": "nowarn:", "comment": "", "value": "", - "flags": [] + "flags": [ + "UserValue", + "UserRequired", + "CommaAppendable" + ] }, { "name": "CheckForOverflowUnderflow", diff --git a/Templates/MSBuild/FlagTables/v141_CSharp.json b/Templates/MSBuild/FlagTables/v141_CSharp.json index a0780a4..5989aea 100644 --- a/Templates/MSBuild/FlagTables/v141_CSharp.json +++ b/Templates/MSBuild/FlagTables/v141_CSharp.json @@ -299,11 +299,15 @@ "flags": [] }, { - "name": "DisabledWarnings", - "switch": "nowarn", + "name": "NoWarn", + "switch": "nowarn:", "comment": "", "value": "", - "flags": [] + "flags": [ + "UserValue", + "UserRequired", + "CommaAppendable" + ] }, { "name": "CheckForOverflowUnderflow", diff --git a/Tests/RunCMake/VS10Project/RunCMakeTest.cmake b/Tests/RunCMake/VS10Project/RunCMakeTest.cmake index 7c1ed4e..df253a9 100644 --- a/Tests/RunCMake/VS10Project/RunCMakeTest.cmake +++ b/Tests/RunCMake/VS10Project/RunCMakeTest.cmake @@ -1,5 +1,6 @@ include(RunCMake) +run_cmake(VsCSharpCompilerOpts) run_cmake(ExplicitCMakeLists) run_cmake(SourceGroupCMakeLists) diff --git a/Tests/RunCMake/VS10Project/VsCSharpCompilerOpts-check.cmake b/Tests/RunCMake/VS10Project/VsCSharpCompilerOpts-check.cmake new file mode 100644 index 0000000..3e418c3 --- /dev/null +++ b/Tests/RunCMake/VS10Project/VsCSharpCompilerOpts-check.cmake @@ -0,0 +1,64 @@ +# +# Check C# VS project for required elements. +# +set(csProjectFile "${RunCMake_TEST_BINARY_DIR}/foo.csproj") +if(NOT EXISTS "${csProjectFile}") + set(RunCMake_TEST_FAILED "Project file ${csProjectFile} does not exist.") + return() +endif() + + +set(inDebug FALSE) +set(inRelease FALSE) +set(debugOK FALSE) +set(releaseOK FALSE) + + +file(STRINGS "${csProjectFile}" lines) +foreach(line IN LISTS lines) + #message(STATUS ${line}) + if(line MATCHES "^ * *$") + set(inRelease FALSE) + set(inDebug FALSE) + elseif(inDebug AND + (line MATCHES "^ *.*505.* *$") AND + (line MATCHES "^ *.*707.* *$") AND + (line MATCHES "^ *.*808.* *$") AND + (line MATCHES "^ *.*909.* *$") + ) + set(debugOK TRUE) + elseif(inRelease AND + (NOT (line MATCHES "^ *.*505.* *$")) AND + (line MATCHES "^ *.*707.* *$") AND + (line MATCHES "^ *.*808.* *$") AND + (line MATCHES "^ *.*909.* *$") + ) + set(releaseOK TRUE) + endif() +endforeach() + +function(print_csprojfile) + file(STRINGS "${csProjectFile}" lines) + foreach(line IN LISTS lines) + message(STATUS ${line}) + endforeach() +endfunction() + + +if(NOT debugOK) + message(STATUS "Failed to set Debug configuration warning config correctly.") + set(RunCMake_TEST_FAILED "Failed to set Debug configuration defines correctly.") + print_csprojfile() + return() +endif() + +if(NOT releaseOK) + message(STATUS "Failed to set Release configuration warning config correctly.") + set(RunCMake_TEST_FAILED "Failed to set Release configuration defines correctly.") + print_csprojfile() + return() +endif() diff --git a/Tests/RunCMake/VS10Project/VsCSharpCompilerOpts.cmake b/Tests/RunCMake/VS10Project/VsCSharpCompilerOpts.cmake new file mode 100644 index 0000000..85af38b --- /dev/null +++ b/Tests/RunCMake/VS10Project/VsCSharpCompilerOpts.cmake @@ -0,0 +1,14 @@ +enable_language(CSharp) + +add_library(foo SHARED + foo.cs) + +set_target_properties(foo PROPERTIES + LINKER_LANGUAGE CSharp) + + +# Issue 18878 +target_compile_options(foo PRIVATE "/platform:anycpu" "/nowarn:707,808" "/nowarn:909" ) + +# Debug only warning disable +set(CMAKE_CSharp_FLAGS_DEBUG "${CMAKE_CSharp_FLAGS_DEBUG} /nowarn:505") ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalVisualStudio10Generator.cxx | 2 ++ Source/cmIDEFlagTable.h | 3 +++ Source/cmIDEOptions.cxx | 2 ++ Source/cmIDEOptions.h | 12 +++++++++++- Templates/MSBuild/FlagTables/v10_CSharp.json | 10 +++++++--- Templates/MSBuild/FlagTables/v11_CSharp.json | 10 +++++++--- Templates/MSBuild/FlagTables/v12_CSharp.json | 10 +++++++--- Templates/MSBuild/FlagTables/v140_CSharp.json | 10 +++++++--- Templates/MSBuild/FlagTables/v141_CSharp.json | 10 +++++++--- Tests/RunCMake/VS10Project/RunCMakeTest.cmake | 1 + ...-check.cmake => VsCSharpCompilerOpts-check.cmake} | 20 ++++++++++---------- .../RunCMake/VS10Project/VsCSharpCompilerOpts.cmake | 14 ++++++++++++++ 12 files changed, 78 insertions(+), 26 deletions(-) copy Tests/RunCMake/VS10Project/{VsCSharpDefines-check.cmake => VsCSharpCompilerOpts-check.cmake} (58%) create mode 100644 Tests/RunCMake/VS10Project/VsCSharpCompilerOpts.cmake hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 7 06:53:06 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 7 Feb 2019 06:53:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.13.4-1316-g6252a7f Message-ID: <20190207115306.6146A125262@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 6252a7ff61ed457f5e655dc6420d594f5b4ef0fa (commit) via 60a8d4c5f4300215acf2bbcb2a12b625d1859124 (commit) via ebb6b3a2da8d81cb95515ab4d5cc38f69f20cf47 (commit) via d3d9e6b760b3601f5416bef8762a64102e9dd7a2 (commit) via acbd69c219214ed2477e33d1bb0c7754513e03d5 (commit) via 7df10748e254c91cb9f39c000f98b6ed0e45f537 (commit) via 8af334f5baa1a628895571491f67a4f7d9483d9b (commit) from f60ec9e63a3a237ba868d2a454152a59a8c38b6a (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=6252a7ff61ed457f5e655dc6420d594f5b4ef0fa commit 6252a7ff61ed457f5e655dc6420d594f5b4ef0fa Merge: ebb6b3a 60a8d4c Author: Brad King AuthorDate: Thu Feb 7 11:52:40 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 7 06:52:46 2019 -0500 Merge topic 'cpack-ifw-error-wording' 60a8d4c5f4 CPack/IFW: Correct wording in error message Acked-by: Kitware Robot Merge-request: !2928 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=60a8d4c5f4300215acf2bbcb2a12b625d1859124 commit 60a8d4c5f4300215acf2bbcb2a12b625d1859124 Author: Joachim Wuttke (o) AuthorDate: Wed Feb 6 17:34:55 2019 +0100 Commit: Brad King CommitDate: Thu Feb 7 06:51:15 2019 -0500 CPack/IFW: Correct wording in error message diff --git a/Modules/CPackIFW.cmake b/Modules/CPackIFW.cmake index 141e842..8380977 100644 --- a/Modules/CPackIFW.cmake +++ b/Modules/CPackIFW.cmake @@ -518,7 +518,7 @@ macro(_cpack_ifw_resolve_script _variable) get_filename_component(${_ifw_script_macro} ${_ifw_script_file} ABSOLUTE) set(_ifw_script_file ${${_ifw_script_macro}}) if(NOT EXISTS ${_ifw_script_file}) - message(WARNING "CPack IFW: script file \"${_ifw_script_file}\" is not exists") + message(WARNING "CPack IFW: script file \"${_ifw_script_file}\" does not exist") set(${_ifw_script_macro}) endif() endif() https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ebb6b3a2da8d81cb95515ab4d5cc38f69f20cf47 commit ebb6b3a2da8d81cb95515ab4d5cc38f69f20cf47 Merge: 7df1074 d3d9e6b Author: Brad King AuthorDate: Thu Feb 7 11:49:50 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 7 06:49:56 2019 -0500 Merge topic 'FindHDF5-cleanup' d3d9e6b760 FindHDF5: Modernize formatting of variable documentation acbd69c219 FindHDF5: Use execute_process instead of exec_program Acked-by: Kitware Robot Merge-request: !2916 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d3d9e6b760b3601f5416bef8762a64102e9dd7a2 commit d3d9e6b760b3601f5416bef8762a64102e9dd7a2 Author: Michael Hirsch, Ph.D AuthorDate: Mon Feb 4 21:07:25 2019 -0500 Commit: Brad King CommitDate: Thu Feb 7 06:47:07 2019 -0500 FindHDF5: Modernize formatting of variable documentation diff --git a/Modules/FindHDF5.cmake b/Modules/FindHDF5.cmake index ff464d7..70bfc96 100644 --- a/Modules/FindHDF5.cmake +++ b/Modules/FindHDF5.cmake @@ -8,7 +8,6 @@ FindHDF5 Find HDF5, a library for reading and writing self describing array data. - This module invokes the HDF5 wrapper compiler that should be installed alongside HDF5. Depending upon the HDF5 Configuration, the wrapper compiler is called either h5cc or h5pcc. If this succeeds, the module @@ -45,54 +44,75 @@ an HDF5 client application, this module also makes an effort to find tools that come with the HDF5 distribution that may be useful for regression testing. -This module will define the following variables: - -:: - - HDF5_FOUND - true if HDF5 was found on the system - HDF5_VERSION - HDF5 version in format Major.Minor.Release - HDF5_INCLUDE_DIRS - Location of the hdf5 includes - HDF5_INCLUDE_DIR - Location of the hdf5 includes (deprecated) - HDF5_DEFINITIONS - Required compiler definitions for HDF5 - HDF5_LIBRARIES - Required libraries for all requested bindings - HDF5_HL_LIBRARIES - Required libraries for the HDF5 high level API for all - bindings, if the HL component is enabled - -Available components are: C CXX Fortran and HL. For each enabled language -binding, a corresponding HDF5_${LANG}_LIBRARIES variable, and potentially -HDF5_${LANG}_DEFINITIONS, will be defined. -If the HL component is enabled, then an HDF5_${LANG}_HL_LIBRARIES will +Result Variables +^^^^^^^^^^^^^^^^ + +This module will set the following variables in your project: + +``HDF5_FOUND`` + HDF5 was found on the system +``HDF5_VERSION`` + HDF5 library version +``HDF5_INCLUDE_DIRS`` + Location of the HDF5 header files +``HDF5_DEFINITIONS`` + Required compiler definitions for HDF5 +``HDF5_LIBRARIES`` + Required libraries for all requested bindings +``HDF5_HL_LIBRARIES`` + Required libraries for the HDF5 high level API for all bindings, + if the ``HL`` component is enabled + +Available components are: ``C`` ``CXX`` ``Fortran`` and ``HL``. +For each enabled language binding, a corresponding ``HDF5_${LANG}_LIBRARIES`` +variable, and potentially ``HDF5_${LANG}_DEFINITIONS``, will be defined. +If the ``HL`` component is enabled, then an ``HDF5_${LANG}_HL_LIBRARIES`` will also be defined. With all components enabled, the following variables will be defined: -:: - - HDF5_C_DEFINITIONS -- Required compiler definitions for HDF5 C bindings - HDF5_CXX_DEFINITIONS -- Required compiler definitions for HDF5 C++ bindings - HDF5_Fortran_DEFINITIONS -- Required compiler definitions for HDF5 Fortran bindings - HDF5_C_INCLUDE_DIRS -- Required include directories for HDF5 C bindings - HDF5_CXX_INCLUDE_DIRS -- Required include directories for HDF5 C++ bindings - HDF5_Fortran_INCLUDE_DIRS -- Required include directories for HDF5 Fortran bindings - HDF5_C_LIBRARIES - Required libraries for the HDF5 C bindings - HDF5_CXX_LIBRARIES - Required libraries for the HDF5 C++ bindings - HDF5_Fortran_LIBRARIES - Required libraries for the HDF5 Fortran bindings - HDF5_C_HL_LIBRARIES - Required libraries for the high level C bindings - HDF5_CXX_HL_LIBRARIES - Required libraries for the high level C++ bindings - HDF5_Fortran_HL_LIBRARIES - Required libraries for the high level Fortran - bindings. - - HDF5_IS_PARALLEL - Whether or not HDF5 was found with parallel IO support - HDF5_C_COMPILER_EXECUTABLE - the path to the HDF5 C wrapper compiler - HDF5_CXX_COMPILER_EXECUTABLE - the path to the HDF5 C++ wrapper compiler - HDF5_Fortran_COMPILER_EXECUTABLE - the path to the HDF5 Fortran wrapper compiler - HDF5_C_COMPILER_EXECUTABLE_NO_INTERROGATE - path to the primary C compiler - which is also the HDF5 wrapper - HDF5_CXX_COMPILER_EXECUTABLE_NO_INTERROGATE - path to the primary C++ - compiler which is also - the HDF5 wrapper - HDF5_Fortran_COMPILER_EXECUTABLE_NO_INTERROGATE - path to the primary - Fortran compiler which - is also the HDF5 wrapper - HDF5_DIFF_EXECUTABLE - the path to the HDF5 dataset comparison tool +``HDF5_C_DEFINITIONS`` + Required compiler definitions for HDF5 C bindings +``HDF5_CXX_DEFINITIONS`` + Required compiler definitions for HDF5 C++ bindings +``HDF5_Fortran_DEFINITIONS`` + Required compiler definitions for HDF5 Fortran bindings +``HDF5_C_INCLUDE_DIRS`` + Required include directories for HDF5 C bindings +``HDF5_CXX_INCLUDE_DIRS`` + Required include directories for HDF5 C++ bindings +``HDF5_Fortran_INCLUDE_DIRS`` + Required include directories for HDF5 Fortran bindings +``HDF5_C_LIBRARIES`` + Required libraries for the HDF5 C bindings +``HDF5_CXX_LIBRARIES`` + Required libraries for the HDF5 C++ bindings +``HDF5_Fortran_LIBRARIES`` + Required libraries for the HDF5 Fortran bindings +``HDF5_C_HL_LIBRARIES`` + Required libraries for the high level C bindings +``HDF5_CXX_HL_LIBRARIES`` + Required libraries for the high level C++ bindings +``HDF5_Fortran_HL_LIBRARIES`` + Required libraries for the high level Fortran bindings. + +``HDF5_IS_PARALLEL`` + HDF5 library has parallel IO support +``HDF5_C_COMPILER_EXECUTABLE`` + path to the HDF5 C wrapper compiler +``HDF5_CXX_COMPILER_EXECUTABLE`` + path to the HDF5 C++ wrapper compiler +``HDF5_Fortran_COMPILER_EXECUTABLE`` + path to the HDF5 Fortran wrapper compiler +``HDF5_C_COMPILER_EXECUTABLE_NO_INTERROGATE`` + path to the primary C compiler which is also the HDF5 wrapper +``HDF5_CXX_COMPILER_EXECUTABLE_NO_INTERROGATE`` + path to the primary C++ compiler which is also the HDF5 wrapper +``HDF5_Fortran_COMPILER_EXECUTABLE_NO_INTERROGATE`` + path to the primary Fortran compiler which is also the HDF5 wrapper +``HDF5_DIFF_EXECUTABLE`` + path to the HDF5 dataset comparison tool + +Hints +^^^^^ The following variable can be set to guide the search for HDF5 libraries and includes: @@ -100,10 +120,10 @@ The following variable can be set to guide the search for HDF5 libraries and inc Specify the path to the HDF5 installation to use. ``HDF5_FIND_DEBUG`` - Set to a true value to get some extra debugging output. + Set ``true`` to get extra debugging output. ``HDF5_NO_FIND_PACKAGE_CONFIG_FILE`` - Set to a true value to skip trying to find ``hdf5-config.cmake``. + Set ``true`` to skip trying to find ``hdf5-config.cmake``. #]=======================================================================] # This module is maintained by Will Dicharry . https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=acbd69c219214ed2477e33d1bb0c7754513e03d5 commit acbd69c219214ed2477e33d1bb0c7754513e03d5 Author: Michael Hirsch, Ph.D AuthorDate: Mon Feb 4 21:07:25 2019 -0500 Commit: Brad King CommitDate: Thu Feb 7 06:47:07 2019 -0500 FindHDF5: Use execute_process instead of exec_program diff --git a/Modules/FindHDF5.cmake b/Modules/FindHDF5.cmake index 2772b7d..ff464d7 100644 --- a/Modules/FindHDF5.cmake +++ b/Modules/FindHDF5.cmake @@ -322,20 +322,22 @@ macro( _HDF5_invoke_compiler language output return_value version is_parallel) elseif("${language}" STREQUAL "Fortran") set(test_file ${scratch_dir}/cmake_hdf5_test.f90) endif() - exec_program( ${HDF5_${language}_COMPILER_EXECUTABLE} - ARGS -show ${lib_type_args} ${test_file} - OUTPUT_VARIABLE ${output} - RETURN_VALUE ${return_value} - ) + execute_process( + COMMAND ${HDF5_${language}_COMPILER_EXECUTABLE} -show ${lib_type_args} ${test_file} + OUTPUT_VARIABLE ${output} + ERROR_VARIABLE ${output} + RESULT_VARIABLE ${return_value} + ) if(NOT ${${return_value}} EQUAL 0) message(STATUS "Unable to determine HDF5 ${language} flags from HDF5 wrapper.") endif() - exec_program( ${HDF5_${language}_COMPILER_EXECUTABLE} - ARGS -showconfig - OUTPUT_VARIABLE config_output - RETURN_VALUE config_return - ) + execute_process( + COMMAND ${HDF5_${language}_COMPILER_EXECUTABLE} -showconfig + OUTPUT_VARIABLE config_output + ERROR_VARIABLE config_output + RESULT_VARIABLE config_return + ) if(NOT ${return_value} EQUAL 0) message( STATUS "Unable to determine HDF5 ${language} version from HDF5 wrapper.") https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7df10748e254c91cb9f39c000f98b6ed0e45f537 commit 7df10748e254c91cb9f39c000f98b6ed0e45f537 Merge: f60ec9e 8af334f Author: Brad King AuthorDate: Thu Feb 7 11:45:33 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 7 06:45:42 2019 -0500 Merge topic 'xcode-stdlib-flags' 8af334f5ba Xcode: Derive stdlib from CXX flags Acked-by: Kitware Robot Merge-request: !2919 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8af334f5baa1a628895571491f67a4f7d9483d9b commit 8af334f5baa1a628895571491f67a4f7d9483d9b Author: Gregor Jasny AuthorDate: Tue Feb 5 14:23:31 2019 +0100 Commit: Brad King CommitDate: Thu Feb 7 06:43:51 2019 -0500 Xcode: Derive stdlib from CXX flags Closes: #18396 diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake index 2f84c8e..83ce392 100644 --- a/Modules/CMakeDetermineCompilerId.cmake +++ b/Modules/CMakeDetermineCompilerId.cmake @@ -360,6 +360,15 @@ Id flags: ${testflags} ${CMAKE_${lang}_COMPILER_ID_FLAGS_ALWAYS} else() set(id_sdkroot "") endif() + set(id_clang_cxx_library "") + set(stdlib_regex "(^| )(-stdlib=)([^ ]+)( |$)") + string(REGEX MATCHALL "${stdlib_regex}" all_stdlib_matches "${CMAKE_CXX_FLAGS}") + if(all_stdlib_matches) + list(GET all_stdlib_matches "-1" last_stdlib_match) + if(last_stdlib_match MATCHES "${stdlib_regex}") + set(id_clang_cxx_library "CLANG_CXX_LIBRARY = \"${CMAKE_MATCH_3}\";") + endif() + endif() configure_file(${CMAKE_ROOT}/Modules/CompilerId/Xcode-3.pbxproj.in ${id_dir}/CompilerId${lang}.xcodeproj/project.pbxproj @ONLY) unset(_ENV_MACOSX_DEPLOYMENT_TARGET) diff --git a/Modules/CompilerId/Xcode-3.pbxproj.in b/Modules/CompilerId/Xcode-3.pbxproj.in index 813c074..672044e 100644 --- a/Modules/CompilerId/Xcode-3.pbxproj.in +++ b/Modules/CompilerId/Xcode-3.pbxproj.in @@ -86,6 +86,7 @@ SYMROOT = .; @id_toolset@ @id_lang_version@ + @id_clang_cxx_library@ @id_deployment_target@ @id_sdkroot@ }; diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index 16f8a0e..51c001e 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -2254,6 +2254,22 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, debugStr = "NO"; } + // extract C++ stdlib + for (auto const& language : languages) { + if (language != "CXX") { + continue; + } + std::string& flags = cflags[language]; + + auto stdlib = + this->ExtractFlagRegex("(^| )(-stdlib=[^ ]+)( |$)", 2, flags); + if (stdlib.size() > 8) { + const auto cxxLibrary = stdlib.substr(8); + buildSettings->AddAttribute("CLANG_CXX_LIBRARY", + this->CreateString(cxxLibrary)); + } + } + buildSettings->AddAttribute("COMBINE_HIDPI_IMAGES", this->CreateString("YES")); buildSettings->AddAttribute("GCC_GENERATE_DEBUGGING_SYMBOLS", ----------------------------------------------------------------------- Summary of changes: Modules/CMakeDetermineCompilerId.cmake | 9 +++ Modules/CPackIFW.cmake | 2 +- Modules/CompilerId/Xcode-3.pbxproj.in | 1 + Modules/FindHDF5.cmake | 140 +++++++++++++++++++-------------- Source/cmGlobalXCodeGenerator.cxx | 16 ++++ 5 files changed, 108 insertions(+), 60 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 7 07:03:05 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 7 Feb 2019 07:03:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.13.4-1327-g0741eda Message-ID: <20190207120305.949DB128096@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 0741eda2468e482baf1b5ff6a3a8d376143171e4 (commit) via 982e6e777556de8db44b16b144ab62f4b7172319 (commit) via 450a1904d5c7611806b8da55f2df72bcc0ddcacb (commit) via 555b3c11ec60ba7428f26c1faad0656e7b8fc606 (commit) via 1e2e12889b3550713cfcb86a9367c3046a6f56e9 (commit) via 6383dc398afec89122376e7b53189fd1028a1318 (commit) via f657bcbd488bad36dbf91174f3601cc596bd96cd (commit) via f835526d8f4f719e7d1d28232b146bc26c17b8c9 (commit) via 42825fc220f9d05c8db629709a94deeced42be7a (commit) via dd45f23b0142fb92de17458dd69b2b6f967f94bd (commit) via 562ea5d0e200a5e005ef33dca45a7d08a5e8fbb7 (commit) from 6252a7ff61ed457f5e655dc6420d594f5b4ef0fa (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=0741eda2468e482baf1b5ff6a3a8d376143171e4 commit 0741eda2468e482baf1b5ff6a3a8d376143171e4 Merge: 982e6e7 42825fc Author: Brad King AuthorDate: Thu Feb 7 11:55:40 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 7 06:55:53 2019 -0500 Merge topic 'mingw-ar-suffix' 42825fc220 MinGW: Fix locating BinUtils when compiler has a suffix Acked-by: Kitware Robot Merge-request: !2924 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=982e6e777556de8db44b16b144ab62f4b7172319 commit 982e6e777556de8db44b16b144ab62f4b7172319 Merge: 450a190 dd45f23 Author: Brad King AuthorDate: Thu Feb 7 11:54:39 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 7 06:55:12 2019 -0500 Merge topic 'findcups' dd45f23b01 FindCups: add imported target Acked-by: Kitware Robot Merge-request: !2917 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=450a1904d5c7611806b8da55f2df72bcc0ddcacb commit 450a1904d5c7611806b8da55f2df72bcc0ddcacb Merge: 555b3c1 562ea5d Author: Brad King AuthorDate: Thu Feb 7 11:54:24 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 7 06:54:31 2019 -0500 Merge topic 'test-FortranModules-tweak' 562ea5d0e2 Tests: Add a way to configure custom options for FortranModules test Acked-by: Kitware Robot Merge-request: !2926 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=555b3c11ec60ba7428f26c1faad0656e7b8fc606 commit 555b3c11ec60ba7428f26c1faad0656e7b8fc606 Merge: 6252a7f 1e2e128 Author: Brad King AuthorDate: Thu Feb 7 06:53:32 2019 -0500 Commit: Brad King CommitDate: Thu Feb 7 06:53:32 2019 -0500 Merge branch 'release-3.14' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=42825fc220f9d05c8db629709a94deeced42be7a commit 42825fc220f9d05c8db629709a94deeced42be7a Author: Regina Pfeifer AuthorDate: Tue Dec 11 09:08:42 2018 +0100 Commit: Regina Pfeifer CommitDate: Wed Feb 6 17:43:55 2019 +0100 MinGW: Fix locating BinUtils when compiler has a suffix While all executables from a mingw toolchain share a common prefix, only the ones provided with the compiler have a suffix, the binutils do not. Fixes: #18879 diff --git a/Modules/CMakeDetermineCCompiler.cmake b/Modules/CMakeDetermineCCompiler.cmake index d7f6f97..3ec534f 100644 --- a/Modules/CMakeDetermineCCompiler.cmake +++ b/Modules/CMakeDetermineCCompiler.cmake @@ -139,8 +139,9 @@ if (CMAKE_CROSSCOMPILING AND NOT _CMAKE_TOOLCHAIN_PREFIX) if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang|QCC") get_filename_component(COMPILER_BASENAME "${CMAKE_C_COMPILER}" NAME) - if (COMPILER_BASENAME MATCHES "^(.+-)(clang|g?cc)(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$") + if (COMPILER_BASENAME MATCHES "^(.+-)(clang|g?cc)(-[0-9]+(\\.[0-9]+)*)?(-[^.]+)?(\\.exe)?$") set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1}) + set(_CMAKE_COMPILER_SUFFIX ${CMAKE_MATCH_5}) elseif(CMAKE_C_COMPILER_ID MATCHES "Clang") if(CMAKE_C_COMPILER_TARGET) set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_C_COMPILER_TARGET}-) diff --git a/Modules/CMakeDetermineCXXCompiler.cmake b/Modules/CMakeDetermineCXXCompiler.cmake index bd878b2..68cb9fe 100644 --- a/Modules/CMakeDetermineCXXCompiler.cmake +++ b/Modules/CMakeDetermineCXXCompiler.cmake @@ -136,8 +136,9 @@ if (CMAKE_CROSSCOMPILING AND NOT _CMAKE_TOOLCHAIN_PREFIX) if("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang|QCC") get_filename_component(COMPILER_BASENAME "${CMAKE_CXX_COMPILER}" NAME) - if (COMPILER_BASENAME MATCHES "^(.+-)(clan)?[gc]\\+\\+(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$") + if (COMPILER_BASENAME MATCHES "^(.+-)(clan)?[gc]\\+\\+(-[0-9]+(\\.[0-9]+)*)?(-[^.]+)?(\\.exe)?$") set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1}) + set(_CMAKE_COMPILER_SUFFIX ${CMAKE_MATCH_5}) elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") if(CMAKE_CXX_COMPILER_TARGET) set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_CXX_COMPILER_TARGET}-) diff --git a/Modules/Compiler/GNU-FindBinUtils.cmake b/Modules/Compiler/GNU-FindBinUtils.cmake index 16b7bbd..097fbf3 100644 --- a/Modules/Compiler/GNU-FindBinUtils.cmake +++ b/Modules/Compiler/GNU-FindBinUtils.cmake @@ -18,7 +18,7 @@ get_filename_component(__gcc_hints "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPIL find_program(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_AR NAMES "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar-${__version_x_y}" "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar-${__version_x}" - "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar" + "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar${_CMAKE_COMPILER_SUFFIX}" HINTS ${__gcc_hints} DOC "A wrapper around 'ar' adding the appropriate '--plugin' option for the GCC compiler" ) @@ -28,7 +28,7 @@ mark_as_advanced(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_AR) find_program(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_RANLIB NAMES "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib-${__version_x_y}" "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib-${__version_x}" - "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib" + "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib${_CMAKE_COMPILER_SUFFIX}" HINTS ${__gcc_hints} DOC "A wrapper around 'ranlib' adding the appropriate '--plugin' option for the GCC compiler" ) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=dd45f23b0142fb92de17458dd69b2b6f967f94bd commit dd45f23b0142fb92de17458dd69b2b6f967f94bd Author: Patrick Gansterer AuthorDate: Tue Feb 5 06:51:20 2019 +0100 Commit: Brad King CommitDate: Wed Feb 6 11:20:57 2019 -0500 FindCups: add imported target diff --git a/Help/release/dev/FindCups-imported-target.rst b/Help/release/dev/FindCups-imported-target.rst new file mode 100644 index 0000000..0fd9178 --- /dev/null +++ b/Help/release/dev/FindCups-imported-target.rst @@ -0,0 +1,4 @@ +FindCups-imported-target +------------------------ + +* The :module:`FindCups` module now provides imported targets. diff --git a/Modules/FindCups.cmake b/Modules/FindCups.cmake index 10ce229..27105b9 100644 --- a/Modules/FindCups.cmake +++ b/Modules/FindCups.cmake @@ -5,18 +5,38 @@ FindCups -------- -Try to find the Cups printing system +Find the CUPS printing system. -Once done this will define +Set CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE to TRUE if you need a version which +features this function (i.e. at least 1.1.19) -:: +Imported targets +^^^^^^^^^^^^^^^^ - CUPS_FOUND - system has Cups - CUPS_INCLUDE_DIR - the Cups include directory - CUPS_LIBRARIES - Libraries needed to use Cups - CUPS_VERSION_STRING - version of Cups found (since CMake 2.8.8) - Set CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE to TRUE if you need a version which - features this function (i.e. at least 1.1.19) +This module defines :prop_tgt:`IMPORTED` target ``Cups::Cups``, if Cups has +been found. + +Result variables +^^^^^^^^^^^^^^^^ + +This module will set the following variables in your project: + +``CUPS_FOUND`` + true if CUPS headers and libraries were found +``CUPS_INCLUDE_DIRS`` + the directory containing the Cups headers +``CUPS_LIBRARIES`` + the libraries to link against to use CUPS. +``CUPS_VERSION_STRING`` + the version of CUPS found (since CMake 2.8.8) + +Cache variables +^^^^^^^^^^^^^^^ + +The following cache variables may also be set: + +``CUPS_INCLUDE_DIR`` + the directory containing the Cups headers #]=======================================================================] find_path(CUPS_INCLUDE_DIR cups/cups.h ) @@ -66,3 +86,13 @@ else () endif () mark_as_advanced(CUPS_INCLUDE_DIR CUPS_LIBRARIES) + +if (CUPS_FOUND) + set(CUPS_INCLUDE_DIRS "${CUPS_INCLUDE_DIR}") + if (NOT TARGET Cups::Cups) + add_library(Cups::Cups INTERFACE IMPORTED) + set_target_properties(Cups::Cups PROPERTIES + INTERFACE_LINK_LIBRARIES "${CUPS_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${CUPS_INCLUDE_DIR}") + endif () +endif () diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index ed98d97..b5bcdd5 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -1413,6 +1413,10 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release add_subdirectory(FindCURL) endif() + if(CMake_TEST_FindCups) + add_subdirectory(FindCups) + endif() + if(CMake_TEST_FindDoxygen) add_subdirectory(FindDoxygen) endif() diff --git a/Tests/FindCups/CMakeLists.txt b/Tests/FindCups/CMakeLists.txt new file mode 100644 index 0000000..5be1ac1 --- /dev/null +++ b/Tests/FindCups/CMakeLists.txt @@ -0,0 +1,10 @@ +add_test(NAME FindCups.Test COMMAND + ${CMAKE_CTEST_COMMAND} -C $ + --build-and-test + "${CMake_SOURCE_DIR}/Tests/FindCups/Test" + "${CMake_BINARY_DIR}/Tests/FindCups/Test" + ${build_generator_args} + --build-project FindCups + --build-options ${build_options} + --test-command ${CMAKE_CTEST_COMMAND} -V -C $ + ) diff --git a/Tests/FindCups/Test/CMakeLists.txt b/Tests/FindCups/Test/CMakeLists.txt new file mode 100644 index 0000000..9e90553 --- /dev/null +++ b/Tests/FindCups/Test/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 3.10) +project(TestFindCups C) +include(CTest) + +find_package(Cups REQUIRED) + +add_definitions(-DCMAKE_EXPECTED_CUPS_VERSION="${CUPS_VERSION_STRING}") + +add_executable(test_tgt main.c) +target_link_libraries(test_tgt Cups::Cups) +add_test(NAME test_tgt COMMAND test_tgt) + +add_executable(test_var main.c) +target_include_directories(test_var PRIVATE ${CUPS_INCLUDE_DIRS}) +target_link_libraries(test_var PRIVATE ${CUPS_LIBRARIES}) +add_test(NAME test_var COMMAND test_var) diff --git a/Tests/FindCups/Test/main.c b/Tests/FindCups/Test/main.c new file mode 100644 index 0000000..b69d621 --- /dev/null +++ b/Tests/FindCups/Test/main.c @@ -0,0 +1,12 @@ +#include + +int main() +{ + int num_options = 0; + cups_option_t* options = NULL; + + num_options = cupsAddOption(CUPS_COPIES, "1", num_options, &options); + cupsFreeOptions(num_options, options); + + return 0; +} https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=562ea5d0e200a5e005ef33dca45a7d08a5e8fbb7 commit 562ea5d0e200a5e005ef33dca45a7d08a5e8fbb7 Author: Brad King AuthorDate: Wed Feb 6 09:12:24 2019 -0500 Commit: Brad King CommitDate: Wed Feb 6 10:17:02 2019 -0500 Tests: Add a way to configure custom options for FortranModules test Read an undocumented cache entry to allow some CI builds to configure this test in a special way. diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index ed98d97..86ad72c 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -3373,6 +3373,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release --build-options ${build_options} -DCMake_TEST_NESTED_MAKE_PROGRAM:FILEPATH=${CMake_TEST_EXPLICIT_MAKE_PROGRAM} -DCMake_TEST_Fortran_SUBMODULES:BOOL=${CMake_TEST_Fortran_SUBMODULES} + ${CMake_TEST_FortranModules_BUILD_OPTIONS} ) list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/FortranModules") endif() ----------------------------------------------------------------------- Summary of changes: Help/release/dev/FindCups-imported-target.rst | 4 +++ Modules/CMakeDetermineCCompiler.cmake | 3 +- Modules/CMakeDetermineCXXCompiler.cmake | 3 +- Modules/Compiler/GNU-FindBinUtils.cmake | 4 +-- Modules/FindCups.cmake | 48 ++++++++++++++++++++++----- Tests/CMakeLists.txt | 5 +++ Tests/{FindGit => FindCups}/CMakeLists.txt | 8 ++--- Tests/FindCups/Test/CMakeLists.txt | 16 +++++++++ Tests/FindCups/Test/main.c | 12 +++++++ 9 files changed, 86 insertions(+), 17 deletions(-) create mode 100644 Help/release/dev/FindCups-imported-target.rst copy Tests/{FindGit => FindCups}/CMakeLists.txt (55%) create mode 100644 Tests/FindCups/Test/CMakeLists.txt create mode 100644 Tests/FindCups/Test/main.c hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 7 07:03:05 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 7 Feb 2019 07:03:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.13.4-1313-g1e2e128 Message-ID: <20190207120306.11D3812810D@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 1e2e12889b3550713cfcb86a9367c3046a6f56e9 (commit) via 60a8d4c5f4300215acf2bbcb2a12b625d1859124 (commit) via 6383dc398afec89122376e7b53189fd1028a1318 (commit) via d3d9e6b760b3601f5416bef8762a64102e9dd7a2 (commit) via acbd69c219214ed2477e33d1bb0c7754513e03d5 (commit) via f657bcbd488bad36dbf91174f3601cc596bd96cd (commit) via 8af334f5baa1a628895571491f67a4f7d9483d9b (commit) via f835526d8f4f719e7d1d28232b146bc26c17b8c9 (commit) via 822697996e3c3fb92eaa817584d0bf6e0bd76b22 (commit) from bf1c2a2593e28c4e754420df6984f7f0f183e930 (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/CMakeDetermineCompilerId.cmake | 9 ++ Modules/CPackIFW.cmake | 2 +- Modules/CompilerId/Xcode-3.pbxproj.in | 1 + Modules/FindHDF5.cmake | 140 ++++++++++++--------- Source/cmGlobalVisualStudio10Generator.cxx | 2 + Source/cmGlobalXCodeGenerator.cxx | 16 +++ Source/cmIDEFlagTable.h | 3 + Source/cmIDEOptions.cxx | 2 + Source/cmIDEOptions.h | 12 +- Templates/MSBuild/FlagTables/v10_CSharp.json | 10 +- Templates/MSBuild/FlagTables/v11_CSharp.json | 10 +- Templates/MSBuild/FlagTables/v12_CSharp.json | 10 +- Templates/MSBuild/FlagTables/v140_CSharp.json | 10 +- Templates/MSBuild/FlagTables/v141_CSharp.json | 10 +- Tests/RunCMake/VS10Project/RunCMakeTest.cmake | 1 + ...heck.cmake => VsCSharpCompilerOpts-check.cmake} | 20 +-- .../VS10Project/VsCSharpCompilerOpts.cmake | 14 +++ 17 files changed, 186 insertions(+), 86 deletions(-) copy Tests/RunCMake/VS10Project/{VsCSharpDefines-check.cmake => VsCSharpCompilerOpts-check.cmake} (58%) create mode 100644 Tests/RunCMake/VS10Project/VsCSharpCompilerOpts.cmake hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 7 09:23:03 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 7 Feb 2019 09:23:03 -0500 (EST) Subject: [Cmake-commits] CMake annotated tag, v3.14.0-rc1, created. v3.14.0-rc1 Message-ID: <20190207142303.AE111FADA6@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.14.0-rc1 has been created at 2881313b6635fa19e332f8cbf3cac9b7e861b0d2 (tag) tagging 1e2e12889b3550713cfcb86a9367c3046a6f56e9 (commit) replaces v3.13.4 tagged by Brad King on Thu Feb 7 08:39:36 2019 -0500 - Log ----------------------------------------------------------------- CMake 3.14.0-rc1 -----BEGIN PGP SIGNATURE----- iQJKBAABCgA0FiEExsJlMku+vcNQtRPQLSzvEDSSFoQFAlxcNRgWHGJyYWQua2lu Z0BraXR3YXJlLmNvbQAKCRAtLO8QNJIWhG/rEAC1fA5n+aGOnkeW5M/0+XNZhyYs CyxuYY4OF5AupAeBr3jQdmou642b5K2nkUE2Z0Ej/Sewvr4sqf2CFN5KLzDVLsKF dSlFEobi0KTMa7XTKWkOhNHuF3Eeppp3JtgEJmeiCHUw494KwkFSYmO5aK2erFro mSAldmsoyr+Sz7Bpbiu547Ve6CD1x76LPKdRyK9rRBfco0ui2csUp287TnZnLDmN RBbTIeCiUtqx/n8e9XEgxNXin3tThTGKvE+QBnStsMlYiCajHr6iVGqyPTBYx4UJ kb8ZmrL7DtjGKCwsdBLhJ9x70HjJkANOdDXXOgAjCqXkkUuBRlPHQb9hdEH3Bzw6 0lm4FYKHWBj7+CYOdL9AKo3jdYOQF+/ZNuf9lsBJVskAFMKhYdZPMNgRZOiK9DZO MM4KXO5sZztzdh8q7lVQaqgzPPfD8Jp416+O+IM/T9l05/BPWwREEfNF9JDpUaKF XhZ32PM0CXnnbcyuFIeb7IhKy6ESxwx4mTEgErjJHqxcU4igD1+3MT+Uszd1EfAj bOwoRgiY5Q5KXs6dI7qnE65eSrjbM+swrlEYohw+PYgTSyUZPo/CYizKi93MrvE9 gQkKu2ytTGeFYUdknLpeMv+2y+a49+W4JZmAin8dwp36n8kpWLHvT2QZfI1p9MG6 B3a1ILZoi4+SgDPSBA== =KjHd -----END PGP SIGNATURE----- Alexander Grund (5): GetPrerequisites: Don't use hardcoded name for otool BundleUtilites: Don't use hardcoded name for install_name_tool GetPrerequisites: Add GET_PREREQUISITES_VERBOSE to set verbose GetPrerequisites: Allow prefixed tools GetPrerequisites: Fix handling of executable scripts Andrew Paprocki (1): Fortran: Add compiler ID/Version generator expressions Anton Chernov (1): CUDA: Add CUDA 10 (Turing) detection Artur Ryt (12): cmTarget: Remove unused classes cmTargetSet and cmTargetManifest cmMakefile: Fix ConfigureString not passing filename and line cmMakefile: Fix @CMAKE_CURRENT_LIST_LINE@ for ExpandVariablesInStringNew cmMakefile: move common logic to IsProjectFile function cmMakefile: Move uninitialized vars logic into MaybeWarnUninitialized() cmCommandArgumentParserHelper: use cmMakefile::MaybeWarnUninitialized cmake: Enable --warn-uninitialized inside string(CONFIGURE) and configure_file cmDocumentationSection: Remove unused parameter in constructor cmDocumentation: Get rid of raw pointers in AllSections map cmake: Return generator docs directly Help: Mark default CMake generator with asterisk Autogen: Refactor std::bind calls to lambdas Ben Boeckel (32): cmListCommand: check list(FILTER) operation before the list cmListCommand: make list(ACTION not_a_list) succeed when idempotent cmListCommand: handle empty lists for list(REMOVE_AT) Tests: add tests for empty-value keyword arguments in target_* cmTargetPropCommandBase: skip property setting if there's nothing to add cmTargetPropCommandBase: simplify code path cmTargetPropCommandBase: check keywords after parsing FindGDAL: add an imported target Tests/FindGDAL: add a test for FindGDAL FindGDAL: set the GDAL_VERSION FindPostgreSQL: add an imported target Tests/FindPostgreSQL: add a test for FindPostgreSQL cmNinjaNormalTargetGenerator: don't use `|| true` for link-what-you-use FindPostgreSQL: extract the actual version number FindJPEG: handle multiarch installs of libjpeg-turbo FindX11: use lowercase function names FindX11: use `list(APPEND)` for clearer code FindX11: fix some formatting in the documentation FindX11: match variables with library names FindX11: find Xext.h FindX11: remove local variable from the advanced list FindX11: require Freetype and Fontconfig for Xft FindX11: add imported targets Tests/FindX11: add a test FindBoost: test version variables FindBoost: provide the version in x.y.z format Help: fix typo for CTEST_CUSTOM_TESTS_IGNORE Help/find_package: clarify intended behavior with REQUIRED QUIET ExternalProject: support SOURCE_SUBDIR for BUILD_IN_SOURCE Help: prefer commit hashes in commit references Tests: add cases for providing Qt5Core_VERSION manually Merge branch 'autogen-qt-version-from-dirprops-release' into autogen-qt-version-from-dirprops-master Betsy McPhail (4): ctest_submit: Refactor file list to use a vector instead of a set ctest_submit: Add support for a "Done" part Tests: Make ExternalProjectLocal independent of Tutorial directory Tests: Update CMake tutorial Brad King (617): Merge branch 'release-3.13' Begin post-3.13 development Merge topic 'platform-gnu' Merge topic 'doc-cmp0077' Merge topic 'misc-typos' Merge branch 'release-3.13' Merge topic 'pkgc-op-lt-gt' Merge branch 'release-3.13' Merge topic 'doc-osx-vars-as-cache' Merge branch 'release-3.13' Merge topic 'doc-find_package-update' Merge branch 'release-3.13' Merge branch 'UseSWIG-php-regression' into release-3.12 Utilities/Release: Update to openssl-1.1.1 Merge topic 'autogen-moc-predef-cross-compile' Merge topic 'UseSWIG-php-regression' Merge branch 'release-3.12' Merge branch 'release-3.13' Merge topic 'list-SORT-docs' Merge topic 'project-always-set-desc-url' Merge topic 'add_ctest_progress_docs' Merge branch 'release-3.13' Merge topic 'update-prebuilt-openssl' Merge topic 'doc-target_link_libraries-keywords-not-genex' Merge topic 'vs-flag-map-Qspectre' Merge topic 'mkl_ilp64' Merge topic 'doc-regex-backslash' Merge branch 'release-3.13' Merge topic 'string-TIMESTAMP-unset-TZ' Merge branch 'release-3.13' Merge topic 'FindBISON-fix-verbose-file' Merge branch 'release-3.13' Merge branch 'release-3.13' Merge topic 'readme-build-docs' Merge topic 'if-synopsis' Merge topic 'project-version' Merge topic 'update-vim-syntax' Merge branch 'release-3.13' cmLocalGenerator: Remove AddCompileDefinitions method Merge topic 'backport-FindMatlab-missing-install' Merge branch 'backport-FindMatlab-missing-install' into release-3.12 Merge branch 'release-3.12' Merge topic 'ctest-done' Merge topic 'FindwxWidgets-optional' Merge topic 'install-subdirectory-order' Merge topic 'cmake_policy-get_warning' Merge topic 'vs-cuda-pdb' Merge branch 'release-3.13' Merge topic 'remove-AddCompileDefinitions' Merge branch 'backport-revert-install-code-script-genex' into revert-install-code-script-genex Merge topic 'FindBoost-mt-release' Merge topic 'FindPython-updates' Merge topic 'revert-install-code-script-genex' Merge branch 'release-3.13' Merge topic 'find_libinput' Merge topic 'cppcheck-exit-code' Merge topic 'FindPkgConfig-operator-docs' Merge topic 'update_debug_target_properties' Merge branch 'release-3.13' Merge topic 'ctest_done_bug_fix' Merge topic 'document-dollar-in-varnames' Merge branch 'release-3.13' Merge topic 'ctest-coverage-gtm-percent' Merge topic 'FindLibinput-compile-options' Merge topic 'vs-improve' Merge topic 'ctor-remove' Merge topic 'gem-string' Merge topic 'better-empty-list-behavior' Merge topic 'improve-readme' cmListFileCache: Add wrapper template for values with a backtrace cmListFileCache: Add ExpandListWithBacktrace helper Declare support for CMake versions through 3.12 for own build Merge topic 'revert-server-iface-sources' Merge topic 'rel-doc-qthelp' Merge branch 'release-3.13' Merge topic 'update-vim-syntax' Merge branch 'release-3.13' cmLinkItem: Add backtrace add_dependencies: Track backtraces internally Track backtraces in target dependencies internally cmLocalGenerator: Make MoveSystemIncludesToEnd file-local Add generator APIs to get build settings with backtraces install: Record TARGET mode backtraces internally Merge topic 'doc-target_link_libraries-item-quoting' Merge branch 'release-3.13' Merge topic 'FindLibinput-no-version-string-var' Merge topic 'cmake-through-3.12' Merge topic 'find_fontconfig' Merge topic 'target-depend-backtraces' Merge topic 'deployqt4-cmp0080-fix' Merge branch 'release-3.13' Merge topic 'update-kwsys' Merge topic 'ExternalProject-log-options' Merge topic 'backtrace-gen-values' Merge branch 'release-3.13' Merge topic 'curl-ssize_t' Merge topic 'update-curl' Merge topic 'GNUInstallDirs-kfreebsd-man' Merge branch 'release-3.13' Merge topic 'rst-block-comments' Merge branch 'cuda-filter-device-link-items' into release-3.12 Merge topic 'scripting-commands' Merge topic 'vs-csharp-in-custom-target' Merge topic 'vs-csharp-win32-flags' Merge branch 'release-3.13' Merge branch 'tar-warnings' into release-3.12 Merge topic 'fix-no-testing' Merge topic 'tar-warnings' Merge topic 'cuda-thread-flags' Merge branch 'release-3.12' Merge branch 'release-3.13' Merge topic 'cmake-gui-vs-open-space' Merge topic 'FindBoost-1.69' Merge branch 'release-3.13' Merge branch 'upstream-KWSys' into update-kwsys Merge branch 'release-3.13' Merge topic 'project-commands' Merge topic 'deprecation' Merge topic 'more-highlighting' curl: Do not call cmake_minimum_required inside CMake itself Merge topic 'FindMPI-pthread-cuda' Merge branch 'release-3.13' Merge topic 'update-kwsys' Merge topic 'relative-rpath' Merge topic 'xref1' Merge topic 'deprecation2' Tests: Add cases for -{C,D,U} without a source tree Merge topic 'doc-updates' Merge branch 'release-3.13' Merge topic 'EnableIPOBuild' Merge topic 'appdef-stdstring' Merge topic 'minusCparse' Merge topic 'no-smiley' Merge topic 'graphviz-fix-alias' Merge topic 'ExternalProject-log-patch' Merge topic 'target_property-clarification' Merge branch 'set_directory_properties-script-mode' into release-3.12 Merge branch 'backport-cuda-filter-device-link-libs' Merge branch 'backport-cuda-filter-device-link-libs' into release-3.12 CUDA: Find CMAKE_LINKER on Windows MSVC: Factor out enable_language(RC) call into helper macro CUDA: Enable RC language on Windows Merge topic 'FindMatlab-2018a-API' Merge topic 'UseSWIG-multi-input' Merge topic 'UseSWIG-typos' Merge topic 'qccDepfile' Merge topic 'FindBoost-stacktrace' Merge topic 'flang-preprocess-source' Merge topic 'set_directory_properties-script-mode' Merge topic 'cuda_device_linking_drop_dynamic_libs' Merge branch 'release-3.12' Merge branch 'release-3.13' CSharp: Fix regression in VS project type selection for custom target Merge topic 'FindPostgreSQL-11' Merge topic 'FindBoost-debug-lib-prefix' Merge branch 'release-3.13' Merge branch 'backport-fix-custom-target-with-csharp' into release-3.12 Merge branch 'backport-fix-custom-target-with-csharp' Merge topic 'fix-custom-target-with-csharp' Merge topic 'FindProtobuf-threads' Merge branch 'release-3.12' Merge branch 'release-3.13' Merge branch 'server-file-monitor-check' into release-3.12 FindGDAL: Modernize documentation layout FindPostgreSQL: Modernize documentation layout Merge topic 'server-file-monitor-check' Merge branch 'release-3.12' Merge branch 'release-3.13' Merge topic 'FindBoost-exact-version' Merge topic 'check-keywords-only-if-used' Merge topic 'msvc-custom-rc-mt' Merge topic 'FindGDAL-target' CMake 3.12.4 Merge branch 'release-3.12' Merge topic 'custom-command-work-dir-genex' Merge topic 'update-curl' Merge branch 'release-3.13' Merge topic 'lwyu-hides-link-error' Merge branch 'backport-FindBoost-explicit-arch-tag' Merge topic 'blaslapack95' Merge topic 'rename-cpack-ext-generator' Merge topic 'FindBoost-explicit-arch-tag' Merge branch 'release-3.13' Merge topic 'autogen_origin_depends' Merge topic 'FindPostgreSQL-target' Merge topic 'cpack-doc-gen-names' Merge branch 'release-3.13' Merge topic 'xref2' Merge topic 'FindSQLite3-module' Merge topic 'genex' Merge topic 'fix-double-warn-uninitialized-in-script-mode' Merge topic 'string_func_usage' Merge topic 'FindOpenMP-log-errors' Merge branch 'release-3.13' Merge branch 'release-3.13' Merge topic 'find-jpeg-turbo-multiarch-version' Merge topic 'pkgconfig-mark-advanced' Merge topic 'install-defaults' Merge topic 'env' Merge topic 'cpack-improve-unknown-generator-error' Merge topic 'FindBoost-link-threads' Merge branch 'release-3.13' Merge topic 'FindBoost-compiler-guess-update' Merge topic 'asm-compiler-id-clang' Merge branch 'release-3.13' Merge topic 'FindICU-link-dl' Merge topic 'FindODBC-mingw-avoid-hardcoded-odbc32' Merge topic 'autogen_global_target' Merge topic 'CPack-sections' Merge topic 'deprecate-ParseArguments' Merge topic 'CMakePrintHelpers' Merge topic 'CMakeAddFortranSubdirectory' Merge topic 'DocumentationVTK' Merge topic 'CheckPrototypeDefinition' Merge topic 'FindPackageMessage' Merge topic 'BundleUtilities' Merge topic 'if_support_checking_if_cache_var_defined' Merge topic 'colored-ctest-summary' Merge topic 'vs-just-my-code-flag-map' Merge topic 'FindBoost-1.69' Merge branch 'release-3.13' Merge topic 'WriteCompilerDetectionHeader' Merge topic 'DeployQt4' Merge topic 'env2' Merge topic 'SelectLibraryConfigurations' Tests: Split GNUInstallDirs expectations for FreeBSD GNUInstallDirs: Split "info" and "man" default logic Merge topic 'macro' Merge topic 'macro+function-invocation' Merge topic 'deprecate-modules2' Merge topic 'GNUInstallDirs-FreeBSD-info' Tests: Factor out RunCMake.WriteBasicConfigVersionFile test Tests: Simplify RunCMake.WriteBasicConfigVersionFile Tests: Add option for custom RunCMake.XcodeProject timeout Help/dev: Drop 'size_t' preference from source code guide Help: Drop compile features section from cmake-developer(7) manual Help: Fix policy markup example in cmake-developer(7) Help/dev: Factor out a CMake Documentation Guide for developing the docs Merge topic 'WIN32' Merge topic 'macro3' Merge topic 'doc-developer-to-source-guide' Merge topic 'test-XcodeProject-timeout' Merge topic 'autogen_info_write' Merge topic 'deprecate-findqt' Merge topic 'configure_file-canonical-deps' Merge topic 'test-WriteBasicConfigVersionFile' Merge topic 'cpack' Merge topic 'ctest-stdin' Merge topic 'pie-link-options' Merge topic 'findx11-imported-targets' Merge topic 'macro_doc_cleanups' Merge topic 'backport-configure_file-canonical-deps' Merge branch 'release-3.13' Help: Modernize example find module docs in cmake-developer(7) Help/dev: Modernize module example in the CMake Documentation Guide Merge topic 'irsl-ucrt-version' Merge topic 'FindPython-lib-arch' Merge topic 'blas-pkgcfg' Merge topic 'genex-in_list-empty-args' Merge branch 'release-3.13' Merge branch 'release-3.13' C++ feature checks: Filter out libstdc++ sprintf warnings Merge topic 'fortran-submodule-case' Merge branch 'release-3.13' Merge topic 'find-boost-test-version' Help: Add notes for topic 'FindGIF-modernize' Merge topic 'FindGIF-modernize' Merge topic 'clang-tidy' Merge topic 'cxx-checks-tolerate-sprintf-warning' Merge topic 'clang-tidy-bugprone' Merge topic 'windows-taskbar-progress' Tests: Teach run_ctest to handle removal of CTestConfig.cmake Help: Extend the cmake(1) manual Merge topic 'FindBoost-no-cxx' Merge topic 'vs2015-no-sdk' Merge branch 'release-3.13' Merge topic 'blaslapack_mkl_gfortran' Merge topic 'ctest-updates' Merge topic 'FindDoxygen-win-glob' Merge topic 'autogen_target_docs' clang-tidy: fix warnings in macOS-only code Merge topic 'autogen_uic_empty_fix_3_13' Merge branch 'release-3.13' Merge branch 'release-3.13' Merge branch 'upstream-KWSys' into update-kwsys Merge topic 'file-size' Merge topic 'explicit-operator-bool' Merge topic 'clang-tidy-macos' Merge topic 'readability-static-accessed-through-instance' Help: Replace use of :code:`` with plain reST syntax cmSystemTools: Add EncodeURL helper productbuild: escape pkg-ref urls Merge topic 'update-kwsys' Merge topic 'cuda-external' Merge branch 'release-3.13' Merge topic 'support_ewdk_install' Merge topic 'cpack-deb-tar-format' Merge topic 'cmcmd_touch_err' Merge topic 'autogen_uic_empty_fix' Merge topic 'arch-independent-version-file-creation' Merge topic 'try-compile' Merge topic 'autogen-qtversion-detection' Merge topic 'productbuild-encode-pkg-url-ref' Help: Add notes for topic 'FindCURL-components' Merge branch 'backport-autogen_revert_implicit_includes' Merge topic 'FindThreads-asan' Merge topic 'UseEcos-append-flags' Merge topic 'qnx_compiler_detection' Merge topic 'FindHDF5-static-hl' Merge topic 'cmtarget-remove-unused-classes' Merge topic 'FindCURL-components' Merge topic 'misc-typos' Merge topic 'submit-method' Merge topic 'pkg-clang-tidy' Merge topic 'gnu-octave' Merge topic 'vs-json-flag-table' FindThreads: Drop IRIX-specific options and results Merge topic 'autogen_revert_implicit_includes' Merge topic 'cpack-status-callback' Merge branch 'release-3.13' Merge topic 'file-read_symlink' Merge topic 'cuda-arch-turing' Merge topic 'SWIG' Merge topic 'ninja-win-long-commands' Merge topic 'autogen-cleanups' Merge topic 'cuda-arch-turing' Merge branch 'release-3.13' jsoncpp: fix signed overflow when parsing negative value cmStateSnapshot: Add method to get current directory snapshot cmTimestamp: Expose CreateTimestampFromTimeT publicly jsoncpp: Require version 1.4.1 when using system-provided library Tests: Add RunCMake "prep" step Add support for using C++17 string_view or a fallback fileapi: Add protocol v1 infrastructure with support for shared query files fileapi: Add protocol v1 support for client-specific query files fileapi: Add protocol v1 support for stateful per-client queries fileapi: Add helper to create and reference a json reply file fileapi: Report cmake generator in reply index file fileapi: add codemodel v2 String: Add a custom string type String: Add support for concatenation by operator+ String: Add 'borrow' member to construct borrowing instances String: Add support for a ""_s string literal syntax String: Add str_if_stable() as a const alternative to str() Merge branch 'upstream-KWSys' into update-kwsys Merge topic 'output-converter-simplify' Merge topic 'default-test-timeout' Merge topic 'vs_conformance_mode_flags' Merge topic 'FindThreads-drop-irix' Merge topic 'machoFormat' Merge topic 'fix-configure-line-number' Merge topic 'object-library-link' fileapi: add cache v2 fileapi: add cmakeFiles v1 fileapi: extend codemodel v2 with a project model fileapi: extend codemodel v2 with directory details Help: Add release note for fileapi feature Merge branch 'release-3.13' Merge topic 'fileapi' Merge topic 'custom-string' Merge topic 'update-kwsys' Merge topic 'server-mode-install-fix' Merge topic 'UseJava-jar-depends' Merge topic 'vs-csharp-ref-dot' Merge topic 'vs_deploy_content_fix' Merge topic 'doc-get-target-property' Copyright.txt: Update year range to end in 2019 Merge topic 'copyright-year' Help/dev: Document where topic stage branch is held Tests: Pass python interpreter into RunCMake.CTestCommandLine Merge topic 'vs2017-skip-2019' Merge branch 'release-3.13' cmake: Drop unused table entry for selecting default generator VS: Remove unused MSBuild XML parsing script Tests: Add cases for ctest --show-only=json-v1 VS: Convert GetToolsVersion to non-virtual table lookup VS: Convert GetIDEVersion to non-virtual table lookup VS: Move ExpressEdition member to top-level generator VS: Convert WriteSLNHeader to non-virtual lookup table Merge topic 'better_sphinx_colors' Merge topic 'fix-msvc-warnings' Merge topic 'autogen-qt6' Merge topic 'cmake-CDU-option-parsing' Merge branch 'release-3.13' Merge topic 'ctest-show-as-json' Merge topic 'vs-refactor' Help: Document VS generator default platform selection VS: Clarify global generator constructor interface VS: Move platform name members to top-level global generator VS: Track explicitly when platform is specified in generator name Merge topic 'threads' Merge topic 'doc-roff-fix' Merge topic 'sort1' Merge topic 'fix-doc-typo' Merge topic 'bison_target_policy' Merge topic 'xl-early-bE' Merge topic 'cpack-deb-rpm-split' Merge topic 'FindICE-more-exe' Merge topic 'FindBoost-1.70' Merge branch 'backport-autogen_noqt_warning' into autogen_noqt_warning Merge topic 'vs_ce_support' Merge topic 'vs-refactor' VS: Parameterize cmVSSetupAPIHelper instances with VS version VS: Rename VS 2017 generator sources to be version-independent VS: Parameterize VS 2017 generator to support future versions VS: Add Visual Studio 16 2019 generator Remove now-unused code once used on IRIX Add deprecation warnings for policies CMP0065 and below Merge topic 'autogen_noqt_warning' Merge topic 'cmake-option-parsing' Merge branch 'release-3.13' Merge branch 'upstream-KWSys' into update-kwsys Tests: Make RunCMake.FindBoost robust to Boost_ROOT in environment Restore support for a custom source group for CMakeLists.txt Merge branch 'release-3.13' Merge topic 'cpplint-no-output-no-warning' Merge topic 'drop-IRIX' Utilities/Release: Build for Windows 7 and above IWYU: Update CMake code for IWYU built with Clang 6 Merge topic 'iwyu-clang-6' Merge topic 'FindBoost-test-env' Merge topic 'update-kwsys' Merge topic 'deprecate-policy-old' Merge topic 'curl-IPv6' Merge topic 'refactor-cmDocumentation' Merge topic 'check-fortran-run' Merge topic 'vs10_cs_cf_support' Merge topic 'rel-win7' Merge topic 'extendwhitelist' Merge topic 'fix-source-group-CMakeLists.txt' Merge topic 'simplify-boolean-expr' Merge topic 'vs2019' Merge topic 'fetchcontent-uses-terminal' Merge topic 'messenger-no-cmake' Merge topic 'support_per_toolset_json_flags' Merge topic 'autogen_adaptive_warning' Merge topic 'swift' Merge topic 'semi-warnings' Merge topic 'iar-avr' Tests: Fix RunCMake.CTestCommandLine to actually check json-v1 Merge branch 'upstream-libuv' into update-libuv libuv: Include uv/ headers from each other without any path Tests: Rename RunCMake.CTestCommandLine show-only test cases Merge topic 'fix_csharp_defines' Merge topic 'vs-debug-utility-targets' libuv: Update CMake-internal buildsystem Merge topic 'cmake_role-global-property' CTestSVN: Accept std::string in SVNInfo constructor Tests: Fix RunCMake.CTestCommandLine case when no python is found CTest: Teach --show-only=json-v1 to filter out not-available tests CTest: Teach --show-only= to reject unknown values Tests: Fix Qt4And5Automoc tests to work on in-source build Merge topic 'remove-duplicate-link' Merge topic 'GHS_updates' Merge topic 'automoc-test-in-place' VS: Factor out helper function to compute host platform name Split global generator factory list with and without platforms Add global generator factory method to get list of known platforms Add global generator factory method to get default platform name Merge topic 'submit-url' Merge topic 'find-package-resolve-symlinks' Merge topic 'command_file_link' Merge topic 'FindCURL-typo' Merge topic 'ctest-json-polish' Merge topic 'use-emplace' Merge topic 'swift-module-name' Merge topic 'autogen_mocs_compilation_first' Merge topic 'cmake-role-fix' Merge topic 'update-libuv' Merge topic 'fortran-compiler-id' Merge topic 'read-list-file' Merge topic 'ExternalProject-non-cmake-source-subdir' Refactor exclusion of -I/usr/include to avoid per-language values try_compile: Preserve special characters in COMPILE_DEFINITIONS CMakeDetermineCompilerABI: pass verbose flag during compilation Tests: Remove unused files from RunCMake.CommandLine test Merge topic 'cmake-gui-generator-platform' Merge topic 'depends-string' Merge topic 'stdout-string' Merge topic 'Wcomma' Merge topic 'findgit-imported-target' Merge topic 'crosscompiling_emulator-fix' Merge branch 'upstream-KWSys' into update-kwsys Merge topic 'help-mark-default-generator' Merge topic 'implicit-includes' Merge branch 'backport-cmake-warn-no-src-build-dir' Merge topic 'cmake-warn-no-src-build-dir' Merge branch 'release-3.13' Merge topic 'cmake_build_jobs_supports_no_space' Merge topic 'getmodulesfile-string' Merge topic 'update-kwsys' Merge topic 'tidy-pass-by-value' Avoid -Wstring-plus-int warning Silence -Wcomma warning Merge branch 'upstream-KWSys' into update-kwsys Merge topic 'fortran-docs' VS: Add v142 flag tables for cl and link tools VS: Fix `/analyze:log` flag mapping for v142 VS: Add `-Zc:inline[-]` flag table entry for v142 VS: Populate `/Y-` flag table entry for v142 VS: Populate `-Qspectre-` flag table entry for v142 VS: Populate `/JMC-` flag table entry for v142 VS: Populate `/permissive` flag table entry for v142 VS: Fix `/MANIFESTUAC:NO` link flag mapping for v142 VS: Map the link `/debug` flag for v142 VS: Fix support for '/guard:cf' linker flag for v142 VS: Fix `/MANIFESTUAC:` link flag mapping for v142 VS: Update for Visual Studio 2019 Preview 2 cmListCommand: Avoid std::function move constructor on aarch64 Merge topic 'aarch64-no-std-move-function' Merge topic 'revert-file-alt-httpauth' Merge branch 'release-3.13' Merge topic 'unixmfg3-string' Merge topic 'error-overloads' Merge topic 'renamefile-string' Merge topic 'cmake-files-directory' Merge topic 'update-kwsys' Merge topic 'clang-warnings' Merge topic 'FindICU-win64' Merge topic 'swift' Merge topic 'exclude_from_all' Merge topic 'max-recursion-depth' Merge topic 'FindPythonInterp-version-fix' Merge topic 'intel-compile-features' Merge branch 'release-3.13' Merge topic 'png-optimize' Merge topic 'vs2019' Merge topic 'implicit-incs-upd' Help: Add notes for topic 'get_filename_component_last_ext' Merge topic 'get_filename_component_last_ext' Merge topic 'cmake-E-compare_files-eol' Merge topic 'doxygen-escaping' Merge branch 'release-3.13' Merge topic 'cmake-gui-s-b' Merge topic 'commit-ref-in-prose' VS: Use internal abstraction for VCTargetsPath host arch VS: Remove stray semicolons from VS 2019 implementation VS: Add support for explicit 32-bit toolset selection via host=x86 VS: Teach VS 2019 generator to select host tools matching host arch Merge topic 'autogen_reenable_implicit_include_dirs' Merge topic 'add-missing-macos-framework' Merge topic 'vs-host-arch' Find native build tool after selecting a toolset VS: Use MSBuild matching toolset host architecture Merge topic 'update-tutorial' Merge topic 'ftc-string' Merge topic 'message-stdstring' Merge topic 'cmoutputconverter-simplify' Merge topic 'add_consistent_verbose_build_flag' Merge topic 'tidy-use-equals-default' macOS: Restore compatibility for setting FRAMEWORK after install() Merge branch 'backport-restore-install-late-framework' Merge branch 'release-3.13' Merge topic 'UseJava-if-cleanup' Merge topic 'copyfile-stdstring' Merge topic 'functional-callbacks' Merge topic 'vendor-docs' Merge topic 'vs-msbuild-arch' Merge topic 'fetchcontent-reduce-boilerplate' Xcode: Place object library artifacts outside Objects-normal directory Xcode: Fix object library builds with sanitizers enabled Merge branch 'upstream-KWSys' into update-kwsys Configure KWSys to honor CMake_NO_CXX_STANDARD Merge topic 'tidy-use-equals-delete' Ninja: Drop unnecessary deptype customization infrastructure Ninja: Detect when ninja is new enough to support a multi-line depfile Ninja: Use deps=gcc for Intel Compiler on Windows Remove unused 'class cmake' members Find{BLAS,LAPACK}: Drop unnecessary mark_as_advanced calls Merge topic 'unused-members' Merge topic 'readlistfile-stdstring' Merge topic 'restore-install-late-framework' Merge topic 'autogen-qt-version-from-dirprops' Merge branch 'backport-FindLAPACK-typo' Merge topic 'FindLAPACK-typo' Merge topic 'lapack-docs' Merge topic 'msys_docs' Merge topic 'variables1' Merge topic 'update-kwsys' Merge topic 'std-string-callback' Merge topic 'tidy-use-equals-default-fix' Merge topic 'autogen-std-bind-to-lambdas' Merge topic 'xerces-xalan-header-checking' Merge topic 'set-validate-cache-type' Merge topic 'xcode-object-dir' Merge topic 'install-strip-macos' Merge topic 'ninja-intel-depfile' Merge topic 'server-normalize-paths' Merge topic 'document-list' Merge topic 'implicit-incs-cleanup' Merge branch 'release-3.13' Merge branch 'release-3.13' Merge topic 'set-env-warning' Merge topic 'winrtrefs' Merge topic 'vs-wince-deployment' Merge topic 'cmSourceFile_refactor' Tests: Isolate RunCMake.XcodeProject per-device cases from host arch Xcode: Update default Swift language version for Xcode 10.2 VS: Fix Fortran target type selection when linking C++ targets Merge branch 'upstream-KWSys' into update-kwsys Merge topic 'swift-xcode-10.2' Merge topic '17870-iphone-friendly-cmake' Merge topic 'vs-fortran-target-check' Merge topic 'autogen_single_all_sources_iteration' Merge topic 'update-kwsys' Merge topic 'autogen_same_name_different_extension' Merge topic 'relax_CUDA_RESOLVE_DEVICE_SYMBOLS_constraints' Merge topic 'deprecate-xcode-4' Help: Consolidate 3.14 release notes Help: Organize and revise 3.14 release notes Merge topic 'doc-3.14-relnotes' Help: Drop development topic notes to prepare release CMake 3.14.0-rc1 version update Merge branch 'vs-csharp-nowarn-numbers' into release-3.14 Merge branch 'xcode-stdlib-flags' into release-3.14 Merge branch 'FindHDF5-cleanup' into release-3.14 Merge branch 'cpack-ifw-error-wording' into release-3.14 Bruno Manganelli (8): cmOutputConverter: Moved ForceToRelativePath to cmSystem cmOutputConverter: Moved ContainedInDirectory to cmStateDirectory cmAlgorithms: add utility functions to get signed size of containers cmMessenger: Decouple from cmState Source: Fix various compiler warnings in Visual Studio 2017 Factor out enum MessageType into dedicated header cmake: inlined files dir constant and removed it from cmake.h cmOutputConverter: move ConvertToRelativePath to cmStateDirectory. Cameron Cawley (1): FindICU: Add libdl to the link libraries for icu-uc Cengizhan Pasaoglu (1): Using front() and back() instead of calculations Chuck Atkins (2): FindMatlab: Guard against nonexistent installation FindSQLite3: Add module to find SQLite3 Chuck Cranor (7): CMakeDetermineCompilerABI: set locale to C for try_compile() Compute implicit include directories from compiler output ParseImplicitIncludeInfo: handle/add SunPro, XL, and -nostdinc test cases ParseImplicitIncludeInfo: add Fortran implicit include handling ParseImplicitIncludeInfo: add SunPro Fortran and PGI compiler, Cray fix CrayPrgEnv/ParseImplicitIncludes: simplify for new implict include parser ParseImplicitIncludeInfo: keep implicit incl. consistent when rerunning cmake Craig Scott (32): Help: Document Use_wxWindows.cmake as deprecated Merge topic 'module-index-restructure' Merge topic 'help-syntax-highlighting' Merge topic 'cpack-gen-docs-link' Merge branch 'release-3.13' Merge topic 'pie-link-options' Help: Minor grammar and typo corrections for macro command docs Merge topic 'doc-module-doc-syntax' Merge topic 'doc-cmake.1' Merge topic 'contributing-build-instructions-link' Merge topic 'output-on-failure' Merge topic 'runcmake-test-filter' Merge topic 'install-code-script-genex' Merge topic 'link-options' Merge topic 'remove-include-cmakeparsearguments' Merge topic 'gtest-discovery-work-dir' Merge topic 'add-override' Merge topic 'messenger-no-cmstate-v2' Merge topic 'get-ide-version-const' Merge topic 'remove-std-iterator' Merge topic 'bundle_fixes' Merge topic 'nmake-compile-commands' Merge topic 'fix-warn-uninitialized-in-configure' Merge topic 'BundleUtilities-make-dir' Merge branch 'release-3.13' FetchContent: Give access to the terminal for download and update Merge topic 'qt_wrap_command_deprecations' ccmake: Append rather than replace Generators section of docs FetchContent: Trivial doc corrections cmake: Convert no source/build dir error to warning Sphinx: Add limited support for nested variables in docs FetchContent: Add new command FetchContent_MakeAvailable() Cris Luengo (6): FindMatlab: Always find core libraries. FindMatlab: `matlab_add_mex` has new options `R2017b` and `R2018a`. FindMatlab: add change log item. FindMatlab: added unit tests for new functionality. FindMatlab: Fix compilation error in one specific test configuration. FindMatlab: Fix linker command under Windows. Cristian Adam (2): Add option to build CMake itself with IPO/LTO QNX: Compiler and feature detection fixes David Aguilar (2): find_package: optionally resolve symlinks when discovering packages find_package: add test coverage for CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS David Demelier (1): README: Suggest "sudo" for "make install" Ethan Slattery (2): IAR: Parse INFO strings from the binary format of AVR systems IAR: Update compiler modules to support AVR systems Florian Maushart (4): cmake: Add -hideShellScriptEnvironment xcodebuild option ctest: Fix --build-and-test without --build-target on Xcode cmake: cmcmd.cxx fix "The arguments are" comments cmake: Add options for verbose output to --build mode Frank Benkstein (1): configure_file: canonicalize input and output path in dependencies Fred Baksik (19): GHS: Only print bsp and os directives if specified by user GHS: Update test suite GHS: Have the top-level project name follow the specified project name GHS: Update binary structure so that install scripts work GHS: Cleanup how source files are listed GHS: Update the top-level project generation GHS: Place build system outputs per target output directives GHS: Update the link line processing GHS: Cleanup unused file handling functions and file output updates GHS: Use the correct compiler flags for CMAKE_BUILD_TYPE GHS: EXCLUDE_FROM_ALL updates GHS: Add support for object libraries GHS: Add support for some of the source file properties GHS: Integrity Application updates GHS: Append ".gpj" to target name when generating build command GHS: Fix toolset selection GHS: try_compile() now uses GHS platform variables GHS: Add Compiler ID detection GHS: Update test suite Frederik Gladhorn (4): FindLibinput: Add module to find libinput FindLibinput: Use _COMPILE_OPTIONS instead of _DEFINITIONS FindLibinput: do not set Libinput_VERSION_STRING FindFontconfig: Add module to find Fontconfig Gilles Khouzam (2): Tests: Fix VSWinStorePhone test with Windows 10 SDK 17763 VS: Fix WinRT component references Gregor Jasny (5): cmake-server: Normalize build and source directories Apple: Introduce separate system name for iOS, tvOS, and watchOS Xcode: Completely disable code signing for compiler id detection Xcode: deprecate support for Xcode 4 Xcode: Derive stdlib from CXX flags Guillem Jover (1): CPack/Deb: Remove paxr as a supported tar format for a .deb Hannes Franke (1): FindBoost: search default path if Boost_FIND_VERSION_EXACT Harald Brinkmann (1): Fail the build if cppcheck returns a non-zero exit code Harry Mallon (2): Help: Add documentation for MSYS variable install: Fix stripping on macOS Hiroshi Miura (5): FindCURL: support COMPONENTS to check features FindCURL: add test for component FindLibLZMA: add imported target FindCURL: fix component failure when no pkg-config FindPython: Introduce NumPy component Isaiah Norton (1): cmake: add error message when '-E touch' fails Jakub Benda (8): FindBLAS: Consolidate duplicated code related to MKL on Windows FindBLAS: Support combination of gfortran and Intel MKL FindBLAS: Support 32bit Intel MKL 10.3+ FindLAPACK: Prioritize Intel MKL FindLAPACK: Remove MKL components already provided by MKL BLAS FindLAPACK: Unify internal variables related to MKL FindLAPACK: Additional libraries for MKL+gfortran combination FindBLAS: Do not look for BLAS once BLAS95 has been found JerryShih (1): FindThreads: Replace the pthread symbol checking in libc. Joachim Wuttke (h) (27): Help: expand "..." and "?" in logical generator expressions Help: expand "ver", "pol", ... Help: rm unmotivated "This means that" Help: new section on conditional generator expressions Help: Cross-link conditional and boolean expressions. Help: 3 subtypes of boolean generator expressions. Help: Revise documentation of string-valued generator expressions Help: Add note on omitted <..> notation in cmake-generator-expressions(7) Help: Add deprecation date of $ Help: sort conditional expressions below string-valued ones. Help: Expand placeholders in string comparisons. Help: Terminate explanations with a dot. Help: Code example for case-insensitive comparison Help: Explain conversion rules of $. Help: add section on debugging generator expressions. Help: Link to cmake.org "Get Involved" page from cmake-developer(7) Help: Clarify effect of set(ENV{..} ..) and unset(ENV{..}) Help: Remove over-precise clause. Help: New section on Environment Variables in cmake-language.7 Help: Provide backreferences. Help: Document if(DEFINED ENV{name}) Help: better summary and xrefs for CMakeAddFortranSubdirectory Help: move CMakeParseArguments to deprecated section Help: correct macro -> function in CMakePrintHelpers Help: Insert section headers in CPack module Help: Insert link from CONTRIBUTING to build instructions Help: Revise compile options command docs, and provide example Joachim Wuttke (l) (24): Help: Add link to cmake-qt(7) to FindQt.cmake. Help: Make synopsis of if command more compact; add section headers Help: make the two signatures of command "project" orthogonal Help: Describe options of command project in a definition list. Help: Reorganise module index into sections Help: Use appropriate list types in FindPkgConfig Help: Revise docs of modules AddFileDependencies..CheckFunctionExists Help: Revise docs on Scripting Commands Help: short/long variable reference in if command Help: Describe $CACHE and $ENV as operators Help: remove reference to inexistent file DocumentationVTK.cmake. Help: Correct macro -> function in FindPackageMessage. Help: Remove duplication of function name. Help: Describe environment variables as such. Help: Revise documentation of SelectLibraryConfigurations Help: Mention endmacro argument as legacy only. Help: Move deprecated modules to appropriate section. Help: Document that macro invocation is case-insensitive Help: Document that function invocation is case-insensitive Help: in macro vs function example, use lowercase names. Help: describe differences between macro and function. Help: Explain interaction of cpack(1) and CPack. Help: Emphasize tool names in their manuals Help: Improve cmake(1) manual organization Joachim Wuttke (o) (26): README: Fix typo (rm space). Help: move description of CMAKE_PROJECT_* variables README: Explain how to build CMake with the docs Help: Override pygments CMakeLexer to support <..> and [..] Help: Add version number to deprecation note Help: Use 'deprecated' template, and date deprecation of modules Help: Date deprecation of deprecated commands. Help: Apply syntax highlighting to project commands Help: Apply syntax highlighting to cmake-generator-expressions.7 Help: Syntax highlighting for long strings in cmake-language.7 Help: Spell out ";-list" as "semicolon-separated list" Help: Back-reference from find_package() to "Find Modules" Use_wxWindows: Correct version of deprecation Help: Say early on that generator expressions can be nested. Help: correct macro -> function in CheckPrototypeDefinition Help: Downcase functions in BundleUtilities Help: Downcase function names in DeployQt4 doc. Help: Add links to variables Help: Spell out MFC Help: FindThreads not needed with modern C++. Help: correct alphabetical sorting of lines Help: Provide cross-references from and to set_property Help: declare CMAKE_HOME_DIRECTORY obsolete Help: "internal variables" instead of "obsolete", with some explanatory prose Help: moved 7 variables to "internal" section CPack/IFW: Correct wording in error message Johannes Reiff (1): FindICU: Find 64-bit Windows builds under CMP0074 NEW behavior Jon Chronopoulos (1): install: Teach CODE,SCRIPT modes to evaluate generator expressions Jon Doron (1): cmVSSetupHelper: Support Enterprise WDK build enviornment Jonathan Storey (1): VS: Add flag table entry for "permissive" flag to disable conformance mode Joseph Snyder (1): CTest: Fix GTM coverage handling of entry point named "%" Julien Jomier (3): QtDialog: Add windows taskbar progress cmake-gui: Add field for generator platform selection cmake-gui: Improve label for default platform Justin Bassett (1): CMakePackageConfigHelpers: Add ARCH_INDEPENDENT option Justin Goshi (2): TestGenerator: Record support file and line where test was added CTest: Add --show-only[=format] option to print test info KWSys Upstream (8): KWSys 2018-10-25 (9e27254b) KWSys 2018-11-28 (5ea12a52) KWSys 2018-12-12 (abb8c680) KWSys 2019-01-14 (1541d849) KWSys 2019-01-22 (4fecfe6f) KWSys 2019-01-24 (b9dd1636) KWSys 2019-01-30 (ce89cada) KWSys 2019-02-05 (65802a20) Kitware Robot (127): 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 Help: Convert remaining modules to block-style comments 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 (48): Testing: Update hard-coded line numbers to [0-9]+ in some tests add_subdirectory: Run subdirectory install rules in correct order Testing: Add test for CMP0082 Help: Convert FindOpenGL documentation to block comment cmake_policy: Add undocumented GET_WARNING command Merge branch 'master' into deployqt4-cmp0080-fix Utilities/Scripts: Add temporary block-style comment conversion script Utilities/Scripts: Remove temporary block-style comment conversion script Help: Clarify usage of TARGET_PROPERTY generator expression install: Add sane set of defaults for DESTINATION and file type parameters Help: Add documentation and release notes for install find_package(): Add policy to remove the FindQt module Genex: Add policy to handle empty list items in $ file: Add READ_SYMLINK sub-command file: Fix formatting of error in SIZE sub-command target_link_libraries: Propagate dependencies of object libraries fileapi: Add more infrastructure to FileAPI test fileapi: Add test for codemodel v2 fileapi: Add test for cache v2 Server mode: Fix regression of hasInstallRule fileapi: Add test for cmakeFiles v1 Tests: Add RunCMake_TEST_FILTER environment variable CMakeParseArguments: Remove superfluous includes of CMakeParseArguments Merge topic 'member-init' Tests: Fix Cygwin failure on RunCMake.install Merge topic 'doc-stage' Merge topic 'cygwin-install-test-fix' Merge topic 'compile_options' Merge topic 'modernize-for' Tests: Add infrastructure to split up large CPack tests Tests: Split CPack DEB and RPM tests into smaller tests libuv: fix clang scan-build warning liblzma: fix undefined shift result cmGlobalUnixMakefileGenerator3: Fix memory leak warning Merge topic 'xref3' Source/LexerParser: Suppress "Use of zero-allocated memory" warning Merge topic 'find_package-doc-clarification' Merge topic 'clang-scan-build-warnings' Properties: Add CMAKE_ROLE global property Help: Remove duplicate reference to IMPORTED_LINK_DEPENDENT_LIBRARIES_ CMAKE_ROLE: Fix value for ctest --build-and-test CROSSCOMPILING_EMULATOR: Fix test generation for empty value FindGit: Add imported target cmMakefile: Impose maximum recursion limit FindPython: Test existence of imported targets Help: Add note about CMAKE_ROLE to FindGit documentation FindPython: Support script mode QtDialog: Clean up and document -S and -B options Lucy Phipps (2): CPack: Replace corrupted background png with original Reduce size of PNG images Maikel van den Hurk (1): Add Mach-O CMAKE_EXECUTABLE_FORMAT detection Marc Chevrier (19): INTERFACE_POSITION_INDEPENDENT_CODE: add generator expressions support POSITION_INDEPENDENT_CODE: Fix erroneous '-fPIE' flag for Sun Studio POSITION_INDEPENDENT_CODE: Manage link flags for executables CMP0083: fix warning message on try_compile try_compile/try_run: Add support for LINK_OPTIONS option. Check* functions family: add support for LINK_OPTIONS Help: update policy 0078 documentation UseSWIG: add management of SWIG option -module UseJava: add_jar: rebuild jar on dependencies changes PIE link options: Update strategy to fix performance regression Merge branch 'topic-findliblzma' into 'master' Help: FindLibLZMA: update formatting. Merge branch 'doc-updates' into 'master' Merge branch 'swig_src_file_ext' into 'master' FindPythonInterp: Do not assume any version if test script fails Merge topic 'findpython-script' Merge topic 'findgit-note' Merge topic 'FindPython-numpy' UseJava: clean-up if() expressions Mark O'Neill (3): cmLocalNinjaGenerator: Propagate failures from batch file back to ninja cmLocalNinjaGenerator: Report line of failure in ninja generated batch file cmLocalNinjaGenerator: Prevent echoing of lines in ninja generated batch files Mateusz Zych (2): cmLocalNinjaGenerator: Simplify CreateRulePlaceholderExpander MSVC: Respect CMAKE_RC_COMPILER and CMAKE_MT in vs_link_{dll,exe} Mateusz ?oskot (3): FindBoost: Output Boost_LIB_PREFIX if Boost_DEBUG=ON requested FindODBC: Do not assume odbc32.lib for MinGW FindBoost: Add support for Boost 1.70 Maximilian Heinzler (2): FindGIF: Modernize FindGIF: Add test Michael Hirsch, Ph.D (9): FindOctave: Add module to find GNU octave CheckFortranSourceRuns: Add module to check if Fortran code runs Help: Add examples to CheckFortranSource{Runs,Compiles} DOCS: put Flang in alphabetical order FindLAPACK: Remove extra indentation from a line Find{BLAS,LAPACK}: Update docs to use modern conventions Find{BLAS,LAPACK}: Add note and example for using Intel MKL FindHDF5: Use execute_process instead of exec_program FindHDF5: Modernize formatting of variable documentation Mouginot B (1): FindHDF5: Fix search for static hdf5_hl on Windows Nehal J Wani (1): Specify WORKING_DIRECTORY to execute_process() in GoogleTestAddTests Nick Schultz (1): graphviz: dereference ALIAS targets Nils Gladitz (1): VS: Add support for VS_DEBUGGER_* properties on custom targets Noel Eck (1): FindDoxygen: Avoid Windows-specific GLOB on other platforms Paul Seyfert (1): cmake: distinguish '-Cpath' from '-C path' in source dir parsing Peter Wu (3): RPATH: Add option for using $ORIGIN in build tree RPATH: Record support for $ORIGIN on Haiku and Solaris RPATH: Record support for $ORIGIN on various *BSD R2RT (2): cmMakefile: Rename SuppressWatches to SuppressSideEffects CMP0053: Fix double warning on uninitialized variables in -P mode Raf Czlonka (1): Help: Prevent .so from being treated as a roff macro Rechi Rechi (1): curl: do not disable IPv6 support Regina Pfeifer (37): Mark operator bool explicit clang-tidy: fix warnings from version 7 CTest: Don't require 'submit.php?' in submit location CDashUpload: Use the query part of the submit url as field ctest_build: Do not require unnecessary [CTEST_]PROJECT_NAME value Remove warning when no CTestConfig.cmake file exists Remove unnecessary CTEST_PROJECT_NAME variables clang-tidy: Enable checks from bugprone set clang-tidy: Fix readability-static-accessed-through-instance CTest: Remove submit method 'xmlrpc' CTest: Remove submit method 'cp' CTest: Remove submit method 'scp' CTest: Remove submit method 'ftp' CTest: Remove submission trigger CTest: Add release note about removed submission methods CTest: Remove special case for Dart version <= 1 cmCPackFreeBSDGenerator: fix clang-tidy issues Help: clarify documentation of ctest --timeout cmUVHandlePtr: Use inherited constructors clang-tidy: Remove redundant member initializations clang-tidy: Use default member initialization clang-tidy: Simplify boolean expressions ctest_submit: Remove submit method from log output CTest: Add function GetSubmitURL CTest: Add option SubmitURL ctest_submit: Add parameter SUBMIT_URL Modules/CTest: Set SubmitURL CTest: Add documentation and release notes for SubmitURL clang-tidy: Use emplace clang-tidy: Pass by value clang-tidy: Use `= default` cleanup: Prefer compiler provided special member functions Use `std::function` for callbacks MessageCallback: Remove unused bool& argument clang-tidy: Use `= delete` clang-tidy: Silence use-equals-default warning OutputCallback: Accept std::string argument Rob Boehne (1): XL: Move '-bE' flag earlier so it can be overridden Robert Maynard (10): CUDA: Filter out non-static libraries during device linking cpack: Better error message when generator doesn't exist. cpack: When given an unknown generator print out all valid generators If: Support the 'DEFINED CACHE{}' syntax Help: CMakeTemplateStyle uses colors that better contrast. FindBISON: Add policy CMP0088 to run bison in build tree cmake: --build supports '-jN' cmGlobalGenerator: Add a class that represent the build command cmake: Add tests for verbose output to --build mode CUDA: Honor CUDA_RESOLVE_DEVICE_SYMBOLS for more target types Roger Leigh (1): FindXercesC, FindXalanC: Don't examine non-existent version headers Saleem Abdulrasool (4): Ninja: add new placeholder `SWIFT_AUXILIARY_SOURCES` Ninja: support `SWIFT_MODULE_NAME` property Ninja: support `SWIFT_MODULE_NAME` property Help: improve details on `CMAKE_LANG_CREATE_SHARED_*` Sean McBride (2): Fixed all but one clang -Wcomma warning Fix most clang -Wextra-semi-stmt warnings in C++ files Sebastian Holtermann (39): Autogen: Add (CMAKE_)AUTOGEN_ORIGIN_DEPENDS support Autogen: Add (CMAKE_)AUTOGEN_ORIGIN_DEPENDS documentation Autogen: Add (CMAKE_)AUTOGEN_ORIGIN_DEPENDS release notes Autogen: Add test for AUTOGEN_ORIGIN_DEPENDS=OFF Autogen: Rename MocDepends test to AutogenOriginDependsOn Autogen: Separate AUTOGEN_TARGET_DEPENDS tests into own tests suite Autogen: Update _autogen target documentation Autogen: Add cmQtAutoGenGlobalInitializer class Autogen: Add support for global ``autogen`` and ``autorcc`` targets Autogen: Add test for CMAKE_GLOBAL_AUTOGEN/RCC_TARGET Autogen: Add documentation for CMAKE_GLOBAL_AUTOGEN/RCC_TARGET Autogen: Add release notes for CMAKE_GLOBAL_AUTOGEN/RCC_TARGET Autogen: Add and use cmQtAutoGenInitializer::InfoWriter class Autogen: Add a definitions test to the MocOnly test Autogen: Sort tests Autogen: Documentation updates Autogen: Tests: Differentiate between Qt core and Qt gui tests Autogen: Add QtAutogen.UicNoGui test Autogen: Don't add a WIN32 moc definition if we have a moc_predefs.h file Autogen: Revert passing compiler implicit includes to moc Autogen: Issue a warning when AUTOMOC/UIC/RCC gets disabled. Autogen: Fix rcc validity check Autogen: Add and use QtAutoGen::Tools method Autogen: Adaptive missing Qt warning cmTarget,cmGeneratorTarget: Add optional `before` parameter to AddSource Autogen: Prepend instead of append `mocs_compilation.cpp` to the sources list cmLocalGenerator: Simplify `GetIncludeDirectories` cmLocalGenerator: Refactor `GetIncludeDirectoriesImplicit` method Autogen: Reenable passing compiler implicit include directories to moc Autogen: Read the Qt version from directory properties as well cmSourceFile: Additional static property strings cmSourceFile: Add IsGenerated method Use cmSourceFile::GetIsGenerated cmSourceFile: Refactor FindFullPath method cmSourceFile: Check if a file is GENERATED first in the full path computation cmSystemTools: Let `GetFileFormat` accept a `std::stding const&` Autogen: Iterate over makefile sources only once Autogen: Extend the SameName test with same name but different extension files Autogen: AUTOMOC support for files with the same name but different extensions Sebastian Lipponer (1): cmTargetPropertyComputer: whitelist 'MANUALLY_ADDED_DEPENDENCIES'. Stephan Szabo (33): Update XML->JSON generation script Convert cmIDEFlagTable to use owned strings Add CL, LIB, Link, MASM, RC flag json Add initial NASM flag table json Add json flag tables for C# Add placeholder CUDA json flag tables VS: Place CUDA host compiler options in proper project file fields VS: Select the CUDA runtime library VS: Select CUDA code generation architectures VS: Add more CUDA flag table entries VS: Add CUDA flag table entry for -maxrregcount VS: Manually fix generated NASM flag table VS: Add NASM fwin/felf switches VS: Manually fix MASM flag table entries VS: Fix /MANIFESTUAC:NO linker option mapping VS: Map the link `/debug` to its IDE property VS: Add v140 and v141 flag table entries for /DEBUG:NONE and /DEBUG:FULL VS: Fix support for '/guard:cf' linker flag VS: Fix MANIFESTUAC link flag map to .vcxproj elements MSVC: Add support for ARM64 architecture Vs: remove /nowin32manifest from C# flags to enable default VS behavior VS: Fix CSharp support for win32res: and win32icon: flags VS: Fix /analyze:log flag mapping (#14858) VS: in Clang/C2 toolset, setup correct compiler settings VS 14: Add flag map for -std= to CppLanguageStandard tag in project files VS: Fix regressed mapping for the cl `/Os` compiler flag VS: Add v140 flag table entries for `-Zc:inline[-]` VS: connect /Y- compiler option with "Not Using Precompiled Headers" VS: Fix flag table entry for -Qspectre VS: Add flag table entry for -JMC Replace header flag tables with json reading Remove old flag table headers GlobalVisualStudio10Generator: Support non-standard toolset json flag files. Sylvain Joubert (2): PkgConfig: Be less verbose by mark(ing)_as_advanced the find_library result CTest: Add colored output on tests summary where supported Taylor Braun-Jones (1): cmake: Add --ignore-eol option to `-E compare_files` command Taylor Holberton (2): set: warn if CACHE type is not recognized set: warn of extra arguments after ENV value. Tengiz Sharafiev (1): VS: Add flag table entry for -JMC Thirumal Venkat (1): SWIG: Add support for custom Swig source file extensions Tobias C. Berner (1): GNUInstallDirs: Update FreeBSD "info" destination to share/info Tobias Hunger (6): Autogen: Qt version detection cleanup cmQtAutoGenInitializer: Reduce code duplication Documentation: Reference list of target properties in get_target_property Autogen: Prepare for Qt 6 Autogen: Add AUTO(MOC|RCC|UIC)_EXECUTABLE target properties qt_wrap_*: Add deprecation notes to command docs Tomasz S?odkowicz (2): FindwxWidgets: honor OPTIONAL_COMPONENTS FindwxWidgets: implement detailed components status on Windows Tushar Maheshwari (10): cmFileCommand: Add CREATE_LINK subcommand Help: Add documentation for file(CREATE_LINK) subcommand Tests: file CREATE_LINK subcommand test cases Tests: CREATE_LINK subcommand negative test case Tests: Skip symlink tests on Windows Tests: Avoid cross-device links in CREATE_LINK test cmSystemTools: Silence CreateLink and CreateSymlink errors cmGetFilenameComponentCommand: Add more components Help: Add documentation for new get_filename_component components Tests: Add tests for LAST_EXT and NAME_WLE Vitaly Stakhovsky (19): cmVisualStudio10TargetGenerator: Code improvement cmCustomCommand: remove the default constructor cmGeneratorTarget::GetExportMacro: return const std::string* cmLocalGenerator::AppendDefines: Remove const char* overloads Add missing override Source: Modernize for loops, add const modifiers cmLinkedTree: Remove deprecated std::iterator cmGlobalVisualStudioGenerator::GetIDEVersion(): const added cmMakefile::ReadListFile() accepts std::string argument cmDepends: all members accept std::string arguments cmSystemTools: Stdout(),Stderr() accept std::string argument cmMakefile: GetModulesFile() accepts std::string param cmLocalUnixMakefileGenerator3: more methods accept std::string cmSystemTools::RenameFile: Accepts std::string args cmSystemTools::Error(): new overload accepting std::string cmFileTimeComparison: use std::string arguments cmSystemTools::Message: Add overload accepting std::string cmSystemTools: copy file member functions accept std::string params ReadListFile: Accept std::string argument Wil Stark (8): VS: Fix Deploy content in .csproj files VisualStudio10TargetGenerator: support C# refs with '.' in file name. Tests: Detect VS and SDK availability early VS: Honor WinCE deployment properties in VS 2010+ cmVisualStudio10TargetGenerator: Fix .NET Compact Framework projects. VS: Honor target_compile_definitions for C# projects VS: Fix deployment for WinCE projects VS: Fix nowarn compiler option to accept warning numbers. Wouter Klouwen (5): ExternalProject: add LOG_DIR option that allows overriding of log location ExternalProject: option LOG_MERGED_STDOUTERR to combine stdout and stderr ExternalProject: add LOG_PATCH option to log the patch command file: add SIZE option ExternalProject: add LOG_OUTPUT_ON_FAILURE option Yan Pashkovsky (2): cmGlobalGenerator: Teach EscapeJSON to escape newlines and tabs CMake: fix nmake compile_commands generation Zack Galbreath (3): ctest_submit: Generate Done.xml at submit time Pass EXCLUDE_FROM_ALL from directory to targets Tests: Update style of c++ code snippets in Tutorial directions antmak (1): UseEcos: Append C and CXX flags instead of overwriting them jasjuang (1): cpplint: only print diagnostics to console if there are errors jspam (1): FindIce: Find slice2confluence and slice2matlab executables libuv upstream (1): libuv 2019-01-15 (f84c5e69) luz.paz (1): Misc. comment typos ----------------------------------------------------------------------- hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 7 09:43:02 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 7 Feb 2019 09:43:02 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-18-gaeed642 Message-ID: <20190207144302.D2143111D88@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 aeed642936c90dfbca9e28b2d5f662933ec1df56 (commit) via 0732cfd7a7985a3840a8e675f5c3f379b3158235 (commit) via 12b8e41c07c2cad4f4e44f40f78d8ae61a18568e (commit) via 0f87bd1bd843b82d00da071d5d8dd3121da5d1bd (commit) from 0741eda2468e482baf1b5ff6a3a8d376143171e4 (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=aeed642936c90dfbca9e28b2d5f662933ec1df56 commit aeed642936c90dfbca9e28b2d5f662933ec1df56 Merge: 0732cfd 12b8e41 Author: Brad King AuthorDate: Thu Feb 7 09:38:51 2019 -0500 Commit: Brad King CommitDate: Thu Feb 7 09:38:51 2019 -0500 Merge branch 'release-3.14' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0732cfd7a7985a3840a8e675f5c3f379b3158235 commit 0732cfd7a7985a3840a8e675f5c3f379b3158235 Merge: 0741eda 0f87bd1 Author: Brad King AuthorDate: Thu Feb 7 14:38:20 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 7 09:38:25 2019 -0500 Merge topic 'doc-object-library-link' 0f87bd1bd8 Help: Clarify 3.14 release note about object library dependencies Acked-by: Kitware Robot Merge-request: !2933 ----------------------------------------------------------------------- Summary of changes: Help/release/3.14.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 7 09:43:02 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 7 Feb 2019 09:43:02 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.14.0-rc1-2-g12b8e41 Message-ID: <20190207144302.E56D6111EDF@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 12b8e41c07c2cad4f4e44f40f78d8ae61a18568e (commit) via 0f87bd1bd843b82d00da071d5d8dd3121da5d1bd (commit) from 1e2e12889b3550713cfcb86a9367c3046a6f56e9 (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/release/3.14.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 7 13:33:05 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 7 Feb 2019 13:33:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-20-g41802ef Message-ID: <20190207183305.09ED21035DA@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 41802ef35d58ef9d8761388abeee202503f11642 (commit) via f3534386b504430aec926e46a413b044ff64d769 (commit) from aeed642936c90dfbca9e28b2d5f662933ec1df56 (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=41802ef35d58ef9d8761388abeee202503f11642 commit 41802ef35d58ef9d8761388abeee202503f11642 Merge: aeed642 f353438 Author: Brad King AuthorDate: Thu Feb 7 18:30:22 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 7 13:30:31 2019 -0500 Merge topic 'prefer-front-back-over-begin-rbegin' f3534386b5 Prefer front/back/data over dereferencing begin/rbegin iter Acked-by: Kitware Robot Acked-by: Daniel Pfeifer Merge-request: !2914 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f3534386b504430aec926e46a413b044ff64d769 commit f3534386b504430aec926e46a413b044ff64d769 Author: Artur Ryt AuthorDate: Mon Feb 4 22:56:42 2019 +0100 Commit: Brad King CommitDate: Wed Feb 6 10:43:16 2019 -0500 Prefer front/back/data over dereferencing begin/rbegin iter Changed for sequenced containers: vector, list, string and array diff --git a/Source/CPack/OSXScriptLauncher.cxx b/Source/CPack/OSXScriptLauncher.cxx index 4966d09..00d272c 100644 --- a/Source/CPack/OSXScriptLauncher.cxx +++ b/Source/CPack/OSXScriptLauncher.cxx @@ -73,7 +73,7 @@ int main(int argc, char* argv[]) args.push_back(nullptr); cmsysProcess* cp = cmsysProcess_New(); - cmsysProcess_SetCommand(cp, &*args.begin()); + cmsysProcess_SetCommand(cp, args.data()); cmsysProcess_SetWorkingDirectory(cp, scriptDirectory.c_str()); cmsysProcess_SetOption(cp, cmsysProcess_Option_HideWindow, 1); cmsysProcess_SetTimeout(cp, 0); diff --git a/Source/CTest/cmCTestBuildHandler.cxx b/Source/CTest/cmCTestBuildHandler.cxx index d934c00..af664ba 100644 --- a/Source/CTest/cmCTestBuildHandler.cxx +++ b/Source/CTest/cmCTestBuildHandler.cxx @@ -800,7 +800,7 @@ int cmCTestBuildHandler::RunMakeCommand(const char* command, int* retVal, // Now create process object cmsysProcess* cp = cmsysProcess_New(); - cmsysProcess_SetCommand(cp, &*argv.begin()); + cmsysProcess_SetCommand(cp, argv.data()); cmsysProcess_SetWorkingDirectory(cp, dir); cmsysProcess_SetOption(cp, cmsysProcess_Option_HideWindow, 1); cmsysProcess_SetTimeout(cp, timeout); @@ -978,7 +978,7 @@ void cmCTestBuildHandler::ProcessBuffer(const char* data, size_t length, this->CurrentProcessingLine.insert(this->CurrentProcessingLine.end(), queue->begin(), it); this->CurrentProcessingLine.push_back(0); - const char* line = &*this->CurrentProcessingLine.begin(); + const char* line = this->CurrentProcessingLine.data(); // Process the line int lineType = this->ProcessSingleLine(line); diff --git a/Source/CTest/cmCTestCoverageHandler.cxx b/Source/CTest/cmCTestCoverageHandler.cxx index 225383c..3b93422 100644 --- a/Source/CTest/cmCTestCoverageHandler.cxx +++ b/Source/CTest/cmCTestCoverageHandler.cxx @@ -72,7 +72,7 @@ public: args.push_back(cl.c_str()); } args.push_back(nullptr); // null terminate - cmsysProcess_SetCommand(this->Process, &*args.begin()); + cmsysProcess_SetCommand(this->Process, args.data()); if (!this->WorkingDirectory.empty()) { cmsysProcess_SetWorkingDirectory(this->Process, this->WorkingDirectory.c_str()); diff --git a/Source/CTest/cmCTestScriptHandler.cxx b/Source/CTest/cmCTestScriptHandler.cxx index 33b8b4a..6b57c43 100644 --- a/Source/CTest/cmCTestScriptHandler.cxx +++ b/Source/CTest/cmCTestScriptHandler.cxx @@ -199,7 +199,7 @@ int cmCTestScriptHandler::ExecuteScript(const std::string& total_script_arg) // Now create process object cmsysProcess* cp = cmsysProcess_New(); - cmsysProcess_SetCommand(cp, &*argv.begin()); + cmsysProcess_SetCommand(cp, argv.data()); // cmsysProcess_SetWorkingDirectory(cp, dir); cmsysProcess_SetOption(cp, cmsysProcess_Option_HideWindow, 1); // cmsysProcess_SetTimeout(cp, timeout); diff --git a/Source/CTest/cmCTestSubmitHandler.cxx b/Source/CTest/cmCTestSubmitHandler.cxx index 87112da..1539635 100644 --- a/Source/CTest/cmCTestSubmitHandler.cxx +++ b/Source/CTest/cmCTestSubmitHandler.cxx @@ -343,7 +343,7 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP( if (!chunk.empty()) { cmCTestOptionalLog(this->CTest, DEBUG, "CURL output: [" - << cmCTestLogWrite(&*chunk.begin(), chunk.size()) + << cmCTestLogWrite(chunk.data(), chunk.size()) << "]" << std::endl, this->Quiet); this->ParseResponse(chunk); @@ -352,7 +352,7 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP( cmCTestOptionalLog( this->CTest, DEBUG, "CURL debug output: [" - << cmCTestLogWrite(&*chunkDebug.begin(), chunkDebug.size()) << "]" + << cmCTestLogWrite(chunkDebug.data(), chunkDebug.size()) << "]" << std::endl, this->Quiet); } @@ -404,12 +404,11 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP( res = ::curl_easy_perform(curl); if (!chunk.empty()) { - cmCTestOptionalLog( - this->CTest, DEBUG, - "CURL output: [" - << cmCTestLogWrite(&*chunk.begin(), chunk.size()) << "]" - << std::endl, - this->Quiet); + cmCTestOptionalLog(this->CTest, DEBUG, + "CURL output: [" + << cmCTestLogWrite(chunk.data(), chunk.size()) + << "]" << std::endl, + this->Quiet); this->ParseResponse(chunk); } @@ -433,11 +432,11 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP( // avoid deref of begin for zero size array if (!chunk.empty()) { *this->LogFile << " Curl output was: " - << cmCTestLogWrite(&*chunk.begin(), chunk.size()) + << cmCTestLogWrite(chunk.data(), chunk.size()) << std::endl; cmCTestLog(this->CTest, ERROR_MESSAGE, "CURL output: [" - << cmCTestLogWrite(&*chunk.begin(), chunk.size()) << "]" + << cmCTestLogWrite(chunk.data(), chunk.size()) << "]" << std::endl); } ::curl_easy_cleanup(curl); @@ -486,7 +485,7 @@ void cmCTestSubmitHandler::ParseResponse( if (this->HasWarnings || this->HasErrors) { cmCTestLog(this->CTest, HANDLER_OUTPUT, " Server Response:\n" - << cmCTestLogWrite(&*chunk.begin(), chunk.size()) << "\n"); + << cmCTestLogWrite(chunk.data(), chunk.size()) << "\n"); } } diff --git a/Source/CTest/cmProcess.cxx b/Source/CTest/cmProcess.cxx index 70ef8df..c03d004 100644 --- a/Source/CTest/cmProcess.cxx +++ b/Source/CTest/cmProcess.cxx @@ -199,7 +199,7 @@ bool cmProcess::Buffer::GetLine(std::string& line) for (size_type sz = this->size(); this->Last != sz; ++this->Last) { if ((*this)[this->Last] == '\n' || (*this)[this->Last] == '\0') { // Extract the range first..last as a line. - const char* text = &*this->begin() + this->First; + const char* text = this->data() + this->First; size_type length = this->Last - this->First; while (length && text[length - 1] == '\r') { length--; @@ -229,7 +229,7 @@ bool cmProcess::Buffer::GetLast(std::string& line) { // Return the partial last line, if any. if (!this->empty()) { - line.assign(&*this->begin(), this->size()); + line.assign(this->data(), this->size()); this->First = this->Last = 0; this->clear(); return true; diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index 989c7ee..ba2fe6c 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -1039,7 +1039,7 @@ int cmCTest::RunMakeCommand(const char* command, std::string& output, // Now create process object cmsysProcess* cp = cmsysProcess_New(); - cmsysProcess_SetCommand(cp, &*argv.begin()); + cmsysProcess_SetCommand(cp, argv.data()); cmsysProcess_SetWorkingDirectory(cp, dir); cmsysProcess_SetOption(cp, cmsysProcess_Option_HideWindow, 1); cmsysProcess_SetTimeout(cp, timeout.count()); @@ -1222,7 +1222,7 @@ int cmCTest::RunTest(std::vector argv, std::string* output, } cmsysProcess* cp = cmsysProcess_New(); - cmsysProcess_SetCommand(cp, &*argv.begin()); + cmsysProcess_SetCommand(cp, argv.data()); cmCTestLog(this, DEBUG, "Command is: " << argv[0] << std::endl); if (cmSystemTools::GetRunCommandHideConsole()) { cmsysProcess_SetOption(cp, cmsysProcess_Option_HideWindow, 1); @@ -1258,7 +1258,7 @@ int cmCTest::RunTest(std::vector argv, std::string* output, cmsysProcess_WaitForExit(cp, nullptr); processOutput.DecodeText(tempOutput, tempOutput); if (output && tempOutput.begin() != tempOutput.end()) { - output->append(&*tempOutput.begin(), tempOutput.size()); + output->append(tempOutput.data(), tempOutput.size()); } cmCTestLog(this, HANDLER_VERBOSE_OUTPUT, "-- Process completed" << std::endl); @@ -2776,7 +2776,7 @@ bool cmCTest::RunCommand(std::vector const& args, stdErr->clear(); cmsysProcess* cp = cmsysProcess_New(); - cmsysProcess_SetCommand(cp, &*argv.begin()); + cmsysProcess_SetCommand(cp, argv.data()); cmsysProcess_SetWorkingDirectory(cp, dir); if (cmSystemTools::GetRunCommandHideConsole()) { cmsysProcess_SetOption(cp, cmsysProcess_Option_HideWindow, 1); @@ -2820,11 +2820,11 @@ bool cmCTest::RunCommand(std::vector const& args, cmsysProcess_WaitForExit(cp, nullptr); if (!tempOutput.empty()) { processOutput.DecodeText(tempOutput, tempOutput); - stdOut->append(&*tempOutput.begin(), tempOutput.size()); + stdOut->append(tempOutput.data(), tempOutput.size()); } if (!tempError.empty()) { processOutput.DecodeText(tempError, tempError); - stdErr->append(&*tempError.begin(), tempError.size()); + stdErr->append(tempError.data(), tempError.size()); } bool result = true; @@ -3048,7 +3048,7 @@ void cmCTest::OutputTestErrors(std::vector const& process_output) { std::string test_outputs("\n*** Test Failed:\n"); if (!process_output.empty()) { - test_outputs.append(&*process_output.begin(), process_output.size()); + test_outputs.append(process_output.data(), process_output.size()); } cmCTestLog(this, HANDLER_OUTPUT, test_outputs << std::endl << std::flush); } diff --git a/Source/cmConditionEvaluator.cxx b/Source/cmConditionEvaluator.cxx index 94ea529..303b147 100644 --- a/Source/cmConditionEvaluator.cxx +++ b/Source/cmConditionEvaluator.cxx @@ -130,8 +130,8 @@ bool cmConditionEvaluator::IsTrue( return false; } - return this->GetBooleanValueWithAutoDereference(*(newArgs.begin()), - errorString, status, true); + return this->GetBooleanValueWithAutoDereference(newArgs.front(), errorString, + status, true); } //========================================================================= diff --git a/Source/cmExecuteProcessCommand.cxx b/Source/cmExecuteProcessCommand.cxx index 8c67cdb..03eac5b 100644 --- a/Source/cmExecuteProcessCommand.cxx +++ b/Source/cmExecuteProcessCommand.cxx @@ -193,7 +193,7 @@ bool cmExecuteProcessCommand::InitialPass(std::vector const& args, // Set the command sequence. for (auto const& cmd : cmds) { - cmsysProcess_AddCommand(cp, &*cmd.begin()); + cmsysProcess_AddCommand(cp, cmd.data()); } // Set the process working directory. @@ -286,10 +286,10 @@ bool cmExecuteProcessCommand::InitialPass(std::vector const& args, // Store the output obtained. if (!output_variable.empty() && !tempOutput.empty()) { - this->Makefile->AddDefinition(output_variable, &*tempOutput.begin()); + this->Makefile->AddDefinition(output_variable, tempOutput.data()); } if (!merge_output && !error_variable.empty() && !tempError.empty()) { - this->Makefile->AddDefinition(error_variable, &*tempError.begin()); + this->Makefile->AddDefinition(error_variable, tempError.data()); } // Store the result of running the process. diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index 0f911c1..2fe0d63 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -3067,7 +3067,7 @@ bool cmFileCommand::HandleDownloadCommand(std::vector const& args) if (!logVar.empty()) { chunkDebug.push_back(0); - this->Makefile->AddDefinition(logVar, &*chunkDebug.begin()); + this->Makefile->AddDefinition(logVar, chunkDebug.data()); } return true; @@ -3326,14 +3326,14 @@ bool cmFileCommand::HandleUploadCommand(std::vector const& args) if (!chunkResponse.empty()) { chunkResponse.push_back(0); log += "Response:\n"; - log += &*chunkResponse.begin(); + log += chunkResponse.data(); log += "\n"; } if (!chunkDebug.empty()) { chunkDebug.push_back(0); log += "Debug:\n"; - log += &*chunkDebug.begin(); + log += chunkDebug.data(); log += "\n"; } diff --git a/Source/cmFilePathChecksum.cxx b/Source/cmFilePathChecksum.cxx index 2cffa7c..47a223a 100644 --- a/Source/cmFilePathChecksum.cxx +++ b/Source/cmFilePathChecksum.cxx @@ -74,7 +74,7 @@ std::string cmFilePathChecksum::get(std::string const& filePath) const cmCryptoHash(cmCryptoHash::AlgoSHA256).ByteHashString(relSeed + relPath); // Convert binary checksum to string - return cmBase32Encoder().encodeString(&hashBytes.front(), hashBytes.size(), + return cmBase32Encoder().encodeString(hashBytes.data(), hashBytes.size(), false); } diff --git a/Source/cmFindCommon.cxx b/Source/cmFindCommon.cxx index 78be64e..9aaa000 100644 --- a/Source/cmFindCommon.cxx +++ b/Source/cmFindCommon.cxx @@ -310,7 +310,7 @@ void cmFindCommon::AddPathSuffix(std::string const& arg) void AddTrailingSlash(std::string& s) { - if (!s.empty() && *s.rbegin() != '/') { + if (!s.empty() && s.back() != '/') { s += '/'; } } diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index c2e0712..93c71a1 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -466,7 +466,7 @@ bool cmFindPackageCommand::InitialPass(std::vector const& args, // Allocate a PACKAGE_ROOT_PATH for the current find_package call. this->Makefile->FindPackageRootPathStack.emplace_back(); std::vector& rootPaths = - *this->Makefile->FindPackageRootPathStack.rbegin(); + this->Makefile->FindPackageRootPathStack.back(); // Add root paths from _ROOT CMake and environment variables, // subject to CMP0074. diff --git a/Source/cmGeneratorExpressionNode.cxx b/Source/cmGeneratorExpressionNode.cxx index aac188e..e8cb151 100644 --- a/Source/cmGeneratorExpressionNode.cxx +++ b/Source/cmGeneratorExpressionNode.cxx @@ -135,13 +135,13 @@ static const struct NotNode : public cmGeneratorExpressionNode const GeneratorExpressionContent* content, cmGeneratorExpressionDAGChecker* /*dagChecker*/) const override { - if (*parameters.begin() != "0" && *parameters.begin() != "1") { + if (parameters.front() != "0" && parameters.front() != "1") { reportError( context, content->GetOriginalExpression(), "$ parameter must resolve to exactly one '0' or '1' value."); return std::string(); } - return *parameters.begin() == "0" ? "1" : "0"; + return parameters.front() == "0" ? "1" : "0"; } } notNode; @@ -157,7 +157,7 @@ static const struct BoolNode : public cmGeneratorExpressionNode const GeneratorExpressionContent* /*content*/, cmGeneratorExpressionDAGChecker* /*dagChecker*/) const override { - return !cmSystemTools::IsOff(*parameters.begin()) ? "1" : "0"; + return !cmSystemTools::IsOff(parameters.front()) ? "1" : "0"; } } boolNode; @@ -194,7 +194,7 @@ static const struct StrEqualNode : public cmGeneratorExpressionNode const GeneratorExpressionContent* /*content*/, cmGeneratorExpressionDAGChecker* /*dagChecker*/) const override { - return *parameters.begin() == parameters[1] ? "1" : "0"; + return parameters.front() == parameters[1] ? "1" : "0"; } } strEqualNode; @@ -613,7 +613,7 @@ struct CompilerIdNode : public cmGeneratorExpressionNode return compilerId; } static cmsys::RegularExpression compilerIdValidator("^[A-Za-z0-9_]*$"); - if (!compilerIdValidator.find(*parameters.begin())) { + if (!compilerIdValidator.find(parameters.front())) { reportError(context, content->GetOriginalExpression(), "Expression syntax not recognized."); return std::string(); @@ -622,11 +622,11 @@ struct CompilerIdNode : public cmGeneratorExpressionNode return parameters.front().empty() ? "1" : "0"; } - if (strcmp(parameters.begin()->c_str(), compilerId.c_str()) == 0) { + if (strcmp(parameters.front().c_str(), compilerId.c_str()) == 0) { return "1"; } - if (cmsysString_strcasecmp(parameters.begin()->c_str(), + if (cmsysString_strcasecmp(parameters.front().c_str(), compilerId.c_str()) == 0) { switch (context->LG->GetPolicyStatus(cmPolicies::CMP0044)) { case cmPolicies::WARN: { @@ -734,7 +734,7 @@ struct CompilerVersionNode : public cmGeneratorExpressionNode } static cmsys::RegularExpression compilerIdValidator("^[0-9\\.]*$"); - if (!compilerIdValidator.find(*parameters.begin())) { + if (!compilerIdValidator.find(parameters.front())) { reportError(context, content->GetOriginalExpression(), "Expression syntax not recognized."); return std::string(); @@ -744,7 +744,7 @@ struct CompilerVersionNode : public cmGeneratorExpressionNode } return cmSystemTools::VersionCompare(cmSystemTools::OP_EQUAL, - parameters.begin()->c_str(), + parameters.front().c_str(), compilerVersion.c_str()) ? "1" : "0"; @@ -839,7 +839,7 @@ struct PlatformIdNode : public cmGeneratorExpressionNode return parameters.front().empty() ? "1" : "0"; } - if (*parameters.begin() == platformId) { + if (parameters.front() == platformId) { return "1"; } return "0"; @@ -1001,7 +1001,7 @@ static const struct ConfigurationTestNode : public cmGeneratorExpressionNode return configurationNode.Evaluate(parameters, context, content, nullptr); } static cmsys::RegularExpression configValidator("^[A-Za-z0-9_]*$"); - if (!configValidator.find(*parameters.begin())) { + if (!configValidator.find(parameters.front())) { reportError(context, content->GetOriginalExpression(), "Expression syntax not recognized."); return std::string(); @@ -1011,7 +1011,7 @@ static const struct ConfigurationTestNode : public cmGeneratorExpressionNode return parameters.front().empty() ? "1" : "0"; } - if (cmsysString_strcasecmp(parameters.begin()->c_str(), + if (cmsysString_strcasecmp(parameters.front().c_str(), context->Config.c_str()) == 0) { return "1"; } @@ -1166,7 +1166,7 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode static cmsys::RegularExpression propertyNameValidator("^[A-Za-z0-9_]+$"); cmGeneratorTarget const* target = context->HeadTarget; - std::string propertyName = *parameters.begin(); + std::string propertyName = parameters.front(); if (parameters.size() == 1) { context->HadHeadSensitiveCondition = true; @@ -1182,14 +1182,14 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode } if (parameters.size() == 2) { - if (parameters.begin()->empty() && parameters[1].empty()) { + if (parameters.front().empty() && parameters[1].empty()) { reportError( context, content->GetOriginalExpression(), "$ expression requires a non-empty " "target name and property name."); return std::string(); } - if (parameters.begin()->empty()) { + if (parameters.front().empty()) { reportError( context, content->GetOriginalExpression(), "$ expression requires a non-empty " @@ -1964,7 +1964,7 @@ struct TargetFilesystemArtifact : public cmGeneratorExpressionNode cmGeneratorExpressionDAGChecker* dagChecker) const override { // Lookup the referenced target. - std::string name = *parameters.begin(); + std::string name = parameters.front(); if (!cmGeneratorExpression::IsValidTargetName(name)) { ::reportError(context, content->GetOriginalExpression(), diff --git a/Source/cmGeneratorExpressionParser.cxx b/Source/cmGeneratorExpressionParser.cxx index 949a86d..7aa3314 100644 --- a/Source/cmGeneratorExpressionParser.cxx +++ b/Source/cmGeneratorExpressionParser.cxx @@ -47,11 +47,11 @@ static void extendResult( if (!result.empty() && (*(result.end() - 1))->GetType() == cmGeneratorExpressionEvaluator::Text && - (*contents.begin())->GetType() == cmGeneratorExpressionEvaluator::Text) { + contents.front()->GetType() == cmGeneratorExpressionEvaluator::Text) { TextContent* textContent = static_cast(*(result.end() - 1)); textContent->Extend( - static_cast(*contents.begin())->GetLength()); - delete *contents.begin(); + static_cast(contents.front())->GetLength()); + delete contents.front(); result.insert(result.end(), contents.begin() + 1, contents.end()); } else { result.insert(result.end(), contents.begin(), contents.end()); diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 78040c3..54cfd3a 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -2389,7 +2389,7 @@ void cmTargetTraceDependencies::CheckCustomCommand(cmCustomCommand const& cc) std::set targets; for (cmCustomCommandLine const& cCmdLine : cc.GetCommandLines()) { - std::string const& command = *cCmdLine.begin(); + std::string const& command = cCmdLine.front(); // Check for a target with this name. if (cmGeneratorTarget* t = this->LocalGenerator->FindGeneratorTargetToUse(command)) { diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index ab139c0..cc61318 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -2193,7 +2193,7 @@ cmSourceGroup* cmMakefile::FindSourceGroup( } // Shouldn't get here, but just in case, return the default group. - return &groups.front(); + return groups.data(); } #endif diff --git a/Source/cmQtAutoGenerator.cxx b/Source/cmQtAutoGenerator.cxx index e2d7deb..fbb9df3 100644 --- a/Source/cmQtAutoGenerator.cxx +++ b/Source/cmQtAutoGenerator.cxx @@ -447,7 +447,7 @@ void cmQtAutoGenerator::ReadOnlyProcessT::PipeT::UVAlloc(uv_handle_t* handle, { auto& pipe = *reinterpret_cast(handle->data); pipe.Buffer_.resize(suggestedSize); - buf->base = &pipe.Buffer_.front(); + buf->base = pipe.Buffer_.data(); buf->len = pipe.Buffer_.size(); } @@ -555,11 +555,11 @@ bool cmQtAutoGenerator::ReadOnlyProcessT::start( std::fill_n(reinterpret_cast(&UVOptions_), sizeof(UVOptions_), 0); UVOptions_.exit_cb = &ReadOnlyProcessT::UVExit; UVOptions_.file = CommandPtr_[0]; - UVOptions_.args = const_cast(&CommandPtr_.front()); + UVOptions_.args = const_cast(CommandPtr_.data()); UVOptions_.cwd = Setup_.WorkingDirectory.c_str(); UVOptions_.flags = UV_PROCESS_WINDOWS_HIDE; UVOptions_.stdio_count = static_cast(UVOptionsStdIO_.size()); - UVOptions_.stdio = &UVOptionsStdIO_.front(); + UVOptions_.stdio = UVOptionsStdIO_.data(); // -- Spawn process if (UVProcess_.spawn(*uv_loop, UVOptions_, this) != 0) { diff --git a/Source/cmSearchPath.cxx b/Source/cmSearchPath.cxx index 0f51e0e..f98984e 100644 --- a/Source/cmSearchPath.cxx +++ b/Source/cmSearchPath.cxx @@ -144,7 +144,7 @@ void cmSearchPath::AddSuffixes(const std::vector& suffixes) // this will get incorrectly considered a network // path on windows and cause huge delays. std::string p = inPath; - if (!p.empty() && *p.rbegin() != '/') { + if (!p.empty() && p.back() != '/') { p += "/"; } @@ -176,7 +176,7 @@ void cmSearchPath::AddPrefixPaths(const std::vector& paths, for (std::string const& path : paths) { std::string dir = path; - if (!subdir.empty() && !dir.empty() && *dir.rbegin() != '/') { + if (!subdir.empty() && !dir.empty() && dir.back() != '/') { dir += "/"; } if (subdir == "include" || subdir == "lib") { diff --git a/Source/cmStringCommand.cxx b/Source/cmStringCommand.cxx index 91d6190..44ba82a 100644 --- a/Source/cmStringCommand.cxx +++ b/Source/cmStringCommand.cxx @@ -771,7 +771,7 @@ bool cmStringCommand::HandleRandomCommand(std::vector const& args) } result.push_back(0); - this->Makefile->AddDefinition(variableName, &*result.begin()); + this->Makefile->AddDefinition(variableName, result.data()); return true; } diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 1d20e2f..ba40ce1 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -740,7 +740,7 @@ bool cmSystemTools::RunSingleCommand(std::vector const& command, argv.push_back(nullptr); cmsysProcess* cp = cmsysProcess_New(); - cmsysProcess_SetCommand(cp, &*argv.begin()); + cmsysProcess_SetCommand(cp, argv.data()); cmsysProcess_SetWorkingDirectory(cp, dir); if (cmSystemTools::GetRunCommandHideConsole()) { cmsysProcess_SetOption(cp, cmsysProcess_Option_HideWindow, 1); diff --git a/Source/cmakexbuild.cxx b/Source/cmakexbuild.cxx index 2951945..f5c8f07 100644 --- a/Source/cmakexbuild.cxx +++ b/Source/cmakexbuild.cxx @@ -22,7 +22,7 @@ int RunXCode(std::vector& argv, bool& hitbug) { hitbug = false; cmsysProcess* cp = cmsysProcess_New(); - cmsysProcess_SetCommand(cp, &*argv.begin()); + cmsysProcess_SetCommand(cp, argv.data()); cmsysProcess_SetTimeout(cp, 0); cmsysProcess_Execute(cp); std::vector out; ----------------------------------------------------------------------- Summary of changes: Source/CPack/OSXScriptLauncher.cxx | 2 +- Source/CTest/cmCTestBuildHandler.cxx | 4 ++-- Source/CTest/cmCTestCoverageHandler.cxx | 2 +- Source/CTest/cmCTestScriptHandler.cxx | 2 +- Source/CTest/cmCTestSubmitHandler.cxx | 21 ++++++++++----------- Source/CTest/cmProcess.cxx | 4 ++-- Source/cmCTest.cxx | 14 +++++++------- Source/cmConditionEvaluator.cxx | 4 ++-- Source/cmExecuteProcessCommand.cxx | 6 +++--- Source/cmFileCommand.cxx | 6 +++--- Source/cmFilePathChecksum.cxx | 2 +- Source/cmFindCommon.cxx | 2 +- Source/cmFindPackageCommand.cxx | 2 +- Source/cmGeneratorExpressionNode.cxx | 32 ++++++++++++++++---------------- Source/cmGeneratorExpressionParser.cxx | 6 +++--- Source/cmGeneratorTarget.cxx | 2 +- Source/cmMakefile.cxx | 2 +- Source/cmQtAutoGenerator.cxx | 6 +++--- Source/cmSearchPath.cxx | 4 ++-- Source/cmStringCommand.cxx | 2 +- Source/cmSystemTools.cxx | 2 +- Source/cmakexbuild.cxx | 2 +- 22 files changed, 64 insertions(+), 65 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 8 00:03:05 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 8 Feb 2019 00:03:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-21-g3f0a5b3 Message-ID: <20190208050305.1610FFB813@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 3f0a5b3fe849776ef9c087d34bf3fb740913bae1 (commit) from 41802ef35d58ef9d8761388abeee202503f11642 (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=3f0a5b3fe849776ef9c087d34bf3fb740913bae1 commit 3f0a5b3fe849776ef9c087d34bf3fb740913bae1 Author: Kitware Robot AuthorDate: Fri Feb 8 00:01:07 2019 -0500 Commit: Kitware Robot CommitDate: Fri Feb 8 00:01:07 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 39cb7e6..63d0f9a 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 14) -set(CMake_VERSION_PATCH 20190207) +set(CMake_VERSION_PATCH 20190208) #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 8 08:53:06 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 8 Feb 2019 08:53:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-27-g89ca5d7 Message-ID: <20190208135306.B9184FCC98@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 89ca5d7fdce7730f38a719683059bbe02e6fb19d (commit) via bf1279450496db727a646afb29109cb9eba3c7b4 (commit) via 9783825de5e3398806a432a3c72f048b88bf9640 (commit) via 82edd98300b9d050dd28fdfa1e6ea7b18ecca22c (commit) via 00ba28ffd03a9a0cf00d78001573bc5cc045ee72 (commit) via 65baaa0e37e114cf8e505c10d80ec3efaf3887ad (commit) from 3f0a5b3fe849776ef9c087d34bf3fb740913bae1 (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=89ca5d7fdce7730f38a719683059bbe02e6fb19d commit 89ca5d7fdce7730f38a719683059bbe02e6fb19d Merge: bf12794 82edd98 Author: Brad King AuthorDate: Fri Feb 8 13:47:57 2019 +0000 Commit: Kitware Robot CommitDate: Fri Feb 8 08:49:35 2019 -0500 Merge topic 'message-stdstring' 82edd98300 cmSystemTools: MessageCallback and Message() accept std::string argument Acked-by: Kitware Robot Merge-request: !2929 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bf1279450496db727a646afb29109cb9eba3c7b4 commit bf1279450496db727a646afb29109cb9eba3c7b4 Merge: 9783825 00ba28f Author: Brad King AuthorDate: Fri Feb 8 13:47:53 2019 +0000 Commit: Kitware Robot CommitDate: Fri Feb 8 08:48:51 2019 -0500 Merge topic 'getreqdef' 00ba28ffd0 cmMakefile::GetRequiredDefinition: return const std::string& Acked-by: Kitware Robot Merge-request: !2930 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9783825de5e3398806a432a3c72f048b88bf9640 commit 9783825de5e3398806a432a3c72f048b88bf9640 Merge: 3f0a5b3 65baaa0 Author: Brad King AuthorDate: Fri Feb 8 13:47:49 2019 +0000 Commit: Kitware Robot CommitDate: Fri Feb 8 08:47:56 2019 -0500 Merge topic 'runsinglecommand' 65baaa0e37 cmSystemTools::RunSingleCommand: Accept std::string argument Acked-by: Kitware Robot Merge-request: !2927 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=82edd98300b9d050dd28fdfa1e6ea7b18ecca22c commit 82edd98300b9d050dd28fdfa1e6ea7b18ecca22c Author: Vitaly Stakhovsky AuthorDate: Wed Feb 6 15:00:00 2019 -0500 Commit: Vitaly Stakhovsky CommitDate: Thu Feb 7 13:41:27 2019 -0500 cmSystemTools: MessageCallback and Message() accept std::string argument diff --git a/Source/CTest/cmCTestBuildAndTestHandler.cxx b/Source/CTest/cmCTestBuildAndTestHandler.cxx index 2fd4c7a..3856569 100644 --- a/Source/CTest/cmCTestBuildAndTestHandler.cxx +++ b/Source/CTest/cmCTestBuildAndTestHandler.cxx @@ -118,7 +118,7 @@ public: : CM(cm) { cmSystemTools::SetMessageCallback( - [&s](const char* msg, const char* /*unused*/) { + [&s](const std::string& msg, const char* /*unused*/) { s += msg; s += "\n"; }); diff --git a/Source/CursesDialog/ccmake.cxx b/Source/CursesDialog/ccmake.cxx index f2982a6..745c6bb 100644 --- a/Source/CursesDialog/ccmake.cxx +++ b/Source/CursesDialog/ccmake.cxx @@ -150,7 +150,7 @@ int main(int argc, char const* const* argv) } cmSystemTools::SetMessageCallback( - [myform](const char* message, const char* title) { + [myform](const std::string& message, const char* title) { myform->AddError(message, title); }); diff --git a/Source/CursesDialog/cmCursesForm.h b/Source/CursesDialog/cmCursesForm.h index ddb67de..7842905 100644 --- a/Source/CursesDialog/cmCursesForm.h +++ b/Source/CursesDialog/cmCursesForm.h @@ -9,6 +9,8 @@ #include "cmsys/FStream.hxx" +#include + class cmCursesForm { public: @@ -34,7 +36,7 @@ public: // Description: // During a CMake run, an error handle should add errors // to be displayed afterwards. - virtual void AddError(const char*, const char*) {} + virtual void AddError(const std::string&, const char*) {} // Description: // Turn debugging on. This will create ccmakelog.txt. diff --git a/Source/CursesDialog/cmCursesMainForm.cxx b/Source/CursesDialog/cmCursesMainForm.cxx index 8ca7802..f6a1a57 100644 --- a/Source/CursesDialog/cmCursesMainForm.cxx +++ b/Source/CursesDialog/cmCursesMainForm.cxx @@ -647,7 +647,8 @@ int cmCursesMainForm::Generate() return 0; } -void cmCursesMainForm::AddError(const char* message, const char* /*unused*/) +void cmCursesMainForm::AddError(const std::string& message, + const char* /*unused*/) { this->Errors.emplace_back(message); } diff --git a/Source/CursesDialog/cmCursesMainForm.h b/Source/CursesDialog/cmCursesMainForm.h index cc6482f..c09ce2a 100644 --- a/Source/CursesDialog/cmCursesMainForm.h +++ b/Source/CursesDialog/cmCursesMainForm.h @@ -81,7 +81,7 @@ public: * During a CMake run, an error handle should add errors * to be displayed afterwards. */ - void AddError(const char* message, const char* title) override; + void AddError(const std::string& message, const char* title) override; /** * Used to do a configure. If argument is specified, it does only the check diff --git a/Source/QtDialog/QCMake.cxx b/Source/QtDialog/QCMake.cxx index a073c30..6442d05 100644 --- a/Source/QtDialog/QCMake.cxx +++ b/Source/QtDialog/QCMake.cxx @@ -25,7 +25,7 @@ QCMake::QCMake(QObject* p) cmSystemTools::SetRunCommandHideConsole(true); cmSystemTools::SetMessageCallback( - [this](const char* msg, const char* title) { + [this](std::string const& msg, const char* title) { this->messageCallback(msg, title); }); cmSystemTools::SetStdoutCallback( @@ -359,9 +359,9 @@ void QCMake::progressCallback(const char* msg, float percent) QCoreApplication::processEvents(); } -void QCMake::messageCallback(const char* msg, const char* /*title*/) +void QCMake::messageCallback(std::string const& msg, const char* /*title*/) { - emit this->errorMessage(QString::fromLocal8Bit(msg)); + emit this->errorMessage(QString::fromStdString(msg)); QCoreApplication::processEvents(); } diff --git a/Source/QtDialog/QCMake.h b/Source/QtDialog/QCMake.h index ef4d2a1..8492606 100644 --- a/Source/QtDialog/QCMake.h +++ b/Source/QtDialog/QCMake.h @@ -169,7 +169,7 @@ protected: bool interruptCallback(); void progressCallback(const char* msg, float percent); - void messageCallback(const char* msg, const char* title); + void messageCallback(std::string const& msg, const char* title); void stdoutCallback(std::string const& msg); void stderrCallback(std::string const& msg); diff --git a/Source/cmServer.cxx b/Source/cmServer.cxx index e740c05..719e6b1 100644 --- a/Source/cmServer.cxx +++ b/Source/cmServer.cxx @@ -97,7 +97,7 @@ void cmServer::ProcessRequest(cmConnection* connection, } cmSystemTools::SetMessageCallback( - [&request](const char* msg, const char* title) { + [&request](const std::string& msg, const char* title) { reportMessage(msg, title, request); }); @@ -165,15 +165,14 @@ void cmServer::reportProgress(const char* msg, float progress, } } -void cmServer::reportMessage(const char* msg, const char* title, +void cmServer::reportMessage(const std::string& msg, const char* title, const cmServerRequest& request) { - assert(msg); std::string titleString; if (title) { titleString = title; } - request.ReportMessage(std::string(msg), titleString); + request.ReportMessage(msg, titleString); } cmServerResponse cmServer::SetProtocolVersion(const cmServerRequest& request) diff --git a/Source/cmServer.h b/Source/cmServer.h index e1ed27a..3edc887 100644 --- a/Source/cmServer.h +++ b/Source/cmServer.h @@ -121,7 +121,7 @@ public: private: static void reportProgress(const char* msg, float progress, const cmServerRequest& request); - static void reportMessage(const char* msg, const char* title, + static void reportMessage(const std::string& msg, const char* title, const cmServerRequest& request); // Handle requests: diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 1d20e2f..ec38b65 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -323,16 +323,16 @@ void cmSystemTools::Stdout(const std::string& s) } } -void cmSystemTools::Message(const char* m1, const char* title) +void cmSystemTools::Message(const std::string& m, const char* title) { if (s_DisableMessages) { return; } if (s_MessageCallback) { - s_MessageCallback(m1, title); + s_MessageCallback(m, title); return; } - std::cerr << m1 << std::endl << std::flush; + std::cerr << m << std::endl << std::flush; } void cmSystemTools::ReportLastSystemError(const char* msg) diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index 0f92fe2..75860bc 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -56,7 +56,7 @@ public: */ static std::string TrimWhitespace(const std::string& s); - using MessageCallback = std::function; + using MessageCallback = std::function; /** * Set the function used by GUIs to display error messages * Function gets passed: message as a const char*, @@ -74,11 +74,7 @@ public: /** * Display a message. */ - static void Message(const char* m, const char* title = nullptr); - static void Message(const std::string& m, const char* title = nullptr) - { - Message(m.c_str(), title); - } + static void Message(const std::string& m, const char* title = nullptr); using OutputCallback = std::function; diff --git a/Source/cmakemain.cxx b/Source/cmakemain.cxx index 890b74e..a49246b 100644 --- a/Source/cmakemain.cxx +++ b/Source/cmakemain.cxx @@ -142,8 +142,8 @@ static std::string cmakemainGetStack(cmake* cm) return msg; } -static void cmakemainMessageCallback(const char* m, const char* /*unused*/, - cmake* cm) +static void cmakemainMessageCallback(const std::string& m, + const char* /*unused*/, cmake* cm) { std::cerr << m << cmakemainGetStack(cm) << std::endl << std::flush; } @@ -319,9 +319,10 @@ int do_cmake(int ac, char const* const* av) cmake cm(role, mode); cm.SetHomeDirectory(""); cm.SetHomeOutputDirectory(""); - cmSystemTools::SetMessageCallback([&cm](const char* msg, const char* title) { - cmakemainMessageCallback(msg, title, &cm); - }); + cmSystemTools::SetMessageCallback( + [&cm](const std::string& msg, const char* title) { + cmakemainMessageCallback(msg, title, &cm); + }); cm.SetProgressCallback([&cm](const char* msg, float prog) { cmakemainProgressCallback(msg, prog, &cm); }); @@ -499,9 +500,10 @@ static int do_build(int ac, char const* const* av) } cmake cm(cmake::RoleInternal, cmState::Unknown); - cmSystemTools::SetMessageCallback([&cm](const char* msg, const char* title) { - cmakemainMessageCallback(msg, title, &cm); - }); + cmSystemTools::SetMessageCallback( + [&cm](const std::string& msg, const char* title) { + cmakemainMessageCallback(msg, title, &cm); + }); cm.SetProgressCallback([&cm](const char* msg, float prog) { cmakemainProgressCallback(msg, prog, &cm); }); @@ -541,9 +543,10 @@ static int do_open(int ac, char const* const* av) } cmake cm(cmake::RoleInternal, cmState::Unknown); - cmSystemTools::SetMessageCallback([&cm](const char* msg, const char* title) { - cmakemainMessageCallback(msg, title, &cm); - }); + cmSystemTools::SetMessageCallback( + [&cm](const std::string& msg, const char* title) { + cmakemainMessageCallback(msg, title, &cm); + }); cm.SetProgressCallback([&cm](const char* msg, float prog) { cmakemainProgressCallback(msg, prog, &cm); }); https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=00ba28ffd03a9a0cf00d78001573bc5cc045ee72 commit 00ba28ffd03a9a0cf00d78001573bc5cc045ee72 Author: Vitaly Stakhovsky AuthorDate: Wed Feb 6 17:44:53 2019 -0500 Commit: Vitaly Stakhovsky CommitDate: Thu Feb 7 07:35:16 2019 -0500 cmMakefile::GetRequiredDefinition: return const std::string& diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx index e408de3..d9ae4eb 100644 --- a/Source/cmExtraCodeBlocksGenerator.cxx +++ b/Source/cmExtraCodeBlocksGenerator.cxx @@ -247,8 +247,8 @@ void cmExtraCodeBlocksGenerator::CreateNewProjectFile( // figure out the compiler std::string compiler = this->GetCBCompilerId(mf); - std::string make = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); - const std::string makeArgs = + const std::string& make = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); + const std::string& makeArgs = mf->GetSafeDefinition("CMAKE_CODEBLOCKS_MAKE_ARGUMENTS"); cmXMLWriter xml(fout); diff --git a/Source/cmExtraCodeLiteGenerator.cxx b/Source/cmExtraCodeLiteGenerator.cxx index 0773edc..6fe8c14 100644 --- a/Source/cmExtraCodeLiteGenerator.cxx +++ b/Source/cmExtraCodeLiteGenerator.cxx @@ -628,8 +628,8 @@ std::string cmExtraCodeLiteGenerator::GetConfigurationName( std::string cmExtraCodeLiteGenerator::GetBuildCommand( const cmMakefile* mf, const std::string& targetName) const { - std::string generator = mf->GetSafeDefinition("CMAKE_GENERATOR"); - std::string make = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); + const std::string& generator = mf->GetSafeDefinition("CMAKE_GENERATOR"); + const std::string& make = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); std::string buildCommand = make; // Default std::ostringstream ss; if (generator == "NMake Makefiles" || generator == "Ninja") { @@ -669,8 +669,8 @@ std::string cmExtraCodeLiteGenerator::GetSingleFileBuildCommand( const cmMakefile* mf) const { std::string buildCommand; - std::string make = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); - std::string generator = mf->GetSafeDefinition("CMAKE_GENERATOR"); + const std::string& make = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); + const std::string& generator = mf->GetSafeDefinition("CMAKE_GENERATOR"); if (generator == "Unix Makefiles" || generator == "MinGW Makefiles") { std::ostringstream ss; #if defined(_WIN32) diff --git a/Source/cmExtraEclipseCDT4Generator.cxx b/Source/cmExtraEclipseCDT4Generator.cxx index 30067b7..a6ce8b7 100644 --- a/Source/cmExtraEclipseCDT4Generator.cxx +++ b/Source/cmExtraEclipseCDT4Generator.cxx @@ -878,8 +878,8 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const xml.Attribute("moduleId", "org.eclipse.cdt.make.core.buildtargets"); xml.StartElement("buildTargets"); emmited.clear(); - const std::string make = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); - const std::string makeArgs = + const std::string& make = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); + const std::string& makeArgs = mf->GetSafeDefinition("CMAKE_ECLIPSE_MAKE_ARGUMENTS"); cmGlobalGenerator* generator = @@ -1074,7 +1074,8 @@ void cmExtraEclipseCDT4Generator::AppendStorageScanners( cmXMLWriter& xml, const cmMakefile& makefile) { // we need the "make" and the C (or C++) compiler which are used, Alex - std::string make = makefile.GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); + const std::string& make = + makefile.GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); std::string compiler = makefile.GetSafeDefinition("CMAKE_C_COMPILER"); std::string arg1 = makefile.GetSafeDefinition("CMAKE_C_COMPILER_ARG1"); if (compiler.empty()) { diff --git a/Source/cmExtraKateGenerator.cxx b/Source/cmExtraKateGenerator.cxx index 23ba6b7..76de75d 100644 --- a/Source/cmExtraKateGenerator.cxx +++ b/Source/cmExtraKateGenerator.cxx @@ -75,8 +75,8 @@ void cmExtraKateGenerator::WriteTargets(const cmLocalGenerator* lg, cmGeneratedFileStream& fout) const { cmMakefile const* mf = lg->GetMakefile(); - const std::string make = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); - const std::string makeArgs = + const std::string& make = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); + const std::string& makeArgs = mf->GetSafeDefinition("CMAKE_KATE_MAKE_ARGUMENTS"); std::string const& homeOutputDir = lg->GetBinaryDirectory(); diff --git a/Source/cmExtraSublimeTextGenerator.cxx b/Source/cmExtraSublimeTextGenerator.cxx index 739a177..59cfdca 100644 --- a/Source/cmExtraSublimeTextGenerator.cxx +++ b/Source/cmExtraSublimeTextGenerator.cxx @@ -168,7 +168,7 @@ void cmExtraSublimeTextGenerator::AppendAllTargets( const std::vector& lgs, const cmMakefile* mf, cmGeneratedFileStream& fout, MapSourceFileFlags& sourceFileFlags) { - std::string make = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); + const std::string& make = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); std::string compiler; if (!lgs.empty()) { this->AppendTarget(fout, "all", lgs[0], nullptr, make.c_str(), mf, diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 386a3f7..50d361e 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -680,8 +680,9 @@ void cmGlobalGenerator::EnableLanguage( std::string compilerEnv = "CMAKE_"; compilerEnv += lang; compilerEnv += "_COMPILER_ENV_VAR"; - std::string envVar = mf->GetRequiredDefinition(compilerEnv); - std::string envVarValue = mf->GetRequiredDefinition(compilerName); + const std::string& envVar = mf->GetRequiredDefinition(compilerEnv); + const std::string& envVarValue = + mf->GetRequiredDefinition(compilerName); std::string env = envVar; env += "="; env += envVarValue; diff --git a/Source/cmGlobalMSYSMakefileGenerator.cxx b/Source/cmGlobalMSYSMakefileGenerator.cxx index 3c24556..606febe 100644 --- a/Source/cmGlobalMSYSMakefileGenerator.cxx +++ b/Source/cmGlobalMSYSMakefileGenerator.cxx @@ -45,7 +45,8 @@ void cmGlobalMSYSMakefileGenerator::EnableLanguage( std::vector const& l, cmMakefile* mf, bool optional) { this->FindMakeProgram(mf); - std::string makeProgram = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); + const std::string& makeProgram = + mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); std::vector locations; std::string makeloc = cmSystemTools::GetProgramPath(makeProgram.c_str()); locations.push_back(this->FindMinGW(makeloc)); diff --git a/Source/cmGlobalMinGWMakefileGenerator.cxx b/Source/cmGlobalMinGWMakefileGenerator.cxx index c6d46e9..e218b4b 100644 --- a/Source/cmGlobalMinGWMakefileGenerator.cxx +++ b/Source/cmGlobalMinGWMakefileGenerator.cxx @@ -23,7 +23,8 @@ void cmGlobalMinGWMakefileGenerator::EnableLanguage( std::vector const& l, cmMakefile* mf, bool optional) { this->FindMakeProgram(mf); - std::string makeProgram = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); + const std::string& makeProgram = + mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"); std::vector locations; locations.push_back(cmSystemTools::GetProgramPath(makeProgram)); locations.push_back("/mingw/bin"); diff --git a/Source/cmInstallTargetGenerator.cxx b/Source/cmInstallTargetGenerator.cxx index 59701a1..5cee9d3 100644 --- a/Source/cmInstallTargetGenerator.cxx +++ b/Source/cmInstallTargetGenerator.cxx @@ -825,7 +825,7 @@ void cmInstallTargetGenerator::AddRanlibRule(std::ostream& os, Indent indent, return; } - std::string ranlib = + const std::string& ranlib = this->Target->Target->GetMakefile()->GetRequiredDefinition("CMAKE_RANLIB"); if (ranlib.empty()) { return; diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 252aa4c..11ea930 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -1364,9 +1364,9 @@ void cmLocalGenerator::OutputLinkLibraries( std::string linkLanguage = cli.GetLinkLanguage(); - std::string libPathFlag = + const std::string& libPathFlag = this->Makefile->GetRequiredDefinition("CMAKE_LIBRARY_PATH_FLAG"); - std::string libPathTerminator = + const std::string& libPathTerminator = this->Makefile->GetSafeDefinition("CMAKE_LIBRARY_PATH_TERMINATOR"); // Add standard libraries for this language. diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 7019552..3946285 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -931,7 +931,7 @@ std::string cmLocalVisualStudio7Generator::GetBuildTypeLinkerFlags( std::string extraLinkOptionsBuildTypeDef = rootLinkerFlags + "_" + configTypeUpper; - std::string extraLinkOptionsBuildType = + const std::string& extraLinkOptionsBuildType = this->Makefile->GetRequiredDefinition(extraLinkOptionsBuildTypeDef); return extraLinkOptionsBuildType; @@ -947,21 +947,18 @@ void cmLocalVisualStudio7Generator::OutputBuildTool( std::string extraLinkOptions; if (target->GetType() == cmStateEnums::EXECUTABLE) { extraLinkOptions = - this->Makefile->GetRequiredDefinition("CMAKE_EXE_LINKER_FLAGS") + - std::string(" ") + + this->Makefile->GetRequiredDefinition("CMAKE_EXE_LINKER_FLAGS") + " " + GetBuildTypeLinkerFlags("CMAKE_EXE_LINKER_FLAGS", configName); } if (target->GetType() == cmStateEnums::SHARED_LIBRARY) { extraLinkOptions = this->Makefile->GetRequiredDefinition("CMAKE_SHARED_LINKER_FLAGS") + - std::string(" ") + - GetBuildTypeLinkerFlags("CMAKE_SHARED_LINKER_FLAGS", configName); + " " + GetBuildTypeLinkerFlags("CMAKE_SHARED_LINKER_FLAGS", configName); } if (target->GetType() == cmStateEnums::MODULE_LIBRARY) { extraLinkOptions = this->Makefile->GetRequiredDefinition("CMAKE_MODULE_LINKER_FLAGS") + - std::string(" ") + - GetBuildTypeLinkerFlags("CMAKE_MODULE_LINKER_FLAGS", configName); + " " + GetBuildTypeLinkerFlags("CMAKE_MODULE_LINKER_FLAGS", configName); } const char* targetLinkFlags = target->GetProperty("LINK_FLAGS"); diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index ab139c0..dcdaa13 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -2425,16 +2425,18 @@ bool cmMakefile::CanIWriteThisFile(std::string const& fileName) const cmSystemTools::SameFile(fileName, this->GetHomeOutputDirectory()); } -std::string cmMakefile::GetRequiredDefinition(const std::string& name) const +const std::string& cmMakefile::GetRequiredDefinition( + const std::string& name) const { - const char* ret = this->GetDefinition(name); - if (!ret) { + static std::string const empty; + const std::string* def = GetDef(name); + if (!def) { cmSystemTools::Error("Error required internal CMake variable not " "set, cmake may not be built correctly.\n", "Missing variable is:\n", name.c_str()); - return std::string(); + return empty; } - return std::string(ret); + return *def; } bool cmMakefile::IsDefinitionSet(const std::string& name) const diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 70a5689..fce90f2 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -436,7 +436,7 @@ public: const char* GetDefinition(const std::string&) const; const std::string* GetDef(const std::string&) const; const std::string& GetSafeDefinition(const std::string&) const; - std::string GetRequiredDefinition(const std::string& name) const; + const std::string& GetRequiredDefinition(const std::string& name) const; bool IsDefinitionSet(const std::string&) const; /** * Get the list of all variables in the current space. If argument diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index af34169..cfaa1fd9 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -654,19 +654,20 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( std::string cmdVar; if (this->GeneratorTarget->GetPropertyAsBool( "CUDA_SEPARABLE_COMPILATION")) { - cmdVar = std::string("CMAKE_CUDA_COMPILE_SEPARABLE_COMPILATION"); + cmdVar = "CMAKE_CUDA_COMPILE_SEPARABLE_COMPILATION"; } else if (this->GeneratorTarget->GetPropertyAsBool( "CUDA_PTX_COMPILATION")) { - cmdVar = std::string("CMAKE_CUDA_COMPILE_PTX_COMPILATION"); + cmdVar = "CMAKE_CUDA_COMPILE_PTX_COMPILATION"; } else { - cmdVar = std::string("CMAKE_CUDA_COMPILE_WHOLE_COMPILATION"); + cmdVar = "CMAKE_CUDA_COMPILE_WHOLE_COMPILATION"; } - std::string compileRule = this->Makefile->GetRequiredDefinition(cmdVar); + const std::string& compileRule = + this->Makefile->GetRequiredDefinition(cmdVar); cmSystemTools::ExpandListArgument(compileRule, compileCommands); } else { - const std::string cmdVar = - std::string("CMAKE_") + lang + "_COMPILE_OBJECT"; - std::string compileRule = this->Makefile->GetRequiredDefinition(cmdVar); + const std::string cmdVar = "CMAKE_" + lang + "_COMPILE_OBJECT"; + const std::string& compileRule = + this->Makefile->GetRequiredDefinition(cmdVar); cmSystemTools::ExpandListArgument(compileRule, compileCommands); } diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 5d76dc2..b525dac 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -493,7 +493,7 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang) if (explicitPP) { // Lookup the explicit preprocessing rule. std::string const ppVar = "CMAKE_" + lang + "_PREPROCESS_SOURCE"; - std::string const ppCmd = + std::string const& ppCmd = this->GetMakefile()->GetRequiredDefinition(ppVar); // Explicit preprocessing always uses a depfile. @@ -671,19 +671,18 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang) std::string cmdVar; if (this->GeneratorTarget->GetPropertyAsBool( "CUDA_SEPARABLE_COMPILATION")) { - cmdVar = std::string("CMAKE_CUDA_COMPILE_SEPARABLE_COMPILATION"); + cmdVar = "CMAKE_CUDA_COMPILE_SEPARABLE_COMPILATION"; } else if (this->GeneratorTarget->GetPropertyAsBool( "CUDA_PTX_COMPILATION")) { - cmdVar = std::string("CMAKE_CUDA_COMPILE_PTX_COMPILATION"); + cmdVar = "CMAKE_CUDA_COMPILE_PTX_COMPILATION"; } else { - cmdVar = std::string("CMAKE_CUDA_COMPILE_WHOLE_COMPILATION"); + cmdVar = "CMAKE_CUDA_COMPILE_WHOLE_COMPILATION"; } - std::string compileCmd = mf->GetRequiredDefinition(cmdVar); + const std::string& compileCmd = mf->GetRequiredDefinition(cmdVar); cmSystemTools::ExpandListArgument(compileCmd, compileCmds); } else { - const std::string cmdVar = - std::string("CMAKE_") + lang + "_COMPILE_OBJECT"; - std::string compileCmd = mf->GetRequiredDefinition(cmdVar); + const std::string cmdVar = "CMAKE_" + lang + "_COMPILE_OBJECT"; + const std::string& compileCmd = mf->GetRequiredDefinition(cmdVar); cmSystemTools::ExpandListArgument(compileCmd, compileCmds); } @@ -1213,20 +1212,19 @@ void cmNinjaTargetGenerator::ExportObjectCompileCommand( std::string cmdVar; if (this->GeneratorTarget->GetPropertyAsBool( "CUDA_SEPARABLE_COMPILATION")) { - cmdVar = std::string("CMAKE_CUDA_COMPILE_SEPARABLE_COMPILATION"); + cmdVar = "CMAKE_CUDA_COMPILE_SEPARABLE_COMPILATION"; } else if (this->GeneratorTarget->GetPropertyAsBool( "CUDA_PTX_COMPILATION")) { - cmdVar = std::string("CMAKE_CUDA_COMPILE_PTX_COMPILATION"); + cmdVar = "CMAKE_CUDA_COMPILE_PTX_COMPILATION"; } else { - cmdVar = std::string("CMAKE_CUDA_COMPILE_WHOLE_COMPILATION"); + cmdVar = "CMAKE_CUDA_COMPILE_WHOLE_COMPILATION"; } - std::string compileCmd = + const std::string& compileCmd = this->GetMakefile()->GetRequiredDefinition(cmdVar); cmSystemTools::ExpandListArgument(compileCmd, compileCmds); } else { - const std::string cmdVar = - std::string("CMAKE_") + language + "_COMPILE_OBJECT"; - std::string compileCmd = + const std::string cmdVar = "CMAKE_" + language + "_COMPILE_OBJECT"; + const std::string& compileCmd = this->GetMakefile()->GetRequiredDefinition(cmdVar); cmSystemTools::ExpandListArgument(compileCmd, compileCmds); } diff --git a/Source/cmUtilitySourceCommand.cxx b/Source/cmUtilitySourceCommand.cxx index 231bca4..b59a587 100644 --- a/Source/cmUtilitySourceCommand.cxx +++ b/Source/cmUtilitySourceCommand.cxx @@ -79,7 +79,7 @@ bool cmUtilitySourceCommand::InitialPass(std::vector const& args, } // The source exists. - std::string cmakeCFGout = + const std::string& cmakeCFGout = this->Makefile->GetRequiredDefinition("CMAKE_CFG_INTDIR"); std::string utilityDirectory = this->Makefile->GetCurrentBinaryDirectory(); std::string exePath; https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=65baaa0e37e114cf8e505c10d80ec3efaf3887ad commit 65baaa0e37e114cf8e505c10d80ec3efaf3887ad Author: Vitaly Stakhovsky AuthorDate: Wed Feb 6 11:02:10 2019 -0500 Commit: Vitaly Stakhovsky CommitDate: Wed Feb 6 11:02:10 2019 -0500 cmSystemTools::RunSingleCommand: Accept std::string argument diff --git a/Source/CPack/IFW/cmCPackIFWGenerator.cxx b/Source/CPack/IFW/cmCPackIFWGenerator.cxx index 9102e3e..c1b6eea 100644 --- a/Source/CPack/IFW/cmCPackIFWGenerator.cxx +++ b/Source/CPack/IFW/cmCPackIFWGenerator.cxx @@ -85,8 +85,8 @@ int cmCPackIFWGenerator::PackageFiles() int retVal = 1; cmCPackIFWLogger(OUTPUT, "- Generate repository" << std::endl); bool res = cmSystemTools::RunSingleCommand( - ifwCmd.c_str(), &output, &output, &retVal, nullptr, - this->GeneratorVerbose, cmDuration::zero()); + ifwCmd, &output, &output, &retVal, nullptr, this->GeneratorVerbose, + cmDuration::zero()); if (!res || retVal) { cmGeneratedFileStream ofs(ifwTmpFile); ofs << "# Run command: " << ifwCmd << std::endl @@ -198,8 +198,8 @@ int cmCPackIFWGenerator::PackageFiles() int retVal = 1; cmCPackIFWLogger(OUTPUT, "- Generate package" << std::endl); bool res = cmSystemTools::RunSingleCommand( - ifwCmd.c_str(), &output, &output, &retVal, nullptr, - this->GeneratorVerbose, cmDuration::zero()); + ifwCmd, &output, &output, &retVal, nullptr, this->GeneratorVerbose, + cmDuration::zero()); if (!res || retVal) { cmGeneratedFileStream ofs(ifwTmpFile); ofs << "# Run command: " << ifwCmd << std::endl diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.cxx b/Source/CPack/WiX/cmCPackWIXGenerator.cxx index 398ebd3..f522ce2 100644 --- a/Source/CPack/WiX/cmCPackWIXGenerator.cxx +++ b/Source/CPack/WiX/cmCPackWIXGenerator.cxx @@ -61,9 +61,8 @@ bool cmCPackWIXGenerator::RunWiXCommand(std::string const& command) std::string output; int returnValue = 0; - bool status = cmSystemTools::RunSingleCommand(command.c_str(), &output, - &output, &returnValue, 0, - cmSystemTools::OUTPUT_NONE); + bool status = cmSystemTools::RunSingleCommand( + command, &output, &output, &returnValue, 0, cmSystemTools::OUTPUT_NONE); cmsys::ofstream logFile(logFileName.c_str(), std::ios::app); logFile << command << std::endl; diff --git a/Source/CPack/cmCPackDragNDropGenerator.cxx b/Source/CPack/cmCPackDragNDropGenerator.cxx index 013ad81..7a3742b 100644 --- a/Source/CPack/cmCPackDragNDropGenerator.cxx +++ b/Source/CPack/cmCPackDragNDropGenerator.cxx @@ -244,8 +244,8 @@ bool cmCPackDragNDropGenerator::RunCommand(std::ostringstream& command, int exit_code = 1; bool result = cmSystemTools::RunSingleCommand( - command.str().c_str(), output, output, &exit_code, nullptr, - this->GeneratorVerbose, cmDuration::zero()); + command.str(), output, output, &exit_code, nullptr, this->GeneratorVerbose, + cmDuration::zero()); if (!result || exit_code) { cmCPackLogger(cmCPackLog::LOG_ERROR, diff --git a/Source/CPack/cmCPackGenerator.cxx b/Source/CPack/cmCPackGenerator.cxx index 57c0545..b4c05ab 100644 --- a/Source/CPack/cmCPackGenerator.cxx +++ b/Source/CPack/cmCPackGenerator.cxx @@ -278,7 +278,7 @@ int cmCPackGenerator::InstallProjectViaInstallCommands( std::string output; int retVal = 1; bool resB = cmSystemTools::RunSingleCommand( - ic.c_str(), &output, &output, &retVal, nullptr, this->GeneratorVerbose, + ic, &output, &output, &retVal, nullptr, this->GeneratorVerbose, cmDuration::zero()); if (!resB || retVal) { std::string tmpFile = this->GetOption("CPACK_TOPLEVEL_DIRECTORY"); @@ -647,8 +647,8 @@ int cmCPackGenerator::RunPreinstallTarget( std::string output; int retVal = 1; bool resB = cmSystemTools::RunSingleCommand( - buildCommand.c_str(), &output, &output, &retVal, - installDirectory.c_str(), this->GeneratorVerbose, cmDuration::zero()); + buildCommand, &output, &output, &retVal, installDirectory.c_str(), + this->GeneratorVerbose, cmDuration::zero()); if (!resB || retVal) { std::string tmpFile = this->GetOption("CPACK_TOPLEVEL_DIRECTORY"); tmpFile += "/PreinstallOutput.log"; diff --git a/Source/CPack/cmCPackNSISGenerator.cxx b/Source/CPack/cmCPackNSISGenerator.cxx index 37ea66e..c77eebc 100644 --- a/Source/CPack/cmCPackNSISGenerator.cxx +++ b/Source/CPack/cmCPackNSISGenerator.cxx @@ -302,8 +302,8 @@ int cmCPackNSISGenerator::PackageFiles() std::string output; int retVal = 1; bool res = cmSystemTools::RunSingleCommand( - nsisCmd.c_str(), &output, &output, &retVal, nullptr, - this->GeneratorVerbose, cmDuration::zero()); + nsisCmd, &output, &output, &retVal, nullptr, this->GeneratorVerbose, + cmDuration::zero()); if (!res || retVal) { cmGeneratedFileStream ofs(tmpFile); ofs << "# Run command: " << nsisCmd << std::endl @@ -407,8 +407,8 @@ int cmCPackNSISGenerator::InitializeInternal() std::string output; int retVal = 1; bool resS = cmSystemTools::RunSingleCommand( - nsisCmd.c_str(), &output, &output, &retVal, nullptr, - this->GeneratorVerbose, cmDuration::zero()); + nsisCmd, &output, &output, &retVal, nullptr, this->GeneratorVerbose, + cmDuration::zero()); cmsys::RegularExpression versionRex("v([0-9]+.[0-9]+)"); cmsys::RegularExpression versionRexCVS("v(.*)\\.cvs"); if (!resS || retVal || @@ -749,7 +749,7 @@ std::string cmCPackNSISGenerator::CreateComponentDescription( std::string output; int retVal = -1; int res = cmSystemTools::RunSingleCommand( - cmd.c_str(), &output, &output, &retVal, dirName.c_str(), + cmd, &output, &output, &retVal, dirName.c_str(), cmSystemTools::OUTPUT_NONE, cmDuration::zero()); if (!res || retVal) { std::string tmpFile = this->GetOption("CPACK_TOPLEVEL_DIRECTORY"); diff --git a/Source/CPack/cmCPackOSXX11Generator.cxx b/Source/CPack/cmCPackOSXX11Generator.cxx index 486633c..85248c6 100644 --- a/Source/CPack/cmCPackOSXX11Generator.cxx +++ b/Source/CPack/cmCPackOSXX11Generator.cxx @@ -155,8 +155,8 @@ int cmCPackOSXX11Generator::PackageFiles() bool res = false; while (numTries > 0) { res = cmSystemTools::RunSingleCommand( - dmgCmd.str().c_str(), &output, &output, &retVal, nullptr, - this->GeneratorVerbose, cmDuration::zero()); + dmgCmd.str(), &output, &output, &retVal, nullptr, this->GeneratorVerbose, + cmDuration::zero()); if (res && !retVal) { numTries = -1; break; diff --git a/Source/CPack/cmCPackPackageMakerGenerator.cxx b/Source/CPack/cmCPackPackageMakerGenerator.cxx index 246178d..3d93c48 100644 --- a/Source/CPack/cmCPackPackageMakerGenerator.cxx +++ b/Source/CPack/cmCPackPackageMakerGenerator.cxx @@ -295,8 +295,8 @@ int cmCPackPackageMakerGenerator::PackageFiles() bool res = false; while (numTries > 0) { res = cmSystemTools::RunSingleCommand( - dmgCmd.str().c_str(), &output, &output, &retVal, nullptr, - this->GeneratorVerbose, cmDuration::zero()); + dmgCmd.str(), &output, &output, &retVal, nullptr, this->GeneratorVerbose, + cmDuration::zero()); if (res && !retVal) { numTries = -1; break; diff --git a/Source/CPack/cmCPackProductBuildGenerator.cxx b/Source/CPack/cmCPackProductBuildGenerator.cxx index a556e0c..94b5b5f 100644 --- a/Source/CPack/cmCPackProductBuildGenerator.cxx +++ b/Source/CPack/cmCPackProductBuildGenerator.cxx @@ -145,8 +145,8 @@ bool cmCPackProductBuildGenerator::RunProductBuild(const std::string& command) std::string output; int retVal = 1; bool res = cmSystemTools::RunSingleCommand( - command.c_str(), &output, &output, &retVal, nullptr, - this->GeneratorVerbose, cmDuration::zero()); + command, &output, &output, &retVal, nullptr, this->GeneratorVerbose, + cmDuration::zero()); cmCPackLogger(cmCPackLog::LOG_VERBOSE, "Done running command" << std::endl); if (!res || retVal) { cmGeneratedFileStream ofs(tmpFile); diff --git a/Source/CTest/cmCTestScriptHandler.cxx b/Source/CTest/cmCTestScriptHandler.cxx index 33b8b4a..dd87687 100644 --- a/Source/CTest/cmCTestScriptHandler.cxx +++ b/Source/CTest/cmCTestScriptHandler.cxx @@ -607,9 +607,8 @@ int cmCTestScriptHandler::CheckOutSourceDir() cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, "Run cvs: " << this->CVSCheckOut << std::endl); res = cmSystemTools::RunSingleCommand( - this->CVSCheckOut.c_str(), &output, &output, &retVal, - this->CTestRoot.c_str(), this->HandlerVerbose, - cmDuration::zero() /*this->TimeOut*/); + this->CVSCheckOut, &output, &output, &retVal, this->CTestRoot.c_str(), + this->HandlerVerbose, cmDuration::zero() /*this->TimeOut*/); if (!res || retVal != 0) { cmSystemTools::Error("Unable to perform cvs checkout:\n", output.c_str()); @@ -675,7 +674,7 @@ int cmCTestScriptHandler::PerformExtraUpdates() cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, "Run Update: " << fullCommand << std::endl); res = cmSystemTools::RunSingleCommand( - fullCommand.c_str(), &output, &output, &retVal, cvsArgs[0].c_str(), + fullCommand, &output, &output, &retVal, cvsArgs[0].c_str(), this->HandlerVerbose, cmDuration::zero() /*this->TimeOut*/); if (!res || retVal != 0) { cmSystemTools::Error("Unable to perform extra updates:\n", eu.c_str(), @@ -779,7 +778,7 @@ int cmCTestScriptHandler::RunConfigurationDashboard() cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, "Run cmake command: " << command << std::endl); res = cmSystemTools::RunSingleCommand( - command.c_str(), &output, &output, &retVal, this->BinaryDir.c_str(), + command, &output, &output, &retVal, this->BinaryDir.c_str(), this->HandlerVerbose, cmDuration::zero() /*this->TimeOut*/); if (!this->CMOutFile.empty()) { @@ -818,7 +817,7 @@ int cmCTestScriptHandler::RunConfigurationDashboard() cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, "Run ctest command: " << command << std::endl); res = cmSystemTools::RunSingleCommand( - command.c_str(), &output, &output, &retVal, this->BinaryDir.c_str(), + command, &output, &output, &retVal, this->BinaryDir.c_str(), this->HandlerVerbose, cmDuration::zero() /*this->TimeOut*/); // did something critical fail in ctest diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index cf2652a..c9783e4 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -1486,7 +1486,7 @@ int cmCTestTestHandler::ExecuteCommands(std::vector& vec) int retVal = 0; cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT, "Run command: " << it << std::endl, this->Quiet); - if (!cmSystemTools::RunSingleCommand(it.c_str(), nullptr, nullptr, &retVal, + if (!cmSystemTools::RunSingleCommand(it, nullptr, nullptr, &retVal, nullptr, cmSystemTools::OUTPUT_MERGE /*this->Verbose*/) || retVal != 0) { diff --git a/Source/cmSiteNameCommand.cxx b/Source/cmSiteNameCommand.cxx index 01758ee..9f041bc 100644 --- a/Source/cmSiteNameCommand.cxx +++ b/Source/cmSiteNameCommand.cxx @@ -52,9 +52,8 @@ bool cmSiteNameCommand::InitialPass(std::vector const& args, // try to find the hostname for this computer if (!cmSystemTools::IsOff(hostname_cmd)) { std::string host; - cmSystemTools::RunSingleCommand(hostname_cmd.c_str(), &host, nullptr, - nullptr, nullptr, - cmSystemTools::OUTPUT_NONE); + cmSystemTools::RunSingleCommand(hostname_cmd, &host, nullptr, nullptr, + nullptr, cmSystemTools::OUTPUT_NONE); // got the hostname if (!host.empty()) { diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 1d20e2f..385a95a 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -867,7 +867,7 @@ bool cmSystemTools::RunSingleCommand(std::vector const& command, return result; } -bool cmSystemTools::RunSingleCommand(const char* command, +bool cmSystemTools::RunSingleCommand(const std::string& command, std::string* captureStdOut, std::string* captureStdErr, int* retVal, const char* dir, OutputOption outputflag, @@ -877,7 +877,8 @@ bool cmSystemTools::RunSingleCommand(const char* command, outputflag = OUTPUT_NONE; } - std::vector args = cmSystemTools::ParseArguments(command); + std::vector args = + cmSystemTools::ParseArguments(command.c_str()); if (args.empty()) { return false; diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index 0f92fe2..798bcba 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -224,7 +224,7 @@ public: OUTPUT_FORWARD, OUTPUT_PASSTHROUGH }; - static bool RunSingleCommand(const char* command, + static bool RunSingleCommand(const std::string& command, std::string* captureStdOut = nullptr, std::string* captureStdErr = nullptr, int* retVal = nullptr, diff --git a/Source/cmTryRunCommand.cxx b/Source/cmTryRunCommand.cxx index c57aabd..fff8f8e 100644 --- a/Source/cmTryRunCommand.cxx +++ b/Source/cmTryRunCommand.cxx @@ -189,8 +189,8 @@ void cmTryRunCommand::RunExecutable(const std::string& runArgs, finalCommand += runArgs; } bool worked = cmSystemTools::RunSingleCommand( - finalCommand.c_str(), out, out, &retVal, nullptr, - cmSystemTools::OUTPUT_NONE, cmDuration::zero()); + finalCommand, out, out, &retVal, nullptr, cmSystemTools::OUTPUT_NONE, + cmDuration::zero()); // set the run var char retChar[16]; const char* retStr; diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index d20c5d2..4415ba6 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -826,7 +826,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector& args) cmWrap('"', cmMakeRange(args).advance(3), '"', " "); int retval = 0; if (cmSystemTools::RunSingleCommand( - command.c_str(), nullptr, nullptr, &retval, directory.c_str(), + command, nullptr, nullptr, &retval, directory.c_str(), cmSystemTools::OUTPUT_PASSTHROUGH, cmDuration::zero())) { return retval; } ----------------------------------------------------------------------- Summary of changes: Source/CPack/IFW/cmCPackIFWGenerator.cxx | 8 ++++---- Source/CPack/WiX/cmCPackWIXGenerator.cxx | 5 ++--- Source/CPack/cmCPackDragNDropGenerator.cxx | 4 ++-- Source/CPack/cmCPackGenerator.cxx | 6 +++--- Source/CPack/cmCPackNSISGenerator.cxx | 10 +++++----- Source/CPack/cmCPackOSXX11Generator.cxx | 4 ++-- Source/CPack/cmCPackPackageMakerGenerator.cxx | 4 ++-- Source/CPack/cmCPackProductBuildGenerator.cxx | 4 ++-- Source/CTest/cmCTestBuildAndTestHandler.cxx | 2 +- Source/CTest/cmCTestScriptHandler.cxx | 11 +++++------ Source/CTest/cmCTestTestHandler.cxx | 2 +- Source/CursesDialog/ccmake.cxx | 2 +- Source/CursesDialog/cmCursesForm.h | 4 +++- Source/CursesDialog/cmCursesMainForm.cxx | 3 ++- Source/CursesDialog/cmCursesMainForm.h | 2 +- Source/QtDialog/QCMake.cxx | 6 +++--- Source/QtDialog/QCMake.h | 2 +- Source/cmExtraCodeBlocksGenerator.cxx | 4 ++-- Source/cmExtraCodeLiteGenerator.cxx | 8 ++++---- Source/cmExtraEclipseCDT4Generator.cxx | 7 ++++--- Source/cmExtraKateGenerator.cxx | 4 ++-- Source/cmExtraSublimeTextGenerator.cxx | 2 +- Source/cmGlobalGenerator.cxx | 5 +++-- Source/cmGlobalMSYSMakefileGenerator.cxx | 3 ++- Source/cmGlobalMinGWMakefileGenerator.cxx | 3 ++- Source/cmInstallTargetGenerator.cxx | 2 +- Source/cmLocalGenerator.cxx | 4 ++-- Source/cmLocalVisualStudio7Generator.cxx | 11 ++++------- Source/cmMakefile.cxx | 12 +++++++----- Source/cmMakefile.h | 2 +- Source/cmMakefileTargetGenerator.cxx | 15 +++++++------- Source/cmNinjaTargetGenerator.cxx | 28 +++++++++++++-------------- Source/cmServer.cxx | 7 +++---- Source/cmServer.h | 2 +- Source/cmSiteNameCommand.cxx | 5 ++--- Source/cmSystemTools.cxx | 11 ++++++----- Source/cmSystemTools.h | 10 +++------- Source/cmTryRunCommand.cxx | 4 ++-- Source/cmUtilitySourceCommand.cxx | 2 +- Source/cmakemain.cxx | 25 +++++++++++++----------- Source/cmcmd.cxx | 2 +- 41 files changed, 129 insertions(+), 128 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 8 12:23:03 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 8 Feb 2019 12:23:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-30-g18b0329 Message-ID: <20190208172304.00DB1F9F17@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 18b0329a8165c92cf94b5b97c2425df090c877f0 (commit) via 5228432b45b7ce740b93f2c80c8c7ce6987d4bf1 (commit) via 8e746db6e11f9e017cd04552efaf40235d50363d (commit) from 89ca5d7fdce7730f38a719683059bbe02e6fb19d (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=18b0329a8165c92cf94b5b97c2425df090c877f0 commit 18b0329a8165c92cf94b5b97c2425df090c877f0 Merge: 89ca5d7 5228432 Author: Kyle Edwards AuthorDate: Fri Feb 8 17:14:36 2019 +0000 Commit: Kitware Robot CommitDate: Fri Feb 8 12:14:46 2019 -0500 Merge topic 'cmake_parse_arguments-keywords_missing_values' 5228432b45 cmake_parse_arguments: add KEYWORDS_MISSING_VALUES 8e746db6e1 cmake_parse_arguments: Factor out part of implementation for re-use Acked-by: Kitware Robot Merge-request: !2910 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5228432b45b7ce740b93f2c80c8c7ce6987d4bf1 commit 5228432b45b7ce740b93f2c80c8c7ce6987d4bf1 Author: Torsten Robitzki AuthorDate: Mon Feb 4 20:39:25 2019 +0100 Commit: Kyle Edwards CommitDate: Thu Feb 7 12:59:10 2019 -0500 cmake_parse_arguments: add KEYWORDS_MISSING_VALUES Add KEYWORDS_MISSING_VALUES output variable to cmake_parse_arguments() to allow to detect keywords that received no values. Fixes: #18706 diff --git a/Help/command/cmake_parse_arguments.rst b/Help/command/cmake_parse_arguments.rst index c8327e2..196d90f 100644 --- a/Help/command/cmake_parse_arguments.rst +++ b/Help/command/cmake_parse_arguments.rst @@ -59,6 +59,11 @@ All remaining arguments are collected in a variable where recognized. This can be checked afterwards to see whether your macro was called with unrecognized parameters. +```` and ```` that where given no +values at all are collected in a variable ``_KEYWORDS_MISSING_VALUES`` +that will be undefined if all keywords received values. This can be checked +to see if there where keywords without any values given. + As an example here a ``my_install()`` macro, which takes similar arguments as the real :command:`install` command: @@ -77,7 +82,7 @@ Assume ``my_install()`` has been called like this: .. code-block:: cmake - my_install(TARGETS foo bar DESTINATION bin OPTIONAL blub) + my_install(TARGETS foo bar DESTINATION bin OPTIONAL blub CONFIGURATIONS) After the ``cmake_parse_arguments`` call the macro will have set or undefined the following variables:: @@ -89,6 +94,8 @@ the following variables:: MY_INSTALL_TARGETS = "foo;bar" MY_INSTALL_CONFIGURATIONS # was not used MY_INSTALL_UNPARSED_ARGUMENTS = "blub" # nothing expected after "OPTIONAL" + MY_INSTALL_KEYWORDS_MISSING_VALUES = "CONFIGURATIONS" + # No value for "CONFIGURATIONS" given You can then continue and process these variables. @@ -97,5 +104,6 @@ one_value_keyword another recognized keyword follows, this is interpreted as the beginning of the new option. E.g. ``my_install(TARGETS foo DESTINATION OPTIONAL)`` would result in ``MY_INSTALL_DESTINATION`` set to ``"OPTIONAL"``, but as ``OPTIONAL`` -is a keyword itself ``MY_INSTALL_DESTINATION`` will be empty and -``MY_INSTALL_OPTIONAL`` will therefore be set to ``TRUE``. +is a keyword itself ``MY_INSTALL_DESTINATION`` will be empty (but added +to ``MY_INSTALL_KEYWORDS_MISSING_VALUES``) and ``MY_INSTALL_OPTIONAL`` will +therefore be set to ``TRUE``. diff --git a/Help/release/dev/cmake_parse_arguments-keywords_missing_values.rst b/Help/release/dev/cmake_parse_arguments-keywords_missing_values.rst new file mode 100644 index 0000000..c7fe96b --- /dev/null +++ b/Help/release/dev/cmake_parse_arguments-keywords_missing_values.rst @@ -0,0 +1,6 @@ +cmake_parse_arguments-keywords_missing_values +--------------------------------------------- + +* The :command:`cmake_parse_arguments` command gained an additional + ``_KEYWORDS_MISSING_VALUES`` output variable to report + keyword arguments that were given by the caller with no values. diff --git a/Source/cmParseArgumentsCommand.cxx b/Source/cmParseArgumentsCommand.cxx index cef0704..6231aab 100644 --- a/Source/cmParseArgumentsCommand.cxx +++ b/Source/cmParseArgumentsCommand.cxx @@ -14,7 +14,7 @@ class cmExecutionStatus; -static std::string escape_arg(const std::string& arg) +static std::string EscapeArg(const std::string& arg) { // replace ";" with "\;" so output argument lists will split correctly std::string escapedArg; @@ -28,7 +28,7 @@ static std::string escape_arg(const std::string& arg) } namespace { -enum InsideValues +enum insideValues { NONE, SINGLE, @@ -38,6 +38,22 @@ enum InsideValues typedef std::map options_map; typedef std::map single_map; typedef std::map> multi_map; +typedef std::set options_set; +} + +// function to be called every time, a new key word was parsed or all +// parameters where parsed. +static void DetectKeywordsMissingValues(insideValues currentState, + const std::string& currentArgName, + int& argumentsFound, + options_set& keywordsMissingValues) +{ + if (currentState == SINGLE || + (currentState == MULTI && argumentsFound == 0)) { + keywordsMissingValues.insert(currentArgName); + } + + argumentsFound = 0; } static void PassParsedArguments(const std::string& prefix, @@ -45,7 +61,8 @@ static void PassParsedArguments(const std::string& prefix, const options_map& options, const single_map& singleValArgs, const multi_map& multiValArgs, - const std::vector& unparsed) + const std::vector& unparsed, + const options_set& keywordsMissingValues) { for (auto const& iter : options) { makefile.AddDefinition(prefix + iter.first, @@ -75,6 +92,14 @@ static void PassParsedArguments(const std::string& prefix, } else { makefile.RemoveDefinition(prefix + "UNPARSED_ARGUMENTS"); } + + if (!keywordsMissingValues.empty()) { + makefile.AddDefinition( + prefix + "KEYWORDS_MISSING_VALUES", + cmJoin(cmMakeRange(keywordsMissingValues), ";").c_str()); + } else { + makefile.RemoveDefinition(prefix + "KEYWORDS_MISSING_VALUES"); + } } bool cmParseArgumentsCommand::InitialPass(std::vector const& args, @@ -161,7 +186,7 @@ bool cmParseArgumentsCommand::InitialPass(std::vector const& args, multiValArgs[iter]; // default initialize } - InsideValues insideValues = NONE; + insideValues insideValues = NONE; std::string currentArgName; list.clear(); @@ -197,10 +222,15 @@ bool cmParseArgumentsCommand::InitialPass(std::vector const& args, } } + options_set keywordsMissingValues; + int multiArgumentsFound = 0; + // iterate over the arguments list and fill in the values where applicable for (std::string const& arg : list) { const options_map::iterator optIter = options.find(arg); if (optIter != options.end()) { + DetectKeywordsMissingValues(insideValues, currentArgName, + multiArgumentsFound, keywordsMissingValues); insideValues = NONE; optIter->second = true; continue; @@ -208,6 +238,8 @@ bool cmParseArgumentsCommand::InitialPass(std::vector const& args, const single_map::iterator singleIter = singleValArgs.find(arg); if (singleIter != singleValArgs.end()) { + DetectKeywordsMissingValues(insideValues, currentArgName, + multiArgumentsFound, keywordsMissingValues); insideValues = SINGLE; currentArgName = arg; continue; @@ -215,6 +247,8 @@ bool cmParseArgumentsCommand::InitialPass(std::vector const& args, const multi_map::iterator multiIter = multiValArgs.find(arg); if (multiIter != multiValArgs.end()) { + DetectKeywordsMissingValues(insideValues, currentArgName, + multiArgumentsFound, keywordsMissingValues); insideValues = MULTI; currentArgName = arg; continue; @@ -226,15 +260,18 @@ bool cmParseArgumentsCommand::InitialPass(std::vector const& args, insideValues = NONE; break; case MULTI: + ++multiArgumentsFound; if (parseFromArgV) { - multiValArgs[currentArgName].push_back(escape_arg(arg)); + multiValArgs[currentArgName].push_back(EscapeArg(arg)); } else { multiValArgs[currentArgName].push_back(arg); } break; default: + multiArgumentsFound = 0; + if (parseFromArgV) { - unparsed.push_back(escape_arg(arg)); + unparsed.push_back(EscapeArg(arg)); } else { unparsed.push_back(arg); } @@ -242,8 +279,11 @@ bool cmParseArgumentsCommand::InitialPass(std::vector const& args, } } + DetectKeywordsMissingValues(insideValues, currentArgName, + multiArgumentsFound, keywordsMissingValues); + PassParsedArguments(prefix, *this->Makefile, options, singleValArgs, - multiValArgs, unparsed); + multiValArgs, unparsed, keywordsMissingValues); return true; } diff --git a/Tests/RunCMake/cmake_parse_arguments/KeyWordsMissingValues.cmake b/Tests/RunCMake/cmake_parse_arguments/KeyWordsMissingValues.cmake new file mode 100644 index 0000000..561f9c0 --- /dev/null +++ b/Tests/RunCMake/cmake_parse_arguments/KeyWordsMissingValues.cmake @@ -0,0 +1,133 @@ +include(${CMAKE_CURRENT_LIST_DIR}/test_utils.cmake) + +# No keywords that miss any values, _KEYWORDS_MISSING_VALUES should not be defined +cmake_parse_arguments(PREF "" "P1" "P2" P1 p1 P2 p2_a p2_b) + +TEST(PREF_KEYWORDS_MISSING_VALUES "UNDEFINED") + +# Keyword should even be deleted from the actual scope +set(PREF_KEYWORDS_MISSING_VALUES "What ever") +cmake_parse_arguments(PREF "" "" "") + +TEST(PREF_KEYWORDS_MISSING_VALUES "UNDEFINED") + +# Given missing keywords as only option +cmake_parse_arguments(PREF "" "P1" "P2" P1) + +TEST(PREF_KEYWORDS_MISSING_VALUES "P1") +TEST(PREF_P1 "UNDEFINED") +TEST(PREF_UNPARSED_ARGUMENTS "UNDEFINED") + +# Mixed with unparsed arguments +cmake_parse_arguments(UPREF "" "P1" "P2" A B P2 C P1) +TEST(UPREF_KEYWORDS_MISSING_VALUES "P1") +TEST(UPREF_UNPARSED_ARGUMENTS A B) + +# one_value_keyword followed by option +cmake_parse_arguments(REF "OP" "P1" "" P1 OP) +TEST(REF_KEYWORDS_MISSING_VALUES "P1") +TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") +TEST(REF_OP "TRUE") + +# Counter Test +cmake_parse_arguments(REF "OP" "P1" "" P1 p1 OP) +TEST(REF_KEYWORDS_MISSING_VALUES "UNDEFINED") +TEST(REF_P1 "p1") +TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") +TEST(REF_OP "TRUE") + +# one_value_keyword followed by a one_value_keyword +cmake_parse_arguments(REF "" "P1;P2" "" P1 P2 p2) +TEST(REF_KEYWORDS_MISSING_VALUES "P1") +TEST(REF_P1 "UNDEFINED") +TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") +TEST(REF_P2 "p2") + +# Counter Test +cmake_parse_arguments(REF "" "P1;P2" "" P1 p1 P2 p2) +TEST(REF_KEYWORDS_MISSING_VALUES "UNDEFINED") +TEST(REF_P1 "p1") +TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") +TEST(REF_P2 "p2") + +# one_value_keyword followed by a multi_value_keywords +cmake_parse_arguments(REF "" "P1" "P2" P1 P2 p1 p2) +TEST(REF_KEYWORDS_MISSING_VALUES "P1") +TEST(REF_P1 "UNDEFINED") +TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") +TEST(REF_P2 p1 p2) + +# Counter Examples +cmake_parse_arguments(REF "" "P1" "P2" P1 p1 P2 p1 p2) +TEST(REF_KEYWORDS_MISSING_VALUES "UNDEFINED") +TEST(REF_P1 "p1") +TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") +TEST(REF_P2 p1 p2) + +# multi_value_keywords as only option +cmake_parse_arguments(REF "" "P1" "P2" P2) +TEST(REF_KEYWORDS_MISSING_VALUES "P2") +TEST(REF_P1 "UNDEFINED") +TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") +TEST(REF_P2 "UNDEFINED") + +# multi_value_keywords followed by option +cmake_parse_arguments(REF "O1" "" "P1" P1 O1) +TEST(REF_KEYWORDS_MISSING_VALUES "P1") +TEST(REF_P1 "UNDEFINED") +TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") +TEST(REF_O1 "TRUE") + +# counter test +cmake_parse_arguments(REF "O1" "" "P1" P1 p1 p2 O1) +TEST(REF_KEYWORDS_MISSING_VALUES "UNDEFINED") +TEST(REF_P1 "p1;p2") +TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") +TEST(REF_O1 "TRUE") + +# multi_value_keywords followed by one_value_keyword +cmake_parse_arguments(REF "" "P1" "P2" P2 P1 p1) +TEST(REF_KEYWORDS_MISSING_VALUES "P2") +TEST(REF_P1 "p1") +TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") +TEST(REF_P2 "UNDEFINED") + +# counter test +cmake_parse_arguments(REF "" "P1" "P2" P2 p2 P1 p1) +TEST(REF_KEYWORDS_MISSING_VALUES "UNDEFINED") +TEST(REF_P1 "p1") +TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") +TEST(REF_P2 "p2") + +# one_value_keyword as last argument +cmake_parse_arguments(REF "" "P1" "P2" A P2 p2 P1) +TEST(REF_KEYWORDS_MISSING_VALUES "P1") +TEST(REF_P1 "UNDEFINED") +TEST(REF_UNPARSED_ARGUMENTS "A") +TEST(REF_P2 "p2") + +# multi_value_keywords as last argument +cmake_parse_arguments(REF "" "P1" "P2" P1 p1 P2) +TEST(REF_KEYWORDS_MISSING_VALUES "P2") +TEST(REF_P1 "p1") +TEST(REF_P2 "UNDEFINED") + +# Multiple one_value_keyword and multi_value_keywords at different places +cmake_parse_arguments(REF "O1;O2" "P1" "P2" P1 O1 P2 O2) +TEST(REF_KEYWORDS_MISSING_VALUES P1 P2) +TEST(REF_P1 "UNDEFINED") +TEST(REF_P2 "UNDEFINED") + +# Duplicated missing keywords +cmake_parse_arguments(REF "O1;O2" "P1" "P2" P1 O1 P2 O2 P1 P2) +TEST(REF_KEYWORDS_MISSING_VALUES P1 P2) +TEST(REF_P1 "UNDEFINED") +TEST(REF_P2 "UNDEFINED") + +# make sure keywords that are never used, don't get added to KEYWORDS_MISSING_VALUES +cmake_parse_arguments(REF "O1;O2" "P1" "P2") +TEST(REF_KEYWORDS_MISSING_VALUES "UNDEFINED") +TEST(REF_O1 FALSE) +TEST(REF_O2 FALSE) +TEST(REF_P1 UNDEFINED) +TEST(REF_P2 UNDEFINED) diff --git a/Tests/RunCMake/cmake_parse_arguments/RunCMakeTest.cmake b/Tests/RunCMake/cmake_parse_arguments/RunCMakeTest.cmake index 1e15b3b..505840d 100644 --- a/Tests/RunCMake/cmake_parse_arguments/RunCMakeTest.cmake +++ b/Tests/RunCMake/cmake_parse_arguments/RunCMakeTest.cmake @@ -11,3 +11,4 @@ run_cmake(BadArgvN2) run_cmake(BadArgvN3) run_cmake(BadArgvN4) run_cmake(CornerCasesArgvN) +run_cmake(KeyWordsMissingValues) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8e746db6e11f9e017cd04552efaf40235d50363d commit 8e746db6e11f9e017cd04552efaf40235d50363d Author: Torsten Robitzki AuthorDate: Mon Feb 4 20:29:41 2019 +0100 Commit: Brad King CommitDate: Wed Feb 6 14:46:52 2019 -0500 cmake_parse_arguments: Factor out part of implementation for re-use diff --git a/Source/cmParseArgumentsCommand.cxx b/Source/cmParseArgumentsCommand.cxx index 796974c..cef0704 100644 --- a/Source/cmParseArgumentsCommand.cxx +++ b/Source/cmParseArgumentsCommand.cxx @@ -27,6 +27,56 @@ static std::string escape_arg(const std::string& arg) return escapedArg; } +namespace { +enum InsideValues +{ + NONE, + SINGLE, + MULTI +}; + +typedef std::map options_map; +typedef std::map single_map; +typedef std::map> multi_map; +} + +static void PassParsedArguments(const std::string& prefix, + cmMakefile& makefile, + const options_map& options, + const single_map& singleValArgs, + const multi_map& multiValArgs, + const std::vector& unparsed) +{ + for (auto const& iter : options) { + makefile.AddDefinition(prefix + iter.first, + iter.second ? "TRUE" : "FALSE"); + } + + for (auto const& iter : singleValArgs) { + if (!iter.second.empty()) { + makefile.AddDefinition(prefix + iter.first, iter.second.c_str()); + } else { + makefile.RemoveDefinition(prefix + iter.first); + } + } + + for (auto const& iter : multiValArgs) { + if (!iter.second.empty()) { + makefile.AddDefinition(prefix + iter.first, + cmJoin(cmMakeRange(iter.second), ";").c_str()); + } else { + makefile.RemoveDefinition(prefix + iter.first); + } + } + + if (!unparsed.empty()) { + makefile.AddDefinition(prefix + "UNPARSED_ARGUMENTS", + cmJoin(cmMakeRange(unparsed), ";").c_str()); + } else { + makefile.RemoveDefinition(prefix + "UNPARSED_ARGUMENTS"); + } +} + bool cmParseArgumentsCommand::InitialPass(std::vector const& args, cmExecutionStatus&) { @@ -67,9 +117,6 @@ bool cmParseArgumentsCommand::InitialPass(std::vector const& args, // define the result maps holding key/value pairs for // options, single values and multi values - typedef std::map options_map; - typedef std::map single_map; - typedef std::map> multi_map; options_map options; single_map singleValArgs; multi_map multiValArgs; @@ -114,12 +161,7 @@ bool cmParseArgumentsCommand::InitialPass(std::vector const& args, multiValArgs[iter]; // default initialize } - enum insideValues - { - NONE, - SINGLE, - MULTI - } insideValues = NONE; + InsideValues insideValues = NONE; std::string currentArgName; list.clear(); @@ -200,36 +242,8 @@ bool cmParseArgumentsCommand::InitialPass(std::vector const& args, } } - // now iterate over the collected values and update their definition - // within the current scope. undefine if necessary. - - for (auto const& iter : options) { - this->Makefile->AddDefinition(prefix + iter.first, - iter.second ? "TRUE" : "FALSE"); - } - for (auto const& iter : singleValArgs) { - if (!iter.second.empty()) { - this->Makefile->AddDefinition(prefix + iter.first, iter.second.c_str()); - } else { - this->Makefile->RemoveDefinition(prefix + iter.first); - } - } - - for (auto const& iter : multiValArgs) { - if (!iter.second.empty()) { - this->Makefile->AddDefinition( - prefix + iter.first, cmJoin(cmMakeRange(iter.second), ";").c_str()); - } else { - this->Makefile->RemoveDefinition(prefix + iter.first); - } - } - - if (!unparsed.empty()) { - this->Makefile->AddDefinition(prefix + "UNPARSED_ARGUMENTS", - cmJoin(cmMakeRange(unparsed), ";").c_str()); - } else { - this->Makefile->RemoveDefinition(prefix + "UNPARSED_ARGUMENTS"); - } + PassParsedArguments(prefix, *this->Makefile, options, singleValArgs, + multiValArgs, unparsed); return true; } ----------------------------------------------------------------------- Summary of changes: Help/command/cmake_parse_arguments.rst | 14 ++- ...ake_parse_arguments-keywords_missing_values.rst | 6 + Source/cmParseArgumentsCommand.cxx | 136 ++++++++++++++------- .../KeyWordsMissingValues.cmake | 133 ++++++++++++++++++++ .../cmake_parse_arguments/RunCMakeTest.cmake | 1 + 5 files changed, 246 insertions(+), 44 deletions(-) create mode 100644 Help/release/dev/cmake_parse_arguments-keywords_missing_values.rst create mode 100644 Tests/RunCMake/cmake_parse_arguments/KeyWordsMissingValues.cmake hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 8 13:53:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 8 Feb 2019 13:53:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-34-ga3ec65c Message-ID: <20190208185304.3760D103498@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 a3ec65c3e8758c5d70743a0241fd6838879fd950 (commit) via 3b87e7aaa3f8a7c9c2b9d552241d20292ee7fd7c (commit) via 48b377a08fd5269eb2473adf6776d45fffe448ff (commit) via e729f2b3fdb8b160c272794d146c93a106ea3648 (commit) from 18b0329a8165c92cf94b5b97c2425df090c877f0 (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=a3ec65c3e8758c5d70743a0241fd6838879fd950 commit a3ec65c3e8758c5d70743a0241fd6838879fd950 Merge: 48b377a 3b87e7a Author: Kyle Edwards AuthorDate: Fri Feb 8 13:48:26 2019 -0500 Commit: Kyle Edwards CommitDate: Fri Feb 8 13:48:26 2019 -0500 Merge branch 'release-3.14' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=48b377a08fd5269eb2473adf6776d45fffe448ff commit 48b377a08fd5269eb2473adf6776d45fffe448ff Merge: 18b0329 e729f2b Author: Kyle Edwards AuthorDate: Fri Feb 8 18:45:29 2019 +0000 Commit: Kitware Robot CommitDate: Fri Feb 8 13:45:35 2019 -0500 Merge topic 'file_create_link_release_note' e729f2b3fd Help: Add notes for `file(CREATE_LINK)` subcommand Acked-by: Kitware Robot Merge-request: !2942 ----------------------------------------------------------------------- Summary of changes: Help/release/3.14.rst | 3 +++ 1 file changed, 3 insertions(+) hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 8 13:53:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 8 Feb 2019 13:53:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.14.0-rc1-4-g3b87e7a Message-ID: <20190208185304.4AB5110349F@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 3b87e7aaa3f8a7c9c2b9d552241d20292ee7fd7c (commit) via e729f2b3fdb8b160c272794d146c93a106ea3648 (commit) from 12b8e41c07c2cad4f4e44f40f78d8ae61a18568e (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/release/3.14.rst | 3 +++ 1 file changed, 3 insertions(+) hooks/post-receive -- CMake From kwrobot at kitware.com Sat Feb 9 00:03:07 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Sat, 9 Feb 2019 00:03:07 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-35-g2f2295e Message-ID: <20190209050307.150461266F0@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 2f2295ec9ec35632b89213ed857e3bae4398f998 (commit) from a3ec65c3e8758c5d70743a0241fd6838879fd950 (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=2f2295ec9ec35632b89213ed857e3bae4398f998 commit 2f2295ec9ec35632b89213ed857e3bae4398f998 Author: Kitware Robot AuthorDate: Sat Feb 9 00:01:07 2019 -0500 Commit: Kitware Robot CommitDate: Sat Feb 9 00:01:07 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 63d0f9a..7487622 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 14) -set(CMake_VERSION_PATCH 20190208) +set(CMake_VERSION_PATCH 20190209) #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 10 00:03:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Sun, 10 Feb 2019 00:03:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-36-ge7d3197 Message-ID: <20190210050304.258A7111F0E@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 e7d319714d3b45bf6ce94cab04fc4cc6f20032eb (commit) from 2f2295ec9ec35632b89213ed857e3bae4398f998 (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=e7d319714d3b45bf6ce94cab04fc4cc6f20032eb commit e7d319714d3b45bf6ce94cab04fc4cc6f20032eb Author: Kitware Robot AuthorDate: Sun Feb 10 00:01:05 2019 -0500 Commit: Kitware Robot CommitDate: Sun Feb 10 00:01:05 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 7487622..3f20777 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 14) -set(CMake_VERSION_PATCH 20190209) +set(CMake_VERSION_PATCH 20190210) #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 11 00:03:08 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 11 Feb 2019 00:03:08 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-37-g56c2eab Message-ID: <20190211050309.F30CF11212D@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 56c2eab1e23fa92594bf0696ea351d77ae3aebe8 (commit) from e7d319714d3b45bf6ce94cab04fc4cc6f20032eb (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=56c2eab1e23fa92594bf0696ea351d77ae3aebe8 commit 56c2eab1e23fa92594bf0696ea351d77ae3aebe8 Author: Kitware Robot AuthorDate: Mon Feb 11 00:01:16 2019 -0500 Commit: Kitware Robot CommitDate: Mon Feb 11 00:01:16 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 3f20777..6c6b3a0 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 14) -set(CMake_VERSION_PATCH 20190210) +set(CMake_VERSION_PATCH 20190211) #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 11 07:53:08 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 11 Feb 2019 07:53:08 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-41-g5651568 Message-ID: <20190211125308.65E581282C3@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 5651568d14ee227bcc8edfa3801e1847ff89a23e (commit) via d9ddb30e92ce1c9c98ce6603660b631cd42bfed0 (commit) via bcd99fac60ee3ad9a3c61d88a545d1800e605b10 (commit) via f87e724e8c193df3b9b30ddd0b9d2ec7c6ac2ba7 (commit) from 56c2eab1e23fa92594bf0696ea351d77ae3aebe8 (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=5651568d14ee227bcc8edfa3801e1847ff89a23e commit 5651568d14ee227bcc8edfa3801e1847ff89a23e Merge: d9ddb30 bcd99fa Author: Brad King AuthorDate: Mon Feb 11 12:45:05 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 11 07:45:23 2019 -0500 Merge topic 'ghs-updates' bcd99fac60 GHS: Document usage of GHS_NO_SOURCE_GROUP_FILE Acked-by: Kitware Robot Merge-request: !2943 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d9ddb30e92ce1c9c98ce6603660b631cd42bfed0 commit d9ddb30e92ce1c9c98ce6603660b631cd42bfed0 Merge: 56c2eab f87e724 Author: Brad King AuthorDate: Mon Feb 11 12:44:31 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 11 07:44:40 2019 -0500 Merge topic 'fix-exclude-dir-with-iface' f87e724e8c Fix EXCLUDE_FROM_ALL on directory with an interface library Acked-by: Kitware Robot Merge-request: !2937 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bcd99fac60ee3ad9a3c61d88a545d1800e605b10 commit bcd99fac60ee3ad9a3c61d88a545d1800e605b10 Author: Fred Baksik AuthorDate: Fri Feb 8 11:09:33 2019 -0500 Commit: Fred Baksik CommitDate: Fri Feb 8 13:07:00 2019 -0500 GHS: Document usage of GHS_NO_SOURCE_GROUP_FILE -- Also change variable name to CMAKE_GHS_NO_SOURCE_GROUP_FILE diff --git a/Help/generator/Green Hills MULTI.rst b/Help/generator/Green Hills MULTI.rst index bfe671f..e474682 100644 --- a/Help/generator/Green Hills MULTI.rst +++ b/Help/generator/Green Hills MULTI.rst @@ -59,6 +59,7 @@ Customizations are available through the following cache variables: The following properties are available: * :prop_tgt:`GHS_INTEGRITY_APP` +* :prop_tgt:`GHS_NO_SOURCE_GROUP_FILE` .. note:: This generator is deemed experimental as of CMake |release| diff --git a/Help/manual/cmake-properties.7.rst b/Help/manual/cmake-properties.7.rst index e1de134..4366c0d 100644 --- a/Help/manual/cmake-properties.7.rst +++ b/Help/manual/cmake-properties.7.rst @@ -195,6 +195,7 @@ Properties on Targets /prop_tgt/FRAMEWORK_VERSION /prop_tgt/GENERATOR_FILE_NAME /prop_tgt/GHS_INTEGRITY_APP + /prop_tgt/GHS_NO_SOURCE_GROUP_FILE /prop_tgt/GNUtoMS /prop_tgt/HAS_CXX /prop_tgt/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index 1698734..83c88a5 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -345,6 +345,7 @@ Variables that Control the Build /variable/CMAKE_FOLDER /variable/CMAKE_Fortran_FORMAT /variable/CMAKE_Fortran_MODULE_DIRECTORY + /variable/CMAKE_GHS_NO_SOURCE_GROUP_FILE /variable/CMAKE_GLOBAL_AUTOGEN_TARGET /variable/CMAKE_GLOBAL_AUTOGEN_TARGET_NAME /variable/CMAKE_GLOBAL_AUTORCC_TARGET diff --git a/Help/prop_tgt/GHS_NO_SOURCE_GROUP_FILE.rst b/Help/prop_tgt/GHS_NO_SOURCE_GROUP_FILE.rst new file mode 100644 index 0000000..11ce0b22 --- /dev/null +++ b/Help/prop_tgt/GHS_NO_SOURCE_GROUP_FILE.rst @@ -0,0 +1,13 @@ +GHS_NO_SOURCE_GROUP_FILE +------------------------ + +``ON`` / ``OFF`` boolean to control if the project file for a target should +be one single file or multiple files. + +The default behavior or when the property is ``OFF`` is to generate a project +file for the target and then a sub-project file for each source group. + +When this property is ``ON`` or if :variable:`CMAKE_GHS_NO_SOURCE_GROUP_FILE` +is ``ON`` then only a single project file is generated for the target. + +Supported on :generator:`Green Hills MULTI`. diff --git a/Help/variable/CMAKE_GHS_NO_SOURCE_GROUP_FILE.rst b/Help/variable/CMAKE_GHS_NO_SOURCE_GROUP_FILE.rst new file mode 100644 index 0000000..b6768a1 --- /dev/null +++ b/Help/variable/CMAKE_GHS_NO_SOURCE_GROUP_FILE.rst @@ -0,0 +1,6 @@ +CMAKE_GHS_NO_SOURCE_GROUP_FILE +------------------------------ + +``ON`` / ``OFF`` boolean to control if the project file for a target should +be one single file or multiple files. Refer to +:prop_tgt:`GHS_NO_SOURCE_GROUP_FILE` for further details. diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx index 04a8b3c..5fe350c 100644 --- a/Source/cmGhsMultiTargetGenerator.cxx +++ b/Source/cmGhsMultiTargetGenerator.cxx @@ -454,7 +454,7 @@ void cmGhsMultiTargetGenerator::WriteSources(std::ostream& fout_proj) cmSystemTools::IsOn( this->GeneratorTarget->GetProperty("GHS_NO_SOURCE_GROUP_FILE")) || cmSystemTools::IsOn( - this->Makefile->GetDefinition("GHS_NO_SOURCE_GROUP_FILE")); + this->Makefile->GetDefinition("CMAKE_GHS_NO_SOURCE_GROUP_FILE")); if (useProjectFile || sg.empty()) { fout = &fout_proj; } else { diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index ed98d97..6c888cc 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -2368,7 +2368,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release add_test_GhsMulti_rename_install(EXEC_AND_LIB) add_test_GhsMulti(multiple_source_groups GhsMultiSrcGroups Default "") add_test_GhsMulti(multiple_source_groups_folders GhsMultiSrcGroups PropFolders "-DTEST_PROP=ON") - add_test_GhsMulti(multiple_source_groups_all_folders GhsMultiSrcGroups AllFolders "-DGHS_NO_SOURCE_GROUP_FILE=ON") + add_test_GhsMulti(multiple_source_groups_all_folders GhsMultiSrcGroups AllFolders "-DCMAKE_GHS_NO_SOURCE_GROUP_FILE=ON") add_test_GhsMulti(unsupported_targets GhsMultiUnsupportedTargets "" "") add_test_GhsMulti(object_library GhsMultiObjectLibrary "" "") add_test_GhsMulti(exclude GhsMultiExclude "" "" https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f87e724e8c193df3b9b30ddd0b9d2ec7c6ac2ba7 commit f87e724e8c193df3b9b30ddd0b9d2ec7c6ac2ba7 Author: Brad King AuthorDate: Fri Feb 8 08:13:23 2019 -0500 Commit: Brad King CommitDate: Fri Feb 8 08:17:48 2019 -0500 Fix EXCLUDE_FROM_ALL on directory with an interface library Since commit dc6888573d (Pass EXCLUDE_FROM_ALL from directory to targets, 2019-01-15, v3.14.0-rc1~83^2) we automatically forward the `EXCLUDE_FROM_ALL` to targets as they are created. This regressed support for interface libraries on which the property is not allowed. Skip forwarding the `EXCLUDE_FROM_ALL` property for interface libraries. It is not needed on them because they do not participate in the generated build system anyway. Fixes: #18896 diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index ab139c0..7e33bda 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1985,7 +1985,9 @@ cmTarget* cmMakefile::AddLibrary(const std::string& lname, // over changes in CMakeLists.txt, making the information stale and // hence useless. target->ClearDependencyInformation(*this); - if (excludeFromAll || this->GetPropertyAsBool("EXCLUDE_FROM_ALL")) { + if (excludeFromAll || + (type != cmStateEnums::INTERFACE_LIBRARY && + this->GetPropertyAsBool("EXCLUDE_FROM_ALL"))) { target->SetProperty("EXCLUDE_FROM_ALL", "TRUE"); } target->AddSources(srcs); diff --git a/Tests/InterfaceLibrary/CMakeLists.txt b/Tests/InterfaceLibrary/CMakeLists.txt index 6aae09a..954c02d 100644 --- a/Tests/InterfaceLibrary/CMakeLists.txt +++ b/Tests/InterfaceLibrary/CMakeLists.txt @@ -47,6 +47,7 @@ target_link_libraries(InterfaceLibrary add_dependencies(InterfaceLibrary item_fake_tgt) add_subdirectory(libsdir) +add_subdirectory(excluded EXCLUDE_FROM_ALL) add_executable(sharedlibtestexe sharedlibtestexe.cpp) target_link_libraries(sharedlibtestexe shared_iface imported::iface) diff --git a/Tests/InterfaceLibrary/excluded/CMakeLists.txt b/Tests/InterfaceLibrary/excluded/CMakeLists.txt new file mode 100644 index 0000000..69a6807 --- /dev/null +++ b/Tests/InterfaceLibrary/excluded/CMakeLists.txt @@ -0,0 +1 @@ +add_library(excluded_iface INTERFACE) ----------------------------------------------------------------------- Summary of changes: Help/generator/Green Hills MULTI.rst | 1 + Help/manual/cmake-properties.7.rst | 1 + Help/manual/cmake-variables.7.rst | 1 + Help/prop_tgt/GHS_NO_SOURCE_GROUP_FILE.rst | 13 +++++++++++++ Help/variable/CMAKE_GHS_NO_SOURCE_GROUP_FILE.rst | 6 ++++++ Source/cmGhsMultiTargetGenerator.cxx | 2 +- Source/cmMakefile.cxx | 4 +++- Tests/CMakeLists.txt | 2 +- Tests/InterfaceLibrary/CMakeLists.txt | 1 + Tests/InterfaceLibrary/excluded/CMakeLists.txt | 1 + 10 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 Help/prop_tgt/GHS_NO_SOURCE_GROUP_FILE.rst create mode 100644 Help/variable/CMAKE_GHS_NO_SOURCE_GROUP_FILE.rst create mode 100644 Tests/InterfaceLibrary/excluded/CMakeLists.txt hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 11 08:13:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 11 Feb 2019 08:13:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-52-g8a1d25a Message-ID: <20190211131304.9844B113623@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 8a1d25afdf92cabab88598cc9b9e5a9fb2a9493b (commit) via 4b37b4f1bb785a305ab742f37e5268d4cffef693 (commit) via 17de1eea806d7ba87a4ba6ad1073ced5f7ea9473 (commit) via 4a944deef99a8d2cfd676a3517b24fdf063a1f8c (commit) via 9e309cd4f0266144f269cab9006b51c252e25380 (commit) via 2d701b78de30f8b0380abe07bf80cf2babaf68ae (commit) via 440b08e4f0f59f47b53eb8310832bd4a1b1eb912 (commit) via 88031dd09a86aab66ece60d0d96c3ee352db990a (commit) via 3b58b647aedd0f4717c3f22bb7d3e8b0b559f099 (commit) via 01b2d6ab7465e7f22fb821876027df86b0c8f363 (commit) via 15bdbec0176e3aa620bb5bda3631819c5ca18eaf (commit) from 5651568d14ee227bcc8edfa3801e1847ff89a23e (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=8a1d25afdf92cabab88598cc9b9e5a9fb2a9493b commit 8a1d25afdf92cabab88598cc9b9e5a9fb2a9493b Merge: 4b37b4f 440b08e Author: Brad King AuthorDate: Mon Feb 11 13:08:24 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 11 08:08:56 2019 -0500 Merge topic 'ctest-exit-code-int64' 440b08e4f0 CTest: Represent process exit codes as 64-bit signed integer Acked-by: Kitware Robot Merge-request: !2944 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4b37b4f1bb785a305ab742f37e5268d4cffef693 commit 4b37b4f1bb785a305ab742f37e5268d4cffef693 Merge: 17de1ee 01b2d6a Author: Brad King AuthorDate: Mon Feb 11 13:08:13 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 11 08:08:22 2019 -0500 Merge topic 'modernize-for-loops' 01b2d6ab74 Modernize: Use ranged for-loops when possible 15bdbec017 cmAlgorithms: Make cmRange advance/retreat safe for rvalues Acked-by: Kitware Robot Acked-by: Daniel Pfeifer Merge-request: !2901 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=17de1eea806d7ba87a4ba6ad1073ced5f7ea9473 commit 17de1eea806d7ba87a4ba6ad1073ced5f7ea9473 Merge: 4a944de 9e309cd Author: Brad King AuthorDate: Mon Feb 11 08:05:58 2019 -0500 Commit: Brad King CommitDate: Mon Feb 11 08:05:58 2019 -0500 Merge branch 'release-3.14' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4a944deef99a8d2cfd676a3517b24fdf063a1f8c commit 4a944deef99a8d2cfd676a3517b24fdf063a1f8c Merge: 5651568 2d701b7 Author: Brad King AuthorDate: Mon Feb 11 13:05:29 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 11 08:05:36 2019 -0500 Merge topic 'ghs-relnotes' 2d701b78de Help: Update 3.14 release notes for GHS changes Acked-by: Kitware Robot Merge-request: !2934 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=440b08e4f0f59f47b53eb8310832bd4a1b1eb912 commit 440b08e4f0f59f47b53eb8310832bd4a1b1eb912 Author: Zsolt Parragi AuthorDate: Tue Nov 6 20:40:18 2018 +0100 Commit: Brad King CommitDate: Fri Feb 8 14:49:20 2019 -0500 CTest: Represent process exit codes as 64-bit signed integer Exit code constants on Windows, such as `STATUS_NO_MEMORY` do not fit in a 32-bit signed integer type. They do fit in an unsigned 32-bit type, but for compatibility with UNIX semantics we treat exit codes as signed. Use a 64-bit signed integer to handle both. diff --git a/Source/CTest/cmCTestRunTest.cxx b/Source/CTest/cmCTestRunTest.cxx index 7f081ef..5183c6f 100644 --- a/Source/CTest/cmCTestRunTest.cxx +++ b/Source/CTest/cmCTestRunTest.cxx @@ -14,6 +14,7 @@ #include "cmsys/RegularExpression.hxx" #include #include +#include #include #include #include @@ -143,7 +144,7 @@ bool cmCTestRunTest::EndTest(size_t completed, size_t total, bool started) if (res != cmProcess::State::Expired) { this->TimeoutIsForStopTime = false; } - int retVal = this->TestProcess->GetExitValue(); + std::int64_t retVal = this->TestProcess->GetExitValue(); bool forceFail = false; bool skipped = false; bool outputTestErrorsToConsole = false; diff --git a/Source/CTest/cmCTestTestHandler.h b/Source/CTest/cmCTestTestHandler.h index 0b557db..17d5f3f 100644 --- a/Source/CTest/cmCTestTestHandler.h +++ b/Source/CTest/cmCTestTestHandler.h @@ -11,6 +11,7 @@ #include "cmsys/RegularExpression.hxx" #include +#include #include #include #include @@ -153,7 +154,7 @@ public: std::string Reason; std::string FullCommandLine; cmDuration ExecutionTime; - int ReturnValue; + std::int64_t ReturnValue; int Status; std::string ExceptionStatus; bool CompressOutput; diff --git a/Source/CTest/cmProcess.cxx b/Source/CTest/cmProcess.cxx index c03d004..cd2e2f7 100644 --- a/Source/CTest/cmProcess.cxx +++ b/Source/CTest/cmProcess.cxx @@ -11,7 +11,9 @@ #include #include #include -#if !defined(_WIN32) +#if defined(_WIN32) +# include "cm_kwiml.h" +#else # include #endif #include @@ -353,7 +355,7 @@ void cmProcess::OnExit(int64_t exit_status, int term_signal) } // Record exit information. - this->ExitValue = static_cast(exit_status); + this->ExitValue = exit_status; this->Signal = term_signal; this->TotalTime = std::chrono::steady_clock::now() - this->StartTime; // Because of a processor clock scew the runtime may become slightly @@ -539,7 +541,8 @@ std::string cmProcess::GetExitExceptionString() case STATUS_NO_MEMORY: default: char buf[1024]; - _snprintf(buf, 1024, "Exit code 0x%x\n", this->ExitValue); + const char* fmt = "Exit code 0x%" KWIML_INT_PRIx64 "\n"; + _snprintf(buf, 1024, fmt, this->ExitValue); exception_str.assign(buf); } #else diff --git a/Source/CTest/cmProcess.h b/Source/CTest/cmProcess.h index b2d87fa..e5ca17f 100644 --- a/Source/CTest/cmProcess.h +++ b/Source/CTest/cmProcess.h @@ -53,7 +53,7 @@ public: State GetProcessStatus(); int GetId() { return this->Id; } void SetId(int id) { this->Id = id; } - int GetExitValue() { return this->ExitValue; } + int64_t GetExitValue() { return this->ExitValue; } cmDuration GetTotalTime() { return this->TotalTime; } enum class Exception @@ -122,7 +122,7 @@ private: std::vector Arguments; std::vector ProcessArgs; int Id; - int ExitValue; + int64_t ExitValue; }; #endif https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=01b2d6ab7465e7f22fb821876027df86b0c8f363 commit 01b2d6ab7465e7f22fb821876027df86b0c8f363 Author: Artur Ryt AuthorDate: Thu Feb 7 22:39:05 2019 +0100 Commit: Artur Ryt CommitDate: Thu Feb 7 22:39:05 2019 +0100 Modernize: Use ranged for-loops when possible Replaced most manual `const_iterator`-based loops and some reverse-iterator loops with range loops. Fixes: #18858 diff --git a/Source/CPack/cmCPackCygwinBinaryGenerator.cxx b/Source/CPack/cmCPackCygwinBinaryGenerator.cxx index 2119f78..49a9f15 100644 --- a/Source/CPack/cmCPackCygwinBinaryGenerator.cxx +++ b/Source/CPack/cmCPackCygwinBinaryGenerator.cxx @@ -44,10 +44,9 @@ int cmCPackCygwinBinaryGenerator::PackageFiles() // to create the file before the super class is called { cmGeneratedFileStream ofs(manifestFile.c_str()); - for (std::vector::const_iterator i = files.begin(); - i != files.end(); ++i) { + for (std::string const& file : files) { // remove the temp dir and replace with /usr - ofs << (*i).substr(tempdir.size()) << "\n"; + ofs << file.substr(tempdir.size()) << "\n"; } ofs << manifest << "\n"; } diff --git a/Source/CPack/cmCPackPKGGenerator.cxx b/Source/CPack/cmCPackPKGGenerator.cxx index ae227aa..d54ab56 100644 --- a/Source/CPack/cmCPackPKGGenerator.cxx +++ b/Source/CPack/cmCPackPKGGenerator.cxx @@ -66,21 +66,17 @@ void cmCPackPKGGenerator::WriteDistributionFile(const char* metapackageFile) xout.StartElement("choices-outline"); // Emit the outline for the groups - std::map::iterator groupIt; - for (groupIt = this->ComponentGroups.begin(); - groupIt != this->ComponentGroups.end(); ++groupIt) { - if (groupIt->second.ParentGroup == nullptr) { - CreateChoiceOutline(groupIt->second, xout); + for (auto const& group : this->ComponentGroups) { + if (group.second.ParentGroup == nullptr) { + CreateChoiceOutline(group.second, xout); } } // Emit the outline for the non-grouped components - std::map::iterator compIt; - for (compIt = this->Components.begin(); compIt != this->Components.end(); - ++compIt) { - if (!compIt->second.Group) { + for (auto const& comp : this->Components) { + if (!comp.second.Group) { xout.StartElement("line"); - xout.Attribute("choice", compIt->first + "Choice"); + xout.Attribute("choice", comp.first + "Choice"); xout.Content(""); // Avoid self-closing tag. xout.EndElement(); } @@ -94,13 +90,11 @@ void cmCPackPKGGenerator::WriteDistributionFile(const char* metapackageFile) xout.EndElement(); // choices-outline> // Create the actual choices - for (groupIt = this->ComponentGroups.begin(); - groupIt != this->ComponentGroups.end(); ++groupIt) { - CreateChoice(groupIt->second, xout); + for (auto const& group : this->ComponentGroups) { + CreateChoice(group.second, xout); } - for (compIt = this->Components.begin(); compIt != this->Components.end(); - ++compIt) { - CreateChoice(compIt->second, xout); + for (auto const& comp : this->Components) { + CreateChoice(comp.second, xout); } if (!this->PostFlightComponent.Name.empty()) { @@ -119,17 +113,13 @@ void cmCPackPKGGenerator::CreateChoiceOutline( { xout.StartElement("line"); xout.Attribute("choice", group.Name + "Choice"); - std::vector::const_iterator groupIt; - for (groupIt = group.Subgroups.begin(); groupIt != group.Subgroups.end(); - ++groupIt) { - CreateChoiceOutline(**groupIt, xout); + for (cmCPackComponentGroup* subgroup : group.Subgroups) { + CreateChoiceOutline(*subgroup, xout); } - std::vector::const_iterator compIt; - for (compIt = group.Components.begin(); compIt != group.Components.end(); - ++compIt) { + for (cmCPackComponent* comp : group.Components) { xout.StartElement("line"); - xout.Attribute("choice", (*compIt)->Name + "Choice"); + xout.Attribute("choice", comp->Name + "Choice"); xout.Content(""); // Avoid self-closing tag. xout.EndElement(); } @@ -238,11 +228,9 @@ void cmCPackPKGGenerator::AddDependencyAttributes( } visited.insert(&component); - std::vector::const_iterator dependIt; - for (dependIt = component.Dependencies.begin(); - dependIt != component.Dependencies.end(); ++dependIt) { - out << " && choices['" << (*dependIt)->Name << "Choice'].selected"; - AddDependencyAttributes(**dependIt, visited, out); + for (cmCPackComponent* depend : component.Dependencies) { + out << " && choices['" << depend->Name << "Choice'].selected"; + AddDependencyAttributes(*depend, visited, out); } } @@ -255,11 +243,9 @@ void cmCPackPKGGenerator::AddReverseDependencyAttributes( } visited.insert(&component); - std::vector::const_iterator dependIt; - for (dependIt = component.ReverseDependencies.begin(); - dependIt != component.ReverseDependencies.end(); ++dependIt) { - out << " || choices['" << (*dependIt)->Name << "Choice'].selected"; - AddReverseDependencyAttributes(**dependIt, visited, out); + for (cmCPackComponent* depend : component.ReverseDependencies) { + out << " || choices['" << depend->Name << "Choice'].selected"; + AddReverseDependencyAttributes(*depend, visited, out); } } diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index 756ac6c..63c2fcc 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -3,6 +3,7 @@ #include "cmCTestMultiProcessHandler.h" #include "cmAffinity.h" +#include "cmAlgorithms.h" #include "cmCTest.h" #include "cmCTestRunTest.h" #include "cmCTestTestHandler.h" @@ -651,9 +652,7 @@ void cmCTestMultiProcessHandler::CreateParallelTestCostList() // Reverse iterate over the different dependency levels (deepest first). // Sort tests within each level by COST and append them to the cost list. - for (std::list::reverse_iterator i = priorityStack.rbegin(); - i != priorityStack.rend(); ++i) { - TestSet const& currentSet = *i; + for (TestSet const& currentSet : cmReverseRange(priorityStack)) { TestComparator comp(this); TestList sortedCopy; diff --git a/Source/CTest/cmCTestP4.cxx b/Source/CTest/cmCTestP4.cxx index 435be97..ac4753c 100644 --- a/Source/CTest/cmCTestP4.cxx +++ b/Source/CTest/cmCTestP4.cxx @@ -2,6 +2,7 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmCTestP4.h" +#include "cmAlgorithms.h" #include "cmCTest.h" #include "cmCTestVC.h" #include "cmProcessTools.h" @@ -425,12 +426,11 @@ bool cmCTestP4::LoadRevisions() // p4 describe -s ... at 1111111,2222222 std::vector p4_describe; - for (std::vector::reverse_iterator i = ChangeLists.rbegin(); - i != ChangeLists.rend(); ++i) { + for (std::string const& i : cmReverseRange(ChangeLists)) { SetP4Options(p4_describe); p4_describe.push_back("describe"); p4_describe.push_back("-s"); - p4_describe.push_back(i->c_str()); + p4_describe.push_back(i.c_str()); p4_describe.push_back(nullptr); DescribeParser outDescribe(this, "p4_describe-out> "); diff --git a/Source/CursesDialog/cmCursesLongMessageForm.cxx b/Source/CursesDialog/cmCursesLongMessageForm.cxx index a41d051..4e887d6 100644 --- a/Source/CursesDialog/cmCursesLongMessageForm.cxx +++ b/Source/CursesDialog/cmCursesLongMessageForm.cxx @@ -19,9 +19,8 @@ cmCursesLongMessageForm::cmCursesLongMessageForm( std::vector const& messages, const char* title) { // Append all messages into on big string - std::vector::const_iterator it; - for (it = messages.begin(); it != messages.end(); it++) { - this->Messages += (*it); + for (std::string const& message : messages) { + this->Messages += message; // Add one blank line after each message this->Messages += "\n\n"; } diff --git a/Source/CursesDialog/cmCursesMainForm.cxx b/Source/CursesDialog/cmCursesMainForm.cxx index 8ca7802..b9a7c85 100644 --- a/Source/CursesDialog/cmCursesMainForm.cxx +++ b/Source/CursesDialog/cmCursesMainForm.cxx @@ -107,10 +107,9 @@ void cmCursesMainForm::InitializeUI() // Count non-internal and non-static entries int count = 0; - for (std::vector::const_iterator it = cacheKeys.begin(); - it != cacheKeys.end(); ++it) { + for (std::string const& key : cacheKeys) { cmStateEnums::CacheEntryType t = - this->CMakeInstance->GetState()->GetCacheEntryType(*it); + this->CMakeInstance->GetState()->GetCacheEntryType(key); if (t != cmStateEnums::INTERNAL && t != cmStateEnums::STATIC && t != cmStateEnums::UNINITIALIZED) { ++count; @@ -130,11 +129,9 @@ void cmCursesMainForm::InitializeUI() // Create the composites. // First add entries which are new - for (std::vector::const_iterator it = cacheKeys.begin(); - it != cacheKeys.end(); ++it) { - std::string key = *it; + for (std::string const& key : cacheKeys) { cmStateEnums::CacheEntryType t = - this->CMakeInstance->GetState()->GetCacheEntryType(*it); + this->CMakeInstance->GetState()->GetCacheEntryType(key); if (t == cmStateEnums::INTERNAL || t == cmStateEnums::STATIC || t == cmStateEnums::UNINITIALIZED) { continue; @@ -148,11 +145,9 @@ void cmCursesMainForm::InitializeUI() } // then add entries which are old - for (std::vector::const_iterator it = cacheKeys.begin(); - it != cacheKeys.end(); ++it) { - std::string key = *it; + for (std::string const& key : cacheKeys) { cmStateEnums::CacheEntryType t = - this->CMakeInstance->GetState()->GetCacheEntryType(*it); + this->CMakeInstance->GetState()->GetCacheEntryType(key); if (t == cmStateEnums::INTERNAL || t == cmStateEnums::STATIC || t == cmStateEnums::UNINITIALIZED) { continue; diff --git a/Source/QtDialog/FirstConfigure.cxx b/Source/QtDialog/FirstConfigure.cxx index f28e1a8..364a378 100644 --- a/Source/QtDialog/FirstConfigure.cxx +++ b/Source/QtDialog/FirstConfigure.cxx @@ -95,33 +95,32 @@ void StartCompilerSetup::setGenerators( QStringList generator_list; - std::vector::const_iterator it; - for (it = gens.begin(); it != gens.end(); ++it) { - generator_list.append(QString::fromLocal8Bit(it->name.c_str())); + for (cmake::GeneratorInfo const& gen : gens) { + generator_list.append(QString::fromLocal8Bit(gen.name.c_str())); - if (it->supportsPlatform) { + if (gen.supportsPlatform) { this->GeneratorsSupportingPlatform.append( - QString::fromLocal8Bit(it->name.c_str())); + QString::fromLocal8Bit(gen.name.c_str())); this - ->GeneratorDefaultPlatform[QString::fromLocal8Bit(it->name.c_str())] = - QString::fromLocal8Bit(it->defaultPlatform.c_str()); + ->GeneratorDefaultPlatform[QString::fromLocal8Bit(gen.name.c_str())] = + QString::fromLocal8Bit(gen.defaultPlatform.c_str()); std::vector::const_iterator platformIt = - it->supportedPlatforms.cbegin(); - while (platformIt != it->supportedPlatforms.cend()) { + gen.supportedPlatforms.cbegin(); + while (platformIt != gen.supportedPlatforms.cend()) { this->GeneratorSupportedPlatforms.insert( - QString::fromLocal8Bit(it->name.c_str()), + QString::fromLocal8Bit(gen.name.c_str()), QString::fromLocal8Bit((*platformIt).c_str())); platformIt++; } } - if (it->supportsToolset) { + if (gen.supportsToolset) { this->GeneratorsSupportingToolset.append( - QString::fromLocal8Bit(it->name.c_str())); + QString::fromLocal8Bit(gen.name.c_str())); } } diff --git a/Source/QtDialog/QCMake.cxx b/Source/QtDialog/QCMake.cxx index a073c30..bf7726e 100644 --- a/Source/QtDialog/QCMake.cxx +++ b/Source/QtDialog/QCMake.cxx @@ -48,9 +48,8 @@ QCMake::QCMake(QObject* p) this->CMakeInstance->GetRegisteredGenerators( generators, /*includeNamesWithPlatform=*/false); - std::vector::const_iterator it; - for (it = generators.begin(); it != generators.end(); ++it) { - this->AvailableGenerators.push_back(*it); + for (cmake::GeneratorInfo const& gen : generators) { + this->AvailableGenerators.push_back(gen); } } @@ -234,24 +233,23 @@ void QCMake::setProperties(const QCMakePropertyList& newProps) // set the value of properties cmState* state = this->CMakeInstance->GetState(); std::vector cacheKeys = state->GetCacheEntryKeys(); - for (std::vector::const_iterator it = cacheKeys.begin(); - it != cacheKeys.end(); ++it) { - cmStateEnums::CacheEntryType t = state->GetCacheEntryType(*it); + for (std::string const& key : cacheKeys) { + cmStateEnums::CacheEntryType t = state->GetCacheEntryType(key); if (t == cmStateEnums::INTERNAL || t == cmStateEnums::STATIC) { continue; } QCMakeProperty prop; - prop.Key = QString::fromLocal8Bit(it->c_str()); + prop.Key = QString::fromLocal8Bit(key.c_str()); int idx = props.indexOf(prop); if (idx == -1) { - toremove.append(QString::fromLocal8Bit(it->c_str())); + toremove.append(QString::fromLocal8Bit(key.c_str())); } else { prop = props[idx]; if (prop.Value.type() == QVariant::Bool) { - state->SetCacheEntryValue(*it, prop.Value.toBool() ? "ON" : "OFF"); + state->SetCacheEntryValue(key, prop.Value.toBool() ? "ON" : "OFF"); } else { - state->SetCacheEntryValue(*it, + state->SetCacheEntryValue(key, prop.Value.toString().toLocal8Bit().data()); } props.removeAt(idx); @@ -297,22 +295,21 @@ QCMakePropertyList QCMake::properties() const cmState* state = this->CMakeInstance->GetState(); std::vector cacheKeys = state->GetCacheEntryKeys(); - for (std::vector::const_iterator i = cacheKeys.begin(); - i != cacheKeys.end(); ++i) { - cmStateEnums::CacheEntryType t = state->GetCacheEntryType(*i); + for (std::string const& key : cacheKeys) { + cmStateEnums::CacheEntryType t = state->GetCacheEntryType(key); if (t == cmStateEnums::INTERNAL || t == cmStateEnums::STATIC || t == cmStateEnums::UNINITIALIZED) { continue; } - const char* cachedValue = state->GetCacheEntryValue(*i); + const char* cachedValue = state->GetCacheEntryValue(key); QCMakeProperty prop; - prop.Key = QString::fromLocal8Bit(i->c_str()); + prop.Key = QString::fromLocal8Bit(key.c_str()); prop.Help = - QString::fromLocal8Bit(state->GetCacheEntryProperty(*i, "HELPSTRING")); + QString::fromLocal8Bit(state->GetCacheEntryProperty(key, "HELPSTRING")); prop.Value = QString::fromLocal8Bit(cachedValue); - prop.Advanced = state->GetCacheEntryPropertyAsBool(*i, "ADVANCED"); + prop.Advanced = state->GetCacheEntryPropertyAsBool(key, "ADVANCED"); if (t == cmStateEnums::BOOL) { prop.Type = QCMakeProperty::BOOL; prop.Value = cmSystemTools::IsOn(cachedValue); @@ -323,7 +320,7 @@ QCMakePropertyList QCMake::properties() const } else if (t == cmStateEnums::STRING) { prop.Type = QCMakeProperty::STRING; const char* stringsProperty = - state->GetCacheEntryProperty(*i, "STRINGS"); + state->GetCacheEntryProperty(key, "STRINGS"); if (stringsProperty) { prop.Strings = QString::fromLocal8Bit(stringsProperty).split(";"); } diff --git a/Source/cmAddDependenciesCommand.cxx b/Source/cmAddDependenciesCommand.cxx index 021bd29..1023808 100644 --- a/Source/cmAddDependenciesCommand.cxx +++ b/Source/cmAddDependenciesCommand.cxx @@ -4,6 +4,7 @@ #include +#include "cmAlgorithms.h" #include "cmMakefile.h" #include "cmMessageType.h" #include "cmTarget.h" @@ -27,10 +28,10 @@ bool cmAddDependenciesCommand::InitialPass( this->Makefile->IssueMessage(MessageType::FATAL_ERROR, e.str()); } if (cmTarget* target = this->Makefile->FindTargetToUse(target_name)) { - std::vector::const_iterator s = args.begin(); - ++s; // skip over target_name - for (; s != args.end(); ++s) { - target->AddUtility(*s, this->Makefile); + + // skip over target_name + for (std::string const& arg : cmMakeRange(args).advance(1)) { + target->AddUtility(arg, this->Makefile); } } else { std::ostringstream e; diff --git a/Source/cmAddSubDirectoryCommand.cxx b/Source/cmAddSubDirectoryCommand.cxx index 75e5aa4..c47092a 100644 --- a/Source/cmAddSubDirectoryCommand.cxx +++ b/Source/cmAddSubDirectoryCommand.cxx @@ -5,6 +5,7 @@ #include #include +#include "cmAlgorithms.h" #include "cmMakefile.h" #include "cmSystemTools.h" @@ -26,15 +27,13 @@ bool cmAddSubDirectoryCommand::InitialPass( bool excludeFromAll = false; // process the rest of the arguments looking for optional args - std::vector::const_iterator i = args.begin(); - ++i; - for (; i != args.end(); ++i) { - if (*i == "EXCLUDE_FROM_ALL") { + for (std::string const& arg : cmMakeRange(args).advance(1)) { + if (arg == "EXCLUDE_FROM_ALL") { excludeFromAll = true; continue; } if (binArg.empty()) { - binArg = *i; + binArg = arg; } else { this->SetError("called with incorrect number of arguments"); return false; diff --git a/Source/cmCPluginAPI.cxx b/Source/cmCPluginAPI.cxx index c0088ac..576d2c3 100644 --- a/Source/cmCPluginAPI.cxx +++ b/Source/cmCPluginAPI.cxx @@ -683,26 +683,24 @@ void CCONV cmSourceFileSetName(void* arg, const char* name, const char* dir, } // Next, try the various source extensions - for (std::vector::const_iterator ext = sourceExts.begin(); - ext != sourceExts.end(); ++ext) { + for (std::string const& ext : sourceExts) { hname = pathname; hname += "."; - hname += *ext; + hname += ext; if (cmSystemTools::FileExists(hname)) { - sf->SourceExtension = *ext; + sf->SourceExtension = ext; sf->FullPath = hname; return; } } // Finally, try the various header extensions - for (std::vector::const_iterator ext = headerExts.begin(); - ext != headerExts.end(); ++ext) { + for (std::string const& ext : headerExts) { hname = pathname; hname += "."; - hname += *ext; + hname += ext; if (cmSystemTools::FileExists(hname)) { - sf->SourceExtension = *ext; + sf->SourceExtension = ext; sf->FullPath = hname; return; } @@ -711,13 +709,11 @@ void CCONV cmSourceFileSetName(void* arg, const char* name, const char* dir, std::ostringstream e; e << "Cannot find source file \"" << pathname << "\""; e << "\n\nTried extensions"; - for (std::vector::const_iterator ext = sourceExts.begin(); - ext != sourceExts.end(); ++ext) { - e << " ." << *ext; + for (std::string const& ext : sourceExts) { + e << " ." << ext; } - for (std::vector::const_iterator ext = headerExts.begin(); - ext != headerExts.end(); ++ext) { - e << " ." << *ext; + for (std::string const& ext : headerExts) { + e << " ." << ext; } cmSystemTools::Error(e.str()); } diff --git a/Source/cmComputeLinkDepends.cxx b/Source/cmComputeLinkDepends.cxx index 4717cf6..5ed6c29 100644 --- a/Source/cmComputeLinkDepends.cxx +++ b/Source/cmComputeLinkDepends.cxx @@ -256,11 +256,7 @@ cmComputeLinkDepends::Compute() // Iterate in reverse order so we can keep only the last occurrence // of a shared library. std::set emmitted; - for (std::vector::const_reverse_iterator - li = this->FinalLinkOrder.rbegin(), - le = this->FinalLinkOrder.rend(); - li != le; ++li) { - int i = *li; + for (int i : cmReverseRange(this->FinalLinkOrder)) { LinkEntry const& e = this->EntryList[i]; cmGeneratorTarget const* t = e.Target; // Entries that we know the linker will re-use do not need to be repeated. @@ -586,11 +582,10 @@ void cmComputeLinkDepends::InferDependencies() } // Intersect the sets for this item. - DependSetList::const_iterator i = sets->begin(); - DependSet common = *i; - for (++i; i != sets->end(); ++i) { + DependSet common = sets->front(); + for (DependSet const& i : cmMakeRange(*sets).advance(1)) { DependSet intersection; - std::set_intersection(common.begin(), common.end(), i->begin(), i->end(), + std::set_intersection(common.begin(), common.end(), i.begin(), i.end(), std::inserter(intersection, intersection.begin())); common = intersection; } @@ -708,9 +703,8 @@ void cmComputeLinkDepends::VisitComponent(unsigned int c) // Run in reverse order so the topological order will preserve the // original order where there are no constraints. EdgeList const& nl = this->CCG->GetComponentGraphEdges(c); - for (EdgeList::const_reverse_iterator ni = nl.rbegin(); ni != nl.rend(); - ++ni) { - this->VisitComponent(*ni); + for (cmGraphEdge const& edge : cmReverseRange(nl)) { + this->VisitComponent(edge); } // Assign an ordering id to this component. diff --git a/Source/cmComputeTargetDepends.cxx b/Source/cmComputeTargetDepends.cxx index 9b7b02f..70d1675 100644 --- a/Source/cmComputeTargetDepends.cxx +++ b/Source/cmComputeTargetDepends.cxx @@ -2,6 +2,7 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmComputeTargetDepends.h" +#include "cmAlgorithms.h" #include "cmComputeComponentGraph.h" #include "cmGeneratorTarget.h" #include "cmGlobalGenerator.h" @@ -549,10 +550,9 @@ bool cmComputeTargetDepends::ComputeFinalDepends( int head = -1; std::set emitted; NodeList const& nl = components[c]; - for (NodeList::const_reverse_iterator ni = nl.rbegin(); ni != nl.rend(); - ++ni) { + for (int ni : cmReverseRange(nl)) { std::set visited; - if (!this->IntraComponent(cmap, c, *ni, &head, emitted, visited)) { + if (!this->IntraComponent(cmap, c, ni, &head, emitted, visited)) { // Cycle in add_dependencies within component! this->ComplainAboutBadComponent(ccg, c, true); return false; diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx index e408de3..345ecaa 100644 --- a/Source/cmExtraCodeBlocksGenerator.cxx +++ b/Source/cmExtraCodeBlocksGenerator.cxx @@ -589,10 +589,9 @@ void cmExtraCodeBlocksGenerator::AppendTarget( std::vector::const_iterator end = cmRemoveDuplicates(allIncludeDirs); - for (std::vector::const_iterator i = allIncludeDirs.begin(); - i != end; ++i) { + for (std::string const& str : cmMakeRange(allIncludeDirs.cbegin(), end)) { xml.StartElement("Add"); - xml.Attribute("directory", *i); + xml.Attribute("directory", str); xml.EndElement(); } diff --git a/Source/cmFLTKWrapUICommand.cxx b/Source/cmFLTKWrapUICommand.cxx index 4b14d26..1b509ef 100644 --- a/Source/cmFLTKWrapUICommand.cxx +++ b/Source/cmFLTKWrapUICommand.cxx @@ -4,6 +4,7 @@ #include +#include "cmAlgorithms.h" #include "cmCustomCommandLines.h" #include "cmMakefile.h" #include "cmSourceFile.h" @@ -40,18 +41,17 @@ bool cmFLTKWrapUICommand::InitialPass(std::vector const& args, this->Makefile->AddIncludeDirectories(outputDirectories); } - for (std::vector::const_iterator i = (args.begin() + 1); - i != args.end(); i++) { - cmSourceFile* curr = this->Makefile->GetSource(*i); + for (std::string const& arg : cmMakeRange(args).advance(1)) { + cmSourceFile* curr = this->Makefile->GetSource(arg); // if we should use the source GUI // to generate .cxx and .h files if (!curr || !curr->GetPropertyAsBool("WRAP_EXCLUDE")) { std::string outName = outputDirectory; outName += "/"; - outName += cmSystemTools::GetFilenameWithoutExtension(*i); + outName += cmSystemTools::GetFilenameWithoutExtension(arg); std::string hname = outName; hname += ".h"; - std::string origname = cdir + "/" + *i; + std::string origname = cdir + "/" + arg; // add starting depends std::vector depends; depends.push_back(origname); diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index 2fe0d63..fb3a1bc 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -947,16 +947,14 @@ bool cmFileCommand::HandleMakeDirectoryCommand( // File command has at least one argument assert(args.size() > 1); - std::vector::const_iterator i = args.begin(); - - i++; // Get rid of subcommand - std::string expr; - for (; i != args.end(); ++i) { - const std::string* cdir = &(*i); - if (!cmsys::SystemTools::FileIsFullPath(*i)) { + for (std::string const& arg : + cmMakeRange(args).advance(1)) // Get rid of subcommand + { + const std::string* cdir = &arg; + if (!cmsys::SystemTools::FileIsFullPath(arg)) { expr = this->Makefile->GetCurrentSourceDirectory(); - expr += "/" + *i; + expr += "/" + arg; cdir = &expr; } if (!this->Makefile->CanIWriteThisFile(*cdir)) { @@ -981,15 +979,13 @@ bool cmFileCommand::HandleTouchCommand(std::vector const& args, // 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; + for (std::string const& arg : + cmMakeRange(args).advance(1)) // Get rid of subcommand + { + std::string tfile = arg; if (!cmsys::SystemTools::FileIsFullPath(tfile)) { tfile = this->Makefile->GetCurrentSourceDirectory(); - tfile += "/" + *i; + tfile += "/" + arg; } if (!this->Makefile->CanIWriteThisFile(tfile)) { std::string e = @@ -2481,14 +2477,14 @@ bool cmFileCommand::HandleRemove(std::vector const& args, { std::string message; - std::vector::const_iterator i = args.begin(); - i++; // Get rid of subcommand - for (; i != args.end(); ++i) { - std::string fileName = *i; + for (std::string const& arg : + cmMakeRange(args).advance(1)) // Get rid of subcommand + { + std::string fileName = arg; if (!cmsys::SystemTools::FileIsFullPath(fileName)) { fileName = this->Makefile->GetCurrentSourceDirectory(); - fileName += "/" + *i; + fileName += "/" + arg; } if (cmSystemTools::FileIsDirectory(fileName) && diff --git a/Source/cmFindBase.cxx b/Source/cmFindBase.cxx index 425546a..f92f66e 100644 --- a/Source/cmFindBase.cxx +++ b/Source/cmFindBase.cxx @@ -4,7 +4,6 @@ #include #include -#include #include #include @@ -205,11 +204,9 @@ void cmFindBase::FillPackageRootPath() cmSearchPath& paths = this->LabeledPaths[PathLabel::PackageRoot]; // Add the PACKAGE_ROOT_PATH from each enclosing find_package call. - for (std::deque>::const_reverse_iterator pkgPaths = - this->Makefile->FindPackageRootPathStack.rbegin(); - pkgPaths != this->Makefile->FindPackageRootPathStack.rend(); - ++pkgPaths) { - paths.AddPrefixPaths(*pkgPaths); + for (std::vector const& pkgPaths : + cmReverseRange(this->Makefile->FindPackageRootPathStack)) { + paths.AddPrefixPaths(pkgPaths); } paths.AddSuffixes(this->SearchPathSuffixes); diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index 93c71a1..52ff5ea 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -827,10 +827,10 @@ bool cmFindPackageCommand::HandlePackageMode() << " requested version \"" << this->Version << "\".\n" << "The following configuration files were considered but not " "accepted:\n"; - for (std::vector::const_iterator i = - this->ConsideredConfigs.begin(); - i != duplicate_end; ++i) { - e << " " << i->filename << ", version: " << i->version << "\n"; + + for (ConfigFileInfo const& info : + cmMakeRange(this->ConsideredConfigs.cbegin(), duplicate_end)) { + e << " " << info.filename << ", version: " << info.version << "\n"; } } else { std::string requestedVersionString; diff --git a/Source/cmForEachCommand.cxx b/Source/cmForEachCommand.cxx index e359def..39430d0 100644 --- a/Source/cmForEachCommand.cxx +++ b/Source/cmForEachCommand.cxx @@ -48,12 +48,10 @@ bool cmForEachFunctionBlocker::IsFunctionBlocked(const cmListFileFunction& lff, if (mf.GetDefinition(this->Args[0])) { oldDef = mf.GetDefinition(this->Args[0]); } - std::vector::const_iterator j = this->Args.begin(); - ++j; - for (; j != this->Args.end(); ++j) { + for (std::string const& arg : cmMakeRange(this->Args).advance(1)) { // set the variable to the loop value - mf.AddDefinition(this->Args[0], j->c_str()); + mf.AddDefinition(this->Args[0], arg.c_str()); // Invoke all the functions that were collected in the block. cmExecutionStatus status; for (cmListFileFunction const& func : this->Functions) { diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx index f9a6d64..268de6f 100644 --- a/Source/cmGeneratorExpressionEvaluator.cxx +++ b/Source/cmGeneratorExpressionEvaluator.cxx @@ -34,20 +34,16 @@ std::string GeneratorExpressionContent::ProcessArbitraryContent( std::vector>::const_iterator pend = this->ParamChildren.end(); for (; pit != pend; ++pit) { - std::vector::const_iterator it = - pit->begin(); - const std::vector::const_iterator end = - pit->end(); - for (; it != end; ++it) { + for (cmGeneratorExpressionEvaluator* pExprEval : *pit) { if (node->RequiresLiteralInput()) { - if ((*it)->GetType() != cmGeneratorExpressionEvaluator::Text) { + if (pExprEval->GetType() != cmGeneratorExpressionEvaluator::Text) { reportError(context, this->GetOriginalExpression(), "$<" + identifier + "> expression requires literal input."); return std::string(); } } - result += (*it)->Evaluate(context, dagChecker); + result += pExprEval->Evaluate(context, dagChecker); if (context->HadError) { return std::string(); } @@ -70,12 +66,9 @@ std::string GeneratorExpressionContent::Evaluate( { std::string identifier; { - std::vector::const_iterator it = - this->IdentifierChildren.begin(); - const std::vector::const_iterator end = - this->IdentifierChildren.end(); - for (; it != end; ++it) { - identifier += (*it)->Evaluate(context, dagChecker); + for (cmGeneratorExpressionEvaluator* pExprEval : + this->IdentifierChildren) { + identifier += pExprEval->Evaluate(context, dagChecker); if (context->HadError) { return std::string(); } @@ -138,12 +131,8 @@ std::string GeneratorExpressionContent::EvaluateParameters( return std::string(); } std::string parameter; - std::vector::const_iterator it = - pit->begin(); - const std::vector::const_iterator end = - pit->end(); - for (; it != end; ++it) { - parameter += (*it)->Evaluate(context, dagChecker); + for (cmGeneratorExpressionEvaluator* pExprEval : *pit) { + parameter += pExprEval->Evaluate(context, dagChecker); if (context->HadError) { return std::string(); } diff --git a/Source/cmGeneratorExpressionNode.cxx b/Source/cmGeneratorExpressionNode.cxx index e8cb151..dcec0a4 100644 --- a/Source/cmGeneratorExpressionNode.cxx +++ b/Source/cmGeneratorExpressionNode.cxx @@ -103,13 +103,11 @@ static const struct ZeroNode installInterfaceNode; const GeneratorExpressionContent* content, \ cmGeneratorExpressionDAGChecker*) const \ { \ - std::vector::const_iterator it = parameters.begin(); \ - const std::vector::const_iterator end = parameters.end(); \ - for (; it != end; ++it) { \ - if (*it == #FAILURE_VALUE) { \ + for (std::string const& param : parameters) { \ + if (param == #FAILURE_VALUE) { \ return #FAILURE_VALUE; \ } \ - if (*it != #SUCCESS_VALUE) { \ + if (param != #SUCCESS_VALUE) { \ reportError(context, content->GetOriginalExpression(), \ "Parameters to $<" #OP \ "> must resolve to either '0' or '1'."); \ diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx index 04a8b3c..3562e7e 100644 --- a/Source/cmGhsMultiTargetGenerator.cxx +++ b/Source/cmGhsMultiTargetGenerator.cxx @@ -238,10 +238,8 @@ void cmGhsMultiTargetGenerator::WriteCompilerDefinitions( std::vector compileDefinitions; this->GeneratorTarget->GetCompileDefinitions(compileDefinitions, config, language); - for (std::vector::const_iterator cdI = - compileDefinitions.begin(); - cdI != compileDefinitions.end(); ++cdI) { - fout << " -D" << (*cdI) << std::endl; + for (std::string const& compileDefinition : compileDefinitions) { + fout << " -D" << compileDefinition << std::endl; } } @@ -253,9 +251,8 @@ void cmGhsMultiTargetGenerator::WriteIncludes(std::ostream& fout, this->LocalGenerator->GetIncludeDirectories(includes, this->GeneratorTarget, language, config); - for (std::vector::const_iterator includes_i = includes.begin(); - includes_i != includes.end(); ++includes_i) { - fout << " -I\"" << *includes_i << "\"" << std::endl; + for (std::string const& include : includes) { + fout << " -I\"" << include << "\"" << std::endl; } } @@ -324,12 +321,9 @@ void cmGhsMultiTargetGenerator::WriteCustomCommandsHelper( std::ostream& fout, std::vector const& commandsSet, cmTarget::CustomCommandType const commandType) { - for (std::vector::const_iterator commandsSetI = - commandsSet.begin(); - commandsSetI != commandsSet.end(); ++commandsSetI) { - cmCustomCommandLines const& commands = commandsSetI->GetCommandLines(); - for (cmCustomCommandLines::const_iterator commandI = commands.begin(); - commandI != commands.end(); ++commandI) { + for (cmCustomCommand const& customCommand : commandsSet) { + cmCustomCommandLines const& commandLines = customCommand.GetCommandLines(); + for (cmCustomCommandLine const& command : commandLines) { switch (commandType) { case cmTarget::PRE_BUILD: fout << " :preexecShellSafe="; @@ -340,17 +334,16 @@ void cmGhsMultiTargetGenerator::WriteCustomCommandsHelper( default: assert("Only pre and post are supported"); } - cmCustomCommandLine const& command = *commandI; - for (cmCustomCommandLine::const_iterator commandLineI = command.begin(); - commandLineI != command.end(); ++commandLineI) { + + bool firstIteration = true; + for (std::string const& commandLine : command) { std::string subCommandE = - this->LocalGenerator->EscapeForShell(*commandLineI, true); - if (!command.empty()) { - fout << (command.begin() == commandLineI ? "'" : " "); - // Need to double escape backslashes - cmSystemTools::ReplaceString(subCommandE, "\\", "\\\\"); - } + this->LocalGenerator->EscapeForShell(commandLine, true); + fout << (firstIteration ? "'" : " "); + // Need to double escape backslashes + cmSystemTools::ReplaceString(subCommandE, "\\", "\\\\"); fout << subCommandE; + firstIteration = false; } if (!command.empty()) { fout << "'" << std::endl; diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 386a3f7..e56dc4c 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -314,9 +314,11 @@ bool cmGlobalGenerator::CheckTargetsForMissingSources() const if (configs.empty()) { target->GetSourceFiles(srcs, ""); } else { - for (std::vector::const_iterator ci = configs.begin(); - ci != configs.end() && srcs.empty(); ++ci) { - target->GetSourceFiles(srcs, *ci); + for (std::string const& config : configs) { + target->GetSourceFiles(srcs, config); + if (srcs.empty()) { + break; + } } } if (srcs.empty()) { @@ -2983,10 +2985,8 @@ void cmGlobalGenerator::WriteSummary(cmGeneratorTarget* target) } std::vector::const_iterator sourcesEnd = cmRemoveDuplicates(sources); - for (std::vector::const_iterator si = sources.begin(); - si != sourcesEnd; ++si) { + for (cmSourceFile* sf : cmMakeRange(sources.cbegin(), sourcesEnd)) { Json::Value& lj_source = lj_sources.append(Json::objectValue); - cmSourceFile* sf = *si; std::string const& sfp = sf->GetFullPath(); fout << sfp << "\n"; lj_source["file"] = sfp; diff --git a/Source/cmGlobalGhsMultiGenerator.cxx b/Source/cmGlobalGhsMultiGenerator.cxx index 45fa052..746ddad 100644 --- a/Source/cmGlobalGhsMultiGenerator.cxx +++ b/Source/cmGlobalGhsMultiGenerator.cxx @@ -420,10 +420,8 @@ void cmGlobalGhsMultiGenerator::WriteMacros(std::ostream& fout) if (NULL != ghsGpjMacros) { std::vector expandedList; cmSystemTools::ExpandListArgument(std::string(ghsGpjMacros), expandedList); - for (std::vector::const_iterator expandedListI = - expandedList.begin(); - expandedListI != expandedList.end(); ++expandedListI) { - fout << "macro " << *expandedListI << std::endl; + for (std::string const& arg : expandedList) { + fout << "macro " << arg << std::endl; } } } diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 6498024..ba1ace6 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -1640,8 +1640,7 @@ int cmcmd_cmake_ninja_depends(std::vector::const_iterator argBeg, std::string arg_dep; std::string arg_obj; std::string arg_ddi; - for (std::vector::const_iterator a = argBeg; a != argEnd; ++a) { - std::string const& arg = *a; + for (std::string const& arg : cmMakeRange(argBeg, argEnd)) { if (cmHasLiteralPrefix(arg, "--tdi=")) { arg_tdi = arg.substr(6); } else if (cmHasLiteralPrefix(arg, "--pp=")) { diff --git a/Source/cmGlobalVisualStudio10Generator.cxx b/Source/cmGlobalVisualStudio10Generator.cxx index d8b2e89..7284f0b 100644 --- a/Source/cmGlobalVisualStudio10Generator.cxx +++ b/Source/cmGlobalVisualStudio10Generator.cxx @@ -913,10 +913,11 @@ void cmGlobalVisualStudio10Generator::GenerateBuildCommand( if (parser.ParseFile(slnFile, slnData, cmVisualStudioSlnParser::DataGroupProjects)) { std::vector slnProjects = slnData.GetProjects(); - for (std::vector::const_iterator i = - slnProjects.cbegin(); - !useDevEnv && i != slnProjects.cend(); ++i) { - std::string proj = i->GetRelativePath(); + for (cmSlnProjectEntry const& project : slnProjects) { + if (useDevEnv) { + break; + } + std::string proj = project.GetRelativePath(); if (proj.size() > 7 && proj.substr(proj.size() - 7) == ".vfproj") { useDevEnv = true; } diff --git a/Source/cmInstallCommandArguments.cxx b/Source/cmInstallCommandArguments.cxx index 155f055..647c786 100644 --- a/Source/cmInstallCommandArguments.cxx +++ b/Source/cmInstallCommandArguments.cxx @@ -2,6 +2,7 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmInstallCommandArguments.h" +#include "cmAlgorithms.h" #include "cmSystemTools.h" #include @@ -220,10 +221,7 @@ void cmInstallCommandIncludesArgument::Parse( if (args->empty()) { return; } - std::vector::const_iterator it = args->begin(); - ++it; - for (; it != args->end(); ++it) { - std::string dir = *it; + for (std::string dir : cmMakeRange(*args).advance(1)) { cmSystemTools::ConvertToUnixSlashes(dir); this->IncludeDirs.push_back(std::move(dir)); } diff --git a/Source/cmInstallDirectoryGenerator.cxx b/Source/cmInstallDirectoryGenerator.cxx index a88c7af..62ce9f2 100644 --- a/Source/cmInstallDirectoryGenerator.cxx +++ b/Source/cmInstallDirectoryGenerator.cxx @@ -31,10 +31,12 @@ cmInstallDirectoryGenerator::cmInstallDirectoryGenerator( } // We need per-config actions if any directories have generator expressions. - for (std::vector::const_iterator i = dirs.begin(); - !this->ActionsPerConfig && i != dirs.end(); ++i) { - if (cmGeneratorExpression::Find(*i) != std::string::npos) { - this->ActionsPerConfig = true; + if (!this->ActionsPerConfig) { + for (std::string const& dir : dirs) { + if (cmGeneratorExpression::Find(dir) != std::string::npos) { + this->ActionsPerConfig = true; + break; + } } } } diff --git a/Source/cmInstallExportAndroidMKGenerator.cxx b/Source/cmInstallExportAndroidMKGenerator.cxx index 85b7021..186b9df 100644 --- a/Source/cmInstallExportAndroidMKGenerator.cxx +++ b/Source/cmInstallExportAndroidMKGenerator.cxx @@ -67,10 +67,8 @@ void cmInstallExportAndroidMKGenerator::GenerateScript(std::ostream& os) this->EFGen->AddConfiguration(""); } } else { - for (std::vector::const_iterator ci = - this->ConfigurationTypes->begin(); - ci != this->ConfigurationTypes->end(); ++ci) { - this->EFGen->AddConfiguration(*ci); + for (std::string const& config : this->ConfigurationTypes) { + this->EFGen->AddConfiguration(config); } } this->EFGen->GenerateImportFile(); @@ -88,11 +86,9 @@ void cmInstallExportAndroidMKGenerator::GenerateScriptConfigs( // Now create a configuration-specific install rule for the import // file of each configuration. std::vector files; - for (std::map::const_iterator i = - this->EFGen->GetConfigImportFiles().begin(); - i != this->EFGen->GetConfigImportFiles().end(); ++i) { - files.push_back(i->second); - std::string config_test = this->CreateConfigTest(i->first); + for (auto const& pair : this->EFGen->GetConfigImportFiles()) { + files.push_back(pair.second); + std::string config_test = this->CreateConfigTest(pair.first); os << indent << "if(" << config_test << ")\n"; this->AddInstallRule(os, this->Destination, cmInstallType_FILES, files, false, this->FilePermissions.c_str(), nullptr, diff --git a/Source/cmInstallFilesCommand.cxx b/Source/cmInstallFilesCommand.cxx index 4dde18f..1b72ce6 100644 --- a/Source/cmInstallFilesCommand.cxx +++ b/Source/cmInstallFilesCommand.cxx @@ -2,6 +2,7 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmInstallFilesCommand.h" +#include "cmAlgorithms.h" #include "cmGeneratorExpression.h" #include "cmGlobalGenerator.h" #include "cmInstallFilesGenerator.h" @@ -27,10 +28,9 @@ bool cmInstallFilesCommand::InitialPass(std::vector const& args, if ((args.size() > 1) && (args[1] == "FILES")) { this->IsFilesForm = true; - for (std::vector::const_iterator s = args.begin() + 2; - s != args.end(); ++s) { + for (std::string const& arg : cmMakeRange(args).advance(2)) { // Find the source location for each file listed. - this->Files.push_back(this->FindInstallSource(s->c_str())); + this->Files.push_back(this->FindInstallSource(arg.c_str())); } this->CreateInstallGenerator(); } else { diff --git a/Source/cmInstallFilesGenerator.cxx b/Source/cmInstallFilesGenerator.cxx index 07094cb..9eb8ad4 100644 --- a/Source/cmInstallFilesGenerator.cxx +++ b/Source/cmInstallFilesGenerator.cxx @@ -29,11 +29,13 @@ cmInstallFilesGenerator::cmInstallFilesGenerator( this->ActionsPerConfig = true; } - // We need per-config actions if any files have generator expressions. - for (std::vector::const_iterator i = files.begin(); - !this->ActionsPerConfig && i != files.end(); ++i) { - if (cmGeneratorExpression::Find(*i) != std::string::npos) { - this->ActionsPerConfig = true; + // We need per-config actions if any directories have generator expressions. + if (!this->ActionsPerConfig) { + for (std::string const& file : files) { + if (cmGeneratorExpression::Find(file) != std::string::npos) { + this->ActionsPerConfig = true; + break; + } } } } diff --git a/Source/cmInstallGenerator.cxx b/Source/cmInstallGenerator.cxx index d139190..bb4eb3e 100644 --- a/Source/cmInstallGenerator.cxx +++ b/Source/cmInstallGenerator.cxx @@ -69,17 +69,18 @@ void cmInstallGenerator::AddInstallRule( if (cmSystemTools::FileIsFullPath(dest)) { os << "list(APPEND CMAKE_ABSOLUTE_DESTINATION_FILES\n"; os << indent << " \""; - for (std::vector::const_iterator fi = files.begin(); - fi != files.end(); ++fi) { - if (fi != files.begin()) { + bool firstIteration = true; + for (std::string const& file : files) { + if (!firstIteration) { os << ";"; } os << dest << "/"; if (rename && *rename) { os << rename; } else { - os << cmSystemTools::GetFilenameName(*fi); + os << cmSystemTools::GetFilenameName(file); } + firstIteration = false; } os << "\")\n"; os << indent << "if(CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION)\n"; diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 252aa4c..938098d 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -2223,11 +2223,8 @@ void cmLocalGenerator::JoinDefines(const std::set& defines, dflag = df; } } - - std::set::const_iterator defineIt = defines.begin(); - const std::set::const_iterator defineEnd = defines.end(); const char* itemSeparator = definesString.empty() ? "" : " "; - for (; defineIt != defineEnd; ++defineIt) { + for (std::string const& define : defines) { // Append the definition with proper escaping. std::string def = dflag; if (this->GetState()->UseWatcomWMake()) { @@ -2241,7 +2238,7 @@ void cmLocalGenerator::JoinDefines(const std::set& defines, // command line without any escapes. However we still have to // get the '$' and '#' characters through WMake as '$$' and // '$#'. - for (const char* c = defineIt->c_str(); *c; ++c) { + for (const char* c = define.c_str(); *c; ++c) { if (*c == '$' || *c == '#') { def += '$'; } @@ -2250,11 +2247,11 @@ void cmLocalGenerator::JoinDefines(const std::set& defines, } else { // Make the definition appear properly on the command line. Use // -DNAME="value" instead of -D"NAME=value" for historical reasons. - std::string::size_type eq = defineIt->find("="); - def += defineIt->substr(0, eq); + std::string::size_type eq = define.find('='); + def += define.substr(0, eq); if (eq != std::string::npos) { def += "="; - def += this->EscapeForShell(defineIt->c_str() + eq + 1, true); + def += this->EscapeForShell(define.c_str() + eq + 1, true); } } definesString += itemSeparator; diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index c0afc25..4dc04d5 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -466,10 +466,12 @@ void cmLocalNinjaGenerator::WriteCustomCommandBuildStatement( cmNinjaDeps ninjaOutputs(outputs.size() + byproducts.size()), ninjaDeps; bool symbolic = false; - for (std::vector::const_iterator o = outputs.begin(); - !symbolic && o != outputs.end(); ++o) { - if (cmSourceFile* sf = this->Makefile->GetSource(*o)) { + for (std::string const& output : outputs) { + if (cmSourceFile* sf = this->Makefile->GetSource(output)) { symbolic = sf->GetPropertyAsBool("SYMBOLIC"); + if (symbolic) { + break; + } } } diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 7019552..7c67192 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -293,9 +293,8 @@ void cmLocalVisualStudio7Generator::WriteConfigurations( const std::string& libName, cmGeneratorTarget* target) { fout << "\t\n"; - for (std::vector::const_iterator i = configs.begin(); - i != configs.end(); ++i) { - this->WriteConfiguration(fout, i->c_str(), libName, target); + for (std::string const& config : configs) { + this->WriteConfiguration(fout, config.c_str(), libName, target); } fout << "\t\n"; } @@ -569,9 +568,8 @@ public: void Finish() { this->Stream << (this->First ? "" : "\"") << "/>\n"; } void Write(std::vector const& ccs) { - for (std::vector::const_iterator ci = ccs.begin(); - ci != ccs.end(); ++ci) { - this->Write(*ci); + for (cmCustomCommand const& command : ccs) { + this->Write(command); } } void Write(cmCustomCommand const& cc) @@ -897,10 +895,8 @@ void cmLocalVisualStudio7Generator::WriteConfiguration( target->GetManifests(manifest_srcs, configName); if (!manifest_srcs.empty()) { fout << "\n\t\t\t\tAdditionalManifestFiles=\""; - for (std::vector::const_iterator mi = - manifest_srcs.begin(); - mi != manifest_srcs.end(); ++mi) { - std::string m = (*mi)->GetFullPath(); + for (cmSourceFile const* manifest : manifest_srcs) { + std::string m = manifest->GetFullPath(); fout << this->ConvertToXMLOutputPath(m.c_str()) << ";"; } fout << "\""; @@ -1303,14 +1299,14 @@ void cmLocalVisualStudio7GeneratorInternals::OutputLibraries( { cmLocalVisualStudio7Generator* lg = this->LocalGenerator; std::string currentBinDir = lg->GetCurrentBinaryDirectory(); - for (ItemVector::const_iterator l = libs.begin(); l != libs.end(); ++l) { - if (l->IsPath) { + for (auto const& lib : libs) { + if (lib.IsPath) { std::string rel = - lg->MaybeConvertToRelativePath(currentBinDir, l->Value.c_str()); + lg->MaybeConvertToRelativePath(currentBinDir, lib.Value.c_str()); fout << lg->ConvertToXMLOutputPath(rel.c_str()) << " "; - } else if (!l->Target || - l->Target->GetType() != cmStateEnums::INTERFACE_LIBRARY) { - fout << l->Value << " "; + } else if (!lib.Target || + lib.Target->GetType() != cmStateEnums::INTERFACE_LIBRARY) { + fout << lib.Value << " "; } } } @@ -1328,10 +1324,9 @@ void cmLocalVisualStudio7GeneratorInternals::OutputObjects( gt->GetExternalObjects(objs, configName); const char* sep = isep ? isep : ""; - for (std::vector::const_iterator i = objs.begin(); - i != objs.end(); ++i) { - if (!(*i)->GetObjectLibrary().empty()) { - std::string const& objFile = (*i)->GetFullPath(); + for (cmSourceFile const* obj : objs) { + if (!obj->GetObjectLibrary().empty()) { + std::string const& objFile = obj->GetFullPath(); std::string rel = lg->MaybeConvertToRelativePath(currentBinDir, objFile); fout << sep << lg->ConvertToXMLOutputPath(rel.c_str()); sep = " "; @@ -1344,10 +1339,8 @@ void cmLocalVisualStudio7Generator::OutputLibraryDirectories( { const char* comma = ""; std::string currentBinDir = this->GetCurrentBinaryDirectory(); - for (std::vector::const_iterator d = dirs.begin(); - d != dirs.end(); ++d) { + for (std::string dir : dirs) { // Remove any trailing slash and skip empty paths. - std::string dir = *d; if (dir.back() == '/') { dir = dir.substr(0, dir.size() - 1); } @@ -1483,9 +1476,8 @@ cmLocalVisualStudio7GeneratorFCInfo::cmLocalVisualStudio7GeneratorFCInfo( // Compute per-source, per-config information. size_t ci = 0; - for (std::vector::const_iterator i = configs.begin(); - i != configs.end(); ++i, ++ci) { - std::string configUpper = cmSystemTools::UpperCase(*i); + for (std::string const& config : configs) { + std::string configUpper = cmSystemTools::UpperCase(config); cmLVS7GFileConfig fc; std::string lang = @@ -1498,7 +1490,7 @@ cmLocalVisualStudio7GeneratorFCInfo::cmLocalVisualStudio7GeneratorFCInfo( lang = sourceLang; } - cmGeneratorExpressionInterpreter genexInterpreter(lg, *i, gt, lang); + cmGeneratorExpressionInterpreter genexInterpreter(lg, config, gt, lang); bool needfc = false; if (!objectName.empty()) { @@ -1564,7 +1556,7 @@ cmLocalVisualStudio7GeneratorFCInfo::cmLocalVisualStudio7GeneratorFCInfo( } } - const std::string& linkLanguage = gt->GetLinkerLanguage(i->c_str()); + const std::string& linkLanguage = gt->GetLinkerLanguage(config.c_str()); // If HEADER_FILE_ONLY is set, we must suppress this generation in // the project file fc.ExcludedFromBuild = sf.GetPropertyAsBool("HEADER_FILE_ONLY") || @@ -1589,8 +1581,9 @@ cmLocalVisualStudio7GeneratorFCInfo::cmLocalVisualStudio7GeneratorFCInfo( } if (needfc) { - this->FileConfigMap[*i] = fc; + this->FileConfigMap[config] = fc; } + ++ci; } } @@ -1654,16 +1647,14 @@ bool cmLocalVisualStudio7Generator::WriteGroup( } // Loop through each source in the source group. - for (std::vector::const_iterator sf = - sourceFiles.begin(); - sf != sourceFiles.end(); ++sf) { - std::string source = (*sf)->GetFullPath(); + for (const cmSourceFile* sf : sourceFiles) { + std::string source = sf->GetFullPath(); if (source != libName || target->GetType() == cmStateEnums::UTILITY || target->GetType() == cmStateEnums::GLOBAL_TARGET) { // Look up the source kind and configs. std::map::const_iterator map_it = - sources.Index.find(*sf); + sources.Index.find(sf); // The map entry must exist because we populated it earlier. assert(map_it != sources.Index.end()); cmGeneratorTarget::AllConfigSource const& acs = @@ -1676,7 +1667,7 @@ bool cmLocalVisualStudio7Generator::WriteGroup( // Tell MS-Dev what the source is. If the compiler knows how to // build it, then it will. fout << "\t\t\t\tRelativePath=\"" << d << "\">\n"; - if (cmCustomCommand const* command = (*sf)->GetCustomCommand()) { + if (cmCustomCommand const* command = sf->GetCustomCommand()) { this->WriteCustomRule(fout, configs, source.c_str(), *command, fcinfo); } else if (!fcinfo.FileConfigMap.empty()) { const char* aCompilerTool = "VCCLCompilerTool"; @@ -1684,8 +1675,8 @@ bool cmLocalVisualStudio7Generator::WriteGroup( if (this->FortranProject) { aCompilerTool = "VFFortranCompilerTool"; } - std::string const& lang = (*sf)->GetLanguage(); - std::string ext = (*sf)->GetExtension(); + std::string const& lang = sf->GetLanguage(); + std::string ext = sf->GetExtension(); ext = cmSystemTools::LowerCase(ext); if (ext == "idl") { aCompilerTool = "VCMIDLTool"; @@ -1713,12 +1704,10 @@ bool cmLocalVisualStudio7Generator::WriteGroup( if (acs.Kind == cmGeneratorTarget::SourceKindExternalObject) { aCompilerTool = "VCCustomBuildTool"; } - for (std::map::const_iterator fci = - fcinfo.FileConfigMap.begin(); - fci != fcinfo.FileConfigMap.end(); ++fci) { - cmLVS7GFileConfig const& fc = fci->second; + for (auto const& fci : fcinfo.FileConfigMap) { + cmLVS7GFileConfig const& fc = fci.second; fout << "\t\t\t\tfirst << "|" + << "\t\t\t\t\tName=\"" << fci.first << "|" << gg->GetPlatformName() << "\""; if (fc.ExcludedFromBuild) { fout << " ExcludedFromBuild=\"true\""; @@ -1741,7 +1730,7 @@ bool cmLocalVisualStudio7Generator::WriteGroup( fileOptions.AddDefines(fc.CompileDefsConfig); // validate source level include directories std::vector includes; - this->AppendIncludeDirectories(includes, fc.IncludeDirs, **sf); + this->AppendIncludeDirectories(includes, fc.IncludeDirs, *sf); fileOptions.AddIncludes(includes); fileOptions.OutputFlagMap(fout, 5); fileOptions.OutputAdditionalIncludeDirectories( @@ -1794,12 +1783,11 @@ void cmLocalVisualStudio7Generator::WriteCustomRule( if (this->FortranProject) { customTool = "VFCustomBuildTool"; } - for (std::vector::const_iterator i = configs.begin(); - i != configs.end(); ++i) { - cmCustomCommandGenerator ccg(command, *i, this); - cmLVS7GFileConfig const& fc = fcinfo.FileConfigMap[*i]; + for (std::string const& config : configs) { + cmCustomCommandGenerator ccg(command, config, this); + cmLVS7GFileConfig const& fc = fcinfo.FileConfigMap[config]; fout << "\t\t\t\tGetPlatformName() + fout << "\t\t\t\t\tName=\"" << config << "|" << gg->GetPlatformName() << "\">\n"; if (!fc.CompileFlags.empty()) { fout << "\t\t\t\t\tConstructComment(ccg); std::string script = this->ConstructScript(ccg); if (this->FortranProject) { - cmSystemTools::ReplaceString(script, "$(Configuration)", i->c_str()); + cmSystemTools::ReplaceString(script, "$(Configuration)", config.c_str()); } /* clang-format off */ fout << "\t\t\t\t\tConvertToXMLOutputPath(source); } else { // Write out the dependencies for the rule. - for (std::vector::const_iterator d = - ccg.GetDepends().begin(); - d != ccg.GetDepends().end(); ++d) { + for (std::string const& d : ccg.GetDepends()) { // Get the real name of the dependency in case it is a CMake target. std::string dep; - if (this->GetRealDependency(d->c_str(), i->c_str(), dep)) { + if (this->GetRealDependency(d.c_str(), config.c_str(), dep)) { fout << this->ConvertToXMLOutputPath(dep.c_str()) << ";"; } } @@ -1849,10 +1835,8 @@ void cmLocalVisualStudio7Generator::WriteCustomRule( } else { // Write a rule for the output generated by this command. const char* sep = ""; - for (std::vector::const_iterator o = - ccg.GetOutputs().begin(); - o != ccg.GetOutputs().end(); ++o) { - fout << sep << this->ConvertToXMLOutputPathSingle(o->c_str()); + for (std::string const& output : ccg.GetOutputs()) { + fout << sep << this->ConvertToXMLOutputPathSingle(output.c_str()); sep = ";"; } } @@ -2063,16 +2047,14 @@ void cmLocalVisualStudio7Generator::WriteVCProjFooter( { fout << "\t\n"; - std::vector const& props = target->GetPropertyKeys(); - for (std::vector::const_iterator i = props.begin(); - i != props.end(); ++i) { - if (i->find("VS_GLOBAL_") == 0) { - std::string name = i->substr(10); + for (std::string const& key : target->GetPropertyKeys()) { + if (key.find("VS_GLOBAL_") == 0) { + std::string name = key.substr(10); if (!name.empty()) { /* clang-format off */ fout << "\t\tGetProperty(*i) << "\"\n" + << "\t\t\tValue=\"" << target->GetProperty(key) << "\"\n" << "\t\t/>\n"; /* clang-format on */ } diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index cc61318..3d22f57 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -292,13 +292,14 @@ void cmMakefile::PrintCommandTrace(const cmListFileFunction& lff) const std::string const& only_filename = cmSystemTools::GetFilenameName(full_path); bool trace = trace_only_this_files.empty(); if (!trace) { - for (std::vector::const_iterator i = - trace_only_this_files.begin(); - !trace && i != trace_only_this_files.end(); ++i) { - std::string::size_type const pos = full_path.rfind(*i); + for (std::string const& file : trace_only_this_files) { + std::string::size_type const pos = full_path.rfind(file); trace = (pos != std::string::npos) && - ((pos + i->size()) == full_path.size()) && - (only_filename == cmSystemTools::GetFilenameName(*i)); + ((pos + file.size()) == full_path.size()) && + (only_filename == cmSystemTools::GetFilenameName(file)); + if (trace) { + break; + } } // Do nothing if current file wasn't requested for trace... if (!trace) { @@ -1848,10 +1849,8 @@ void cmMakefile::CheckForUnusedVariables() const if (!this->WarnUnused) { return; } - const std::vector& unused = this->StateSnapshot.UnusedKeys(); - std::vector::const_iterator it = unused.begin(); - for (; it != unused.end(); ++it) { - this->LogUnused("out of scope", *it); + for (const std::string& key : this->StateSnapshot.UnusedKeys()) { + this->LogUnused("out of scope", key); } } @@ -3055,10 +3054,8 @@ bool cmMakefile::IsFunctionBlocked(const cmListFileFunction& lff, // loop over all function blockers to see if any block this command // evaluate in reverse, this is critical for balanced IF statements etc - std::vector::reverse_iterator pos; - for (pos = this->FunctionBlockers.rbegin(); - pos != this->FunctionBlockers.rend(); ++pos) { - if ((*pos)->IsFunctionBlocked(lff, *this, status)) { + for (cmFunctionBlocker* pos : cmReverseRange(this->FunctionBlockers)) { + if (pos->IsFunctionBlocked(lff, *this, status)) { return true; } } diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index af34169..9372ed5 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -974,18 +974,17 @@ bool cmMakefileTargetGenerator::WriteMakeRule( // For multiple outputs, make the extra ones depend on the first one. std::vector const output_depends(1, outputs[0]); std::string binDir = this->LocalGenerator->GetBinaryDirectory(); - for (std::vector::const_iterator o = outputs.begin() + 1; - o != outputs.end(); ++o) { + for (std::string const& output : cmMakeRange(outputs).advance(1)) { // Touch the extra output so "make" knows that it was updated, // but only if the output was actually created. std::string const out = this->LocalGenerator->ConvertToOutputFormat( - this->LocalGenerator->MaybeConvertToRelativePath(binDir, *o), + this->LocalGenerator->MaybeConvertToRelativePath(binDir, output), cmOutputConverter::SHELL); std::vector output_commands; bool o_symbolic = false; if (need_symbolic) { - if (cmSourceFile* sf = this->Makefile->GetSource(*o)) { + if (cmSourceFile* sf = this->Makefile->GetSource(output)) { o_symbolic = sf->GetPropertyAsBool("SYMBOLIC"); } } @@ -994,13 +993,13 @@ bool cmMakefileTargetGenerator::WriteMakeRule( if (!o_symbolic) { output_commands.push_back("@$(CMAKE_COMMAND) -E touch_nocreate " + out); } - this->LocalGenerator->WriteMakeRule(os, nullptr, *o, output_depends, + this->LocalGenerator->WriteMakeRule(os, nullptr, output, output_depends, output_commands, o_symbolic, in_help); if (!o_symbolic) { // At build time, remove the first output if this one does not exist // so that "make" will rerun the real commands that create this one. - MultipleOutputPairsType::value_type p(*o, outputs[0]); + MultipleOutputPairsType::value_type p(output, outputs[0]); this->MultipleOutputPairs.insert(p); } } diff --git a/Source/cmQTWrapCPPCommand.cxx b/Source/cmQTWrapCPPCommand.cxx index 6acc7ef..8b42119 100644 --- a/Source/cmQTWrapCPPCommand.cxx +++ b/Source/cmQTWrapCPPCommand.cxx @@ -2,6 +2,7 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmQTWrapCPPCommand.h" +#include "cmAlgorithms.h" #include "cmCustomCommandLines.h" #include "cmMakefile.h" #include "cmSourceFile.h" @@ -29,13 +30,13 @@ bool cmQTWrapCPPCommand::InitialPass(std::vector const& args, std::string sourceListValue = this->Makefile->GetSafeDefinition(sourceList); // Create a rule for all sources listed. - for (std::vector::const_iterator j = (args.begin() + 2); - j != args.end(); ++j) { - cmSourceFile* curr = this->Makefile->GetSource(*j); + for (std::string const& arg : cmMakeRange(args).advance(2)) { + cmSourceFile* curr = this->Makefile->GetSource(arg); // if we should wrap the class if (!(curr && curr->GetPropertyAsBool("WRAP_EXCLUDE"))) { // Compute the name of the file to generate. - std::string srcName = cmSystemTools::GetFilenameWithoutLastExtension(*j); + std::string srcName = + cmSystemTools::GetFilenameWithoutLastExtension(arg); std::string newName = this->Makefile->GetCurrentBinaryDirectory(); newName += "/moc_"; newName += srcName; @@ -47,8 +48,8 @@ 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)) { - hname = *j; + if (cmSystemTools::FileIsFullPath(arg)) { + hname = arg; } else { if (curr && curr->GetIsGenerated()) { hname = this->Makefile->GetCurrentBinaryDirectory(); @@ -56,7 +57,7 @@ bool cmQTWrapCPPCommand::InitialPass(std::vector const& args, hname = this->Makefile->GetCurrentSourceDirectory(); } hname += "/"; - hname += *j; + hname += arg; } // Append the generated source file to the list. diff --git a/Source/cmQTWrapUICommand.cxx b/Source/cmQTWrapUICommand.cxx index 43b1fb9..6a620c1 100644 --- a/Source/cmQTWrapUICommand.cxx +++ b/Source/cmQTWrapUICommand.cxx @@ -2,6 +2,7 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmQTWrapUICommand.h" +#include "cmAlgorithms.h" #include "cmCustomCommandLines.h" #include "cmMakefile.h" #include "cmSourceFile.h" @@ -33,13 +34,13 @@ bool cmQTWrapUICommand::InitialPass(std::vector const& args, std::string sourceListValue = this->Makefile->GetSafeDefinition(sourceList); // Create rules for all sources listed. - for (std::vector::const_iterator j = (args.begin() + 3); - j != args.end(); ++j) { - cmSourceFile* curr = this->Makefile->GetSource(*j); + for (std::string const& arg : cmMakeRange(args).advance(3)) { + cmSourceFile* curr = this->Makefile->GetSource(arg); // if we should wrap the class if (!(curr && curr->GetPropertyAsBool("WRAP_EXCLUDE"))) { // Compute the name of the files to generate. - std::string srcName = cmSystemTools::GetFilenameWithoutLastExtension(*j); + std::string srcName = + cmSystemTools::GetFilenameWithoutLastExtension(arg); std::string hName = this->Makefile->GetCurrentBinaryDirectory(); hName += "/"; hName += srcName; @@ -55,8 +56,8 @@ 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)) { - uiName = *j; + if (cmSystemTools::FileIsFullPath(arg)) { + uiName = arg; } else { if (curr && curr->GetIsGenerated()) { uiName = this->Makefile->GetCurrentBinaryDirectory(); @@ -64,7 +65,7 @@ bool cmQTWrapUICommand::InitialPass(std::vector const& args, uiName = this->Makefile->GetCurrentSourceDirectory(); } uiName += "/"; - uiName += *j; + uiName += arg; } // create the list of headers diff --git a/Source/cmSetPropertyCommand.cxx b/Source/cmSetPropertyCommand.cxx index 3c4111b..2a0ccb4 100644 --- a/Source/cmSetPropertyCommand.cxx +++ b/Source/cmSetPropertyCommand.cxx @@ -4,6 +4,7 @@ #include +#include "cmAlgorithms.h" #include "cmGlobalGenerator.h" #include "cmInstalledFile.h" #include "cmMakefile.h" @@ -33,25 +34,25 @@ bool cmSetPropertyCommand::InitialPass(std::vector const& args, } // Get the scope on which to set the property. - std::vector::const_iterator arg = args.begin(); + std::string const& scopeName = args.front(); cmProperty::ScopeType scope; - if (*arg == "GLOBAL") { + if (scopeName == "GLOBAL") { scope = cmProperty::GLOBAL; - } else if (*arg == "DIRECTORY") { + } else if (scopeName == "DIRECTORY") { scope = cmProperty::DIRECTORY; - } else if (*arg == "TARGET") { + } else if (scopeName == "TARGET") { scope = cmProperty::TARGET; - } else if (*arg == "SOURCE") { + } else if (scopeName == "SOURCE") { scope = cmProperty::SOURCE_FILE; - } else if (*arg == "TEST") { + } else if (scopeName == "TEST") { scope = cmProperty::TEST; - } else if (*arg == "CACHE") { + } else if (scopeName == "CACHE") { scope = cmProperty::CACHE; - } else if (*arg == "INSTALL") { + } else if (scopeName == "INSTALL") { scope = cmProperty::INSTALL; } else { std::ostringstream e; - e << "given invalid scope " << *arg << ". " + e << "given invalid scope " << scopeName << ". " << "Valid scopes are GLOBAL, DIRECTORY, " "TARGET, SOURCE, TEST, CACHE, INSTALL."; this->SetError(e.str()); @@ -68,32 +69,32 @@ bool cmSetPropertyCommand::InitialPass(std::vector const& args, }; Doing doing = DoingNames; const char* sep = ""; - for (++arg; arg != args.end(); ++arg) { - if (*arg == "PROPERTY") { + for (std::string const& arg : cmMakeRange(args).advance(1)) { + if (arg == "PROPERTY") { doing = DoingProperty; - } else if (*arg == "APPEND") { + } else if (arg == "APPEND") { doing = DoingNone; this->AppendMode = true; this->Remove = false; this->AppendAsString = false; - } else if (*arg == "APPEND_STRING") { + } else if (arg == "APPEND_STRING") { doing = DoingNone; this->AppendMode = true; this->Remove = false; this->AppendAsString = true; } else if (doing == DoingNames) { - this->Names.insert(*arg); + this->Names.insert(arg); } else if (doing == DoingProperty) { - this->PropertyName = *arg; + this->PropertyName = arg; doing = DoingValues; } else if (doing == DoingValues) { this->PropertyValue += sep; sep = ";"; - this->PropertyValue += *arg; + this->PropertyValue += arg; this->Remove = false; } else { std::ostringstream e; - e << "given invalid argument \"" << *arg << "\"."; + e << "given invalid argument \"" << arg << "\"."; this->SetError(e.str()); return false; } diff --git a/Source/cmStateDirectory.cxx b/Source/cmStateDirectory.cxx index 6752743..15c8a61 100644 --- a/Source/cmStateDirectory.cxx +++ b/Source/cmStateDirectory.cxx @@ -8,6 +8,7 @@ #include #include +#include "cmAlgorithms.h" #include "cmProperty.h" #include "cmPropertyMap.h" #include "cmState.h" @@ -40,9 +41,8 @@ void cmStateDirectory::ComputeRelativePathTopSource() std::string result = snapshots.front().GetDirectory().GetCurrentSource(); - for (std::vector::const_iterator it = snapshots.begin() + 1; - it != snapshots.end(); ++it) { - std::string currentSource = it->GetDirectory().GetCurrentSource(); + for (cmStateSnapshot const& snp : cmMakeRange(snapshots).advance(1)) { + std::string currentSource = snp.GetDirectory().GetCurrentSource(); if (cmSystemTools::IsSubDirectory(result, currentSource)) { result = currentSource; } @@ -66,9 +66,8 @@ void cmStateDirectory::ComputeRelativePathTopBinary() std::string result = snapshots.front().GetDirectory().GetCurrentBinary(); - for (std::vector::const_iterator it = snapshots.begin() + 1; - it != snapshots.end(); ++it) { - std::string currentBinary = it->GetDirectory().GetCurrentBinary(); + for (cmStateSnapshot const& snp : cmMakeRange(snapshots).advance(1)) { + std::string currentBinary = snp.GetDirectory().GetCurrentBinary(); if (cmSystemTools::IsSubDirectory(result, currentBinary)) { result = currentBinary; } diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index ba40ce1..aa4e3f9 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -542,8 +542,7 @@ std::vector cmSystemTools::HandleResponseFile( std::vector::const_iterator argEnd) { std::vector arg_full; - for (std::vector::const_iterator a = argBeg; a != argEnd; ++a) { - std::string const& arg = *a; + for (std::string const& arg : cmMakeRange(argBeg, argEnd)) { if (cmHasLiteralPrefix(arg, "@")) { cmsys::ifstream responseFile(arg.substr(1).c_str(), std::ios::in); if (!responseFile) { @@ -1219,9 +1218,8 @@ void cmSystemTools::GlobDirs(const std::string& path, void cmSystemTools::ExpandList(std::vector const& arguments, std::vector& newargs) { - std::vector::const_iterator i; - for (i = arguments.begin(); i != arguments.end(); ++i) { - cmSystemTools::ExpandListArgument(*i, newargs); + for (std::string const& arg : arguments) { + cmSystemTools::ExpandListArgument(arg, newargs); } } diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 93cdd46..e871634 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -707,10 +707,8 @@ std::string cmTarget::GetDebugGeneratorExpressions( std::string configString = "$"; if (debugConfigs.size() > 1) { - for (std::vector::const_iterator li = - debugConfigs.begin() + 1; - li != debugConfigs.end(); ++li) { - configString += ",$"; + for (std::string const& conf : cmMakeRange(debugConfigs).advance(1)) { + configString += ",$"; } configString = "$"; } diff --git a/Source/cmTestGenerator.cxx b/Source/cmTestGenerator.cxx index 5102613..a0e309d 100644 --- a/Source/cmTestGenerator.cxx +++ b/Source/cmTestGenerator.cxx @@ -5,6 +5,7 @@ #include #include +#include "cmAlgorithms.h" #include "cmGeneratorExpression.h" #include "cmGeneratorTarget.h" #include "cmListFileCache.h" @@ -94,10 +95,8 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, std::string emulatorExe(emulatorWithArgs[0]); cmSystemTools::ConvertToUnixSlashes(emulatorExe); os << cmOutputConverter::EscapeForCMake(emulatorExe) << " "; - for (std::vector::const_iterator ei = - emulatorWithArgs.begin() + 1; - ei != emulatorWithArgs.end(); ++ei) { - os << cmOutputConverter::EscapeForCMake(*ei) << " "; + for (std::string const& arg : cmMakeRange(emulatorWithArgs).advance(1)) { + os << cmOutputConverter::EscapeForCMake(arg) << " "; } } } else { @@ -108,11 +107,10 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, // Generate the command line with full escapes. os << cmOutputConverter::EscapeForCMake(exe); - for (std::vector::const_iterator ci = command.begin() + 1; - ci != command.end(); ++ci) { + for (std::string const& arg : cmMakeRange(command).advance(1)) { os << " " << cmOutputConverter::EscapeForCMake( - ge.Parse(*ci)->Evaluate(this->LG, config)); + ge.Parse(arg)->Evaluate(this->LG, config)); } // Finish the test command. @@ -157,12 +155,11 @@ void cmTestGenerator::GenerateOldStyle(std::ostream& fout, Indent indent) fout << "add_test("; fout << this->Test->GetName() << " \"" << exe << "\""; - for (std::vector::const_iterator argit = command.begin() + 1; - argit != command.end(); ++argit) { + for (std::string const& arg : cmMakeRange(command).advance(1)) { // Just double-quote all arguments so they are re-parsed // correctly by the test system. fout << " \""; - for (char c : *argit) { + for (char c : arg) { // Escape quotes within arguments. We should escape // backslashes too but we cannot because it makes the result // inconsistent with previous behavior of this command. diff --git a/Source/cmTryRunCommand.cxx b/Source/cmTryRunCommand.cxx index c57aabd..0f7323d 100644 --- a/Source/cmTryRunCommand.cxx +++ b/Source/cmTryRunCommand.cxx @@ -5,6 +5,7 @@ #include "cmsys/FStream.hxx" #include +#include "cmAlgorithms.h" #include "cmDuration.h" #include "cmMakefile.h" #include "cmMessageType.h" @@ -174,11 +175,9 @@ void cmTryRunCommand::RunExecutable(const std::string& runArgs, finalCommand += cmSystemTools::ConvertToRunCommandPath(emulatorWithArgs[0].c_str()); finalCommand += " "; - for (std::vector::const_iterator ei = - emulatorWithArgs.begin() + 1; - ei != emulatorWithArgs.end(); ++ei) { + for (std::string const& arg : cmMakeRange(emulatorWithArgs).advance(1)) { finalCommand += "\""; - finalCommand += *ei; + finalCommand += arg; finalCommand += "\""; finalCommand += " "; } diff --git a/Source/cmVisualStudioGeneratorOptions.cxx b/Source/cmVisualStudioGeneratorOptions.cxx index 5c3e533..e8b2668 100644 --- a/Source/cmVisualStudioGeneratorOptions.cxx +++ b/Source/cmVisualStudioGeneratorOptions.cxx @@ -438,14 +438,13 @@ void cmVisualStudioGeneratorOptions::OutputPreprocessorDefinitions( const char* sep = ""; std::vector::const_iterator de = cmRemoveDuplicates(this->Defines); - for (std::vector::const_iterator di = this->Defines.begin(); - di != de; ++di) { + for (std::string const& di : cmMakeRange(this->Defines.cbegin(), de)) { // Escape the definition for the compiler. std::string define; if (this->Version < cmGlobalVisualStudioGenerator::VS10) { - define = this->LocalGenerator->EscapeForShell(*di, true); + define = this->LocalGenerator->EscapeForShell(di, true); } else { - define = *di; + define = di; } // Escape this flag for the MSBuild. if (this->Version >= cmGlobalVisualStudioGenerator::VS10) { https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=15bdbec0176e3aa620bb5bda3631819c5ca18eaf commit 15bdbec0176e3aa620bb5bda3631819c5ca18eaf Author: Artur Ryt AuthorDate: Thu Feb 7 22:28:03 2019 +0100 Commit: Artur Ryt CommitDate: Thu Feb 7 22:38:12 2019 +0100 cmAlgorithms: Make cmRange advance/retreat safe for rvalues In rvalue context these functions have to return cmRange by copy instead of reference to temporary object It allows to use ranged-for over cmMakeRange(xxx).advance(yyy) diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h index 9e3efd3..30328c6 100644 --- a/Source/cmAlgorithms.h +++ b/Source/cmAlgorithms.h @@ -172,18 +172,30 @@ struct cmRange const_iterator end() const { return End; } bool empty() const { return std::distance(Begin, End) == 0; } difference_type size() const { return std::distance(Begin, End); } - cmRange& advance(KWIML_INT_intptr_t amount) + + cmRange& advance(KWIML_INT_intptr_t amount) & { - std::advance(Begin, amount); + std::advance(this->Begin, amount); return *this; } + cmRange advance(KWIML_INT_intptr_t amount) && + { + std::advance(this->Begin, amount); + return std::move(*this); + } - cmRange& retreat(KWIML_INT_intptr_t amount) + cmRange& retreat(KWIML_INT_intptr_t amount) & { std::advance(End, -amount); return *this; } + cmRange retreat(KWIML_INT_intptr_t amount) && + { + std::advance(End, -amount); + return std::move(*this); + } + private: const_iterator Begin; const_iterator End; ----------------------------------------------------------------------- Summary of changes: Help/release/3.14.rst | 28 ++++++ Source/CPack/cmCPackCygwinBinaryGenerator.cxx | 5 +- Source/CPack/cmCPackPKGGenerator.cxx | 54 +++++------- Source/CTest/cmCTestMultiProcessHandler.cxx | 5 +- Source/CTest/cmCTestP4.cxx | 6 +- Source/CTest/cmCTestRunTest.cxx | 3 +- Source/CTest/cmCTestTestHandler.h | 3 +- Source/CTest/cmProcess.cxx | 9 +- Source/CTest/cmProcess.h | 4 +- Source/CursesDialog/cmCursesLongMessageForm.cxx | 5 +- Source/CursesDialog/cmCursesMainForm.cxx | 17 ++-- Source/QtDialog/FirstConfigure.cxx | 23 +++-- Source/QtDialog/QCMake.cxx | 33 ++++---- Source/cmAddDependenciesCommand.cxx | 9 +- Source/cmAddSubDirectoryCommand.cxx | 9 +- Source/cmAlgorithms.h | 18 +++- Source/cmCPluginAPI.cxx | 24 +++--- Source/cmComputeLinkDepends.cxx | 18 ++-- Source/cmComputeTargetDepends.cxx | 6 +- Source/cmExtraCodeBlocksGenerator.cxx | 5 +- Source/cmFLTKWrapUICommand.cxx | 10 +-- Source/cmFileCommand.cxx | 36 ++++---- Source/cmFindBase.cxx | 9 +- Source/cmFindPackageCommand.cxx | 8 +- Source/cmForEachCommand.cxx | 6 +- Source/cmGeneratorExpressionEvaluator.cxx | 27 ++---- Source/cmGeneratorExpressionNode.cxx | 8 +- Source/cmGhsMultiTargetGenerator.cxx | 37 ++++---- Source/cmGlobalGenerator.cxx | 12 +-- Source/cmGlobalGhsMultiGenerator.cxx | 6 +- Source/cmGlobalNinjaGenerator.cxx | 3 +- Source/cmGlobalVisualStudio10Generator.cxx | 9 +- Source/cmInstallCommandArguments.cxx | 6 +- Source/cmInstallDirectoryGenerator.cxx | 10 ++- Source/cmInstallExportAndroidMKGenerator.cxx | 14 ++- Source/cmInstallFilesCommand.cxx | 6 +- Source/cmInstallFilesGenerator.cxx | 12 +-- Source/cmInstallGenerator.cxx | 9 +- Source/cmLocalGenerator.cxx | 13 ++- Source/cmLocalNinjaGenerator.cxx | 8 +- Source/cmLocalVisualStudio7Generator.cxx | 108 ++++++++++-------------- Source/cmMakefile.cxx | 25 +++--- Source/cmMakefileTargetGenerator.cxx | 11 ++- Source/cmQTWrapCPPCommand.cxx | 15 ++-- Source/cmQTWrapUICommand.cxx | 15 ++-- Source/cmSetPropertyCommand.cxx | 35 ++++---- Source/cmStateDirectory.cxx | 11 ++- Source/cmSystemTools.cxx | 8 +- Source/cmTarget.cxx | 6 +- Source/cmTestGenerator.cxx | 17 ++-- Source/cmTryRunCommand.cxx | 7 +- Source/cmVisualStudioGeneratorOptions.cxx | 7 +- 52 files changed, 372 insertions(+), 426 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 11 08:13:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 11 Feb 2019 08:13:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.14.0-rc1-10-g9e309cd Message-ID: <20190211131304.EFDD4113A4B@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 9e309cd4f0266144f269cab9006b51c252e25380 (commit) via 2d701b78de30f8b0380abe07bf80cf2babaf68ae (commit) via 88031dd09a86aab66ece60d0d96c3ee352db990a (commit) via 3b58b647aedd0f4717c3f22bb7d3e8b0b559f099 (commit) via bcd99fac60ee3ad9a3c61d88a545d1800e605b10 (commit) via f87e724e8c193df3b9b30ddd0b9d2ec7c6ac2ba7 (commit) from 3b87e7aaa3f8a7c9c2b9d552241d20292ee7fd7c (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/generator/Green Hills MULTI.rst | 1 + Help/manual/cmake-properties.7.rst | 1 + Help/manual/cmake-variables.7.rst | 1 + Help/prop_tgt/GHS_NO_SOURCE_GROUP_FILE.rst | 13 +++++++++++ Help/release/3.14.rst | 28 ++++++++++++++++++++++++ Help/variable/CMAKE_GHS_NO_SOURCE_GROUP_FILE.rst | 6 +++++ Source/cmGhsMultiTargetGenerator.cxx | 2 +- Source/cmMakefile.cxx | 4 +++- Tests/CMakeLists.txt | 2 +- Tests/InterfaceLibrary/CMakeLists.txt | 1 + Tests/InterfaceLibrary/excluded/CMakeLists.txt | 1 + 11 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 Help/prop_tgt/GHS_NO_SOURCE_GROUP_FILE.rst create mode 100644 Help/variable/CMAKE_GHS_NO_SOURCE_GROUP_FILE.rst create mode 100644 Tests/InterfaceLibrary/excluded/CMakeLists.txt hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 12 00:03:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 12 Feb 2019 00:03:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-53-g64ae72c Message-ID: <20190212050304.4F8F0125689@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 64ae72c52ac44984c9d5a23b19f4bd9dc9a68fdf (commit) from 8a1d25afdf92cabab88598cc9b9e5a9fb2a9493b (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=64ae72c52ac44984c9d5a23b19f4bd9dc9a68fdf commit 64ae72c52ac44984c9d5a23b19f4bd9dc9a68fdf Author: Kitware Robot AuthorDate: Tue Feb 12 00:01:06 2019 -0500 Commit: Kitware Robot CommitDate: Tue Feb 12 00:01:06 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 6c6b3a0..a4eb53f 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 14) -set(CMake_VERSION_PATCH 20190211) +set(CMake_VERSION_PATCH 20190212) #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 12 08:33:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 12 Feb 2019 08:33:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-73-g9d2ab63 Message-ID: <20190212133304.BAC6DF53AD@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 9d2ab63aaf5fb29d812dbfc942da4d7671c5d1b3 (commit) via 20afd497c92f66883de5dae92e2105c2f0cb4f70 (commit) via a7a85719332b5be90bb9ce1f3707a767197566c0 (commit) via c0ba467d2de9b6af7bd1657c73eb0638f1d2c89c (commit) via 336300d53003d2ec135d302acfdd1827062a05a6 (commit) via f468c0e1b98389fde7df2baccdc3815171a47a35 (commit) via 9e34f11b3604269c8c4f98bbcf237daeca9eaa2c (commit) via f0a57d42a2b0309c14615b7a9572f611ddda435e (commit) via a251b61181252eb380d24778cdd8224ea7198eef (commit) via 572b4fd85b5987858ee6ce6fd7381c3cfd6720e9 (commit) via 3ff5a43c499c74715a282e782f4191d4420c9c73 (commit) via 40176749bc2243adb4acc8c53c902f6c349da24b (commit) via 950c099d83757acd57cec78a3579ea1f6aaddf96 (commit) via 091afa7342e6c093f404b4777b81313535d73435 (commit) via 006768903cb6586098218822129d622737848299 (commit) via d625dfcdf9ad36802d0615cd929dd5c407a46524 (commit) via 633b3145c0e4d918f53272dab3358867bc252b0b (commit) via f6291eee251ec4fbc699ee63294057b0bc7016a4 (commit) via 948c55857e126825ce5f8282857d6970ba14e6bb (commit) via 6725975bd8c47c7817a286ada9eadb9b0fbf324c (commit) from 64ae72c52ac44984c9d5a23b19f4bd9dc9a68fdf (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=9d2ab63aaf5fb29d812dbfc942da4d7671c5d1b3 commit 9d2ab63aaf5fb29d812dbfc942da4d7671c5d1b3 Merge: 20afd49 091afa7 Author: Brad King AuthorDate: Tue Feb 12 13:28:56 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 12 08:31:00 2019 -0500 Merge topic 'clangcl-fixes' 091afa7342 Tests: Teach tests when to treat clang-cl as MSVC 006768903c Work around clang-cl breakage on make_unique/std::forward d625dfcdf9 Avoid compiling CMake itself as C++17 with Clang's MSVC ABI Acked-by: Kitware Robot Merge-request: !2573 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=20afd497c92f66883de5dae92e2105c2f0cb4f70 commit 20afd497c92f66883de5dae92e2105c2f0cb4f70 Merge: a7a8571 950c099 Author: Brad King AuthorDate: Tue Feb 12 13:28:43 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 12 08:30:13 2019 -0500 Merge topic 'progress-stdstring' 950c099d83 cmake: Progress functions use `std::string` param Acked-by: Kitware Robot Merge-request: !2948 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a7a85719332b5be90bb9ce1f3707a767197566c0 commit a7a85719332b5be90bb9ce1f3707a767197566c0 Merge: c0ba467 f6291ee Author: Brad King AuthorDate: Tue Feb 12 13:28:32 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 12 08:29:08 2019 -0500 Merge topic 'modernize-cmCursesMainForm' f6291eee25 cmCursesMainForm: Modernize with STL and ranged-for loops Acked-by: Kitware Robot Merge-request: !2947 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c0ba467d2de9b6af7bd1657c73eb0638f1d2c89c commit c0ba467d2de9b6af7bd1657c73eb0638f1d2c89c Merge: 336300d 948c558 Author: Brad King AuthorDate: Tue Feb 12 13:28:17 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 12 08:28:24 2019 -0500 Merge topic 'cmCTestRunTest-compress' 948c55857e cmCTestRunTest: Remove duplicated compression logic Acked-by: Kitware Robot Merge-request: !2946 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=336300d53003d2ec135d302acfdd1827062a05a6 commit 336300d53003d2ec135d302acfdd1827062a05a6 Merge: f468c0e a251b61 Author: Brad King AuthorDate: Tue Feb 12 08:27:01 2019 -0500 Commit: Brad King CommitDate: Tue Feb 12 08:27:01 2019 -0500 Merge branch 'release-3.14' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f468c0e1b98389fde7df2baccdc3815171a47a35 commit f468c0e1b98389fde7df2baccdc3815171a47a35 Merge: 9e34f11 4017674 Author: Brad King AuthorDate: Tue Feb 12 13:24:10 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 12 08:25:51 2019 -0500 Merge topic 'FindMatlab-version-empty' 40176749bc FindMatlab: Tolerate empty version log file Acked-by: Kitware Robot Merge-request: !2949 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9e34f11b3604269c8c4f98bbcf237daeca9eaa2c commit 9e34f11b3604269c8c4f98bbcf237daeca9eaa2c Merge: f0a57d4 572b4fd Author: Brad King AuthorDate: Tue Feb 12 13:24:18 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 12 08:24:59 2019 -0500 Merge topic 'doc-if-legacy' 572b4fd85b Help: Fix elseif/endif typo Acked-by: Kitware Robot Merge-request: !2950 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f0a57d42a2b0309c14615b7a9572f611ddda435e commit f0a57d42a2b0309c14615b7a9572f611ddda435e Merge: 64ae72c 6725975 Author: Brad King AuthorDate: Tue Feb 12 13:24:03 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 12 08:24:11 2019 -0500 Merge topic 'FindOctave-interp-target' 6725975bd8 FindOctave: Add target for octinterp Acked-by: Kitware Robot Merge-request: !2931 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=950c099d83757acd57cec78a3579ea1f6aaddf96 commit 950c099d83757acd57cec78a3579ea1f6aaddf96 Author: Vitaly Stakhovsky AuthorDate: Mon Feb 11 10:30:00 2019 -0500 Commit: Vitaly Stakhovsky CommitDate: Mon Feb 11 10:32:43 2019 -0500 cmake: Progress functions use `std::string` param diff --git a/Source/CPack/cmCPackGenerator.cxx b/Source/CPack/cmCPackGenerator.cxx index b4c05ab..2917763 100644 --- a/Source/CPack/cmCPackGenerator.cxx +++ b/Source/CPack/cmCPackGenerator.cxx @@ -43,7 +43,8 @@ cmCPackGenerator::~cmCPackGenerator() this->MakefileMap = nullptr; } -void cmCPackGenerator::DisplayVerboseOutput(const char* msg, float progress) +void cmCPackGenerator::DisplayVerboseOutput(const std::string& msg, + float progress) { (void)progress; cmCPackLogger(cmCPackLog::LOG_VERBOSE, "" << msg << std::endl); @@ -689,7 +690,7 @@ int cmCPackGenerator::InstallCMakeProject( cm.SetHomeOutputDirectory(""); cm.GetCurrentSnapshot().SetDefaultDefinitions(); cm.AddCMakePaths(); - cm.SetProgressCallback([this](const char* msg, float prog) { + cm.SetProgressCallback([this](const std::string& msg, float prog) { this->DisplayVerboseOutput(msg, prog); }); cm.SetTrace(this->Trace); diff --git a/Source/CPack/cmCPackGenerator.h b/Source/CPack/cmCPackGenerator.h index 4755f94..9e4bf43 100644 --- a/Source/CPack/cmCPackGenerator.h +++ b/Source/CPack/cmCPackGenerator.h @@ -96,7 +96,7 @@ public: void SetLogger(cmCPackLog* log) { this->Logger = log; } //! Display verbose information via logger - void DisplayVerboseOutput(const char* msg, float progress); + void DisplayVerboseOutput(const std::string& msg, float progress); bool ReadListFile(const char* moduleName); diff --git a/Source/CPack/cpack.cxx b/Source/CPack/cpack.cxx index 0413422..da9575b 100644 --- a/Source/CPack/cpack.cxx +++ b/Source/CPack/cpack.cxx @@ -90,7 +90,7 @@ int cpackDefinitionArgument(const char* argument, const char* cValue, return 1; } -static void cpackProgressCallback(const char* message, float /*unused*/) +static void cpackProgressCallback(const std::string& message, float /*unused*/) { std::cout << "-- " << message << std::endl; } diff --git a/Source/CTest/cmCTestBuildAndTestHandler.cxx b/Source/CTest/cmCTestBuildAndTestHandler.cxx index 3856569..696b52f 100644 --- a/Source/CTest/cmCTestBuildAndTestHandler.cxx +++ b/Source/CTest/cmCTestBuildAndTestHandler.cxx @@ -126,10 +126,11 @@ public: cmSystemTools::SetStdoutCallback([&s](std::string const& m) { s += m; }); cmSystemTools::SetStderrCallback([&s](std::string const& m) { s += m; }); - this->CM.SetProgressCallback([&s](const char* msg, float /*unused*/) { - s += msg; - s += "\n"; - }); + this->CM.SetProgressCallback( + [&s](const std::string& msg, float /*unused*/) { + s += msg; + s += "\n"; + }); } ~cmCTestBuildAndTestCaptureRAII() diff --git a/Source/CTest/cmCTestScriptHandler.cxx b/Source/CTest/cmCTestScriptHandler.cxx index 2cbdc4e..a714abe 100644 --- a/Source/CTest/cmCTestScriptHandler.cxx +++ b/Source/CTest/cmCTestScriptHandler.cxx @@ -288,11 +288,12 @@ void cmCTestScriptHandler::CreateCMake() this->ParentMakefile->GetRecursionDepth()); } - this->CMake->SetProgressCallback([this](const char* m, float /*unused*/) { - if (m && *m) { - cmCTestLog(this->CTest, HANDLER_OUTPUT, "-- " << m << std::endl); - } - }); + this->CMake->SetProgressCallback( + [this](const std::string& m, float /*unused*/) { + if (!m.empty()) { + cmCTestLog(this->CTest, HANDLER_OUTPUT, "-- " << m << std::endl); + } + }); this->AddCTestCommand("ctest_build", new cmCTestBuildCommand); this->AddCTestCommand("ctest_configure", new cmCTestConfigureCommand); diff --git a/Source/CursesDialog/cmCursesMainForm.cxx b/Source/CursesDialog/cmCursesMainForm.cxx index 076ee3d..ec18ece 100644 --- a/Source/CursesDialog/cmCursesMainForm.cxx +++ b/Source/CursesDialog/cmCursesMainForm.cxx @@ -501,14 +501,14 @@ void cmCursesMainForm::UpdateStatusBar(const char* message) pos_form_cursor(this->Form); } -void cmCursesMainForm::UpdateProgress(const char* msg, float prog) +void cmCursesMainForm::UpdateProgress(const std::string& msg, float prog) { char tmp[1024]; const char* cmsg = tmp; if (prog >= 0) { - sprintf(tmp, "%s %i%%", msg, static_cast(100 * prog)); + sprintf(tmp, "%s %i%%", msg.c_str(), static_cast(100 * prog)); } else { - cmsg = msg; + cmsg = msg.c_str(); } this->UpdateStatusBar(cmsg); this->PrintKeys(1); @@ -528,7 +528,9 @@ int cmCursesMainForm::Configure(int noconfigure) touchwin(stdscr); refresh(); this->CMakeInstance->SetProgressCallback( - [this](const char* msg, float prog) { this->UpdateProgress(msg, prog); }); + [this](const std::string& msg, float prog) { + this->UpdateProgress(msg, prog); + }); // always save the current gui values to disk this->FillCacheManagerFromUI(); @@ -598,7 +600,9 @@ int cmCursesMainForm::Generate() touchwin(stdscr); refresh(); this->CMakeInstance->SetProgressCallback( - [this](const char* msg, float prog) { this->UpdateProgress(msg, prog); }); + [this](const std::string& msg, float prog) { + this->UpdateProgress(msg, prog); + }); // Get rid of previous errors this->Errors = std::vector(); diff --git a/Source/CursesDialog/cmCursesMainForm.h b/Source/CursesDialog/cmCursesMainForm.h index c09ce2a..d379975 100644 --- a/Source/CursesDialog/cmCursesMainForm.h +++ b/Source/CursesDialog/cmCursesMainForm.h @@ -102,7 +102,7 @@ public: /** * Progress callback */ - void UpdateProgress(const char* msg, float prog); + void UpdateProgress(const std::string& msg, float prog); protected: // Copy the cache values from the user interface to the actual diff --git a/Source/QtDialog/QCMake.cxx b/Source/QtDialog/QCMake.cxx index c90c142..f357f90 100644 --- a/Source/QtDialog/QCMake.cxx +++ b/Source/QtDialog/QCMake.cxx @@ -37,7 +37,7 @@ QCMake::QCMake(QObject* p) this->CMakeInstance->SetCMakeEditCommand( cmSystemTools::GetCMakeGUICommand()); this->CMakeInstance->SetProgressCallback( - [this](const char* msg, float percent) { + [this](const std::string& msg, float percent) { this->progressCallback(msg, percent); }); @@ -346,12 +346,12 @@ bool QCMake::interruptCallback() #endif } -void QCMake::progressCallback(const char* msg, float percent) +void QCMake::progressCallback(const std::string& msg, float percent) { if (percent >= 0) { - emit this->progressChanged(QString::fromLocal8Bit(msg), percent); + emit this->progressChanged(QString::fromStdString(msg), percent); } else { - emit this->outputMessage(QString::fromLocal8Bit(msg)); + emit this->outputMessage(QString::fromStdString(msg)); } QCoreApplication::processEvents(); } diff --git a/Source/QtDialog/QCMake.h b/Source/QtDialog/QCMake.h index 8492606..f2fd6d9 100644 --- a/Source/QtDialog/QCMake.h +++ b/Source/QtDialog/QCMake.h @@ -168,7 +168,7 @@ protected: cmake* CMakeInstance; bool interruptCallback(); - void progressCallback(const char* msg, float percent); + void progressCallback(std::string const& msg, float percent); void messageCallback(std::string const& msg, const char* title); void stdoutCallback(std::string const& msg); void stderrCallback(std::string const& msg); diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index fb3a1bc..4d9f657 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -1834,7 +1834,7 @@ protected: if (!this->MessageNever && (copy || !this->MessageLazy)) { std::string message = (copy ? "Installing: " : "Up-to-date: "); message += toFile; - this->Makefile->DisplayStatus(message.c_str(), -1); + this->Makefile->DisplayStatus(message, -1); } if (type != TypeDir) { // Add the file to the manifest. @@ -2214,7 +2214,7 @@ bool cmFileCommand::HandleRPathChangeCommand( message += "\" to \""; message += newRPath; message += "\""; - this->Makefile->DisplayStatus(message.c_str(), -1); + this->Makefile->DisplayStatus(message, -1); } if (have_ft) { cmSystemTools::FileTimeSet(file, ft); @@ -2278,7 +2278,7 @@ bool cmFileCommand::HandleRPathRemoveCommand( std::string message = "Removed runtime path from \""; message += file; message += "\""; - this->Makefile->DisplayStatus(message.c_str(), -1); + this->Makefile->DisplayStatus(message, -1); } if (have_ft) { cmSystemTools::FileTimeSet(file, ft); @@ -2647,7 +2647,7 @@ int cmFileDownloadProgressCallback(void* clientp, double dltotal, double dlnow, if (helper->UpdatePercentage(dlnow, dltotal, status)) { cmFileCommand* fc = helper->GetFileCommand(); cmMakefile* mf = fc->GetMakefile(); - mf->DisplayStatus(status.c_str(), -1); + mf->DisplayStatus(status, -1); } return 0; @@ -2665,7 +2665,7 @@ int cmFileUploadProgressCallback(void* clientp, double dltotal, double dlnow, if (helper->UpdatePercentage(ulnow, ultotal, status)) { cmFileCommand* fc = helper->GetFileCommand(); cmMakefile* mf = fc->GetMakefile(); - mf->DisplayStatus(status.c_str(), -1); + mf->DisplayStatus(status, -1); } return 0; diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index 52ff5ea..45b096f 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -911,7 +911,7 @@ bool cmFindPackageCommand::HandlePackageMode() std::ostringstream aw; aw << "Could NOT find " << this->Name << " (missing: " << this->Name << "_DIR)"; - this->Makefile->DisplayStatus(aw.str().c_str(), -1); + this->Makefile->DisplayStatus(aw.str(), -1); } } diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 8e7ca12..11c382f 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1225,7 +1225,7 @@ void cmGlobalGenerator::Configure() } else { msg << "Configuring done"; } - this->CMakeInstance->UpdateProgress(msg.str().c_str(), -1); + this->CMakeInstance->UpdateProgress(msg.str(), -1); } } diff --git a/Source/cmGlobalVisualStudio10Generator.cxx b/Source/cmGlobalVisualStudio10Generator.cxx index 7284f0b..f872de5 100644 --- a/Source/cmGlobalVisualStudio10Generator.cxx +++ b/Source/cmGlobalVisualStudio10Generator.cxx @@ -1006,7 +1006,7 @@ bool cmGlobalVisualStudio10Generator::Find64BitTools(cmMakefile* mf) winSDK_7_1)) { std::ostringstream m; m << "Found Windows SDK v7.1: " << winSDK_7_1; - mf->DisplayStatus(m.str().c_str(), -1); + mf->DisplayStatus(m.str(), -1); this->DefaultPlatformToolset = "Windows7.1SDK"; return true; } else { diff --git a/Source/cmGlobalVisualStudio14Generator.cxx b/Source/cmGlobalVisualStudio14Generator.cxx index a0a9558..2d54c33 100644 --- a/Source/cmGlobalVisualStudio14Generator.cxx +++ b/Source/cmGlobalVisualStudio14Generator.cxx @@ -171,7 +171,7 @@ bool cmGlobalVisualStudio14Generator::SelectWindows10SDK(cmMakefile* mf, std::ostringstream e; e << "Selecting Windows SDK version " << this->WindowsTargetPlatformVersion << " to target Windows " << this->SystemVersion << "."; - mf->DisplayStatus(e.str().c_str(), -1); + mf->DisplayStatus(e.str(), -1); } mf->AddDefinition("CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION", this->WindowsTargetPlatformVersion.c_str()); diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index f246da2..b0dacf1 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -3547,7 +3547,7 @@ cmState* cmMakefile::GetState() const return this->GetCMakeInstance()->GetState(); } -void cmMakefile::DisplayStatus(const char* message, float s) const +void cmMakefile::DisplayStatus(const std::string& message, float s) const { cmake* cm = this->GetCMakeInstance(); if (cm->GetWorkingMode() == cmake::FIND_PACKAGE_MODE) { diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index fce90f2..9f01986 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -639,7 +639,7 @@ public: #endif ///! Display progress or status message. - void DisplayStatus(const char*, float) const; + void DisplayStatus(const std::string&, float) const; /** * Expand the given list file arguments into the full set after diff --git a/Source/cmMessageCommand.cxx b/Source/cmMessageCommand.cxx index 95f5fcb..1a21ae4 100644 --- a/Source/cmMessageCommand.cxx +++ b/Source/cmMessageCommand.cxx @@ -68,7 +68,7 @@ bool cmMessageCommand::InitialPass(std::vector const& args, m->DisplayMessage(type, message, this->Makefile->GetBacktrace()); } else { if (status) { - this->Makefile->DisplayStatus(message.c_str(), -1); + this->Makefile->DisplayStatus(message, -1); } else { cmSystemTools::Message(message); } diff --git a/Source/cmServer.cxx b/Source/cmServer.cxx index 719e6b1..1903fd9 100644 --- a/Source/cmServer.cxx +++ b/Source/cmServer.cxx @@ -103,7 +103,7 @@ void cmServer::ProcessRequest(cmConnection* connection, if (this->Protocol) { this->Protocol->CMakeInstance()->SetProgressCallback( - [&request](const char* msg, float prog) { + [&request](const std::string& msg, float prog) { reportProgress(msg, prog, request); }); this->WriteResponse(connection, this->Protocol->Process(request), @@ -155,7 +155,7 @@ void cmServer::PrintHello(cmConnection* connection) const this->WriteJsonObject(connection, hello, nullptr); } -void cmServer::reportProgress(const char* msg, float progress, +void cmServer::reportProgress(const std::string& msg, float progress, const cmServerRequest& request) { if (progress < 0.0f || progress > 1.0f) { diff --git a/Source/cmServer.h b/Source/cmServer.h index 3edc887..aba4924 100644 --- a/Source/cmServer.h +++ b/Source/cmServer.h @@ -119,7 +119,7 @@ public: void OnConnected(cmConnection* connection) override; private: - static void reportProgress(const char* msg, float progress, + static void reportProgress(const std::string& msg, float progress, const cmServerRequest& request); static void reportMessage(const std::string& msg, const char* title, const cmServerRequest& request); diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 8023298..d507484 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -1705,7 +1705,7 @@ int cmake::Run(const std::vector& args, bool noconfigure) ret = this->Generate(); std::string message = "Build files have been written to: "; message += this->GetHomeOutputDirectory(); - this->UpdateProgress(message.c_str(), -1); + this->UpdateProgress(message, -1); return ret; } @@ -1925,7 +1925,7 @@ void cmake::SetProgressCallback(ProgressCallbackType f) this->ProgressCallback = std::move(f); } -void cmake::UpdateProgress(const char* msg, float prog) +void cmake::UpdateProgress(const std::string& msg, float prog) { if (this->ProgressCallback && !this->State->GetIsInTryCompile()) { this->ProgressCallback(msg, prog); @@ -2640,7 +2640,7 @@ int cmake::Build(int jobs, const std::string& dir, const std::string& target, } std::string message = "Build files have been written to: "; message += this->GetHomeOutputDirectory(); - this->UpdateProgress(message.c_str(), -1); + this->UpdateProgress(message, -1); // Restore the previously set directories to their original value. this->SetHomeDirectory(homeOrig); diff --git a/Source/cmake.h b/Source/cmake.h index 53d44f1..6fa2d3a 100644 --- a/Source/cmake.h +++ b/Source/cmake.h @@ -273,7 +273,7 @@ public: ///! Parse command line arguments that might set cache values bool SetCacheArgs(const std::vector&); - using ProgressCallbackType = std::function; + using ProgressCallbackType = std::function; /** * Set the function used by GUIs to receive progress updates * Function gets passed: message as a const char*, a progress @@ -284,7 +284,7 @@ public: void SetProgressCallback(ProgressCallbackType f); ///! this is called by generators to update the progress - void UpdateProgress(const char* msg, float prog); + void UpdateProgress(const std::string& msg, float prog); #if defined(CMAKE_BUILD_WITH_CMAKE) ///! Get the variable watch object diff --git a/Source/cmakemain.cxx b/Source/cmakemain.cxx index a49246b..09068f8 100644 --- a/Source/cmakemain.cxx +++ b/Source/cmakemain.cxx @@ -148,14 +148,15 @@ static void cmakemainMessageCallback(const std::string& m, std::cerr << m << cmakemainGetStack(cm) << std::endl << std::flush; } -static void cmakemainProgressCallback(const char* m, float prog, cmake* cm) +static void cmakemainProgressCallback(const std::string& m, float prog, + cmake* cm) { cmMakefile* mf = cmakemainGetMakefile(cm); std::string dir; - if ((mf) && (strstr(m, "Configuring") == m) && (prog < 0)) { + if (mf && cmHasLiteralPrefix(m, "Configuring") && (prog < 0)) { dir = " "; dir += mf->GetCurrentSourceDirectory(); - } else if ((mf) && (strstr(m, "Generating") == m)) { + } else if (mf && cmHasLiteralPrefix(m, "Generating")) { dir = " "; dir += mf->GetCurrentBinaryDirectory(); } @@ -323,7 +324,7 @@ int do_cmake(int ac, char const* const* av) [&cm](const std::string& msg, const char* title) { cmakemainMessageCallback(msg, title, &cm); }); - cm.SetProgressCallback([&cm](const char* msg, float prog) { + cm.SetProgressCallback([&cm](const std::string& msg, float prog) { cmakemainProgressCallback(msg, prog, &cm); }); cm.SetWorkingMode(workingMode); @@ -504,7 +505,7 @@ static int do_build(int ac, char const* const* av) [&cm](const std::string& msg, const char* title) { cmakemainMessageCallback(msg, title, &cm); }); - cm.SetProgressCallback([&cm](const char* msg, float prog) { + cm.SetProgressCallback([&cm](const std::string& msg, float prog) { cmakemainProgressCallback(msg, prog, &cm); }); return cm.Build(jobs, dir, target, config, nativeOptions, clean, verbose); @@ -547,7 +548,7 @@ static int do_open(int ac, char const* const* av) [&cm](const std::string& msg, const char* title) { cmakemainMessageCallback(msg, title, &cm); }); - cm.SetProgressCallback([&cm](const char* msg, float prog) { + cm.SetProgressCallback([&cm](const std::string& msg, float prog) { cmakemainProgressCallback(msg, prog, &cm); }); return cm.Open(dir, false) ? 0 : 1; https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=091afa7342e6c093f404b4777b81313535d73435 commit 091afa7342e6c093f404b4777b81313535d73435 Author: Zsolt Parragi AuthorDate: Tue Nov 6 20:40:18 2018 +0100 Commit: Zsolt Parragi CommitDate: Mon Feb 11 15:04:28 2019 +0100 Tests: Teach tests when to treat clang-cl as MSVC * Disable the system include unused variable test in ExportImport when clang is in MSVC compatible mode. * Disable CxxDialect testcase when clang is in MSVC compatible mode, as it doesn't support `typeof`. * Teach Module.WriteCompilerDetectionHeader to treat clang-cl as MSVC. * Disable the SystemIncludeDirectories testcase within IncludeDirectories when clang is in MSVC compatible mode. * Disable the CMakeOnly.CheckCXXCompilerFlag testcase when clang is in MSVC compatible mode. * Treat clang-cl as MSVC in LinkOptions.cmake in the try_run and try_compile testcases. diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index e8e5a2c..40e53a2 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -459,7 +459,7 @@ if(BUILD_TESTING) set(runCxxDialectTest 1) endif() if(CMAKE_CXX_COMPILER_ID STREQUAL Clang - AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.4) + AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.4 AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC") if(NOT APPLE OR POLICY CMP0025) set(runCxxDialectTest 1) endif() diff --git a/Tests/CMakeOnly/CheckCXXCompilerFlag/CMakeLists.txt b/Tests/CMakeOnly/CheckCXXCompilerFlag/CMakeLists.txt index 9be69f1..1f9d3ac 100644 --- a/Tests/CMakeOnly/CheckCXXCompilerFlag/CMakeLists.txt +++ b/Tests/CMakeOnly/CheckCXXCompilerFlag/CMakeLists.txt @@ -57,7 +57,7 @@ else() message("Unhandled Platform") endif() -if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") +if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC") check_cxx_compiler_flag("-x c++" HAVE_X_CXX) if(NOT HAVE_X_CXX) message(FATAL_ERROR "${CMAKE_CXX_COMPILER_ID} compiler flag '-x c++' check failed") diff --git a/Tests/ExportImport/Import/A/CMakeLists.txt b/Tests/ExportImport/Import/A/CMakeLists.txt index 811fff3..b5df961 100644 --- a/Tests/ExportImport/Import/A/CMakeLists.txt +++ b/Tests/ExportImport/Import/A/CMakeLists.txt @@ -407,7 +407,7 @@ endforeach() unset(_configs) if (((CMAKE_C_COMPILER_ID STREQUAL GNU AND CMAKE_C_COMPILER_VERSION VERSION_GREATER 4.4) - OR CMAKE_C_COMPILER_ID STREQUAL Clang) + OR (CMAKE_C_COMPILER_ID STREQUAL Clang AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")) AND (CMAKE_GENERATOR STREQUAL "Unix Makefiles" OR CMAKE_GENERATOR STREQUAL "Ninja")) include(CheckCXXCompilerFlag) check_cxx_compiler_flag(-Wunused-variable run_sys_includes_test) diff --git a/Tests/IncludeDirectories/CMakeLists.txt b/Tests/IncludeDirectories/CMakeLists.txt index b7b8320..761c405 100644 --- a/Tests/IncludeDirectories/CMakeLists.txt +++ b/Tests/IncludeDirectories/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required (VERSION 2.6) project(IncludeDirectories) if (((CMAKE_C_COMPILER_ID STREQUAL GNU AND CMAKE_C_COMPILER_VERSION VERSION_GREATER 4.4) - OR CMAKE_C_COMPILER_ID STREQUAL Clang OR CMAKE_C_COMPILER_ID STREQUAL AppleClang) + OR (CMAKE_C_COMPILER_ID STREQUAL Clang AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC") OR CMAKE_C_COMPILER_ID STREQUAL AppleClang) AND (CMAKE_GENERATOR STREQUAL "Unix Makefiles" OR CMAKE_GENERATOR STREQUAL "Ninja" OR (CMAKE_GENERATOR STREQUAL "Xcode" AND NOT XCODE_VERSION VERSION_LESS 6.0))) diff --git a/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt b/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt index 45bb229..616092d 100644 --- a/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt +++ b/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt @@ -61,7 +61,7 @@ if (C_expected_features) string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" COMPILER_VERSION_PATCH "${CMAKE_C_COMPILER_VERSION}") if (CMAKE_C_COMPILER_ID STREQUAL "GNU" - OR CMAKE_C_COMPILER_ID STREQUAL "Clang" + OR (CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC") OR CMAKE_C_COMPILER_ID STREQUAL "AppleClang" OR CMAKE_C_COMPILER_ID STREQUAL "Intel") add_executable(WriteCompilerDetectionHeader_C11 main.c) @@ -118,7 +118,7 @@ string(REGEX REPLACE "^[0-9]+\\.([0-9]+)\\.[0-9]+.*" "\\1" COMPILER_VERSION_MINO string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" COMPILER_VERSION_PATCH "${CMAKE_CXX_COMPILER_VERSION}") if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" - OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" + OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC") OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" OR CMAKE_CXX_COMPILER_ID STREQUAL "SunPro" OR CMAKE_CXX_COMPILER_ID STREQUAL "Intel") @@ -128,7 +128,7 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" endif() # for msvc the compiler version determines which c++11 features are available. -if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") +if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC") if(";${CMAKE_CXX_COMPILE_FEATURES};" MATCHES ";cxx_delegating_constructors;") list(APPEND true_defs EXPECTED_COMPILER_CXX_DELEGATING_CONSTRUCTORS) list(APPEND true_defs EXPECTED_COMPILER_CXX_VARIADIC_TEMPLATES) diff --git a/Tests/RunCMake/try_compile/LinkOptions.cmake b/Tests/RunCMake/try_compile/LinkOptions.cmake index 9b246c4..488cab1 100644 --- a/Tests/RunCMake/try_compile/LinkOptions.cmake +++ b/Tests/RunCMake/try_compile/LinkOptions.cmake @@ -5,7 +5,7 @@ cmake_policy(SET CMP0054 NEW) set (lib_name "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}lib${CMAKE_STATIC_LIBRARY_SUFFIX}") if (CMAKE_SYSTEM_NAME STREQUAL "Windows") - if (RunCMake_C_COMPILER_ID STREQUAL "MSVC") + if (RunCMake_C_COMPILER_ID STREQUAL "MSVC" OR "x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC") if (CMAKE_SIZEOF_VOID_P EQUAL 4) set (undef_flag /INCLUDE:_func) else() diff --git a/Tests/RunCMake/try_run/LinkOptions.cmake b/Tests/RunCMake/try_run/LinkOptions.cmake index 17af2f7..9939a42 100644 --- a/Tests/RunCMake/try_run/LinkOptions.cmake +++ b/Tests/RunCMake/try_run/LinkOptions.cmake @@ -5,7 +5,7 @@ cmake_policy(SET CMP0054 NEW) set (lib_name "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}lib${CMAKE_STATIC_LIBRARY_SUFFIX}") if (CMAKE_SYSTEM_NAME STREQUAL "Windows") - if (RunCMake_C_COMPILER_ID STREQUAL "MSVC") + if (RunCMake_C_COMPILER_ID STREQUAL "MSVC" OR "x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC") if (CMAKE_SIZEOF_VOID_P EQUAL 4) set (undef_flag /INCLUDE:_func) else() https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=006768903cb6586098218822129d622737848299 commit 006768903cb6586098218822129d622737848299 Author: Zsolt Parragi AuthorDate: Tue Nov 6 20:40:18 2018 +0100 Commit: Zsolt Parragi CommitDate: Mon Feb 11 15:04:28 2019 +0100 Work around clang-cl breakage on make_unique/std::forward Clang on Windows with the MSVC ABI produces link errors of the form `unresolved std::_Iosb::{app,_Openmode} in ...`. Use a temporary variable to forward as lvalue rather than rvalue to work around the problem. diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx index c8f743a..a12e0c4 100644 --- a/Source/cmExportFileGenerator.cxx +++ b/Source/cmExportFileGenerator.cxx @@ -70,8 +70,9 @@ bool cmExportFileGenerator::GenerateImportFile() std::unique_ptr foutPtr; if (this->AppendMode) { // Open for append. + auto openmodeApp = std::ios::app; foutPtr = cm::make_unique(this->MainImportFile.c_str(), - std::ios::app); + openmodeApp); } else { // Generate atomically and with copy-if-different. std::unique_ptr ap( diff --git a/Source/cmExportLibraryDependenciesCommand.cxx b/Source/cmExportLibraryDependenciesCommand.cxx index b4b2962..e542e50 100644 --- a/Source/cmExportLibraryDependenciesCommand.cxx +++ b/Source/cmExportLibraryDependenciesCommand.cxx @@ -50,8 +50,9 @@ void cmExportLibraryDependenciesCommand::ConstFinalPass() const // Use copy-if-different if not appending. std::unique_ptr foutPtr; if (this->Append) { + const auto openmodeApp = std::ios::app; foutPtr = - cm::make_unique(this->Filename.c_str(), std::ios::app); + cm::make_unique(this->Filename.c_str(), openmodeApp); } else { std::unique_ptr ap( new cmGeneratedFileStream(this->Filename, true)); https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d625dfcdf9ad36802d0615cd929dd5c407a46524 commit d625dfcdf9ad36802d0615cd929dd5c407a46524 Author: Zsolt Parragi AuthorDate: Tue Nov 6 20:40:18 2018 +0100 Commit: Zsolt Parragi CommitDate: Mon Feb 11 15:04:19 2019 +0100 Avoid compiling CMake itself as C++17 with Clang's MSVC ABI GUID functions in ATL cause compilation errors with this compiler. Add the offending case to our check for C++17 support so that it is not used by default when it does not work. diff --git a/Source/Checks/cm_cxx17_check.cpp b/Source/Checks/cm_cxx17_check.cpp index 4e89184..2de10d6 100644 --- a/Source/Checks/cm_cxx17_check.cpp +++ b/Source/Checks/cm_cxx17_check.cpp @@ -2,8 +2,21 @@ #include #include +#ifdef _MSC_VER +# include +#endif + int main() { std::unique_ptr u(new int(0)); + +#ifdef _MSC_VER + // clang-cl has problems instantiating this constructor in C++17 mode + // error: indirection requires pointer operand ('const _GUID' invalid) + // return *_IID; + IUnknownPtr ptr{}; + IDispatchPtr disp(ptr); +#endif + return *u; } https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f6291eee251ec4fbc699ee63294057b0bc7016a4 commit f6291eee251ec4fbc699ee63294057b0bc7016a4 Author: Artur Ryt AuthorDate: Sun Feb 10 19:05:27 2019 +0100 Commit: Artur Ryt CommitDate: Sun Feb 10 19:07:50 2019 +0100 cmCursesMainForm: Modernize with STL and ranged-for loops diff --git a/Source/CursesDialog/cmCursesMainForm.cxx b/Source/CursesDialog/cmCursesMainForm.cxx index f6a1a57..a03405c 100644 --- a/Source/CursesDialog/cmCursesMainForm.cxx +++ b/Source/CursesDialog/cmCursesMainForm.cxx @@ -79,18 +79,11 @@ cmCursesMainForm::~cmCursesMainForm() // See if a cache entry is in the list of entries in the ui. bool cmCursesMainForm::LookForCacheEntry(const std::string& key) { - if (!this->Entries) { - return false; - } - - std::vector::iterator it; - for (it = this->Entries->begin(); it != this->Entries->end(); ++it) { - if (key == (*it)->Key) { - return true; - } - } - - return false; + return this->Entries && + std::any_of(this->Entries->begin(), this->Entries->end(), + [&key](cmCursesCacheEntryComposite* entry) { + return key == entry->Key; + }); } // Create new cmCursesCacheEntryComposite entries from the cache @@ -190,13 +183,12 @@ void cmCursesMainForm::RePost() } else { // If normal mode, count only non-advanced entries this->NumberOfVisibleEntries = 0; - std::vector::iterator it; - for (it = this->Entries->begin(); it != this->Entries->end(); ++it) { + for (cmCursesCacheEntryComposite* entry : *this->Entries) { const char* existingValue = - this->CMakeInstance->GetState()->GetCacheEntryValue((*it)->GetValue()); + this->CMakeInstance->GetState()->GetCacheEntryValue(entry->GetValue()); bool advanced = this->CMakeInstance->GetState()->GetCacheEntryPropertyAsBool( - (*it)->GetValue(), "ADVANCED"); + entry->GetValue(), "ADVANCED"); if (!existingValue || (!this->AdvancedMode && advanced)) { continue; } @@ -217,27 +209,26 @@ void cmCursesMainForm::RePost() // Assign fields int j = 0; - std::vector::iterator it; - for (it = this->Entries->begin(); it != this->Entries->end(); ++it) { + for (cmCursesCacheEntryComposite* entry : *this->Entries) { const char* existingValue = - this->CMakeInstance->GetState()->GetCacheEntryValue((*it)->GetValue()); + this->CMakeInstance->GetState()->GetCacheEntryValue(entry->GetValue()); bool advanced = this->CMakeInstance->GetState()->GetCacheEntryPropertyAsBool( - (*it)->GetValue(), "ADVANCED"); + entry->GetValue(), "ADVANCED"); if (!existingValue || (!this->AdvancedMode && advanced)) { continue; } - this->Fields[3 * j] = (*it)->Label->Field; - this->Fields[3 * j + 1] = (*it)->IsNewLabel->Field; - this->Fields[3 * j + 2] = (*it)->Entry->Field; + this->Fields[3 * j] = entry->Label->Field; + this->Fields[3 * j + 1] = entry->IsNewLabel->Field; + this->Fields[3 * j + 2] = entry->Entry->Field; j++; } // if no cache entries there should still be one dummy field if (j == 0) { - it = this->Entries->begin(); - this->Fields[0] = (*it)->Label->Field; - this->Fields[1] = (*it)->IsNewLabel->Field; - this->Fields[2] = (*it)->Entry->Field; + const auto& front = *this->Entries->front(); + this->Fields[0] = front.Label->Field; + this->Fields[1] = front.IsNewLabel->Field; + this->Fields[2] = front.Entry->Field; this->NumberOfVisibleEntries = 1; } // Has to be null terminated. @@ -278,13 +269,12 @@ void cmCursesMainForm::Render(int left, int top, int width, int height) } else { // If normal, display only non-advanced entries this->NumberOfVisibleEntries = 0; - std::vector::iterator it; - for (it = this->Entries->begin(); it != this->Entries->end(); ++it) { + for (cmCursesCacheEntryComposite* entry : *this->Entries) { const char* existingValue = - this->CMakeInstance->GetState()->GetCacheEntryValue((*it)->GetValue()); + this->CMakeInstance->GetState()->GetCacheEntryValue(entry->GetValue()); bool advanced = this->CMakeInstance->GetState()->GetCacheEntryPropertyAsBool( - (*it)->GetValue(), "ADVANCED"); + entry->GetValue(), "ADVANCED"); if (!existingValue || (!this->AdvancedMode && advanced)) { continue; } @@ -297,13 +287,12 @@ void cmCursesMainForm::Render(int left, int top, int width, int height) if (height > 0) { bool isNewPage; int i = 0; - std::vector::iterator it; - for (it = this->Entries->begin(); it != this->Entries->end(); ++it) { + for (cmCursesCacheEntryComposite* entry : *this->Entries) { const char* existingValue = - this->CMakeInstance->GetState()->GetCacheEntryValue((*it)->GetValue()); + this->CMakeInstance->GetState()->GetCacheEntryValue(entry->GetValue()); bool advanced = this->CMakeInstance->GetState()->GetCacheEntryPropertyAsBool( - (*it)->GetValue(), "ADVANCED"); + entry->GetValue(), "ADVANCED"); if (!existingValue || (!this->AdvancedMode && advanced)) { continue; } @@ -314,10 +303,10 @@ void cmCursesMainForm::Render(int left, int top, int width, int height) if (isNewPage) { this->NumberOfPages++; } - (*it)->Label->Move(left, top + row - 1, isNewPage); - (*it)->IsNewLabel->Move(left + 32, top + row - 1, false); - (*it)->Entry->Move(left + 33, top + row - 1, false); - (*it)->Entry->SetPage(this->NumberOfPages); + entry->Label->Move(left, top + row - 1, isNewPage); + entry->IsNewLabel->Move(left + 32, top + row - 1, false); + entry->Entry->Move(left + 33, top + row - 1, false); + entry->Entry->SetPage(this->NumberOfPages); i++; } } @@ -659,28 +648,28 @@ void cmCursesMainForm::RemoveEntry(const char* value) return; } - std::vector::iterator it; - for (it = this->Entries->begin(); it != this->Entries->end(); ++it) { - const char* val = (*it)->GetValue(); - if (val && !strcmp(value, val)) { - this->CMakeInstance->UnwatchUnusedCli(value); - this->Entries->erase(it); - break; - } + auto removeIt = std::find_if(this->Entries->begin(), this->Entries->end(), + [value](cmCursesCacheEntryComposite* entry) { + const char* val = entry->GetValue(); + return val && !strcmp(value, val); + }); + + if (removeIt != this->Entries->end()) { + this->CMakeInstance->UnwatchUnusedCli(value); + this->Entries->erase(removeIt); } } // copy from the list box to the cache manager void cmCursesMainForm::FillCacheManagerFromUI() { - size_t size = this->Entries->size(); - for (size_t i = 0; i < size; i++) { - std::string cacheKey = (*this->Entries)[i]->Key; + for (cmCursesCacheEntryComposite* entry : *this->Entries) { + const std::string& cacheKey = entry->Key; const char* existingValue = this->CMakeInstance->GetState()->GetCacheEntryValue(cacheKey); if (existingValue) { std::string oldValue = existingValue; - std::string newValue = (*this->Entries)[i]->Entry->GetValue(); + std::string newValue = entry->GetValue(); std::string fixedOldValue; std::string fixedNewValue; cmStateEnums::CacheEntryType t = @@ -976,17 +965,14 @@ void cmCursesMainForm::HandleInput() if (nextCur) { // make the next or prev. current field after deletion - nextCur = nullptr; - std::vector::iterator it; - for (it = this->Entries->begin(); it != this->Entries->end(); - ++it) { - if (nextVal == (*it)->Key) { - nextCur = (*it)->Entry->Field; - } - } - - if (nextCur) { - set_current_field(this->Form, nextCur); + auto nextEntryIt = + std::find_if(this->Entries->begin(), this->Entries->end(), + [&nextVal](cmCursesCacheEntryComposite* entry) { + return nextVal == entry->Key; + }); + + if (nextEntryIt != this->Entries->end()) { + set_current_field(this->Form, (*nextEntryIt)->Entry->Field); } } } https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=948c55857e126825ce5f8282857d6970ba14e6bb commit 948c55857e126825ce5f8282857d6970ba14e6bb Author: Regina Pfeifer AuthorDate: Sun Feb 10 15:47:15 2019 +0100 Commit: Regina Pfeifer CommitDate: Sun Feb 10 15:47:15 2019 +0100 cmCTestRunTest: Remove duplicated compression logic diff --git a/Source/CTest/cmCTestRunTest.cxx b/Source/CTest/cmCTestRunTest.cxx index 7f081ef..05eb8bd 100644 --- a/Source/CTest/cmCTestRunTest.cxx +++ b/Source/CTest/cmCTestRunTest.cxx @@ -9,8 +9,6 @@ #include "cmSystemTools.h" #include "cmWorkingDirectory.h" -#include "cm_zlib.h" -#include "cmsys/Base64.h" #include "cmsys/RegularExpression.hxx" #include #include @@ -31,9 +29,6 @@ cmCTestRunTest::cmCTestRunTest(cmCTestMultiProcessHandler& multiHandler) this->TestResult.Status = cmCTestTestHandler::NOT_RUN; this->TestResult.TestCount = 0; this->TestResult.Properties = nullptr; - this->ProcessOutput.clear(); - this->CompressedOutput.clear(); - this->CompressionRatio = 2; this->NumberOfRunsLeft = 1; // default to 1 run of the test this->RunUntilFail = false; // default to run the test once this->RunAgain = false; // default to not having to run again @@ -68,73 +63,8 @@ void cmCTestRunTest::CheckOutput(std::string const& line) } } -// Streamed compression of test output. The compressed data -// is appended to this->CompressedOutput -void cmCTestRunTest::CompressOutput() -{ - int ret; - z_stream strm; - - unsigned char* in = reinterpret_cast( - const_cast(this->ProcessOutput.c_str())); - // zlib makes the guarantee that this is the maximum output size - int outSize = static_cast( - static_cast(this->ProcessOutput.size()) * 1.001 + 13.0); - unsigned char* out = new unsigned char[outSize]; - - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - ret = deflateInit(&strm, -1); // default compression level - if (ret != Z_OK) { - delete[] out; - return; - } - - strm.avail_in = static_cast(this->ProcessOutput.size()); - strm.next_in = in; - strm.avail_out = outSize; - strm.next_out = out; - ret = deflate(&strm, Z_FINISH); - - if (ret != Z_STREAM_END) { - cmCTestLog(this->CTest, ERROR_MESSAGE, - "Error during output compression. Sending uncompressed output." - << std::endl); - delete[] out; - return; - } - - (void)deflateEnd(&strm); - - unsigned char* encoded_buffer = - new unsigned char[static_cast(outSize * 1.5)]; - - size_t rlen = cmsysBase64_Encode(out, strm.total_out, encoded_buffer, 1); - - this->CompressedOutput.clear(); - for (size_t i = 0; i < rlen; i++) { - this->CompressedOutput += encoded_buffer[i]; - } - - if (strm.total_in) { - this->CompressionRatio = - static_cast(strm.total_out) / static_cast(strm.total_in); - } - - delete[] encoded_buffer; - delete[] out; -} - bool cmCTestRunTest::EndTest(size_t completed, size_t total, bool started) { - if ((!this->TestHandler->MemCheck && - this->CTest->ShouldCompressTestOutput()) || - (this->TestHandler->MemCheck && - this->CTest->ShouldCompressTestOutput())) { - this->CompressOutput(); - } - this->WriteLogOutputTop(completed, total); std::string reason; bool passed = true; @@ -335,10 +265,18 @@ bool cmCTestRunTest::EndTest(size_t completed, size_t total, bool started) // if the test actually started and ran // record the results in TestResult if (started) { - bool compress = !this->TestHandler->MemCheck && - this->CompressionRatio < 1 && this->CTest->ShouldCompressTestOutput(); + std::string compressedOutput; + if (!this->TestHandler->MemCheck && + this->CTest->ShouldCompressTestOutput()) { + std::string str = this->ProcessOutput; + if (this->CTest->CompressString(str)) { + compressedOutput = std::move(str); + } + } + bool compress = !compressedOutput.empty() && + compressedOutput.length() < this->ProcessOutput.length(); this->TestResult.Output = - compress ? this->CompressedOutput : this->ProcessOutput; + compress ? compressedOutput : this->ProcessOutput; this->TestResult.CompressOutput = compress; this->TestResult.ReturnValue = this->TestProcess->GetExitValue(); if (!skipped) { diff --git a/Source/CTest/cmCTestRunTest.h b/Source/CTest/cmCTestRunTest.h index 918d5fa..38cc417 100644 --- a/Source/CTest/cmCTestRunTest.h +++ b/Source/CTest/cmCTestRunTest.h @@ -58,9 +58,6 @@ public: // Read and store output. Returns true if it must be called again. void CheckOutput(std::string const& line); - // Compresses the output, writing to CompressedOutput - void CompressOutput(); - // launch the test process, return whether it started correctly bool StartTest(size_t completed, size_t total); // capture and report the test results @@ -105,8 +102,6 @@ private: cmCTest* CTest; std::unique_ptr TestProcess; std::string ProcessOutput; - std::string CompressedOutput; - double CompressionRatio; // The test results cmCTestTestHandler::cmCTestTestResult TestResult; cmCTestMultiProcessHandler& MultiTestHandler; ----------------------------------------------------------------------- Summary of changes: Help/command/if.rst | 2 +- Modules/FindMatlab.cmake | 4 +- Modules/FindOctave.cmake | 14 ++- Source/CPack/cmCPackGenerator.cxx | 5 +- Source/CPack/cmCPackGenerator.h | 2 +- Source/CPack/cpack.cxx | 2 +- Source/CTest/cmCTestBuildAndTestHandler.cxx | 9 +- Source/CTest/cmCTestRunTest.cxx | 84 ++------------ Source/CTest/cmCTestRunTest.h | 5 - Source/CTest/cmCTestScriptHandler.cxx | 11 +- Source/Checks/cm_cxx17_check.cpp | 13 +++ Source/CursesDialog/cmCursesMainForm.cxx | 124 ++++++++++----------- Source/CursesDialog/cmCursesMainForm.h | 2 +- Source/QtDialog/QCMake.cxx | 8 +- Source/QtDialog/QCMake.h | 2 +- Source/cmExportFileGenerator.cxx | 3 +- Source/cmExportLibraryDependenciesCommand.cxx | 3 +- Source/cmFileCommand.cxx | 10 +- Source/cmFindPackageCommand.cxx | 2 +- Source/cmGlobalGenerator.cxx | 2 +- Source/cmGlobalVisualStudio10Generator.cxx | 2 +- Source/cmGlobalVisualStudio14Generator.cxx | 2 +- Source/cmMakefile.cxx | 2 +- Source/cmMakefile.h | 2 +- Source/cmMessageCommand.cxx | 2 +- Source/cmServer.cxx | 4 +- Source/cmServer.h | 2 +- Source/cmake.cxx | 6 +- Source/cmake.h | 4 +- Source/cmakemain.cxx | 13 ++- Tests/CMakeLists.txt | 2 +- .../CMakeOnly/CheckCXXCompilerFlag/CMakeLists.txt | 2 +- Tests/ExportImport/Import/A/CMakeLists.txt | 2 +- Tests/FindOctave/Test/CMakeLists.txt | 4 + Tests/FindOctave/Test/interp_main.cpp | 26 +++++ Tests/IncludeDirectories/CMakeLists.txt | 2 +- .../WriteCompilerDetectionHeader/CMakeLists.txt | 6 +- Tests/RunCMake/try_compile/LinkOptions.cmake | 2 +- Tests/RunCMake/try_run/LinkOptions.cmake | 2 +- 39 files changed, 189 insertions(+), 205 deletions(-) create mode 100644 Tests/FindOctave/Test/interp_main.cpp hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 12 08:33:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 12 Feb 2019 08:33:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.14.0-rc1-16-ga251b61 Message-ID: <20190212133304.EED5B112950@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 a251b61181252eb380d24778cdd8224ea7198eef (commit) via 572b4fd85b5987858ee6ce6fd7381c3cfd6720e9 (commit) via 3ff5a43c499c74715a282e782f4191d4420c9c73 (commit) via 40176749bc2243adb4acc8c53c902f6c349da24b (commit) via 633b3145c0e4d918f53272dab3358867bc252b0b (commit) via 6725975bd8c47c7817a286ada9eadb9b0fbf324c (commit) from 9e309cd4f0266144f269cab9006b51c252e25380 (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/command/if.rst | 2 +- Modules/FindMatlab.cmake | 4 ++-- Modules/FindOctave.cmake | 14 +++++++++++++- Tests/FindOctave/Test/CMakeLists.txt | 4 ++++ Tests/FindOctave/Test/interp_main.cpp | 26 ++++++++++++++++++++++++++ 5 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 Tests/FindOctave/Test/interp_main.cpp hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 13 00:03:03 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 13 Feb 2019 00:03:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-74-g99ec095 Message-ID: <20190213050303.D0BC3FB831@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 99ec095d9ddc6c2a8f073d38e14da66d1a245f80 (commit) from 9d2ab63aaf5fb29d812dbfc942da4d7671c5d1b3 (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=99ec095d9ddc6c2a8f073d38e14da66d1a245f80 commit 99ec095d9ddc6c2a8f073d38e14da66d1a245f80 Author: Kitware Robot AuthorDate: Wed Feb 13 00:01:06 2019 -0500 Commit: Kitware Robot CommitDate: Wed Feb 13 00:01:06 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index a4eb53f..e1284df 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 14) -set(CMake_VERSION_PATCH 20190212) +set(CMake_VERSION_PATCH 20190213) #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 13 08:43:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 13 Feb 2019 08:43:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-78-g21853e2 Message-ID: <20190213134304.D4350A8148@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 21853e247c6b18df4e691cf29855ede3bbcce28e (commit) via 122946def94e15cc2b6941197ac0cf3d92815206 (commit) via 1c4570e22eb7fcf312426e4e1fb0db0c2a3d5d33 (commit) via e429e9af4259f924f4f8329f9f994e2f6a6e824a (commit) from 99ec095d9ddc6c2a8f073d38e14da66d1a245f80 (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=21853e247c6b18df4e691cf29855ede3bbcce28e commit 21853e247c6b18df4e691cf29855ede3bbcce28e Merge: 122946d 1c4570e Author: Brad King AuthorDate: Wed Feb 13 08:40:26 2019 -0500 Commit: Brad King CommitDate: Wed Feb 13 08:40:26 2019 -0500 Merge branch 'release-3.14' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=122946def94e15cc2b6941197ac0cf3d92815206 commit 122946def94e15cc2b6941197ac0cf3d92815206 Merge: 99ec095 e429e9a Author: Brad King AuthorDate: Wed Feb 13 13:39:57 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 13 08:40:04 2019 -0500 Merge topic 'genex-GENEX_EVAL-fix-recursion' e429e9af42 genex: Fix erroneous handling of recursion for $ Acked-by: Kitware Robot Acked-by: yrHeTaTeJlb Merge-request: !2954 ----------------------------------------------------------------------- Summary of changes: Source/cmGeneratorExpressionDAGChecker.cxx | 10 ++-------- Source/cmGeneratorExpressionNode.cxx | 4 ++-- .../GeneratorExpression/GENEX_EVAL-recursion2-stderr.txt | 6 +++--- Tests/RunCMake/GeneratorExpression/GENEX_EVAL.cmake | 3 ++- 4 files changed, 9 insertions(+), 14 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 13 08:43:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 13 Feb 2019 08:43:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.14.0-rc1-18-g1c4570e Message-ID: <20190213134304.E344D11D9D2@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 1c4570e22eb7fcf312426e4e1fb0db0c2a3d5d33 (commit) via e429e9af4259f924f4f8329f9f994e2f6a6e824a (commit) from a251b61181252eb380d24778cdd8224ea7198eef (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/cmGeneratorExpressionDAGChecker.cxx | 10 ++-------- Source/cmGeneratorExpressionNode.cxx | 4 ++-- .../GeneratorExpression/GENEX_EVAL-recursion2-stderr.txt | 6 +++--- Tests/RunCMake/GeneratorExpression/GENEX_EVAL.cmake | 3 ++- 4 files changed, 9 insertions(+), 14 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 13 10:23:06 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 13 Feb 2019 10:23:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-84-g63efce5 Message-ID: <20190213152306.08C4CC0370@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 63efce507bfcf7eec1dbcb10acadeb3304d6f20d (commit) via 8914d4317a21a5673afbc72312559cc53e73eeec (commit) via 264128469df1460c60099a3321b80cedcf8d2d26 (commit) via c28abdb5aceac3fdf9383b0ee464d3578fbb86b3 (commit) via 080a79ca4a0448043e0713b9b580c5f84b7330b3 (commit) via fc8b90af2c7f35f770b3167de2dd4c632b3042ea (commit) from 21853e247c6b18df4e691cf29855ede3bbcce28e (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=63efce507bfcf7eec1dbcb10acadeb3304d6f20d commit 63efce507bfcf7eec1dbcb10acadeb3304d6f20d Merge: 8914d43 fc8b90a Author: Brad King AuthorDate: Wed Feb 13 15:16:46 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 13 10:17:55 2019 -0500 Merge topic 'names' fc8b90af2c Create and use `cmGeneratorTarget::Names` Acked-by: Kitware Robot Merge-request: !2936 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8914d4317a21a5673afbc72312559cc53e73eeec commit 8914d4317a21a5673afbc72312559cc53e73eeec Merge: 2641284 080a79c Author: Brad King AuthorDate: Wed Feb 13 15:16:36 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 13 10:17:08 2019 -0500 Merge topic 'systools-stdstring2' 080a79ca4a cmSystemTools: More methods accept `std::string` params Acked-by: Kitware Robot Merge-request: !2952 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=264128469df1460c60099a3321b80cedcf8d2d26 commit 264128469df1460c60099a3321b80cedcf8d2d26 Merge: 21853e2 c28abdb Author: Brad King AuthorDate: Wed Feb 13 15:16:23 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 13 10:16:31 2019 -0500 Merge topic 'cmcurses-fix-solaris-lambda-warning' c28abdb5ac cmCursesMainForm: Fix lambda return type deducing warning Acked-by: Kitware Robot Merge-request: !2955 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c28abdb5aceac3fdf9383b0ee464d3578fbb86b3 commit c28abdb5aceac3fdf9383b0ee464d3578fbb86b3 Author: Artur Ryt AuthorDate: Tue Feb 12 19:24:53 2019 +0100 Commit: Artur Ryt CommitDate: Tue Feb 12 19:24:53 2019 +0100 cmCursesMainForm: Fix lambda return type deducing warning It was issued by sparc compiler on Solaris system See !2947 diff --git a/Source/CursesDialog/cmCursesMainForm.cxx b/Source/CursesDialog/cmCursesMainForm.cxx index 3fe1834..906dd02 100644 --- a/Source/CursesDialog/cmCursesMainForm.cxx +++ b/Source/CursesDialog/cmCursesMainForm.cxx @@ -647,11 +647,12 @@ void cmCursesMainForm::RemoveEntry(const char* value) return; } - auto removeIt = std::find_if(this->Entries->begin(), this->Entries->end(), - [value](cmCursesCacheEntryComposite* entry) { - const char* val = entry->GetValue(); - return val && !strcmp(value, val); - }); + auto removeIt = + std::find_if(this->Entries->begin(), this->Entries->end(), + [value](cmCursesCacheEntryComposite* entry) -> bool { + const char* val = entry->GetValue(); + return val != nullptr && !strcmp(value, val); + }); if (removeIt != this->Entries->end()) { this->CMakeInstance->UnwatchUnusedCli(value); https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=080a79ca4a0448043e0713b9b580c5f84b7330b3 commit 080a79ca4a0448043e0713b9b580c5f84b7330b3 Author: Vitaly Stakhovsky AuthorDate: Mon Feb 11 18:11:59 2019 -0500 Commit: Vitaly Stakhovsky CommitDate: Mon Feb 11 18:11:59 2019 -0500 cmSystemTools: More methods accept `std::string` params diff --git a/Source/CPack/cmCPackGenerator.cxx b/Source/CPack/cmCPackGenerator.cxx index b4c05ab..71808ab 100644 --- a/Source/CPack/cmCPackGenerator.cxx +++ b/Source/CPack/cmCPackGenerator.cxx @@ -387,8 +387,7 @@ int cmCPackGenerator::InstallProjectViaInstalledDirectories( } /* If it is not a symlink then do a plain copy */ else if (!(cmSystemTools::CopyFileIfDifferent(inFile, filePath) && - cmSystemTools::CopyFileTime(inFile.c_str(), - filePath.c_str()))) { + cmSystemTools::CopyFileTime(inFile, filePath))) { cmCPackLogger(cmCPackLog::LOG_ERROR, "Problem copying file: " << inFile << " -> " << filePath << std::endl); diff --git a/Source/CTest/cmCTestCoverageHandler.cxx b/Source/CTest/cmCTestCoverageHandler.cxx index 3b93422..10928e0 100644 --- a/Source/CTest/cmCTestCoverageHandler.cxx +++ b/Source/CTest/cmCTestCoverageHandler.cxx @@ -223,7 +223,7 @@ bool cmCTestCoverageHandler::ShouldIDoCoverage(std::string const& file, checkDir = fBinDir; } std::string ndc = cmSystemTools::FileExistsInParentDirectories( - ".NoDartCoverage", fFile.c_str(), checkDir.c_str()); + ".NoDartCoverage", fFile, checkDir); if (!ndc.empty()) { cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT, "Found: " << ndc << " so skip coverage of " << file @@ -254,8 +254,8 @@ bool cmCTestCoverageHandler::ShouldIDoCoverage(std::string const& file, return true; } - ndc = cmSystemTools::FileExistsInParentDirectories( - ".NoDartCoverage", fFile.c_str(), checkDir.c_str()); + ndc = cmSystemTools::FileExistsInParentDirectories(".NoDartCoverage", fFile, + checkDir); if (!ndc.empty()) { cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT, "Found: " << ndc << " so skip coverage of: " << file @@ -1058,8 +1058,7 @@ int cmCTestCoverageHandler::HandleGCovCoverage( this->Quiet); std::vector lines; - - cmSystemTools::Split(output.c_str(), lines); + cmsys::SystemTools::Split(output, lines); for (std::string const& line : lines) { std::string sourceFile; @@ -1435,8 +1434,7 @@ int cmCTestCoverageHandler::HandleLCovCoverage( this->Quiet); std::vector lines; - - cmSystemTools::Split(output.c_str(), lines); + cmsys::SystemTools::Split(output, lines); for (std::string const& line : lines) { std::string sourceFile; diff --git a/Source/CTest/cmCTestMemCheckHandler.cxx b/Source/CTest/cmCTestMemCheckHandler.cxx index 8ba59d3..954f5bb 100644 --- a/Source/CTest/cmCTestMemCheckHandler.cxx +++ b/Source/CTest/cmCTestMemCheckHandler.cxx @@ -725,7 +725,7 @@ bool cmCTestMemCheckHandler::ProcessMemCheckSanitizerOutput( cmsys::RegularExpression leakWarning("(Direct|Indirect) leak of .*"); int defects = 0; std::vector lines; - cmSystemTools::Split(str.c_str(), lines); + cmsys::SystemTools::Split(str, lines); std::ostringstream ostr; log.clear(); for (std::string const& l : lines) { @@ -755,7 +755,7 @@ bool cmCTestMemCheckHandler::ProcessMemCheckPurifyOutput( const std::string& str, std::string& log, std::vector& results) { std::vector lines; - cmSystemTools::Split(str.c_str(), lines); + cmsys::SystemTools::Split(str, lines); std::ostringstream ostr; log.clear(); @@ -798,7 +798,7 @@ bool cmCTestMemCheckHandler::ProcessMemCheckValgrindOutput( const std::string& str, std::string& log, std::vector& results) { std::vector lines; - cmSystemTools::Split(str.c_str(), lines); + cmsys::SystemTools::Split(str, lines); bool unlimitedOutput = false; if (str.find("CTEST_FULL_OUTPUT") != std::string::npos || this->CustomMaximumFailedTestOutputSize == 0) { @@ -937,7 +937,7 @@ bool cmCTestMemCheckHandler::ProcessMemCheckBoundsCheckerOutput( log.clear(); auto sttime = std::chrono::steady_clock::now(); std::vector lines; - cmSystemTools::Split(str.c_str(), lines); + cmsys::SystemTools::Split(str, lines); cmCTestOptionalLog(this->CTest, DEBUG, "Start test: " << lines.size() << std::endl, this->Quiet); std::vector::size_type cc; diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index fb3a1bc..446ed52 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -223,7 +223,7 @@ bool cmFileCommand::HandleWriteCommand(std::vector const& args, bool writable = false; // Set permissions to writable - if (cmSystemTools::GetPermissions(fileName.c_str(), mode)) { + if (cmSystemTools::GetPermissions(fileName, mode)) { #if defined(_MSC_VER) || defined(__MINGW32__) writable = (mode & S_IWRITE) != 0; mode_t newMode = mode | S_IWRITE; @@ -232,7 +232,7 @@ bool cmFileCommand::HandleWriteCommand(std::vector const& args, mode_t newMode = mode | S_IWUSR | S_IWGRP; #endif if (!writable) { - cmSystemTools::SetPermissions(fileName.c_str(), newMode); + cmSystemTools::SetPermissions(fileName, newMode); } } // If GetPermissions fails, pretend like it is ok. File open will fail if @@ -259,7 +259,7 @@ bool cmFileCommand::HandleWriteCommand(std::vector const& args, } file.close(); if (mode && !writable) { - cmSystemTools::SetPermissions(fileName.c_str(), mode); + cmSystemTools::SetPermissions(fileName, mode); } return true; } @@ -393,7 +393,7 @@ bool cmFileCommand::HandleHashCommand(std::vector const& args) #else std::ostringstream e; e << args[0] << " not available during bootstrap"; - this->SetError(e.str().c_str()); + this->SetError(e.str()); return false; #endif } @@ -523,7 +523,7 @@ bool cmFileCommand::HandleStringsCommand(std::vector const& args) maxlen = len; arg_mode = arg_none; } else if (arg_mode == arg_regex) { - if (!regex.compile(args[i].c_str())) { + if (!regex.compile(args[i])) { std::ostringstream e; e << "STRINGS option REGEX value \"" << args[i] << "\" could not be compiled."; @@ -1105,7 +1105,7 @@ protected: MatchProperties Properties; std::string RegexString; MatchRule(std::string const& regex) - : Regex(regex.c_str()) + : Regex(regex) , RegexString(regex) { } @@ -1113,14 +1113,13 @@ protected: std::vector MatchRules; // Get the properties from rules matching this input file. - MatchProperties CollectMatchProperties(const char* file) + MatchProperties CollectMatchProperties(const std::string& file) { // Match rules are case-insensitive on some platforms. #if defined(_WIN32) || defined(__APPLE__) || defined(__CYGWIN__) - std::string lower = cmSystemTools::LowerCase(file); - const char* file_to_match = lower.c_str(); + const std::string file_to_match = cmSystemTools::LowerCase(file); #else - const char* file_to_match = file; + const std::string& file_to_match = file; #endif // Collect properties from all matching rules. @@ -1139,14 +1138,13 @@ protected: return result; } - bool SetPermissions(const char* toFile, mode_t permissions) + bool SetPermissions(const std::string& toFile, mode_t permissions) { if (permissions) { #ifdef WIN32 if (Makefile->IsOn("CMAKE_CROSSCOMPILING")) { // Store the mode in an NTFS alternate stream. - std::string mode_t_adt_filename = - std::string(toFile) + ":cmake_mode_t"; + std::string mode_t_adt_filename = toFile + ":cmake_mode_t"; // Writing to an NTFS alternate stream changes the modification // time, so we need to save and restore its original value. @@ -1189,12 +1187,13 @@ protected: return true; } - bool InstallSymlink(const char* fromFile, const char* toFile); - bool InstallFile(const char* fromFile, const char* toFile, + bool InstallSymlink(const std::string& fromFile, const std::string& toFile); + bool InstallFile(const std::string& fromFile, const std::string& toFile, MatchProperties match_properties); - bool InstallDirectory(const char* source, const char* destination, + bool InstallDirectory(const std::string& source, + const std::string& destination, MatchProperties match_properties); - virtual bool Install(const char* fromFile, const char* toFile); + virtual bool Install(const std::string& fromFile, const std::string& toFile); virtual std::string const& ToName(std::string const& fromName) { return fromName; @@ -1206,8 +1205,8 @@ protected: TypeDir, TypeLink }; - virtual void ReportCopy(const char*, Type, bool) {} - virtual bool ReportMissing(const char* fromFile) + virtual void ReportCopy(const std::string&, Type, bool) {} + virtual bool ReportMissing(const std::string& fromFile) { // The input file does not exist and installation is not optional. std::ostringstream e; @@ -1551,16 +1550,17 @@ bool cmFileCopier::Run(std::vector const& args) fromFile += fromName; } - if (!this->Install(fromFile.c_str(), toFile.c_str())) { + if (!this->Install(fromFile, toFile)) { return false; } } return true; } -bool cmFileCopier::Install(const char* fromFile, const char* toFile) +bool cmFileCopier::Install(const std::string& fromFile, + const std::string& toFile) { - if (!*fromFile) { + if (fromFile.empty()) { std::ostringstream e; e << "INSTALL encountered an empty string input file name."; this->FileCommand->SetError(e.str()); @@ -1590,7 +1590,8 @@ bool cmFileCopier::Install(const char* fromFile, const char* toFile) return this->ReportMissing(fromFile); } -bool cmFileCopier::InstallSymlink(const char* fromFile, const char* toFile) +bool cmFileCopier::InstallSymlink(const std::string& fromFile, + const std::string& toFile) { // Read the original symlink. std::string symlinkTarget; @@ -1637,7 +1638,8 @@ bool cmFileCopier::InstallSymlink(const char* fromFile, const char* toFile) return true; } -bool cmFileCopier::InstallFile(const char* fromFile, const char* toFile, +bool cmFileCopier::InstallFile(const std::string& fromFile, + const std::string& toFile, MatchProperties match_properties) { // Determine whether we will copy the file. @@ -1690,8 +1692,8 @@ bool cmFileCopier::InstallFile(const char* fromFile, const char* toFile, return this->SetPermissions(toFile, permissions); } -bool cmFileCopier::InstallDirectory(const char* source, - const char* destination, +bool cmFileCopier::InstallDirectory(const std::string& source, + const std::string& destination, MatchProperties match_properties) { // Inform the user about this directory installation. @@ -1748,7 +1750,7 @@ bool cmFileCopier::InstallDirectory(const char* source, // Load the directory contents to traverse it recursively. cmsys::Directory dir; - if (source && *source) { + if (!source.empty()) { dir.Load(source); } unsigned long numFiles = static_cast(dir.GetNumberOfFiles()); @@ -1761,7 +1763,7 @@ bool cmFileCopier::InstallDirectory(const char* source, std::string toPath = destination; toPath += "/"; toPath += dir.GetFile(fileNum); - if (!this->Install(fromPath.c_str(), toPath.c_str())) { + if (!this->Install(fromPath, toPath)) { return false; } } @@ -1829,7 +1831,7 @@ protected: return this->Rename.empty() ? fromName : this->Rename; } - void ReportCopy(const char* toFile, Type type, bool copy) override + void ReportCopy(const std::string& toFile, Type type, bool copy) override { if (!this->MessageNever && (copy || !this->MessageLazy)) { std::string message = (copy ? "Installing: " : "Up-to-date: "); @@ -1841,14 +1843,14 @@ protected: this->ManifestAppend(toFile); } } - bool ReportMissing(const char* fromFile) override + bool ReportMissing(const std::string& fromFile) override { return (this->Optional || this->cmFileCopier::ReportMissing(fromFile)); } - bool Install(const char* fromFile, const char* toFile) override + bool Install(const std::string& fromFile, const std::string& toFile) override { // Support installing from empty source to make a directory. - if (this->InstallType == cmInstallType_DIRECTORY && !*fromFile) { + if (this->InstallType == cmInstallType_DIRECTORY && fromFile.empty()) { return this->InstallDirectory(fromFile, toFile, MatchProperties()); } return this->cmFileCopier::Install(fromFile, toFile); @@ -2138,7 +2140,7 @@ bool cmFileCommand::HandleRPathChangeCommand( std::vector const& args) { // Evaluate arguments. - const char* file = nullptr; + std::string file; const char* oldRPath = nullptr; const char* newRPath = nullptr; enum Doing @@ -2157,7 +2159,7 @@ bool cmFileCommand::HandleRPathChangeCommand( } else if (args[i] == "FILE") { doing = DoingFile; } else if (doing == DoingFile) { - file = args[i].c_str(); + file = args[i]; doing = DoingNone; } else if (doing == DoingOld) { oldRPath = args[i].c_str(); @@ -2172,7 +2174,7 @@ bool cmFileCommand::HandleRPathChangeCommand( return false; } } - if (!file) { + if (file.empty()) { this->SetError("RPATH_CHANGE not given FILE option."); return false; } @@ -2228,7 +2230,7 @@ bool cmFileCommand::HandleRPathRemoveCommand( std::vector const& args) { // Evaluate arguments. - const char* file = nullptr; + std::string file; enum Doing { DoingNone, @@ -2239,7 +2241,7 @@ bool cmFileCommand::HandleRPathRemoveCommand( if (args[i] == "FILE") { doing = DoingFile; } else if (doing == DoingFile) { - file = args[i].c_str(); + file = args[i]; doing = DoingNone; } else { std::ostringstream e; @@ -2248,7 +2250,7 @@ bool cmFileCommand::HandleRPathRemoveCommand( return false; } } - if (!file) { + if (file.empty()) { this->SetError("RPATH_REMOVE not given FILE option."); return false; } @@ -2292,7 +2294,7 @@ bool cmFileCommand::HandleRPathCheckCommand( std::vector const& args) { // Evaluate arguments. - const char* file = nullptr; + std::string file; const char* rpath = nullptr; enum Doing { @@ -2307,7 +2309,7 @@ bool cmFileCommand::HandleRPathCheckCommand( } else if (args[i] == "FILE") { doing = DoingFile; } else if (doing == DoingFile) { - file = args[i].c_str(); + file = args[i]; doing = DoingNone; } else if (doing == DoingRPath) { rpath = args[i].c_str(); @@ -2319,7 +2321,7 @@ bool cmFileCommand::HandleRPathCheckCommand( return false; } } - if (!file) { + if (file.empty()) { this->SetError("RPATH_CHECK not given FILE option."); return false; } diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 2d7bce4..a5d191d 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -897,7 +897,7 @@ std::string cmSystemTools::PrintSingleCommand( } bool cmSystemTools::DoesFileExistWithExtensions( - const char* name, const std::vector& headerExts) + const std::string& name, const std::vector& headerExts) { std::string hname; @@ -912,9 +912,9 @@ bool cmSystemTools::DoesFileExistWithExtensions( return false; } -std::string cmSystemTools::FileExistsInParentDirectories(const char* fname, - const char* directory, - const char* toplevel) +std::string cmSystemTools::FileExistsInParentDirectories( + const std::string& fname, const std::string& directory, + const std::string& toplevel) { std::string file = fname; cmSystemTools::ConvertToUnixSlashes(file); @@ -926,7 +926,7 @@ std::string cmSystemTools::FileExistsInParentDirectories(const char* fname, if (cmSystemTools::FileExists(path)) { return path; } - if (dir.size() < strlen(toplevel)) { + if (dir.size() < toplevel.size()) { break; } prevDir = dir; @@ -2081,7 +2081,8 @@ void cmSystemTools::DoNotInheritStdPipes() #endif } -bool cmSystemTools::CopyFileTime(const char* fromFile, const char* toFile) +bool cmSystemTools::CopyFileTime(const std::string& fromFile, + const std::string& toFile) { #if defined(_WIN32) && !defined(__CYGWIN__) cmSystemToolsWindowsHandle hFrom = CreateFileW( @@ -2102,14 +2103,14 @@ bool cmSystemTools::CopyFileTime(const char* fromFile, const char* toFile) return SetFileTime(hTo, &timeCreation, &timeLastAccess, &timeLastWrite) != 0; #else struct stat fromStat; - if (stat(fromFile, &fromStat) < 0) { + if (stat(fromFile.c_str(), &fromStat) < 0) { return false; } struct utimbuf buf; buf.actime = fromStat.st_atime; buf.modtime = fromStat.st_mtime; - return utime(toFile, &buf) >= 0; + return utime(toFile.c_str(), &buf) >= 0; #endif } @@ -2123,7 +2124,8 @@ void cmSystemTools::FileTimeDelete(cmSystemToolsFileTime* t) delete t; } -bool cmSystemTools::FileTimeGet(const char* fname, cmSystemToolsFileTime* t) +bool cmSystemTools::FileTimeGet(const std::string& fname, + cmSystemToolsFileTime* t) { #if defined(_WIN32) && !defined(__CYGWIN__) cmSystemToolsWindowsHandle h = CreateFileW( @@ -2138,7 +2140,7 @@ bool cmSystemTools::FileTimeGet(const char* fname, cmSystemToolsFileTime* t) } #else struct stat st; - if (stat(fname, &st) < 0) { + if (stat(fname.c_str(), &st) < 0) { return false; } t->timeBuf.actime = st.st_atime; @@ -2147,7 +2149,8 @@ bool cmSystemTools::FileTimeGet(const char* fname, cmSystemToolsFileTime* t) return true; } -bool cmSystemTools::FileTimeSet(const char* fname, cmSystemToolsFileTime* t) +bool cmSystemTools::FileTimeSet(const std::string& fname, + const cmSystemToolsFileTime* t) { #if defined(_WIN32) && !defined(__CYGWIN__) cmSystemToolsWindowsHandle h = CreateFileW( @@ -2159,7 +2162,7 @@ bool cmSystemTools::FileTimeSet(const char* fname, cmSystemToolsFileTime* t) return SetFileTime(h, &t->timeCreation, &t->timeLastAccess, &t->timeLastWrite) != 0; #else - return utime(fname, &t->timeBuf) >= 0; + return utime(fname.c_str(), &t->timeBuf) >= 0; #endif } diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index 88758a6..ba6de51 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -144,16 +144,16 @@ public: static bool IsPathToFramework(const char* value); static bool DoesFileExistWithExtensions( - const char* name, const std::vector& sourceExts); + const std::string& name, const std::vector& sourceExts); /** * Check if the given file exists in one of the parent directory of the * given file or directory and if it does, return the name of the file. * Toplevel specifies the top-most directory to where it will look. */ - static std::string FileExistsInParentDirectories(const char* fname, - const char* directory, - const char* toplevel); + static std::string FileExistsInParentDirectories( + const std::string& fname, const std::string& directory, + const std::string& toplevel); static void Glob(const std::string& directory, const std::string& regexp, std::vector& files); @@ -443,13 +443,15 @@ public: /** Copy the file create/access/modify times from the file named by the first argument to that named by the second. */ - static bool CopyFileTime(const char* fromFile, const char* toFile); + static bool CopyFileTime(const std::string& fromFile, + const std::string& toFile); /** Save and restore file times. */ static cmSystemToolsFileTime* FileTimeNew(); static void FileTimeDelete(cmSystemToolsFileTime*); - static bool FileTimeGet(const char* fname, cmSystemToolsFileTime* t); - static bool FileTimeSet(const char* fname, cmSystemToolsFileTime* t); + static bool FileTimeGet(const std::string& fname, cmSystemToolsFileTime* t); + static bool FileTimeSet(const std::string& fname, + const cmSystemToolsFileTime* t); /** Random seed generation. */ static unsigned int RandomSeed(); diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 8023298..614ee2e 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -1105,7 +1105,7 @@ std::string cmake::FindCacheFile(const std::string& binaryDir) if (cmSystemTools::FileExists(cmakeFiles)) { std::string cachePathFound = cmSystemTools::FileExistsInParentDirectories("CMakeCache.txt", - cachePath.c_str(), "/"); + cachePath, "/"); if (!cachePathFound.empty()) { cachePath = cmSystemTools::GetFilenamePath(cachePathFound); } https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fc8b90af2c7f35f770b3167de2dd4c632b3042ea commit fc8b90af2c7f35f770b3167de2dd4c632b3042ea Author: Saleem Abdulrasool AuthorDate: Thu Feb 7 21:27:00 2019 -0800 Commit: Saleem Abdulrasool CommitDate: Mon Feb 11 10:44:24 2019 -0800 Create and use `cmGeneratorTarget::Names` Rather than taking a number of out parameters for the various names, create a structure that is reused for both `GetLibraryNames` and `GetExecutableNames`. Replace uses according to the new interface. diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 54cfd3a..6f5e9bd 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -1617,13 +1617,7 @@ std::string cmGeneratorTarget::GetSOName(const std::string& config) const return ""; } // Compute the soname that will be built. - std::string name; - std::string soName; - std::string realName; - std::string impName; - std::string pdbName; - this->GetLibraryNames(name, soName, realName, impName, pdbName, config); - return soName; + return this->GetLibraryNames(config).SharedObject; } static bool shouldAddFullLevel(cmGeneratorTarget::BundleDirectoryLevel level) @@ -3394,17 +3388,13 @@ void cmGeneratorTarget::ComputeTargetManifest(const std::string& config) const cmGlobalGenerator* gg = this->LocalGenerator->GetGlobalGenerator(); // Get the names. - std::string name; - std::string soName; - std::string realName; - std::string impName; - std::string pdbName; + cmGeneratorTarget::Names targetNames; if (this->GetType() == cmStateEnums::EXECUTABLE) { - this->GetExecutableNames(name, realName, impName, pdbName, config); + targetNames = this->GetExecutableNames(config); } else if (this->GetType() == cmStateEnums::STATIC_LIBRARY || this->GetType() == cmStateEnums::SHARED_LIBRARY || this->GetType() == cmStateEnums::MODULE_LIBRARY) { - this->GetLibraryNames(name, soName, realName, impName, pdbName, config); + targetNames = this->GetLibraryNames(config); } else { return; } @@ -3415,34 +3405,34 @@ void cmGeneratorTarget::ComputeTargetManifest(const std::string& config) const // Add each name. std::string f; - if (!name.empty()) { + if (!targetNames.Output.empty()) { f = dir; f += "/"; - f += name; + f += targetNames.Output; gg->AddToManifest(f); } - if (!soName.empty()) { + if (!targetNames.SharedObject.empty()) { f = dir; f += "/"; - f += soName; + f += targetNames.SharedObject; gg->AddToManifest(f); } - if (!realName.empty()) { + if (!targetNames.Real.empty()) { f = dir; f += "/"; - f += realName; + f += targetNames.Real; gg->AddToManifest(f); } - if (!pdbName.empty()) { + if (!targetNames.PDB.empty()) { f = dir; f += "/"; - f += pdbName; + f += targetNames.PDB; gg->AddToManifest(f); } - if (!impName.empty()) { + if (!targetNames.ImportLibrary.empty()) { f = this->GetDirectory(config, cmStateEnums::ImportLibraryArtifact); f += "/"; - f += impName; + f += targetNames.ImportLibrary; gg->AddToManifest(f); } } @@ -3520,29 +3510,17 @@ std::string cmGeneratorTarget::NormalGetRealName( if (this->GetType() == cmStateEnums::EXECUTABLE) { // Compute the real name that will be built. - std::string name; - std::string realName; - std::string impName; - std::string pdbName; - this->GetExecutableNames(name, realName, impName, pdbName, config); - return realName; + return this->GetExecutableNames(config).Real; } // Compute the real name that will be built. - std::string name; - std::string soName; - std::string realName; - std::string impName; - std::string pdbName; - this->GetLibraryNames(name, soName, realName, impName, pdbName, config); - return realName; -} - -void cmGeneratorTarget::GetLibraryNames(std::string& name, std::string& soName, - std::string& realName, - std::string& impName, - std::string& pdbName, - const std::string& config) const + return this->GetLibraryNames(config).Real; +} + +cmGeneratorTarget::Names cmGeneratorTarget::GetLibraryNames( + const std::string& config) const { + cmGeneratorTarget::Names targetNames; + // This should not be called for imported targets. // TODO: Split cmTarget into a class hierarchy to get compile-time // enforcement of the limited imported target API. @@ -3550,7 +3528,6 @@ void cmGeneratorTarget::GetLibraryNames(std::string& name, std::string& soName, std::string msg = "GetLibraryNames called on imported target: "; msg += this->GetName(); this->LocalGenerator->IssueMessage(MessageType::INTERNAL_ERROR, msg); - return; } // Check for library version properties. @@ -3576,50 +3553,51 @@ void cmGeneratorTarget::GetLibraryNames(std::string& name, std::string& soName, // Get the components of the library name. std::string prefix; - std::string base; std::string suffix; this->GetFullNameInternal(config, cmStateEnums::RuntimeBinaryArtifact, - prefix, base, suffix); + prefix, targetNames.Base, suffix); // The library name. - name = prefix + base + suffix; + targetNames.Output = prefix + targetNames.Base + suffix; if (this->IsFrameworkOnApple()) { - realName = prefix; + targetNames.Real = prefix; if (!this->Makefile->PlatformIsAppleEmbedded()) { - realName += "Versions/"; - realName += this->GetFrameworkVersion(); - realName += "/"; + targetNames.Real += "Versions/"; + targetNames.Real += this->GetFrameworkVersion(); + targetNames.Real += "/"; } - realName += base; - soName = realName; + targetNames.Real += targetNames.Base; + targetNames.SharedObject = targetNames.Real; } else { // The library's soname. - this->ComputeVersionedName(soName, prefix, base, suffix, name, soversion); + this->ComputeVersionedName(targetNames.SharedObject, prefix, + targetNames.Base, suffix, targetNames.Output, + soversion); // The library's real name on disk. - this->ComputeVersionedName(realName, prefix, base, suffix, name, version); + this->ComputeVersionedName(targetNames.Real, prefix, targetNames.Base, + suffix, targetNames.Output, version); } // The import library name. if (this->GetType() == cmStateEnums::SHARED_LIBRARY || this->GetType() == cmStateEnums::MODULE_LIBRARY) { - impName = + targetNames.ImportLibrary = this->GetFullNameInternal(config, cmStateEnums::ImportLibraryArtifact); - } else { - impName.clear(); } // The program database file name. - pdbName = this->GetPDBName(config); + targetNames.PDB = this->GetPDBName(config); + + return targetNames; } -void cmGeneratorTarget::GetExecutableNames(std::string& name, - std::string& realName, - std::string& impName, - std::string& pdbName, - const std::string& config) const +cmGeneratorTarget::Names cmGeneratorTarget::GetExecutableNames( + const std::string& config) const { + cmGeneratorTarget::Names targetNames; + // This should not be called for imported targets. // TODO: Split cmTarget into a class hierarchy to get compile-time // enforcement of the limited imported target API. @@ -3644,34 +3622,35 @@ void cmGeneratorTarget::GetExecutableNames(std::string& name, // Get the components of the executable name. std::string prefix; - std::string base; std::string suffix; this->GetFullNameInternal(config, cmStateEnums::RuntimeBinaryArtifact, - prefix, base, suffix); + prefix, targetNames.Base, suffix); // The executable name. - name = prefix + base + suffix; + targetNames.Output = prefix + targetNames.Base + suffix; // The executable's real name on disk. #if defined(__CYGWIN__) - realName = prefix + base; + targetNames.Real = prefix + targetNames.Base; #else - realName = name; + targetNames.Real = targetNames.Output; #endif if (version) { - realName += "-"; - realName += version; + targetNames.Real += "-"; + targetNames.Real += version; } #if defined(__CYGWIN__) - realName += suffix; + targetNames.Real += suffix; #endif // The import library name. - impName = + targetNames.ImportLibrary = this->GetFullNameInternal(config, cmStateEnums::ImportLibraryArtifact); // The program database file name. - pdbName = this->GetPDBName(config); + targetNames.PDB = this->GetPDBName(config); + + return targetNames; } std::string cmGeneratorTarget::GetFullNameInternal( diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index 59d38af..bc966e1 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -568,19 +568,25 @@ public: void GetAutoUicOptions(std::vector& result, const std::string& config) const; + struct Names + { + std::string Base; + std::string Output; + std::string Real; + std::string ImportLibrary; + std::string PDB; + std::string SharedObject; + }; + /** Get the names of the executable needed to generate a build rule that takes into account executable version numbers. This should be called only on an executable target. */ - void GetExecutableNames(std::string& name, std::string& realName, - std::string& impName, std::string& pdbName, - const std::string& config) const; + Names GetExecutableNames(const std::string& config) const; /** Get the names of the library needed to generate a build rule that takes into account shared library version numbers. This should be called only on a library target. */ - void GetLibraryNames(std::string& name, std::string& soName, - std::string& realName, std::string& impName, - std::string& pdbName, const std::string& config) const; + Names GetLibraryNames(const std::string& config) const; /** * Compute whether this target must be relinked before installing. diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx index 08441a8..c63e01a 100644 --- a/Source/cmGhsMultiTargetGenerator.cxx +++ b/Source/cmGhsMultiTargetGenerator.cxx @@ -40,12 +40,8 @@ void cmGhsMultiTargetGenerator::Generate() switch (this->GeneratorTarget->GetType()) { case cmStateEnums::EXECUTABLE: { // Get the name of the executable to generate. - std::string targetName; - std::string targetNameImport; - std::string targetNamePDB; - this->GeneratorTarget->GetExecutableNames( - targetName, this->TargetNameReal, targetNameImport, targetNamePDB, - this->ConfigName); + this->TargetNameReal = + this->GeneratorTarget->GetExecutableNames(this->ConfigName).Real; if (cmGhsMultiTargetGenerator::DetermineIfIntegrityApp()) { this->TagType = GhsMultiGpj::INTERGRITY_APPLICATION; } else { @@ -54,13 +50,8 @@ void cmGhsMultiTargetGenerator::Generate() break; } case cmStateEnums::STATIC_LIBRARY: { - std::string targetName; - std::string targetNameSO; - std::string targetNameImport; - std::string targetNamePDB; - this->GeneratorTarget->GetLibraryNames( - targetName, targetNameSO, this->TargetNameReal, targetNameImport, - targetNamePDB, this->ConfigName); + this->TargetNameReal = + this->GeneratorTarget->GetLibraryNames(this->ConfigName).Real; this->TagType = GhsMultiGpj::LIBRARY; break; } @@ -71,13 +62,8 @@ void cmGhsMultiTargetGenerator::Generate() return; } case cmStateEnums::OBJECT_LIBRARY: { - std::string targetName; - std::string targetNameSO; - std::string targetNameImport; - std::string targetNamePDB; - this->GeneratorTarget->GetLibraryNames( - targetName, targetNameSO, this->TargetNameReal, targetNameImport, - targetNamePDB, this->ConfigName); + this->TargetNameReal = + this->GeneratorTarget->GetLibraryNames(this->ConfigName).Real; this->TagType = GhsMultiGpj::SUBPROJECT; break; } diff --git a/Source/cmInstallTargetGenerator.cxx b/Source/cmInstallTargetGenerator.cxx index 5cee9d3..7053e99 100644 --- a/Source/cmInstallTargetGenerator.cxx +++ b/Source/cmInstallTargetGenerator.cxx @@ -123,19 +123,15 @@ void cmInstallTargetGenerator::GenerateScriptForConfig( // There is a bug in cmInstallCommand if this fails. assert(this->NamelinkMode == NamelinkModeNone); - std::string targetName; - std::string targetNameReal; - std::string targetNameImport; - std::string targetNamePDB; - this->Target->GetExecutableNames(targetName, targetNameReal, - targetNameImport, targetNamePDB, config); + cmGeneratorTarget::Names targetNames = + this->Target->GetExecutableNames(config); if (this->ImportLibrary) { - std::string from1 = fromDirConfig + targetNameImport; - std::string to1 = toDir + targetNameImport; + std::string from1 = fromDirConfig + targetNames.ImportLibrary; + std::string to1 = toDir + targetNames.ImportLibrary; filesFrom.push_back(std::move(from1)); filesTo.push_back(std::move(to1)); std::string targetNameImportLib; - if (this->Target->GetImplibGNUtoMS(config, targetNameImport, + if (this->Target->GetImplibGNUtoMS(config, targetNames.ImportLibrary, targetNameImportLib)) { filesFrom.push_back(fromDirConfig + targetNameImportLib); filesTo.push_back(toDir + targetNameImportLib); @@ -144,8 +140,8 @@ void cmInstallTargetGenerator::GenerateScriptForConfig( // An import library looks like a static library. type = cmInstallType_STATIC_LIBRARY; } else { - std::string from1 = fromDirConfig + targetName; - std::string to1 = toDir + targetName; + std::string from1 = fromDirConfig + targetNames.Output; + std::string to1 = toDir + targetNames.Output; // Handle OSX Bundles. if (this->Target->IsAppBundleOnApple()) { @@ -170,12 +166,12 @@ void cmInstallTargetGenerator::GenerateScriptForConfig( if (!mf->PlatformIsAppleEmbedded()) { to1 += "Contents/MacOS/"; } - to1 += targetName; + to1 += targetNames.Output; } else { // Tweaks apply to the real file, so list it first. - if (targetNameReal != targetName) { - std::string from2 = fromDirConfig + targetNameReal; - std::string to2 = toDir += targetNameReal; + if (targetNames.Real != targetNames.Output) { + std::string from2 = fromDirConfig + targetNames.Real; + std::string to2 = toDir += targetNames.Real; filesFrom.push_back(std::move(from2)); filesTo.push_back(std::move(to2)); } @@ -185,23 +181,18 @@ void cmInstallTargetGenerator::GenerateScriptForConfig( filesTo.push_back(std::move(to1)); } } else { - std::string targetName; - std::string targetNameSO; - std::string targetNameReal; - std::string targetNameImport; - std::string targetNamePDB; - this->Target->GetLibraryNames(targetName, targetNameSO, targetNameReal, - targetNameImport, targetNamePDB, config); + cmGeneratorTarget::Names targetNames = + this->Target->GetLibraryNames(config); if (this->ImportLibrary) { // There is a bug in cmInstallCommand if this fails. assert(this->NamelinkMode == NamelinkModeNone); - std::string from1 = fromDirConfig + targetNameImport; - std::string to1 = toDir + targetNameImport; + std::string from1 = fromDirConfig + targetNames.ImportLibrary; + std::string to1 = toDir + targetNames.ImportLibrary; filesFrom.push_back(std::move(from1)); filesTo.push_back(std::move(to1)); std::string targetNameImportLib; - if (this->Target->GetImplibGNUtoMS(config, targetNameImport, + if (this->Target->GetImplibGNUtoMS(config, targetNames.ImportLibrary, targetNameImportLib)) { filesFrom.push_back(fromDirConfig + targetNameImportLib); filesTo.push_back(toDir + targetNameImportLib); @@ -243,11 +234,11 @@ void cmInstallTargetGenerator::GenerateScriptForConfig( type = cmInstallType_DIRECTORY; literal_args += " USE_SOURCE_PERMISSIONS"; - std::string from1 = fromDirConfig + targetName; + std::string from1 = fromDirConfig + targetNames.Output; from1 = cmSystemTools::GetFilenamePath(from1); // Tweaks apply to the binary inside the bundle. - std::string to1 = toDir + targetNameReal; + std::string to1 = toDir + targetNames.Real; filesFrom.push_back(std::move(from1)); filesTo.push_back(std::move(to1)); @@ -256,10 +247,11 @@ void cmInstallTargetGenerator::GenerateScriptForConfig( type = cmInstallType_DIRECTORY; literal_args += " USE_SOURCE_PERMISSIONS"; - std::string targetNameBase = targetName.substr(0, targetName.find('/')); + std::string targetNameBase = + targetNames.Output.substr(0, targetNames.Output.find('/')); std::string from1 = fromDirConfig + targetNameBase; - std::string to1 = toDir + targetName; + std::string to1 = toDir + targetNames.Output; filesFrom.push_back(std::move(from1)); filesTo.push_back(std::move(to1)); @@ -267,25 +259,26 @@ void cmInstallTargetGenerator::GenerateScriptForConfig( bool haveNamelink = false; // Library link name. - std::string fromName = fromDirConfig + targetName; - std::string toName = toDir + targetName; + std::string fromName = fromDirConfig + targetNames.Output; + std::string toName = toDir + targetNames.Output; // Library interface name. std::string fromSOName; std::string toSOName; - if (targetNameSO != targetName) { + if (targetNames.SharedObject != targetNames.Output) { haveNamelink = true; - fromSOName = fromDirConfig + targetNameSO; - toSOName = toDir + targetNameSO; + fromSOName = fromDirConfig + targetNames.SharedObject; + toSOName = toDir + targetNames.SharedObject; } // Library implementation name. std::string fromRealName; std::string toRealName; - if (targetNameReal != targetName && targetNameReal != targetNameSO) { + if (targetNames.Real != targetNames.Output && + targetNames.Real != targetNames.SharedObject) { haveNamelink = true; - fromRealName = fromDirConfig + targetNameReal; - toRealName = toDir + targetNameReal; + fromRealName = fromDirConfig + targetNames.Real; + toRealName = toDir + targetNames.Real; } // Add the names based on the current namelink mode. @@ -416,48 +409,37 @@ std::string cmInstallTargetGenerator::GetInstallFilename( std::string fname; // Compute the name of the library. if (target->GetType() == cmStateEnums::EXECUTABLE) { - std::string targetName; - std::string targetNameReal; - std::string targetNameImport; - std::string targetNamePDB; - target->GetExecutableNames(targetName, targetNameReal, targetNameImport, - targetNamePDB, config); + cmGeneratorTarget::Names targetNames = target->GetExecutableNames(config); if (nameType == NameImplib) { // Use the import library name. - if (!target->GetImplibGNUtoMS(config, targetNameImport, fname, + if (!target->GetImplibGNUtoMS(config, targetNames.ImportLibrary, fname, "${CMAKE_IMPORT_LIBRARY_SUFFIX}")) { - fname = targetNameImport; + fname = targetNames.ImportLibrary; } } else if (nameType == NameReal) { // Use the canonical name. - fname = targetNameReal; + fname = targetNames.Real; } else { // Use the canonical name. - fname = targetName; + fname = targetNames.Output; } } else { - std::string targetName; - std::string targetNameSO; - std::string targetNameReal; - std::string targetNameImport; - std::string targetNamePDB; - target->GetLibraryNames(targetName, targetNameSO, targetNameReal, - targetNameImport, targetNamePDB, config); + cmGeneratorTarget::Names targetNames = target->GetLibraryNames(config); if (nameType == NameImplib) { // Use the import library name. - if (!target->GetImplibGNUtoMS(config, targetNameImport, fname, + if (!target->GetImplibGNUtoMS(config, targetNames.ImportLibrary, fname, "${CMAKE_IMPORT_LIBRARY_SUFFIX}")) { - fname = targetNameImport; + fname = targetNames.ImportLibrary; } } else if (nameType == NameSO) { // Use the soname. - fname = targetNameSO; + fname = targetNames.SharedObject; } else if (nameType == NameReal) { // Use the real name. - fname = targetNameReal; + fname = targetNames.Real; } else { // Use the canonical name. - fname = targetName; + fname = targetNames.Output; } } diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index b809be4..9f18e8f 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -1043,13 +1043,8 @@ void cmLocalVisualStudio7Generator::OutputBuildTool( } case cmStateEnums::SHARED_LIBRARY: case cmStateEnums::MODULE_LIBRARY: { - std::string targetName; - std::string targetNameSO; - std::string targetNameFull; - std::string targetNameImport; - std::string targetNamePDB; - target->GetLibraryNames(targetName, targetNameSO, targetNameFull, - targetNameImport, targetNamePDB, configName); + cmGeneratorTarget::Names targetNames = + target->GetLibraryNames(configName); // Compute the link library and directory information. cmComputeLinkInformation* pcli = target->GetLinkInformation(configName); @@ -1085,7 +1080,7 @@ void cmLocalVisualStudio7Generator::OutputBuildTool( fout << "\"\n"; temp = target->GetDirectory(configName); temp += "/"; - temp += targetNameFull; + temp += targetNames.Output; fout << "\t\t\t\tOutputFile=\"" << this->ConvertToXMLOutputPathSingle(temp.c_str()) << "\"\n"; this->WriteTargetVersionAttribute(fout, target); @@ -1095,7 +1090,7 @@ void cmLocalVisualStudio7Generator::OutputBuildTool( fout << "\"\n"; temp = target->GetPDBDirectory(configName); temp += "/"; - temp += targetNamePDB; + temp += targetNames.PDB; fout << "\t\t\t\tProgramDatabaseFile=\"" << this->ConvertToXMLOutputPathSingle(temp.c_str()) << "\"\n"; if (targetOptions.IsDebug()) { @@ -1118,7 +1113,7 @@ void cmLocalVisualStudio7Generator::OutputBuildTool( temp = target->GetDirectory(configName, cmStateEnums::ImportLibraryArtifact); temp += "/"; - temp += targetNameImport; + temp += targetNames.ImportLibrary; fout << "\t\t\t\tImportLibrary=\"" << this->ConvertToXMLOutputPathSingle(temp.c_str()) << "\""; if (this->FortranProject) { @@ -1127,12 +1122,8 @@ void cmLocalVisualStudio7Generator::OutputBuildTool( fout << "/>\n"; } break; case cmStateEnums::EXECUTABLE: { - std::string targetName; - std::string targetNameFull; - std::string targetNameImport; - std::string targetNamePDB; - target->GetExecutableNames(targetName, targetNameFull, targetNameImport, - targetNamePDB, configName); + cmGeneratorTarget::Names targetNames = + target->GetExecutableNames(configName); // Compute the link library and directory information. cmComputeLinkInformation* pcli = target->GetLinkInformation(configName); @@ -1170,7 +1161,7 @@ void cmLocalVisualStudio7Generator::OutputBuildTool( fout << "\"\n"; temp = target->GetDirectory(configName); temp += "/"; - temp += targetNameFull; + temp += targetNames.Output; fout << "\t\t\t\tOutputFile=\"" << this->ConvertToXMLOutputPathSingle(temp.c_str()) << "\"\n"; this->WriteTargetVersionAttribute(fout, target); @@ -1180,8 +1171,8 @@ void cmLocalVisualStudio7Generator::OutputBuildTool( fout << "\"\n"; std::string path = this->ConvertToXMLOutputPathSingle( target->GetPDBDirectory(configName).c_str()); - fout << "\t\t\t\tProgramDatabaseFile=\"" << path << "/" << targetNamePDB - << "\"\n"; + fout << "\t\t\t\tProgramDatabaseFile=\"" << path << "/" + << targetNames.PDB << "\"\n"; if (targetOptions.IsDebug()) { fout << "\t\t\t\tGenerateDebugInformation=\"true\"\n"; } @@ -1216,7 +1207,7 @@ void cmLocalVisualStudio7Generator::OutputBuildTool( temp = target->GetDirectory(configName, cmStateEnums::ImportLibraryArtifact); temp += "/"; - temp += targetNameImport; + temp += targetNames.ImportLibrary; fout << "\t\t\t\tImportLibrary=\"" << this->ConvertToXMLOutputPathSingle(temp.c_str()) << "\"/>\n"; break; diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx index e8ae5ae..572270a 100644 --- a/Source/cmMakefileExecutableTargetGenerator.cxx +++ b/Source/cmMakefileExecutableTargetGenerator.cxx @@ -31,9 +31,8 @@ cmMakefileExecutableTargetGenerator::cmMakefileExecutableTargetGenerator( : cmMakefileTargetGenerator(target) { this->CustomCommandDriver = OnDepends; - this->GeneratorTarget->GetExecutableNames( - this->TargetNameOut, this->TargetNameReal, this->TargetNameImport, - this->TargetNamePDB, this->ConfigName); + this->TargetNames = + this->GeneratorTarget->GetExecutableNames(this->ConfigName); this->OSXBundleGenerator = new cmOSXBundleGenerator(target, this->ConfigName); @@ -305,18 +304,13 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink) std::vector commands; // Get the name of the executable to generate. - std::string targetName; - std::string targetNameReal; - std::string targetNameImport; - std::string targetNamePDB; - this->GeneratorTarget->GetExecutableNames(targetName, targetNameReal, - targetNameImport, targetNamePDB, - this->ConfigName); + cmGeneratorTarget::Names targetNames = + this->GeneratorTarget->GetExecutableNames(this->ConfigName); // Construct the full path version of the names. std::string outpath = this->GeneratorTarget->GetDirectory(this->ConfigName); if (this->GeneratorTarget->IsAppBundleOnApple()) { - this->OSXBundleGenerator->CreateAppBundle(targetName, outpath); + this->OSXBundleGenerator->CreateAppBundle(targetNames.Output, outpath); } outpath += "/"; std::string outpathImp; @@ -326,12 +320,12 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink) outpath += "/CMakeRelink.dir"; cmSystemTools::MakeDirectory(outpath); outpath += "/"; - if (!targetNameImport.empty()) { + if (!targetNames.ImportLibrary.empty()) { outpathImp = outpath; } } else { cmSystemTools::MakeDirectory(outpath); - if (!targetNameImport.empty()) { + if (!targetNames.ImportLibrary.empty()) { outpathImp = this->GeneratorTarget->GetDirectory( this->ConfigName, cmStateEnums::ImportLibraryArtifact); cmSystemTools::MakeDirectory(outpathImp); @@ -348,10 +342,10 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink) cmSystemTools::MakeDirectory(pdbOutputPath); pdbOutputPath += "/"; - std::string targetFullPath = outpath + targetName; - std::string targetFullPathReal = outpath + targetNameReal; - std::string targetFullPathPDB = pdbOutputPath + targetNamePDB; - std::string targetFullPathImport = outpathImp + targetNameImport; + std::string targetFullPath = outpath + targetNames.Output; + std::string targetFullPathReal = outpath + targetNames.Real; + std::string targetFullPathPDB = pdbOutputPath + targetNames.PDB; + std::string targetFullPathImport = outpathImp + targetNames.ImportLibrary; std::string targetOutPathPDB = this->LocalGenerator->ConvertToOutputFormat( targetFullPathPDB, cmOutputConverter::SHELL); // Convert to the output path to use in constructing commands. @@ -468,11 +462,11 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink) this->LocalGenerator->GetCurrentBinaryDirectory(), targetFullPath + ".manifest")); #endif - if (targetNameReal != targetName) { + if (this->TargetNames.Real != this->TargetNames.Output) { exeCleanFiles.push_back(this->LocalGenerator->MaybeConvertToRelativePath( this->LocalGenerator->GetCurrentBinaryDirectory(), targetFullPathReal)); } - if (!targetNameImport.empty()) { + if (!this->TargetNames.ImportLibrary.empty()) { exeCleanFiles.push_back(this->LocalGenerator->MaybeConvertToRelativePath( this->LocalGenerator->GetCurrentBinaryDirectory(), targetFullPathImport)); diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 5a1ef4e..ed2fd68 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -32,9 +32,8 @@ cmMakefileLibraryTargetGenerator::cmMakefileLibraryTargetGenerator( { this->CustomCommandDriver = OnDepends; if (this->GeneratorTarget->GetType() != cmStateEnums::INTERFACE_LIBRARY) { - this->GeneratorTarget->GetLibraryNames( - this->TargetNameOut, this->TargetNameSO, this->TargetNameReal, - this->TargetNameImport, this->TargetNamePDB, this->ConfigName); + this->TargetNames = + this->GeneratorTarget->GetLibraryNames(this->ConfigName); } this->OSXBundleGenerator = @@ -489,25 +488,20 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules( } // Construct the name of the library. - std::string targetName; - std::string targetNameSO; - std::string targetNameReal; - std::string targetNameImport; - std::string targetNamePDB; - this->GeneratorTarget->GetLibraryNames(targetName, targetNameSO, - targetNameReal, targetNameImport, - targetNamePDB, this->ConfigName); + this->GeneratorTarget->GetLibraryNames(this->ConfigName); // Construct the full path version of the names. std::string outpath; std::string outpathImp; if (this->GeneratorTarget->IsFrameworkOnApple()) { outpath = this->GeneratorTarget->GetDirectory(this->ConfigName); - this->OSXBundleGenerator->CreateFramework(targetName, outpath); + this->OSXBundleGenerator->CreateFramework(this->TargetNames.Output, + outpath); outpath += "/"; } else if (this->GeneratorTarget->IsCFBundleOnApple()) { outpath = this->GeneratorTarget->GetDirectory(this->ConfigName); - this->OSXBundleGenerator->CreateCFBundle(targetName, outpath); + this->OSXBundleGenerator->CreateCFBundle(this->TargetNames.Output, + outpath); outpath += "/"; } else if (relink) { outpath = this->Makefile->GetCurrentBinaryDirectory(); @@ -515,14 +509,14 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules( outpath += "/CMakeRelink.dir"; cmSystemTools::MakeDirectory(outpath); outpath += "/"; - if (!targetNameImport.empty()) { + if (!this->TargetNames.ImportLibrary.empty()) { outpathImp = outpath; } } else { outpath = this->GeneratorTarget->GetDirectory(this->ConfigName); cmSystemTools::MakeDirectory(outpath); outpath += "/"; - if (!targetNameImport.empty()) { + if (!this->TargetNames.ImportLibrary.empty()) { outpathImp = this->GeneratorTarget->GetDirectory( this->ConfigName, cmStateEnums::ImportLibraryArtifact); cmSystemTools::MakeDirectory(outpathImp); @@ -539,11 +533,12 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules( cmSystemTools::MakeDirectory(pdbOutputPath); pdbOutputPath += "/"; - std::string targetFullPath = outpath + targetName; - std::string targetFullPathPDB = pdbOutputPath + targetNamePDB; - std::string targetFullPathSO = outpath + targetNameSO; - std::string targetFullPathReal = outpath + targetNameReal; - std::string targetFullPathImport = outpathImp + targetNameImport; + std::string targetFullPath = outpath + this->TargetNames.Output; + std::string targetFullPathPDB = pdbOutputPath + this->TargetNames.PDB; + std::string targetFullPathSO = outpath + this->TargetNames.SharedObject; + std::string targetFullPathReal = outpath + this->TargetNames.Real; + std::string targetFullPathImport = + outpathImp + this->TargetNames.ImportLibrary; // Construct the output path version of the names for use in command // arguments. @@ -616,15 +611,16 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules( commands1.clear(); } - if (targetName != targetNameReal) { + if (this->TargetNames.Output != this->TargetNames.Real) { libCleanFiles.push_back(this->LocalGenerator->MaybeConvertToRelativePath( this->LocalGenerator->GetCurrentBinaryDirectory(), targetFullPath)); } - if (targetNameSO != targetNameReal && targetNameSO != targetName) { + if (this->TargetNames.SharedObject != this->TargetNames.Real && + this->TargetNames.SharedObject != this->TargetNames.Output) { libCleanFiles.push_back(this->LocalGenerator->MaybeConvertToRelativePath( this->LocalGenerator->GetCurrentBinaryDirectory(), targetFullPathSO)); } - if (!targetNameImport.empty()) { + if (!this->TargetNames.ImportLibrary.empty()) { libCleanFiles.push_back(this->LocalGenerator->MaybeConvertToRelativePath( this->LocalGenerator->GetCurrentBinaryDirectory(), targetFullPathImport)); @@ -820,7 +816,7 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules( vars.ObjectsQuoted = buildObjs.c_str(); if (this->GeneratorTarget->HasSOName(this->ConfigName)) { vars.SONameFlag = this->Makefile->GetSONameFlag(linkLanguage); - vars.TargetSOName = targetNameSO.c_str(); + vars.TargetSOName = this->TargetNames.SharedObject.c_str(); } vars.LinkFlags = linkFlags.c_str(); @@ -981,10 +977,11 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules( // Compute the list of outputs. std::vector outputs(1, targetFullPathReal); - if (targetNameSO != targetNameReal) { + if (this->TargetNames.SharedObject != this->TargetNames.Real) { outputs.push_back(targetFullPathSO); } - if (targetName != targetNameSO && targetName != targetNameReal) { + if (this->TargetNames.Output != this->TargetNames.SharedObject && + this->TargetNames.Output != this->TargetNames.Real) { outputs.push_back(targetFullPath); } diff --git a/Source/cmMakefileTargetGenerator.h b/Source/cmMakefileTargetGenerator.h index 529b4db..c053d5b 100644 --- a/Source/cmMakefileTargetGenerator.h +++ b/Source/cmMakefileTargetGenerator.h @@ -12,12 +12,12 @@ #include #include "cmCommonTargetGenerator.h" +#include "cmGeneratorTarget.h" #include "cmLocalUnixMakefileGenerator3.h" #include "cmOSXBundleGenerator.h" class cmCustomCommandGenerator; class cmGeneratedFileStream; -class cmGeneratorTarget; class cmGlobalUnixMakefileGenerator3; class cmLinkLineComputer; class cmOutputConverter; @@ -231,11 +231,7 @@ protected: bool in_help = false); // Target name info. - std::string TargetNameOut; - std::string TargetNameSO; - std::string TargetNameReal; - std::string TargetNameImport; - std::string TargetNamePDB; + cmGeneratorTarget::Names TargetNames; // macOS content info. std::set MacContentFolders; diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index cbc0103..3874f48 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -41,13 +41,10 @@ cmNinjaNormalTargetGenerator::cmNinjaNormalTargetGenerator( { this->TargetLinkLanguage = target->GetLinkerLanguage(this->GetConfigName()); if (target->GetType() == cmStateEnums::EXECUTABLE) { - this->GetGeneratorTarget()->GetExecutableNames( - this->TargetNameOut, this->TargetNameReal, this->TargetNameImport, - this->TargetNamePDB, GetLocalGenerator()->GetConfigName()); + this->TargetNames = this->GetGeneratorTarget()->GetExecutableNames( + GetLocalGenerator()->GetConfigName()); } else { - this->GetGeneratorTarget()->GetLibraryNames( - this->TargetNameOut, this->TargetNameSO, this->TargetNameReal, - this->TargetNameImport, this->TargetNamePDB, + this->TargetNames = this->GetGeneratorTarget()->GetLibraryNames( GetLocalGenerator()->GetConfigName()); } @@ -395,7 +392,7 @@ void cmNinjaNormalTargetGenerator::WriteLinkRule(bool useResponseFile) /*generator*/ false); } - if (this->TargetNameOut != this->TargetNameReal && + if (this->TargetNames.Output != this->TargetNames.Real && !this->GetGeneratorTarget()->IsFrameworkOnApple()) { std::string cmakeCommand = this->GetLocalGenerator()->ConvertToOutputFormat( @@ -676,7 +673,7 @@ void cmNinjaNormalTargetGenerator::WriteDeviceLinkStatement() if (this->GetGeneratorTarget()->HasSOName(cfgName)) { vars["SONAME_FLAG"] = this->GetMakefile()->GetSONameFlag(this->TargetLinkLanguage); - vars["SONAME"] = this->TargetNameSO; + vars["SONAME"] = this->TargetNames.SharedObject; if (targetType == cmStateEnums::SHARED_LIBRARY) { std::string install_dir = this->GetGeneratorTarget()->GetInstallNameDirForBuildTree(cfgName); @@ -687,7 +684,7 @@ void cmNinjaNormalTargetGenerator::WriteDeviceLinkStatement() } } - if (!this->TargetNameImport.empty()) { + if (!this->TargetNames.ImportLibrary.empty()) { const std::string impLibPath = localGen.ConvertToOutputFormat( targetOutputImplib, cmOutputConverter::SHELL); vars["TARGET_IMPLIB"] = impLibPath; @@ -749,24 +746,25 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() if (gt.IsAppBundleOnApple()) { // Create the app bundle std::string outpath = gt.GetDirectory(cfgName); - this->OSXBundleGenerator->CreateAppBundle(this->TargetNameOut, outpath); + this->OSXBundleGenerator->CreateAppBundle(this->TargetNames.Output, + outpath); // Calculate the output path targetOutput = outpath; targetOutput += "/"; - targetOutput += this->TargetNameOut; + targetOutput += this->TargetNames.Output; targetOutput = this->ConvertToNinjaPath(targetOutput); targetOutputReal = outpath; targetOutputReal += "/"; - targetOutputReal += this->TargetNameReal; + targetOutputReal += this->TargetNames.Real; targetOutputReal = this->ConvertToNinjaPath(targetOutputReal); } else if (gt.IsFrameworkOnApple()) { // Create the library framework. - this->OSXBundleGenerator->CreateFramework(this->TargetNameOut, + this->OSXBundleGenerator->CreateFramework(this->TargetNames.Output, gt.GetDirectory(cfgName)); } else if (gt.IsCFBundleOnApple()) { // Create the core foundation bundle. - this->OSXBundleGenerator->CreateCFBundle(this->TargetNameOut, + this->OSXBundleGenerator->CreateCFBundle(this->TargetNames.Output, gt.GetDirectory(cfgName)); } @@ -864,7 +862,7 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() } if (this->GetGeneratorTarget()->HasSOName(cfgName)) { vars["SONAME_FLAG"] = mf->GetSONameFlag(this->TargetLinkLanguage); - vars["SONAME"] = this->TargetNameSO; + vars["SONAME"] = this->TargetNames.SharedObject; if (targetType == cmStateEnums::SHARED_LIBRARY) { std::string install_dir = this->GetGeneratorTarget()->GetInstallNameDirForBuildTree(cfgName); @@ -877,7 +875,7 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() cmNinjaDeps byproducts; - if (!this->TargetNameImport.empty()) { + if (!this->TargetNames.ImportLibrary.empty()) { const std::string impLibPath = localGen.ConvertToOutputFormat( targetOutputImplib, cmOutputConverter::SHELL); vars["TARGET_IMPLIB"] = impLibPath; @@ -1037,8 +1035,8 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() emptyDeps, emptyDeps, symlinkVars); } else { cmNinjaDeps symlinks; - std::string const soName = - this->ConvertToNinjaPath(this->GetTargetFilePath(this->TargetNameSO)); + std::string const soName = this->ConvertToNinjaPath( + this->GetTargetFilePath(this->TargetNames.SharedObject)); // If one link has to be created. if (targetOutputReal == soName || targetOutput == soName) { symlinkVars["SONAME"] = soName; @@ -1056,7 +1054,7 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() } // Add aliases for the file name and the target name. - globalGen.AddTargetAlias(this->TargetNameOut, >); + globalGen.AddTargetAlias(this->TargetNames.Output, >); globalGen.AddTargetAlias(this->GetTargetName(), >); } diff --git a/Source/cmNinjaNormalTargetGenerator.h b/Source/cmNinjaNormalTargetGenerator.h index 01cc881..14991a2 100644 --- a/Source/cmNinjaNormalTargetGenerator.h +++ b/Source/cmNinjaNormalTargetGenerator.h @@ -5,13 +5,12 @@ #include "cmConfigure.h" // IWYU pragma: keep +#include "cmGeneratorTarget.h" #include "cmNinjaTargetGenerator.h" #include #include -class cmGeneratorTarget; - class cmNinjaNormalTargetGenerator : public cmNinjaTargetGenerator { public: @@ -40,11 +39,7 @@ private: private: // Target name info. - std::string TargetNameOut; - std::string TargetNameSO; - std::string TargetNameReal; - std::string TargetNameImport; - std::string TargetNamePDB; + cmGeneratorTarget::Names TargetNames; std::string TargetLinkLanguage; std::string DeviceLinkObject; }; diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 8e08417..00a2d74 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -3439,18 +3439,11 @@ bool cmVisualStudio10TargetGenerator::ComputeLinkOptions( linkDirs.push_back("%(AdditionalLibraryDirectories)"); linkOptions.AddFlag("AdditionalLibraryDirectories", linkDirs); - std::string targetName; - std::string targetNameSO; - std::string targetNameFull; - std::string targetNameImport; - std::string targetNamePDB; + cmGeneratorTarget::Names targetNames; if (this->GeneratorTarget->GetType() == cmStateEnums::EXECUTABLE) { - this->GeneratorTarget->GetExecutableNames( - targetName, targetNameFull, targetNameImport, targetNamePDB, config); + targetNames = this->GeneratorTarget->GetExecutableNames(config); } else { - this->GeneratorTarget->GetLibraryNames(targetName, targetNameSO, - targetNameFull, targetNameImport, - targetNamePDB, config); + targetNames = this->GeneratorTarget->GetLibraryNames(config); } if (this->MSTools) { @@ -3491,11 +3484,11 @@ bool cmVisualStudio10TargetGenerator::ComputeLinkOptions( std::string pdb = this->GeneratorTarget->GetPDBDirectory(config); pdb += "/"; - pdb += targetNamePDB; + pdb += targetNames.PDB; std::string imLib = this->GeneratorTarget->GetDirectory( config, cmStateEnums::ImportLibraryArtifact); imLib += "/"; - imLib += targetNameImport; + imLib += targetNames.ImportLibrary; linkOptions.AddFlag("ImportLibrary", imLib); linkOptions.AddFlag("ProgramDataBaseFile", pdb); @@ -3519,7 +3512,7 @@ bool cmVisualStudio10TargetGenerator::ComputeLinkOptions( linkOptions.AppendFlag("IgnoreSpecificDefaultLibraries", "ole32.lib"); } } else if (this->NsightTegra) { - linkOptions.AddFlag("SoName", targetNameSO); + linkOptions.AddFlag("SoName", targetNames.SharedObject); } linkOptions.Parse(flags); ----------------------------------------------------------------------- Summary of changes: Source/CPack/cmCPackGenerator.cxx | 3 +- Source/CTest/cmCTestCoverageHandler.cxx | 12 +-- Source/CTest/cmCTestMemCheckHandler.cxx | 8 +- Source/CursesDialog/cmCursesMainForm.cxx | 11 ++- Source/cmFileCommand.cxx | 84 ++++++++-------- Source/cmGeneratorTarget.cxx | 129 +++++++++++-------------- Source/cmGeneratorTarget.h | 18 ++-- Source/cmGhsMultiTargetGenerator.cxx | 26 ++--- Source/cmInstallTargetGenerator.cxx | 100 ++++++++----------- Source/cmLocalVisualStudio7Generator.cxx | 31 +++--- Source/cmMakefileExecutableTargetGenerator.cxx | 32 +++--- Source/cmMakefileLibraryTargetGenerator.cxx | 49 +++++----- Source/cmMakefileTargetGenerator.h | 8 +- Source/cmNinjaNormalTargetGenerator.cxx | 36 ++++--- Source/cmNinjaNormalTargetGenerator.h | 9 +- Source/cmSystemTools.cxx | 27 +++--- Source/cmSystemTools.h | 16 +-- Source/cmVisualStudio10TargetGenerator.cxx | 19 ++-- Source/cmake.cxx | 2 +- 19 files changed, 271 insertions(+), 349 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 14 00:03:03 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 14 Feb 2019 00:03:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-85-g5b3683e Message-ID: <20190214050303.D205AFC113@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 5b3683ec8a23d8cecb27f3cd2e3a649ae6ad5999 (commit) from 63efce507bfcf7eec1dbcb10acadeb3304d6f20d (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=5b3683ec8a23d8cecb27f3cd2e3a649ae6ad5999 commit 5b3683ec8a23d8cecb27f3cd2e3a649ae6ad5999 Author: Kitware Robot AuthorDate: Thu Feb 14 00:01:06 2019 -0500 Commit: Kitware Robot CommitDate: Thu Feb 14 00:01:06 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index e1284df..8330dc8 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 14) -set(CMake_VERSION_PATCH 20190213) +set(CMake_VERSION_PATCH 20190214) #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 14 10:13:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 14 Feb 2019 10:13:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-89-g49a53ca Message-ID: <20190214151304.E6D5CF7372@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 49a53cac87fe3a303a2794ccdd7c1b5cecd2d016 (commit) via ec13bd523006151b4e0d2b9afc19562e5f05de38 (commit) via ded4bc136e5b120b2d047dc9b8eb6f7446043d08 (commit) via f3999a21c85e6caf19feef7c90afce3969d9102a (commit) from 5b3683ec8a23d8cecb27f3cd2e3a649ae6ad5999 (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=49a53cac87fe3a303a2794ccdd7c1b5cecd2d016 commit 49a53cac87fe3a303a2794ccdd7c1b5cecd2d016 Merge: 5b3683e ec13bd5 Author: Brad King AuthorDate: Thu Feb 14 15:11:40 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 14 10:11:54 2019 -0500 Merge topic 'update-kwsys' ec13bd5230 Tests: Disable test that builds KWSys if not also building CMake ded4bc136e Merge branch 'upstream-KWSys' into update-kwsys f3999a21c8 KWSys 2019-02-12 (44676809) Acked-by: Kitware Robot Merge-request: !2953 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ec13bd523006151b4e0d2b9afc19562e5f05de38 commit ec13bd523006151b4e0d2b9afc19562e5f05de38 Author: Brad King AuthorDate: Wed Feb 13 08:07:54 2019 -0500 Commit: Brad King CommitDate: Wed Feb 13 08:10:35 2019 -0500 Tests: Disable test that builds KWSys if not also building CMake If `CMake_TEST_EXTERNAL_CMAKE` is enabled then the compiler with which we are driving tests may not be able to compile CMake, so do not try to compile KWSys with it either. diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 40e53a2..3245f3e 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -3272,12 +3272,14 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release --output-log "${CMake_BINARY_DIR}/Tests/CTestTest/testOutput.log" ) - configure_file("${CMake_SOURCE_DIR}/Tests/CTestTest2/test.cmake.in" - "${CMake_BINARY_DIR}/Tests/CTestTest2/test.cmake" @ONLY ESCAPE_QUOTES) - add_test(CTestTest2 ${CMAKE_CTEST_COMMAND} - -S "${CMake_BINARY_DIR}/Tests/CTestTest2/test.cmake" -V - --output-log "${CMake_BINARY_DIR}/Tests/CTestTest2/testOutput.log" - ) + if(NOT CMake_TEST_EXTERNAL_CMAKE) + configure_file("${CMake_SOURCE_DIR}/Tests/CTestTest2/test.cmake.in" + "${CMake_BINARY_DIR}/Tests/CTestTest2/test.cmake" @ONLY ESCAPE_QUOTES) + add_test(CTestTest2 ${CMAKE_CTEST_COMMAND} + -S "${CMake_BINARY_DIR}/Tests/CTestTest2/test.cmake" -V + --output-log "${CMake_BINARY_DIR}/Tests/CTestTest2/testOutput.log" + ) + endif() if("${CMAKE_GENERATOR}" MATCHES "Makefiles" OR "${CMAKE_GENERATOR}" MATCHES "Ninja") configure_file("${CMake_SOURCE_DIR}/Tests/CTestTestLaunchers/test.cmake.in" @@ -3309,11 +3311,13 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release PROPERTIES TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT}) endif () - get_test_property(CTestTest2 TIMEOUT PREVIOUS_TIMEOUT) - if ("${PREVIOUS_TIMEOUT}" MATCHES NOTFOUND) - set_tests_properties ( CTestTest2 - PROPERTIES TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT}) - endif () + if(NOT CMake_TEST_EXTERNAL_CMAKE) + get_test_property(CTestTest2 TIMEOUT PREVIOUS_TIMEOUT) + if("${PREVIOUS_TIMEOUT}" MATCHES NOTFOUND) + set_tests_properties ( CTestTest2 + PROPERTIES TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT}) + endif() + endif() endif () if(CMake_TEST_EXTERNAL_CMAKE) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ded4bc136e5b120b2d047dc9b8eb6f7446043d08 commit ded4bc136e5b120b2d047dc9b8eb6f7446043d08 Merge: 9d2ab63 f3999a2 Author: Brad King AuthorDate: Tue Feb 12 08:35:12 2019 -0500 Commit: Brad King CommitDate: Tue Feb 12 08:35:12 2019 -0500 Merge branch 'upstream-KWSys' into update-kwsys * upstream-KWSys: KWSys 2019-02-12 (44676809) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f3999a21c85e6caf19feef7c90afce3969d9102a commit f3999a21c85e6caf19feef7c90afce3969d9102a Author: KWSys Upstream AuthorDate: Tue Feb 12 08:34:34 2019 -0500 Commit: Brad King CommitDate: Tue Feb 12 08:35:11 2019 -0500 KWSys 2019-02-12 (44676809) Code extracted from: https://gitlab.kitware.com/utils/kwsys.git at commit 4467680959f82b755462a8530ef5d0dbd928d2d4 (master). Upstream Shortlog ----------------- Albert Astals Cid (1): 7d50c26d Delete some default constructors and assignment operators Artur Ryt (1): 01089e4c Prefer back/data over dereferencing rbegin/begin iterator diff --git a/CommandLineArguments.hxx.in b/CommandLineArguments.hxx.in index 31115e5..7db9015 100644 --- a/CommandLineArguments.hxx.in +++ b/CommandLineArguments.hxx.in @@ -62,6 +62,9 @@ public: CommandLineArguments(); ~CommandLineArguments(); + CommandLineArguments(const CommandLineArguments&) = delete; + CommandLineArguments& operator=(const CommandLineArguments&) = delete; + /** * Various argument types. */ diff --git a/Directory.cxx b/Directory.cxx index 31b1c15..59530a4 100644 --- a/Directory.cxx +++ b/Directory.cxx @@ -102,7 +102,7 @@ bool Directory::Load(const std::string& name) # endif char* buf; size_t n = name.size(); - if (*name.rbegin() == '/' || *name.rbegin() == '\\') { + if (name.back() == '/' || name.back() == '\\') { buf = new char[n + 1 + 1]; sprintf(buf, "%s*", name.c_str()); } else { @@ -144,7 +144,7 @@ unsigned long Directory::GetNumberOfFilesInDirectory(const std::string& name) # endif char* buf; size_t n = name.size(); - if (*name.rbegin() == '/') { + if (name.back() == '/') { buf = new char[n + 1 + 1]; sprintf(buf, "%s*", name.c_str()); } else { diff --git a/Glob.cxx b/Glob.cxx index 6952d24..829c138 100644 --- a/Glob.cxx +++ b/Glob.cxx @@ -263,7 +263,7 @@ bool Glob::RecurseDirectory(std::string::size_type start, } } else { if (!this->Internals->Expressions.empty() && - this->Internals->Expressions.rbegin()->find(fname)) { + this->Internals->Expressions.back().find(fname)) { this->AddFile(this->Internals->Files, realname); } } diff --git a/SystemInformation.cxx b/SystemInformation.cxx index f323efc..4354753 100644 --- a/SystemInformation.cxx +++ b/SystemInformation.cxx @@ -4620,7 +4620,7 @@ std::string SystemInformationImplementation::RunProcess( // Run the application kwsysProcess* gp = kwsysProcess_New(); - kwsysProcess_SetCommand(gp, &*args.begin()); + kwsysProcess_SetCommand(gp, args.data()); kwsysProcess_SetOption(gp, kwsysProcess_Option_HideWindow, 1); kwsysProcess_Execute(gp); diff --git a/SystemInformation.hxx.in b/SystemInformation.hxx.in index 9e1ce6c..5e93878 100644 --- a/SystemInformation.hxx.in +++ b/SystemInformation.hxx.in @@ -56,6 +56,9 @@ public: SystemInformation(); ~SystemInformation(); + SystemInformation(const SystemInformation&) = delete; + SystemInformation& operator=(const SystemInformation&) = delete; + const char* GetVendorString(); const char* GetVendorID(); std::string GetTypeID(); diff --git a/SystemTools.cxx b/SystemTools.cxx index cbdfe11..33a92e4 100644 --- a/SystemTools.cxx +++ b/SystemTools.cxx @@ -416,6 +416,9 @@ public: { } ~Free() { free(const_cast(this->Env)); } + + Free(const Free&) = delete; + Free& operator=(const Free&) = delete; }; const envchar* Release(const envchar* env) @@ -473,7 +476,7 @@ void SystemTools::GetPath(std::vector& path, const char* env) } // A hack to make the below algorithm work. - if (!pathEnv.empty() && *pathEnv.rbegin() != pathSep) { + if (!pathEnv.empty() && pathEnv.back() != pathSep) { pathEnv += pathSep; } std::string::size_type start = 0; @@ -1943,7 +1946,7 @@ void SystemTools::ConvertToUnixSlashes(std::string& path) // a single / pathCString = path.c_str(); size_t size = path.size(); - if (size > 1 && *path.rbegin() == '/') { + if (size > 1 && path.back() == '/') { // if it is c:/ then do not remove the trailing slash if (!((size == 3 && pathCString[1] == ':'))) { path.resize(size - 1); @@ -2692,7 +2695,7 @@ std::string SystemTools::FindName(const std::string& name, for (std::vector::iterator i = path.begin(); i != path.end(); ++i) { std::string& p = *i; - if (p.empty() || *p.rbegin() != '/') { + if (p.empty() || p.back() != '/') { p += "/"; } } @@ -2810,7 +2813,7 @@ std::string SystemTools::FindProgram(const std::string& name, for (std::vector::iterator i = path.begin(); i != path.end(); ++i) { std::string& p = *i; - if (p.empty() || *p.rbegin() != '/') { + if (p.empty() || p.back() != '/') { p += "/"; } } @@ -2888,7 +2891,7 @@ std::string SystemTools::FindLibrary(const std::string& name, for (std::vector::iterator i = path.begin(); i != path.end(); ++i) { std::string& p = *i; - if (p.empty() || *p.rbegin() != '/') { + if (p.empty() || p.back() != '/') { p += "/"; } } @@ -3234,10 +3237,10 @@ void SystemTools::AddTranslationPath(const std::string& a, if (SystemTools::FileIsFullPath(path_b) && path_b.find("..") == std::string::npos) { // Before inserting make sure path ends with '/' - if (!path_a.empty() && *path_a.rbegin() != '/') { + if (!path_a.empty() && path_a.back() != '/') { path_a += '/'; } - if (!path_b.empty() && *path_b.rbegin() != '/') { + if (!path_b.empty() && path_b.back() != '/') { path_b += '/'; } if (!(path_a == path_b)) { @@ -3446,7 +3449,7 @@ std::string SystemTools::RelativePath(const std::string& local, // between each entry that does not already have one for (std::vector::iterator vit1 = finalPath.begin(); vit1 != finalPath.end(); ++vit1) { - if (!relativePath.empty() && *relativePath.rbegin() != '/') { + if (!relativePath.empty() && relativePath.back() != '/') { relativePath += "/"; } relativePath += *vit1; @@ -3648,7 +3651,7 @@ void SystemTools::SplitPath(const std::string& p, } #endif if (!homedir.empty() && - (*homedir.rbegin() == '/' || *homedir.rbegin() == '\\')) { + (homedir.back() == '/' || homedir.back() == '\\')) { homedir.resize(homedir.size() - 1); } SystemTools::SplitPath(homedir, components); @@ -4016,7 +4019,7 @@ bool SystemTools::LocateFileInDir(const char* filename, const char* dir, filename_dir = SystemTools::GetFilenamePath(filename_dir); filename_dir_base = SystemTools::GetFilenameName(filename_dir); #if defined(_WIN32) - if (filename_dir_base.empty() || *filename_dir_base.rbegin() == ':') + if (filename_dir_base.empty() || filename_dir_base.back() == ':') #else if (filename_dir_base.empty()) #endif @@ -4092,7 +4095,7 @@ bool SystemTools::GetShortPath(const std::string& path, std::string& shortPath) std::string tempPath = path; // create a buffer // if the path passed in has quotes around it, first remove the quotes - if (!path.empty() && path[0] == '"' && *path.rbegin() == '"') { + if (!path.empty() && path[0] == '"' && path.back() == '"') { tempPath = path.substr(1, path.length() - 2); } @@ -4169,7 +4172,7 @@ bool SystemTools::GetLineFromStream(std::istream& is, std::string& line, bool haveData = !line.empty() || !is.eof(); if (!line.empty()) { // Avoid storing a carriage return character. - if (*line.rbegin() == '\r') { + if (line.back() == '\r') { line.resize(line.size() - 1); } @@ -4307,7 +4310,7 @@ bool SystemTools::IsSubDirectory(const std::string& cSubdir, if (subdir.size() <= dir.size() || dir.empty()) { return false; } - bool isRootPath = *dir.rbegin() == '/'; // like "/" or "C:/" + bool isRootPath = dir.back() == '/'; // like "/" or "C:/" size_t expectedSlashPosition = isRootPath ? dir.size() - 1u : dir.size(); if (subdir[expectedSlashPosition] != '/') { return false; diff --git a/SystemTools.hxx.in b/SystemTools.hxx.in index 1967860..33b579f 100644 --- a/SystemTools.hxx.in +++ b/SystemTools.hxx.in @@ -54,6 +54,9 @@ class @KWSYS_NAMESPACE at _EXPORT SystemToolsManager public: SystemToolsManager(); ~SystemToolsManager(); + + SystemToolsManager(const SystemToolsManager&) = delete; + SystemToolsManager& operator=(const SystemToolsManager&) = delete; }; // This instance will show up in any translation unit that uses ----------------------------------------------------------------------- Summary of changes: Source/kwsys/CommandLineArguments.hxx.in | 3 +++ Source/kwsys/Directory.cxx | 4 ++-- Source/kwsys/Glob.cxx | 2 +- Source/kwsys/SystemInformation.cxx | 2 +- Source/kwsys/SystemInformation.hxx.in | 3 +++ Source/kwsys/SystemTools.cxx | 29 ++++++++++++++++------------- Source/kwsys/SystemTools.hxx.in | 3 +++ Tests/CMakeLists.txt | 26 +++++++++++++++----------- 8 files changed, 44 insertions(+), 28 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 14 10:23:03 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 14 Feb 2019 10:23:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-96-g50ba2f0 Message-ID: <20190214152303.B9485F7372@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 50ba2f019baa3e5487a975cb72059f1fc178f9d0 (commit) via fd74eba1402d66a4d6a1af3442cf219d02f7cbc8 (commit) via 76a5ac210050e0c1ccdce8ce89a0c77579e30187 (commit) via 6fc33829443ea3ef2dc8cc71c0a98b635bec6179 (commit) via 2ad14ef4ea57c19f6cb4ed365e99a30be81eefe7 (commit) via 557b2d6e65038640d5016413e612e48691cff0d8 (commit) via 017598a4443c19185dc245f3f0fcfceff9b98463 (commit) from 49a53cac87fe3a303a2794ccdd7c1b5cecd2d016 (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=50ba2f019baa3e5487a975cb72059f1fc178f9d0 commit 50ba2f019baa3e5487a975cb72059f1fc178f9d0 Merge: fd74eba 6fc3382 Author: Brad King AuthorDate: Thu Feb 14 15:14:11 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 14 10:14:47 2019 -0500 Merge topic 'fix-legacy-implicit-includes' 6fc3382944 Update logic for sysroot in detected implicit include directories 2ad14ef4ea cmAlgorithms: Add cmHasPrefix to match existing cmHasSuffix 557b2d6e65 Fix regression in -I/usr/include exclusion logic 017598a444 macOS: Fix addition of /usr/include to default implicit include dirs Acked-by: Kitware Robot Merge-request: !2957 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fd74eba1402d66a4d6a1af3442cf219d02f7cbc8 commit fd74eba1402d66a4d6a1af3442cf219d02f7cbc8 Merge: 49a53ca 76a5ac2 Author: Brad King AuthorDate: Thu Feb 14 15:14:02 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 14 10:14:08 2019 -0500 Merge topic 'fix-pointer-truncation' 76a5ac2100 cmListFileLexer: Add missing include to avoid possible pointer truncation Acked-by: Kitware Robot Merge-request: !2956 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=76a5ac210050e0c1ccdce8ce89a0c77579e30187 commit 76a5ac210050e0c1ccdce8ce89a0c77579e30187 Author: Zsolt Parragi AuthorDate: Tue Feb 12 21:01:18 2019 +0100 Commit: Brad King CommitDate: Wed Feb 13 10:22:59 2019 -0500 cmListFileLexer: Add missing include to avoid possible pointer truncation The `cmsys/Enconding.h` include had a typo in its surrounding ifdef, possibly causing a missing function declaration (`cmsysEncoding_DupToWide`). As this is C code, this resulted in the code compiling, but with a truncated return value, possibly causing crashes. diff --git a/Source/LexerParser/cmListFileLexer.c b/Source/LexerParser/cmListFileLexer.c index c726415..15dcda0 100644 --- a/Source/LexerParser/cmListFileLexer.c +++ b/Source/LexerParser/cmListFileLexer.c @@ -766,7 +766,7 @@ Modify cmListFileLexer.c: /* IWYU pragma: no_forward_declare yyguts_t */ -#ifdef WIN32 +#ifdef _WIN32 #include "cmsys/Encoding.h" #endif diff --git a/Source/LexerParser/cmListFileLexer.in.l b/Source/LexerParser/cmListFileLexer.in.l index 6a6fb5f..fdf14d2 100644 --- a/Source/LexerParser/cmListFileLexer.in.l +++ b/Source/LexerParser/cmListFileLexer.in.l @@ -18,7 +18,7 @@ Modify cmListFileLexer.c: /* IWYU pragma: no_forward_declare yyguts_t */ -#ifdef WIN32 +#ifdef _WIN32 #include "cmsys/Encoding.h" #endif https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6fc33829443ea3ef2dc8cc71c0a98b635bec6179 commit 6fc33829443ea3ef2dc8cc71c0a98b635bec6179 Author: Brad King AuthorDate: Wed Feb 13 09:27:24 2019 -0500 Commit: Brad King CommitDate: Wed Feb 13 10:03:56 2019 -0500 Update logic for sysroot in detected implicit include directories Since commit 5990ecb741 (Compute implicit include directories from compiler output, 2018-12-07, v3.14.0-rc1~108^2) the values of the `CMAKE__IMPLICIT_INCLUDE_DIRECTORIES` variables are computed from a real compiler invocation. In this case the paths under the sysroot should already have the sysroot prefix so we should no longer have to add the sysroot prefix. However, it is also possible for project code to add its own paths to `CMAKE__IMPLICIT_INCLUDE_DIRECTORIES` without the sysroot prefix and expect the historical addition of the sysroot prefix to be preserved. Try to account for both cases by conditionally adding the sysroot prefix on implicit include directories that do not already have it. diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index b1115ea..8090e00 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -935,6 +935,7 @@ std::vector> cmLocalGenerator::GetIncludeDirectoriesImplicit( } else { rootPath = this->Makefile->GetSafeDefinition("CMAKE_SYSROOT"); } + cmSystemTools::ConvertToUnixSlashes(rootPath); // Raw list of implicit include directories std::vector impDirVec; @@ -964,8 +965,11 @@ std::vector> cmLocalGenerator::GetIncludeDirectoriesImplicit( } for (std::string const& i : impDirVec) { - std::string imd = rootPath + i; + std::string imd = i; cmSystemTools::ConvertToUnixSlashes(imd); + if (!rootPath.empty() && !cmHasPrefix(imd, rootPath)) { + imd = rootPath + imd; + } if (implicitSet.insert(imd).second) { implicitDirs.emplace_back(std::move(imd)); } https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2ad14ef4ea57c19f6cb4ed365e99a30be81eefe7 commit 2ad14ef4ea57c19f6cb4ed365e99a30be81eefe7 Author: Brad King AuthorDate: Wed Feb 13 09:22:41 2019 -0500 Commit: Brad King CommitDate: Wed Feb 13 09:52:20 2019 -0500 cmAlgorithms: Add cmHasPrefix to match existing cmHasSuffix diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h index 9e3efd3..d38b0d1 100644 --- a/Source/cmAlgorithms.h +++ b/Source/cmAlgorithms.h @@ -336,6 +336,14 @@ std::reverse_iterator cmMakeReverseIterator(Iter it) return std::reverse_iterator(it); } +inline bool cmHasPrefix(std::string const& str, std::string const& prefix) +{ + if (str.size() < prefix.size()) { + return false; + } + return str.compare(0, prefix.size(), prefix) == 0; +} + inline bool cmHasSuffix(const std::string& str, const std::string& suffix) { if (str.size() < suffix.size()) { https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=557b2d6e65038640d5016413e612e48691cff0d8 commit 557b2d6e65038640d5016413e612e48691cff0d8 Author: Brad King AuthorDate: Wed Feb 13 09:23:31 2019 -0500 Commit: Brad King CommitDate: Wed Feb 13 09:52:20 2019 -0500 Fix regression in -I/usr/include exclusion logic The change in commit 15ad830062 (Refactor exclusion of -I/usr/include to avoid per-language values, 2019-01-21, v3.14.0-rc1~108^2~4) caused the exclusion to apply to Fortran, but it was only meant for C, CXX, and CUDA. The purpose of the change was to prepare for the value of `CMAKE__IMPLICIT_INCLUDE_DIRECTORIES` to be computed from the actual compiler instead of hard-coded. We need to preserve exclusion of `-I/usr/include` if the compiler has any implicit include directory that looks intended to replace it, e.g. `/usr/include` on macOS. Fixes: #18914 diff --git a/Modules/Platform/UnixPaths.cmake b/Modules/Platform/UnixPaths.cmake index 4ae4514..46c24bb 100644 --- a/Modules/Platform/UnixPaths.cmake +++ b/Modules/Platform/UnixPaths.cmake @@ -63,11 +63,6 @@ list(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES /lib /lib32 /lib64 /usr/lib /usr/lib32 /usr/lib64 ) -# Platform-wide directories to avoid adding via -I. -list(APPEND CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES - /usr/include - ) - # Default per-language values. These may be later replaced after # parsing the implicit directory information from compiler output. set(_CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES_INIT diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 252aa4c..b1115ea 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -939,12 +939,6 @@ std::vector> cmLocalGenerator::GetIncludeDirectoriesImplicit( // Raw list of implicit include directories std::vector impDirVec; - // Get platform-wide implicit directories. - if (const char* implicitIncludes = (this->Makefile->GetDefinition( - "CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES"))) { - cmSystemTools::ExpandListArgument(implicitIncludes, impDirVec); - } - // Load implicit include directories for this language. std::string key = "CMAKE_"; key += lang; @@ -953,6 +947,22 @@ std::vector> cmLocalGenerator::GetIncludeDirectoriesImplicit( cmSystemTools::ExpandListArgument(value, impDirVec); } + // The Platform/UnixPaths module used to hard-code /usr/include for C, CXX, + // and CUDA in CMAKE__IMPLICIT_INCLUDE_DIRECTORIES, but those + // variables are now computed. On macOS the /usr/include directory is + // inside the platform SDK so the computed value does not contain it + // directly. In this case adding -I/usr/include can hide SDK headers so we + // must still exclude it. + if ((lang == "C" || lang == "CXX" || lang == "CUDA") && + std::find(impDirVec.begin(), impDirVec.end(), "/usr/include") == + impDirVec.end() && + std::find_if(impDirVec.begin(), impDirVec.end(), + [](std::string const& d) { + return cmHasLiteralSuffix(d, "/usr/include"); + }) != impDirVec.end()) { + impDirVec.emplace_back("/usr/include"); + } + for (std::string const& i : impDirVec) { std::string imd = rootPath + i; cmSystemTools::ConvertToUnixSlashes(imd); https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=017598a4443c19185dc245f3f0fcfceff9b98463 commit 017598a4443c19185dc245f3f0fcfceff9b98463 Author: Brad King AuthorDate: Wed Feb 13 09:45:36 2019 -0500 Commit: Brad King CommitDate: Wed Feb 13 09:52:19 2019 -0500 macOS: Fix addition of /usr/include to default implicit include dirs In commit 1293ed8507 (ParseImplicitIncludeInfo: keep implicit incl. consistent when rerunning cmake, 2019-01-30, v3.14.0-rc1~26^2) the `Platform/UnixPaths` module was updated to add `/usr/include` to `CMAKE_{C,CXX,CUDA}_IMPLICIT_INCLUDE_DIRECTORIES` through an initialization variable used by `CMakeDetermineCompilerABI` instead of directly. This approach makes it only a default that can be overridden by detection of the implicit include directories really used by the compiler. The addition of `/usr/include` to default implicit include directories by the `Platform/Darwin` module needs the same update but was accidentally left out of the original commit. diff --git a/Modules/Platform/Darwin.cmake b/Modules/Platform/Darwin.cmake index a73ffba..5590433 100644 --- a/Modules/Platform/Darwin.cmake +++ b/Modules/Platform/Darwin.cmake @@ -214,7 +214,7 @@ include(Platform/UnixPaths) if(_CMAKE_OSX_SYSROOT_PATH AND EXISTS ${_CMAKE_OSX_SYSROOT_PATH}/usr/include) list(APPEND CMAKE_SYSTEM_PREFIX_PATH ${_CMAKE_OSX_SYSROOT_PATH}/usr) foreach(lang C CXX) - list(APPEND CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES ${_CMAKE_OSX_SYSROOT_PATH}/usr/include) + list(APPEND _CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES_INIT ${_CMAKE_OSX_SYSROOT_PATH}/usr/include) endforeach() endif() list(APPEND CMAKE_SYSTEM_PREFIX_PATH ----------------------------------------------------------------------- Summary of changes: Modules/Platform/Darwin.cmake | 2 +- Modules/Platform/UnixPaths.cmake | 5 ----- Source/LexerParser/cmListFileLexer.c | 2 +- Source/LexerParser/cmListFileLexer.in.l | 2 +- Source/cmAlgorithms.h | 8 ++++++++ Source/cmLocalGenerator.cxx | 28 +++++++++++++++++++++------- 6 files changed, 32 insertions(+), 15 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 14 10:33:03 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 14 Feb 2019 10:33:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-100-g0069825 Message-ID: <20190214153303.34869C0F51@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 0069825f50c83b8144374150dd682d48c84f6874 (commit) via d80ecba5c27ec249dc85c3a3559db822ef320d05 (commit) via 72057d9c1582f4b6dec66cd0675860c4c335636e (commit) via 7ae329e2ed84f62165cb11794ad85c6c43dbd7dc (commit) from 50ba2f019baa3e5487a975cb72059f1fc178f9d0 (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=0069825f50c83b8144374150dd682d48c84f6874 commit 0069825f50c83b8144374150dd682d48c84f6874 Merge: 50ba2f0 d80ecba Author: Brad King AuthorDate: Thu Feb 14 15:25:08 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 14 10:25:15 2019 -0500 Merge topic 'fortran-submodule-names' d80ecba5c2 Fortran: Fix submodule file names across compilers 72057d9c15 Fortran: Thread compiler id through to internal Fortran parser 7ae329e2ed Fortran: Factor out .mod and .smod file name construction Acked-by: Kitware Robot Acked-by: Michael Hirsch, Ph.D. Merge-request: !2958 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d80ecba5c27ec249dc85c3a3559db822ef320d05 commit d80ecba5c27ec249dc85c3a3559db822ef320d05 Author: Brad King AuthorDate: Wed Feb 13 14:08:34 2019 -0500 Commit: Brad King CommitDate: Thu Feb 14 10:23:02 2019 -0500 Fortran: Fix submodule file names across compilers The naming convention for submodule files varies across compilers. Add a table to the compiler information modules and thread the information through to the Fortran module dependency parser. Fill out the table for compiler ids known to support Fortran submodules. Fixes: #18746 diff --git a/Modules/Compiler/Flang-Fortran.cmake b/Modules/Compiler/Flang-Fortran.cmake index d522739..f0e61d8 100644 --- a/Modules/Compiler/Flang-Fortran.cmake +++ b/Modules/Compiler/Flang-Fortran.cmake @@ -1,6 +1,9 @@ include(Compiler/Clang) __compiler_clang(Fortran) +set(CMAKE_Fortran_SUBMODULE_SEP "-") +set(CMAKE_Fortran_SUBMODULE_EXT ".mod") + set(CMAKE_Fortran_PREPROCESS_SOURCE " -cpp -E > ") diff --git a/Modules/Compiler/GNU-Fortran.cmake b/Modules/Compiler/GNU-Fortran.cmake index c333d50..6413769 100644 --- a/Modules/Compiler/GNU-Fortran.cmake +++ b/Modules/Compiler/GNU-Fortran.cmake @@ -1,6 +1,9 @@ include(Compiler/GNU) __compiler_gnu(Fortran) +set(CMAKE_Fortran_SUBMODULE_SEP "@") +set(CMAKE_Fortran_SUBMODULE_EXT ".smod") + set(CMAKE_Fortran_PREPROCESS_SOURCE " -cpp -E -o ") diff --git a/Modules/Compiler/Intel-Fortran.cmake b/Modules/Compiler/Intel-Fortran.cmake index a132055..5275ddf 100644 --- a/Modules/Compiler/Intel-Fortran.cmake +++ b/Modules/Compiler/Intel-Fortran.cmake @@ -1,6 +1,9 @@ include(Compiler/Intel) __compiler_intel(Fortran) +set(CMAKE_Fortran_SUBMODULE_SEP "@") +set(CMAKE_Fortran_SUBMODULE_EXT ".smod") + set(CMAKE_Fortran_MODDIR_FLAG "-module ") set(CMAKE_Fortran_FORMAT_FIXED_FLAG "-fixed") set(CMAKE_Fortran_FORMAT_FREE_FLAG "-free") diff --git a/Modules/Compiler/PGI-Fortran.cmake b/Modules/Compiler/PGI-Fortran.cmake index a183c33..3daf798 100644 --- a/Modules/Compiler/PGI-Fortran.cmake +++ b/Modules/Compiler/PGI-Fortran.cmake @@ -1,6 +1,9 @@ include(Compiler/PGI) __compiler_pgi(Fortran) +set(CMAKE_Fortran_SUBMODULE_SEP "-") +set(CMAKE_Fortran_SUBMODULE_EXT ".mod") + set(CMAKE_Fortran_PREPROCESS_SOURCE " -Mpreprocess -E > ") diff --git a/Modules/Compiler/XL-Fortran.cmake b/Modules/Compiler/XL-Fortran.cmake index 6bab6f6..c4fb097 100644 --- a/Modules/Compiler/XL-Fortran.cmake +++ b/Modules/Compiler/XL-Fortran.cmake @@ -1,6 +1,9 @@ include(Compiler/XL) __compiler_xl(Fortran) +set(CMAKE_Fortran_SUBMODULE_SEP "_") +set(CMAKE_Fortran_SUBMODULE_EXT ".smod") + set(CMAKE_Fortran_FORMAT_FIXED_FLAG "-qfixed") # [=] set(CMAKE_Fortran_FORMAT_FREE_FLAG "-qfree") # [=f90|ibm] diff --git a/Source/cmDependsFortran.cxx b/Source/cmDependsFortran.cxx index fe69d14..3f036a9 100644 --- a/Source/cmDependsFortran.cxx +++ b/Source/cmDependsFortran.cxx @@ -96,6 +96,8 @@ cmDependsFortran::cmDependsFortran(cmLocalGenerator* lg) } this->CompilerId = mf->GetSafeDefinition("CMAKE_Fortran_COMPILER_ID"); + this->SModSep = mf->GetSafeDefinition("CMAKE_Fortran_SUBMODULE_SEP"); + this->SModExt = mf->GetSafeDefinition("CMAKE_Fortran_SUBMODULE_EXT"); } cmDependsFortran::~cmDependsFortran() @@ -120,6 +122,8 @@ bool cmDependsFortran::WriteDependencies(const std::set& sources, cmFortranCompiler fc; fc.Id = this->CompilerId; + fc.SModSep = this->SModSep; + fc.SModExt = this->SModExt; bool okay = true; for (std::string const& src : sources) { diff --git a/Source/cmDependsFortran.h b/Source/cmDependsFortran.h index f2d9cf2..0485115 100644 --- a/Source/cmDependsFortran.h +++ b/Source/cmDependsFortran.h @@ -78,6 +78,8 @@ protected: std::string SourceFile; std::string CompilerId; + std::string SModSep; + std::string SModExt; std::set PPDefinitions; diff --git a/Source/cmFortranParser.h b/Source/cmFortranParser.h index 3fbf552..0762340 100644 --- a/Source/cmFortranParser.h +++ b/Source/cmFortranParser.h @@ -131,6 +131,8 @@ struct cmFortranFile struct cmFortranCompiler { std::string Id; + std::string SModSep; + std::string SModExt; }; struct cmFortranParser_s diff --git a/Source/cmFortranParserImpl.cxx b/Source/cmFortranParserImpl.cxx index 8787206..18e3c10 100644 --- a/Source/cmFortranParserImpl.cxx +++ b/Source/cmFortranParserImpl.cxx @@ -79,7 +79,7 @@ std::string cmFortranParser_s::ModName(std::string const& mod_name) const std::string cmFortranParser_s::SModName(std::string const& mod_name, std::string const& sub_name) const { - return mod_name + "@" + sub_name + ".smod"; + return mod_name + this->Compiler.SModSep + sub_name + this->Compiler.SModExt; } bool cmFortranParser_FilePush(cmFortranParser* parser, const char* fname) diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index f5262f0..920f639 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -1704,6 +1704,12 @@ int cmcmd_cmake_ninja_depends(std::vector::const_iterator argBeg, Json::Value const& tdi_compiler_id = tdi["compiler-id"]; fc.Id = tdi_compiler_id.asString(); + + Json::Value const& tdi_submodule_sep = tdi["submodule-sep"]; + fc.SModSep = tdi_submodule_sep.asString(); + + Json::Value const& tdi_submodule_ext = tdi["submodule-ext"]; + fc.SModExt = tdi_submodule_ext.asString(); } cmFortranSourceInfo info; diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index d6f71d3..7eb4a03 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -1808,6 +1808,17 @@ void cmLocalUnixMakefileGenerator3::WriteDependLanguageInfo( << "_COMPILER_ID \"" << cid << "\")\n"; } + if (implicitLang.first == "Fortran") { + std::string smodSep = + this->Makefile->GetSafeDefinition("CMAKE_Fortran_SUBMODULE_SEP"); + std::string smodExt = + this->Makefile->GetSafeDefinition("CMAKE_Fortran_SUBMODULE_EXT"); + cmakefileStream << "set(CMAKE_Fortran_SUBMODULE_SEP \"" << smodSep + << "\")\n"; + cmakefileStream << "set(CMAKE_Fortran_SUBMODULE_EXT \"" << smodExt + << "\")\n"; + } + // Build a list of preprocessor definitions for the target. std::set defines; this->GetTargetDefines(target, this->ConfigName, implicitLang.first, diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 5d76dc2..82bc5f2 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -1144,6 +1144,10 @@ void cmNinjaTargetGenerator::WriteTargetDependInfo(std::string const& lang) mod_dir = this->Makefile->GetCurrentBinaryDirectory(); } tdi["module-dir"] = mod_dir; + tdi["submodule-sep"] = + this->Makefile->GetSafeDefinition("CMAKE_Fortran_SUBMODULE_SEP"); + tdi["submodule-ext"] = + this->Makefile->GetSafeDefinition("CMAKE_Fortran_SUBMODULE_EXT"); } tdi["dir-cur-bld"] = this->Makefile->GetCurrentBinaryDirectory(); https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=72057d9c1582f4b6dec66cd0675860c4c335636e commit 72057d9c1582f4b6dec66cd0675860c4c335636e Author: Brad King AuthorDate: Wed Feb 13 13:34:56 2019 -0500 Commit: Brad King CommitDate: Thu Feb 14 10:23:02 2019 -0500 Fortran: Thread compiler id through to internal Fortran parser diff --git a/Source/cmDependsFortran.cxx b/Source/cmDependsFortran.cxx index cae3ff6..fe69d14 100644 --- a/Source/cmDependsFortran.cxx +++ b/Source/cmDependsFortran.cxx @@ -94,6 +94,8 @@ cmDependsFortran::cmDependsFortran(cmLocalGenerator* lg) } this->PPDefinitions.insert(def); } + + this->CompilerId = mf->GetSafeDefinition("CMAKE_Fortran_COMPILER_ID"); } cmDependsFortran::~cmDependsFortran() @@ -116,6 +118,9 @@ bool cmDependsFortran::WriteDependencies(const std::set& sources, return false; } + cmFortranCompiler fc; + fc.Id = this->CompilerId; + bool okay = true; for (std::string const& src : sources) { // Get the information object for this source. @@ -123,7 +128,7 @@ bool cmDependsFortran::WriteDependencies(const std::set& sources, // Create the parser object. The constructor takes info by reference, // so we may look into the resulting objects later. - cmFortranParser parser(this->IncludePath, this->PPDefinitions, info); + cmFortranParser parser(fc, this->IncludePath, this->PPDefinitions, info); // Push on the starting file. cmFortranParser_FilePush(&parser, src.c_str()); diff --git a/Source/cmDependsFortran.h b/Source/cmDependsFortran.h index bf09904..f2d9cf2 100644 --- a/Source/cmDependsFortran.h +++ b/Source/cmDependsFortran.h @@ -77,6 +77,8 @@ protected: // The source file from which to start scanning. std::string SourceFile; + std::string CompilerId; + std::set PPDefinitions; // Internal implementation details. diff --git a/Source/cmFortranParser.h b/Source/cmFortranParser.h index cc5c113..3fbf552 100644 --- a/Source/cmFortranParser.h +++ b/Source/cmFortranParser.h @@ -128,9 +128,14 @@ struct cmFortranFile bool LastCharWasNewline; }; +struct cmFortranCompiler +{ + std::string Id; +}; + struct cmFortranParser_s { - cmFortranParser_s(std::vector includes, + cmFortranParser_s(cmFortranCompiler fc, std::vector includes, std::set defines, cmFortranSourceInfo& info); ~cmFortranParser_s(); @@ -141,6 +146,9 @@ struct cmFortranParser_s std::string SModName(std::string const& mod_name, std::string const& sub_name) const; + // What compiler. + cmFortranCompiler Compiler; + // The include file search path. std::vector IncludePath; diff --git a/Source/cmFortranParserImpl.cxx b/Source/cmFortranParserImpl.cxx index 7b0c1a9..8787206 100644 --- a/Source/cmFortranParserImpl.cxx +++ b/Source/cmFortranParserImpl.cxx @@ -43,10 +43,12 @@ bool cmFortranParser_s::FindIncludeFile(const char* dir, return false; } -cmFortranParser_s::cmFortranParser_s(std::vector includes, +cmFortranParser_s::cmFortranParser_s(cmFortranCompiler fc, + std::vector includes, std::set defines, cmFortranSourceInfo& info) - : IncludePath(std::move(includes)) + : Compiler(std::move(fc)) + , IncludePath(std::move(includes)) , PPDefinitions(std::move(defines)) , Info(info) { diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 6498024..f5262f0 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -1679,6 +1679,7 @@ int cmcmd_cmake_ninja_depends(std::vector::const_iterator argBeg, return 1; } + cmFortranCompiler fc; std::vector includes; { Json::Value tdio; @@ -1700,11 +1701,14 @@ int cmcmd_cmake_ninja_depends(std::vector::const_iterator argBeg, includes.push_back(tdi_include_dir.asString()); } } + + Json::Value const& tdi_compiler_id = tdi["compiler-id"]; + fc.Id = tdi_compiler_id.asString(); } cmFortranSourceInfo info; std::set defines; - cmFortranParser parser(includes, defines, info); + cmFortranParser parser(fc, includes, defines, info); if (!cmFortranParser_FilePush(&parser, arg_pp.c_str())) { cmSystemTools::Error("-E cmake_ninja_depends failed to open ", arg_pp.c_str()); https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7ae329e2ed84f62165cb11794ad85c6c43dbd7dc commit 7ae329e2ed84f62165cb11794ad85c6c43dbd7dc Author: Brad King AuthorDate: Wed Feb 13 13:42:51 2019 -0500 Commit: Brad King CommitDate: Thu Feb 14 10:23:02 2019 -0500 Fortran: Factor out .mod and .smod file name construction diff --git a/Source/cmFortranParser.h b/Source/cmFortranParser.h index 8d4c90b..cc5c113 100644 --- a/Source/cmFortranParser.h +++ b/Source/cmFortranParser.h @@ -137,6 +137,10 @@ struct cmFortranParser_s bool FindIncludeFile(const char* dir, const char* includeName, std::string& fileName); + std::string ModName(std::string const& mod_name) const; + std::string SModName(std::string const& mod_name, + std::string const& sub_name) const; + // The include file search path. std::vector IncludePath; diff --git a/Source/cmFortranParserImpl.cxx b/Source/cmFortranParserImpl.cxx index 45481a4..7b0c1a9 100644 --- a/Source/cmFortranParserImpl.cxx +++ b/Source/cmFortranParserImpl.cxx @@ -69,6 +69,17 @@ cmFortranParser_s::~cmFortranParser_s() cmFortran_yylex_destroy(this->Scanner); } +std::string cmFortranParser_s::ModName(std::string const& mod_name) const +{ + return mod_name + ".mod"; +} + +std::string cmFortranParser_s::SModName(std::string const& mod_name, + std::string const& sub_name) const +{ + return mod_name + "@" + sub_name + ".smod"; +} + bool cmFortranParser_FilePush(cmFortranParser* parser, const char* fname) { // Open the new file and push it onto the stack. Save the old @@ -178,7 +189,7 @@ void cmFortranParser_RuleUse(cmFortranParser* parser, const char* module_name) // syntax: "use module_name" // requires: "module_name.mod" std::string const& mod_name = cmSystemTools::LowerCase(module_name); - parser->Info.Requires.insert(mod_name + ".mod"); + parser->Info.Requires.insert(parser->ModName(mod_name)); } void cmFortranParser_RuleLineDirective(cmFortranParser* parser, @@ -242,7 +253,7 @@ void cmFortranParser_RuleModule(cmFortranParser* parser, // syntax: "module module_name" // provides: "module_name.mod" std::string const& mod_name = cmSystemTools::LowerCase(module_name); - parser->Info.Provides.insert(mod_name + ".mod"); + parser->Info.Provides.insert(parser->ModName(mod_name)); } } @@ -265,8 +276,8 @@ void cmFortranParser_RuleSubmodule(cmFortranParser* parser, std::string const& mod_name = cmSystemTools::LowerCase(module_name); std::string const& sub_name = cmSystemTools::LowerCase(submodule_name); - parser->Info.Requires.insert(mod_name + ".mod"); - parser->Info.Provides.insert(mod_name + "@" + sub_name + ".smod"); + parser->Info.Requires.insert(parser->ModName(mod_name)); + parser->Info.Provides.insert(parser->SModName(mod_name, sub_name)); } void cmFortranParser_RuleSubmoduleNested(cmFortranParser* parser, @@ -286,8 +297,8 @@ void cmFortranParser_RuleSubmoduleNested(cmFortranParser* parser, std::string const& sub_name = cmSystemTools::LowerCase(submodule_name); std::string const& nest_name = cmSystemTools::LowerCase(nested_submodule_name); - parser->Info.Requires.insert(mod_name + "@" + sub_name + ".smod"); - parser->Info.Provides.insert(mod_name + "@" + nest_name + ".smod"); + parser->Info.Requires.insert(parser->SModName(mod_name, sub_name)); + parser->Info.Provides.insert(parser->SModName(mod_name, nest_name)); } void cmFortranParser_RuleDefine(cmFortranParser* parser, const char* macro) ----------------------------------------------------------------------- Summary of changes: Modules/Compiler/Flang-Fortran.cmake | 3 +++ Modules/Compiler/GNU-Fortran.cmake | 3 +++ Modules/Compiler/Intel-Fortran.cmake | 3 +++ Modules/Compiler/PGI-Fortran.cmake | 3 +++ Modules/Compiler/XL-Fortran.cmake | 3 +++ Source/cmDependsFortran.cxx | 11 ++++++++++- Source/cmDependsFortran.h | 4 ++++ Source/cmFortranParser.h | 16 +++++++++++++++- Source/cmFortranParserImpl.cxx | 29 +++++++++++++++++++++-------- Source/cmGlobalNinjaGenerator.cxx | 12 +++++++++++- Source/cmLocalUnixMakefileGenerator3.cxx | 11 +++++++++++ Source/cmNinjaTargetGenerator.cxx | 4 ++++ 12 files changed, 91 insertions(+), 11 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 14 10:43:02 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 14 Feb 2019 10:43:02 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-104-ge3353a0 Message-ID: <20190214154302.C6D5EFC113@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 e3353a0175fb27bc2967c3df78b8be1c0615b21d (commit) via 2f51f281a8c9684c25cf97499a4382e1b5ae68b9 (commit) via 9f351b93ab7684940ad2da14fd6800f11f09355f (commit) via 30783addc12d82081575f5a7577d7b4953cbd55c (commit) from 0069825f50c83b8144374150dd682d48c84f6874 (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=e3353a0175fb27bc2967c3df78b8be1c0615b21d commit e3353a0175fb27bc2967c3df78b8be1c0615b21d Merge: 0069825 2f51f28 Author: Brad King AuthorDate: Thu Feb 14 10:35:22 2019 -0500 Commit: Brad King CommitDate: Thu Feb 14 10:35:22 2019 -0500 Merge branch 'release-3.14' ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 14 10:43:02 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 14 Feb 2019 10:43:02 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.14.0-rc1-29-g2f51f28 Message-ID: <20190214154302.E70C911352F@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 2f51f281a8c9684c25cf97499a4382e1b5ae68b9 (commit) via d80ecba5c27ec249dc85c3a3559db822ef320d05 (commit) via 72057d9c1582f4b6dec66cd0675860c4c335636e (commit) via 7ae329e2ed84f62165cb11794ad85c6c43dbd7dc (commit) via 9f351b93ab7684940ad2da14fd6800f11f09355f (commit) via 76a5ac210050e0c1ccdce8ce89a0c77579e30187 (commit) via 30783addc12d82081575f5a7577d7b4953cbd55c (commit) via 6fc33829443ea3ef2dc8cc71c0a98b635bec6179 (commit) via 2ad14ef4ea57c19f6cb4ed365e99a30be81eefe7 (commit) via 557b2d6e65038640d5016413e612e48691cff0d8 (commit) via 017598a4443c19185dc245f3f0fcfceff9b98463 (commit) from 1c4570e22eb7fcf312426e4e1fb0db0c2a3d5d33 (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/Compiler/Flang-Fortran.cmake | 3 +++ Modules/Compiler/GNU-Fortran.cmake | 3 +++ Modules/Compiler/Intel-Fortran.cmake | 3 +++ Modules/Compiler/PGI-Fortran.cmake | 3 +++ Modules/Compiler/XL-Fortran.cmake | 3 +++ Modules/Platform/Darwin.cmake | 2 +- Modules/Platform/UnixPaths.cmake | 5 ----- Source/LexerParser/cmListFileLexer.c | 2 +- Source/LexerParser/cmListFileLexer.in.l | 2 +- Source/cmAlgorithms.h | 8 ++++++++ Source/cmDependsFortran.cxx | 11 ++++++++++- Source/cmDependsFortran.h | 4 ++++ Source/cmFortranParser.h | 16 +++++++++++++++- Source/cmFortranParserImpl.cxx | 29 +++++++++++++++++++++-------- Source/cmGlobalNinjaGenerator.cxx | 12 +++++++++++- Source/cmLocalGenerator.cxx | 28 +++++++++++++++++++++------- Source/cmLocalUnixMakefileGenerator3.cxx | 11 +++++++++++ Source/cmNinjaTargetGenerator.cxx | 4 ++++ 18 files changed, 123 insertions(+), 26 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 14 11:03:03 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 14 Feb 2019 11:03:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-109-g8c4de81 Message-ID: <20190214160303.385931A77@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 8c4de819449bbb1710b1cc2440357757e5cb757c (commit) via a40864ae53ad22c369596699cc1bb791f65dc360 (commit) via 724359489e03c1c890bea4bc6ba71ca353b048b9 (commit) via 6ed4ae4bad3bf3e226e0c8009f9b4057707cfc21 (commit) via fedbd16f352a8202d30332228ca586a69b513c89 (commit) from e3353a0175fb27bc2967c3df78b8be1c0615b21d (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=8c4de819449bbb1710b1cc2440357757e5cb757c commit 8c4de819449bbb1710b1cc2440357757e5cb757c Merge: e3353a0 a40864a Author: Brad King AuthorDate: Thu Feb 14 16:01:34 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 14 11:01:42 2019 -0500 Merge topic 'autogen_refactor_rerun_tests' a40864ae53 Autogen: Refactor RerunRccDepends test with fixed timestamp comparison 724359489e Autogen: Refactor RerunRccConfigChange test 6ed4ae4bad Autogen: Refactor RerunMocBasic test with fixed timestamp comparison fedbd16f35 Autogen: Refactor RerunMocPlugin test with fixed timestamp comparison Acked-by: Kitware Robot Merge-request: !2959 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a40864ae53ad22c369596699cc1bb791f65dc360 commit a40864ae53ad22c369596699cc1bb791f65dc360 Author: Sebastian Holtermann AuthorDate: Wed Feb 13 21:08:49 2019 +0100 Commit: Sebastian Holtermann CommitDate: Wed Feb 13 23:01:46 2019 +0100 Autogen: Refactor RerunRccDepends test with fixed timestamp comparison This refactors and simplifies the QtAutogen.RerunRccDepends test. Repetitive task are packed into macros. By using version strings to store file timestamps, timestamp comparison becomes more reliable. Test status and error messages are improved. diff --git a/Tests/QtAutogen/RerunRccDepends/CMakeLists.txt b/Tests/QtAutogen/RerunRccDepends/CMakeLists.txt index 80c5cf0..1301550 100644 --- a/Tests/QtAutogen/RerunRccDepends/CMakeLists.txt +++ b/Tests/QtAutogen/RerunRccDepends/CMakeLists.txt @@ -3,19 +3,63 @@ project(RerunRccDepends) include("../AutogenCoreTest.cmake") # Tests rcc rebuilding when a resource file changes +# When a .qrc or a file listed in a .qrc file changes, +# the target must be rebuilt # Dummy executable to generate a clean target add_executable(dummy dummy.cpp) -# When a .qrc or a file listed in a .qrc file changes, -# the target must be rebuilt -set(timeformat "%Y%j%H%M%S") +# Utility variables +set(timeformat "%Y.%j.%H.%M%S") set(rccDepSD "${CMAKE_CURRENT_SOURCE_DIR}/RccDepends") set(rccDepBD "${CMAKE_CURRENT_BINARY_DIR}/RccDepends") -# Initial build +# Utility macros +macro(sleep) + message(STATUS "Sleeping for a few seconds.") + execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) +endmacro() + +macro(acquire_timestamps When) + file(TIMESTAMP "${rccDepBinPlain}" rdPlain${When} "${timeformat}") + file(TIMESTAMP "${rccDepBinGenerated}" rdGenerated${When} "${timeformat}") +endmacro() + +macro(rebuild buildName) + message(STATUS "Starting build ${buildName} of rccDepends.") + execute_process( + COMMAND "${CMAKE_COMMAND}" --build . + WORKING_DIRECTORY "${rccDepBD}" + RESULT_VARIABLE result) + if (result) + message(FATAL_ERROR "Build ${buildName} of rccDepends failed.") + else() + message(STATUS "Build ${buildName} of rccDepends finished.") + endif() +endmacro() + +macro(require_change type) + if (rd${type}After VERSION_GREATER rd${type}Before) + message(STATUS "As expected the ${type} .qrc file ${rccDepBin${type}} changed.") + else() + message(SEND_ERROR "Unexpectedly the ${type} .qrc file ${rccDepBin${type}} did not change!\nTimestamp pre: ${rd${type}Before}\nTimestamp aft: ${rd${type}After}\n") + endif() +endmacro() + +macro(require_change_not type) + if (rd${type}After VERSION_GREATER rd${type}Before) + message(SEND_ERROR "Unexpectedly the ${type} .qrc file ${rccDepBin${type}} changed!\nTimestamp pre: ${rd${type}Before}\nTimestamp aft: ${rd${type}After}\n") + else() + message(STATUS "As expected the ${type} .qrc file ${rccDepBin${type}} did not change.") + endif() +endmacro() + + +# Initial configuration configure_file(${rccDepSD}/resPlainA.qrc.in ${rccDepBD}/resPlain.qrc COPYONLY) configure_file(${rccDepSD}/resGenA.qrc.in ${rccDepBD}/resGen.qrc.in COPYONLY) + +# Initial build try_compile(RCC_DEPENDS "${rccDepBD}" "${rccDepSD}" @@ -26,113 +70,84 @@ try_compile(RCC_DEPENDS OUTPUT_VARIABLE output ) if (NOT RCC_DEPENDS) - message(SEND_ERROR "Initial build of rccDepends failed. Output: ${output}") + message(FATAL_ERROR "Initial build of rccDepends failed. Output: ${output}") endif() # Get name of the output binaries file(STRINGS "${rccDepBD}/targetPlain.txt" targetListPlain ENCODING UTF-8) file(STRINGS "${rccDepBD}/targetGen.txt" targetListGen ENCODING UTF-8) list(GET targetListPlain 0 rccDepBinPlain) -list(GET targetListGen 0 rccDepBinGen) -message("Target that uses a plain .qrc file is:\n ${rccDepBinPlain}") -message("Target that uses a GENERATED .qrc file is:\n ${rccDepBinGen}") +list(GET targetListGen 0 rccDepBinGenerated) +message(STATUS "Target that uses a plain .qrc file is:\n ${rccDepBinPlain}") +message(STATUS "Target that uses a GENERATED .qrc file is:\n ${rccDepBinGenerated}") + +# To avoid a race condition where the binary has the same timestamp +# as a source file and therefore gets rebuild +# - sleep to ensure a timestamp change +# - touch binary to ensure it has a new timestamp +acquire_timestamps(Before) +sleep() +message(STATUS "Touching binary files to ensure new timestamps") +file(TOUCH_NOCREATE "${rccDepBinPlain}" "${rccDepBinGenerated}") +acquire_timestamps(After) +require_change(Plain) +require_change(Generated) -message("Changing a resource files listed in the .qrc file") -# - Acquire binary timestamps before the build -file(TIMESTAMP "${rccDepBinPlain}" rdPlainBefore "${timeformat}") -file(TIMESTAMP "${rccDepBinGen}" rdGenBefore "${timeformat}") # - Ensure that the timestamp will change # - Change a resource files listed in the .qrc file # - Rebuild -execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) +acquire_timestamps(Before) +sleep() +message(STATUS "Changing a resource file listed in the .qrc file") 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.") -endif() -# - Acquire binary timestamps after the build -file(TIMESTAMP "${rccDepBinPlain}" rdPlainAfter "${timeformat}") -file(TIMESTAMP "${rccDepBinGen}" rdGenAfter "${timeformat}") +sleep() +rebuild(2) +acquire_timestamps(After) # - Test if timestamps changed -if (NOT rdPlainAfter GREATER rdPlainBefore) - message(SEND_ERROR "Plain .qrc binary ${rccDepBinPlain}) should have changed!") -endif() -if (NOT rdGenAfter GREATER rdGenBefore) - message(SEND_ERROR "GENERATED .qrc binary ${rccDepBinGen} should have changed!") -endif() +require_change(Plain) +require_change(Generated) -message("Changing the .qrc file") -# - Acquire binary timestamps before the build -file(TIMESTAMP "${rccDepBinPlain}" rdPlainBefore "${timeformat}") -file(TIMESTAMP "${rccDepBinGen}" rdGenBefore "${timeformat}") # - Ensure that the timestamp will change # - Change the .qrc file # - Rebuild -execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) +acquire_timestamps(Before) +sleep() +message(STATUS "Changing the .qrc file") configure_file(${rccDepSD}/resPlainB.qrc.in ${rccDepBD}/resPlain.qrc COPYONLY) configure_file(${rccDepSD}/resGenB.qrc.in ${rccDepBD}/resGen.qrc.in COPYONLY) -execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${rccDepBD}" RESULT_VARIABLE result) -if (result) - message(SEND_ERROR "Third build of rccDepends failed.") -endif() -# - Acquire binary timestamps after the build -file(TIMESTAMP "${rccDepBinPlain}" rdPlainAfter "${timeformat}") -file(TIMESTAMP "${rccDepBinGen}" rdGenAfter "${timeformat}") +sleep() +rebuild(3) +acquire_timestamps(After) # - Test if timestamps changed -if (NOT rdPlainAfter GREATER rdPlainBefore) - message(SEND_ERROR "Plain .qrc binary ${rccDepBinPlain}) should have changed!") -endif() -if (NOT rdGenAfter GREATER rdGenBefore) - message(SEND_ERROR "GENERATED .qrc binary ${rccDepBinGen} should have changed!") -endif() +require_change(Plain) +require_change(Generated) -message("Changing a newly added resource files listed in the .qrc file") -# - Acquire binary timestamps before the build -file(TIMESTAMP "${rccDepBinPlain}" rdPlainBefore "${timeformat}") -file(TIMESTAMP "${rccDepBinGen}" rdGenBefore "${timeformat}") # - Ensure that the timestamp will change # - Change a newly added resource files listed in the .qrc file # - Rebuild -execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) +acquire_timestamps(Before) +sleep() +message(STATUS "Changing a newly added resource file listed in the .qrc file") 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.") -endif() -# - Acquire binary timestamps after the build -file(TIMESTAMP "${rccDepBinPlain}" rdPlainAfter "${timeformat}") -file(TIMESTAMP "${rccDepBinGen}" rdGenAfter "${timeformat}") +sleep() +rebuild(4) +acquire_timestamps(After) # - Test if timestamps changed -if (NOT rdPlainAfter GREATER rdPlainBefore) - message(SEND_ERROR "Plain .qrc binary ${rccDepBinPlain}) should have changed!") -endif() -if (NOT rdGenAfter GREATER rdGenBefore) - message(SEND_ERROR "GENERATED .qrc binary ${rccDepBinGen} should have changed!") -endif() +require_change(Plain) +require_change(Generated) -message("Changing nothing in the .qrc file") -# - Acquire binary timestamps before the build -file(TIMESTAMP "${rccDepBinPlain}" rdPlainBefore "${timeformat}") -file(TIMESTAMP "${rccDepBinGen}" rdGenBefore "${timeformat}") # - Ensure that the timestamp will change # - Change nothing # - Rebuild -execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) -execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${rccDepBD}" RESULT_VARIABLE result) -if (result) - message(SEND_ERROR "Fifth build of rccDepends failed.") -endif() -# - Acquire binary timestamps after the build -file(TIMESTAMP "${rccDepBinPlain}" rdPlainAfter "${timeformat}") -file(TIMESTAMP "${rccDepBinGen}" rdGenAfter "${timeformat}") +acquire_timestamps(Before) +sleep() +message(STATUS "Changing nothing in the .qrc file") +rebuild(5) +acquire_timestamps(After) # - Test if timestamps changed -if (rdPlainAfter GREATER rdPlainBefore) - message(SEND_ERROR "Plain .qrc binary ${rccDepBinPlain}) should NOT have changed!") -endif() -if (rdGenAfter GREATER rdGenBefore) - message(SEND_ERROR "GENERATED .qrc binary ${rccDepBinGen} should NOT have changed!") -endif() +require_change_not(Plain) +require_change_not(Generated) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=724359489e03c1c890bea4bc6ba71ca353b048b9 commit 724359489e03c1c890bea4bc6ba71ca353b048b9 Author: Sebastian Holtermann AuthorDate: Wed Feb 13 20:16:46 2019 +0100 Commit: Sebastian Holtermann CommitDate: Wed Feb 13 22:54:32 2019 +0100 Autogen: Refactor RerunRccConfigChange test This refactors and simplifies the QtAutogen.RerunRccConfigChange test. Repetitive task are packed into macros. Test status and error messages are improved. diff --git a/Tests/QtAutogen/RerunRccConfigChange/CMakeLists.txt b/Tests/QtAutogen/RerunRccConfigChange/CMakeLists.txt index dcb7a79..33c01ac 100644 --- a/Tests/QtAutogen/RerunRccConfigChange/CMakeLists.txt +++ b/Tests/QtAutogen/RerunRccConfigChange/CMakeLists.txt @@ -9,10 +9,23 @@ add_executable(dummy dummy.cpp) # When a .qrc or a file listed in a .qrc file changes, # the target must be rebuilt -set(timeformat "%Y%j%H%M%S") set(rccDepSD "${CMAKE_CURRENT_SOURCE_DIR}/RccConfigChange") set(rccDepBD "${CMAKE_CURRENT_BINARY_DIR}/RccConfigChange") +# Rebuild macro +macro(rebuild CFG) + message(STATUS "Rebuilding rccConfigChange in ${CFG} configuration.") + execute_process( + COMMAND "${CMAKE_COMMAND}" --build . --config "${CFG}" + WORKING_DIRECTORY "${rccDepBD}" + RESULT_VARIABLE result) + if (result) + message(FATAL_ERROR "${CFG} build of rccConfigChange failed.") + else() + message(STATUS "${CFG} build of rccConfigChange finished.") + endif() +endmacro() + # Initial build try_compile(RCC_DEPENDS "${rccDepBD}" @@ -24,19 +37,11 @@ try_compile(RCC_DEPENDS OUTPUT_VARIABLE output ) if (NOT RCC_DEPENDS) - message(SEND_ERROR "Initial build of rccConfigChange failed. Output: ${output}") + message(FATAL_ERROR "Initial build of rccConfigChange failed. Output: ${output}") endif() -# - Rebuild Release -message("Rebuilding rccConfigChange in Release configuration") -execute_process(COMMAND "${CMAKE_COMMAND}" --build . --config Release WORKING_DIRECTORY "${rccDepBD}" RESULT_VARIABLE result) -if (result) - message(SEND_ERROR "Release build of rccConfigChange failed.") -endif() +# Rebuild: Release +rebuild(Release) -# - Rebuild Debug -message("Rebuilding rccConfigChange in Debug configuration") -execute_process(COMMAND "${CMAKE_COMMAND}" --build . --config Debug WORKING_DIRECTORY "${rccDepBD}" RESULT_VARIABLE result) -if (result) - message(SEND_ERROR "Debug build of rccConfigChange failed.") -endif() +# Rebuild: Debug +rebuild(Debug) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6ed4ae4bad3bf3e226e0c8009f9b4057707cfc21 commit 6ed4ae4bad3bf3e226e0c8009f9b4057707cfc21 Author: Sebastian Holtermann AuthorDate: Wed Feb 13 20:04:52 2019 +0100 Commit: Sebastian Holtermann CommitDate: Wed Feb 13 22:54:32 2019 +0100 Autogen: Refactor RerunMocBasic test with fixed timestamp comparison This refactors and simplifies the QtAutogen.RerunMocBasic test. Repetitive task are packed into macros. By using version strings to store file timestamps, timestamp comparison becomes more reliable. Test status and error messages are improved. diff --git a/Tests/QtAutogen/RerunMocBasic/CMakeLists.txt b/Tests/QtAutogen/RerunMocBasic/CMakeLists.txt index f4b726f..9b32e59 100644 --- a/Tests/QtAutogen/RerunMocBasic/CMakeLists.txt +++ b/Tests/QtAutogen/RerunMocBasic/CMakeLists.txt @@ -5,10 +5,48 @@ include("../AutogenCoreTest.cmake") # Dummy executable to generate a clean target add_executable(dummy dummy.cpp) -set(timeformat "%Y%j%H%M%S") +# Utility variables +set(timeformat "%Y.%j.%H.%M%S") set(mocBasicSrcDir "${CMAKE_CURRENT_SOURCE_DIR}/MocBasic") set(mocBasicBinDir "${CMAKE_CURRENT_BINARY_DIR}/MocBasic") +# Utility macros +macro(sleep) + message(STATUS "Sleeping for a few seconds.") + execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) +endmacro() + +macro(acquire_timestamp When) + file(TIMESTAMP "${mocBasicBin}" time${When} "${timeformat}") +endmacro() + +macro(rebuild buildName) + message(STATUS "Starting build ${buildName}.") + execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${mocBasicBinDir}" RESULT_VARIABLE result) + if (result) + message(FATAL_ERROR "Build ${buildName} failed.") + else() + message(STATUS "Build ${buildName} finished.") + endif() +endmacro() + +macro(require_change) + if (timeAfter VERSION_GREATER timeBefore) + message(STATUS "As expected the file ${mocBasicBin} changed.") + else() + message(SEND_ERROR "Unexpectedly the file ${mocBasicBin} did not change!\nTimestamp pre: ${timeBefore}\nTimestamp aft: ${timeAfter}\n") + endif() +endmacro() + +macro(require_change_not) + if (timeAfter VERSION_GREATER timeBefore) + message(SEND_ERROR "Unexpectedly the file ${mocBasicBin} changed!\nTimestamp pre: ${timeBefore}\nTimestamp aft: ${timeAfter}\n") + else() + message(STATUS "As expected the file ${mocBasicBin} did not change.") + endif() +endmacro() + + # Initial build configure_file("${mocBasicSrcDir}/test1a.h.in" "${mocBasicBinDir}/test1.h" COPYONLY) try_compile(MOC_RERUN @@ -21,46 +59,44 @@ try_compile(MOC_RERUN OUTPUT_VARIABLE output ) if (NOT MOC_RERUN) - message(SEND_ERROR "Initial build of mocBasic failed. Output: ${output}") + message(FATAL_ERROR "Initial build of mocBasic failed. Output: ${output}") endif() + # Get name of the output binary file(STRINGS "${mocBasicBinDir}/mocBasic.txt" mocBasicList ENCODING UTF-8) list(GET mocBasicList 0 mocBasicBin) -message("Changing the header content for a MOC rerun") -# - Acquire binary timestamps before the build -file(TIMESTAMP "${mocBasicBin}" timeBefore "${timeformat}") +# To avoid a race condition where the binary has the same timestamp +# as a source file and therefore gets rebuild +# - sleep to ensure a timestamp change +# - touch binary to ensure it has a new timestamp +acquire_timestamp(Before) +sleep() +message(STATUS "Touching binary file to ensure a new timestamps") +file(TOUCH_NOCREATE "${mocBasicBin}") +acquire_timestamp(After) +require_change() + + # - Ensure that the timestamp will change -# - Change header file content and rebuild +# - Change header file content # - Rebuild -execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) +acquire_timestamp(Before) +sleep() +message(STATUS "Changing the header content for a MOC re-run") configure_file("${mocBasicSrcDir}/test1b.h.in" "${mocBasicBinDir}/test1.h" COPYONLY) -execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${mocBasicBinDir}" RESULT_VARIABLE result ) -if (result) - message(SEND_ERROR "Second build of mocBasic failed.") -endif() -# - Acquire binary timestamps after the build -file(TIMESTAMP "${mocBasicBin}" timeAfter "${timeformat}") -# - Test if timestamps changed -if (NOT timeAfter GREATER timeBefore) - message(SEND_ERROR "File (${mocBasicBin}) should have changed!") -endif() +sleep() +rebuild(2) +acquire_timestamp(After) +require_change() -message("Changing nothing for a MOC rerun") -# - Acquire binary timestamps before the build -file(TIMESTAMP "${mocBasicBin}" timeBefore "${timeformat}") # - Ensure that the timestamp would change # - Change nothing # - Rebuild -execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) -execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${mocBasicBinDir}" RESULT_VARIABLE result ) -if (result) - message(SEND_ERROR "Third build of mocBasic failed.") -endif() -# - Acquire binary timestamps after the build -file(TIMESTAMP "${mocBasicBin}" timeAfter "${timeformat}") -# - Test if timestamps changed -if (timeAfter GREATER timeBefore) - message(SEND_ERROR "File (${mocBasicBin}) should not have changed!") -endif() +acquire_timestamp(Before) +sleep() +message(STATUS "Changing nothing for no MOC re-run") +rebuild(3) +acquire_timestamp(After) +require_change_not() https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fedbd16f352a8202d30332228ca586a69b513c89 commit fedbd16f352a8202d30332228ca586a69b513c89 Author: Sebastian Holtermann AuthorDate: Wed Feb 13 19:38:11 2019 +0100 Commit: Sebastian Holtermann CommitDate: Wed Feb 13 22:49:20 2019 +0100 Autogen: Refactor RerunMocPlugin test with fixed timestamp comparison This refactors and simplifies the QtAutogen.RerunMocPlugin test. Repetitive task are packed into macros. By using version strings to store file timestamps, timestamp comparison becomes more reliable. Test status and error messages are improved. diff --git a/Tests/QtAutogen/RerunMocPlugin/CMakeLists.txt b/Tests/QtAutogen/RerunMocPlugin/CMakeLists.txt index b83e994..6ab9538 100644 --- a/Tests/QtAutogen/RerunMocPlugin/CMakeLists.txt +++ b/Tests/QtAutogen/RerunMocPlugin/CMakeLists.txt @@ -9,10 +9,53 @@ include("../AutogenCoreTest.cmake") add_executable(dummy dummy.cpp) # Utility variables -set(timeformat "%Y%j%H%M%S") +set(timeformat "%Y.%j.%H.%M%S") set(mocPlugSrcDir "${CMAKE_CURRENT_SOURCE_DIR}/MocPlugin") set(mocPlugBinDir "${CMAKE_CURRENT_BINARY_DIR}/MocPlugin") +# Utility macros +macro(sleep) + message(STATUS "Sleeping for a few seconds.") + execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) +endmacro() + +macro(rebuild buildName) + message(STATUS "Starting build ${buildName}.") + execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${mocPlugBinDir}" RESULT_VARIABLE result) + if (result) + message(FATAL_ERROR "Build ${buildName} failed.") + else() + message(STATUS "Build ${buildName} finished.") + endif() +endmacro() + +macro(require_change PLG) + if (pl${PLG}After VERSION_GREATER pl${PLG}Before) + message(STATUS "As expected the file ${pl${PLG}File} changed.") + else() + message(SEND_ERROR + "Unexpectedly the file ${pl${PLG}File} did not change!\nTimestamp pre: ${pl${PLG}Before}\nTimestamp aft: ${pl${PLG}After}\n") + endif() +endmacro() + +macro(require_change_not PLG) + if (pl${PLG}After VERSION_GREATER pl${PLG}Before) + message(SEND_ERROR + "Unexpectedly the file ${pl${PLG}File} changed!\nTimestamp pre: ${pl${PLG}Before}\nTimestamp aft: ${pl${PLG}After}\n") + else() + message(STATUS "As expected the file ${pl${PLG}File} did not change.") + endif() +endmacro() + +macro(acquire_timestamps When) + file(TIMESTAMP "${plAFile}" plA${When} "${timeformat}") + file(TIMESTAMP "${plBFile}" plB${When} "${timeformat}") + file(TIMESTAMP "${plCFile}" plC${When} "${timeformat}") + file(TIMESTAMP "${plDFile}" plD${When} "${timeformat}") + file(TIMESTAMP "${plEFile}" plE${When} "${timeformat}") +endmacro() + + # Initial build try_compile(MOC_PLUGIN "${mocPlugBinDir}" @@ -24,83 +67,75 @@ try_compile(MOC_PLUGIN OUTPUT_VARIABLE output ) if (NOT MOC_PLUGIN) - message(SEND_ERROR "Initial build of mocPlugin failed. Output: ${output}") + message(FATAL_ERROR "Initial build of mocPlugin failed. Output: ${output}") endif() +# Get names of the output binaries find_library(plAFile "PlugA" PATHS "${mocPlugBinDir}/Debug" "${mocPlugBinDir}" NO_DEFAULT_PATH) find_library(plBFile "PlugB" PATHS "${mocPlugBinDir}/Debug" "${mocPlugBinDir}" NO_DEFAULT_PATH) find_library(plCFile "PlugC" PATHS "${mocPlugBinDir}/Debug" "${mocPlugBinDir}" NO_DEFAULT_PATH) find_library(plDFile "PlugD" PATHS "${mocPlugBinDir}/Debug" "${mocPlugBinDir}" NO_DEFAULT_PATH) find_library(plEFile "PlugE" PATHS "${mocPlugBinDir}/Debug" "${mocPlugBinDir}" NO_DEFAULT_PATH) +# To avoid a race condition where the library has the same timestamp +# as a source file and therefore gets rebuild +# - sleep to ensure a timestamp change +# - touch library to ensure it has a new timestamp +acquire_timestamps(Before) +sleep() +message(STATUS "Touching library files to ensure new timestamps") +file(TOUCH_NOCREATE "${plAFile}" "${plBFile}" "${plCFile}" "${plDFile}" "${plEFile}") +acquire_timestamps(After) +require_change(A) +require_change(B) +require_change(C) +require_change(D) +require_change(E) + + # - Ensure that the timestamp will change. # - Change the json files referenced by Q_PLUGIN_METADATA # - Rebuild -file(TIMESTAMP "${plAFile}" plABefore "${timeformat}") -file(TIMESTAMP "${plBFile}" plBBefore "${timeformat}") -file(TIMESTAMP "${plCFile}" plCBefore "${timeformat}") -file(TIMESTAMP "${plDFile}" plDBefore "${timeformat}") -file(TIMESTAMP "${plEFile}" plEBefore "${timeformat}") - -execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) +acquire_timestamps(Before) +sleep() +message(STATUS "Changing json files") configure_file("${mocPlugSrcDir}/jsonIn/StyleD.json" "${mocPlugBinDir}/jsonFiles/StyleC.json") configure_file("${mocPlugSrcDir}/jsonIn/StyleE.json" "${mocPlugBinDir}/jsonFiles/sub/StyleD.json") configure_file("${mocPlugSrcDir}/jsonIn/StyleC.json" "${mocPlugBinDir}/jsonFiles/StyleE.json") -execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${mocPlugBinDir}") - -file(TIMESTAMP "${plAFile}" plAAfter "${timeformat}") -file(TIMESTAMP "${plBFile}" plBAfter "${timeformat}") -file(TIMESTAMP "${plCFile}" plCAfter "${timeformat}") -file(TIMESTAMP "${plDFile}" plDAfter "${timeformat}") -file(TIMESTAMP "${plEFile}" plEAfter "${timeformat}") - -if (plAAfter GREATER plABefore) - message(SEND_ERROR "file (${plAFile}) should not have changed!") -endif() -if (plBAfter GREATER plBBefore) - message(SEND_ERROR "file (${plBFile}) should not have changed!") -endif() -if (NOT plCAfter GREATER plCBefore) - message(SEND_ERROR "file (${plCFile}) should have changed!") -endif() -if (NOT plDAfter GREATER plDBefore) - message(SEND_ERROR "file (${plDFile}) should have changed!") -endif() -if (NOT plEAfter GREATER plEBefore) - # There's a bug in Ninja on Windows - # https://gitlab.kitware.com/cmake/cmake/issues/16776 - if(NOT ("${CMAKE_GENERATOR}" MATCHES "Ninja")) - message(SEND_ERROR "file (${plEFile}) should have changed!") - endif() +sleep() +rebuild(2) +acquire_timestamps(After) +# Test changes +require_change_not(A) +require_change_not(B) +require_change(C) +require_change(D) +# There's a bug in Ninja on Windows: +# https://gitlab.kitware.com/cmake/cmake/issues/16776 +if(NOT ("${CMAKE_GENERATOR}" MATCHES "Ninja")) + require_change(E) endif() + # - Ensure that the timestamp will change. # - Change the json files referenced by A_CUSTOM_MACRO # - Rebuild -file(TIMESTAMP "${plCFile}" plCBefore "${timeformat}") -file(TIMESTAMP "${plDFile}" plDBefore "${timeformat}") -file(TIMESTAMP "${plEFile}" plEBefore "${timeformat}") - -execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 1) +acquire_timestamps(Before) +sleep() +message(STATUS "Changing json files") configure_file("${mocPlugSrcDir}/jsonIn/StyleE.json" "${mocPlugBinDir}/jsonFiles/StyleC_Custom.json") configure_file("${mocPlugSrcDir}/jsonIn/StyleC.json" "${mocPlugBinDir}/jsonFiles/sub/StyleD_Custom.json") configure_file("${mocPlugSrcDir}/jsonIn/StyleD.json" "${mocPlugBinDir}/jsonFiles/StyleE_Custom.json") -execute_process(COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${mocPlugBinDir}") - -file(TIMESTAMP "${plCFile}" plCAfter "${timeformat}") -file(TIMESTAMP "${plDFile}" plDAfter "${timeformat}") -file(TIMESTAMP "${plEFile}" plEAfter "${timeformat}") - -if (NOT plCAfter GREATER plCBefore) - message(SEND_ERROR "file (${plCFile}) should have changed!") -endif() -if (NOT plDAfter GREATER plDBefore) - message(SEND_ERROR "file (${plDFile}) should have changed!") -endif() -if (NOT plEAfter GREATER plEBefore) - # There's a bug in Ninja on Windows - # https://gitlab.kitware.com/cmake/cmake/issues/16776 - if(NOT ("${CMAKE_GENERATOR}" MATCHES "Ninja")) - message(SEND_ERROR "file (${plEFile}) should have changed!") - endif() +sleep() +rebuild(3) +acquire_timestamps(After) +# Test changes +require_change_not(A) +require_change_not(B) +require_change(C) +require_change(D) +# There's a bug in Ninja on Windows +# https://gitlab.kitware.com/cmake/cmake/issues/16776 +if(NOT ("${CMAKE_GENERATOR}" MATCHES "Ninja")) + require_change(E) endif() ----------------------------------------------------------------------- Summary of changes: Tests/QtAutogen/RerunMocBasic/CMakeLists.txt | 98 ++++++++---- Tests/QtAutogen/RerunMocPlugin/CMakeLists.txt | 151 +++++++++++------- .../QtAutogen/RerunRccConfigChange/CMakeLists.txt | 33 ++-- Tests/QtAutogen/RerunRccDepends/CMakeLists.txt | 175 +++++++++++---------- 4 files changed, 274 insertions(+), 183 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 15 00:03:06 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 15 Feb 2019 00:03:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-110-ga2a903f Message-ID: <20190215050306.4F276FA9E0@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 a2a903fe42f6ef54665135cac54b75d50bcd696c (commit) from 8c4de819449bbb1710b1cc2440357757e5cb757c (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=a2a903fe42f6ef54665135cac54b75d50bcd696c commit a2a903fe42f6ef54665135cac54b75d50bcd696c Author: Kitware Robot AuthorDate: Fri Feb 15 00:01:08 2019 -0500 Commit: Kitware Robot CommitDate: Fri Feb 15 00:01:08 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 8330dc8..e69ceb9 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 14) -set(CMake_VERSION_PATCH 20190214) +set(CMake_VERSION_PATCH 20190215) #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 15 07:23:08 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 15 Feb 2019 07:23:08 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-112-g3411c81 Message-ID: <20190215122308.81899125875@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 3411c815752470432d56c7bf265d9f99d174d082 (commit) via cde2596a19861e52d6ef0f98dcc0b70ba572573e (commit) from a2a903fe42f6ef54665135cac54b75d50bcd696c (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=3411c815752470432d56c7bf265d9f99d174d082 commit 3411c815752470432d56c7bf265d9f99d174d082 Merge: a2a903f cde2596 Author: Brad King AuthorDate: Fri Feb 15 12:19:41 2019 +0000 Commit: Kitware Robot CommitDate: Fri Feb 15 07:19:51 2019 -0500 Merge topic 'try_compile-expand-compile-defs' cde2596a19 try_compile: Restore expansion of ;-list in COMPILE_DEFINITIONS Acked-by: Kitware Robot Merge-request: !2965 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cde2596a19861e52d6ef0f98dcc0b70ba572573e commit cde2596a19861e52d6ef0f98dcc0b70ba572573e Author: Brad King AuthorDate: Thu Feb 14 08:16:20 2019 -0500 Commit: Brad King CommitDate: Fri Feb 15 06:21:19 2019 -0500 try_compile: Restore expansion of ;-list in COMPILE_DEFINITIONS The quoting added by commit 8c5221fb1f (try_compile: Preserve special characters in COMPILE_DEFINITIONS, 2019-01-21, v3.14.0-rc1~108^2~3) broke the case that the `COMPILE_DEFINITIONS` value contains a `;`. Without the quoting the `;` would be generated literally in an unquoted argument in the test `CMakeLists.txt` file and would then be expanded. With quoting the `;` is preserved, which is not the old behavior. Fix this by expanding the `;`-list ahead of time. Add test cases for behavior with both `#` and `;`. This was noticed with the PGI compiler where we set `CMAKE_CXX*_STANDARD_COMPILE_OPTION` to values like `--c++17;-A`. The symptom had also been observed while preparing commit ef8f237686 (ParseImplicitIncludeInfo: add SunPro Fortran and PGI compiler, Cray fix, 2019-01-29, v3.14.0-rc1~26^2~2) but was not recognized at the time as a regression. Revert the workaround added by that commit. Fixes: #18919 diff --git a/Modules/Compiler/Cray-C.cmake b/Modules/Compiler/Cray-C.cmake index b3c96ee..d34154c 100644 --- a/Modules/Compiler/Cray-C.cmake +++ b/Modules/Compiler/Cray-C.cmake @@ -8,13 +8,13 @@ string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -DNDEBUG") string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -DNDEBUG") if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1) - set(CMAKE_C90_STANDARD_COMPILE_OPTION "-h noc99,conform") - set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-h noc99,gnu") - set(CMAKE_C99_STANDARD_COMPILE_OPTION "-h c99,conform") - set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-h c99,gnu") + set(CMAKE_C90_STANDARD_COMPILE_OPTION -h noc99,conform) + set(CMAKE_C90_EXTENSION_COMPILE_OPTION -h noc99,gnu) + set(CMAKE_C99_STANDARD_COMPILE_OPTION -h c99,conform) + set(CMAKE_C99_EXTENSION_COMPILE_OPTION -h c99,gnu) if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 8.5) - set(CMAKE_C11_STANDARD_COMPILE_OPTION "-h std=c11,conform") - set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-h std=c11,gnu") + set(CMAKE_C11_STANDARD_COMPILE_OPTION -h std=c11,conform) + set(CMAKE_C11_EXTENSION_COMPILE_OPTION -h std=c11,gnu) endif () endif () diff --git a/Modules/Compiler/Cray-CXX.cmake b/Modules/Compiler/Cray-CXX.cmake index bbb5718..85a3167 100644 --- a/Modules/Compiler/Cray-CXX.cmake +++ b/Modules/Compiler/Cray-CXX.cmake @@ -8,15 +8,15 @@ string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -DNDEBUG") string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -DNDEBUG") if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1) - set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-h conform") - set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-h gnu") + set(CMAKE_CXX98_STANDARD_COMPILE_OPTION -h conform) + set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION -h gnu) if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.4) - set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-h std=c++11") - set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-h std=c++11,gnu") + set(CMAKE_CXX11_STANDARD_COMPILE_OPTION -h std=c++11) + set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION -h std=c++11,gnu) endif() if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.6) - set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-h std=c++14") - set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-h std=c++14,gnu") + set(CMAKE_CXX14_STANDARD_COMPILE_OPTION -h std=c++14) + set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION -h std=c++14,gnu) endif () endif () diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx index bd110ec..eb52895 100644 --- a/Source/cmCoreTryCompile.cxx +++ b/Source/cmCoreTryCompile.cxx @@ -226,7 +226,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector const& argv, } else if (doing == DoingCMakeFlags) { cmakeFlags.push_back(argv[i]); } else if (doing == DoingCompileDefinitions) { - compileDefs.push_back(argv[i]); + cmSystemTools::ExpandListArgument(argv[i], compileDefs); } else if (doing == DoingLinkOptions) { linkOptions.push_back(argv[i]); } else if (doing == DoingLinkLibraries) { diff --git a/Tests/TryCompile/CMakeLists.txt b/Tests/TryCompile/CMakeLists.txt index 184a7be..54e96a2 100644 --- a/Tests/TryCompile/CMakeLists.txt +++ b/Tests/TryCompile/CMakeLists.txt @@ -165,6 +165,35 @@ try_compile(TEST_INNER OUTPUT_VARIABLE output) TEST_ASSERT(TEST_INNER "try_compile project mode failed:\n${output}") +try_compile(COMPILE_DEFINITIONS_LIST_EXPANDED + ${TryCompile_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp + ${TryCompile_SOURCE_DIR}/check_a_b.c + OUTPUT_VARIABLE output + COMPILE_DEFINITIONS "-DDEF_A;-DDEF_B" + ) +if(COMPILE_DEFINITIONS_LIST_EXPANDED) + message(STATUS "COMPILE_DEFINITIONS list expanded correctly") +else() + string(REPLACE "\n" "\n " output " ${output}") + message(SEND_ERROR "COMPILE_DEFINITIONS list did not expand correctly\n${output}") +endif() + +try_compile(SHOULD_FAIL_DUE_TO_BAD_SOURCE + ${TryCompile_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp + ${TryCompile_SOURCE_DIR}/pass.c + OUTPUT_VARIABLE output + COMPILE_DEFINITIONS "bad#source.c" + ) +if(SHOULD_FAIL_DUE_TO_BAD_SOURCE AND NOT CMAKE_GENERATOR MATCHES "Watcom WMake|NMake Makefiles") + string(REPLACE "\n" "\n " output " ${output}") + message(SEND_ERROR "try_compile with bad#source.c did not fail:\n${output}") +elseif(NOT output MATCHES [[(bad#source\.c|bad\\)]]) + string(REPLACE "\n" "\n " output " ${output}") + message(SEND_ERROR "try_compile with bad#source.c failed without mentioning bad source:\n${output}") +else() + message(STATUS "try_compile with bad#source.c correctly failed") +endif() + add_executable(TryCompile pass.c) ###################################### diff --git a/Tests/TryCompile/check_a_b.c b/Tests/TryCompile/check_a_b.c new file mode 100644 index 0000000..05fba0f --- /dev/null +++ b/Tests/TryCompile/check_a_b.c @@ -0,0 +1,10 @@ +#ifndef DEF_A +# error DEF_A not defined +#endif +#ifndef DEF_B +# error DEF_B not defined +#endif +int main() +{ + return 0; +} ----------------------------------------------------------------------- Summary of changes: Modules/Compiler/Cray-C.cmake | 12 ++++++------ Modules/Compiler/Cray-CXX.cmake | 12 ++++++------ Source/cmCoreTryCompile.cxx | 2 +- Tests/TryCompile/CMakeLists.txt | 29 +++++++++++++++++++++++++++++ Tests/TryCompile/check_a_b.c | 10 ++++++++++ 5 files changed, 52 insertions(+), 13 deletions(-) create mode 100644 Tests/TryCompile/check_a_b.c hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 15 07:33:03 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 15 Feb 2019 07:33:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-114-g3bc2fb5 Message-ID: <20190215123303.D2443125C1F@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 3bc2fb55b46cb7daebe92bad3a5e6e9426af28b5 (commit) via 5c26e3c5e39096d8d9d990a586f6368a33252055 (commit) from 3411c815752470432d56c7bf265d9f99d174d082 (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=3bc2fb55b46cb7daebe92bad3a5e6e9426af28b5 commit 3bc2fb55b46cb7daebe92bad3a5e6e9426af28b5 Merge: 3411c81 5c26e3c Author: Brad King AuthorDate: Fri Feb 15 12:28:58 2019 +0000 Commit: Kitware Robot CommitDate: Fri Feb 15 07:29:05 2019 -0500 Merge topic 'vs2017-sdk81' 5c26e3c5e3 VS: Fix validation of Windows 8.1 SDK Acked-by: Kitware Robot Acked-by: Dedmen Miller Merge-request: !2962 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5c26e3c5e39096d8d9d990a586f6368a33252055 commit 5c26e3c5e39096d8d9d990a586f6368a33252055 Author: Brad King AuthorDate: Thu Feb 14 07:39:06 2019 -0500 Commit: Brad King CommitDate: Thu Feb 14 08:25:26 2019 -0500 VS: Fix validation of Windows 8.1 SDK The check added by commit 0a29a31161 (VS2017: Verify Windows 8.1 SDK before using it, 2017-04-25, v3.8.1~2^2) used the wrong path to `windows.h` within the SDK, leading to it never being detected. Fixes: #18923 diff --git a/Source/cmGlobalVisualStudioVersionedGenerator.cxx b/Source/cmGlobalVisualStudioVersionedGenerator.cxx index 12d9304..913fc4a 100644 --- a/Source/cmGlobalVisualStudioVersionedGenerator.cxx +++ b/Source/cmGlobalVisualStudioVersionedGenerator.cxx @@ -453,7 +453,8 @@ bool cmGlobalVisualStudioVersionedGenerator::IsWin81SDKInstalled() const "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\" "Windows Kits\\Installed Roots;KitsRoot81", win81Root, cmSystemTools::KeyWOW64_32)) { - return cmSystemTools::FileExists(win81Root + "/um/windows.h", true); + return cmSystemTools::FileExists(win81Root + "/include/um/windows.h", + true); } return false; } ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalVisualStudioVersionedGenerator.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 15 07:53:10 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 15 Feb 2019 07:53:10 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-120-gbb99ab8 Message-ID: <20190215125310.42408FA9E0@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 bb99ab8e539e47c05593806b495fc9cdc230570c (commit) via 029abf9733e15bdecfc166a0ca7ec8c384104adb (commit) via 113a395ee77914d7c0c9888b87301033332bdde6 (commit) via dac6cf1b99f6f8a7648b19de52a1d5ffcd2a0299 (commit) via fd86a4de04d10334f061570c6c0fcc21e18f9322 (commit) via 9d3710affecc45a73bae5a245d2235f8c818dab9 (commit) from 3bc2fb55b46cb7daebe92bad3a5e6e9426af28b5 (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=bb99ab8e539e47c05593806b495fc9cdc230570c commit bb99ab8e539e47c05593806b495fc9cdc230570c Merge: 029abf9 113a395 Author: Brad King AuthorDate: Fri Feb 15 07:45:14 2019 -0500 Commit: Brad King CommitDate: Fri Feb 15 07:45:14 2019 -0500 Merge branch 'release-3.14' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=029abf9733e15bdecfc166a0ca7ec8c384104adb commit 029abf9733e15bdecfc166a0ca7ec8c384104adb Merge: 3bc2fb5 fd86a4d Author: Brad King AuthorDate: Fri Feb 15 12:44:27 2019 +0000 Commit: Kitware Robot CommitDate: Fri Feb 15 07:44:34 2019 -0500 Merge topic 'FindLibXml2' fd86a4de04 FindLibXml2: Document LibXml2_FOUND as preferred case Acked-by: Kitware Robot Merge-request: !2970 ----------------------------------------------------------------------- Summary of changes: Modules/FindLibXml2.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 15 07:53:11 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 15 Feb 2019 07:53:11 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.14.0-rc1-35-g113a395 Message-ID: <20190215125312.C1139F3EBD@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 113a395ee77914d7c0c9888b87301033332bdde6 (commit) via dac6cf1b99f6f8a7648b19de52a1d5ffcd2a0299 (commit) via fd86a4de04d10334f061570c6c0fcc21e18f9322 (commit) via cde2596a19861e52d6ef0f98dcc0b70ba572573e (commit) via 9d3710affecc45a73bae5a245d2235f8c818dab9 (commit) via 5c26e3c5e39096d8d9d990a586f6368a33252055 (commit) from 2f51f281a8c9684c25cf97499a4382e1b5ae68b9 (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/Compiler/Cray-C.cmake | 12 +++++----- Modules/Compiler/Cray-CXX.cmake | 12 +++++----- Modules/FindLibXml2.cmake | 2 +- Source/cmCoreTryCompile.cxx | 2 +- Source/cmGlobalVisualStudioVersionedGenerator.cxx | 3 ++- Tests/TryCompile/CMakeLists.txt | 29 +++++++++++++++++++++++ Tests/TryCompile/check_a_b.c | 10 ++++++++ 7 files changed, 55 insertions(+), 15 deletions(-) create mode 100644 Tests/TryCompile/check_a_b.c hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 15 08:03:02 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 15 Feb 2019 08:03:02 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-122-g6646623 Message-ID: <20190215130302.ADA6C1BD4@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 6646623993666ad4d18a82fd7571138a8c418046 (commit) via 8fc0c98f082177acadaa208117a56327fcb83d9f (commit) from bb99ab8e539e47c05593806b495fc9cdc230570c (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=6646623993666ad4d18a82fd7571138a8c418046 commit 6646623993666ad4d18a82fd7571138a8c418046 Merge: bb99ab8 8fc0c98 Author: Brad King AuthorDate: Fri Feb 15 12:58:51 2019 +0000 Commit: Kitware Robot CommitDate: Fri Feb 15 07:58:57 2019 -0500 Merge topic 'tests-intel-fixup' 8fc0c98f08 Tests: Fix Module.WriteCompilerDetectionHeader for Intel on Windows Acked-by: Kitware Robot Merge-request: !2963 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8fc0c98f082177acadaa208117a56327fcb83d9f commit 8fc0c98f082177acadaa208117a56327fcb83d9f Author: Brad King AuthorDate: Thu Feb 14 09:21:35 2019 -0500 Commit: Brad King CommitDate: Thu Feb 14 09:27:40 2019 -0500 Tests: Fix Module.WriteCompilerDetectionHeader for Intel on Windows Fix a condition added by commit 091afa7342 (Tests: Teach tests when to treat clang-cl as MSVC, 2018-11-06) to be specific to Clang. diff --git a/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt b/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt index 616092d..b584e16 100644 --- a/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt +++ b/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt @@ -128,7 +128,8 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" endif() # for msvc the compiler version determines which c++11 features are available. -if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC") +if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" + OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")) if(";${CMAKE_CXX_COMPILE_FEATURES};" MATCHES ";cxx_delegating_constructors;") list(APPEND true_defs EXPECTED_COMPILER_CXX_DELEGATING_CONSTRUCTORS) list(APPEND true_defs EXPECTED_COMPILER_CXX_VARIADIC_TEMPLATES) ----------------------------------------------------------------------- Summary of changes: Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 15 09:23:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 15 Feb 2019 09:23:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-124-g442cb77 Message-ID: <20190215142304.6DC9712551E@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 442cb77bf31c02f83c47167ef9842b7756029227 (commit) via e6897c72e7c59f7a0b82ed19c1bdb40d42f7adaa (commit) from 6646623993666ad4d18a82fd7571138a8c418046 (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=442cb77bf31c02f83c47167ef9842b7756029227 commit 442cb77bf31c02f83c47167ef9842b7756029227 Merge: 6646623 e6897c7 Author: Brad King AuthorDate: Fri Feb 15 09:21:20 2019 -0500 Commit: Brad King CommitDate: Fri Feb 15 09:21:20 2019 -0500 Merge branch 'release-3.14' ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 15 09:23:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 15 Feb 2019 09:23:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.14.0-rc1-36-ge6897c7 Message-ID: <20190215142304.7C9541259AE@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 e6897c72e7c59f7a0b82ed19c1bdb40d42f7adaa (commit) from 113a395ee77914d7c0c9888b87301033332bdde6 (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 Fri Feb 15 09:33:02 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 15 Feb 2019 09:33:02 -0500 (EST) Subject: [Cmake-commits] CMake annotated tag, v3.14.0-rc2, created. v3.14.0-rc2 Message-ID: <20190215143302.C6D7B125B0C@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.14.0-rc2 has been created at ca5d1ad4f566bcb0a55b511a0a396f1d87cb23fb (tag) tagging e6897c72e7c59f7a0b82ed19c1bdb40d42f7adaa (commit) replaces v3.14.0-rc1 tagged by Brad King on Fri Feb 15 09:12:31 2019 -0500 - Log ----------------------------------------------------------------- CMake 3.14.0-rc2 -----BEGIN PGP SIGNATURE----- iQJKBAABCgA0FiEExsJlMku+vcNQtRPQLSzvEDSSFoQFAlxmyM8WHGJyYWQua2lu Z0BraXR3YXJlLmNvbQAKCRAtLO8QNJIWhD27D/0atuRTuPNBGrTwWwAeoRCas7lQ gRY9XeBHWG2DHfanR4RTcEFLEaWg520T+S03lIHsXj3/Pf2QFJxPPDN0z9ICCjK2 gSB5/d8xtiJdtrflIXelsFg6olAJZgOGbpTTeNslHgnQotkRlkKMGxtvRKfdXBqB gHvlbrrmWP1najwci0na3X6pK0t1BT8wlT75c1dBoxLZF/AxrlQ00QbAWeAEI+F8 nvhEOBnzyDi0iQJOlSHexyumVjgh3KqxyNbkXRUQZErxByfUJSdPs9O3UcfwL1DI R/IJ0ZFMzjv9S/dTPPM6aQw0YxFnj58k9Nyx2R1SF9k3N4ATlQ8N6W2yxnHfYLUc av550Tm23heSQgRXhpf3Zbi/bPczdSNE3eTH2BNfry+aQLjl9SSoduTRvqfakK0E B9bPJ6RuZcGDiWIz8CCylCRSVCA+uPlOb0+UzbRw17fcg8wB69UzD4OGr/2nbxcm RPJIIVyS0gDAjkIjPm7aKVj2H78OuZ1g75PFDVc4g53SVA1ovZrzir5SqQiQKOyQ tvcRbvEjxIGdrqdnPNejKtAMueODJcrkBHyZnOq8LSjHnGr6CUTnBjcpLzhiNU+T 0XAZv1OWuLaZ9bZqybCZIJK80E3gDiKrrL0ncEBWsgTxG67FqSYNGPETVRh0Jjnu Pav6H40HOeMD+fITIQ== =ktB7 -----END PGP SIGNATURE----- Brad King (26): Help: Clarify 3.14 release note about object library dependencies Merge branch 'doc-object-library-link' into release-3.14 Fix EXCLUDE_FROM_ALL on directory with an interface library Merge branch 'fix-exclude-dir-with-iface' into release-3.14 Merge branch 'ghs-updates' into release-3.14 Merge branch 'ghs-relnotes' into release-3.14 Merge branch 'FindOctave-interp-target' into release-3.14 Merge branch 'FindMatlab-version-empty' into release-3.14 Merge branch 'doc-if-legacy' into release-3.14 Merge branch 'genex-GENEX_EVAL-fix-recursion' into release-3.14 macOS: Fix addition of /usr/include to default implicit include dirs Fix regression in -I/usr/include exclusion logic cmAlgorithms: Add cmHasPrefix to match existing cmHasSuffix Update logic for sysroot in detected implicit include directories Merge branch 'fix-legacy-implicit-includes' into release-3.14 Merge branch 'fix-pointer-truncation' into release-3.14 VS: Fix validation of Windows 8.1 SDK Fortran: Factor out .mod and .smod file name construction Fortran: Thread compiler id through to internal Fortran parser Fortran: Fix submodule file names across compilers Merge branch 'fortran-submodule-names' into release-3.14 Merge branch 'vs2017-sdk81' into release-3.14 try_compile: Restore expansion of ;-list in COMPILE_DEFINITIONS Merge branch 'FindLibXml2' into release-3.14 Merge branch 'try_compile-expand-compile-defs' into release-3.14 CMake 3.14.0-rc2 Fred Baksik (2): GHS: Document usage of GHS_NO_SOURCE_GROUP_FILE Help: Update 3.14 release notes for GHS changes Juuso "Linda" Lapinlampi (1): Help: Fix elseif/endif typo Kyle Edwards (1): Merge branch 'file_create_link_release_note' into release-3.14 Marc Chevrier (1): genex: Fix erroneous handling of recursion for $ Peter Stroia-Williams (1): FindOctave: Add target for octinterp Saleem Abdulrasool (1): FindLibXml2: Document LibXml2_FOUND as preferred case Sebastian Nagel (1): FindMatlab: Tolerate empty version log file Tushar Maheshwari (1): Help: Add notes for `file(CREATE_LINK)` subcommand Zsolt Parragi (1): cmListFileLexer: Add missing include to avoid possible pointer truncation ----------------------------------------------------------------------- hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 15 10:03:03 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 15 Feb 2019 10:03:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-95-g160735c Message-ID: <20190215150303.E7A16125738@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 160735c479535f0137c7b9a14edeccb623473f74 (commit) via f2dc10d55c24d1714d65ce990a8e7658d92d2e14 (commit) via 3c9c91a360104b97aa6ad27934ff7603c862a2f7 (commit) via 30faf7262561da45a79af5de9c77531091dac6b9 (commit) via f510aafbfc33d3bfd6ba919a17f608c7bb85cfcf (commit) via a930de85d88891b2516c60306bb49cc85d38c5a8 (commit) via 157570b5a2d3135e2d83f9bd2865ad666a709499 (commit) from 442cb77bf31c02f83c47167ef9842b7756029227 (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=160735c479535f0137c7b9a14edeccb623473f74 commit 160735c479535f0137c7b9a14edeccb623473f74 Merge: f2dc10d 30faf72 Author: Kyle Edwards AuthorDate: Fri Feb 15 15:02:02 2019 +0000 Commit: Kitware Robot CommitDate: Fri Feb 15 10:02:10 2019 -0500 Merge topic 'remove_return_void' 30faf72625 Remove return from void function Acked-by: Kitware Robot Merge-request: !2969 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f2dc10d55c24d1714d65ce990a8e7658d92d2e14 commit f2dc10d55c24d1714d65ce990a8e7658d92d2e14 Merge: 3c9c91a 157570b Author: Brad King AuthorDate: Fri Feb 15 14:59:44 2019 +0000 Commit: Kitware Robot CommitDate: Fri Feb 15 10:00:21 2019 -0500 Merge topic 'ninja-swift-library-name' 157570b5a2 Add placeholder for Swift's library name Acked-by: Kitware Robot Merge-request: !2902 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3c9c91a360104b97aa6ad27934ff7603c862a2f7 commit 3c9c91a360104b97aa6ad27934ff7603c862a2f7 Merge: 442cb77 f510aaf Author: Brad King AuthorDate: Fri Feb 15 14:59:32 2019 +0000 Commit: Kitware Robot CommitDate: Fri Feb 15 09:59:40 2019 -0500 Merge topic 'update-kwsys' f510aafbfc Merge branch 'upstream-KWSys' into update-kwsys a930de85d8 KWSys 2019-02-14 (e270ce9f) Acked-by: Kitware Robot Merge-request: !2967 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=30faf7262561da45a79af5de9c77531091dac6b9 commit 30faf7262561da45a79af5de9c77531091dac6b9 Author: Albert Astals Cid AuthorDate: Thu Feb 14 17:34:06 2019 +0100 Commit: Albert Astals Cid CommitDate: Thu Feb 14 17:34:06 2019 +0100 Remove return from void function diff --git a/Source/cmQtAutoGeneratorMocUic.cxx b/Source/cmQtAutoGeneratorMocUic.cxx index ddff4cf..2959b7d 100644 --- a/Source/cmQtAutoGeneratorMocUic.cxx +++ b/Source/cmQtAutoGeneratorMocUic.cxx @@ -1020,20 +1020,20 @@ cmQtAutoGeneratorMocUic::WorkerT::~WorkerT() void cmQtAutoGeneratorMocUic::WorkerT::LogInfo( GeneratorT genType, std::string const& message) const { - return Log().Info(genType, message); + Log().Info(genType, message); } void cmQtAutoGeneratorMocUic::WorkerT::LogWarning( GeneratorT genType, std::string const& message) const { - return Log().Warning(genType, message); + Log().Warning(genType, message); } void cmQtAutoGeneratorMocUic::WorkerT::LogFileWarning( GeneratorT genType, std::string const& filename, std::string const& message) const { - return Log().WarningFile(genType, filename, message); + Log().WarningFile(genType, filename, message); } void cmQtAutoGeneratorMocUic::WorkerT::LogError( https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f510aafbfc33d3bfd6ba919a17f608c7bb85cfcf commit f510aafbfc33d3bfd6ba919a17f608c7bb85cfcf Merge: e3353a0 a930de8 Author: Brad King AuthorDate: Thu Feb 14 10:55:44 2019 -0500 Commit: Brad King CommitDate: Thu Feb 14 10:55:44 2019 -0500 Merge branch 'upstream-KWSys' into update-kwsys * upstream-KWSys: KWSys 2019-02-14 (e270ce9f) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a930de85d88891b2516c60306bb49cc85d38c5a8 commit a930de85d88891b2516c60306bb49cc85d38c5a8 Author: KWSys Upstream AuthorDate: Thu Feb 14 10:13:42 2019 -0500 Commit: Brad King CommitDate: Thu Feb 14 10:55:44 2019 -0500 KWSys 2019-02-14 (e270ce9f) Code extracted from: https://gitlab.kitware.com/utils/kwsys.git at commit e270ce9fc60971006e934e9d53d11be5f85efc39 (master). Upstream Shortlog ----------------- Albert Astals Cid (2): 95ced423 hashtable: delete assignment operator instead of poisoning it 6090d36b Glob: Use the default copy constructor and assignment operator diff --git a/Glob.hxx.in b/Glob.hxx.in index bd4a176..4c3bde1 100644 --- a/Glob.hxx.in +++ b/Glob.hxx.in @@ -41,17 +41,9 @@ public: , content(c) { } - Message(const Message& msg) - : type(msg.type) - , content(msg.content) - { - } - Message& operator=(Message const& msg) - { - this->type = msg.type; - this->content = msg.content; - return *this; - } + ~Message() = default; + Message(const Message& msg) = default; + Message& operator=(Message const& msg) = default; }; typedef std::vector GlobMessages; diff --git a/hashtable.hxx.in b/hashtable.hxx.in index fc0d60e..0981c66 100644 --- a/hashtable.hxx.in +++ b/hashtable.hxx.in @@ -73,7 +73,7 @@ struct _Hashtable_node void public_method_to_quiet_warning_about_all_methods_private(); private: - void operator=(_Hashtable_node<_Val> const&); // poison node assignment + void operator=(_Hashtable_node<_Val> const&) = delete; }; template AuthorDate: Thu Jan 31 15:39:44 2019 -0800 Commit: Saleem Abdulrasool CommitDate: Wed Feb 13 09:25:29 2019 -0800 Add placeholder for Swift's library name This allows us to set the proper link name for the Swift library (soname). Because this needs to be passed to the object being compiled, we need to create a new placeholder so that it can be sent along to the frontend. Default to the target name unless it is explicitly provided. diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index b525dac..df6428f 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -454,6 +454,7 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang) if (lang == "Swift") { vars.SwiftAuxiliarySources = "$SWIFT_AUXILIARY_SOURCES"; vars.SwiftModuleName = "$SWIFT_MODULE_NAME"; + vars.SwiftLibraryName = "$SWIFT_LIBRARY_NAME"; } // For some cases we do an explicit preprocessor invocation. @@ -940,6 +941,10 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement( } else { vars["SWIFT_MODULE_NAME"] = this->GeneratorTarget->GetName(); } + + cmGeneratorTarget::Names targetNames = + this->GeneratorTarget->GetLibraryNames(this->GetConfigName()); + vars["SWIFT_LIBRARY_NAME"] = targetNames.Base; } if (!this->NeedDepTypeMSVC(language)) { diff --git a/Source/cmRulePlaceholderExpander.cxx b/Source/cmRulePlaceholderExpander.cxx index e347a2c..5ebdd1b 100644 --- a/Source/cmRulePlaceholderExpander.cxx +++ b/Source/cmRulePlaceholderExpander.cxx @@ -172,6 +172,11 @@ std::string cmRulePlaceholderExpander::ExpandRuleVariable( return replaceValues.SwiftModuleName; } } + if (replaceValues.SwiftLibraryName) { + if (variable == "SWIFT_LIBRARY_NAME") { + return replaceValues.SwiftLibraryName; + } + } if (variable == "TARGET_SONAME" || variable == "SONAME_FLAG" || variable == "TARGET_INSTALLNAME_DIR") { // All these variables depend on TargetSOName diff --git a/Source/cmRulePlaceholderExpander.h b/Source/cmRulePlaceholderExpander.h index 5c03637..930eafd 100644 --- a/Source/cmRulePlaceholderExpander.h +++ b/Source/cmRulePlaceholderExpander.h @@ -60,6 +60,7 @@ public: const char* FilterPrefix; const char* SwiftAuxiliarySources; const char* SwiftModuleName; + const char* SwiftLibraryName; }; // Expand rule variables in CMake of the type found in language rules ----------------------------------------------------------------------- Summary of changes: Source/cmNinjaTargetGenerator.cxx | 5 +++++ Source/cmQtAutoGeneratorMocUic.cxx | 6 +++--- Source/cmRulePlaceholderExpander.cxx | 5 +++++ Source/cmRulePlaceholderExpander.h | 1 + Source/kwsys/Glob.hxx.in | 14 +++----------- Source/kwsys/hashtable.hxx.in | 2 +- 6 files changed, 18 insertions(+), 15 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Fri Feb 15 10:13:02 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 15 Feb 2019 10:13:02 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-97-g820424d Message-ID: <20190215151302.AE42CC0B8F@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 820424d95d7b10ae08affe79288ac594a561e5bd (commit) via bd20cc29a20f087348e7724da2cbaf311626dc06 (commit) from 160735c479535f0137c7b9a14edeccb623473f74 (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=820424d95d7b10ae08affe79288ac594a561e5bd commit 820424d95d7b10ae08affe79288ac594a561e5bd Merge: 160735c bd20cc2 Author: Brad King AuthorDate: Fri Feb 15 15:04:42 2019 +0000 Commit: Kitware Robot CommitDate: Fri Feb 15 10:04:49 2019 -0500 Merge topic 'systools-cleanup' bd20cc29a2 cmSystemTools: Remove redundant cmCopyFile() and Split() Acked-by: Kitware Robot Merge-request: !2966 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bd20cc29a20f087348e7724da2cbaf311626dc06 commit bd20cc29a20f087348e7724da2cbaf311626dc06 Author: Vitaly Stakhovsky AuthorDate: Thu Feb 14 07:45:13 2019 -0500 Commit: Vitaly Stakhovsky CommitDate: Fri Feb 15 09:52:29 2019 -0500 cmSystemTools: Remove redundant cmCopyFile() and Split() diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index aa75a8c..aec5a44 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -3756,7 +3756,7 @@ bool cmFileCommand::HandleCreateLinkCommand( // Check if copy-on-error is enabled in the arguments. if (!completed && copyOnErrorArg.IsEnabled()) { - completed = cmSystemTools::cmCopyFile(fileName, newFileName); + completed = cmsys::SystemTools::CopyFileAlways(fileName, newFileName); if (!completed) { result = "Copy failed: " + cmSystemTools::GetLastSystemError(); } diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index a5d191d..f544fa1 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -935,12 +935,6 @@ std::string cmSystemTools::FileExistsInParentDirectories( return ""; } -bool cmSystemTools::cmCopyFile(const std::string& source, - const std::string& destination) -{ - return Superclass::CopyFileAlways(source, destination); -} - #ifdef _WIN32 cmSystemTools::WindowsFileRetry cmSystemTools::GetWindowsFileRetry() { @@ -1388,14 +1382,6 @@ cmSystemTools::FileFormat cmSystemTools::GetFileFormat(std::string const& ext) return cmSystemTools::UNKNOWN_FILE_FORMAT; } -bool cmSystemTools::Split(const char* s, std::vector& l) -{ - std::vector temp; - bool res = Superclass::Split(s, temp); - l.insert(l.end(), temp.begin(), temp.end()); - return res; -} - std::string cmSystemTools::ConvertToOutputPath(std::string const& path) { #if defined(_WIN32) && !defined(__CYGWIN__) diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index ba6de51..82e4f01 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -172,10 +172,6 @@ public: static bool SimpleGlob(const std::string& glob, std::vector& files, int type = 0); - ///! Copy a file. - static bool cmCopyFile(const std::string& source, - const std::string& destination); - /** Rename a file or directory within a single disk volume (atomic if possible). */ static bool RenameFile(const std::string& oldname, @@ -347,9 +343,6 @@ public: cmDuration timeout, std::vector& out, std::vector& err); - /** Split a string on its newlines into multiple lines. Returns - false only if the last line stored had no newline. */ - static bool Split(const char* s, std::vector& l); static void SetForceUnixPaths(bool v) { s_ForceUnixPaths = v; } static bool GetForceUnixPaths() { return s_ForceUnixPaths; } diff --git a/Source/cmake.cxx b/Source/cmake.cxx index ff6b04b..dd29c0c 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -2354,7 +2354,7 @@ int cmake::GetSystemInformation(std::vector& args) outFile += "/CMakeLists.txt"; // Copy file - if (!cmSystemTools::cmCopyFile(inFile, outFile)) { + if (!cmsys::SystemTools::CopyFileAlways(inFile, outFile)) { std::cerr << "Error copying file \"" << inFile << "\" to \"" << outFile << "\".\n"; return 1; diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index 4415ba6..21802ad 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -482,7 +482,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() - 1; cc++) { - if (!cmSystemTools::cmCopyFile(args[cc], args.back())) { + if (!cmsys::SystemTools::CopyFileAlways(args[cc], args.back())) { std::cerr << "Error copying file \"" << args[cc] << "\" to \"" << args.back() << "\".\n"; return_value = true; ----------------------------------------------------------------------- Summary of changes: Source/cmFileCommand.cxx | 2 +- Source/cmSystemTools.cxx | 14 -------------- Source/cmSystemTools.h | 7 ------- Source/cmake.cxx | 2 +- Source/cmcmd.cxx | 2 +- 5 files changed, 3 insertions(+), 24 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Sat Feb 16 00:03:06 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Sat, 16 Feb 2019 00:03:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-98-g657b309 Message-ID: <20190216050306.8BE4B1253A5@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 657b30905a9d03869c99064872ec715c9934312a (commit) from 820424d95d7b10ae08affe79288ac594a561e5bd (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=657b30905a9d03869c99064872ec715c9934312a commit 657b30905a9d03869c99064872ec715c9934312a Author: Kitware Robot AuthorDate: Sat Feb 16 00:01:07 2019 -0500 Commit: Kitware Robot CommitDate: Sat Feb 16 00:01:07 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index e69ceb9..ceee9cd 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 14) -set(CMake_VERSION_PATCH 20190215) +set(CMake_VERSION_PATCH 20190216) #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 17 00:03:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Sun, 17 Feb 2019 00:03:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-99-g8ec1942 Message-ID: <20190217050304.987A711E700@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 8ec1942f62a659154abdd99602440757f5eef485 (commit) from 657b30905a9d03869c99064872ec715c9934312a (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=8ec1942f62a659154abdd99602440757f5eef485 commit 8ec1942f62a659154abdd99602440757f5eef485 Author: Kitware Robot AuthorDate: Sun Feb 17 00:01:05 2019 -0500 Commit: Kitware Robot CommitDate: Sun Feb 17 00:01:05 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index ceee9cd..c6f1f68 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 14) -set(CMake_VERSION_PATCH 20190216) +set(CMake_VERSION_PATCH 20190217) #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 18 00:03:08 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 18 Feb 2019 00:03:08 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-100-gf1235fd Message-ID: <20190218050308.8F2BF11EA28@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 f1235fd37d101d021ffa2dde1c67f0ea1cf1cc87 (commit) from 8ec1942f62a659154abdd99602440757f5eef485 (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=f1235fd37d101d021ffa2dde1c67f0ea1cf1cc87 commit f1235fd37d101d021ffa2dde1c67f0ea1cf1cc87 Author: Kitware Robot AuthorDate: Mon Feb 18 00:01:19 2019 -0500 Commit: Kitware Robot CommitDate: Mon Feb 18 00:01:19 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index c6f1f68..6af2c8e 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 14) -set(CMake_VERSION_PATCH 20190217) +set(CMake_VERSION_PATCH 20190218) #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 18 09:13:07 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 18 Feb 2019 09:13:07 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-112-gbafd0ff Message-ID: <20190218141307.32F7911DD32@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 bafd0ffa987bea9216e7722c027478f26d5e8f6a (commit) via 0f2eb9ac6fff686c999c3058a76ec398c054bc0b (commit) via 786edf9ab408c35384a081d9f33ec048b4060f1f (commit) via 1f8ed4141979ee4e2f2cc6aab8ad31a4942bd056 (commit) via 36323162cb1229148cdb8085f282d93f9c8ab244 (commit) via 03e10384ecb779ba6e02028d6833c5e8cd3541c5 (commit) via d2489f2fde0adad51272b83e44957860f7b4c57f (commit) via f2072a6554a8ec7969460509f3d05c07680c1f18 (commit) via f2820bce1560ab2ca0c991f16aa5cf5dcfb3d88f (commit) via 2cc145928c3f024b99f7af574316caf79768b96c (commit) via ae5e97a00568d15dedea073b58668e646e3c0d2e (commit) via 91344e7a46a9c6a2d20781d889673143bd74d15a (commit) from f1235fd37d101d021ffa2dde1c67f0ea1cf1cc87 (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=bafd0ffa987bea9216e7722c027478f26d5e8f6a commit bafd0ffa987bea9216e7722c027478f26d5e8f6a Merge: 0f2eb9a 1f8ed41 Author: Brad King AuthorDate: Mon Feb 18 09:11:21 2019 -0500 Commit: Brad King CommitDate: Mon Feb 18 09:11:21 2019 -0500 Merge branch 'release-3.14' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0f2eb9ac6fff686c999c3058a76ec398c054bc0b commit 0f2eb9ac6fff686c999c3058a76ec398c054bc0b Merge: 786edf9 2cc1459 Author: Brad King AuthorDate: Mon Feb 18 14:08:59 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 18 09:09:55 2019 -0500 Merge topic 'get_filename_component_docs' 2cc145928c Help: Remove outdated statement about get_filename_component() Acked-by: Kitware Robot Merge-request: !2973 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=786edf9ab408c35384a081d9f33ec048b4060f1f commit 786edf9ab408c35384a081d9f33ec048b4060f1f Merge: 03e1038 f2072a6 Author: Brad King AuthorDate: Mon Feb 18 14:08:55 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 18 09:09:02 2019 -0500 Merge topic 'externalproject_docs' f2072a6554 Help: Clarify ExternalProject_Add()'s LOG_MERGED_STDOUTERR behavior f2820bce15 Release notes: Make ExternalProject dot points consistent Acked-by: Kitware Robot Merge-request: !2978 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=03e10384ecb779ba6e02028d6833c5e8cd3541c5 commit 03e10384ecb779ba6e02028d6833c5e8cd3541c5 Merge: d2489f2 ae5e97a Author: Brad King AuthorDate: Mon Feb 18 14:04:51 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 18 09:05:30 2019 -0500 Merge topic 'delete_copy_assign' ae5e97a005 Delete some default constructors and assignment operators Acked-by: Kitware Robot Merge-request: !2968 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d2489f2fde0adad51272b83e44957860f7b4c57f commit d2489f2fde0adad51272b83e44957860f7b4c57f Merge: f1235fd 91344e7 Author: Brad King AuthorDate: Mon Feb 18 14:04:41 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 18 09:04:47 2019 -0500 Merge topic 'autogen_test_fix' 91344e7a46 Autogen: Fix RerunMocPlugin test for Ninja generator Acked-by: Kitware Robot Merge-request: !2971 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ae5e97a00568d15dedea073b58668e646e3c0d2e commit ae5e97a00568d15dedea073b58668e646e3c0d2e Author: Albert Astals Cid AuthorDate: Thu Feb 14 17:29:57 2019 +0100 Commit: Brad King CommitDate: Fri Feb 15 07:25:47 2019 -0500 Delete some default constructors and assignment operators They are unused, but if someone used them they would lead to problems since they would copy the internal raw pointers and the destructor would cause double delete diff --git a/Source/CPack/cmCPackGeneratorFactory.h b/Source/CPack/cmCPackGeneratorFactory.h index 7f633e4..972f0f7 100644 --- a/Source/CPack/cmCPackGeneratorFactory.h +++ b/Source/CPack/cmCPackGeneratorFactory.h @@ -22,6 +22,9 @@ public: cmCPackGeneratorFactory(); ~cmCPackGeneratorFactory(); + cmCPackGeneratorFactory(const cmCPackGeneratorFactory&) = delete; + cmCPackGeneratorFactory& operator=(const cmCPackGeneratorFactory&) = delete; + //! Get the generator cmCPackGenerator* NewGenerator(const std::string& name); void DeleteGenerator(cmCPackGenerator* gen); diff --git a/Source/CPack/cmCPackLog.h b/Source/CPack/cmCPackLog.h index 8e99221..65281e3 100644 --- a/Source/CPack/cmCPackLog.h +++ b/Source/CPack/cmCPackLog.h @@ -26,6 +26,9 @@ public: cmCPackLog(); ~cmCPackLog(); + cmCPackLog(const cmCPackLog&) = delete; + cmCPackLog& operator=(const cmCPackLog&) = delete; + enum __log_tags { NOTAG = 0, diff --git a/Source/CTest/cmCTestBuildAndTestHandler.cxx b/Source/CTest/cmCTestBuildAndTestHandler.cxx index 696b52f..b2c88df 100644 --- a/Source/CTest/cmCTestBuildAndTestHandler.cxx +++ b/Source/CTest/cmCTestBuildAndTestHandler.cxx @@ -140,6 +140,11 @@ public: cmSystemTools::SetStdoutCallback(nullptr); cmSystemTools::SetMessageCallback(nullptr); } + + cmCTestBuildAndTestCaptureRAII(const cmCTestBuildAndTestCaptureRAII&) = + delete; + cmCTestBuildAndTestCaptureRAII& operator=( + const cmCTestBuildAndTestCaptureRAII&) = delete; }; int cmCTestBuildAndTestHandler::RunCMakeAndTest(std::string* outstring) diff --git a/Source/CTest/cmCTestBuildHandler.cxx b/Source/CTest/cmCTestBuildHandler.cxx index af664ba..c75f4d4 100644 --- a/Source/CTest/cmCTestBuildHandler.cxx +++ b/Source/CTest/cmCTestBuildHandler.cxx @@ -680,6 +680,8 @@ class cmCTestBuildHandler::LaunchHelper public: LaunchHelper(cmCTestBuildHandler* handler); ~LaunchHelper(); + LaunchHelper(const LaunchHelper&) = delete; + LaunchHelper& operator=(const LaunchHelper&) = delete; private: cmCTestBuildHandler* Handler; diff --git a/Source/CTest/cmCTestCoverageHandler.cxx b/Source/CTest/cmCTestCoverageHandler.cxx index 10928e0..4dda9ad 100644 --- a/Source/CTest/cmCTestCoverageHandler.cxx +++ b/Source/CTest/cmCTestCoverageHandler.cxx @@ -52,6 +52,8 @@ public: } cmsysProcess_Delete(this->Process); } + cmCTestRunProcess(const cmCTestRunProcess&) = delete; + cmCTestRunProcess& operator=(const cmCTestRunProcess&) = delete; void SetCommand(const char* command) { this->CommandLineStrings.clear(); @@ -786,6 +788,9 @@ struct cmCTestCoverageHandlerLocale cmSystemTools::UnsetEnv("LC_ALL"); } } + cmCTestCoverageHandlerLocale(const cmCTestCoverageHandlerLocale&) = delete; + cmCTestCoverageHandlerLocale& operator=( + const cmCTestCoverageHandlerLocale&) = delete; std::string lc_all; }; diff --git a/Source/CTest/cmCTestCurl.h b/Source/CTest/cmCTestCurl.h index 86d9489..6186af8 100644 --- a/Source/CTest/cmCTestCurl.h +++ b/Source/CTest/cmCTestCurl.h @@ -16,6 +16,8 @@ class cmCTestCurl public: cmCTestCurl(cmCTest*); ~cmCTestCurl(); + cmCTestCurl(const cmCTestCurl&) = delete; + cmCTestCurl& operator=(const cmCTestCurl&) = delete; bool UploadFile(std::string const& local_file, std::string const& url, std::string const& fields, std::string& response); bool HttpRequest(std::string const& url, std::string const& fields, diff --git a/Source/CTest/cmCTestHandlerCommand.cxx b/Source/CTest/cmCTestHandlerCommand.cxx index 57a14ef..adf9553 100644 --- a/Source/CTest/cmCTestHandlerCommand.cxx +++ b/Source/CTest/cmCTestHandlerCommand.cxx @@ -76,6 +76,8 @@ public: } } } + SaveRestoreErrorState(const SaveRestoreErrorState&) = delete; + SaveRestoreErrorState& operator=(const SaveRestoreErrorState&) = delete; private: bool InitialErrorState; diff --git a/Source/CTest/cmCTestLaunch.h b/Source/CTest/cmCTestLaunch.h index debbe59..107fd61 100644 --- a/Source/CTest/cmCTestLaunch.h +++ b/Source/CTest/cmCTestLaunch.h @@ -28,6 +28,9 @@ private: cmCTestLaunch(int argc, const char* const* argv); ~cmCTestLaunch(); + cmCTestLaunch(const cmCTestLaunch&) = delete; + cmCTestLaunch& operator=(const cmCTestLaunch&) = delete; + // Run the real command. int Run(); void RunChild(); diff --git a/Source/cmArchiveWrite.cxx b/Source/cmArchiveWrite.cxx index 6e5109a..23be603 100644 --- a/Source/cmArchiveWrite.cxx +++ b/Source/cmArchiveWrite.cxx @@ -54,6 +54,8 @@ public: { } ~Entry() { archive_entry_free(this->Object); } + Entry(const Entry&) = delete; + Entry& operator=(const Entry&) = delete; operator struct archive_entry*() { return this->Object; } }; diff --git a/Source/cmArchiveWrite.h b/Source/cmArchiveWrite.h index 6ecdd63..1f23dae 100644 --- a/Source/cmArchiveWrite.h +++ b/Source/cmArchiveWrite.h @@ -58,6 +58,9 @@ public: ~cmArchiveWrite(); + cmArchiveWrite(const cmArchiveWrite&) = delete; + cmArchiveWrite& operator=(const cmArchiveWrite&) = delete; + /** * Add a path (file or directory) to the archive. Directories are * added recursively. The "path" must be readable on disk, either diff --git a/Source/cmCPluginAPI.cxx b/Source/cmCPluginAPI.cxx index 576d2c3..5efc784 100644 --- a/Source/cmCPluginAPI.cxx +++ b/Source/cmCPluginAPI.cxx @@ -491,12 +491,16 @@ public: typedef std::map derived; typedef derived::iterator iterator; typedef derived::value_type value_type; + cmCPluginAPISourceFileMap() = default; ~cmCPluginAPISourceFileMap() { for (auto const& i : *this) { delete i.second; } } + cmCPluginAPISourceFileMap(const cmCPluginAPISourceFileMap&) = delete; + cmCPluginAPISourceFileMap& operator=(const cmCPluginAPISourceFileMap&) = + delete; }; cmCPluginAPISourceFileMap cmCPluginAPISourceFiles; diff --git a/Source/cmCTest.h b/Source/cmCTest.h index 92a02c3..7dbf4d5 100644 --- a/Source/cmCTest.h +++ b/Source/cmCTest.h @@ -182,6 +182,9 @@ public: cmCTest(); ~cmCTest(); + cmCTest(const cmCTest&) = delete; + cmCTest& operator=(const cmCTest&) = delete; + /** Set the notes files to be created. */ void SetNotesFiles(const char* notes); diff --git a/Source/cmComputeLinkDepends.h b/Source/cmComputeLinkDepends.h index 252f874..dfaaf8b 100644 --- a/Source/cmComputeLinkDepends.h +++ b/Source/cmComputeLinkDepends.h @@ -31,6 +31,9 @@ public: const std::string& config); ~cmComputeLinkDepends(); + cmComputeLinkDepends(const cmComputeLinkDepends&) = delete; + cmComputeLinkDepends& operator=(const cmComputeLinkDepends&) = delete; + // Basic information about each link item. struct LinkEntry { diff --git a/Source/cmCustomCommandGenerator.h b/Source/cmCustomCommandGenerator.h index 9684cff..7fd60c0 100644 --- a/Source/cmCustomCommandGenerator.h +++ b/Source/cmCustomCommandGenerator.h @@ -32,6 +32,9 @@ public: cmCustomCommandGenerator(cmCustomCommand const& cc, std::string config, cmLocalGenerator* lg); ~cmCustomCommandGenerator(); + cmCustomCommandGenerator(const cmCustomCommandGenerator&) = delete; + cmCustomCommandGenerator& operator=(const cmCustomCommandGenerator&) = + delete; cmCustomCommand const& GetCC() const { return this->CC; } unsigned int GetNumberOfCommands() const; std::string GetCommand(unsigned int c) const; diff --git a/Source/cmDependsJavaParserHelper.h b/Source/cmDependsJavaParserHelper.h index 0b445d9..a673b5b 100644 --- a/Source/cmDependsJavaParserHelper.h +++ b/Source/cmDependsJavaParserHelper.h @@ -24,6 +24,10 @@ public: cmDependsJavaParserHelper(); ~cmDependsJavaParserHelper(); + cmDependsJavaParserHelper(const cmDependsJavaParserHelper&) = delete; + cmDependsJavaParserHelper& operator=(const cmDependsJavaParserHelper&) = + delete; + int ParseString(const char* str, int verb); int ParseFile(const char* file); diff --git a/Source/cmELF.h b/Source/cmELF.h index c8a91e4..987f0c3 100644 --- a/Source/cmELF.h +++ b/Source/cmELF.h @@ -28,6 +28,9 @@ public: /** Destruct. */ ~cmELF(); + cmELF(const cmELF&) = delete; + cmELF& operator=(const cmELF&) = delete; + /** Get the error message if any. */ std::string const& GetErrorMessage() const { return this->ErrorMessage; } diff --git a/Source/cmExportSet.h b/Source/cmExportSet.h index 0ef306f..d654c12 100644 --- a/Source/cmExportSet.h +++ b/Source/cmExportSet.h @@ -25,6 +25,9 @@ public: /// Destructor ~cmExportSet(); + cmExportSet(const cmExportSet&) = delete; + cmExportSet& operator=(const cmExportSet&) = delete; + void Compute(cmLocalGenerator* lg); void AddTargetExport(cmTargetExport* tgt); diff --git a/Source/cmExportSetMap.cxx b/Source/cmExportSetMap.cxx index 0740828..293e80c 100644 --- a/Source/cmExportSetMap.cxx +++ b/Source/cmExportSetMap.cxx @@ -23,6 +23,8 @@ void cmExportSetMap::clear() this->derived::clear(); } +cmExportSetMap::cmExportSetMap() = default; + cmExportSetMap::~cmExportSetMap() { this->clear(); diff --git a/Source/cmExportSetMap.h b/Source/cmExportSetMap.h index 0f71c79..3853732 100644 --- a/Source/cmExportSetMap.h +++ b/Source/cmExportSetMap.h @@ -25,8 +25,13 @@ public: void clear(); + cmExportSetMap(); + /// Overloaded destructor deletes all member export sets. ~cmExportSetMap(); + + cmExportSetMap(const cmExportSetMap&) = delete; + cmExportSetMap& operator=(const cmExportSetMap&) = delete; }; #endif diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index aa75a8c..12f1cbb 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -2691,6 +2691,9 @@ public: } } + cURLEasyGuard(const cURLEasyGuard&) = delete; + cURLEasyGuard& operator=(const cURLEasyGuard&) = delete; + void release() { this->Easy = nullptr; } private: diff --git a/Source/cmFileTimeComparison.h b/Source/cmFileTimeComparison.h index 5f74e34..b4e4eb3 100644 --- a/Source/cmFileTimeComparison.h +++ b/Source/cmFileTimeComparison.h @@ -20,6 +20,9 @@ public: cmFileTimeComparison(); ~cmFileTimeComparison(); + cmFileTimeComparison(const cmFileTimeComparison&) = delete; + cmFileTimeComparison& operator=(const cmFileTimeComparison&) = delete; + /** * Compare file modification times. * Return true for successful comparison and false for error. diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index 45b096f..0d22ed8 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -1372,6 +1372,9 @@ public: cmSystemTools::RemoveFile(this->File); } } + cmFindPackageCommandHoldFile(const cmFindPackageCommandHoldFile&) = delete; + cmFindPackageCommandHoldFile& operator=( + const cmFindPackageCommandHoldFile&) = delete; void Release() { this->File = nullptr; } }; diff --git a/Source/cmFortranParser.h b/Source/cmFortranParser.h index 0762340..6a33be5 100644 --- a/Source/cmFortranParser.h +++ b/Source/cmFortranParser.h @@ -141,6 +141,9 @@ struct cmFortranParser_s std::set defines, cmFortranSourceInfo& info); ~cmFortranParser_s(); + cmFortranParser_s(const cmFortranParser_s&) = delete; + cmFortranParser_s& operator=(const cmFortranParser_s&) = delete; + bool FindIncludeFile(const char* dir, const char* includeName, std::string& fileName); diff --git a/Source/cmInstalledFile.h b/Source/cmInstalledFile.h index 070b954..b7d602e 100644 --- a/Source/cmInstalledFile.h +++ b/Source/cmInstalledFile.h @@ -32,6 +32,9 @@ public: Property(); ~Property(); + Property(const Property&) = delete; + Property& operator=(const Property&) = delete; + ExpressionVectorType ValueExpressions; }; @@ -41,6 +44,9 @@ public: ~cmInstalledFile(); + cmInstalledFile(const cmInstalledFile&) = delete; + cmInstalledFile& operator=(const cmInstalledFile&) = delete; + void RemoveProperty(const std::string& prop); void SetProperty(cmMakefile const* mf, const std::string& prop, diff --git a/Source/cmListFileCache.cxx b/Source/cmListFileCache.cxx index f855119..f99caed 100644 --- a/Source/cmListFileCache.cxx +++ b/Source/cmListFileCache.cxx @@ -27,6 +27,8 @@ struct cmListFileParser cmListFileParser(cmListFile* lf, cmListFileBacktrace lfbt, cmMessenger* messenger, const char* filename); ~cmListFileParser(); + cmListFileParser(const cmListFileParser&) = delete; + cmListFileParser& operator=(const cmListFileParser&) = delete; void IssueFileOpenError(std::string const& text) const; void IssueError(std::string const& text) const; bool ParseFile(); diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index b0dacf1..560181f 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -348,6 +348,9 @@ public: this->Makefile->Backtrace = this->Makefile->Backtrace.Pop(); } + cmMakefileCall(const cmMakefileCall&) = delete; + cmMakefileCall& operator=(const cmMakefileCall&) = delete; + private: cmMakefile* Makefile; }; @@ -439,6 +442,9 @@ public: ~IncludeScope(); void Quiet() { this->ReportError = false; } + IncludeScope(const IncludeScope&) = delete; + IncludeScope& operator=(const IncludeScope&) = delete; + private: cmMakefile* Makefile; bool NoPolicyScope; @@ -606,6 +612,9 @@ public: void Quiet() { this->ReportError = false; } + ListFileScope(const ListFileScope&) = delete; + ListFileScope& operator=(const ListFileScope&) = delete; + private: cmMakefile* Makefile; bool ReportError; @@ -1497,6 +1506,9 @@ public: void Quiet() { this->ReportError = false; } + BuildsystemFileScope(const BuildsystemFileScope&) = delete; + BuildsystemFileScope& operator=(const BuildsystemFileScope&) = delete; + private: cmMakefile* Makefile; cmGlobalGenerator* GG; diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 9f01986..0800ce4 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -313,6 +313,9 @@ public: PolicyPushPop(cmMakefile* m); ~PolicyPushPop(); + PolicyPushPop(const PolicyPushPop&) = delete; + PolicyPushPop& operator=(const PolicyPushPop&) = delete; + private: cmMakefile* Makefile; }; @@ -743,6 +746,9 @@ public: cmPolicies::PolicyMap const& pm); ~FunctionPushPop(); + FunctionPushPop(const FunctionPushPop&) = delete; + FunctionPushPop& operator=(const FunctionPushPop&) = delete; + void Quiet() { this->ReportError = false; } private: @@ -757,6 +763,9 @@ public: cmPolicies::PolicyMap const& pm); ~MacroPushPop(); + MacroPushPop(const MacroPushPop&) = delete; + MacroPushPop& operator=(const MacroPushPop&) = delete; + void Quiet() { this->ReportError = false; } private: diff --git a/Source/cmOrderDirectories.h b/Source/cmOrderDirectories.h index 5916f7a..23e61d6 100644 --- a/Source/cmOrderDirectories.h +++ b/Source/cmOrderDirectories.h @@ -25,6 +25,8 @@ public: cmOrderDirectories(cmGlobalGenerator* gg, cmGeneratorTarget const* target, const char* purpose); ~cmOrderDirectories(); + cmOrderDirectories(const cmOrderDirectories&) = delete; + cmOrderDirectories& operator=(const cmOrderDirectories&) = delete; void AddRuntimeLibrary(std::string const& fullPath, const char* soname = nullptr); void AddLinkLibrary(std::string const& fullPath); diff --git a/Source/cmOutputRequiredFilesCommand.cxx b/Source/cmOutputRequiredFilesCommand.cxx index 46d04a6..e0c1dad 100644 --- a/Source/cmOutputRequiredFilesCommand.cxx +++ b/Source/cmOutputRequiredFilesCommand.cxx @@ -92,6 +92,9 @@ public: */ ~cmLBDepend() { cmDeleteAll(this->DependInformationMap); } + cmLBDepend(const cmLBDepend&) = delete; + cmLBDepend& operator=(const cmLBDepend&) = delete; + /** * Set the makefile that is used as a source of classes. */ diff --git a/Source/cmSourceFile.h b/Source/cmSourceFile.h index a82a58a..d579018 100644 --- a/Source/cmSourceFile.h +++ b/Source/cmSourceFile.h @@ -34,6 +34,9 @@ public: ~cmSourceFile(); + cmSourceFile(const cmSourceFile&) = delete; + cmSourceFile& operator=(const cmSourceFile&) = delete; + /** * Get the list of the custom commands for this source file */ diff --git a/Source/cmState.h b/Source/cmState.h index f755f83..190eafc 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -35,6 +35,9 @@ public: cmState(); ~cmState(); + cmState(const cmState&) = delete; + cmState& operator=(const cmState&) = delete; + enum Mode { Unknown, diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index a5d191d..276cb57 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -521,6 +521,8 @@ public: } free(this->ArgV); } + cmSystemToolsArgV(const cmSystemToolsArgV&) = delete; + cmSystemToolsArgV& operator=(const cmSystemToolsArgV&) = delete; void Store(std::vector& args) const { for (char** arg = this->ArgV; arg && *arg; ++arg) { @@ -533,7 +535,7 @@ void cmSystemTools::ParseUnixCommandLine(const char* command, std::vector& args) { // Invoke the underlying parser. - cmSystemToolsArgV argv = cmsysSystem_Parse_CommandForUnix(command, 0); + cmSystemToolsArgV argv(cmsysSystem_Parse_CommandForUnix(command, 0)); argv.Store(args); } diff --git a/Source/cmVariableWatch.h b/Source/cmVariableWatch.h index 5855fed..1230101 100644 --- a/Source/cmVariableWatch.h +++ b/Source/cmVariableWatch.h @@ -72,6 +72,9 @@ protected: this->DeleteDataCall(this->ClientData); } } + Pair() = default; + Pair(const Pair&) = delete; + Pair& operator=(const Pair&) = delete; }; typedef std::vector> VectorOfPairs; diff --git a/Source/cmWorkingDirectory.h b/Source/cmWorkingDirectory.h index 1f18ce7..d4a164d 100644 --- a/Source/cmWorkingDirectory.h +++ b/Source/cmWorkingDirectory.h @@ -22,6 +22,9 @@ public: cmWorkingDirectory(std::string const& newdir); ~cmWorkingDirectory(); + cmWorkingDirectory(const cmWorkingDirectory&) = delete; + cmWorkingDirectory& operator=(const cmWorkingDirectory&) = delete; + bool SetDirectory(std::string const& newdir); void Pop(); bool Failed() const { return ResultCode != 0; } diff --git a/Source/cmXMLWriter.h b/Source/cmXMLWriter.h index 1df8a09..512e103 100644 --- a/Source/cmXMLWriter.h +++ b/Source/cmXMLWriter.h @@ -146,6 +146,8 @@ public: xmlwr.StartDocument(); } ~cmXMLDocument() { xmlwr.EndDocument(); } + cmXMLDocument(const cmXMLDocument&) = delete; + cmXMLDocument& operator=(const cmXMLDocument&) = delete; private: friend class cmXMLElement; @@ -172,6 +174,9 @@ public: } ~cmXMLElement() { xmlwr.EndElement(); } + cmXMLElement(const cmXMLElement&) = delete; + cmXMLElement& operator=(const cmXMLElement&) = delete; + template cmXMLElement& Attribute(const char* name, T const& value) { https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=91344e7a46a9c6a2d20781d889673143bd74d15a commit 91344e7a46a9c6a2d20781d889673143bd74d15a Author: Sebastian Holtermann AuthorDate: Fri Feb 15 10:56:55 2019 +0100 Commit: Sebastian Holtermann CommitDate: Fri Feb 15 10:56:55 2019 +0100 Autogen: Fix RerunMocPlugin test for Ninja generator diff --git a/Tests/QtAutogen/RerunMocPlugin/CMakeLists.txt b/Tests/QtAutogen/RerunMocPlugin/CMakeLists.txt index 6ab9538..e1951f1 100644 --- a/Tests/QtAutogen/RerunMocPlugin/CMakeLists.txt +++ b/Tests/QtAutogen/RerunMocPlugin/CMakeLists.txt @@ -80,17 +80,10 @@ find_library(plEFile "PlugE" PATHS "${mocPlugBinDir}/Debug" "${mocPlugBinDir}" N # To avoid a race condition where the library has the same timestamp # as a source file and therefore gets rebuild # - sleep to ensure a timestamp change -# - touch library to ensure it has a new timestamp -acquire_timestamps(Before) +# - rebuild library to ensure it has a new timestamp sleep() -message(STATUS "Touching library files to ensure new timestamps") -file(TOUCH_NOCREATE "${plAFile}" "${plBFile}" "${plCFile}" "${plDFile}" "${plEFile}") -acquire_timestamps(After) -require_change(A) -require_change(B) -require_change(C) -require_change(D) -require_change(E) +message(STATUS "Rebuilding library files to ensure new timestamps") +rebuild(1) # - Ensure that the timestamp will change. @@ -98,7 +91,7 @@ require_change(E) # - Rebuild acquire_timestamps(Before) sleep() -message(STATUS "Changing json files") +message(STATUS "Changing json files.") configure_file("${mocPlugSrcDir}/jsonIn/StyleD.json" "${mocPlugBinDir}/jsonFiles/StyleC.json") configure_file("${mocPlugSrcDir}/jsonIn/StyleE.json" "${mocPlugBinDir}/jsonFiles/sub/StyleD.json") configure_file("${mocPlugSrcDir}/jsonIn/StyleC.json" "${mocPlugBinDir}/jsonFiles/StyleE.json") ----------------------------------------------------------------------- Summary of changes: Help/command/get_filename_component.rst | 7 +++---- Help/release/3.14.rst | 2 +- Modules/ExternalProject.cmake | 3 ++- Source/CPack/cmCPackGeneratorFactory.h | 3 +++ Source/CPack/cmCPackLog.h | 3 +++ Source/CTest/cmCTestBuildAndTestHandler.cxx | 5 +++++ Source/CTest/cmCTestBuildHandler.cxx | 2 ++ Source/CTest/cmCTestCoverageHandler.cxx | 5 +++++ Source/CTest/cmCTestCurl.h | 2 ++ Source/CTest/cmCTestHandlerCommand.cxx | 2 ++ Source/CTest/cmCTestLaunch.h | 3 +++ Source/cmArchiveWrite.cxx | 2 ++ Source/cmArchiveWrite.h | 3 +++ Source/cmCPluginAPI.cxx | 4 ++++ Source/cmCTest.h | 3 +++ Source/cmComputeLinkDepends.h | 3 +++ Source/cmCustomCommandGenerator.h | 3 +++ Source/cmDependsJavaParserHelper.h | 4 ++++ Source/cmELF.h | 3 +++ Source/cmExportSet.h | 3 +++ Source/cmExportSetMap.cxx | 2 ++ Source/cmExportSetMap.h | 5 +++++ Source/cmFileCommand.cxx | 3 +++ Source/cmFileTimeComparison.h | 3 +++ Source/cmFindPackageCommand.cxx | 3 +++ Source/cmFortranParser.h | 3 +++ Source/cmInstalledFile.h | 6 ++++++ Source/cmListFileCache.cxx | 2 ++ Source/cmMakefile.cxx | 12 ++++++++++++ Source/cmMakefile.h | 9 +++++++++ Source/cmOrderDirectories.h | 2 ++ Source/cmOutputRequiredFilesCommand.cxx | 3 +++ Source/cmSourceFile.h | 3 +++ Source/cmState.h | 3 +++ Source/cmSystemTools.cxx | 4 +++- Source/cmVariableWatch.h | 3 +++ Source/cmWorkingDirectory.h | 3 +++ Source/cmXMLWriter.h | 5 +++++ Tests/QtAutogen/RerunMocPlugin/CMakeLists.txt | 15 ++++----------- 39 files changed, 136 insertions(+), 18 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 18 09:13:07 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 18 Feb 2019 09:13:07 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.14.0-rc2-5-g1f8ed41 Message-ID: <20190218141307.4F97F11DD32@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 1f8ed4141979ee4e2f2cc6aab8ad31a4942bd056 (commit) via 36323162cb1229148cdb8085f282d93f9c8ab244 (commit) via f2072a6554a8ec7969460509f3d05c07680c1f18 (commit) via f2820bce1560ab2ca0c991f16aa5cf5dcfb3d88f (commit) via 2cc145928c3f024b99f7af574316caf79768b96c (commit) from e6897c72e7c59f7a0b82ed19c1bdb40d42f7adaa (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/command/get_filename_component.rst | 7 +++---- Help/release/3.14.rst | 2 +- Modules/ExternalProject.cmake | 3 ++- 3 files changed, 6 insertions(+), 6 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 18 09:23:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 18 Feb 2019 09:23:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-114-g0923246 Message-ID: <20190218142304.7E269125692@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 0923246b2e2fb5be0d2fa1b256879a326aeee13b (commit) via afb325018ebe7c41933b652732a43e4bb4777588 (commit) from bafd0ffa987bea9216e7722c027478f26d5e8f6a (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=0923246b2e2fb5be0d2fa1b256879a326aeee13b commit 0923246b2e2fb5be0d2fa1b256879a326aeee13b Merge: bafd0ff afb3250 Author: Brad King AuthorDate: Mon Feb 18 14:20:01 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 18 09:20:16 2019 -0500 Merge topic 'require-xcode-5' afb325018e Xcode: Require at least Xcode 5 Acked-by: Kitware Robot Merge-request: !2975 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=afb325018ebe7c41933b652732a43e4bb4777588 commit afb325018ebe7c41933b652732a43e4bb4777588 Author: Gregor Jasny AuthorDate: Sun Feb 10 11:22:38 2019 +0100 Commit: Gregor Jasny CommitDate: Sat Feb 16 15:20:39 2019 +0100 Xcode: Require at least Xcode 5 diff --git a/CMakeCPack.cmake b/CMakeCPack.cmake index dc9f0ba..78e22cc 100644 --- a/CMakeCPack.cmake +++ b/CMakeCPack.cmake @@ -102,9 +102,6 @@ if(CMake_INSTALL_COMPONENTS) if(WIN32 AND NOT CYGWIN) list(APPEND _CPACK_IFW_COMPONENTS_ALL cmcldeps) endif() - if(APPLE) - list(APPEND _CPACK_IFW_COMPONENTS_ALL cmakexbuild) - endif() if(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME) set(_CPACK_IFW_COMPONENT_UNSPECIFIED_NAME ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}) diff --git a/CMakeCPackOptions.cmake.in b/CMakeCPackOptions.cmake.in index a08c97d..2a4bcc5 100644 --- a/CMakeCPackOptions.cmake.in +++ b/CMakeCPackOptions.cmake.in @@ -109,16 +109,6 @@ if(CPACK_GENERATOR MATCHES "IFW") set(CPACK_IFW_COMPONENT_CMCLDEPS_VERSION "@CMake_IFW_ROOT_COMPONENT_VERSION@") - set(CPACK_COMPONENT_CMAKEXBUILD_DISPLAY_NAME "cmakexbuild") - set(CPACK_COMPONENT_CMAKEXBUILD_DESCRIPTION - "The \"cmakexbuild\" executable is a wrapper program for \"xcodebuild\"") - set(CPACK_COMPONENT_CMAKEXBUILD_REQUIRED TRUE) - set(CPACK_COMPONENT_CMAKEXBUILD_GROUP Tools) - set(CPACK_IFW_COMPONENT_CMAKEXBUILD_NAME "CMakeXBuild") - set(CPACK_IFW_COMPONENT_CMAKEXBUILD_PRIORITY 85) - set(CPACK_IFW_COMPONENT_CMAKEXBUILD_VERSION - "@CMake_IFW_ROOT_COMPONENT_VERSION@") - # Dialogs set(CPACK_COMPONENT_GROUP_DIALOGS_DISPLAY_NAME "Interactive Dialogs") set(CPACK_COMPONENT_GROUP_DIALOGS_DESCRIPTION diff --git a/Help/generator/Xcode.rst b/Help/generator/Xcode.rst index 71430c7..d893ac5 100644 --- a/Help/generator/Xcode.rst +++ b/Help/generator/Xcode.rst @@ -3,9 +3,7 @@ Xcode Generate Xcode project files. -This supports Xcode 3.0 and above. Support for Xcode versions prior -to Xcode 5 is deprecated and will be dropped in a future version of -CMake. +This supports Xcode 5.0 and above. Toolset Selection ^^^^^^^^^^^^^^^^^ diff --git a/Help/release/dev/require-xcode-5.rst b/Help/release/dev/require-xcode-5.rst new file mode 100644 index 0000000..6cfe96a --- /dev/null +++ b/Help/release/dev/require-xcode-5.rst @@ -0,0 +1,4 @@ +require-xcode-5 +--------------- + +* The :generator:`Xcode` generator now requires at least Xcode 5. diff --git a/Help/variable/CMAKE_MAKE_PROGRAM.rst b/Help/variable/CMAKE_MAKE_PROGRAM.rst index 4f5a50f..56df2df 100644 --- a/Help/variable/CMAKE_MAKE_PROGRAM.rst +++ b/Help/variable/CMAKE_MAKE_PROGRAM.rst @@ -19,15 +19,11 @@ to configure the project: This generator stores ``CMAKE_MAKE_PROGRAM`` in the CMake cache so that it may be edited by the user. -* The :generator:`Xcode` generator sets this to ``xcodebuild`` (or possibly an - otherwise undocumented ``cmakexbuild`` wrapper implementing some - workarounds). +* The :generator:`Xcode` generator sets this to ``xcodebuild``. This generator prefers to lookup the build tool at build time rather than to store ``CMAKE_MAKE_PROGRAM`` in the CMake cache - ahead of time. This is because ``xcodebuild`` is easy to find, - the ``cmakexbuild`` wrapper is needed only for older Xcode versions, - and the path to ``cmakexbuild`` may be outdated if CMake itself moves. + ahead of time. This is because ``xcodebuild`` is easy to find. For compatibility with versions of CMake prior to 3.2, if a user or project explicitly adds ``CMAKE_MAKE_PROGRAM`` to diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 1c06052..663d42e 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -1060,9 +1060,6 @@ if(CPACK_ENABLE_FREEBSD_PKG AND FREEBSD_PKG_INCLUDE_DIRS AND FREEBSD_PKG_LIBRARI endif() if(APPLE) - add_executable(cmakexbuild cmakexbuild.cxx) - list(APPEND _tools cmakexbuild) - target_link_libraries(cmakexbuild CMakeLib) add_executable(OSXScriptLauncher CPack/OSXScriptLauncher.cxx) target_link_libraries(OSXScriptLauncher cmsys) diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index 51c001e..4e4e1bb 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -217,7 +217,7 @@ cmGlobalGenerator* cmGlobalXCodeGenerator::Factory::CreateGlobalGenerator( sscanf(version_string.c_str(), "%u.%u", &v[0], &v[1]); unsigned int version_number = 10 * v[0] + v[1]; - if (version_number < 30) { + if (version_number < 50) { cm->IssueMessage(MessageType::FATAL_ERROR, "Xcode " + version_string + " not supported."); return nullptr; @@ -256,15 +256,11 @@ std::string const& cmGlobalXCodeGenerator::GetXcodeBuildCommand() std::string cmGlobalXCodeGenerator::FindXcodeBuildCommand() { - if (this->XcodeVersion >= 40) { - std::string makeProgram = cmSystemTools::FindProgram("xcodebuild"); - if (makeProgram.empty()) { - makeProgram = "xcodebuild"; - } - return makeProgram; + std::string makeProgram = cmSystemTools::FindProgram("xcodebuild"); + if (makeProgram.empty()) { + makeProgram = "xcodebuild"; } - // Use cmakexbuild wrapper to suppress environment dump from output. - return cmSystemTools::GetCMakeCommand() + "xbuild"; + return makeProgram; } bool cmGlobalXCodeGenerator::SetGeneratorToolset(std::string const& ts, @@ -550,12 +546,7 @@ void cmGlobalXCodeGenerator::AddExtraTargets( // run the depend check makefile as a post build rule // this will make sure that when the next target is built // things are up-to-date - if (target->GetType() == cmStateEnums::OBJECT_LIBRARY || - (this->XcodeVersion < 50 && - (target->GetType() == cmStateEnums::EXECUTABLE || - target->GetType() == cmStateEnums::STATIC_LIBRARY || - target->GetType() == cmStateEnums::SHARED_LIBRARY || - target->GetType() == cmStateEnums::MODULE_LIBRARY))) { + if (target->GetType() == cmStateEnums::OBJECT_LIBRARY) { makeHelper.back() = // fill placeholder this->PostBuildMakeTarget(target->GetName(), "$(CONFIGURATION)"); cmCustomCommandLines commandLines; @@ -1183,23 +1174,6 @@ bool cmGlobalXCodeGenerator::CreateXCodeTarget( } } - if (this->XcodeVersion < 50) { - // Add object library contents as external objects. (Equivalent to - // the externalObjFiles above, except each one is not a cmSourceFile - // within the target.) - std::vector objs; - gtgt->GetExternalObjects(objs, ""); - for (auto sourceFile : objs) { - if (sourceFile->GetObjectLibrary().empty()) { - continue; - } - std::string const& obj = sourceFile->GetFullPath(); - cmXCodeObject* xsf = - this->CreateXCodeSourceFileFromPath(obj, gtgt, "", nullptr); - externalObjFiles.push_back(xsf); - } - } - // some build phases only apply to bundles and/or frameworks bool isFrameworkTarget = gtgt->IsFrameworkOnApple(); bool isBundleTarget = gtgt->GetPropertyAsBool("MACOSX_BUNDLE"); @@ -2123,9 +2097,6 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, default: break; } - if (this->XcodeVersion < 40) { - buildSettings->AddAttribute("PREBINDING", this->CreateString("NO")); - } BuildObjectListOrString dirs(this, true); BuildObjectListOrString fdirs(this, true); @@ -2775,8 +2746,7 @@ void cmGlobalXCodeGenerator::AddDependAndLinkInformation(cmXCodeObject* target) // Loop over configuration types and set per-configuration info. for (auto const& configName : this->CurrentConfigurationTypes) { - // Get the current configuration name. - if (this->XcodeVersion >= 50) { + { // Add object library contents as link flags. std::string linkObjs; const char* sep = ""; @@ -2886,7 +2856,7 @@ bool cmGlobalXCodeGenerator::CreateGroups( // Put cmSourceFile instances in proper groups: for (auto const& si : gtgt->GetAllConfigSources()) { cmSourceFile const* sf = si.Source; - if (this->XcodeVersion >= 50 && !sf->GetObjectLibrary().empty()) { + if (!sf->GetObjectLibrary().empty()) { // Object library files go on the link line instead. continue; } @@ -3076,16 +3046,8 @@ bool cmGlobalXCodeGenerator::CreateXCodeObjects( v << std::setfill('0') << std::setw(4) << XcodeVersion * 10; group->AddAttribute("LastUpgradeCheck", this->CreateString(v.str())); this->RootObject->AddAttribute("attributes", group); - if (this->XcodeVersion >= 32) { - this->RootObject->AddAttribute("compatibilityVersion", - this->CreateString("Xcode 3.2")); - } else if (this->XcodeVersion >= 31) { - this->RootObject->AddAttribute("compatibilityVersion", - this->CreateString("Xcode 3.1")); - } else { - this->RootObject->AddAttribute("compatibilityVersion", - this->CreateString("Xcode 3.0")); - } + this->RootObject->AddAttribute("compatibilityVersion", + this->CreateString("Xcode 3.2")); // Point Xcode at the top of the source tree. { std::string pdir = @@ -3540,13 +3502,7 @@ void cmGlobalXCodeGenerator::WriteXCodePBXProj(std::ostream& fout, cmXCodeObject::Indent(1, fout); fout << "};\n"; cmXCodeObject::Indent(1, fout); - if (this->XcodeVersion >= 32) { - fout << "objectVersion = 46;\n"; - } else if (this->XcodeVersion >= 31) { - fout << "objectVersion = 45;\n"; - } else { - fout << "objectVersion = 44;\n"; - } + fout << "objectVersion = 46;\n"; cmXCode21Object::PrintList(this->XCodeObjects, fout); cmXCodeObject::Indent(1, fout); fout << "rootObject = " << this->RootObject->GetId() @@ -3714,11 +3670,7 @@ void cmGlobalXCodeGenerator::AppendFlag(std::string& flags, // Flag value with escaped quotes and backslashes. for (auto c : flag) { if (c == '\'') { - if (this->XcodeVersion >= 40) { - flags += "'\\''"; - } else { - flags += "\\'"; - } + flags += "'\\''"; } else if (c == '\\') { flags += "\\\\"; } else { diff --git a/Source/cmakexbuild.cxx b/Source/cmakexbuild.cxx deleted file mode 100644 index f5c8f07..0000000 --- a/Source/cmakexbuild.cxx +++ /dev/null @@ -1,80 +0,0 @@ -/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying - file Copyright.txt or https://cmake.org/licensing for details. */ - -#include "cmConfigure.h" // IWYU pragma: keep - -#include "cmsys/Process.h" -#include -#include -#include - -#include "cmDuration.h" -#include "cmSystemTools.h" - -// This is a wrapper program for xcodebuild -// it calls xcodebuild, and does two things -// it removes much of the output, all the setenv -// stuff. Also, it checks for the text file busy -// error, and re-runs xcodebuild until that error does -// not show up. - -int RunXCode(std::vector& argv, bool& hitbug) -{ - hitbug = false; - cmsysProcess* cp = cmsysProcess_New(); - cmsysProcess_SetCommand(cp, argv.data()); - cmsysProcess_SetTimeout(cp, 0); - cmsysProcess_Execute(cp); - std::vector out; - std::vector err; - std::string line; - int pipe = - cmSystemTools::WaitForLine(cp, line, std::chrono::seconds(100), out, err); - while (pipe != cmsysProcess_Pipe_None) { - if (line.find("/bin/sh: bad interpreter: Text file busy") != - std::string::npos) { - hitbug = true; - std::cerr << "Hit xcodebuild bug : " << line << "\n"; - } - // if the bug is hit, no more output should be generated - // because it may contain bogus errors - // also remove all output with setenv in it to tone down - // the verbosity of xcodebuild - if (!hitbug && (line.find("setenv") == std::string::npos)) { - if (pipe == cmsysProcess_Pipe_STDERR) { - std::cerr << line << "\n"; - } else if (pipe == cmsysProcess_Pipe_STDOUT) { - std::cout << line << "\n"; - } - } - pipe = cmSystemTools::WaitForLine(cp, line, std::chrono::seconds(100), out, - err); - } - cmsysProcess_WaitForExit(cp, nullptr); - if (cmsysProcess_GetState(cp) == cmsysProcess_State_Exited) { - return cmsysProcess_GetExitValue(cp); - } - if (cmsysProcess_GetState(cp) == cmsysProcess_State_Error) { - return -1; - } - return -1; -} - -int main(int ac, char* av[]) -{ - std::vector argv; - argv.push_back("xcodebuild"); - for (int i = 1; i < ac; i++) { - argv.push_back(av[i]); - } - argv.push_back(nullptr); - bool hitbug = true; - int ret = 0; - while (hitbug) { - ret = RunXCode(argv, hitbug); - } - if (ret < 0) { - return 255; - } - return ret; -} ----------------------------------------------------------------------- Summary of changes: CMakeCPack.cmake | 3 -- CMakeCPackOptions.cmake.in | 10 ----- Help/generator/Xcode.rst | 4 +- Help/release/dev/require-xcode-5.rst | 4 ++ Help/variable/CMAKE_MAKE_PROGRAM.rst | 8 +--- Source/CMakeLists.txt | 3 -- Source/cmGlobalXCodeGenerator.cxx | 72 ++++++-------------------------- Source/cmakexbuild.cxx | 80 ------------------------------------ 8 files changed, 19 insertions(+), 165 deletions(-) create mode 100644 Help/release/dev/require-xcode-5.rst delete mode 100644 Source/cmakexbuild.cxx hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 18 10:23:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 18 Feb 2019 10:23:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-116-g566652b Message-ID: <20190218152304.8429AFB392@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 566652b0c8ffe6896d3d3ae1cafd58dddd34eecd (commit) via 0f5a9f7934913935d632fc596ba1b585aa10fa29 (commit) from 0923246b2e2fb5be0d2fa1b256879a326aeee13b (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=566652b0c8ffe6896d3d3ae1cafd58dddd34eecd commit 566652b0c8ffe6896d3d3ae1cafd58dddd34eecd Merge: 0923246 0f5a9f7 Author: Brad King AuthorDate: Mon Feb 18 15:22:27 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 18 10:22:35 2019 -0500 Merge topic 'file_symlink_docs' 0f5a9f7934 Help: Clarify and improve readability of link-related file subcommands Acked-by: Kitware Robot Merge-request: !2974 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0f5a9f7934913935d632fc596ba1b585aa10fa29 commit 0f5a9f7934913935d632fc596ba1b585aa10fa29 Author: Craig Scott AuthorDate: Sat Feb 16 19:32:52 2019 +1100 Commit: Craig Scott CommitDate: Sat Feb 16 20:55:49 2019 +1100 Help: Clarify and improve readability of link-related file subcommands diff --git a/Help/command/file.rst b/Help/command/file.rst index db4d6fc..465e567 100644 --- a/Help/command/file.rst +++ b/Help/command/file.rst @@ -26,8 +26,8 @@ Synopsis file(`MAKE_DIRECTORY`_ [...]) file({`COPY`_ | `INSTALL`_} ... DESTINATION [...]) file(`SIZE`_ ) - file(`READ_SYMLINK`_ ) - file(`CREATE_LINK`_ [...]) + file(`READ_SYMLINK`_ ) + file(`CREATE_LINK`_ [...]) `Path Conversion`_ file(`RELATIVE_PATH`_ ) @@ -350,22 +350,22 @@ pointing to a file and is readable. .. code-block:: cmake - file(READ_SYMLINK ) + file(READ_SYMLINK ) -Read the symlink at ```` and put the result in ````. -Requires that ```` is a valid path pointing to a symlink. If -```` does not exist, or is not a symlink, an error is thrown. +This subcommand queries the symlink ```` and stores the path it +points to in the result ````. If ```` does not exist or +is not a symlink, CMake issues a fatal error. Note that this command returns the raw symlink path and does not resolve -relative symlinks. If you want to resolve the relative symlink yourself, you -could do something like this: +a relative path. The following is an example of how to ensure that an +absolute path is obtained: .. code-block:: cmake - set(filename "/path/to/foo.sym") - file(READ_SYMLINK "${filename}" result) + set(linkname "/path/to/foo.sym") + file(READ_SYMLINK "${linkname}" result) if(NOT IS_ABSOLUTE "${result}") - get_filename_component(dir "${filename}" DIRECTORY) + get_filename_component(dir "${linkname}" DIRECTORY) set(result "${dir}/${result}") endif() @@ -373,23 +373,23 @@ could do something like this: .. code-block:: cmake - file(CREATE_LINK + file(CREATE_LINK [RESULT ] [COPY_ON_ERROR] [SYMBOLIC]) -Create a link to ```` at ````. +Create a link ```` that points to ````. +It will be a hard link by default, but providing the ``SYMBOLIC`` option +results in a symbolic link instead. Hard links require that ``original`` +exists and is a file, not a directory. If ```` already exists, +it will be overwritten. -It is a hard link by default. This can be changed to symbolic links by -using ``SYMBOLIC``. The original file needs to exist for hard links. - -The ```` variable, if specified, gets the status of the operation. -It is set to ``0`` in case of success. Otherwise, it contains the error -generated. In case of failures, if ``RESULT`` is not specified, a fatal error -is emitted. +The ```` variable, if specified, receives the status of the operation. +It is set to ``0`` upon success or an error message otherwise. If ``RESULT`` +is not specified and the operation fails, a fatal error is emitted. Specifying ``COPY_ON_ERROR`` enables copying the file as a fallback if -creating the link fails. - -Overwrites the ```` if it exists. +creating the link fails. It can be useful for handling situations such as +```` and ```` being on different drives or mount points, +which would make them unable to support a hard link. Path Conversion ^^^^^^^^^^^^^^^ ----------------------------------------------------------------------- Summary of changes: Help/command/file.rst | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 18 10:33:02 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 18 Feb 2019 10:33:02 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-118-g75b4595 Message-ID: <20190218153302.95245FB392@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 75b45956e044701c0ebe6dbc433f629e0558bdb8 (commit) via 926a97e97520bcdf509126e03a3d2f40ee20d479 (commit) from 566652b0c8ffe6896d3d3ae1cafd58dddd34eecd (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=75b45956e044701c0ebe6dbc433f629e0558bdb8 commit 75b45956e044701c0ebe6dbc433f629e0558bdb8 Merge: 566652b 926a97e Author: Brad King AuthorDate: Mon Feb 18 10:22:55 2019 -0500 Commit: Brad King CommitDate: Mon Feb 18 10:22:55 2019 -0500 Merge branch 'release-3.14' ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 18 10:33:02 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 18 Feb 2019 10:33:02 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.14.0-rc2-7-g926a97e Message-ID: <20190218153302.A6965125268@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 926a97e97520bcdf509126e03a3d2f40ee20d479 (commit) via 0f5a9f7934913935d632fc596ba1b585aa10fa29 (commit) from 1f8ed4141979ee4e2f2cc6aab8ad31a4942bd056 (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/command/file.rst | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 19 00:03:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 19 Feb 2019 00:03:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-119-g2a1f661 Message-ID: <20190219050304.6425A128156@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 2a1f6617911da55e6563a775c807270a7f566b18 (commit) from 75b45956e044701c0ebe6dbc433f629e0558bdb8 (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=2a1f6617911da55e6563a775c807270a7f566b18 commit 2a1f6617911da55e6563a775c807270a7f566b18 Author: Kitware Robot AuthorDate: Tue Feb 19 00:01:06 2019 -0500 Commit: Kitware Robot CommitDate: Tue Feb 19 00:01:06 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 6af2c8e..9c45022 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 14) -set(CMake_VERSION_PATCH 20190218) +set(CMake_VERSION_PATCH 20190219) #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 19 08:03:09 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 19 Feb 2019 08:03:09 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-132-g7574e16 Message-ID: <20190219130309.88C0A1528@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 7574e16096abe57d44cde4e6380a22d940cde98c (commit) via 2bff8513f22ae02d1559851d0eb814083d015a2e (commit) via 9cab31cc79b9c19f2a5121a392a3498d06e25723 (commit) via 2dd2079152ceda32a7e5f330f7182fd658716c41 (commit) via bc34282da63c3f25c17fee73c97fcc46a0a164ca (commit) via 13f020198fe858437f24a3fe0c349a1618e70d7b (commit) via 7814796e0777e5fc767cca453200b9f8107848fe (commit) via 55ad9304ed87f365e69b5dc01d5b07d25aecc9e2 (commit) via 890bae524c6b97d29ffcc3fe5a6a30235d800348 (commit) via 5c171ca898f92e07cb68dd7fa77d0a993b08cc9c (commit) via 9502276f8272cf8ed10ceafe4413b0e24cc6535f (commit) via bee6597ac548e7ddd42cfa972e2a4cefa1ec3e59 (commit) via 706b93fa558c5a2e0e45a7068b5039d1f40fbc90 (commit) from 2a1f6617911da55e6563a775c807270a7f566b18 (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=7574e16096abe57d44cde4e6380a22d940cde98c commit 7574e16096abe57d44cde4e6380a22d940cde98c Merge: 2bff851 13f0201 Author: Brad King AuthorDate: Tue Feb 19 07:57:42 2019 -0500 Commit: Brad King CommitDate: Tue Feb 19 07:57:42 2019 -0500 Merge branch 'release-3.14' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2bff8513f22ae02d1559851d0eb814083d015a2e commit 2bff8513f22ae02d1559851d0eb814083d015a2e Merge: 9cab31c 706b93f Author: Brad King AuthorDate: Tue Feb 19 12:56:20 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 19 07:56:41 2019 -0500 Merge topic 'modernize-for-loops-c-arrays' 706b93fa55 Modernize: C-arrays and loops over them Acked-by: Kitware Robot Merge-request: !2951 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9cab31cc79b9c19f2a5121a392a3498d06e25723 commit 9cab31cc79b9c19f2a5121a392a3498d06e25723 Merge: 2dd2079 55ad930 Author: Craig Scott AuthorDate: Tue Feb 19 12:55:59 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 19 07:56:06 2019 -0500 Merge topic 'readme-msys2' 55ad9304ed README: Explain how to bootstrap via MSYS2 on Windows Acked-by: Kitware Robot Acked-by: Bartosz Merge-request: !2983 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2dd2079152ceda32a7e5f330f7182fd658716c41 commit 2dd2079152ceda32a7e5f330f7182fd658716c41 Merge: bc34282 890bae5 Author: Brad King AuthorDate: Tue Feb 19 12:53:50 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 19 07:54:57 2019 -0500 Merge topic 'fix-legacy-implicit-includes' 890bae524c Do not explicitly report "standard" include directories as implicit 5c171ca898 Restore unconditional use of "standard" include directories 9502276f82 Prefix implicit include directories with sysroot on construction Acked-by: Kitware Robot Merge-request: !2981 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bc34282da63c3f25c17fee73c97fcc46a0a164ca commit bc34282da63c3f25c17fee73c97fcc46a0a164ca Merge: 2a1f661 bee6597 Author: Brad King AuthorDate: Tue Feb 19 12:53:39 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 19 07:53:47 2019 -0500 Merge topic 'FindBoost-layout-tagged' bee6597ac5 FindBoost: Find boost libraries built with --layout=tagged Acked-by: Kitware Robot Merge-request: !2961 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=55ad9304ed87f365e69b5dc01d5b07d25aecc9e2 commit 55ad9304ed87f365e69b5dc01d5b07d25aecc9e2 Author: Brad King AuthorDate: Mon Feb 18 10:43:30 2019 -0500 Commit: Brad King CommitDate: Tue Feb 19 07:10:59 2019 -0500 README: Explain how to bootstrap via MSYS2 on Windows Inspired-by: Bartosz Kosiorek diff --git a/README.rst b/README.rst index 775463e..11bafca 100644 --- a/README.rst +++ b/README.rst @@ -67,11 +67,24 @@ choice. Once this has finished successfully, run ``make`` and Windows ^^^^^^^ -You need to download and install a binary release of CMake in order to build -CMake. You can get these releases from the `CMake Download Page`_. Then -proceed with the instructions below. +There are two ways for building CMake under Windows: + +1. Compile with MSVC from VS 2015 or later. + You need to download and install a binary release of CMake. You can get + these releases from the `CMake Download Page`_. Then proceed with the + instructions below for `Building CMake with CMake`_. + +2. Bootstrap with MinGW under MSYS2. + Download and install `MSYS2`_. Then install the required build tools:: + + $ pacman -S --needed git base-devel mingw-w64-x86_64-gcc + + and bootstrap as above:: + + $ ./bootstrap && make .. _`CMake Download Page`: https://cmake.org/cmake/resources/software.html +.. _`MSYS2`: https://www.msys2.org/ Building CMake with CMake ------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=706b93fa558c5a2e0e45a7068b5039d1f40fbc90 commit 706b93fa558c5a2e0e45a7068b5039d1f40fbc90 Author: Artur Ryt AuthorDate: Thu Feb 14 20:39:24 2019 +0100 Commit: Artur Ryt CommitDate: Fri Feb 15 23:40:30 2019 +0100 Modernize: C-arrays and loops over them It replaces C arrays with deduced std::initializer_lists or std::array what makes enables for-loop over them. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 11c382f..fa0ffcc 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -2280,10 +2281,9 @@ void cmGlobalGenerator::AddGlobalTarget_Package( return; } - const char* reservedTargets[] = { "package", "PACKAGE" }; - for (const char* const* tn = cm::cbegin(reservedTargets); - tn != cm::cend(reservedTargets); ++tn) { - if (!this->CheckCMP0037(*tn, "when CPack packaging is enabled")) { + static const auto reservedTargets = { "package", "PACKAGE" }; + for (auto const& target : reservedTargets) { + if (!this->CheckCMP0037(target, "when CPack packaging is enabled")) { return; } } @@ -2330,10 +2330,10 @@ void cmGlobalGenerator::AddGlobalTarget_PackageSource( return; } - const char* reservedTargets[] = { "package_source" }; - for (const char* const* tn = cm::cbegin(reservedTargets); - tn != cm::cend(reservedTargets); ++tn) { - if (!this->CheckCMP0037(*tn, "when CPack source packaging is enabled")) { + static const auto reservedTargets = { "package_source" }; + for (auto const& target : reservedTargets) { + if (!this->CheckCMP0037(target, + "when CPack source packaging is enabled")) { return; } } @@ -2360,10 +2360,9 @@ void cmGlobalGenerator::AddGlobalTarget_Test( return; } - const char* reservedTargets[] = { "test", "RUN_TESTS" }; - for (const char* const* tn = cm::cbegin(reservedTargets); - tn != cm::cend(reservedTargets); ++tn) { - if (!this->CheckCMP0037(*tn, "when CTest testing is enabled")) { + static const auto reservedTargets = { "test", "RUN_TESTS" }; + for (auto const& target : reservedTargets) { + if (!this->CheckCMP0037(target, "when CTest testing is enabled")) { return; } } diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index a2d0efe..e392cff 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -34,6 +34,7 @@ #include "cmsys/RegularExpression.hxx" #include #include +#include #include #include #include @@ -51,25 +52,23 @@ // replaced in the form with GetSafeDefinition(var). // ${LANG} is replaced in the variable first with all enabled // languages. -static const char* ruleReplaceVars[] = { - "CMAKE_${LANG}_COMPILER", - "CMAKE_SHARED_LIBRARY_CREATE_${LANG}_FLAGS", - "CMAKE_SHARED_MODULE_CREATE_${LANG}_FLAGS", - "CMAKE_SHARED_MODULE_${LANG}_FLAGS", - "CMAKE_SHARED_LIBRARY_${LANG}_FLAGS", - "CMAKE_${LANG}_LINK_FLAGS", - "CMAKE_SHARED_LIBRARY_SONAME_${LANG}_FLAG", - "CMAKE_${LANG}_ARCHIVE", - "CMAKE_AR", - "CMAKE_CURRENT_SOURCE_DIR", - "CMAKE_CURRENT_BINARY_DIR", - "CMAKE_RANLIB", - "CMAKE_LINKER", - "CMAKE_MT", - "CMAKE_CUDA_HOST_COMPILER", - "CMAKE_CUDA_HOST_LINK_LAUNCHER", - "CMAKE_CL_SHOWINCLUDES_PREFIX" -}; +static auto ruleReplaceVars = { "CMAKE_${LANG}_COMPILER", + "CMAKE_SHARED_LIBRARY_CREATE_${LANG}_FLAGS", + "CMAKE_SHARED_MODULE_CREATE_${LANG}_FLAGS", + "CMAKE_SHARED_MODULE_${LANG}_FLAGS", + "CMAKE_SHARED_LIBRARY_${LANG}_FLAGS", + "CMAKE_${LANG}_LINK_FLAGS", + "CMAKE_SHARED_LIBRARY_SONAME_${LANG}_FLAG", + "CMAKE_${LANG}_ARCHIVE", + "CMAKE_AR", + "CMAKE_CURRENT_SOURCE_DIR", + "CMAKE_CURRENT_BINARY_DIR", + "CMAKE_RANLIB", + "CMAKE_LINKER", + "CMAKE_MT", + "CMAKE_CUDA_HOST_COMPILER", + "CMAKE_CUDA_HOST_LINK_LAUNCHER", + "CMAKE_CL_SHOWINCLUDES_PREFIX" }; cmLocalGenerator::cmLocalGenerator(cmGlobalGenerator* gg, cmMakefile* makefile) : cmOutputConverter(makefile->GetStateSnapshot()) @@ -138,15 +137,13 @@ cmLocalGenerator::cmLocalGenerator(cmGlobalGenerator* gg, cmMakefile* makefile) this->VariableMappings[compilerOptionSysroot] = this->Makefile->GetSafeDefinition(compilerOptionSysroot); - for (const char* const* replaceIter = cm::cbegin(ruleReplaceVars); - replaceIter != cm::cend(ruleReplaceVars); ++replaceIter) { - std::string actualReplace = *replaceIter; - if (actualReplace.find("${LANG}") != std::string::npos) { - cmSystemTools::ReplaceString(actualReplace, "${LANG}", lang); + for (std::string replaceVar : ruleReplaceVars) { + if (replaceVar.find("${LANG}") != std::string::npos) { + cmSystemTools::ReplaceString(replaceVar, "${LANG}", lang); } - this->VariableMappings[actualReplace] = - this->Makefile->GetSafeDefinition(actualReplace); + this->VariableMappings[replaceVar] = + this->Makefile->GetSafeDefinition(replaceVar); } } } diff --git a/Source/cmQtAutoGen.cxx b/Source/cmQtAutoGen.cxx index 653caf7..f437138 100644 --- a/Source/cmQtAutoGen.cxx +++ b/Source/cmQtAutoGen.cxx @@ -7,7 +7,7 @@ #include "cmsys/RegularExpression.hxx" #include -#include +#include #include #include @@ -137,13 +137,21 @@ std::string cmQtAutoGen::Tools(bool moc, bool uic, bool rcc) std::string cmQtAutoGen::Quoted(std::string const& text) { - static const char* rep[18] = { "\\", "\\\\", "\"", "\\\"", "\a", "\\a", - "\b", "\\b", "\f", "\\f", "\n", "\\n", - "\r", "\\r", "\t", "\\t", "\v", "\\v" }; + const std::array, 9> replaces = { + { { "\\", "\\\\" }, + { "\"", "\\\"" }, + { "\a", "\\a" }, + { "\b", "\\b" }, + { "\f", "\\f" }, + { "\n", "\\n" }, + { "\r", "\\r" }, + { "\t", "\\t" }, + { "\v", "\\v" } } + }; std::string res = text; - for (const char* const* it = cm::cbegin(rep); it != cm::cend(rep); it += 2) { - cmSystemTools::ReplaceString(res, *it, *(it + 1)); + for (auto const& pair : replaces) { + cmSystemTools::ReplaceString(res, pair.first, pair.second); } res = '"' + res; res += '"'; diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index e871634..d1e4f06 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -5,6 +5,7 @@ #include "cmsys/RegularExpression.hxx" #include #include +#include #include #include #include @@ -312,23 +313,23 @@ cmTarget::cmTarget(std::string const& name, cmStateEnums::TargetType type, // Setup per-configuration property default values. if (this->GetType() != cmStateEnums::UTILITY) { - const char* configProps[] = { + static const auto configProps = { /* clang-format needs this comment to break after the opening brace */ "ARCHIVE_OUTPUT_DIRECTORY_", "LIBRARY_OUTPUT_DIRECTORY_", "RUNTIME_OUTPUT_DIRECTORY_", "PDB_OUTPUT_DIRECTORY_", "COMPILE_PDB_OUTPUT_DIRECTORY_", "MAP_IMPORTED_CONFIG_", - "INTERPROCEDURAL_OPTIMIZATION_", nullptr + "INTERPROCEDURAL_OPTIMIZATION_" }; for (std::string const& configName : configNames) { std::string configUpper = cmSystemTools::UpperCase(configName); - for (const char** p = configProps; *p; ++p) { + for (auto const& prop : configProps) { // Interface libraries have no output locations, so honor only // the configuration map. if (this->TargetTypeValue == cmStateEnums::INTERFACE_LIBRARY && - strcmp(*p, "MAP_IMPORTED_CONFIG_") != 0) { + strcmp(prop, "MAP_IMPORTED_CONFIG_") != 0) { continue; } - std::string property = *p; + std::string property = prop; property += configUpper; this->SetPropertyDefault(property, nullptr); } diff --git a/Source/cmake.cxx b/Source/cmake.cxx index ff6b04b..af3e465 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -99,6 +99,7 @@ #include "cmsys/RegularExpression.hxx" #include #include +#include #include #include #include // IWYU pragma: keep @@ -1892,11 +1893,10 @@ bool cmake::LoadCache(const std::string& path, bool internal, std::set& includes) { bool result = this->State->LoadCache(path, internal, excludes, includes); - static const char* entries[] = { "CMAKE_CACHE_MAJOR_VERSION", - "CMAKE_CACHE_MINOR_VERSION" }; - for (const char* const* nameIt = cm::cbegin(entries); - nameIt != cm::cend(entries); ++nameIt) { - this->UnwatchUnusedCli(*nameIt); + static const auto entries = { "CMAKE_CACHE_MAJOR_VERSION", + "CMAKE_CACHE_MINOR_VERSION" }; + for (auto const& entry : entries) { + this->UnwatchUnusedCli(entry); } return result; } @@ -1904,13 +1904,12 @@ bool cmake::LoadCache(const std::string& path, bool internal, bool cmake::SaveCache(const std::string& path) { bool result = this->State->SaveCache(path, this->GetMessenger()); - static const char* entries[] = { "CMAKE_CACHE_MAJOR_VERSION", - "CMAKE_CACHE_MINOR_VERSION", - "CMAKE_CACHE_PATCH_VERSION", - "CMAKE_CACHEFILE_DIR" }; - for (const char* const* nameIt = cm::cbegin(entries); - nameIt != cm::cend(entries); ++nameIt) { - this->UnwatchUnusedCli(*nameIt); + static const auto entries = { "CMAKE_CACHE_MAJOR_VERSION", + "CMAKE_CACHE_MINOR_VERSION", + "CMAKE_CACHE_PATCH_VERSION", + "CMAKE_CACHEFILE_DIR" }; + for (auto const& entry : entries) { + this->UnwatchUnusedCli(entry); } return result; } diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index 4415ba6..4171624 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -37,6 +37,7 @@ #include "cmsys/Process.h" #include "cmsys/Terminal.h" #include +#include #include #include #include // IWYU pragma: keep @@ -350,12 +351,13 @@ struct CoCompiler bool NoOriginalCommand; }; -static CoCompiler CoCompilers[] = { // Table of options and handlers. - { "--cppcheck=", HandleCppCheck, false }, - { "--cpplint=", HandleCppLint, false }, - { "--iwyu=", HandleIWYU, false }, - { "--lwyu=", HandleLWYU, true }, - { "--tidy=", HandleTidy, false } +static const std::array CoCompilers = { + { // Table of options and handlers. + { "--cppcheck=", HandleCppCheck, false }, + { "--cpplint=", HandleCppLint, false }, + { "--iwyu=", HandleIWYU, false }, + { "--lwyu=", HandleLWYU, true }, + { "--tidy=", HandleTidy, false } } }; struct CoCompileJob @@ -386,16 +388,15 @@ int cmcmd::HandleCoCompileCommands(std::vector& args) doing_options = false; } else if (doing_options) { bool optionFound = false; - for (CoCompiler const* cc = cm::cbegin(CoCompilers); - cc != cm::cend(CoCompilers); ++cc) { - size_t optionLen = strlen(cc->Option); - if (arg.compare(0, optionLen, cc->Option) == 0) { + for (CoCompiler const& cc : CoCompilers) { + size_t optionLen = strlen(cc.Option); + if (arg.compare(0, optionLen, cc.Option) == 0) { optionFound = true; CoCompileJob job; job.Command = arg.substr(optionLen); - job.Handler = cc->Handler; + job.Handler = cc.Handler; jobs.push_back(std::move(job)); - if (cc->NoOriginalCommand) { + if (cc.NoOriginalCommand) { runOriginalCmd = false; } } @@ -419,9 +420,8 @@ int cmcmd::HandleCoCompileCommands(std::vector& args) if (jobs.empty()) { std::cerr << "__run_co_compile missing command to run. " "Looking for one or more of the following:\n"; - for (CoCompiler const* cc = cm::cbegin(CoCompilers); - cc != cm::cend(CoCompilers); ++cc) { - std::cerr << cc->Option << "\n"; + for (CoCompiler const& cc : CoCompilers) { + std::cerr << cc.Option << "\n"; } return 1; } ----------------------------------------------------------------------- Summary of changes: Modules/CMakeDetermineCompilerABI.cmake | 6 ++ Modules/FindBoost.cmake | 8 +++ Modules/Platform/UnixPaths.cmake | 14 +++- README.rst | 19 +++++- Source/cmGlobalGenerator.cxx | 23 ++++--- Source/cmLocalGenerator.cxx | 110 +++++++++++++++----------------- Source/cmQtAutoGen.cxx | 20 ++++-- Source/cmTarget.cxx | 11 ++-- Source/cmake.cxx | 23 ++++--- Source/cmcmd.cxx | 30 ++++----- 10 files changed, 148 insertions(+), 116 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 19 08:03:09 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 19 Feb 2019 08:03:09 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.14.0-rc2-13-g13f0201 Message-ID: <20190219130309.C26921D0D@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 13f020198fe858437f24a3fe0c349a1618e70d7b (commit) via 7814796e0777e5fc767cca453200b9f8107848fe (commit) via 890bae524c6b97d29ffcc3fe5a6a30235d800348 (commit) via 5c171ca898f92e07cb68dd7fa77d0a993b08cc9c (commit) via 9502276f8272cf8ed10ceafe4413b0e24cc6535f (commit) via bee6597ac548e7ddd42cfa972e2a4cefa1ec3e59 (commit) from 926a97e97520bcdf509126e03a3d2f40ee20d479 (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/CMakeDetermineCompilerABI.cmake | 6 ++++ Modules/FindBoost.cmake | 8 +++++ Modules/Platform/UnixPaths.cmake | 14 ++++++-- Source/cmLocalGenerator.cxx | 61 +++++++++++++++------------------ 4 files changed, 52 insertions(+), 37 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 20 00:03:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 20 Feb 2019 00:03:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-133-g18ff514 Message-ID: <20190220050304.5173510EED2@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 18ff514b52600a6fb37ca6fd7d38e7e3aac7129b (commit) from 7574e16096abe57d44cde4e6380a22d940cde98c (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=18ff514b52600a6fb37ca6fd7d38e7e3aac7129b commit 18ff514b52600a6fb37ca6fd7d38e7e3aac7129b Author: Kitware Robot AuthorDate: Wed Feb 20 00:01:08 2019 -0500 Commit: Kitware Robot CommitDate: Wed Feb 20 00:01:08 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 9c45022..b324571 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 14) -set(CMake_VERSION_PATCH 20190219) +set(CMake_VERSION_PATCH 20190220) #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 20 09:03:08 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 20 Feb 2019 09:03:08 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-151-gb38023f Message-ID: <20190220140308.AE3381279B9@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 b38023f958325fedd99d5480149f4958e721fdd5 (commit) via bb6d46d7e4f65bad099b919ffb1e34c0571ca727 (commit) via 8732a2b3ba81d7e512d8c317b037db5caec10ee4 (commit) via 462a320c8db91f4f646a19f34b9b41154019a68e (commit) via 7abe332cedd2d92285233ced3cdf3ecaa3eb4803 (commit) via fcdd6efb724439502e9e0fa95a6c0ccb4d32a5a5 (commit) via 85d779442bbc9376a0c71f0dc8f42d0df52c11d4 (commit) via 0794dd3018191ba919d9e8ada3ed18ad2b37eccd (commit) via b5befac15465945d86b8c4d5603c2afd1ea29756 (commit) via a4e01d6707e9cfe50b2f49f140c8a9894cd8108f (commit) via 4f5bb64c5628773b95f7bd66bcb6947aacced08c (commit) via 4dab8e69bd46b6aa85a97c4d23e9d894fc5fbcf6 (commit) via 35bf9ded3b116209ca864eff2da481c22117e17d (commit) via 8a95808f8fb0766197ff904bc0c47ad9afa54098 (commit) via da846439881dbbe3697ae42fa129031cb8f467c0 (commit) via b186329d3db0083d77e61ded709f4e70a596631d (commit) via c489c3e7158417b1161d46555ce1c2bcb31527fc (commit) via c048cb75fcee6b31cfacdce714b343c6623f5c9c (commit) from 18ff514b52600a6fb37ca6fd7d38e7e3aac7129b (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=b38023f958325fedd99d5480149f4958e721fdd5 commit b38023f958325fedd99d5480149f4958e721fdd5 Merge: bb6d46d 8a95808 Author: Brad King AuthorDate: Wed Feb 20 14:02:06 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 20 09:02:51 2019 -0500 Merge topic 'optimize-cmuuid-ctor' 8a95808f8f cmUuid: Hide UUID group info in implementation Acked-by: Kitware Robot Merge-request: !2976 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bb6d46d7e4f65bad099b919ffb1e34c0571ca727 commit bb6d46d7e4f65bad099b919ffb1e34c0571ca727 Merge: 8732a2b c048cb7 Author: Brad King AuthorDate: Wed Feb 20 14:01:00 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 20 09:01:58 2019 -0500 Merge topic 'ninja-swift-partial' c048cb75fc Ninja: add properties for Swift partial module and doc Acked-by: Kitware Robot Merge-request: !2985 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8732a2b3ba81d7e512d8c317b037db5caec10ee4 commit 8732a2b3ba81d7e512d8c317b037db5caec10ee4 Merge: 462a320 c489c3e Author: Brad King AuthorDate: Wed Feb 20 14:00:52 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 20 09:01:00 2019 -0500 Merge topic 'once-is-enough' c489c3e715 Ninja: remove duplicate local variable (NFC) Acked-by: Kitware Robot Merge-request: !2986 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=462a320c8db91f4f646a19f34b9b41154019a68e commit 462a320c8db91f4f646a19f34b9b41154019a68e Merge: 7abe332 0794dd3 Author: Brad King AuthorDate: Wed Feb 20 08:56:58 2019 -0500 Commit: Brad King CommitDate: Wed Feb 20 08:56:58 2019 -0500 Merge branch 'release-3.14' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7abe332cedd2d92285233ced3cdf3ecaa3eb4803 commit 7abe332cedd2d92285233ced3cdf3ecaa3eb4803 Merge: fcdd6ef b5befac Author: Brad King AuthorDate: Wed Feb 20 13:55:08 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 20 08:55:25 2019 -0500 Merge topic 'autogen_cache_binary_checks' b5befac154 Autogen: Use output caching GetExecutableTestOutput a4e01d6707 Autogen: Add output caching GetExecutableTestOutput Acked-by: Kitware Robot Merge-request: !2990 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fcdd6efb724439502e9e0fa95a6c0ccb4d32a5a5 commit fcdd6efb724439502e9e0fa95a6c0ccb4d32a5a5 Merge: 85d7794 4dab8e6 Author: Brad King AuthorDate: Wed Feb 20 13:54:10 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 20 08:54:36 2019 -0500 Merge topic 'vs-win-sdk' 4dab8e69bd VS: Tell VS 2019 to use Windows SDK 8.1 explicitly when needed 35bf9ded3b VS: Factor out a method to set the Windows SDK version internally Acked-by: Kitware Robot Merge-request: !2989 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=85d779442bbc9376a0c71f0dc8f42d0df52c11d4 commit 85d779442bbc9376a0c71f0dc8f42d0df52c11d4 Merge: 18ff514 b186329 Author: Brad King AuthorDate: Wed Feb 20 13:53:33 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 20 08:53:41 2019 -0500 Merge topic 'asm-no-slash-question' b186329d3d Use -? instead of /? to test compiler for MSVC-like command-line support Acked-by: Kitware Robot Merge-request: !2984 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8a95808f8fb0766197ff904bc0c47ad9afa54098 commit 8a95808f8fb0766197ff904bc0c47ad9afa54098 Author: Gregor Jasny AuthorDate: Sat Feb 16 16:45:02 2019 +0100 Commit: Brad King CommitDate: Tue Feb 19 08:49:41 2019 -0500 cmUuid: Hide UUID group info in implementation diff --git a/Source/cmUuid.cxx b/Source/cmUuid.cxx index 201e1cc..51ecbd1 100644 --- a/Source/cmUuid.cxx +++ b/Source/cmUuid.cxx @@ -4,16 +4,10 @@ #include "cmCryptoHash.h" +#include #include -cmUuid::cmUuid() -{ - Groups.push_back(4); - Groups.push_back(2); - Groups.push_back(2); - Groups.push_back(2); - Groups.push_back(6); -} +static const std::array kUuidGroups = { { 4, 2, 2, 2, 6 } }; std::string cmUuid::FromMd5(std::vector const& uuidNamespace, std::string const& name) const @@ -83,11 +77,11 @@ bool cmUuid::StringToBinary(std::string const& input, return false; } size_t index = 0; - for (size_t i = 0; i < this->Groups.size(); ++i) { + for (size_t i = 0; i < kUuidGroups.size(); ++i) { if (i != 0 && input[index++] != '-') { return false; } - size_t digits = this->Groups[i] * 2; + size_t digits = kUuidGroups[i] * 2; if (!StringToBinaryImpl(input.substr(index, digits), output)) { return false; } @@ -103,12 +97,12 @@ std::string cmUuid::BinaryToString(const unsigned char* input) const std::string output; size_t inputIndex = 0; - for (size_t i = 0; i < this->Groups.size(); ++i) { + for (size_t i = 0; i < kUuidGroups.size(); ++i) { if (i != 0) { output += '-'; } - size_t bytes = this->Groups[i]; + size_t bytes = kUuidGroups[i]; for (size_t j = 0; j < bytes; ++j) { unsigned char byte = input[inputIndex++]; output += this->ByteToHex(byte); diff --git a/Source/cmUuid.h b/Source/cmUuid.h index 158ce6e..7de20dd 100644 --- a/Source/cmUuid.h +++ b/Source/cmUuid.h @@ -15,8 +15,6 @@ class cmUuid { public: - cmUuid(); - std::string FromMd5(std::vector const& uuidNamespace, std::string const& name) const; @@ -42,8 +40,6 @@ private: std::string BinaryToString(const unsigned char* input) const; bool IntFromHexDigit(char input, char& output) const; - - std::vector Groups; }; #endif https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c489c3e7158417b1161d46555ce1c2bcb31527fc commit c489c3e7158417b1161d46555ce1c2bcb31527fc Author: Saleem Abdulrasool AuthorDate: Mon Feb 18 12:07:41 2019 -0800 Commit: Saleem Abdulrasool CommitDate: Mon Feb 18 12:09:20 2019 -0800 Ninja: remove duplicate local variable (NFC) Remove the second reference to the generator target. diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index 3874f48..3784313 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -799,10 +799,9 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() std::string frameworkPath; std::string linkPath; - cmGeneratorTarget& genTarget = *this->GetGeneratorTarget(); - std::string createRule = genTarget.GetCreateRuleVariable( - this->TargetLinkLanguage, this->GetConfigName()); + std::string createRule = + gt.GetCreateRuleVariable(this->TargetLinkLanguage, this->GetConfigName()); bool useWatcomQuote = mf->IsOn(createRule + "_USE_WATCOM_QUOTE"); cmLocalNinjaGenerator& localGen = *this->GetLocalGenerator(); @@ -815,9 +814,9 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() this->GetLocalGenerator()->GetStateSnapshot().GetDirectory())); linkLineComputer->SetUseWatcomQuote(useWatcomQuote); - localGen.GetTargetFlags( - linkLineComputer.get(), this->GetConfigName(), vars["LINK_LIBRARIES"], - vars["FLAGS"], vars["LINK_FLAGS"], frameworkPath, linkPath, &genTarget); + localGen.GetTargetFlags(linkLineComputer.get(), this->GetConfigName(), + vars["LINK_LIBRARIES"], vars["FLAGS"], + vars["LINK_FLAGS"], frameworkPath, linkPath, >); // Add OS X version flags, if any. if (this->GeneratorTarget->GetType() == cmStateEnums::SHARED_LIBRARY || @@ -838,7 +837,7 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() vars["LINK_PATH"] = frameworkPath + linkPath; std::string lwyuFlags; - if (genTarget.GetPropertyAsBool("LINK_WHAT_YOU_USE")) { + if (gt.GetPropertyAsBool("LINK_WHAT_YOU_USE")) { lwyuFlags = " -Wl,--no-as-needed"; } @@ -847,17 +846,16 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() // code between the Makefile executable and library generators. if (targetType == cmStateEnums::EXECUTABLE) { std::string t = vars["FLAGS"]; - localGen.AddArchitectureFlags(t, &genTarget, TargetLinkLanguage, cfgName); + localGen.AddArchitectureFlags(t, >, TargetLinkLanguage, cfgName); t += lwyuFlags; vars["FLAGS"] = t; } else { std::string t = vars["ARCH_FLAGS"]; - localGen.AddArchitectureFlags(t, &genTarget, TargetLinkLanguage, cfgName); + localGen.AddArchitectureFlags(t, >, TargetLinkLanguage, cfgName); vars["ARCH_FLAGS"] = t; t.clear(); t += lwyuFlags; - localGen.AddLanguageFlagsForLinking(t, &genTarget, TargetLinkLanguage, - cfgName); + localGen.AddLanguageFlagsForLinking(t, >, TargetLinkLanguage, cfgName); vars["LANGUAGE_COMPILE_FLAGS"] = t; } if (this->GetGeneratorTarget()->HasSOName(cfgName)) { @@ -880,7 +878,7 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() targetOutputImplib, cmOutputConverter::SHELL); vars["TARGET_IMPLIB"] = impLibPath; EnsureParentDirectoryExists(impLibPath); - if (genTarget.HasImportLibrary(cfgName)) { + if (gt.HasImportLibrary(cfgName)) { byproducts.push_back(targetOutputImplib); } } https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c048cb75fcee6b31cfacdce714b343c6623f5c9c commit c048cb75fcee6b31cfacdce714b343c6623f5c9c Author: Saleem Abdulrasool AuthorDate: Mon Feb 18 11:13:39 2019 -0800 Commit: Saleem Abdulrasool CommitDate: Mon Feb 18 11:15:47 2019 -0800 Ninja: add properties for Swift partial module and doc When building a swift object, we emit a partial swiftmodule and swiftdoc that must be merged at the end. However, in order to do that, we need to enumerate the swiftmodules and swiftdocs. As a result, the path must be known to CMake. Rather than hardcoding the rules into CMake, create a source property that we can query. This will allow us to create a final placeholder to emit the merge rule. Issue: #18800 diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 8d2586d..6013cd0 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -455,6 +455,8 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang) vars.SwiftAuxiliarySources = "$SWIFT_AUXILIARY_SOURCES"; vars.SwiftModuleName = "$SWIFT_MODULE_NAME"; vars.SwiftLibraryName = "$SWIFT_LIBRARY_NAME"; + vars.SwiftPartialModule = "$SWIFT_PARTIAL_MODULE"; + vars.SwiftPartialDoc = "$SWIFT_PARTIAL_DOC"; } // For some cases we do an explicit preprocessor invocation. @@ -945,6 +947,18 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement( cmGeneratorTarget::Names targetNames = this->GeneratorTarget->GetLibraryNames(this->GetConfigName()); vars["SWIFT_LIBRARY_NAME"] = targetNames.Base; + + if (const char* partial = source->GetProperty("SWIFT_PARTIAL_MODULE")) { + vars["SWIFT_PARTIAL_MODULE"] = partial; + } else { + vars["SWIFT_PARTIAL_MODULE"] = objectFileName + ".swiftmodule"; + } + + if (const char* partial = source->GetProperty("SWIFT_PARTIAL_DOC")) { + vars["SWIFT_PARTIAL_DOC"] = partial; + } else { + vars["SWIFT_PARTIAL_DOC"] = objectFileName + ".swiftdoc"; + } } if (!this->NeedDepTypeMSVC(language)) { diff --git a/Source/cmRulePlaceholderExpander.cxx b/Source/cmRulePlaceholderExpander.cxx index 5ebdd1b..18d00b1 100644 --- a/Source/cmRulePlaceholderExpander.cxx +++ b/Source/cmRulePlaceholderExpander.cxx @@ -177,6 +177,16 @@ std::string cmRulePlaceholderExpander::ExpandRuleVariable( return replaceValues.SwiftLibraryName; } } + if (replaceValues.SwiftPartialDoc) { + if (variable == "SWIFT_PARTIAL_DOC") { + return replaceValues.SwiftPartialDoc; + } + } + if (replaceValues.SwiftPartialModule) { + if (variable == "SWIFT_PARTIAL_MODULE") { + return replaceValues.SwiftPartialModule; + } + } if (variable == "TARGET_SONAME" || variable == "SONAME_FLAG" || variable == "TARGET_INSTALLNAME_DIR") { // All these variables depend on TargetSOName diff --git a/Source/cmRulePlaceholderExpander.h b/Source/cmRulePlaceholderExpander.h index 930eafd..93d0577 100644 --- a/Source/cmRulePlaceholderExpander.h +++ b/Source/cmRulePlaceholderExpander.h @@ -61,6 +61,8 @@ public: const char* SwiftAuxiliarySources; const char* SwiftModuleName; const char* SwiftLibraryName; + const char* SwiftPartialModule; + const char* SwiftPartialDoc; }; // Expand rule variables in CMake of the type found in language rules ----------------------------------------------------------------------- Summary of changes: Modules/CMakeDetermineASMCompiler.cmake | 2 +- Modules/CMakeDetermineCompilerId.cmake | 2 +- Modules/CMakeDetermineVSServicePack.cmake | 2 +- Source/cmGlobalVisualStudio14Generator.cxx | 13 +++-- Source/cmGlobalVisualStudio14Generator.h | 3 ++ Source/cmGlobalVisualStudioVersionedGenerator.cxx | 6 +++ Source/cmNinjaNormalTargetGenerator.cxx | 22 ++++---- Source/cmNinjaTargetGenerator.cxx | 14 +++++ Source/cmQtAutoGenGlobalInitializer.cxx | 64 +++++++++++++++++++++++ Source/cmQtAutoGenGlobalInitializer.h | 6 +++ Source/cmQtAutoGenInitializer.cxx | 53 +++++-------------- Source/cmQtAutoGenInitializer.h | 4 ++ Source/cmRulePlaceholderExpander.cxx | 10 ++++ Source/cmRulePlaceholderExpander.h | 2 + Source/cmUuid.cxx | 18 +++---- Source/cmUuid.h | 4 -- 16 files changed, 152 insertions(+), 73 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 20 09:03:08 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 20 Feb 2019 09:03:08 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.14.0-rc2-21-g0794dd3 Message-ID: <20190220140308.C1EAC1279B9@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 0794dd3018191ba919d9e8ada3ed18ad2b37eccd (commit) via b5befac15465945d86b8c4d5603c2afd1ea29756 (commit) via a4e01d6707e9cfe50b2f49f140c8a9894cd8108f (commit) via 4f5bb64c5628773b95f7bd66bcb6947aacced08c (commit) via 4dab8e69bd46b6aa85a97c4d23e9d894fc5fbcf6 (commit) via 35bf9ded3b116209ca864eff2da481c22117e17d (commit) via da846439881dbbe3697ae42fa129031cb8f467c0 (commit) via b186329d3db0083d77e61ded709f4e70a596631d (commit) from 13f020198fe858437f24a3fe0c349a1618e70d7b (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/CMakeDetermineASMCompiler.cmake | 2 +- Modules/CMakeDetermineCompilerId.cmake | 2 +- Modules/CMakeDetermineVSServicePack.cmake | 2 +- Source/cmGlobalVisualStudio14Generator.cxx | 13 +++-- Source/cmGlobalVisualStudio14Generator.h | 3 ++ Source/cmGlobalVisualStudioVersionedGenerator.cxx | 6 +++ Source/cmQtAutoGenGlobalInitializer.cxx | 64 +++++++++++++++++++++++ Source/cmQtAutoGenGlobalInitializer.h | 6 +++ Source/cmQtAutoGenInitializer.cxx | 53 +++++-------------- Source/cmQtAutoGenInitializer.h | 4 ++ 10 files changed, 110 insertions(+), 45 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 20 09:13:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 20 Feb 2019 09:13:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-157-gb76b83e Message-ID: <20190220141305.00486127B95@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 b76b83efd37a439e22d1d92af3b98c30e8f9ba97 (commit) via e0fbb7bf0843615e805ec325432d0c6d2ef9a30e (commit) via c2f6da3399efa1448eadbae65311795ced3f8930 (commit) via a84e509844b74d445b654cd9d0be98a8f0e0641e (commit) via d59159afdb630734213a120334f394331ef18504 (commit) via 0281f9a4cad6e189601a87c9ccfba8c54e71e14b (commit) from b38023f958325fedd99d5480149f4958e721fdd5 (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=b76b83efd37a439e22d1d92af3b98c30e8f9ba97 commit b76b83efd37a439e22d1d92af3b98c30e8f9ba97 Merge: e0fbb7b d59159a Author: Brad King AuthorDate: Wed Feb 20 14:05:50 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 20 09:05:57 2019 -0500 Merge topic 'cray-cleanup' d59159afdb Cray: clean up CrayPrgEnv and CrayLinuxEnvironment modules Acked-by: Kitware Robot Merge-request: !2945 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e0fbb7bf0843615e805ec325432d0c6d2ef9a30e commit e0fbb7bf0843615e805ec325432d0c6d2ef9a30e Merge: c2f6da3 a84e509 Author: Brad King AuthorDate: Wed Feb 20 14:04:48 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 20 09:04:58 2019 -0500 Merge topic 'list-prepend-and-pop-subcommands' a84e509844 list: add sub-commands PREPEND, POP_BACK, POP_FRONT Acked-by: Kitware Robot Merge-request: !2980 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c2f6da3399efa1448eadbae65311795ced3f8930 commit c2f6da3399efa1448eadbae65311795ced3f8930 Merge: b38023f 0281f9a Author: Brad King AuthorDate: Wed Feb 20 14:01:44 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 20 09:03:48 2019 -0500 Merge topic 'configurefile-stdstring' 0281f9a4ca cmMakefile::ConfigureFile: Accept `std::string` parameters Acked-by: Kitware Robot Merge-request: !2982 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a84e509844b74d445b654cd9d0be98a8f0e0641e commit a84e509844b74d445b654cd9d0be98a8f0e0641e Author: Alex Turbov AuthorDate: Mon Feb 18 00:47:50 2019 +0800 Commit: Brad King CommitDate: Tue Feb 19 09:42:36 2019 -0500 list: add sub-commands PREPEND, POP_BACK, POP_FRONT diff --git a/Help/command/list.rst b/Help/command/list.rst index bfcdf34..6c86c2a 100644 --- a/Help/command/list.rst +++ b/Help/command/list.rst @@ -21,6 +21,9 @@ Synopsis list(`APPEND`_ [...]) list(`FILTER`_ {INCLUDE | EXCLUDE} REGEX ) list(`INSERT`_ [...]) + list(`POP_BACK`_ [...]) + list(`POP_FRONT`_ [...]) + list(`PREPEND`_ [...]) list(`REMOVE_ITEM`_ ...) list(`REMOVE_AT`_ ...) list(`REMOVE_DUPLICATES`_ ) @@ -33,8 +36,9 @@ Synopsis Introduction ^^^^^^^^^^^^ -The list subcommands ``APPEND``, ``INSERT``, ``FILTER``, ``REMOVE_AT``, -``REMOVE_ITEM``, ``REMOVE_DUPLICATES``, ``REVERSE`` and ``SORT`` may create +The list subcommands ``APPEND``, ``INSERT``, ``FILTER``, ``PREPEND``, +``POP_BACK``, ``POP_FRONT``, ``REMOVE_AT``, ``REMOVE_ITEM``, +``REMOVE_DUPLICATES``, ``REVERSE`` and ``SORT`` may create new values for the list within the current CMake variable scope. Similar to the :command:`set` command, the LIST command creates new variable values in the current scope, even if the list itself is actually defined in a parent @@ -142,6 +146,34 @@ For more information on regular expressions see also the Inserts elements to the list to the specified location. +.. _POP_BACK: + +.. code-block:: cmake + + list(POP_BACK [...]) + +If no variable name is given, removes exactly one element. Otherwise, +assign the last element's value to the given variable and removes it, +up to the last variable name given. + +.. _POP_FRONT: + +.. code-block:: cmake + + list(POP_FRONT [...]) + +If no variable name is given, removes exactly one element. Otherwise, +assign the first element's value to the given variable and removes it, +up to the last variable name given. + +.. _PREPEND: + +.. code-block:: cmake + + list(PREPEND [ ...]) + +Insert elements to the 0th position in the list. + .. _REMOVE_ITEM: .. code-block:: cmake diff --git a/Help/release/dev/list-prepend-and-pop-subcommands.rst b/Help/release/dev/list-prepend-and-pop-subcommands.rst new file mode 100644 index 0000000..16b14f1 --- /dev/null +++ b/Help/release/dev/list-prepend-and-pop-subcommands.rst @@ -0,0 +1,4 @@ +list-prepend-and-pop-subcommands +-------------------------------- + +* :command:`list` learned new sub-commands ``PREPEND``, ``POP_FRONT`` and ``POP_BACK``. diff --git a/Source/cmListCommand.cxx b/Source/cmListCommand.cxx index 297babf..fdbd5ba 100644 --- a/Source/cmListCommand.cxx +++ b/Source/cmListCommand.cxx @@ -42,6 +42,15 @@ bool cmListCommand::InitialPass(std::vector const& args, if (subCommand == "APPEND") { return this->HandleAppendCommand(args); } + if (subCommand == "PREPEND") { + return this->HandlePrependCommand(args); + } + if (subCommand == "POP_BACK") { + return this->HandlePopBackCommand(args); + } + if (subCommand == "POP_FRONT") { + return this->HandlePopFrontCommand(args); + } if (subCommand == "FIND") { return this->HandleFindCommand(args); } @@ -222,20 +231,141 @@ bool cmListCommand::HandleAppendCommand(std::vector const& args) return true; } - const std::string& listName = args[1]; + std::string const& listName = args[1]; // expand the variable std::string listString; this->GetListString(listString, listName); - if (!listString.empty() && !args.empty()) { - listString += ";"; + // If `listString` or `args` is empty, no need to append `;`, + // then index is going to be `1` and points to the end-of-string ";" + auto const offset = + std::string::size_type(listString.empty() || args.empty()); + listString += &";"[offset] + cmJoin(cmMakeRange(args).advance(2), ";"); + + this->Makefile->AddDefinition(listName, listString.c_str()); + return true; +} + +bool cmListCommand::HandlePrependCommand(std::vector const& args) +{ + assert(args.size() >= 2); + + // Skip if nothing to prepend. + if (args.size() < 3) { + return true; } - listString += cmJoin(cmMakeRange(args).advance(2), ";"); + + std::string const& listName = args[1]; + // expand the variable + std::string listString; + this->GetListString(listString, listName); + + // If `listString` or `args` is empty, no need to append `;`, + // then `offset` is going to be `1` and points to the end-of-string ";" + auto const offset = + std::string::size_type(listString.empty() || args.empty()); + listString.insert(0, + cmJoin(cmMakeRange(args).advance(2), ";") + &";"[offset]); this->Makefile->AddDefinition(listName, listString.c_str()); return true; } +bool cmListCommand::HandlePopBackCommand(std::vector const& args) +{ + assert(args.size() >= 2); + + auto ai = args.cbegin(); + ++ai; // Skip subcommand name + std::string const& listName = *ai++; + std::vector varArgsExpanded; + if (!this->GetList(varArgsExpanded, listName)) { + // Can't get the list definition... undefine any vars given after. + for (; ai != args.cend(); ++ai) { + this->Makefile->RemoveDefinition(*ai); + } + return true; + } + + if (!varArgsExpanded.empty()) { + if (ai == args.cend()) { + // No variables are given... Just remove one element. + varArgsExpanded.pop_back(); + } else { + // Ok, assign elements to be removed to the given variables + for (; !varArgsExpanded.empty() && ai != args.cend(); ++ai) { + assert(!ai->empty()); + this->Makefile->AddDefinition(*ai, varArgsExpanded.back().c_str()); + varArgsExpanded.pop_back(); + } + // Undefine the rest variables if the list gets empty earlier... + for (; ai != args.cend(); ++ai) { + this->Makefile->RemoveDefinition(*ai); + } + } + + this->Makefile->AddDefinition(listName, + cmJoin(varArgsExpanded, ";").c_str()); + + } else if (ai != + args.cend()) { // The list is empty, but some args were given + // Need to *undefine* 'em all, cuz there are no items to assign... + for (; ai != args.cend(); ++ai) { + this->Makefile->RemoveDefinition(*ai); + } + } + + return true; +} + +bool cmListCommand::HandlePopFrontCommand(std::vector const& args) +{ + assert(args.size() >= 2); + + auto ai = args.cbegin(); + ++ai; // Skip subcommand name + std::string const& listName = *ai++; + std::vector varArgsExpanded; + if (!this->GetList(varArgsExpanded, listName)) { + // Can't get the list definition... undefine any vars given after. + for (; ai != args.cend(); ++ai) { + this->Makefile->RemoveDefinition(*ai); + } + return true; + } + + if (!varArgsExpanded.empty()) { + if (ai == args.cend()) { + // No variables are given... Just remove one element. + varArgsExpanded.erase(varArgsExpanded.begin()); + } else { + // Ok, assign elements to be removed to the given variables + auto vi = varArgsExpanded.begin(); + for (; vi != varArgsExpanded.end() && ai != args.cend(); ++ai, ++vi) { + assert(!ai->empty()); + this->Makefile->AddDefinition(*ai, varArgsExpanded.front().c_str()); + } + varArgsExpanded.erase(varArgsExpanded.begin(), vi); + // Undefine the rest variables if the list gets empty earlier... + for (; ai != args.cend(); ++ai) { + this->Makefile->RemoveDefinition(*ai); + } + } + + this->Makefile->AddDefinition(listName, + cmJoin(varArgsExpanded, ";").c_str()); + + } else if (ai != + args.cend()) { // The list is empty, but some args were given + // Need to *undefine* 'em all, cuz there are no items to assign... + for (; ai != args.cend(); ++ai) { + this->Makefile->RemoveDefinition(*ai); + } + } + + return true; +} + bool cmListCommand::HandleFindCommand(std::vector const& args) { if (args.size() != 4) { diff --git a/Source/cmListCommand.h b/Source/cmListCommand.h index 76a9856..ea3d643 100644 --- a/Source/cmListCommand.h +++ b/Source/cmListCommand.h @@ -35,6 +35,9 @@ protected: bool HandleLengthCommand(std::vector const& args); bool HandleGetCommand(std::vector const& args); bool HandleAppendCommand(std::vector const& args); + bool HandlePrependCommand(std::vector const& args); + bool HandlePopBackCommand(std::vector const& args); + bool HandlePopFrontCommand(std::vector const& args); bool HandleFindCommand(std::vector const& args); bool HandleInsertCommand(std::vector const& args); bool HandleJoinCommand(std::vector const& args); diff --git a/Tests/RunCMake/list/POP_BACK-NoArgs-result.txt b/Tests/RunCMake/list/POP_BACK-NoArgs-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/list/POP_BACK-NoArgs-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/list/POP_BACK-NoArgs-stderr.txt b/Tests/RunCMake/list/POP_BACK-NoArgs-stderr.txt new file mode 100644 index 0000000..83060b4 --- /dev/null +++ b/Tests/RunCMake/list/POP_BACK-NoArgs-stderr.txt @@ -0,0 +1 @@ +list must be called with at least two arguments diff --git a/Tests/RunCMake/list/POP_BACK-NoArgs.cmake b/Tests/RunCMake/list/POP_BACK-NoArgs.cmake new file mode 100644 index 0000000..518924d --- /dev/null +++ b/Tests/RunCMake/list/POP_BACK-NoArgs.cmake @@ -0,0 +1 @@ +list(POP_FRONT) diff --git a/Tests/RunCMake/list/POP_BACK.cmake b/Tests/RunCMake/list/POP_BACK.cmake new file mode 100644 index 0000000..4794796 --- /dev/null +++ b/Tests/RunCMake/list/POP_BACK.cmake @@ -0,0 +1,79 @@ +cmake_policy(SET CMP0054 NEW) + +function(assert_expected_list_len list_var expected_size) + list(LENGTH ${list_var} _size) + if(NOT _size EQUAL ${expected_size}) + message(FATAL_ERROR "list size expected to be `${expected_size}`, got `${_size}` instead") + endif() +endfunction() + +# Pop from undefined list +list(POP_BACK test) +if(DEFINED test) + message(FATAL_ERROR "`test` expected to be undefined") +endif() + +# Pop from empty list +set(test) +list(POP_BACK test) +if(DEFINED test) + message(FATAL_ERROR "`test` expected to be undefined") +endif() + +# Default pop from 1-item list +list(APPEND test one) +list(POP_BACK test) +assert_expected_list_len(test 0) + +# Pop from 1-item list to var +list(APPEND test one) +list(POP_BACK test one) +assert_expected_list_len(test 0) +if(NOT DEFINED one) + message(FATAL_ERROR "`one` expected to be defined") +endif() +if(NOT one STREQUAL "one") + message(FATAL_ERROR "`one` has unexpected value `${one}`") +endif() + +unset(one) +unset(two) + +# Pop from 1-item list to vars +list(APPEND test one) +list(POP_BACK test one two) +assert_expected_list_len(test 0) +if(NOT DEFINED one) + message(FATAL_ERROR "`one` expected to be defined") +endif() +if(NOT one STREQUAL "one") + message(FATAL_ERROR "`one` has unexpected value `${one}`") +endif() +if(DEFINED two) + message(FATAL_ERROR "`two` expected to be undefined") +endif() + +unset(one) +unset(two) + +# Default pop from 2-item list +list(APPEND test one two) +list(POP_BACK test) +assert_expected_list_len(test 1) +if(NOT test STREQUAL "one") + message(FATAL_ERROR "`test` has unexpected value `${test}`") +endif() + +# Pop from 2-item list +list(APPEND test two) +list(POP_BACK test two) +assert_expected_list_len(test 1) +if(NOT DEFINED two) + message(FATAL_ERROR "`two` expected to be defined") +endif() +if(NOT two STREQUAL "two") + message(FATAL_ERROR "`two` has unexpected value `${two}`") +endif() +if(NOT test STREQUAL "one") + message(FATAL_ERROR "`test` has unexpected value `${test}`") +endif() diff --git a/Tests/RunCMake/list/POP_FRONT-NoArgs-result.txt b/Tests/RunCMake/list/POP_FRONT-NoArgs-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/list/POP_FRONT-NoArgs-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/list/POP_FRONT-NoArgs-stderr.txt b/Tests/RunCMake/list/POP_FRONT-NoArgs-stderr.txt new file mode 100644 index 0000000..83060b4 --- /dev/null +++ b/Tests/RunCMake/list/POP_FRONT-NoArgs-stderr.txt @@ -0,0 +1 @@ +list must be called with at least two arguments diff --git a/Tests/RunCMake/list/POP_FRONT-NoArgs.cmake b/Tests/RunCMake/list/POP_FRONT-NoArgs.cmake new file mode 100644 index 0000000..c5cf837 --- /dev/null +++ b/Tests/RunCMake/list/POP_FRONT-NoArgs.cmake @@ -0,0 +1 @@ +list(POP_BACK) diff --git a/Tests/RunCMake/list/POP_FRONT.cmake b/Tests/RunCMake/list/POP_FRONT.cmake new file mode 100644 index 0000000..a2f8f3c --- /dev/null +++ b/Tests/RunCMake/list/POP_FRONT.cmake @@ -0,0 +1,79 @@ +cmake_policy(SET CMP0054 NEW) + +function(assert_expected_list_len list_var expected_size) + list(LENGTH ${list_var} _size) + if(NOT _size EQUAL ${expected_size}) + message(FATAL_ERROR "list size expected to be `${expected_size}`, got `${_size}` instead") + endif() +endfunction() + +# Pop from undefined list +list(POP_FRONT test) +if(DEFINED test) + message(FATAL_ERROR "`test` expected to be undefined") +endif() + +# Pop from empty list +set(test) +list(POP_FRONT test) +if(DEFINED test) + message(FATAL_ERROR "`test` expected to be undefined") +endif() + +# Default pop from 1-item list +list(APPEND test one) +list(POP_FRONT test) +assert_expected_list_len(test 0) + +# Pop from 1-item list to var +list(APPEND test one) +list(POP_FRONT test one) +assert_expected_list_len(test 0) +if(NOT DEFINED one) + message(FATAL_ERROR "`one` expected to be defined") +endif() +if(NOT one STREQUAL "one") + message(FATAL_ERROR "`one` has unexpected value `${one}`") +endif() + +unset(one) +unset(two) + +# Pop from 1-item list to vars +list(APPEND test one) +list(POP_FRONT test one two) +assert_expected_list_len(test 0) +if(NOT DEFINED one) + message(FATAL_ERROR "`one` expected to be defined") +endif() +if(NOT one STREQUAL "one") + message(FATAL_ERROR "`one` has unexpected value `${one}`") +endif() +if(DEFINED two) + message(FATAL_ERROR "`two` expected to be undefined") +endif() + +unset(one) +unset(two) + +# Default pop from 2-item list +list(APPEND test one two) +list(POP_FRONT test) +assert_expected_list_len(test 1) +if(NOT test STREQUAL "two") + message(FATAL_ERROR "`test` has unexpected value `${test}`") +endif() + +# Pop from 2-item list +list(PREPEND test one) +list(POP_FRONT test one) +assert_expected_list_len(test 1) +if(NOT DEFINED one) + message(FATAL_ERROR "`one` expected to be defined") +endif() +if(NOT one STREQUAL "one") + message(FATAL_ERROR "`one` has unexpected value `${one}`") +endif() +if(NOT test STREQUAL "two") + message(FATAL_ERROR "`test` has unexpected value `${test}`") +endif() diff --git a/Tests/RunCMake/list/PREPEND-NoArgs-result.txt b/Tests/RunCMake/list/PREPEND-NoArgs-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/list/PREPEND-NoArgs-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/list/PREPEND-NoArgs-stderr.txt b/Tests/RunCMake/list/PREPEND-NoArgs-stderr.txt new file mode 100644 index 0000000..83060b4 --- /dev/null +++ b/Tests/RunCMake/list/PREPEND-NoArgs-stderr.txt @@ -0,0 +1 @@ +list must be called with at least two arguments diff --git a/Tests/RunCMake/list/PREPEND-NoArgs.cmake b/Tests/RunCMake/list/PREPEND-NoArgs.cmake new file mode 100644 index 0000000..8935fa9 --- /dev/null +++ b/Tests/RunCMake/list/PREPEND-NoArgs.cmake @@ -0,0 +1 @@ +list(PREPEND) diff --git a/Tests/RunCMake/list/PREPEND.cmake b/Tests/RunCMake/list/PREPEND.cmake new file mode 100644 index 0000000..17b2921 --- /dev/null +++ b/Tests/RunCMake/list/PREPEND.cmake @@ -0,0 +1,33 @@ +list(PREPEND test) +if(test) + message(FATAL_ERROR "failed") +endif() + +list(PREPEND test satu) +if(NOT test STREQUAL "satu") + message(FATAL_ERROR "failed") +endif() + +list(PREPEND test dua) +if(NOT test STREQUAL "dua;satu") + message(FATAL_ERROR "failed") +endif() + +list(PREPEND test tiga) +if(NOT test STREQUAL "tiga;dua;satu") + message(FATAL_ERROR "failed") +endif() + +# Scope test +function(foo) + list(PREPEND test empat) + if(NOT test STREQUAL "empat;tiga;dua;satu") + message(FATAL_ERROR "failed") + endif() +endfunction() + +foo() + +if(NOT test STREQUAL "tiga;dua;satu") + message(FATAL_ERROR "failed") +endif() diff --git a/Tests/RunCMake/list/RunCMakeTest.cmake b/Tests/RunCMake/list/RunCMakeTest.cmake index bf3d22d..59c7ea5 100644 --- a/Tests/RunCMake/list/RunCMakeTest.cmake +++ b/Tests/RunCMake/list/RunCMakeTest.cmake @@ -98,3 +98,15 @@ run_cmake(SORT-NoCaseOption) # Successful tests run_cmake(SORT) + +# argument tests +run_cmake(PREPEND-NoArgs) +# Successful tests +run_cmake(PREPEND) + +# argument tests +run_cmake(POP_BACK-NoArgs) +run_cmake(POP_FRONT-NoArgs) +# Successful tests +run_cmake(POP_BACK) +run_cmake(POP_FRONT) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d59159afdb630734213a120334f394331ef18504 commit d59159afdb630734213a120334f394331ef18504 Author: Chuck Cranor AuthorDate: Fri Feb 8 14:14:48 2019 -0700 Commit: Chuck Cranor CommitDate: Tue Feb 19 06:50:22 2019 -0700 Cray: clean up CrayPrgEnv and CrayLinuxEnvironment modules CrayPrgEnv: - add a new function __cmake_craype_linktype() that determines what link mode the Cray compiler wrapper will use in a more sophisticated way than just MATCHing for static/dynamic on the command line. - add a new function __cmake_craype_setupenv() that does a once-per-cmake-run setup that does the following: 1. does a basic check of the wrapper's configuration. Running cmake and then changing module and/or linktype configuration may cause build problems (since the data in the cmake cache may no longer be correct after the change). We look for this and warn the user about it. 2. uses the "module" provided PKG_CONFIG_PATH environment variable to add additional prefixes to the system prefix path. This function used to be done by CrayLinuxEnvironment using the compiler implicit include/link paths but that is intended only for cross-compiling on Cray front-end nodes. Since CrayPrgEnv runs on both front-end and compute nodes, we migrate this function here. CrayLinuxEnvironment: - No need to set variables like CMAKE_SHARED_LIBRARY_PREFIX to values that have already been properly established by CMakeGenericSystem.cmake. Remove redundant sets of CMAKE_SHARED_LIBRARY_PREFIX, CMAKE_SHARED_LIBRARY_SUFFIX, CMAKE_STATIC_LIBRARY_PREFIX, CMAKE_STATIC_LIBRARY_SUFFIX, CMAKE_FIND_LIBRARY_PREFIXES, and CMAKE_DL_LIBS. - No need to add $ENV{SYSROOT_DIR}/usr/include to CMAKE_SYSTEM_INCLUDE_PATH when we already added $ENV{SYSROOT_DIR}/usr to CMAKE_SYSTEM_PREFIX_PATH. - Remove __cray_list_intersect(), __list_clean_dupes(), and buggy code that adds compiler implicit includes/libs to CMAKE_SYSTEM_INCLUDE_PATH and CMAKE_SYSTEM_LIBRARY_PATH. This function has migrated to CrayPrgEnv.cmake, as noted above. See discussion in issue #17413 for additional details. diff --git a/Modules/Compiler/CrayPrgEnv.cmake b/Modules/Compiler/CrayPrgEnv.cmake index 6c1c770..e55e587 100644 --- a/Modules/Compiler/CrayPrgEnv.cmake +++ b/Modules/Compiler/CrayPrgEnv.cmake @@ -1,8 +1,93 @@ # Guard against multiple inclusions -if(__craylinux_crayprgenv) +if(__cmake_craype_crayprgenv) return() endif() -set(__craylinux_crayprgenv 1) +set(__cmake_craype_crayprgenv 1) + +# CrayPrgEnv: loaded when compiling through the Cray compiler wrapper. +# The compiler wrapper can run on a front-end node or a compute node. + +cmake_policy(PUSH) +cmake_policy(SET CMP0057 NEW) # if IN_LIST + +# One-time setup of the craype environment. First, check the wrapper config. +# The wrapper's selection of a compiler (gcc, clang, intel, etc.) and +# default include/library paths is selected using the "module" command. +# The CRAYPE_LINK_TYPE environment variable partly controls if static +# or dynamic binaries are generated (see __cmake_craype_linktype below). +# Running cmake and then changing module and/or linktype configuration +# may cause build problems (since the data in the cmake cache may no +# longer be correct after the change). We can look for this and warn +# the user about it. Second, use the "module" provided PKG_CONFIG_PATH-like +# environment variable to add additional prefixes to the system prefix +# path. +function(__cmake_craype_setupenv) + if(NOT DEFINED __cmake_craype_setupenv_done) # only done once per run + set(__cmake_craype_setupenv_done 1 PARENT_SCOPE) + unset(__cmake_check) + set(CMAKE_CRAYPE_LINKTYPE "$ENV{CRAYPE_LINK_TYPE}" CACHE STRING + "saved value of CRAYPE_LINK_TYPE environment variable") + set(CMAKE_CRAYPE_LOADEDMODULES "$ENV{LOADEDMODULES}" CACHE STRING + "saved value of LOADEDMODULES environment variable") + mark_as_advanced(CMAKE_CRAYPE_LINKTYPE CMAKE_CRAYPE_LOADEDMODULES) + if (NOT "${CMAKE_CRAYPE_LINKTYPE}" STREQUAL "$ENV{CRAYPE_LINK_TYPE}") + string(APPEND __cmake_check "CRAYPE_LINK_TYPE ") + endif() + if (NOT "${CMAKE_CRAYPE_LOADEDMODULES}" STREQUAL "$ENV{LOADEDMODULES}") + string(APPEND __cmake_check "LOADEDMODULES ") + endif() + if(DEFINED __cmake_check) + message(STATUS "NOTE: ${__cmake_check}changed since initial config!") + message(STATUS "NOTE: this may cause unexpected build errors.") + endif() + # loop over variables of interest + foreach(pkgcfgvar PKG_CONFIG_PATH PKG_CONFIG_PATH_DEFAULT + PE_PKG_CONFIG_PATH) + file(TO_CMAKE_PATH "$ENV{${pkgcfgvar}}" pkgcfg) + foreach(path ${pkgcfg}) + string(REGEX REPLACE "(.*)/lib[^/]*/pkgconfig$" "\\1" path "${path}") + if(NOT "${path}" STREQUAL "" AND + NOT "${path}" IN_LIST CMAKE_SYSTEM_PREFIX_PATH) + list(APPEND CMAKE_SYSTEM_PREFIX_PATH "${path}") + endif() + endforeach() + endforeach() + # push it up out of this function into the parent scope + set(CMAKE_SYSTEM_PREFIX_PATH "${CMAKE_SYSTEM_PREFIX_PATH}" PARENT_SCOPE) + endif() +endfunction() + +# The wrapper disables dynamic linking by default. Dynamic linking is +# enabled either by setting $ENV{CRAYPE_LINK_TYPE} to "dynamic" or by +# specifying "-dynamic" to the wrapper when linking. Specifying "-static" +# to the wrapper when linking takes priority over $ENV{CRAYPE_LINK_TYPE}. +# Furthermore, if you specify multiple "-dynamic" and "-static" flags to +# the wrapper when linking, the last one will win. In this case, the +# wrapper will also print a warning like: +# Warning: -dynamic was already seen on command line, overriding with -static. +# +# note that cmake applies both CMAKE_${lang}_FLAGS and CMAKE_EXE_LINKER_FLAGS +# (in that order) to the linking command, so -dynamic can appear in either +# variable. +function(__cmake_craype_linktype lang rv) + # start with ENV, but allow flags to override + if("$ENV{CRAYPE_LINK_TYPE}" STREQUAL "dynamic") + set(linktype dynamic) + else() + set(linktype static) + endif() + # combine flags and convert to a list so we can apply the flags in order + set(linkflags "${CMAKE_${lang}_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}") + string(REPLACE " " ";" linkflags "${linkflags}") + foreach(flag IN LISTS linkflags) + if("${flag}" STREQUAL "-dynamic") + set(linktype dynamic) + elseif("${flag}" STREQUAL "-static") + set(linktype static) + endif() + endforeach() + set(${rv} ${linktype} PARENT_SCOPE) +endfunction() macro(__CrayPrgEnv_setup lang) if(DEFINED ENV{CRAYPE_VERSION}) @@ -13,25 +98,25 @@ macro(__CrayPrgEnv_setup lang) message(STATUS "Cray Programming Environment (unknown version) ${lang}") endif() + # setup the craype environment + __cmake_craype_setupenv() + # Flags for the Cray wrappers set(CMAKE_STATIC_LIBRARY_LINK_${lang}_FLAGS "-static") set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-shared") set(CMAKE_SHARED_LIBRARY_LINK_${lang}_FLAGS "-dynamic") - # If the link type is not explicitly specified in the environment then - # the Cray wrappers assume that the code will be built statically so - # we check the following condition(s) are NOT met - # Compiler flags are explicitly dynamic - # Env var is dynamic and compiler flags are not explicitly static - if(NOT (((CMAKE_${lang}_FLAGS MATCHES "(^| )-dynamic($| )") OR - (CMAKE_EXE_LINKER_FLAGS MATCHES "(^| )-dynamic($| )")) - OR - (("$ENV{CRAYPE_LINK_TYPE}" STREQUAL "dynamic") AND - NOT ((CMAKE_${lang}_FLAGS MATCHES "(^| )-static($| )") OR - (CMAKE_EXE_LINKER_FLAGS MATCHES "(^| )-static($| )"))))) + # determine linktype from environment and compiler flags + __cmake_craype_linktype(${lang} __cmake_craype_${lang}_linktype) + + # switch off shared libs if we get a static linktype + if("${__cmake_craype_${lang}_linktype}" STREQUAL "static") set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE) set(BUILD_SHARED_LIBS FALSE CACHE BOOL "") set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") set(CMAKE_LINK_SEARCH_START_STATIC TRUE) endif() + endmacro() + +cmake_policy(POP) diff --git a/Modules/Platform/CrayLinuxEnvironment.cmake b/Modules/Platform/CrayLinuxEnvironment.cmake index a1a3d3f..f2aaf3f 100644 --- a/Modules/Platform/CrayLinuxEnvironment.cmake +++ b/Modules/Platform/CrayLinuxEnvironment.cmake @@ -1,6 +1,5 @@ -# Compute Node Linux doesn't quite work the same as native Linux so all of this -# needs to be custom. We use the variables defined through Cray's environment -# modules to set up the right paths for things. +# CrayLinuxEnvironment: loaded by users cross-compiling on a Cray front-end +# node by specifying "-DCMAKE_SYSTEM_NAME=CrayLinuxEnvironment" to cmake set(UNIX 1) @@ -30,13 +29,6 @@ endif() # Note: this may need to change in the future with 64-bit ARM set(CMAKE_SYSTEM_PROCESSOR "x86_64") -set(CMAKE_SHARED_LIBRARY_PREFIX "lib") -set(CMAKE_SHARED_LIBRARY_SUFFIX ".so") -set(CMAKE_STATIC_LIBRARY_PREFIX "lib") -set(CMAKE_STATIC_LIBRARY_SUFFIX ".a") - -set(CMAKE_FIND_LIBRARY_PREFIXES "lib") - # Don't override shared lib support if it's already been set and possibly # overridden elsewhere by the CrayPrgEnv module if(NOT CMAKE_FIND_LIBRARY_SUFFIXES) @@ -44,12 +36,9 @@ if(NOT CMAKE_FIND_LIBRARY_SUFFIXES) set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE) endif() -set(CMAKE_DL_LIBS dl) +# The rest of this file is based on UnixPaths.cmake, adjusted for Cray -# Note: Much of this is pulled from UnixPaths.cmake but adjusted to the Cray -# environment accordingly - -# Get the install directory of the running cmake to the search directories +# add the install directory of the running cmake to the search directories # CMAKE_ROOT is CMAKE_INSTALL_PREFIX/share/cmake, so we need to go two levels up get_filename_component(__cmake_install_dir "${CMAKE_ROOT}" PATH) get_filename_component(__cmake_install_dir "${__cmake_install_dir}" PATH) @@ -81,7 +70,6 @@ if (NOT CMAKE_FIND_NO_INSTALL_PREFIX) endif() list(APPEND CMAKE_SYSTEM_INCLUDE_PATH - $ENV{SYSROOT_DIR}/usr/include $ENV{SYSROOT_DIR}/usr/include/X11 ) list(APPEND CMAKE_SYSTEM_LIBRARY_PATH @@ -95,57 +83,5 @@ list(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES $ENV{SYSROOT_DIR}/lib64 ) -# Compute the intersection of several lists -function(__cray_list_intersect OUTPUT INPUT0) - if(ARGC EQUAL 2) - list(APPEND ${OUTPUT} ${${INPUT0}}) - else() - foreach(I IN LISTS ${INPUT0}) - set(__is_common 1) - foreach(L IN LISTS ARGN) - list(FIND ${L} "${I}" __idx) - if(__idx EQUAL -1) - set(__is_common 0) - break() - endif() - endforeach() - if(__is_common) - list(APPEND ${OUTPUT} "${I}") - endif() - endforeach() - endif() - set(${OUTPUT} ${${OUTPUT}} PARENT_SCOPE) -endfunction() - -macro(__list_clean_dupes var) - if(${var}) - list(REMOVE_DUPLICATES ${var}) - endif() -endmacro() - -get_property(__langs GLOBAL PROPERTY ENABLED_LANGUAGES) -set(__cray_inc_path_vars) -set(__cray_lib_path_vars) -foreach(__lang IN LISTS __langs) - list(APPEND __cray_inc_path_vars CMAKE_${__lang}_IMPLICIT_INCLUDE_DIRECTORIES) - list(APPEND __cray_lib_path_vars CMAKE_${__lang}_IMPLICIT_LINK_DIRECTORIES) -endforeach() -if(__cray_inc_path_vars) - __cray_list_intersect(__cray_implicit_include_dirs ${__cray_inc_path_vars}) - if(__cray_implicit_include_dirs) - list(INSERT CMAKE_SYSTEM_INCLUDE_PATH 0 ${__cray_implicit_include_dirs}) - endif() -endif() -if(__cray_lib_path_vars) - __cray_list_intersect(__cray_implicit_library_dirs ${__cray_lib_path_vars}) - if(__cray_implicit_library_dirs) - list(INSERT CMAKE_SYSTEM_LIBRARY_PATH 0 ${__cray_implicit_library_dirs}) - endif() -endif() -__list_clean_dupes(CMAKE_SYSTEM_PREFIX_PATH) -__list_clean_dupes(CMAKE_SYSTEM_INCLUDE_PATH) -__list_clean_dupes(CMAKE_SYSTEM_LIBRARY_PATH) -__list_clean_dupes(CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES) - # Enable use of lib64 search path variants by default. set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS TRUE) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0281f9a4cad6e189601a87c9ccfba8c54e71e14b commit 0281f9a4cad6e189601a87c9ccfba8c54e71e14b Author: Vitaly Stakhovsky AuthorDate: Mon Feb 18 09:54:51 2019 -0500 Commit: Vitaly Stakhovsky CommitDate: Mon Feb 18 20:48:19 2019 -0500 cmMakefile::ConfigureFile: Accept `std::string` parameters diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.cxx b/Source/CPack/WiX/cmCPackWIXGenerator.cxx index f522ce2..045d93d 100644 --- a/Source/CPack/WiX/cmCPackWIXGenerator.cxx +++ b/Source/CPack/WiX/cmCPackWIXGenerator.cxx @@ -618,7 +618,7 @@ bool cmCPackWIXGenerator::GenerateMainSourceFileFromTemplate() std::string mainSourceFilePath = this->CPackTopLevel + "/main.wxs"; - if (!ConfigureFile(wixTemplate.c_str(), mainSourceFilePath.c_str())) { + if (!ConfigureFile(wixTemplate, mainSourceFilePath)) { cmCPackLogger(cmCPackLog::LOG_ERROR, "Failed creating '" << mainSourceFilePath << "'' from template." << std::endl); diff --git a/Source/CPack/cmCPackGenerator.cxx b/Source/CPack/cmCPackGenerator.cxx index fc34ef8..575254e 100644 --- a/Source/CPack/cmCPackGenerator.cxx +++ b/Source/CPack/cmCPackGenerator.cxx @@ -1245,7 +1245,8 @@ bool cmCPackGenerator::ConfigureString(const std::string& inString, return true; } -bool cmCPackGenerator::ConfigureFile(const char* inName, const char* outName, +bool cmCPackGenerator::ConfigureFile(const std::string& inName, + const std::string& outName, bool copyOnly /* = false */) { return this->MakefileMap->ConfigureFile(inName, outName, copyOnly, true, diff --git a/Source/CPack/cmCPackGenerator.h b/Source/CPack/cmCPackGenerator.h index 9e4bf43..3c06d41 100644 --- a/Source/CPack/cmCPackGenerator.h +++ b/Source/CPack/cmCPackGenerator.h @@ -169,7 +169,8 @@ protected: virtual const char* GetPackagingInstallPrefix(); virtual std::string FindTemplate(const char* name); - virtual bool ConfigureFile(const char* inName, const char* outName, + virtual bool ConfigureFile(const std::string& inName, + const std::string& outName, bool copyOnly = false); virtual bool ConfigureString(const std::string& input, std::string& output); virtual int InitializeInternal(); diff --git a/Source/CPack/cmCPackNSISGenerator.cxx b/Source/CPack/cmCPackNSISGenerator.cxx index c77eebc..6afd7d5 100644 --- a/Source/CPack/cmCPackNSISGenerator.cxx +++ b/Source/CPack/cmCPackNSISGenerator.cxx @@ -292,9 +292,8 @@ int cmCPackNSISGenerator::PackageFiles() this->SetOption("CPACK_NSIS_DEFINES", defines.c_str()); } - this->ConfigureFile(nsisInInstallOptions.c_str(), - nsisInstallOptions.c_str()); - this->ConfigureFile(nsisInFileName.c_str(), nsisFileName.c_str()); + this->ConfigureFile(nsisInInstallOptions, nsisInstallOptions); + this->ConfigureFile(nsisInFileName, nsisFileName); std::string nsisCmd = "\""; nsisCmd += this->GetOption("CPACK_INSTALLER_PROGRAM"); nsisCmd += "\" \"" + nsisFileName + "\""; diff --git a/Source/CPack/cmCPackOSXX11Generator.cxx b/Source/CPack/cmCPackOSXX11Generator.cxx index 85248c6..90e0afe 100644 --- a/Source/CPack/cmCPackOSXX11Generator.cxx +++ b/Source/CPack/cmCPackOSXX11Generator.cxx @@ -83,7 +83,7 @@ int cmCPackOSXX11Generator::PackageFiles() return 0; } std::string destFileName = resourcesDirectory + "/" + iconFileName; - this->ConfigureFile(iconFile, destFileName.c_str(), true); + this->ConfigureFile(iconFile, destFileName, true); this->SetOptionIfNotSet("CPACK_APPLE_GUI_ICON", iconFileName.c_str()); } @@ -236,7 +236,7 @@ bool cmCPackOSXX11Generator::CopyCreateResourceFile(const std::string& name) cmCPackLogger(cmCPackLog::LOG_VERBOSE, "Configure file: " << (inFileName ? inFileName : "(NULL)") << " to " << destFileName << std::endl); - this->ConfigureFile(inFileName, destFileName.c_str()); + this->ConfigureFile(inFileName, destFileName); return true; } */ @@ -266,7 +266,7 @@ bool cmCPackOSXX11Generator::CopyResourcePlistFile( cmCPackLogger(cmCPackLog::LOG_VERBOSE, "Configure file: " << inFileName << " to " << destFileName << std::endl); - this->ConfigureFile(inFileName.c_str(), destFileName.c_str(), copyOnly); + this->ConfigureFile(inFileName, destFileName, copyOnly); return true; } diff --git a/Source/CPack/cmCPackPKGGenerator.cxx b/Source/CPack/cmCPackPKGGenerator.cxx index d54ab56..8c22c65 100644 --- a/Source/CPack/cmCPackPKGGenerator.cxx +++ b/Source/CPack/cmCPackPKGGenerator.cxx @@ -105,7 +105,7 @@ void cmCPackPKGGenerator::WriteDistributionFile(const char* metapackageFile) // Create the distribution.dist file in the metapackage to turn it // into a distribution package. - this->ConfigureFile(distributionTemplate.c_str(), distributionFile.c_str()); + this->ConfigureFile(distributionTemplate, distributionFile); } void cmCPackPKGGenerator::CreateChoiceOutline( @@ -294,7 +294,7 @@ bool cmCPackPKGGenerator::CopyCreateResourceFile(const std::string& name, cmCPackLogger(cmCPackLog::LOG_VERBOSE, "Configure file: " << (inFileName ? inFileName : "(NULL)") << " to " << destFileName << std::endl); - this->ConfigureFile(inFileName, destFileName.c_str()); + this->ConfigureFile(inFileName, destFileName); return true; } @@ -322,7 +322,7 @@ bool cmCPackPKGGenerator::CopyResourcePlistFile(const std::string& name, cmCPackLogger(cmCPackLog::LOG_VERBOSE, "Configure file: " << inFileName << " to " << destFileName << std::endl); - this->ConfigureFile(inFileName.c_str(), destFileName.c_str()); + this->ConfigureFile(inFileName, destFileName); return true; } diff --git a/Source/cmConfigureFileCommand.cxx b/Source/cmConfigureFileCommand.cxx index 8224a0f..0917d11 100644 --- a/Source/cmConfigureFileCommand.cxx +++ b/Source/cmConfigureFileCommand.cxx @@ -102,7 +102,7 @@ bool cmConfigureFileCommand::InitialPass(std::vector const& args, int cmConfigureFileCommand::ConfigureFile() { - return this->Makefile->ConfigureFile( - this->InputFile.c_str(), this->OutputFile.c_str(), this->CopyOnly, - this->AtOnly, this->EscapeQuotes, this->NewLineStyle); + return this->Makefile->ConfigureFile(this->InputFile, this->OutputFile, + this->CopyOnly, this->AtOnly, + this->EscapeQuotes, this->NewLineStyle); } diff --git a/Source/cmCreateTestSourceList.cxx b/Source/cmCreateTestSourceList.cxx index 69532e6..b78493f 100644 --- a/Source/cmCreateTestSourceList.cxx +++ b/Source/cmCreateTestSourceList.cxx @@ -136,8 +136,7 @@ bool cmCreateTestSourceList::InitialPass(std::vector const& args, this->Makefile->AddDefinition("CMAKE_FUNCTION_TABLE_ENTIRES", functionMapCode.c_str()); bool res = true; - if (!this->Makefile->ConfigureFile(configFile.c_str(), driver.c_str(), false, - true, false)) { + if (!this->Makefile->ConfigureFile(configFile, driver, false, true, false)) { res = false; } diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index 51c001e..68de8ae 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -2002,7 +2002,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, // so let it replace the framework name. This avoids creating // a per-configuration Info.plist file. this->CurrentLocalGenerator->GenerateFrameworkInfoPList( - gtgt, "$(EXECUTABLE_NAME)", plist.c_str()); + gtgt, "$(EXECUTABLE_NAME)", plist); buildSettings->AddAttribute("INFOPLIST_FILE", this->CreateString(plist)); buildSettings->AddAttribute("MACH_O_TYPE", @@ -2043,7 +2043,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, // a per-configuration Info.plist file. The cfbundle plist // is very similar to the application bundle plist this->CurrentLocalGenerator->GenerateAppleInfoPList( - gtgt, "$(EXECUTABLE_NAME)", plist.c_str()); + gtgt, "$(EXECUTABLE_NAME)", plist); buildSettings->AddAttribute("INFOPLIST_FILE", this->CreateString(plist)); } else { @@ -2077,7 +2077,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, // so let it replace the framework name. This avoids creating // a per-configuration Info.plist file. this->CurrentLocalGenerator->GenerateFrameworkInfoPList( - gtgt, "$(EXECUTABLE_NAME)", plist.c_str()); + gtgt, "$(EXECUTABLE_NAME)", plist); buildSettings->AddAttribute("INFOPLIST_FILE", this->CreateString(plist)); } else { @@ -2115,7 +2115,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, // so let it replace the executable name. This avoids creating // a per-configuration Info.plist file. this->CurrentLocalGenerator->GenerateAppleInfoPList( - gtgt, "$(EXECUTABLE_NAME)", plist.c_str()); + gtgt, "$(EXECUTABLE_NAME)", plist); buildSettings->AddAttribute("INFOPLIST_FILE", this->CreateString(plist)); } diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index a2d0efe..fad1741 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -2822,7 +2822,7 @@ static void cmLGInfoProp(cmMakefile* mf, cmGeneratorTarget* target, void cmLocalGenerator::GenerateAppleInfoPList(cmGeneratorTarget* target, const std::string& targetName, - const char* fname) + const std::string& fname) { // Find the Info.plist template. const char* in = target->GetProperty("MACOSX_BUNDLE_INFO_PLIST"); @@ -2856,11 +2856,12 @@ void cmLocalGenerator::GenerateAppleInfoPList(cmGeneratorTarget* target, cmLGInfoProp(mf, target, "MACOSX_BUNDLE_SHORT_VERSION_STRING"); cmLGInfoProp(mf, target, "MACOSX_BUNDLE_BUNDLE_VERSION"); cmLGInfoProp(mf, target, "MACOSX_BUNDLE_COPYRIGHT"); - mf->ConfigureFile(inFile.c_str(), fname, false, false, false); + mf->ConfigureFile(inFile, fname, false, false, false); } void cmLocalGenerator::GenerateFrameworkInfoPList( - cmGeneratorTarget* target, const std::string& targetName, const char* fname) + cmGeneratorTarget* target, const std::string& targetName, + const std::string& fname) { // Find the Info.plist template. const char* in = target->GetProperty("MACOSX_FRAMEWORK_INFO_PLIST"); @@ -2890,5 +2891,5 @@ void cmLocalGenerator::GenerateFrameworkInfoPList( cmLGInfoProp(mf, target, "MACOSX_FRAMEWORK_IDENTIFIER"); cmLGInfoProp(mf, target, "MACOSX_FRAMEWORK_SHORT_VERSION_STRING"); cmLGInfoProp(mf, target, "MACOSX_FRAMEWORK_BUNDLE_VERSION"); - mf->ConfigureFile(inFile.c_str(), fname, false, false, false); + mf->ConfigureFile(inFile, fname, false, false, false); } diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index f9839f6..de12190 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -340,14 +340,14 @@ public: */ void GenerateAppleInfoPList(cmGeneratorTarget* target, const std::string& targetName, - const char* fname); + const std::string& fname); /** * Generate a macOS framework Info.plist file. */ void GenerateFrameworkInfoPList(cmGeneratorTarget* target, const std::string& targetName, - const char* fname); + const std::string& fname); /** Construct a comment for a custom command. */ std::string ConstructComment(cmCustomCommandGenerator const& ccg, const char* default_comment = ""); diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 560181f..0a0501b 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -3729,22 +3729,23 @@ void cmMakefile::ConfigureString(const std::string& input, std::string& output, lineNumber, true, true); } -int cmMakefile::ConfigureFile(const char* infile, const char* outfile, - bool copyonly, bool atOnly, bool escapeQuotes, +int cmMakefile::ConfigureFile(const std::string& infile, + const std::string& outfile, bool copyonly, + bool atOnly, bool escapeQuotes, cmNewLineStyle newLine) { int res = 1; if (!this->CanIWriteThisFile(outfile)) { - cmSystemTools::Error("Attempt to write file: ", outfile, + cmSystemTools::Error("Attempt to write file: " + outfile + " into a source directory."); return 0; } if (!cmSystemTools::FileExists(infile)) { - cmSystemTools::Error("File ", infile, " does not exist."); + cmSystemTools::Error("File " + infile + " does not exist."); return 0; } std::string soutfile = outfile; - std::string sinfile = infile; + const std::string& sinfile = infile; this->AddCMakeDependFile(sinfile); cmSystemTools::ConvertToUnixSlashes(soutfile); diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 0800ce4..88b4c2f 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -610,8 +610,8 @@ public: /** * Copy file but change lines according to ConfigureString */ - int ConfigureFile(const char* infile, const char* outfile, bool copyonly, - bool atOnly, bool escapeQuotes, + int ConfigureFile(const std::string& infile, const std::string& outfile, + bool copyonly, bool atOnly, bool escapeQuotes, cmNewLineStyle = cmNewLineStyle()); /** diff --git a/Source/cmOSXBundleGenerator.cxx b/Source/cmOSXBundleGenerator.cxx index 6857d5a..47a8df4 100644 --- a/Source/cmOSXBundleGenerator.cxx +++ b/Source/cmOSXBundleGenerator.cxx @@ -54,8 +54,7 @@ void cmOSXBundleGenerator::CreateAppBundle(const std::string& targetName, plist += this->GT->GetAppBundleDirectory(this->ConfigName, cmGeneratorTarget::ContentLevel); plist += "/Info.plist"; - this->LocalGenerator->GenerateAppleInfoPList(this->GT, targetName, - plist.c_str()); + this->LocalGenerator->GenerateAppleInfoPList(this->GT, targetName, plist); this->Makefile->AddCMakeOutputFile(plist); outpath = out; } @@ -90,8 +89,7 @@ void cmOSXBundleGenerator::CreateFramework(const std::string& targetName, } plist += "/Info.plist"; std::string name = cmSystemTools::GetFilenameName(targetName); - this->LocalGenerator->GenerateFrameworkInfoPList(this->GT, name, - plist.c_str()); + this->LocalGenerator->GenerateFrameworkInfoPList(this->GT, name, plist); // Generate Versions directory only for MacOSX frameworks if (this->Makefile->PlatformIsAppleEmbedded()) { @@ -184,7 +182,7 @@ void cmOSXBundleGenerator::CreateCFBundle(const std::string& targetName, cmGeneratorTarget::ContentLevel); plist += "/Info.plist"; std::string name = cmSystemTools::GetFilenameName(targetName); - this->LocalGenerator->GenerateAppleInfoPList(this->GT, name, plist.c_str()); + this->LocalGenerator->GenerateAppleInfoPList(this->GT, name, plist); this->Makefile->AddCMakeOutputFile(plist); } diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 00a2d74..6ee82f4 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -622,8 +622,8 @@ void cmVisualStudio10TargetGenerator::Generate() propsLocal += this->DefaultArtifactDir; propsLocal += "\\nasm.props"; ConvertToWindowsSlash(propsLocal); - this->Makefile->ConfigureFile(propsTemplate.c_str(), - propsLocal.c_str(), false, true, true); + this->Makefile->ConfigureFile(propsTemplate, propsLocal, false, true, + true); Elem(e1, "Import").Attribute("Project", propsLocal); } } ----------------------------------------------------------------------- Summary of changes: Help/command/list.rst | 36 +++++- .../dev/list-prepend-and-pop-subcommands.rst | 4 + Modules/Compiler/CrayPrgEnv.cmake | 111 +++++++++++++++-- Modules/Platform/CrayLinuxEnvironment.cmake | 72 +---------- Source/CPack/WiX/cmCPackWIXGenerator.cxx | 2 +- Source/CPack/cmCPackGenerator.cxx | 3 +- Source/CPack/cmCPackGenerator.h | 3 +- Source/CPack/cmCPackNSISGenerator.cxx | 5 +- Source/CPack/cmCPackOSXX11Generator.cxx | 6 +- Source/CPack/cmCPackPKGGenerator.cxx | 6 +- Source/cmConfigureFileCommand.cxx | 6 +- Source/cmCreateTestSourceList.cxx | 3 +- Source/cmGlobalXCodeGenerator.cxx | 8 +- Source/cmListCommand.cxx | 138 ++++++++++++++++++++- Source/cmListCommand.h | 3 + Source/cmLocalGenerator.cxx | 9 +- Source/cmLocalGenerator.h | 4 +- Source/cmMakefile.cxx | 11 +- Source/cmMakefile.h | 4 +- Source/cmOSXBundleGenerator.cxx | 8 +- Source/cmVisualStudio10TargetGenerator.cxx | 4 +- .../POP_BACK-NoArgs-result.txt} | 0 Tests/RunCMake/list/POP_BACK-NoArgs-stderr.txt | 1 + Tests/RunCMake/list/POP_BACK-NoArgs.cmake | 1 + Tests/RunCMake/list/POP_BACK.cmake | 79 ++++++++++++ .../POP_FRONT-NoArgs-result.txt} | 0 Tests/RunCMake/list/POP_FRONT-NoArgs-stderr.txt | 1 + Tests/RunCMake/list/POP_FRONT-NoArgs.cmake | 1 + Tests/RunCMake/list/POP_FRONT.cmake | 79 ++++++++++++ .../PREPEND-NoArgs-result.txt} | 0 Tests/RunCMake/list/PREPEND-NoArgs-stderr.txt | 1 + Tests/RunCMake/list/PREPEND-NoArgs.cmake | 1 + Tests/RunCMake/list/PREPEND.cmake | 33 +++++ Tests/RunCMake/list/RunCMakeTest.cmake | 12 ++ 34 files changed, 527 insertions(+), 128 deletions(-) create mode 100644 Help/release/dev/list-prepend-and-pop-subcommands.rst copy Tests/RunCMake/{while/MissingArgument-result.txt => list/POP_BACK-NoArgs-result.txt} (100%) create mode 100644 Tests/RunCMake/list/POP_BACK-NoArgs-stderr.txt create mode 100644 Tests/RunCMake/list/POP_BACK-NoArgs.cmake create mode 100644 Tests/RunCMake/list/POP_BACK.cmake copy Tests/RunCMake/{while/MissingArgument-result.txt => list/POP_FRONT-NoArgs-result.txt} (100%) create mode 100644 Tests/RunCMake/list/POP_FRONT-NoArgs-stderr.txt create mode 100644 Tests/RunCMake/list/POP_FRONT-NoArgs.cmake create mode 100644 Tests/RunCMake/list/POP_FRONT.cmake copy Tests/RunCMake/{while/MissingArgument-result.txt => list/PREPEND-NoArgs-result.txt} (100%) create mode 100644 Tests/RunCMake/list/PREPEND-NoArgs-stderr.txt create mode 100644 Tests/RunCMake/list/PREPEND-NoArgs.cmake create mode 100644 Tests/RunCMake/list/PREPEND.cmake hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 20 16:43:07 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 20 Feb 2019 16:43:07 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-159-g0ffdcba Message-ID: <20190220214307.7A298112E6E@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 0ffdcba1789dab86655bc787fc480183467573d4 (commit) via 943a50da55f8d1b25f92dd010c4c54e3b0dfcda7 (commit) from b76b83efd37a439e22d1d92af3b98c30e8f9ba97 (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=0ffdcba1789dab86655bc787fc480183467573d4 commit 0ffdcba1789dab86655bc787fc480183467573d4 Merge: b76b83e 943a50d Author: Craig Scott AuthorDate: Wed Feb 20 21:39:11 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 20 16:39:22 2019 -0500 Merge topic 'readme-build-out-of-source' 943a50da55 README: Suggest bootstrapping out-of-source for development Acked-by: Kitware Robot Acked-by: Bartosz Merge-request: !2993 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=943a50da55f8d1b25f92dd010c4c54e3b0dfcda7 commit 943a50da55f8d1b25f92dd010c4c54e3b0dfcda7 Author: Brad King AuthorDate: Wed Feb 20 07:56:25 2019 -0500 Commit: Brad King CommitDate: Wed Feb 20 08:00:03 2019 -0500 README: Suggest bootstrapping out-of-source for development Building in-source and running the test suite in-source both leave many artifacts that we (purposely) do not cover via `.gitignore`. For developing CMake we typically use out-of-source builds, so suggest this in the README. diff --git a/README.rst b/README.rst index 11bafca..76783ec 100644 --- a/README.rst +++ b/README.rst @@ -57,12 +57,19 @@ You need to have a C++ compiler (supporting C++11) and a ``make`` installed. Run the ``bootstrap`` script you find in the source directory of CMake. You can use the ``--help`` option to see the supported options. You may use the ``--prefix=`` option to specify a custom -installation directory for CMake. You can run the ``bootstrap`` script from -within the CMake source directory or any other build directory of your -choice. Once this has finished successfully, run ``make`` and -``make install``. In summary:: +installation directory for CMake. Once this has finished successfully, +run ``make`` and ``make install``. - $ ./bootstrap && make && sudo make install +For example, if you simply want to build and install CMake from source, +you can build directly in the source tree:: + + $ ./bootstrap && make && sudo make install + +Or, if you plan to develop CMake or otherwise run the test suite, create +a separate build tree:: + + $ mkdir cmake-build && cd cmake-build + $ ../cmake-source/bootstrap && make Windows ^^^^^^^ @@ -79,9 +86,7 @@ There are two ways for building CMake under Windows: $ pacman -S --needed git base-devel mingw-w64-x86_64-gcc - and bootstrap as above:: - - $ ./bootstrap && make + and bootstrap as above. .. _`CMake Download Page`: https://cmake.org/cmake/resources/software.html .. _`MSYS2`: https://www.msys2.org/ ----------------------------------------------------------------------- Summary of changes: README.rst | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 21 00:03:05 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 21 Feb 2019 00:03:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-160-geb08e68 Message-ID: <20190221050305.5F19612810D@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 eb08e68b77954a4b439ee66b4987789b213d878a (commit) from 0ffdcba1789dab86655bc787fc480183467573d4 (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=eb08e68b77954a4b439ee66b4987789b213d878a commit eb08e68b77954a4b439ee66b4987789b213d878a Author: Kitware Robot AuthorDate: Thu Feb 21 00:01:07 2019 -0500 Commit: Kitware Robot CommitDate: Thu Feb 21 00:01:07 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index b324571..6687471 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 14) -set(CMake_VERSION_PATCH 20190220) +set(CMake_VERSION_PATCH 20190221) #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 22 00:03:05 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 22 Feb 2019 00:03:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-161-g63928f0 Message-ID: <20190222050305.D8C7A127A72@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 63928f0868ae48f0b21464b466a0f8bc7b8e3369 (commit) from eb08e68b77954a4b439ee66b4987789b213d878a (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=63928f0868ae48f0b21464b466a0f8bc7b8e3369 commit 63928f0868ae48f0b21464b466a0f8bc7b8e3369 Author: Kitware Robot AuthorDate: Fri Feb 22 00:01:05 2019 -0500 Commit: Kitware Robot CommitDate: Fri Feb 22 00:01:05 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 6687471..e17306e 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 14) -set(CMake_VERSION_PATCH 20190221) +set(CMake_VERSION_PATCH 20190222) #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 23 00:03:05 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Sat, 23 Feb 2019 00:03:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-162-ge4ad054 Message-ID: <20190223050305.5592011366B@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 e4ad054e496ced06a7bf315eec35bd6ee202daca (commit) from 63928f0868ae48f0b21464b466a0f8bc7b8e3369 (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=e4ad054e496ced06a7bf315eec35bd6ee202daca commit e4ad054e496ced06a7bf315eec35bd6ee202daca Author: Kitware Robot AuthorDate: Sat Feb 23 00:01:05 2019 -0500 Commit: Kitware Robot CommitDate: Sat Feb 23 00:01:05 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index e17306e..5bef1c6 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 14) -set(CMake_VERSION_PATCH 20190222) +set(CMake_VERSION_PATCH 20190223) #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 24 00:03:03 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Sun, 24 Feb 2019 00:03:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-163-gd930e8c Message-ID: <20190224050303.3212D111BE8@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 d930e8c0438a7cac85668a15dc6387d2296dc849 (commit) from e4ad054e496ced06a7bf315eec35bd6ee202daca (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=d930e8c0438a7cac85668a15dc6387d2296dc849 commit d930e8c0438a7cac85668a15dc6387d2296dc849 Author: Kitware Robot AuthorDate: Sun Feb 24 00:01:05 2019 -0500 Commit: Kitware Robot CommitDate: Sun Feb 24 00:01:05 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 5bef1c6..8222ed6 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 14) -set(CMake_VERSION_PATCH 20190223) +set(CMake_VERSION_PATCH 20190224) #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 25 00:03:07 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 25 Feb 2019 00:03:07 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-164-g3fff090 Message-ID: <20190225050307.A165B127A5F@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 3fff09096ab87914a08499958d956c2be1fdd085 (commit) from d930e8c0438a7cac85668a15dc6387d2296dc849 (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=3fff09096ab87914a08499958d956c2be1fdd085 commit 3fff09096ab87914a08499958d956c2be1fdd085 Author: Kitware Robot AuthorDate: Mon Feb 25 00:01:05 2019 -0500 Commit: Kitware Robot CommitDate: Mon Feb 25 00:01:05 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 8222ed6..5c07a8b 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 14) -set(CMake_VERSION_PATCH 20190224) +set(CMake_VERSION_PATCH 20190225) #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 25 07:53:08 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 25 Feb 2019 07:53:08 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-170-gc068236 Message-ID: <20190225125308.76847A2D45@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 c068236bb9d003c43856dd2bc2052605d4377982 (commit) via 90323ff0513c8291bc36ea9b84a55eeebbf00329 (commit) via 283b8c2ae6234d7f71bfe372c71a80deadf9b39d (commit) via d3b765d4510b73ee17df0e2bee0f7b9a355c5cba (commit) via 98a2d42301ec9ba0cd1c69b0a05351039bc69dc8 (commit) via 3dc81a48ffbf22e044678736996272ef1b8395ff (commit) from 3fff09096ab87914a08499958d956c2be1fdd085 (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=c068236bb9d003c43856dd2bc2052605d4377982 commit c068236bb9d003c43856dd2bc2052605d4377982 Merge: 90323ff 98a2d42 Author: Brad King AuthorDate: Mon Feb 25 12:48:38 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 25 07:51:01 2019 -0500 Merge topic 'link-options' 98a2d42301 PIE link options: No warning when policy CMP0083 is not set. Acked-by: Kitware Robot Merge-request: !2996 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=90323ff0513c8291bc36ea9b84a55eeebbf00329 commit 90323ff0513c8291bc36ea9b84a55eeebbf00329 Merge: 283b8c2 d3b765d Author: Brad King AuthorDate: Mon Feb 25 12:48:48 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 25 07:49:53 2019 -0500 Merge topic 'remove-exclude-from-all-warning' d3b765d451 EXCLUDE_FROM_ALL: Don't warn if installing target excluded from all Acked-by: Kitware Robot Merge-request: !3002 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=283b8c2ae6234d7f71bfe372c71a80deadf9b39d commit 283b8c2ae6234d7f71bfe372c71a80deadf9b39d Merge: 3fff090 3dc81a4 Author: Brad King AuthorDate: Mon Feb 25 12:48:27 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 25 07:48:35 2019 -0500 Merge topic 'fix-implicit-includes-fortran' 3dc81a48ff Fortran: Do not suppress explicit use of implicit include directories Acked-by: Kitware Robot Acked-by: Michael Hirsch, Ph.D. Merge-request: !2994 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d3b765d4510b73ee17df0e2bee0f7b9a355c5cba commit d3b765d4510b73ee17df0e2bee0f7b9a355c5cba Author: Craig Scott AuthorDate: Thu Feb 21 23:00:50 2019 +1100 Commit: Craig Scott CommitDate: Fri Feb 22 07:55:56 2019 +1100 EXCLUDE_FROM_ALL: Don't warn if installing target excluded from all The original warning pre-dates support for install components. There are now legitimate scenarios where an install(TARGETS) command may list a target that is excluded from all, e.g. hierarchical projects that will never install the component such a target belongs to. Fixes: #18938 diff --git a/Help/prop_tgt/EXCLUDE_FROM_ALL.rst b/Help/prop_tgt/EXCLUDE_FROM_ALL.rst index e7457e1..0eee297 100644 --- a/Help/prop_tgt/EXCLUDE_FROM_ALL.rst +++ b/Help/prop_tgt/EXCLUDE_FROM_ALL.rst @@ -6,8 +6,16 @@ Exclude the target from the all target. A property on a target that indicates if the target is excluded from the default build target. If it is not, then with a Makefile for example typing make will cause this target to be built. The same -concept applies to the default build of other generators. Installing -a target with EXCLUDE_FROM_ALL set to true has undefined behavior. +concept applies to the default build of other generators. + +With ``EXCLUDE_FROM_ALL`` set to false or not set at all, the target +will be brought up to date as part of doing a ``make install`` or its +equivalent for the CMake generator being used. If a target has +``EXCLUDE_FROM_ALL`` set to true, then any attempt to install that +target has undefined behavior. Note that such a target can still safely +be listed in an :command:`install(TARGETS)` command as long as the install +components the target belongs to are not part of the set of components +that anything tries to install. This property is enabled by default for targets that are created in directories that have :prop_dir:`EXCLUDE_FROM_ALL` set to ``TRUE``. diff --git a/Help/release/3.14.rst b/Help/release/3.14.rst index 13d209f..02a6974 100644 --- a/Help/release/3.14.rst +++ b/Help/release/3.14.rst @@ -370,3 +370,7 @@ Other Changes :variable:`CPACK_DEBIAN_ARCHIVE_TYPE` variable, because ``dpkg`` has never supported the PAX tar format. The ``paxr`` value will be mapped to ``gnutar`` and a deprecation message emitted. + +* CMake no longer issues a warning if a target listed in an + :command:`install(TARGETS)` command has its :prop_tgt:`EXCLUDE_FROM_ALL` + property set to true. diff --git a/Source/cmInstallTargetGenerator.cxx b/Source/cmInstallTargetGenerator.cxx index 59701a1..9d3a6bb 100644 --- a/Source/cmInstallTargetGenerator.cxx +++ b/Source/cmInstallTargetGenerator.cxx @@ -41,22 +41,6 @@ cmInstallTargetGenerator::cmInstallTargetGenerator( cmInstallTargetGenerator::~cmInstallTargetGenerator() = default; -void cmInstallTargetGenerator::GenerateScript(std::ostream& os) -{ - // Warn if installing an exclude-from-all target. - if (this->Target->GetPropertyAsBool("EXCLUDE_FROM_ALL")) { - std::ostringstream msg; - msg << "WARNING: Target \"" << this->Target->GetName() - << "\" has EXCLUDE_FROM_ALL set and will not be built by default " - << "but an install rule has been provided for it. CMake does " - << "not define behavior for this case."; - cmSystemTools::Message(msg.str(), "Warning"); - } - - // Perform the main install script generation. - this->cmInstallGenerator::GenerateScript(os); -} - void cmInstallTargetGenerator::GenerateScriptForConfig( std::ostream& os, const std::string& config, Indent indent) { diff --git a/Source/cmInstallTargetGenerator.h b/Source/cmInstallTargetGenerator.h index 715b4ae..6df5b1a 100644 --- a/Source/cmInstallTargetGenerator.h +++ b/Source/cmInstallTargetGenerator.h @@ -69,7 +69,6 @@ public: cmListFileBacktrace const& GetBacktrace() const { return this->Backtrace; } protected: - void GenerateScript(std::ostream& os) override; void GenerateScriptForConfig(std::ostream& os, const std::string& config, Indent indent) override; void GenerateScriptForConfigObjectLibrary(std::ostream& os, diff --git a/Tests/RunCMake/install/TARGETS-OPTIONAL-stderr.txt b/Tests/RunCMake/install/TARGETS-OPTIONAL-stderr.txt deleted file mode 100644 index 86e3ec0..0000000 --- a/Tests/RunCMake/install/TARGETS-OPTIONAL-stderr.txt +++ /dev/null @@ -1 +0,0 @@ -^WARNING: Target "notall" has EXCLUDE_FROM_ALL set and will not be built by default but an install rule has been provided for it\. CMake does not define behavior for this case\.$ https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=98a2d42301ec9ba0cd1c69b0a05351039bc69dc8 commit 98a2d42301ec9ba0cd1c69b0a05351039bc69dc8 Author: Marc Chevrier AuthorDate: Wed Feb 20 16:54:47 2019 +0100 Commit: Brad King CommitDate: Wed Feb 20 14:30:57 2019 -0500 PIE link options: No warning when policy CMP0083 is not set. Fixes: #18955 diff --git a/Help/policy/CMP0083.rst b/Help/policy/CMP0083.rst index b26d6c8..32acf1f 100644 --- a/Help/policy/CMP0083.rst +++ b/Help/policy/CMP0083.rst @@ -23,9 +23,10 @@ which it is used, it is the project's responsibility to use the :prop_tgt:`POSITION_INDEPENDENT_CODE` target property for executables will be honored at link time. -This policy was introduced in CMake version 3.14. CMake version -|release| warns when the policy is not set and uses ``OLD`` behavior. Use -the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly. +This policy was introduced in CMake version 3.14. Use the +:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly. +Unlike most policies, CMake version |release| does not warn when this policy is +not set and simply uses ``OLD`` behavior. .. include:: DEPRECATED.txt diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 78040c3..25349d4 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -510,21 +510,10 @@ const char* cmGeneratorTarget::GetLinkPIEProperty( return nullptr; } - switch (this->GetPolicyStatusCMP0083()) { - case cmPolicies::WARN: { - std::ostringstream e; - e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0083); - this->LocalGenerator->IssueMessage(MessageType::AUTHOR_WARNING, e.str()); - CM_FALLTHROUGH; - } - case cmPolicies::OLD: - return nullptr; - default: - // nothing to do - break; - } - - return PICValue.c_str(); + auto status = this->GetPolicyStatusCMP0083(); + return (status != cmPolicies::WARN && status != cmPolicies::OLD) + ? PICValue.c_str() + : nullptr; } bool cmGeneratorTarget::IsIPOEnabled(std::string const& lang, https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3dc81a48ffbf22e044678736996272ef1b8395ff commit 3dc81a48ffbf22e044678736996272ef1b8395ff Author: Brad King AuthorDate: Wed Feb 20 08:13:01 2019 -0500 Commit: Brad King CommitDate: Wed Feb 20 08:13:57 2019 -0500 Fortran: Do not suppress explicit use of implicit include directories Since commit 2e91627dea (ParseImplicitIncludeInfo: add Fortran implicit include handling, 2019-01-25, v3.14.0-rc1~73^2) we actually populate `CMAKE_Fortran_IMPLICIT_INCLUDE_DIRECTORIES` for the first time. This value may be useful to project code to pass to other tooling that wants to preprocess the way Fortran does, so we should compute the value. However, compilers like `gfortran` do not actually search their own implicit include directories for `.mod` files. The directories must be passed via `-I` in order for `.mod` files in them to be found. Since Fortran has no standard library header files that we need to avoid overriding, it is safe to *not* filter out implicit include directories from those passed explicitly via `-I` options. Skip this filtering so that include directories specified by project code to find `.mod` files will be searched by the compiler even if they happen to be implicitly searched by the preprocessor. Fixes: #18914 diff --git a/Help/variable/CMAKE_LANG_IMPLICIT_INCLUDE_DIRECTORIES.rst b/Help/variable/CMAKE_LANG_IMPLICIT_INCLUDE_DIRECTORIES.rst index cc80851..e361fd9 100644 --- a/Help/variable/CMAKE_LANG_IMPLICIT_INCLUDE_DIRECTORIES.rst +++ b/Help/variable/CMAKE_LANG_IMPLICIT_INCLUDE_DIRECTORIES.rst @@ -6,4 +6,9 @@ Directories implicitly searched by the compiler for header files. CMake does not explicitly specify these directories on compiler command lines for language ````. This prevents system include directories from being treated as user include directories on some -compilers. +compilers, which is important for ``C``, ``CXX``, and ``CUDA`` to +avoid overriding standard library headers. + +This value is not used for ``Fortran`` because it has no standard +library headers and some compilers do not search their implicit +include directories for module ``.mod`` files. diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 8b01af1..7e56818 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -947,15 +947,21 @@ std::vector> cmLocalGenerator::GetIncludeDirectoriesImplicit( std::vector impDirVec = userStandardDirs; // Load implicit include directories for this language. - std::string key = "CMAKE_"; - key += lang; - key += "_IMPLICIT_INCLUDE_DIRECTORIES"; - if (const char* value = this->Makefile->GetDefinition(key)) { - size_t const impDirVecOldSize = impDirVec.size(); - cmSystemTools::ExpandListArgument(value, impDirVec); - // FIXME: Use cmRange with 'advance()' when it supports non-const. - for (size_t i = impDirVecOldSize; i < impDirVec.size(); ++i) { - cmSystemTools::ConvertToUnixSlashes(impDirVec[i]); + // We ignore this for Fortran because: + // * There are no standard library headers to avoid overriding. + // * Compilers like gfortran do not search their own implicit include + // directories for modules ('.mod' files). + if (lang != "Fortran") { + std::string key = "CMAKE_"; + key += lang; + key += "_IMPLICIT_INCLUDE_DIRECTORIES"; + if (const char* value = this->Makefile->GetDefinition(key)) { + size_t const impDirVecOldSize = impDirVec.size(); + cmSystemTools::ExpandListArgument(value, impDirVec); + // FIXME: Use cmRange with 'advance()' when it supports non-const. + for (size_t i = impDirVecOldSize; i < impDirVec.size(); ++i) { + cmSystemTools::ConvertToUnixSlashes(impDirVec[i]); + } } } ----------------------------------------------------------------------- Summary of changes: Help/policy/CMP0083.rst | 7 ++++--- Help/prop_tgt/EXCLUDE_FROM_ALL.rst | 12 +++++++++-- Help/release/3.14.rst | 4 ++++ .../CMAKE_LANG_IMPLICIT_INCLUDE_DIRECTORIES.rst | 7 ++++++- Source/cmGeneratorTarget.cxx | 19 ++++------------- Source/cmInstallTargetGenerator.cxx | 16 --------------- Source/cmInstallTargetGenerator.h | 1 - Source/cmLocalGenerator.cxx | 24 ++++++++++++++-------- Tests/RunCMake/install/TARGETS-OPTIONAL-stderr.txt | 1 - 9 files changed, 43 insertions(+), 48 deletions(-) delete mode 100644 Tests/RunCMake/install/TARGETS-OPTIONAL-stderr.txt hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 25 08:03:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 25 Feb 2019 08:03:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-192-g94970cd Message-ID: <20190225130304.4E5AFA2D45@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 94970cd042963bedd4594d867802880b13fa9f69 (commit) via ac419931eed3e62cc69762a2a8b8dd76192999c0 (commit) via 0476d16589cf62bc631acc2f50ff2a0525b6d641 (commit) via ae309d757dfb4f654360f5412b86243e54cc387a (commit) via b583e43c2617e31262e46271c1889a27b5c870cc (commit) via 224a5c9b07d7f999f1c925454b44f0bc0a28549e (commit) via 2cc6eedde479568b99320fe17b418a520a7d1c10 (commit) via af000abbba8dd5ca0a1632a651d3bea00d1a1b43 (commit) via 0e8b0ae636b6d6c517046d9b4fac8490c30e39e0 (commit) via b3b081ccec9617e4f63a18ceae2c1f2e522637aa (commit) via 47caf146c5d89ed4a06fb528deb548aa199233ed (commit) via 4d55c1f541f2fd31522192e0e8f0838f20de2a29 (commit) via 861dbef4e718a8500721f48b617c33088067a3a1 (commit) via df8aa3c8add4de253c8eb80129b0893c16d63f2d (commit) via 7975edeac5885634af347e6774e7928277d6bc17 (commit) via 92d9ec9bfb61d2cd35a82d6906de86c71350b865 (commit) via 6ebe40c6ae736157c2cd036ee01b771ae399b11d (commit) via 4e315e9449735fc0f246c8cc838613693e849296 (commit) via c925166764800be637ffc6d1df5086ebcabb766d (commit) via 001446126e71b3829855aac29048999b7a4ce6f4 (commit) via 9dd255548d0a82994da71c3667f3b6668de50ffd (commit) via c36bf6b13c6798d6388a2b4ca0c802a47f1b1ed4 (commit) from c068236bb9d003c43856dd2bc2052605d4377982 (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=94970cd042963bedd4594d867802880b13fa9f69 commit 94970cd042963bedd4594d867802880b13fa9f69 Merge: ac41993 9dd2555 Author: Brad King AuthorDate: Mon Feb 25 13:00:00 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 25 08:02:07 2019 -0500 Merge topic 'error-consolidate' 9dd255548d cmSystemTools::Error: consolidate parameters into single std::string Acked-by: Kitware Robot Merge-request: !2995 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ac419931eed3e62cc69762a2a8b8dd76192999c0 commit ac419931eed3e62cc69762a2a8b8dd76192999c0 Merge: 0476d16 0014461 Author: Brad King AuthorDate: Mon Feb 25 13:00:07 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 25 08:00:59 2019 -0500 Merge topic 'swift-partials' 001446126e Ninja: add final placeholders to merge Swift partials Acked-by: Kitware Robot Merge-request: !2998 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0476d16589cf62bc631acc2f50ff2a0525b6d641 commit 0476d16589cf62bc631acc2f50ff2a0525b6d641 Merge: ae309d7 4e315e9 Author: Brad King AuthorDate: Mon Feb 25 12:59:51 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 25 07:59:59 2019 -0500 Merge topic 'systools-stdstring3' 4e315e9449 cmSystemTools: More functions accept `std::string` params Acked-by: Kitware Robot Merge-request: !2999 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ae309d757dfb4f654360f5412b86243e54cc387a commit ae309d757dfb4f654360f5412b86243e54cc387a Merge: b583e43 af000ab Author: Brad King AuthorDate: Mon Feb 25 07:58:22 2019 -0500 Commit: Brad King CommitDate: Mon Feb 25 07:58:22 2019 -0500 Merge branch 'release-3.14' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b583e43c2617e31262e46271c1889a27b5c870cc commit b583e43c2617e31262e46271c1889a27b5c870cc Merge: 224a5c9 47caf14 Author: Brad King AuthorDate: Mon Feb 25 12:55:21 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 25 07:57:23 2019 -0500 Merge topic 'releasenotes_arch_independent' 47caf146c5 Help: Add release note for new ARCH_INDEPENDENT option Acked-by: Kitware Robot Merge-request: !3012 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=224a5c9b07d7f999f1c925454b44f0bc0a28549e commit 224a5c9b07d7f999f1c925454b44f0bc0a28549e Merge: 2cc6eed 4d55c1f Author: Brad King AuthorDate: Mon Feb 25 12:55:28 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 25 07:56:25 2019 -0500 Merge topic 'docs_try_commands' 4d55c1f541 Help: Caveat for try_compile() and CMAKE_TRY_COMPILE_PLATFORM_VARIABLES 861dbef4e7 Help: Consistency in try_compile() docs for target type df8aa3c8ad Help: try_compile() readability and grammar improvements 7975edeac5 Help: User-provided variable names for try_* commands Acked-by: Kitware Robot Merge-request: !3013 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2cc6eedde479568b99320fe17b418a520a7d1c10 commit 2cc6eedde479568b99320fe17b418a520a7d1c10 Merge: c068236 92d9ec9 Author: Brad King AuthorDate: Mon Feb 25 12:55:14 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 25 07:55:20 2019 -0500 Merge topic 'check_lang_source_runs_output' 92d9ec9bfb CheckLangSourceRuns: Capture run output to log files Acked-by: Kitware Robot Merge-request: !3011 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4e315e9449735fc0f246c8cc838613693e849296 commit 4e315e9449735fc0f246c8cc838613693e849296 Author: Vitaly Stakhovsky AuthorDate: Wed Feb 20 13:50:00 2019 -0500 Commit: Vitaly Stakhovsky CommitDate: Wed Feb 20 14:53:39 2019 -0500 cmSystemTools: More functions accept `std::string` params diff --git a/Source/CPack/cmCPackGenerator.cxx b/Source/CPack/cmCPackGenerator.cxx index 575254e..127bcf9 100644 --- a/Source/CPack/cmCPackGenerator.cxx +++ b/Source/CPack/cmCPackGenerator.cxx @@ -1255,9 +1255,8 @@ bool cmCPackGenerator::ConfigureFile(const std::string& inName, int cmCPackGenerator::CleanTemporaryDirectory() { - std::string tempInstallDirectoryWithPostfix = + std::string tempInstallDirectory = this->GetOption("CPACK_TEMPORARY_INSTALL_DIRECTORY"); - const char* tempInstallDirectory = tempInstallDirectoryWithPostfix.c_str(); if (cmsys::SystemTools::FileExists(tempInstallDirectory)) { cmCPackLogger(cmCPackLog::LOG_OUTPUT, "- Clean temporary : " << tempInstallDirectory << std::endl); diff --git a/Source/CTest/cmCTestBZR.cxx b/Source/CTest/cmCTestBZR.cxx index b154caf..83aeb64 100644 --- a/Source/CTest/cmCTestBZR.cxx +++ b/Source/CTest/cmCTestBZR.cxx @@ -365,7 +365,7 @@ bool cmCTestBZR::UpdateImpl() if (opts.empty()) { opts = this->CTest->GetCTestConfiguration("BZRUpdateOptions"); } - std::vector args = cmSystemTools::ParseArguments(opts.c_str()); + std::vector args = cmSystemTools::ParseArguments(opts); // TODO: if(this->CTest->GetTestModel() == cmCTest::NIGHTLY) diff --git a/Source/CTest/cmCTestBuildHandler.cxx b/Source/CTest/cmCTestBuildHandler.cxx index c75f4d4..07bc7e7 100644 --- a/Source/CTest/cmCTestBuildHandler.cxx +++ b/Source/CTest/cmCTestBuildHandler.cxx @@ -418,8 +418,8 @@ int cmCTestBuildHandler::ProcessHandler() int retVal = 0; int res = cmsysProcess_State_Exited; if (!this->CTest->GetShowOnly()) { - res = this->RunMakeCommand(makeCommand.c_str(), &retVal, - buildDirectory.c_str(), 0, ofs); + res = this->RunMakeCommand(makeCommand, &retVal, buildDirectory.c_str(), 0, + ofs); } else { cmCTestOptionalLog(this->CTest, DEBUG, "Build with command: " << makeCommand << std::endl, @@ -766,9 +766,10 @@ void cmCTestBuildHandler::LaunchHelper::WriteScrapeMatchers( } } -int cmCTestBuildHandler::RunMakeCommand(const char* command, int* retVal, - const char* dir, int timeout, - std::ostream& ofs, Encoding encoding) +int cmCTestBuildHandler::RunMakeCommand(const std::string& command, + int* retVal, const char* dir, + int timeout, std::ostream& ofs, + Encoding encoding) { // First generate the command and arguments std::vector args = cmSystemTools::ParseArguments(command); diff --git a/Source/CTest/cmCTestBuildHandler.h b/Source/CTest/cmCTestBuildHandler.h index a9b121b..722c590 100644 --- a/Source/CTest/cmCTestBuildHandler.h +++ b/Source/CTest/cmCTestBuildHandler.h @@ -52,7 +52,7 @@ private: //! Run command specialized for make and configure. Returns process status // and retVal is return value or exception. - int RunMakeCommand(const char* command, int* retVal, const char* dir, + int RunMakeCommand(const std::string& command, int* retVal, const char* dir, int timeout, std::ostream& ofs, Encoding encoding = cmProcessOutput::Auto); diff --git a/Source/CTest/cmCTestCVS.cxx b/Source/CTest/cmCTestCVS.cxx index 6e8f73f..9c03839 100644 --- a/Source/CTest/cmCTestCVS.cxx +++ b/Source/CTest/cmCTestCVS.cxx @@ -78,7 +78,7 @@ bool cmCTestCVS::UpdateImpl() opts = "-dP"; } } - std::vector args = cmSystemTools::ParseArguments(opts.c_str()); + std::vector args = cmSystemTools::ParseArguments(opts); // Specify the start time for nightly testing. if (this->CTest->GetTestModel() == cmCTest::NIGHTLY) { diff --git a/Source/CTest/cmCTestConfigureHandler.cxx b/Source/CTest/cmCTestConfigureHandler.cxx index 6b7601b..7e93189 100644 --- a/Source/CTest/cmCTestConfigureHandler.cxx +++ b/Source/CTest/cmCTestConfigureHandler.cxx @@ -61,7 +61,7 @@ int cmCTestConfigureHandler::ProcessHandler() cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT, "Configure with command: " << cCommand << std::endl, this->Quiet); - res = this->CTest->RunMakeCommand(cCommand.c_str(), output, &retVal, + res = this->CTest->RunMakeCommand(cCommand, output, &retVal, buildDirectory.c_str(), cmDuration::zero(), ofs); diff --git a/Source/CTest/cmCTestCoverageHandler.cxx b/Source/CTest/cmCTestCoverageHandler.cxx index 4dda9ad..d76bd2a 100644 --- a/Source/CTest/cmCTestCoverageHandler.cxx +++ b/Source/CTest/cmCTestCoverageHandler.cxx @@ -1004,7 +1004,7 @@ int cmCTestCoverageHandler::HandleGCovCoverage( static_cast(locale_C); std::vector basecovargs = - cmSystemTools::ParseArguments(gcovExtraFlags.c_str()); + cmSystemTools::ParseArguments(gcovExtraFlags); basecovargs.insert(basecovargs.begin(), gcovCommand); basecovargs.emplace_back("-o"); @@ -1377,7 +1377,7 @@ int cmCTestCoverageHandler::HandleLCovCoverage( static_cast(locale_C); std::vector covargs = - cmSystemTools::ParseArguments(lcovExtraFlags.c_str()); + cmSystemTools::ParseArguments(lcovExtraFlags); covargs.insert(covargs.begin(), lcovCommand); const std::string command = joinCommandLine(covargs); diff --git a/Source/CTest/cmCTestGIT.cxx b/Source/CTest/cmCTestGIT.cxx index 210abe5..11cd005 100644 --- a/Source/CTest/cmCTestGIT.cxx +++ b/Source/CTest/cmCTestGIT.cxx @@ -162,7 +162,7 @@ bool cmCTestGIT::UpdateByFetchAndReset() if (opts.empty()) { opts = this->CTest->GetCTestConfiguration("GITUpdateOptions"); } - std::vector args = cmSystemTools::ParseArguments(opts.c_str()); + std::vector args = cmSystemTools::ParseArguments(opts); for (std::string const& arg : args) { git_fetch.push_back(arg.c_str()); } diff --git a/Source/CTest/cmCTestHG.cxx b/Source/CTest/cmCTestHG.cxx index 6fb99d8..727c59c 100644 --- a/Source/CTest/cmCTestHG.cxx +++ b/Source/CTest/cmCTestHG.cxx @@ -144,7 +144,7 @@ bool cmCTestHG::UpdateImpl() if (opts.empty()) { opts = this->CTest->GetCTestConfiguration("HGUpdateOptions"); } - std::vector args = cmSystemTools::ParseArguments(opts.c_str()); + std::vector args = cmSystemTools::ParseArguments(opts); for (std::string const& arg : args) { hg_update.push_back(arg.c_str()); } diff --git a/Source/CTest/cmCTestMemCheckHandler.cxx b/Source/CTest/cmCTestMemCheckHandler.cxx index 954f5bb..22c8469 100644 --- a/Source/CTest/cmCTestMemCheckHandler.cxx +++ b/Source/CTest/cmCTestMemCheckHandler.cxx @@ -520,7 +520,7 @@ bool cmCTestMemCheckHandler::InitializeMemoryChecking() this->CTest->GetCTestConfiguration("ValgrindCommandOptions"); } this->MemoryTesterOptions = - cmSystemTools::ParseArguments(memoryTesterOptions.c_str()); + cmSystemTools::ParseArguments(memoryTesterOptions); this->MemoryTesterOutputFile = this->CTest->GetBinaryDir() + "/Testing/Temporary/MemoryChecker.??.log"; diff --git a/Source/CTest/cmCTestP4.cxx b/Source/CTest/cmCTestP4.cxx index ac4753c..315f498 100644 --- a/Source/CTest/cmCTestP4.cxx +++ b/Source/CTest/cmCTestP4.cxx @@ -324,8 +324,7 @@ void cmCTestP4::SetP4Options(std::vector& CommandOptions) // The CTEST_P4_OPTIONS variable adds additional Perforce command line // options before the main command std::string opts = this->CTest->GetCTestConfiguration("P4Options"); - std::vector args = - cmSystemTools::ParseArguments(opts.c_str()); + std::vector args = cmSystemTools::ParseArguments(opts); P4Options.insert(P4Options.end(), args.begin(), args.end()); } @@ -501,7 +500,7 @@ bool cmCTestP4::UpdateImpl() if (opts.empty()) { opts = this->CTest->GetCTestConfiguration("P4UpdateOptions"); } - std::vector args = cmSystemTools::ParseArguments(opts.c_str()); + std::vector args = cmSystemTools::ParseArguments(opts); for (std::string const& arg : args) { p4_sync.push_back(arg.c_str()); } diff --git a/Source/CTest/cmCTestSVN.cxx b/Source/CTest/cmCTestSVN.cxx index 3bf66ca..b7a4e4c 100644 --- a/Source/CTest/cmCTestSVN.cxx +++ b/Source/CTest/cmCTestSVN.cxx @@ -242,7 +242,7 @@ bool cmCTestSVN::UpdateImpl() if (opts.empty()) { opts = this->CTest->GetCTestConfiguration("SVNUpdateOptions"); } - std::vector args = cmSystemTools::ParseArguments(opts.c_str()); + std::vector args = cmSystemTools::ParseArguments(opts); // Specify the start time for nightly testing. if (this->CTest->GetTestModel() == cmCTest::NIGHTLY) { @@ -277,7 +277,7 @@ bool cmCTestSVN::RunSVNCommand(std::vector const& parameters, std::string userOptions = this->CTest->GetCTestConfiguration("SVNOptions"); std::vector parsedUserOptions = - cmSystemTools::ParseArguments(userOptions.c_str()); + cmSystemTools::ParseArguments(userOptions); for (std::string const& opt : parsedUserOptions) { args.push_back(opt.c_str()); } diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index ba2fe6c..c77bb97 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -1009,7 +1009,7 @@ int cmCTest::GetTestModelFromString(const char* str) //###################################################################### //###################################################################### -int cmCTest::RunMakeCommand(const char* command, std::string& output, +int cmCTest::RunMakeCommand(const std::string& command, std::string& output, int* retVal, const char* dir, cmDuration timeout, std::ostream& ofs, Encoding encoding) { diff --git a/Source/cmCTest.h b/Source/cmCTest.h index 7dbf4d5..a765fed 100644 --- a/Source/cmCTest.h +++ b/Source/cmCTest.h @@ -280,8 +280,9 @@ public: * Run command specialized for make and configure. Returns process status * and retVal is return value or exception. */ - int RunMakeCommand(const char* command, std::string& output, int* retVal, - const char* dir, cmDuration timeout, std::ostream& ofs, + int RunMakeCommand(const std::string& command, std::string& output, + int* retVal, const char* dir, cmDuration timeout, + std::ostream& ofs, Encoding encoding = cmProcessOutput::Auto); /** Return the current tag */ diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx index 3d61665..eef93f8 100644 --- a/Source/cmComputeLinkInformation.cxx +++ b/Source/cmComputeLinkInformation.cxx @@ -1266,7 +1266,7 @@ void cmComputeLinkInformation::AddFrameworkItem(std::string const& item) void cmComputeLinkInformation::AddDirectoryItem(std::string const& item) { if (this->Makefile->IsOn("APPLE") && - cmSystemTools::IsPathToFramework(item.c_str())) { + cmSystemTools::IsPathToFramework(item)) { this->AddFrameworkItem(item); } else { this->DropDirectoryItem(item); diff --git a/Source/cmExecProgramCommand.cxx b/Source/cmExecProgramCommand.cxx index 75a7786..f4a9a9e 100644 --- a/Source/cmExecProgramCommand.cxx +++ b/Source/cmExecProgramCommand.cxx @@ -67,7 +67,7 @@ bool cmExecProgramCommand::InitialPass(std::vector const& args, std::string command; if (!arguments.empty()) { - command = cmSystemTools::ConvertToRunCommandPath(args[0].c_str()); + command = cmSystemTools::ConvertToRunCommandPath(args[0]); command += " "; command += arguments; } else { diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx index c63e01a..9f8f12b 100644 --- a/Source/cmGhsMultiTargetGenerator.cxx +++ b/Source/cmGhsMultiTargetGenerator.cxx @@ -210,7 +210,7 @@ void cmGhsMultiTargetGenerator::WriteCompilerFlags(std::ostream& fout, if (flagsByLangI != this->FlagsByLanguage.end()) { if (!flagsByLangI->second.empty()) { std::vector ghsCompFlags = - cmSystemTools::ParseArguments(flagsByLangI->second.c_str()); + cmSystemTools::ParseArguments(flagsByLangI->second); for (auto& f : ghsCompFlags) { fout << " " << f << std::endl; } @@ -265,16 +265,14 @@ void cmGhsMultiTargetGenerator::WriteTargetLinkLine(std::ostream& fout, frameworkPath, linkPath, this->GeneratorTarget); // write out link options - std::vector lopts = - cmSystemTools::ParseArguments(linkFlags.c_str()); + std::vector lopts = cmSystemTools::ParseArguments(linkFlags); for (auto& l : lopts) { fout << " " << l << std::endl; } // write out link search paths // must be quoted for paths that contain spaces - std::vector lpath = - cmSystemTools::ParseArguments(linkPath.c_str()); + std::vector lpath = cmSystemTools::ParseArguments(linkPath); for (auto& l : lpath) { fout << " -L\"" << l << "\"" << std::endl; } @@ -284,7 +282,7 @@ void cmGhsMultiTargetGenerator::WriteTargetLinkLine(std::ostream& fout, std::string cbd = this->LocalGenerator->GetCurrentBinaryDirectory(); std::vector llibs = - cmSystemTools::ParseArguments(linkLibraries.c_str()); + cmSystemTools::ParseArguments(linkLibraries); for (auto& l : llibs) { if (l.compare(0, 2, "-l") == 0) { fout << " \"" << l << "\"" << std::endl; diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index fa0ffcc..3a56589 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -2200,7 +2200,7 @@ cmGeneratorTarget* cmGlobalGenerator::FindGeneratorTarget( bool cmGlobalGenerator::NameResolvesToFramework( const std::string& libname) const { - if (cmSystemTools::IsPathToFramework(libname.c_str())) { + if (cmSystemTools::IsPathToFramework(libname)) { return true; } diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 8393165..1921e30 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -776,7 +776,7 @@ std::string cmLocalGenerator::GetIncludeFlags( #endif for (std::string const& i : includes) { if (fwSearchFlag && *fwSearchFlag && this->Makefile->IsOn("APPLE") && - cmSystemTools::IsPathToFramework(i.c_str())) { + cmSystemTools::IsPathToFramework(i)) { std::string frameworkDir = i; frameworkDir += "/../"; frameworkDir = cmSystemTools::CollapseFullPath(frameworkDir); diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index f0e8077..28a6564 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -571,13 +571,14 @@ std::vector cmSystemTools::HandleResponseFile( return arg_full; } -std::vector cmSystemTools::ParseArguments(const char* command) +std::vector cmSystemTools::ParseArguments(const std::string& cmd) { std::vector args; std::string arg; bool win_path = false; + const char* command = cmd.c_str(); if (command[0] && command[1] && ((command[0] != '/' && command[1] == ':' && command[2] == '\\') || (command[0] == '\"' && command[1] != '/' && command[2] == ':' && @@ -878,8 +879,7 @@ bool cmSystemTools::RunSingleCommand(const std::string& command, outputflag = OUTPUT_NONE; } - std::vector args = - cmSystemTools::ParseArguments(command.c_str()); + std::vector args = cmSystemTools::ParseArguments(command); if (args.empty()) { return false; @@ -1411,7 +1411,7 @@ void cmSystemTools::ConvertToOutputSlashes(std::string& path) #endif } -std::string cmSystemTools::ConvertToRunCommandPath(const char* path) +std::string cmSystemTools::ConvertToRunCommandPath(const std::string& path) { #if defined(_WIN32) && !defined(__CYGWIN__) return cmSystemTools::ConvertToWindowsOutputPath(path); @@ -1614,7 +1614,7 @@ void cmSystemTools::EnableVSConsoleOutput() #endif } -bool cmSystemTools::IsPathToFramework(const char* path) +bool cmSystemTools::IsPathToFramework(const std::string& path) { return (cmSystemTools::FileIsFullPath(path) && cmHasLiteralSuffix(path, ".framework")); @@ -3005,7 +3005,7 @@ bool cmSystemTools::CheckRPath(std::string const& file, #endif } -bool cmSystemTools::RepeatedRemoveDirectory(const char* dir) +bool cmSystemTools::RepeatedRemoveDirectory(const std::string& dir) { // Windows sometimes locks files temporarily so try a few times. for (int i = 0; i < 10; ++i) { diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index 82e4f01..60e8c18 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -141,7 +141,7 @@ public: ///! Return true if value is NOTFOUND or ends in -NOTFOUND. static bool IsNOTFOUND(const char* value); ///! Return true if the path is a framework - static bool IsPathToFramework(const char* value); + static bool IsPathToFramework(const std::string& value); static bool DoesFileExistWithExtensions( const std::string& name, const std::vector& sourceExts); @@ -242,7 +242,7 @@ public: /** * Parse arguments out of a single string command */ - static std::vector ParseArguments(const char* command); + static std::vector ParseArguments(const std::string& command); /** Parse arguments out of a windows command line string. */ static void ParseWindowsCommandLine(const char* command, @@ -353,7 +353,7 @@ public: // ConvertToRunCommandPath does not use s_ForceUnixPaths and should // be used when RunCommand is called from cmake, because the // running cmake needs paths to be in its format - static std::string ConvertToRunCommandPath(const char* path); + static std::string ConvertToRunCommandPath(const std::string& path); /** compute the relative path from local to remote. local must be a directory. remote can be a file or a directory. @@ -488,7 +488,7 @@ public: static bool CheckRPath(std::string const& file, std::string const& newRPath); /** Remove a directory; repeat a few times in case of locked files. */ - static bool RepeatedRemoveDirectory(const char* dir); + static bool RepeatedRemoveDirectory(const std::string& dir); /** Tokenize a string */ static std::vector tokenize(const std::string& str, diff --git a/Source/cmTryRunCommand.cxx b/Source/cmTryRunCommand.cxx index d863339..da34bca 100644 --- a/Source/cmTryRunCommand.cxx +++ b/Source/cmTryRunCommand.cxx @@ -173,7 +173,7 @@ void cmTryRunCommand::RunExecutable(const std::string& runArgs, std::vector emulatorWithArgs; cmSystemTools::ExpandListArgument(emulator, emulatorWithArgs); finalCommand += - cmSystemTools::ConvertToRunCommandPath(emulatorWithArgs[0].c_str()); + cmSystemTools::ConvertToRunCommandPath(emulatorWithArgs[0]); finalCommand += " "; for (std::string const& arg : cmMakeRange(emulatorWithArgs).advance(1)) { finalCommand += "\""; @@ -182,8 +182,7 @@ void cmTryRunCommand::RunExecutable(const std::string& runArgs, finalCommand += " "; } } - finalCommand += - cmSystemTools::ConvertToRunCommandPath(this->OutputFile.c_str()); + finalCommand += cmSystemTools::ConvertToRunCommandPath(this->OutputFile); if (!runArgs.empty()) { finalCommand += runArgs; } https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=001446126e71b3829855aac29048999b7a4ce6f4 commit 001446126e71b3829855aac29048999b7a4ce6f4 Author: Saleem Abdulrasool AuthorDate: Mon Feb 18 14:17:20 2019 -0800 Commit: Saleem Abdulrasool CommitDate: Wed Feb 20 09:25:34 2019 -0800 Ninja: add final placeholders to merge Swift partials This adds the placeholders that are needed to merge the swift partial modules. It permits generating the rules necessary to actually merge the partial modules emitted for a partial compilation. diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index 3784313..9def1f4 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -283,6 +283,11 @@ void cmNinjaNormalTargetGenerator::WriteLinkRule(bool useResponseFile) cmState::GetTargetTypeName(this->GetGeneratorTarget()->GetType()); vars.Language = this->TargetLinkLanguage.c_str(); + if (this->TargetLinkLanguage == "Swift") { + vars.SwiftPartialModules = "$SWIFT_PARTIAL_MODULES"; + vars.TargetSwiftModule = "$TARGET_SWIFT_MODULE"; + vars.TargetSwiftDoc = "$TARGET_SWIFT_DOC"; + } std::string responseFlag; if (!useResponseFile) { @@ -787,6 +792,34 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() cmNinjaDeps outputs; outputs.push_back(targetOutputReal); + if (this->TargetLinkLanguage == "Swift") { + if (const char* name = gt.GetProperty("SWIFT_MODULE_NAME")) { + vars["TARGET_SWIFT_DOC"] = std::string(name) + ".swiftdoc"; + vars["TARGET_SWIFT_MODULE"] = std::string(name) + ".swiftmodule"; + } else { + vars["TARGET_SWIFT_DOC"] = gt.GetName() + ".swiftdoc"; + vars["TARGET_SWIFT_MODULE"] = gt.GetName() + ".swiftmodule"; + } + outputs.push_back(vars["TARGET_SWIFT_DOC"]); + outputs.push_back(vars["TARGET_SWIFT_MODULE"]); + + cmLocalNinjaGenerator& localGen = *this->GetLocalGenerator(); + + std::string partials; + std::vector sources; + gt.GetObjectSources(sources, this->GetConfigName()); + for (cmSourceFile const* source : sources) { + partials += " "; + if (const char* partial = source->GetProperty("SWIFT_PARTIAL_MODULE")) { + partials += partial; + } else { + partials += localGen.GetTargetDirectory(>) + "/" + + gt.GetObjectName(source) + ".swiftmodule"; + } + } + vars["SWIFT_PARTIAL_MODULES"] = partials; + } + // Compute specific libraries to link with. cmNinjaDeps explicitDeps = this->GetObjects(); cmNinjaDeps implicitDeps = this->ComputeLinkDeps(this->TargetLinkLanguage); diff --git a/Source/cmRulePlaceholderExpander.cxx b/Source/cmRulePlaceholderExpander.cxx index 18d00b1..309ee30 100644 --- a/Source/cmRulePlaceholderExpander.cxx +++ b/Source/cmRulePlaceholderExpander.cxx @@ -187,6 +187,21 @@ std::string cmRulePlaceholderExpander::ExpandRuleVariable( return replaceValues.SwiftPartialModule; } } + if (replaceValues.SwiftPartialModules) { + if (variable == "SWIFT_PARTIAL_MODULES") { + return replaceValues.SwiftPartialModules; + } + } + if (replaceValues.TargetSwiftDoc) { + if (variable == "TARGET_SWIFT_DOC") { + return replaceValues.TargetSwiftDoc; + } + } + if (replaceValues.TargetSwiftModule) { + if (variable == "TARGET_SWIFT_MODULE") { + return replaceValues.TargetSwiftModule; + } + } if (variable == "TARGET_SONAME" || variable == "SONAME_FLAG" || variable == "TARGET_INSTALLNAME_DIR") { // All these variables depend on TargetSOName diff --git a/Source/cmRulePlaceholderExpander.h b/Source/cmRulePlaceholderExpander.h index 93d0577..ebd4d41 100644 --- a/Source/cmRulePlaceholderExpander.h +++ b/Source/cmRulePlaceholderExpander.h @@ -63,6 +63,9 @@ public: const char* SwiftLibraryName; const char* SwiftPartialModule; const char* SwiftPartialDoc; + const char* TargetSwiftModule; + const char* TargetSwiftDoc; + const char* SwiftPartialModules; }; // Expand rule variables in CMake of the type found in language rules https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9dd255548d0a82994da71c3667f3b6668de50ffd commit 9dd255548d0a82994da71c3667f3b6668de50ffd Author: Vitaly Stakhovsky AuthorDate: Wed Feb 20 11:15:00 2019 -0500 Commit: Vitaly Stakhovsky CommitDate: Wed Feb 20 11:18:11 2019 -0500 cmSystemTools::Error: consolidate parameters into single std::string diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index 63c2fcc..1c16a71 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -109,8 +109,8 @@ void cmCTestMultiProcessHandler::SetTestLoad(unsigned long load) fake_load_value)) { if (!cmSystemTools::StringToULong(fake_load_value.c_str(), &this->FakeLoadForTesting)) { - cmSystemTools::Error("Failed to parse fake load value: ", - fake_load_value.c_str()); + cmSystemTools::Error("Failed to parse fake load value: " + + fake_load_value); } } } diff --git a/Source/CTest/cmCTestScriptHandler.cxx b/Source/CTest/cmCTestScriptHandler.cxx index a714abe..43cfe16 100644 --- a/Source/CTest/cmCTestScriptHandler.cxx +++ b/Source/CTest/cmCTestScriptHandler.cxx @@ -331,7 +331,7 @@ int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg) } // make sure the file exists if (!cmSystemTools::FileExists(script)) { - cmSystemTools::Error("Cannot find file: ", script.c_str()); + cmSystemTools::Error("Cannot find file: " + script); return 1; } @@ -471,8 +471,8 @@ int cmCTestScriptHandler::ExtractVariables() msg += "\nCTEST_COMMAND = "; msg += (!this->CTestCmd.empty()) ? this->CTestCmd.c_str() : "(Null)"; cmSystemTools::Error( - "Some required settings in the configuration file were missing:\n", - msg.c_str()); + "Some required settings in the configuration file were missing:\n" + + msg); return 4; } @@ -611,8 +611,7 @@ int cmCTestScriptHandler::CheckOutSourceDir() this->CVSCheckOut, &output, &output, &retVal, this->CTestRoot.c_str(), this->HandlerVerbose, cmDuration::zero() /*this->TimeOut*/); if (!res || retVal != 0) { - cmSystemTools::Error("Unable to perform cvs checkout:\n", - output.c_str()); + cmSystemTools::Error("Unable to perform cvs checkout:\n" + output); return 6; } } @@ -678,8 +677,8 @@ int cmCTestScriptHandler::PerformExtraUpdates() fullCommand, &output, &output, &retVal, cvsArgs[0].c_str(), this->HandlerVerbose, cmDuration::zero() /*this->TimeOut*/); if (!res || retVal != 0) { - cmSystemTools::Error("Unable to perform extra updates:\n", eu.c_str(), - "\nWith output:\n", output.c_str()); + cmSystemTools::Error("Unable to perform extra updates:\n" + eu + + "\nWith output:\n" + output); return 0; } } @@ -721,8 +720,8 @@ int cmCTestScriptHandler::RunConfigurationDashboard() if (!cmSystemTools::FileExists(this->BinaryDir) && this->SourceDir != this->BinaryDir) { if (!cmSystemTools::MakeDirectory(this->BinaryDir)) { - cmSystemTools::Error("Unable to create the binary directory:\n", - this->BinaryDir.c_str()); + cmSystemTools::Error("Unable to create the binary directory:\n" + + this->BinaryDir); this->RestoreBackupDirectories(); return 7; } diff --git a/Source/cmCacheManager.cxx b/Source/cmCacheManager.cxx index 2728f0f..6116de0 100644 --- a/Source/cmCacheManager.cxx +++ b/Source/cmCacheManager.cxx @@ -239,8 +239,7 @@ bool cmCacheManager::SaveCache(const std::string& path, cmMessenger* messenger) cmGeneratedFileStream fout(cacheFile); fout.SetCopyIfDifferent(true); if (!fout) { - cmSystemTools::Error("Unable to open cache file for save. ", - cacheFile.c_str()); + cmSystemTools::Error("Unable to open cache file for save. " + cacheFile); cmSystemTools::ReportLastSystemError(""); return false; } @@ -364,8 +363,8 @@ bool cmCacheManager::SaveCache(const std::string& path, cmMessenger* messenger) checkCacheFile += "/cmake.check_cache"; cmsys::ofstream checkCache(checkCacheFile.c_str()); if (!checkCache) { - cmSystemTools::Error("Unable to open check cache file for write. ", - checkCacheFile.c_str()); + cmSystemTools::Error("Unable to open check cache file for write. " + + checkCacheFile); return false; } checkCache << "# This file is generated by cmake for dependency checking " diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx index 3d61665..abddc82 100644 --- a/Source/cmComputeLinkInformation.cxx +++ b/Source/cmComputeLinkInformation.cxx @@ -457,8 +457,8 @@ bool cmComputeLinkInformation::Compute() // We require a link language for the target. if (this->LinkLanguage.empty()) { cmSystemTools::Error( - "CMake can not determine linker language for target: ", - this->Target->GetName().c_str()); + "CMake can not determine linker language for target: " + + this->Target->GetName()); return false; } diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx index eb52895..69d4374 100644 --- a/Source/cmCoreTryCompile.cxx +++ b/Source/cmCoreTryCompile.cxx @@ -950,8 +950,8 @@ void cmCoreTryCompile::CleanupFiles(std::string const& binDir) if (binDir.find("CMakeTmp") == std::string::npos) { cmSystemTools::Error( "TRY_COMPILE attempt to remove -rf directory that does not contain " - "CMakeTmp:", - binDir.c_str()); + "CMakeTmp:" + + binDir); return; } diff --git a/Source/cmDependsC.cxx b/Source/cmDependsC.cxx index b1630f9..f5c106c 100644 --- a/Source/cmDependsC.cxx +++ b/Source/cmDependsC.cxx @@ -173,8 +173,7 @@ bool cmDependsC::WriteDependencies(const std::set& sources, // regex. if (fullName.empty() && this->IncludeRegexComplain.find(current.FileName)) { - cmSystemTools::Error("Cannot find file \"", current.FileName.c_str(), - "\"."); + cmSystemTools::Error("Cannot find file \"" + current.FileName + "\"."); return false; } diff --git a/Source/cmExecProgramCommand.cxx b/Source/cmExecProgramCommand.cxx index 75a7786..8cb666a 100644 --- a/Source/cmExecProgramCommand.cxx +++ b/Source/cmExecProgramCommand.cxx @@ -152,7 +152,7 @@ bool cmExecProgramCommand::RunCommand(const char* command, std::string& output, if (!cmSystemTools::FileExists(cmd)) { shortCmd = cmd; } else if (!cmSystemTools::GetShortPath(cmd.c_str(), shortCmd)) { - cmSystemTools::Error("GetShortPath failed for ", cmd.c_str()); + cmSystemTools::Error("GetShortPath failed for " + cmd); return false; } shortCmd += " "; diff --git a/Source/cmExportLibraryDependenciesCommand.cxx b/Source/cmExportLibraryDependenciesCommand.cxx index e542e50..0a0646c 100644 --- a/Source/cmExportLibraryDependenciesCommand.cxx +++ b/Source/cmExportLibraryDependenciesCommand.cxx @@ -62,7 +62,7 @@ void cmExportLibraryDependenciesCommand::ConstFinalPass() const std::ostream& fout = *foutPtr; if (!fout) { - cmSystemTools::Error("Error Writing ", this->Filename.c_str()); + cmSystemTools::Error("Error Writing " + this->Filename); cmSystemTools::ReportLastSystemError(""); return; } diff --git a/Source/cmGeneratedFileStream.cxx b/Source/cmGeneratedFileStream.cxx index 4fe1587..2f47788 100644 --- a/Source/cmGeneratedFileStream.cxx +++ b/Source/cmGeneratedFileStream.cxx @@ -29,8 +29,7 @@ cmGeneratedFileStream::cmGeneratedFileStream(std::string const& name, { // Check if the file opened. if (!*this && !quiet) { - cmSystemTools::Error("Cannot open file for write: ", - this->TempName.c_str()); + cmSystemTools::Error("Cannot open file for write: " + this->TempName); cmSystemTools::ReportLastSystemError(""); } #ifdef CMAKE_BUILD_WITH_CMAKE @@ -68,8 +67,7 @@ cmGeneratedFileStream& cmGeneratedFileStream::Open(std::string const& name, // Check if the file opened. if (!*this && !quiet) { - cmSystemTools::Error("Cannot open file for write: ", - this->TempName.c_str()); + cmSystemTools::Error("Cannot open file for write: " + this->TempName); cmSystemTools::ReportLastSystemError(""); } return *this; diff --git a/Source/cmGlobVerificationManager.cxx b/Source/cmGlobVerificationManager.cxx index 5fd890e..9fb4170 100644 --- a/Source/cmGlobVerificationManager.cxx +++ b/Source/cmGlobVerificationManager.cxx @@ -25,8 +25,8 @@ bool cmGlobVerificationManager::SaveVerificationScript(const std::string& path) cmGeneratedFileStream verifyScriptFile(scriptFile); verifyScriptFile.SetCopyIfDifferent(true); if (!verifyScriptFile) { - cmSystemTools::Error("Unable to open verification script file for save. ", - scriptFile.c_str()); + cmSystemTools::Error("Unable to open verification script file for save. " + + scriptFile); cmSystemTools::ReportLastSystemError(""); return false; } @@ -71,8 +71,8 @@ bool cmGlobVerificationManager::SaveVerificationScript(const std::string& path) cmsys::ofstream verifyStampFile(stampFile.c_str()); if (!verifyStampFile) { - cmSystemTools::Error("Unable to open verification stamp file for write. ", - stampFile.c_str()); + cmSystemTools::Error("Unable to open verification stamp file for write. " + + stampFile); return false; } verifyStampFile << "# This file is generated by CMake for checking of the " diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index fa0ffcc..daec0eb 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -212,7 +212,7 @@ void cmGlobalGenerator::ResolveLanguageCompiler(const std::string& lang, if (!mf->GetDefinition(langComp)) { if (!optional) { - cmSystemTools::Error(langComp.c_str(), " not set, after EnableLanguage"); + cmSystemTools::Error(langComp + " not set, after EnableLanguage"); } return; } @@ -638,8 +638,7 @@ void cmGlobalGenerator::EnableLanguage( // to avoid duplicate compiler tests. if (cmSystemTools::FileExists(fpath)) { if (!mf->ReadListFile(fpath)) { - cmSystemTools::Error("Could not find cmake module file: ", - fpath.c_str()); + cmSystemTools::Error("Could not find cmake module file: " + fpath); } // if this file was found then the language was already determined // to be working @@ -664,8 +663,8 @@ void cmGlobalGenerator::EnableLanguage( determineCompiler += "Compiler.cmake"; std::string determineFile = mf->GetModulesFile(determineCompiler); if (!mf->ReadListFile(determineFile)) { - cmSystemTools::Error("Could not find cmake module file: ", - determineCompiler.c_str()); + cmSystemTools::Error("Could not find cmake module file: " + + determineCompiler); } if (cmSystemTools::GetFatalErrorOccured()) { return; @@ -699,8 +698,7 @@ void cmGlobalGenerator::EnableLanguage( fpath += lang; fpath += "Compiler.cmake"; if (!mf->ReadListFile(fpath)) { - cmSystemTools::Error("Could not find cmake module file: ", - fpath.c_str()); + cmSystemTools::Error("Could not find cmake module file: " + fpath); } this->SetLanguageEnabledFlag(lang, mf); needSetLanguageEnabledMaps[lang] = true; @@ -792,11 +790,10 @@ void cmGlobalGenerator::EnableLanguage( fpath += "Information.cmake"; std::string informationFile = mf->GetModulesFile(fpath); if (informationFile.empty()) { - cmSystemTools::Error("Could not find cmake module file: ", - fpath.c_str()); + cmSystemTools::Error("Could not find cmake module file: " + fpath); } else if (!mf->ReadListFile(informationFile)) { - cmSystemTools::Error("Could not process cmake module file: ", - informationFile.c_str()); + cmSystemTools::Error("Could not process cmake module file: " + + informationFile); } } if (needSetLanguageEnabledMaps[lang]) { @@ -816,8 +813,8 @@ void cmGlobalGenerator::EnableLanguage( testLang += "Compiler.cmake"; std::string ifpath = mf->GetModulesFile(testLang); if (!mf->ReadListFile(ifpath)) { - cmSystemTools::Error("Could not find cmake module file: ", - testLang.c_str()); + cmSystemTools::Error("Could not find cmake module file: " + + testLang); } std::string compilerWorks = "CMAKE_"; compilerWorks += lang; @@ -1706,8 +1703,8 @@ void cmGlobalGenerator::CheckTargetProperties() cmSystemTools::Error("The following variables are used in this project, " "but they are set to NOTFOUND.\n" "Please set them or make sure they are set and " - "tested correctly in the CMake files:\n", - notFoundVars.c_str()); + "tested correctly in the CMake files:\n" + + notFoundVars); } } @@ -1851,8 +1848,8 @@ int cmGlobalGenerator::Build(int jobs, const std::string& /*unused*/, timeout)) { cmSystemTools::SetRunCommandHideConsole(hideconsole); cmSystemTools::Error( - "Generator: execution of make failed. Make command was: ", - makeCommandStr.c_str()); + "Generator: execution of make failed. Make command was: " + + makeCommandStr); output += *outputPtr; output += "\nGenerator: execution of make failed. Make command was: " + makeCommandStr + "\n"; diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 31bcacf..b78ffa9 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -136,16 +136,16 @@ void cmGlobalNinjaGenerator::WriteBuild( // Make sure there is a rule. if (rule.empty()) { cmSystemTools::Error("No rule for WriteBuildStatement! called " - "with comment: ", - comment.c_str()); + "with comment: " + + comment); return; } // Make sure there is at least one output file. if (outputs.empty()) { cmSystemTools::Error("No output files for WriteBuildStatement! called " - "with comment: ", - comment.c_str()); + "with comment: " + + comment); return; } @@ -334,16 +334,16 @@ void cmGlobalNinjaGenerator::WriteRule( // Make sure the rule has a name. if (name.empty()) { cmSystemTools::Error("No name given for WriteRuleStatement! called " - "with comment: ", - comment.c_str()); + "with comment: " + + comment); return; } // Make sure a command is given. if (command.empty()) { cmSystemTools::Error("No command given for WriteRuleStatement! called " - "with comment: ", - comment.c_str()); + "with comment: " + + comment); return; } @@ -376,7 +376,7 @@ void cmGlobalNinjaGenerator::WriteRule( if (!rspfile.empty()) { if (rspcontent.empty()) { - cmSystemTools::Error("No rspfile_content given!", comment.c_str()); + cmSystemTools::Error("No rspfile_content given!" + comment); return; } cmGlobalNinjaGenerator::Indent(os, 1); @@ -407,8 +407,8 @@ void cmGlobalNinjaGenerator::WriteVariable(std::ostream& os, // Make sure we have a name. if (name.empty()) { cmSystemTools::Error("No name given for WriteVariable! called " - "with comment: ", - comment.c_str()); + "with comment: " + + comment); return; } @@ -1652,8 +1652,7 @@ int cmcmd_cmake_ninja_depends(std::vector::const_iterator argBeg, } else if (cmHasLiteralPrefix(arg, "--ddi=")) { arg_ddi = arg.substr(6); } else { - cmSystemTools::Error("-E cmake_ninja_depends unknown argument: ", - arg.c_str()); + cmSystemTools::Error("-E cmake_ninja_depends unknown argument: " + arg); return 1; } } @@ -1687,9 +1686,8 @@ int cmcmd_cmake_ninja_depends(std::vector::const_iterator argBeg, cmsys::ifstream tdif(arg_tdi.c_str(), std::ios::in | std::ios::binary); Json::Reader reader; if (!reader.parse(tdif, tdio, false)) { - cmSystemTools::Error("-E cmake_ninja_depends failed to parse ", - arg_tdi.c_str(), - reader.getFormattedErrorMessages().c_str()); + cmSystemTools::Error("-E cmake_ninja_depends failed to parse " + + arg_tdi + reader.getFormattedErrorMessages()); return 1; } } @@ -1715,8 +1713,7 @@ int cmcmd_cmake_ninja_depends(std::vector::const_iterator argBeg, std::set defines; cmFortranParser parser(fc, includes, defines, info); if (!cmFortranParser_FilePush(&parser, arg_pp.c_str())) { - cmSystemTools::Error("-E cmake_ninja_depends failed to open ", - arg_pp.c_str()); + cmSystemTools::Error("-E cmake_ninja_depends failed to open " + arg_pp); return 1; } if (cmFortran_yyparse(parser.Scanner) != 0) { @@ -1751,8 +1748,7 @@ int cmcmd_cmake_ninja_depends(std::vector::const_iterator argBeg, cmGeneratedFileStream ddif(arg_ddi); ddif << ddi; if (!ddif) { - cmSystemTools::Error("-E cmake_ninja_depends failed to write ", - arg_ddi.c_str()); + cmSystemTools::Error("-E cmake_ninja_depends failed to write " + arg_ddi); return 1; } return 0; @@ -1795,9 +1791,8 @@ bool cmGlobalNinjaGenerator::WriteDyndepFile( cmsys::ifstream ddif(arg_ddi.c_str(), std::ios::in | std::ios::binary); Json::Reader reader; if (!reader.parse(ddif, ddio, false)) { - cmSystemTools::Error("-E cmake_ninja_dyndep failed to parse ", - arg_ddi.c_str(), - reader.getFormattedErrorMessages().c_str()); + cmSystemTools::Error("-E cmake_ninja_dyndep failed to parse " + arg_ddi + + reader.getFormattedErrorMessages()); return false; } @@ -1828,9 +1823,9 @@ bool cmGlobalNinjaGenerator::WriteDyndepFile( cmsys::ifstream ltmf(ltmn.c_str(), std::ios::in | std::ios::binary); Json::Reader reader; if (ltmf && !reader.parse(ltmf, ltm, false)) { - cmSystemTools::Error("-E cmake_ninja_dyndep failed to parse ", - linked_target_dir.c_str(), - reader.getFormattedErrorMessages().c_str()); + cmSystemTools::Error("-E cmake_ninja_dyndep failed to parse " + + linked_target_dir + + reader.getFormattedErrorMessages()); return false; } if (ltm.isObject()) { @@ -1911,8 +1906,7 @@ int cmcmd_cmake_ninja_dyndep(std::vector::const_iterator argBeg, cmHasLiteralSuffix(arg, ".ddi")) { arg_ddis.push_back(arg); } else { - cmSystemTools::Error("-E cmake_ninja_dyndep unknown argument: ", - arg.c_str()); + cmSystemTools::Error("-E cmake_ninja_dyndep unknown argument: " + arg); return 1; } } @@ -1931,9 +1925,8 @@ int cmcmd_cmake_ninja_dyndep(std::vector::const_iterator argBeg, cmsys::ifstream tdif(arg_tdi.c_str(), std::ios::in | std::ios::binary); Json::Reader reader; if (!reader.parse(tdif, tdio, false)) { - cmSystemTools::Error("-E cmake_ninja_dyndep failed to parse ", - arg_tdi.c_str(), - reader.getFormattedErrorMessages().c_str()); + cmSystemTools::Error("-E cmake_ninja_dyndep failed to parse " + arg_tdi + + reader.getFormattedErrorMessages()); return 1; } } diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx index f6db018..ceb56d1 100644 --- a/Source/cmGlobalVisualStudio8Generator.cxx +++ b/Source/cmGlobalVisualStudio8Generator.cxx @@ -205,7 +205,7 @@ bool cmGlobalVisualStudio8Generator::AddCheckTarget() "Checking Build System", no_working_directory, true, false)) { gt->AddSource(file->GetFullPath()); } else { - cmSystemTools::Error("Error adding rule for ", stamps[0].c_str()); + cmSystemTools::Error("Error adding rule for " + stamps[0]); } } diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index 1922906..45927c9 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -918,7 +918,7 @@ void cmGlobalVisualStudioGenerator::AddSymbolExportCommand( cmdl.push_back(objs_file); cmGeneratedFileStream fout(objs_file.c_str()); if (!fout) { - cmSystemTools::Error("could not open ", objs_file.c_str()); + cmSystemTools::Error("could not open " + objs_file); return; } diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 8393165..90f1c00 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -366,8 +366,8 @@ void cmLocalGenerator::ProcessEvaluationFiles( std::back_inserter(intersection)); if (!intersection.empty()) { cmSystemTools::Error("Files to be generated by multiple different " - "commands: ", - cmWrap('"', intersection, '"', " ").c_str()); + "commands: " + + cmWrap('"', intersection, '"', " ")); return; } @@ -1168,8 +1168,8 @@ void cmLocalGenerator::GetTargetFlags( } if (linkLanguage.empty()) { cmSystemTools::Error( - "CMake can not determine linker language for target: ", - target->GetName().c_str()); + "CMake can not determine linker language for target: " + + target->GetName()); return; } this->AddLanguageFlagsForLinking(flags, target, linkLanguage, buildType); diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index 4dc04d5..f4e3ed8 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -232,8 +232,8 @@ void cmLocalNinjaGenerator::WritePools(std::ostream& os) os << " depth = " << jobs << std::endl; os << std::endl; } else { - cmSystemTools::Error("Invalid pool defined by property 'JOB_POOLS': ", - pool.c_str()); + cmSystemTools::Error("Invalid pool defined by property 'JOB_POOLS': " + + pool); } } } diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 7eb4a03..f8e7441 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -1054,7 +1054,7 @@ void cmLocalUnixMakefileGenerator3::AppendCleanCommand( std::string cleanfilePath = cmSystemTools::CollapseFullPath(cleanfile); cmsys::ofstream fout(cleanfilePath.c_str()); if (!fout) { - cmSystemTools::Error("Could not create ", cleanfilePath.c_str()); + cmSystemTools::Error("Could not create " + cleanfilePath); } if (!files.empty()) { fout << "file(REMOVE_RECURSE\n"; diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 9f18e8f..a497308 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -118,8 +118,8 @@ void cmLocalVisualStudio7Generator::WriteProjectFiles() // If not an in source build, then create the output directory if (this->GetCurrentBinaryDirectory() != this->GetSourceDirectory()) { if (!cmSystemTools::MakeDirectory(this->GetCurrentBinaryDirectory())) { - cmSystemTools::Error("Error creating directory ", - this->GetCurrentBinaryDirectory().c_str()); + cmSystemTools::Error("Error creating directory " + + this->GetCurrentBinaryDirectory()); } } @@ -283,7 +283,7 @@ cmSourceFile* cmLocalVisualStudio7Generator::CreateVCProjBuildRule() file->GetFullPath(); return file; } else { - cmSystemTools::Error("Error adding rule for ", makefileIn.c_str()); + cmSystemTools::Error("Error adding rule for " + makefileIn); return nullptr; } } @@ -654,8 +654,8 @@ void cmLocalVisualStudio7Generator::WriteConfiguration( : target->GetLinkerLanguage(configName)); if (linkLanguage.empty()) { cmSystemTools::Error( - "CMake can not determine linker language for target: ", - target->GetName().c_str()); + "CMake can not determine linker language for target: " + + target->GetName()); return; } langForClCompile = linkLanguage; diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 0a0501b..f66999f 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -959,9 +959,8 @@ cmSourceFile* cmMakefile::AddCustomCommandToOutput( if (file && file->GetCustomCommand() && !replace) { // The rule file already exists. if (commandLines != file->GetCustomCommand()->GetCommandLines()) { - cmSystemTools::Error("Attempt to add a custom rule to output \"", - outName.c_str(), - "\" which already has a custom rule."); + cmSystemTools::Error("Attempt to add a custom rule to output \"" + + outName + "\" which already has a custom rule."); } return file; } @@ -1101,8 +1100,8 @@ void cmMakefile::AddCustomCommandOldStyle( ti->second.AddSource(sf->GetFullPath()); } else { cmSystemTools::Error("Attempt to add a custom rule to a target " - "that does not exist yet for target ", - target.c_str()); + "that does not exist yet for target " + + target); return; } } @@ -1189,8 +1188,7 @@ cmTarget* cmMakefile::AddUtilityCommand( if (sf) { sf->SetProperty("SYMBOLIC", "1"); } else { - cmSystemTools::Error("Could not get source file entry for ", - force.c_str()); + cmSystemTools::Error("Could not get source file entry for " + force); } // Always create the byproduct sources and mark them generated. @@ -2445,8 +2443,9 @@ const std::string& cmMakefile::GetRequiredDefinition( const std::string* def = GetDef(name); if (!def) { cmSystemTools::Error("Error required internal CMake variable not " - "set, cmake may not be built correctly.\n", - "Missing variable is:\n", name.c_str()); + "set, cmake may not be built correctly.\n" + "Missing variable is:\n" + + name); return empty; } return *def; @@ -3779,15 +3778,15 @@ int cmMakefile::ConfigureFile(const std::string& infile, tempOutputFile += ".tmp"; cmsys::ofstream fout(tempOutputFile.c_str(), omode); if (!fout) { - cmSystemTools::Error("Could not open file for write in copy operation ", - tempOutputFile.c_str()); + cmSystemTools::Error("Could not open file for write in copy operation " + + tempOutputFile); cmSystemTools::ReportLastSystemError(""); return 0; } cmsys::ifstream fin(sinfile.c_str()); if (!fin) { - cmSystemTools::Error("Could not open file for read in copy operation ", - sinfile.c_str()); + cmSystemTools::Error("Could not open file for read in copy operation " + + sinfile); return 0; } diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx index 572270a..984cd85 100644 --- a/Source/cmMakefileExecutableTargetGenerator.cxx +++ b/Source/cmMakefileExecutableTargetGenerator.cxx @@ -370,8 +370,8 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink) // Make sure we have a link language. if (linkLanguage.empty()) { - cmSystemTools::Error("Cannot determine link language for target \"", - this->GeneratorTarget->GetName().c_str(), "\"."); + cmSystemTools::Error("Cannot determine link language for target \"" + + this->GeneratorTarget->GetName() + "\"."); return; } diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index ed2fd68..44e6547 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -462,8 +462,8 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules( // Make sure we have a link language. if (linkLanguage.empty()) { - cmSystemTools::Error("Cannot determine link language for target \"", - this->GeneratorTarget->GetName().c_str(), "\"."); + cmSystemTools::Error("Cannot determine link language for target \"" + + this->GeneratorTarget->GetName() + "\"."); return; } diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index 3784313..3264237 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -68,8 +68,8 @@ void cmNinjaNormalTargetGenerator::Generate() { if (this->TargetLinkLanguage.empty()) { cmSystemTools::Error("CMake can not determine linker language for " - "target: ", - this->GetGeneratorTarget()->GetName().c_str()); + "target: " + + this->GetGeneratorTarget()->GetName()); return; } diff --git a/Source/cmOutputRequiredFilesCommand.cxx b/Source/cmOutputRequiredFilesCommand.cxx index e0c1dad..cb9433f 100644 --- a/Source/cmOutputRequiredFilesCommand.cxx +++ b/Source/cmOutputRequiredFilesCommand.cxx @@ -166,7 +166,7 @@ protected: { cmsys::ifstream fin(info->FullPath.c_str()); if (!fin) { - cmSystemTools::Error("error can not open ", info->FullPath.c_str()); + cmSystemTools::Error("error can not open " + info->FullPath); return; } @@ -181,7 +181,7 @@ protected: qstart = line.find('<', 8); // if a < is not found then move on if (qstart == std::string::npos) { - cmSystemTools::Error("unknown include directive ", line.c_str()); + cmSystemTools::Error("unknown include directive " + line); continue; } qend = line.find('>', qstart + 1); diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index f0e8077..1ca2360 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -1425,12 +1425,12 @@ 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.c_str()); + cmSystemTools::Error("RelativePath must be passed a full path to local: " + + local); } if (!cmSystemTools::FileIsFullPath(remote)) { - cmSystemTools::Error("RelativePath must be passed a full path to remote: ", - remote.c_str()); + cmSystemTools::Error( + "RelativePath must be passed a full path to remote: " + remote); } return cmsys::SystemTools::RelativePath(local, remote); } @@ -1909,8 +1909,8 @@ bool extract_tar(const char* outFileName, bool verbose, bool extract) else { cmSystemTools::Error("Problem with archive_write_header(): ", archive_error_string(ext)); - cmSystemTools::Error("Current file: ", - cm_archive_entry_pathname(entry).c_str()); + cmSystemTools::Error("Current file: " + + cm_archive_entry_pathname(entry)); break; } } diff --git a/Source/cmUseMangledMesaCommand.cxx b/Source/cmUseMangledMesaCommand.cxx index 9648b21..e4a1b5f 100644 --- a/Source/cmUseMangledMesaCommand.cxx +++ b/Source/cmUseMangledMesaCommand.cxx @@ -19,7 +19,7 @@ bool cmUseMangledMesaCommand::InitialPass(std::vector const& args, this->SetError("called with incorrect number of arguments"); return false; } - const char* inputDir = args[0].c_str(); + const std::string& inputDir = args[0]; std::string glh = inputDir; glh += "/"; glh += "gl.h"; @@ -34,7 +34,7 @@ bool cmUseMangledMesaCommand::InitialPass(std::vector const& args, std::vector files; cmSystemTools::Glob(inputDir, "\\.h$", files); if (files.empty()) { - cmSystemTools::Error("Could not open Mesa Directory ", inputDir); + cmSystemTools::Error("Could not open Mesa Directory " + inputDir); return false; } cmSystemTools::MakeDirectory(destDir); @@ -60,8 +60,8 @@ void cmUseMangledMesaCommand::CopyAndFullPathMesaHeader(const char* source, tempOutputFile += ".tmp"; cmsys::ofstream fout(tempOutputFile.c_str()); if (!fout) { - cmSystemTools::Error("Could not open file for write in copy operation: ", - tempOutputFile.c_str(), outdir); + cmSystemTools::Error("Could not open file for write in copy operation: " + + tempOutputFile + outdir); cmSystemTools::ReportLastSystemError(""); return; } diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 6ee82f4..b655815 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -1321,8 +1321,7 @@ void cmVisualStudio10TargetGenerator::WriteCustomRule( std::string error = "Could not create file: ["; error += sourcePath; error += "] "; - cmSystemTools::Error(error.c_str(), - cmSystemTools::GetLastSystemError().c_str()); + cmSystemTools::Error(error + cmSystemTools::GetLastSystemError()); } } } @@ -2514,8 +2513,7 @@ bool cmVisualStudio10TargetGenerator::ComputeClOptions( this->GeneratorTarget->GetLinkerLanguage(configName); if (linkLanguage.empty()) { cmSystemTools::Error( - "CMake can not determine linker language for target: ", - this->Name.c_str()); + "CMake can not determine linker language for target: " + this->Name); return false; } @@ -3345,8 +3343,7 @@ bool cmVisualStudio10TargetGenerator::ComputeLinkOptions( const std::string& linkLanguage = linkClosure->LinkerLanguage; if (linkLanguage.empty()) { cmSystemTools::Error( - "CMake can not determine linker language for target: ", - this->Name.c_str()); + "CMake can not determine linker language for target: " + this->Name); return false; } @@ -3391,8 +3388,8 @@ bool cmVisualStudio10TargetGenerator::ComputeLinkOptions( this->GeneratorTarget->GetLinkInformation(config); if (!pcli) { cmSystemTools::Error( - "CMake can not compute cmComputeLinkInformation for target: ", - this->Name.c_str()); + "CMake can not compute cmComputeLinkInformation for target: " + + this->Name); return false; } cmComputeLinkInformation& cli = *pcli; @@ -3572,8 +3569,8 @@ bool cmVisualStudio10TargetGenerator::ComputeLibOptions( this->GeneratorTarget->GetLinkInformation(config); if (!pcli) { cmSystemTools::Error( - "CMake can not compute cmComputeLinkInformation for target: ", - this->Name.c_str()); + "CMake can not compute cmComputeLinkInformation for target: " + + this->Name); return false; } diff --git a/Source/cmake.cxx b/Source/cmake.cxx index ab783c7..f6f0a95 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -788,13 +788,13 @@ void cmake::SetArgs(const std::vector& args) } cmGlobalGenerator* gen = this->CreateGlobalGenerator(value); if (!gen) { - const char* kdevError = nullptr; + std::string kdevError; if (value.find("KDevelop3", 0) != std::string::npos) { kdevError = "\nThe KDevelop3 generator is not supported anymore."; } - cmSystemTools::Error("Could not create named generator ", - value.c_str(), kdevError); + cmSystemTools::Error("Could not create named generator " + value + + kdevError); this->PrintGeneratorList(); } else { this->SetGlobalGenerator(gen); @@ -938,8 +938,8 @@ int cmake::AddCMakePaths() cmSystemTools::Error( "Could not find CMAKE_ROOT !!!\n" "CMake has most likely not been installed correctly.\n" - "Modules directory not found in\n", - cmSystemTools::GetCMakeRoot().c_str()); + "Modules directory not found in\n" + + cmSystemTools::GetCMakeRoot()); return 0; } this->AddCacheEntry("CMAKE_ROOT", cmSystemTools::GetCMakeRoot().c_str(), @@ -2016,8 +2016,8 @@ void cmake::UpdateConversionPathTable() if (tablepath) { cmsys::ifstream table(tablepath->c_str()); if (!table) { - cmSystemTools::Error("CMAKE_PATH_TRANSLATION_FILE set to ", - tablepath->c_str(), ". CMake can not open file."); + cmSystemTools::Error("CMAKE_PATH_TRANSLATION_FILE set to " + *tablepath + + ". CMake can not open file."); cmSystemTools::ReportLastSystemError("CMake can not open file."); } else { std::string a, b; @@ -2325,8 +2325,7 @@ int cmake::GetSystemInformation(std::vector& args) } cmGlobalGenerator* gen = this->CreateGlobalGenerator(value); if (!gen) { - cmSystemTools::Error("Could not create named generator ", - value.c_str()); + cmSystemTools::Error("Could not create named generator " + value); this->PrintGeneratorList(); } else { this->SetGlobalGenerator(gen); @@ -2473,7 +2472,7 @@ static bool cmakeCheckStampFile(const std::string& stampName, bool verbose) return true; } cmSystemTools::RemoveFile(stampTemp); - cmSystemTools::Error("Cannot restore timestamp ", stampName.c_str()); + cmSystemTools::Error("Cannot restore timestamp " + stampName); return false; } diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index adfce37..1139a4c 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -817,8 +817,8 @@ int cmcmd::ExecuteCMakeCommand(std::vector& args) if (args[1] == "chdir" && args.size() >= 4) { std::string const& directory = args[2]; if (!cmSystemTools::FileExists(directory)) { - cmSystemTools::Error("Directory does not exist for chdir command: ", - args[2].c_str()); + cmSystemTools::Error("Directory does not exist for chdir command: " + + args[2]); return 1; } @@ -1065,12 +1065,12 @@ int cmcmd::ExecuteCMakeCommand(std::vector& args) format) != cm::cend(knownFormats); if (!isKnown) { - cmSystemTools::Error("Unknown -E tar --format= argument: ", - format.c_str()); + cmSystemTools::Error("Unknown -E tar --format= argument: " + + format); return 1; } } else { - cmSystemTools::Error("Unknown option to -E tar: ", arg.c_str()); + cmSystemTools::Error("Unknown option to -E tar: " + arg); return 1; } } else { @@ -1094,8 +1094,8 @@ int cmcmd::ExecuteCMakeCommand(std::vector& args) ++nCompress; } if ((format == "7zip" || format == "zip") && nCompress > 0) { - cmSystemTools::Error("Can not use compression flags with format: ", - format.c_str()); + cmSystemTools::Error("Can not use compression flags with format: " + + format); return 1; } if (nCompress > 1) { @@ -1109,18 +1109,18 @@ int cmcmd::ExecuteCMakeCommand(std::vector& args) if (flags.find_first_of('t') != std::string::npos) { if (!cmSystemTools::ListTar(outFile.c_str(), verbose)) { - cmSystemTools::Error("Problem listing tar: ", outFile.c_str()); + cmSystemTools::Error("Problem listing tar: " + outFile); return 1; } } else if (flags.find_first_of('c') != std::string::npos) { if (!cmSystemTools::CreateTar(outFile.c_str(), files, compress, verbose, mtime, format)) { - cmSystemTools::Error("Problem creating tar: ", outFile.c_str()); + cmSystemTools::Error("Problem creating tar: " + outFile); return 1; } } else if (flags.find_first_of('x') != std::string::npos) { if (!cmSystemTools::ExtractTar(outFile.c_str(), verbose)) { - cmSystemTools::Error("Problem extracting tar: ", outFile.c_str()); + cmSystemTools::Error("Problem extracting tar: " + outFile); return 1; } #ifdef WIN32 ----------------------------------------------------------------------- Summary of changes: Help/command/try_compile.rst | 44 ++++++++++++--------- Help/command/try_run.rst | 14 +++---- Help/release/3.14.rst | 5 +++ Modules/CheckCXXSourceRuns.cmake | 7 +++- Modules/CheckFortranSourceRuns.cmake | 7 +++- Source/CPack/cmCPackGenerator.cxx | 3 +- Source/CTest/cmCTestBZR.cxx | 2 +- Source/CTest/cmCTestBuildHandler.cxx | 11 +++--- Source/CTest/cmCTestBuildHandler.h | 2 +- Source/CTest/cmCTestCVS.cxx | 2 +- Source/CTest/cmCTestConfigureHandler.cxx | 2 +- Source/CTest/cmCTestCoverageHandler.cxx | 4 +- Source/CTest/cmCTestGIT.cxx | 2 +- Source/CTest/cmCTestHG.cxx | 2 +- Source/CTest/cmCTestMemCheckHandler.cxx | 2 +- Source/CTest/cmCTestMultiProcessHandler.cxx | 4 +- Source/CTest/cmCTestP4.cxx | 5 +-- Source/CTest/cmCTestSVN.cxx | 4 +- Source/CTest/cmCTestScriptHandler.cxx | 17 ++++---- Source/cmCTest.cxx | 2 +- Source/cmCTest.h | 5 ++- Source/cmCacheManager.cxx | 7 ++-- Source/cmComputeLinkInformation.cxx | 6 +-- Source/cmCoreTryCompile.cxx | 4 +- Source/cmDependsC.cxx | 3 +- Source/cmExecProgramCommand.cxx | 4 +- Source/cmExportLibraryDependenciesCommand.cxx | 2 +- Source/cmGeneratedFileStream.cxx | 6 +-- Source/cmGhsMultiTargetGenerator.cxx | 10 ++--- Source/cmGlobVerificationManager.cxx | 8 ++-- Source/cmGlobalGenerator.cxx | 33 +++++++--------- Source/cmGlobalNinjaGenerator.cxx | 55 +++++++++++--------------- Source/cmGlobalVisualStudio8Generator.cxx | 2 +- Source/cmGlobalVisualStudioGenerator.cxx | 2 +- Source/cmLocalGenerator.cxx | 10 ++--- Source/cmLocalNinjaGenerator.cxx | 4 +- Source/cmLocalUnixMakefileGenerator3.cxx | 2 +- Source/cmLocalVisualStudio7Generator.cxx | 10 ++--- Source/cmMakefile.cxx | 25 ++++++------ Source/cmMakefileExecutableTargetGenerator.cxx | 4 +- Source/cmMakefileLibraryTargetGenerator.cxx | 4 +- Source/cmNinjaNormalTargetGenerator.cxx | 37 ++++++++++++++++- Source/cmOutputRequiredFilesCommand.cxx | 4 +- Source/cmRulePlaceholderExpander.cxx | 15 +++++++ Source/cmRulePlaceholderExpander.h | 3 ++ Source/cmSystemTools.cxx | 24 +++++------ Source/cmSystemTools.h | 8 ++-- Source/cmTryRunCommand.cxx | 5 +-- Source/cmUseMangledMesaCommand.cxx | 8 ++-- Source/cmVisualStudio10TargetGenerator.cxx | 17 ++++---- Source/cmake.cxx | 19 +++++---- Source/cmcmd.cxx | 20 +++++----- 52 files changed, 279 insertions(+), 228 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 25 08:03:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 25 Feb 2019 08:03:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.14.0-rc2-36-gaf000ab Message-ID: <20190225130304.6A02AFE791@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 af000abbba8dd5ca0a1632a651d3bea00d1a1b43 (commit) via 0e8b0ae636b6d6c517046d9b4fac8490c30e39e0 (commit) via b3b081ccec9617e4f63a18ceae2c1f2e522637aa (commit) via 47caf146c5d89ed4a06fb528deb548aa199233ed (commit) via 4d55c1f541f2fd31522192e0e8f0838f20de2a29 (commit) via 861dbef4e718a8500721f48b617c33088067a3a1 (commit) via df8aa3c8add4de253c8eb80129b0893c16d63f2d (commit) via 7975edeac5885634af347e6774e7928277d6bc17 (commit) via 92d9ec9bfb61d2cd35a82d6906de86c71350b865 (commit) via 6ebe40c6ae736157c2cd036ee01b771ae399b11d (commit) via d3b765d4510b73ee17df0e2bee0f7b9a355c5cba (commit) via c925166764800be637ffc6d1df5086ebcabb766d (commit) via 98a2d42301ec9ba0cd1c69b0a05351039bc69dc8 (commit) via c36bf6b13c6798d6388a2b4ca0c802a47f1b1ed4 (commit) via 3dc81a48ffbf22e044678736996272ef1b8395ff (commit) from 0794dd3018191ba919d9e8ada3ed18ad2b37eccd (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/command/try_compile.rst | 44 +++++++++++++--------- Help/command/try_run.rst | 14 +++---- Help/policy/CMP0083.rst | 7 ++-- Help/prop_tgt/EXCLUDE_FROM_ALL.rst | 12 +++++- Help/release/3.14.rst | 9 +++++ .../CMAKE_LANG_IMPLICIT_INCLUDE_DIRECTORIES.rst | 7 +++- Modules/CheckCXXSourceRuns.cmake | 7 +++- Modules/CheckFortranSourceRuns.cmake | 7 +++- Source/cmGeneratorTarget.cxx | 19 ++-------- Source/cmInstallTargetGenerator.cxx | 16 -------- Source/cmInstallTargetGenerator.h | 1 - Source/cmLocalGenerator.cxx | 24 +++++++----- Tests/RunCMake/install/TARGETS-OPTIONAL-stderr.txt | 1 - 13 files changed, 93 insertions(+), 75 deletions(-) delete mode 100644 Tests/RunCMake/install/TARGETS-OPTIONAL-stderr.txt hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 25 08:13:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 25 Feb 2019 08:13:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-200-ga6cb73b Message-ID: <20190225131304.A4307C41C1@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 a6cb73b97f60b6cc09b9ccf80a65662ce41a5627 (commit) via a4d99e4dec6818406ef0c09c456a9dd08fb8c384 (commit) via 02587d80cf6d6250c461c0838180fc222dbce099 (commit) via b8031308f39d66d0dca3b5c59fe62805298dc91f (commit) via a8d51ef8b780644011da8974d99c524e93fe75f3 (commit) via da4773e8b8100f27ee117005c81e81574f5a9868 (commit) via 17a367e77f373e2781e80e80aaa32644754e6f88 (commit) via 9eb0e73f461f168fb036c304de13d7501edf6d12 (commit) from 94970cd042963bedd4594d867802880b13fa9f69 (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=a6cb73b97f60b6cc09b9ccf80a65662ce41a5627 commit a6cb73b97f60b6cc09b9ccf80a65662ce41a5627 Merge: a4d99e4 02587d8 Author: Brad King AuthorDate: Mon Feb 25 13:12:32 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 25 08:12:54 2019 -0500 Merge topic 'deprecate-policy-old' 02587d80cf Add deprecation warnings for policies CMP0066 and below Acked-by: Kitware Robot Merge-request: !3003 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a4d99e4dec6818406ef0c09c456a9dd08fb8c384 commit a4d99e4dec6818406ef0c09c456a9dd08fb8c384 Merge: 94970cd b803130 Author: Brad King AuthorDate: Mon Feb 25 13:00:15 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 25 08:03:01 2019 -0500 Merge topic 'cmrange-improvements' b8031308f3 cmRange: Add unit tests a8d51ef8b7 cmRange: Add functions filter and transform da4773e8b8 cmRange: Add functions all_of, any_of, none_of 17a367e77f cmRange: Stylistic cleanup 9eb0e73f46 cmRange: Move to dedicated header file Acked-by: Kitware Robot Acked-by: Artur Ryt Merge-request: !2972 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=02587d80cf6d6250c461c0838180fc222dbce099 commit 02587d80cf6d6250c461c0838180fc222dbce099 Author: Brad King AuthorDate: Thu Feb 21 10:56:10 2019 -0500 Commit: Brad King CommitDate: Thu Feb 21 11:02:46 2019 -0500 Add deprecation warnings for policies CMP0066 and below The OLD behaviors of all policies are deprecated, but only by documentation. Add an explicit deprecation diagnostic for policies introduced in CMake 3.7 and below to encourage projects to port away from setting policies to OLD. diff --git a/Help/release/dev/deprecate-policy-old.rst b/Help/release/dev/deprecate-policy-old.rst new file mode 100644 index 0000000..b94f4b7 --- /dev/null +++ b/Help/release/dev/deprecate-policy-old.rst @@ -0,0 +1,8 @@ +deprecate-policy-old +-------------------- + +* An explicit deprecation diagnostic was added for policy ``CMP0066`` + (``CMP0065`` 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/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 0a0501b..1304986 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -4287,7 +4287,7 @@ bool cmMakefile::SetPolicy(cmPolicies::PolicyID id, // Deprecate old policies, especially those that require a lot // of code to maintain the old behavior. - if (status == cmPolicies::OLD && id <= cmPolicies::CMP0065 && + if (status == cmPolicies::OLD && id <= cmPolicies::CMP0066 && !(this->GetCMakeInstance()->GetIsInTryCompile() && ( // Policies set by cmCoreTryCompile::TryCompileCode. diff --git a/Tests/RunCMake/try_compile/CMP0066-stderr.txt b/Tests/RunCMake/try_compile/CMP0066-stderr.txt index b14e290..0b92dcf 100644 --- a/Tests/RunCMake/try_compile/CMP0066-stderr.txt +++ b/Tests/RunCMake/try_compile/CMP0066-stderr.txt @@ -12,4 +12,15 @@ CMake Warning \(dev\) at CMP0066.cmake:[0-9]+ \(try_compile\): test project. Call Stack \(most recent call first\): CMakeLists.txt:[0-9]+ \(include\) -This warning is for project developers. Use -Wno-dev to suppress it.$ +This warning is for project developers. Use -Wno-dev to suppress it. +* +CMake Deprecation Warning at CMP0066.cmake:[0-9]+ \(cmake_policy\): + The OLD behavior for policy CMP0066 will be removed from a future version + of CMake. + + The cmake-policies\(7\) manual explains that the OLD behaviors of all + policies are deprecated and that a policy should be set to OLD only under + specific short-term circumstances. Projects should be ported to the NEW + behavior and not rely on setting a policy to OLD. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\)$ https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b8031308f39d66d0dca3b5c59fe62805298dc91f commit b8031308f39d66d0dca3b5c59fe62805298dc91f Author: Regina Pfeifer AuthorDate: Tue Feb 19 19:15:17 2019 +0100 Commit: Brad King CommitDate: Thu Feb 21 08:24:26 2019 -0500 cmRange: Add unit tests diff --git a/Source/cmRange.h b/Source/cmRange.h index 7ccb143..3be5193 100644 --- a/Source/cmRange.h +++ b/Source/cmRange.h @@ -212,6 +212,13 @@ private: }; template +bool operator==(cmRange const& left, cmRange const& right) +{ + return left.size() == right.size() && + std::equal(left.begin(), left.end(), right.begin()); +} + +template auto cmMakeRange(Iter1 begin, Iter2 end) -> cmRange { return { begin, end }; diff --git a/Tests/CMakeLib/CMakeLists.txt b/Tests/CMakeLib/CMakeLists.txt index f6a9153..91f7e25 100644 --- a/Tests/CMakeLib/CMakeLists.txt +++ b/Tests/CMakeLib/CMakeLists.txt @@ -7,6 +7,7 @@ include_directories( set(CMakeLib_TESTS testGeneratedFileStream.cxx testRST.cxx + testRange.cxx testString.cxx testSystemTools.cxx testUTF8.cxx diff --git a/Tests/CMakeLib/testRange.cxx b/Tests/CMakeLib/testRange.cxx new file mode 100644 index 0000000..5ae805f --- /dev/null +++ b/Tests/CMakeLib/testRange.cxx @@ -0,0 +1,45 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ + +#include "cmRange.h" + +#include +#include +#include + +#define ASSERT_TRUE(x) \ + do { \ + if (!(x)) { \ + std::cout << "ASSERT_TRUE(" #x ") failed on line " << __LINE__ << "\n"; \ + return false; \ + } \ + } while (false) + +int testRange(int /*unused*/, char* /*unused*/ []) +{ + std::vector const testData = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; + + ASSERT_TRUE(!cmMakeRange(testData).empty()); + ASSERT_TRUE(cmMakeRange(testData).size() == 10); + + ASSERT_TRUE(!cmMakeRange(testData).advance(5).empty()); + ASSERT_TRUE(cmMakeRange(testData).advance(5).size() == 5); + + ASSERT_TRUE(cmMakeRange(testData).advance(5).retreat(5).empty()); + ASSERT_TRUE(cmMakeRange(testData).advance(5).retreat(5).size() == 0); + + ASSERT_TRUE(cmMakeRange(testData).any_of([](int n) { return n % 3 == 0; })); + ASSERT_TRUE(cmMakeRange(testData).all_of([](int n) { return n < 11; })); + ASSERT_TRUE(cmMakeRange(testData).none_of([](int n) { return n > 11; })); + + std::vector const evenData = { 2, 4, 6, 8, 10 }; + ASSERT_TRUE(cmMakeRange(testData).filter([](int n) { return n % 2 == 0; }) == + cmMakeRange(evenData)); + + std::vector const stringRange = { "1", "2", "3", "4", "5" }; + ASSERT_TRUE(cmMakeRange(testData) + .transform([](int n) { return std::to_string(n); }) + .retreat(5) == cmMakeRange(stringRange)); + + return 0; +} https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a8d51ef8b780644011da8974d99c524e93fe75f3 commit a8d51ef8b780644011da8974d99c524e93fe75f3 Author: Regina Pfeifer AuthorDate: Fri Feb 15 21:54:58 2019 +0100 Commit: Brad King CommitDate: Thu Feb 21 08:24:26 2019 -0500 cmRange: Add functions filter and transform diff --git a/Source/cmRange.h b/Source/cmRange.h index b6d161e..7ccb143 100644 --- a/Source/cmRange.h +++ b/Source/cmRange.h @@ -9,6 +9,122 @@ #include #include +namespace RangeIterators { + +template +class FilterIterator +{ +public: + using iterator_category = std::bidirectional_iterator_tag; + using value_type = typename std::iterator_traits::value_type; + using difference_type = typename std::iterator_traits::difference_type; + using pointer = typename std::iterator_traits::pointer; + using reference = typename std::iterator_traits::reference; + + FilterIterator(Iter b, Iter e, UnaryPredicate p) + : Cur(std::move(b)) + , End(std::move(e)) + , Pred(std::move(p)) + { + this->SatisfyPredicate(); + } + + FilterIterator& operator++() + { + ++this->Cur; + this->SatisfyPredicate(); + return *this; + } + + FilterIterator& operator--() + { + do { + --this->Cur; + } while (!this->Pred(*this->Cur)); + return *this; + } + + bool operator==(FilterIterator const& other) const + { + return this->Cur == other.Cur; + } + + bool operator!=(FilterIterator const& other) const + { + return !this->operator==(other); + } + + auto operator*() const -> decltype(*std::declval()) + { + return *this->Cur; + } + +private: + void SatisfyPredicate() + { + while (this->Cur != this->End && !this->Pred(*this->Cur)) { + ++this->Cur; + } + } + + Iter Cur; + Iter End; + UnaryPredicate Pred; +}; + +template +class TransformIterator +{ +public: + using iterator_category = std::bidirectional_iterator_tag; + using value_type = + typename std::remove_cv()(*std::declval()))>::type>::type; + using difference_type = typename std::iterator_traits::difference_type; + using pointer = value_type const*; + using reference = value_type const&; + + TransformIterator(Iter i, UnaryFunction f) + : Base(std::move(i)) + , Func(std::move(f)) + { + } + + TransformIterator& operator++() + { + ++this->Base; + return *this; + } + + TransformIterator& operator--() + { + --this->Base; + return *this; + } + + bool operator==(TransformIterator const& other) const + { + return this->Base == other.Base; + } + + bool operator!=(TransformIterator const& other) const + { + return !this->operator==(other); + } + + auto operator*() const + -> decltype(std::declval()(*std::declval())) + { + return this->Func(*this->Base); + } + +private: + Iter Base; + UnaryFunction Func; +}; + +} // namespace RangeIterators + template class cmRange { @@ -74,6 +190,22 @@ public: return std::none_of(this->Begin, this->End, std::ref(p)); } + template + auto filter(UnaryPredicate p) const + -> cmRange> + { + using It = RangeIterators::FilterIterator; + return { It(this->Begin, this->End, p), It(this->End, this->End, p) }; + } + + template + auto transform(UnaryFunction f) const + -> cmRange> + { + using It = RangeIterators::TransformIterator; + return { It(this->Begin, f), It(this->End, f) }; + } + private: Iter Begin; Iter End; https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=da4773e8b8100f27ee117005c81e81574f5a9868 commit da4773e8b8100f27ee117005c81e81574f5a9868 Author: Regina Pfeifer AuthorDate: Fri Feb 15 21:45:10 2019 +0100 Commit: Brad King CommitDate: Thu Feb 21 08:24:26 2019 -0500 cmRange: Add functions all_of, any_of, none_of diff --git a/Source/cmRange.h b/Source/cmRange.h index a84ccec..b6d161e 100644 --- a/Source/cmRange.h +++ b/Source/cmRange.h @@ -6,6 +6,7 @@ #include "cmConfigure.h" // IWYU pragma: keep #include +#include #include template @@ -55,6 +56,24 @@ public: return std::move(*this); } + template + bool all_of(UnaryPredicate p) const + { + return std::all_of(this->Begin, this->End, std::ref(p)); + } + + template + bool any_of(UnaryPredicate p) const + { + return std::any_of(this->Begin, this->End, std::ref(p)); + } + + template + bool none_of(UnaryPredicate p) const + { + return std::none_of(this->Begin, this->End, std::ref(p)); + } + private: Iter Begin; Iter End; https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=17a367e77f373e2781e80e80aaa32644754e6f88 commit 17a367e77f373e2781e80e80aaa32644754e6f88 Author: Regina Pfeifer AuthorDate: Fri Feb 15 21:40:41 2019 +0100 Commit: Brad King CommitDate: Thu Feb 21 08:24:25 2019 -0500 cmRange: Stylistic cleanup diff --git a/Source/cmRange.h b/Source/cmRange.h index 5a2f699..a84ccec 100644 --- a/Source/cmRange.h +++ b/Source/cmRange.h @@ -5,73 +5,77 @@ #include "cmConfigure.h" // IWYU pragma: keep -#include "cm_kwiml.h" #include #include -template -struct cmRange +template +class cmRange { - typedef const_iterator_ const_iterator; - typedef typename std::iterator_traits::value_type value_type; - typedef typename std::iterator_traits::difference_type - difference_type; - cmRange(const_iterator begin_, const_iterator end_) - : Begin(begin_) - , End(end_) +public: + using const_iterator = Iter; + using value_type = typename std::iterator_traits::value_type; + using difference_type = typename std::iterator_traits::difference_type; + + cmRange(Iter b, Iter e) + : Begin(std::move(b)) + , End(std::move(e)) + { + } + + Iter begin() const { return this->Begin; } + Iter end() const { return this->End; } + bool empty() const { return this->Begin == this->End; } + + difference_type size() const { + return std::distance(this->Begin, this->End); } - const_iterator begin() const { return Begin; } - const_iterator end() const { return End; } - bool empty() const { return std::distance(Begin, End) == 0; } - difference_type size() const { return std::distance(Begin, End); } - cmRange& advance(KWIML_INT_intptr_t amount) & + cmRange& advance(difference_type amount) & { std::advance(this->Begin, amount); return *this; } - cmRange advance(KWIML_INT_intptr_t amount) && + + cmRange advance(difference_type amount) && { std::advance(this->Begin, amount); return std::move(*this); } - cmRange& retreat(KWIML_INT_intptr_t amount) & + cmRange& retreat(difference_type amount) & { - std::advance(End, -amount); + std::advance(this->End, -amount); return *this; } - cmRange retreat(KWIML_INT_intptr_t amount) && + cmRange retreat(difference_type amount) && { - std::advance(End, -amount); + std::advance(this->End, -amount); return std::move(*this); } private: - const_iterator Begin; - const_iterator End; + Iter Begin; + Iter End; }; template -cmRange cmMakeRange(Iter1 begin, Iter2 end) +auto cmMakeRange(Iter1 begin, Iter2 end) -> cmRange { - return cmRange(begin, end); + return { begin, end }; } template -cmRange cmMakeRange(Range const& range) +auto cmMakeRange(Range const& range) -> cmRange { - return cmRange(range.begin(), range.end()); + return { range.begin(), range.end() }; } template -cmRange cmReverseRange( - Range const& range) +auto cmReverseRange(Range const& range) -> cmRange { - return cmRange(range.rbegin(), - range.rend()); + return { range.rbegin(), range.rend() }; } #endif https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9eb0e73f461f168fb036c304de13d7501edf6d12 commit 9eb0e73f461f168fb036c304de13d7501edf6d12 Author: Regina Pfeifer AuthorDate: Fri Feb 15 21:34:44 2019 +0100 Commit: Brad King CommitDate: Thu Feb 21 08:24:25 2019 -0500 cmRange: Move to dedicated header file diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index 63c2fcc..c66c87a 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -3,12 +3,12 @@ #include "cmCTestMultiProcessHandler.h" #include "cmAffinity.h" -#include "cmAlgorithms.h" #include "cmCTest.h" #include "cmCTestRunTest.h" #include "cmCTestTestHandler.h" #include "cmDuration.h" #include "cmListFileCache.h" +#include "cmRange.h" #include "cmSystemTools.h" #include "cmWorkingDirectory.h" diff --git a/Source/CTest/cmCTestP4.cxx b/Source/CTest/cmCTestP4.cxx index ac4753c..0d6670a 100644 --- a/Source/CTest/cmCTestP4.cxx +++ b/Source/CTest/cmCTestP4.cxx @@ -2,10 +2,10 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmCTestP4.h" -#include "cmAlgorithms.h" #include "cmCTest.h" #include "cmCTestVC.h" #include "cmProcessTools.h" +#include "cmRange.h" #include "cmSystemTools.h" #include "cmsys/RegularExpression.hxx" diff --git a/Source/cmAddDependenciesCommand.cxx b/Source/cmAddDependenciesCommand.cxx index 1023808..4956a47 100644 --- a/Source/cmAddDependenciesCommand.cxx +++ b/Source/cmAddDependenciesCommand.cxx @@ -4,9 +4,9 @@ #include -#include "cmAlgorithms.h" #include "cmMakefile.h" #include "cmMessageType.h" +#include "cmRange.h" #include "cmTarget.h" class cmExecutionStatus; diff --git a/Source/cmAddSubDirectoryCommand.cxx b/Source/cmAddSubDirectoryCommand.cxx index c47092a..7947188 100644 --- a/Source/cmAddSubDirectoryCommand.cxx +++ b/Source/cmAddSubDirectoryCommand.cxx @@ -5,8 +5,8 @@ #include #include -#include "cmAlgorithms.h" #include "cmMakefile.h" +#include "cmRange.h" #include "cmSystemTools.h" class cmExecutionStatus; diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h index 1c4160b..2ff1ed0 100644 --- a/Source/cmAlgorithms.h +++ b/Source/cmAlgorithms.h @@ -5,6 +5,8 @@ #include "cmConfigure.h" // IWYU pragma: keep +#include "cmRange.h" + #include "cm_kwiml.h" #include #include @@ -156,69 +158,12 @@ private: }; } -template -struct cmRange -{ - typedef const_iterator_ const_iterator; - typedef typename std::iterator_traits::value_type value_type; - typedef typename std::iterator_traits::difference_type - difference_type; - cmRange(const_iterator begin_, const_iterator end_) - : Begin(begin_) - , End(end_) - { - } - const_iterator begin() const { return Begin; } - const_iterator end() const { return End; } - bool empty() const { return std::distance(Begin, End) == 0; } - difference_type size() const { return std::distance(Begin, End); } - - cmRange& advance(KWIML_INT_intptr_t amount) & - { - std::advance(this->Begin, amount); - return *this; - } - cmRange advance(KWIML_INT_intptr_t amount) && - { - std::advance(this->Begin, amount); - return std::move(*this); - } - - cmRange& retreat(KWIML_INT_intptr_t amount) & - { - std::advance(End, -amount); - return *this; - } - - cmRange retreat(KWIML_INT_intptr_t amount) && - { - std::advance(End, -amount); - return std::move(*this); - } - -private: - const_iterator Begin; - const_iterator End; -}; - typedef cmRange::const_iterator> cmStringRange; class cmListFileBacktrace; typedef cmRange::const_iterator> cmBacktraceRange; -template -cmRange cmMakeRange(Iter1 begin, Iter2 end) -{ - return cmRange(begin, end); -} - -template -cmRange cmMakeRange(Range const& range) -{ - return cmRange(range.begin(), range.end()); -} - template void cmDeleteAll(Range const& r) { @@ -334,14 +279,6 @@ typename Range::const_iterator cmFindNot(Range const& r, T const& t) return std::find_if(r.begin(), r.end(), [&t](T const& i) { return i != t; }); } -template -cmRange cmReverseRange( - Range const& range) -{ - return cmRange(range.rbegin(), - range.rend()); -} - template std::reverse_iterator cmMakeReverseIterator(Iter it) { diff --git a/Source/cmComputeLinkDepends.cxx b/Source/cmComputeLinkDepends.cxx index 5ed6c29..186deb6 100644 --- a/Source/cmComputeLinkDepends.cxx +++ b/Source/cmComputeLinkDepends.cxx @@ -9,6 +9,7 @@ #include "cmListFileCache.h" #include "cmLocalGenerator.h" #include "cmMakefile.h" +#include "cmRange.h" #include "cmStateTypes.h" #include "cmSystemTools.h" #include "cmTarget.h" diff --git a/Source/cmComputeTargetDepends.cxx b/Source/cmComputeTargetDepends.cxx index 70d1675..01d4c07 100644 --- a/Source/cmComputeTargetDepends.cxx +++ b/Source/cmComputeTargetDepends.cxx @@ -2,7 +2,6 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmComputeTargetDepends.h" -#include "cmAlgorithms.h" #include "cmComputeComponentGraph.h" #include "cmGeneratorTarget.h" #include "cmGlobalGenerator.h" @@ -12,6 +11,7 @@ #include "cmMakefile.h" #include "cmMessageType.h" #include "cmPolicies.h" +#include "cmRange.h" #include "cmSourceFile.h" #include "cmState.h" #include "cmStateTypes.h" diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx index 9e90547..93ff8f4 100644 --- a/Source/cmExtraCodeBlocksGenerator.cxx +++ b/Source/cmExtraCodeBlocksGenerator.cxx @@ -13,6 +13,7 @@ #include "cmGlobalGenerator.h" #include "cmLocalGenerator.h" #include "cmMakefile.h" +#include "cmRange.h" #include "cmSourceFile.h" #include "cmStateTypes.h" #include "cmSystemTools.h" diff --git a/Source/cmFLTKWrapUICommand.cxx b/Source/cmFLTKWrapUICommand.cxx index 1b509ef..89629c7 100644 --- a/Source/cmFLTKWrapUICommand.cxx +++ b/Source/cmFLTKWrapUICommand.cxx @@ -4,9 +4,9 @@ #include -#include "cmAlgorithms.h" #include "cmCustomCommandLines.h" #include "cmMakefile.h" +#include "cmRange.h" #include "cmSourceFile.h" #include "cmSystemTools.h" diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index 96c9e15..59ef48d 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -34,6 +34,7 @@ #include "cmMakefile.h" #include "cmMessageType.h" #include "cmPolicies.h" +#include "cmRange.h" #include "cmSystemTools.h" #include "cmTimestamp.h" #include "cm_sys_stat.h" diff --git a/Source/cmFindBase.cxx b/Source/cmFindBase.cxx index f92f66e..2e5e29c 100644 --- a/Source/cmFindBase.cxx +++ b/Source/cmFindBase.cxx @@ -9,6 +9,7 @@ #include "cmAlgorithms.h" #include "cmMakefile.h" +#include "cmRange.h" #include "cmSearchPath.h" #include "cmState.h" #include "cmStateTypes.h" diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index 0d22ed8..7ebd211 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -23,6 +23,7 @@ #include "cmMakefile.h" #include "cmMessageType.h" #include "cmPolicies.h" +#include "cmRange.h" #include "cmSearchPath.h" #include "cmState.h" #include "cmStateTypes.h" diff --git a/Source/cmForEachCommand.cxx b/Source/cmForEachCommand.cxx index 39430d0..08003eb 100644 --- a/Source/cmForEachCommand.cxx +++ b/Source/cmForEachCommand.cxx @@ -11,6 +11,7 @@ #include "cmExecutionStatus.h" #include "cmMakefile.h" #include "cmMessageType.h" +#include "cmRange.h" #include "cmSystemTools.h" cmForEachFunctionBlocker::cmForEachFunctionBlocker(cmMakefile* mf) diff --git a/Source/cmFunctionCommand.cxx b/Source/cmFunctionCommand.cxx index 264a338..9d75b72 100644 --- a/Source/cmFunctionCommand.cxx +++ b/Source/cmFunctionCommand.cxx @@ -8,6 +8,7 @@ #include "cmExecutionStatus.h" #include "cmMakefile.h" #include "cmPolicies.h" +#include "cmRange.h" #include "cmState.h" // define the class for function commands diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 6f5e9bd..c73286c 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -28,6 +28,7 @@ #include "cmMakefile.h" #include "cmMessageType.h" #include "cmPropertyMap.h" +#include "cmRange.h" #include "cmSourceFile.h" #include "cmSourceFileLocation.h" #include "cmState.h" diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index fa0ffcc..ede5713 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -35,6 +35,7 @@ #include "cmMakefile.h" #include "cmMessageType.h" #include "cmPolicies.h" +#include "cmRange.h" #include "cmSourceFile.h" #include "cmState.h" #include "cmStateDirectory.h" diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 31bcacf..d9a9d9b 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -26,6 +26,7 @@ #include "cmMessageType.h" #include "cmNinjaLinkLineComputer.h" #include "cmOutputConverter.h" +#include "cmRange.h" #include "cmState.h" #include "cmStateDirectory.h" #include "cmStateSnapshot.h" diff --git a/Source/cmInstallCommandArguments.cxx b/Source/cmInstallCommandArguments.cxx index 647c786..c64bd8a 100644 --- a/Source/cmInstallCommandArguments.cxx +++ b/Source/cmInstallCommandArguments.cxx @@ -2,7 +2,7 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmInstallCommandArguments.h" -#include "cmAlgorithms.h" +#include "cmRange.h" #include "cmSystemTools.h" #include diff --git a/Source/cmInstallFilesCommand.cxx b/Source/cmInstallFilesCommand.cxx index 1b72ce6..b068e46 100644 --- a/Source/cmInstallFilesCommand.cxx +++ b/Source/cmInstallFilesCommand.cxx @@ -2,12 +2,12 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmInstallFilesCommand.h" -#include "cmAlgorithms.h" #include "cmGeneratorExpression.h" #include "cmGlobalGenerator.h" #include "cmInstallFilesGenerator.h" #include "cmInstallGenerator.h" #include "cmMakefile.h" +#include "cmRange.h" #include "cmSystemTools.h" class cmExecutionStatus; diff --git a/Source/cmListCommand.cxx b/Source/cmListCommand.cxx index 297babf..9322746 100644 --- a/Source/cmListCommand.cxx +++ b/Source/cmListCommand.cxx @@ -19,6 +19,7 @@ #include "cmMakefile.h" #include "cmMessageType.h" #include "cmPolicies.h" +#include "cmRange.h" #include "cmStringReplaceHelper.h" #include "cmSystemTools.h" diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 7eb4a03..765fa30 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -22,6 +22,7 @@ #include "cmMakefile.h" #include "cmMakefileTargetGenerator.h" #include "cmOutputConverter.h" +#include "cmRange.h" #include "cmRulePlaceholderExpander.h" #include "cmSourceFile.h" #include "cmState.h" diff --git a/Source/cmMacroCommand.cxx b/Source/cmMacroCommand.cxx index 7279d5f..6565f02 100644 --- a/Source/cmMacroCommand.cxx +++ b/Source/cmMacroCommand.cxx @@ -10,6 +10,7 @@ #include "cmExecutionStatus.h" #include "cmMakefile.h" #include "cmPolicies.h" +#include "cmRange.h" #include "cmState.h" #include "cmSystemTools.h" diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 560181f..2e4d106 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -31,6 +31,7 @@ #include "cmInstallSubdirectoryGenerator.h" #include "cmListFileCache.h" #include "cmMessageType.h" +#include "cmRange.h" #include "cmSourceFile.h" #include "cmSourceFileLocation.h" #include "cmState.h" diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index cb595fd..340e405 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -21,6 +21,7 @@ #include "cmMakefileLibraryTargetGenerator.h" #include "cmMakefileUtilityTargetGenerator.h" #include "cmOutputConverter.h" +#include "cmRange.h" #include "cmRulePlaceholderExpander.h" #include "cmSourceFile.h" #include "cmState.h" diff --git a/Source/cmMessageCommand.cxx b/Source/cmMessageCommand.cxx index 1a21ae4..2724030 100644 --- a/Source/cmMessageCommand.cxx +++ b/Source/cmMessageCommand.cxx @@ -6,6 +6,7 @@ #include "cmMakefile.h" #include "cmMessageType.h" #include "cmMessenger.h" +#include "cmRange.h" #include "cmSystemTools.h" class cmExecutionStatus; diff --git a/Source/cmParseArgumentsCommand.cxx b/Source/cmParseArgumentsCommand.cxx index 6231aab..ab8d103 100644 --- a/Source/cmParseArgumentsCommand.cxx +++ b/Source/cmParseArgumentsCommand.cxx @@ -10,6 +10,7 @@ #include "cmAlgorithms.h" #include "cmMakefile.h" #include "cmMessageType.h" +#include "cmRange.h" #include "cmSystemTools.h" class cmExecutionStatus; diff --git a/Source/cmQTWrapCPPCommand.cxx b/Source/cmQTWrapCPPCommand.cxx index 8b42119..9a764c6 100644 --- a/Source/cmQTWrapCPPCommand.cxx +++ b/Source/cmQTWrapCPPCommand.cxx @@ -2,9 +2,9 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmQTWrapCPPCommand.h" -#include "cmAlgorithms.h" #include "cmCustomCommandLines.h" #include "cmMakefile.h" +#include "cmRange.h" #include "cmSourceFile.h" #include "cmSystemTools.h" diff --git a/Source/cmQTWrapUICommand.cxx b/Source/cmQTWrapUICommand.cxx index 6a620c1..2223e2d 100644 --- a/Source/cmQTWrapUICommand.cxx +++ b/Source/cmQTWrapUICommand.cxx @@ -2,9 +2,9 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmQTWrapUICommand.h" -#include "cmAlgorithms.h" #include "cmCustomCommandLines.h" #include "cmMakefile.h" +#include "cmRange.h" #include "cmSourceFile.h" #include "cmSystemTools.h" diff --git a/Source/cmRST.cxx b/Source/cmRST.cxx index 55204d7..5917e27 100644 --- a/Source/cmRST.cxx +++ b/Source/cmRST.cxx @@ -3,6 +3,7 @@ #include "cmRST.h" #include "cmAlgorithms.h" +#include "cmRange.h" #include "cmSystemTools.h" #include "cmVersion.h" diff --git a/Source/cmRange.h b/Source/cmRange.h new file mode 100644 index 0000000..5a2f699 --- /dev/null +++ b/Source/cmRange.h @@ -0,0 +1,77 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#ifndef cmRange_h +#define cmRange_h + +#include "cmConfigure.h" // IWYU pragma: keep + +#include "cm_kwiml.h" +#include +#include + +template +struct cmRange +{ + typedef const_iterator_ const_iterator; + typedef typename std::iterator_traits::value_type value_type; + typedef typename std::iterator_traits::difference_type + difference_type; + cmRange(const_iterator begin_, const_iterator end_) + : Begin(begin_) + , End(end_) + { + } + const_iterator begin() const { return Begin; } + const_iterator end() const { return End; } + bool empty() const { return std::distance(Begin, End) == 0; } + difference_type size() const { return std::distance(Begin, End); } + + cmRange& advance(KWIML_INT_intptr_t amount) & + { + std::advance(this->Begin, amount); + return *this; + } + cmRange advance(KWIML_INT_intptr_t amount) && + { + std::advance(this->Begin, amount); + return std::move(*this); + } + + cmRange& retreat(KWIML_INT_intptr_t amount) & + { + std::advance(End, -amount); + return *this; + } + + cmRange retreat(KWIML_INT_intptr_t amount) && + { + std::advance(End, -amount); + return std::move(*this); + } + +private: + const_iterator Begin; + const_iterator End; +}; + +template +cmRange cmMakeRange(Iter1 begin, Iter2 end) +{ + return cmRange(begin, end); +} + +template +cmRange cmMakeRange(Range const& range) +{ + return cmRange(range.begin(), range.end()); +} + +template +cmRange cmReverseRange( + Range const& range) +{ + return cmRange(range.rbegin(), + range.rend()); +} + +#endif diff --git a/Source/cmSetCommand.cxx b/Source/cmSetCommand.cxx index 6bd071c..41555e8 100644 --- a/Source/cmSetCommand.cxx +++ b/Source/cmSetCommand.cxx @@ -5,6 +5,7 @@ #include "cmAlgorithms.h" #include "cmMakefile.h" #include "cmMessageType.h" +#include "cmRange.h" #include "cmState.h" #include "cmStateTypes.h" #include "cmSystemTools.h" diff --git a/Source/cmSetPropertyCommand.cxx b/Source/cmSetPropertyCommand.cxx index 2a0ccb4..0d8f1cc 100644 --- a/Source/cmSetPropertyCommand.cxx +++ b/Source/cmSetPropertyCommand.cxx @@ -4,11 +4,11 @@ #include -#include "cmAlgorithms.h" #include "cmGlobalGenerator.h" #include "cmInstalledFile.h" #include "cmMakefile.h" #include "cmProperty.h" +#include "cmRange.h" #include "cmSourceFile.h" #include "cmState.h" #include "cmSystemTools.h" diff --git a/Source/cmStateDirectory.cxx b/Source/cmStateDirectory.cxx index 15c8a61..31273cc 100644 --- a/Source/cmStateDirectory.cxx +++ b/Source/cmStateDirectory.cxx @@ -11,6 +11,7 @@ #include "cmAlgorithms.h" #include "cmProperty.h" #include "cmPropertyMap.h" +#include "cmRange.h" #include "cmState.h" #include "cmStatePrivate.h" #include "cmStateTypes.h" diff --git a/Source/cmStringCommand.cxx b/Source/cmStringCommand.cxx index 44ba82a..252d985 100644 --- a/Source/cmStringCommand.cxx +++ b/Source/cmStringCommand.cxx @@ -13,6 +13,7 @@ #include "cmCryptoHash.h" #include "cmGeneratorExpression.h" #include "cmMakefile.h" +#include "cmRange.h" #include "cmStringReplaceHelper.h" #include "cmSystemTools.h" #include "cmTimestamp.h" diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index f0e8077..254644a 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -5,6 +5,7 @@ #include "cmAlgorithms.h" #include "cmDuration.h" #include "cmProcessOutput.h" +#include "cmRange.h" #include "cm_sys_stat.h" #include "cm_uv.h" diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index d1e4f06..46f930a 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -21,6 +21,7 @@ #include "cmMessageType.h" #include "cmMessenger.h" #include "cmProperty.h" +#include "cmRange.h" #include "cmSourceFile.h" #include "cmSourceFileLocation.h" #include "cmSourceFileLocationKind.h" diff --git a/Source/cmTestGenerator.cxx b/Source/cmTestGenerator.cxx index a0e309d..571cd09 100644 --- a/Source/cmTestGenerator.cxx +++ b/Source/cmTestGenerator.cxx @@ -5,7 +5,6 @@ #include #include -#include "cmAlgorithms.h" #include "cmGeneratorExpression.h" #include "cmGeneratorTarget.h" #include "cmListFileCache.h" @@ -13,6 +12,7 @@ #include "cmOutputConverter.h" #include "cmProperty.h" #include "cmPropertyMap.h" +#include "cmRange.h" #include "cmStateTypes.h" #include "cmSystemTools.h" #include "cmTest.h" diff --git a/Source/cmTryRunCommand.cxx b/Source/cmTryRunCommand.cxx index d863339..3a2cd7f 100644 --- a/Source/cmTryRunCommand.cxx +++ b/Source/cmTryRunCommand.cxx @@ -5,10 +5,10 @@ #include "cmsys/FStream.hxx" #include -#include "cmAlgorithms.h" #include "cmDuration.h" #include "cmMakefile.h" #include "cmMessageType.h" +#include "cmRange.h" #include "cmState.h" #include "cmStateTypes.h" #include "cmSystemTools.h" diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index adfce37..1f238d6 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -9,6 +9,7 @@ #include "cmMakefile.h" #include "cmQtAutoGeneratorMocUic.h" #include "cmQtAutoGeneratorRcc.h" +#include "cmRange.h" #include "cmState.h" #include "cmStateDirectory.h" #include "cmStateSnapshot.h" ----------------------------------------------------------------------- Summary of changes: Help/release/dev/deprecate-policy-old.rst | 8 + Source/CTest/cmCTestMultiProcessHandler.cxx | 2 +- Source/CTest/cmCTestP4.cxx | 2 +- Source/cmAddDependenciesCommand.cxx | 2 +- Source/cmAddSubDirectoryCommand.cxx | 2 +- Source/cmAlgorithms.h | 67 +------- Source/cmComputeLinkDepends.cxx | 1 + Source/cmComputeTargetDepends.cxx | 2 +- Source/cmExtraCodeBlocksGenerator.cxx | 1 + Source/cmFLTKWrapUICommand.cxx | 2 +- Source/cmFileCommand.cxx | 1 + Source/cmFindBase.cxx | 1 + Source/cmFindPackageCommand.cxx | 1 + Source/cmForEachCommand.cxx | 1 + Source/cmFunctionCommand.cxx | 1 + Source/cmGeneratorTarget.cxx | 1 + Source/cmGlobalGenerator.cxx | 1 + Source/cmGlobalNinjaGenerator.cxx | 1 + Source/cmInstallCommandArguments.cxx | 2 +- Source/cmInstallFilesCommand.cxx | 2 +- Source/cmListCommand.cxx | 1 + Source/cmLocalUnixMakefileGenerator3.cxx | 1 + Source/cmMacroCommand.cxx | 1 + Source/cmMakefile.cxx | 3 +- Source/cmMakefileTargetGenerator.cxx | 1 + Source/cmMessageCommand.cxx | 1 + Source/cmParseArgumentsCommand.cxx | 1 + Source/cmQTWrapCPPCommand.cxx | 2 +- Source/cmQTWrapUICommand.cxx | 2 +- Source/cmRST.cxx | 1 + Source/cmRange.h | 239 ++++++++++++++++++++++++++ Source/cmSetCommand.cxx | 1 + Source/cmSetPropertyCommand.cxx | 2 +- Source/cmStateDirectory.cxx | 1 + Source/cmStringCommand.cxx | 1 + Source/cmSystemTools.cxx | 1 + Source/cmTarget.cxx | 1 + Source/cmTestGenerator.cxx | 2 +- Source/cmTryRunCommand.cxx | 2 +- Source/cmcmd.cxx | 1 + Tests/CMakeLib/CMakeLists.txt | 1 + Tests/CMakeLib/testRange.cxx | 45 +++++ Tests/RunCMake/try_compile/CMP0066-stderr.txt | 13 +- 43 files changed, 345 insertions(+), 80 deletions(-) create mode 100644 Help/release/dev/deprecate-policy-old.rst create mode 100644 Source/cmRange.h create mode 100644 Tests/CMakeLib/testRange.cxx hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 25 08:23:03 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 25 Feb 2019 08:23:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-204-gf3b4a12 Message-ID: <20190225132303.706ECC41C1@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 f3b4a12c610e6c4fc37ea03c902c354228208726 (commit) via 40768761b65e7644674f894a9dfff05c06515d72 (commit) via c7f3663b10178e3324bb22759198b19c7c3aa8c2 (commit) via 214fcefa5233fb9c5906921f72d067626a51a349 (commit) from a6cb73b97f60b6cc09b9ccf80a65662ce41a5627 (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=f3b4a12c610e6c4fc37ea03c902c354228208726 commit f3b4a12c610e6c4fc37ea03c902c354228208726 Merge: 4076876 c7f3663 Author: Brad King AuthorDate: Mon Feb 25 13:14:11 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 25 08:14:21 2019 -0500 Merge topic 'return-explicit-conversion' c7f3663b10 cmServerConnection: make return conversions explicit Acked-by: Kitware Robot Merge-request: !3000 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=40768761b65e7644674f894a9dfff05c06515d72 commit 40768761b65e7644674f894a9dfff05c06515d72 Merge: a6cb73b 214fcef Author: Brad King AuthorDate: Mon Feb 25 13:12:40 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 25 08:13:44 2019 -0500 Merge topic 'drop-MIPSpro' 214fcefa52 Remove now-unused code once used for MIPSpro on IRIX Acked-by: Kitware Robot Merge-request: !3004 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c7f3663b10178e3324bb22759198b19c7c3aa8c2 commit c7f3663b10178e3324bb22759198b19c7c3aa8c2 Author: Ben Boeckel AuthorDate: Wed Feb 20 18:33:51 2019 -0500 Commit: Brad King CommitDate: Fri Feb 22 11:02:13 2019 -0500 cmServerConnection: make return conversions explicit GCC 9 warns that `std::move` is not necessary, but in fact it is necessary to call the proper conversion constructor. Make that call explicit. diff --git a/Source/cmServerConnection.cxx b/Source/cmServerConnection.cxx index 844a858..a878890 100644 --- a/Source/cmServerConnection.cxx +++ b/Source/cmServerConnection.cxx @@ -29,7 +29,7 @@ cm::uv_stream_ptr cmStdIoConnection::SetupStream(int file_id) tty.init(*this->Server->GetLoop(), file_id, file_id == 0, static_cast(this)); uv_tty_set_mode(tty, UV_TTY_MODE_NORMAL); - return std::move(tty); + return { std::move(tty) }; } case UV_FILE: if (file_id == 0) { @@ -43,7 +43,7 @@ cm::uv_stream_ptr cmStdIoConnection::SetupStream(int file_id) pipe.init(*this->Server->GetLoop(), 0, static_cast(this)); uv_pipe_open(pipe, file_id); - return std::move(pipe); + return { std::move(pipe) }; } default: assert(false && "Unable to determine stream type"); https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=214fcefa5233fb9c5906921f72d067626a51a349 commit 214fcefa5233fb9c5906921f72d067626a51a349 Author: Brad King AuthorDate: Thu Feb 21 11:07:33 2019 -0500 Commit: Brad King CommitDate: Thu Feb 21 11:12:51 2019 -0500 Remove now-unused code once used for MIPSpro on IRIX In commit beb991110d (Remove now-unused code once used on IRIX, 2019-01-11, v3.14.0-rc1~167^2) we removed remnants of IRIX support. Also remove remnants of MIPSpro compiler support. diff --git a/Auxiliary/cmake.m4 b/Auxiliary/cmake.m4 index 7beff41..a40c0ae 100644 --- a/Auxiliary/cmake.m4 +++ b/Auxiliary/cmake.m4 @@ -13,7 +13,7 @@ fi # $2: language (e.g. C/CXX/Fortran) # $3: The compiler ID, defaults to GNU. # Possible values are: GNU, Intel, Clang, SunPro, HP, XL, VisualAge, PGI, -# PathScale, Cray, SCO, MIPSpro, MSVC +# PathScale, Cray, SCO, MSVC # $4: optional extra arguments to cmake, e.g. "-DCMAKE_SIZEOF_VOID_P=8" # $5: optional path to cmake binary AC_DEFUN([CMAKE_FIND_PACKAGE], [ diff --git a/Help/variable/CMAKE_LANG_COMPILER_ID.rst b/Help/variable/CMAKE_LANG_COMPILER_ID.rst index 5323880..2bb39798 100644 --- a/Help/variable/CMAKE_LANG_COMPILER_ID.rst +++ b/Help/variable/CMAKE_LANG_COMPILER_ID.rst @@ -24,7 +24,6 @@ include: HP = Hewlett-Packard Compiler (hp.com) IAR = IAR Systems (iar.com) Intel = Intel Compiler (intel.com) - MIPSpro = SGI MIPSpro (sgi.com) MSVC = Microsoft Visual Studio (microsoft.com) NVIDIA = NVIDIA CUDA Compiler (nvidia.com) OpenWatcom = Open Watcom (openwatcom.org) diff --git a/Modules/CMakeCompilerIdDetection.cmake b/Modules/CMakeCompilerIdDetection.cmake index 4d0c681..7039b8d 100644 --- a/Modules/CMakeCompilerIdDetection.cmake +++ b/Modules/CMakeCompilerIdDetection.cmake @@ -86,8 +86,6 @@ function(compiler_id_detection outvar lang) SDCC ) endif() - list(APPEND ordered_compilers - MIPSpro) #Currently the only CUDA compilers are NVIDIA if(lang STREQUAL CUDA) diff --git a/Modules/CMakeFortranCompilerId.F.in b/Modules/CMakeFortranCompilerId.F.in index 5995694..30f8d4c 100644 --- a/Modules/CMakeFortranCompilerId.F.in +++ b/Modules/CMakeFortranCompilerId.F.in @@ -96,13 +96,6 @@ # if defined(__FLANG_PATCHLEVEL__) # define COMPILER_VERSION_PATCH DEC(__FLANG_PATCHLEVEL__) # endif -#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION) - PRINT *, 'INFO:compiler[MIPSpro]' -# if 0 -! This compiler is either not known or is too old to define an -! identification macro. Try to identify the platform and guess that -! it is the native compiler. -# endif #elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) PRINT *, 'INFO:compiler[VisualAge]' #elif defined(__hpux) || defined(__hpux__) diff --git a/Modules/Compiler/MIPSpro-C.cmake b/Modules/Compiler/MIPSpro-C.cmake deleted file mode 100644 index 675560c..0000000 --- a/Modules/Compiler/MIPSpro-C.cmake +++ /dev/null @@ -1 +0,0 @@ -set(CMAKE_C_VERBOSE_FLAG "-v") diff --git a/Modules/Compiler/MIPSpro-CXX.cmake b/Modules/Compiler/MIPSpro-CXX.cmake deleted file mode 100644 index 9fb191c..0000000 --- a/Modules/Compiler/MIPSpro-CXX.cmake +++ /dev/null @@ -1 +0,0 @@ -set(CMAKE_CXX_VERBOSE_FLAG "-v") diff --git a/Modules/Compiler/MIPSpro-DetermineCompiler.cmake b/Modules/Compiler/MIPSpro-DetermineCompiler.cmake deleted file mode 100644 index 9e48553..0000000 --- a/Modules/Compiler/MIPSpro-DetermineCompiler.cmake +++ /dev/null @@ -1,15 +0,0 @@ - -set(_compiler_id_pp_test "defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)") - -set(_compiler_id_version_compute " -# if defined(_SGI_COMPILER_VERSION) - /* _SGI_COMPILER_VERSION = VRP */ -# define @PREFIX at COMPILER_VERSION_MAJOR @MACRO_DEC@(_SGI_COMPILER_VERSION/100) -# define @PREFIX at COMPILER_VERSION_MINOR @MACRO_DEC@(_SGI_COMPILER_VERSION/10 % 10) -# define @PREFIX at COMPILER_VERSION_PATCH @MACRO_DEC@(_SGI_COMPILER_VERSION % 10) -# else - /* _COMPILER_VERSION = VRP */ -# define @PREFIX at COMPILER_VERSION_MAJOR @MACRO_DEC@(_COMPILER_VERSION/100) -# define @PREFIX at COMPILER_VERSION_MINOR @MACRO_DEC@(_COMPILER_VERSION/10 % 10) -# define @PREFIX at COMPILER_VERSION_PATCH @MACRO_DEC@(_COMPILER_VERSION % 10) -# endif") diff --git a/Modules/Compiler/MIPSpro-Fortran.cmake b/Modules/Compiler/MIPSpro-Fortran.cmake deleted file mode 100644 index ffceea8..0000000 --- a/Modules/Compiler/MIPSpro-Fortran.cmake +++ /dev/null @@ -1,3 +0,0 @@ -set(CMAKE_Fortran_VERBOSE_FLAG "-v") -set(CMAKE_Fortran_FORMAT_FIXED_FLAG "-fixedform") -set(CMAKE_Fortran_FORMAT_FREE_FLAG "-freeform") diff --git a/Modules/FindOpenMP.cmake b/Modules/FindOpenMP.cmake index 7e37212..5a34b9e 100644 --- a/Modules/FindOpenMP.cmake +++ b/Modules/FindOpenMP.cmake @@ -96,7 +96,6 @@ function(_OPENMP_FLAG_CANDIDATES LANG) else() set(OMP_FLAG_Intel "-qopenmp") endif() - set(OMP_FLAG_MIPSpro "-mp") set(OMP_FLAG_MSVC "-openmp") set(OMP_FLAG_PathScale "-openmp") set(OMP_FLAG_NAG "-openmp") diff --git a/Modules/FortranCInterface/CMakeLists.txt b/Modules/FortranCInterface/CMakeLists.txt index e3b81d7..381080b 100644 --- a/Modules/FortranCInterface/CMakeLists.txt +++ b/Modules/FortranCInterface/CMakeLists.txt @@ -15,11 +15,11 @@ int main() { return 0; } # List manglings of global symbol names to try. set(global_symbols my_sub # VisualAge - my_sub_ # GNU, Intel, HP, SunPro, MIPSpro, PGI + my_sub_ # GNU, Intel, HP, SunPro, PGI my_sub__ # GNU g77 MY_SUB # Intel on Windows mysub # VisualAge - mysub_ # GNU, Intel, HP, SunPro, MIPSpro, PGI + mysub_ # GNU, Intel, HP, SunPro, PGI MYSUB # Intel on Windows ${FortranCInterface_GLOBAL_SYMBOLS} ) @@ -48,7 +48,6 @@ set(module_symbols list(REMOVE_DUPLICATES module_symbols) # Note that some compiler manglings cannot be invoked from C: -# MIPSpro uses "MY_SUB.in.MY_MODULE" # SunPro uses "my_module.my_sub_" # PathScale uses "MY_SUB.in.MY_MODULE" diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index fa0ffcc..48aa3db 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1862,13 +1862,6 @@ int cmGlobalGenerator::Build(int jobs, const std::string& /*unused*/, output += *outputPtr; cmSystemTools::SetRunCommandHideConsole(hideconsole); - // The SGI MipsPro 7.3 compiler does not return an error code when - // the source has a #error in it! This is a work-around for such - // compilers. - if ((retVal == 0) && (output.find("#error") != std::string::npos)) { - retVal = 1; - } - // The OpenWatcom tools do not return an error code when a link // library is not found! if (this->CMakeInstance->GetState()->UseWatcomWMake() && retVal == 0 && diff --git a/Tests/Fortran/CMakeLists.txt b/Tests/Fortran/CMakeLists.txt index 7023615..929fa4d 100644 --- a/Tests/Fortran/CMakeLists.txt +++ b/Tests/Fortran/CMakeLists.txt @@ -46,7 +46,7 @@ function(test_fortran_c_interface_module) FortranCInterface_VERIFY() FortranCInterface_VERIFY(CXX) if(CMAKE_Fortran_COMPILER_SUPPORTS_F90) - if(NOT CMAKE_Fortran_COMPILER_ID MATCHES "SunPro|MIPSpro|PathScale|Absoft") + if(NOT CMAKE_Fortran_COMPILER_ID MATCHES "SunPro|PathScale|Absoft") set(module_expected 1) endif() if(FortranCInterface_MODULE_FOUND OR module_expected) diff --git a/Utilities/cmcurl/CMakeLists.txt b/Utilities/cmcurl/CMakeLists.txt index 1c96497..74929d9 100644 --- a/Utilities/cmcurl/CMakeLists.txt +++ b/Utilities/cmcurl/CMakeLists.txt @@ -77,7 +77,7 @@ endif(APPLE) # Disable warnings to avoid changing 3rd party code. if(CMAKE_C_COMPILER_ID MATCHES - "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|MIPSpro|HP|Intel)$") + "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|HP|Intel)$") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") elseif(CMAKE_C_COMPILER_ID STREQUAL "PathScale") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -woffall") diff --git a/Utilities/cmexpat/CMakeLists.txt b/Utilities/cmexpat/CMakeLists.txt index 470fcba..7165689 100644 --- a/Utilities/cmexpat/CMakeLists.txt +++ b/Utilities/cmexpat/CMakeLists.txt @@ -1,6 +1,6 @@ # Disable warnings to avoid changing 3rd party code. IF(CMAKE_C_COMPILER_ID MATCHES - "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|MIPSpro|HP|Intel)$") + "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|HP|Intel)$") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") ELSEIF(CMAKE_C_COMPILER_ID STREQUAL "PathScale") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -woffall") diff --git a/Utilities/cmjsoncpp/CMakeLists.txt b/Utilities/cmjsoncpp/CMakeLists.txt index ef370cc..a66f9673 100644 --- a/Utilities/cmjsoncpp/CMakeLists.txt +++ b/Utilities/cmjsoncpp/CMakeLists.txt @@ -2,7 +2,7 @@ project(JsonCpp CXX) # Disable warnings to avoid changing 3rd party code. if(CMAKE_CXX_COMPILER_ID MATCHES - "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|MIPSpro|HP|Intel)$") + "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|HP|Intel)$") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w") elseif(CMAKE_CXX_COMPILER_ID STREQUAL "PathScale") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -woffall") diff --git a/Utilities/cmlibarchive/CMakeLists.txt b/Utilities/cmlibarchive/CMakeLists.txt index d7af6e2..6426ebe 100644 --- a/Utilities/cmlibarchive/CMakeLists.txt +++ b/Utilities/cmlibarchive/CMakeLists.txt @@ -60,7 +60,7 @@ SET(CMAKE_REQUIRED_FLAGS) # Disable warnings to avoid changing 3rd party code. IF(CMAKE_C_COMPILER_ID MATCHES - "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|MIPSpro|HP|Intel)$") + "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|HP|Intel)$") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") ELSEIF(CMAKE_C_COMPILER_ID STREQUAL "PathScale") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -woffall") diff --git a/Utilities/cmliblzma/CMakeLists.txt b/Utilities/cmliblzma/CMakeLists.txt index e9f8826..252f0f9 100644 --- a/Utilities/cmliblzma/CMakeLists.txt +++ b/Utilities/cmliblzma/CMakeLists.txt @@ -183,7 +183,7 @@ INCLUDE_DIRECTORIES( # Disable warnings to avoid changing 3rd party code. IF(CMAKE_C_COMPILER_ID MATCHES - "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|MIPSpro|HP|Intel)$") + "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|HP|Intel)$") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") ELSEIF(CMAKE_C_COMPILER_ID STREQUAL "PathScale") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -woffall") diff --git a/Utilities/cmlibrhash/CMakeLists.txt b/Utilities/cmlibrhash/CMakeLists.txt index aa28055..1cdd660 100644 --- a/Utilities/cmlibrhash/CMakeLists.txt +++ b/Utilities/cmlibrhash/CMakeLists.txt @@ -2,7 +2,7 @@ project(librhash C) # Disable warnings to avoid changing 3rd party code. if(CMAKE_C_COMPILER_ID MATCHES - "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|MIPSpro|HP|Intel)$") + "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|HP|Intel)$") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") elseif(CMAKE_C_COMPILER_ID STREQUAL "PathScale") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -woffall") diff --git a/Utilities/cmlibuv/CMakeLists.txt b/Utilities/cmlibuv/CMakeLists.txt index a62c516..2e95bef 100644 --- a/Utilities/cmlibuv/CMakeLists.txt +++ b/Utilities/cmlibuv/CMakeLists.txt @@ -2,7 +2,7 @@ project(libuv C) # Disable warnings to avoid changing 3rd party code. if(CMAKE_C_COMPILER_ID MATCHES - "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|MIPSpro|HP|Intel)$") + "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|HP|Intel)$") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") elseif(CMAKE_C_COMPILER_ID STREQUAL "PathScale") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -woffall") diff --git a/Utilities/cmzlib/CMakeLists.txt b/Utilities/cmzlib/CMakeLists.txt index 0be48f1..1c9ca42 100644 --- a/Utilities/cmzlib/CMakeLists.txt +++ b/Utilities/cmzlib/CMakeLists.txt @@ -2,7 +2,7 @@ PROJECT(CMZLIB) # Disable warnings to avoid changing 3rd party code. if(CMAKE_C_COMPILER_ID MATCHES - "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|MIPSpro|HP|Intel)$") + "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|HP|Intel)$") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") elseif(CMAKE_C_COMPILER_ID STREQUAL "PathScale") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -woffall") ----------------------------------------------------------------------- Summary of changes: Auxiliary/cmake.m4 | 2 +- Help/variable/CMAKE_LANG_COMPILER_ID.rst | 1 - Modules/CMakeCompilerIdDetection.cmake | 2 -- Modules/CMakeFortranCompilerId.F.in | 7 ------- Modules/Compiler/MIPSpro-C.cmake | 1 - Modules/Compiler/MIPSpro-CXX.cmake | 1 - Modules/Compiler/MIPSpro-DetermineCompiler.cmake | 15 --------------- Modules/Compiler/MIPSpro-Fortran.cmake | 3 --- Modules/FindOpenMP.cmake | 1 - Modules/FortranCInterface/CMakeLists.txt | 5 ++--- Source/cmGlobalGenerator.cxx | 7 ------- Source/cmServerConnection.cxx | 4 ++-- Tests/Fortran/CMakeLists.txt | 2 +- Utilities/cmcurl/CMakeLists.txt | 2 +- Utilities/cmexpat/CMakeLists.txt | 2 +- Utilities/cmjsoncpp/CMakeLists.txt | 2 +- Utilities/cmlibarchive/CMakeLists.txt | 2 +- Utilities/cmliblzma/CMakeLists.txt | 2 +- Utilities/cmlibrhash/CMakeLists.txt | 2 +- Utilities/cmlibuv/CMakeLists.txt | 2 +- Utilities/cmzlib/CMakeLists.txt | 2 +- 21 files changed, 14 insertions(+), 53 deletions(-) delete mode 100644 Modules/Compiler/MIPSpro-C.cmake delete mode 100644 Modules/Compiler/MIPSpro-CXX.cmake delete mode 100644 Modules/Compiler/MIPSpro-DetermineCompiler.cmake delete mode 100644 Modules/Compiler/MIPSpro-Fortran.cmake hooks/post-receive -- CMake From kwrobot at kitware.com Mon Feb 25 09:33:08 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 25 Feb 2019 09:33:08 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-206-gf259e87 Message-ID: <20190225143309.6241F11F690@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 f259e8759ce300cd505e30cda1b5fca3ba100cc5 (commit) via 3f685ac3e131cbf89391b9e63163283e1e570a9b (commit) from f3b4a12c610e6c4fc37ea03c902c354228208726 (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=f259e8759ce300cd505e30cda1b5fca3ba100cc5 commit f259e8759ce300cd505e30cda1b5fca3ba100cc5 Merge: f3b4a12 3f685ac Author: Brad King AuthorDate: Mon Feb 25 14:23:10 2019 +0000 Commit: Kitware Robot CommitDate: Mon Feb 25 09:23:17 2019 -0500 Merge topic 'gt-shorter-unique-names' 3f685ac3e1 Use shorter names in internal TARGET_PROPERTY expressions Acked-by: Kitware Robot Merge-request: !3009 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3f685ac3e131cbf89391b9e63163283e1e570a9b commit 3f685ac3e131cbf89391b9e63163283e1e570a9b Author: Brad King AuthorDate: Fri Feb 22 08:47:45 2019 -0500 Commit: Brad King CommitDate: Fri Feb 22 09:14:27 2019 -0500 Use shorter names in internal TARGET_PROPERTY expressions The change in commit 2f708f5d65 (Make internal TARGET_PROPERTY generator expressions more robust, 2018-09-07, v3.13.0-rc1~94^2~4) introduced globally unique names in synthesized `$` generator. We used the pattern `::T` to guarantee uniqueness. However, in projects that require many such expressions to be generated there was a measurable increase in runtime. We had included the target name in the synthesized genex only for human reference during debugging. It is not necessary. Switch to the pattern `:` to shorten the name. Also hand-roll a hex-print loop instead of using sprintf. Together these optimizations get at least some of the time back. Issue: #18964 diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index fa0ffcc..baf69f4 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -2118,17 +2118,24 @@ void cmGlobalGenerator::IndexGeneratorTarget(cmGeneratorTarget* gt) } } +static char const hexDigits[] = "0123456789abcdef"; + std::string cmGlobalGenerator::IndexGeneratorTargetUniquely( cmGeneratorTarget const* gt) { // Use the pointer value to uniquely identify the target instance. - // Use a "T" prefix to indicate that this identifier is for a target. + // Use a ":" prefix to avoid conflict with project-defined targets. // We must satisfy cmGeneratorExpression::IsValidTargetName so use no // other special characters. - char buf[64]; - sprintf(buf, "::T%p", - static_cast(gt)); // cast avoids format warning - std::string id = gt->GetName() + buf; + char buf[1 + sizeof(gt) * 2]; + char* b = buf; + *b++ = ':'; + for (size_t i = 0; i < sizeof(gt); ++i) { + unsigned char const c = reinterpret_cast(>)[i]; + *b++ = hexDigits[(c & 0xf0) >> 4]; + *b++ = hexDigits[(c & 0x0f)]; + } + std::string id(buf, sizeof(buf)); // We internally index pointers to non-const generator targets // but our callers only have pointers to const generator targets. // They will give up non-const privileges when looking up anyway. ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalGenerator.cxx | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 26 00:03:05 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 26 Feb 2019 00:03:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-207-g7c292b3 Message-ID: <20190226050305.69B0C126564@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 7c292b37cfb28407f7716c63561c8ff7f0dc5540 (commit) from f259e8759ce300cd505e30cda1b5fca3ba100cc5 (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=7c292b37cfb28407f7716c63561c8ff7f0dc5540 commit 7c292b37cfb28407f7716c63561c8ff7f0dc5540 Author: Kitware Robot AuthorDate: Tue Feb 26 00:01:07 2019 -0500 Commit: Kitware Robot CommitDate: Tue Feb 26 00:01:07 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 5c07a8b..268efa5 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 14) -set(CMake_VERSION_PATCH 20190225) +set(CMake_VERSION_PATCH 20190226) #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 26 10:43:05 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 26 Feb 2019 10:43:05 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-209-g30fc5ec Message-ID: <20190226154305.CF8CA1252B1@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 30fc5ecf239d4900d8131b7c0933ff4a1d57be80 (commit) via be87ce43f009b3baed3afd6b024bc05bb070b7de (commit) from 7c292b37cfb28407f7716c63561c8ff7f0dc5540 (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=30fc5ecf239d4900d8131b7c0933ff4a1d57be80 commit 30fc5ecf239d4900d8131b7c0933ff4a1d57be80 Merge: 7c292b3 be87ce4 Author: Brad King AuthorDate: Tue Feb 26 15:42:24 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 26 10:42:31 2019 -0500 Merge topic 'qcc-asm-detection' be87ce43f0 Add ASM Compiler detection for QCC Acked-by: Kitware Robot Acked-by: Bartosz Merge-request: !3016 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=be87ce43f009b3baed3afd6b024bc05bb070b7de commit be87ce43f009b3baed3afd6b024bc05bb070b7de Author: Maikel van den Hurk AuthorDate: Mon Feb 25 08:28:47 2019 +0100 Commit: Maikel van den Hurk CommitDate: Mon Feb 25 08:28:47 2019 +0100 Add ASM Compiler detection for QCC diff --git a/Modules/CMakeDetermineASMCompiler.cmake b/Modules/CMakeDetermineASMCompiler.cmake index dbc41c8..86928fa 100644 --- a/Modules/CMakeDetermineASMCompiler.cmake +++ b/Modules/CMakeDetermineASMCompiler.cmake @@ -110,6 +110,10 @@ if(NOT CMAKE_ASM${ASM_DIALECT}_COMPILER_ID) set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_ADSP "-version") set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_ADSP "Analog Devices") + list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS QCC) + set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_QCC "-V") + set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_QCC "gcc_nto") + include(CMakeDetermineCompilerId) set(userflags) CMAKE_DETERMINE_COMPILER_ID_VENDOR(ASM${ASM_DIALECT} "${userflags}") diff --git a/Modules/Compiler/QCC-ASM.cmake b/Modules/Compiler/QCC-ASM.cmake new file mode 100644 index 0000000..9a9935b --- /dev/null +++ b/Modules/Compiler/QCC-ASM.cmake @@ -0,0 +1,2 @@ +include(Compiler/QCC) +__compiler_qcc(ASM) ----------------------------------------------------------------------- Summary of changes: Modules/CMakeDetermineASMCompiler.cmake | 4 ++++ Modules/Compiler/QCC-ASM.cmake | 2 ++ 2 files changed, 6 insertions(+) create mode 100644 Modules/Compiler/QCC-ASM.cmake hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 26 10:53:03 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 26 Feb 2019 10:53:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-214-gc24392e Message-ID: <20190226155303.7F73F113532@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 c24392eec1ae3d97bad99039cdb818ecd1e6263f (commit) via 406e6efb394d416668e62f05eee9f0abed90ca2d (commit) via 8455e166a9655afa70b34e3b5c9586470041e87c (commit) via 02ba5d57dfbe9172e75e2b831a91941680702383 (commit) via 4d337be994e56558b72a0d3e76fa218be289f226 (commit) from 30fc5ecf239d4900d8131b7c0933ff4a1d57be80 (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=c24392eec1ae3d97bad99039cdb818ecd1e6263f commit c24392eec1ae3d97bad99039cdb818ecd1e6263f Merge: 406e6ef 8455e16 Author: Brad King AuthorDate: Tue Feb 26 10:45:35 2019 -0500 Commit: Brad King CommitDate: Tue Feb 26 10:45:35 2019 -0500 Merge branch 'release-3.14' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=406e6efb394d416668e62f05eee9f0abed90ca2d commit 406e6efb394d416668e62f05eee9f0abed90ca2d Merge: 30fc5ec 02ba5d5 Author: Brad King AuthorDate: Tue Feb 26 15:43:16 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 26 10:43:25 2019 -0500 Merge topic 'doc-ctest-build-and-test-summary' 02ba5d57df Help: Fix --build-and-test synopsis in ctest(1) Acked-by: Kitware Robot Acked-by: Bartosz Merge-request: !3017 ----------------------------------------------------------------------- Summary of changes: Help/manual/ctest.1.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 26 10:53:03 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 26 Feb 2019 10:53:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.14.0-rc2-40-g8455e16 Message-ID: <20190226155303.A7B081139D4@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 8455e166a9655afa70b34e3b5c9586470041e87c (commit) via 02ba5d57dfbe9172e75e2b831a91941680702383 (commit) via 4d337be994e56558b72a0d3e76fa218be289f226 (commit) via be87ce43f009b3baed3afd6b024bc05bb070b7de (commit) from af000abbba8dd5ca0a1632a651d3bea00d1a1b43 (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/manual/ctest.1.rst | 5 +++-- Modules/CMakeDetermineASMCompiler.cmake | 4 ++++ Modules/Compiler/QCC-ASM.cmake | 2 ++ 3 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 Modules/Compiler/QCC-ASM.cmake hooks/post-receive -- CMake From kwrobot at kitware.com Tue Feb 26 11:13:03 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 26 Feb 2019 11:13:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-241-g78ff8d5 Message-ID: <20190226161303.6C9D011E2B1@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 78ff8d573777c099aea5bd2eb92d9866c0d85952 (commit) via 2621efac19e0538f0f92f69ecab60db184c70953 (commit) via 28a296b6c43f87e6b148c2207062fcc9a09961a1 (commit) via 3c7662fd625079553d3edd004fcf2b3348d38415 (commit) via 5ac1c809f7cc257807afc1fa779150aa1738fe4a (commit) via d3ffe90598da9c9439cc9a42012c0bef05ad25f7 (commit) via 917c035ada212cec47f92b51449b554526119372 (commit) via f6eebee1943ef306ee4912aeff5012388d64b7a3 (commit) via 11fe7c9063d22197c8de7fe30575f5acf5a0a10c (commit) via d9d285c5ad2987ed4aa3ff89093818239781708f (commit) via 0d489fab194efdf77970cb981dc9b636c36da2ea (commit) via 1699f5c231bf0a9fa411eda637564b7f4deec7f0 (commit) via f709089d845bd70bd889a691b98cd60427e161d4 (commit) via 5c41386357977d931f73e3bb824080af795b3cd5 (commit) via 82782379337fe922f96f4f19b8deae1fab6212fe (commit) via 6f5cf2d2c6cf2eaa9f21fff8a4f1309de2963a47 (commit) via 90c6156aa8272ec9811647d9b6c87d7ee4326e35 (commit) via e0231fe439fef3e5f64912f65393e756c4473cc8 (commit) via 13b1d2f9f86249ca32113ed7057f5d92222496af (commit) via 747463d1b36a8bea31764db88ed4d9677b76f27f (commit) via 16c687825daef4008d52b9b68bfa603ba493ac03 (commit) via 2d291667582dc8129ed1c3c4e7d7333f3b8627f4 (commit) via 8182c21d2d40506c3d4b0751e559173d0b47cdb5 (commit) via 84819c79e7efde0155dbb8431d0a205b325ce1cc (commit) via d9893fb594c904605b3b9ebf3548d2f48793f788 (commit) via 5e36209f716900cb8a61c1bffd480c639be041bb (commit) via 14ae19c327100c137ec8cb549dfc7447c4888940 (commit) from c24392eec1ae3d97bad99039cdb818ecd1e6263f (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=78ff8d573777c099aea5bd2eb92d9866c0d85952 commit 78ff8d573777c099aea5bd2eb92d9866c0d85952 Merge: 2621efa d3ffe90 Author: Brad King AuthorDate: Tue Feb 26 16:11:49 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 26 11:11:56 2019 -0500 Merge topic 'cpack-rpm++' d3ffe90598 CPackRPM: Fix packaging in folders with ++ in name Acked-by: Kitware Robot Merge-request: !3008 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2621efac19e0538f0f92f69ecab60db184c70953 commit 2621efac19e0538f0f92f69ecab60db184c70953 Merge: 28a296b 917c035 Author: Brad King AuthorDate: Tue Feb 26 16:10:00 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 26 11:10:08 2019 -0500 Merge topic 'vs-wince-no-deploy' 917c035ada VS: support suppressing deployment of selected targets Acked-by: Kitware Robot Merge-request: !2991 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=28a296b6c43f87e6b148c2207062fcc9a09961a1 commit 28a296b6c43f87e6b148c2207062fcc9a09961a1 Merge: 3c7662f f6eebee Author: Brad King AuthorDate: Tue Feb 26 16:08:35 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 26 11:08:43 2019 -0500 Merge topic 'update-kwsys' f6eebee194 Merge branch 'upstream-KWSys' into update-kwsys 11fe7c9063 KWSys 2019-02-25 (833b2470) Acked-by: Kitware Robot Merge-request: !3018 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3c7662fd625079553d3edd004fcf2b3348d38415 commit 3c7662fd625079553d3edd004fcf2b3348d38415 Merge: 5ac1c80 d9d285c Author: Brad King AuthorDate: Tue Feb 26 16:07:46 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 26 11:07:54 2019 -0500 Merge topic 'add-xlclang' d9d285c5ad jsoncpp: Fix include order for build within CMake 0d489fab19 libuv: fix atomic ops compilation with xlclang 1699f5c231 Utilities: Suppress warnings in third-party code when using XLClang f709089d84 XLClang: Extract compiler implicit include directories 5c41386357 XLClang: Add policy CMP0089 to present as XL for compatibility 8278237933 XL: Remove overlap with the new XLClang compiler ID 6f5cf2d2c6 XL: Revert "Recognize compilers identified by __ibmxl__" 90c6156aa8 XLClang: Add a new compiler ID for the clang-based XL compiler ... Acked-by: Kitware Robot Merge-request: !2921 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5ac1c809f7cc257807afc1fa779150aa1738fe4a commit 5ac1c809f7cc257807afc1fa779150aa1738fe4a Merge: c24392e 747463d Author: Brad King AuthorDate: Tue Feb 26 16:05:59 2019 +0000 Commit: Kitware Robot CommitDate: Tue Feb 26 11:06:10 2019 -0500 Merge topic 'autogen_headers_at_configure_time' 747463d1b3 Autogen: Move additional source header search to configuration stage 16c687825d Autogen: Refactor file lists computation 2d29166758 Autogen: Use cm::make_unique to allocate jobs 8182c21d2d Autogen: Use std::unordered_set instead of std::set for skip lists 84819c79e7 Autogen: Refactor cmQtAutoGenInitializer::AddGeneratedSource method d9893fb594 Autogen: Refactor Qt executable name computation 5e36209f71 Autogen: Rename cmQtAutoGen::GeneratorT enum to cmQtAutoGen::GenT 14ae19c327 Autogen: cmQtAutoGen: Store generator names in class static const strings Acked-by: Kitware Robot Merge-request: !3001 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d3ffe90598da9c9439cc9a42012c0bef05ad25f7 commit d3ffe90598da9c9439cc9a42012c0bef05ad25f7 Author: Harry Mallon AuthorDate: Fri Feb 22 11:58:42 2019 +0000 Commit: Brad King CommitDate: Mon Feb 25 09:46:19 2019 -0500 CPackRPM: Fix packaging in folders with ++ in name Construct a regex that can match a path with special characters instead of treating the path as a regex directly. Fixes: #18967 diff --git a/Modules/Internal/CPack/CPackRPM.cmake b/Modules/Internal/CPack/CPackRPM.cmake index 2de71ee..26b2517 100644 --- a/Modules/Internal/CPack/CPackRPM.cmake +++ b/Modules/Internal/CPack/CPackRPM.cmake @@ -63,6 +63,11 @@ function(get_unix_permissions_octal_notation PERMISSIONS_VAR RETURN_VAR) set(${RETURN_VAR} "${OWNER_PERMISSIONS}${GROUP_PERMISSIONS}${WORLD_PERMISSIONS}" PARENT_SCOPE) endfunction() +function(cpack_rpm_exact_regex regex_var string) + string(REGEX REPLACE "([][+.*()^])" "\\\\\\1" regex "${string}") + set("${regex_var}" "${regex}" PARENT_SCOPE) +endfunction() + function(cpack_rpm_prepare_relocation_paths) # set appropriate prefix, remove possible trailing slash and convert backslashes to slashes if(CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_PREFIX) @@ -482,7 +487,9 @@ function(cpack_rpm_prepare_install_files INSTALL_FILES_LIST WDIR PACKAGE_PREFIXE # recalculate path length after conversion to canonical form string(LENGTH "${SYMLINK_POINT_}" SYMLINK_POINT_LENGTH_) - if(SYMLINK_POINT_ MATCHES "${WDIR}/.*") + cpack_rpm_exact_regex(IN_SYMLINK_POINT_REGEX "${WDIR}") + string(APPEND IN_SYMLINK_POINT_REGEX "/.*") + if(SYMLINK_POINT_ MATCHES "${IN_SYMLINK_POINT_REGEX}") # only symlinks that are pointing inside the packaging structure should be checked for relocation string(SUBSTRING "${SYMLINK_POINT_}" ${WDR_LEN_} -1 SYMLINK_POINT_WD_) cpack_rpm_symlink_get_relocation_prefixes("${F}" "${PACKAGE_PREFIXES}" "SYMLINK_RELOCATIONS") https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=917c035ada212cec47f92b51449b554526119372 commit 917c035ada212cec47f92b51449b554526119372 Author: Wil Stark AuthorDate: Tue Feb 19 15:02:34 2019 -0800 Commit: Brad King CommitDate: Mon Feb 25 09:14:15 2019 -0500 VS: support suppressing deployment of selected targets Add a `VS_NO_SOLUTION_DEPLOY` target property to explicitly specify for each target whether to suppress VS solution deployment of the generated target project. Fixes: #18953 diff --git a/Help/manual/cmake-properties.7.rst b/Help/manual/cmake-properties.7.rst index 4366c0d..3d4536b 100644 --- a/Help/manual/cmake-properties.7.rst +++ b/Help/manual/cmake-properties.7.rst @@ -334,6 +334,7 @@ Properties on Targets /prop_tgt/VS_IOT_STARTUP_TASK /prop_tgt/VS_KEYWORD /prop_tgt/VS_MOBILE_EXTENSIONS_VERSION + /prop_tgt/VS_NO_SOLUTION_DEPLOY /prop_tgt/VS_SCC_AUXPATH /prop_tgt/VS_SCC_LOCALPATH /prop_tgt/VS_SCC_PROJECTNAME diff --git a/Help/prop_tgt/VS_NO_SOLUTION_DEPLOY.rst b/Help/prop_tgt/VS_NO_SOLUTION_DEPLOY.rst new file mode 100644 index 0000000..ffcbde5 --- /dev/null +++ b/Help/prop_tgt/VS_NO_SOLUTION_DEPLOY.rst @@ -0,0 +1,46 @@ +VS_NO_SOLUTION_DEPLOY +--------------------- + +Specify that the target should not be marked for deployment to a Windows CE +or Windows Phone device in the generated Visual Studio solution. + +Be default, all EXE and shared library (DLL) targets are marked to deploy to +the target device in the generated Visual Studio solution. + +Generator expressions are supported. + +There are reasons one might want to exclude a target / generated project from +deployment: + +- The library or executable may not be necessary in the primary deploy/debug + scenario, and excluding from deployment saves time in the + develop/download/debug cycle. +- There may be insufficient space on the target device to accommodate all of + the build products. +- Visual Studio 2013 requires a target device IP address be entered for each + target marked for deployment. For large numbers of targets, this can be + tedious. + NOTE: Visual Studio *will* deploy all project dependencies of a project + tagged for deployment to the IP address configured for that project even + if those dependencies are not tagged for deployment. + + +Example 1 +^^^^^^^^^ + +This shows setting the variable for the target foo. + +.. code-block:: cmake + + add_library(foo SHARED foo.cpp) + set_property(TARGET foo PROPERTY VS_NO_SOLUTION_DEPLOY ON) + +Example 2 +^^^^^^^^^ + +This shows setting the variable for the Release configuration only. + +.. code-block:: cmake + + add_library(foo SHARED foo.cpp) + set_property(TARGET foo PROPERTY VS_NO_SOLUTION_DEPLOY "$") diff --git a/Help/release/dev/vs-wince-no-deploy.rst b/Help/release/dev/vs-wince-no-deploy.rst new file mode 100644 index 0000000..6c18d89 --- /dev/null +++ b/Help/release/dev/vs-wince-no-deploy.rst @@ -0,0 +1,6 @@ +vs_wince_no_deploy +------------------ + +* A :prop_tgt:`VS_NO_SOLUTION_DEPLOY` target property was added to + tell :ref:`Visual Studio Generators` whether to deploy an artifact + to the WinCE or Windows Phone target device. diff --git a/Source/cmGlobalVisualStudio11Generator.cxx b/Source/cmGlobalVisualStudio11Generator.cxx index 4eb78ba..4b74ef1 100644 --- a/Source/cmGlobalVisualStudio11Generator.cxx +++ b/Source/cmGlobalVisualStudio11Generator.cxx @@ -252,15 +252,10 @@ cmGlobalVisualStudio11Generator::GetInstalledWindowsCESDKs() return ret; } -bool cmGlobalVisualStudio11Generator::NeedsDeploy( - cmStateEnums::TargetType type) const +bool cmGlobalVisualStudio11Generator::TargetSystemSupportsDeployment() const { - if ((type == cmStateEnums::EXECUTABLE || - type == cmStateEnums::SHARED_LIBRARY) && - (this->SystemIsWindowsPhone || this->SystemIsWindowsStore)) { - return true; - } - return cmGlobalVisualStudio10Generator::NeedsDeploy(type); + return this->SystemIsWindowsPhone || this->SystemIsWindowsStore || + cmGlobalVisualStudio10Generator::TargetSystemSupportsDeployment(); } bool cmGlobalVisualStudio11Generator::IsWindowsDesktopToolsetInstalled() const diff --git a/Source/cmGlobalVisualStudio11Generator.h b/Source/cmGlobalVisualStudio11Generator.h index 8b4c8b7..f8cce18 100644 --- a/Source/cmGlobalVisualStudio11Generator.h +++ b/Source/cmGlobalVisualStudio11Generator.h @@ -45,8 +45,8 @@ protected: bool UseFolderProperty() const override; static std::set GetInstalledWindowsCESDKs(); - /** Return true if the configuration needs to be deployed */ - bool NeedsDeploy(cmStateEnums::TargetType type) const override; + /** Return true if target system supports debugging deployment. */ + bool TargetSystemSupportsDeployment() const override; private: class Factory; diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx index f6db018..f3e73d3 100644 --- a/Source/cmGlobalVisualStudio8Generator.cxx +++ b/Source/cmGlobalVisualStudio8Generator.cxx @@ -273,7 +273,7 @@ void cmGlobalVisualStudio8Generator::WriteProjectConfigurations( : this->GetPlatformName()) << "\n"; } - if (this->NeedsDeploy(target.GetType())) { + if (this->NeedsDeploy(target, dstConfig)) { fout << "\t\t{" << guid << "}." << i << "|" << this->GetPlatformName() << ".Deploy.0 = " << dstConfig << "|" << (!platformMapping.empty() ? platformMapping @@ -284,11 +284,32 @@ void cmGlobalVisualStudio8Generator::WriteProjectConfigurations( } bool cmGlobalVisualStudio8Generator::NeedsDeploy( - cmStateEnums::TargetType type) const + cmGeneratorTarget const& target, const char* config) const { - bool needsDeploy = - (type == cmStateEnums::EXECUTABLE || type == cmStateEnums::SHARED_LIBRARY); - return this->TargetsWindowsCE() && needsDeploy; + cmStateEnums::TargetType type = target.GetType(); + bool noDeploy = DeployInhibited(target, config); + return !noDeploy && + (type == cmStateEnums::EXECUTABLE || + type == cmStateEnums::SHARED_LIBRARY) && + this->TargetSystemSupportsDeployment(); +} + +bool cmGlobalVisualStudio8Generator::DeployInhibited( + cmGeneratorTarget const& target, const char* config) const +{ + bool rVal = false; + if (const char* propStr = target.GetProperty("VS_NO_SOLUTION_DEPLOY")) { + cmGeneratorExpression ge; + std::unique_ptr cge = ge.Parse(propStr); + std::string prop = cge->Evaluate(target.LocalGenerator, config); + rVal = cmSystemTools::IsOn(prop); + } + return rVal; +} + +bool cmGlobalVisualStudio8Generator::TargetSystemSupportsDeployment() const +{ + return this->TargetsWindowsCE(); } bool cmGlobalVisualStudio8Generator::ComputeTargetDepends() diff --git a/Source/cmGlobalVisualStudio8Generator.h b/Source/cmGlobalVisualStudio8Generator.h index 8719bf3..75f4778 100644 --- a/Source/cmGlobalVisualStudio8Generator.h +++ b/Source/cmGlobalVisualStudio8Generator.h @@ -54,7 +54,15 @@ protected: bool AddCheckTarget(); /** Return true if the configuration needs to be deployed */ - virtual bool NeedsDeploy(cmStateEnums::TargetType type) const; + virtual bool NeedsDeploy(cmGeneratorTarget const& target, + const char* config) const; + + /** Returns true if deployment has been disabled in cmake file. */ + bool DeployInhibited(cmGeneratorTarget const& target, + const char* config) const; + + /** Returns true if the target system support debugging deployment. */ + virtual bool TargetSystemSupportsDeployment() const; static cmIDEFlagTable const* GetExtraFlagTableVS8(); void WriteSolutionConfigurations( diff --git a/Tests/RunCMake/VS10ProjectWinCE/VsCEDebuggerDeploy-check.cmake b/Tests/RunCMake/VS10ProjectWinCE/VsCEDebuggerDeploy-check.cmake index 6ab3833..dab1c33 100644 --- a/Tests/RunCMake/VS10ProjectWinCE/VsCEDebuggerDeploy-check.cmake +++ b/Tests/RunCMake/VS10ProjectWinCE/VsCEDebuggerDeploy-check.cmake @@ -40,3 +40,62 @@ if(NOT FoundToolsVersion4) set(RunCMake_TEST_FAILED "Failed to find correct ToolsVersion=\"4.0\" .") return() endif() + +# +# Test solution file deployment items. +# + +set(vcSlnFile "${RunCMake_TEST_BINARY_DIR}/VsCEDebuggerDeploy.sln") +if(NOT EXISTS "${vcSlnFile}") + set(RunCMake_TEST_FAILED "Solution file ${vcSlnFile} does not exist.") + return() +endif() + + +if( NOT ${CMAKE_SYSTEM_NAME} STREQUAL "WindowsCE" ) + set(RunCMake_TEST_FAILED "Test only valid for WindowsCE") + return() +endif() + + +set(FooProjGUID "") +set(FoundFooProj FALSE) +set(InFooProj FALSE) +set(FoundReleaseDeploy FALSE) +set(DeployConfigs Debug MinSizeRel RelWithDebInfo ) + +file(STRINGS "${vcSlnFile}" lines) +foreach(line IN LISTS lines) +#message(STATUS "${line}") + if( (NOT InFooProj ) AND (line MATCHES "^[ \\t]*Project\\(\"{[A-F0-9-]+}\"\\) = \"foo\", \"foo.vcxproj\", \"({[A-F0-9-]+})\"[ \\t]*$")) + # First, identify the GUID for the foo project, and record it. + set(FoundFooProj TRUE) + set(InFooProj TRUE) + set(FooProjGUID ${CMAKE_MATCH_1}) + elseif(InFooProj AND line MATCHES "EndProject") + set(InFooProj FALSE) + elseif((NOT InFooProj) AND line MATCHES "${FooProjGUID}\\.Release.*\\.Deploy\\.0") + # If foo's Release configuration is set to deploy, this is the error. + set(FoundReleaseDeploy TRUE) + endif() + if( line MATCHES "{[A-F0-9-]+}\\.([^\\|]+).*\\.Deploy\\.0" ) + # Check that the other configurations ARE set to deploy. + list( REMOVE_ITEM DeployConfigs ${CMAKE_MATCH_1}) + endif() +endforeach() + +if(FoundReleaseDeploy) + set(RunCMake_TEST_FAILED "Release deployment not inhibited by VS_NO_SOLUTION_DEPLOY_Release.") + return() +endif() + +if(NOT FoundFooProj) + set(RunCMake_TEST_FAILED "Failed to find foo project in the solution.") + return() +endif() + +list(LENGTH DeployConfigs length) +if( length GREATER 0 ) + set(RunCMake_TEST_FAILED "Failed to find Deploy lines for non-Release configurations. (${length})") + return() +endif() diff --git a/Tests/RunCMake/VS10ProjectWinCE/VsCEDebuggerDeploy.cmake b/Tests/RunCMake/VS10ProjectWinCE/VsCEDebuggerDeploy.cmake index 948f14c..611db0a 100644 --- a/Tests/RunCMake/VS10ProjectWinCE/VsCEDebuggerDeploy.cmake +++ b/Tests/RunCMake/VS10ProjectWinCE/VsCEDebuggerDeploy.cmake @@ -4,10 +4,11 @@ set(DEPLOY_DIR "temp\\foodir" ) -add_library(foo foo.cpp) +add_library(foo SHARED foo.cpp) set_target_properties(foo PROPERTIES DEPLOYMENT_ADDITIONAL_FILES "foo.dll|\\foo\\src\\dir\\on\\host|$(RemoteDirectory)|0;bar.dll|\\bar\\src\\dir|$(RemoteDirectory)bardir|0" DEPLOYMENT_REMOTE_DIRECTORY ${DEPLOY_DIR} + VS_NO_SOLUTION_DEPLOY $ ) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f6eebee1943ef306ee4912aeff5012388d64b7a3 commit f6eebee1943ef306ee4912aeff5012388d64b7a3 Merge: f3b4a12 11fe7c9 Author: Brad King AuthorDate: Mon Feb 25 09:04:03 2019 -0500 Commit: Brad King CommitDate: Mon Feb 25 09:04:03 2019 -0500 Merge branch 'upstream-KWSys' into update-kwsys * upstream-KWSys: KWSys 2019-02-25 (833b2470) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=11fe7c9063d22197c8de7fe30575f5acf5a0a10c commit 11fe7c9063d22197c8de7fe30575f5acf5a0a10c Author: KWSys Upstream AuthorDate: Mon Feb 25 09:03:18 2019 -0500 Commit: Brad King CommitDate: Mon Feb 25 09:04:02 2019 -0500 KWSys 2019-02-25 (833b2470) Code extracted from: https://gitlab.kitware.com/utils/kwsys.git at commit 833b24703f5b45e09193687d56c2cdc5aedf834d (master). Upstream Shortlog ----------------- Brad King (1): 363bf5ab Configure: Drop Large File Support macro definitions diff --git a/CMakeLists.txt b/CMakeLists.txt index e7da994..8577506 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -179,13 +179,6 @@ IF(KWSYS_USE_ConsoleBuf) SET(KWSYS_USE_Encoding 1) ENDIF() -# Setup the large file support default. -IF(KWSYS_LFS_DISABLE) - SET(KWSYS_LFS_REQUESTED 0) -ELSE() - SET(KWSYS_LFS_REQUESTED 1) -ENDIF() - # Specify default 8 bit encoding for Windows IF(NOT KWSYS_ENCODING_DEFAULT_CODEPAGE) SET(KWSYS_ENCODING_DEFAULT_CODEPAGE CP_ACP) @@ -353,30 +346,6 @@ IF(KWSYS_STANDALONE) ENDIF() #----------------------------------------------------------------------------- -# Configure Large File Support. -KWSYS_PLATFORM_CXX_TEST(KWSYS_CXX_HAS_CSTDIO - "Checking whether header cstdio is available" DIRECT) -SET(KWSYS_LFS_AVAILABLE 0) -IF(KWSYS_LFS_REQUESTED) - # Large File Support is requested. - SET(KWSYS_LFS_REQUESTED 1) - - # Check for large file support. - SET(KWSYS_PLATFORM_CXX_TEST_DEFINES - -DKWSYS_CXX_HAS_CSTDIO=${KWSYS_CXX_HAS_CSTDIO}) - KWSYS_PLATFORM_CXX_TEST_RUN(KWSYS_LFS_WORKS - "Checking for Large File Support" DIRECT) - SET(KWSYS_PLATFORM_CXX_TEST_DEFINES) - - IF(KWSYS_LFS_WORKS) - SET(KWSYS_LFS_AVAILABLE 1) - ENDIF() -ELSE() - # Large File Support is not requested. - SET(KWSYS_LFS_REQUESTED 0) -ENDIF() - -#----------------------------------------------------------------------------- # Configure the standard library header wrappers based on compiler's # capabilities and parent project's request. Enforce 0/1 as only # possible values for configuration into Configure.hxx. @@ -575,9 +544,6 @@ IF(KWSYS_USE_SystemInformation) COMPILE_DEFINITIONS KWSYS_SYS_HAS_MACHINE_CPU_H=1) ENDIF() ENDIF() - IF(KWSYS_LFS_AVAILABLE AND NOT KWSYS_LFS_DISABLE) - SET(KWSYS_PLATFORM_CXX_TEST_DEFINES -DKWSYS_HAS_LFS=1) - ENDIF() KWSYS_PLATFORM_CXX_TEST(KWSYS_CXX_HAS_RLIMIT64 "Checking whether CXX compiler has rlimit64" DIRECT) SET(KWSYS_PLATFORM_CXX_TEST_DEFINES) diff --git a/Configure.h.in b/Configure.h.in index bec1abc..5323c57 100644 --- a/Configure.h.in +++ b/Configure.h.in @@ -28,43 +28,6 @@ /* Whether kwsys namespace is "kwsys". */ #define @KWSYS_NAMESPACE at _NAME_IS_KWSYS @KWSYS_NAME_IS_KWSYS@ -/* Whether Large File Support is requested. */ -#define @KWSYS_NAMESPACE at _LFS_REQUESTED @KWSYS_LFS_REQUESTED@ - -/* Whether Large File Support is available. */ -#if @KWSYS_NAMESPACE at _LFS_REQUESTED -# define @KWSYS_NAMESPACE at _LFS_AVAILABLE @KWSYS_LFS_AVAILABLE@ -#endif - -/* Setup Large File Support if requested. */ -#if @KWSYS_NAMESPACE at _LFS_REQUESTED -/* Since LFS is requested this header must be included before system - headers whether or not LFS is available. */ -# if 0 && (defined(_SYS_TYPES_H) || defined(_SYS_TYPES_INCLUDED)) -# error "@KWSYS_NAMESPACE@/Configure.h must be included before sys/types.h" -# endif -/* Enable the large file API if it is available. */ -# if @KWSYS_NAMESPACE at _LFS_AVAILABLE && \ - !defined(@KWSYS_NAMESPACE at _LFS_NO_DEFINES) -# if !defined(_LARGEFILE_SOURCE) && \ - !defined(@KWSYS_NAMESPACE at _LFS_NO_DEFINE_LARGEFILE_SOURCE) -# define _LARGEFILE_SOURCE -# endif -# if !defined(_LARGEFILE64_SOURCE) && \ - !defined(@KWSYS_NAMESPACE at _LFS_NO_DEFINE_LARGEFILE64_SOURCE) -# define _LARGEFILE64_SOURCE -# endif -# if !defined(_LARGE_FILES) && \ - !defined(@KWSYS_NAMESPACE at _LFS_NO_DEFINE_LARGE_FILES) -# define _LARGE_FILES -# endif -# if !defined(_FILE_OFFSET_BITS) && \ - !defined(@KWSYS_NAMESPACE at _LFS_NO_DEFINE_FILE_OFFSET_BITS) -# define _FILE_OFFSET_BITS 64 -# endif -# endif -#endif - /* Setup the export macro. */ #if @KWSYS_BUILD_SHARED@ # if defined(_WIN32) || defined(__CYGWIN__) diff --git a/kwsysPlatformTestsCXX.cxx b/kwsysPlatformTestsCXX.cxx index b77d729..cfd5666 100644 --- a/kwsysPlatformTestsCXX.cxx +++ b/kwsysPlatformTestsCXX.cxx @@ -136,42 +136,6 @@ int main() } #endif -#ifdef TEST_KWSYS_LFS_WORKS -/* Return 0 when LFS is available and 1 otherwise. */ -# define _LARGEFILE_SOURCE -# define _LARGEFILE64_SOURCE -# define _LARGE_FILES -# define _FILE_OFFSET_BITS 64 -# include - -# include -# include -# if KWSYS_CXX_HAS_CSTDIO -# include -# endif -# include - -int main(int, char** argv) -{ -/* check that off_t can hold 2^63 - 1 and perform basic operations... */ -# define OFF_T_64 (((off_t)1 << 62) - 1 + ((off_t)1 << 62)) - if (OFF_T_64 % 2147483647 != 1) - return 1; - - // stat breaks on SCO OpenServer - struct stat buf; - stat(argv[0], &buf); - if (!S_ISREG(buf.st_mode)) - return 2; - - FILE* file = fopen(argv[0], "r"); - off_t offset = ftello(file); - fseek(file, offset, SEEK_CUR); - fclose(file); - return 0; -} -#endif - #ifdef TEST_KWSYS_CXX_HAS_SETENV # include int main() @@ -212,12 +176,6 @@ int main() #endif #ifdef TEST_KWSYS_CXX_HAS_RLIMIT64 -# if defined(KWSYS_HAS_LFS) -# define _LARGEFILE_SOURCE -# define _LARGEFILE64_SOURCE -# define _LARGE_FILES -# define _FILE_OFFSET_BITS 64 -# endif # include int main() { https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d9d285c5ad2987ed4aa3ff89093818239781708f commit d9d285c5ad2987ed4aa3ff89093818239781708f Author: Brad King AuthorDate: Fri Feb 22 13:02:48 2019 -0500 Commit: Brad King CommitDate: Mon Feb 25 08:26:20 2019 -0500 jsoncpp: Fix include order for build within CMake Include the KWSys `Configure.h` header first to get its large file support definitions before including system headers. diff --git a/Utilities/cmjsoncpp/include/json/config.h b/Utilities/cmjsoncpp/include/json/config.h index eb52e71..34f7314 100644 --- a/Utilities/cmjsoncpp/include/json/config.h +++ b/Utilities/cmjsoncpp/include/json/config.h @@ -5,13 +5,14 @@ #ifndef JSON_CONFIG_H_INCLUDED #define JSON_CONFIG_H_INCLUDED -#include -#include //typedef String -#include //typedef int64_t, uint64_t // Include KWSys Large File Support configuration. #include +#include +#include //typedef String +#include //typedef int64_t, uint64_t + #if defined(_MSC_VER) # pragma warning(push,1) #endif https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0d489fab194efdf77970cb981dc9b636c36da2ea commit 0d489fab194efdf77970cb981dc9b636c36da2ea Author: Brad King AuthorDate: Fri Feb 22 12:49:33 2019 -0500 Commit: Brad King CommitDate: Mon Feb 25 08:26:20 2019 -0500 libuv: fix atomic ops compilation with xlclang diff --git a/Utilities/cmlibuv/src/unix/atomic-ops.h b/Utilities/cmlibuv/src/unix/atomic-ops.h index 7cac1f9..be741dc 100644 --- a/Utilities/cmlibuv/src/unix/atomic-ops.h +++ b/Utilities/cmlibuv/src/unix/atomic-ops.h @@ -37,7 +37,7 @@ UV_UNUSED(static int cmpxchgi(int* ptr, int oldval, int newval)) { : "r" (newval), "0" (oldval) : "memory"); return out; -#elif defined(_AIX) && defined(__xlC__) +#elif defined(_AIX) && (defined(__xlC__) || defined(__ibmxl__)) const int out = (*(volatile int*) ptr); __compare_and_swap(ptr, &oldval, newval); return out; @@ -63,7 +63,7 @@ UV_UNUSED(static long cmpxchgl(long* ptr, long oldval, long newval)) { : "r" (newval), "0" (oldval) : "memory"); return out; -#elif defined(_AIX) && defined(__xlC__) +#elif defined(_AIX) && (defined(__xlC__) || defined(__ibmxl__)) const long out = (*(volatile int*) ptr); # if defined(__64BIT__) __compare_and_swaplp(ptr, &oldval, newval); https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1699f5c231bf0a9fa411eda637564b7f4deec7f0 commit 1699f5c231bf0a9fa411eda637564b7f4deec7f0 Author: Brad King AuthorDate: Fri Feb 22 12:48:03 2019 -0500 Commit: Brad King CommitDate: Mon Feb 25 08:26:17 2019 -0500 Utilities: Suppress warnings in third-party code when using XLClang diff --git a/Utilities/cmcurl/CMakeLists.txt b/Utilities/cmcurl/CMakeLists.txt index 74929d9..8dc3b2c 100644 --- a/Utilities/cmcurl/CMakeLists.txt +++ b/Utilities/cmcurl/CMakeLists.txt @@ -77,7 +77,7 @@ endif(APPLE) # Disable warnings to avoid changing 3rd party code. if(CMAKE_C_COMPILER_ID MATCHES - "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|HP|Intel)$") + "^(GNU|Clang|AppleClang|XLClang|XL|VisualAge|SunPro|HP|Intel)$") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") elseif(CMAKE_C_COMPILER_ID STREQUAL "PathScale") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -woffall") diff --git a/Utilities/cmexpat/CMakeLists.txt b/Utilities/cmexpat/CMakeLists.txt index 7165689..13eb56d 100644 --- a/Utilities/cmexpat/CMakeLists.txt +++ b/Utilities/cmexpat/CMakeLists.txt @@ -1,6 +1,6 @@ # Disable warnings to avoid changing 3rd party code. IF(CMAKE_C_COMPILER_ID MATCHES - "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|HP|Intel)$") + "^(GNU|Clang|AppleClang|XLClang|XL|VisualAge|SunPro|HP|Intel)$") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") ELSEIF(CMAKE_C_COMPILER_ID STREQUAL "PathScale") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -woffall") diff --git a/Utilities/cmjsoncpp/CMakeLists.txt b/Utilities/cmjsoncpp/CMakeLists.txt index a66f9673..764be8d 100644 --- a/Utilities/cmjsoncpp/CMakeLists.txt +++ b/Utilities/cmjsoncpp/CMakeLists.txt @@ -2,7 +2,7 @@ project(JsonCpp CXX) # Disable warnings to avoid changing 3rd party code. if(CMAKE_CXX_COMPILER_ID MATCHES - "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|HP|Intel)$") + "^(GNU|Clang|AppleClang|XLClang|XL|VisualAge|SunPro|HP|Intel)$") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w") elseif(CMAKE_CXX_COMPILER_ID STREQUAL "PathScale") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -woffall") diff --git a/Utilities/cmlibarchive/CMakeLists.txt b/Utilities/cmlibarchive/CMakeLists.txt index 6426ebe..53b3a83 100644 --- a/Utilities/cmlibarchive/CMakeLists.txt +++ b/Utilities/cmlibarchive/CMakeLists.txt @@ -60,7 +60,7 @@ SET(CMAKE_REQUIRED_FLAGS) # Disable warnings to avoid changing 3rd party code. IF(CMAKE_C_COMPILER_ID MATCHES - "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|HP|Intel)$") + "^(GNU|Clang|AppleClang|XLClang|XL|VisualAge|SunPro|HP|Intel)$") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") ELSEIF(CMAKE_C_COMPILER_ID STREQUAL "PathScale") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -woffall") diff --git a/Utilities/cmliblzma/CMakeLists.txt b/Utilities/cmliblzma/CMakeLists.txt index 252f0f9..b443fd6 100644 --- a/Utilities/cmliblzma/CMakeLists.txt +++ b/Utilities/cmliblzma/CMakeLists.txt @@ -183,7 +183,7 @@ INCLUDE_DIRECTORIES( # Disable warnings to avoid changing 3rd party code. IF(CMAKE_C_COMPILER_ID MATCHES - "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|HP|Intel)$") + "^(GNU|Clang|AppleClang|XLClang|XL|VisualAge|SunPro|HP|Intel)$") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") ELSEIF(CMAKE_C_COMPILER_ID STREQUAL "PathScale") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -woffall") diff --git a/Utilities/cmlibrhash/CMakeLists.txt b/Utilities/cmlibrhash/CMakeLists.txt index 1cdd660..6067b7d 100644 --- a/Utilities/cmlibrhash/CMakeLists.txt +++ b/Utilities/cmlibrhash/CMakeLists.txt @@ -2,7 +2,7 @@ project(librhash C) # Disable warnings to avoid changing 3rd party code. if(CMAKE_C_COMPILER_ID MATCHES - "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|HP|Intel)$") + "^(GNU|Clang|AppleClang|XLClang|XL|VisualAge|SunPro|HP|Intel)$") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") elseif(CMAKE_C_COMPILER_ID STREQUAL "PathScale") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -woffall") diff --git a/Utilities/cmlibuv/CMakeLists.txt b/Utilities/cmlibuv/CMakeLists.txt index 2e95bef..2e781f1 100644 --- a/Utilities/cmlibuv/CMakeLists.txt +++ b/Utilities/cmlibuv/CMakeLists.txt @@ -2,7 +2,7 @@ project(libuv C) # Disable warnings to avoid changing 3rd party code. if(CMAKE_C_COMPILER_ID MATCHES - "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|HP|Intel)$") + "^(GNU|Clang|AppleClang|XLClang|XL|VisualAge|SunPro|HP|Intel)$") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") elseif(CMAKE_C_COMPILER_ID STREQUAL "PathScale") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -woffall") diff --git a/Utilities/cmzlib/CMakeLists.txt b/Utilities/cmzlib/CMakeLists.txt index 1c9ca42..888c3ff 100644 --- a/Utilities/cmzlib/CMakeLists.txt +++ b/Utilities/cmzlib/CMakeLists.txt @@ -2,7 +2,7 @@ PROJECT(CMZLIB) # Disable warnings to avoid changing 3rd party code. if(CMAKE_C_COMPILER_ID MATCHES - "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|HP|Intel)$") + "^(GNU|Clang|AppleClang|XLClang|XL|VisualAge|SunPro|HP|Intel)$") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") elseif(CMAKE_C_COMPILER_ID STREQUAL "PathScale") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -woffall") https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f709089d845bd70bd889a691b98cd60427e161d4 commit f709089d845bd70bd889a691b98cd60427e161d4 Author: Brad King AuthorDate: Fri Feb 22 10:31:11 2019 -0500 Commit: Brad King CommitDate: Mon Feb 25 08:24:28 2019 -0500 XLClang: Extract compiler implicit include directories diff --git a/Modules/CMakeParseImplicitIncludeInfo.cmake b/Modules/CMakeParseImplicitIncludeInfo.cmake index 21e24b7..6d7732d 100644 --- a/Modules/CMakeParseImplicitIncludeInfo.cmake +++ b/Modules/CMakeParseImplicitIncludeInfo.cmake @@ -92,13 +92,15 @@ function(cmake_parse_implicit_include_line line lang id_var log_var state_var) endif() # XL compiler - if("${CMAKE_${lang}_COMPILER_ID}" STREQUAL "XL" AND "${line}" MATCHES "^/" + if(("${CMAKE_${lang}_COMPILER_ID}" STREQUAL "XL" + OR "${CMAKE_${lang}_COMPILER_ID}" STREQUAL "XLClang") + AND "${line}" MATCHES "^/" AND ( ("${lang}" STREQUAL "Fortran" AND "${line}" MATCHES "/xl[fF]entry " AND "${line}" MATCHES "OSVAR\\([^ ]+\\)") OR ( ("${lang}" STREQUAL "C" OR "${lang}" STREQUAL "CXX") AND - "${line}" MATCHES "/xl[cC]entry " AND + "${line}" MATCHES "/xl[cC]2?entry " AND "${line}" MATCHES " -qosvar=") ) ) # -qnostdinc cancels other stdinc flags, even if present diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/ParseImplicitIncludeInfo.cmake b/Tests/RunCMake/ParseImplicitIncludeInfo/ParseImplicitIncludeInfo.cmake index ce8d45b..869fe3d 100644 --- a/Tests/RunCMake/ParseImplicitIncludeInfo/ParseImplicitIncludeInfo.cmake +++ b/Tests/RunCMake/ParseImplicitIncludeInfo/ParseImplicitIncludeInfo.cmake @@ -10,6 +10,7 @@ project(Minimal NONE) # set(targets aix-C-XL-13.1.3 aix-CXX-XL-13.1.3 + aix-C-XLClang-16.1.0.1 aix-CXX-XLClang-16.1.0.1 craype-C-Cray-8.7 craype-CXX-Cray-8.7 craype-Fortran-Cray-8.7 craype-C-GNU-7.3.0 craype-CXX-GNU-7.3.0 craype-Fortran-GNU-7.3.0 craype-C-Intel-18.0.2.20180210 craype-CXX-Intel-18.0.2.20180210 diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/data/aix-C-XLClang-16.1.0.1.input b/Tests/RunCMake/ParseImplicitIncludeInfo/data/aix-C-XLClang-16.1.0.1.input new file mode 100644 index 0000000..2f018e6 --- /dev/null +++ b/Tests/RunCMake/ParseImplicitIncludeInfo/data/aix-C-XLClang-16.1.0.1.input @@ -0,0 +1,40 @@ +CMAKE_LANG=C +CMAKE_C_COMPILER_ABI= +CMAKE_C_COMPILER_AR= +CMAKE_C_COMPILER_ARCHITECTURE_ID= +CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN= +CMAKE_C_COMPILER_ID=XLClang +CMAKE_C_COMPILER_LAUNCHER= +CMAKE_C_COMPILER_LOADED=1 +CMAKE_C_COMPILER_RANLIB= +CMAKE_C_COMPILER_TARGET= +CMAKE_C_COMPILER_VERSION=16.1.0.1 +CMAKE_C_COMPILER_VERSION_INTERAL= +Change Dir: /tmp/ii/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/gmake cmTC_fcf21/fast +/usr/bin/gmake -f CMakeFiles/cmTC_fcf21.dir/build.make CMakeFiles/cmTC_fcf21.dir/build +gmake[1]: Entering directory '/tmp/ii/CMakeFiles/CMakeTmp' +Building C object CMakeFiles/cmTC_fcf21.dir/CMakeCCompilerABI.c.o +/opt/IBM/xlC/16.1.0/bin/xlclang -V -o CMakeFiles/cmTC_fcf21.dir/CMakeCCompilerABI.c.o -c /tmp/CMake/Modules/CMakeCCompilerABI.c +export XL_CONFIG=/opt/IBM/xlc/16.1.0/etc/xlc.cfg.72:xlclang +export XL_ASMOBJFILES=/tmp/xlcASuz87id +export "XL_DIS=/opt/IBM/xlc/16.1.0/exe/dis -o "CMakeFiles/cmTC_fcf21.dir/CMakeCCompilerABI.c.o" "CMakeCCompilerABI.o"" +/opt/IBM/xlC/16.1.0/exe/xlC2entry -qosvar=aix.7.2 -qalias=ansi -qthreaded -D_THREAD_SAFE -Wno-parentheses -Wno-unused-value -D_AIX -D_AIX32 -D_AIX41 -D_AIX43 -D_AIX50 -D_AIX51 -D_AIX52 -D_AIX53 -D_AIX61 -D_AIX71 -D_AIX72 -D_IBMR2 -D_POWER -xc -qasm_as=/bin/as -qc_stdinc=/opt/IBM/xlC/16.1.0/include2:/opt/IBM/xlC/16.1.0/include2/aix:/opt/IBM/xlmass/9.1.0/include:/usr/include -qvac_include_path=/opt/IBM/xlc/16.1.0/include -oCMakeFiles/cmTC_fcf21.dir/CMakeCCompilerABI.c.o /tmp/CMake/Modules/CMakeCCompilerABI.c /tmp/xlcW0tZ87ia /tmp/xlcW1ub87ib /dev/null /tmp/xlcLu487ieF.lst /dev/null /tmp/xlcW2uj87ic +export XL_BACKEND=/opt/IBM/xlc/16.1.0/exe/xlCcode +export XL_LINKER=/bin/ld +/opt/IBM/xlc/16.1.0/exe/xlCcode -qalias=ansi -qthreaded /tmp/xlcW0tZ87ia /tmp/xlcW1ub87ib CMakeFiles/cmTC_fcf21.dir/CMakeCCompilerABI.c.o /tmp/xlcLu487ieB.lst /tmp/xlcW2uj87ic +rm /tmp/xlcASuz87id +rm /tmp/xlcLu487ie +rm /tmp/xlcW0tZ87ia +rm /tmp/xlcW1ub87ib +rm /tmp/xlcW2uj87ic +Linking C executable cmTC_fcf21 +/tmp/CMake/bin/cmake -E cmake_link_script CMakeFiles/cmTC_fcf21.dir/link.txt --verbose=1 +/opt/IBM/xlC/16.1.0/bin/xlclang -Wl,-bnoipath -Wl,-brtl -V -Wl,-bexpall CMakeFiles/cmTC_fcf21.dir/CMakeCCompilerABI.c.o -o cmTC_fcf21 -Wl,-blibpath:/usr/lib:/lib +export XL_CONFIG=/opt/IBM/xlc/16.1.0/etc/xlc.cfg.72:xlclang +/bin/ld -b32 /lib/crt0.o -bpT:0x10000000 -bpD:0x20000000 -bnoipath -brtl -bexpall CMakeFiles/cmTC_fcf21.dir/CMakeCCompilerABI.c.o -o cmTC_fcf21 -blibpath:/usr/lib:/lib -L/opt/IBM/xlmass/9.1.0/lib/aix61 -L/opt/IBM/xlc/16.1.0/lib -lxlopt -lxlipa -lxl -lc -lpthreads +rm /tmp/xlcW0vJG7ia +rm /tmp/xlcW1vNG7ib +rm /tmp/xlcW2vRG7ic +gmake[1]: Leaving directory '/tmp/ii/CMakeFiles/CMakeTmp' diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/data/aix-C-XLClang-16.1.0.1.output b/Tests/RunCMake/ParseImplicitIncludeInfo/data/aix-C-XLClang-16.1.0.1.output new file mode 100644 index 0000000..85399b7 --- /dev/null +++ b/Tests/RunCMake/ParseImplicitIncludeInfo/data/aix-C-XLClang-16.1.0.1.output @@ -0,0 +1 @@ +/opt/IBM/xlC/16.1.0/include2;/opt/IBM/xlC/16.1.0/include2/aix;/opt/IBM/xlmass/9.1.0/include;/usr/include diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/data/aix-CXX-XLClang-16.1.0.1.input b/Tests/RunCMake/ParseImplicitIncludeInfo/data/aix-CXX-XLClang-16.1.0.1.input new file mode 100644 index 0000000..da16db3 --- /dev/null +++ b/Tests/RunCMake/ParseImplicitIncludeInfo/data/aix-CXX-XLClang-16.1.0.1.input @@ -0,0 +1,44 @@ +CMAKE_LANG=CXX +CMAKE_CXX_COMPILER_ABI= +CMAKE_CXX_COMPILER_AR= +CMAKE_CXX_COMPILER_ARCHITECTURE_ID= +CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN= +CMAKE_CXX_COMPILER_ID=XLClang +CMAKE_CXX_COMPILER_LAUNCHER= +CMAKE_CXX_COMPILER_LOADED=1 +CMAKE_CXX_COMPILER_RANLIB= +CMAKE_CXX_COMPILER_TARGET= +CMAKE_CXX_COMPILER_VERSION=16.1.0.1 +CMAKE_CXX_COMPILER_VERSION_INTERAL= +Change Dir: /tmp/ii/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/gmake cmTC_b8490/fast +/usr/bin/gmake -f CMakeFiles/cmTC_b8490.dir/build.make CMakeFiles/cmTC_b8490.dir/build +gmake[1]: Entering directory '/tmp/ii/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_b8490.dir/CMakeCXXCompilerABI.cpp.o +/opt/IBM/xlC/16.1.0/bin/xlclang++ -x c++ -V -o CMakeFiles/cmTC_b8490.dir/CMakeCXXCompilerABI.cpp.o -c /tmp/CMake/Modules/CMakeCXXCompilerABI.cpp +export XL_CONFIG=/opt/IBM/xlc/16.1.0/etc/xlc.cfg.72:xlclang++ +export XL_XLCMP_PATH=/opt/IBM/xlc/16.1.0:/opt/IBM/xlC/16.1.0 +export XL_COMPILER=xlc++ +export XL_ASMOBJFILES=/tmp/xlcAS3IXqid +export "XL_DIS=/opt/IBM/xlc/16.1.0/exe/dis -o "CMakeFiles/cmTC_b8490.dir/CMakeCXXCompilerABI.cpp.o" "CMakeCXXCompilerABI.o"" +/opt/IBM/xlC/16.1.0/exe/xlC2entry -qosvar=aix.7.2 -qalias=ansi -qthreaded -D_THREAD_SAFE -Wno-parentheses -Wno-unused-value -D_AIX -D_AIX32 -D_AIX41 -D_AIX43 -D_AIX50 -D_AIX51 -D_AIX52 -D_AIX53 -D_AIX61 -D_AIX71 -D_AIX72 -D_IBMR2 -D_POWER -xc++ -qasm_as=/bin/as -qcpp_stdinc=/opt/IBM/xlC/16.1.0/include2/c++:/opt/IBM/xlC/16.1.0/include2:/opt/IBM/xlC/16.1.0/include2/aix:/opt/IBM/xlmass/9.1.0/include:/usr/include -qc_stdinc=/opt/IBM/xlC/16.1.0/include2:/opt/IBM/xlC/16.1.0/include2/aix:/opt/IBM/xlmass/9.1.0/include:/usr/include -oCMakeFiles/cmTC_b8490.dir/CMakeCXXCompilerABI.cpp.o /tmp/CMake/Modules/CMakeCXXCompilerABI.cpp /tmp/xlcW03uXqia /tmp/xlcW137Xqib /dev/null /tmp/xlcL3QXqieF.lst /dev/null /tmp/xlcW23AXqic +export XL_BACKEND=/opt/IBM/xlc/16.1.0/exe/xlCcode +export XL_LINKER=/bin/ld +/opt/IBM/xlc/16.1.0/exe/xlCcode -qalias=ansi -qthreaded /tmp/xlcW03uXqia /tmp/xlcW137Xqib CMakeFiles/cmTC_b8490.dir/CMakeCXXCompilerABI.cpp.o /tmp/xlcL3QXqieB.lst /tmp/xlcW23AXqic +rm /tmp/xlcAS3IXqid +rm /tmp/xlcL3QXqie +rm /tmp/xlcW03uXqia +rm /tmp/xlcW137Xqib +rm /tmp/xlcW23AXqic +Linking CXX executable cmTC_b8490 +/tmp/CMake/bin/cmake -E cmake_link_script CMakeFiles/cmTC_b8490.dir/link.txt --verbose=1 +/opt/IBM/xlC/16.1.0/bin/xlclang++ -Wl,-bnoipath -Wl,-brtl -V -Wl,-bexpall CMakeFiles/cmTC_b8490.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_b8490 -Wl,-blibpath:/usr/lib:/lib +export XL_CONFIG=/opt/IBM/xlc/16.1.0/etc/xlc.cfg.72:xlclang++ +/bin/ld -b32 /lib/crt0.o /lib/crti.o -bpT:0x10000000 -bpD:0x20000000 -bnoipath -brtl -bexpall CMakeFiles/cmTC_b8490.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_b8490 -blibpath:/usr/lib:/lib -bcdtors:all:0:s -btmplrename -L/opt/IBM/xlmass/9.1.0/lib/aix61 -L/opt/IBM/xlc/16.1.0/lib -lxlopt -lxlipa -lxl -L/opt/IBM/xlC/16.1.0/lib -lc++ -lCcore -lpthreads -lm -lc | +/opt/IBM/xlC/16.1.0/bin/c++filt -S | +/bin/sed '/317.*::virtual-fn-table-ptr$/ s/^\(.*: \)*{*\([^}]*\)\(}*.*\)::virtual-fn-table-ptr$/\1Virtual table for class "\2": Some possible causes are: first non-inline virtual function in "\2" is not defined or the class is a template instantiation and an explicit instantiation definition of the class is missing./' +rm /tmp/xlcW05fS7ia +rm /tmp/xlcW15rS7ib +rm /tmp/xlcW25vS7ic +gmake[1]: Leaving directory '/tmp/ii/CMakeFiles/CMakeTmp' diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/data/aix-CXX-XLClang-16.1.0.1.output b/Tests/RunCMake/ParseImplicitIncludeInfo/data/aix-CXX-XLClang-16.1.0.1.output new file mode 100644 index 0000000..e462894 --- /dev/null +++ b/Tests/RunCMake/ParseImplicitIncludeInfo/data/aix-CXX-XLClang-16.1.0.1.output @@ -0,0 +1 @@ +/opt/IBM/xlC/16.1.0/include2/c++;/opt/IBM/xlC/16.1.0/include2;/opt/IBM/xlC/16.1.0/include2/aix;/opt/IBM/xlmass/9.1.0/include;/usr/include https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5c41386357977d931f73e3bb824080af795b3cd5 commit 5c41386357977d931f73e3bb824080af795b3cd5 Author: Brad King AuthorDate: Thu Feb 21 13:37:48 2019 -0500 Commit: Brad King CommitDate: Mon Feb 25 08:24:28 2019 -0500 XLClang: Add policy CMP0089 to present as XL for compatibility We now identify IBM's Clang-based XL compilers, which define `__ibmxl__`, as `XLClang` rather than `XL`. In order to support existing project code that checks for `XL`, add a policy whose OLD behavior is to present the compiler id as `XL` and whose NEW behavior is to present the compiler id as `XLClang` as we really detect it. diff --git a/Help/manual/cmake-policies.7.rst b/Help/manual/cmake-policies.7.rst index 409b5b1..9470d6c 100644 --- a/Help/manual/cmake-policies.7.rst +++ b/Help/manual/cmake-policies.7.rst @@ -51,6 +51,14 @@ The :variable:`CMAKE_MINIMUM_REQUIRED_VERSION` variable may also be used to determine whether to report an error on use of deprecated macros or functions. +Policies Introduced by CMake 3.15 +================================= + +.. toctree:: + :maxdepth: 1 + + CMP0089: Compiler id for IBM Clang-based XL compilers is now XLClang. + Policies Introduced by CMake 3.14 ================================= diff --git a/Help/policy/CMP0089.rst b/Help/policy/CMP0089.rst new file mode 100644 index 0000000..e549e0c --- /dev/null +++ b/Help/policy/CMP0089.rst @@ -0,0 +1,30 @@ +CMP0089 +------- + +Compiler id for IBM Clang-based XL compilers is now ``XLClang``. + +CMake 3.15 and above recognize that IBM's Clang-based XL compilers +that define ``__ibmxl__`` are a new front-end distinct from ``xlc`` +with a different command line and set of capabilities. +CMake now prefers to present this to projects by setting the +:variable:`CMAKE__COMPILER_ID` variable to ``XLClang`` instead +of ``XL``. However, existing projects may assume the compiler id for +Clang-based XL is just ``XL`` as it was in CMake versions prior to 3.15. +Therefore this policy determines for Clang-based XL compilers which +compiler id to report in the :variable:`CMAKE__COMPILER_ID` +variable after language ```` is enabled by the :command:`project` +or :command:`enable_language` command. The policy must be set prior +to the invocation of either command. + +The OLD behavior for this policy is to use compiler id ``XL``. The +NEW behavior for this policy is to use compiler id ``XLClang``. + +This policy was introduced in CMake version 3.15. Use the +:command:`cmake_policy` command to set this policy to OLD or NEW explicitly. +Unlike most policies, CMake version |release| does *not* warn +by default when this policy is not set and simply uses OLD behavior. +See documentation of the +:variable:`CMAKE_POLICY_WARNING_CMP0089 >` +variable to control the warning. + +.. include:: DEPRECATED.txt diff --git a/Help/release/dev/add-xlclang.rst b/Help/release/dev/add-xlclang.rst new file mode 100644 index 0000000..77ff938 --- /dev/null +++ b/Help/release/dev/add-xlclang.rst @@ -0,0 +1,5 @@ +add-xlclang +----------- + +* IBM Clang-based XL compilers that define ``__ibmxl__`` now use the + compiler id ``XLClang`` instead of ``XL``. See policy :policy:`CMP0089`. diff --git a/Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst b/Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst index d179728..fc52e7b 100644 --- a/Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst +++ b/Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst @@ -21,6 +21,8 @@ warn by default: policy :policy:`CMP0067`. * ``CMAKE_POLICY_WARNING_CMP0082`` controls the warning for policy :policy:`CMP0082`. +* ``CMAKE_POLICY_WARNING_CMP0089`` controls the warning for + policy :policy:`CMP0089`. This variable should not be set by a project in CMake code. Project developers running CMake may set this variable in their cache to diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 8107a07..4d6ffab 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -956,6 +956,36 @@ void cmGlobalGenerator::CheckCompilerIdCompatibility( break; } } + + if (strcmp(compilerId, "XLClang") == 0) { + switch (mf->GetPolicyStatus(cmPolicies::CMP0089)) { + case cmPolicies::WARN: + if (!this->CMakeInstance->GetIsInTryCompile() && + mf->PolicyOptionalWarningEnabled("CMAKE_POLICY_WARNING_CMP0089")) { + std::ostringstream w; + /* clang-format off */ + w << cmPolicies::GetPolicyWarning(cmPolicies::CMP0089) << "\n" + "Converting " << lang << + " compiler id \"XLClang\" to \"XL\" for compatibility." + ; + /* clang-format on */ + mf->IssueMessage(MessageType::AUTHOR_WARNING, w.str()); + } + CM_FALLTHROUGH; + case cmPolicies::OLD: + // OLD behavior is to convert XLClang to XL. + mf->AddDefinition(compilerIdVar, "XL"); + break; + case cmPolicies::REQUIRED_IF_USED: + case cmPolicies::REQUIRED_ALWAYS: + mf->IssueMessage( + MessageType::FATAL_ERROR, + cmPolicies::GetRequiredPolicyError(cmPolicies::CMP0089)); + case cmPolicies::NEW: + // NEW behavior is to keep AppleClang. + break; + } + } } std::string cmGlobalGenerator::GetLanguageOutputExtension( diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h index 314f27d..8b21166 100644 --- a/Source/cmPolicies.h +++ b/Source/cmPolicies.h @@ -261,7 +261,10 @@ class cmMakefile; 3, 14, 0, cmPolicies::WARN) \ SELECT(POLICY, CMP0088, \ "FindBISON runs bison in CMAKE_CURRENT_BINARY_DIR when executing.", \ - 3, 14, 0, cmPolicies::WARN) + 3, 14, 0, cmPolicies::WARN) \ + SELECT(POLICY, CMP0089, \ + "Compiler id for IBM Clang-based XL compilers is now XLClang.", 3, \ + 15, 0, cmPolicies::WARN) #define CM_SELECT_ID(F, A1, A2, A3, A4, A5, A6) F(A1) #define CM_FOR_EACH_POLICY_ID(POLICY) \ diff --git a/Tests/RunCMake/ParseImplicitIncludeInfo/data/CMakeLists.txt b/Tests/RunCMake/ParseImplicitIncludeInfo/data/CMakeLists.txt index b854e2e..bffe819 100644 --- a/Tests/RunCMake/ParseImplicitIncludeInfo/data/CMakeLists.txt +++ b/Tests/RunCMake/ParseImplicitIncludeInfo/data/CMakeLists.txt @@ -12,6 +12,9 @@ # cmake_minimum_required(VERSION 3.3) +if(POLICY CMP0089) + cmake_policy(SET CMP0089 NEW) +endif() set(lngs C CXX) set(LANGUAGES "${lngs}" CACHE STRING "List of languages to generate inputs for") https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=82782379337fe922f96f4f19b8deae1fab6212fe commit 82782379337fe922f96f4f19b8deae1fab6212fe Author: Chuck Atkins AuthorDate: Tue Feb 5 11:48:23 2019 -0500 Commit: Brad King CommitDate: Mon Feb 25 08:24:28 2019 -0500 XL: Remove overlap with the new XLClang compiler ID In commit 6555286c55 (XL: Add C and C++ language level flags, 2017-04-27, v3.9.0-rc1~184^2) we added support for both the traditional XL compiler and the Clang-based variant used on Linux. The latter is now handled by `Modules/Compiler/XLClang-{C,CXX}.cmake` using the `XLClang` compiler id. Drop the corresponding content from the traditional XL compiler modules. diff --git a/Modules/Compiler/XL-C.cmake b/Modules/Compiler/XL-C.cmake index eee5958..6fc9728 100644 --- a/Modules/Compiler/XL-C.cmake +++ b/Modules/Compiler/XL-C.cmake @@ -6,35 +6,14 @@ string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -DNDEBUG") # -qthreaded = Ensures that all optimizations will be thread-safe string(APPEND CMAKE_C_FLAGS_INIT " -qthreaded") -# XL v13.1.1 for Linux ppc64 little-endian switched to using a clang based -# front end and accepts the -std= option while only reserving -qlanglevel= for -# compatibility. All other versions (previous versions on Linux ppc64 -# little-endian, all versions on Linux ppc64 big-endian, all versions on AIX -# and BGQ, etc) are derived from the UNIX compiler and only accept the -# -qlanglvl option. if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10.1) - if (CMAKE_SYSTEM MATCHES "Linux.*ppc64le" AND - CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.1) - set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c89") - set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu89") - set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99") - set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99") - if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.2) - set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11") - set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11") - else () - set(CMAKE_C11_STANDARD_COMPILE_OPTION "-qlanglvl=extc1x") - set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-qlanglvl=extc1x") - endif () - else () - set(CMAKE_C90_STANDARD_COMPILE_OPTION "-qlanglvl=stdc89") - set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-qlanglvl=extc89") - set(CMAKE_C99_STANDARD_COMPILE_OPTION "-qlanglvl=stdc99") - set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-qlanglvl=extc99") - if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.1) - set(CMAKE_C11_STANDARD_COMPILE_OPTION "-qlanglvl=extc1x") - set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-qlanglvl=extc1x") - endif () + set(CMAKE_C90_STANDARD_COMPILE_OPTION "-qlanglvl=stdc89") + set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-qlanglvl=extc89") + set(CMAKE_C99_STANDARD_COMPILE_OPTION "-qlanglvl=stdc99") + set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-qlanglvl=extc99") + if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.1) + set(CMAKE_C11_STANDARD_COMPILE_OPTION "-qlanglvl=extc1x") + set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-qlanglvl=extc1x") endif () endif() diff --git a/Modules/Compiler/XL-CXX.cmake b/Modules/Compiler/XL-CXX.cmake index b87e923..0026b4a 100644 --- a/Modules/Compiler/XL-CXX.cmake +++ b/Modules/Compiler/XL-CXX.cmake @@ -6,41 +6,16 @@ string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -DNDEBUG") # -qthreaded = Ensures that all optimizations will be thread-safe string(APPEND CMAKE_CXX_FLAGS_INIT " -qthreaded") -# XL v13.1.1 for Linux ppc64 little-endian switched to using a clang based -# front end and accepts the -std= option while only reserving -qlanglevel= for -# compatibility. All other versions (previous versions on Linux ppc64 -# little-endian, all versions on Linux ppc64 big-endian, all versions on AIX -# and BGQ, etc) are derived from the UNIX compiler and only accept the -# -qlanglvl option. if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.1) - if (CMAKE_SYSTEM MATCHES "Linux.*ppc64") - if (CMAKE_SYSTEM MATCHES "Linux.*ppc64le" AND - CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.1) - set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-std=c++98") - set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98") - if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.2) - set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11") - set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11") - set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++1y") - set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-qlanglvl=extended1y") - else () - set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-qlanglvl=extended0x") - set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-qlanglvl=extended0x") - endif () - else () - # The non-clang based Linux ppc64 compiler, both big-endian and - # little-endian lacks, the non-extension language level flags - set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-qlanglvl=extended") - set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-qlanglvl=extended") - set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-qlanglvl=extended0x") - set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-qlanglvl=extended0x") - endif () - else () + if(CMAKE_SYSTEM MATCHES "Linux") + set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "") + set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "") + else() set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-qlanglvl=strict98") set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-qlanglvl=extended") - set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-qlanglvl=extended0x") - set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-qlanglvl=extended0x") - endif () + endif() + set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-qlanglvl=extended0x") + set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-qlanglvl=extended0x") endif () __compiler_check_default_language_standard(CXX 10.1 98) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6f5cf2d2c6cf2eaa9f21fff8a4f1309de2963a47 commit 6f5cf2d2c6cf2eaa9f21fff8a4f1309de2963a47 Author: Brad King AuthorDate: Thu Feb 21 13:30:38 2019 -0500 Commit: Brad King CommitDate: Mon Feb 25 08:24:28 2019 -0500 XL: Revert "Recognize compilers identified by __ibmxl__" Revert commit eb1a9be4b6 (XL: Recognize compilers identified by __ibmxl__, 2018-03-05, v3.11.0-rc3~4^2). It is no longer needed because we now use `__ibmxl__` to identify with compiler id `XLClang`. diff --git a/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake b/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake index e5b9741..899e284 100644 --- a/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake +++ b/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake @@ -1,14 +1,6 @@ set(_compiler_id_version_compute " -# if defined(__ibmxl__) -# define @PREFIX at COMPILER_VERSION_MAJOR @MACRO_DEC@(__ibmxl_version__) -# define @PREFIX at COMPILER_VERSION_MINOR @MACRO_DEC@(__ibmxl_release__) -# define @PREFIX at COMPILER_VERSION_PATCH @MACRO_DEC@(__ibmxl_modification__) -# define @PREFIX at COMPILER_VERSION_TWEAK @MACRO_DEC@(__ibmxl_ptf_fix_level__) -# else - /* __IBMC__ = VRP */ -# define @PREFIX at COMPILER_VERSION_MAJOR @MACRO_DEC@(__IBMC__/100) -# define @PREFIX at COMPILER_VERSION_MINOR @MACRO_DEC@(__IBMC__/10 % 10) -# define @PREFIX at COMPILER_VERSION_PATCH @MACRO_DEC@(__IBMC__ % 10) -# endif -") + /* __IBMC__ = VRP */ +# define @PREFIX at COMPILER_VERSION_MAJOR @MACRO_DEC@(__IBMC__/100) +# define @PREFIX at COMPILER_VERSION_MINOR @MACRO_DEC@(__IBMC__/10 % 10) +# define @PREFIX at COMPILER_VERSION_PATCH @MACRO_DEC@(__IBMC__ % 10)") diff --git a/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake b/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake index 63c3e32..73aa2b4 100644 --- a/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake +++ b/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake @@ -1,14 +1,6 @@ set(_compiler_id_version_compute " -# if defined(__ibmxl__) -# define @PREFIX at COMPILER_VERSION_MAJOR @MACRO_DEC@(__ibmxl_version__) -# define @PREFIX at COMPILER_VERSION_MINOR @MACRO_DEC@(__ibmxl_release__) -# define @PREFIX at COMPILER_VERSION_PATCH @MACRO_DEC@(__ibmxl_modification__) -# define @PREFIX at COMPILER_VERSION_TWEAK @MACRO_DEC@(__ibmxl_ptf_fix_level__) -# else - /* __IBMCPP__ = VRP */ -# define @PREFIX at COMPILER_VERSION_MAJOR @MACRO_DEC@(__IBMCPP__/100) -# define @PREFIX at COMPILER_VERSION_MINOR @MACRO_DEC@(__IBMCPP__/10 % 10) -# define @PREFIX at COMPILER_VERSION_PATCH @MACRO_DEC@(__IBMCPP__ % 10) -# endif -") + /* __IBMCPP__ = VRP */ +# define @PREFIX at COMPILER_VERSION_MAJOR @MACRO_DEC@(__IBMCPP__/100) +# define @PREFIX at COMPILER_VERSION_MINOR @MACRO_DEC@(__IBMCPP__/10 % 10) +# define @PREFIX at COMPILER_VERSION_PATCH @MACRO_DEC@(__IBMCPP__ % 10)") diff --git a/Modules/Compiler/XL-C-DetermineCompiler.cmake b/Modules/Compiler/XL-C-DetermineCompiler.cmake index 484811e..3f4e05c 100644 --- a/Modules/Compiler/XL-C-DetermineCompiler.cmake +++ b/Modules/Compiler/XL-C-DetermineCompiler.cmake @@ -1,4 +1,4 @@ -set(_compiler_id_pp_test "defined(__ibmxl__) || (defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800)") +set(_compiler_id_pp_test "defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800") include("${CMAKE_CURRENT_LIST_DIR}/IBMCPP-C-DetermineVersionInternal.cmake") diff --git a/Modules/Compiler/XL-CXX-DetermineCompiler.cmake b/Modules/Compiler/XL-CXX-DetermineCompiler.cmake index 2bf1ec6..dffa4bc 100644 --- a/Modules/Compiler/XL-CXX-DetermineCompiler.cmake +++ b/Modules/Compiler/XL-CXX-DetermineCompiler.cmake @@ -1,4 +1,4 @@ -set(_compiler_id_pp_test "defined(__ibmxl__) || (defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800)") +set(_compiler_id_pp_test "defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800") include("${CMAKE_CURRENT_LIST_DIR}/IBMCPP-CXX-DetermineVersionInternal.cmake") https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=90c6156aa8272ec9811647d9b6c87d7ee4326e35 commit 90c6156aa8272ec9811647d9b6c87d7ee4326e35 Author: Chuck Atkins AuthorDate: Tue Feb 5 11:48:00 2019 -0500 Commit: Brad King CommitDate: Mon Feb 25 08:24:28 2019 -0500 XLClang: Add a new compiler ID for the clang-based XL compiler diff --git a/Modules/CMakeCompilerIdDetection.cmake b/Modules/CMakeCompilerIdDetection.cmake index 7039b8d..96a14f7 100644 --- a/Modules/CMakeCompilerIdDetection.cmake +++ b/Modules/CMakeCompilerIdDetection.cmake @@ -57,6 +57,7 @@ function(compiler_id_detection outvar lang) HP Compaq zOS + XLClang XL VisualAge PGI diff --git a/Modules/Compiler/XLClang-C-DetermineCompiler.cmake b/Modules/Compiler/XLClang-C-DetermineCompiler.cmake new file mode 100644 index 0000000..4d89921 --- /dev/null +++ b/Modules/Compiler/XLClang-C-DetermineCompiler.cmake @@ -0,0 +1,8 @@ +set(_compiler_id_pp_test "defined(__ibmxl__) && defined(__clang__)") + +set(_compiler_id_version_compute " +# define @PREFIX at COMPILER_VERSION_MAJOR @MACRO_DEC@(__ibmxl_version__) +# define @PREFIX at COMPILER_VERSION_MINOR @MACRO_DEC@(__ibmxl_release__) +# define @PREFIX at COMPILER_VERSION_PATCH @MACRO_DEC@(__ibmxl_modification__) +# define @PREFIX at COMPILER_VERSION_TWEAK @MACRO_DEC@(__ibmxl_ptf_fix_level__) +") diff --git a/Modules/Compiler/XLClang-C.cmake b/Modules/Compiler/XLClang-C.cmake new file mode 100644 index 0000000..8e8fcf2 --- /dev/null +++ b/Modules/Compiler/XLClang-C.cmake @@ -0,0 +1,17 @@ +include(Compiler/XLClang) +__compiler_xlclang(C) + +if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.1) + set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c89") + set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu89") + set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99") + set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99") + set(CMAKE_C11_STANDARD_COMPILE_OPTION "-qlanglvl=extc1x") + set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-qlanglvl=extc1x") + if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.2) + set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11") + set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11") + endif () +endif() + +__compiler_check_default_language_standard(C 13.1.1 99) diff --git a/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake b/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake new file mode 100644 index 0000000..4d89921 --- /dev/null +++ b/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake @@ -0,0 +1,8 @@ +set(_compiler_id_pp_test "defined(__ibmxl__) && defined(__clang__)") + +set(_compiler_id_version_compute " +# define @PREFIX at COMPILER_VERSION_MAJOR @MACRO_DEC@(__ibmxl_version__) +# define @PREFIX at COMPILER_VERSION_MINOR @MACRO_DEC@(__ibmxl_release__) +# define @PREFIX at COMPILER_VERSION_PATCH @MACRO_DEC@(__ibmxl_modification__) +# define @PREFIX at COMPILER_VERSION_TWEAK @MACRO_DEC@(__ibmxl_ptf_fix_level__) +") diff --git a/Modules/Compiler/XLClang-CXX.cmake b/Modules/Compiler/XLClang-CXX.cmake new file mode 100644 index 0000000..f535ebc --- /dev/null +++ b/Modules/Compiler/XLClang-CXX.cmake @@ -0,0 +1,20 @@ +include(Compiler/XLClang) +__compiler_xlclang(CXX) + +if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.1) + set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "") + set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "") + set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-qlanglvl=extended0x") + set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-qlanglvl=extended0x") + if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.2) + set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11") + set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11") + set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++1y") + set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++1y") + endif () +endif() + +__compiler_check_default_language_standard(CXX 13.1.1 98) + +set(CMAKE_CXX_COMPILE_OBJECT + " -x c++ -o -c ") diff --git a/Modules/Compiler/XLClang.cmake b/Modules/Compiler/XLClang.cmake new file mode 100644 index 0000000..cdf0fdc --- /dev/null +++ b/Modules/Compiler/XLClang.cmake @@ -0,0 +1,22 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + + +# This module is shared by multiple languages; use include blocker. +if(__COMPILER_XLCLANG) + return() +endif() +set(__COMPILER_XLCLANG 1) + +include(Compiler/XL) + +macro(__compiler_xlclang lang) + __compiler_xl(${lang}) + + # Feature flags. + set(CMAKE_${lang}_VERBOSE_FLAG "-V") + set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "-fPIC") + set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-fPIC") + set(CMAKE_${lang}_RESPONSE_FILE_FLAG "@") + set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "@") +endmacro() diff --git a/Modules/Platform/AIX-XLClang-C.cmake b/Modules/Platform/AIX-XLClang-C.cmake new file mode 100644 index 0000000..f0bedc5 --- /dev/null +++ b/Modules/Platform/AIX-XLClang-C.cmake @@ -0,0 +1,2 @@ +include(Platform/AIX-XLClang) +__aix_compiler_xlclang(C) diff --git a/Modules/Platform/AIX-XLClang-CXX.cmake b/Modules/Platform/AIX-XLClang-CXX.cmake new file mode 100644 index 0000000..cceb576 --- /dev/null +++ b/Modules/Platform/AIX-XLClang-CXX.cmake @@ -0,0 +1,2 @@ +include(Platform/AIX-XLClang) +__aix_compiler_xlclang(CXX) diff --git a/Modules/Platform/AIX-XLClang.cmake b/Modules/Platform/AIX-XLClang.cmake new file mode 100644 index 0000000..c932095 --- /dev/null +++ b/Modules/Platform/AIX-XLClang.cmake @@ -0,0 +1,15 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + + +# This module is shared by multiple languages; use include blocker. +if(__AIX_COMPILER_XLCLANG) + return() +endif() +set(__AIX_COMPILER_XLCLANG 1) + +include(Platform/AIX-XL) + +macro(__aix_compiler_xlclang lang) + __aix_compiler_xl(${lang}) +endmacro() https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e0231fe439fef3e5f64912f65393e756c4473cc8 commit e0231fe439fef3e5f64912f65393e756c4473cc8 Author: Brad King AuthorDate: Thu Feb 21 15:31:47 2019 -0500 Commit: Brad King CommitDate: Mon Feb 25 08:24:27 2019 -0500 XL: Look for CreateExportList only on AIX This tool comes with XL on AIX but not on Linux. Move the infrastructure to find and use it to the AIX-specific modules. diff --git a/Modules/Compiler/XL.cmake b/Modules/Compiler/XL.cmake index 68dc28a..a9cec11 100644 --- a/Modules/Compiler/XL.cmake +++ b/Modules/Compiler/XL.cmake @@ -10,12 +10,6 @@ set(__COMPILER_XL 1) include(Compiler/CMakeCommonCompilerMacros) -# Find the CreateExportList program that comes with this toolchain. -find_program(CMAKE_XL_CreateExportList - NAMES CreateExportList - DOC "IBM XL CreateExportList tool" - ) - macro(__compiler_xl lang) # Feature flags. set(CMAKE_${lang}_VERBOSE_FLAG "-V") @@ -35,20 +29,4 @@ macro(__compiler_xl lang) set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE " -S -o ") set(CMAKE_DEPFILE_FLAGS_${lang} "-MF -qmakedep=gcc") - - # CMAKE_XL_CreateExportList is part of the AIX XL compilers but not the linux ones. - # If we found the tool, we'll use it to create exports, otherwise stick with the regular - # create shared library compile line. - if (CMAKE_XL_CreateExportList) - # The compiler front-end passes all object files, archive files, and shared - # library files named on the command line to CreateExportList to create a - # list of all symbols to be exported from the shared library. This causes - # all archive members to be copied into the shared library whether they are - # needed or not. Instead we run the tool ourselves to pass only the object - # files so that we export only the symbols actually provided by the sources. - set(CMAKE_${lang}_CREATE_SHARED_LIBRARY - "${CMAKE_XL_CreateExportList} /objects.exp " - " -Wl,-bE:/objects.exp -o " - ) - endif() endmacro() diff --git a/Modules/Platform/AIX-XL.cmake b/Modules/Platform/AIX-XL.cmake index b3078ff..06a806b 100644 --- a/Modules/Platform/AIX-XL.cmake +++ b/Modules/Platform/AIX-XL.cmake @@ -25,4 +25,26 @@ macro(__aix_compiler_xl lang) set(CMAKE_SHARED_MODULE_${lang}_FLAGS " ") set(CMAKE_${lang}_LINK_FLAGS "-Wl,-bnoipath") + + # Find the CreateExportList program that comes with this toolchain. + find_program(CMAKE_XL_CreateExportList + NAMES CreateExportList + DOC "IBM XL CreateExportList tool" + ) + + # CMAKE_XL_CreateExportList is part of the AIX XL compilers but not the linux ones. + # If we found the tool, we'll use it to create exports, otherwise stick with the regular + # create shared library compile line. + if (CMAKE_XL_CreateExportList) + # The compiler front-end passes all object files, archive files, and shared + # library files named on the command line to CreateExportList to create a + # list of all symbols to be exported from the shared library. This causes + # all archive members to be copied into the shared library whether they are + # needed or not. Instead we run the tool ourselves to pass only the object + # files so that we export only the symbols actually provided by the sources. + set(CMAKE_${lang}_CREATE_SHARED_LIBRARY + "${CMAKE_XL_CreateExportList} /objects.exp " + " -Wl,-bE:/objects.exp -o " + ) + endif() endmacro() https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=13b1d2f9f86249ca32113ed7057f5d92222496af commit 13b1d2f9f86249ca32113ed7057f5d92222496af Author: Chuck Atkins AuthorDate: Tue Feb 5 11:48:23 2019 -0500 Commit: Brad King CommitDate: Mon Feb 25 08:24:27 2019 -0500 XL: Record C compiler version that started using C99 by default diff --git a/Modules/Compiler/XL-C.cmake b/Modules/Compiler/XL-C.cmake index 5dc8bc1..eee5958 100644 --- a/Modules/Compiler/XL-C.cmake +++ b/Modules/Compiler/XL-C.cmake @@ -38,4 +38,4 @@ if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10.1) endif () endif() -__compiler_check_default_language_standard(C 10.1 90) +__compiler_check_default_language_standard(C 10.1 90 11.1 99) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=747463d1b36a8bea31764db88ed4d9677b76f27f commit 747463d1b36a8bea31764db88ed4d9677b76f27f Author: Sebastian Holtermann AuthorDate: Tue Feb 19 15:49:09 2019 +0100 Commit: Brad King CommitDate: Mon Feb 25 08:20:19 2019 -0500 Autogen: Move additional source header search to configuration stage The computation of additional source headers and and private headers for AUTOGEN is moved from the _autogen target to the configuration stage. This makes them available for _autogen target dependency computations. Closes: #18949 diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx index 239426c..2fb6fdf 100644 --- a/Source/cmQtAutoGenInitializer.cxx +++ b/Source/cmQtAutoGenInitializer.cxx @@ -704,6 +704,67 @@ bool cmQtAutoGenInitializer::InitScanFiles() // mocs_compilation.cpp source acknowledged by this target. this->Target->ClearSourcesCache(); + // For source files find additional headers and private headers + if (this->MocOrUicEnabled()) { + std::vector extraHeaders; + extraHeaders.reserve(this->AutogenTarget.Sources.size() * 2); + // Header search suffixes and extensions + std::array const suffixes{ { "", "_p" } }; + auto const& exts = makefile->GetCMakeInstance()->GetHeaderExtensions(); + // Scan through sources + for (auto const& pair : this->AutogenTarget.Sources) { + MUFile const& muf = *pair.second; + if (muf.MocIt || muf.UicIt) { + // Search for the default header file and a private header + std::string const& realPath = muf.RealPath; + std::string basePath = cmQtAutoGen::SubDirPrefix(realPath); + basePath += cmSystemTools::GetFilenameWithoutLastExtension(realPath); + for (auto const& suffix : suffixes) { + std::string const suffixedPath = basePath + suffix; + for (auto const& ext : exts) { + std::string fullPath = suffixedPath; + fullPath += '.'; + fullPath += ext; + + auto constexpr locationKind = cmSourceFileLocationKind::Known; + cmSourceFile* sf = makefile->GetSource(fullPath, locationKind); + if (sf != nullptr) { + // Check if we know about this header already + if (this->AutogenTarget.Headers.find(sf) != + this->AutogenTarget.Headers.end()) { + continue; + } + // We only accept not-GENERATED files that do exist. + if (!sf->GetIsGenerated() && + !cmSystemTools::FileExists(fullPath)) { + continue; + } + } else if (cmSystemTools::FileExists(fullPath)) { + // Create a new source file for the existing file + sf = makefile->CreateSource(fullPath, false, locationKind); + } + + if (sf != nullptr) { + auto eMuf = makeMUFile(sf, fullPath, true); + // Ony process moc/uic when the parent is processed as well + if (!muf.MocIt) { + eMuf->MocIt = false; + } + if (!muf.UicIt) { + eMuf->UicIt = false; + } + extraHeaders.emplace_back(std::move(eMuf)); + } + } + } + } + } + // Move generated files to main headers list + for (auto& eMuf : extraHeaders) { + addMUFile(std::move(eMuf), true); + } + } + // Scan through all source files in the makefile to extract moc and uic // parameters. Historically we support non target source file parameters. // The reason is that their file names might be discovered from source files diff --git a/Source/cmQtAutoGeneratorMocUic.cxx b/Source/cmQtAutoGeneratorMocUic.cxx index 0673f1d..b02cd44 100644 --- a/Source/cmQtAutoGeneratorMocUic.cxx +++ b/Source/cmQtAutoGeneratorMocUic.cxx @@ -9,7 +9,6 @@ #include #include #include -#include #include #include "cmAlgorithms.h" @@ -1374,35 +1373,11 @@ bool cmQtAutoGeneratorMocUic::Init(cmMakefile* makefile) // - Headers and sources { - std::unordered_set headers; - auto addHeader = [this, &headers](std::string&& hdr, bool moc, bool uic) { - if (headers.emplace(hdr).second) { - this->JobQueues_.Headers.emplace_back( - cm::make_unique(std::move(hdr), moc, uic, true)); - } + auto addHeader = [this](std::string&& hdr, bool moc, bool uic) { + this->JobQueues_.Headers.emplace_back( + cm::make_unique(std::move(hdr), moc, uic, true)); }; - auto addSource = [this, &addHeader](std::string&& src, bool moc, - bool uic) { - // Search for the default header file and a private header - { - std::array bases; - bases[0] = FileSys().SubDirPrefix(src); - bases[0] += FileSys().GetFilenameWithoutLastExtension(src); - bases[1] = bases[0]; - bases[1] += "_p"; - for (std::string const& headerBase : bases) { - std::string header; - if (Base().FindHeader(header, headerBase)) { - bool const hdrMoc = moc && !Moc().skipped(header); - bool const hdrUic = uic && !Uic().skipped(header); - if (hdrMoc || hdrUic) { - // Add additional header job - addHeader(std::move(header), hdrMoc, hdrUic); - } - } - } - } - // Add actual source job + auto addSource = [this](std::string&& src, bool moc, bool uic) { this->JobQueues_.Sources.emplace_back( cm::make_unique(std::move(src), moc, uic, false)); }; https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=16c687825daef4008d52b9b68bfa603ba493ac03 commit 16c687825daef4008d52b9b68bfa603ba493ac03 Author: Sebastian Holtermann AuthorDate: Tue Feb 19 15:49:09 2019 +0100 Commit: Brad King CommitDate: Mon Feb 25 08:20:19 2019 -0500 Autogen: Refactor file lists computation In AUTOGEN this replaces simple file name lists with two list (for headers and sources) of structs with file name and file flags. The file name lists that are passed to the _autogen target via AutogenInfo.cmake are filtered from these two lists. diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx index 7c70dc4..239426c 100644 --- a/Source/cmQtAutoGenInitializer.cxx +++ b/Source/cmQtAutoGenInitializer.cxx @@ -21,11 +21,13 @@ #include "cmPolicies.h" #include "cmProcessOutput.h" #include "cmSourceFile.h" +#include "cmSourceFileLocationKind.h" #include "cmSourceGroup.h" #include "cmState.h" #include "cmStateTypes.h" #include "cmSystemTools.h" #include "cmTarget.h" +#include "cmake.h" #include "cmsys/FStream.hxx" #include "cmsys/SystemInformation.hxx" @@ -275,6 +277,26 @@ bool cmQtAutoGenInitializer::InitCustomTargets() } } + // Check status of policy CMP0071 + { + cmPolicies::PolicyStatus const CMP0071_status = + makefile->GetPolicyStatus(cmPolicies::CMP0071); + switch (CMP0071_status) { + case cmPolicies::WARN: + this->CMP0071Warn = true; + CM_FALLTHROUGH; + case cmPolicies::OLD: + // Ignore GENERATED file + break; + case cmPolicies::REQUIRED_IF_USED: + case cmPolicies::REQUIRED_ALWAYS: + case cmPolicies::NEW: + // Process GENERATED file + this->CMP0071Accept = true; + break; + } + } + // Common directories { // Collapsed current binary directory @@ -324,7 +346,7 @@ bool cmQtAutoGenInitializer::InitCustomTargets() } // Moc, Uic and _autogen target settings - if (this->Moc.Enabled || this->Uic.Enabled) { + if (this->MocOrUicEnabled()) { // Init moc specific settings if (this->Moc.Enabled && !InitMoc()) { return false; @@ -397,8 +419,7 @@ bool cmQtAutoGenInitializer::InitCustomTargets() } // Add autogen include directory to the origin target INCLUDE_DIRECTORIES - if (this->Moc.Enabled || this->Uic.Enabled || - (this->Rcc.Enabled && this->MultiConfig)) { + if (this->MocOrUicEnabled() || (this->Rcc.Enabled && this->MultiConfig)) { this->Target->AddIncludeDirectory(this->Dir.Include, true); } @@ -408,7 +429,7 @@ bool cmQtAutoGenInitializer::InitCustomTargets() } // Create autogen target - if ((this->Moc.Enabled || this->Uic.Enabled) && !this->InitAutogenTarget()) { + if (this->MocOrUicEnabled() && !this->InitAutogenTarget()) { return false; } @@ -590,61 +611,78 @@ bool cmQtAutoGenInitializer::InitScanFiles() std::string const SKIP_AUTOGEN_str = "SKIP_AUTOGEN"; std::string const SKIP_AUTOMOC_str = "SKIP_AUTOMOC"; std::string const SKIP_AUTOUIC_str = "SKIP_AUTOUIC"; + std::string const SKIP_AUTORCC_str = "SKIP_AUTORCC"; + std::string const AUTOUIC_OPTIONS_str = "AUTOUIC_OPTIONS"; + std::string const AUTORCC_OPTIONS_str = "AUTORCC_OPTIONS"; + std::string const qrc_str = "qrc"; + std::string const ui_str = "ui"; + + auto makeMUFile = [&](cmSourceFile* sf, std::string const& fullPath, + bool muIt) -> MUFileHandle { + MUFileHandle muf = cm::make_unique(); + muf->RealPath = cmSystemTools::GetRealPath(fullPath); + muf->SF = sf; + muf->Generated = sf->GetIsGenerated(); + bool const skipAutogen = sf->GetPropertyAsBool(SKIP_AUTOGEN_str); + muf->SkipMoc = this->Moc.Enabled && + (skipAutogen || sf->GetPropertyAsBool(SKIP_AUTOMOC_str)); + muf->SkipUic = this->Uic.Enabled && + (skipAutogen || sf->GetPropertyAsBool(SKIP_AUTOUIC_str)); + if (muIt) { + muf->MocIt = this->Moc.Enabled && !muf->SkipMoc; + muf->UicIt = this->Uic.Enabled && !muf->SkipUic; + } + return muf; + }; + + auto addMUFile = [&](MUFileHandle&& muf, bool isHeader) { + if ((muf->MocIt || muf->UicIt) && muf->Generated) { + this->AutogenTarget.FilesGenerated.emplace_back(muf.get()); + } + if (isHeader) { + this->AutogenTarget.Headers.emplace(muf->SF, std::move(muf)); + } else { + this->AutogenTarget.Sources.emplace(muf->SF, std::move(muf)); + } + }; // Scan through target files { - // String constants - std::string const qrc_str = "qrc"; - std::string const SKIP_AUTORCC_str = "SKIP_AUTORCC"; - std::string const AUTORCC_OPTIONS_str = "AUTORCC_OPTIONS"; - // Scan through target files std::vector srcFiles; this->Target->GetConfigCommonSourceFiles(srcFiles); for (cmSourceFile* sf : srcFiles) { - if (sf->GetPropertyAsBool(SKIP_AUTOGEN_str)) { + // 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 pathError; + std::string const& fullPath = sf->GetFullPath(&pathError); + if (!pathError.empty() || fullPath.empty()) { continue; } - - // sf->GetExtension() is only valid after sf->GetFullPath() ... - std::string const& fPath = sf->GetFullPath(); std::string const& ext = sf->GetExtension(); - // Register generated files that will be scanned by moc or uic - if (this->Moc.Enabled || this->Uic.Enabled) { - cmSystemTools::FileFormat const fileType = - cmSystemTools::GetFileFormat(ext); - if ((fileType == cmSystemTools::CXX_FILE_FORMAT) || - (fileType == cmSystemTools::HEADER_FILE_FORMAT)) { - std::string const absPath = cmSystemTools::GetRealPath(fPath); - if ((this->Moc.Enabled && - !sf->GetPropertyAsBool(SKIP_AUTOMOC_str)) || - (this->Uic.Enabled && - !sf->GetPropertyAsBool(SKIP_AUTOUIC_str))) { - // Register source - const bool generated = sf->GetIsGenerated(); - if (fileType == cmSystemTools::HEADER_FILE_FORMAT) { - if (generated) { - this->AutogenTarget.HeadersGenerated.push_back(absPath); - } else { - this->AutogenTarget.Headers.push_back(absPath); - } - } else { - if (generated) { - this->AutogenTarget.SourcesGenerated.push_back(absPath); - } else { - this->AutogenTarget.Sources.push_back(absPath); - } - } - } + // Register files that will be scanned by moc or uic + if (this->MocOrUicEnabled()) { + switch (cmSystemTools::GetFileFormat(ext)) { + case cmSystemTools::HEADER_FILE_FORMAT: + addMUFile(makeMUFile(sf, fullPath, true), true); + break; + case cmSystemTools::CXX_FILE_FORMAT: + addMUFile(makeMUFile(sf, fullPath, true), false); + break; + default: + break; } } + // Register rcc enabled files if (this->Rcc.Enabled) { - if ((ext == qrc_str) && !sf->GetPropertyAsBool(SKIP_AUTORCC_str)) { + if ((ext == qrc_str) && !sf->GetPropertyAsBool(SKIP_AUTOGEN_str) && + !sf->GetPropertyAsBool(SKIP_AUTORCC_str)) { // Register qrc file Qrc qrc; - qrc.QrcFile = cmSystemTools::GetRealPath(fPath); + qrc.QrcFile = cmSystemTools::GetRealPath(fullPath); qrc.QrcName = cmSystemTools::GetFilenameWithoutLastExtension(qrc.QrcFile); qrc.Generated = sf->GetIsGenerated(); @@ -670,11 +708,7 @@ bool cmQtAutoGenInitializer::InitScanFiles() // parameters. Historically we support non target source file parameters. // The reason is that their file names might be discovered from source files // at generation time. - if (this->Moc.Enabled || this->Uic.Enabled) { - // String constants - std::string const ui_str = "ui"; - std::string const AUTOUIC_OPTIONS_str = "AUTOUIC_OPTIONS"; - + if (this->MocOrUicEnabled()) { 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 @@ -684,132 +718,87 @@ bool cmQtAutoGenInitializer::InitScanFiles() if (!pathError.empty() || fullPath.empty()) { continue; } + std::string const& ext = sf->GetExtension(); - // Check file type - auto const fileType = cmSystemTools::GetFileFormat(sf->GetExtension()); - bool const isSource = (fileType == cmSystemTools::CXX_FILE_FORMAT) || - (fileType == cmSystemTools::HEADER_FILE_FORMAT); - bool const isUi = (this->Moc.Enabled && sf->GetExtension() == ui_str); - - // Process only certain file types - if (isSource || isUi) { - std::string const absFile = cmSystemTools::GetRealPath(fullPath); - // Acquire file properties - bool const skipAUTOGEN = sf->GetPropertyAsBool(SKIP_AUTOGEN_str); - bool const skipMoc = (this->Moc.Enabled && isSource) && - (skipAUTOGEN || sf->GetPropertyAsBool(SKIP_AUTOMOC_str)); - bool const skipUic = this->Uic.Enabled && - (skipAUTOGEN || sf->GetPropertyAsBool(SKIP_AUTOUIC_str)); - - // Register moc and uic skipped file - if (skipMoc) { - this->Moc.Skip.insert(absFile); + auto const fileFormat = cmSystemTools::GetFileFormat(ext); + if (fileFormat == cmSystemTools::HEADER_FILE_FORMAT) { + if (this->AutogenTarget.Headers.find(sf) == + this->AutogenTarget.Headers.end()) { + auto muf = makeMUFile(sf, fullPath, false); + if (muf->SkipMoc || muf->SkipUic) { + this->AutogenTarget.Headers.emplace(sf, std::move(muf)); + } } - if (skipUic) { - this->Uic.Skip.insert(absFile); + } else if (fileFormat == cmSystemTools::CXX_FILE_FORMAT) { + if (this->AutogenTarget.Sources.find(sf) == + this->AutogenTarget.Sources.end()) { + auto muf = makeMUFile(sf, fullPath, false); + if (muf->SkipMoc || muf->SkipUic) { + this->AutogenTarget.Sources.emplace(sf, std::move(muf)); + } } - - // Check if the .ui file has uic options - if (isUi && !skipUic) { + } else if (this->Uic.Enabled && (ext == ui_str)) { + // .ui file + std::string realPath = cmSystemTools::GetRealPath(fullPath); + bool const skipAutogen = sf->GetPropertyAsBool(SKIP_AUTOGEN_str); + bool const skipUic = + (skipAutogen || sf->GetPropertyAsBool(SKIP_AUTOUIC_str)); + if (!skipUic) { + // Check if the .ui file has uic options std::string const uicOpts = sf->GetSafeProperty(AUTOUIC_OPTIONS_str); if (!uicOpts.empty()) { - this->Uic.FileFiles.push_back(absFile); + this->Uic.FileFiles.push_back(std::move(realPath)); std::vector optsVec; cmSystemTools::ExpandListArgument(uicOpts, optsVec); this->Uic.FileOptions.push_back(std::move(optsVec)); } + } else { + // Register skipped .ui file + this->Uic.SkipUi.insert(std::move(realPath)); } } } } // Process GENERATED sources and headers - if (this->Moc.Enabled || this->Uic.Enabled) { - if (!this->AutogenTarget.SourcesGenerated.empty() || - !this->AutogenTarget.HeadersGenerated.empty()) { - // Check status of policy CMP0071 - bool policyAccept = false; - bool policyWarn = false; - cmPolicies::PolicyStatus const CMP0071_status = - makefile->GetPolicyStatus(cmPolicies::CMP0071); - switch (CMP0071_status) { - case cmPolicies::WARN: - policyWarn = true; - CM_FALLTHROUGH; - case cmPolicies::OLD: - // Ignore GENERATED file - break; - case cmPolicies::REQUIRED_IF_USED: - case cmPolicies::REQUIRED_ALWAYS: - case cmPolicies::NEW: - // Process GENERATED file - policyAccept = true; - break; + if (this->MocOrUicEnabled() && !this->AutogenTarget.FilesGenerated.empty()) { + if (this->CMP0071Accept) { + // Let the autogen target depend on the GENERATED files + for (MUFile* muf : this->AutogenTarget.FilesGenerated) { + this->AutogenTarget.DependFiles.insert(muf->RealPath); } - - if (policyAccept) { - // Accept GENERATED sources - for (std::string const& absFile : - this->AutogenTarget.HeadersGenerated) { - this->AutogenTarget.Headers.push_back(absFile); - this->AutogenTarget.DependFiles.insert(absFile); - } - for (std::string const& absFile : - this->AutogenTarget.SourcesGenerated) { - this->AutogenTarget.Sources.push_back(absFile); - this->AutogenTarget.DependFiles.insert(absFile); - } - } else { - if (policyWarn) { - std::string msg; - msg += cmPolicies::GetPolicyWarning(cmPolicies::CMP0071); - msg += "\n"; - std::string tools; - std::string property; - if (this->Moc.Enabled && this->Uic.Enabled) { - tools = "AUTOMOC and AUTOUIC"; - property = "SKIP_AUTOGEN"; - } else if (this->Moc.Enabled) { - tools = "AUTOMOC"; - property = "SKIP_AUTOMOC"; - } else if (this->Uic.Enabled) { - tools = "AUTOUIC"; - property = "SKIP_AUTOUIC"; - } - msg += "For compatibility, CMake is excluding the GENERATED source " - "file(s):\n"; - for (const std::string& absFile : - this->AutogenTarget.HeadersGenerated) { - msg.append(" ").append(Quoted(absFile)).append("\n"); - } - for (const std::string& absFile : - this->AutogenTarget.SourcesGenerated) { - msg.append(" ").append(Quoted(absFile)).append("\n"); - } - msg += "from processing by "; - msg += tools; - msg += - ". If any of the files should be processed, set CMP0071 to NEW. " - "If any of the files should not be processed, " - "explicitly exclude them by setting the source file property "; - msg += property; - msg += ":\n set_property(SOURCE file.h PROPERTY "; - msg += property; - msg += " ON)\n"; - makefile->IssueMessage(MessageType::AUTHOR_WARNING, msg); - } + } else if (this->CMP0071Warn) { + std::string msg; + msg += cmPolicies::GetPolicyWarning(cmPolicies::CMP0071); + msg += '\n'; + std::string property; + if (this->Moc.Enabled && this->Uic.Enabled) { + property = "SKIP_AUTOGEN"; + } else if (this->Moc.Enabled) { + property = "SKIP_AUTOMOC"; + } else if (this->Uic.Enabled) { + property = "SKIP_AUTOUIC"; + } + msg += "For compatibility, CMake is excluding the GENERATED source " + "file(s):\n"; + for (MUFile* muf : this->AutogenTarget.FilesGenerated) { + msg += " "; + msg += Quoted(muf->RealPath); + msg += '\n'; } + msg += "from processing by "; + msg += cmQtAutoGen::Tools(this->Moc.Enabled, this->Uic.Enabled, false); + msg += ". If any of the files should be processed, set CMP0071 to NEW. " + "If any of the files should not be processed, " + "explicitly exclude them by setting the source file property "; + msg += property; + msg += ":\n set_property(SOURCE file.h PROPERTY "; + msg += property; + msg += " ON)\n"; + makefile->IssueMessage(MessageType::AUTHOR_WARNING, msg); } } - // Sort headers and sources - if (this->Moc.Enabled || this->Uic.Enabled) { - std::sort(this->AutogenTarget.Headers.begin(), - this->AutogenTarget.Headers.end()); - std::sort(this->AutogenTarget.Sources.begin(), - this->AutogenTarget.Sources.end()); - } - // Process qrc files if (!this->Rcc.Qrcs.empty()) { const bool modernQt = (this->QtVersion.Major >= 5); @@ -1177,7 +1166,7 @@ bool cmQtAutoGenInitializer::SetupCustomTargets() } // Generate autogen target info file - if (this->Moc.Enabled || this->Uic.Enabled) { + if (this->MocOrUicEnabled()) { // Write autogen target info files if (!this->SetupWriteAutogenInfo()) { return false; @@ -1217,22 +1206,74 @@ bool cmQtAutoGenInitializer::SetupWriteAutogenInfo() ofs.Write("AM_INCLUDE_DIR", this->Dir.Include); ofs.WriteConfig("AM_INCLUDE_DIR", this->Dir.ConfigInclude); - ofs.Write("# Files\n"); - ofs.WriteStrings("AM_SOURCES", this->AutogenTarget.Sources); - ofs.WriteStrings("AM_HEADERS", this->AutogenTarget.Headers); - ofs.Write("AM_SETTINGS_FILE", this->AutogenTarget.SettingsFile); - ofs.WriteConfig("AM_SETTINGS_FILE", - this->AutogenTarget.ConfigSettingsFile); + // Use sorted sets + std::set headers; + std::set sources; + std::set moc_headers; + std::set moc_sources; + std::set moc_skip; + std::set uic_headers; + std::set uic_sources; + std::set uic_skip; + // Filter headers + for (auto const& pair : this->AutogenTarget.Headers) { + MUFile const& muf = *pair.second; + if (muf.Generated && !this->CMP0071Accept) { + continue; + } + if (muf.SkipMoc) { + moc_skip.insert(muf.RealPath); + } + if (muf.SkipUic) { + uic_skip.insert(muf.RealPath); + } + if (muf.MocIt && muf.UicIt) { + headers.insert(muf.RealPath); + } else if (muf.MocIt) { + moc_headers.insert(muf.RealPath); + } else if (muf.UicIt) { + uic_headers.insert(muf.RealPath); + } + } + // Filter sources + for (auto const& pair : this->AutogenTarget.Sources) { + MUFile const& muf = *pair.second; + if (muf.Generated && !this->CMP0071Accept) { + continue; + } + if (muf.SkipMoc) { + moc_skip.insert(muf.RealPath); + } + if (muf.SkipUic) { + uic_skip.insert(muf.RealPath); + } + if (muf.MocIt && muf.UicIt) { + sources.insert(muf.RealPath); + } else if (muf.MocIt) { + moc_sources.insert(muf.RealPath); + } else if (muf.UicIt) { + uic_sources.insert(muf.RealPath); + } + } ofs.Write("# Qt\n"); ofs.WriteUInt("AM_QT_VERSION_MAJOR", this->QtVersion.Major); ofs.Write("AM_QT_MOC_EXECUTABLE", this->Moc.Executable); ofs.Write("AM_QT_UIC_EXECUTABLE", this->Uic.Executable); + ofs.Write("# Files\n"); + ofs.Write("AM_SETTINGS_FILE", this->AutogenTarget.SettingsFile); + ofs.WriteConfig("AM_SETTINGS_FILE", + this->AutogenTarget.ConfigSettingsFile); + ofs.WriteStrings("AM_HEADERS", headers); + ofs.WriteStrings("AM_SOURCES", sources); + // Write moc settings if (this->Moc.Enabled) { ofs.Write("# MOC settings\n"); - ofs.WriteStrings("AM_MOC_SKIP", this->Moc.Skip); + ofs.WriteStrings("AM_MOC_HEADERS", moc_headers); + ofs.WriteStrings("AM_MOC_SOURCES", moc_sources); + ofs.WriteStrings("AM_MOC_SKIP", moc_skip); ofs.WriteStrings("AM_MOC_DEFINITIONS", this->Moc.Defines); ofs.WriteConfigStrings("AM_MOC_DEFINITIONS", this->Moc.ConfigDefines); ofs.WriteStrings("AM_MOC_INCLUDES", this->Moc.Includes); @@ -1249,8 +1290,13 @@ bool cmQtAutoGenInitializer::SetupWriteAutogenInfo() // Write uic settings if (this->Uic.Enabled) { + // Add skipped .ui files + uic_skip.insert(this->Uic.SkipUi.begin(), this->Uic.SkipUi.end()); + ofs.Write("# UIC settings\n"); - ofs.WriteStrings("AM_UIC_SKIP", this->Uic.Skip); + ofs.WriteStrings("AM_UIC_HEADERS", uic_headers); + ofs.WriteStrings("AM_UIC_SOURCES", uic_sources); + ofs.WriteStrings("AM_UIC_SKIP", uic_skip); ofs.WriteStrings("AM_UIC_TARGET_OPTIONS", this->Uic.Options); ofs.WriteConfigStrings("AM_UIC_TARGET_OPTIONS", this->Uic.ConfigOptions); ofs.WriteStrings("AM_UIC_OPTIONS_FILES", this->Uic.FileFiles); diff --git a/Source/cmQtAutoGenInitializer.h b/Source/cmQtAutoGenInitializer.h index e2bbac0..a8c7960 100644 --- a/Source/cmQtAutoGenInitializer.h +++ b/Source/cmQtAutoGenInitializer.h @@ -8,15 +8,18 @@ #include "cmQtAutoGen.h" #include +#include // IWYU pragma: keep #include #include #include +#include #include #include class cmGeneratorTarget; class cmTarget; class cmQtAutoGenGlobalInitializer; +class cmSourceFile; /// @brief Initializes the QtAutoGen generators class cmQtAutoGenInitializer : public cmQtAutoGen @@ -40,6 +43,19 @@ public: std::vector Resources; }; + /// @brief Moc/Uic file + struct MUFile + { + std::string RealPath; + cmSourceFile* SF = nullptr; + bool Generated = false; + bool SkipMoc = false; + bool SkipUic = false; + bool MocIt = false; + bool UicIt = false; + }; + typedef std::unique_ptr MUFileHandle; + /// @brief Abstract moc/uic/rcc generator variables base class struct GenVarsT { @@ -109,6 +125,12 @@ public: bool SetupCustomTargets(); private: + /// @brief If moc or uic is enabled, the autogen target will be generated + bool MocOrUicEnabled() const + { + return (this->Moc.Enabled || this->Uic.Enabled); + } + bool InitMoc(); bool InitUic(); bool InitRcc(); @@ -144,6 +166,8 @@ private: std::vector ConfigsList; std::string Verbosity; std::string TargetsFolder; + bool CMP0071Accept = false; + bool CMP0071Warn = false; /// @brief Common directories struct @@ -171,17 +195,15 @@ private: std::set DependFiles; std::set DependTargets; // Sources to process - std::vector Headers; - std::vector Sources; - std::vector HeadersGenerated; - std::vector SourcesGenerated; + std::unordered_map Headers; + std::unordered_map Sources; + std::vector FilesGenerated; } AutogenTarget; /// @brief Moc only variables struct MocT : public GenVarsT { std::string PredefsCmd; - std::set Skip; std::vector Includes; std::map> ConfigIncludes; std::set Defines; @@ -197,7 +219,7 @@ private: /// @brief Uic only variables struct UicT : public GenVarsT { - std::set Skip; + std::set SkipUi; std::vector SearchPaths; std::vector Options; std::map> ConfigOptions; diff --git a/Source/cmQtAutoGeneratorMocUic.cxx b/Source/cmQtAutoGeneratorMocUic.cxx index e4b73e6..0673f1d 100644 --- a/Source/cmQtAutoGeneratorMocUic.cxx +++ b/Source/cmQtAutoGeneratorMocUic.cxx @@ -5,11 +5,11 @@ #include #include #include -#include #include #include #include #include +#include #include #include "cmAlgorithms.h" @@ -1261,9 +1261,8 @@ bool cmQtAutoGeneratorMocUic::Init(cmMakefile* makefile) Moc_.Executable = InfoGet("AM_QT_MOC_EXECUTABLE"); Moc_.Enabled = !Moc().Executable.empty(); if (Moc().Enabled) { - { - auto lst = InfoGetList("AM_MOC_SKIP"); - Moc_.SkipList.insert(lst.begin(), lst.end()); + for (std::string& sfl : InfoGetList("AM_MOC_SKIP")) { + Moc_.SkipList.insert(std::move(sfl)); } Moc_.Definitions = InfoGetConfigList("AM_MOC_DEFINITIONS"); Moc_.IncludePaths = InfoGetConfigList("AM_MOC_INCLUDES"); @@ -1346,9 +1345,8 @@ bool cmQtAutoGeneratorMocUic::Init(cmMakefile* makefile) Uic_.Executable = InfoGet("AM_QT_UIC_EXECUTABLE"); Uic_.Enabled = !Uic().Executable.empty(); if (Uic().Enabled) { - { - auto lst = InfoGetList("AM_UIC_SKIP"); - Uic_.SkipList.insert(lst.begin(), lst.end()); + for (std::string& sfl : InfoGetList("AM_UIC_SKIP")) { + Uic_.SkipList.insert(std::move(sfl)); } Uic_.SearchPaths = InfoGetList("AM_UIC_SEARCH_PATHS"); Uic_.TargetOptions = InfoGetConfigList("AM_UIC_TARGET_OPTIONS"); @@ -1374,53 +1372,68 @@ bool cmQtAutoGeneratorMocUic::Init(cmMakefile* makefile) } } - // Initialize source file jobs + // - Headers and sources { - std::hash stringHash; - std::set uniqueHeaders; - - // Add header jobs - for (std::string& hdr : InfoGetList("AM_HEADERS")) { - const bool moc = !Moc().skipped(hdr); - const bool uic = !Uic().skipped(hdr); - if ((moc || uic) && uniqueHeaders.emplace(stringHash(hdr)).second) { - JobQueues_.Headers.emplace_back( + std::unordered_set headers; + auto addHeader = [this, &headers](std::string&& hdr, bool moc, bool uic) { + if (headers.emplace(hdr).second) { + this->JobQueues_.Headers.emplace_back( cm::make_unique(std::move(hdr), moc, uic, true)); } - } - // Add source jobs - { - std::vector sources = InfoGetList("AM_SOURCES"); - // Add header(s) for the source file - for (std::string& src : sources) { - const bool srcMoc = !Moc().skipped(src); - const bool srcUic = !Uic().skipped(src); - if (!srcMoc && !srcUic) { - continue; - } - // Search for the default header file and a private header - { - std::array bases; - bases[0] = FileSys().SubDirPrefix(src); - bases[0] += FileSys().GetFilenameWithoutLastExtension(src); - bases[1] = bases[0]; - bases[1] += "_p"; - for (std::string const& headerBase : bases) { - std::string header; - if (Base().FindHeader(header, headerBase)) { - const bool moc = srcMoc && !Moc().skipped(header); - const bool uic = srcUic && !Uic().skipped(header); - if ((moc || uic) && - uniqueHeaders.emplace(stringHash(header)).second) { - JobQueues_.Headers.emplace_back(cm::make_unique( - std::move(header), moc, uic, true)); - } + }; + auto addSource = [this, &addHeader](std::string&& src, bool moc, + bool uic) { + // Search for the default header file and a private header + { + std::array bases; + bases[0] = FileSys().SubDirPrefix(src); + bases[0] += FileSys().GetFilenameWithoutLastExtension(src); + bases[1] = bases[0]; + bases[1] += "_p"; + for (std::string const& headerBase : bases) { + std::string header; + if (Base().FindHeader(header, headerBase)) { + bool const hdrMoc = moc && !Moc().skipped(header); + bool const hdrUic = uic && !Uic().skipped(header); + if (hdrMoc || hdrUic) { + // Add additional header job + addHeader(std::move(header), hdrMoc, hdrUic); } } } - // Add source job - JobQueues_.Sources.emplace_back( - cm::make_unique(std::move(src), srcMoc, srcUic)); + } + // Add actual source job + this->JobQueues_.Sources.emplace_back( + cm::make_unique(std::move(src), moc, uic, false)); + }; + + // Add headers + for (std::string& hdr : InfoGetList("AM_HEADERS")) { + addHeader(std::move(hdr), true, true); + } + if (Moc().Enabled) { + for (std::string& hdr : InfoGetList("AM_MOC_HEADERS")) { + addHeader(std::move(hdr), true, false); + } + } + if (Uic().Enabled) { + for (std::string& hdr : InfoGetList("AM_UIC_HEADERS")) { + addHeader(std::move(hdr), false, true); + } + } + + // Add sources + for (std::string& src : InfoGetList("AM_SOURCES")) { + addSource(std::move(src), true, true); + } + if (Moc().Enabled) { + for (std::string& src : InfoGetList("AM_MOC_SOURCES")) { + addSource(std::move(src), true, false); + } + } + if (Uic().Enabled) { + for (std::string& src : InfoGetList("AM_UIC_SOURCES")) { + addSource(std::move(src), false, true); } } } https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2d291667582dc8129ed1c3c4e7d7333f3b8627f4 commit 2d291667582dc8129ed1c3c4e7d7333f3b8627f4 Author: Sebastian Holtermann AuthorDate: Thu Feb 21 20:11:22 2019 +0100 Commit: Sebastian Holtermann CommitDate: Fri Feb 22 10:10:42 2019 +0100 Autogen: Use cm::make_unique to allocate jobs diff --git a/Source/cmQtAutoGeneratorMocUic.cxx b/Source/cmQtAutoGeneratorMocUic.cxx index c337ba4..e4b73e6 100644 --- a/Source/cmQtAutoGeneratorMocUic.cxx +++ b/Source/cmQtAutoGeneratorMocUic.cxx @@ -432,8 +432,8 @@ bool cmQtAutoGeneratorMocUic::JobParseT::ParseMocSource(WorkerT& wrk, // Convert pre jobs to actual jobs for (JobPre& jobPre : jobs) { - JobHandleT jobHandle(new JobMocT(std::move(jobPre.SourceFile), FileName, - std::move(jobPre.IncludeString))); + JobHandleT jobHandle = cm::make_unique( + std::move(jobPre.SourceFile), FileName, std::move(jobPre.IncludeString)); if (jobPre.self) { // Read dependencies from this source static_cast(*jobHandle).FindDependencies(wrk, meta.Content); @@ -451,8 +451,8 @@ bool cmQtAutoGeneratorMocUic::JobParseT::ParseMocHeader(WorkerT& wrk, bool success = true; std::string const macroName = wrk.Moc().FindMacro(meta.Content); if (!macroName.empty()) { - JobHandleT jobHandle( - new JobMocT(std::string(FileName), std::string(), std::string())); + JobHandleT jobHandle = cm::make_unique( + std::string(FileName), std::string(), std::string()); // Read dependencies from this source static_cast(*jobHandle).FindDependencies(wrk, meta.Content); success = wrk.Gen().ParallelJobPushMoc(jobHandle); @@ -518,8 +518,8 @@ bool cmQtAutoGeneratorMocUic::JobParseT::ParseUicInclude( std::string uiInputFile = UicFindIncludedFile(wrk, meta, includeString); if (!uiInputFile.empty()) { if (!wrk.Uic().skipped(uiInputFile)) { - JobHandleT jobHandle(new JobUicT(std::move(uiInputFile), FileName, - std::move(includeString))); + JobHandleT jobHandle = cm::make_unique( + std::move(uiInputFile), FileName, std::move(includeString)); success = wrk.Gen().ParallelJobPushUic(jobHandle); } else { // A skipped file is successful @@ -993,11 +993,6 @@ void cmQtAutoGeneratorMocUic::JobUicT::GenerateUic(WorkerT& wrk) } } -void cmQtAutoGeneratorMocUic::JobDeleterT::operator()(JobT* job) -{ - delete job; -} - cmQtAutoGeneratorMocUic::WorkerT::WorkerT(cmQtAutoGeneratorMocUic* gen, uv_loop_t* uvLoop) : Gen_(gen) @@ -1343,7 +1338,7 @@ bool cmQtAutoGeneratorMocUic::Init(cmMakefile* makefile) Moc_.PredefsCmd = InfoGetList("AM_MOC_PREDEFS_CMD"); // Install moc predefs job if (!Moc().PredefsCmd.empty()) { - JobQueues_.MocPredefs.emplace_back(new JobMocPredefsT()); + JobQueues_.MocPredefs.emplace_back(cm::make_unique()); } } @@ -1390,7 +1385,7 @@ bool cmQtAutoGeneratorMocUic::Init(cmMakefile* makefile) const bool uic = !Uic().skipped(hdr); if ((moc || uic) && uniqueHeaders.emplace(stringHash(hdr)).second) { JobQueues_.Headers.emplace_back( - new JobParseT(std::move(hdr), moc, uic, true)); + cm::make_unique(std::move(hdr), moc, uic, true)); } } // Add source jobs @@ -1417,15 +1412,15 @@ bool cmQtAutoGeneratorMocUic::Init(cmMakefile* makefile) const bool uic = srcUic && !Uic().skipped(header); if ((moc || uic) && uniqueHeaders.emplace(stringHash(header)).second) { - JobQueues_.Headers.emplace_back( - new JobParseT(std::move(header), moc, uic, true)); + JobQueues_.Headers.emplace_back(cm::make_unique( + std::move(header), moc, uic, true)); } } } } // Add source job JobQueues_.Sources.emplace_back( - new JobParseT(std::move(src), srcMoc, srcUic)); + cm::make_unique(std::move(src), srcMoc, srcUic)); } } } @@ -1797,7 +1792,7 @@ void cmQtAutoGeneratorMocUic::WorkerSwapJob(JobHandleT& jobHandle) { bool const jobProcessed(jobHandle); if (jobProcessed) { - jobHandle.reset(nullptr); + jobHandle.reset(); } { std::unique_lock jobsLock(JobsMutex_); diff --git a/Source/cmQtAutoGeneratorMocUic.h b/Source/cmQtAutoGeneratorMocUic.h index 989d9ab..e48d7f3 100644 --- a/Source/cmQtAutoGeneratorMocUic.h +++ b/Source/cmQtAutoGeneratorMocUic.h @@ -187,15 +187,8 @@ public: virtual void Process(WorkerT& wrk) = 0; }; - /// @brief Deleter for classes derived from Job - /// - struct JobDeleterT - { - void operator()(JobT* job); - }; - // Job management types - typedef std::unique_ptr JobHandleT; + typedef std::unique_ptr JobHandleT; typedef std::deque JobQueueT; /// @brief Parse source job https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8182c21d2d40506c3d4b0751e559173d0b47cdb5 commit 8182c21d2d40506c3d4b0751e559173d0b47cdb5 Author: Sebastian Holtermann AuthorDate: Fri Feb 22 10:09:26 2019 +0100 Commit: Sebastian Holtermann CommitDate: Fri Feb 22 10:10:42 2019 +0100 Autogen: Use std::unordered_set instead of std::set for skip lists diff --git a/Source/cmQtAutoGeneratorMocUic.h b/Source/cmQtAutoGeneratorMocUic.h index b40b48f..989d9ab 100644 --- a/Source/cmQtAutoGeneratorMocUic.h +++ b/Source/cmQtAutoGeneratorMocUic.h @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -133,7 +134,7 @@ public: std::string CompFileAbs; std::string PredefsFileRel; std::string PredefsFileAbs; - std::set SkipList; + std::unordered_set SkipList; std::vector IncludePaths; std::vector Includes; std::vector Definitions; @@ -164,7 +165,7 @@ public: bool Enabled = false; bool SettingsChanged = false; std::string Executable; - std::set SkipList; + std::unordered_set SkipList; std::vector TargetOptions; std::map> Options; std::vector SearchPaths; https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=84819c79e7efde0155dbb8431d0a205b325ce1cc commit 84819c79e7efde0155dbb8431d0a205b325ce1cc Author: Sebastian Holtermann AuthorDate: Thu Feb 21 11:18:17 2019 +0100 Commit: Sebastian Holtermann CommitDate: Thu Feb 21 18:27:21 2019 +0100 Autogen: Refactor cmQtAutoGenInitializer::AddGeneratedSource method In AUTOGEN pass the abstract cmQtAutoGenInitializer::GenVarsT to methods to identify the generator (moc/uic/rcc). diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx index 1095dad..7c70dc4 100644 --- a/Source/cmQtAutoGenInitializer.cxx +++ b/Source/cmQtAutoGenInitializer.cxx @@ -53,58 +53,6 @@ static std::size_t GetParallelCPUCount() return count; } -static bool AddToSourceGroup(cmMakefile* makefile, std::string const& fileName, - cmQtAutoGen::GenT genType) -{ - cmSourceGroup* sourceGroup = nullptr; - // Acquire source group - { - std::string property; - std::string groupName; - { - std::array props; - // Use generator specific group name - switch (genType) { - case cmQtAutoGen::GenT::MOC: - props[0] = "AUTOMOC_SOURCE_GROUP"; - break; - case cmQtAutoGen::GenT::RCC: - props[0] = "AUTORCC_SOURCE_GROUP"; - break; - default: - props[0] = "AUTOGEN_SOURCE_GROUP"; - break; - } - props[1] = "AUTOGEN_SOURCE_GROUP"; - for (std::string& prop : props) { - const char* propName = makefile->GetState()->GetGlobalProperty(prop); - if ((propName != nullptr) && (*propName != '\0')) { - groupName = propName; - property = std::move(prop); - break; - } - } - } - // Generate a source group on demand - if (!groupName.empty()) { - sourceGroup = makefile->GetOrCreateSourceGroup(groupName); - if (sourceGroup == nullptr) { - std::ostringstream ost; - ost << cmQtAutoGen::GeneratorNameUpper(genType); - ost << ": " << property; - ost << ": Could not find or create the source group "; - ost << cmQtAutoGen::Quoted(groupName); - cmSystemTools::Error(ost.str()); - return false; - } - } - } - if (sourceGroup != nullptr) { - sourceGroup->AddGroupFile(fileName); - } - return true; -} - static void AddCleanFile(cmMakefile* makefile, std::string const& fileName) { makefile->AppendProperty("ADDITIONAL_MAKE_CLEAN_FILES", fileName.c_str(), @@ -969,7 +917,7 @@ bool cmQtAutoGenInitializer::InitAutogenTarget() // Files provided by the autogen target std::vector autogenProvides; if (this->Moc.Enabled) { - this->AddGeneratedSource(this->Moc.MocsCompilation, GenT::MOC, true); + this->AddGeneratedSource(this->Moc.MocsCompilation, this->Moc, true); autogenProvides.push_back(this->Moc.MocsCompilation); } @@ -1122,7 +1070,7 @@ bool cmQtAutoGenInitializer::InitRccTargets() // Register info file as generated by CMake makefile->AddCMakeOutputFile(qrc.InfoFile); // Register file at target - this->AddGeneratedSource(qrc.RccFile, GenT::RCC); + this->AddGeneratedSource(qrc.RccFile, this->Rcc); std::vector ccOutput; ccOutput.push_back(qrc.RccFile); @@ -1360,22 +1308,68 @@ bool cmQtAutoGenInitializer::SetupWriteRccInfo() return true; } -void cmQtAutoGenInitializer::AddGeneratedSource(std::string const& filename, - GenT genType, bool prepend) +void cmQtAutoGenInitializer::RegisterGeneratedSource( + std::string const& filename) { - // Register source file in makefile cmMakefile* makefile = this->Target->Target->GetMakefile(); - { - cmSourceFile* gFile = makefile->GetOrCreateSource(filename, true); - gFile->SetProperty("GENERATED", "1"); - gFile->SetProperty("SKIP_AUTOGEN", "On"); - } - - // Add source file to source group - AddToSourceGroup(makefile, filename, genType); + cmSourceFile* gFile = makefile->GetOrCreateSource(filename, true); + gFile->SetProperty("GENERATED", "1"); + gFile->SetProperty("SKIP_AUTOGEN", "1"); +} +bool cmQtAutoGenInitializer::AddGeneratedSource(std::string const& filename, + GenVarsT const& genVars, + bool prepend) +{ + // Register source at makefile + this->RegisterGeneratedSource(filename); // Add source file to target this->Target->AddSource(filename, prepend); + // Add source file to source group + return this->AddToSourceGroup(filename, genVars.GenNameUpper); +} + +bool cmQtAutoGenInitializer::AddToSourceGroup(std::string const& fileName, + std::string const& genNameUpper) +{ + cmMakefile* makefile = this->Target->Target->GetMakefile(); + cmSourceGroup* sourceGroup = nullptr; + // Acquire source group + { + std::string property; + std::string groupName; + { + // Prefer generator specific source group name + std::array props{ { genNameUpper + "_SOURCE_GROUP", + "AUTOGEN_SOURCE_GROUP" } }; + for (std::string& prop : props) { + const char* propName = makefile->GetState()->GetGlobalProperty(prop); + if ((propName != nullptr) && (*propName != '\0')) { + groupName = propName; + property = std::move(prop); + break; + } + } + } + // Generate a source group on demand + if (!groupName.empty()) { + sourceGroup = makefile->GetOrCreateSourceGroup(groupName); + if (sourceGroup == nullptr) { + std::string err; + err += genNameUpper; + err += " error in "; + err += property; + err += ": Could not find or create the source group "; + err += cmQtAutoGen::Quoted(groupName); + cmSystemTools::Error(err); + return false; + } + } + } + if (sourceGroup != nullptr) { + sourceGroup->AddGroupFile(fileName); + } + return true; } static unsigned int CharPtrToUInt(const char* const input) diff --git a/Source/cmQtAutoGenInitializer.h b/Source/cmQtAutoGenInitializer.h index d3db8ea..e2bbac0 100644 --- a/Source/cmQtAutoGenInitializer.h +++ b/Source/cmQtAutoGenInitializer.h @@ -120,8 +120,11 @@ private: bool SetupWriteAutogenInfo(); bool SetupWriteRccInfo(); - void AddGeneratedSource(std::string const& filename, GenT genType, + void RegisterGeneratedSource(std::string const& filename); + bool AddGeneratedSource(std::string const& filename, GenVarsT const& genVars, bool prepend = false); + bool AddToSourceGroup(std::string const& fileName, + std::string const& genNameUpper); bool GetQtExecutable(GenVarsT& genVars, const std::string& executable, bool ignoreMissingTarget, std::string* output) const; https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d9893fb594c904605b3b9ebf3548d2f48793f788 commit d9893fb594c904605b3b9ebf3548d2f48793f788 Author: Sebastian Holtermann AuthorDate: Tue Feb 12 15:59:52 2019 +0100 Commit: Sebastian Holtermann CommitDate: Thu Feb 21 18:27:10 2019 +0100 Autogen: Refactor Qt executable name computation In AUTOGEN a common new base class cmQtAutoGenInitializer::GenVarsT for mo/uic/rcc generator variables allows to generalize variable computation functions. diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx index da0d2f4..1095dad 100644 --- a/Source/cmQtAutoGenInitializer.cxx +++ b/Source/cmQtAutoGenInitializer.cxx @@ -36,25 +36,9 @@ #include #include #include -#include #include #include -std::string GetQtExecutableTargetName( - const cmQtAutoGen::IntegerVersion& qtVersion, std::string const& executable) -{ - if (qtVersion.Major == 6) { - return ("Qt6::" + executable); - } - if (qtVersion.Major == 5) { - return ("Qt5::" + executable); - } - if (qtVersion.Major == 4) { - return ("Qt4::" + executable); - } - return (""); -} - static std::size_t GetParallelCPUCount() { static std::size_t count = 0; @@ -399,16 +383,8 @@ bool cmQtAutoGenInitializer::InitCustomTargets() } // Init uic specific settings - if (this->Uic.Enabled) { - if (InitUic()) { - auto* uicTarget = makefile->FindTargetToUse( - GetQtExecutableTargetName(this->QtVersion, "uic")); - if (uicTarget != nullptr) { - this->AutogenTarget.DependTargets.insert(uicTarget); - } - } else { - return false; - } + if (this->Uic.Enabled && !InitUic()) { + return false; } // Autogen target name @@ -449,12 +425,6 @@ bool cmQtAutoGenInitializer::InitCustomTargets() this->AutogenTarget.DependOrigin = this->Target->GetPropertyAsBool("AUTOGEN_ORIGIN_DEPENDS"); - auto* mocTarget = makefile->FindTargetToUse( - GetQtExecutableTargetName(this->QtVersion, "moc")); - if (mocTarget != nullptr) { - this->AutogenTarget.DependTargets.insert(mocTarget); - } - std::string const deps = this->Target->GetSafeProperty("AUTOGEN_TARGET_DEPENDS"); if (!deps.empty()) { @@ -575,7 +545,18 @@ bool cmQtAutoGenInitializer::InitMoc() } // Moc executable - return GetMocExecutable(); + { + if (!this->GetQtExecutable(this->Moc, "moc", false, nullptr)) { + return false; + } + // Let the _autogen target depend on the moc executable + if (this->Moc.ExecutableTarget != nullptr) { + this->AutogenTarget.DependTargets.insert( + this->Moc.ExecutableTarget->Target); + } + } + + return true; } bool cmQtAutoGenInitializer::InitUic() @@ -618,12 +599,39 @@ bool cmQtAutoGenInitializer::InitUic() } // Uic executable - return GetUicExecutable(); + { + if (!this->GetQtExecutable(this->Uic, "uic", true, nullptr)) { + return false; + } + // Let the _autogen target depend on the uic executable + if (this->Uic.ExecutableTarget != nullptr) { + this->AutogenTarget.DependTargets.insert( + this->Uic.ExecutableTarget->Target); + } + } + + return true; } bool cmQtAutoGenInitializer::InitRcc() { - return GetRccExecutable(); + // Rcc executable + { + std::string stdOut; + if (!this->GetQtExecutable(this->Rcc, "rcc", false, &stdOut)) { + return false; + } + // Evaluate test output + if (this->QtVersion.Major == 5 || this->QtVersion.Major == 6) { + if (stdOut.find("--list") != std::string::npos) { + this->Rcc.ListOptions.emplace_back("--list"); + } else { + this->Rcc.ListOptions.emplace_back("-list"); + } + } + } + + return true; } bool cmQtAutoGenInitializer::InitScanFiles() @@ -1109,7 +1117,6 @@ bool cmQtAutoGenInitializer::InitRccTargets() { cmMakefile* makefile = this->Target->Target->GetMakefile(); cmLocalGenerator* localGen = this->Target->GetLocalGenerator(); - auto rccTargetName = GetQtExecutableTargetName(this->QtVersion, "rcc"); for (Qrc const& qrc : this->Rcc.Qrcs) { // Register info file as generated by CMake @@ -1174,8 +1181,8 @@ bool cmQtAutoGenInitializer::InitRccTargets() if (!this->TargetsFolder.empty()) { autoRccTarget->SetProperty("FOLDER", this->TargetsFolder.c_str()); } - if (!rccTargetName.empty()) { - autoRccTarget->AddUtility(rccTargetName, makefile); + if (!this->Rcc.ExecutableTargetName.empty()) { + autoRccTarget->AddUtility(this->Rcc.ExecutableTargetName, makefile); } } // Add autogen target to the origin target dependencies @@ -1195,8 +1202,8 @@ bool cmQtAutoGenInitializer::InitRccTargets() // Add resource file to the custom command dependencies ccDepends.push_back(fileName); } - if (!rccTargetName.empty()) { - ccDepends.push_back(rccTargetName); + if (!this->Rcc.ExecutableTargetName.empty()) { + ccDepends.push_back(this->Rcc.ExecutableTargetName); } makefile->AddCustomCommandToOutput(ccOutput, ccByproducts, ccDepends, /*main_dependency*/ std::string(), @@ -1383,8 +1390,12 @@ static unsigned int CharPtrToUInt(const char* const input) static std::vector GetKnownQtVersions( cmGeneratorTarget const* target) { - cmMakefile* makefile = target->Target->GetMakefile(); + // Qt version variable prefixes + static std::array const prefixes{ { "Qt6Core", "Qt5Core", + "QT" } }; + std::vector result; + result.reserve(prefixes.size() * 2); // Adds a version to the result (nullptr safe) auto addVersion = [&result](const char* major, const char* minor) { cmQtAutoGen::IntegerVersion ver(CharPtrToUInt(major), @@ -1393,8 +1404,7 @@ static std::vector GetKnownQtVersions( result.emplace_back(ver); } }; - // Qt version variable prefixes - std::array const prefixes{ { "Qt6Core", "Qt5Core", "QT" } }; + cmMakefile* makefile = target->Target->GetMakefile(); // Read versions from variables for (const std::string& prefix : prefixes) { @@ -1438,99 +1448,89 @@ cmQtAutoGenInitializer::GetQtVersion(cmGeneratorTarget const* target) return res; } -std::pair cmQtAutoGenInitializer::GetQtExecutable( - const std::string& executable, bool ignoreMissingTarget, std::string* output) +bool cmQtAutoGenInitializer::GetQtExecutable(GenVarsT& genVars, + const std::string& executable, + bool ignoreMissingTarget, + std::string* output) const { - const std::string upperExecutable = cmSystemTools::UpperCase(executable); - std::string result = this->Target->Target->GetSafeProperty( - "AUTO" + upperExecutable + "_EXECUTABLE"); - if (!result.empty()) { - cmListFileBacktrace lfbt = - this->Target->Target->GetMakefile()->GetBacktrace(); - cmGeneratorExpression ge(lfbt); - std::unique_ptr cge = ge.Parse(result); - result = cge->Evaluate(this->Target->GetLocalGenerator(), ""); - - return std::make_pair(true, result); - } + auto print_err = [this, &genVars](std::string const& err) { + std::string msg = genVars.GenNameUpper; + msg += " for target "; + msg += this->Target->GetName(); + msg += ": "; + msg += err; + cmSystemTools::Error(msg); + }; - std::string err; + // Custom executable + { + std::string const prop = genVars.GenNameUpper + "_EXECUTABLE"; + std::string const val = this->Target->Target->GetSafeProperty(prop); + if (!val.empty()) { + // Evaluate generator expression + { + cmListFileBacktrace lfbt = + this->Target->Target->GetMakefile()->GetBacktrace(); + cmGeneratorExpression ge(lfbt); + std::unique_ptr cge = ge.Parse(val); + genVars.Executable = + cge->Evaluate(this->Target->GetLocalGenerator(), ""); + } + if (genVars.Executable.empty() && !ignoreMissingTarget) { + print_err(prop + " evaluates to an empty value"); + return false; + } + return true; + } + } - // Find executable + // Find executable target { - const std::string targetName = - GetQtExecutableTargetName(this->QtVersion, executable); - if (targetName.empty()) { - err = "The AUTO" + upperExecutable + " feature "; - err += "supports only Qt 4, Qt 5 and Qt 6."; - } else { - cmLocalGenerator* localGen = this->Target->GetLocalGenerator(); - cmGeneratorTarget* tgt = localGen->FindGeneratorTargetToUse(targetName); - if (tgt != nullptr) { - if (tgt->IsImported()) { - result = tgt->ImportedGetLocation(""); - } else { - result = tgt->GetLocation(""); - } + // Find executable target name + std::string targetName; + if (this->QtVersion.Major == 4) { + targetName = "Qt4::"; + } else if (this->QtVersion.Major == 5) { + targetName = "Qt5::"; + } else if (this->QtVersion.Major == 6) { + targetName = "Qt6::"; + } + targetName += executable; + + // Find target + cmLocalGenerator* localGen = this->Target->GetLocalGenerator(); + cmGeneratorTarget* target = localGen->FindGeneratorTargetToUse(targetName); + if (target != nullptr) { + genVars.ExecutableTargetName = targetName; + genVars.ExecutableTarget = target; + if (target->IsImported()) { + genVars.Executable = target->ImportedGetLocation(""); } else { - if (ignoreMissingTarget) { - return std::make_pair(true, ""); - } - - err = "Could not find target " + targetName; + genVars.Executable = target->GetLocation(""); } + } else { + if (ignoreMissingTarget) { + return true; + } + std::string err = "Could not find "; + err += executable; + err += " executable target "; + err += targetName; + print_err(err); + return false; } } // Test executable - if (err.empty()) { - this->GlobalInitializer->GetExecutableTestOutput(executable, result, err, - output); - } - - // Print error - if (!err.empty()) { - std::string msg = "AutoGen ("; - msg += this->Target->GetName(); - msg += "): "; - msg += err; - cmSystemTools::Error(msg); - return std::make_pair(false, ""); - } - - return std::make_pair(true, result); -} - -bool cmQtAutoGenInitializer::GetMocExecutable() -{ - const auto result = this->GetQtExecutable("moc", false, nullptr); - this->Moc.Executable = result.second; - return result.first; -} - -bool cmQtAutoGenInitializer::GetUicExecutable() -{ - const auto result = this->GetQtExecutable("uic", true, nullptr); - this->Uic.Executable = result.second; - return result.first; -} - -bool cmQtAutoGenInitializer::GetRccExecutable() -{ - std::string stdOut; - const auto result = this->GetQtExecutable("rcc", false, &stdOut); - this->Rcc.Executable = result.second; - if (!result.first) { - return false; - } - - if (this->QtVersion.Major == 5 || this->QtVersion.Major == 6) { - if (stdOut.find("--list") != std::string::npos) { - this->Rcc.ListOptions.emplace_back("--list"); - } else { - this->Rcc.ListOptions.emplace_back("-list"); + { + std::string err; + if (!this->GlobalInitializer->GetExecutableTestOutput( + executable, genVars.Executable, err, output)) { + print_err(err); + return false; } } + return true; } diff --git a/Source/cmQtAutoGenInitializer.h b/Source/cmQtAutoGenInitializer.h index 816e1af..d3db8ea 100644 --- a/Source/cmQtAutoGenInitializer.h +++ b/Source/cmQtAutoGenInitializer.h @@ -40,6 +40,27 @@ public: std::vector Resources; }; + /// @brief Abstract moc/uic/rcc generator variables base class + struct GenVarsT + { + bool Enabled = false; + // Generator type/name + GenT Gen; + std::string const& GenName; + std::string const& GenNameUpper; + // Executable + std::string ExecutableTargetName; + cmGeneratorTarget* ExecutableTarget = nullptr; + std::string Executable; + + /// @brief Constructor + GenVarsT(GenT gen, std::string const& genName, + std::string const& genNameUpper) + : Gen(gen) + , GenName(genName) + , GenNameUpper(genNameUpper){}; + }; + /// @brief Writes a CMake info file class InfoWriter { @@ -102,18 +123,13 @@ private: void AddGeneratedSource(std::string const& filename, GenT genType, bool prepend = false); - bool GetMocExecutable(); - bool GetUicExecutable(); - bool GetRccExecutable(); + bool GetQtExecutable(GenVarsT& genVars, const std::string& executable, + bool ignoreMissingTarget, std::string* output) const; bool RccListInputs(std::string const& fileName, std::vector& files, std::string& errorMessage); - std::pair GetQtExecutable(const std::string& executable, - bool ignoreMissingTarget, - std::string* output); - private: cmQtAutoGenGlobalInitializer* GlobalInitializer; cmGeneratorTarget* Target; @@ -159,10 +175,8 @@ private: } AutogenTarget; /// @brief Moc only variables - struct + struct MocT : public GenVarsT { - bool Enabled = false; - std::string Executable; std::string PredefsCmd; std::set Skip; std::vector Includes; @@ -170,29 +184,40 @@ private: std::set Defines; std::map> ConfigDefines; std::string MocsCompilation; + + /// @brief Constructor + MocT() + : GenVarsT(cmQtAutoGen::GenT::MOC, cmQtAutoGen::GenNameMoc, + cmQtAutoGen::GenNameMocUpper){}; } Moc; - ///@brief Uic only variables - struct + /// @brief Uic only variables + struct UicT : public GenVarsT { - bool Enabled = false; - std::string Executable; std::set Skip; std::vector SearchPaths; std::vector Options; std::map> ConfigOptions; std::vector FileFiles; std::vector> FileOptions; + + /// @brief Constructor + UicT() + : GenVarsT(cmQtAutoGen::GenT::UIC, cmQtAutoGen::GenNameUic, + cmQtAutoGen::GenNameUicUpper){}; } Uic; /// @brief Rcc only variables - struct + struct RccT : public GenVarsT { - bool Enabled = false; bool GlobalTarget = false; - std::string Executable; std::vector ListOptions; std::vector Qrcs; + + /// @brief Constructor + RccT() + : GenVarsT(cmQtAutoGen::GenT::RCC, cmQtAutoGen::GenNameRcc, + cmQtAutoGen::GenNameRccUpper){}; } Rcc; }; https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5e36209f716900cb8a61c1bffd480c639be041bb commit 5e36209f716900cb8a61c1bffd480c639be041bb Author: Sebastian Holtermann AuthorDate: Thu Feb 21 10:17:52 2019 +0100 Commit: Sebastian Holtermann CommitDate: Thu Feb 21 11:38:30 2019 +0100 Autogen: Rename cmQtAutoGen::GeneratorT enum to cmQtAutoGen::GenT diff --git a/Source/cmQtAutoGen.cxx b/Source/cmQtAutoGen.cxx index 6e24332..25ef4fc 100644 --- a/Source/cmQtAutoGen.cxx +++ b/Source/cmQtAutoGen.cxx @@ -83,31 +83,31 @@ std::string const cmQtAutoGen::GenNameMocUpper = "AUTOMOC"; std::string const cmQtAutoGen::GenNameUicUpper = "AUTOUIC"; std::string const cmQtAutoGen::GenNameRccUpper = "AUTORCC"; -std::string const& cmQtAutoGen::GeneratorName(GeneratorT genType) +std::string const& cmQtAutoGen::GeneratorName(GenT genType) { switch (genType) { - case GeneratorT::GEN: + case GenT::GEN: return GenNameGen; - case GeneratorT::MOC: + case GenT::MOC: return GenNameMoc; - case GeneratorT::UIC: + case GenT::UIC: return GenNameUic; - case GeneratorT::RCC: + case GenT::RCC: return GenNameRcc; } return GenNameGen; } -std::string const& cmQtAutoGen::GeneratorNameUpper(GeneratorT genType) +std::string const& cmQtAutoGen::GeneratorNameUpper(GenT genType) { switch (genType) { - case GeneratorT::GEN: + case GenT::GEN: return GenNameGenUpper; - case GeneratorT::MOC: + case GenT::MOC: return GenNameMocUpper; - case GeneratorT::UIC: + case GenT::UIC: return GenNameUicUpper; - case GeneratorT::RCC: + case GenT::RCC: return GenNameRccUpper; } return GenNameGenUpper; diff --git a/Source/cmQtAutoGen.h b/Source/cmQtAutoGen.h index 03dbded..e62a947 100644 --- a/Source/cmQtAutoGen.h +++ b/Source/cmQtAutoGen.h @@ -14,18 +14,6 @@ class cmQtAutoGen { public: - /// @brief Maximum number of parallel threads/processes in a generator - static unsigned int const ParallelMax; - - /// @brief AutoGen generator type - enum class GeneratorT - { - GEN, // AUTOGEN - MOC, - UIC, - RCC - }; - /// @brief Integer version struct IntegerVersion { @@ -52,6 +40,15 @@ public: } }; + /// @brief AutoGen generator type + enum class GenT + { + GEN, // AUTOGEN + MOC, // AUTOMOC + UIC, // AUTOUIC + RCC // AUTORCC + }; + /// @brief Nested lists separator static std::string const ListSep; // Generator names @@ -63,12 +60,14 @@ public: static std::string const GenNameMocUpper; static std::string const GenNameUicUpper; static std::string const GenNameRccUpper; + /// @brief Maximum number of parallel threads/processes in a generator + static unsigned int const ParallelMax; public: /// @brief Returns the generator name - static std::string const& GeneratorName(GeneratorT genType); + static std::string const& GeneratorName(GenT genType); /// @brief Returns the generator name in upper case - static std::string const& GeneratorNameUpper(GeneratorT genType); + static std::string const& GeneratorNameUpper(GenT genType); /// @brief Returns a string with the requested tool names static std::string Tools(bool moc, bool uic, bool rcc); diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx index 614a88b..da0d2f4 100644 --- a/Source/cmQtAutoGenInitializer.cxx +++ b/Source/cmQtAutoGenInitializer.cxx @@ -70,7 +70,7 @@ static std::size_t GetParallelCPUCount() } static bool AddToSourceGroup(cmMakefile* makefile, std::string const& fileName, - cmQtAutoGen::GeneratorT genType) + cmQtAutoGen::GenT genType) { cmSourceGroup* sourceGroup = nullptr; // Acquire source group @@ -81,10 +81,10 @@ static bool AddToSourceGroup(cmMakefile* makefile, std::string const& fileName, std::array props; // Use generator specific group name switch (genType) { - case cmQtAutoGen::GeneratorT::MOC: + case cmQtAutoGen::GenT::MOC: props[0] = "AUTOMOC_SOURCE_GROUP"; break; - case cmQtAutoGen::GeneratorT::RCC: + case cmQtAutoGen::GenT::RCC: props[0] = "AUTORCC_SOURCE_GROUP"; break; default: @@ -961,7 +961,7 @@ bool cmQtAutoGenInitializer::InitAutogenTarget() // Files provided by the autogen target std::vector autogenProvides; if (this->Moc.Enabled) { - this->AddGeneratedSource(this->Moc.MocsCompilation, GeneratorT::MOC, true); + this->AddGeneratedSource(this->Moc.MocsCompilation, GenT::MOC, true); autogenProvides.push_back(this->Moc.MocsCompilation); } @@ -1115,7 +1115,7 @@ bool cmQtAutoGenInitializer::InitRccTargets() // Register info file as generated by CMake makefile->AddCMakeOutputFile(qrc.InfoFile); // Register file at target - this->AddGeneratedSource(qrc.RccFile, GeneratorT::RCC); + this->AddGeneratedSource(qrc.RccFile, GenT::RCC); std::vector ccOutput; ccOutput.push_back(qrc.RccFile); @@ -1354,8 +1354,7 @@ bool cmQtAutoGenInitializer::SetupWriteRccInfo() } void cmQtAutoGenInitializer::AddGeneratedSource(std::string const& filename, - GeneratorT genType, - bool prepend) + GenT genType, bool prepend) { // Register source file in makefile cmMakefile* makefile = this->Target->Target->GetMakefile(); diff --git a/Source/cmQtAutoGenInitializer.h b/Source/cmQtAutoGenInitializer.h index 781dd15..816e1af 100644 --- a/Source/cmQtAutoGenInitializer.h +++ b/Source/cmQtAutoGenInitializer.h @@ -99,7 +99,7 @@ private: bool SetupWriteAutogenInfo(); bool SetupWriteRccInfo(); - void AddGeneratedSource(std::string const& filename, GeneratorT genType, + void AddGeneratedSource(std::string const& filename, GenT genType, bool prepend = false); bool GetMocExecutable(); diff --git a/Source/cmQtAutoGenerator.cxx b/Source/cmQtAutoGenerator.cxx index fbb9df3..af50c1d 100644 --- a/Source/cmQtAutoGenerator.cxx +++ b/Source/cmQtAutoGenerator.cxx @@ -43,8 +43,7 @@ std::string cmQtAutoGenerator::Logger::HeadLine(std::string const& title) return head; } -void cmQtAutoGenerator::Logger::Info(GeneratorT genType, - std::string const& message) +void cmQtAutoGenerator::Logger::Info(GenT genType, std::string const& message) { std::string msg = GeneratorName(genType); msg += ": "; @@ -58,7 +57,7 @@ void cmQtAutoGenerator::Logger::Info(GeneratorT genType, } } -void cmQtAutoGenerator::Logger::Warning(GeneratorT genType, +void cmQtAutoGenerator::Logger::Warning(GenT genType, std::string const& message) { std::string msg; @@ -82,7 +81,7 @@ void cmQtAutoGenerator::Logger::Warning(GeneratorT genType, } } -void cmQtAutoGenerator::Logger::WarningFile(GeneratorT genType, +void cmQtAutoGenerator::Logger::WarningFile(GenT genType, std::string const& filename, std::string const& message) { @@ -94,8 +93,7 @@ void cmQtAutoGenerator::Logger::WarningFile(GeneratorT genType, Warning(genType, msg); } -void cmQtAutoGenerator::Logger::Error(GeneratorT genType, - std::string const& message) +void cmQtAutoGenerator::Logger::Error(GenT genType, std::string const& message) { std::string msg; msg += HeadLine(GeneratorName(genType) + " error"); @@ -111,7 +109,7 @@ void cmQtAutoGenerator::Logger::Error(GeneratorT genType, } } -void cmQtAutoGenerator::Logger::ErrorFile(GeneratorT genType, +void cmQtAutoGenerator::Logger::ErrorFile(GenT genType, std::string const& filename, std::string const& message) { @@ -124,7 +122,7 @@ void cmQtAutoGenerator::Logger::ErrorFile(GeneratorT genType, } void cmQtAutoGenerator::Logger::ErrorCommand( - GeneratorT genType, std::string const& message, + GenT genType, std::string const& message, std::vector const& command, std::string const& output) { std::string msg; @@ -297,7 +295,7 @@ bool cmQtAutoGenerator::FileSystem::FileRead(std::string& content, return success; } -bool cmQtAutoGenerator::FileSystem::FileRead(GeneratorT genType, +bool cmQtAutoGenerator::FileSystem::FileRead(GenT genType, std::string& content, std::string const& filename) { @@ -343,7 +341,7 @@ bool cmQtAutoGenerator::FileSystem::FileWrite(std::string const& filename, return success; } -bool cmQtAutoGenerator::FileSystem::FileWrite(GeneratorT genType, +bool cmQtAutoGenerator::FileSystem::FileWrite(GenT genType, std::string const& filename, std::string const& content) { @@ -387,7 +385,7 @@ bool cmQtAutoGenerator::FileSystem::MakeDirectory(std::string const& dirname) return cmSystemTools::MakeDirectory(dirname); } -bool cmQtAutoGenerator::FileSystem::MakeDirectory(GeneratorT genType, +bool cmQtAutoGenerator::FileSystem::MakeDirectory(GenT genType, std::string const& dirname) { if (!MakeDirectory(dirname)) { @@ -409,7 +407,7 @@ bool cmQtAutoGenerator::FileSystem::MakeParentDirectory( } bool cmQtAutoGenerator::FileSystem::MakeParentDirectory( - GeneratorT genType, std::string const& filename) + GenT genType, std::string const& filename) { if (!MakeParentDirectory(filename)) { Log()->ErrorFile(genType, filename, "Could not create parent directory"); diff --git a/Source/cmQtAutoGenerator.h b/Source/cmQtAutoGenerator.h index 9956a99..6771dd8 100644 --- a/Source/cmQtAutoGenerator.h +++ b/Source/cmQtAutoGenerator.h @@ -40,16 +40,16 @@ public: bool ColorOutput() const { return this->ColorOutput_; } void SetColorOutput(bool value); // -- Log info - void Info(GeneratorT genType, std::string const& message); + void Info(GenT genType, std::string const& message); // -- Log warning - void Warning(GeneratorT genType, std::string const& message); - void WarningFile(GeneratorT genType, std::string const& filename, + void Warning(GenT genType, std::string const& message); + void WarningFile(GenT genType, std::string const& filename, std::string const& message); // -- Log error - void Error(GeneratorT genType, std::string const& message); - void ErrorFile(GeneratorT genType, std::string const& filename, + void Error(GenT genType, std::string const& message); + void ErrorFile(GenT genType, std::string const& filename, std::string const& message); - void ErrorCommand(GeneratorT genType, std::string const& message, + void ErrorCommand(GenT genType, std::string const& message, std::vector const& command, std::string const& output); @@ -114,13 +114,13 @@ public: bool FileRead(std::string& content, std::string const& filename, std::string* error = nullptr); /// @brief Error logging version - bool FileRead(GeneratorT genType, std::string& content, + bool FileRead(GenT genType, std::string& content, std::string const& filename); bool FileWrite(std::string const& filename, std::string const& content, std::string* error = nullptr); /// @brief Error logging version - bool FileWrite(GeneratorT genType, std::string const& filename, + bool FileWrite(GenT genType, std::string const& filename, std::string const& content); bool FileDiffers(std::string const& filename, std::string const& content); @@ -131,11 +131,11 @@ public: // -- Directory access bool MakeDirectory(std::string const& dirname); /// @brief Error logging version - bool MakeDirectory(GeneratorT genType, std::string const& dirname); + bool MakeDirectory(GenT genType, std::string const& dirname); bool MakeParentDirectory(std::string const& filename); /// @brief Error logging version - bool MakeParentDirectory(GeneratorT genType, std::string const& filename); + bool MakeParentDirectory(GenT genType, std::string const& filename); private: std::mutex Mutex_; diff --git a/Source/cmQtAutoGeneratorMocUic.cxx b/Source/cmQtAutoGeneratorMocUic.cxx index 2959b7d..c337ba4 100644 --- a/Source/cmQtAutoGeneratorMocUic.cxx +++ b/Source/cmQtAutoGeneratorMocUic.cxx @@ -184,11 +184,10 @@ void cmQtAutoGeneratorMocUic::JobParseT::Process(WorkerT& wrk) ParseUic(wrk, meta); } } else { - wrk.LogFileWarning(GeneratorT::GEN, FileName, - "The source file is empty"); + wrk.LogFileWarning(GenT::GEN, FileName, "The source file is empty"); } } else { - wrk.LogFileError(GeneratorT::GEN, FileName, + wrk.LogFileError(GenT::GEN, FileName, "Could not read the file: " + error); } } @@ -275,7 +274,7 @@ bool cmQtAutoGeneratorMocUic::JobParseT::ParseMocSource(WorkerT& wrk, emsg += ", but the header "; emsg += Quoted(MocStringHeaders(wrk, mocInc.Base)); emsg += " could not be found."; - wrk.LogFileError(GeneratorT::MOC, FileName, emsg); + wrk.LogFileError(GenT::MOC, FileName, emsg); } return false; } @@ -314,7 +313,7 @@ bool cmQtAutoGeneratorMocUic::JobParseT::ParseMocSource(WorkerT& wrk, emsg += Quoted("moc_" + mocInc.Base + ".cpp"); emsg += " for a compatibility with strict mode.\n" "(CMAKE_AUTOMOC_RELAXED_MODE warning)\n"; - wrk.LogFileWarning(GeneratorT::MOC, FileName, emsg); + wrk.LogFileWarning(GenT::MOC, FileName, emsg); } else { std::string emsg = "The file includes the moc file "; emsg += Quoted(mocInc.Inc); @@ -326,7 +325,7 @@ bool cmQtAutoGeneratorMocUic::JobParseT::ParseMocSource(WorkerT& wrk, emsg += Quoted("moc_" + mocInc.Base + ".cpp"); emsg += " for compatibility with strict mode.\n" "(CMAKE_AUTOMOC_RELAXED_MODE warning)\n"; - wrk.LogFileWarning(GeneratorT::MOC, FileName, emsg); + wrk.LogFileWarning(GenT::MOC, FileName, emsg); } } } else { @@ -338,7 +337,7 @@ bool cmQtAutoGeneratorMocUic::JobParseT::ParseMocSource(WorkerT& wrk, "matching header "; emsg += Quoted(MocStringHeaders(wrk, mocInc.Base)); emsg += " could not be found."; - wrk.LogFileError(GeneratorT::MOC, FileName, emsg); + wrk.LogFileError(GenT::MOC, FileName, emsg); } return false; } @@ -356,7 +355,7 @@ bool cmQtAutoGeneratorMocUic::JobParseT::ParseMocSource(WorkerT& wrk, emsg += ", but does not contain a "; emsg += wrk.Moc().MacrosString(); emsg += " macro."; - wrk.LogFileWarning(GeneratorT::MOC, FileName, emsg); + wrk.LogFileWarning(GenT::MOC, FileName, emsg); } } else { // Don't allow .moc include other than self in strict mode @@ -367,7 +366,7 @@ bool cmQtAutoGeneratorMocUic::JobParseT::ParseMocSource(WorkerT& wrk, "source file.\nThis is not supported. Include "; emsg += Quoted(meta.FileBase + ".moc"); emsg += " to run moc on this source file."; - wrk.LogFileError(GeneratorT::MOC, FileName, emsg); + wrk.LogFileError(GenT::MOC, FileName, emsg); } return false; } @@ -410,7 +409,7 @@ bool cmQtAutoGeneratorMocUic::JobParseT::ParseMocSource(WorkerT& wrk, emsg += Quoted(meta.FileBase + ".moc"); emsg += " for compatibility with strict mode.\n" "(CMAKE_AUTOMOC_RELAXED_MODE warning)"; - wrk.LogFileWarning(GeneratorT::MOC, FileName, emsg); + wrk.LogFileWarning(GenT::MOC, FileName, emsg); } // Add own source job jobs.emplace_back( @@ -425,7 +424,7 @@ bool cmQtAutoGeneratorMocUic::JobParseT::ParseMocSource(WorkerT& wrk, emsg += "!\nConsider to\n - add #include \""; emsg += meta.FileBase; emsg += ".moc\"\n - enable SKIP_AUTOMOC for this file"; - wrk.LogFileError(GeneratorT::MOC, FileName, emsg); + wrk.LogFileError(GenT::MOC, FileName, emsg); } return false; } @@ -586,7 +585,7 @@ std::string cmQtAutoGeneratorMocUic::JobParseT::UicFindIncludedFile( emsg += Quoted(testFile); emsg += "\n"; } - wrk.LogFileError(GeneratorT::UIC, FileName, emsg); + wrk.LogFileError(GenT::UIC, FileName, emsg); } return res; @@ -602,7 +601,7 @@ void cmQtAutoGeneratorMocUic::JobMocPredefsT::Process(WorkerT& wrk) std::string reason = "Generating "; reason += Quoted(wrk.Moc().PredefsFileRel); reason += " because it doesn't exist"; - wrk.LogInfo(GeneratorT::MOC, reason); + wrk.LogInfo(GenT::MOC, reason); } generate = true; } else if (wrk.Moc().SettingsChanged) { @@ -610,7 +609,7 @@ void cmQtAutoGeneratorMocUic::JobMocPredefsT::Process(WorkerT& wrk) std::string reason = "Generating "; reason += Quoted(wrk.Moc().PredefsFileRel); reason += " because the settings changed."; - wrk.LogInfo(GeneratorT::MOC, reason); + wrk.LogInfo(GenT::MOC, reason); } generate = true; } @@ -627,12 +626,12 @@ void cmQtAutoGeneratorMocUic::JobMocPredefsT::Process(WorkerT& wrk) cmd.push_back("-D" + def); } // Execute command - if (!wrk.RunProcess(GeneratorT::MOC, result, cmd)) { + if (!wrk.RunProcess(GenT::MOC, result, cmd)) { std::string emsg = "The content generation command for "; emsg += Quoted(wrk.Moc().PredefsFileRel); emsg += " failed.\n"; emsg += result.ErrorMessage; - wrk.LogCommandError(GeneratorT::MOC, emsg, cmd, result.StdOut); + wrk.LogCommandError(GenT::MOC, emsg, cmd, result.StdOut); } } @@ -640,14 +639,14 @@ void cmQtAutoGeneratorMocUic::JobMocPredefsT::Process(WorkerT& wrk) if (!result.error()) { if (!fileExists || wrk.FileSys().FileDiffers(wrk.Moc().PredefsFileAbs, result.StdOut)) { - if (wrk.FileSys().FileWrite(GeneratorT::MOC, wrk.Moc().PredefsFileAbs, + if (wrk.FileSys().FileWrite(GenT::MOC, wrk.Moc().PredefsFileAbs, result.StdOut)) { // Success } else { std::string emsg = "Writing "; emsg += Quoted(wrk.Moc().PredefsFileRel); emsg += " failed."; - wrk.LogFileError(GeneratorT::MOC, wrk.Moc().PredefsFileAbs, emsg); + wrk.LogFileError(GenT::MOC, wrk.Moc().PredefsFileAbs, emsg); } } else { // Touch to update the time stamp @@ -655,7 +654,7 @@ void cmQtAutoGeneratorMocUic::JobMocPredefsT::Process(WorkerT& wrk) std::string msg = "Touching "; msg += Quoted(wrk.Moc().PredefsFileRel); msg += "."; - wrk.LogInfo(GeneratorT::MOC, msg); + wrk.LogInfo(GenT::MOC, msg); } wrk.FileSys().Touch(wrk.Moc().PredefsFileAbs); } @@ -713,7 +712,7 @@ bool cmQtAutoGeneratorMocUic::JobMocT::UpdateRequired(WorkerT& wrk) reason += " from its source file "; reason += Quoted(SourceFile); reason += " because it doesn't exist"; - wrk.LogInfo(GeneratorT::MOC, reason); + wrk.LogInfo(GenT::MOC, reason); } return true; } @@ -726,7 +725,7 @@ bool cmQtAutoGeneratorMocUic::JobMocT::UpdateRequired(WorkerT& wrk) reason += " from "; reason += Quoted(SourceFile); reason += " because the MOC settings changed"; - wrk.LogInfo(GeneratorT::MOC, reason); + wrk.LogInfo(GenT::MOC, reason); } return true; } @@ -739,7 +738,7 @@ bool cmQtAutoGeneratorMocUic::JobMocT::UpdateRequired(WorkerT& wrk) isOlder = wrk.FileSys().FileIsOlderThan( BuildFile, wrk.Moc().PredefsFileAbs, &error); if (!isOlder && !error.empty()) { - wrk.LogError(GeneratorT::MOC, error); + wrk.LogError(GenT::MOC, error); return false; } } @@ -749,7 +748,7 @@ bool cmQtAutoGeneratorMocUic::JobMocT::UpdateRequired(WorkerT& wrk) reason += Quoted(BuildFile); reason += " because it's older than: "; reason += Quoted(wrk.Moc().PredefsFileAbs); - wrk.LogInfo(GeneratorT::MOC, reason); + wrk.LogInfo(GenT::MOC, reason); } return true; } @@ -762,7 +761,7 @@ bool cmQtAutoGeneratorMocUic::JobMocT::UpdateRequired(WorkerT& wrk) std::string error; isOlder = wrk.FileSys().FileIsOlderThan(BuildFile, SourceFile, &error); if (!isOlder && !error.empty()) { - wrk.LogError(GeneratorT::MOC, error); + wrk.LogError(GenT::MOC, error); return false; } } @@ -772,7 +771,7 @@ bool cmQtAutoGeneratorMocUic::JobMocT::UpdateRequired(WorkerT& wrk) reason += Quoted(BuildFile); reason += " because it's older than its source file "; reason += Quoted(SourceFile); - wrk.LogInfo(GeneratorT::MOC, reason); + wrk.LogInfo(GenT::MOC, reason); } return true; } @@ -794,7 +793,7 @@ bool cmQtAutoGeneratorMocUic::JobMocT::UpdateRequired(WorkerT& wrk) emsg += Quoted(IncluderFile); emsg += ".\n"; emsg += error; - wrk.LogError(GeneratorT::MOC, emsg); + wrk.LogError(GenT::MOC, emsg); return false; } } @@ -815,18 +814,18 @@ bool cmQtAutoGeneratorMocUic::JobMocT::UpdateRequired(WorkerT& wrk) reason += Quoted(SourceFile); reason += " because it is older than it's dependency file "; reason += Quoted(depFileAbs); - wrk.LogInfo(GeneratorT::MOC, reason); + wrk.LogInfo(GenT::MOC, reason); } return true; } if (!error.empty()) { - wrk.LogError(GeneratorT::MOC, error); + wrk.LogError(GenT::MOC, error); return false; } } else { std::string message = "Could not find dependency file "; message += Quoted(depFileRel); - wrk.LogFileWarning(GeneratorT::MOC, SourceFile, message); + wrk.LogFileWarning(GenT::MOC, SourceFile, message); } } } @@ -837,7 +836,7 @@ bool cmQtAutoGeneratorMocUic::JobMocT::UpdateRequired(WorkerT& wrk) void cmQtAutoGeneratorMocUic::JobMocT::GenerateMoc(WorkerT& wrk) { // Make sure the parent directory exists - if (wrk.FileSys().MakeParentDirectory(GeneratorT::MOC, BuildFile)) { + if (wrk.FileSys().MakeParentDirectory(GenT::MOC, BuildFile)) { // Compose moc command std::vector cmd; cmd.push_back(wrk.Moc().Executable); @@ -855,11 +854,11 @@ void cmQtAutoGeneratorMocUic::JobMocT::GenerateMoc(WorkerT& wrk) // Execute moc command ProcessResultT result; - if (wrk.RunProcess(GeneratorT::MOC, result, cmd)) { + if (wrk.RunProcess(GenT::MOC, result, cmd)) { // Moc command success // Print moc output if (!result.StdOut.empty()) { - wrk.LogInfo(GeneratorT::MOC, result.StdOut); + wrk.LogInfo(GenT::MOC, result.StdOut); } // Notify the generator that a not included file changed (on demand) if (IncludeString.empty()) { @@ -874,7 +873,7 @@ void cmQtAutoGeneratorMocUic::JobMocT::GenerateMoc(WorkerT& wrk) emsg += Quoted(BuildFile); emsg += ".\n"; emsg += result.ErrorMessage; - wrk.LogCommandError(GeneratorT::MOC, emsg, cmd, result.StdOut); + wrk.LogCommandError(GenT::MOC, emsg, cmd, result.StdOut); } wrk.FileSys().FileRemove(BuildFile); } @@ -905,7 +904,7 @@ bool cmQtAutoGeneratorMocUic::JobUicT::UpdateRequired(WorkerT& wrk) reason += " from its source file "; reason += Quoted(SourceFile); reason += " because it doesn't exist"; - wrk.LogInfo(GeneratorT::UIC, reason); + wrk.LogInfo(GenT::UIC, reason); } return true; } @@ -918,7 +917,7 @@ bool cmQtAutoGeneratorMocUic::JobUicT::UpdateRequired(WorkerT& wrk) reason += " from "; reason += Quoted(SourceFile); reason += " because the UIC settings changed"; - wrk.LogInfo(GeneratorT::UIC, reason); + wrk.LogInfo(GenT::UIC, reason); } return true; } @@ -930,7 +929,7 @@ bool cmQtAutoGeneratorMocUic::JobUicT::UpdateRequired(WorkerT& wrk) std::string error; isOlder = wrk.FileSys().FileIsOlderThan(BuildFile, SourceFile, &error); if (!isOlder && !error.empty()) { - wrk.LogError(GeneratorT::UIC, error); + wrk.LogError(GenT::UIC, error); return false; } } @@ -940,7 +939,7 @@ bool cmQtAutoGeneratorMocUic::JobUicT::UpdateRequired(WorkerT& wrk) reason += Quoted(BuildFile); reason += " because it's older than its source file "; reason += Quoted(SourceFile); - wrk.LogInfo(GeneratorT::UIC, reason); + wrk.LogInfo(GenT::UIC, reason); } return true; } @@ -952,7 +951,7 @@ bool cmQtAutoGeneratorMocUic::JobUicT::UpdateRequired(WorkerT& wrk) void cmQtAutoGeneratorMocUic::JobUicT::GenerateUic(WorkerT& wrk) { // Make sure the parent directory exists - if (wrk.FileSys().MakeParentDirectory(GeneratorT::UIC, BuildFile)) { + if (wrk.FileSys().MakeParentDirectory(GenT::UIC, BuildFile)) { // Compose uic command std::vector cmd; cmd.push_back(wrk.Uic().Executable); @@ -970,11 +969,11 @@ void cmQtAutoGeneratorMocUic::JobUicT::GenerateUic(WorkerT& wrk) cmd.push_back(SourceFile); ProcessResultT result; - if (wrk.RunProcess(GeneratorT::UIC, result, cmd)) { + if (wrk.RunProcess(GenT::UIC, result, cmd)) { // Uic command success // Print uic output if (!result.StdOut.empty()) { - wrk.LogInfo(GeneratorT::UIC, result.StdOut); + wrk.LogInfo(GenT::UIC, result.StdOut); } } else { // Uic command failed @@ -987,7 +986,7 @@ void cmQtAutoGeneratorMocUic::JobUicT::GenerateUic(WorkerT& wrk) emsg += Quoted(IncluderFile); emsg += ".\n"; emsg += result.ErrorMessage; - wrk.LogCommandError(GeneratorT::UIC, emsg, cmd, result.StdOut); + wrk.LogCommandError(GenT::UIC, emsg, cmd, result.StdOut); } wrk.FileSys().FileRemove(BuildFile); } @@ -1018,41 +1017,39 @@ cmQtAutoGeneratorMocUic::WorkerT::~WorkerT() } void cmQtAutoGeneratorMocUic::WorkerT::LogInfo( - GeneratorT genType, std::string const& message) const + GenT genType, std::string const& message) const { Log().Info(genType, message); } void cmQtAutoGeneratorMocUic::WorkerT::LogWarning( - GeneratorT genType, std::string const& message) const + GenT genType, std::string const& message) const { Log().Warning(genType, message); } void cmQtAutoGeneratorMocUic::WorkerT::LogFileWarning( - GeneratorT genType, std::string const& filename, - std::string const& message) const + GenT genType, std::string const& filename, std::string const& message) const { Log().WarningFile(genType, filename, message); } void cmQtAutoGeneratorMocUic::WorkerT::LogError( - GeneratorT genType, std::string const& message) const + GenT genType, std::string const& message) const { Gen().ParallelRegisterJobError(); Log().Error(genType, message); } void cmQtAutoGeneratorMocUic::WorkerT::LogFileError( - GeneratorT genType, std::string const& filename, - std::string const& message) const + GenT genType, std::string const& filename, std::string const& message) const { Gen().ParallelRegisterJobError(); Log().ErrorFile(genType, filename, message); } void cmQtAutoGeneratorMocUic::WorkerT::LogCommandError( - GeneratorT genType, std::string const& message, + GenT genType, std::string const& message, std::vector const& command, std::string const& output) const { Gen().ParallelRegisterJobError(); @@ -1060,7 +1057,7 @@ void cmQtAutoGeneratorMocUic::WorkerT::LogCommandError( } bool cmQtAutoGeneratorMocUic::WorkerT::RunProcess( - GeneratorT genType, ProcessResultT& result, + GenT genType, ProcessResultT& result, std::vector const& command) { if (command.empty()) { @@ -1213,7 +1210,7 @@ bool cmQtAutoGeneratorMocUic::Init(cmMakefile* makefile) // -- Read info file if (!makefile->ReadListFile(InfoFile())) { - Log().ErrorFile(GeneratorT::GEN, InfoFile(), "File processing failed"); + Log().ErrorFile(GenT::GEN, InfoFile(), "File processing failed"); return false; } @@ -1238,14 +1235,13 @@ bool cmQtAutoGeneratorMocUic::Init(cmMakefile* makefile) InfoGetBool("AM_CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE"); Base_.AutogenBuildDir = InfoGet("AM_BUILD_DIR"); if (Base_.AutogenBuildDir.empty()) { - Log().ErrorFile(GeneratorT::GEN, InfoFile(), - "Autogen build directory missing"); + Log().ErrorFile(GenT::GEN, InfoFile(), "Autogen build directory missing"); return false; } // include directory Base_.AutogenIncludeDir = InfoGetConfig("AM_INCLUDE_DIR"); if (Base_.AutogenIncludeDir.empty()) { - Log().ErrorFile(GeneratorT::GEN, InfoFile(), + Log().ErrorFile(GenT::GEN, InfoFile(), "Autogen include directory missing"); return false; } @@ -1253,7 +1249,7 @@ bool cmQtAutoGeneratorMocUic::Init(cmMakefile* makefile) // - Files SettingsFile_ = InfoGetConfig("AM_SETTINGS_FILE"); if (SettingsFile_.empty()) { - Log().ErrorFile(GeneratorT::GEN, InfoFile(), "Settings file name missing"); + Log().ErrorFile(GenT::GEN, InfoFile(), "Settings file name missing"); return false; } @@ -1334,13 +1330,13 @@ bool cmQtAutoGeneratorMocUic::Init(cmMakefile* makefile) } } else { Log().ErrorFile( - GeneratorT::MOC, InfoFile(), + GenT::MOC, InfoFile(), "AUTOMOC_DEPEND_FILTERS list size is not a multiple of 2"); return false; } } if (!error.empty()) { - Log().ErrorFile(GeneratorT::MOC, InfoFile(), error); + Log().ErrorFile(GenT::MOC, InfoFile(), error); return false; } } @@ -1369,7 +1365,7 @@ bool cmQtAutoGeneratorMocUic::Init(cmMakefile* makefile) std::ostringstream ost; ost << "files/options lists sizes mismatch (" << sources.size() << "/" << options.size() << ")"; - Log().ErrorFile(GeneratorT::UIC, InfoFile(), ost.str()); + Log().ErrorFile(GenT::UIC, InfoFile(), ost.str()); return false; } auto fitEnd = sources.cend(); @@ -1690,8 +1686,7 @@ void cmQtAutoGeneratorMocUic::SettingsFileWrite() // Only write if any setting changed if (!JobError_ && (Moc().SettingsChanged || Uic().SettingsChanged)) { if (Log().Verbose()) { - Log().Info(GeneratorT::GEN, - "Writing settings file " + Quoted(SettingsFile_)); + Log().Info(GenT::GEN, "Writing settings file " + Quoted(SettingsFile_)); } // Compose settings file content std::string content; @@ -1709,8 +1704,8 @@ void cmQtAutoGeneratorMocUic::SettingsFileWrite() SettingAppend("uic", SettingsStringUic_); } // Write settings file - if (!FileSys().FileWrite(GeneratorT::GEN, SettingsFile_, content)) { - Log().ErrorFile(GeneratorT::GEN, SettingsFile_, + if (!FileSys().FileWrite(GenT::GEN, SettingsFile_, content)) { + Log().ErrorFile(GenT::GEN, SettingsFile_, "Settings file writing failed"); // Remove old settings file to trigger a full rebuild on the next run FileSys().FileRemove(SettingsFile_); @@ -1722,7 +1717,7 @@ void cmQtAutoGeneratorMocUic::SettingsFileWrite() void cmQtAutoGeneratorMocUic::CreateDirectories() { // Create AUTOGEN include directory - if (!FileSys().MakeDirectory(GeneratorT::GEN, Base().AutogenIncludeDir)) { + if (!FileSys().MakeDirectory(GenT::GEN, Base().AutogenIncludeDir)) { RegisterJobError(); } } @@ -1882,7 +1877,7 @@ bool cmQtAutoGeneratorMocUic::ParallelJobPushMoc(JobHandleT& jobHandle) "- add a directory prefix to a \".moc\" include " "(e.g \"sub/.moc\")\n" "- rename the source file(s)\n"; - Log().Error(GeneratorT::MOC, error); + Log().Error(GenT::MOC, error); RegisterJobError(); } // Do not push this job in since the included moc file already @@ -1932,7 +1927,7 @@ bool cmQtAutoGeneratorMocUic::ParallelJobPushUic(JobHandleT& jobHandle) "(e.g \"sub/ui_.h\")\n" "- rename the .ui file(s) and adjust the \"ui_.h\" " "include(s)\n"; - Log().Error(GeneratorT::UIC, error); + Log().Error(GenT::UIC, error); RegisterJobError(); } // Do not push this job in since the uic file already @@ -2019,10 +2014,10 @@ void cmQtAutoGeneratorMocUic::MocGenerateCompilation() if (FileSys().FileDiffers(compAbs, content)) { // Actually write mocs compilation file if (Log().Verbose()) { - Log().Info(GeneratorT::MOC, "Generating MOC compilation " + compAbs); + Log().Info(GenT::MOC, "Generating MOC compilation " + compAbs); } - if (!FileSys().FileWrite(GeneratorT::MOC, compAbs, content)) { - Log().ErrorFile(GeneratorT::MOC, compAbs, + if (!FileSys().FileWrite(GenT::MOC, compAbs, content)) { + Log().ErrorFile(GenT::MOC, compAbs, "mocs compilation file writing failed"); RegisterJobError(); return; @@ -2030,7 +2025,7 @@ void cmQtAutoGeneratorMocUic::MocGenerateCompilation() } else if (MocAutoFileUpdated_) { // Only touch mocs compilation file if (Log().Verbose()) { - Log().Info(GeneratorT::MOC, "Touching mocs compilation " + compAbs); + Log().Info(GenT::MOC, "Touching mocs compilation " + compAbs); } FileSys().Touch(compAbs); } diff --git a/Source/cmQtAutoGeneratorMocUic.h b/Source/cmQtAutoGeneratorMocUic.h index c22df29..b40b48f 100644 --- a/Source/cmQtAutoGeneratorMocUic.h +++ b/Source/cmQtAutoGeneratorMocUic.h @@ -321,22 +321,22 @@ public: const UicSettingsT& Uic() const { return Gen_->Uic(); } // -- Log info - void LogInfo(GeneratorT genType, std::string const& message) const; + void LogInfo(GenT genType, std::string const& message) const; // -- Log warning - void LogWarning(GeneratorT genType, std::string const& message) const; - void LogFileWarning(GeneratorT genType, std::string const& filename, + void LogWarning(GenT genType, std::string const& message) const; + void LogFileWarning(GenT genType, std::string const& filename, std::string const& message) const; // -- Log error - void LogError(GeneratorT genType, std::string const& message) const; - void LogFileError(GeneratorT genType, std::string const& filename, + void LogError(GenT genType, std::string const& message) const; + void LogFileError(GenT genType, std::string const& filename, std::string const& message) const; - void LogCommandError(GeneratorT genType, std::string const& message, + void LogCommandError(GenT genType, std::string const& message, std::vector const& command, std::string const& output) const; // -- External processes /// @brief Verbose logging version - bool RunProcess(GeneratorT genType, ProcessResultT& result, + bool RunProcess(GenT genType, ProcessResultT& result, std::vector const& command); private: diff --git a/Source/cmQtAutoGeneratorRcc.cxx b/Source/cmQtAutoGeneratorRcc.cxx index 021a15f..5deb532 100644 --- a/Source/cmQtAutoGeneratorRcc.cxx +++ b/Source/cmQtAutoGeneratorRcc.cxx @@ -55,7 +55,7 @@ bool cmQtAutoGeneratorRcc::Init(cmMakefile* makefile) // -- Read info file if (!makefile->ReadListFile(InfoFile())) { - Log().ErrorFile(GeneratorT::RCC, InfoFile(), "File processing failed"); + Log().ErrorFile(GenT::RCC, InfoFile(), "File processing failed"); return false; } @@ -66,13 +66,13 @@ bool cmQtAutoGeneratorRcc::Init(cmMakefile* makefile) // - Directories AutogenBuildDir_ = InfoGet("ARCC_BUILD_DIR"); if (AutogenBuildDir_.empty()) { - Log().ErrorFile(GeneratorT::RCC, InfoFile(), "Build directory empty"); + Log().ErrorFile(GenT::RCC, InfoFile(), "Build directory empty"); return false; } IncludeDir_ = InfoGetConfig("ARCC_INCLUDE_DIR"); if (IncludeDir_.empty()) { - Log().ErrorFile(GeneratorT::RCC, InfoFile(), "Include directory empty"); + Log().ErrorFile(GenT::RCC, InfoFile(), "Include directory empty"); return false; } @@ -95,28 +95,27 @@ bool cmQtAutoGeneratorRcc::Init(cmMakefile* makefile) // - Validity checks if (LockFile_.empty()) { - Log().ErrorFile(GeneratorT::RCC, InfoFile(), "Lock file name missing"); + Log().ErrorFile(GenT::RCC, InfoFile(), "Lock file name missing"); return false; } if (SettingsFile_.empty()) { - Log().ErrorFile(GeneratorT::RCC, InfoFile(), "Settings file name missing"); + Log().ErrorFile(GenT::RCC, InfoFile(), "Settings file name missing"); return false; } if (AutogenBuildDir_.empty()) { - Log().ErrorFile(GeneratorT::RCC, InfoFile(), - "Autogen build directory missing"); + Log().ErrorFile(GenT::RCC, InfoFile(), "Autogen build directory missing"); return false; } if (RccExecutable_.empty()) { - Log().ErrorFile(GeneratorT::RCC, InfoFile(), "rcc executable missing"); + Log().ErrorFile(GenT::RCC, InfoFile(), "rcc executable missing"); return false; } if (QrcFile_.empty()) { - Log().ErrorFile(GeneratorT::RCC, InfoFile(), "rcc input file missing"); + Log().ErrorFile(GenT::RCC, InfoFile(), "rcc input file missing"); return false; } if (RccFileName_.empty()) { - Log().ErrorFile(GeneratorT::RCC, InfoFile(), "rcc output file missing"); + Log().ErrorFile(GenT::RCC, InfoFile(), "rcc output file missing"); return false; } @@ -287,8 +286,7 @@ bool cmQtAutoGeneratorRcc::SettingsFileRead() // Make sure the lock file exists if (!FileSys().FileExists(LockFile_, true)) { if (!FileSys().Touch(LockFile_, true)) { - Log().ErrorFile(GeneratorT::RCC, LockFile_, - "Lock file creation failed"); + Log().ErrorFile(GenT::RCC, LockFile_, "Lock file creation failed"); Error_ = true; return false; } @@ -297,7 +295,7 @@ bool cmQtAutoGeneratorRcc::SettingsFileRead() cmFileLockResult lockResult = LockFileLock_.Lock(LockFile_, static_cast(-1)); if (!lockResult.IsOk()) { - Log().ErrorFile(GeneratorT::RCC, LockFile_, + Log().ErrorFile(GenT::RCC, LockFile_, "File lock failed: " + lockResult.GetOutputMessage()); Error_ = true; return false; @@ -313,7 +311,7 @@ bool cmQtAutoGeneratorRcc::SettingsFileRead() // This triggers a full rebuild on the next run if the current // build is aborted before writing the current settings in the end. if (SettingsChanged_) { - FileSys().FileWrite(GeneratorT::RCC, SettingsFile_, ""); + FileSys().FileWrite(GenT::RCC, SettingsFile_, ""); } } else { SettingsChanged_ = true; @@ -328,15 +326,14 @@ void cmQtAutoGeneratorRcc::SettingsFileWrite() // Only write if any setting changed if (SettingsChanged_) { if (Log().Verbose()) { - Log().Info(GeneratorT::RCC, - "Writing settings file " + Quoted(SettingsFile_)); + Log().Info(GenT::RCC, "Writing settings file " + Quoted(SettingsFile_)); } // Write settings file std::string content = "rcc:"; content += SettingsString_; content += '\n'; - if (!FileSys().FileWrite(GeneratorT::RCC, SettingsFile_, content)) { - Log().ErrorFile(GeneratorT::RCC, SettingsFile_, + if (!FileSys().FileWrite(GenT::RCC, SettingsFile_, content)) { + Log().ErrorFile(GenT::RCC, SettingsFile_, "Settings file writing failed"); // Remove old settings file to trigger a full rebuild on the next run FileSys().FileRemove(SettingsFile_); @@ -360,7 +357,7 @@ bool cmQtAutoGeneratorRcc::TestQrcRccFiles() reason += " from its source file "; reason += Quoted(QrcFile_); reason += " because it doesn't exist"; - Log().Info(GeneratorT::RCC, reason); + Log().Info(GenT::RCC, reason); } Generate_ = true; return Generate_; @@ -374,7 +371,7 @@ bool cmQtAutoGeneratorRcc::TestQrcRccFiles() reason += " from "; reason += Quoted(QrcFile_); reason += " because the RCC settings changed"; - Log().Info(GeneratorT::RCC, reason); + Log().Info(GenT::RCC, reason); } Generate_ = true; return Generate_; @@ -387,7 +384,7 @@ bool cmQtAutoGeneratorRcc::TestQrcRccFiles() std::string error; isOlder = FileSys().FileIsOlderThan(RccFileOutput_, QrcFile_, &error); if (!error.empty()) { - Log().ErrorFile(GeneratorT::RCC, QrcFile_, error); + Log().ErrorFile(GenT::RCC, QrcFile_, error); Error_ = true; } } @@ -397,7 +394,7 @@ bool cmQtAutoGeneratorRcc::TestQrcRccFiles() reason += Quoted(RccFileOutput_); reason += " because it is older than "; reason += Quoted(QrcFile_); - Log().Info(GeneratorT::RCC, reason); + Log().Info(GenT::RCC, reason); } Generate_ = true; } @@ -424,12 +421,11 @@ bool cmQtAutoGeneratorRcc::TestResourcesRead() std::string parseError; if (!RccListParseOutput(ProcessResult_.StdOut, ProcessResult_.StdErr, Inputs_, parseError)) { - Log().ErrorFile(GeneratorT::RCC, QrcFile_, parseError); + Log().ErrorFile(GenT::RCC, QrcFile_, parseError); Error_ = true; } } else { - Log().ErrorFile(GeneratorT::RCC, QrcFile_, - ProcessResult_.ErrorMessage); + Log().ErrorFile(GenT::RCC, QrcFile_, ProcessResult_.ErrorMessage); Error_ = true; } // Clean up @@ -457,7 +453,7 @@ bool cmQtAutoGeneratorRcc::TestResourcesRead() // rcc does not support the --list command. // Read the qrc file content and parse it. std::string qrcContent; - if (FileSys().FileRead(GeneratorT::RCC, qrcContent, QrcFile_)) { + if (FileSys().FileRead(GenT::RCC, qrcContent, QrcFile_)) { RccListParseContent(qrcContent, Inputs_); } } @@ -483,7 +479,7 @@ bool cmQtAutoGeneratorRcc::TestResources() error = "Could not find the resource file\n "; error += Quoted(resFile); error += '\n'; - Log().ErrorFile(GeneratorT::RCC, QrcFile_, error); + Log().ErrorFile(GenT::RCC, QrcFile_, error); Error_ = true; break; } @@ -496,14 +492,14 @@ bool cmQtAutoGeneratorRcc::TestResources() reason += Quoted(QrcFile_); reason += " because it is older than "; reason += Quoted(resFile); - Log().Info(GeneratorT::RCC, reason); + Log().Info(GenT::RCC, reason); } Generate_ = true; break; } // Print error and break on demand if (!error.empty()) { - Log().ErrorFile(GeneratorT::RCC, QrcFile_, error); + Log().ErrorFile(GenT::RCC, QrcFile_, error); Error_ = true; break; } @@ -522,7 +518,7 @@ void cmQtAutoGeneratorRcc::TestInfoFile() std::string error; isOlder = FileSys().FileIsOlderThan(RccFileOutput_, InfoFile(), &error); if (!error.empty()) { - Log().ErrorFile(GeneratorT::RCC, QrcFile_, error); + Log().ErrorFile(GenT::RCC, QrcFile_, error); Error_ = true; } } @@ -532,7 +528,7 @@ void cmQtAutoGeneratorRcc::TestInfoFile() reason += Quoted(RccFileOutput_); reason += " because it is older than "; reason += Quoted(InfoFile()); - Log().Info(GeneratorT::RCC, reason); + Log().Info(GenT::RCC, reason); } // Touch build file FileSys().Touch(RccFileOutput_); @@ -544,7 +540,7 @@ void cmQtAutoGeneratorRcc::TestInfoFile() void cmQtAutoGeneratorRcc::GenerateParentDir() { // Make sure the parent directory exists - if (!FileSys().MakeParentDirectory(GeneratorT::RCC, RccFileOutput_)) { + if (!FileSys().MakeParentDirectory(GenT::RCC, RccFileOutput_)) { Error_ = true; } } @@ -567,7 +563,7 @@ bool cmQtAutoGeneratorRcc::GenerateRcc() // Rcc process success // Print rcc output if (!ProcessResult_.StdOut.empty()) { - Log().Info(GeneratorT::RCC, ProcessResult_.StdOut); + Log().Info(GenT::RCC, ProcessResult_.StdOut); } BuildFileChanged_ = true; } else { @@ -581,7 +577,7 @@ bool cmQtAutoGeneratorRcc::GenerateRcc() emsg += "\n"; emsg += ProcessResult_.ErrorMessage; } - Log().ErrorCommand(GeneratorT::RCC, emsg, Process_->Setup().Command, + Log().ErrorCommand(GenT::RCC, emsg, Process_->Setup().Command, ProcessResult_.StdOut); } FileSys().FileRemove(RccFileOutput_); @@ -625,19 +621,17 @@ void cmQtAutoGeneratorRcc::GenerateWrapper() if (FileSys().FileDiffers(RccFilePublic_, content)) { // Write new wrapper file if (Log().Verbose()) { - Log().Info(GeneratorT::RCC, - "Generating RCC wrapper file " + RccFilePublic_); + Log().Info(GenT::RCC, "Generating RCC wrapper file " + RccFilePublic_); } - if (!FileSys().FileWrite(GeneratorT::RCC, RccFilePublic_, content)) { - Log().ErrorFile(GeneratorT::RCC, RccFilePublic_, + if (!FileSys().FileWrite(GenT::RCC, RccFilePublic_, content)) { + Log().ErrorFile(GenT::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 file " + RccFilePublic_); + Log().Info(GenT::RCC, "Touching RCC wrapper file " + RccFilePublic_); } FileSys().Touch(RccFilePublic_); } @@ -653,7 +647,7 @@ bool cmQtAutoGeneratorRcc::StartProcess( std::string msg = "Running command:\n"; msg += QuotedCommand(command); msg += '\n'; - Log().Info(GeneratorT::RCC, msg); + Log().Info(GenT::RCC, msg); } // Create process handler @@ -661,7 +655,7 @@ bool cmQtAutoGeneratorRcc::StartProcess( Process_->setup(&ProcessResult_, mergedOutput, command, workingDirectory); // Start process if (!Process_->start(UVLoop(), [this] { UVRequest().send(); })) { - Log().ErrorFile(GeneratorT::RCC, QrcFile_, ProcessResult_.ErrorMessage); + Log().ErrorFile(GenT::RCC, QrcFile_, ProcessResult_.ErrorMessage); Error_ = true; // Clean up Process_.reset(); https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=14ae19c327100c137ec8cb549dfc7447c4888940 commit 14ae19c327100c137ec8cb549dfc7447c4888940 Author: Sebastian Holtermann AuthorDate: Thu Feb 14 14:44:18 2019 +0100 Commit: Sebastian Holtermann CommitDate: Thu Feb 21 11:37:51 2019 +0100 Autogen: cmQtAutoGen: Store generator names in class static const strings diff --git a/Source/cmQtAutoGen.cxx b/Source/cmQtAutoGen.cxx index f437138..6e24332 100644 --- a/Source/cmQtAutoGen.cxx +++ b/Source/cmQtAutoGen.cxx @@ -11,13 +11,6 @@ #include #include -// - Static variables - -std::string const genNameGen = "AutoGen"; -std::string const genNameMoc = "AutoMoc"; -std::string const genNameUic = "AutoUic"; -std::string const genNameRcc = "AutoRcc"; - // - Static functions /// @brief Merges newOpts into baseOpts @@ -77,27 +70,47 @@ void MergeOptions(std::vector& baseOpts, // - Class definitions -std::string const cmQtAutoGen::ListSep = "<<>>"; unsigned int const cmQtAutoGen::ParallelMax = 64; +std::string const cmQtAutoGen::ListSep = "<<>>"; + +std::string const cmQtAutoGen::GenNameGen = "AutoGen"; +std::string const cmQtAutoGen::GenNameMoc = "AutoMoc"; +std::string const cmQtAutoGen::GenNameUic = "AutoUic"; +std::string const cmQtAutoGen::GenNameRcc = "AutoRcc"; + +std::string const cmQtAutoGen::GenNameGenUpper = "AUTOGEN"; +std::string const cmQtAutoGen::GenNameMocUpper = "AUTOMOC"; +std::string const cmQtAutoGen::GenNameUicUpper = "AUTOUIC"; +std::string const cmQtAutoGen::GenNameRccUpper = "AUTORCC"; -std::string const& cmQtAutoGen::GeneratorName(GeneratorT type) +std::string const& cmQtAutoGen::GeneratorName(GeneratorT genType) { - switch (type) { + switch (genType) { case GeneratorT::GEN: - return genNameGen; + return GenNameGen; case GeneratorT::MOC: - return genNameMoc; + return GenNameMoc; case GeneratorT::UIC: - return genNameUic; + return GenNameUic; case GeneratorT::RCC: - return genNameRcc; + return GenNameRcc; } - return genNameGen; + return GenNameGen; } -std::string cmQtAutoGen::GeneratorNameUpper(GeneratorT genType) +std::string const& cmQtAutoGen::GeneratorNameUpper(GeneratorT genType) { - return cmSystemTools::UpperCase(cmQtAutoGen::GeneratorName(genType)); + switch (genType) { + case GeneratorT::GEN: + return GenNameGenUpper; + case GeneratorT::MOC: + return GenNameMocUpper; + case GeneratorT::UIC: + return GenNameUicUpper; + case GeneratorT::RCC: + return GenNameRccUpper; + } + return GenNameGenUpper; } std::string cmQtAutoGen::Tools(bool moc, bool uic, bool rcc) diff --git a/Source/cmQtAutoGen.h b/Source/cmQtAutoGen.h index 96d1946..03dbded 100644 --- a/Source/cmQtAutoGen.h +++ b/Source/cmQtAutoGen.h @@ -14,15 +14,13 @@ class cmQtAutoGen { public: - /// @brief Nested lists separator - static std::string const ListSep; /// @brief Maximum number of parallel threads/processes in a generator static unsigned int const ParallelMax; /// @brief AutoGen generator type enum class GeneratorT { - GEN, // General + GEN, // AUTOGEN MOC, UIC, RCC @@ -54,11 +52,23 @@ public: } }; + /// @brief Nested lists separator + static std::string const ListSep; + // Generator names + static std::string const GenNameGen; + static std::string const GenNameMoc; + static std::string const GenNameUic; + static std::string const GenNameRcc; + static std::string const GenNameGenUpper; + static std::string const GenNameMocUpper; + static std::string const GenNameUicUpper; + static std::string const GenNameRccUpper; + 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); + static std::string const& GeneratorNameUpper(GeneratorT genType); /// @brief Returns a string with the requested tool names static std::string Tools(bool moc, bool uic, bool rcc); ----------------------------------------------------------------------- Summary of changes: Help/manual/cmake-policies.7.rst | 8 + Help/manual/cmake-properties.7.rst | 1 + Help/policy/CMP0089.rst | 30 + Help/prop_tgt/VS_NO_SOLUTION_DEPLOY.rst | 46 ++ Help/release/dev/add-xlclang.rst | 5 + Help/release/dev/vs-wince-no-deploy.rst | 6 + Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst | 2 + Modules/CMakeCompilerIdDetection.cmake | 1 + Modules/CMakeParseImplicitIncludeInfo.cmake | 6 +- .../IBMCPP-C-DetermineVersionInternal.cmake | 16 +- .../IBMCPP-CXX-DetermineVersionInternal.cmake | 16 +- Modules/Compiler/XL-C-DetermineCompiler.cmake | 2 +- Modules/Compiler/XL-C.cmake | 37 +- Modules/Compiler/XL-CXX-DetermineCompiler.cmake | 2 +- Modules/Compiler/XL-CXX.cmake | 39 +- Modules/Compiler/XL.cmake | 22 - Modules/Compiler/XLClang-C-DetermineCompiler.cmake | 8 + Modules/Compiler/XLClang-C.cmake | 17 + .../Compiler/XLClang-CXX-DetermineCompiler.cmake | 8 + Modules/Compiler/XLClang-CXX.cmake | 20 + Modules/Compiler/XLClang.cmake | 22 + Modules/Internal/CPack/CPackRPM.cmake | 9 +- Modules/Platform/AIX-XL.cmake | 22 + Modules/Platform/AIX-XLClang-C.cmake | 2 + Modules/Platform/AIX-XLClang-CXX.cmake | 2 + Modules/Platform/AIX-XLClang.cmake | 15 + Source/cmGlobalGenerator.cxx | 30 + Source/cmGlobalVisualStudio11Generator.cxx | 11 +- Source/cmGlobalVisualStudio11Generator.h | 4 +- Source/cmGlobalVisualStudio8Generator.cxx | 31 +- Source/cmGlobalVisualStudio8Generator.h | 10 +- Source/cmPolicies.h | 5 +- Source/cmQtAutoGen.cxx | 55 +- Source/cmQtAutoGen.h | 41 +- Source/cmQtAutoGenInitializer.cxx | 804 ++++++++++++--------- Source/cmQtAutoGenInitializer.h | 98 ++- Source/cmQtAutoGenerator.cxx | 22 +- Source/cmQtAutoGenerator.h | 20 +- Source/cmQtAutoGeneratorMocUic.cxx | 242 +++---- Source/cmQtAutoGeneratorMocUic.h | 28 +- Source/cmQtAutoGeneratorRcc.cxx | 78 +- Source/kwsys/CMakeLists.txt | 34 - Source/kwsys/Configure.h.in | 37 - Source/kwsys/kwsysPlatformTestsCXX.cxx | 42 -- .../ParseImplicitIncludeInfo.cmake | 1 + .../ParseImplicitIncludeInfo/data/CMakeLists.txt | 3 + .../data/aix-C-XLClang-16.1.0.1.input | 40 + .../data/aix-C-XLClang-16.1.0.1.output | 1 + .../data/aix-CXX-XLClang-16.1.0.1.input | 44 ++ .../data/aix-CXX-XLClang-16.1.0.1.output | 1 + .../VsCEDebuggerDeploy-check.cmake | 59 ++ .../VS10ProjectWinCE/VsCEDebuggerDeploy.cmake | 3 +- Utilities/cmcurl/CMakeLists.txt | 2 +- Utilities/cmexpat/CMakeLists.txt | 2 +- Utilities/cmjsoncpp/CMakeLists.txt | 2 +- Utilities/cmjsoncpp/include/json/config.h | 7 +- Utilities/cmlibarchive/CMakeLists.txt | 2 +- Utilities/cmliblzma/CMakeLists.txt | 2 +- Utilities/cmlibrhash/CMakeLists.txt | 2 +- Utilities/cmlibuv/CMakeLists.txt | 2 +- Utilities/cmlibuv/src/unix/atomic-ops.h | 4 +- Utilities/cmzlib/CMakeLists.txt | 2 +- 62 files changed, 1253 insertions(+), 882 deletions(-) create mode 100644 Help/policy/CMP0089.rst create mode 100644 Help/prop_tgt/VS_NO_SOLUTION_DEPLOY.rst create mode 100644 Help/release/dev/add-xlclang.rst create mode 100644 Help/release/dev/vs-wince-no-deploy.rst create mode 100644 Modules/Compiler/XLClang-C-DetermineCompiler.cmake create mode 100644 Modules/Compiler/XLClang-C.cmake create mode 100644 Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake create mode 100644 Modules/Compiler/XLClang-CXX.cmake create mode 100644 Modules/Compiler/XLClang.cmake create mode 100644 Modules/Platform/AIX-XLClang-C.cmake create mode 100644 Modules/Platform/AIX-XLClang-CXX.cmake create mode 100644 Modules/Platform/AIX-XLClang.cmake create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/aix-C-XLClang-16.1.0.1.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/aix-C-XLClang-16.1.0.1.output create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/aix-CXX-XLClang-16.1.0.1.input create mode 100644 Tests/RunCMake/ParseImplicitIncludeInfo/data/aix-CXX-XLClang-16.1.0.1.output hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 27 00:03:04 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 27 Feb 2019 00:03:04 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-242-gb3191a0 Message-ID: <20190227050304.C4045127A6F@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 b3191a0f5740d5efa5d6286d3f7c2b9356fa87c0 (commit) from 78ff8d573777c099aea5bd2eb92d9866c0d85952 (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=b3191a0f5740d5efa5d6286d3f7c2b9356fa87c0 commit b3191a0f5740d5efa5d6286d3f7c2b9356fa87c0 Author: Kitware Robot AuthorDate: Wed Feb 27 00:01:09 2019 -0500 Commit: Kitware Robot CommitDate: Wed Feb 27 00:01:09 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 268efa5..4c9d2c0 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 14) -set(CMake_VERSION_PATCH 20190226) +set(CMake_VERSION_PATCH 20190227) #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 27 08:03:09 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 27 Feb 2019 08:03:09 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-252-g8c3172e Message-ID: <20190227130309.72E9D110446@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 8c3172e7c265d54ce02766db7ef1166f68bf897f (commit) via ec033b5b808680f2d8acb1579837d13db78191ac (commit) via 9b075d90326aeaf5450fa9b4f40bdcc76c3b2120 (commit) via 72a630645417dd19afeb621af6d64dcd71862065 (commit) via 2645839a83b96b43bb692f542b214ebee6a2245d (commit) via bf10f02441ba3e33523a64f075441c8820daf843 (commit) via 7a1f3fe041c453101a913a0ef5b23922a86bd604 (commit) via 3106cf4e3d15e0b6320ea3528079dd807f8bc06f (commit) via 8375c303e272fd7d20383a86d0c99433b7e0da67 (commit) via a0d4430d662be62af58c6ff8a9b75511b2cbbe5f (commit) from b3191a0f5740d5efa5d6286d3f7c2b9356fa87c0 (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=8c3172e7c265d54ce02766db7ef1166f68bf897f commit 8c3172e7c265d54ce02766db7ef1166f68bf897f Merge: ec033b5 bf10f02 Author: Brad King AuthorDate: Wed Feb 27 12:59:11 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 27 07:59:17 2019 -0500 Merge topic 'docs-rpath-origin-apple' bf10f02441 Help: Fix minor inaccuracies of what BUILD_RPATH_USE_ORIGIN affects Acked-by: Kitware Robot Merge-request: !3020 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ec033b5b808680f2d8acb1579837d13db78191ac commit ec033b5b808680f2d8acb1579837d13db78191ac Merge: 9b075d9 7a1f3fe Author: Brad King AuthorDate: Wed Feb 27 12:56:55 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 27 07:57:01 2019 -0500 Merge topic 'FindOctave-remove' 7a1f3fe041 FindOctave: Remove module pending further work Acked-by: Kitware Robot Merge-request: !3027 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9b075d90326aeaf5450fa9b4f40bdcc76c3b2120 commit 9b075d90326aeaf5450fa9b4f40bdcc76c3b2120 Merge: 72a6306 3106cf4 Author: Brad King AuthorDate: Wed Feb 27 12:55:40 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 27 07:56:00 2019 -0500 Merge topic 'include_external_msproject-exclude-from-all' 3106cf4e3d include_external_msproject: Restore support for EXCLUDE_FROM_ALL Acked-by: Kitware Robot Merge-request: !3025 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=72a630645417dd19afeb621af6d64dcd71862065 commit 72a630645417dd19afeb621af6d64dcd71862065 Merge: 2645839 8375c30 Author: Brad King AuthorDate: Wed Feb 27 12:54:56 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 27 07:55:13 2019 -0500 Merge topic 'vs-llvm-extension' 8375c303e2 VS: Fix detection of clang-cl with -T llvm Acked-by: Kitware Robot Merge-request: !3024 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2645839a83b96b43bb692f542b214ebee6a2245d commit 2645839a83b96b43bb692f542b214ebee6a2245d Merge: b3191a0 a0d4430 Author: Brad King AuthorDate: Wed Feb 27 12:54:18 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 27 07:54:25 2019 -0500 Merge topic 'restore-min-cmake-3.1' a0d4430d66 Tests: Restore support for CMake 3.1 through 3.6 with MSVC Acked-by: Kitware Robot Merge-request: !3021 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bf10f02441ba3e33523a64f075441c8820daf843 commit bf10f02441ba3e33523a64f075441c8820daf843 Author: Craig Scott AuthorDate: Tue Feb 26 22:43:46 2019 +1100 Commit: Craig Scott CommitDate: Wed Feb 27 21:07:36 2019 +1100 Help: Fix minor inaccuracies of what BUILD_RPATH_USE_ORIGIN affects diff --git a/Help/prop_tgt/BUILD_RPATH_USE_ORIGIN.rst b/Help/prop_tgt/BUILD_RPATH_USE_ORIGIN.rst index 511de7a..3378797 100644 --- a/Help/prop_tgt/BUILD_RPATH_USE_ORIGIN.rst +++ b/Help/prop_tgt/BUILD_RPATH_USE_ORIGIN.rst @@ -8,14 +8,14 @@ This property is initialized by the value of the variable On platforms that support runtime paths (``RPATH``) with the ``$ORIGIN`` token, setting this property to ``TRUE`` enables relative -paths in the build ``RPATH`` for executables that point to shared -libraries in the same build tree. +paths in the build ``RPATH`` for executables and shared libraries that +point to shared libraries in the same build tree. -Normally the build ``RPATH`` of an executable contains absolute paths -to the directory of shared libraries. Directories contained within the -build tree can be made relative to enable relocatable builds and to -help achieving reproducible builds by omitting the build directory -from the build environment. +Normally the build ``RPATH`` of a binary contains absolute paths +to the directory of each shared library it links to. The ``RPATH`` +entries for directories contained within the build tree can be made +relative to enable relocatable builds and to help achieve reproducible +builds by omitting the build directory from the build environment. This property has no effect on platforms that do not support the ``$ORIGIN`` token in ``RPATH``, or when the :variable:`CMAKE_SKIP_RPATH` https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7a1f3fe041c453101a913a0ef5b23922a86bd604 commit 7a1f3fe041c453101a913a0ef5b23922a86bd604 Author: Brad King AuthorDate: Tue Feb 26 14:12:34 2019 -0500 Commit: Brad King CommitDate: Tue Feb 26 14:12:34 2019 -0500 FindOctave: Remove module pending further work The `FindOctave` module added by commit 170bcb6fdc (FindOctave: Add module to find GNU octave, 2018-11-17, v3.14.0-rc1~283^2) has a few problems in its implementation that need to be worked out before the module can be included in a CMake release. These were missed during review. Remove the module for now. It can be restored later with a fresh review. Issue: #18991 diff --git a/Help/manual/cmake-modules.7.rst b/Help/manual/cmake-modules.7.rst index 71a8b00..d9b939f 100644 --- a/Help/manual/cmake-modules.7.rst +++ b/Help/manual/cmake-modules.7.rst @@ -178,7 +178,6 @@ They are normally called through the :command:`find_package` command. /module/FindMPEG2 /module/FindMPEG /module/FindMPI - /module/FindOctave /module/FindODBC /module/FindOpenACC /module/FindOpenAL diff --git a/Help/module/FindOctave.rst b/Help/module/FindOctave.rst deleted file mode 100644 index 2dbcec4..0000000 --- a/Help/module/FindOctave.rst +++ /dev/null @@ -1 +0,0 @@ -.. cmake-module:: ../../Modules/FindOctave.cmake diff --git a/Help/release/3.14.rst b/Help/release/3.14.rst index 13d209f..f05c53c 100644 --- a/Help/release/3.14.rst +++ b/Help/release/3.14.rst @@ -211,8 +211,6 @@ Modules mirror the new options to the ``mex`` command in MATLAB R2018a. The option ``MX_LIBRARY`` is no longer needed. -* A :module:`FindOctave` module was added to find GNU octave. - * The :module:`FindPostgreSQL` module now provides imported targets. * The :module:`FindPython`, :module:`FindPython2`, and :module:`FindPython3` diff --git a/Modules/FindOctave.cmake b/Modules/FindOctave.cmake deleted file mode 100644 index 8110ff1..0000000 --- a/Modules/FindOctave.cmake +++ /dev/null @@ -1,179 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. - -#[=======================================================================[.rst: -FindOctave ----------- - -Finds GNU Octave interpreter, libraries and compilers. - -Imported targets -^^^^^^^^^^^^^^^^ - -This module defines the following :prop_tgt:`IMPORTED` targets: - -``Octave::Interpreter`` - Octave interpreter (the main program) -``Octave::Octave`` - include directories and the octave library -``Octave::Octinterp`` - include directories and the octinterp library including the dependency on - Octave::Octave - -If no ``COMPONENTS`` are specified, ``Interpreter`` is assumed. - -Result Variables -^^^^^^^^^^^^^^^^ - -``Octave_FOUND`` - Octave interpreter and/or libraries were found -``Octave__FOUND`` - Octave specified was found - -``Octave_EXECUTABLE`` - Octave interpreter -``Octave_INCLUDE_DIRS`` - include path for mex.h -``Octave_LIBRARIES`` - octinterp, octave libraries - - -Cache variables -^^^^^^^^^^^^^^^ - -The following cache variables may also be set: - -``Octave_INTERP_LIBRARY`` - path to the library octinterp -``Octave_OCTAVE_LIBRARY`` - path to the liboctave library - -#]=======================================================================] - -cmake_policy(VERSION 3.3) - -unset(Octave_REQUIRED_VARS) -unset(Octave_Development_FOUND) -unset(Octave_Interpreter_FOUND) -set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME Interpreter) - -if(Development IN_LIST Octave_FIND_COMPONENTS) - find_program(Octave_CONFIG_EXECUTABLE - NAMES octave-config) - - if(Octave_CONFIG_EXECUTABLE) - - execute_process(COMMAND ${Octave_CONFIG_EXECUTABLE} -p BINDIR - OUTPUT_VARIABLE Octave_BINARY_DIR - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - - execute_process(COMMAND ${Octave_CONFIG_EXECUTABLE} -p OCTINCLUDEDIR - OUTPUT_VARIABLE Octave_INCLUDE_DIR - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - list(APPEND Octave_REQUIRED_VARS ${Octave_INCLUDE_DIR}) - - execute_process(COMMAND ${Octave_CONFIG_EXECUTABLE} -p OCTLIBDIR - OUTPUT_VARIABLE Octave_LIB1 - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - - execute_process(COMMAND ${Octave_CONFIG_EXECUTABLE} -p LIBDIR - OUTPUT_VARIABLE Octave_LIB2 - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - - find_library(Octave_INTERP_LIBRARY - NAMES octinterp - PATHS ${Octave_LIB1} ${Octave_LIB2} - NO_DEFAULT_PATH - ) - find_library(Octave_OCTAVE_LIBRARY - NAMES octave - PATHS ${Octave_LIB1} ${Octave_LIB2} - NO_DEFAULT_PATH - ) - list(APPEND Octave_REQUIRED_VARS ${Octave_OCTAVE_LIBRARY} ${Octave_INTERP_LIBRARY}) - - if(Octave_REQUIRED_VARS) - set(Octave_Development_FOUND true) - endif() - endif(Octave_CONFIG_EXECUTABLE) -endif() - -if(Interpreter IN_LIST Octave_FIND_COMPONENTS) - - find_program(Octave_EXECUTABLE - NAMES octave) - - list(APPEND Octave_REQUIRED_VARS ${Octave_EXECUTABLE}) - -endif() - -if(Octave_EXECUTABLE) - execute_process(COMMAND ${Octave_EXECUTABLE} -v - OUTPUT_VARIABLE Octave_VERSION - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - - - string(REGEX REPLACE "GNU Octave, version ([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" Octave_VERSION_MAJOR ${Octave_VERSION}) - string(REGEX REPLACE "GNU Octave, version [0-9]+\\.([0-9]+)\\.[0-9]+.*" "\\1" Octave_VERSION_MINOR ${Octave_VERSION}) - string(REGEX REPLACE "GNU Octave, version [0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" Octave_VERSION_PATCH ${Octave_VERSION}) - - set(Octave_VERSION ${Octave_VERSION_MAJOR}.${Octave_VERSION_MINOR}.${Octave_VERSION_PATCH}) - - set(Octave_Interpreter_FOUND true) - -endif(Octave_EXECUTABLE) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(Octave - REQUIRED_VARS Octave_REQUIRED_VARS - VERSION_VAR Octave_VERSION - HANDLE_COMPONENTS) - - -if(Octave_Development_FOUND) - set(Octave_LIBRARIES ${Octave_INTERP_LIBRARY} ${Octave_OCTAVE_LIBRARY}) - set(Octave_INCLUDE_DIRS ${Octave_INCLUDE_DIR}) - - if(NOT TARGET Octave::Octave) - add_library(Octave::Octave UNKNOWN IMPORTED) - set_target_properties(Octave::Octave PROPERTIES - IMPORTED_LOCATION ${Octave_OCTAVE_LIBRARY} - INTERFACE_INCLUDE_DIRECTORIES ${Octave_INCLUDE_DIR} - ) - endif() - - if(NOT TARGET Octave::Octinterp) - add_library(Octave::Octinterp UNKNOWN IMPORTED) - set_target_properties(Octave::Octinterp PROPERTIES - IMPORTED_LOCATION ${Octave_INTERP_LIBRARY} - INTERFACE_INCLUDE_DIRECTORIES ${Octave_INCLUDE_DIR}) - target_link_libraries(Octave::Octinterp INTERFACE - Octave::Octave) - endif() - -endif() - - -if(Octave_Interpreter_FOUND) - if(NOT TARGET Octave::Interpreter) - add_executable(Octave::Interpreter IMPORTED) - set_target_properties(Octave::Interpreter PROPERTIES - IMPORTED_LOCATION ${Octave_EXECUTABLE} - VERSION ${Octave_VERSION}) - endif() -endif() - -mark_as_advanced( - Octave_CONFIG_EXECUTABLE - Octave_INTERP_LIBRARY - Octave_OCTAVE_LIBRARY - Octave_INCLUDE_DIR - Octave_VERSION_MAJOR - Octave_VERSION_MINOR - Octave_VERSION_PATCH -) diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 6c888cc..431a492 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -1494,10 +1494,6 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release add_subdirectory(FindODBC) endif() - if(CMake_TEST_FindOctave) - add_subdirectory(FindOctave) - endif() - if(CMake_TEST_FindOpenCL) add_subdirectory(FindOpenCL) endif() diff --git a/Tests/FindOctave/CMakeLists.txt b/Tests/FindOctave/CMakeLists.txt deleted file mode 100644 index 1acc966..0000000 --- a/Tests/FindOctave/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -add_test(NAME FindOctave.Test COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindOctave/Test" - "${CMake_BINARY_DIR}/Tests/FindOctave/Test" - ${build_generator_args} - --build-project TestFindOctave - --build-options ${build_options} - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) diff --git a/Tests/FindOctave/Test/CMakeLists.txt b/Tests/FindOctave/Test/CMakeLists.txt deleted file mode 100644 index 73aa831..0000000 --- a/Tests/FindOctave/Test/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ -cmake_minimum_required(VERSION 3.3) -project(TestFindOctave CXX) -enable_testing() - -find_package(Octave REQUIRED COMPONENTS Development Interpreter) - -add_definitions(-DCMAKE_EXPECTED_Octave_VERSION=${Octave_VERSION}) - -add_executable(test_tgt main.cpp) -target_link_libraries(test_tgt Octave::Octave) -add_test(NAME test_tgt COMMAND test_tgt) - -add_executable(test_octinterp_tgt interp_main.cpp) -target_link_libraries(test_octinterp_tgt Octave::Octinterp) -add_test(NAME test_octinterp_tgt COMMAND test_octinterp_tgt) - -add_test(NAME test_tgt_exe - COMMAND Octave::Interpreter -q --eval "runtests('.')" - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) - -add_executable(test_var main.cpp) -target_include_directories(test_var PRIVATE ${Octave_INCLUDE_DIRS}) -target_link_libraries(test_var PRIVATE ${Octave_LIBRARIES}) -add_test(NAME test_var COMMAND test_var) diff --git a/Tests/FindOctave/Test/interp_main.cpp b/Tests/FindOctave/Test/interp_main.cpp deleted file mode 100644 index 1efa187..0000000 --- a/Tests/FindOctave/Test/interp_main.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include -#include -#include -#include -#include - -int main(void) -{ - string_vector argv(2); - argv(0) = "embedded"; - argv(1) = "-q"; - - try { - octave_main(2, argv.c_str_vec(), 1); - octave_value_list in; - in(0) = 72.0; - const octave_value_list result = feval("sqrt", in); - std::cout << "result is " << result(0).scalar_value() << std::endl; - clean_up_and_exit(0); - } catch (const octave::exit_exception& ex) { - std::cerr << "Octave interpreter exited with status = " << ex.exit_status() - << std::endl; - } catch (const octave::execution_exception&) { - std::cerr << "error encountered in Octave evaluator!" << std::endl; - } -} diff --git a/Tests/FindOctave/Test/main.cpp b/Tests/FindOctave/Test/main.cpp deleted file mode 100644 index 68270b1..0000000 --- a/Tests/FindOctave/Test/main.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include -#include - -// http://www.dm.unibo.it/~achilles/calc/octave.html/Standalone-Programs.html -int main(void) -{ - int n = 2; - Matrix a_matrix = Matrix(n, n); - for (octave_idx_type i = 0; i < n; i++) { - for (octave_idx_type j = 0; j < n; j++) { - a_matrix(i, j) = (i + 1) * 10 + (j + 1); - } - } - - std::cout << a_matrix << std::endl; - - return EXIT_SUCCESS; -} diff --git a/Tests/FindOctave/Test/testtrue.m b/Tests/FindOctave/Test/testtrue.m deleted file mode 100644 index 0c28a9e..0000000 --- a/Tests/FindOctave/Test/testtrue.m +++ /dev/null @@ -1 +0,0 @@ -%!assert(true) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3106cf4e3d15e0b6320ea3528079dd807f8bc06f commit 3106cf4e3d15e0b6320ea3528079dd807f8bc06f Author: Brad King AuthorDate: Tue Feb 26 10:10:33 2019 -0500 Commit: Brad King CommitDate: Tue Feb 26 10:20:01 2019 -0500 include_external_msproject: Restore support for EXCLUDE_FROM_ALL In commit dc6888573d (Pass EXCLUDE_FROM_ALL from directory to targets, 2019-01-15, v3.14.0-rc1~83^2) all `AddNewTarget` call sites were updated to copy the directory-level `EXCLUDE_FROM_ALL` into the target property of the same name, except that the one for `include_external_msproject` was incorrectly missed. Add it now. Furthermore, refactoring in commit b99129d2d8 (ENH: some code cleanup, 2007-03-12, v2.6.0~2020) accidentally set the `EXCLUDE_FROM_ALL` target property of `include_external_msproject`-generated targets to `FALSE` instead of simply leaving it unset. This was not necessary but had no effect until the above commit gave it a meaning. Drop that. Fixes: #18986 diff --git a/Source/cmIncludeExternalMSProjectCommand.cxx b/Source/cmIncludeExternalMSProjectCommand.cxx index b224d09..93134ad 100644 --- a/Source/cmIncludeExternalMSProjectCommand.cxx +++ b/Source/cmIncludeExternalMSProjectCommand.cxx @@ -85,10 +85,12 @@ bool cmIncludeExternalMSProjectCommand::InitialPass( // Create a target instance for this utility. cmTarget* target = this->Makefile->AddNewTarget(cmStateEnums::UTILITY, utility_name.c_str()); + if (this->Makefile->GetPropertyAsBool("EXCLUDE_FROM_ALL")) { + target->SetProperty("EXCLUDE_FROM_ALL", "TRUE"); + } target->SetProperty("GENERATOR_FILE_NAME", utility_name.c_str()); target->SetProperty("EXTERNAL_MSPROJECT", path.c_str()); - target->SetProperty("EXCLUDE_FROM_ALL", "FALSE"); if (!customType.empty()) target->SetProperty("VS_PROJECT_TYPE", customType.c_str()); https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8375c303e272fd7d20383a86d0c99433b7e0da67 commit 8375c303e272fd7d20383a86d0c99433b7e0da67 Author: Brad King AuthorDate: Tue Feb 26 09:49:55 2019 -0500 Commit: Brad King CommitDate: Tue Feb 26 09:58:51 2019 -0500 VS: Fix detection of clang-cl with -T llvm When using a VS generator with `-T llvm`, MSBuild relies on the "LLVM Compiler Toolchain" VS Extension. This does not put `clang-cl` in the `PATH` inside the build, and LLVM no longer provides a `cl` replacement either. Therefore we need another way to extract the path to the `CMAKE_{C,CXX}_COMPILER`. Fortunately the LLVM VS integration provides a `$(ClangClExecutable)` macro we can reference to get the path. Fixes: #18983 diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake index 83ce392..4677b40 100644 --- a/Modules/CMakeDetermineCompilerId.cmake +++ b/Modules/CMakeDetermineCompilerId.cmake @@ -181,7 +181,10 @@ Id flags: ${testflags} ${CMAKE_${lang}_COMPILER_ID_FLAGS_ALWAYS} set(vs_version ${CMAKE_MATCH_1}) set(id_platform ${CMAKE_VS_PLATFORM_NAME}) set(id_lang "${lang}") - if(CMAKE_VS_PLATFORM_TOOLSET MATCHES "v[0-9]+_clang_.*") + set(id_PostBuildEvent_Command "") + if(CMAKE_VS_PLATFORM_TOOLSET MATCHES "^[Ll][Ll][Vv][Mm]$") + set(id_cl_var "ClangClExecutable") + elseif(CMAKE_VS_PLATFORM_TOOLSET MATCHES "v[0-9]+_clang_.*") set(id_cl clang.exe) else() set(id_cl cl.exe) @@ -268,7 +271,11 @@ Id flags: ${testflags} ${CMAKE_${lang}_COMPILER_ID_FLAGS_ALWAYS} set(id_dir ${CMAKE_${lang}_COMPILER_ID_DIR}) set(id_src "${src}") set(id_compile "ClCompile") - set(id_PostBuildEvent_Command "for %%i in (${id_cl}) do %40echo CMAKE_${lang}_COMPILER=%%~$PATH:i") + if(id_cl_var) + set(id_PostBuildEvent_Command "echo CMAKE_${lang}_COMPILER=$(${id_cl_var})") + else() + set(id_PostBuildEvent_Command "for %%i in (${id_cl}) do %40echo CMAKE_${lang}_COMPILER=%%~$PATH:i") + endif() set(id_Import_props "") set(id_Import_targets "") set(id_ItemDefinitionGroup_entry "") https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a0d4430d662be62af58c6ff8a9b75511b2cbbe5f commit a0d4430d662be62af58c6ff8a9b75511b2cbbe5f Author: Brad King AuthorDate: Tue Feb 26 07:18:43 2019 -0500 Commit: Brad King CommitDate: Tue Feb 26 07:35:24 2019 -0500 Tests: Restore support for CMake 3.1 through 3.6 with MSVC The change in commit a5dd159990 (Tests: Fix RunCMake.try_compile CxxStandard case on MSVC, 2017-09-22, v3.10.0-rc1~63^2) introduced use of `if()` conditions not supported until CMake 3.7, so while it was intended to restore support for CMake versions prior to 3.9, it actually only did so for 3.7 and 3.8. Backport the logic to work with CMake 3.1. Fixes: #18987 diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 1f3e5c3..f2b7ff1 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -284,11 +284,11 @@ function(add_RunCMake_test_try_compile) if(CMAKE_VERSION VERSION_LESS 3.9.20170907 AND "x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC") # Older CMake versions do not know about MSVC language standards. # Approximate our logic from MSVC-CXX.cmake. - if ((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0.24215.1 AND + if ((NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0.24215.1 AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.10) OR - CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.10.25017) + NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.10.25017) set(CMAKE_CXX_STANDARD_DEFAULT 14) - elseif (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0) + elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16.0) set(CMAKE_CXX_STANDARD_DEFAULT "") else() unset(CMAKE_CXX_STANDARD_DEFAULT) ----------------------------------------------------------------------- Summary of changes: Help/manual/cmake-modules.7.rst | 1 - Help/module/FindOctave.rst | 1 - Help/prop_tgt/BUILD_RPATH_USE_ORIGIN.rst | 14 +-- Help/release/3.14.rst | 2 - Modules/CMakeDetermineCompilerId.cmake | 11 +- Modules/FindOctave.cmake | 179 --------------------------- Source/cmIncludeExternalMSProjectCommand.cxx | 4 +- Tests/CMakeLists.txt | 4 - Tests/FindOctave/CMakeLists.txt | 10 -- Tests/FindOctave/Test/CMakeLists.txt | 24 ---- Tests/FindOctave/Test/interp_main.cpp | 26 ---- Tests/FindOctave/Test/main.cpp | 18 --- Tests/FindOctave/Test/testtrue.m | 1 - Tests/RunCMake/CMakeLists.txt | 6 +- 14 files changed, 22 insertions(+), 279 deletions(-) delete mode 100644 Help/module/FindOctave.rst delete mode 100644 Modules/FindOctave.cmake delete mode 100644 Tests/FindOctave/CMakeLists.txt delete mode 100644 Tests/FindOctave/Test/CMakeLists.txt delete mode 100644 Tests/FindOctave/Test/interp_main.cpp delete mode 100644 Tests/FindOctave/Test/main.cpp delete mode 100644 Tests/FindOctave/Test/testtrue.m hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 27 08:13:03 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 27 Feb 2019 08:13:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-255-g557d4b5 Message-ID: <20190227131303.73230113532@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 557d4b5882f0ea1e1ad7eb1d59674e8683e23058 (commit) via e795be115e9c40d6092958d64f251db435acc4ba (commit) via 4b95e7fe63d254b8e50f09f85a51e232a7470c7b (commit) from 8c3172e7c265d54ce02766db7ef1166f68bf897f (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=557d4b5882f0ea1e1ad7eb1d59674e8683e23058 commit 557d4b5882f0ea1e1ad7eb1d59674e8683e23058 Merge: 8c3172e e795be1 Author: Brad King AuthorDate: Wed Feb 27 13:09:36 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 27 08:09:42 2019 -0500 Merge topic 'cmake_role-vs-fix' e795be115e Merge branch 'master' into cmake_role-vs-fix 4b95e7fe63 CMAKE_ROLE: Fix value in --build for Visual Studio generators Acked-by: Kitware Robot Merge-request: !3028 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e795be115e9c40d6092958d64f251db435acc4ba commit e795be115e9c40d6092958d64f251db435acc4ba Merge: 4b95e7f 78ff8d5 Author: Kyle Edwards AuthorDate: Tue Feb 26 17:28:04 2019 -0500 Commit: Kyle Edwards CommitDate: Tue Feb 26 17:28:04 2019 -0500 Merge branch 'master' into cmake_role-vs-fix diff --cc Source/cmakemain.cxx index a83f7dc,09068f8..e6f4021 --- a/Source/cmakemain.cxx +++ b/Source/cmakemain.cxx @@@ -498,11 -500,12 +500,12 @@@ static int do_build(int ac, char const return 1; } - cmake cm(cmake::RoleInternal, cmState::Unknown); + cmake cm(cmake::RoleInternal, cmState::Project); - cmSystemTools::SetMessageCallback([&cm](const char* msg, const char* title) { - cmakemainMessageCallback(msg, title, &cm); - }); - cm.SetProgressCallback([&cm](const char* msg, float prog) { + cmSystemTools::SetMessageCallback( + [&cm](const std::string& msg, const char* title) { + cmakemainMessageCallback(msg, title, &cm); + }); + cm.SetProgressCallback([&cm](const std::string& msg, float prog) { cmakemainProgressCallback(msg, prog, &cm); }); return cm.Build(jobs, dir, target, config, nativeOptions, clean, verbose); https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4b95e7fe63d254b8e50f09f85a51e232a7470c7b commit 4b95e7fe63d254b8e50f09f85a51e232a7470c7b Author: Kyle Edwards AuthorDate: Tue Feb 26 14:48:13 2019 -0500 Commit: Kyle Edwards CommitDate: Tue Feb 26 14:52:17 2019 -0500 CMAKE_ROLE: Fix value in --build for Visual Studio generators Fixes: #18990 diff --git a/Source/cmakemain.cxx b/Source/cmakemain.cxx index 890b74e..a83f7dc 100644 --- a/Source/cmakemain.cxx +++ b/Source/cmakemain.cxx @@ -498,7 +498,7 @@ static int do_build(int ac, char const* const* av) return 1; } - cmake cm(cmake::RoleInternal, cmState::Unknown); + cmake cm(cmake::RoleInternal, cmState::Project); cmSystemTools::SetMessageCallback([&cm](const char* msg, const char* title) { cmakemainMessageCallback(msg, title, &cm); }); diff --git a/Tests/RunCMake/CMakeRoleGlobalProperty/Project.cmake b/Tests/RunCMake/CMakeRoleGlobalProperty/Project.cmake index c0b6a48..22cad2b 100644 --- a/Tests/RunCMake/CMakeRoleGlobalProperty/Project.cmake +++ b/Tests/RunCMake/CMakeRoleGlobalProperty/Project.cmake @@ -1,4 +1,8 @@ get_property(role GLOBAL PROPERTY CMAKE_ROLE) + +file(WRITE "${CMAKE_BINARY_DIR}/test.cmake" "# a") +include("${CMAKE_BINARY_DIR}/test.cmake") + if(NOT role STREQUAL "PROJECT") message(SEND_ERROR "CMAKE_ROLE property is \"${role}\", should be \"PROJECT\"") endif() diff --git a/Tests/RunCMake/CMakeRoleGlobalProperty/RunCMakeTest.cmake b/Tests/RunCMake/CMakeRoleGlobalProperty/RunCMakeTest.cmake index 3cbd51d..7b29c28 100644 --- a/Tests/RunCMake/CMakeRoleGlobalProperty/RunCMakeTest.cmake +++ b/Tests/RunCMake/CMakeRoleGlobalProperty/RunCMakeTest.cmake @@ -2,6 +2,9 @@ include(RunCMake) include(RunCTest) run_cmake(Project) +file(WRITE "${RunCMake_BINARY_DIR}/Project-build/test.cmake" "# b") +run_cmake_command(ProjectBuild "${CMAKE_COMMAND}" --build "${RunCMake_BINARY_DIR}/Project-build") + run_cmake_command(Script "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_LIST_DIR}/Script.cmake") run_cmake_command(FindPackage "${CMAKE_COMMAND}" --find-package -DNAME=DummyPackage -DCOMPILER_ID=GNU -DLANGUAGE=CXX -DMODE=EXIST "-DCMAKE_MODULE_PATH=${CMAKE_CURRENT_LIST_DIR}") run_ctest(CTest) ----------------------------------------------------------------------- Summary of changes: Source/cmakemain.cxx | 2 +- Tests/RunCMake/CMakeRoleGlobalProperty/Project.cmake | 4 ++++ Tests/RunCMake/CMakeRoleGlobalProperty/RunCMakeTest.cmake | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 27 08:23:07 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 27 Feb 2019 08:23:07 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-273-gb13a844 Message-ID: <20190227132307.3BB43111F56@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 b13a8441cd1338ac9f8352a4df54759a1b19088a (commit) via 07421e678556a7381578cafc9d717bd485f8a39c (commit) via 23bcac5d582b55f15a892b0e39f67e2d3e5057b0 (commit) via c3ce9cfe153cc2af510ee0ecdd05d7e55abfcbdb (commit) via f369d59cddecf9f6a3b28329ab11b5f354c229bd (commit) via c2c7b9605c7e2c095c342c0641fc44875df89942 (commit) via e994e1f9cd7f520798be9b97ceeb75b946a64eb7 (commit) via 624ce2c8bef1a47b563f43144f3031c8b1c95a10 (commit) via 5833739c4a64e45d902eabd0a072216e5768428e (commit) via 4570b5ae91677e62a6dc6c55e13a33925a894c83 (commit) via 63191b169e28630db586ad7c975823cb985d6a10 (commit) via f22c18b1c1554b573c684efcb5c921c17c9b0f1d (commit) via 7c78adca8e0285c198e03163c2bb722cd86b389d (commit) via 933dd9164210a2f08dae6e1333ab7e5c30e3b012 (commit) via 2c0a7bc770367e80ce1fc68ea6cb9c9543e854e4 (commit) via 72f9bb29939f3765216e98e672197b3899d75f7d (commit) via 2dd0cb7aeb2d70dcc6e103c29ce2ce3a02bd381a (commit) via b5a69c62793b0b77f56a12c07946a691469ca3f6 (commit) from 557d4b5882f0ea1e1ad7eb1d59674e8683e23058 (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=b13a8441cd1338ac9f8352a4df54759a1b19088a commit b13a8441cd1338ac9f8352a4df54759a1b19088a Merge: 07421e6 f22c18b Author: Brad King AuthorDate: Wed Feb 27 13:20:33 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 27 08:21:32 2019 -0500 Merge topic 'ninja-dyndep-lang-aware' f22c18b1c1 ninja: name dyndep internal files using the object file 7c78adca8e cmNinjaTargetGenerator: remove "preprocessed" mentions in dyndep 933dd91642 ninja: do not assume explicit preprocessing uses that output 2c0a7bc770 ninja: pass language to cmake_ninja_depends 72f9bb2993 ninja: make dyndep generation language aware 2dd0cb7aeb Help: note that Ninja also uses OBJECT_OUTPUTS Acked-by: Kitware Robot Merge-request: !2997 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=07421e678556a7381578cafc9d717bd485f8a39c commit 07421e678556a7381578cafc9d717bd485f8a39c Merge: 23bcac5 63191b1 Author: Brad King AuthorDate: Wed Feb 27 13:20:23 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 27 08:20:42 2019 -0500 Merge topic 'autogen_variable_names' 63191b169e Autogen: Use more readable variable names for static const AUTO* strings Acked-by: Kitware Robot Merge-request: !3026 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=23bcac5d582b55f15a892b0e39f67e2d3e5057b0 commit 23bcac5d582b55f15a892b0e39f67e2d3e5057b0 Merge: c3ce9cf b5a69c6 Author: Brad King AuthorDate: Wed Feb 27 13:19:45 2019 +0000 Commit: Kitware Robot CommitDate: Wed Feb 27 08:20:03 2019 -0500 Merge topic 'ctest-clean-compress' b5a69c6279 cmcompress: Delete unused 3rdParty module Acked-by: Kitware Robot Merge-request: !3019 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c3ce9cfe153cc2af510ee0ecdd05d7e55abfcbdb commit c3ce9cfe153cc2af510ee0ecdd05d7e55abfcbdb Merge: 557d4b5 f369d59 Author: Brad King AuthorDate: Wed Feb 27 08:19:05 2019 -0500 Commit: Brad King CommitDate: Wed Feb 27 08:19:05 2019 -0500 Merge branch 'release-3.14' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=63191b169e28630db586ad7c975823cb985d6a10 commit 63191b169e28630db586ad7c975823cb985d6a10 Author: Sebastian Holtermann AuthorDate: Tue Feb 26 19:33:26 2019 +0100 Commit: Sebastian Holtermann CommitDate: Tue Feb 26 19:33:26 2019 +0100 Autogen: Use more readable variable names for static const AUTO* strings diff --git a/Source/cmQtAutoGen.cxx b/Source/cmQtAutoGen.cxx index 25ef4fc..022947f 100644 --- a/Source/cmQtAutoGen.cxx +++ b/Source/cmQtAutoGen.cxx @@ -73,44 +73,44 @@ void MergeOptions(std::vector& baseOpts, unsigned int const cmQtAutoGen::ParallelMax = 64; std::string const cmQtAutoGen::ListSep = "<<>>"; -std::string const cmQtAutoGen::GenNameGen = "AutoGen"; -std::string const cmQtAutoGen::GenNameMoc = "AutoMoc"; -std::string const cmQtAutoGen::GenNameUic = "AutoUic"; -std::string const cmQtAutoGen::GenNameRcc = "AutoRcc"; +std::string const cmQtAutoGen::GenAutoGen = "AutoGen"; +std::string const cmQtAutoGen::GenAutoMoc = "AutoMoc"; +std::string const cmQtAutoGen::GenAutoUic = "AutoUic"; +std::string const cmQtAutoGen::GenAutoRcc = "AutoRcc"; -std::string const cmQtAutoGen::GenNameGenUpper = "AUTOGEN"; -std::string const cmQtAutoGen::GenNameMocUpper = "AUTOMOC"; -std::string const cmQtAutoGen::GenNameUicUpper = "AUTOUIC"; -std::string const cmQtAutoGen::GenNameRccUpper = "AUTORCC"; +std::string const cmQtAutoGen::GenAUTOGEN = "AUTOGEN"; +std::string const cmQtAutoGen::GenAUTOMOC = "AUTOMOC"; +std::string const cmQtAutoGen::GenAUTOUIC = "AUTOUIC"; +std::string const cmQtAutoGen::GenAUTORCC = "AUTORCC"; std::string const& cmQtAutoGen::GeneratorName(GenT genType) { switch (genType) { case GenT::GEN: - return GenNameGen; + return GenAutoGen; case GenT::MOC: - return GenNameMoc; + return GenAutoMoc; case GenT::UIC: - return GenNameUic; + return GenAutoUic; case GenT::RCC: - return GenNameRcc; + return GenAutoRcc; } - return GenNameGen; + return GenAutoGen; } std::string const& cmQtAutoGen::GeneratorNameUpper(GenT genType) { switch (genType) { case GenT::GEN: - return GenNameGenUpper; + return GenAUTOGEN; case GenT::MOC: - return GenNameMocUpper; + return GenAUTOMOC; case GenT::UIC: - return GenNameUicUpper; + return GenAUTOUIC; case GenT::RCC: - return GenNameRccUpper; + return GenAUTORCC; } - return GenNameGenUpper; + return GenAUTOGEN; } std::string cmQtAutoGen::Tools(bool moc, bool uic, bool rcc) @@ -118,13 +118,13 @@ std::string cmQtAutoGen::Tools(bool moc, bool uic, bool rcc) std::string res; std::vector lst; if (moc) { - lst.emplace_back("AUTOMOC"); + lst.emplace_back(GenAUTOMOC); } if (uic) { - lst.emplace_back("AUTOUIC"); + lst.emplace_back(GenAUTOUIC); } if (rcc) { - lst.emplace_back("AUTORCC"); + lst.emplace_back(GenAUTORCC); } switch (lst.size()) { case 1: diff --git a/Source/cmQtAutoGen.h b/Source/cmQtAutoGen.h index e62a947..6cc8df1 100644 --- a/Source/cmQtAutoGen.h +++ b/Source/cmQtAutoGen.h @@ -52,14 +52,14 @@ public: /// @brief Nested lists separator static std::string const ListSep; // Generator names - static std::string const GenNameGen; - static std::string const GenNameMoc; - static std::string const GenNameUic; - static std::string const GenNameRcc; - static std::string const GenNameGenUpper; - static std::string const GenNameMocUpper; - static std::string const GenNameUicUpper; - static std::string const GenNameRccUpper; + static std::string const GenAutoGen; + static std::string const GenAutoMoc; + static std::string const GenAutoUic; + static std::string const GenAutoRcc; + static std::string const GenAUTOGEN; + static std::string const GenAUTOMOC; + static std::string const GenAUTOUIC; + static std::string const GenAUTORCC; /// @brief Maximum number of parallel threads/processes in a generator static unsigned int const ParallelMax; diff --git a/Source/cmQtAutoGenGlobalInitializer.cxx b/Source/cmQtAutoGenGlobalInitializer.cxx index 3ad91ee..7bd0e52 100644 --- a/Source/cmQtAutoGenGlobalInitializer.cxx +++ b/Source/cmQtAutoGenGlobalInitializer.cxx @@ -74,9 +74,9 @@ cmQtAutoGenGlobalInitializer::cmQtAutoGenGlobalInitializer( continue; } - bool const moc = target->GetPropertyAsBool("AUTOMOC"); - bool const uic = target->GetPropertyAsBool("AUTOUIC"); - bool const rcc = target->GetPropertyAsBool("AUTORCC"); + bool const moc = target->GetPropertyAsBool(cmQtAutoGen::GenAUTOMOC); + bool const uic = target->GetPropertyAsBool(cmQtAutoGen::GenAUTOUIC); + bool const rcc = target->GetPropertyAsBool(cmQtAutoGen::GenAUTORCC); if (moc || uic || rcc) { std::string const mocExec = target->GetSafeProperty("AUTOMOC_EXECUTABLE"); diff --git a/Source/cmQtAutoGenInitializer.h b/Source/cmQtAutoGenInitializer.h index a8c7960..700f16b 100644 --- a/Source/cmQtAutoGenInitializer.h +++ b/Source/cmQtAutoGenInitializer.h @@ -212,8 +212,8 @@ private: /// @brief Constructor MocT() - : GenVarsT(cmQtAutoGen::GenT::MOC, cmQtAutoGen::GenNameMoc, - cmQtAutoGen::GenNameMocUpper){}; + : GenVarsT(cmQtAutoGen::GenT::MOC, cmQtAutoGen::GenAutoMoc, + cmQtAutoGen::GenAUTOMOC){}; } Moc; /// @brief Uic only variables @@ -228,8 +228,8 @@ private: /// @brief Constructor UicT() - : GenVarsT(cmQtAutoGen::GenT::UIC, cmQtAutoGen::GenNameUic, - cmQtAutoGen::GenNameUicUpper){}; + : GenVarsT(cmQtAutoGen::GenT::UIC, cmQtAutoGen::GenAutoUic, + cmQtAutoGen::GenAUTOUIC){}; } Uic; /// @brief Rcc only variables @@ -241,8 +241,8 @@ private: /// @brief Constructor RccT() - : GenVarsT(cmQtAutoGen::GenT::RCC, cmQtAutoGen::GenNameRcc, - cmQtAutoGen::GenNameRccUpper){}; + : GenVarsT(cmQtAutoGen::GenT::RCC, cmQtAutoGen::GenAutoRcc, + cmQtAutoGen::GenAUTORCC){}; } Rcc; }; https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f22c18b1c1554b573c684efcb5c921c17c9b0f1d commit f22c18b1c1554b573c684efcb5c921c17c9b0f1d Author: Ben Boeckel AuthorDate: Wed Feb 20 13:20:28 2019 -0500 Commit: Brad King CommitDate: Mon Feb 25 10:14:11 2019 -0500 ninja: name dyndep internal files using the object file Now that preprocessing outputs are not necessarily used all the way through, the output name is a better base name to use for these files. diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 74d3e8d..d21fd35 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -1577,10 +1577,10 @@ Compilation of source files within a target is split into the following steps: --obj=$OBJ_FILE --ddi=$DYNDEP_INTERMEDIATE_FILE \ --lang=Fortran - build src.f90-pp.f90 | src.f90-pp.f90.ddi: Fortran_PREPROCESS src.f90 + build src.f90-pp.f90 | src.f90.o.ddi: Fortran_PREPROCESS src.f90 OBJ_FILE = src.f90.o - DEP_FILE = src.f90-pp.f90.d - DYNDEP_INTERMEDIATE_FILE = src.f90-pp.f90.ddi + DEP_FILE = src.f90.o.d + DYNDEP_INTERMEDIATE_FILE = src.f90.o.ddi The ``cmake -E cmake_ninja_depends`` tool reads the preprocessed output and generates the ninja depfile for preprocessor dependencies. It also @@ -1596,7 +1596,7 @@ Compilation of source files within a target is split into the following steps: command = cmake -E cmake_ninja_dyndep \ --tdi=FortranDependInfo.json --lang=Fortran --dd=$out $in - build Fortran.dd: Fortran_DYNDEP src1.f90-pp.f90.ddi src2.f90-pp.f90.ddi + build Fortran.dd: Fortran_DYNDEP src1.f90.o.ddi src2.f90.o.ddi The ``cmake -E cmake_ninja_dyndep`` tool reads the "ddi" files from all sources in the target and the ``FortranModules.json`` files from targets diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 6e140fb..8d11408 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -1113,7 +1113,7 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement( // Explicit preprocessing always uses a depfile. ppVars["DEP_FILE"] = this->GetLocalGenerator()->ConvertToOutputFormat( - ppFileName + ".d", cmOutputConverter::SHELL); + objectFileName + ".d", cmOutputConverter::SHELL); if (compilePP) { // The actual compilation does not need a depfile because it // depends on the already-preprocessed source. @@ -1126,7 +1126,7 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement( ppVars["OBJ_FILE"] = objectFileName; // Tell dependency scanner where to store dyndep intermediate results. - std::string const ddiFile = ppFileName + ".ddi"; + std::string const ddiFile = objectFileName + ".ddi"; ppVars["DYNDEP_INTERMEDIATE_FILE"] = ddiFile; ppImplicitOuts.push_back(ddiFile); this->DDIFiles[language].push_back(ddiFile); https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7c78adca8e0285c198e03163c2bb722cd86b389d commit 7c78adca8e0285c198e03163c2bb722cd86b389d Author: Ben Boeckel AuthorDate: Wed Feb 20 01:41:26 2019 -0500 Commit: Brad King CommitDate: Mon Feb 25 10:14:11 2019 -0500 cmNinjaTargetGenerator: remove "preprocessed" mentions in dyndep Not all languages compile the preprocessed source (or even have preprocessed sources at all). diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 4998ac8..6e140fb 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -594,7 +594,8 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang) std::string ddRspContent = "$in"; std::string ddInput = "@" + ddRspFile; - // Run CMake dependency scanner on preprocessed output. + // Run CMake dependency scanner on the source file (using the preprocessed + // source if that was performed). std::string const cmake = this->GetLocalGenerator()->ConvertToOutputFormat( cmSystemTools::GetCMakeCommand(), cmLocalGenerator::SHELL); ddCmds.push_back(cmake + @@ -1121,7 +1122,7 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement( if (needDyndep) { // Tell dependency scanner the object file that will result from - // compiling the preprocessed source. + // compiling the source. ppVars["OBJ_FILE"] = objectFileName; // Tell dependency scanner where to store dyndep intermediate results. https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=933dd9164210a2f08dae6e1333ab7e5c30e3b012 commit 933dd9164210a2f08dae6e1333ab7e5c30e3b012 Author: Ben Boeckel AuthorDate: Wed Feb 20 12:13:33 2019 -0500 Commit: Brad King CommitDate: Mon Feb 25 10:14:11 2019 -0500 ninja: do not assume explicit preprocessing uses that output In Fortran, this is OK, but for C++, compiling preprocessed source generally results in poorer diagnostic messages and can also be ill-formed anyways. diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 28d4a07..4998ac8 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -102,6 +102,12 @@ bool cmNinjaTargetGenerator::NeedExplicitPreprocessing( return lang == "Fortran"; } +bool cmNinjaTargetGenerator::UsePreprocessedSource( + std::string const& lang) const +{ + return lang == "Fortran"; +} + std::string cmNinjaTargetGenerator::LanguageDyndepRule( const std::string& lang) const { @@ -1035,6 +1041,7 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement( // For some cases we do an explicit preprocessor invocation. bool const explicitPP = this->NeedExplicitPreprocessing(language); if (explicitPP) { + bool const compilePP = this->UsePreprocessedSource(language); std::string const ppComment; std::string const ppRule = this->LanguagePreprocessRule(language); cmNinjaDeps ppOutputs; @@ -1048,50 +1055,69 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement( this->ConvertToNinjaPath(this->GetPreprocessedFilePath(source)); ppOutputs.push_back(ppFileName); - // Move compilation dependencies to the preprocessing build statement. - std::swap(ppExplicitDeps, explicitDeps); - std::swap(ppImplicitDeps, implicitDeps); - std::swap(ppOrderOnlyDeps, orderOnlyDeps); - std::swap(ppVars["IN_ABS"], vars["IN_ABS"]); + if (compilePP) { + // Move compilation dependencies to the preprocessing build statement. + std::swap(ppExplicitDeps, explicitDeps); + std::swap(ppImplicitDeps, implicitDeps); + std::swap(ppOrderOnlyDeps, orderOnlyDeps); + std::swap(ppVars["IN_ABS"], vars["IN_ABS"]); - // The actual compilation will now use the preprocessed source. - explicitDeps.push_back(ppFileName); + // The actual compilation will now use the preprocessed source. + explicitDeps.push_back(ppFileName); + } else { + // Copy compilation dependencies to the preprocessing build statement. + ppExplicitDeps = explicitDeps; + ppImplicitDeps = implicitDeps; + ppOrderOnlyDeps = orderOnlyDeps; + ppVars["IN_ABS"] = vars["IN_ABS"]; + } // Preprocessing and compilation generally use the same flags. ppVars["FLAGS"] = vars["FLAGS"]; - // In case compilation requires flags that are incompatible with - // preprocessing, include them here. - std::string const postFlag = this->Makefile->GetSafeDefinition( - "CMAKE_" + language + "_POSTPROCESS_FLAG"); - this->LocalGenerator->AppendFlags(vars["FLAGS"], postFlag); + if (compilePP) { + // In case compilation requires flags that are incompatible with + // preprocessing, include them here. + std::string const postFlag = this->Makefile->GetSafeDefinition( + "CMAKE_" + language + "_POSTPROCESS_FLAG"); + this->LocalGenerator->AppendFlags(vars["FLAGS"], postFlag); + } - // Move preprocessor definitions to the preprocessor build statement. - std::swap(ppVars["DEFINES"], vars["DEFINES"]); + if (compilePP) { + // Move preprocessor definitions to the preprocessor build statement. + std::swap(ppVars["DEFINES"], vars["DEFINES"]); + } else { + // Copy preprocessor definitions to the preprocessor build statement. + ppVars["DEFINES"] = vars["DEFINES"]; + } // Copy include directories to the preprocessor build statement. The // Fortran compilation build statement still needs them for the INCLUDE // directive. ppVars["INCLUDES"] = vars["INCLUDES"]; - // Prepend source file's original directory as an include directory - // so e.g. Fortran INCLUDE statements can look for files in it. - std::vector sourceDirectory; - sourceDirectory.push_back( - cmSystemTools::GetParentDirectory(source->GetFullPath())); + if (compilePP) { + // Prepend source file's original directory as an include directory + // so e.g. Fortran INCLUDE statements can look for files in it. + std::vector sourceDirectory; + sourceDirectory.push_back( + cmSystemTools::GetParentDirectory(source->GetFullPath())); - std::string sourceDirectoryFlag = this->LocalGenerator->GetIncludeFlags( - sourceDirectory, this->GeneratorTarget, language, false, false, - this->GetConfigName()); + std::string sourceDirectoryFlag = this->LocalGenerator->GetIncludeFlags( + sourceDirectory, this->GeneratorTarget, language, false, false, + this->GetConfigName()); - vars["INCLUDES"] = sourceDirectoryFlag + " " + vars["INCLUDES"]; + vars["INCLUDES"] = sourceDirectoryFlag + " " + vars["INCLUDES"]; + } // Explicit preprocessing always uses a depfile. ppVars["DEP_FILE"] = this->GetLocalGenerator()->ConvertToOutputFormat( ppFileName + ".d", cmOutputConverter::SHELL); - // The actual compilation does not need a depfile because it - // depends on the already-preprocessed source. - vars.erase("DEP_FILE"); + if (compilePP) { + // The actual compilation does not need a depfile because it + // depends on the already-preprocessed source. + vars.erase("DEP_FILE"); + } if (needDyndep) { // Tell dependency scanner the object file that will result from diff --git a/Source/cmNinjaTargetGenerator.h b/Source/cmNinjaTargetGenerator.h index 2ffd256..6a42da0 100644 --- a/Source/cmNinjaTargetGenerator.h +++ b/Source/cmNinjaTargetGenerator.h @@ -65,6 +65,7 @@ protected: bool NeedExplicitPreprocessing(std::string const& lang) const; std::string LanguageDyndepRule(std::string const& lang) const; bool NeedDyndep(std::string const& lang) const; + bool UsePreprocessedSource(std::string const& lang) const; std::string OrderDependsTargetForTarget(); https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2c0a7bc770367e80ce1fc68ea6cb9c9543e854e4 commit 2c0a7bc770367e80ce1fc68ea6cb9c9543e854e4 Author: Ben Boeckel AuthorDate: Wed Feb 20 04:57:07 2019 -0500 Commit: Brad King CommitDate: Mon Feb 25 10:14:09 2019 -0500 ninja: pass language to cmake_ninja_depends diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 5a85963..74d3e8d 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -1574,7 +1574,8 @@ Compilation of source files within a target is split into the following steps: command = gfortran -cpp $DEFINES $INCLUDES $FLAGS -E $in -o $out && cmake -E cmake_ninja_depends \ --tdi=FortranDependInfo.json --pp=$out --dep=$DEP_FILE \ - --obj=$OBJ_FILE --ddi=$DYNDEP_INTERMEDIATE_FILE + --obj=$OBJ_FILE --ddi=$DYNDEP_INTERMEDIATE_FILE \ + --lang=Fortran build src.f90-pp.f90 | src.f90-pp.f90.ddi: Fortran_PREPROCESS src.f90 OBJ_FILE = src.f90.o @@ -1633,6 +1634,19 @@ Compilation of source files within a target is split into the following steps: (because the latter consumes the module). */ +struct cmSourceInfo +{ + // Set of provided and required modules. + std::set Provides; + std::set Requires; + + // Set of files included in the translation unit. + std::set Includes; +}; + +static std::unique_ptr cmcmd_cmake_ninja_depends_fortran( + std::string const& arg_tdi, std::string const& arg_pp); + int cmcmd_cmake_ninja_depends(std::vector::const_iterator argBeg, std::vector::const_iterator argEnd) { @@ -1641,6 +1655,7 @@ int cmcmd_cmake_ninja_depends(std::vector::const_iterator argBeg, std::string arg_dep; std::string arg_obj; std::string arg_ddi; + std::string arg_lang; for (std::string const& arg : cmMakeRange(argBeg, argEnd)) { if (cmHasLiteralPrefix(arg, "--tdi=")) { arg_tdi = arg.substr(6); @@ -1652,6 +1667,8 @@ int cmcmd_cmake_ninja_depends(std::vector::const_iterator argBeg, arg_obj = arg.substr(6); } else if (cmHasLiteralPrefix(arg, "--ddi=")) { arg_ddi = arg.substr(6); + } else if (cmHasLiteralPrefix(arg, "--lang=")) { + arg_lang = arg.substr(7); } else { cmSystemTools::Error("-E cmake_ninja_depends unknown argument: " + arg); return 1; @@ -1677,7 +1694,61 @@ int cmcmd_cmake_ninja_depends(std::vector::const_iterator argBeg, cmSystemTools::Error("-E cmake_ninja_depends requires value for --ddi="); return 1; } + if (arg_lang.empty()) { + cmSystemTools::Error("-E cmake_ninja_depends requires value for --lang="); + return 1; + } + + std::unique_ptr info; + if (arg_lang == "Fortran") { + info = cmcmd_cmake_ninja_depends_fortran(arg_tdi, arg_pp); + } else { + cmSystemTools::Error("-E cmake_ninja_depends does not understand the " + + arg_lang + " language"); + return 1; + } + if (!info) { + // The error message is already expected to have been output. + return 1; + } + + { + cmGeneratedFileStream depfile(arg_dep); + depfile << cmSystemTools::ConvertToUnixOutputPath(arg_pp) << ":"; + for (std::string const& include : info->Includes) { + depfile << " \\\n " << cmSystemTools::ConvertToUnixOutputPath(include); + } + depfile << "\n"; + } + + Json::Value ddi(Json::objectValue); + ddi["object"] = arg_obj; + + Json::Value& ddi_provides = ddi["provides"] = Json::arrayValue; + for (std::string const& provide : info->Provides) { + ddi_provides.append(provide); + } + Json::Value& ddi_requires = ddi["requires"] = Json::arrayValue; + for (std::string const& r : info->Requires) { + // Require modules not provided in the same source. + if (!info->Provides.count(r)) { + ddi_requires.append(r); + } + } + + cmGeneratedFileStream ddif(arg_ddi); + ddif << ddi; + if (!ddif) { + cmSystemTools::Error("-E cmake_ninja_depends failed to write " + arg_ddi); + return 1; + } + return 0; +} + +std::unique_ptr cmcmd_cmake_ninja_depends_fortran( + std::string const& arg_tdi, std::string const& arg_pp) +{ cmFortranCompiler fc; std::vector includes; { @@ -1689,7 +1760,7 @@ int cmcmd_cmake_ninja_depends(std::vector::const_iterator argBeg, if (!reader.parse(tdif, tdio, false)) { cmSystemTools::Error("-E cmake_ninja_depends failed to parse " + arg_tdi + reader.getFormattedErrorMessages()); - return 1; + return nullptr; } } @@ -1710,49 +1781,23 @@ int cmcmd_cmake_ninja_depends(std::vector::const_iterator argBeg, fc.SModExt = tdi_submodule_ext.asString(); } - cmFortranSourceInfo info; + cmFortranSourceInfo finfo; std::set defines; - cmFortranParser parser(fc, includes, defines, info); + cmFortranParser parser(fc, includes, defines, finfo); if (!cmFortranParser_FilePush(&parser, arg_pp.c_str())) { cmSystemTools::Error("-E cmake_ninja_depends failed to open " + arg_pp); - return 1; + return nullptr; } if (cmFortran_yyparse(parser.Scanner) != 0) { // Failed to parse the file. - return 1; - } - - { - cmGeneratedFileStream depfile(arg_dep); - depfile << cmSystemTools::ConvertToUnixOutputPath(arg_pp) << ":"; - for (std::string const& include : info.Includes) { - depfile << " \\\n " << cmSystemTools::ConvertToUnixOutputPath(include); - } - depfile << "\n"; + return nullptr; } - Json::Value ddi(Json::objectValue); - ddi["object"] = arg_obj; - - Json::Value& ddi_provides = ddi["provides"] = Json::arrayValue; - for (std::string const& provide : info.Provides) { - ddi_provides.append(provide); - } - Json::Value& ddi_requires = ddi["requires"] = Json::arrayValue; - for (std::string const& r : info.Requires) { - // Require modules not provided in the same source. - if (!info.Provides.count(r)) { - ddi_requires.append(r); - } - } - - cmGeneratedFileStream ddif(arg_ddi); - ddif << ddi; - if (!ddif) { - cmSystemTools::Error("-E cmake_ninja_depends failed to write " + arg_ddi); - return 1; - } - return 0; + auto info = cm::make_unique(); + info->Provides = finfo.Provides; + info->Requires = finfo.Requires; + info->Includes = finfo.Includes; + return info; } struct cmDyndepObjectInfo diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 6a08d5c..28d4a07 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -558,7 +558,7 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang) cmake + " -E cmake_ninja_depends" " --tdi=" + - tdi + + tdi + " --lang=" + lang + " --pp=$out" " --dep=$DEP_FILE" + (needDyndep ? " --obj=$OBJ_FILE --ddi=$DYNDEP_INTERMEDIATE_FILE" : "")); @@ -1062,8 +1062,8 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement( // In case compilation requires flags that are incompatible with // preprocessing, include them here. - std::string const postFlag = - this->Makefile->GetSafeDefinition("CMAKE_Fortran_POSTPROCESS_FLAG"); + std::string const postFlag = this->Makefile->GetSafeDefinition( + "CMAKE_" + language + "_POSTPROCESS_FLAG"); this->LocalGenerator->AppendFlags(vars["FLAGS"], postFlag); // Move preprocessor definitions to the preprocessor build statement. https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=72f9bb29939f3765216e98e672197b3899d75f7d commit 72f9bb29939f3765216e98e672197b3899d75f7d Author: Ben Boeckel AuthorDate: Wed Feb 20 01:39:55 2019 -0500 Commit: Brad King CommitDate: Mon Feb 25 10:06:20 2019 -0500 ninja: make dyndep generation language aware A target may have multiple languages with dyndep rules, separate `.dd` files should be generated. diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 018606c..5a85963 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -1593,7 +1593,7 @@ Compilation of source files within a target is split into the following steps: rule Fortran_DYNDEP command = cmake -E cmake_ninja_dyndep \ - --tdi=FortranDependInfo.json --dd=$out $in + --tdi=FortranDependInfo.json --lang=Fortran --dd=$out $in build Fortran.dd: Fortran_DYNDEP src1.f90-pp.f90.ddi src2.f90-pp.f90.ddi @@ -1755,7 +1755,7 @@ int cmcmd_cmake_ninja_depends(std::vector::const_iterator argBeg, return 0; } -struct cmFortranObjectInfo +struct cmDyndepObjectInfo { std::string Object; std::vector Provides; @@ -1767,7 +1767,8 @@ bool cmGlobalNinjaGenerator::WriteDyndepFile( std::string const& dir_cur_src, std::string const& dir_cur_bld, std::string const& arg_dd, std::vector const& arg_ddis, std::string const& module_dir, - std::vector const& linked_target_dirs) + std::vector const& linked_target_dirs, + std::string const& arg_lang) { // Setup path conversions. { @@ -1784,7 +1785,7 @@ bool cmGlobalNinjaGenerator::WriteDyndepFile( this->LocalGenerators.push_back(lgd.release()); } - std::vector objects; + std::vector objects; for (std::string const& arg_ddi : arg_ddis) { // Load the ddi file and compute the module file paths it provides. Json::Value ddio; @@ -1797,7 +1798,7 @@ bool cmGlobalNinjaGenerator::WriteDyndepFile( return false; } - cmFortranObjectInfo info; + cmDyndepObjectInfo info; info.Object = ddi["object"].asString(); Json::Value const& ddi_provides = ddi["provides"]; if (ddi_provides.isArray()) { @@ -1819,7 +1820,8 @@ bool cmGlobalNinjaGenerator::WriteDyndepFile( // Populate the module map with those provided by linked targets first. for (std::string const& linked_target_dir : linked_target_dirs) { - std::string const ltmn = linked_target_dir + "/FortranModules.json"; + std::string const ltmn = + linked_target_dir + "/" + arg_lang + "Modules.json"; Json::Value ltm; cmsys::ifstream ltmf(ltmn.c_str(), std::ios::in | std::ios::binary); Json::Reader reader; @@ -1840,7 +1842,7 @@ bool cmGlobalNinjaGenerator::WriteDyndepFile( // We do this after loading the modules provided by linked targets // in case we have one of the same name that must be preferred. Json::Value tm = Json::objectValue; - for (cmFortranObjectInfo const& object : objects) { + for (cmDyndepObjectInfo const& object : objects) { for (std::string const& p : object.Provides) { std::string const mod = module_dir + p; mod_files[p] = mod; @@ -1851,7 +1853,7 @@ bool cmGlobalNinjaGenerator::WriteDyndepFile( cmGeneratedFileStream ddf(arg_dd); ddf << "ninja_dyndep_version = 1.0\n"; - for (cmFortranObjectInfo const& object : objects) { + for (cmDyndepObjectInfo const& object : objects) { std::string const ddComment; std::string const ddRule = "dyndep"; cmNinjaDeps ddOutputs; @@ -1882,7 +1884,7 @@ bool cmGlobalNinjaGenerator::WriteDyndepFile( // Store the map of modules provided by this target in a file for // use by dependents that reference this target in linked-target-dirs. std::string const target_mods_file = - cmSystemTools::GetFilenamePath(arg_dd) + "/FortranModules.json"; + cmSystemTools::GetFilenamePath(arg_dd) + "/" + arg_lang + "Modules.json"; cmGeneratedFileStream tmf(target_mods_file); tmf << tm; @@ -1896,11 +1898,14 @@ int cmcmd_cmake_ninja_dyndep(std::vector::const_iterator argBeg, cmSystemTools::HandleResponseFile(argBeg, argEnd); std::string arg_dd; + std::string arg_lang; std::string arg_tdi; std::vector arg_ddis; for (std::string const& arg : arg_full) { if (cmHasLiteralPrefix(arg, "--tdi=")) { arg_tdi = arg.substr(6); + } else if (cmHasLiteralPrefix(arg, "--lang=")) { + arg_lang = arg.substr(7); } else if (cmHasLiteralPrefix(arg, "--dd=")) { arg_dd = arg.substr(5); } else if (!cmHasLiteralPrefix(arg, "--") && @@ -1915,6 +1920,10 @@ int cmcmd_cmake_ninja_dyndep(std::vector::const_iterator argBeg, cmSystemTools::Error("-E cmake_ninja_dyndep requires value for --tdi="); return 1; } + if (arg_lang.empty()) { + cmSystemTools::Error("-E cmake_ninja_dyndep requires value for --lang="); + return 1; + } if (arg_dd.empty()) { cmSystemTools::Error("-E cmake_ninja_dyndep requires value for --dd="); return 1; @@ -1955,8 +1964,8 @@ int cmcmd_cmake_ninja_dyndep(std::vector::const_iterator argBeg, static_cast(cm.CreateGlobalGenerator("Ninja"))); if (!ggd || !ggd->WriteDyndepFile(dir_top_src, dir_top_bld, dir_cur_src, dir_cur_bld, - arg_dd, arg_ddis, module_dir, - linked_target_dirs)) { + arg_dd, arg_ddis, module_dir, linked_target_dirs, + arg_lang)) { return 1; } return 0; diff --git a/Source/cmGlobalNinjaGenerator.h b/Source/cmGlobalNinjaGenerator.h index c619e67..69210ec 100644 --- a/Source/cmGlobalNinjaGenerator.h +++ b/Source/cmGlobalNinjaGenerator.h @@ -365,7 +365,8 @@ public: std::string const& arg_dd, std::vector const& arg_ddis, std::string const& module_dir, - std::vector const& linked_target_dirs); + std::vector const& linked_target_dirs, + std::string const& arg_lang); protected: void Generate() override; diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 6013cd0..6a08d5c 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -594,7 +594,7 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang) ddCmds.push_back(cmake + " -E cmake_ninja_dyndep" " --tdi=" + - tdi + + tdi + " --lang=" + lang + " --dd=$out" " " + ddInput); @@ -868,24 +868,27 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatements() this->WriteObjectBuildStatement(sf); } - if (!this->DDIFiles.empty()) { + for (auto const& langDDIFiles : this->DDIFiles) { + std::string const& language = langDDIFiles.first; + cmNinjaDeps const& ddiFiles = langDDIFiles.second; + std::string const ddComment; - std::string const ddRule = this->LanguageDyndepRule("Fortran"); + std::string const ddRule = this->LanguageDyndepRule(language); cmNinjaDeps ddOutputs; cmNinjaDeps ddImplicitOuts; - cmNinjaDeps const& ddExplicitDeps = this->DDIFiles; + cmNinjaDeps const& ddExplicitDeps = ddiFiles; cmNinjaDeps ddImplicitDeps; cmNinjaDeps ddOrderOnlyDeps; cmNinjaVars ddVars; - this->WriteTargetDependInfo("Fortran"); + this->WriteTargetDependInfo(language); - ddOutputs.push_back(this->GetDyndepFilePath("Fortran")); + ddOutputs.push_back(this->GetDyndepFilePath(language)); // Make sure dyndep files for all our dependencies have already - // been generated so that the 'FortranModules.json' files they + // been generated so that the 'Modules.json' files they // produced as side-effects are available for us to read. - // Ideally we should depend on the 'FortranModules.json' files + // Ideally we should depend on the 'Modules.json' files // from our dependencies directly, but we don't know which of // our dependencies produces them. Fixing this will require // refactoring the Ninja generator to generate targets in @@ -1099,7 +1102,7 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement( std::string const ddiFile = ppFileName + ".ddi"; ppVars["DYNDEP_INTERMEDIATE_FILE"] = ddiFile; ppImplicitOuts.push_back(ddiFile); - this->DDIFiles.push_back(ddiFile); + this->DDIFiles[language].push_back(ddiFile); } this->addPoolNinjaVariable("JOB_POOL_COMPILE", this->GetGeneratorTarget(), diff --git a/Source/cmNinjaTargetGenerator.h b/Source/cmNinjaTargetGenerator.h index 373c693..2ffd256 100644 --- a/Source/cmNinjaTargetGenerator.h +++ b/Source/cmNinjaTargetGenerator.h @@ -10,6 +10,7 @@ #include "cmNinjaTypes.h" #include "cmOSXBundleGenerator.h" +#include #include #include #include @@ -165,7 +166,7 @@ private: cmLocalNinjaGenerator* LocalGenerator; /// List of object files for this target. cmNinjaDeps Objects; - cmNinjaDeps DDIFiles; // TODO: Make per-language. + std::map DDIFiles; std::vector CustomCommands; cmNinjaDeps ExtraFiles; }; https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2dd0cb7aeb2d70dcc6e103c29ce2ce3a02bd381a commit 2dd0cb7aeb2d70dcc6e103c29ce2ce3a02bd381a Author: Ben Boeckel AuthorDate: Wed Feb 20 11:35:47 2019 -0500 Commit: Brad King CommitDate: Mon Feb 25 10:06:20 2019 -0500 Help: note that Ninja also uses OBJECT_OUTPUTS diff --git a/Help/prop_sf/OBJECT_OUTPUTS.rst b/Help/prop_sf/OBJECT_OUTPUTS.rst index 6a28553..1ce4866 100644 --- a/Help/prop_sf/OBJECT_OUTPUTS.rst +++ b/Help/prop_sf/OBJECT_OUTPUTS.rst @@ -1,9 +1,9 @@ OBJECT_OUTPUTS -------------- -Additional outputs for a Makefile rule. +Additional outputs for a Ninja or Makefile rule. Additional outputs created by compilation of this source file. If any of these outputs is missing the object will be recompiled. This is -supported only on Makefile generators and will be ignored on other -generators. +supported only on the Ninja and Makefile generators and will be ignored on +other generators. https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b5a69c62793b0b77f56a12c07946a691469ca3f6 commit b5a69c62793b0b77f56a12c07946a691469ca3f6 Author: Regina Pfeifer AuthorDate: Sun Feb 24 22:18:11 2019 +0100 Commit: Regina Pfeifer CommitDate: Mon Feb 25 09:36:27 2019 +0100 cmcompress: Delete unused 3rdParty module diff --git a/CMakeLists.txt b/CMakeLists.txt index bd130ec..69e3064 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -445,14 +445,6 @@ macro (CMAKE_BUILD_UTILITIES) endif() #--------------------------------------------------------------------- - # Build Compress library for CTest. - set(CMAKE_COMPRESS_INCLUDES - "${CMAKE_CURRENT_BINARY_DIR}/Utilities/cmcompress") - set(CMAKE_COMPRESS_LIBRARIES "cmcompress") - add_subdirectory(Utilities/cmcompress) - CMAKE_SET_TARGET_FOLDER(cmcompress "Utilities/3rdParty") - - #--------------------------------------------------------------------- # Build expat library for CMake, CTest, and libarchive. if(CMAKE_USE_SYSTEM_EXPAT) find_package(EXPAT) diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 663d42e..2db276d 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -92,7 +92,6 @@ include_directories( ${CMAKE_ZLIB_INCLUDES} ${CMAKE_EXPAT_INCLUDES} ${CMAKE_TAR_INCLUDES} - ${CMAKE_COMPRESS_INCLUDES} ${CMake_HAIKU_INCLUDE_DIRS} ) @@ -801,7 +800,7 @@ endforeach() add_library(CMakeLib ${SRCS}) target_link_libraries(CMakeLib cmsys ${CMAKE_EXPAT_LIBRARIES} ${CMAKE_ZLIB_LIBRARIES} - ${CMAKE_TAR_LIBRARIES} ${CMAKE_COMPRESS_LIBRARIES} + ${CMAKE_TAR_LIBRARIES} ${CMAKE_CURL_LIBRARIES} ${CMAKE_JSONCPP_LIBRARIES} ${CMAKE_LIBUV_LIBRARIES} diff --git a/Utilities/cmcompress/CMakeLists.txt b/Utilities/cmcompress/CMakeLists.txt deleted file mode 100644 index 8063573..0000000 --- a/Utilities/cmcompress/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -PROJECT(CMCompress) - -ADD_LIBRARY(cmcompress cmcompress.c) - -INSTALL(FILES Copyright.txt DESTINATION ${CMAKE_DOC_DIR}/cmcompress) diff --git a/Utilities/cmcompress/Copyright.txt b/Utilities/cmcompress/Copyright.txt deleted file mode 100644 index 162332f..0000000 --- a/Utilities/cmcompress/Copyright.txt +++ /dev/null @@ -1,34 +0,0 @@ -Copyright (c) 1985, 1986 The Regents of the University of California. -All rights reserved. - -This code is derived from software contributed to Berkeley by -James A. Woods, derived from original work by Spencer Thomas -and Joseph Orost. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. All advertising materials mentioning features or use of this software - must display the following acknowledgement: - This product includes software developed by the University of - California, Berkeley and its contributors. -4. Neither the name of the University nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. diff --git a/Utilities/cmcompress/cmcompress.c b/Utilities/cmcompress/cmcompress.c deleted file mode 100644 index ea845ed..0000000 --- a/Utilities/cmcompress/cmcompress.c +++ /dev/null @@ -1,551 +0,0 @@ -/* - * Copyright (c) 1985, 1986 The Regents of the University of California. - * All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * James A. Woods, derived from original work by Spencer Thomas - * and Joseph Orost. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include "cmcompress.h" - -#include -#include - -static const char_type magic_header[] = { "\037\235" }; /* 1F 9D */ - -/* Defines for third byte of header */ -#define BIT_MASK 0x1f -#define BLOCK_MASK 0x80 -#define CHECK_GAP 10000 /* ratio check interval */ -/* Masks 0x40 and 0x20 are free. I think 0x20 should mean that there is - a fourth header byte (for expansion). - */ -#define INIT_BITS 9 /* initial number of bits/code */ - -#ifdef COMPATIBLE /* But wrong! */ -# define MAXCODE(n_bits) (1 << (n_bits) - 1) -#else -# define MAXCODE(n_bits) ((1 << (n_bits)) - 1) -#endif /* COMPATIBLE */ - -#define htabof(i) cdata->htab[i] -#define codetabof(i) cdata->codetab[i] - -/* - * the next two codes should not be changed lightly, as they must not - * lie within the contiguous general code space. - */ -#define FIRST 257 /* first free entry */ -#define CLEAR 256 /* table clear output code */ - -#ifdef DEBUG -static void prratio( FILE *stream, long int num, long int den); -#endif - -int cmcompress_compress_initialize(struct cmcompress_stream* cdata) -{ - cdata->maxbits = BITS; /* user settable max # bits/code */ - cdata->maxmaxcode = 1 << BITS; /* should NEVER generate this code */ - cdata->hsize = HSIZE; /* for dynamic table sizing */ - cdata->free_ent = 0; /* first unused entry */ - cdata->nomagic = 0; /* Use a 3-byte magic number header, unless old file */ - cdata->block_compress = BLOCK_MASK; - cdata->clear_flg = 0; - cdata->ratio = 0; - cdata->checkpoint = CHECK_GAP; - - cdata->input_stream = 0; - cdata->output_stream = 0; - cdata->client_data = 0; - return 1; -} - -static void cl_hash(struct cmcompress_stream* cdata, count_int hsize) /* reset code table */ -{ - register count_int *htab_p = cdata->htab+hsize; - register long i; - register long m1 = -1; - - i = hsize - 16; - do - { /* might use Sys V memset(3) here */ - *(htab_p-16) = m1; - *(htab_p-15) = m1; - *(htab_p-14) = m1; - *(htab_p-13) = m1; - *(htab_p-12) = m1; - *(htab_p-11) = m1; - *(htab_p-10) = m1; - *(htab_p-9) = m1; - *(htab_p-8) = m1; - *(htab_p-7) = m1; - *(htab_p-6) = m1; - *(htab_p-5) = m1; - *(htab_p-4) = m1; - *(htab_p-3) = m1; - *(htab_p-2) = m1; - *(htab_p-1) = m1; - htab_p -= 16; - } - while ((i -= 16) >= 0); - for ( i += 16; i > 0; i-- ) - { - *--htab_p = m1; - } -} - -/*- - * Output the given code. - * Inputs: - * code: A n_bits-bit integer. If == -1, then EOF. This assumes - * that n_bits =< (long)wordsize - 1. - * Outputs: - * Outputs code to the file. - * Assumptions: - * Chars are 8 bits long. - * Algorithm: - * Maintain a BITS character long buffer (so that 8 codes will - * fit in it exactly). Use the VAX insv instruction to insert each - * code in turn. When the buffer fills up empty it and start over. - */ - -static char buf[BITS]; - -#ifndef vax -char_type lmask[9] = {0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00}; -char_type rmask[9] = {0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff}; -#endif /* vax */ - -static int output(struct cmcompress_stream* cdata, code_int code) -{ -#ifdef DEBUG - static int col = 0; -#endif /* DEBUG */ - - /* - * On the VAX, it is important to have the register declarations - * in exactly the order given, or the asm will break. - */ - register int r_off = cdata->offset, bits= cdata->n_bits; - register char * bp = buf; - -#ifdef DEBUG - if ( verbose ) - { - fprintf( stderr, "%5d%c", code, - (col+=6) >= 74 ? (col = 0, '\n') : ' ' ); - } -#endif /* DEBUG */ - if ( code >= 0 ) - { -#if defined(vax) && !defined(__GNUC__) - /* - * VAX and PCC DEPENDENT!! Implementation on other machines is - * below. - * - * Translation: Insert BITS bits from the argument starting at - * cdata->offset bits from the beginning of buf. - */ - 0; /* Work around for pcc -O bug with asm and if stmt */ - asm( "insv 4(ap),r11,r10,(r9)" ); -#else - /* - * byte/bit numbering on the VAX is simulated by the following code - */ - /* - * Get to the first byte. - */ - bp += (r_off >> 3); - r_off &= 7; - /* - * Since code is always >= 8 bits, only need to mask the first - * hunk on the left. - */ - *bp = (char)((*bp & rmask[r_off]) | ((code << r_off) & lmask[r_off])); - bp++; - bits -= (8 - r_off); - code >>= 8 - r_off; - /* Get any 8 bit parts in the middle (<=1 for up to 16 bits). */ - if ( bits >= 8 ) - { - *bp++ = (char)(code); - code >>= 8; - bits -= 8; - } - /* Last bits. */ - if(bits) - { - *bp = (char)(code); - } -#endif /* vax */ - cdata->offset += cdata->n_bits; - if ( cdata->offset == (cdata->n_bits << 3) ) - { - bp = buf; - bits = cdata->n_bits; - cdata->bytes_out += bits; - do - { - if ( cdata->output_stream(cdata, bp, 1) != 1 ) - { - return 0; - } - bp++; - } - while(--bits); - cdata->offset = 0; - } - - /* - * If the next entry is going to be too big for the code size, - * then increase it, if possible. - */ - if ( cdata->free_ent > cdata->maxcode || (cdata->clear_flg > 0)) - { - /* - * Write the whole buffer, because the input side won't - * discover the size increase until after it has read it. - */ - if ( cdata->offset > 0 ) - { - if ( cdata->output_stream(cdata, buf, cdata->n_bits) != cdata->n_bits ) - { - return 0; - } - cdata->bytes_out += cdata->n_bits; - } - cdata->offset = 0; - - if ( cdata->clear_flg ) - { - cdata->maxcode = MAXCODE (cdata->n_bits = INIT_BITS); - cdata->clear_flg = 0; - } - else - { - cdata->n_bits++; - if ( cdata->n_bits == cdata->maxbits ) - { - cdata->maxcode = cdata->maxmaxcode; - } - else - { - cdata->maxcode = MAXCODE(cdata->n_bits); - } - } -#ifdef DEBUG - if ( debug ) - { - fprintf( stderr, "\nChange to %d bits\n", cdata->n_bits ); - col = 0; - } -#endif /* DEBUG */ - } - } - else - { - /* - * At EOF, write the rest of the buffer. - */ - if ( cdata->offset > 0 ) - { - cdata->offset = (cdata->offset + 7) / 8; - if ( cdata->output_stream(cdata, buf, cdata->offset ) != cdata->offset ) - { - return 0; - } - cdata->bytes_out += cdata->offset; - } - cdata->offset = 0; - (void)fflush( stdout ); - if( ferror( stdout ) ) - { - return 0; - } -#ifdef DEBUG - if ( verbose ) - { - fprintf( stderr, "\n" ); - } -#endif - } - return 1; -} - -/* - * compress stdin to stdout - * - * Algorithm: use open addressing double hashing (no chaining) on the - * prefix code / next character combination. We do a variant of Knuth's - * algorithm D (vol. 3, sec. 6.4) along with G. Knott's relatively-prime - * secondary probe. Here, the modular division first probe is gives way - * to a faster exclusive-or manipulation. Also do block compression with - * an adaptive reset, whereby the code table is cleared when the compression - * ratio decreases, but after the table fills. The variable-length output - * codes are re-sized at this point, and a special CLEAR code is generated - * for the decompressor. Late addition: construct the table according to - * file size for noticeable speed improvement on small files. Please direct - * questions about this implementation to ames!jaw. - */ - -int cmcompress_compress_start(struct cmcompress_stream* cdata) -{ -#ifndef COMPATIBLE - if (cdata->nomagic == 0) - { - char headLast = (char)(cdata->maxbits | cdata->block_compress); - cdata->output_stream(cdata, (const char*)magic_header, 2); - cdata->output_stream(cdata, &headLast, 1); - if(ferror(stdout)) - { - printf("Error...\n"); - } - } -#endif /* COMPATIBLE */ - - cdata->offset = 0; - cdata->bytes_out = 3; /* includes 3-byte header mojo */ - cdata->out_count = 0; - cdata->clear_flg = 0; - cdata->ratio = 0; - cdata->in_count = 1; - cdata->checkpoint = CHECK_GAP; - cdata->maxcode = MAXCODE(cdata->n_bits = INIT_BITS); - cdata->free_ent = ((cdata->block_compress) ? FIRST : 256 ); - - cdata->first_pass = 1; - - cdata->hshift = 0; - for ( cdata->fcode = (long) cdata->hsize; cdata->fcode < 65536L; cdata->fcode *= 2L ) - { - cdata->hshift++; - } - cdata->hshift = 8 - cdata->hshift; /* set hash code range bound */ - - cdata->hsize_reg = cdata->hsize; - cl_hash(cdata, (count_int) cdata->hsize_reg); /* clear hash table */ - - return 1; -} - -static int cl_block (struct cmcompress_stream* cdata) /* table clear for block compress */ -{ - register long int rat; - - cdata->checkpoint = cdata->in_count + CHECK_GAP; -#ifdef DEBUG - if ( cdata->debug ) - { - fprintf ( stderr, "count: %ld, ratio: ", cdata->in_count ); - prratio ( stderr, cdata->in_count, cdata->bytes_out ); - fprintf ( stderr, "\n"); - } -#endif /* DEBUG */ - - if(cdata->in_count > 0x007fffff) - { /* shift will overflow */ - rat = cdata->bytes_out >> 8; - if(rat == 0) - { /* Don't divide by zero */ - rat = 0x7fffffff; - } - else - { - rat = cdata->in_count / rat; - } - } - else - { - rat = (cdata->in_count << 8) / cdata->bytes_out; /* 8 fractional bits */ - } - if ( rat > cdata->ratio ) - { - cdata->ratio = rat; - } - else - { - cdata->ratio = 0; -#ifdef DEBUG - if(cdata->verbose) - { - dump_tab(); /* dump string table */ - } -#endif - cl_hash (cdata, (count_int) cdata->hsize ); - cdata->free_ent = FIRST; - cdata->clear_flg = 1; - if ( !output (cdata, (code_int) CLEAR ) ) - { - return 0; - } -#ifdef DEBUG - if(cdata->debug) - { - fprintf ( stderr, "clear\n" ); - } -#endif /* DEBUG */ - } - return 1; -} - - -int cmcompress_compress(struct cmcompress_stream* cdata, void* buff, size_t n) -{ - register code_int i; - register int c; - register int disp; - - unsigned char* input_buffer = (unsigned char*)buff; - - size_t cc; - - /*printf("cmcompress_compress(%p, %p, %d)\n", cdata, buff, n);*/ - - if ( cdata->first_pass ) - { - cdata->ent = input_buffer[0]; - ++ input_buffer; - -- n; - cdata->first_pass = 0; - } - - for ( cc = 0; cc < n; ++ cc ) - { - c = input_buffer[cc]; - cdata->in_count++; - cdata->fcode = (long) (((long) c << cdata->maxbits) + cdata->ent); - i = ((c << cdata->hshift) ^ cdata->ent); /* xor hashing */ - - if ( htabof (i) == cdata->fcode ) - { - cdata->ent = codetabof (i); - continue; - } - else if ( (long)htabof (i) < 0 ) /* empty slot */ - { - goto nomatch; - } - disp = (int)(cdata->hsize_reg - i); /* secondary hash (after G. Knott) */ - if ( i == 0 ) - { - disp = 1; - } -probe: - if ( (i -= disp) < 0 ) - { - i += cdata->hsize_reg; - } - - if ( htabof (i) == cdata->fcode ) - { - cdata->ent = codetabof (i); - continue; - } - if ( (long)htabof (i) > 0 ) - { - goto probe; - } -nomatch: - if ( !output(cdata, (code_int) cdata->ent ) ) - { - return 0; - } - cdata->out_count++; - cdata->ent = c; - if ( -#ifdef SIGNED_COMPARE_SLOW - (unsigned) cdata->free_ent < (unsigned) cdata->maxmaxcode -#else - cdata->free_ent < cdata->maxmaxcode -#endif - ) - { - codetabof (i) = (unsigned short)(cdata->free_ent++); /* code -> hashtable */ - htabof (i) = cdata->fcode; - } - else if ( (count_int)cdata->in_count >= cdata->checkpoint && cdata->block_compress ) - { - if ( !cl_block (cdata) ) - { - return 0; - } - } - } - - return 1; -} - -int cmcompress_compress_finalize(struct cmcompress_stream* cdata) -{ - /* - * Put out the final code. - */ - if ( !output(cdata, (code_int)cdata->ent ) ) - { - return 0; - } - cdata->out_count++; - if ( !output(cdata, (code_int)-1 ) ) - { - return 0; - } - - if(cdata->bytes_out > cdata->in_count) /* exit(2) if no savings */ - { - return 0; - } - return 1; -} - - -#if defined(DEBUG) -static void prratio(FILE *stream, long int num, long int den) -{ - register int q; /* Doesn't need to be long */ - - if(num > 214748L) - { /* 2147483647/10000 */ - q = num / (den / 10000L); - } - else - { - q = 10000L * num / den; /* Long calculations, though */ - } - if (q < 0) - { - putc('-', stream); - q = -q; - } - fprintf(stream, "%d.%02d%%", q / 100, q % 100); -} -#endif - diff --git a/Utilities/cmcompress/cmcompress.h b/Utilities/cmcompress/cmcompress.h deleted file mode 100644 index 4cd3a1c..0000000 --- a/Utilities/cmcompress/cmcompress.h +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright (c) 1985, 1986 The Regents of the University of California. - * All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * James A. Woods, derived from original work by Spencer Thomas - * and Joseph Orost. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef cmcompress__h_ -#define cmcompress__h_ - -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - - /* - * Set USERMEM to the maximum amount of physical user memory available - * in bytes. USERMEM is used to determine the maximum BITS that can be used - * for compression. - * - * SACREDMEM is the amount of physical memory saved for others; compress - * will hog the rest. - */ -#ifndef SACREDMEM -#define SACREDMEM 0 -#endif - -#ifndef USERMEM -# define USERMEM 450000 /* default user memory */ -#endif - -#ifdef pdp11 -# define BITS 12 /* max bits/code for 16-bit machine */ -# define NO_UCHAR /* also if "unsigned char" functions as signed char */ -# undef USERMEM -#endif /* pdp11 */ /* don't forget to compile with -i */ - -#ifdef USERMEM -# if USERMEM >= (433484+SACREDMEM) -# define PBITS 16 -# else -# if USERMEM >= (229600+SACREDMEM) -# define PBITS 15 -# else -# if USERMEM >= (127536+SACREDMEM) -# define PBITS 14 -# else -# if USERMEM >= (73464+SACREDMEM) -# define PBITS 13 -# else -# define PBITS 12 -# endif -# endif -# endif -# endif -# undef USERMEM -#endif /* USERMEM */ - -#ifdef PBITS /* Preferred BITS for this memory size */ -# ifndef BITS -# define BITS PBITS -# endif /* BITS */ -#endif /* PBITS */ - -#if BITS == 16 -# define HSIZE 69001 /* 95% occupancy */ -#endif -#if BITS == 15 -# define HSIZE 35023 /* 94% occupancy */ -#endif -#if BITS == 14 -# define HSIZE 18013 /* 91% occupancy */ -#endif -#if BITS == 13 -# define HSIZE 9001 /* 91% occupancy */ -#endif -#if BITS <= 12 -# define HSIZE 5003 /* 80% occupancy */ -#endif - - /* - * a code_int must be able to hold 2**BITS values of type int, and also -1 - */ -#if BITS > 15 - typedef long int code_int; -#else - typedef int code_int; -#endif - -#ifdef SIGNED_COMPARE_SLOW - typedef unsigned long int count_int; - typedef unsigned short int count_short; -#else - typedef long int count_int; -#endif - -#ifdef NO_UCHAR - typedef char char_type; -#else - typedef unsigned char char_type; -#endif /* UCHAR */ - - - - struct cmcompress_stream - { - int n_bits; /* number of bits/code */ - int maxbits; /* user settable max # bits/code */ - code_int maxcode; /* maximum code, given n_bits */ - code_int maxmaxcode; /* should NEVER generate this code */ - - count_int htab [HSIZE]; - unsigned short codetab [HSIZE]; - - code_int hsize; /* for dynamic table sizing */ - code_int free_ent; /* first unused entry */ - int nomagic; /* Use a 3-byte magic number header, unless old file */ - - /* - * block compression parameters -- after all codes are used up, - * and compression rate changes, start over. - */ - int block_compress; - int clear_flg; - long int ratio; - count_int checkpoint; - -#ifdef DEBUG - int debug; - int verbose; -#endif - - /* compress internals */ - int offset; - long int in_count; /* length of input */ - long int bytes_out; /* length of compressed output */ - long int out_count; /* # of codes output (for debugging) */ - - /* internals */ - code_int ent; - code_int hsize_reg; - int hshift; - - long fcode; - int first_pass; - - /* For input and output */ - int (*input_stream)(void*); - int (*output_stream)(void*, const char*,int); - void* client_data; - }; - - int cmcompress_compress_initialize(struct cmcompress_stream* cdata); - int cmcompress_compress_start(struct cmcompress_stream* cdata); - int cmcompress_compress(struct cmcompress_stream* cdata, void* buff, size_t n); - int cmcompress_compress_finalize(struct cmcompress_stream* cdata); - -#ifdef __cplusplus -} -#endif - - -#endif /* cmcompress__h_ */ diff --git a/Utilities/cmcompress/compress.c.original b/Utilities/cmcompress/compress.c.original deleted file mode 100644 index 5062bda..0000000 --- a/Utilities/cmcompress/compress.c.original +++ /dev/null @@ -1,1308 +0,0 @@ -/* - * Copyright (c) 1985, 1986 The Regents of the University of California. - * All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * James A. Woods, derived from original work by Spencer Thomas - * and Joseph Orost. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -char copyright[] = -"@(#) Copyright (c) 1985, 1986 The Regents of the University of California.\n\ - All rights reserved.\n"; -#endif /* not lint */ - -#ifndef lint -static char sccsid[] = "@(#)compress.c 5.19 (Berkeley) 3/18/91"; -#endif /* not lint */ - -/* - * compress.c - File compression ala IEEE Computer, June 1984. - * - * Authors: Spencer W. Thomas (decvax!utah-cs!thomas) - * Jim McKie (decvax!mcvax!jim) - * Steve Davies (decvax!vax135!petsd!peora!srd) - * Ken Turkowski (decvax!decwrl!turtlevax!ken) - * James A. Woods (decvax!ihnp4!ames!jaw) - * Joe Orost (decvax!vax135!petsd!joe) - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Set USERMEM to the maximum amount of physical user memory available - * in bytes. USERMEM is used to determine the maximum BITS that can be used - * for compression. - * - * SACREDMEM is the amount of physical memory saved for others; compress - * will hog the rest. - */ -#ifndef SACREDMEM -#define SACREDMEM 0 -#endif - -#ifndef USERMEM -# define USERMEM 450000 /* default user memory */ -#endif - -#ifdef pdp11 -# define BITS 12 /* max bits/code for 16-bit machine */ -# define NO_UCHAR /* also if "unsigned char" functions as signed char */ -# undef USERMEM -#endif /* pdp11 */ /* don't forget to compile with -i */ - -#ifdef USERMEM -# if USERMEM >= (433484+SACREDMEM) -# define PBITS 16 -# else -# if USERMEM >= (229600+SACREDMEM) -# define PBITS 15 -# else -# if USERMEM >= (127536+SACREDMEM) -# define PBITS 14 -# else -# if USERMEM >= (73464+SACREDMEM) -# define PBITS 13 -# else -# define PBITS 12 -# endif -# endif -# endif -# endif -# undef USERMEM -#endif /* USERMEM */ - -#ifdef PBITS /* Preferred BITS for this memory size */ -# ifndef BITS -# define BITS PBITS -# endif BITS -#endif /* PBITS */ - -#if BITS == 16 -# define HSIZE 69001 /* 95% occupancy */ -#endif -#if BITS == 15 -# define HSIZE 35023 /* 94% occupancy */ -#endif -#if BITS == 14 -# define HSIZE 18013 /* 91% occupancy */ -#endif -#if BITS == 13 -# define HSIZE 9001 /* 91% occupancy */ -#endif -#if BITS <= 12 -# define HSIZE 5003 /* 80% occupancy */ -#endif - -/* - * a code_int must be able to hold 2**BITS values of type int, and also -1 - */ -#if BITS > 15 -typedef long int code_int; -#else -typedef int code_int; -#endif - -#ifdef SIGNED_COMPARE_SLOW -typedef unsigned long int count_int; -typedef unsigned short int count_short; -#else -typedef long int count_int; -#endif - -#ifdef NO_UCHAR - typedef char char_type; -#else - typedef unsigned char char_type; -#endif /* UCHAR */ -char_type magic_header[] = { "\037\235" }; /* 1F 9D */ - -/* Defines for third byte of header */ -#define BIT_MASK 0x1f -#define BLOCK_MASK 0x80 -/* Masks 0x40 and 0x20 are free. I think 0x20 should mean that there is - a fourth header byte (for expansion). -*/ -#define INIT_BITS 9 /* initial number of bits/code */ - -int n_bits; /* number of bits/code */ -int maxbits = BITS; /* user settable max # bits/code */ -code_int maxcode; /* maximum code, given n_bits */ -code_int maxmaxcode = 1 << BITS; /* should NEVER generate this code */ -#ifdef COMPATIBLE /* But wrong! */ -# define MAXCODE(n_bits) (1 << (n_bits) - 1) -#else -# define MAXCODE(n_bits) ((1 << (n_bits)) - 1) -#endif /* COMPATIBLE */ - -count_int htab [HSIZE]; -unsigned short codetab [HSIZE]; - -#define htabof(i) htab[i] -#define codetabof(i) codetab[i] -code_int hsize = HSIZE; /* for dynamic table sizing */ -count_int fsize; - -/* - * To save much memory, we overlay the table used by compress() with those - * used by decompress(). The tab_prefix table is the same size and type - * as the codetab. The tab_suffix table needs 2**BITS characters. We - * get this from the beginning of htab. The output stack uses the rest - * of htab, and contains characters. There is plenty of room for any - * possible stack (stack used to be 8000 characters). - */ - -#define tab_prefixof(i) codetabof(i) -# define tab_suffixof(i) ((char_type *)(htab))[i] -# define de_stack ((char_type *)&tab_suffixof(1< maxbits. - * -C => generate output compatible with compress 2.0. - * -c => cat all output to stdout - * -D => debug - * -d => do_decomp - * -f => force overwrite of output file - * -n => no header: useful to uncompress old files - * -V => print Version; debug verbose - * -v => unquiet - */ - - overwrite = 0; -#ifdef DEBUG - while ((ch = getopt(argc, argv, "b:CcDdfnVv")) != EOF) -#else - while ((ch = getopt(argc, argv, "b:Ccdfnv")) != EOF) -#endif - switch(ch) { - case 'b': - maxbits = atoi(optarg); - break; - case 'C': - block_compress = 0; - break; - case 'c': - zcat_flg = 1; - break; -#ifdef DEBUG - case 'D': - debug = 1; - break; -#endif - case 'd': - do_decomp = 1; - break; - case 'f': - overwrite = 1; - force = 1; - break; - case 'n': - nomagic = 1; - break; - case 'q': - quiet = 1; - break; -#ifdef DEBUG - case 'V': - verbose = 1; - break; -#endif - case 'v': - quiet = 0; - break; - case '?': - default: - usage(); - } - argc -= optind; - argv += optind; - - if (maxbits < INIT_BITS) - maxbits = INIT_BITS; - if (maxbits > BITS) - maxbits = BITS; - maxmaxcode = 1 << maxbits; - - /* Build useless input file list. */ - filelist = fileptr = (char **)(malloc(argc * sizeof(*argv))); - while (*argv) - *fileptr++ = *argv++; - *fileptr = NULL; - - if (*filelist != NULL) { - for (fileptr = filelist; *fileptr; fileptr++) { - exit_stat = 0; - if (do_decomp) { /* DECOMPRESSION */ - /* Check for .Z suffix */ - if (strcmp(*fileptr + strlen(*fileptr) - 2, ".Z") != 0) { - /* No .Z: tack one on */ - strcpy(tempname, *fileptr); - strcat(tempname, ".Z"); - *fileptr = tempname; - } - /* Open input file */ - if ((freopen(*fileptr, "r", stdin)) == NULL) { - perror(*fileptr); - perm_stat = 1; - continue; - } - /* Check the magic number */ - if (nomagic == 0) { - if ((getchar() != (magic_header[0] & 0xFF)) - || (getchar() != (magic_header[1] & 0xFF))) { - fprintf(stderr, "%s: not in compressed format\n", - *fileptr); - continue; - } - maxbits = getchar(); /* set -b from file */ - block_compress = maxbits & BLOCK_MASK; - maxbits &= BIT_MASK; - maxmaxcode = 1 << maxbits; - if(maxbits > BITS) { - fprintf(stderr, - "%s: compressed with %d bits, can only handle %d bits\n", - *fileptr, maxbits, BITS); - continue; - } - } - /* Generate output filename */ - strcpy(ofname, *fileptr); - ofname[strlen(*fileptr) - 2] = '\0'; /* Strip off .Z */ - } else { /* COMPRESSION */ - if (strcmp(*fileptr + strlen(*fileptr) - 2, ".Z") == 0) { - fprintf(stderr, "%s: already has .Z suffix -- no change\n", - *fileptr); - continue; - } - /* Open input file */ - if ((freopen(*fileptr, "r", stdin)) == NULL) { - perror(*fileptr); - perm_stat = 1; - continue; - } - stat ( *fileptr, &statbuf ); - fsize = (long) statbuf.st_size; - /* - * tune hash table size for small files -- ad hoc, - * but the sizes match earlier #defines, which - * serve as upper bounds on the number of output codes. - */ - hsize = HSIZE; - if ( fsize < (1 << 12) ) - hsize = MIN ( 5003, HSIZE ); - else if ( fsize < (1 << 13) ) - hsize = MIN ( 9001, HSIZE ); - else if ( fsize < (1 << 14) ) - hsize = MIN ( 18013, HSIZE ); - else if ( fsize < (1 << 15) ) - hsize = MIN ( 35023, HSIZE ); - else if ( fsize < 47000 ) - hsize = MIN ( 50021, HSIZE ); - - /* Generate output filename */ - strcpy(ofname, *fileptr); - strcat(ofname, ".Z"); - } - /* Check for overwrite of existing file */ - if (overwrite == 0 && zcat_flg == 0) { - if (stat(ofname, &statbuf) == 0) { - char response[2]; - response[0] = 'n'; - fprintf(stderr, "%s already exists;", ofname); - if (bgnd_flag == 0 && isatty(2)) { - fprintf(stderr, " do you wish to overwrite %s (y or n)? ", - ofname); - fflush(stderr); - read(2, response, 2); - while (response[1] != '\n') { - if (read(2, response+1, 1) < 0) { /* Ack! */ - perror("stderr"); break; - } - } - } - if (response[0] != 'y') { - fprintf(stderr, "\tnot overwritten\n"); - continue; - } - } - } - if(zcat_flg == 0) { /* Open output file */ - if (freopen(ofname, "w", stdout) == NULL) { - perror(ofname); - perm_stat = 1; - continue; - } - precious = 0; - if(!quiet) - fprintf(stderr, "%s: ", *fileptr); - } - - /* Actually do the compression/decompression */ - if (do_decomp == 0) compress(); -#ifndef DEBUG - else decompress(); -#else - else if (debug == 0) decompress(); - else printcodes(); - if (verbose) dump_tab(); -#endif /* DEBUG */ - if(zcat_flg == 0) { - copystat(*fileptr, ofname); /* Copy stats */ - precious = 1; - if((exit_stat == 1) || (!quiet)) - putc('\n', stderr); - } - } - } else { /* Standard input */ - if (do_decomp == 0) { - compress(); -#ifdef DEBUG - if(verbose) dump_tab(); -#endif /* DEBUG */ - if(!quiet) - putc('\n', stderr); - } else { - /* Check the magic number */ - if (nomagic == 0) { - if ((getchar()!=(magic_header[0] & 0xFF)) - || (getchar()!=(magic_header[1] & 0xFF))) { - fprintf(stderr, "stdin: not in compressed format\n"); - exit(1); - } - maxbits = getchar(); /* set -b from file */ - block_compress = maxbits & BLOCK_MASK; - maxbits &= BIT_MASK; - maxmaxcode = 1 << maxbits; - fsize = 100000; /* assume stdin large for USERMEM */ - if(maxbits > BITS) { - fprintf(stderr, - "stdin: compressed with %d bits, can only handle %d bits\n", - maxbits, BITS); - exit(1); - } - } -#ifndef DEBUG - decompress(); -#else - if (debug == 0) decompress(); - else printcodes(); - if (verbose) dump_tab(); -#endif /* DEBUG */ - } - } - exit(perm_stat ? perm_stat : exit_stat); -} - -static int offset; -long int in_count = 1; /* length of input */ -long int bytes_out; /* length of compressed output */ -long int out_count = 0; /* # of codes output (for debugging) */ - -/* - * compress stdin to stdout - * - * Algorithm: use open addressing double hashing (no chaining) on the - * prefix code / next character combination. We do a variant of Knuth's - * algorithm D (vol. 3, sec. 6.4) along with G. Knott's relatively-prime - * secondary probe. Here, the modular division first probe is gives way - * to a faster exclusive-or manipulation. Also do block compression with - * an adaptive reset, whereby the code table is cleared when the compression - * ratio decreases, but after the table fills. The variable-length output - * codes are re-sized at this point, and a special CLEAR code is generated - * for the decompressor. Late addition: construct the table according to - * file size for noticeable speed improvement on small files. Please direct - * questions about this implementation to ames!jaw. - */ - -compress() -{ - register long fcode; - register code_int i = 0; - register int c; - register code_int ent; - register int disp; - register code_int hsize_reg; - register int hshift; - -#ifndef COMPATIBLE - if (nomagic == 0) { - putchar(magic_header[0]); - putchar(magic_header[1]); - putchar((char)(maxbits | block_compress)); - if(ferror(stdout)) - writeerr(); - } -#endif /* COMPATIBLE */ - - offset = 0; - bytes_out = 3; /* includes 3-byte header mojo */ - out_count = 0; - clear_flg = 0; - ratio = 0; - in_count = 1; - checkpoint = CHECK_GAP; - maxcode = MAXCODE(n_bits = INIT_BITS); - free_ent = ((block_compress) ? FIRST : 256 ); - - ent = getchar (); - - hshift = 0; - for ( fcode = (long) hsize; fcode < 65536L; fcode *= 2L ) - hshift++; - hshift = 8 - hshift; /* set hash code range bound */ - - hsize_reg = hsize; - cl_hash( (count_int) hsize_reg); /* clear hash table */ - -#ifdef SIGNED_COMPARE_SLOW - while ( (c = getchar()) != (unsigned) EOF ) { -#else - while ( (c = getchar()) != EOF ) { -#endif - in_count++; - fcode = (long) (((long) c << maxbits) + ent); - i = ((c << hshift) ^ ent); /* xor hashing */ - - if ( htabof (i) == fcode ) { - ent = codetabof (i); - continue; - } else if ( (long)htabof (i) < 0 ) /* empty slot */ - goto nomatch; - disp = hsize_reg - i; /* secondary hash (after G. Knott) */ - if ( i == 0 ) - disp = 1; -probe: - if ( (i -= disp) < 0 ) - i += hsize_reg; - - if ( htabof (i) == fcode ) { - ent = codetabof (i); - continue; - } - if ( (long)htabof (i) > 0 ) - goto probe; -nomatch: - output ( (code_int) ent ); - out_count++; - ent = c; -#ifdef SIGNED_COMPARE_SLOW - if ( (unsigned) free_ent < (unsigned) maxmaxcode) { -#else - if ( free_ent < maxmaxcode ) { -#endif - codetabof (i) = free_ent++; /* code -> hashtable */ - htabof (i) = fcode; - } - else if ( (count_int)in_count >= checkpoint && block_compress ) - cl_block (); - } - /* - * Put out the final code. - */ - output( (code_int)ent ); - out_count++; - output( (code_int)-1 ); - - /* - * Print out stats on stderr - */ - if(zcat_flg == 0 && !quiet) { -#ifdef DEBUG - fprintf( stderr, - "%ld chars in, %ld codes (%ld bytes) out, compression factor: ", - in_count, out_count, bytes_out ); - prratio( stderr, in_count, bytes_out ); - fprintf( stderr, "\n"); - fprintf( stderr, "\tCompression as in compact: " ); - prratio( stderr, in_count-bytes_out, in_count ); - fprintf( stderr, "\n"); - fprintf( stderr, "\tLargest code (of last block) was %d (%d bits)\n", - free_ent - 1, n_bits ); -#else /* !DEBUG */ - fprintf( stderr, "Compression: " ); - prratio( stderr, in_count-bytes_out, in_count ); -#endif /* DEBUG */ - } - if(bytes_out > in_count) /* exit(2) if no savings */ - exit_stat = 2; - return; -} - -/*- - * Output the given code. - * Inputs: - * code: A n_bits-bit integer. If == -1, then EOF. This assumes - * that n_bits =< (long)wordsize - 1. - * Outputs: - * Outputs code to the file. - * Assumptions: - * Chars are 8 bits long. - * Algorithm: - * Maintain a BITS character long buffer (so that 8 codes will - * fit in it exactly). Use the VAX insv instruction to insert each - * code in turn. When the buffer fills up empty it and start over. - */ - -static char buf[BITS]; - -#ifndef vax -char_type lmask[9] = {0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00}; -char_type rmask[9] = {0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff}; -#endif /* vax */ - -output( code ) -code_int code; -{ -#ifdef DEBUG - static int col = 0; -#endif /* DEBUG */ - - /* - * On the VAX, it is important to have the register declarations - * in exactly the order given, or the asm will break. - */ - register int r_off = offset, bits= n_bits; - register char * bp = buf; - -#ifdef DEBUG - if ( verbose ) - fprintf( stderr, "%5d%c", code, - (col+=6) >= 74 ? (col = 0, '\n') : ' ' ); -#endif /* DEBUG */ - if ( code >= 0 ) { -#if defined(vax) && !defined(__GNUC__) - /* - * VAX and PCC DEPENDENT!! Implementation on other machines is - * below. - * - * Translation: Insert BITS bits from the argument starting at - * offset bits from the beginning of buf. - */ - 0; /* Work around for pcc -O bug with asm and if stmt */ - asm( "insv 4(ap),r11,r10,(r9)" ); -#else -/* - * byte/bit numbering on the VAX is simulated by the following code - */ - /* - * Get to the first byte. - */ - bp += (r_off >> 3); - r_off &= 7; - /* - * Since code is always >= 8 bits, only need to mask the first - * hunk on the left. - */ - *bp = (*bp & rmask[r_off]) | (code << r_off) & lmask[r_off]; - bp++; - bits -= (8 - r_off); - code >>= 8 - r_off; - /* Get any 8 bit parts in the middle (<=1 for up to 16 bits). */ - if ( bits >= 8 ) { - *bp++ = code; - code >>= 8; - bits -= 8; - } - /* Last bits. */ - if(bits) - *bp = code; -#endif /* vax */ - offset += n_bits; - if ( offset == (n_bits << 3) ) { - bp = buf; - bits = n_bits; - bytes_out += bits; - do { - putchar(*bp++); - if (ferror(stdout)) - writeerr(); - } while(--bits); - offset = 0; - } - - /* - * If the next entry is going to be too big for the code size, - * then increase it, if possible. - */ - if ( free_ent > maxcode || (clear_flg > 0)) - { - /* - * Write the whole buffer, because the input side won't - * discover the size increase until after it has read it. - */ - if ( offset > 0 ) { - if( fwrite( buf, 1, n_bits, stdout ) != n_bits) - writeerr(); - bytes_out += n_bits; - } - offset = 0; - - if ( clear_flg ) { - maxcode = MAXCODE (n_bits = INIT_BITS); - clear_flg = 0; - } - else { - n_bits++; - if ( n_bits == maxbits ) - maxcode = maxmaxcode; - else - maxcode = MAXCODE(n_bits); - } -#ifdef DEBUG - if ( debug ) { - fprintf( stderr, "\nChange to %d bits\n", n_bits ); - col = 0; - } -#endif /* DEBUG */ - } - } else { - /* - * At EOF, write the rest of the buffer. - */ - if ( offset > 0 ) { - offset = (offset + 7) / 8; - if( fwrite( buf, 1, offset, stdout ) != offset ) - writeerr(); - bytes_out += offset; - } - offset = 0; - (void)fflush( stdout ); - if( ferror( stdout ) ) - writeerr(); -#ifdef DEBUG - if ( verbose ) - fprintf( stderr, "\n" ); -#endif - } -} - -/* - * Decompress stdin to stdout. This routine adapts to the codes in the - * file building the "string" table on-the-fly; requiring no table to - * be stored in the compressed file. The tables used herein are shared - * with those of the compress() routine. See the definitions above. - */ - -decompress() { - register char_type *stackp; - register int finchar; - register code_int code, oldcode, incode; - int n, nwritten, offset; /* Variables for buffered write */ - char buff[BUFSIZ]; /* Buffer for buffered write */ - - - /* - * As above, initialize the first 256 entries in the table. - */ - maxcode = MAXCODE(n_bits = INIT_BITS); - for ( code = 255; code >= 0; code-- ) { - tab_prefixof(code) = 0; - tab_suffixof(code) = (char_type)code; - } - free_ent = ((block_compress) ? FIRST : 256 ); - - finchar = oldcode = getcode(); - if(oldcode == -1) /* EOF already? */ - return; /* Get out of here */ - - /* first code must be 8 bits = char */ - n=0; - buff[n++] = (char)finchar; - - stackp = de_stack; - - while ( (code = getcode()) > -1 ) { - - if ( (code == CLEAR) && block_compress ) { - for ( code = 255; code >= 0; code-- ) - tab_prefixof(code) = 0; - clear_flg = 1; - free_ent = FIRST - 1; - if ( (code = getcode ()) == -1 ) /* O, untimely death! */ - break; - } - incode = code; - /* - * Special case for KwKwK string. - */ - if ( code >= free_ent ) { - *stackp++ = finchar; - code = oldcode; - } - - /* - * Generate output characters in reverse order - */ -#ifdef SIGNED_COMPARE_SLOW - while ( ((unsigned long)code) >= ((unsigned long)256) ) { -#else - while ( code >= 256 ) { -#endif - *stackp++ = tab_suffixof(code); - code = tab_prefixof(code); - } - *stackp++ = finchar = tab_suffixof(code); - - /* - * And put them out in forward order - */ - do { - /* - * About 60% of the time is spent in the putchar() call - * that appeared here. It was originally - * putchar ( *--stackp ); - * If we buffer the writes ourselves, we can go faster (about - * 30%). - * - * At this point, the next line is the next *big* time - * sink in the code. It takes up about 10% of the time. - */ - buff[n++] = *--stackp; - if (n == BUFSIZ) { - offset = 0; - do { - nwritten = write(fileno(stdout), &buff[offset], n); - if (nwritten < 0) - writeerr(); - offset += nwritten; - } while ((n -= nwritten) > 0); - } - } while ( stackp > de_stack ); - - /* - * Generate the new entry. - */ - if ( (code=free_ent) < maxmaxcode ) { - tab_prefixof(code) = (unsigned short)oldcode; - tab_suffixof(code) = finchar; - free_ent = code+1; - } - /* - * Remember previous code. - */ - oldcode = incode; - } - /* - * Flush the stuff remaining in our buffer... - */ - offset = 0; - while (n > 0) { - nwritten = write(fileno(stdout), &buff[offset], n); - if (nwritten < 0) - writeerr(); - offset += nwritten; - n -= nwritten; - } -} - -/*- - * Read one code from the standard input. If EOF, return -1. - * Inputs: - * stdin - * Outputs: - * code or -1 is returned. - */ -code_int -getcode() { - /* - * On the VAX, it is important to have the register declarations - * in exactly the order given, or the asm will break. - */ - register code_int code; - static int offset = 0, size = 0; - static char_type buf[BITS]; - register int r_off, bits; - register char_type *bp = buf; - - if ( clear_flg > 0 || offset >= size || free_ent > maxcode ) { - /* - * If the next entry will be too big for the current code - * size, then we must increase the size. This implies reading - * a new buffer full, too. - */ - if ( free_ent > maxcode ) { - n_bits++; - if ( n_bits == maxbits ) - maxcode = maxmaxcode; /* won't get any bigger now */ - else - maxcode = MAXCODE(n_bits); - } - if ( clear_flg > 0) { - maxcode = MAXCODE (n_bits = INIT_BITS); - clear_flg = 0; - } - size = fread( buf, 1, n_bits, stdin ); - if ( size <= 0 ) - return -1; /* end of file */ - offset = 0; - /* Round size down to integral number of codes */ - size = (size << 3) - (n_bits - 1); - } - r_off = offset; - bits = n_bits; -#ifdef vax - asm( "extzv r10,r9,(r8),r11" ); -#else /* not a vax */ - /* - * Get to the first byte. - */ - bp += (r_off >> 3); - r_off &= 7; - /* Get first part (low order bits) */ -#ifdef NO_UCHAR - code = ((*bp++ >> r_off) & rmask[8 - r_off]) & 0xff; -#else - code = (*bp++ >> r_off); -#endif /* NO_UCHAR */ - bits -= (8 - r_off); - r_off = 8 - r_off; /* now, offset into code word */ - /* Get any 8 bit parts in the middle (<=1 for up to 16 bits). */ - if ( bits >= 8 ) { -#ifdef NO_UCHAR - code |= (*bp++ & 0xff) << r_off; -#else - code |= *bp++ << r_off; -#endif /* NO_UCHAR */ - r_off += 8; - bits -= 8; - } - /* high order bits. */ - code |= (*bp & rmask[bits]) << r_off; -#endif /* vax */ - offset += n_bits; - - return code; -} - -#ifdef DEBUG -printcodes() -{ - /* - * Just print out codes from input file. For debugging. - */ - code_int code; - int col = 0, bits; - - bits = n_bits = INIT_BITS; - maxcode = MAXCODE(n_bits); - free_ent = ((block_compress) ? FIRST : 256 ); - while ( ( code = getcode() ) >= 0 ) { - if ( (code == CLEAR) && block_compress ) { - free_ent = FIRST - 1; - clear_flg = 1; - } - else if ( free_ent < maxmaxcode ) - free_ent++; - if ( bits != n_bits ) { - fprintf(stderr, "\nChange to %d bits\n", n_bits ); - bits = n_bits; - col = 0; - } - fprintf(stderr, "%5d%c", code, (col+=6) >= 74 ? (col = 0, '\n') : ' ' ); - } - putc( '\n', stderr ); - exit( 0 ); -} - -code_int sorttab[1<= 0) { - sorttab[codetabof(i)] = i; - } - } - first = block_compress ? FIRST : 256; - for(i = first; i < free_ent; i++) { - fprintf(stderr, "%5d: \"", i); - de_stack[--stack_top] = '\n'; - de_stack[--stack_top] = '"'; - stack_top = in_stack((htabof(sorttab[i])>>maxbits)&0xff, - stack_top); - for(ent=htabof(sorttab[i]) & ((1< 256; - ent=htabof(sorttab[ent]) & ((1<> maxbits, - stack_top); - } - stack_top = in_stack(ent, stack_top); - fwrite( &de_stack[stack_top], 1, STACK_SIZE-stack_top, stderr); - stack_top = STACK_SIZE; - } - } else if(!debug) { /* decompressing */ - - for ( i = 0; i < free_ent; i++ ) { - ent = i; - c = tab_suffixof(ent); - if ( isascii(c) && isprint(c) ) - fprintf( stderr, "%5d: %5d/'%c' \"", - ent, tab_prefixof(ent), c ); - else - fprintf( stderr, "%5d: %5d/\\%03o \"", - ent, tab_prefixof(ent), c ); - de_stack[--stack_top] = '\n'; - de_stack[--stack_top] = '"'; - for ( ; ent != NULL; - ent = (ent >= FIRST ? tab_prefixof(ent) : NULL) ) { - stack_top = in_stack(tab_suffixof(ent), stack_top); - } - fwrite( &de_stack[stack_top], 1, STACK_SIZE - stack_top, stderr ); - stack_top = STACK_SIZE; - } - } -} - -int -in_stack(c, stack_top) - register c, stack_top; -{ - if ( (isascii(c) && isprint(c) && c != '\\') || c == ' ' ) { - de_stack[--stack_top] = c; - } else { - switch( c ) { - case '\n': de_stack[--stack_top] = 'n'; break; - case '\t': de_stack[--stack_top] = 't'; break; - case '\b': de_stack[--stack_top] = 'b'; break; - case '\f': de_stack[--stack_top] = 'f'; break; - case '\r': de_stack[--stack_top] = 'r'; break; - case '\\': de_stack[--stack_top] = '\\'; break; - default: - de_stack[--stack_top] = '0' + c % 8; - de_stack[--stack_top] = '0' + (c / 8) % 8; - de_stack[--stack_top] = '0' + c / 64; - break; - } - de_stack[--stack_top] = '\\'; - } - return stack_top; -} -#endif /* DEBUG */ - -writeerr() -{ - (void)fprintf(stderr, "compress: %s: %s\n", - ofname[0] ? ofname : "stdout", strerror(errno)); - (void)unlink(ofname); - exit(1); -} - -copystat(ifname, ofname) -char *ifname, *ofname; -{ - struct stat statbuf; - int mode; - struct utimbuf tp; - - fclose(stdout); - if (stat(ifname, &statbuf)) { /* Get stat on input file */ - perror(ifname); - return; - } - if ((statbuf.st_mode & S_IFMT/*0170000*/) != S_IFREG/*0100000*/) { - if(quiet) - fprintf(stderr, "%s: ", ifname); - fprintf(stderr, " -- not a regular file: unchanged"); - exit_stat = 1; - perm_stat = 1; - } else if (statbuf.st_nlink > 1) { - if(quiet) - fprintf(stderr, "%s: ", ifname); - fprintf(stderr, " -- has %d other links: unchanged", - statbuf.st_nlink - 1); - exit_stat = 1; - perm_stat = 1; - } else if (exit_stat == 2 && (!force)) { /* No compression: remove file.Z */ - if(!quiet) - fprintf(stderr, " -- file unchanged"); - } else { /* ***** Successful Compression ***** */ - exit_stat = 0; - mode = statbuf.st_mode & 07777; - if (chmod(ofname, mode)) /* Copy modes */ - perror(ofname); - chown(ofname, statbuf.st_uid, statbuf.st_gid); /* Copy ownership */ - tp.actime = statbuf.st_atime; - tp.modtime = statbuf.st_mtime; - utime(ofname, &tp); /* Update last accessed and modified times */ - if (unlink(ifname)) /* Remove input file */ - perror(ifname); - if(!quiet) - fprintf(stderr, " -- replaced with %s", ofname); - return; /* Successful return */ - } - - /* Unsuccessful return -- one of the tests failed */ - if (unlink(ofname)) - perror(ofname); -} - -void -onintr ( ) -{ - if (!precious) - unlink ( ofname ); - exit ( 1 ); -} - -void -oops ( ) /* wild pointer -- assume bad input */ -{ - if ( do_decomp ) - fprintf ( stderr, "uncompress: corrupt input\n" ); - unlink ( ofname ); - exit ( 1 ); -} - -cl_block () /* table clear for block compress */ -{ - register long int rat; - - checkpoint = in_count + CHECK_GAP; -#ifdef DEBUG - if ( debug ) { - fprintf ( stderr, "count: %ld, ratio: ", in_count ); - prratio ( stderr, in_count, bytes_out ); - fprintf ( stderr, "\n"); - } -#endif /* DEBUG */ - - if(in_count > 0x007fffff) { /* shift will overflow */ - rat = bytes_out >> 8; - if(rat == 0) { /* Don't divide by zero */ - rat = 0x7fffffff; - } else { - rat = in_count / rat; - } - } else { - rat = (in_count << 8) / bytes_out; /* 8 fractional bits */ - } - if ( rat > ratio ) { - ratio = rat; - } else { - ratio = 0; -#ifdef DEBUG - if(verbose) - dump_tab(); /* dump string table */ -#endif - cl_hash ( (count_int) hsize ); - free_ent = FIRST; - clear_flg = 1; - output ( (code_int) CLEAR ); -#ifdef DEBUG - if(debug) - fprintf ( stderr, "clear\n" ); -#endif /* DEBUG */ - } -} - -cl_hash(hsize) /* reset code table */ - register count_int hsize; -{ - register count_int *htab_p = htab+hsize; - register long i; - register long m1 = -1; - - i = hsize - 16; - do { /* might use Sys V memset(3) here */ - *(htab_p-16) = m1; - *(htab_p-15) = m1; - *(htab_p-14) = m1; - *(htab_p-13) = m1; - *(htab_p-12) = m1; - *(htab_p-11) = m1; - *(htab_p-10) = m1; - *(htab_p-9) = m1; - *(htab_p-8) = m1; - *(htab_p-7) = m1; - *(htab_p-6) = m1; - *(htab_p-5) = m1; - *(htab_p-4) = m1; - *(htab_p-3) = m1; - *(htab_p-2) = m1; - *(htab_p-1) = m1; - htab_p -= 16; - } while ((i -= 16) >= 0); - for ( i += 16; i > 0; i-- ) - *--htab_p = m1; -} - -prratio(stream, num, den) -FILE *stream; -long int num, den; -{ - register int q; /* Doesn't need to be long */ - - if(num > 214748L) { /* 2147483647/10000 */ - q = num / (den / 10000L); - } else { - q = 10000L * num / den; /* Long calculations, though */ - } - if (q < 0) { - putc('-', stream); - q = -q; - } - fprintf(stream, "%d.%02d%%", q / 100, q % 100); -} - -usage() -{ - (void)fprintf(stderr, -#ifdef DEBUG - "compress [-CDVcdfnv] [-b maxbits] [file ...]\n"); -#else - "compress [-Ccdfnv] [-b maxbits] [file ...]\n"); -#endif - exit(1); -} ----------------------------------------------------------------------- Summary of changes: CMakeLists.txt | 8 - Help/prop_sf/OBJECT_OUTPUTS.rst | 6 +- Source/CMakeLists.txt | 3 +- Source/cmGlobalNinjaGenerator.cxx | 158 ++-- Source/cmGlobalNinjaGenerator.h | 3 +- Source/cmNinjaTargetGenerator.cxx | 110 ++- Source/cmNinjaTargetGenerator.h | 4 +- Source/cmQtAutoGen.cxx | 42 +- Source/cmQtAutoGen.h | 16 +- Source/cmQtAutoGenGlobalInitializer.cxx | 6 +- Source/cmQtAutoGenInitializer.h | 12 +- Utilities/cmcompress/CMakeLists.txt | 5 - Utilities/cmcompress/Copyright.txt | 34 - Utilities/cmcompress/cmcompress.c | 551 ------------- Utilities/cmcompress/cmcompress.h | 195 ----- Utilities/cmcompress/compress.c.original | 1308 ------------------------------ 16 files changed, 223 insertions(+), 2238 deletions(-) delete mode 100644 Utilities/cmcompress/CMakeLists.txt delete mode 100644 Utilities/cmcompress/Copyright.txt delete mode 100644 Utilities/cmcompress/cmcompress.c delete mode 100644 Utilities/cmcompress/cmcompress.h delete mode 100644 Utilities/cmcompress/compress.c.original hooks/post-receive -- CMake From kwrobot at kitware.com Wed Feb 27 08:23:07 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 27 Feb 2019 08:23:07 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.14.0-rc2-52-gf369d59 Message-ID: <20190227132307.57BA111346B@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 f369d59cddecf9f6a3b28329ab11b5f354c229bd (commit) via c2c7b9605c7e2c095c342c0641fc44875df89942 (commit) via e994e1f9cd7f520798be9b97ceeb75b946a64eb7 (commit) via 624ce2c8bef1a47b563f43144f3031c8b1c95a10 (commit) via 5833739c4a64e45d902eabd0a072216e5768428e (commit) via 4570b5ae91677e62a6dc6c55e13a33925a894c83 (commit) via bf10f02441ba3e33523a64f075441c8820daf843 (commit) via 4b95e7fe63d254b8e50f09f85a51e232a7470c7b (commit) via 7a1f3fe041c453101a913a0ef5b23922a86bd604 (commit) via 3106cf4e3d15e0b6320ea3528079dd807f8bc06f (commit) via 8375c303e272fd7d20383a86d0c99433b7e0da67 (commit) via a0d4430d662be62af58c6ff8a9b75511b2cbbe5f (commit) from 8455e166a9655afa70b34e3b5c9586470041e87c (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/manual/cmake-modules.7.rst | 1 - Help/module/FindOctave.rst | 1 - Help/prop_tgt/BUILD_RPATH_USE_ORIGIN.rst | 14 +- Help/release/3.14.rst | 2 - Modules/CMakeDetermineCompilerId.cmake | 11 +- Modules/FindOctave.cmake | 179 --------------------- Source/cmIncludeExternalMSProjectCommand.cxx | 4 +- Source/cmakemain.cxx | 2 +- Tests/CMakeLists.txt | 4 - Tests/FindOctave/CMakeLists.txt | 10 -- Tests/FindOctave/Test/CMakeLists.txt | 24 --- Tests/FindOctave/Test/interp_main.cpp | 26 --- Tests/FindOctave/Test/main.cpp | 18 --- Tests/FindOctave/Test/testtrue.m | 1 - Tests/RunCMake/CMakeLists.txt | 6 +- .../RunCMake/CMakeRoleGlobalProperty/Project.cmake | 4 + .../CMakeRoleGlobalProperty/RunCMakeTest.cmake | 3 + 17 files changed, 30 insertions(+), 280 deletions(-) delete mode 100644 Help/module/FindOctave.rst delete mode 100644 Modules/FindOctave.cmake delete mode 100644 Tests/FindOctave/CMakeLists.txt delete mode 100644 Tests/FindOctave/Test/CMakeLists.txt delete mode 100644 Tests/FindOctave/Test/interp_main.cpp delete mode 100644 Tests/FindOctave/Test/main.cpp delete mode 100644 Tests/FindOctave/Test/testtrue.m hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 28 00:03:06 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 28 Feb 2019 00:03:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-274-g0df31d9 Message-ID: <20190228050306.6E5F2125A63@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 0df31d99ae44e1e151feb4df977a4332833ea872 (commit) from b13a8441cd1338ac9f8352a4df54759a1b19088a (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=0df31d99ae44e1e151feb4df977a4332833ea872 commit 0df31d99ae44e1e151feb4df977a4332833ea872 Author: Kitware Robot AuthorDate: Thu Feb 28 00:01:08 2019 -0500 Commit: Kitware Robot CommitDate: Thu Feb 28 00:01:08 2019 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 4c9d2c0..a6ae1fe 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 14) -set(CMake_VERSION_PATCH 20190227) +set(CMake_VERSION_PATCH 20190228) #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 28 10:23:08 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 28 Feb 2019 10:23:08 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-276-g0d9471f Message-ID: <20190228152308.4D7AA125156@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 0d9471fa2dee221aef8166ea370a98cc26d783e4 (commit) via 258298f59799311ad6a3f261f7e7bebcaf346657 (commit) from 0df31d99ae44e1e151feb4df977a4332833ea872 (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=0d9471fa2dee221aef8166ea370a98cc26d783e4 commit 0d9471fa2dee221aef8166ea370a98cc26d783e4 Merge: 0df31d9 258298f Author: Kyle Edwards AuthorDate: Thu Feb 28 15:18:44 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 28 10:18:52 2019 -0500 Merge topic 'remove_duplicates-order' 258298f597 Help: Clarify ordering of list(REMOVE_DUPLICATES) Acked-by: Kitware Robot Merge-request: !3035 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=258298f59799311ad6a3f261f7e7bebcaf346657 commit 258298f59799311ad6a3f261f7e7bebcaf346657 Author: Kyle Edwards AuthorDate: Wed Feb 27 11:22:57 2019 -0500 Commit: Kyle Edwards CommitDate: Wed Feb 27 11:22:57 2019 -0500 Help: Clarify ordering of list(REMOVE_DUPLICATES) This also adds a test to enforce the order behavior of list(REMOVE_DUPLICATES). diff --git a/Help/command/list.rst b/Help/command/list.rst index 6c86c2a..4444af7 100644 --- a/Help/command/list.rst +++ b/Help/command/list.rst @@ -196,7 +196,8 @@ Removes items at given indices from the list. list(REMOVE_DUPLICATES ) -Removes duplicated items in the list. +Removes duplicated items in the list. The relative order of items is preserved, +but if duplicates are encountered, only the first instance is preserved. .. _TRANSFORM: diff --git a/Tests/RunCMake/list/REMOVE_DUPLICATES-PreserveOrder.cmake b/Tests/RunCMake/list/REMOVE_DUPLICATES-PreserveOrder.cmake new file mode 100644 index 0000000..91abbd6 --- /dev/null +++ b/Tests/RunCMake/list/REMOVE_DUPLICATES-PreserveOrder.cmake @@ -0,0 +1,5 @@ +set(mylist "b;c;b;a;a;c;b;a;c;b") +list(REMOVE_DUPLICATES mylist) +if(NOT mylist STREQUAL "b;c;a") + message(SEND_ERROR "Expected b;c;a, got ${mylist}") +endif() diff --git a/Tests/RunCMake/list/RunCMakeTest.cmake b/Tests/RunCMake/list/RunCMakeTest.cmake index 59c7ea5..b4a91bc 100644 --- a/Tests/RunCMake/list/RunCMakeTest.cmake +++ b/Tests/RunCMake/list/RunCMakeTest.cmake @@ -24,6 +24,8 @@ run_cmake(SUBLIST-TooManyArguments) run_cmake(REMOVE_AT-EmptyList) +run_cmake(REMOVE_DUPLICATES-PreserveOrder) + run_cmake(FILTER-NotList) run_cmake(REMOVE_AT-NotList) run_cmake(REMOVE_DUPLICATES-NotList) ----------------------------------------------------------------------- Summary of changes: Help/command/list.rst | 3 ++- Tests/RunCMake/list/REMOVE_DUPLICATES-PreserveOrder.cmake | 5 +++++ Tests/RunCMake/list/RunCMakeTest.cmake | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 Tests/RunCMake/list/REMOVE_DUPLICATES-PreserveOrder.cmake hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 28 10:33:03 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 28 Feb 2019 10:33:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-279-g8989fa2 Message-ID: <20190228153303.A076B113AB4@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 8989fa255b7c4d1b9a7598eec29335801292e149 (commit) via 18320230ecb273233b1ccb133537daf16179262c (commit) via e0267eb1d327befd9839c0d745c84e6550618104 (commit) from 0d9471fa2dee221aef8166ea370a98cc26d783e4 (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=8989fa255b7c4d1b9a7598eec29335801292e149 commit 8989fa255b7c4d1b9a7598eec29335801292e149 Merge: 0d9471f 1832023 Author: Brad King AuthorDate: Thu Feb 28 15:24:56 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 28 10:25:03 2019 -0500 Merge topic 'FindThreads-revert-libc-check' 18320230ec FindThreads: Revert libc symbol check to pthread_create e0267eb1d3 FindThreads: Fix libc check to use proper header for pthread_kill Acked-by: Kitware Robot Acked-by: Rolf Eike Beer Merge-request: !3022 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=18320230ecb273233b1ccb133537daf16179262c commit 18320230ecb273233b1ccb133537daf16179262c Author: Brad King AuthorDate: Wed Feb 27 07:28:05 2019 -0500 Commit: Brad King CommitDate: Wed Feb 27 07:33:31 2019 -0500 FindThreads: Revert libc symbol check to pthread_create Since commit e9a1ddc594 (FindThreads: Replace the pthread symbol checking in libc., 2018-11-18, v3.14.0-rc1~292^2) we check libc for `pthread_kill` instead of `pthread_create`. However, on FreeBSD `pthread_kill` is in libc but not `pthread_create`. Discussion in the original merge request for the above commit also considered `pthread_key_create`, `pthread_self`, and `pthread_attr_init`. Every symbol seems to have some reason it is not an appropriate choice. Revert to the pre-3.14 behavior of using `pthread_create` pending further investigation. diff --git a/Modules/FindThreads.cmake b/Modules/FindThreads.cmake index a2f3fa3..919392a 100644 --- a/Modules/FindThreads.cmake +++ b/Modules/FindThreads.cmake @@ -118,18 +118,8 @@ if(CMAKE_HAVE_PTHREAD_H) set(CMAKE_HAVE_THREADS_LIBRARY) if(NOT THREADS_HAVE_PTHREAD_ARG) # Check if pthread functions are in normal C library. - # If the pthread functions already exist in C library, we could just use - # them instead of linking to the additional pthread library. We could - # try to check any pthread symbol name, but here is an exception. If we - # use clang asan build, we will find the pthread_create() symbol in the - # libc(libasan). However, it doesn't have the full pthread implementation. - # So, we can't assume that we have the pthread implementation in libc - # using the pthread_create() checking here. Then, we turn to check the - # pthread_kill() symbol instead. It is in the "signal.h" header, but - # the purpose of this check is to verify that the pthread API works with - # pure libc, so verify that "pthread.h" can be included too. - CHECK_SYMBOL_EXISTS(pthread_kill "signal.h;pthread.h" CMAKE_HAVE_LIBC_PTHREAD_KILL) - if(CMAKE_HAVE_LIBC_PTHREAD_KILL) + CHECK_SYMBOL_EXISTS(pthread_create pthread.h CMAKE_HAVE_LIBC_CREATE) + if(CMAKE_HAVE_LIBC_CREATE) set(CMAKE_THREAD_LIBS_INIT "") set(CMAKE_HAVE_THREADS_LIBRARY 1) set(Threads_FOUND TRUE) @@ -154,7 +144,7 @@ if(CMAKE_HAVE_PTHREAD_H) _check_pthreads_flag() endif() -if(CMAKE_THREAD_LIBS_INIT OR CMAKE_HAVE_LIBC_PTHREAD_KILL) +if(CMAKE_THREAD_LIBS_INIT OR CMAKE_HAVE_LIBC_CREATE) set(CMAKE_USE_PTHREADS_INIT 1) set(Threads_FOUND TRUE) endif() https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e0267eb1d327befd9839c0d745c84e6550618104 commit e0267eb1d327befd9839c0d745c84e6550618104 Author: Brad King AuthorDate: Tue Feb 26 07:46:26 2019 -0500 Commit: Brad King CommitDate: Tue Feb 26 07:51:52 2019 -0500 FindThreads: Fix libc check to use proper header for pthread_kill In commit e9a1ddc594 (FindThreads: Replace the pthread symbol checking in libc., 2018-11-18, v3.14.0-rc1~292^2) we switched to checking for `pthread_kill` in libc but did not update the symbol check's header file to match. Add `signal.h` to get `pthread_kill`. Keep `pthread.h` anyway since the purpose of the check is to verify that the pthread API works. Fixes: #18984 diff --git a/Modules/FindThreads.cmake b/Modules/FindThreads.cmake index 5d894c8..a2f3fa3 100644 --- a/Modules/FindThreads.cmake +++ b/Modules/FindThreads.cmake @@ -125,8 +125,10 @@ if(CMAKE_HAVE_PTHREAD_H) # libc(libasan). However, it doesn't have the full pthread implementation. # So, we can't assume that we have the pthread implementation in libc # using the pthread_create() checking here. Then, we turn to check the - # pthread_kill() symbol instead. - CHECK_SYMBOL_EXISTS(pthread_kill pthread.h CMAKE_HAVE_LIBC_PTHREAD_KILL) + # pthread_kill() symbol instead. It is in the "signal.h" header, but + # the purpose of this check is to verify that the pthread API works with + # pure libc, so verify that "pthread.h" can be included too. + CHECK_SYMBOL_EXISTS(pthread_kill "signal.h;pthread.h" CMAKE_HAVE_LIBC_PTHREAD_KILL) if(CMAKE_HAVE_LIBC_PTHREAD_KILL) set(CMAKE_THREAD_LIBS_INIT "") set(CMAKE_HAVE_THREADS_LIBRARY 1) ----------------------------------------------------------------------- Summary of changes: Modules/FindThreads.cmake | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 28 11:03:06 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 28 Feb 2019 11:03:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-287-g4a79cdc Message-ID: <20190228160306.AC85B11F5B3@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 4a79cdc85f885abfde9c3da393a55ef8ec947637 (commit) via a4f2dd9577d23e77ad4daeea0e32bd8283204bdb (commit) via 93091cabace0b690fb1d977a6df219a42751bb12 (commit) via 18731d60ac4f14c080ef593c1b1f0a5beb330b02 (commit) via e6195989c7124904b6263a64e0b16938987cdfcd (commit) via a605bf438e303b3fa7fa3c3b5dfbcb5164c1e7d7 (commit) via e17deb7ad4ac83207c9e34d397f3ee054b3d09dd (commit) via e0d7078f6fe49d28b6c511b8e95d3765637189b5 (commit) from 8989fa255b7c4d1b9a7598eec29335801292e149 (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=4a79cdc85f885abfde9c3da393a55ef8ec947637 commit 4a79cdc85f885abfde9c3da393a55ef8ec947637 Merge: a4f2dd9 18731d6 Author: Brad King AuthorDate: Thu Feb 28 11:01:02 2019 -0500 Commit: Brad King CommitDate: Thu Feb 28 11:01:02 2019 -0500 Merge branch 'release-3.14' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a4f2dd9577d23e77ad4daeea0e32bd8283204bdb commit a4f2dd9577d23e77ad4daeea0e32bd8283204bdb Merge: 93091ca e619598 Author: Brad King AuthorDate: Thu Feb 28 16:00:05 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 28 11:00:13 2019 -0500 Merge topic 'check-std-size-cbegin-cend' e6195989c7 Merge branch 'backport-check-std-size-cbegin-cend' a605bf438e Extend C++17/C++14 feature checks to cover more standard library APIs e17deb7ad4 Extend C++17/C++14 feature checks to cover more standard library APIs Acked-by: Kitware Robot Merge-request: !3030 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=93091cabace0b690fb1d977a6df219a42751bb12 commit 93091cabace0b690fb1d977a6df219a42751bb12 Merge: 8989fa2 e0d7078 Author: Brad King AuthorDate: Thu Feb 28 10:57:50 2019 -0500 Commit: Brad King CommitDate: Thu Feb 28 10:57:50 2019 -0500 Merge branch 'release-3.14' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e6195989c7124904b6263a64e0b16938987cdfcd commit e6195989c7124904b6263a64e0b16938987cdfcd Merge: a605bf4 e17deb7 Author: Brad King AuthorDate: Wed Feb 27 11:27:31 2019 -0500 Commit: Brad King CommitDate: Wed Feb 27 11:27:31 2019 -0500 Merge branch 'backport-check-std-size-cbegin-cend' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a605bf438e303b3fa7fa3c3b5dfbcb5164c1e7d7 commit a605bf438e303b3fa7fa3c3b5dfbcb5164c1e7d7 Author: Mathieu Garaud AuthorDate: Wed Feb 27 15:47:41 2019 +0100 Commit: Brad King CommitDate: Wed Feb 27 11:27:17 2019 -0500 Extend C++17/C++14 feature checks to cover more standard library APIs Make sure `std::cbegin`, `std::cend`, and `std::size` work in C++17 or C++14 mode before choosing the corresponding standard level for compiling CMake itself. This helps in cases that the compiler is using a standard library too old to support the full standard level chosen. diff --git a/Source/Checks/cm_cxx14_check.cpp b/Source/Checks/cm_cxx14_check.cpp index 9369ba2..fff36c9 100644 --- a/Source/Checks/cm_cxx14_check.cpp +++ b/Source/Checks/cm_cxx14_check.cpp @@ -1,8 +1,15 @@ #include +#include #include int main() { + int a[] = { 0, 1, 2 }; + auto ai = std::cbegin(a); + + int b[] = { 2, 1, 0 }; + auto bi = std::cend(b); + std::unique_ptr u(new int(0)); - return *u; + return *u + *ai + *(bi - 1); } diff --git a/Source/Checks/cm_cxx17_check.cpp b/Source/Checks/cm_cxx17_check.cpp index 2de10d6..593d9b2 100644 --- a/Source/Checks/cm_cxx17_check.cpp +++ b/Source/Checks/cm_cxx17_check.cpp @@ -1,4 +1,5 @@ #include +#include #include #include @@ -8,6 +9,14 @@ int main() { + int a[] = { 0, 1, 2 }; + auto ai = std::cbegin(a); + + int b[] = { 2, 1, 0 }; + auto bi = std::cend(b); + + auto ci = std::size(a); + std::unique_ptr u(new int(0)); #ifdef _MSC_VER @@ -18,5 +27,5 @@ int main() IDispatchPtr disp(ptr); #endif - return *u; + return *u + *ai + *(bi - 1) + (3 - static_cast(ci)); } ----------------------------------------------------------------------- Summary of changes: Source/Checks/cm_cxx14_check.cpp | 9 ++++++++- Source/Checks/cm_cxx17_check.cpp | 11 ++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 28 11:03:06 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 28 Feb 2019 11:03:06 -0500 (EST) Subject: [Cmake-commits] CMake branch, release, updated. v3.14.0-rc2-57-g18731d6 Message-ID: <20190228160306.C1B3F1282E8@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 18731d60ac4f14c080ef593c1b1f0a5beb330b02 (commit) via e17deb7ad4ac83207c9e34d397f3ee054b3d09dd (commit) via e0d7078f6fe49d28b6c511b8e95d3765637189b5 (commit) via 18320230ecb273233b1ccb133537daf16179262c (commit) via e0267eb1d327befd9839c0d745c84e6550618104 (commit) from f369d59cddecf9f6a3b28329ab11b5f354c229bd (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/FindThreads.cmake | 14 +++----------- Source/Checks/cm_cxx14_check.cpp | 9 ++++++++- Source/Checks/cm_cxx17_check.cpp | 11 ++++++++++- 3 files changed, 21 insertions(+), 13 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 28 11:43:03 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 28 Feb 2019 11:43:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-291-g6066aa4 Message-ID: <20190228164303.E17E5113A84@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 6066aa471e28eb3d95b251d4d2a3bf83a31bba4f (commit) via bfd71fc05c8495d9afefc920f2d59776b184098c (commit) via a490ea4a2854a4c08f01b34bd444333e1bdbdc76 (commit) via c7213ca87064ba47984b4dd07192389366d5856a (commit) from 4a79cdc85f885abfde9c3da393a55ef8ec947637 (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=6066aa471e28eb3d95b251d4d2a3bf83a31bba4f commit 6066aa471e28eb3d95b251d4d2a3bf83a31bba4f Merge: bfd71fc a490ea4 Author: Brad King AuthorDate: Thu Feb 28 16:42:06 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 28 11:42:32 2019 -0500 Merge topic 'optimize_ge_node_lookup' a490ea4a28 cmGeneratorExpressionNode: Initialize node key map in class constructor Acked-by: Kitware Robot Merge-request: !3031 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bfd71fc05c8495d9afefc920f2d59776b184098c commit bfd71fc05c8495d9afefc920f2d59776b184098c Merge: 4a79cdc c7213ca Author: Brad King AuthorDate: Thu Feb 28 16:41:32 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 28 11:41:43 2019 -0500 Merge topic 'features-from-default-standard' c7213ca870 Features: Do not use a lower-than-default standard for requested features Acked-by: Kitware Robot Merge-request: !3023 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a490ea4a2854a4c08f01b34bd444333e1bdbdc76 commit a490ea4a2854a4c08f01b34bd444333e1bdbdc76 Author: Sebastian Holtermann AuthorDate: Wed Feb 27 11:58:06 2019 +0100 Commit: Sebastian Holtermann CommitDate: Wed Feb 27 13:25:22 2019 +0100 cmGeneratorExpressionNode: Initialize node key map in class constructor By initializing the node map in the class constructor of the static instance we avoid an if-empty check. diff --git a/Source/cmGeneratorExpressionNode.cxx b/Source/cmGeneratorExpressionNode.cxx index 49a5fcd..ce308cc 100644 --- a/Source/cmGeneratorExpressionNode.cxx +++ b/Source/cmGeneratorExpressionNode.cxx @@ -2058,75 +2058,76 @@ static const struct ShellPathNode : public cmGeneratorExpressionNode const cmGeneratorExpressionNode* cmGeneratorExpressionNode::GetNode( const std::string& identifier) { - typedef std::map NodeMap; - static NodeMap nodeMap; - if (nodeMap.empty()) { - nodeMap["0"] = &zeroNode; - nodeMap["1"] = &oneNode; - nodeMap["AND"] = &andNode; - nodeMap["OR"] = &orNode; - nodeMap["NOT"] = ¬Node; - nodeMap["C_COMPILER_ID"] = &cCompilerIdNode; - nodeMap["CXX_COMPILER_ID"] = &cxxCompilerIdNode; - nodeMap["Fortran_COMPILER_ID"] = &fortranCompilerIdNode; - nodeMap["VERSION_GREATER"] = &versionGreaterNode; - nodeMap["VERSION_GREATER_EQUAL"] = &versionGreaterEqNode; - nodeMap["VERSION_LESS"] = &versionLessNode; - nodeMap["VERSION_LESS_EQUAL"] = &versionLessEqNode; - nodeMap["VERSION_EQUAL"] = &versionEqualNode; - nodeMap["C_COMPILER_VERSION"] = &cCompilerVersionNode; - nodeMap["CXX_COMPILER_VERSION"] = &cxxCompilerVersionNode; - nodeMap["Fortran_COMPILER_VERSION"] = &fortranCompilerVersionNode; - nodeMap["PLATFORM_ID"] = &platformIdNode; - nodeMap["COMPILE_FEATURES"] = &compileFeaturesNode; - nodeMap["CONFIGURATION"] = &configurationNode; - nodeMap["CONFIG"] = &configurationTestNode; - nodeMap["TARGET_FILE"] = &targetNodeGroup.File; - nodeMap["TARGET_LINKER_FILE"] = &targetLinkerNodeGroup.File; - nodeMap["TARGET_SONAME_FILE"] = &targetSoNameNodeGroup.File; - nodeMap["TARGET_PDB_FILE"] = &targetPdbNodeGroup.File; - nodeMap["TARGET_FILE_NAME"] = &targetNodeGroup.FileName; - nodeMap["TARGET_LINKER_FILE_NAME"] = &targetLinkerNodeGroup.FileName; - nodeMap["TARGET_SONAME_FILE_NAME"] = &targetSoNameNodeGroup.FileName; - nodeMap["TARGET_PDB_FILE_NAME"] = &targetPdbNodeGroup.FileName; - nodeMap["TARGET_FILE_DIR"] = &targetNodeGroup.FileDir; - nodeMap["TARGET_LINKER_FILE_DIR"] = &targetLinkerNodeGroup.FileDir; - nodeMap["TARGET_SONAME_FILE_DIR"] = &targetSoNameNodeGroup.FileDir; - nodeMap["TARGET_PDB_FILE_DIR"] = &targetPdbNodeGroup.FileDir; - nodeMap["TARGET_BUNDLE_DIR"] = &targetBundleDirNode; - 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; - nodeMap["BOOL"] = &boolNode; - nodeMap["IF"] = &ifNode; - nodeMap["ANGLE-R"] = &angle_rNode; - nodeMap["COMMA"] = &commaNode; - nodeMap["SEMICOLON"] = &semicolonNode; - nodeMap["TARGET_PROPERTY"] = &targetPropertyNode; - nodeMap["TARGET_NAME"] = &targetNameNode; - nodeMap["TARGET_OBJECTS"] = &targetObjectsNode; - nodeMap["TARGET_POLICY"] = &targetPolicyNode; - nodeMap["TARGET_EXISTS"] = &targetExistsNode; - nodeMap["TARGET_NAME_IF_EXISTS"] = &targetNameIfExistsNode; - nodeMap["TARGET_GENEX_EVAL"] = &targetGenexEvalNode; - nodeMap["GENEX_EVAL"] = &genexEvalNode; - nodeMap["BUILD_INTERFACE"] = &buildInterfaceNode; - nodeMap["INSTALL_INTERFACE"] = &installInterfaceNode; - nodeMap["INSTALL_PREFIX"] = &installPrefixNode; - nodeMap["JOIN"] = &joinNode; - nodeMap["LINK_ONLY"] = &linkOnlyNode; - nodeMap["COMPILE_LANGUAGE"] = &languageNode; - nodeMap["SHELL_PATH"] = &shellPathNode; - } - NodeMap::const_iterator i = nodeMap.find(identifier); - if (i == nodeMap.end()) { - return nullptr; + static std::map const nodeMap{ + { "0", &zeroNode }, + { "1", &oneNode }, + { "AND", &andNode }, + { "OR", &orNode }, + { "NOT", ¬Node }, + { "C_COMPILER_ID", &cCompilerIdNode }, + { "CXX_COMPILER_ID", &cxxCompilerIdNode }, + { "Fortran_COMPILER_ID", &fortranCompilerIdNode }, + { "VERSION_GREATER", &versionGreaterNode }, + { "VERSION_GREATER_EQUAL", &versionGreaterEqNode }, + { "VERSION_LESS", &versionLessNode }, + { "VERSION_LESS_EQUAL", &versionLessEqNode }, + { "VERSION_EQUAL", &versionEqualNode }, + { "C_COMPILER_VERSION", &cCompilerVersionNode }, + { "CXX_COMPILER_VERSION", &cxxCompilerVersionNode }, + { "Fortran_COMPILER_VERSION", &fortranCompilerVersionNode }, + { "PLATFORM_ID", &platformIdNode }, + { "COMPILE_FEATURES", &compileFeaturesNode }, + { "CONFIGURATION", &configurationNode }, + { "CONFIG", &configurationTestNode }, + { "TARGET_FILE", &targetNodeGroup.File }, + { "TARGET_LINKER_FILE", &targetLinkerNodeGroup.File }, + { "TARGET_SONAME_FILE", &targetSoNameNodeGroup.File }, + { "TARGET_PDB_FILE", &targetPdbNodeGroup.File }, + { "TARGET_FILE_NAME", &targetNodeGroup.FileName }, + { "TARGET_LINKER_FILE_NAME", &targetLinkerNodeGroup.FileName }, + { "TARGET_SONAME_FILE_NAME", &targetSoNameNodeGroup.FileName }, + { "TARGET_PDB_FILE_NAME", &targetPdbNodeGroup.FileName }, + { "TARGET_FILE_DIR", &targetNodeGroup.FileDir }, + { "TARGET_LINKER_FILE_DIR", &targetLinkerNodeGroup.FileDir }, + { "TARGET_SONAME_FILE_DIR", &targetSoNameNodeGroup.FileDir }, + { "TARGET_PDB_FILE_DIR", &targetPdbNodeGroup.FileDir }, + { "TARGET_BUNDLE_DIR", &targetBundleDirNode }, + { "TARGET_BUNDLE_CONTENT_DIR", &targetBundleContentDirNode }, + { "STREQUAL", &strEqualNode }, + { "EQUAL", &equalNode }, + { "IN_LIST", &inListNode }, + { "LOWER_CASE", &lowerCaseNode }, + { "UPPER_CASE", &upperCaseNode }, + { "MAKE_C_IDENTIFIER", &makeCIdentifierNode }, + { "BOOL", &boolNode }, + { "IF", &ifNode }, + { "ANGLE-R", &angle_rNode }, + { "COMMA", &commaNode }, + { "SEMICOLON", &semicolonNode }, + { "TARGET_PROPERTY", &targetPropertyNode }, + { "TARGET_NAME", &targetNameNode }, + { "TARGET_OBJECTS", &targetObjectsNode }, + { "TARGET_POLICY", &targetPolicyNode }, + { "TARGET_EXISTS", &targetExistsNode }, + { "TARGET_NAME_IF_EXISTS", &targetNameIfExistsNode }, + { "TARGET_GENEX_EVAL", &targetGenexEvalNode }, + { "GENEX_EVAL", &genexEvalNode }, + { "BUILD_INTERFACE", &buildInterfaceNode }, + { "INSTALL_INTERFACE", &installInterfaceNode }, + { "INSTALL_PREFIX", &installPrefixNode }, + { "JOIN", &joinNode }, + { "LINK_ONLY", &linkOnlyNode }, + { "COMPILE_LANGUAGE", &languageNode }, + { "SHELL_PATH", &shellPathNode } + }; + + { + auto itr = nodeMap.find(identifier); + if (itr != nodeMap.end()) { + return itr->second; + } } - return i->second; + return nullptr; } void reportError(cmGeneratorExpressionContext* context, https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c7213ca87064ba47984b4dd07192389366d5856a commit c7213ca87064ba47984b4dd07192389366d5856a Author: Zsolt Parragi AuthorDate: Tue Feb 26 14:36:11 2019 +0100 Commit: Brad King CommitDate: Tue Feb 26 14:35:55 2019 -0500 Features: Do not use a lower-than-default standard for requested features `AddRequiredTargetC(xx)` feature didn't take the default compiler standard into account, which possibly resulted in the use of an older standard when some features requested it. Fixes: #18686 diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index a0b09da..ab37774 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -4725,6 +4725,13 @@ bool cmMakefile::AddRequiredTargetCxxFeature(cmTarget* target, needCxx17, needCxx20); const char* existingCxxStandard = target->GetProperty("CXX_STANDARD"); + if (existingCxxStandard == nullptr) { + const char* defaultCxxStandard = + this->GetDefinition("CMAKE_CXX_STANDARD_DEFAULT"); + if (defaultCxxStandard && *defaultCxxStandard) { + existingCxxStandard = defaultCxxStandard; + } + } const char* const* existingCxxLevel = nullptr; if (existingCxxStandard) { existingCxxLevel = @@ -4827,6 +4834,13 @@ bool cmMakefile::AddRequiredTargetCFeature(cmTarget* target, this->CheckNeededCLanguage(feature, needC90, needC99, needC11); const char* existingCStandard = target->GetProperty("C_STANDARD"); + if (existingCStandard == nullptr) { + const char* defaultCStandard = + this->GetDefinition("CMAKE_C_STANDARD_DEFAULT"); + if (defaultCStandard && *defaultCStandard) { + existingCStandard = defaultCStandard; + } + } if (existingCStandard) { if (std::find_if(cm::cbegin(C_STANDARDS), cm::cend(C_STANDARDS), cmStrCmp(existingCStandard)) == cm::cend(C_STANDARDS)) { diff --git a/Tests/CompileFeatures/CMakeLists.txt b/Tests/CompileFeatures/CMakeLists.txt index b0bc656..6ccdcc3 100644 --- a/Tests/CompileFeatures/CMakeLists.txt +++ b/Tests/CompileFeatures/CMakeLists.txt @@ -338,11 +338,11 @@ else() add_executable(CompileFeaturesGenex2 genex_test.cpp) target_compile_features(CompileFeaturesGenex2 PRIVATE cxx_std_11) - target_compile_definitions(CompileFeaturesGenex2 PRIVATE ${genex_test_defs}) + target_compile_definitions(CompileFeaturesGenex2 PRIVATE ${genex_test_defs} ALLOW_LATER_STANDARDS=1) add_library(std_11_iface INTERFACE) target_compile_features(std_11_iface INTERFACE cxx_std_11) add_executable(CompileFeaturesGenex3 genex_test.cpp) target_link_libraries(CompileFeaturesGenex3 PRIVATE std_11_iface) - target_compile_definitions(CompileFeaturesGenex3 PRIVATE ${genex_test_defs}) + target_compile_definitions(CompileFeaturesGenex3 PRIVATE ${genex_test_defs} ALLOW_LATER_STANDARDS=1) endif() diff --git a/Tests/CompileFeatures/genex_test.cpp b/Tests/CompileFeatures/genex_test.cpp index 59f9006..4539789 100644 --- a/Tests/CompileFeatures/genex_test.cpp +++ b/Tests/CompileFeatures/genex_test.cpp @@ -15,10 +15,10 @@ # if !HAVE_CXX_STD_11 # error HAVE_CXX_STD_11 is false with CXX_STANDARD == 11 # endif -# if HAVE_CXX_STD_14 +# if HAVE_CXX_STD_14 && !defined(ALLOW_LATER_STANDARDS) # error HAVE_CXX_STD_14 is true with CXX_STANDARD == 11 # endif -# if HAVE_CXX_STD_17 +# if HAVE_CXX_STD_17 && !defined(ALLOW_LATER_STANDARDS) # error HAVE_CXX_STD_17 is true with CXX_STANDARD == 11 # endif #endif ----------------------------------------------------------------------- Summary of changes: Source/cmGeneratorExpressionNode.cxx | 137 ++++++++++++++++++----------------- Source/cmMakefile.cxx | 14 ++++ Tests/CompileFeatures/CMakeLists.txt | 4 +- Tests/CompileFeatures/genex_test.cpp | 4 +- 4 files changed, 87 insertions(+), 72 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Feb 28 11:53:03 2019 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 28 Feb 2019 11:53:03 -0500 (EST) Subject: [Cmake-commits] CMake branch, master, updated. v3.14.0-rc2-299-gd84fb10 Message-ID: <20190228165303.64B1511344A@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 d84fb10034fc7371474c3d1413e78c317f743833 (commit) via 95222584ee2a2ef7874c4eaf9cb20733fa347ad8 (commit) via ce4eec97af00d14c9a57c0ac4e6762c0a4edf686 (commit) via d0a328c9f67bb8e267bdeeb1cfa95da41bf7d6b6 (commit) via 5c58a7e4d2eca9aa93518cc567e874fedcdf2a80 (commit) via c29a1d58d9bc80eacfc39bf0fe274cf617444f2d (commit) via dac7e8b833cd2e55e3d17edd9c26c3e06ce6bba1 (commit) via 9636b03cca8b812fa2e33adf9b30ab5268b6eefb (commit) from 6066aa471e28eb3d95b251d4d2a3bf83a31bba4f (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=d84fb10034fc7371474c3d1413e78c317f743833 commit d84fb10034fc7371474c3d1413e78c317f743833 Merge: 9522258 5c58a7e Author: Brad King AuthorDate: Thu Feb 28 16:45:09 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 28 11:46:10 2019 -0500 Merge topic 'ppc64-toc-overflow' 5c58a7e4d2 ppc64: Work around TOC overflow with platform specific linker flags Acked-by: Kitware Robot Merge-request: !3038 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=95222584ee2a2ef7874c4eaf9cb20733fa347ad8 commit 95222584ee2a2ef7874c4eaf9cb20733fa347ad8 Merge: ce4eec9 c29a1d5 Author: Brad King AuthorDate: Thu Feb 28 16:44:40 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 28 11:45:17 2019 -0500 Merge topic 'doc-xref-EXPORT_NAME' c29a1d58d9 Help: Link from install(TARGET) to EXPORT_NAME to rename exported target Acked-by: Kitware Robot Merge-request: !3037 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ce4eec97af00d14c9a57c0ac4e6762c0a4edf686 commit ce4eec97af00d14c9a57c0ac4e6762c0a4edf686 Merge: d0a328c dac7e8b Author: Brad King AuthorDate: Thu Feb 28 16:44:29 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 28 11:44:35 2019 -0500 Merge topic 'doc-EXPORT_NAME' dac7e8b833 Help: Link from EXPORT_NAME to relevant export commands Acked-by: Kitware Robot Merge-request: !3033 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d0a328c9f67bb8e267bdeeb1cfa95da41bf7d6b6 commit d0a328c9f67bb8e267bdeeb1cfa95da41bf7d6b6 Merge: 6066aa4 9636b03 Author: Brad King AuthorDate: Thu Feb 28 16:43:30 2019 +0000 Commit: Kitware Robot CommitDate: Thu Feb 28 11:43:39 2019 -0500 Merge topic 'refactor-handle-path-command' 9636b03cca cmFileCommand: Refactor HandleCMakePathCommand Acked-by: Kitware Robot Merge-request: !2960 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5c58a7e4d2eca9aa93518cc567e874fedcdf2a80 commit 5c58a7e4d2eca9aa93518cc567e874fedcdf2a80 Author: Chuck Atkins AuthorDate: Wed Feb 27 11:31:57 2019 -0600 Commit: Chuck Atkins CommitDate: Wed Feb 27 13:00:00 2019 -0600 ppc64: Work around TOC overflow with platform specific linker flags diff --git a/CompileFlags.cmake b/CompileFlags.cmake index 5d0e144..c8a039a 100644 --- a/CompileFlags.cmake +++ b/CompileFlags.cmake @@ -44,6 +44,15 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^parisc") endif() endif() +# Workaround for TOC Overflow on ppc64 +if(CMAKE_SYSTEM_NAME STREQUAL "AIX" AND + CMAKE_SYSTEM_PROCESSOR MATCHES "powerpc") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-bbigtoc") +elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND + CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-multi-toc") +endif() + if (CMAKE_CXX_COMPILER_ID STREQUAL SunPro AND NOT DEFINED CMAKE_CXX${CMAKE_CXX_STANDARD}_STANDARD_COMPILE_OPTION) if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.13) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c29a1d58d9bc80eacfc39bf0fe274cf617444f2d commit c29a1d58d9bc80eacfc39bf0fe274cf617444f2d Author: NeroBurner AuthorDate: Wed Feb 27 11:35:02 2019 -0500 Commit: Brad King CommitDate: Wed Feb 27 11:53:02 2019 -0500 Help: Link from install(TARGET) to EXPORT_NAME to rename exported target diff --git a/Help/command/install.rst b/Help/command/install.rst index a0e8c37..8c98b65 100644 --- a/Help/command/install.rst +++ b/Help/command/install.rst @@ -272,6 +272,8 @@ top level: This option associates the installed target files with an export called ````. It must appear before any target options. To actually install the export file itself, call ``install(EXPORT)``, documented below. + See documentation of the :prop_tgt:`EXPORT_NAME` target property to change + the name of the exported target. ``INCLUDES DESTINATION`` This option specifies a list of directories which will be added to the https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=dac7e8b833cd2e55e3d17edd9c26c3e06ce6bba1 commit dac7e8b833cd2e55e3d17edd9c26c3e06ce6bba1 Author: NeroBurner AuthorDate: Wed Feb 27 11:16:46 2019 -0500 Commit: Reinhold Gschweicher CommitDate: Wed Feb 27 17:44:00 2019 +0100 Help: Link from EXPORT_NAME to relevant export commands diff --git a/Help/prop_tgt/EXPORT_NAME.rst b/Help/prop_tgt/EXPORT_NAME.rst index 1b4247c..043c57a 100644 --- a/Help/prop_tgt/EXPORT_NAME.rst +++ b/Help/prop_tgt/EXPORT_NAME.rst @@ -3,6 +3,6 @@ EXPORT_NAME Exported name for target files. -This sets the name for the IMPORTED target generated when it this -target is is exported. If not set, the logical target name is used by -default. +This sets the name for the IMPORTED target generated by the +:command:`install(EXPORT)` and :command:`export` commands. +If not set, the logical target name is used by default. https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9636b03cca8b812fa2e33adf9b30ab5268b6eefb commit 9636b03cca8b812fa2e33adf9b30ab5268b6eefb Author: Artur Ryt AuthorDate: Tue Feb 26 21:25:00 2019 +0100 Commit: Artur Ryt CommitDate: Tue Feb 26 21:39:10 2019 +0100 cmFileCommand: Refactor HandleCMakePathCommand Make use of cmJoin and fresh cmRange::transform to reduce function complexity. Move conversion logic to named functions. diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index 59ef48d..a2018c3 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -2500,44 +2500,43 @@ bool cmFileCommand::HandleRemove(std::vector const& args, return true; } +namespace { +std::string ToNativePath(const std::string& path) +{ + const auto& outPath = cmSystemTools::ConvertToOutputPath(path); + if (outPath.size() > 1 && outPath.front() == '\"' && + outPath.back() == '\"') { + return outPath.substr(1, outPath.size() - 2); + } + return outPath; +} + +std::string ToCMakePath(const std::string& path) +{ + auto temp = path; + cmSystemTools::ConvertToUnixSlashes(temp); + return temp; +} +} + bool cmFileCommand::HandleCMakePathCommand( std::vector const& args, bool nativePath) { - std::vector::const_iterator i = args.begin(); if (args.size() != 3) { this->SetError("FILE([TO_CMAKE_PATH|TO_NATIVE_PATH] path result) must be " "called with exactly three arguments."); return false; } - i++; // Get rid of subcommand #if defined(_WIN32) && !defined(__CYGWIN__) char pathSep = ';'; #else char pathSep = ':'; #endif - std::vector path = cmSystemTools::SplitString(*i, pathSep); - i++; - const char* var = i->c_str(); - std::string value; - for (std::vector::iterator j = path.begin(); j != path.end(); - ++j) { - if (j != path.begin()) { - value += ";"; - } - if (!nativePath) { - cmSystemTools::ConvertToUnixSlashes(*j); - } else { - *j = cmSystemTools::ConvertToOutputPath(*j); - // remove double quotes in the path - std::string& s = *j; + std::vector path = cmSystemTools::SplitString(args[1], pathSep); - if (s.size() > 1 && s.front() == '\"' && s.back() == '\"') { - s = s.substr(1, s.size() - 2); - } - } - value += *j; - } - this->Makefile->AddDefinition(var, value.c_str()); + std::string value = cmJoin( + cmMakeRange(path).transform(nativePath ? ToNativePath : ToCMakePath), ";"); + this->Makefile->AddDefinition(args[2], value.c_str()); return true; } ----------------------------------------------------------------------- Summary of changes: CompileFlags.cmake | 9 +++++++++ Help/command/install.rst | 2 ++ Help/prop_tgt/EXPORT_NAME.rst | 6 +++--- Source/cmFileCommand.cxx | 47 +++++++++++++++++++++---------------------- 4 files changed, 37 insertions(+), 27 deletions(-) hooks/post-receive -- CMake