
Add support for running RadioLib on Tock. Tock is an embedded operating system designed for running multiple concurrent, mutually distrustful applications on Cortex-M and RISC-V based embedded platforms (https://github.com/tock/tock). This PR uses libtock-c (https://github.com/tock/libtock-c) to add support to running RadioLib as a Tock userspace application. This has been tested on the SparkFun LoRa Thing Plus - expLoRaBLE board (https://github.com/tock/tock/tree/master/boards/apollo3/lora_things_plus) but will work on any LoRa compatible Tock board (currently only the expLoRaBLE board). Signed-off-by: Alistair Francis <alistair@alistair23.me>
98 lines
4.4 KiB
CMake
98 lines
4.4 KiB
CMake
# Arm specific CMake file
|
|
#
|
|
# This is copied from:
|
|
# https://github.com/Lora-net/LoRaMac-node/blob/2bf36bde72f68257eb96b5c00900619546bedca8/cmake/toolchain-arm-none-eabi.cmake
|
|
#
|
|
# The below file is licensed as Revised BSD License
|
|
# See https://github.com/Lora-net/LoRaMac-node/blob/master/LICENSE for details
|
|
|
|
##
|
|
## ______ _
|
|
## / _____) _ | |
|
|
## ( (____ _____ ____ _| |_ _____ ____| |__
|
|
## \____ \| ___ | (_ _) ___ |/ ___) _ \
|
|
## _____) ) ____| | | || |_| ____( (___| | | |
|
|
## (______/|_____)_|_|_| \__)_____)\____)_| |_|
|
|
## (C)2013-2017 Semtech
|
|
## ___ _____ _ ___ _ _____ ___ ___ ___ ___
|
|
## / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __|
|
|
## \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _|
|
|
## |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___|
|
|
## embedded.connectivity.solutions.==============
|
|
##
|
|
## License: Revised BSD License, see LICENSE.TXT file included in the project
|
|
## Authors: Johannes Bruder ( STACKFORCE ), Miguel Luis ( Semtech )
|
|
##
|
|
##
|
|
## CMake arm-none-eabi toolchain file
|
|
##
|
|
|
|
# Append current directory to CMAKE_MODULE_PATH for making device specific cmake modules visible
|
|
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
|
|
|
|
# Target definition
|
|
set(CMAKE_SYSTEM_NAME Generic)
|
|
set(CMAKE_SYSTEM_PROCESSOR ARM)
|
|
|
|
#---------------------------------------------------------------------------------------
|
|
# Set toolchain paths
|
|
#---------------------------------------------------------------------------------------
|
|
set(TOOLCHAIN arm-none-eabi)
|
|
if(NOT DEFINED TOOLCHAIN_PREFIX)
|
|
if(CMAKE_HOST_SYSTEM_NAME STREQUAL Linux)
|
|
set(TOOLCHAIN_PREFIX "/usr")
|
|
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL Darwin)
|
|
set(TOOLCHAIN_PREFIX "/usr/local")
|
|
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL Windows)
|
|
message(STATUS "Please specify the TOOLCHAIN_PREFIX !\n For example: -DTOOLCHAIN_PREFIX=\"C:/Program Files/GNU Tools ARM Embedded\" ")
|
|
else()
|
|
set(TOOLCHAIN_PREFIX "/usr")
|
|
message(STATUS "No TOOLCHAIN_PREFIX specified, using default: " ${TOOLCHAIN_PREFIX})
|
|
endif()
|
|
endif()
|
|
set(TOOLCHAIN_BIN_DIR ${TOOLCHAIN_PREFIX}/bin)
|
|
set(TOOLCHAIN_INC_DIR ${TOOLCHAIN_PREFIX}/${TOOLCHAIN}/include)
|
|
set(TOOLCHAIN_LIB_DIR ${TOOLCHAIN_PREFIX}/${TOOLCHAIN}/lib)
|
|
|
|
# Set system depended extensions
|
|
if(WIN32)
|
|
set(TOOLCHAIN_EXT ".exe" )
|
|
else()
|
|
set(TOOLCHAIN_EXT "" )
|
|
endif()
|
|
|
|
# Perform compiler test with static library
|
|
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
|
|
|
#---------------------------------------------------------------------------------------
|
|
# Preset some general GCC Options
|
|
#---------------------------------------------------------------------------------------
|
|
|
|
# Options for DEBUG build
|
|
# -Og enables optimizations that do not interfere with debugging
|
|
# -g produce debugging information in the operating system's native format
|
|
set(CMAKE_C_FLAGS_DEBUG "-Og -g -DDEBUG" CACHE INTERNAL "C Compiler options for debug build type")
|
|
set(CMAKE_CXX_FLAGS_DEBUG "-Og -g -DDEBUG" CACHE INTERNAL "C++ Compiler options for debug build type")
|
|
set(CMAKE_ASM_FLAGS_DEBUG "-g" CACHE INTERNAL "ASM Compiler options for debug build type")
|
|
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "" CACHE INTERNAL "Linker options for debug build type")
|
|
|
|
# Options for RELEASE build
|
|
# -Os Optimize for size. -Os enables all -O2 optimizations
|
|
set(CMAKE_C_FLAGS_RELEASE "-Os" CACHE INTERNAL "C Compiler options for release build type")
|
|
set(CMAKE_CXX_FLAGS_RELEASE "-Os" CACHE INTERNAL "C++ Compiler options for release build type")
|
|
set(CMAKE_ASM_FLAGS_RELEASE "" CACHE INTERNAL "ASM Compiler options for release build type")
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "" CACHE INTERNAL "Linker options for release build type")
|
|
|
|
#---------------------------------------------------------------------------------------
|
|
# Set compilers
|
|
#---------------------------------------------------------------------------------------
|
|
set(CMAKE_C_COMPILER ${TOOLCHAIN_BIN_DIR}/${TOOLCHAIN}-gcc${TOOLCHAIN_EXT} CACHE INTERNAL "C Compiler")
|
|
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_BIN_DIR}/${TOOLCHAIN}-g++${TOOLCHAIN_EXT} CACHE INTERNAL "C++ Compiler")
|
|
set(CMAKE_ASM_COMPILER ${TOOLCHAIN_BIN_DIR}/${TOOLCHAIN}-gcc${TOOLCHAIN_EXT} CACHE INTERNAL "ASM Compiler")
|
|
|
|
set(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_PREFIX}/${${TOOLCHAIN}} ${CMAKE_PREFIX_PATH})
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
|
|