@@ -1144,6 +1144,12 @@ define_property(TARGET PROPERTY NBL_MOUNT_POINT_DEFINES
11441144 BRIEF_DOCS "List of preprocessor defines with mount points"
11451145)
11461146
1147+ option (NSC_DEBUG_EDIF_FILE_BIT "Add \" -fspv-debug=file\" to NSC Debug CLI" ON )
1148+ option (NSC_DEBUG_EDIF_SOURCE_BIT "Add \" -fspv-debug=source\" to NSC Debug CLI" OFF )
1149+ option (NSC_DEBUG_EDIF_LINE_BIT "Add \" -fspv-debug=line\" to NSC Debug CLI" OFF )
1150+ option (NSC_DEBUG_EDIF_TOOL_BIT "Add \" -fspv-debug=tool\" to NSC Debug CLI" ON )
1151+ option (NSC_DEBUG_EDIF_NON_SEMANTIC_BIT "Add \" -fspv-debug=vulkan-with-source\" to NSC Debug CLI" OFF )
1152+
11471153function (NBL_CREATE_NSC_COMPILE_RULES)
11481154 set (COMMENT "this code has been autogenerated with Nabla CMake NBL_CREATE_HLSL_COMPILE_RULES utility" )
11491155 set (DEVICE_CONFIG_VIEW
@@ -1178,9 +1184,34 @@ struct DeviceConfigCaps
11781184 -enable-16bit-types
11791185 -Zpr
11801186 -spirv
1181- -fspv-target -env=vulkan1.3
1187+ -fspv-target -env=vulkan1.3
1188+ -WShadow
1189+ -WConversion
1190+ $<$<CONFIG:Debug>:-O0>
1191+ $<$<CONFIG:Release>:-O3>
1192+ $<$<CONFIG:RelWithDebInfo>:-O3>
11821193 )
11831194
1195+ if (NSC_DEBUG_EDIF_FILE_BIT)
1196+ list (APPEND REQUIRED_OPTIONS $<$<CONFIG:Debug>:-fspv-debug=file>)
1197+ endif ()
1198+
1199+ if (NSC_DEBUG_EDIF_SOURCE_BIT)
1200+ list (APPEND REQUIRED_OPTIONS $<$<CONFIG:Debug>:-fspv-debug=source >)
1201+ endif ()
1202+
1203+ if (NSC_DEBUG_EDIF_LINE_BIT)
1204+ list (APPEND REQUIRED_OPTIONS $<$<CONFIG:Debug>:-fspv-debug=line>)
1205+ endif ()
1206+
1207+ if (NSC_DEBUG_EDIF_TOOL_BIT)
1208+ list (APPEND REQUIRED_OPTIONS $<$<CONFIG:Debug>:-fspv-debug=tool>)
1209+ endif ()
1210+
1211+ if (NSC_DEBUG_EDIF_NON_SEMANTIC_BIT)
1212+ list (APPEND REQUIRED_OPTIONS $<$<CONFIG:Debug>:-fspv-debug=vulkan-with-source >)
1213+ endif ()
1214+
11841215 if (NOT NBL_EMBED_BUILTIN_RESOURCES)
11851216 list (APPEND REQUIRED_OPTIONS
11861217 -I "${NBL_ROOT_PATH} /include"
@@ -1210,12 +1241,12 @@ struct DeviceConfigCaps
12101241
12111242 get_target_property (HEADER_RULE_GENERATED ${IMPL_TARGET} NBL_HEADER_GENERATED_RULE)
12121243 if (NOT HEADER_RULE_GENERATED)
1213- set (INCLUDE_DIR "$<TARGET_PROPERTY:${IMPL_TARGET} ,BINARY_DIR>/${IMPL_TARGET} /.cmake/include" )
1244+ set (INCLUDE_DIR "$<TARGET_PROPERTY:${IMPL_TARGET} ,BINARY_DIR>/${IMPL_TARGET} /.cmake/include/$<CONFIG> " )
12141245 set (INCLUDE_FILE "${INCLUDE_DIR} /$<TARGET_PROPERTY:${IMPL_TARGET} ,NBL_HEADER_PATH>" )
12151246 set (INCLUDE_CONTENT $<TARGET_PROPERTY:${IMPL_TARGET} ,NBL_HEADER_CONTENT>)
12161247
12171248 file (GENERATE OUTPUT ${INCLUDE_FILE}
1218- CONTENT ${INCLUDE_CONTENT}
1249+ CONTENT $<GENEX_EVAL: $ {INCLUDE_CONTENT}>
12191250 TARGET ${IMPL_TARGET}
12201251 )
12211252
@@ -1420,7 +1451,7 @@ namespace @IMPL_NAMESPACE@ {
14201451 nbl::core::string retval = "@BASE_KEY@";
14211452@RETVAL_EVAL@
14221453 retval += ".spv";
1423- return retval;
1454+ return "$<CONFIG>/" + retval;
14241455 }
14251456}
14261457
@@ -1444,46 +1475,50 @@ namespace @IMPL_NAMESPACE@ {
14441475
14451476 function (GENERATE_KEYS PREFIX CAP_INDEX CAPS_EVAL_PART)
14461477 if (NUM_CAPS EQUAL 0 OR CAP_INDEX EQUAL ${NUM_CAPS} )
1478+ # generate .config file
14471479 set (FINAL_KEY "${BASE_KEY}${PREFIX} .spv" ) # always add ext even if its already there to make sure asset loader always is able to load as IShader
1448-
1449- set (TARGET_OUTPUT "${IMPL_BINARY_DIR} /${FINAL_KEY} " )
1450- set (CONFIG_FILE "${TARGET_OUTPUT} .config" )
1480+ set (CONFIG_FILE_TARGET_OUTPUT "${IMPL_BINARY_DIR} /${FINAL_KEY} " )
1481+ set (CONFIG_FILE "${CONFIG_FILE_TARGET_OUTPUT} .config" )
14511482 set (CAPS_EVAL "${CAPS_EVAL_PART} " )
1452-
14531483 string (CONFIGURE "${DEVICE_CONFIG_VIEW} " CONFIG_CONTENT @ONLY)
14541484 file (WRITE "${CONFIG_FILE} " "${CONFIG_CONTENT} " )
14551485
1456- set (NBL_NSC_COMPILE_COMMAND
1457- "$<TARGET_FILE:nsc>"
1458- -Fc "${TARGET_OUTPUT} "
1459- ${COMPILE_OPTIONS} ${REQUIRED_OPTIONS} ${IMPL_COMMON_OPTIONS}
1460- "${CONFIG_FILE} "
1461- )
1462-
1463- add_custom_command (OUTPUT "${TARGET_OUTPUT} "
1464- COMMAND ${NBL_NSC_COMPILE_COMMAND}
1465- DEPENDS ${DEPENDS_ON}
1466- COMMENT "Creating \" ${TARGET_OUTPUT} \" "
1467- VERBATIM
1468- COMMAND_EXPAND_LISTS
1469- )
1470-
1471- set (HEADER_ONLY_LIKE "${CONFIG_FILE} " "${TARGET_INPUT} " "${TARGET_OUTPUT} " )
1472- target_sources (${IMPL_TARGET} PRIVATE ${HEADER_ONLY_LIKE} )
1473-
1474- set_source_files_properties (${HEADER_ONLY_LIKE} PROPERTIES
1475- HEADER_FILE_ONLY ON
1476- VS_TOOL_OVERRIDE None
1477- )
1478-
1479- set_source_files_properties ("${TARGET_OUTPUT} " PROPERTIES
1480- NBL_SPIRV_REGISTERED_INPUT "${TARGET_INPUT} "
1481- NBL_SPIRV_PERMUTATION_CONFIG "${CONFIG_FILE} "
1482- NBL_SPIRV_BINARY_DIR "${IMPL_BINARY_DIR} "
1483- NBL_SPIRV_ACCESS_KEY "${FINAL_KEY} "
1484- )
1485-
1486- set_property (TARGET ${IMPL_TARGET} APPEND PROPERTY NBL_SPIRV_OUTPUTS "${TARGET_OUTPUT} " )
1486+ # generate keys and commands for compiling shaders
1487+ foreach (BUILD_CONFIGURATION ${CMAKE_CONFIGURATION_TYPES} )
1488+ set (TARGET_OUTPUT "${IMPL_BINARY_DIR} /${BUILD_CONFIGURATION} /${FINAL_KEY} " )
1489+
1490+ set (NBL_NSC_COMPILE_COMMAND
1491+ "$<TARGET_FILE:nsc>"
1492+ -Fc "${TARGET_OUTPUT} "
1493+ ${COMPILE_OPTIONS} ${REQUIRED_OPTIONS} ${IMPL_COMMON_OPTIONS}
1494+ "${CONFIG_FILE} "
1495+ )
1496+
1497+ add_custom_command (OUTPUT "${TARGET_OUTPUT} "
1498+ COMMAND ${NBL_NSC_COMPILE_COMMAND}
1499+ DEPENDS ${DEPENDS_ON}
1500+ COMMENT "Creating \" ${TARGET_OUTPUT} \" "
1501+ VERBATIM
1502+ COMMAND_EXPAND_LISTS
1503+ )
1504+
1505+ set (HEADER_ONLY_LIKE "${CONFIG_FILE} " "${TARGET_INPUT} " "${TARGET_OUTPUT} " )
1506+ target_sources (${IMPL_TARGET} PRIVATE ${HEADER_ONLY_LIKE} )
1507+
1508+ set_source_files_properties (${HEADER_ONLY_LIKE} PROPERTIES
1509+ HEADER_FILE_ONLY ON
1510+ VS_TOOL_OVERRIDE None
1511+ )
1512+
1513+ set_source_files_properties ("${TARGET_OUTPUT} " PROPERTIES
1514+ NBL_SPIRV_REGISTERED_INPUT "${TARGET_INPUT} "
1515+ NBL_SPIRV_PERMUTATION_CONFIG "${CONFIG_FILE} "
1516+ NBL_SPIRV_BINARY_DIR "${IMPL_BINARY_DIR} "
1517+ NBL_SPIRV_ACCESS_KEY "${FINAL_KEY} "
1518+ )
1519+
1520+ set_property (TARGET ${IMPL_TARGET} APPEND PROPERTY NBL_SPIRV_OUTPUTS "${TARGET_OUTPUT} " )
1521+ endforeach ()
14871522 return ()
14881523 endif ()
14891524
0 commit comments