dev(none): Добавил внешние зависимости

This commit is contained in:
svad05 2022-07-08 16:39:20 +03:00
parent 890193582a
commit c503b0023c
24 changed files with 803 additions and 0 deletions

View File

@ -0,0 +1,86 @@
cmake_minimum_required(VERSION 3.14)
if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0)
# gtest doesn't build on older GCC
message(FATAL_ERROR
"GTest needs at least GCC version 5. Set BUILD_TESTING=OFF to disable tests.")
endif()
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
if (CMAKE_SYSTEM_NAME STREQUAL rt-kernel)
set(gtest_disable_pthreads ON CACHE BOOL "" FORCE)
list(APPEND GTEST_COMPILE_OPTIONS
-D_POSIX_C_SOURCE=200809L
-Wno-psabi
)
endif()
if (CMAKE_SYSTEM_NAME STREQUAL STM32Cube)
set(gtest_disable_pthreads ON CACHE BOOL "" FORCE)
list(APPEND GTEST_COMPILE_OPTIONS
-D_POSIX_C_SOURCE=200809L
-Wno-psabi
-D_POSIX_PATH_MAX=80
)
endif()
include(FetchContent)
FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/rtlabs-com/googletest.git
GIT_TAG 25808659d317cb03409e7949914b274e10e6824f
)
FetchContent_GetProperties(googletest)
if(NOT googletest_POPULATED)
FetchContent_Populate(googletest)
set(INSTALL_GTEST OFF CACHE BOOL "")
add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR} EXCLUDE_FROM_ALL)
target_compile_options(gtest PRIVATE ${GTEST_COMPILE_OPTIONS})
endif()
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND}
--force-new-ctest-process
--output-on-failure
--build-config "$<CONFIGURATION>")
set_target_properties(check PROPERTIES FOLDER "Scripts")
if(GOOGLE_TEST_INDIVIDUAL)
include(GoogleTest)
endif()
macro(add_gtest TESTNAME)
target_link_libraries(${TESTNAME} PUBLIC gtest)
if (BUILD_GMOCK)
target_link_libraries(${TESTNAME} PUBLIC gmock)
endif()
if(GOOGLE_TEST_INDIVIDUAL)
gtest_discover_tests(${TESTNAME}
TEST_PREFIX "${TESTNAME}."
PROPERTIES FOLDER "Tests")
else()
add_test(${TESTNAME} ${TESTNAME})
set_target_properties(${TESTNAME} PROPERTIES FOLDER "Tests")
endif()
endmacro()
mark_as_advanced(
gmock_build_tests
gtest_build_samples
gtest_build_tests
gtest_disable_pthreads
gtest_force_shared_crt
gtest_hide_internal_symbols
BUILD_GMOCK
BUILD_GTEST
)
set_target_properties(gtest gtest_main
PROPERTIES FOLDER "Extern")
if(BUILD_GMOCK)
set_target_properties(gmock gmock_main
PROPERTIES FOLDER "Extern")
endif()

View File

