MLECO-1860: Support for Arm GNU Embedded Toolchain

This patch enables compilation of ML use cases bare-metal applications
using Arm GNU Embedded Toolchain. The GNU toolchain can be used instead
of the Arm Compiler that was already supported.

The GNU toolchain is also set as the default toolchain when building
applications for the MPS3 target.

Note: The version of GNU toolchain must be 10.2.1 or higher.

Change-Id: I5fff242f0f52d2db6c75d292f9fa990df1aec978
Signed-off-by: Kshitij Sisodia <kshitij.sisodia@arm.com>
diff --git a/source/use_case/kws_asr/src/AsrClassifier.cc b/source/use_case/kws_asr/src/AsrClassifier.cc
index f1fa6f1..57d5058 100644
--- a/source/use_case/kws_asr/src/AsrClassifier.cc
+++ b/source/use_case/kws_asr/src/AsrClassifier.cc
@@ -91,7 +91,7 @@
             printf_err("Output tensor expected to be 3D (1, m, n)\n");
             return false;
         } else if (static_cast<uint32_t>(outputTensor->dims->data[outColsIdx]) < topNCount) {
-            printf_err("Output vectors are smaller than %u\n", topNCount);
+            printf_err("Output vectors are smaller than %" PRIu32 "\n", topNCount);
             return false;
         } else if (static_cast<uint32_t>(outputTensor->dims->data[outColsIdx]) != labels.size()) {
             printf("Output size doesn't match the labels' size\n");
diff --git a/source/use_case/kws_asr/src/MainLoop.cc b/source/use_case/kws_asr/src/MainLoop.cc
index 95e5a8f..631b7c1 100644
--- a/source/use_case/kws_asr/src/MainLoop.cc
+++ b/source/use_case/kws_asr/src/MainLoop.cc
@@ -212,7 +212,7 @@
 
     /* Check to make sure that the input tensor supports the above context and inner lengths. */
     if (inputRows <= 2 * inputCtxLen || inputRows <= inputInnerLen) {
-        printf_err("Input rows not compatible with ctx of %u\n",
+        printf_err("Input rows not compatible with ctx of %" PRIu32 "\n",
                    inputCtxLen);
         return 0;
     }
diff --git a/source/use_case/kws_asr/src/UseCaseHandler.cc b/source/use_case/kws_asr/src/UseCaseHandler.cc
index 7025d6d..0560e88 100644
--- a/source/use_case/kws_asr/src/UseCaseHandler.cc
+++ b/source/use_case/kws_asr/src/UseCaseHandler.cc
@@ -159,7 +159,7 @@
          * this means an overlap of 0.5 seconds. */
         auto kwsAudioDataStride = kwsAudioDataWindowSize / 2;
 
-        info("KWS audio data window size %u\n", kwsAudioDataWindowSize);
+        info("KWS audio data window size %" PRIu32 "\n", kwsAudioDataWindowSize);
 
         /* Stride must be multiple of mfcc features window stride to re-use features. */
         if (0 != kwsAudioDataStride % kwsMfccWindowStride) {
@@ -208,7 +208,7 @@
                             str_inf.c_str(), str_inf.size(),
                             dataPsnTxtInfStartX, dataPsnTxtInfStartY, false);
 
-        info("Running KWS inference on audio clip %u => %s\n",
+        info("Running KWS inference on audio clip %" PRIu32 " => %s\n",
              currentIndex, get_filename(currentIndex));
 
         /* Start sliding through audio clip. */
@@ -329,7 +329,8 @@
 
         /* Make sure the input tensor supports the above context and inner lengths. */
         if (asrInputRows <= 2 * asrInputCtxLen || asrInputRows <= asrInputInnerLen) {
-            printf_err("ASR input rows not compatible with ctx length %u\n", asrInputCtxLen);
+            printf_err("ASR input rows not compatible with ctx length %" PRIu32 "\n",
+                asrInputCtxLen);
             return false;
         }
 
@@ -354,7 +355,8 @@
         /* Audio clip must have enough samples to produce 1 MFCC feature. */
         std::vector<int16_t> audioBuffer = std::vector<int16_t>(audioArr, audioArr + audioArrSize);
         if (audioArrSize < asrMfccParamsWinLen) {
-            printf_err("Not enough audio samples, minimum needed is %u\n", asrMfccParamsWinLen);
+            printf_err("Not enough audio samples, minimum needed is %" PRIu32 "\n",
+                asrMfccParamsWinLen);
             return false;
         }
 
@@ -485,7 +487,7 @@
     static bool SetAppCtxClipIdx(ApplicationContext& ctx, uint32_t idx)
     {
         if (idx >= NUMBER_OF_FILES) {
-            printf_err("Invalid idx %u (expected less than %u)\n",
+            printf_err("Invalid idx %" PRIu32 " (expected less than %u)\n",
                 idx, NUMBER_OF_FILES);
             return false;
         }
@@ -525,11 +527,11 @@
                         dataPsnTxtStartX1, rowIdx1, 0);
             rowIdx1 += dataPsnTxtYIncr;
 
-            info("For timestamp: %f (inference #: %u); threshold: %f\n",
+            info("For timestamp: %f (inference #: %" PRIu32 "); threshold: %f\n",
                  results[i].m_timeStamp, results[i].m_inferenceNumber,
                  results[i].m_threshold);
             for (uint32_t j = 0; j < results[i].m_resultVec.size(); ++j) {
-                info("\t\tlabel @ %u: %s, score: %f\n", j,
+                info("\t\tlabel @ %" PRIu32 ": %s, score: %f\n", j,
                      results[i].m_resultVec[j].m_label.c_str(),
                      results[i].m_resultVec[j].m_normalisedVal);
             }
@@ -558,7 +560,7 @@
             /* Get the final result string using the decoder. */
             std::string infResultStr = audio::asr::DecodeOutput(result.m_resultVec);
 
-            info("Result for inf %u: %s\n", result.m_inferenceNumber,
+            info("Result for inf %" PRIu32 ": %s\n", result.m_inferenceNumber,
                  infResultStr.c_str());
         }
 
diff --git a/source/use_case/kws_asr/src/Wav2LetterPostprocess.cc b/source/use_case/kws_asr/src/Wav2LetterPostprocess.cc
index ee3aba0..e3c0c20 100644
--- a/source/use_case/kws_asr/src/Wav2LetterPostprocess.cc
+++ b/source/use_case/kws_asr/src/Wav2LetterPostprocess.cc
@@ -63,7 +63,7 @@
                                                   tensor->dims->data[arm::app::Wav2LetterModel::ms_outputColsIdx],
                                                   lastIteration);
             default:
-                printf_err("Unsupported axis index: %u\n", axisIdx);
+                printf_err("Unsupported axis index: %" PRIu32 "\n", axisIdx);
         }
 
         return false;
@@ -77,7 +77,7 @@
         }
 
         if (static_cast<int>(axisIdx) >= tensor->dims->size) {
-            printf_err("Invalid axis index: %u; Max: %d\n",
+            printf_err("Invalid axis index: %" PRIu32 "; Max: %d\n",
                 axisIdx, tensor->dims->size);
             return false;
         }