Initial support for AnyAvrGcc toolchain
parent
257d0ec340
commit
ac1dd05097
|
|
@ -0,0 +1,86 @@
|
|||
get_filename_component(PROJECT_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" DIRECTORY)
|
||||
include("${PROJECT_CMAKE_DIR}/Utilities.cmake")
|
||||
set(CMAKE_SYSTEM_NAME Generic)
|
||||
set(CMAKE_SYSTEM_PROCESSOR avr)
|
||||
|
||||
#
|
||||
# Utilities
|
||||
|
||||
if(MINGW
|
||||
OR CYGWIN
|
||||
OR WIN32
|
||||
)
|
||||
set(UTIL_SEARCH_CMD where)
|
||||
set(EXECUTABLE_SUFFIX ".exe")
|
||||
elseif(UNIX OR APPLE)
|
||||
set(UTIL_SEARCH_CMD which)
|
||||
set(EXECUTABLE_SUFFIX "")
|
||||
endif()
|
||||
|
||||
set(TOOLCHAIN_PREFIX avr-)
|
||||
|
||||
#
|
||||
# Looking up the toolchain
|
||||
#
|
||||
|
||||
if(GCC_TOOLCHAIN_DIR)
|
||||
# using toolchain set by AvrGcc.cmake (locked version)
|
||||
set(BINUTILS_PATH "${AVR_TOOLCHAIN_DIR}/bin")
|
||||
else()
|
||||
# search for ANY avr-gcc toolchain
|
||||
execute_process(
|
||||
COMMAND ${UTIL_SEARCH_CMD} ${TOOLCHAIN_PREFIX}gcc
|
||||
OUTPUT_VARIABLE AVR_GCC_PATH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
RESULT_VARIABLE FIND_RESULT
|
||||
)
|
||||
# found?
|
||||
if(NOT "${FIND_RESULT}" STREQUAL "0")
|
||||
message(FATAL_ERROR "avr-gcc not found")
|
||||
endif()
|
||||
get_filename_component(BINUTILS_PATH "${AVR_GCC_PATH}" DIRECTORY)
|
||||
get_filename_component(AVR_TOOLCHAIN_DIR ${BINUTILS_PATH} DIRECTORY)
|
||||
endif()
|
||||
|
||||
#
|
||||
# Setup CMake
|
||||
#
|
||||
|
||||
# Without that flag CMake is not able to pass test compilation check
|
||||
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
||||
|
||||
set(CMAKE_C_COMPILER
|
||||
"${BINUTILS_PATH}/${TOOLCHAIN_PREFIX}gcc${EXECUTABLE_SUFFIX}"
|
||||
CACHE FILEPATH "" FORCE
|
||||
)
|
||||
set(CMAKE_ASM_COMPILER
|
||||
"${BINUTILS_PATH}/${TOOLCHAIN_PREFIX}gcc${EXECUTABLE_SUFFIX}"
|
||||
CACHE FILEPATH "" FORCE
|
||||
)
|
||||
set(CMAKE_CXX_COMPILER
|
||||
"${BINUTILS_PATH}/${TOOLCHAIN_PREFIX}g++${EXECUTABLE_SUFFIX}"
|
||||
CACHE FILEPATH "" FORCE
|
||||
)
|
||||
set(CMAKE_EXE_LINKER_FLAGS_INIT
|
||||
""
|
||||
CACHE STRING "" FORCE
|
||||
)
|
||||
|
||||
set(CMAKE_ASM_COMPILE_OBJECT
|
||||
"<CMAKE_ASM_COMPILER> <DEFINES> <FLAGS> -o <OBJECT> -c <SOURCE>"
|
||||
CACHE STRING "" FORCE
|
||||
)
|
||||
|
||||
set(CMAKE_OBJCOPY
|
||||
"${BINUTILS_PATH}/${TOOLCHAIN_PREFIX}objcopy${EXECUTABLE_SUFFIX}"
|
||||
CACHE INTERNAL "objcopy tool"
|
||||
)
|
||||
set(CMAKE_SIZE_UTIL
|
||||
"${BINUTILS_PATH}/${TOOLCHAIN_PREFIX}size${EXECUTABLE_SUFFIX}"
|
||||
CACHE INTERNAL "size tool"
|
||||
)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH "${ARM_TOOLCHAIN_DIR}")
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
|
|
@ -9,7 +9,7 @@ endif()
|
|||
function(get_recommended_gcc_version var)
|
||||
execute_process(
|
||||
COMMAND "${Python3_EXECUTABLE}" "${PROJECT_ROOT_DIR}/utils/bootstrap.py"
|
||||
"--print-dependency-version" "gcc-arm-none-eabi"
|
||||
"--print-dependency-version" "gcc-avr"
|
||||
OUTPUT_VARIABLE RECOMMENDED_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
RESULT_VARIABLE RETVAL
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ dependencies = {
|
|||
'Darwin': 'https://github.com/Kitware/CMake/releases/download/v3.15.5/cmake-3.15.5-Darwin-x86_64.tar.gz',
|
||||
},
|
||||
},
|
||||
'avr8-gnu-toolchain': {
|
||||
'gcc-avr': {
|
||||
'version': '5.4.0',
|
||||
'url': {
|
||||
'Linux': 'https://xxxarmkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/7-2018q2/gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2',
|
||||
|
|
|
|||
Loading…
Reference in New Issue