@@ -1723,7 +1723,7 @@ bool ProjMgrWorker::ProcessToolchain(ContextItem& context) {
17231723
17241724 context.toolchain = GetToolchain (context.compiler );
17251725
1726- GetRegisteredToolchains ();
1726+ GetRegisteredToolchainEnvVars ();
17271727 if (!m_regToolchainsEnvVars.empty ()) {
17281728 // check if the required environment variable is set
17291729 auto itr = std::find_if (m_regToolchainsEnvVars.begin (), m_regToolchainsEnvVars.end (), [&context](const auto & item) {
@@ -4490,18 +4490,21 @@ bool ProjMgrWorker::IsContextSelected(const string& context) {
44904490}
44914491
44924492bool ProjMgrWorker::ListToolchains (vector<ToolchainItem>& toolchains) {
4493+ // If list toolchains command is fired
4494+ if (m_selectedContexts[0 ].empty ()) {
4495+ // list registered toolchains
4496+ GetRegisteredToolchains ();
4497+ if (m_toolchains.empty ()) {
4498+ return false ;
4499+ }
4500+ toolchains = m_toolchains;
4501+ return true ;
4502+ }
4503+
44934504 bool allSupported = true ;
44944505 for (const auto & selectedContext : m_selectedContexts) {
44954506 ContextItem& context = m_contexts[selectedContext];
4496- if (selectedContext.empty ()) {
4497- // list registered toolchains
4498- GetRegisteredToolchains ();
4499- if (m_toolchains.empty ()) {
4500- return false ;
4501- }
4502- toolchains = m_toolchains;
4503- return true ;
4504- }
4507+
45054508 // list required toolchains for selected contexts
45064509 if (!LoadPacks (context)) {
45074510 return false ;
@@ -4525,10 +4528,7 @@ bool ProjMgrWorker::ListEnvironment(EnvironmentList& env) {
45254528 return true ;
45264529}
45274530
4528- void ProjMgrWorker::GetRegisteredToolchains (void ) {
4529- if (!m_toolchains.empty ()) {
4530- return ;
4531- }
4531+ void ProjMgrWorker::GetRegisteredToolchainEnvVars (void ) {
45324532 // extract toolchain info from environment variables
45334533 static const regex regEx = regex (" (\\ w+)_TOOLCHAIN_(\\ d+)_(\\ d+)_(\\ d+)=(.*)" );
45344534 for (const auto & envVar : m_envVars) {
@@ -4540,6 +4540,17 @@ void ProjMgrWorker::GetRegisteredToolchains(void) {
45404540 m_regToolchainsEnvVars[sm[1 ]][string (sm[2 ]) + ' .' + string (sm[3 ]) + ' .' + string (sm[4 ])] = sm[5 ];
45414541 }
45424542 }
4543+
4544+ if (m_regToolchainsEnvVars.empty ()) {
4545+ m_toolchainErrors[MessageType::Warning].insert (" no compiler registered. Add path to compiler 'bin' directory with environment variable <name>_TOOLCHAIN_<major>_<minor>_<patch>. <name> is one of AC6, GCC, IAR, CLANG" );
4546+ }
4547+ }
4548+
4549+ void ProjMgrWorker::GetRegisteredToolchains (void ) {
4550+ if (!m_toolchains.empty ()) {
4551+ return ;
4552+ }
4553+ GetRegisteredToolchainEnvVars ();
45434554 // iterate over registered toolchains
45444555 for (const auto & [toolchainName, toolchainVersions] : m_regToolchainsEnvVars) {
45454556 for (const auto & [toolchainVersion, toolchainRoot] : toolchainVersions) {
@@ -4552,10 +4563,6 @@ void ProjMgrWorker::GetRegisteredToolchains(void) {
45524563 }
45534564 }
45544565 }
4555-
4556- if (m_regToolchainsEnvVars.empty ()) {
4557- m_toolchainErrors[MessageType::Warning].insert (" no compiler registered. Add path to compiler 'bin' directory with environment variable <name>_TOOLCHAIN_<major>_<minor>_<patch>. <name> is one of AC6, GCC, IAR, CLANG" );
4558- }
45594566}
45604567
45614568bool ProjMgrWorker::GetLatestToolchain (ToolchainItem& toolchain) {
0 commit comments