Build: Enable C++ support during compilation

Adds support for CXX to TF-M's build system. This is required for any
secure partitions that wish to make use of C++, for example, and avoids
manual changes being applied to TF-M when C++ needs to be enabled in
projects.

Signed-off-by: Rajkumar Kanagaraj <rajkumar.kanagaraj@linaro.org>
Change-Id: Id8f9842776589a8e9315d6a1059e1330b368a45c
diff --git a/toolchain_GNUARM.cmake b/toolchain_GNUARM.cmake
index 7978eac..d044ed4 100644
--- a/toolchain_GNUARM.cmake
+++ b/toolchain_GNUARM.cmake
@@ -14,6 +14,10 @@
     message(FATAL_ERROR "Could not find compiler: '${CROSS_COMPILE}-gcc'")
 endif()
 
+if(CMAKE_CXX_COMPILER STREQUAL "CMAKE_CXX_COMPILER-NOTFOUND")
+    message(FATAL_ERROR "Could not find compiler: '${CROSS_COMPILE}-g++'")
+endif()
+
 set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER})
 
 set(LINKER_VENEER_OUTPUT_FLAG -Wl,--cmse-implib,--out-implib=)
@@ -48,7 +52,8 @@
         -funsigned-char
         -mthumb
         -nostdlib
-        -std=c99
+        $<$<COMPILE_LANGUAGE:C>:-std=c99>
+        $<$<COMPILE_LANGUAGE:CXX>:-std=c++11>
         $<$<OR:$<BOOL:${TFM_DEBUG_SYMBOLS}>,$<BOOL:${TFM_CODE_COVERAGE}>>:-g>
     )
 endmacro()
@@ -166,21 +171,25 @@
     endif()
 
     unset(CMAKE_C_FLAGS_INIT)
+    unset(CMAKE_CXX_FLAGS_INIT)
     unset(CMAKE_ASM_FLAGS_INIT)
 
     if (CMAKE_SYSTEM_PROCESSOR)
         set(CMAKE_C_FLAGS_INIT "-mcpu=${CMAKE_SYSTEM_PROCESSOR}")
+        set(CMAKE_CXX_FLAGS_INIT "-mcpu=${CMAKE_SYSTEM_PROCESSOR}")
         set(CMAKE_ASM_FLAGS_INIT "-mcpu=${CMAKE_SYSTEM_PROCESSOR}")
         set(CMAKE_C_LINK_FLAGS "-mcpu=${CMAKE_SYSTEM_PROCESSOR}")
         set(CMAKE_ASM_LINK_FLAGS "-mcpu=${CMAKE_SYSTEM_PROCESSOR}")
     else()
         set(CMAKE_C_FLAGS_INIT "-march=${CMAKE_SYSTEM_ARCH}")
+        set(CMAKE_CXX_FLAGS_INIT "-march=${CMAKE_SYSTEM_ARCH}")
         set(CMAKE_ASM_FLAGS_INIT "-march=${CMAKE_SYSTEM_ARCH}")
         set(CMAKE_C_LINK_FLAGS "-march=${CMAKE_SYSTEM_ARCH}")
         set(CMAKE_ASM_LINK_FLAGS "-march=${CMAKE_SYSTEM_ARCH}")
     endif()
 
     set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS_INIT})
+    set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS_INIT})
     set(CMAKE_ASM_FLAGS ${CMAKE_ASM_FLAGS_INIT})
 
     set(BL2_COMPILER_CP_FLAG -mfloat-abi=soft)