build_system: Refactor that add toolchain option supported. [1/2]
PD#SWPL-68240
Problem:
Refactor that add toolchain option supported.
Solution:
Refactor that add toolchain option supported.
Verify:
N/A
Change-Id: Ib7fa63bb12fc2c966a0d4ba8693c295a45efb3b1
Signed-off-by: xiaohu.huang <xiaohu.huang@amlogic.com>
diff --git a/cmake/toolchains/arm64_compiler.cmake b/cmake/toolchains/arm64_compiler.cmake
new file mode 100755
index 0000000..ee0743e
--- /dev/null
+++ b/cmake/toolchains/arm64_compiler.cmake
@@ -0,0 +1,68 @@
+# Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
+
+# SPDX-License-Identifier: MIT
+
+include("${CMAKE_CURRENT_LIST_DIR}/find_compiler.cmake")
+
+set(CMAKE_SYSTEM_NAME Generic)
+
+if(CONFIG_CROSS_TOOLCHAIN_CLANG)
+ # Find CLANG for ARM.
+ message(STATUS "Override the cross toolchain with CLANG")
+ aml_find_compiler(COMPILER_CC_CLANG clang)
+ aml_find_compiler(COMPILER_CXX_CLANG clang)
+ set(COMPILER_ASM "${COMPILER_CC_CLANG}" CACHE INTERNAL "" FORCE)
+ aml_find_compiler(COMPILER_OBJCOPY_CLANG clang)
+ aml_find_compiler(COMPILER_OBJDUMP_CLANG clang)
+
+ # Specify the cross compiler.
+ set(CMAKE_C_COMPILER ${COMPILER_CC_CLANG} CACHE FILEPATH "C compiler" FORCE)
+ set(CMAKE_CXX_COMPILER ${COMPILER_CXX_CLANG} CACHE FILEPATH "C++ compiler" FORCE)
+ #set(CMAKE_C_LINK_EXECUTABLE ${COMPILER_LD} CACHE FILEPATH "LD linker" FORCE)
+ set(CMAKE_OBJCOPY_COMPILER ${COMPILER_OBJCOPY_CLANG} CACHE FILEPATH "objcopy compiler" FORCE)
+ set(CMAKE_OBJDUMP_COMPILER ${COMPILER_OBJDUMP_CLANG} CACHE FILEPATH "objdump compiler" FORCE)
+ # Disable compiler checks.
+ set(CMAKE_C_COMPILER_FORCED TRUE FORCE)
+ set(CMAKE_CXX_COMPILER_FORCED TRUE FORCE)
+
+ # Add target system root to cmake find path.
+ get_filename_component(COMPILER_DIR "${COMPILER_CC_CLANG}" DIRECTORY)
+ get_filename_component(CMAKE_FIND_ROOT_PATH "${COMPILER_DIR}" DIRECTORY)
+
+ # Look for includes and libraries only in the target system prefix.
+ #set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+ #set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+
+ # Helper variables to abstracts some common compiler flags.
+ set(COMPILER_NO_WARNINGS "-w" CACHE INTERNAL "" FORCE)
+else()
+ # Find GCC for ARM.
+ message(STATUS "Override the cross toolchain with GCC")
+ aml_find_compiler(COMPILER_CC aarch64-none-elf-gcc)
+ aml_find_compiler(COMPILER_CXX aarch64-none-elf-g++)
+ set(COMPILER_ASM "${COMPILER_CC}" CACHE FILEPATH "" FORCE)
+ aml_find_compiler(COMPILER_OBJCOPY aarch64-none-elf-objcopy)
+ aml_find_compiler(COMPILER_OBJDUMP aarch64-none-elf-objdump)
+
+ # Specify the cross compiler.
+ set(CMAKE_C_COMPILER ${COMPILER_CC} CACHE FILEPATH "C compiler" FORCE)
+ set(CMAKE_CXX_COMPILER ${COMPILER_CXX} CACHE FILEPATH "C++ compiler" FORCE)
+ set(CMAKE_ASM_COMPILER ${COMPILER_ASM} CACHE FILEPATH "ASM compiler" FORCE)
+ #set(CMAKE_C_LINK_EXECUTABLE ${COMPILER_LD} CACHE FILEPATH "LD linker" FORCE)
+ set(CMAKE_OBJCOPY_COMPILER ${COMPILER_OBJCOPY} CACHE FILEPATH "objcopy compiler" FORCE)
+ set(CMAKE_OBJDUMP_COMPILER ${COMPILER_OBJDUMP} CACHE FILEPATH "objdump compiler" FORCE)
+ # Disable compiler checks.
+ set(CMAKE_C_COMPILER_FORCED TRUE FORCE)
+ set(CMAKE_CXX_COMPILER_FORCED TRUE FORCE)
+
+ # Add target system root to cmake find path.
+ get_filename_component(COMPILER_DIR "${COMPILER_CC}" DIRECTORY)
+ get_filename_component(CMAKE_FIND_ROOT_PATH "${COMPILER_DIR}" DIRECTORY)
+
+ # Look for includes and libraries only in the target system prefix.
+ #set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+ #set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+
+ # Helper variables to abstracts some common compiler flags.
+ set(COMPILER_NO_WARNINGS "-w" CACHE INTERNAL "" FORCE)
+endif()