diff options
Diffstat (limited to 'sources/shiboken6/ApiExtractor/clangparser/clangparser.cpp')
| -rw-r--r-- | sources/shiboken6/ApiExtractor/clangparser/clangparser.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/sources/shiboken6/ApiExtractor/clangparser/clangparser.cpp b/sources/shiboken6/ApiExtractor/clangparser/clangparser.cpp index 54a1a2c8b..69582af0d 100644 --- a/sources/shiboken6/ApiExtractor/clangparser/clangparser.cpp +++ b/sources/shiboken6/ApiExtractor/clangparser/clangparser.cpp @@ -275,6 +275,15 @@ static CXTranslationUnit createTranslationUnit(CXIndex index, return tu; } +static void setupTarget(CXTranslationUnit translationUnit) +{ + const CXTargetInfo targetInfo = clang_getTranslationUnitTargetInfo(translationUnit); + const auto tripleCS = clang_TargetInfo_getTriple(targetInfo); + clang::setPointerSize(clang_TargetInfo_getPointerWidth(targetInfo)); + clang::setTargetTriple(QString::fromUtf8(clang_getCString(tripleCS))); + clang_disposeString(tripleCS); +} + /* clangFlags are flags to clang_parseTranslationUnit2() such as * CXTranslationUnit_KeepGoing (from CINDEX_VERSION_MAJOR/CINDEX_VERSION_MINOR 0.35) */ @@ -295,6 +304,8 @@ bool parse(const QByteArrayList &clangArgs, bool addCompilerSupportArguments, if (!translationUnit) return false; + setupTarget(translationUnit); + CXCursor rootCursor = clang_getTranslationUnitCursor(translationUnit); clang_visitChildren(rootCursor, visitorCallback, reinterpret_cast<CXClientData>(&bv)); |
