The open source OpenXR runtime
at main 38 lines 1.2 kB view raw
1# Copyright 2019, Collabora, Ltd. 2# 3# SPDX-License-Identifier: BSL-1.0 4 5find_program(GLSLANGVALIDATOR_COMMAND 6 glslangValidator) 7if(NOT GLSLANGVALIDATOR_COMMAND) 8 message(FATAL_ERROR "glslangValidator required - source maintained at https://github.com/KhronosGroup/glslang") 9endif() 10 11# 12# Generate SPIR-V header files from the arguments. Returns a list of headers. 13# 14function(spirv_shaders ret) 15 set(options) 16 set(oneValueArgs SPIRV_VERSION) 17 set(multiValueArgs SOURCES DEPENDS) 18 cmake_parse_arguments(_spirvshaders "${options}" "${oneValueArgs}" 19 "${multiValueArgs}" ${ARGN}) 20 21 if(NOT _spirvshaders_SPIRV_VERSION) 22 set(_spirvshaders_SPIRV_VERSION 1.0) 23 endif() 24 25 foreach(GLSL ${_spirvshaders_SOURCES}) 26 string(MAKE_C_IDENTIFIER ${GLSL} IDENTIFIER) 27 set(HEADER "${CMAKE_CURRENT_BINARY_DIR}/${GLSL}.h") 28 set(GLSL "${CMAKE_CURRENT_SOURCE_DIR}/${GLSL}") 29 30 add_custom_command( 31 OUTPUT ${HEADER} 32 COMMAND ${GLSLANGVALIDATOR_COMMAND} -V --target-env spirv${_spirvshaders_SPIRV_VERSION} ${GLSL} --vn ${IDENTIFIER} -o ${HEADER} 33 DEPENDS ${GLSL} ${_spirvshaders_DEPENDS}) 34 list(APPEND HEADERS ${HEADER}) 35 endforeach() 36 37 set(${ret} "${HEADERS}" PARENT_SCOPE) 38endfunction(spirv_shaders)