@@ -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) {
@@ -4480,18 +4480,21 @@ bool ProjMgrWorker::IsContextSelected(const string& context) {
44804480}
44814481
44824482bool ProjMgrWorker::ListToolchains (vector<ToolchainItem>& toolchains) {
4483+ // If list toolchains command is fired
4484+ if (m_selectedContexts[0 ].empty ()) {
4485+ // list registered toolchains
4486+ GetRegisteredToolchains ();
4487+ if (m_toolchains.empty ()) {
4488+ return false ;
4489+ }
4490+ toolchains = m_toolchains;
4491+ return true ;
4492+ }
4493+
44834494 bool allSupported = true ;
44844495 for (const auto & selectedContext : m_selectedContexts) {
44854496 ContextItem& context = m_contexts[selectedContext];
4486- if (selectedContext.empty ()) {
4487- // list registered toolchains
4488- GetRegisteredToolchains ();
4489- if (m_toolchains.empty ()) {
4490- return false ;
4491- }
4492- toolchains = m_toolchains;
4493- return true ;
4494- }
4497+
44954498 // list required toolchains for selected contexts
44964499 if (!LoadPacks (context)) {
44974500 return false ;
@@ -4515,10 +4518,7 @@ bool ProjMgrWorker::ListEnvironment(EnvironmentList& env) {
45154518 return true ;
45164519}
45174520
4518- void ProjMgrWorker::GetRegisteredToolchains (void ) {
4519- if (!m_toolchains.empty ()) {
4520- return ;
4521- }
4521+ void ProjMgrWorker::GetRegisteredToolchainEnvVars (void ) {
45224522 // extract toolchain info from environment variables
45234523 static const regex regEx = regex (" (\\ w+)_TOOLCHAIN_(\\ d+)_(\\ d+)_(\\ d+)=(.*)" );
45244524 for (const auto & envVar : m_envVars) {
@@ -4530,6 +4530,17 @@ void ProjMgrWorker::GetRegisteredToolchains(void) {
45304530 m_regToolchainsEnvVars[sm[1 ]][string (sm[2 ]) + ' .' + string (sm[3 ]) + ' .' + string (sm[4 ])] = sm[5 ];
45314531 }
45324532 }
4533+
4534+ if (m_regToolchainsEnvVars.empty ()) {
4535+ 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" );
4536+ }
4537+ }
4538+
4539+ void ProjMgrWorker::GetRegisteredToolchains (void ) {
4540+ if (!m_toolchains.empty ()) {
4541+ return ;
4542+ }
4543+ GetRegisteredToolchainEnvVars ();
45334544 // iterate over registered toolchains
45344545 for (const auto & [toolchainName, toolchainVersions] : m_regToolchainsEnvVars) {
45354546 for (const auto & [toolchainVersion, toolchainRoot] : toolchainVersions) {
@@ -4542,10 +4553,6 @@ void ProjMgrWorker::GetRegisteredToolchains(void) {
45424553 }
45434554 }
45444555 }
4545-
4546- if (m_regToolchainsEnvVars.empty ()) {
4547- 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" );
4548- }
45494556}
45504557
45514558bool ProjMgrWorker::GetLatestToolchain (ToolchainItem& toolchain) {
0 commit comments