1#=============================================================================== 2# @brief cmake toolchains 3# Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED. 4#=============================================================================== 5 6function(find_env_exe var full_path exe) 7 if(USE_LOCAL_COMPILER) 8 file(TO_CMAKE_PATH ${full_path} full_path) 9 set(${var} ${full_path}/${exe} CACHE PATH "" FORCE) 10 else() 11 find_program(${var} ${exe}) 12 endif() 13endfunction(find_env_exe) 14 15set(COMPILER_ROOT ${PROJECT_SOURCE_DIR}/tools/bin/compiler/riscv/cc_riscv32_musl_100/cc_riscv32_musl_fp) 16set(COMPILER_ROOT_WIN ${PROJECT_SOURCE_DIR}/tools/bin/compiler/riscv/cc_riscv32_musl_100/cc_riscv32_musl_fp_win) 17set(OBJDUMP_PATH ${COMPILER_ROOT}/bin) 18 19if(EXISTS ${COMPILER_ROOT}) 20 set(USE_LOCAL_COMPILER TRUE) 21else() 22 set(USE_LOCAL_COMPILER FALSE) 23endif() 24 25if(${BUILD_PLATFORM} MATCHES "linux") 26 MESSAGE(STATUS "BUILD_PLATFORM: " ${BUILD_PLATFORM}) 27 find_env_exe(CMAKE_C_COMPILER ${COMPILER_ROOT}/bin riscv32-linux-musl-gcc) 28 find_env_exe(CMAKE_ASM_COMPILER ${COMPILER_ROOT}/bin riscv32-linux-musl-gcc) 29 find_env_exe(CMAKE_CXX_COMPILER ${COMPILER_ROOT}/bin riscv32-linux-musl-g++) 30 find_env_exe(CMAKE_LINKER ${COMPILER_ROOT}/bin riscv32-linux-musl-ld) 31 find_env_exe(CMAKE_AR ${COMPILER_ROOT}/bin riscv32-linux-musl-ar) 32 find_env_exe(CMAKE_C_COMPILER_AR ${COMPILER_ROOT}/bin riscv32-linux-musl-ar) 33 find_env_exe(CMAKE_ASM_COMPILER_AR ${COMPILER_ROOT}/bin riscv32-linux-musl-ar) 34 35 find_env_exe(CMAKE_RANLIB ${COMPILER_ROOT}/bin riscv32-linux-musl-ranlib) 36 find_env_exe(CMAKE_C_COMPILER_RANLIB ${COMPILER_ROOT}/bin riscv32-linux-musl-ranlib) 37 find_env_exe(CMAKE_ASM_COMPILER_RANLIB ${COMPILER_ROOT}/bin riscv32-linux-musl-ranlib) 38 39 find_env_exe(CMAKE_STRIP ${COMPILER_ROOT}/bin riscv32-linux-musl-strip) 40 find_env_exe(CMAKE_NM ${COMPILER_ROOT}/bin riscv32-linux-musl-nm) 41 find_env_exe(CMAKE_OBJCOPY ${COMPILER_ROOT}/bin riscv32-linux-musl-objcopy) 42 find_env_exe(CMAKE_OBJDUMP ${COMPILER_ROOT}/bin riscv32-linux-musl-objdump) 43 find_env_exe(CMAKE_READELF ${COMPILER_ROOT}/bin riscv32-linux-musl-readelf) 44 45elseif(${BUILD_PLATFORM} MATCHES "windows") 46 MESSAGE(STATUS "BUILD_PLATFORM: " ${BUILD_PLATFORM}) 47 set(COMPILER_ROOT ${COMPILER_ROOT_WIN}) 48 find_env_exe(CMAKE_C_COMPILER ${COMPILER_ROOT}/bin riscv32-linux-musl-gcc.exe) 49 find_env_exe(CMAKE_ASM_COMPILER ${COMPILER_ROOT}/bin riscv32-linux-musl-gcc.exe) 50 find_env_exe(CMAKE_CXX_COMPILER ${COMPILER_ROOT}/bin riscv32-linux-musl-g++.exe) 51 find_env_exe(CMAKE_LINKER ${COMPILER_ROOT}/bin riscv32-linux-musl-ld.exe) 52 find_env_exe(CMAKE_AR ${COMPILER_ROOT}/bin riscv32-linux-musl-ar.exe) 53 find_env_exe(CMAKE_C_COMPILER_AR ${COMPILER_ROOT}/bin riscv32-linux-musl-ar.exe) 54 find_env_exe(CMAKE_ASM_COMPILER_AR ${COMPILER_ROOT}/bin riscv32-linux-musl-ar.exe) 55 56 find_env_exe(CMAKE_RANLIB ${COMPILER_ROOT}/bin riscv32-linux-musl-ranlib.exe) 57 find_env_exe(CMAKE_C_COMPILER_RANLIB ${COMPILER_ROOT}/bin riscv32-linux-musl-ranlib.exe) 58 find_env_exe(CMAKE_ASM_COMPILER_RANLIB ${COMPILER_ROOT}/bin riscv32-linux-musl-ranlib.exe) 59 60 find_env_exe(CMAKE_STRIP ${COMPILER_ROOT}/bin riscv32-linux-musl-strip.exe) 61 find_env_exe(CMAKE_NM ${COMPILER_ROOT}/bin riscv32-linux-musl-nm.exe) 62 find_env_exe(CMAKE_OBJCOPY ${COMPILER_ROOT}/bin riscv32-linux-musl-objcopy.exe) 63 find_env_exe(CMAKE_OBJDUMP ${COMPILER_ROOT}/bin riscv32-linux-musl-objdump.exe) 64 find_env_exe(CMAKE_READELF ${COMPILER_ROOT}/bin riscv32-linux-musl-readelf.exe) 65endif() 66 67if(DEFINED CMAKE_C_COMPILER) 68 STRING(REGEX REPLACE "(.+)/.+" "\\1" CMAKE_C_COMPILER_PATH ${CMAKE_C_COMPILER}) 69 set(LIB_C ${CMAKE_C_COMPILER_PATH}/../lib/gcc/riscv32-linux-musl/7.3.0 CACHE PATH "" FORCE) 70 set(LIB_GCC ${CMAKE_C_COMPILER_PATH}/../sysroot/usr/lib CACHE PATH "" FORCE) 71endif() 72 73set(CMAKE_C_CREATE_STATIC_LIBRARY "<CMAKE_AR> rcD <TARGET> <LINK_FLAGS> <OBJECTS>") 74set(CMAKE_ASM_CREATE_STATIC_LIBRARY "<CMAKE_AR> rcD <TARGET> <LINK_FLAGS> <OBJECTS>") 75set(CNAKE_CXX_CREATE_STATIC_LIBRARY "<CMAKE_AR> rcD <TARGET> <LINK_FLAGS> <OBJECTS>") 76