Build: Add DWARF version

Add BUILD_DWARF_VERSION to indicate which DWARF version to use. Set it
to a special value when building, such as: "-DBUILD_DWARF_VERSION=2".

Change-Id: I20370cac9588dba7636d2ec404f7c674ef6bdd16
Signed-off-by: Edison Ai <edison.ai@arm.com>
diff --git a/cmake/Compiler/ARMClang.cmake b/cmake/Compiler/ARMClang.cmake
index a5ed2f3..a65add9 100644
--- a/cmake/Compiler/ARMClang.cmake
+++ b/cmake/Compiler/ARMClang.cmake
@@ -24,14 +24,20 @@
 set(CMAKE_AR "${CMAKE_ARMCCLANG_AR}" CACHE FILEPATH "The ARMCC archiver" FORCE)
 mark_as_advanced(CMAKE_ARMCCLANG_AR)
 
+if(NOT DEFINED BUILD_DWARF_VERSION)
+	set(BUILD_DWARF_VERSION "")
+else()
+	string(CONCAT BUILD_DWARF_VERSION "dwarf-" ${BUILD_DWARF_VERSION})
+endif()
+
 macro(__compiler_armclang lang)
   if(NOT CMAKE_${lang}_FLAGS_SET)
     set(CMAKE_${lang}_FLAGS_SET TRUE)
     string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
-    string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g -O0")
+    string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g${BUILD_DWARF_VERSION} -O0")
     string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Oz -DNDEBUG")
     string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O3 -DNDEBUG")
-    string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O3 -g -DNDEBUG")
+    string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O3 -g${BUILD_DWARF_VERSION} -DNDEBUG")
 
     set(CMAKE_${lang}_OUTPUT_EXTENSION ".o")
     set(CMAKE_${lang}_OUTPUT_EXTENSION_REPLACE 1)
diff --git a/cmake/Compiler/GNUARM.cmake b/cmake/Compiler/GNUARM.cmake
index 17d416c..aa197a5 100644
--- a/cmake/Compiler/GNUARM.cmake
+++ b/cmake/Compiler/GNUARM.cmake
@@ -24,14 +24,20 @@
 set(CMAKE_AR "${CMAKE_GNUARM_AR}" CACHE FILEPATH "The GNUARM archiver" FORCE)
 mark_as_advanced(CMAKE_GNUARM_AR)
 
+if(NOT DEFINED BUILD_DWARF_VERSION)
+	set(BUILD_DWARF_VERSION "")
+else()
+	string(CONCAT BUILD_DWARF_VERSION "dwarf-" ${BUILD_DWARF_VERSION})
+endif()
+
 macro(__compiler_gnuarm lang)
   if(NOT CMAKE_${lang}_FLAGS_SET)
     set(CMAKE_${lang}_FLAGS_SET TRUE)
     string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
-    string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g -O0")
+    string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g${BUILD_DWARF_VERSION} -O0")
     string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Os -DNDEBUG")
     string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O3 -DNDEBUG")
-    string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O3 -g -DNDEBUG")
+    string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O3 -g${BUILD_DWARF_VERSION} -DNDEBUG")
 
     set(CMAKE_${lang}_OUTPUT_EXTENSION ".o")
     set(CMAKE_${lang}_OUTPUT_EXTENSION_REPLACE 1)
diff --git a/docs/user_guides/tfm_build_instruction.rst b/docs/user_guides/tfm_build_instruction.rst
index f350251..5d91fa0 100644
--- a/docs/user_guides/tfm_build_instruction.rst
+++ b/docs/user_guides/tfm_build_instruction.rst
@@ -52,6 +52,13 @@
          - ``Minsizerel``
    * - -DMBEDTLS_DEBUG=<ON|OFF>
      - Enables debug symbols for the Mbed TLS and Mbed Crypto libraries.
+   * - -DBUILD_DWARF_VERSION=<dwarf version>
+     - Configures DWARF version.
+       The possible values are:
+
+         - 2
+         - 3
+         - 4
 
 .. Note::
     Follow :doc:`secure boot <./tfm_secure_boot>` to build the binaries with or