93 lines
2.8 KiB
CMake
93 lines
2.8 KiB
CMake
|
|
#********************************************************************
|
||
|
|
# _ _ _
|
||
|
|
# _ __ | |_ _ | | __ _ | |__ ___
|
||
|
|
# | '__|| __|(_)| | / _` || '_ \ / __|
|
||
|
|
# | | | |_ _ | || (_| || |_) |\__ \
|
||
|
|
# |_| \__|(_)|_| \__,_||_.__/ |___/
|
||
|
|
#
|
||
|
|
# 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})
|