Initial support for AnyAvrGcc toolchain

pull/1/head
Alan Dragomirecký 2021-04-13 10:17:03 +02:00
parent c85d86f340
commit 019bb4f6d2
No known key found for this signature in database
GPG Key ID: 408E8F08D33F9D03
3 changed files with 88 additions and 2 deletions

86
cmake/AnyAvrGcc.cmake Normal file
View File

@ -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)

View File

@ -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

View File

@ -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',