11################################################################################
2- # RTEMS toolchain path configuration
2+ # Generic Toolchain configuration
33################################################################################
44
55# This file can be loaded with -DCMAKE_TOOLCHAIN_FILE, but we need to
@@ -11,6 +11,7 @@ set(CMAKE_CROSSCOMPILING 1)
1111
1212set (RTEMS_PREFIX ${RTEMS_PREFIX} CACHE FILEPATH "RTEMS prefix" )
1313set (RTEMS_BSP ${RTEMS_BSP} CACHE STRING "RTEMS BSP pair" )
14+ option (RTEMS_VERBOSE "Verbose output for the RTEMS CMake support" FALSE )
1415
1516set (RTEMS_INSTALL
1617 ${CMAKE_INSTALL_PREFIX}
@@ -22,17 +23,17 @@ if(NOT RTEMS_PATH)
2223 "RTEMS path was not specified and was set to RTEMS prefix."
2324 )
2425 set (RTEMS_PATH ${RTEMS_PREFIX} CACHE FILEPATH "RTEMS folder" )
25- else ()
26- set (RTEMS_TOOLS ${RTEMS_PATH} CACHE FILEPATH "RTEMS path folder" )
26+ # else()
27+ # set(RTEMS_PATH ${RTEMS_PATH} CACHE FILEPATH "RTEMS path folder")
2728endif ()
2829
2930if (NOT RTEMS_TOOLS)
3031 message (STATUS
3132 "RTEMS toolchain path was not specified and was set to RTEMS prefix."
3233 )
3334 set (RTEMS_TOOLS ${RTEMS_PREFIX} CACHE FILEPATH "RTEMS tools folder" )
34- else ()
35- set (RTEMS_TOOLS ${RTEMS_TOOLS} CACHE FILEPATH "RTEMS tools folder" )
35+ # else()
36+ # set(RTEMS_TOOLS ${RTEMS_TOOLS} CACHE FILEPATH "RTEMS tools folder")
3637endif ()
3738
3839if (NOT RTEMS_VERSION)
@@ -46,8 +47,7 @@ set(RTEMS_VERSION "${RTEMS_VERSION}" CACHE STRING "RTEMS version")
4647
4748message (STATUS "Setting up and checking RTEMS cross compile configuration.." )
4849
49- string (REPLACE "/" ";" RTEMS_BSP_LIST_SEPARATED ${RTEMS_BSP} )
50- message (STATUS "${RTEMS_BSP_LIST_SEPARATED} " )
50+ string (REPLACE "/" ";" RTEMS_BSP_LIST_SEPARATED ${RTEMS_BSP_PAIR} )
5151list (LENGTH RTEMS_BSP_LIST_SEPARATED BSP_LIST_SIZE)
5252
5353if (NOT ${BSP_LIST_SIZE} EQUAL 2)
@@ -60,16 +60,19 @@ endif()
6060list (GET RTEMS_BSP_LIST_SEPARATED 0 RTEMS_ARCH_NAME)
6161list (GET RTEMS_BSP_LIST_SEPARATED 1 RTEMS_BSP_NAME)
6262
63- set (RTEMS_ARCH_TOOLS "${RTEMS_ARCH_NAME} -rtems${RTEMS_VERSION} " )
63+ set (RTEMS_ARCH_VERSION_NAME "${RTEMS_ARCH_NAME} -rtems${RTEMS_VERSION} " )
6464
65- if (NOT IS_DIRECTORY "${RTEMS_PATH } /${RTEMS_ARCH_TOOLS } " )
65+ if (NOT IS_DIRECTORY "${RTEMS_TOOLS } /${RTEMS_ARCH_VERSION_NAME } " )
6666 message (FATAL_ERROR
6767 "RTEMS architecure folder not found at "
68- "${RTEMS_PATH } /${RTEMS_ARCH_TOOLS } "
68+ "${RTEMS_TOOLS } /${RTEMS_ARCH_VERSION_NAME } "
6969 )
7070endif ()
71-
72- set (RTEMS_BSP_PATH "${RTEMS_PATH} /${RTEMS_ARCH_TOOLS} /${RTEMS_BSP_NAME} " )
71+
72+ set (RTEMS_ARCH_LIB_PATH "${RTEMS_TOOLS} /${RTEMS_ARCH_VERSION_NAME} /lib" )
73+ set (RTEMS_TOOLS_LIB_PATH "${RTEMS_TOOLS} /lib" )
74+
75+ set (RTEMS_BSP_PATH "${RTEMS_PATH} /${RTEMS_ARCH_VERSION_NAME} /${RTEMS_BSP_NAME} " )
7376if (NOT IS_DIRECTORY ${RTEMS_BSP_PATH} )
7477 message (STATUS
7578 "Supplied or autodetermined BSP path "
@@ -108,37 +111,37 @@ if(NOT IS_DIRECTORY "${RTEMS_BIN_PATH}")
108111endif ()
109112
110113message (STATUS "Checking for RTEMS gcc.." )
111- set (RTEMS_GCC "${RTEMS_BIN_PATH} /${RTEMS_ARCH_TOOLS } -gcc" )
114+ set (RTEMS_GCC "${RTEMS_BIN_PATH} /${RTEMS_ARCH_VERSION_NAME } -gcc" )
112115if (NOT EXISTS "${RTEMS_GCC} " )
113116 message (FATAL_ERROR
114117 "RTEMS gcc compiler not found at "
115- "${RTEMS_BIN_PATH} /${RTEMS_ARCH_TOOLS } -gcc"
118+ "${RTEMS_BIN_PATH} /${RTEMS_ARCH_VERSION_NAME } -gcc"
116119 )
117120endif ()
118121
119122message (STATUS "Checking for RTEMS g++.." )
120- set (RTEMS_GXX "${RTEMS_BIN_PATH} /${RTEMS_ARCH_TOOLS } -g++" )
123+ set (RTEMS_GXX "${RTEMS_BIN_PATH} /${RTEMS_ARCH_VERSION_NAME } -g++" )
121124if (NOT EXISTS "${RTEMS_GXX} " )
122125 message (FATAL_ERROR
123126 "RTEMS g++ compiler not found at "
124- "${RTEMS_BIN_PATH} /${RTEMS_ARCH_TOOLS } -g++"
127+ "${RTEMS_BIN_PATH} /${RTEMS_ARCH_VERSION_NAME } -g++"
125128 )
126129endif ()
127130
128131message (STATUS "Checking for RTEMS assembler.." )
129- set (RTEMS_ASM "${RTEMS_BIN_PATH} /${RTEMS_ARCH_TOOLS } -as" )
132+ set (RTEMS_ASM "${RTEMS_BIN_PATH} /${RTEMS_ARCH_VERSION_NAME } -as" )
130133if (NOT EXISTS "${RTEMS_GXX} " )
131134 message (FATAL_ERROR
132135 "RTEMS as compiler not found at "
133- "${RTEMS_BIN_PATH} /${RTEMS_ARCH_TOOLS } -as" )
136+ "${RTEMS_BIN_PATH} /${RTEMS_ARCH_VERSION_NAME } -as" )
134137endif ()
135138
136139message (STATUS "Checking for RTEMS linker.." )
137- set (RTEMS_LINKER "${RTEMS_BIN_PATH} /${RTEMS_ARCH_TOOLS } -ld" )
140+ set (RTEMS_LINKER "${RTEMS_BIN_PATH} /${RTEMS_ARCH_VERSION_NAME } -ld" )
138141if (NOT EXISTS "${RTEMS_LINKER} " )
139142 message (FATAL_ERROR
140143 "RTEMS ld linker not found at "
141- "${RTEMS_BIN_PATH} /${RTEMS_ARCH_TOOLS } -ld" )
144+ "${RTEMS_BIN_PATH} /${RTEMS_ARCH_VERSION_NAME } -ld" )
142145endif ()
143146
144147message (STATUS "Checking done" )
@@ -152,7 +155,7 @@ message(STATUS "RTEMS prefix: ${RTEMS_PREFIX}")
152155message (STATUS "RTEMS tools path: ${RTEMS_TOOLS} " )
153156message (STATUS "RTEMS BSP pair: ${RTEMS_BSP} " )
154157message (STATUS "RTEMS architecture tools path: "
155- "${RTEMS_PATH} /${RTEMS_ARCH_TOOLS } " )
158+ "${RTEMS_PATH} /${RTEMS_ARCH_VERSION_NAME } " )
156159message (STATUS "RTEMS BSP library path: ${RTEMS_BSP_LIB_PATH} " )
157160message (STATUS "RTEMS BSP include path: ${RTEMS_BSP_INC_PATH} " )
158161message (STATUS "RTEMS install target: ${RTEMS_INSTALL} " )
@@ -175,8 +178,22 @@ set(CMAKE_CXX_COMPILER ${RTEMS_GXX})
175178set (CMAKE_ASM_COMPILER ${RTEMS_ASM} )
176179set (CMAKE_LINKER ${RTEMS_LINKER} )
177180
181+ # Variables set in the cache so they can be used everywhere.
182+ set (RTEMS_ARCH_NAME ${RTEMS_ARCH_NAME} CACHE FILEPATH "Architecture name" )
183+ set (RTEMS_BSP_NAME ${RTEMS_BSP_NAME} CACHE FILEPATH "BSP name" )
184+ set (RTEMS_TOOLS_LIB_PATH ${RTEMS_TOOLS_LIB_PATH}
185+ CACHE FILEPATH "Tools library path"
186+ )
178187set (RTEMS_BSP_LIB_PATH ${RTEMS_BSP_LIB_PATH} CACHE FILEPATH "BSP library path" )
179188set (RTEMS_BSP_INC_PATH ${RTEMS_BSP_INC_PATH} CACHE FILEPATH "BSP include path" )
180- set (RTEMS_ARCH_LIB_PATH ${RTEMS_BSP_INC_PATH }
189+ set (RTEMS_ARCH_LIB_PATH ${RTEMS_ARCH_LIB_PATH }
181190 CACHE FILEPATH "Architecture library path"
182191)
192+ set (RTEMS_ARCH_VERSION_NAME ${RTEMS_ARCH_VERSION_NAME}
193+ CACHE FILEPATH "Unique architecture-version identifier"
194+ )
195+
196+ list (APPEND CMAKE_PREFIX_PATH ${RTEMS_BSP_LIB_PATH} )
197+ list (APPEND CMAKE_PREFIX_PATH ${RTEMS_BSP_INC_PATH} )
198+ list (APPEND CMAKE_PREFIX_PATH ${RTEMS_ARCH_LIB_PATH} )
199+ list (APPEND CMAKE_PREFIX_PATH ${RTEMS_TOOLS_LIB_PATH} )
0 commit comments