diff options
author | Alexandru Croitor <alexandru.croitor@qt.io> | 2020-04-15 14:06:46 +0200 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@qt.io> | 2020-04-15 15:08:54 +0200 |
commit | e6ad150805cc64db20d3ff3ae5fe2d356c04913b (patch) | |
tree | 0b3b6ea949c5a42005d564b79b1783b935f1a85e /src/qdoc/clangcodeparser.cpp | |
parent | 830f1db786de48d34b16905086220a6ac28a0203 (diff) | |
parent | 1b992406a6523a144c58baa9bbd1198bb9a2d98c (diff) | |
download | qttools-e6ad150805cc64db20d3ff3ae5fe2d356c04913b.tar.gz |
Merge remote-tracking branch 'origin/5.15' into dev
Conflicts:
a bunch of .pro and configure.json file adjustments
and some conflicting cherry-picks from dev -> 5.15
that are merged into dev again
src/assistant/assistant/main.cpp
Change-Id: I174c00b6a300c6d46c4e081bdcb2f15f23ae9ef2
Diffstat (limited to 'src/qdoc/clangcodeparser.cpp')
-rw-r--r-- | src/qdoc/clangcodeparser.cpp | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/src/qdoc/clangcodeparser.cpp b/src/qdoc/clangcodeparser.cpp index a3d39dbd2..ba19d9abc 100644 --- a/src/qdoc/clangcodeparser.cpp +++ b/src/qdoc/clangcodeparser.cpp @@ -1106,25 +1106,32 @@ void ClangCodeParser::initializeParser() printParsingErrors_ = 1; version_ = config.getString(CONFIG_VERSION); const auto args = config.getStringList(CONFIG_INCLUDEPATHS); - QStringList squeezedArgs; + QSet<QString> seen; + includePaths_.clear(); + // Remove empty paths and duplicates and add -I and canonicalize if necessary for (const auto &p : args) { - if (p.startsWith(QLatin1String("-I"))) - squeezedArgs << p.mid(2).trimmed(); - else - squeezedArgs << p; + QByteArray option; + QString rawpath; + if (p.startsWith(QLatin1String("-I")) || p.startsWith(QLatin1String("-F"))) { + rawpath = p.mid(2).trimmed(); + option = p.left(2).toUtf8(); + } else if (p.startsWith(QLatin1String("-isystem"))) { + rawpath = p.mid(8).trimmed(); + option = "-isystem"; + } else { + rawpath = p; + option = "-I"; + } + if (rawpath.isEmpty() || seen.contains(rawpath)) + continue; + seen.insert(rawpath); + QByteArray path(rawpath.toUtf8()); + QFileInfo fi(QDir::current(), rawpath); + if (fi.exists()) + path = fi.canonicalFilePath().toUtf8(); + path.prepend(option); + includePaths_.append(path); } - // Remove empty paths and duplicates - squeezedArgs.removeAll({}); - squeezedArgs.removeDuplicates(); - includePaths_.resize(squeezedArgs.size()); - std::transform(squeezedArgs.begin(), squeezedArgs.end(), includePaths_.begin(), - [](const QString &s) { - QByteArray path(s.toUtf8()); - QFileInfo fi(QDir::current(), s); - if (fi.exists()) - path = fi.canonicalFilePath().toUtf8(); - return path.prepend("-I"); - }); CppCodeParser::initializeParser(); pchFileDir_.reset(nullptr); allHeaders_.clear(); @@ -1225,6 +1232,7 @@ static const char *defaultArgs_[] = { "-Wno-constant-logical-operand", "-Wno-macro-redefined", "-Wno-nullability-completeness", + "-fvisibility=default", "-ferror-limit=0", "-I" CLANG_RESOURCE_DIR }; |