From a3e7d94bb8dc6ea9a35ea139120a01cfe1051eb1 Mon Sep 17 00:00:00 2001 From: Cyano Hao Date: Thu, 19 Dec 2024 11:21:26 +0800 Subject: [PATCH] Fix stack size option for cross toolchain --- RedPandaIDE/compiler/compilerinfo.cpp | 4 +-- RedPandaIDE/settings.cpp | 32 ++++++++++++------- RedPandaIDE/translations/RedPandaIDE_pt_BR.ts | 2 +- RedPandaIDE/translations/RedPandaIDE_ru_RU.ts | 4 +-- RedPandaIDE/translations/RedPandaIDE_zh_CN.ts | 4 +-- RedPandaIDE/translations/RedPandaIDE_zh_TW.ts | 2 +- 6 files changed, 27 insertions(+), 21 deletions(-) diff --git a/RedPandaIDE/compiler/compilerinfo.cpp b/RedPandaIDE/compiler/compilerinfo.cpp index a84bec85e..47a5002fd 100644 --- a/RedPandaIDE/compiler/compilerinfo.cpp +++ b/RedPandaIDE/compiler/compilerinfo.cpp @@ -225,9 +225,7 @@ void CompilerInfo::prepareCompilerOptions() // Linker groupName = QObject::tr("Linker"); -#ifdef Q_OS_WIN - addNumberOption(LINK_CMD_OPT_STACK_SIZE, QObject::tr("Stack Size"), groupName, false, false, true, "-Wl,--stack,","MB",1024*1024,12,0,99999); -#endif + addNumberOption(LINK_CMD_OPT_STACK_SIZE, QObject::tr("PE Stack Size"), groupName, false, false, true, "-Wl,--stack,","MB",1024*1024,0,0,99999); addOption(CC_CMD_OPT_USE_PIPE, QObject::tr("Use pipes instead of temporary files during compilation (-pipe)"), groupName, true, true, false, "-pipe"); //addOption(LINK_CMD_OPT_LINK_OBJC, QObject::tr("Link an Objective C program (-lobjc)"), groupName, false, false, true, "-lobjc"); diff --git a/RedPandaIDE/settings.cpp b/RedPandaIDE/settings.cpp index 0239bc18b..6667e72ab 100644 --- a/RedPandaIDE/settings.cpp +++ b/RedPandaIDE/settings.cpp @@ -2314,6 +2314,7 @@ void Settings::CompilerSet::setGCCProperties(const QString& binDir, const QStrin mVersion = QString(version).trimmed(); // Obtain compiler distro + bool outputFormatIsPe = false; QByteArray verboseOut = getCompilerOutput(binDir, c_prog, {"-v"}); QByteArray targetStr = "clang version "; int clangVersionPos = verboseOut.indexOf(targetStr); @@ -2321,14 +2322,17 @@ void Settings::CompilerSet::setGCCProperties(const QString& binDir, const QStrin mCompilerType = CompilerType::Clang; QRegularExpression ntPosixPattern = QRegularExpression("^(.*)-pc-windows-msys$"); QRegularExpression mingwW64Pattern = QRegularExpression("^(.*)-w64-windows-gnu$"); - if (mName.isEmpty()) { - if (auto m = ntPosixPattern.match(mDumpMachine); m.hasMatch()) { + if (auto m = ntPosixPattern.match(mDumpMachine); m.hasMatch()) { + outputFormatIsPe = true; + if (mName.isEmpty()) mName = "MSYS2 Clang " + mVersion; - } else if (m = mingwW64Pattern.match(mDumpMachine); m.hasMatch()) { + } else if (m = mingwW64Pattern.match(mDumpMachine); m.hasMatch()) { + outputFormatIsPe = true; + if (mName.isEmpty()) mName = "MinGW-w64 Clang " + mVersion; - } else { + } else { + if (mName.isEmpty()) mName = "Clang " + mVersion; - } } } else { mCompilerType = CompilerType::GCC; @@ -2337,24 +2341,28 @@ void Settings::CompilerSet::setGCCProperties(const QString& binDir, const QStrin QRegularExpression mingwOrgPattern("^(.*)-(.*)-mingw32$"); if (auto m = ntPosixPattern.match(mDumpMachine); m.hasMatch()) { mCompilerType = CompilerType::GCC_UTF8; + outputFormatIsPe = true; if (mName.isEmpty()) { if (m.captured(3) == "msys") mName = "MSYS2 GCC " + mVersion; else mName = "Cygwin GCC " + mVersion; } - } - // Assemble user friendly name if we don't have one yet - if (mName.isEmpty()) { - if (auto m = mingwW64Pattern.match(mDumpMachine); m.hasMatch()) { + } else if (m = mingwW64Pattern.match(mDumpMachine); m.hasMatch()) { + outputFormatIsPe = true; + if (mName.isEmpty()) mName = "MinGW-w64 GCC " + mVersion; - } else if (m = mingwOrgPattern.match(mDumpMachine); m.hasMatch()) { + } else if (m = mingwOrgPattern.match(mDumpMachine); m.hasMatch()) { + outputFormatIsPe = true; + if (mName.isEmpty()) mName = "MinGW.org GCC " + mVersion; - } else { + } else { + if (mName.isEmpty()) mName = "GCC " + mVersion; - } } } + if (outputFormatIsPe) + setCompileOption(LINK_CMD_OPT_STACK_SIZE, "12"); // Set compiler folder QDir tmpDir(binDir); diff --git a/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts b/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts index 940f0283d..111545636 100644 --- a/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts +++ b/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts @@ -9343,7 +9343,7 @@ - Stack Size + PE Stack Size diff --git a/RedPandaIDE/translations/RedPandaIDE_ru_RU.ts b/RedPandaIDE/translations/RedPandaIDE_ru_RU.ts index 56239117e..c41018391 100644 --- a/RedPandaIDE/translations/RedPandaIDE_ru_RU.ts +++ b/RedPandaIDE/translations/RedPandaIDE_ru_RU.ts @@ -8399,8 +8399,8 @@ - Stack Size - Размер стека + PE Stack Size + Размер стека PE diff --git a/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts b/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts index c10901b19..67e0c0f5a 100644 --- a/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts +++ b/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts @@ -9541,8 +9541,8 @@ p, li { white-space: pre-wrap; } - Stack Size - 栈空间大小 + PE Stack Size + PE 栈空间大小 diff --git a/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts b/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts index d63754303..bf868e708 100644 --- a/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts +++ b/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts @@ -8699,7 +8699,7 @@ - Stack Size + PE Stack Size