| 5984 | } |
| 5985 | |
| 5986 | std::string cmGeneratorTarget::GenerateHeaderSetVerificationFile( |
| 5987 | cmSourceFile& source, std::string const& dir, |
| 5988 | std::string const& verifyTargetName, |
| 5989 | cm::optional<std::set<std::string>>& languages) const |
| 5990 | { |
| 5991 | std::string extension; |
| 5992 | std::string language = source.GetOrDetermineLanguage(); |
| 5993 | |
| 5994 | if (source.GetPropertyAsBool("SKIP_LINTING")) { |
| 5995 | return std::string{}; |
| 5996 | } |
| 5997 | |
| 5998 | if (language.empty()) { |
| 5999 | if (!languages) { |
| 6000 | languages.emplace(); |
| 6001 | for (auto const& tgtSource : this->GetAllConfigSources()) { |
| 6002 | auto const& tgtSourceLanguage = |
| 6003 | tgtSource.Source->GetOrDetermineLanguage(); |
| 6004 | if (tgtSourceLanguage == "CXX") { |
| 6005 | languages->insert("CXX"); |
| 6006 | break; // C++ overrides everything else, so we don't need to keep |
| 6007 | // checking. |
| 6008 | } |
| 6009 | if (tgtSourceLanguage == "C") { |
| 6010 | languages->insert("C"); |
| 6011 | } |
| 6012 | } |
| 6013 | |
| 6014 | if (languages->empty()) { |
| 6015 | std::vector<std::string> languagesVector; |
| 6016 | this->GlobalGenerator->GetEnabledLanguages(languagesVector); |
| 6017 | languages->insert(languagesVector.begin(), languagesVector.end()); |
| 6018 | } |
| 6019 | } |
| 6020 | |
| 6021 | if (languages->count("CXX")) { |
| 6022 | language = "CXX"; |
| 6023 | } else if (languages->count("C")) { |
| 6024 | language = "C"; |
| 6025 | } |
| 6026 | } |
| 6027 | |
| 6028 | if (language == "C") { |
| 6029 | extension = ".c"; |
| 6030 | } else if (language == "CXX") { |
| 6031 | extension = ".cxx"; |
| 6032 | } else { |
| 6033 | return ""; |
| 6034 | } |
| 6035 | |
| 6036 | std::string headerFilename = dir; |
| 6037 | if (!headerFilename.empty()) { |
| 6038 | headerFilename += '/'; |
| 6039 | } |
| 6040 | headerFilename += source.GetLocation().GetName(); |
| 6041 | |
| 6042 | auto filename = |
| 6043 | cmStrCat(this->LocalGenerator->GetCurrentBinaryDirectory(), '/', |
no test coverage detected