mirror of
https://gitlab.freedesktop.org/monado/monado.git
synced 2024-12-28 02:26:16 +00:00
c4e81d3b7c
Upstream is https://github.com/rpavlik/cmake-modules
39 lines
1.1 KiB
CMake
39 lines
1.1 KiB
CMake
# Copyright 2019, Collabora, Ltd.
|
|
#
|
|
# SPDX-License-Identifier: BSL-1.0
|
|
|
|
find_program(GLSLANGVALIDATOR_COMMAND
|
|
glslangValidator)
|
|
if(NOT GLSLANGVALIDATOR_COMMAND)
|
|
message(FATAL_ERROR "glslangValidator required - source maintained at https://github.com/KhronosGroup/glslang")
|
|
endif()
|
|
|
|
#
|
|
# Generate SPIR-V header files from the arguments. Returns a list of headers.
|
|
#
|
|
function(spirv_shaders ret)
|
|
set(options)
|
|
set(oneValueArgs SPIRV_VERSION)
|
|
set(multiValueArgs SOURCES)
|
|
cmake_parse_arguments(_spirvshaders "${options}" "${oneValueArgs}"
|
|
"${multiValueArgs}" ${ARGN})
|
|
|
|
if(NOT _spirvshaders_SPIRV_VERSION)
|
|
set(_spirvshaders_SPIRV_VERSION 1.0)
|
|
endif()
|
|
|
|
foreach(GLSL ${_spirvshaders_SOURCES})
|
|
string(MAKE_C_IDENTIFIER ${GLSL} IDENTIFIER)
|
|
set(HEADER "${CMAKE_CURRENT_BINARY_DIR}/${GLSL}.h")
|
|
set(GLSL "${CMAKE_CURRENT_SOURCE_DIR}/${GLSL}")
|
|
|
|
add_custom_command(
|
|
OUTPUT ${HEADER}
|
|
COMMAND ${GLSLANGVALIDATOR_COMMAND} -V --target-env spirv${_spirvshaders_SPIRV_VERSION} ${GLSL} --vn ${IDENTIFIER} -o ${HEADER}
|
|
DEPENDS ${GLSL})
|
|
list(APPEND HEADERS ${HEADER})
|
|
endforeach()
|
|
|
|
set(${ret} "${HEADERS}" PARENT_SCOPE)
|
|
endfunction(spirv_shaders)
|