@ -0,0 +1,63 @@
#********************************************************************
# _ _ _
# _ __ | |_ _ | | __ _ | |__ ___
# | '__|| __|(_)| | / _` || '_ \ / __|
# | | | |_ _ | || (_| || |_) |\__ \
# |_| \__|(_)|_| \__,_||_.__/ |___/
#
# www.rt-labs.com
# Copyright 2020 rt-labs AB, Sweden.
#
# This software is licensed under the terms of the BSD 3-clause
# license. See the file LICENSE distributed with this software for
# full license information.
#*******************************************************************/
# Find OSAL library. This module supports three use-cases:
#
# 1) OSAL sibling project
#
# If a target named OSAL exists then this module does nothing. This
# would be the case if OSAL is managed by a superproject.
#
# 2) External OSAL
#
# Search for and use an external OSAL. CMake will find the external
# OSAL library if it is installed in a default location such as
# /usr/include or /usr/local/include. You can also give a search hint
# by setting the Osal_DIR variable. This could be the case for a
# native build or a cross-compiled Linux system with a staging folder.
#
# 3) Automatic download and build of OSAL
#
# Finally, if OSAL is not found in the system it will be downloaded
# and built automatically.
cmake_minimum_required(VERSION 3.14)
if (NOT TARGET osal)
# Attempt to find externally built OSAL
find_package(Osal QUIET)
if (NOT Osal_FOUND)
# Download and build OSAL locally as a static library
include(FetchContent)
FetchContent_Declare(
osal
GIT_REPOSITORY https://github.com/rtlabs-com/osal.git
GIT_TAG e960068
)
FetchContent_GetProperties(osal)
if(NOT osal_POPULATED)
FetchContent_Populate(osal)
set(BUILD_SHARED_LIBS_OLD ${BUILD_SHARED_LIBS})
set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "" FORCE)
add_subdirectory(${osal_SOURCE_DIR} ${osal_BINARY_DIR} EXCLUDE_FROM_ALL)
set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_OLD} CACHE BOOL "" FORCE)
endif()
# Hide Osal_DIR to avoid confusion, as it is not used in this
# configuration
mark_as_advanced(Osal_DIR)
endif()
endif()

View File

@ -0,0 +1,16 @@
# Look for an executable called sphinx-build
find_program(
SPHINX_EXECUTABLE
NAMES sphinx-build
DOC "Path to sphinx-build executable"
)
include(FindPackageHandleStandardArgs)
# Handle standard arguments to find_package like REQUIRED and QUIET
find_package_handle_standard_args(
Sphinx
"Failed to find sphinx-build executable"
SPHINX_EXECUTABLE
)

View File

@ -0,0 +1,25 @@
#********************************************************************
# _ _ _
# _ __ | |_ _ | | __ _ | |__ ___
# | '__|| __|(_)| | / _` || '_ \ / __|
# | | | |_ _ | || (_| || |_) |\__ \
# |_| \__|(_)|_| \__,_||_.__/ |___/
#
# www.rt-labs.com
# Copyright 2020 rt-labs AB, Sweden.
#
# This software is licensed under the terms of the BSD 3-clause
# license. See the file LICENSE distributed with this software for
# full license information.
#*******************************************************************/
# Get git revision if available, as projectname_GIT_REVISION
find_package(Git QUIET)
execute_process(COMMAND
"${GIT_EXECUTABLE}" describe --tags --always --dirty
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
OUTPUT_VARIABLE "${CMAKE_PROJECT_NAME}_GIT_REVISION"
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE
)

View File

