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 b11e021bed6d406e3a7b9af6f5ef8fa5565881af (commit) via e3a521f02bc1d6353581a1a58ae88bb0a432f165 (commit) via 0d44d48232dcc3074d55d10c483c92109534371e (commit) via eeb5bb7fe1b9f7b6f63f1b6741f5247e4e10de64 (commit) via 69aaf9b63b81ce814573e5065151764959441753 (commit) via d879999534d01451618395749287b5342e60783b (commit) via 17a60e398c8287aaa47d2e424189e8ba4a039aeb (commit) via 8f37b90b58f2874e54958f6e96d5f0de3d92a5ec (commit) via 03f22cd188c8c843ae0aceeedc15fb3655b88573 (commit) via da1dc4e450efa5b65b9476d5cfb063f5e8e776fd (commit) via 95084a313ddcc20a09e88bd85a5b5bc8edd96707 (commit) via 83f2d4838877142f8daada6d84d091f7ad64d38b (commit) via 65ab9ce93882070191ad84fe96239e50d0b62b6e (commit) via 2bd71f6377b493c6feb369f56604e1a16173ad49 (commit) via 0e764082fe5f9d9c0e33244412f0d4a519e4a2e6 (commit) via 4a0f664aafb27a073e0a4856cdff6132f99fe627 (commit) from 14553ab64b73b52e256f75c6aa5e9c3cdbb2eba6 (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=b11e021bed6d406e3a7b9af6f5ef8fa5565881af commit b11e021bed6d406e3a7b9af6f5ef8fa5565881af Merge: e3a521f 4a0f664 Author: Brad King <brad.k...@kitware.com> AuthorDate: Thu Aug 30 13:24:23 2018 +0000 Commit: Kitware Robot <kwro...@kitware.com> CommitDate: Thu Aug 30 09:24:31 2018 -0400 Merge topic 'cpack-ext-stage-and-run' 4a0f664aaf CPackExt: Add CPACK_EXT_ENABLE_STAGING and CPACK_EXT_PACKAGE_SCRIPT Acked-by: Kitware Robot <kwro...@kitware.com> Merge-request: !2272 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e3a521f02bc1d6353581a1a58ae88bb0a432f165 commit e3a521f02bc1d6353581a1a58ae88bb0a432f165 Merge: 0d44d48 03f22cd Author: Brad King <brad.k...@kitware.com> AuthorDate: Thu Aug 30 13:23:34 2018 +0000 Commit: Kitware Robot <kwro...@kitware.com> CommitDate: Thu Aug 30 09:23:39 2018 -0400 Merge topic 'FindPackageModeMakefileTest-use-explicit-linkage' 03f22cd188 FindPackageModeMakefileTest: Explicitly use C linkage Acked-by: Kitware Robot <kwro...@kitware.com> Merge-request: !2328 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0d44d48232dcc3074d55d10c483c92109534371e commit 0d44d48232dcc3074d55d10c483c92109534371e Merge: eeb5bb7 da1dc4e Author: Brad King <brad.k...@kitware.com> AuthorDate: Thu Aug 30 13:22:30 2018 +0000 Commit: Kitware Robot <kwro...@kitware.com> CommitDate: Thu Aug 30 09:22:35 2018 -0400 Merge topic 'libarchive-bump-minimum-version' da1dc4e450 libarchive: Bump the minimum version from 3.0.0 to 3.1.0 Acked-by: Kitware Robot <kwro...@kitware.com> Merge-request: !2327 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=eeb5bb7fe1b9f7b6f63f1b6741f5247e4e10de64 commit eeb5bb7fe1b9f7b6f63f1b6741f5247e4e10de64 Merge: 69aaf9b 83f2d48 Author: Brad King <brad.k...@kitware.com> AuthorDate: Thu Aug 30 13:21:24 2018 +0000 Commit: Kitware Robot <kwro...@kitware.com> CommitDate: Thu Aug 30 09:21:31 2018 -0400 Merge topic 'cmake_lang_compiler_predefines' 83f2d48388 Respect CMAKE_<LANG>_COMPILER_ARG1 in CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND Acked-by: Kitware Robot <kwro...@kitware.com> Merge-request: !2316 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=69aaf9b63b81ce814573e5065151764959441753 commit 69aaf9b63b81ce814573e5065151764959441753 Merge: d879999 95084a3 Author: Brad King <brad.k...@kitware.com> AuthorDate: Thu Aug 30 13:19:03 2018 +0000 Commit: Kitware Robot <kwro...@kitware.com> CommitDate: Thu Aug 30 09:19:40 2018 -0400 Merge topic 'cstr-remove' 95084a313d cmVisualStudio10TargetGenerator: clean up c_str()s Acked-by: Kitware Robot <kwro...@kitware.com> Merge-request: !2322 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d879999534d01451618395749287b5342e60783b commit d879999534d01451618395749287b5342e60783b Merge: 17a60e3 65ab9ce Author: Brad King <brad.k...@kitware.com> AuthorDate: Thu Aug 30 13:18:52 2018 +0000 Commit: Kitware Robot <kwro...@kitware.com> CommitDate: Thu Aug 30 09:18:58 2018 -0400 Merge topic 'genex-evaluate-stdstring' 65ab9ce938 Genex: Return Evaluate results as const std::string& Acked-by: Kitware Robot <kwro...@kitware.com> Merge-request: !2314 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=17a60e398c8287aaa47d2e424189e8ba4a039aeb commit 17a60e398c8287aaa47d2e424189e8ba4a039aeb Merge: 8f37b90 2bd71f6 Author: Brad King <brad.k...@kitware.com> AuthorDate: Thu Aug 30 13:17:39 2018 +0000 Commit: Kitware Robot <kwro...@kitware.com> CommitDate: Thu Aug 30 09:17:47 2018 -0400 Merge topic 'remove-lua-extra-paths' 2bd71f6377 FindLua: Remove manually specified additional paths Acked-by: Kitware Robot <kwro...@kitware.com> Acked-by: Rolf Eike Beer <e...@sf-mail.de> Merge-request: !2321 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8f37b90b58f2874e54958f6e96d5f0de3d92a5ec commit 8f37b90b58f2874e54958f6e96d5f0de3d92a5ec Merge: 14553ab 0e76408 Author: Brad King <brad.k...@kitware.com> AuthorDate: Thu Aug 30 09:15:06 2018 -0400 Commit: Brad King <brad.k...@kitware.com> CommitDate: Thu Aug 30 09:15:06 2018 -0400 Merge branch 'release-3.12' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=03f22cd188c8c843ae0aceeedc15fb3655b88573 commit 03f22cd188c8c843ae0aceeedc15fb3655b88573 Author: Chuck Atkins <chuck.atk...@kitware.com> AuthorDate: Wed Aug 29 13:02:09 2018 -0400 Commit: Chuck Atkins <chuck.atk...@kitware.com> CommitDate: Wed Aug 29 13:02:09 2018 -0400 FindPackageModeMakefileTest: Explicitly use C linkage This explicitly uses C linkage for the library code used by the test to work around some compilers (Solaris Studio 12.4) that implicitly assume incorrect linkage information. Since something else entirely is being tested here, this allows the test to proceed as needed on the affected platforms. diff --git a/Tests/FindPackageModeMakefileTest/foo.cpp b/Tests/FindPackageModeMakefileTest/foo.cpp index 6aea226..7cb9381 100644 --- a/Tests/FindPackageModeMakefileTest/foo.cpp +++ b/Tests/FindPackageModeMakefileTest/foo.cpp @@ -1,3 +1,5 @@ +#include "foo.h" + int foo() { return 1477; diff --git a/Tests/FindPackageModeMakefileTest/foo.h b/Tests/FindPackageModeMakefileTest/foo.h index 4ec598a..7051eda 100644 --- a/Tests/FindPackageModeMakefileTest/foo.h +++ b/Tests/FindPackageModeMakefileTest/foo.h @@ -1,6 +1,14 @@ #ifndef FOO_H #define FOO_H +#ifdef __cplusplus +extern "C" { +#endif + int foo(); +#ifdef __cplusplus +} // extern "C" +#endif + #endif https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=da1dc4e450efa5b65b9476d5cfb063f5e8e776fd commit da1dc4e450efa5b65b9476d5cfb063f5e8e776fd Author: Chuck Atkins <chuck.atk...@kitware.com> AuthorDate: Wed Aug 29 11:20:11 2018 -0400 Commit: Chuck Atkins <chuck.atk...@kitware.com> CommitDate: Wed Aug 29 11:20:11 2018 -0400 libarchive: Bump the minimum version from 3.0.0 to 3.1.0 cmArchiveWrite uses the gzip:timestamp write filter option which was not available until v3.1.0. diff --git a/CMakeLists.txt b/CMakeLists.txt index 1fcd8f8..7f16e79 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -498,7 +498,7 @@ macro (CMAKE_BUILD_UTILITIES) #--------------------------------------------------------------------- # Build or use system libarchive for CMake and CTest. if(CMAKE_USE_SYSTEM_LIBARCHIVE) - find_package(LibArchive 3.0.0) + find_package(LibArchive 3.1.0) if(NOT LibArchive_FOUND) message(FATAL_ERROR "CMAKE_USE_SYSTEM_LIBARCHIVE is ON but LibArchive is not found!") endif() https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=95084a313ddcc20a09e88bd85a5b5bc8edd96707 commit 95084a313ddcc20a09e88bd85a5b5bc8edd96707 Author: Vitaly Stakhovsky <vvs31...@gitlab.org> AuthorDate: Tue Aug 28 14:41:19 2018 -0400 Commit: Vitaly Stakhovsky <vvs31...@gitlab.org> CommitDate: Tue Aug 28 14:41:19 2018 -0400 cmVisualStudio10TargetGenerator: clean up c_str()s diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index abd0416..d9f1942 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -369,7 +369,7 @@ void cmVisualStudio10TargetGenerator::Generate() path += "/"; path += this->Name; path += ProjectFileExtension; - cmGeneratedFileStream BuildFileStream(path.c_str()); + cmGeneratedFileStream BuildFileStream(path); const std::string PathToProjectFile = path; BuildFileStream.SetCopyIfDifferent(true); @@ -1398,7 +1398,7 @@ void cmVisualStudio10TargetGenerator::WriteGroups() path += computeProjectFileExtension(this->GeneratorTarget, *this->Configurations.begin()); path += ".filters"; - cmGeneratedFileStream fout(path.c_str()); + cmGeneratedFileStream fout(path); fout.SetCopyIfDifferent(true); char magic[] = { char(0xEF), char(0xBB), char(0xBF) }; fout.write(magic, 3); @@ -1886,7 +1886,7 @@ void cmVisualStudio10TargetGenerator::WriteSource(Elem& e2, } } ConvertToWindowsSlash(sourceFile); - e2.StartElement(tool.c_str()); + e2.StartElement(tool); e2.Attribute("Include", sourceFile); ToolSource toolSource = { sf, forceRelative }; @@ -4152,7 +4152,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWP80(Elem& e1) std::string targetNameXML = cmVS10EscapeXML(this->GeneratorTarget->GetName()); - cmGeneratedFileStream fout(manifestFile.c_str()); + cmGeneratedFileStream fout(manifestFile); fout.SetCopyIfDifferent(true); /* clang-format off */ @@ -4235,7 +4235,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWP81(Elem& e1) std::string targetNameXML = cmVS10EscapeXML(this->GeneratorTarget->GetName()); - cmGeneratedFileStream fout(manifestFile.c_str()); + cmGeneratedFileStream fout(manifestFile); fout.SetCopyIfDifferent(true); /* clang-format off */ @@ -4298,7 +4298,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWS80(Elem& e1) std::string targetNameXML = cmVS10EscapeXML(this->GeneratorTarget->GetName()); - cmGeneratedFileStream fout(manifestFile.c_str()); + cmGeneratedFileStream fout(manifestFile); fout.SetCopyIfDifferent(true); /* clang-format off */ @@ -4353,7 +4353,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWS81(Elem& e1) std::string targetNameXML = cmVS10EscapeXML(this->GeneratorTarget->GetName()); - cmGeneratedFileStream fout(manifestFile.c_str()); + cmGeneratedFileStream fout(manifestFile); fout.SetCopyIfDifferent(true); /* clang-format off */ @@ -4413,7 +4413,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWS10_0(Elem& e1) std::string targetNameXML = cmVS10EscapeXML(this->GeneratorTarget->GetName()); - cmGeneratedFileStream fout(manifestFile.c_str()); + cmGeneratedFileStream fout(manifestFile); fout.SetCopyIfDifferent(true); /* clang-format off */ https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=83f2d4838877142f8daada6d84d091f7ad64d38b commit 83f2d4838877142f8daada6d84d091f7ad64d38b Author: Sebastian Holtermann <sebh...@xwmw.org> AuthorDate: Mon Aug 27 15:13:13 2018 +0200 Commit: Sebastian Holtermann <sebh...@xwmw.org> CommitDate: Tue Aug 28 20:07:53 2018 +0200 Respect CMAKE_<LANG>_COMPILER_ARG1 in CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND AUTOMOC used to fail to generate ``moc_predefs.h`` when ``ccache`` was used as a compiler starter by e.g. configuring a project with the environment variable CXX="ccache g++". The reason was that ``CMAKE_<LANG>_COMPILER_ARG1`` wasn't respected in the definition of ``CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND`` for various compilers. This is fixed by this patch. Fixes #17275. diff --git a/Modules/Compiler/GNU.cmake b/Modules/Compiler/GNU.cmake index 9f4c8d1..4491d4b 100644 --- a/Modules/Compiler/GNU.cmake +++ b/Modules/Compiler/GNU.cmake @@ -90,5 +90,11 @@ macro(__compiler_gnu lang) ) endif() - set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}" "-dM" "-E" "-c" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") + set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}") + if(CMAKE_${lang}_COMPILER_ARG1) + separate_arguments(_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_${lang}_COMPILER_ARG1}") + list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND ${_COMPILER_ARGS}) + unset(_COMPILER_ARGS) + endif() + list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-dM" "-E" "-c" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") endmacro() diff --git a/Modules/Compiler/Intel.cmake b/Modules/Compiler/Intel.cmake index 635ac4d..f2f16e0 100644 --- a/Modules/Compiler/Intel.cmake +++ b/Modules/Compiler/Intel.cmake @@ -25,6 +25,12 @@ else() string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O3") string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -g") - set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}" "-QdM" "-P" "-Za" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") + set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}") + if(CMAKE_${lang}_COMPILER_ARG1) + separate_arguments(_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_${lang}_COMPILER_ARG1}") + list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND ${_COMPILER_ARGS}) + unset(_COMPILER_ARGS) + endif() + list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-QdM" "-P" "-Za" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") endmacro() endif() diff --git a/Modules/Compiler/QCC.cmake b/Modules/Compiler/QCC.cmake index 9f2b735..9ba9900 100644 --- a/Modules/Compiler/QCC.cmake +++ b/Modules/Compiler/QCC.cmake @@ -19,7 +19,13 @@ macro(__compiler_qcc lang) set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE NO) set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER NO) - set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}" "-Wp,-dM" "-E" "-c" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") + set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}") + if(CMAKE_${lang}_COMPILER_ARG1) + separate_arguments(_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_${lang}_COMPILER_ARG1}") + list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND ${_COMPILER_ARGS}) + unset(_COMPILER_ARGS) + endif() + list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-Wp,-dM" "-E" "-c" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") unset(CMAKE_${lang}_COMPILE_OPTIONS_IPO) unset(CMAKE_${lang}_ARCHIVE_CREATE_IPO) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=65ab9ce93882070191ad84fe96239e50d0b62b6e commit 65ab9ce93882070191ad84fe96239e50d0b62b6e Author: Vitaly Stakhovsky <vvs31...@gitlab.org> AuthorDate: Sat Aug 25 19:57:00 2018 -0400 Commit: Brad King <brad.k...@kitware.com> CommitDate: Tue Aug 28 13:56:29 2018 -0400 Genex: Return Evaluate results as const std::string& Also remove unused overloads. diff --git a/Source/cmGeneratorExpression.cxx b/Source/cmGeneratorExpression.cxx index b1b2b88..6823cd5 100644 --- a/Source/cmGeneratorExpression.cxx +++ b/Source/cmGeneratorExpression.cxx @@ -386,11 +386,11 @@ void cmCompiledGeneratorExpression::GetMaxLanguageStandard( } } -const char* cmGeneratorExpressionInterpreter::Evaluate( +const std::string& cmGeneratorExpressionInterpreter::Evaluate( const char* expression, const std::string& property) { if (this->Target.empty()) { - return this->EvaluateExpression(expression).c_str(); + return this->EvaluateExpression(expression); } // Specify COMPILE_OPTIONS to DAGchecker, same semantic as COMPILE_FLAGS @@ -398,5 +398,5 @@ const char* cmGeneratorExpressionInterpreter::Evaluate( this->Target, property == "COMPILE_FLAGS" ? "COMPILE_OPTIONS" : property, nullptr, nullptr); - return this->EvaluateExpression(expression, &dagChecker).c_str(); + return this->EvaluateExpression(expression, &dagChecker); } diff --git a/Source/cmGeneratorExpression.h b/Source/cmGeneratorExpression.h index 1ceb7da..2b7df91 100644 --- a/Source/cmGeneratorExpression.h +++ b/Source/cmGeneratorExpression.h @@ -179,17 +179,10 @@ public: { } - const char* Evaluate(const char* expression) - { - return this->EvaluateExpression(expression).c_str(); - } - const char* Evaluate(const std::string& expression) - { - return this->Evaluate(expression.c_str()); - } - const char* Evaluate(const char* expression, const std::string& property); - const char* Evaluate(const std::string& expression, - const std::string& property) + const std::string& Evaluate(const char* expression, + const std::string& property); + const std::string& Evaluate(const std::string& expression, + const std::string& property) { return this->Evaluate(expression.c_str(), property); } diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index 042ce41..37536fc 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -762,9 +762,10 @@ public: using cmGeneratorExpressionInterpreter::Evaluate; - const char* Evaluate(const char* expression, const std::string& property) + const std::string& Evaluate(const char* expression, + const std::string& property) { - const char* processed = + const std::string& processed = this->cmGeneratorExpressionInterpreter::Evaluate(expression, property); if (this->GetCompiledGeneratorExpression() .GetHadContextSensitiveCondition()) { @@ -821,7 +822,8 @@ cmXCodeObject* cmGlobalXCodeGenerator::CreateXCodeSourceFile( const std::string COMPILE_DEFINITIONS("COMPILE_DEFINITIONS"); if (const char* compile_defs = sf->GetProperty(COMPILE_DEFINITIONS)) { this->AppendDefines( - flagsBuild, genexInterpreter.Evaluate(compile_defs, COMPILE_DEFINITIONS), + flagsBuild, + genexInterpreter.Evaluate(compile_defs, COMPILE_DEFINITIONS).c_str(), true); } if (!flagsBuild.IsEmpty()) { diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 79baca6..e8cf255 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -445,7 +445,7 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( // Add flags from source file properties. const std::string COMPILE_FLAGS("COMPILE_FLAGS"); if (const char* cflags = source.GetProperty(COMPILE_FLAGS)) { - const char* evaluatedFlags = + const std::string& evaluatedFlags = genexInterpreter.Evaluate(cflags, COMPILE_FLAGS); this->LocalGenerator->AppendFlags(flags, evaluatedFlags); *this->FlagFileStream << "# Custom flags: " << relativeObj @@ -455,7 +455,7 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( const std::string COMPILE_OPTIONS("COMPILE_OPTIONS"); if (const char* coptions = source.GetProperty(COMPILE_OPTIONS)) { - const char* evaluatedOptions = + const std::string& evaluatedOptions = genexInterpreter.Evaluate(coptions, COMPILE_OPTIONS); this->LocalGenerator->AppendCompileOptions(flags, evaluatedOptions); *this->FlagFileStream << "# Custom options: " << relativeObj @@ -468,7 +468,7 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( const std::string INCLUDE_DIRECTORIES("INCLUDE_DIRECTORIES"); if (const char* cincludes = source.GetProperty(INCLUDE_DIRECTORIES)) { - const char* evaluatedIncludes = + const std::string& evaluatedIncludes = genexInterpreter.Evaluate(cincludes, INCLUDE_DIRECTORIES); this->LocalGenerator->AppendIncludeDirectories(includes, evaluatedIncludes, source); @@ -484,7 +484,7 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( // Add source-specific preprocessor definitions. const std::string COMPILE_DEFINITIONS("COMPILE_DEFINITIONS"); if (const char* compile_defs = source.GetProperty(COMPILE_DEFINITIONS)) { - const char* evaluatedDefs = + const std::string& evaluatedDefs = genexInterpreter.Evaluate(compile_defs, COMPILE_DEFINITIONS); this->LocalGenerator->AppendDefines(defines, evaluatedDefs); *this->FlagFileStream << "# Custom defines: " << relativeObj @@ -494,7 +494,7 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( std::string defPropName = "COMPILE_DEFINITIONS_"; defPropName += configUpper; if (const char* config_compile_defs = source.GetProperty(defPropName)) { - const char* evaluatedDefs = + const std::string& evaluatedDefs = genexInterpreter.Evaluate(config_compile_defs, COMPILE_DEFINITIONS); this->LocalGenerator->AppendDefines(defines, evaluatedDefs); *this->FlagFileStream << "# Custom defines: " << relativeObj << "_DEFINES_" diff --git a/Source/cmServerProtocol.cxx b/Source/cmServerProtocol.cxx index f0a5e26..8fafeea 100644 --- a/Source/cmServerProtocol.cxx +++ b/Source/cmServerProtocol.cxx @@ -728,7 +728,7 @@ static Json::Value DumpSourceFilesList( const std::string INCLUDE_DIRECTORIES("INCLUDE_DIRECTORIES"); if (const char* cincludes = file->GetProperty(INCLUDE_DIRECTORIES)) { - const char* evaluatedIncludes = + const std::string& evaluatedIncludes = genexInterpreter.Evaluate(cincludes, INCLUDE_DIRECTORIES); lg->AppendIncludeDirectories(includes, evaluatedIncludes, *file); https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2bd71f6377b493c6feb369f56604e1a16173ad49 commit 2bd71f6377b493c6feb369f56604e1a16173ad49 Author: Chuck Atkins <chuck.atk...@kitware.com> AuthorDate: Tue Aug 28 13:25:46 2018 -0400 Commit: Chuck Atkins <chuck.atk...@kitware.com> CommitDate: Tue Aug 28 13:27:35 2018 -0400 FindLua: Remove manually specified additional paths The additional paths specified are already accounted for in the appropriate Platform files. diff --git a/Modules/FindLua.cmake b/Modules/FindLua.cmake index b57a46e..e86c15c 100644 --- a/Modules/FindLua.cmake +++ b/Modules/FindLua.cmake @@ -42,13 +42,6 @@ cmake_policy(SET CMP0012 NEW) # For while(TRUE) unset(_lua_include_subdirs) unset(_lua_library_names) unset(_lua_append_versions) -set(_lua_additional_paths - ~/Library/Frameworks - /Library/Frameworks - /sw # Fink - /opt/local # DarwinPorts - /opt/csw # Blastwave - /opt) # this is a function only to have all the variables inside go away automatically function(_lua_get_versions) @@ -161,7 +154,6 @@ function(_lua_find_header) HINTS ENV LUA_DIR PATH_SUFFIXES ${subdir} - PATHS ${_lua_additional_paths} ) if (LUA_INCLUDE_DIR) break() @@ -209,7 +201,6 @@ find_library(LUA_LIBRARY HINTS ENV LUA_DIR PATH_SUFFIXES lib - PATHS ${_lua_additional_paths} ) unset(_lua_library_names) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4a0f664aafb27a073e0a4856cdff6132f99fe627 commit 4a0f664aafb27a073e0a4856cdff6132f99fe627 Author: Nils Gladitz <nilsglad...@gmail.com> AuthorDate: Wed Aug 8 08:24:40 2018 +0200 Commit: Nils Gladitz <nilsglad...@gmail.com> CommitDate: Tue Aug 14 08:37:03 2018 +0200 CPackExt: Add CPACK_EXT_ENABLE_STAGING and CPACK_EXT_PACKAGE_SCRIPT CPACK_EXT_ENABLE_STAGING enables optional staging and CPACK_EXT_PACKAGE_SCRIPT allows to specify an optional script file that can package staged files via an external packaging tool. Issue: #18236 diff --git a/Help/cpack_gen/external.rst b/Help/cpack_gen/external.rst index a69866d..f98e1c9 100644 --- a/Help/cpack_gen/external.rst +++ b/Help/cpack_gen/external.rst @@ -10,19 +10,32 @@ tools. For this reason, CPack provides the "External" generator, which allows external packaging software to take advantage of some of the functionality provided by CPack, such as component installation and the dependency graph. -The CPack External generator doesn't actually package any files. Instead, it -generates a .json file containing the CPack internal metadata, which gives -external software information on how to package the software. This metadata -file contains a list of CPack components and component groups, the various -options passed to :command:`cpack_add_component` and +Integration with External Packaging Tools +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The CPack External generator generates a .json file containing the +CPack internal metadata, which gives external software information +on how to package the software. External packaging software may itself +invoke CPack, consume the generated metadata, +install and package files as required. + +Alternatively CPack can invoke an external packaging software +through an optional custom CMake script in +:variable:`CPACK_EXT_PACKAGE_SCRIPT` instead. + +Staging of installation files may also optionally be +taken care of by the generator when enabled through the +:variable:`CPACK_EXT_ENABLE_STAGING` variable. + +JSON Format +^^^^^^^^^^^ + +The JSON metadata file contains a list of CPack components and component groups, +the various options passed to :command:`cpack_add_component` and :command:`cpack_add_component_group`, the dependencies between the components and component groups, and various other options passed to CPack. -Format -^^^^^^ - -The file produced by the CPack External generator is a .json file with an -object as its root. This root object will always provide two fields: +The JSON's root object will always provide two fields: ``formatVersionMajor`` and ``formatVersionMinor``, which are always integers that describe the output format of the generator. Backwards-compatible changes to the output format (for example, adding a new field that didn't exist before) @@ -247,3 +260,24 @@ Variables specific to CPack External generator If an invalid version is encountered in ``CPACK_EXT_REQUESTED_VERSIONS`` (one that doesn't match ``major.minor``, where ``major`` and ``minor`` are integers), it is ignored. + +.. variable:: CPACK_EXT_ENABLE_STAGING + + This variable can be set to true to enable optional installation + into a temporary staging area which can then be picked up + and packaged by an external packaging tool. + The top level directory used by CPack for the current packaging + task is contained in ``CPACK_TOPLEVEL_DIRECTORY``. + It is automatically cleaned up on each run before packaging is initiated + and can be used for custom temporary files required by + the external packaging tool. + It also contains the staging area ``CPACK_TEMPORARY_DIRECTORY`` + into which CPack performs the installation when staging is enabled. + +.. variable:: CPACK_EXT_PACKAGE_SCRIPT + + This variable can optionally specify the full path to + a CMake script file to be run as part of the CPack invocation. + It is invoked after (optional) staging took place and may + run an external packaging tool. The script has access to + the variables defined by the CPack config file. diff --git a/Source/CPack/cmCPackExtGenerator.cxx b/Source/CPack/cmCPackExtGenerator.cxx index c36b098..4c560b9 100644 --- a/Source/CPack/cmCPackExtGenerator.cxx +++ b/Source/CPack/cmCPackExtGenerator.cxx @@ -5,6 +5,7 @@ #include "cmAlgorithms.h" #include "cmCPackComponentGroup.h" #include "cmCPackLog.h" +#include "cmMakefile.h" #include "cmSystemTools.h" #include "cm_jsoncpp_value.h" @@ -56,6 +57,23 @@ int cmCPackExtGenerator::PackageFiles() return 0; } + const char* packageScript = this->GetOption("CPACK_EXT_PACKAGE_SCRIPT"); + if (packageScript && *packageScript) { + if (!cmSystemTools::FileIsFullPath(packageScript)) { + cmCPackLogger( + cmCPackLog::LOG_ERROR, + "CPACK_EXT_PACKAGE_SCRIPT does not contain a full file path" + << std::endl); + return 0; + } + + int res = this->MakefileMap->ReadListFile(packageScript); + + if (cmSystemTools::GetErrorOccuredFlag() || !res) { + return 0; + } + } + return 1; } @@ -67,16 +85,22 @@ bool cmCPackExtGenerator::SupportsComponentInstallation() const int cmCPackExtGenerator::InstallProjectViaInstallCommands( bool setDestDir, const std::string& tempInstallDirectory) { - (void)setDestDir; - (void)tempInstallDirectory; + if (this->StagingEnabled()) { + return cmCPackGenerator::InstallProjectViaInstallCommands( + setDestDir, tempInstallDirectory); + } + return 1; } int cmCPackExtGenerator::InstallProjectViaInstallScript( bool setDestDir, const std::string& tempInstallDirectory) { - (void)setDestDir; - (void)tempInstallDirectory; + if (this->StagingEnabled()) { + return cmCPackGenerator::InstallProjectViaInstallScript( + setDestDir, tempInstallDirectory); + } + return 1; } @@ -84,9 +108,11 @@ int cmCPackExtGenerator::InstallProjectViaInstalledDirectories( bool setDestDir, const std::string& tempInstallDirectory, const mode_t* default_dir_mode) { - (void)setDestDir; - (void)tempInstallDirectory; - (void)default_dir_mode; + if (this->StagingEnabled()) { + return cmCPackGenerator::InstallProjectViaInstalledDirectories( + setDestDir, tempInstallDirectory, default_dir_mode); + } + return 1; } @@ -94,10 +120,11 @@ int cmCPackExtGenerator::RunPreinstallTarget( const std::string& installProjectName, const std::string& installDirectory, cmGlobalGenerator* globalGenerator, const std::string& buildConfig) { - (void)installProjectName; - (void)installDirectory; - (void)globalGenerator; - (void)buildConfig; + if (this->StagingEnabled()) { + return cmCPackGenerator::RunPreinstallTarget( + installProjectName, installDirectory, globalGenerator, buildConfig); + } + return 1; } @@ -108,18 +135,21 @@ int cmCPackExtGenerator::InstallCMakeProject( const std::string& installSubDirectory, const std::string& buildConfig, std::string& absoluteDestFiles) { - (void)setDestDir; - (void)installDirectory; - (void)baseTempInstallDirectory; - (void)default_dir_mode; - (void)component; - (void)componentInstall; - (void)installSubDirectory; - (void)buildConfig; - (void)absoluteDestFiles; + if (this->StagingEnabled()) { + return cmCPackGenerator::InstallCMakeProject( + setDestDir, installDirectory, baseTempInstallDirectory, default_dir_mode, + component, componentInstall, installSubDirectory, buildConfig, + absoluteDestFiles); + } + return 1; } +bool cmCPackExtGenerator::StagingEnabled() const +{ + return !cmSystemTools::IsOff(this->GetOption("CPACK_EXT_ENABLE_STAGING")); +} + cmCPackExtGenerator::cmCPackExtVersionGenerator::cmCPackExtVersionGenerator( cmCPackExtGenerator* parent) : Parent(parent) diff --git a/Source/CPack/cmCPackExtGenerator.h b/Source/CPack/cmCPackExtGenerator.h index fa12d7f..103e56d 100644 --- a/Source/CPack/cmCPackExtGenerator.h +++ b/Source/CPack/cmCPackExtGenerator.h @@ -52,6 +52,8 @@ protected: std::string& absoluteDestFiles) override; private: + bool StagingEnabled() const; + class cmCPackExtVersionGenerator { public: diff --git a/Source/CPack/cmCPackGenerator.h b/Source/CPack/cmCPackGenerator.h index c13c649..4755f94 100644 --- a/Source/CPack/cmCPackGenerator.h +++ b/Source/CPack/cmCPackGenerator.h @@ -321,7 +321,6 @@ protected: bool Trace; bool TraceExpand; -private: cmMakefile* MakefileMap; }; diff --git a/Tests/RunCMake/CPack/RunCMakeTest.cmake b/Tests/RunCMake/CPack/RunCMakeTest.cmake index b273c1e..91fed3e 100644 --- a/Tests/RunCMake/CPack/RunCMakeTest.cmake +++ b/Tests/RunCMake/CPack/RunCMakeTest.cmake @@ -35,4 +35,4 @@ run_cpack_test(USER_FILELIST "RPM" false "MONOLITHIC") run_cpack_test(MD5SUMS "DEB" false "MONOLITHIC;COMPONENT") run_cpack_test(CPACK_INSTALL_SCRIPT "ZIP" false "MONOLITHIC") run_cpack_test(DEB_PACKAGE_VERSION_BACK_COMPATIBILITY "DEB" false "MONOLITHIC;COMPONENT") -run_cpack_test_subtests(EXT "none;good;good_multi;bad_major;bad_minor;invalid_good;invalid_bad" "Ext" false "MONOLITHIC;COMPONENT") +run_cpack_test_subtests(EXT "none;good;good_multi;bad_major;bad_minor;invalid_good;invalid_bad;stage_and_package" "Ext" false "MONOLITHIC;COMPONENT") diff --git a/Tests/RunCMake/CPack/tests/EXT/ExpectedFiles.cmake b/Tests/RunCMake/CPack/tests/EXT/ExpectedFiles.cmake index 2634111..91608c9 100644 --- a/Tests/RunCMake/CPack/tests/EXT/ExpectedFiles.cmake +++ b/Tests/RunCMake/CPack/tests/EXT/ExpectedFiles.cmake @@ -1,4 +1,5 @@ -if(RunCMake_SUBTEST_SUFFIX MATCHES "^(none|good(_multi)?|invalid_good)$") +if(RunCMake_SUBTEST_SUFFIX MATCHES "^(none|good(_multi)?|invalid_good)$" + OR RunCMake_SUBTEST_SUFFIX STREQUAL "stage_and_package") set(EXPECTED_FILES_COUNT "1") set(EXPECTED_FILE_CONTENT_1_LIST "/share;/share/cpack-test;/share/cpack-test/f1.txt;/share/cpack-test/f2.txt;/share/cpack-test/f3.txt;/share/cpack-test/f4.txt") else() diff --git a/Tests/RunCMake/CPack/tests/EXT/create_package.cmake b/Tests/RunCMake/CPack/tests/EXT/create_package.cmake new file mode 100644 index 0000000..e308ccb --- /dev/null +++ b/Tests/RunCMake/CPack/tests/EXT/create_package.cmake @@ -0,0 +1,24 @@ +message("This script could run an external packaging tool") + +function(expect_variable VAR) + if(NOT ${VAR}) + message(FATAL_ERROR "${VAR} is unexpectedly not set") + endif() +endfunction() + +function(expect_file FILE) + if(NOT EXISTS "${FILE}") + message(FATAL_ERROR "${FILE} is unexpectedly missing") + endif() +endfunction() + +expect_variable(CPACK_COMPONENTS_ALL) +expect_variable(CPACK_TOPLEVEL_DIRECTORY) +expect_variable(CPACK_TEMPORARY_DIRECTORY) +expect_variable(CPACK_PACKAGE_DIRECTORY) +expect_variable(CPACK_PACKAGE_FILE_NAME) + +expect_file(${CPACK_TEMPORARY_DIRECTORY}/f1/share/cpack-test/f1.txt) +expect_file(${CPACK_TEMPORARY_DIRECTORY}/f2/share/cpack-test/f2.txt) +expect_file(${CPACK_TEMPORARY_DIRECTORY}/f3/share/cpack-test/f3.txt) +expect_file(${CPACK_TEMPORARY_DIRECTORY}/f4/share/cpack-test/f4.txt) diff --git a/Tests/RunCMake/CPack/tests/EXT/stage_and_package-stderr.txt b/Tests/RunCMake/CPack/tests/EXT/stage_and_package-stderr.txt new file mode 100644 index 0000000..40f2743 --- /dev/null +++ b/Tests/RunCMake/CPack/tests/EXT/stage_and_package-stderr.txt @@ -0,0 +1 @@ +^This script could run an external packaging tool$ diff --git a/Tests/RunCMake/CPack/tests/EXT/test.cmake b/Tests/RunCMake/CPack/tests/EXT/test.cmake index 6bd3cb8..976cb6a 100644 --- a/Tests/RunCMake/CPack/tests/EXT/test.cmake +++ b/Tests/RunCMake/CPack/tests/EXT/test.cmake @@ -14,6 +14,9 @@ elseif(RunCMake_SUBTEST_SUFFIX STREQUAL "invalid_good") set(CPACK_EXT_REQUESTED_VERSIONS "1;1.0") elseif(RunCMake_SUBTEST_SUFFIX STREQUAL "invalid_bad") set(CPACK_EXT_REQUESTED_VERSIONS "1") +elseif(RunCMake_SUBTEST_SUFFIX STREQUAL "stage_and_package") + set(CPACK_EXT_ENABLE_STAGING 1) + set(CPACK_EXT_PACKAGE_SCRIPT "${CMAKE_CURRENT_LIST_DIR}/create_package.cmake") endif() file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/f1.txt" test1) ----------------------------------------------------------------------- Summary of changes: CMakeLists.txt | 2 +- Help/cpack_gen/external.rst | 54 +++++++++++++---- Modules/Compiler/GNU.cmake | 8 ++- Modules/Compiler/Intel.cmake | 8 ++- Modules/Compiler/QCC.cmake | 8 ++- Modules/FindLua.cmake | 9 --- Source/CPack/cmCPackExtGenerator.cxx | 70 +++++++++++++++------- Source/CPack/cmCPackExtGenerator.h | 2 + Source/CPack/cmCPackGenerator.h | 1 - Source/cmGeneratorExpression.cxx | 6 +- Source/cmGeneratorExpression.h | 15 ++--- Source/cmGlobalXCodeGenerator.cxx | 8 ++- Source/cmMakefileTargetGenerator.cxx | 10 ++-- Source/cmServerProtocol.cxx | 2 +- Source/cmVisualStudio10TargetGenerator.cxx | 16 ++--- Tests/FindPackageModeMakefileTest/foo.cpp | 2 + Tests/FindPackageModeMakefileTest/foo.h | 8 +++ Tests/RunCMake/CPack/RunCMakeTest.cmake | 2 +- Tests/RunCMake/CPack/tests/EXT/ExpectedFiles.cmake | 3 +- .../RunCMake/CPack/tests/EXT/create_package.cmake | 24 ++++++++ .../CPack/tests/EXT/stage_and_package-stderr.txt | 1 + Tests/RunCMake/CPack/tests/EXT/test.cmake | 3 + 22 files changed, 185 insertions(+), 77 deletions(-) create mode 100644 Tests/RunCMake/CPack/tests/EXT/create_package.cmake create mode 100644 Tests/RunCMake/CPack/tests/EXT/stage_and_package-stderr.txt hooks/post-receive -- CMake _______________________________________________ Cmake-commits mailing list Cmake-commits@cmake.org https://cmake.org/mailman/listinfo/cmake-commits