You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# Function for searching and returning the correct folder during cross compilation
148
-
# Folders are returned according to first match:
149
-
#
150
-
# -# ${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR}.${CMAKE_SYSTEM_PROCESSOR_VARIANT}: If two level folder with .variant - with same name exists.
151
-
# -# ${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR}: If .variant does not exist but two level folder with same name exists.
152
-
# -# ${CMAKE_SYSTEM_NAME}/[Gg]eneric: If ${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR} does not exists but folder ${CMAKE_SYSTEM_NAME}/${IN_MATCH_PATTERN}/[Gg]eneric exists.
153
-
# -# ${CMAKE_SYSTEM_NAME}/: If folder with same name exists.
154
-
# -# ${CMAKE_SYSTEM_PROCESSOR}.${CMAKE_SYSTEM_PROCESSOR_VARIANT}: If folder with same name exists.
155
-
# -# ${CMAKE_SYSTEM_PROCESSOR}: If .variant does not exist, but folder with same name exists.
156
-
# -# [Gg]eneric: If ${CMAKE_SYSTEM_PROCESSOR} does not exists but folder '[Gg]eneric' exists.
157
-
# -# ${IN_MATCH_PATTERN}: The folder itself is returned
158
-
# -# '': If no matches are found
159
-
#
160
-
# For all tests above, it applies that if ${IN_MATCH_PATTERN} is set then the folder is only
161
-
# returned if a file/folder matching the pattern is found.
162
-
# e.g. if ${IN_MATCH_PATTERN} is set to 'include' and ${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR}
163
-
# does not contain an 'include' file/folder then the tests continues to 2)
164
-
# If IN_MATCH_PATTERN is empty string, i.e. "", then the first matched folder is returned.
165
-
#
166
-
#
167
-
# @b Example
168
-
#
169
-
# Example from @b SubTree/TestFramework/unity/CMakeLists.txt file where \ref cross_system_dir is
170
-
# used.
171
-
#
172
-
# In @c unity cross_system_dir is used to determine platform dependent implementation of the file
173
-
# @c unity_print to use for compilation.
174
-
#
175
-
# - On host system (Windows/Linux on x86), the file @c generic/unity_print.c is used.
176
-
# - On cross system, @b CMAKE_SYSTEM_PROCESSOR=asip, the file @c asip/unity_print.c is used.
177
-
# - On cross system, @b CMAKE_SYSTEM_PROCESSOR=zw700, the file @c zw700/unity_print.c is used.
178
-
# - On cross system, @b CMAKE_SYSTEM_PROCESSOR=c51, the file @c c51/unity_print.c is used.
179
-
#
180
-
# @code
181
-
#CROSS_SYSTEM_DIR("." "" CROSS_SYSTEM_DIR)
182
-
#
183
-
#SET(SOURCES
184
-
# unity.c
185
-
# ${CROSS_SYSTEM_DIR}/unity_print.c )
186
-
# @endcode
187
-
#
188
-
# @param[in] IN_SEARCH_PATH Name of path/folder that should be seached
189
-
# @param[in] IN_MATCH_PATTERN Name of subfolder/file in search path that should be found, set to "" / or empty variable if no match folder is needed
190
-
# @param[out] OUT_CROSS_SYSTEM_DIR Name of path/folder which matched above rule
IF((CMAKE_SYSTEM_NAME) AND (CMAKE_SYSTEM_PROCESSOR) AND (CMAKE_SYSTEM_PROCESSOR_VARIANT) AND (EXISTS${IN_SEARCH_PATH}/${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR}.${CMAKE_SYSTEM_PROCESSOR_VARIANT}/${IN_MATCH_PATTERN})) # 1. /SYSTEM_NAME/SYSTEM_PROCESSOR.SYSTEM_PROCESSOR_VARIANT/IN_MATCH_PATTERN
ELSEIF((CMAKE_SYSTEM_NAME) AND (CMAKE_SYSTEM_PROCESSOR) AND (EXISTS${IN_SEARCH_PATH}/${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR}/${IN_MATCH_PATTERN})) # 2. /SYSTEM_NAME/SYSTEM_PROCESSOR/IN_MATCH_PATTERN
ELSEIF((CMAKE_SYSTEM_NAME) AND (NOT (${CMAKE_SYSTEM_NAME}STREQUAL"Generic")) AND (EXISTS${IN_SEARCH_PATH}/${CMAKE_SYSTEM_NAME}/${IN_MATCH_PATTERN})) # 4. /SYSTEM_NAME/IN_MATCH_PATTERN
ELSEIF((CMAKE_SYSTEM_PROCESSOR) AND (CMAKE_SYSTEM_PROCESSOR_VARIANT) AND (EXISTS${IN_SEARCH_PATH}/${CMAKE_SYSTEM_PROCESSOR}.${CMAKE_SYSTEM_PROCESSOR_VARIANT}/${IN_MATCH_PATTERN})) # 5. /SYSTEM_PROCESSOR.SYSTEM_PROCESSOR_VARIANT/IN_MATCH_PATTERN
MESSAGE(WARNING "CROSS_SYSTEM_DIR failed to find cross platform implementation, returning empty string.\n Fix this warning by creating a cross platform folder for ${CMAKE_SYSTEM_NAME}:${CMAKE_SYSTEM_PROCESSOR} in ${IN_SEARCH_PATH}.")
220
-
ELSE("${IN_MATCH_PATTERN}"STREQUAL"")
221
-
MESSAGE(WARNING "CROSS_SYSTEM_DIR failed to find cross platform implementation, returning empty string.\n Fix this warning by creating a cross platform folder for ${CMAKE_SYSTEM_NAME}:${CMAKE_SYSTEM_PROCESSOR} in ${IN_SEARCH_PATH} containing ${IN_MATCH_PATTERN}")
0 commit comments