forked from qt-creator/qt-creator
Clang: Improve speed by content generation
The argument parsing has some considerable overhead. We try to avoid that with merging all content together in one file. Change-Id: Icf426bb5d6a5569d59c180f94c7eab66a22a251c Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -111,17 +111,44 @@ HeaderAndSources ProjectUpdater::headerAndSourcesFromProjectPart(
|
||||
return headerAndSources;
|
||||
}
|
||||
|
||||
ClangBackEnd::V2::ProjectPartContainer ProjectUpdater::toProjectPartContainer(
|
||||
CppTools::ProjectPart *projectPart) const
|
||||
QStringList ProjectUpdater::compilerArguments(CppTools::ProjectPart *projectPart)
|
||||
{
|
||||
using CppTools::ClangCompilerOptionsBuilder;
|
||||
|
||||
QStringList arguments = ClangCompilerOptionsBuilder::build(
|
||||
projectPart,
|
||||
CppTools::ProjectFile::CXXHeader,
|
||||
ClangCompilerOptionsBuilder::PchUsage::None,
|
||||
CLANG_VERSION,
|
||||
CLANG_RESOURCE_DIR);
|
||||
ClangCompilerOptionsBuilder builder(*projectPart, CLANG_VERSION, CLANG_RESOURCE_DIR);
|
||||
|
||||
builder.addWordWidth();
|
||||
builder.addTargetTriple();
|
||||
builder.addLanguageOption(CppTools::ProjectFile::CXXHeader);
|
||||
builder.addOptionsForLanguage(/*checkForBorlandExtensions*/ true);
|
||||
builder.enableExceptions();
|
||||
|
||||
builder.addDefineToAvoidIncludingGccOrMinGwIntrinsics();
|
||||
builder.addDefineFloat128ForMingw();
|
||||
builder.addToolchainAndProjectDefines();
|
||||
builder.undefineCppLanguageFeatureMacrosForMsvc2015();
|
||||
|
||||
builder.addPredefinedMacrosAndHeaderPathsOptions();
|
||||
builder.addWrappedQtHeadersIncludePath();
|
||||
builder.addPrecompiledHeaderOptions(ClangCompilerOptionsBuilder::PchUsage::None);
|
||||
builder.addHeaderPathOptions();
|
||||
builder.addProjectConfigFileInclude();
|
||||
|
||||
builder.addMsvcCompatibilityVersion();
|
||||
|
||||
builder.add("-fmessage-length=0");
|
||||
builder.add("-fmacro-backtrace-limit=0");
|
||||
builder.add("-w");
|
||||
builder.add("-ferror-limit=100000");
|
||||
|
||||
return builder.options();
|
||||
}
|
||||
|
||||
ClangBackEnd::V2::ProjectPartContainer ProjectUpdater::toProjectPartContainer(
|
||||
CppTools::ProjectPart *projectPart) const
|
||||
{
|
||||
|
||||
QStringList arguments = compilerArguments(projectPart);
|
||||
|
||||
HeaderAndSources headerAndSources = headerAndSourcesFromProjectPart(projectPart);
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ unittest_public:
|
||||
std::vector<CppTools::ProjectPart *> projectParts) const;
|
||||
void addToHeaderAndSources(HeaderAndSources &headerAndSources,
|
||||
const CppTools::ProjectFile &projectFile) const;
|
||||
|
||||
static QStringList compilerArguments(CppTools::ProjectPart *projectPart);
|
||||
static Utils::PathStringVector createExcludedPaths(
|
||||
const ClangBackEnd::V2::FileContainers &generatedFiles);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user