Skip to content

Commit 1c46bcb

Browse files
committed
updated toolchain file
1 parent 7c858e3 commit 1c46bcb

File tree

1 file changed

+39
-22
lines changed

1 file changed

+39
-22
lines changed

RTEMSToolchain.cmake

Lines changed: 39 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
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

1212
set(RTEMS_PREFIX ${RTEMS_PREFIX} CACHE FILEPATH "RTEMS prefix")
1313
set(RTEMS_BSP ${RTEMS_BSP} CACHE STRING "RTEMS BSP pair")
14+
option(RTEMS_VERBOSE "Verbose output for the RTEMS CMake support" FALSE)
1415

1516
set(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")
2728
endif()
2829

2930
if(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")
3637
endif()
3738

3839
if(NOT RTEMS_VERSION)
@@ -46,8 +47,7 @@ set(RTEMS_VERSION "${RTEMS_VERSION}" CACHE STRING "RTEMS version")
4647

4748
message(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})
5151
list(LENGTH RTEMS_BSP_LIST_SEPARATED BSP_LIST_SIZE)
5252

5353
if(NOT ${BSP_LIST_SIZE} EQUAL 2)
@@ -60,16 +60,19 @@ endif()
6060
list(GET RTEMS_BSP_LIST_SEPARATED 0 RTEMS_ARCH_NAME)
6161
list(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
)
7070
endif()
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}")
7376
if(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}")
108111
endif()
109112

110113
message(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")
112115
if(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
)
117120
endif()
118121

119122
message(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++")
121124
if(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
)
126129
endif()
127130

128131
message(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")
130133
if(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")
134137
endif()
135138

136139
message(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")
138141
if(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")
142145
endif()
143146

144147
message(STATUS "Checking done")
@@ -152,7 +155,7 @@ message(STATUS "RTEMS prefix: ${RTEMS_PREFIX}")
152155
message(STATUS "RTEMS tools path: ${RTEMS_TOOLS}")
153156
message(STATUS "RTEMS BSP pair: ${RTEMS_BSP}")
154157
message(STATUS "RTEMS architecture tools path: "
155-
"${RTEMS_PATH}/${RTEMS_ARCH_TOOLS}")
158+
"${RTEMS_PATH}/${RTEMS_ARCH_VERSION_NAME}")
156159
message(STATUS "RTEMS BSP library path: ${RTEMS_BSP_LIB_PATH}")
157160
message(STATUS "RTEMS BSP include path: ${RTEMS_BSP_INC_PATH}")
158161
message(STATUS "RTEMS install target: ${RTEMS_INSTALL}")
@@ -175,8 +178,22 @@ set(CMAKE_CXX_COMPILER ${RTEMS_GXX})
175178
set(CMAKE_ASM_COMPILER ${RTEMS_ASM})
176179
set(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+
)
178187
set(RTEMS_BSP_LIB_PATH ${RTEMS_BSP_LIB_PATH} CACHE FILEPATH "BSP library path")
179188
set(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

Comments
 (0)