summaryrefslogtreecommitdiff
path: root/src/qdoc/clangcodeparser.cpp
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2020-04-15 14:06:46 +0200
committerAlexandru Croitor <alexandru.croitor@qt.io>2020-04-15 15:08:54 +0200
commite6ad150805cc64db20d3ff3ae5fe2d356c04913b (patch)
tree0b3b6ea949c5a42005d564b79b1783b935f1a85e /src/qdoc/clangcodeparser.cpp
parent830f1db786de48d34b16905086220a6ac28a0203 (diff)
parent1b992406a6523a144c58baa9bbd1198bb9a2d98c (diff)
downloadqttools-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.cpp42
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
};