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)