| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| file Copyright.txt or https://cmake.org/licensing for details. */ |
| #include "cmCPackIFWCommon.h" |
| |
| #include "cmCPackGenerator.h" |
| #include "cmCPackIFWGenerator.h" |
| #include "cmCPackLog.h" // IWYU pragma: keep |
| #include "cmSystemTools.h" |
| #include "cmTimestamp.h" |
| #include "cmVersionConfig.h" |
| #include "cmXMLWriter.h" |
| |
| #include <sstream> |
| #include <utility> |
| #include <vector> |
| |
| cmCPackIFWCommon::cmCPackIFWCommon() |
| : Generator(nullptr) |
| { |
| } |
| |
| const char* cmCPackIFWCommon::GetOption(const std::string& op) const |
| { |
| return this->Generator ? this->Generator->cmCPackGenerator::GetOption(op) |
| : nullptr; |
| } |
| |
| bool cmCPackIFWCommon::IsOn(const std::string& op) const |
| { |
| return this->Generator ? this->Generator->cmCPackGenerator::IsOn(op) : false; |
| } |
| |
| bool cmCPackIFWCommon::IsSetToOff(const std::string& op) const |
| { |
| return this->Generator ? this->Generator->cmCPackGenerator::IsSetToOff(op) |
| : false; |
| } |
| |
| bool cmCPackIFWCommon::IsSetToEmpty(const std::string& op) const |
| { |
| return this->Generator ? this->Generator->cmCPackGenerator::IsSetToEmpty(op) |
| : false; |
| } |
| |
| bool cmCPackIFWCommon::IsVersionLess(const char* version) |
| { |
| if (!this->Generator) { |
| return false; |
| } |
| |
| return cmSystemTools::VersionCompare( |
| cmSystemTools::OP_LESS, this->Generator->FrameworkVersion.data(), version); |
| } |
| |
| bool cmCPackIFWCommon::IsVersionGreater(const char* version) |
| { |
| if (!this->Generator) { |
| return false; |
| } |
| |
| return cmSystemTools::VersionCompare( |
| cmSystemTools::OP_GREATER, this->Generator->FrameworkVersion.data(), |
| version); |
| } |
| |
| bool cmCPackIFWCommon::IsVersionEqual(const char* version) |
| { |
| if (!this->Generator) { |
| return false; |
| } |
| |
| return cmSystemTools::VersionCompare( |
| cmSystemTools::OP_EQUAL, this->Generator->FrameworkVersion.data(), |
| version); |
| } |
| |
| void cmCPackIFWCommon::ExpandListArgument( |
| const std::string& arg, std::map<std::string, std::string>& argsOut) |
| { |
| std::vector<std::string> args; |
| cmSystemTools::ExpandListArgument(arg, args, false); |
| if (args.empty()) { |
| return; |
| } |
| |
| std::size_t i = 0; |
| std::size_t c = args.size(); |
| if (c % 2) { |
| argsOut[""] = args[i]; |
| ++i; |
| } |
| |
| --c; |
| for (; i < c; i += 2) { |
| argsOut[args[i]] = args[i + 1]; |
| } |
| } |
| |
| void cmCPackIFWCommon::ExpandListArgument( |
| const std::string& arg, std::multimap<std::string, std::string>& argsOut) |
| { |
| std::vector<std::string> args; |
| cmSystemTools::ExpandListArgument(arg, args, false); |
| if (args.empty()) { |
| return; |
| } |
| |
| std::size_t i = 0; |
| std::size_t c = args.size(); |
| if (c % 2) { |
| argsOut.insert(std::pair<std::string, std::string>("", args[i])); |
| ++i; |
| } |
| |
| --c; |
| for (; i < c; i += 2) { |
| argsOut.insert(std::pair<std::string, std::string>(args[i], args[i + 1])); |
| } |
| } |
| |
| void cmCPackIFWCommon::WriteGeneratedByToStrim(cmXMLWriter& xout) |
| { |
| if (!this->Generator) { |
| return; |
| } |
| |
| std::ostringstream comment; |
| comment << "Generated by CPack " << CMake_VERSION << " IFW generator " |
| << "for QtIFW "; |
| if (this->IsVersionEqual("1.9.9")) { |
| comment << "less 2.0"; |
| } else { |
| comment << this->Generator->FrameworkVersion; |
| } |
| comment << " tools at " << cmTimestamp().CurrentTime("", true); |
| xout.Comment(comment.str().c_str()); |
| } |