yang.li | d6fe624 | 2022-01-13 14:44:24 +0800 | [diff] [blame] | 1 | # Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved. |
| 2 | |
| 3 | # SPDX-License-Identifier: MIT |
| 4 | |
shijie.xiong | 377f17a | 2024-07-26 15:02:36 +0800 | [diff] [blame] | 5 | set(SPLIT_ARCH_DIR $ENV{SPLIT_ARCH_DIR}) |
| 6 | if(NOT SPLIT_ARCH_DIR) |
| 7 | set(SOC_DIR $ENV{SDK_BASE}/soc/$ENV{ARCH}/$ENV{SOC}) |
| 8 | else() |
| 9 | set(SOC_DIR $ENV{SDK_BASE}/soc/$ENV{ARCH}/${SPLIT_ARCH_DIR}/$ENV{SOC}) |
| 10 | endif() |
| 11 | |
| 12 | if(EXISTS ${SOC_DIR}/toolchain_path.cmake) |
| 13 | include(${SOC_DIR}/toolchain_path.cmake) |
shijie.xiong | 13204eb | 2024-08-08 10:54:48 +0800 | [diff] [blame^] | 14 | # This information is provided by U-Boot and includes the toolchain internally. |
| 15 | get_filename_component(PREBUILD_DIR $ENV{SDK_BASE} DIRECTORY) |
| 16 | get_filename_component(PREBUILD_DIR ${PREBUILD_DIR} DIRECTORY) |
| 17 | if(EXISTS ${PREBUILD_DIR}/prebuild/riscv-none-gcc AND IS_DIRECTORY ${PREBUILD_DIR}/prebuild/riscv-none-gcc) |
| 18 | get_filename_component(LAST_COMPONENT $ENV{TOOLCHAIN_PATH} NAME) |
| 19 | set(ENV{TOOLCHAIN_PATH} ${PREBUILD_DIR}/prebuild/riscv-none-gcc/${LAST_COMPONENT}) |
| 20 | endif() |
shijie.xiong | 377f17a | 2024-07-26 15:02:36 +0800 | [diff] [blame] | 21 | endif() |
| 22 | |
bin.chen | 1a426d3 | 2021-10-13 10:52:36 +0800 | [diff] [blame] | 23 | include("${CMAKE_CURRENT_LIST_DIR}/find_compiler.cmake") |
| 24 | |
| 25 | set(CMAKE_SYSTEM_NAME Generic) |
| 26 | |
| 27 | # Find GCC for RISCV. |
| 28 | aml_find_compiler(COMPILER_CC riscv-none-embed-gcc) |
| 29 | aml_find_compiler(COMPILER_CXX riscv-none-embed-g++) |
| 30 | set(COMPILER_ASM "${COMPILER_CC}" CACHE INTERNAL "") |
| 31 | aml_find_compiler(COMPILER_OBJCOPY riscv-none-embed-objcopy) |
| 32 | aml_find_compiler(COMPILER_OBJDUMP riscv-none-embed-objdump) |
| 33 | |
xiaohu.huang | a1268fd | 2022-06-07 11:10:48 +0800 | [diff] [blame] | 34 | # Specify the cross compiler. |
bin.chen | 1a426d3 | 2021-10-13 10:52:36 +0800 | [diff] [blame] | 35 | set(CMAKE_C_COMPILER ${COMPILER_CC} CACHE FILEPATH "C compiler") |
| 36 | set(CMAKE_CXX_COMPILER ${COMPILER_CXX} CACHE FILEPATH "C++ compiler") |
| 37 | set(CMAKE_ASM_COMPILER ${COMPILER_ASM} CACHE FILEPATH "ASM compiler") |
| 38 | #set(CMAKE_C_LINK_EXECUTABLE ${COMPILER_LD} CACHE FILEPATH "LD linker") |
| 39 | set(CMAKE_OBJCOPY_COMPILER ${COMPILER_OBJCOPY} CACHE FILEPATH "objcopy compiler") |
| 40 | set(CMAKE_OBJDUMP_COMPILER ${COMPILER_OBJDUMP} CACHE FILEPATH "objdump compiler") |
| 41 | # Disable compiler checks. |
| 42 | set(CMAKE_C_COMPILER_FORCED TRUE) |
| 43 | set(CMAKE_CXX_COMPILER_FORCED TRUE) |
| 44 | |
| 45 | # Add target system root to cmake find path. |
| 46 | get_filename_component(COMPILER_DIR "${COMPILER_CC}" DIRECTORY) |
| 47 | get_filename_component(CMAKE_FIND_ROOT_PATH "${COMPILER_DIR}" DIRECTORY) |
| 48 | |
| 49 | # Look for includes and libraries only in the target system prefix. |
| 50 | #set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) |
| 51 | #set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) |
| 52 | |
| 53 | # Helper variables to abstracts some common compiler flags. |
| 54 | set(COMPILER_NO_WARNINGS "-w" CACHE INTERNAL "") |