diff options
48 files changed, 172 insertions, 59 deletions
diff --git a/Help/variable/CMAKE_FIND_LIBRARY_SUFFIXES.rst b/Help/variable/CMAKE_FIND_LIBRARY_SUFFIXES.rst index 4a64e33..c2c2609 100644 --- a/Help/variable/CMAKE_FIND_LIBRARY_SUFFIXES.rst +++ b/Help/variable/CMAKE_FIND_LIBRARY_SUFFIXES.rst @@ -5,5 +5,8 @@ Suffixes to append when looking for libraries. This specifies what suffixes to add to library names when the :command:`find_library` command looks for libraries. On Windows systems this -is typically ``.lib`` and ``.dll``, meaning that when trying to find the -``foo`` library it will look for ``foo.dll`` etc. +is typically ``.lib`` and, depending on the compiler, ``.dll.a``, ``.a`` +(e.g. GCC and Clang), so when it tries to find the ``foo`` library, it will +look for ``[<prefix>]foo.lib`` and/or ``[<prefix>]foo[.dll].a``, depending on +the compiler used and the ``<prefix>`` specified in the +:variable:`CMAKE_FIND_LIBRARY_PREFIXES`. diff --git a/Modules/CMakeASM_NASMInformation.cmake b/Modules/CMakeASM_NASMInformation.cmake index dad2750..a72575b 100644 --- a/Modules/CMakeASM_NASMInformation.cmake +++ b/Modules/CMakeASM_NASMInformation.cmake @@ -35,7 +35,7 @@ if(NOT CMAKE_ASM_NASM_OBJECT_FORMAT) endif() if(NOT CMAKE_ASM_NASM_COMPILE_OBJECT) - set(CMAKE_ASM_NASM_COMPILE_OBJECT "<CMAKE_ASM_NASM_COMPILER> <INCLUDES> <FLAGS> -f ${CMAKE_ASM_NASM_OBJECT_FORMAT} -o <OBJECT> <SOURCE>") + set(CMAKE_ASM_NASM_COMPILE_OBJECT "<CMAKE_ASM_NASM_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -f ${CMAKE_ASM_NASM_OBJECT_FORMAT} -o <OBJECT> <SOURCE>") endif() if(CMAKE_ASM_NASM_COMPILER_ID STREQUAL "NASM") diff --git a/Modules/FindMatlab.cmake b/Modules/FindMatlab.cmake index fdab9e9..0ca593e 100644 --- a/Modules/FindMatlab.cmake +++ b/Modules/FindMatlab.cmake @@ -1572,6 +1572,29 @@ if(_numbers_of_matlab_roots GREATER 0) list(GET _matlab_possible_roots ${_matlab_or_mcr_index} Matlab_Or_MCR) list(GET _matlab_possible_roots ${_list_index} Matlab_VERSION_STRING) list(GET _matlab_possible_roots ${_matlab_root_dir_index} Matlab_ROOT_DIR) + elseif(DEFINED Matlab_FIND_VERSION) + foreach(_matlab_root_index RANGE 1 ${_numbers_of_matlab_roots} 3) + list(GET _matlab_possible_roots ${_matlab_root_index} _matlab_root_version) + if(_matlab_root_version VERSION_GREATER_EQUAL Matlab_FIND_VERSION) + set(_list_index ${_matlab_root_index}) + break() + endif() + endforeach() + + if(_list_index LESS 0) + set(_list_index 1) + endif() + + math(EXPR _matlab_or_mcr_index "${_list_index} - 1") + math(EXPR _matlab_root_dir_index "${_list_index} + 1") + list(GET _matlab_possible_roots ${_matlab_or_mcr_index} Matlab_Or_MCR) + list(GET _matlab_possible_roots ${_list_index} Matlab_VERSION_STRING) + list(GET _matlab_possible_roots ${_matlab_root_dir_index} Matlab_ROOT_DIR) + # adding a warning in case of ambiguity + if(_numbers_of_matlab_roots GREATER 3 AND MATLAB_FIND_DEBUG) + message(WARNING "[MATLAB] Found several distributions of Matlab. Setting the current version to ${Matlab_VERSION_STRING} (located ${Matlab_ROOT_DIR})." + " If this is not the desired behavior, use the EXACT keyword or provide the -DMatlab_ROOT_DIR=... on the command line") + endif() else() list(GET _matlab_possible_roots 0 Matlab_Or_MCR) list(GET _matlab_possible_roots 1 Matlab_VERSION_STRING) diff --git a/Modules/GetPrerequisites.cmake b/Modules/GetPrerequisites.cmake index e90a9b5..53584c6 100644 --- a/Modules/GetPrerequisites.cmake +++ b/Modules/GetPrerequisites.cmake @@ -746,7 +746,7 @@ function(get_prerequisites target prerequisites_var exclude_system recurse exepa set(gp_regex_error "") set(gp_regex_fallback "") set(gp_regex_cmp_count 1) - elseif(gp_tool MATCHES "objdump$") + elseif(gp_tool MATCHES "objdump(\\.exe)?$") set(gp_cmd_args "-p") set(gp_regex "^\t*DLL Name: (.*\\.[Dd][Ll][Ll])${eol_char}$") set(gp_regex_error "") diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 0359ca6..a26f8b2 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,7 +1,7 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 21) -set(CMake_VERSION_PATCH 20210928) +set(CMake_VERSION_PATCH 20211003) #set(CMake_VERSION_RC 0) set(CMake_VERSION_IS_DIRTY 0) diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index bc6abb5..dfd2b6c 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -2425,7 +2425,7 @@ bool cmCTest::SetArgsFromPreset(const std::string& presetName, case cmCMakePresetsFile::TestPreset::OutputOptions::VerbosityEnum:: Extra: this->Impl->ExtraVerbose = true; - // intentional fallthrough + CM_FALLTHROUGH; case cmCMakePresetsFile::TestPreset::OutputOptions::VerbosityEnum:: Verbose: this->Impl->Verbose = true; diff --git a/Source/cmCommand.h b/Source/cmCommand.h index 68c56d9..f5a5190 100644 --- a/Source/cmCommand.h +++ b/Source/cmCommand.h @@ -44,7 +44,7 @@ public: cmMakefile* GetMakefile() { return this->Makefile; } void SetExecutionStatus(cmExecutionStatus* s); - cmExecutionStatus* GetExecutionStatus() { return this->Status; }; + cmExecutionStatus* GetExecutionStatus() { return this->Status; } /** * This is called by the cmMakefile when the command is first diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx index a3e346c..831a81f 100644 --- a/Source/cmComputeLinkInformation.cxx +++ b/Source/cmComputeLinkInformation.cxx @@ -1185,6 +1185,7 @@ bool cmComputeLinkInformation::CheckImplicitDirItem(std::string const& item) this->CMP0060WarnItems.insert(item); } } + CM_FALLTHROUGH; case cmPolicies::OLD: break; case cmPolicies::REQUIRED_ALWAYS: @@ -1454,8 +1455,10 @@ void cmComputeLinkInformation::HandleBadFullItem(std::string const& item, this->Target->GetBacktrace()); } } - case cmPolicies::OLD: + CM_FALLTHROUGH; + case cmPolicies::OLD: // NOLINT(bugprone-branch-clone) // OLD behavior does not warn. + break; case cmPolicies::NEW: // NEW behavior will not get here. break; @@ -1494,6 +1497,7 @@ bool cmComputeLinkInformation::FinishLinkerSearchDirectories() this->CMakeInstance->IssueMessage(MessageType::AUTHOR_WARNING, w.str(), this->Target->GetBacktrace()); } + CM_FALLTHROUGH; case cmPolicies::OLD: // OLD behavior is to add the paths containing libraries with // known full paths as link directories. diff --git a/Source/cmComputeTargetDepends.cxx b/Source/cmComputeTargetDepends.cxx index 2f29610..ef89c8b 100644 --- a/Source/cmComputeTargetDepends.cxx +++ b/Source/cmComputeTargetDepends.cxx @@ -359,6 +359,7 @@ void cmComputeTargetDepends::AddTargetDepend(int depender_index, case cmPolicies::WARN: e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0046) << "\n"; issueMessage = true; + CM_FALLTHROUGH; case cmPolicies::OLD: break; case cmPolicies::NEW: @@ -366,6 +367,7 @@ void cmComputeTargetDepends::AddTargetDepend(int depender_index, case cmPolicies::REQUIRED_ALWAYS: issueMessage = true; messageType = MessageType::FATAL_ERROR; + break; } if (issueMessage) { cmake* cm = this->GlobalGenerator->GetCMakeInstance(); diff --git a/Source/cmConditionEvaluator.cxx b/Source/cmConditionEvaluator.cxx index 913b532..8e479c5 100644 --- a/Source/cmConditionEvaluator.cxx +++ b/Source/cmConditionEvaluator.cxx @@ -117,7 +117,7 @@ bool looksLikeSpecialVariable(const std::string& var, { \ } #else -# define CM_INHERIT_CTOR(Class, Base, Tpl) using Base Tpl ::Base; +# define CM_INHERIT_CTOR(Class, Base, Tpl) using Base Tpl ::Base #endif // BEGIN cmConditionEvaluator::cmArgumentList @@ -447,6 +447,7 @@ bool cmConditionEvaluator::GetBooleanValueWithAutoDereference( "\" appears in a conditional statement. " + cmPolicies::GetRequiredPolicyError(cmPolicies::CMP0012); status = MessageType::FATAL_ERROR; + break; } case cmPolicies::NEW: break; diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx index 02d559b..971c86e 100644 --- a/Source/cmCoreTryCompile.cxx +++ b/Source/cmCoreTryCompile.cxx @@ -626,6 +626,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv, /* clang-format on */ this->Makefile->IssueMessage(MessageType::AUTHOR_WARNING, w.str()); } + CM_FALLTHROUGH; case cmPolicies::OLD: // OLD behavior is to do nothing. break; @@ -663,6 +664,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv, /* clang-format on */ this->Makefile->IssueMessage(MessageType::AUTHOR_WARNING, w.str()); } + CM_FALLTHROUGH; case cmPolicies::OLD: // OLD behavior is to do nothing. break; @@ -878,6 +880,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv, this->Makefile->IssueMessage( MessageType::FATAL_ERROR, cmPolicies::GetRequiredPolicyError(cmPolicies::CMP0067)); + break; case cmPolicies::NEW: // NEW behavior is to honor the language standard variables. // We already initialized honorStandard to true. diff --git a/Source/cmExportCommand.cxx b/Source/cmExportCommand.cxx index 352eaf2..63440a3 100644 --- a/Source/cmExportCommand.cxx +++ b/Source/cmExportCommand.cxx @@ -282,6 +282,7 @@ static bool HandlePackage(std::vector<std::string> const& args, // CMP0090 decides both the default and what variable changes it. switch (mf.GetPolicyStatus(cmPolicies::CMP0090)) { case cmPolicies::WARN: + CM_FALLTHROUGH; case cmPolicies::OLD: // Default is to export, but can be disabled. if (mf.IsOn("CMAKE_EXPORT_NO_PACKAGE_REGISTRY")) { diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx index 9ad8876..e2c54d7 100644 --- a/Source/cmExtraCodeBlocksGenerator.cxx +++ b/Source/cmExtraCodeBlocksGenerator.cxx @@ -396,8 +396,8 @@ void cmExtraCodeBlocksGenerator::CreateNewProjectFile( CbpUnit& cbpUnit = allFiles[fullPath]; cbpUnit.Targets.push_back(target.get()); } - } - default: // intended fallthrough + } break; + default: break; } } diff --git a/Source/cmExtraCodeLiteGenerator.cxx b/Source/cmExtraCodeLiteGenerator.cxx index 549b08b..9e8ac5c 100644 --- a/Source/cmExtraCodeLiteGenerator.cxx +++ b/Source/cmExtraCodeLiteGenerator.cxx @@ -208,7 +208,7 @@ std::string cmExtraCodeLiteGenerator::CollectSourceFiles( case cmStateEnums::MODULE_LIBRARY: { projectType = "Dynamic Library"; } break; - default: // intended fallthrough + default: break; } @@ -233,8 +233,8 @@ std::string cmExtraCodeLiteGenerator::CollectSourceFiles( otherFiles.insert(fullPath); } } - } - default: // intended fallthrough + } break; + default: break; } return projectType; @@ -556,7 +556,8 @@ void cmExtraCodeLiteGenerator::CreateNewProjectFile( case cmStateEnums::SHARED_LIBRARY: case cmStateEnums::MODULE_LIBRARY: visualname = "lib" + targetName; - default: // intended fallthrough + break; + default: break; } xml.Attribute("Name", visualname); diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index 4eb632d..d2341c5 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -640,8 +640,9 @@ bool HandleGlobImpl(std::vector<std::string> const& args, bool recurse, case cmPolicies::NEW: g.RecurseThroughSymlinksOff(); break; - case cmPolicies::OLD: case cmPolicies::WARN: + CM_FALLTHROUGH; + case cmPolicies::OLD: g.RecurseThroughSymlinksOn(); break; } diff --git a/Source/cmFindLibraryCommand.cxx b/Source/cmFindLibraryCommand.cxx index bfa007c..ff04bab 100644 --- a/Source/cmFindLibraryCommand.cxx +++ b/Source/cmFindLibraryCommand.cxx @@ -247,7 +247,7 @@ struct cmFindLibraryHelper cmStrCat(this->PrefixRegexStr, name, this->SuffixRegexStr); this->DebugSearches.FailedAt(path, regexName); } - }; + } void DebugLibraryFound(std::string const& name, std::string const& path) { @@ -256,7 +256,7 @@ struct cmFindLibraryHelper cmStrCat(this->PrefixRegexStr, name, this->SuffixRegexStr); this->DebugSearches.FoundAt(path, regexName); } - }; + } }; namespace { diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index ef1f871..8033ef5 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -1137,6 +1137,7 @@ bool cmGeneratorTarget::IsInBuildSystem() const if (!this->SourceEntries.empty()) { return true; } + break; case cmStateEnums::UNKNOWN_LIBRARY: break; } @@ -2558,6 +2559,7 @@ public: } break; case cmPolicies::OLD: noMessage = true; + break; case cmPolicies::REQUIRED_IF_USED: case cmPolicies::REQUIRED_ALWAYS: case cmPolicies::NEW: @@ -3267,6 +3269,7 @@ void cmGeneratorTarget::AddExplicitLanguageFlags(std::string& flags, switch (this->GetPolicyStatusCMP0119()) { case cmPolicies::WARN: + CM_FALLTHROUGH; case cmPolicies::OLD: // The OLD behavior is to not add explicit language flags. return; @@ -3565,6 +3568,7 @@ void processIncludeDirectories(cmGeneratorTarget const* tgt, } break; case cmPolicies::OLD: noMessage = true; + break; case cmPolicies::REQUIRED_IF_USED: case cmPolicies::REQUIRED_ALWAYS: case cmPolicies::NEW: @@ -7433,6 +7437,7 @@ std::string cmGeneratorTarget::CheckCMP0004(std::string const& item) const cm->IssueMessage(MessageType::AUTHOR_WARNING, w.str(), this->GetBacktrace()); } + CM_FALLTHROUGH; case cmPolicies::OLD: break; case cmPolicies::NEW: { @@ -7670,6 +7675,7 @@ void cmGeneratorTarget::ComputeLinkImplementationLibraries( } break; case cmPolicies::OLD: noMessage = true; + break; case cmPolicies::REQUIRED_IF_USED: case cmPolicies::REQUIRED_ALWAYS: case cmPolicies::NEW: diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index e9ce962..9906963 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -221,7 +221,7 @@ public: { this->PreviousState = target.SetDeviceLink(true); } - ~DeviceLinkSetter() { this->Target.SetDeviceLink(this->PreviousState); }; + ~DeviceLinkSetter() { this->Target.SetDeviceLink(this->PreviousState); } private: cmGeneratorTarget& Target; diff --git a/Source/cmGetTargetPropertyCommand.cxx b/Source/cmGetTargetPropertyCommand.cxx index 9c5a2fc..12c8221 100644 --- a/Source/cmGetTargetPropertyCommand.cxx +++ b/Source/cmGetTargetPropertyCommand.cxx @@ -62,6 +62,7 @@ bool cmGetTargetPropertyCommand(std::vector<std::string> const& args, case cmPolicies::WARN: issueMessage = true; e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0045) << "\n"; + CM_FALLTHROUGH; case cmPolicies::OLD: break; case cmPolicies::REQUIRED_IF_USED: @@ -69,6 +70,7 @@ bool cmGetTargetPropertyCommand(std::vector<std::string> const& args, case cmPolicies::NEW: issueMessage = true; messageType = MessageType::FATAL_ERROR; + break; } if (issueMessage) { e << "get_target_property() called with non-existent target \"" diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 981308e..6dabf637 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -965,6 +965,7 @@ void cmGlobalGenerator::CheckCompilerIdCompatibility( mf->IssueMessage( MessageType::FATAL_ERROR, cmPolicies::GetRequiredPolicyError(cmPolicies::CMP0025)); + break; case cmPolicies::NEW: // NEW behavior is to keep AppleClang. break; @@ -1031,6 +1032,7 @@ void cmGlobalGenerator::CheckCompilerIdCompatibility( mf->IssueMessage( MessageType::FATAL_ERROR, cmPolicies::GetRequiredPolicyError(cmPolicies::CMP0089)); + break; case cmPolicies::NEW: // NEW behavior is to keep AppleClang. break; diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 5c3198e..3f6f55e 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -1263,7 +1263,7 @@ void cmGlobalNinjaGenerator::AppendTargetOutputs( break; } } - // FALLTHROUGH + CM_FALLTHROUGH; case cmStateEnums::EXECUTABLE: { outputs.push_back(this->ConvertToNinjaPath(target->GetFullPath( config, cmStateEnums::RuntimeBinaryArtifact, realname))); @@ -1275,7 +1275,7 @@ void cmGlobalNinjaGenerator::AppendTargetOutputs( break; } } - // FALLTHROUGH + CM_FALLTHROUGH; case cmStateEnums::GLOBAL_TARGET: case cmStateEnums::INTERFACE_LIBRARY: case cmStateEnums::UTILITY: { diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index c3d60b0..f34ef62 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -1097,7 +1097,7 @@ std::string GetSourcecodeValueFromFileExtension( } else if (ext == "h") { sourcecode += ".c.h"; } else if (ext == "hxx" || ext == "hpp" || ext == "txx" || ext == "pch" || - ext == "hh") { + ext == "hh" || ext == "inl") { sourcecode += ".cpp.h"; } else if (ext == "png" || ext == "gif" || ext == "jpg") { keepLastKnownFileType = true; @@ -1756,9 +1756,6 @@ void cmGlobalXCodeGenerator::CreateCustomCommands( if (sourceFile->GetCustomCommand() && visited.insert(sourceFile).second) { commands.push_back(*sourceFile->GetCustomCommand()); - if (this->XcodeBuildSystem >= BuildSystem::Twelve) { - this->CustomCommandRoots[sourceFile].insert(gtgt); - } } } // create custom commands phase diff --git a/Source/cmIncludeCommand.cxx b/Source/cmIncludeCommand.cxx index ce1f030..7b0320c 100644 --- a/Source/cmIncludeCommand.cxx +++ b/Source/cmIncludeCommand.cxx @@ -120,6 +120,7 @@ bool cmIncludeCommand(std::vector<std::string> const& args, case cmPolicies::WARN: e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0024) << "\n"; modal = "should"; + CM_FALLTHROUGH; case cmPolicies::OLD: break; case cmPolicies::REQUIRED_IF_USED: diff --git a/Source/cmInstallCommand.cxx b/Source/cmInstallCommand.cxx index ee77b2c..eaf88f6 100644 --- a/Source/cmInstallCommand.cxx +++ b/Source/cmInstallCommand.cxx @@ -1391,6 +1391,7 @@ bool HandleFilesMode(std::vector<std::string> const& args, case cmPolicies::WARN: e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0062) << "\n"; modal = "should"; + CM_FALLTHROUGH; case cmPolicies::OLD: break; case cmPolicies::REQUIRED_IF_USED: @@ -1398,6 +1399,7 @@ bool HandleFilesMode(std::vector<std::string> const& args, case cmPolicies::NEW: modal = "may"; messageType = MessageType::FATAL_ERROR; + break; } if (modal) { e << "The file\n " << file diff --git a/Source/cmInstallSubdirectoryGenerator.cxx b/Source/cmInstallSubdirectoryGenerator.cxx index 794694e..0a8e065 100644 --- a/Source/cmInstallSubdirectoryGenerator.cxx +++ b/Source/cmInstallSubdirectoryGenerator.cxx @@ -57,6 +57,7 @@ void cmInstallSubdirectoryGenerator::GenerateScript(std::ostream& os) this->LocalGenerator->GetPolicyStatus(cmPolicies::CMP0082); switch (status) { case cmPolicies::WARN: + CM_FALLTHROUGH; case cmPolicies::OLD: // OLD behavior is handled in cmLocalGenerator::GenerateInstallRules() break; diff --git a/Source/cmLinkDirectoriesCommand.cxx b/Source/cmLinkDirectoriesCommand.cxx index 2914046..1ec071b 100644 --- a/Source/cmLinkDirectoriesCommand.cxx +++ b/Source/cmLinkDirectoriesCommand.cxx @@ -62,7 +62,7 @@ static void AddLinkDir(cmMakefile& mf, std::string const& dir, case cmPolicies::WARN: e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0015); mf.IssueMessage(MessageType::AUTHOR_WARNING, e.str()); - break; + CM_FALLTHROUGH; case cmPolicies::OLD: // OLD behavior does not convert break; diff --git a/Source/cmListCommand.cxx b/Source/cmListCommand.cxx index a1aaee3..7d42fc8 100644 --- a/Source/cmListCommand.cxx +++ b/Source/cmListCommand.cxx @@ -46,7 +46,7 @@ bool GetIndexArg(const std::string& arg, int* idx, cmMakefile& mf) cmStrCat(cmPolicies::GetPolicyWarning(cmPolicies::CMP0121), " Invalid list index \"", arg, "\"."); mf.IssueMessage(MessageType::AUTHOR_WARNING, warn); - break; + CM_FALLTHROUGH; } case cmPolicies::OLD: // OLD behavior is to allow compatibility, so just ignore the diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 966cf28..9b6b9abe 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -3780,8 +3780,9 @@ bool cmLocalGenerator::NeedBackwardsCompatibility_2_4() // variable. switch (this->GetPolicyStatus(cmPolicies::CMP0001)) { case cmPolicies::WARN: - // WARN is just OLD without warning because user code does not - // always affect whether this check is done. + // WARN is just OLD without warning because user code does not + // always affect whether this check is done. + CM_FALLTHROUGH; case cmPolicies::OLD: // Old behavior is to check the variable. break; diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index a43faa7..d337d3e 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -796,8 +796,9 @@ cmLocalNinjaGenerator::MakeCustomCommandGenerators( bool transformDepfile = false; switch (cc.GetCMP0116Status()) { - case cmPolicies::OLD: case cmPolicies::WARN: + CM_FALLTHROUGH; + case cmPolicies::OLD: break; case cmPolicies::REQUIRED_IF_USED: case cmPolicies::REQUIRED_ALWAYS: diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index 14dd0ba..78aa7f9 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -299,7 +299,7 @@ private: cmGeneratorTarget const* target) { return this->CommandsVisited[target]; - }; + } std::map<cmGeneratorTarget const*, std::set<cmSourceFile const*>> CommandsVisited; diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 1744534..a490dac 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -818,6 +818,7 @@ void cmMakefile::EnforceDirectoryLevelRules() const // version. this->GetCMakeInstance()->IssueMessage(MessageType::AUTHOR_WARNING, msg.str(), this->Backtrace); + CM_FALLTHROUGH; case cmPolicies::OLD: // OLD behavior is to use policy version 2.4 set in // cmListFileCache. @@ -829,7 +830,7 @@ void cmMakefile::EnforceDirectoryLevelRules() const this->GetCMakeInstance()->IssueMessage(MessageType::FATAL_ERROR, msg.str(), this->Backtrace); cmSystemTools::SetFatalErrorOccured(); - return; + break; } } } @@ -1001,6 +1002,7 @@ cmTarget* cmMakefile::GetCustomCommandTarget( case cmPolicies::WARN: e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0040) << "\n"; issueMessage = true; + CM_FALLTHROUGH; case cmPolicies::OLD: break; case cmPolicies::NEW: @@ -1008,6 +1010,7 @@ cmTarget* cmMakefile::GetCustomCommandTarget( case cmPolicies::REQUIRED_ALWAYS: issueMessage = true; messageType = MessageType::FATAL_ERROR; + break; } if (issueMessage) { @@ -1751,6 +1754,7 @@ void cmMakefile::ConfigureSubDirectory(cmMakefile* mf) << cmPolicies::GetPolicyWarning(cmPolicies::CMP0014); /* clang-format on */ this->IssueMessage(MessageType::AUTHOR_WARNING, e.str()); + CM_FALLTHROUGH; case cmPolicies::OLD: // OLD behavior does not warn. break; @@ -1761,6 +1765,7 @@ void cmMakefile::ConfigureSubDirectory(cmMakefile* mf) case cmPolicies::NEW: // NEW behavior prints the error. this->IssueMessage(MessageType::FATAL_ERROR, e.str()); + break; } return; } @@ -2781,6 +2786,7 @@ MessageType cmMakefile::ExpandVariablesInStringOld( case cmPolicies::REQUIRED_ALWAYS: error << "\n" << cmPolicies::GetRequiredPolicyError(cmPolicies::CMP0010); + break; case cmPolicies::NEW: // NEW behavior is to report the error. break; @@ -3078,8 +3084,8 @@ MessageType cmMakefile::ExpandVariablesInStringNew( break; } } - // Failed to find a valid @ expansion; treat it as literal. - /* FALLTHROUGH */ + // Failed to find a valid @ expansion; treat it as literal. + CM_FALLTHROUGH; default: { if (!openstack.empty() && !(isalnum(inc) || inc == '_' || inc == '/' || inc == '.' || @@ -4505,7 +4511,8 @@ bool cmMakefile::IgnoreErrorsCMP0061() const bool ignoreErrors = true; switch (this->GetPolicyStatus(cmPolicies::CMP0061)) { case cmPolicies::WARN: - // No warning for this policy! + // No warning for this policy! + CM_FALLTHROUGH; case cmPolicies::OLD: break; case cmPolicies::REQUIRED_IF_USED: diff --git a/Source/cmMakefileProfilingData.cxx b/Source/cmMakefileProfilingData.cxx index 86188db..337f78b 100644 --- a/Source/cmMakefileProfilingData.cxx +++ b/Source/cmMakefileProfilingData.cxx @@ -29,7 +29,7 @@ cmMakefileProfilingData::cmMakefileProfilingData( } this->ProfileStream << "["; -}; +} cmMakefileProfilingData::~cmMakefileProfilingData() noexcept { diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 0cbc741..8edadd3 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -63,6 +63,7 @@ cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmGeneratorTarget* target) } switch (this->GeneratorTarget->GetPolicyStatusCMP0113()) { case cmPolicies::WARN: + CM_FALLTHROUGH; case cmPolicies::OLD: this->CMP0113New = false; break; diff --git a/Source/cmOptionCommand.cxx b/Source/cmOptionCommand.cxx index 2c4a774..ec54fc5 100644 --- a/Source/cmOptionCommand.cxx +++ b/Source/cmOptionCommand.cxx @@ -34,7 +34,7 @@ bool cmOptionCommand(std::vector<std::string> const& args, switch (policyStatus) { case cmPolicies::WARN: checkAndWarn = (existsBeforeSet != nullptr); - break; + CM_FALLTHROUGH; case cmPolicies::OLD: // OLD behavior does not warn. break; diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx index bda2fe5..2b785e1 100644 --- a/Source/cmOutputConverter.cxx +++ b/Source/cmOutputConverter.cxx @@ -19,7 +19,7 @@ bool PathEqOrSubDir(std::string const& a, std::string const& b) { return (cmSystemTools::ComparePath(a, b) || cmSystemTools::IsSubDirectory(a, b)); -}; +} } cmOutputConverter::cmOutputConverter(cmStateSnapshot const& snapshot) diff --git a/Source/cmQtAutoGenGlobalInitializer.h b/Source/cmQtAutoGenGlobalInitializer.h index afcb4a2..3de5c1a 100644 --- a/Source/cmQtAutoGenGlobalInitializer.h +++ b/Source/cmQtAutoGenGlobalInitializer.h @@ -49,7 +49,7 @@ public: std::vector<std::unique_ptr<cmLocalGenerator>> const& localGenerators); ~cmQtAutoGenGlobalInitializer(); - Keywords const& kw() const { return this->Keywords_; }; + Keywords const& kw() const { return this->Keywords_; } bool generate(); diff --git a/Source/cmQtAutoGenInitializer.h b/Source/cmQtAutoGenInitializer.h index e76817b..603c537 100644 --- a/Source/cmQtAutoGenInitializer.h +++ b/Source/cmQtAutoGenInitializer.h @@ -95,7 +95,9 @@ public: GenVarsT(GenT gen) : Gen(gen) - , GenNameUpper(cmQtAutoGen::GeneratorNameUpper(gen)){}; + , GenNameUpper(cmQtAutoGen::GeneratorNameUpper(gen)) + { + } }; /** @param mocExecutable The file path to the moc executable. Will be used as @@ -209,7 +211,9 @@ private: struct MocT : public GenVarsT { MocT() - : GenVarsT(GenT::MOC){}; + : GenVarsT(GenT::MOC) + { + } bool RelaxedMode = false; bool PathPrefix = false; @@ -237,7 +241,9 @@ private: using UiFileT = std::pair<std::string, std::vector<std::string>>; UicT() - : GenVarsT(GenT::UIC){}; + : GenVarsT(GenT::UIC) + { + } std::set<std::string> SkipUi; std::vector<std::string> UiFilesNoOptions; @@ -252,7 +258,9 @@ private: struct RccT : public GenVarsT { RccT() - : GenVarsT(GenT::RCC){}; + : GenVarsT(GenT::RCC) + { + } bool GlobalTarget = false; std::vector<Qrc> Qrcs; diff --git a/Source/cmQtAutoMocUic.cxx b/Source/cmQtAutoMocUic.cxx index 2753fd5..056056c 100644 --- a/Source/cmQtAutoMocUic.cxx +++ b/Source/cmQtAutoMocUic.cxx @@ -310,7 +310,7 @@ public: cmQtAutoMocUicT* Gen() const { return static_cast<cmQtAutoMocUicT*>(this->UserData()); - }; + } // -- Accessors. Only valid during Process() call! Logger const& Log() const { return this->Gen()->Log(); } @@ -346,7 +346,7 @@ public: : JobT(true) { } - void Process() override{}; + void Process() override {} }; /** Generate moc_predefs.h. */ diff --git a/Source/cmState.cxx b/Source/cmState.cxx index 7fbc8f8..e79949d 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -453,7 +453,7 @@ void cmState::AddDisallowedCommand(std::string const& name, case cmPolicies::WARN: mf.IssueMessage(MessageType::AUTHOR_WARNING, cmPolicies::GetPolicyWarning(policy)); - break; + CM_FALLTHROUGH; case cmPolicies::OLD: break; case cmPolicies::REQUIRED_IF_USED: diff --git a/Source/cmStringCommand.cxx b/Source/cmStringCommand.cxx index 1cb6193..f44fcf7 100644 --- a/Source/cmStringCommand.cxx +++ b/Source/cmStringCommand.cxx @@ -1054,7 +1054,7 @@ Json::Value& ResolvePath(Json::Value& json, Args path) } } return *search; -}; +} Json::Value ReadJson(const std::string& jsonstr) { diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 08734b4..97d60cf 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -113,12 +113,14 @@ cmValue cmTargetPropertyComputer::GetSources<cmTarget>( case cmPolicies::WARN: e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0051) << "\n"; noMessage = false; + CM_FALLTHROUGH; case cmPolicies::OLD: break; case cmPolicies::REQUIRED_ALWAYS: case cmPolicies::REQUIRED_IF_USED: case cmPolicies::NEW: addContent = true; + break; } if (!noMessage) { e << "Target \"" << tgt->GetName() diff --git a/Source/cmTargetLinkLibrariesCommand.cxx b/Source/cmTargetLinkLibrariesCommand.cxx index d39824b..e15c941 100644 --- a/Source/cmTargetLinkLibrariesCommand.cxx +++ b/Source/cmTargetLinkLibrariesCommand.cxx @@ -143,6 +143,7 @@ bool cmTargetLinkLibrariesCommand(std::vector<std::string> const& args, case cmPolicies::WARN: e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0039) << "\n"; modal = "should"; + CM_FALLTHROUGH; case cmPolicies::OLD: break; case cmPolicies::REQUIRED_ALWAYS: @@ -150,6 +151,7 @@ bool cmTargetLinkLibrariesCommand(std::vector<std::string> const& args, case cmPolicies::NEW: modal = "must"; messageType = MessageType::FATAL_ERROR; + break; } if (modal) { e << "Utility target \"" << target->GetName() << "\" " << modal @@ -395,6 +397,7 @@ bool TLL::HandleLibrary(ProcessingState currentProcessingState, case cmPolicies::WARN: e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0023) << "\n"; modal = "should"; + CM_FALLTHROUGH; case cmPolicies::OLD: break; case cmPolicies::REQUIRED_ALWAYS: @@ -402,6 +405,7 @@ bool TLL::HandleLibrary(ProcessingState currentProcessingState, case cmPolicies::NEW: modal = "must"; messageType = MessageType::FATAL_ERROR; + break; } if (modal) { diff --git a/Source/cmTargetPropertyComputer.cxx b/Source/cmTargetPropertyComputer.cxx index b9c9365..9b94142 100644 --- a/Source/cmTargetPropertyComputer.cxx +++ b/Source/cmTargetPropertyComputer.cxx @@ -21,6 +21,7 @@ bool cmTargetPropertyComputer::HandleLocationPropertyPolicy( case cmPolicies::WARN: e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0026) << "\n"; modal = "should"; + CM_FALLTHROUGH; case cmPolicies::OLD: break; case cmPolicies::REQUIRED_ALWAYS: @@ -28,6 +29,7 @@ bool cmTargetPropertyComputer::HandleLocationPropertyPolicy( case cmPolicies::NEW: modal = "may"; messageType = MessageType::FATAL_ERROR; + break; } if (modal) { diff --git a/Source/cmUVHandlePtr.h b/Source/cmUVHandlePtr.h index 8c5ad59..027d690 100644 --- a/Source/cmUVHandlePtr.h +++ b/Source/cmUVHandlePtr.h @@ -23,7 +23,7 @@ #else -# define CM_INHERIT_CTOR(Class, Base, Tpl) using Base Tpl ::Base; +# define CM_INHERIT_CTOR(Class, Base, Tpl) using Base Tpl ::Base #endif diff --git a/Source/cmWorkerPool.h b/Source/cmWorkerPool.h index ff25526..4035650 100644 --- a/Source/cmWorkerPool.h +++ b/Source/cmWorkerPool.h @@ -87,7 +87,7 @@ public: * Get the user data. * Only valid during the JobT::Process() call! */ - void* UserData() const { return this->Pool_->UserData(); }; + void* UserData() const { return this->Pool_->UserData(); } /** * Get the worker index. @@ -138,7 +138,7 @@ public: { } //! Does nothing - void Process() override{}; + void Process() override {} }; /** diff --git a/Tests/CMakeLib/testUVRAII.cxx b/Tests/CMakeLib/testUVRAII.cxx index 0607f44..7d21959 100644 --- a/Tests/CMakeLib/testUVRAII.cxx +++ b/Tests/CMakeLib/testUVRAII.cxx @@ -169,7 +169,7 @@ static bool testAllMoves() allTypes b(std::move(a)); allTypes c = std::move(b); return true; -}; +} static bool testLoopReset() { @@ -192,7 +192,7 @@ static bool testLoopReset() } return true; -}; +} static bool testLoopDestructor() { @@ -217,7 +217,7 @@ static bool testLoopDestructor() } return true; -}; +} int testUVRAII(int, char** const) { diff --git a/Utilities/Scripts/update-third-party.bash b/Utilities/Scripts/update-third-party.bash index 0d0a667..bfe6828 100644 --- a/Utilities/Scripts/update-third-party.bash +++ b/Utilities/Scripts/update-third-party.bash @@ -42,6 +42,22 @@ # For convenience, the function may use the "git_archive" function which # does a standard "git archive" extraction using the (optional) "paths" # variable to only extract a subset of the source tree. +# +# Dependencies +# +# To update third party packages from git repositories with submodule, +# you will need to install the "git-archive-all" Python package with +# +# pip install git-archive-all +# +# or install it from https://github.com/Kentzo/git-archive-all. +# +# This package installs a script named "git-archive-all" where pip +# installs executables. If you run pip under your user privileges (i.e., +# not using "sudo"), this location may be $HOME/.local/bin. Make sure +# that directory is in your path so that git can find the +# "git-archive-all" script. +# ######################################################################## ######################################################################## @@ -52,11 +68,24 @@ git_archive () { tar -C "$extractdir" -x } +confirm_archive_all_exists () { + which git-archive-all || die "git requires an archive-all command. Please run 'pip install git-archive-all'" +} + +git_archive_all () { + confirm_archive_all_exists + local tmptarball="temp.tar" + git archive-all --prefix="" "$tmptarball" + mkdir -p "$extractdir/$name-reduced" + tar -C "$extractdir/$name-reduced" -xf "$tmptarball" $paths + rm -f "$tmptarball" +} + disable_custom_gitattributes() { pushd "${extractdir}/${name}-reduced" # Git does not allow custom attributes in a subdirectory where we # are about to merge the `.gitattributes` file, so disable them. - sed -i '/^\[attr\]/ {s/^/#/}' .gitattributes + sed -i '/^\[attr\]/ {s/^/#/;}' .gitattributes popd } @@ -71,6 +100,9 @@ warn () { readonly regex_date='20[0-9][0-9]-[0-9][0-9]-[0-9][0-9]' readonly basehash_regex="$name $regex_date ([0-9a-f]*)" +readonly toplevel_dir="$( git rev-parse --show-toplevel )" + +cd "$toplevel_dir" ######################################################################## # Sanity checking @@ -95,7 +127,7 @@ if [ ! -d "$(git rev-parse --show-toplevel)/$subtree" ]; then else readonly basehash="$( git rev-list --author="$ownership" --grep="$basehash_regex" -n 1 HEAD )" fi -readonly upstream_old_short="$( git cat-file commit "$basehash" | sed -n '/'"$basehash_regex"'/ {s/.*(//;s/)//;p}' | egrep '^[0-9a-f]+$' )" +readonly upstream_old_short="$( git cat-file commit "$basehash" | sed -n '/'"$basehash_regex"'/ {s/.*(//;s/)//;p;}' | egrep '^[0-9a-f]+$' )" [ -n "$basehash" ] || \ warn "'basehash' is empty; performing initial import" @@ -111,7 +143,7 @@ readonly extractdir="$workdir/extract" trap "rm -rf '$workdir'" EXIT # Get upstream -git clone "$repo" "$upstreamdir" +git clone --recursive "$repo" "$upstreamdir" if [ -n "$basehash" ]; then # Remove old worktrees @@ -120,7 +152,7 @@ if [ -n "$basehash" ]; then git worktree add "$extractdir" "$basehash" # Clear out the working tree pushd "$extractdir" - git ls-files | xargs rm -v + git ls-files -z --recurse-submodules | xargs -0 rm -v find . -type d -empty -delete popd else @@ -132,6 +164,8 @@ fi # Extract the subset of upstream we care about pushd "$upstreamdir" git checkout "$tag" +git submodule sync --recursive +git submodule update --recursive --init readonly upstream_hash="$( git rev-parse HEAD )" readonly upstream_hash_short="$( git rev-parse --short=8 "$upstream_hash" )" readonly upstream_datetime="$( git rev-list "$upstream_hash" --format='%ci' -n 1 | grep -e "^$regex_date" )" diff --git a/Utilities/cmlibuv/src/unix/core.c b/Utilities/cmlibuv/src/unix/core.c index e6d61ee..4245e02 100644 --- a/Utilities/cmlibuv/src/unix/core.c +++ b/Utilities/cmlibuv/src/unix/core.c @@ -72,8 +72,6 @@ extern char** environ; # include <sys/sysctl.h> # include <sys/filio.h> # include <sys/wait.h> -# include <sys/param.h> -# include <sys/cpuset.h> # if defined(__FreeBSD__) # define uv__accept4 accept4 # endif @@ -82,6 +80,11 @@ extern char** environ; # endif #endif +#if defined(__FreeBSD__) +# include <sys/param.h> +# include <sys/cpuset.h> +#endif + #if defined(__MVS__) #include <sys/ioctl.h> #endif |
