• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)
16set(COMPILER_ROOT_WIN ${PROJECT_SOURCE_DIR}/tools/bin/compiler/riscv/cc_riscv32_musl_100/cc_riscv32_musl_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