@ -0,0 +1,29 @@
BSD 3-Clause License
Copyright (c) 2020, rt-labs AB
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -0,0 +1,80 @@
#********************************************************************
# _ _ _
# _ __ | |_ _ | | __ _ | |__ ___
# | '__|| __|(_)| | / _` || '_ \ / __|
# | | | |_ _ | || (_| || |_) |\__ \
# |_| \__|(_)|_| \__,_||_.__/ |___/
#
# www.rt-labs.com
# Copyright 2021 rt-labs AB, Sweden.
#
# This software is licensed under the terms of the BSD 3-clause
# license. See the file LICENSE distributed with this software for
# full license information.
#*******************************************************************/
include_guard()
cmake_minimum_required (VERSION 3.1.2)
enable_language(ASM)
# Avoid warning when re-running cmake
set(DUMMY ${CMAKE_TOOLCHAIN_FILE})
# No support for shared libs
set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE)
set(UNIX 1)
set(CMAKE_STATIC_LIBRARY_PREFIX "lib")
set(CMAKE_STATIC_LIBRARY_SUFFIX ".a")
set(CMAKE_EXECUTABLE_SUFFIX ".elf")
# Do not build executables during configuration stage. Required
# libraries may not be built yet.
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
# Prefer standard extensions
set(CMAKE_C_OUTPUT_EXTENSION_REPLACE 1)
set(CMAKE_CXX_OUTPUT_EXTENSION_REPLACE 1)
set(CMAKE_ASM_OUTPUT_EXTENSION_REPLACE 1)
# Add machine-specific flags
add_definitions(${MACHINE})
add_link_options(${MACHINE})
# Common flags
add_definitions(
-fdata-sections
-ffunction-sections
)
# Common includes
list (APPEND INCLUDES
# nothing yet
)
set(CMAKE_ASM_STANDARD_INCLUDE_DIRECTORIES ${INCLUDES})
set(CMAKE_C_STANDARD_INCLUDE_DIRECTORIES ${INCLUDES})
set(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES ${INCLUDES})
# Linker flags
add_link_options(
-Wl,--gc-sections
)
# Libraries
list (APPEND LIBS
-lc
-lm
-lnosys
)
list(JOIN LIBS " " LIBS) # Convert list to space separated string
set(CMAKE_C_STANDARD_LIBRARIES ${LIBS})
set(CMAKE_CXX_STANDARD_LIBRARIES "${LIBS} -lstdc++")
# Macro to add .bin output
macro(generate_bin TARGET)
add_custom_command(TARGET ${TARGET} POST_BUILD
COMMAND ${OBJCOPY}
ARGS -O binary ${TARGET}.elf ${TARGET}.bin
)
endmacro()

View File

@ -0,0 +1,111 @@
#********************************************************************
# _ _ _
# _ __ | |_ _ | | __ _ | |__ ___
# | '__|| __|(_)| | / _` || '_ \ / __|
# | | | |_ _ | || (_| || |_) |\__ \
# |_| \__|(_)|_| \__,_||_.__/ |___/
#
# www.rt-labs.com
# Copyright 2017 rt-labs AB, Sweden.
#
# This software is licensed under the terms of the BSD 3-clause
# license. See the file LICENSE distributed with this software for
# full license information.
#*******************************************************************/
include_guard()
cmake_minimum_required (VERSION 3.1.2)
# Avoid warning when re-running cmake
set(DUMMY ${CMAKE_TOOLCHAIN_FILE})
# No support for shared libs
set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE)
set(UNIX 1)
set(CMAKE_STATIC_LIBRARY_PREFIX "lib")
set(CMAKE_STATIC_LIBRARY_SUFFIX ".a")
set(CMAKE_EXECUTABLE_SUFFIX ".elf")
# Do not build executables during configuration stage. Required
# libraries may not be built yet.
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
# Prefer standard extensions
set(CMAKE_C_OUTPUT_EXTENSION_REPLACE 1)
set(CMAKE_CXX_OUTPUT_EXTENSION_REPLACE 1)
set(CMAKE_ASM_OUTPUT_EXTENSION_REPLACE 1)
# Add machine-specific flags
add_definitions(${MACHINE})
add_link_options(${MACHINE})
if (NOT ${VARIANT} STREQUAL "")
add_definitions(-D${VARIANT})
endif()
# Common flags
add_definitions(
-ffunction-sections
-fomit-frame-pointer
-fno-strict-aliasing
-fshort-wchar
)
# Common includes
list (APPEND INCLUDES
${RTK}/bsp/${BSP}/include
${RTK}/include
${RTK}/include/arch/${ARCH}
${RTK}/lwip/src/include
)
set(CMAKE_ASM_STANDARD_INCLUDE_DIRECTORIES ${INCLUDES})
set(CMAKE_C_STANDARD_INCLUDE_DIRECTORIES ${INCLUDES})
set(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES ${INCLUDES})
# Linker flags
add_link_options(
-nostartfiles
-L${RTK}/lib/${ARCH}/${VARIANT}/${CPU}
-T${RTK}/bsp/${BSP}/${BSP}.ld
-Wl,--gc-sections
)
# Libraries
list (APPEND LIBS
-l${BSP}
-l${ARCH}
-lkern
-ldev
-lsio
-lblock
-lfs
-lusb
-llwip
-lptpd
-leth
-li2c
-lrtc
-lcan
-lnand
-lspi
-lnor
-lpwm
-ladc
-ldac
-ltrace
-lcounter
-lshell
-llua
-lc
-lm
)
list(JOIN LIBS " " LIBS) # Convert list to space separated string
set(CMAKE_C_STANDARD_LIBRARIES ${LIBS})
set(CMAKE_CXX_STANDARD_LIBRARIES "${LIBS} -lstdc++")
# Group libraries when linking
set(CMAKE_C_LINK_EXECUTABLE "<CMAKE_C_COMPILER> <FLAGS> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> -Wl,--start-group <LINK_LIBRARIES> -Wl,--end-group")
set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_CXX_COMPILER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> -Wl,--start-group <LINK_LIBRARIES> -Wl,--end-group")

