# Copyright (c) 2025 Dominic Masters # # This software is released under the MIT License. # https://opensource.org/licenses/MIT # Path to the CMake script for converting GLSL to header set(DUSK_GLSL_TOOL_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/glsltool.cmake CACHE INTERNAL ${DUSK_CACHE_TARGET}) # GLSL to C-code function(glsltool GLSL_FILE) get_filename_component(GLSL_FILE_NAME_WE ${GLSL_FILE} NAME_WE) set(GLSL_SOURCE_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}) set(GLSL_FILE_ABSOLUTE ${GLSL_SOURCE_DIRECTORY}/${GLSL_FILE}) set(GLSL_FILE_PATH ${CMAKE_CURRENT_LIST_DIR}/${GLSL_FILE}) set(GLSL_FILE_HEADER ${DUSK_GENERATED_HEADERS_DIR}/${GLSL_FILE}.h) set(GLSL_MISSING_FILE ${DUSK_GENERATED_HEADERS_DIR}/missing_${GLSL_FILE}.h) # Ensure the generated files are recompiled add_custom_command( OUTPUT ${GLSL_FILE_HEADER} ${GLSL_MISSING_FILE} COMMAND ${CMAKE_COMMAND} -E make_directory ${DUSK_GENERATED_HEADERS_DIR} COMMAND ${CMAKE_COMMAND} -DGLSL_FILE_ABSOLUTE=${GLSL_FILE_ABSOLUTE} -DGLSL_FILE_HEADER=${GLSL_FILE_HEADER} -DGLSL_FILE_NAME_WE=${GLSL_FILE_NAME_WE} -DGLSL_SOURCE_DIRECTORY=${GLSL_SOURCE_DIRECTORY} -P ${DUSK_GLSL_TOOL_SCRIPT} DEPENDS ${GLSL_FILE_PATH} COMMENT "Converting ${GLSL_FILE} to header" ) # Trick to always run the command add_custom_target(GLSL_TOOL_ALWAYS_RUN_${GLSL_FILE} ALL DEPENDS ${GLSL_MISSING_FILE} ${GLSL_FILE_HEADER} ) add_dependencies(${DUSK_TARGET_NAME} GLSL_TOOL_ALWAYS_RUN_${GLSL_FILE} ) endfunction()