Skip to content

Commit 9e4c75e

Browse files
AnastaZIukPrzemog1
authored andcommitted
cap kind args
1 parent d7da234 commit 9e4c75e

File tree

1 file changed

+25
-4
lines changed

1 file changed

+25
-4
lines changed

cmake/common.cmake

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1210,7 +1210,7 @@ struct DeviceConfigCaps
12101210

12111211
get_target_property(HEADER_RULE_GENERATED ${IMPL_TARGET} NBL_HEADER_GENERATED_RULE)
12121212
if(NOT HEADER_RULE_GENERATED)
1213-
set(INCLUDE_DIR "$<TARGET_PROPERTY:${IMPL_TARGET},BINARY_DIR>/${IMPL_TARGET}/.cmake/include")
1213+
set(INCLUDE_DIR "$<TARGET_PROPERTY:${IMPL_TARGET},BINARY_DIR>/${IMPL_TARGET}/.cmake/include")
12141214
set(INCLUDE_FILE "${INCLUDE_DIR}/$<TARGET_PROPERTY:${IMPL_TARGET},NBL_HEADER_PATH>")
12151215
set(INCLUDE_CONTENT $<TARGET_PROPERTY:${IMPL_TARGET},NBL_HEADER_CONTENT>)
12161216

@@ -1328,12 +1328,27 @@ namespace @IMPL_NAMESPACE@ {
13281328

13291329
set(CAP_NAMES "")
13301330
set(CAP_TYPES "")
1331+
set(CAP_KINDS "")
13311332
if(HAS_CAPS)
13321333
math(EXPR LAST_CAP "${CAPS_LENGTH} - 1")
13331334
foreach(CAP_IDX RANGE 0 ${LAST_CAP})
1335+
string(JSON CAP_KIND ERROR_VARIABLE CAP_TYPE_ERROR GET "${IMPL_INPUTS}" ${INDEX} CAPS ${CAP_IDX} kind)
13341336
string(JSON CAP_NAME GET "${IMPL_INPUTS}" ${INDEX} CAPS ${CAP_IDX} name)
13351337
string(JSON CAP_TYPE GET "${IMPL_INPUTS}" ${INDEX} CAPS ${CAP_IDX} type)
13361338

1339+
# -> TODO: improve validation, input should be string
1340+
if(CAP_TYPE_ERROR)
1341+
set(CAP_KIND limits) # I assume its limit by default (or when invalid value present, currently)
1342+
else()
1343+
if(NOT CAP_KIND MATCHES "^(limits|features)$")
1344+
ERROR_WHILE_PARSING_ITEM(
1345+
"Invalid CAP kind \"${CAP_KIND}\" for ${CAP_NAME}\n"
1346+
"Allowed kinds are: limits, features"
1347+
)
1348+
endif()
1349+
endif()
1350+
# <-
1351+
13371352
if(NOT CAP_TYPE MATCHES "^(bool|uint16_t|uint32_t|uint64_t)$")
13381353
ERROR_WHILE_PARSING_ITEM(
13391354
"Invalid CAP type \"${CAP_TYPE}\" for ${CAP_NAME}\n"
@@ -1371,6 +1386,7 @@ namespace @IMPL_NAMESPACE@ {
13711386
set(CAP_VALUES_${CAP_IDX} "${VALUES}")
13721387
list(APPEND CAP_NAMES "${CAP_NAME}")
13731388
list(APPEND CAP_TYPES "${CAP_TYPE}")
1389+
list(APPEND CAP_KINDS "${CAP_KIND}")
13741390
endforeach()
13751391
endif()
13761392

@@ -1410,12 +1426,16 @@ namespace @IMPL_NAMESPACE@ {
14101426

14111427
]=])
14121428
unset(RETVAL_EVAL)
1413-
foreach(CAP ${CAP_NAMES})
1429+
list(LENGTH CAP_NAMES CAP_COUNT)
1430+
math(EXPR CAP_COUNT "${CAP_COUNT} - 1")
1431+
foreach(i RANGE ${CAP_COUNT})
1432+
list(GET CAP_NAMES ${i} CAP)
1433+
list(GET CAP_KINDS ${i} KIND)
14141434
string(CONFIGURE [=[
1415-
retval += ".@CAP@_" + std::to_string(limits.@CAP@);
1435+
retval += ".@CAP@_" + std::to_string(@KIND@.@CAP@);
14161436
]=] RETVALUE_VIEW @ONLY)
14171437
string(APPEND RETVAL_EVAL "${RETVALUE_VIEW}")
1418-
endforeach(CAP)
1438+
endforeach()
14191439
string(CONFIGURE "${HEADER_ITEM_VIEW}" HEADER_ITEM_EVAL @ONLY)
14201440
set_property(TARGET ${IMPL_TARGET} APPEND_STRING PROPERTY NBL_HEADER_CONTENT "${HEADER_ITEM_EVAL}")
14211441

@@ -1466,6 +1486,7 @@ namespace @IMPL_NAMESPACE@ {
14661486

14671487
list(GET CAP_NAMES ${CAP_INDEX} CURRENT_CAP)
14681488
list(GET CAP_TYPES ${CAP_INDEX} CURRENT_TYPE)
1489+
list(GET CAP_KINDS ${CAP_INDEX} CURRENT_KIND)
14691490
set(VAR_NAME "CAP_VALUES_${CAP_INDEX}")
14701491
set(VALUES "${${VAR_NAME}}")
14711492

0 commit comments

Comments
 (0)