View File

@ -0,0 +1,5 @@
CMake tools and utilities
=========================
This repository contains common cmake functionality for rt-labs
open-source projects.

View File

@ -0,0 +1,17 @@
#********************************************************************
# _ _ _
# _ __ | |_ _ | | __ _ | |__ ___
# | '__|| __|(_)| | / _` || '_ \ / __|
# | | | |_ _ | || (_| || |_) |\__ \
# |_| \__|(_)|_| \__,_||_.__/ |___/
#
# http://www.rt-labs.com
# Copyright 2014 rt-labs AB, Sweden.
# See LICENSE file in the project root for full license information.
#*******************************************************************/
list(APPEND MACHINE
-mthumb-interwork
-mlittle-endian
-mthumb
)

View File

@ -0,0 +1,16 @@
#********************************************************************
# _ _ _
# _ __ | |_ _ | | __ _ | |__ ___
# | '__|| __|(_)| | / _` || '_ \ / __|
# | | | |_ _ | || (_| || |_) |\__ \
# |_| \__|(_)|_| \__,_||_.__/ |___/
#
# http://www.rt-labs.com
# Copyright 2010 rt-labs AB, Sweden.
# See LICENSE file in the project root for full license information.
#*******************************************************************/
list(APPEND MACHINE
-mlittle-endian
-mcpu=arm926ej-s
)

View File

@ -0,0 +1,17 @@
#********************************************************************
# _ _ _
# _ __ | |_ _ | | __ _ | |__ ___
# | '__|| __|(_)| | / _` || '_ \ / __|
# | | | |_ _ | || (_| || |_) |\__ \
# |_| \__|(_)|_| \__,_||_.__/ |___/
#
# http://www.rt-labs.com
# Copyright 2017 rt-labs AB, Sweden.
# See LICENSE file in the project root for full license information.
#*******************************************************************/
list(APPEND MACHINE
-mcpu=cortex-a8
-mfpu=neon
-mfloat-abi=hard
)

View File

@ -0,0 +1,16 @@
#********************************************************************
# _ _ _
# _ __ | |_ _ | | __ _ | |__ ___
# | '__|| __|(_)| | / _` || '_ \ / __|
# | | | |_ _ | || (_| || |_) |\__ \
# |_| \__|(_)|_| \__,_||_.__/ |___/
#
# http://www.rt-labs.com
# Copyright 2011 rt-labs AB, Sweden.
# See LICENSE file in the project root for full license information.
#*******************************************************************/
list(APPEND MACHINE
-mfpu=neon
-mcpu=cortex-a8
)

View File

@ -0,0 +1,17 @@
#********************************************************************
# _ _ _
# _ __ | |_ _ | | __ _ | |__ ___
# | '__|| __|(_)| | / _` || '_ \ / __|
# | | | |_ _ | || (_| || |_) |\__ \
# |_| \__|(_)|_| \__,_||_.__/ |___/
#
# http://www.rt-labs.com
# Copyright 2014 rt-labs AB, Sweden.
# See LICENSE file in the project root for full license information.
#*******************************************************************/
list(APPEND MACHINE
-mcpu=cortex-a9
-mfpu=vfpv3-d16
-mfloat-abi=hard
)

