Skip to content

Commit e312993

Browse files
committed
cap kind args
1 parent 36d9943 commit e312993

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

@@ -1323,12 +1323,27 @@ namespace @IMPL_NAMESPACE@ {
13231323

13241324
set(CAP_NAMES "")
13251325
set(CAP_TYPES "")
1326+
set(CAP_KINDS "")
13261327
if(HAS_CAPS)
13271328
math(EXPR LAST_CAP "${CAPS_LENGTH} - 1")
13281329
foreach(CAP_IDX RANGE 0 ${LAST_CAP})
1330+
string(JSON CAP_KIND ERROR_VARIABLE CAP_TYPE_ERROR GET "${IMPL_INPUTS}" ${INDEX} CAPS ${CAP_IDX} kind)
13291331
string(JSON CAP_NAME GET "${IMPL_INPUTS}" ${INDEX} CAPS ${CAP_IDX} name)
13301332
string(JSON CAP_TYPE GET "${IMPL_INPUTS}" ${INDEX} CAPS ${CAP_IDX} type)
13311333

1334+
# -> TODO: improve validation, input should be string
1335+
if(CAP_TYPE_ERROR)
1336+
set(CAP_KIND limits) # I assume its limit by default (or when invalid value present, currently)
1337+
else()
1338+
if(NOT CAP_KIND MATCHES "^(limits|features)$")
1339+
ERROR_WHILE_PARSING_ITEM(
1340+
"Invalid CAP kind \"${CAP_KIND}\" for ${CAP_NAME}\n"
1341+
"Allowed kinds are: limits, features"
1342+
)
1343+
endif()
1344+
endif()
1345+
# <-
1346+
13321347
if(NOT CAP_TYPE MATCHES "^(bool|uint16_t|uint32_t|uint64_t)$")
13331348
ERROR_WHILE_PARSING_ITEM(
13341349
"Invalid CAP type \"${CAP_TYPE}\" for ${CAP_NAME}\n"
@@ -1366,6 +1381,7 @@ namespace @IMPL_NAMESPACE@ {
13661381
set(CAP_VALUES_${CAP_IDX} "${VALUES}")
13671382
list(APPEND CAP_NAMES "${CAP_NAME}")
13681383
list(APPEND CAP_TYPES "${CAP_TYPE}")
1384+
list(APPEND CAP_KINDS "${CAP_KIND}")
13691385
endforeach()
13701386
endif()
13711387

@@ -1405,12 +1421,16 @@ namespace @IMPL_NAMESPACE@ {
14051421

14061422
]=])
14071423
unset(RETVAL_EVAL)
1408-
foreach(CAP ${CAP_NAMES})
1424+
list(LENGTH CAP_NAMES CAP_COUNT)
1425+
math(EXPR CAP_COUNT "${CAP_COUNT} - 1")
1426+
foreach(i RANGE ${CAP_COUNT})
1427+
list(GET CAP_NAMES ${i} CAP)
1428+
list(GET CAP_KINDS ${i} KIND)
14091429
string(CONFIGURE [=[
1410-
retval += ".@CAP@_" + std::to_string(limits.@CAP@);
1430+
retval += ".@CAP@_" + std::to_string(@KIND@.@CAP@);
14111431
]=] RETVALUE_VIEW @ONLY)
14121432
string(APPEND RETVAL_EVAL "${RETVALUE_VIEW}")
1413-
endforeach(CAP)
1433+
endforeach()
14141434
string(CONFIGURE "${HEADER_ITEM_VIEW}" HEADER_ITEM_EVAL @ONLY)
14151435
set_property(TARGET ${IMPL_TARGET} APPEND_STRING PROPERTY NBL_HEADER_CONTENT "${HEADER_ITEM_EVAL}")
14161436

@@ -1461,6 +1481,7 @@ namespace @IMPL_NAMESPACE@ {
14611481

14621482
list(GET CAP_NAMES ${CAP_INDEX} CURRENT_CAP)
14631483
list(GET CAP_TYPES ${CAP_INDEX} CURRENT_TYPE)
1484+
list(GET CAP_KINDS ${CAP_INDEX} CURRENT_KIND)
14641485
set(VAR_NAME "CAP_VALUES_${CAP_INDEX}")
14651486
set(VALUES "${${VAR_NAME}}")
14661487

0 commit comments

Comments
 (0)