View File

@ -0,0 +1,16 @@
#********************************************************************
# _ _ _
# _ __ | |_ _ | | __ _ | |__ ___
# | '__|| __|(_)| | / _` || '_ \ / __|
# | | | |_ _ | || (_| || |_) |\__ \
# |_| \__|(_)|_| \__,_||_.__/ |___/
#
# http://www.rt-labs.com
# Copyright 2014 rt-labs AB, Sweden.
# See LICENSE file in the project root for full license information.
#*******************************************************************/
list(APPEND MACHINE
-mfpu=neon
-mcpu=cortex-a9
)

View File

@ -0,0 +1,17 @@
#********************************************************************
# _ _ _
# _ __ | |_ _ | | __ _ | |__ ___
# | '__|| __|(_)| | / _` || '_ \ / __|
# | | | |_ _ | || (_| || |_) |\__ \
# |_| \__|(_)|_| \__,_||_.__/ |___/
#
# http://www.rt-labs.com
# Copyright 2011 rt-labs AB, Sweden.
# See LICENSE file in the project root for full license information.
#*******************************************************************/
list(APPEND MACHINE
-mfpu=vfp
-mcpu=cortex-m3
-mthumb
)

View File

@ -0,0 +1,17 @@
#********************************************************************
# _ _ _
# _ __ | |_ _ | | __ _ | |__ ___
# | '__|| __|(_)| | / _` || '_ \ / __|
# | | | |_ _ | || (_| || |_) |\__ \
# |_| \__|(_)|_| \__,_||_.__/ |___/
#
# http://www.rt-labs.com
# Copyright 2011 rt-labs AB, Sweden.
# See LICENSE file in the project root for full license information.
#*******************************************************************/
list(APPEND MACHINE
-mfpu=vfp
-mcpu=cortex-m4
-mthumb
)

View File

@ -0,0 +1,18 @@
#********************************************************************
# _ _ _
# _ __ | |_ _ | | __ _ | |__ ___
# | '__|| __|(_)| | / _` || '_ \ / __|
# | | | |_ _ | || (_| || |_) |\__ \
# |_| \__|(_)|_| \__,_||_.__/ |___/
#
# http://www.rt-labs.com
# Copyright 2011 rt-labs AB, Sweden.
# See LICENSE file in the project root for full license information.
#*******************************************************************/
list(APPEND MACHINE
-mcpu=cortex-m4
-mthumb
-mfloat-abi=hard
-mfpu=fpv4-sp-d16
)

View File

@ -0,0 +1,18 @@
#********************************************************************
# _ _ _
# _ __ | |_ _ | | __ _ | |__ ___
# | '__|| __|(_)| | / _` || '_ \ / __|
# | | | |_ _ | || (_| || |_) |\__ \
# |_| \__|(_)|_| \__,_||_.__/ |___/
#
# http://www.rt-labs.com
# Copyright 2011 rt-labs AB, Sweden.
# See LICENSE file in the project root for full license information.
#*******************************************************************/
list(APPEND MACHINE
-mcpu=cortex-m7
-mthumb
-mfloat-abi=hard
-mfpu=fpv4-sp-d16
)

View File

@ -0,0 +1,18 @@
#********************************************************************
# _ _ _
# _ __ | |_ _ | | __ _ | |__ ___
# | '__|| __|(_)| | / _` || '_ \ / __|
# | | | |_ _ | || (_| || |_) |\__ \
# |_| \__|(_)|_| \__,_||_.__/ |___/
#
# http://www.rt-labs.com
# Copyright 2011 rt-labs AB, Sweden.
# See LICENSE file in the project root for full license information.
#*******************************************************************/
list(APPEND MACHINE
-mcpu=cortex-m7
-mthumb
-mfloat-abi=hard
-mfpu=fpv5-d16
)

View File

@ -0,0 +1,18 @@
#********************************************************************
# _ _ _
# _ __ | |_ _ | | __ _ | |__ ___
# | '__|| __|(_)| | / _` || '_ \ / __|
# | | | |_ _ | || (_| || |_) |\__ \
# |_| \__|(_)|_| \__,_||_.__/ |___/
#
# http://www.rt-labs.com
# Copyright 2018 rt-labs AB, Sweden.
# See LICENSE file in the project root for full license information.
#*******************************************************************/
list(APPEND MACHINE
-mcpu=cortex-r5
-mthumb
-mfloat-abi=hard
-mfpu=vfpv3-d16
)

View File

@ -0,0 +1,18 @@
#********************************************************************
# _ _ _
# _ __ | |_ _ | | __ _ | |__ ___
# | '__|| __|(_)| | / _` || '_ \ / __|
# | | | |_ _ | || (_| || |_) |\__ \
# |_| \__|(_)|_| \__,_||_.__/ |___/
#
# http://www.rt-labs.com
# Copyright 2011 rt-labs AB, Sweden.
# See LICENSE file in the project root for full license information.
#*******************************************************************/
list(APPEND MACHINE
-mcpu=8540
-mregnames
-mmultiple
-mabi=spe
)

View File

@ -0,0 +1,19 @@
#********************************************************************
# _ _ _
# _ __ | |_ _ | | __ _ | |__ ___
# | '__|| __|(_)| | / _` || '_ \ / __|
# | | | |_ _ | || (_| || |_) |\__ \
# |_| \__|(_)|_| \__,_||_.__/ |___/
#
# http://www.rt-labs.com
# Copyright 2011 rt-labs AB, Sweden.
# See LICENSE file in the project root for full license information.
#*******************************************************************/
list(APPEND MACHINE
-mbig
-mregnames
-mcpu=powerpc
-mcall-sysv
-meabi
)

View File

@ -0,0 +1,92 @@
#********************************************************************
# _ _ _
# _ __ | |_ _ | | __ _ | |__ ___
# | '__|| __|(_)| | / _` || '_ \ / __|
# | | | |_ _ | || (_| || |_) |\__ \
# |_| \__|(_)|_| \__,_||_.__/ |___/
#
# www.rt-labs.com
# Copyright 2017 rt-labs AB, Sweden.
#
# This software is licensed under the terms of the BSD 3-clause
# license. See the file LICENSE distributed with this software for
# full license information.
#*******************************************************************/
#[=======================================================================[.rst:
rt-kernel toolchain
-------------------
The following environment variables must be set when cmake
configuration is invoked::
RTK - Location of rt-kernel tree
BSP - Name of Board Support Package
The following environment variables are optional::
COMPILERS - Compiler search path, defaults to /opt/rt-tools/compilers
Your CMAKE_MODULE_PATH must also be configured so that
Platform/rt-kernel.cmake can be found.
Example to build for the xmc48relax board::
RTK=/path/to/rt-kernel BSP=xmc48relax cmake \
-B build.xmc48relax \
-DCMAKE_TOOLCHAIN_FILE=/path/to/rt-kernel.cmake
#]=======================================================================]
include_guard()
# The name of the target operating system
set(CMAKE_SYSTEM_NAME rt-kernel)
# Default toolchain search path
if (NOT DEFINED ENV{COMPILERS})
set(ENV{COMPILERS} "/opt/rt-tools/compilers")
endif()
# Get environment variables
set(RTK $ENV{RTK} CACHE STRING
"Location of rt-kernel tree")
set(COMPILERS $ENV{COMPILERS} CACHE STRING
"Location of compiler toolchain")
set(BSP $ENV{BSP} CACHE STRING
"The name of the BSP to build for")
# Check that bsp.mk exists
set(BSP_MK_FILE ${RTK}/bsp/${BSP}/${BSP}.mk)
if (NOT EXISTS ${BSP_MK_FILE})
message(FATAL_ERROR "Failed to open ${BSP_MK_FILE}")
endif()
# Slurp bsp.mk contents
file(READ ${BSP_MK_FILE} BSP_MK)
# Get CPU
string(REGEX MATCH "CPU=([A-Za-z0-9_\-]*)" _ ${BSP_MK})
set(CPU ${CMAKE_MATCH_1} CACHE STRING "")
# Get ARCH
string(REGEX MATCH "ARCH=([A-Za-z0-9_\-]*)" _ ${BSP_MK})
set(ARCH ${CMAKE_MATCH_1} CACHE STRING "")
# Get VARIANT
string(REGEX MATCH "VARIANT=([A-Za-z0-9_\-]*)" _ ${BSP_MK})
set(VARIANT ${CMAKE_MATCH_1} CACHE STRING "")
# Get CROSS_GCC
string(REGEX MATCH "CROSS_GCC=([A-Za-z0-9_\-]*)" _ ${BSP_MK})
set(CROSS_GCC ${CMAKE_MATCH_1} CACHE STRING "")
# Set cross-compiler toolchain
set(CMAKE_C_COMPILER ${COMPILERS}/${CROSS_GCC}/bin/${CROSS_GCC}-gcc)
set(CMAKE_CXX_COMPILER ${CMAKE_C_COMPILER})
if(CMAKE_HOST_WIN32)
set(CMAKE_C_COMPILER ${CMAKE_C_COMPILER}.exe)
set(CMAKE_CXX_COMPILER ${CMAKE_CXX_COMPILER}.exe)
endif(CMAKE_HOST_WIN32)
# Set cross-compiler machine-specific flags
include(toolchain/${CPU})

View File

@ -0,0 +1,54 @@
#********************************************************************
# _ _ _
# _ __ | |_ _ | | __ _ | |__ ___
# | '__|| __|(_)| | / _` || '_ \ / __|
# | | | |_ _ | || (_| || |_) |\__ \
# |_| \__|(_)|_| \__,_||_.__/ |___/
#
# www.rt-labs.com
# Copyright 2021 rt-labs AB, Sweden.
#
# This software is licensed under the terms of the BSD 3-clause
# license. See the file LICENSE distributed with this software for
# full license information.
#*******************************************************************/
#[=======================================================================[.rst:
STM32Cube toolchain
-------------------
The following environment variables must be set when cmake
configuration is invoked::
CPU - Name of CPU
BOARD - Name of board
CUBE_DIR - Path to STM32Cube firmware
Machine-specific flags will be loaded from toolchain/${CPU}.cmake. See
the toolchain folder for known values.
Your CMAKE_MODULE_PATH must also be configured so that
Platform/STM32Cube.cmake can be found.
#]=======================================================================]
include_guard()
# The name of the target operating system
set(CMAKE_SYSTEM_NAME STM32Cube)
set(CPU $ENV{CPU} CACHE STRING "")
set(BOARD $ENV{BOARD} CACHE STRING "")
set(CUBE_DIR $ENV{CUBE_DIR} CACHE STRING "")
# Set cross-compiler toolchain
set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(CMAKE_CXX_COMPILER ${CMAKE_C_COMPILER})
set(OBJCOPY arm-none-eabi-objcopy)
if(CMAKE_HOST_WIN32)
set(CMAKE_C_COMPILER ${CMAKE_C_COMPILER}.exe)
set(CMAKE_CXX_COMPILER ${CMAKE_CXX_COMPILER}.exe)
set(OBJCOPY ${OBJCOPY}.exe)
endif(CMAKE_HOST_WIN32)
# Set cross-compiler machine-specific flags
include(toolchain/${CPU})