Skip to content

Commit b95df8d

Browse files
committedJul 27, 2022
First pass for rewriting the build system
* Refactored all CMake files * Started working on compiling shaders to header files in CMake Signed-off-by: Fabian Sauter <sauter.fabian@mailbox.org>
1 parent c6a2b02 commit b95df8d

33 files changed

+559
-2712
lines changed
 

‎CMakeLists.txt

+111-62
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,103 @@
11
# SPDX-License-Identifier: Apache-2.0
22

3-
cmake_minimum_required(VERSION 3.4.1)
4-
project(kompute VERSION 0.8.1)
3+
cmake_minimum_required(VERSION 3.15)
4+
project(kompute VERSION 1.8.1 LANGUAGES CXX)
55

66
set(CMAKE_CXX_STANDARD 14)
77

8-
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
9-
set(CMAKE_VERBOSE_MAKEFILE on)
8+
# Only change the folder behaviour if kompute is not a subproject
9+
if(${CMAKE_PROJECT_NAME} STREQUAL ${PROJECT_NAME})
10+
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
11+
set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMake")
12+
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
13+
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib)
14+
endif()
15+
16+
# Avoid the dll boilerplate code for windows
17+
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
18+
set(CMAKE_CXX_STANDARD 14)
19+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
20+
21+
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake;${CMAKE_MODULE_PATH}")
22+
23+
set(KOMPUTE_LIBRARIES kompute CACHE INTERNAL "")
24+
25+
#####################################################
26+
# Options
27+
#####################################################
28+
29+
macro(kompute_option OPTION_NAME OPTION_TEXT OPTION_DEFAULT)
30+
option(${OPTION_NAME} ${OPTION_TEXT} ${OPTION_DEFAULT})
31+
if(DEFINED ENV{${OPTION_NAME}})
32+
# Allow overriding the option through an environment variable
33+
set(${OPTION_NAME} $ENV{${OPTION_NAME}})
34+
endif()
35+
if(${OPTION_NAME})
36+
add_definitions(-D${OPTION_NAME})
37+
endif()
38+
message(STATUS " ${OPTION_NAME}: ${${OPTION_NAME}}")
39+
endmacro()
40+
41+
macro(kompute_log_level OPTION_NAME OPTION_TEXT OPTION_DEFAULT)
42+
set(${OPTION_NAME} ${OPTION_DEFAULT} CACHE STRING ${OPTION_TEXT})
43+
set_property(CACHE ${OPTION_NAME} PROPERTY STRINGS "Trace" "Debug" "Info" "Warn" "Error" "Critical")
44+
if(DEFINED ENV{${OPTION_NAME}})
45+
# Allow setting the option through an environment variable
46+
set(${OPTION_NAME} $ENV{${OPTION_NAME}})
47+
endif()
48+
if(${OPTION_NAME})
49+
add_definitions(-D${OPTION_NAME})
50+
endif()
51+
message(STATUS " ${OPTION_NAME}: ${${OPTION_NAME}}")
52+
endmacro()
53+
54+
macro(kompute_option_string OPTION_NAME OPTION_TEXT OPTION_DEFAULT)
55+
set(${OPTION_NAME} ${OPTION_DEFAULT} CACHE STRING ${OPTION_TEXT})
56+
if(DEFINED ENV{${OPTION_NAME}})
57+
# Allow setting the option through an environment variable
58+
set(${OPTION_NAME} $ENV{${OPTION_NAME}})
59+
endif()
60+
if(${OPTION_NAME})
61+
add_definitions(-D${OPTION_NAME})
62+
endif()
63+
message(STATUS " ${OPTION_NAME}: ${${OPTION_NAME}}")
64+
endmacro()
1065

66+
option(BUILD_SHARED_LIBS "Build libraries as shared libraries" ON)
67+
message(STATUS "General purpose GPU compute framework built on Vulkan")
68+
message(STATUS "=======================================================")
1169
# Enable or disable targets
12-
option(KOMPUTE_OPT_BUILD_TESTS "Enable if you want to build tests" OFF)
13-
option(KOMPUTE_OPT_CODE_COVERAGE "Enable if you want code coverage" OFF)
14-
option(KOMPUTE_OPT_BUILD_DOCS "Enable if you want to build documentation" OFF)
15-
option(KOMPUTE_OPT_BUILD_SHADERS "Enable if you want to re-build all shader files" OFF)
16-
option(KOMPUTE_OPT_BUILD_SINGLE_HEADER "Enable if you want to build the single header file" OFF)
17-
option(KOMPUTE_OPT_INSTALL "Enable if you want to enable installation" OFF)
70+
kompute_option(KOMPUTE_OPT_BUILD_TESTS "Enable if you want to build tests" ON)
71+
kompute_option(KOMPUTE_OPT_CODE_COVERAGE "Enable if you want code coverage" OFF)
72+
kompute_option(KOMPUTE_OPT_BUILD_DOCS "Enable if you want to build documentation" OFF)
73+
kompute_option(KOMPUTE_OPT_INSTALL "Enable if you want to enable installation" OFF)
1874

1975
# Build options
20-
option(KOMPUTE_OPT_BUILD_PYTHON "Enable if you want to build python bindings" OFF)
21-
option(KOMPUTE_OPT_ENABLE_SPDLOG "Enable to compile with spdlog as the internal logging framework" OFF)
22-
option(KOMPUTE_OPT_ANDROID_BUILD "Enable android compilation flags required" OFF)
23-
option(KOMPUTE_OPT_DISABLE_VK_DEBUG_LAYERS "Explicitly disable debug layers even on debug" OFF)
24-
option(KOMPUTE_OPT_DEPENDENCIES_SHARED_LIBS "Whether to use shared libraries for dependencies for install" OFF)
25-
option(KOMPUTE_OPT_BUILD_AS_SHARED_LIB "Whether to build kompute as shared library" OFF)
26-
option(KOMPUTE_OPT_DISABLE_VULKAN_VERSION_CHECK "Whether to check if your driver supports the Vulkan Header version you are linking against. This might be useful in case you build shared on a different system than you run later." OFF)
27-
28-
# External komponents
76+
kompute_option(KOMPUTE_OPT_BUILD_PYTHON "Enable if you want to build python bindings" OFF)
77+
kompute_option(KOMPUTE_OPT_ENABLE_LOGGING "Internally we use spdlog for logging. The log output can be either enabled or disabled." OFF)
78+
kompute_log_level(KOMPUTE_OPT_LOG_LEVEL "Internally we use spdlog for logging. The log level used can be changed here." "Debug")
79+
kompute_option(KOMPUTE_OPT_ANDROID_BUILD "Enable android compilation flags required" OFF)
80+
kompute_option(KOMPUTE_OPT_DISABLE_VK_DEBUG_LAYERS "Explicitly disable debug layers even on debug" OFF)
81+
kompute_option(KOMPUTE_OPT_DISABLE_VULKAN_VERSION_CHECK "Whether to check if your driver supports the Vulkan Header version you are linking against. This might be useful in case you build shared on a different system than you run later." OFF)
82+
83+
# External components
2984
option(KOMPUTE_OPT_USE_BUILD_IN_SPDLOG "Use the build in version of Spdlog" ON)
3085
option(KOMPUTE_OPT_USE_BUILD_IN_FMT "Use the build in version of fmt" ON)
3186
option(KOMPUTE_OPT_USE_BUILD_IN_GOOGLE_TEST "Use the build in version of GoogleTest" ON)
3287
option(KOMPUTE_OPT_USE_BUILD_IN_PYBIND11 "Use the build in version of pybind11" ON)
3388
option(KOMPUTE_OPT_USE_BUILD_IN_VULKAN_HEADER "Use the build in version of Vulkan Headers. This could be helpful in case your system Vulkan Headers are to new for your driver. If you set this to false, please make sure your system Vulkan Header are supported by your driver." ON)
34-
set(KOMPUTE_OPT_BUILD_IN_VULKAN_HEADER_TAG "v1.2.203" CACHE STRING "The git tag used for the build in Vulkan Headers when 'KOMPUTE_OPT_USE_BUILD_IN_VULKAN_HEADER' is enabled. A list of tags can be found here: https://github.com/KhronosGroup/Vulkan-Headers/tags")
35-
36-
# Build flags
37-
set(KOMPUTE_EXTRA_CXX_FLAGS "" CACHE STRING "Extra compile flags for Kompute, see docs for full list")
89+
kompute_option_string(KOMPUTE_OPT_BUILD_IN_VULKAN_HEADER_TAG "The git tag used for the build in Vulkan Headers when 'KOMPUTE_OPT_USE_BUILD_IN_VULKAN_HEADER' is enabled. A list of tags can be found here: https://github.com/KhronosGroup/Vulkan-Headers/tags" "v1.2.203")
90+
message(STATUS "=======================================================")
3891

3992
#####################################################
40-
#################### Deprecated Options #############
93+
# Deprecated Options
4194
#####################################################
42-
if(KOMPUTE_OPT_REPO_SUBMODULE_BUILD)
43-
message(FATAL_ERROR "'KOMPUTE_OPT_REPO_SUBMODULE_BUILD' got replaced by 'KOMPUTE_OPT_USE_BUILD_IN_SPDLOG', 'KOMPUTE_OPT_USE_BUILD_IN_FMT', 'KOMPUTE_OPT_USE_BUILD_IN_GOOGLE_TEST', 'KOMPUTE_OPT_USE_BUILD_IN_PYBIND11' and 'KOMPUTE_OPT_USE_BUILD_IN_VULKAN_HEADER'. Please use them instead.")
44-
endif()
95+
include(cmake/deprecation_warnings.cmake)
4596

4697
#####################################################
47-
#################### Dependencies ###################
98+
# Dependencies
4899
#####################################################
100+
include(cmake/vulkan_shader_compiler.cmake)
49101
include(FetchContent)
50102
include(cmake/check_vulkan_version.cmake)
51103

@@ -72,16 +124,18 @@ else()
72124
endif()
73125

74126
# Spdlog
75-
if(KOMPUTE_OPT_ENABLE_SPDLOG)
76-
if(KOMPUTE_OPT_USE_BUILD_IN_SPDLOG)
77-
set(SPDLOG_INSTALL ${KOMPUTE_OPT_INSTALL})
78-
set(SPDLOG_BUILD_SHARED ${KOMPUTE_OPT_DEPENDENCIES_SHARED_LIBS})
79-
80-
FetchContent_Declare(spdlog GIT_REPOSITORY https://github.com/gabime/spdlog.git
81-
GIT_TAG v1.10.0) # Source: https://github.com/gabime/spdlog/releases
82-
FetchContent_MakeAvailable(spdlog)
83-
else()
84-
find_package(spdlog REQUIRED)
127+
if(KOMPUTE_OPT_ENABLE_LOGGING)
128+
if(KOMPUTE_OPT_ENABLE_SPDLOG)
129+
if(KOMPUTE_OPT_USE_BUILD_IN_SPDLOG)
130+
set(SPDLOG_INSTALL ${KOMPUTE_OPT_INSTALL})
131+
set(SPDLOG_BUILD_SHARED ${KOMPUTE_OPT_DEPENDENCIES_SHARED_LIBS})
132+
133+
FetchContent_Declare(spdlog GIT_REPOSITORY https://github.com/gabime/spdlog.git
134+
GIT_TAG v1.10.0) # Source: https://github.com/gabime/spdlog/releases
135+
FetchContent_MakeAvailable(spdlog)
136+
else()
137+
find_package(spdlog REQUIRED)
138+
endif()
85139
endif()
86140
endif()
87141

@@ -132,48 +186,43 @@ if(KOMPUTE_OPT_BUILD_PYTHON)
132186
endif()
133187

134188
#####################################################
135-
#################### Other Options ##################
189+
# Preprocessor Macros
136190
#####################################################
137-
138191
if(KOMPUTE_OPT_ANDROID_BUILD)
139-
set(KOMPUTE_EXTRA_CXX_FLAGS "${KOMPUTE_EXTRA_CXX_FLAGS} -DVK_USE_PLATFORM_ANDROID_KHR")
192+
add_compile_definitions(VK_USE_PLATFORM_ANDROID_KHR=1)
140193
endif()
141194

142195
if(KOMPUTE_OPT_BUILD_PYTHON)
143-
set(KOMPUTE_EXTRA_CXX_FLAGS "${KOMPUTE_EXTRA_CXX_FLAGS} -DKOMPUTE_BUILD_PYTHON")
196+
add_compile_definitions(KOMPUTE_BUILD_PYTHON=1)
144197
endif()
145198

146199
if(KOMPUTE_OPT_DISABLE_VK_DEBUG_LAYERS)
147-
set(KOMPUTE_EXTRA_CXX_FLAGS "${KOMPUTE_EXTRA_CXX_FLAGS} -DKOMPUTE_DISABLE_VK_DEBUG_LAYERS=1")
200+
add_compile_definitions(KOMPUTE_DISABLE_VK_DEBUG_LAYERS=1)
201+
endif()
202+
203+
if(KOMPUTE_OPT_ENABLE_LOGGING)
204+
add_compile_definitions(KOMPUTE_OPT_ENABLE_LOGGING=1)
148205
endif()
149206

207+
#####################################################
208+
# Misc Options
209+
#####################################################
150210
if(KOMPUTE_OPT_INSTALL)
151211
# Enable install parameters for glslang (overrides parameters passed)
152212
# When install is enabled the glslang libraries become shared
153213
set(ENABLE_GLSLANG_INSTALL ON CACHE BOOL "Enables install of glslang" FORCE)
154-
155-
# By default we enable shared library based installation
156-
if(KOMPUTE_OPT_DEPENDENCIES_SHARED_LIBS)
157-
set(BUILD_SHARED_LIBS ON CACHE BOOL "Enables build of shared libraries" FORCE)
158-
endif()
159214
endif()
160215

161-
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG=1 ${KOMPUTE_EXTRA_CXX_FLAGS} -DUSE_DEBUG_EXTENTIONS")
162-
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DRELEASE=1 ${KOMPUTE_EXTRA_CXX_FLAGS}")
216+
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
217+
else()
218+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic -Werror")
219+
endif()
163220

164221
if(KOMPUTE_OPT_CODE_COVERAGE)
165-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage --coverage")
166-
167-
set(CODECOV_DIR
168-
${CMAKE_CURRENT_BINARY_DIR}/codecov/)
169-
set(CODECOV_DIR_LCOV
170-
${CODECOV_DIR}lcov/)
171-
set(CODECOV_FILENAME_LCOV_INFO
172-
lcov.info)
173-
set(CODECOV_FILENAME_LCOV_INFO_FULL
174-
lcov_full.info)
175-
set(CODECOV_DIR_HTML
176-
${CODECOV_DIR}html/)
222+
if(NOT UNIX)
223+
message(FATAL_ERROR "KOMPUTE_OPT_CODE_COVERAGE can only be enabled in unix based systems due to limitation on gcov.")
224+
endif()
225+
include(cmake/code_coverage.cmake)
177226
endif()
178227

179228
# If glslang is cloned, then SPIRV/GlslangToSpv.h will be used instead of glslang/SPIRV/GlslangToSpv.h

‎Makefile

+1-3
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ mk_cmake:
6363
-DKOMPUTE_OPT_BUILD_TESTS=1 \
6464
-DKOMPUTE_OPT_BUILD_DOCS=1 \
6565
-DKOMPUTE_OPT_BUILD_SHADERS=1 \
66-
-DKOMPUTE_OPT_BUILD_SINGLE_HEADER=1 \
6766
-DKOMPUTE_OPT_ENABLE_SPDLOG=1 \
6867
-DKOMPUTE_OPT_CODE_COVERAGE=1 \
6968
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
@@ -116,7 +115,6 @@ vs_cmake:
116115
-DKOMPUTE_OPT_INSTALL=1 \
117116
-DKOMPUTE_OPT_BUILD_TESTS=1 \
118117
-DKOMPUTE_OPT_BUILD_SHADERS=1 \
119-
-DKOMPUTE_OPT_BUILD_SINGLE_HEADER=1 \
120118
-DKOMPUTE_OPT_ENABLE_SPDLOG=1 \
121119
-DKOMPUTE_OPT_CODE_COVERAGE=0 \
122120
-DKOMPUTE_OPT_BUILD_DOCS=0 \
@@ -161,7 +159,7 @@ run_ci:
161159
generate_python_docstrings:
162160
python -m pybind11_mkdoc \
163161
-o python/src/docstrings.hpp \
164-
single_include/kompute/Kompute.hpp \
162+
kompute/Kompute.hpp \
165163
-Iexternal/fmt/include/ \
166164
-Iexternal/spdlog/include/ \
167165
-Iexternal/glslang/ \

‎cmake/bin2h.cmake

+98
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
##################################################################################
2+
# Based on: https://github.com/sivachandran/cmake-bin2h
3+
#
4+
# Copyright 2020 Sivachandran Paramasivam
5+
#
6+
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
7+
#
8+
# The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
9+
#
10+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
11+
##################################################################################
12+
13+
include(CMakeParseArguments)
14+
15+
# Function to wrap a given string into multiple lines at the given column position.
16+
# Parameters:
17+
# VARIABLE - The name of the CMake variable holding the string.
18+
# AT_COLUMN - The column position at which string will be wrapped.
19+
function(WRAP_STRING)
20+
set(oneValueArgs VARIABLE AT_COLUMN)
21+
cmake_parse_arguments(WRAP_STRING "${options}" "${oneValueArgs}" "" ${ARGN})
22+
23+
string(LENGTH ${${WRAP_STRING_VARIABLE}} stringLength)
24+
math(EXPR offset "0")
25+
26+
while(stringLength GREATER 0)
27+
28+
if(stringLength GREATER ${WRAP_STRING_AT_COLUMN})
29+
math(EXPR length "${WRAP_STRING_AT_COLUMN}")
30+
else()
31+
math(EXPR length "${stringLength}")
32+
endif()
33+
34+
string(SUBSTRING ${${WRAP_STRING_VARIABLE}} ${offset} ${length} line)
35+
set(lines "${lines}\n${line}")
36+
37+
math(EXPR stringLength "${stringLength} - ${length}")
38+
math(EXPR offset "${offset} + ${length}")
39+
endwhile()
40+
41+
set(${WRAP_STRING_VARIABLE} "${lines}" PARENT_SCOPE)
42+
endfunction()
43+
44+
# Function to embed contents of a file as byte array in C/C++ header file(.h). The header file
45+
# will contain a byte array and integer variable holding the size of the array.
46+
# Parameters
47+
# SOURCE_FILE - The path of source file whose contents will be embedded in the header file.
48+
# VARIABLE_NAME - The name of the variable for the byte array. The string "_SIZE" will be append
49+
# to this name and will be used a variable name for size variable.
50+
# HEADER_FILE - The path of header file.
51+
# APPEND - If specified appends to the header file instead of overwriting it
52+
# NULL_TERMINATE - If specified a null byte(zero) will be append to the byte array. This will be
53+
# useful if the source file is a text file and we want to use the file contents
54+
# as string. But the size variable holds size of the byte array without this
55+
# null byte.
56+
# HEADER_NAMESPACE - The namespace, where the array should be located in.
57+
# Usage:
58+
# bin2h(SOURCE_FILE "Logo.png" HEADER_FILE "Logo.h" VARIABLE_NAME "LOGO_PNG")
59+
function(BIN2H)
60+
set(options APPEND NULL_TERMINATE)
61+
set(oneValueArgs SOURCE_FILE VARIABLE_NAME HEADER_FILE)
62+
cmake_parse_arguments(BIN2H "${options}" "${oneValueArgs}" "" ${ARGN})
63+
64+
# reads source file contents as hex string
65+
file(READ ${BIN2H_SOURCE_FILE} hexString HEX)
66+
string(LENGTH ${hexString} hexStringLength)
67+
68+
# appends null byte if asked
69+
if(BIN2H_NULL_TERMINATE)
70+
set(hexString "${hexString}00")
71+
endif()
72+
73+
# wraps the hex string into multiple lines at column 32(i.e. 16 bytes per line)
74+
wrap_string(VARIABLE hexString AT_COLUMN 32)
75+
math(EXPR arraySize "${hexStringLength} / 2")
76+
77+
# adds '0x' prefix and comma suffix before and after every byte respectively
78+
string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1, " arrayValues ${hexString})
79+
# removes trailing comma
80+
string(REGEX REPLACE ", $" "" arrayValues ${arrayValues})
81+
82+
# converts the variable name into proper C identifier
83+
string(MAKE_C_IDENTIFIER "${BIN2H_VARIABLE_NAME}" BIN2H_VARIABLE_NAME)
84+
string(TOUPPER "${BIN2H_VARIABLE_NAME}" BIN2H_VARIABLE_NAME)
85+
86+
# declares byte array and the length variables
87+
set(namespaceStart "namespace ${HEADER_NAMESPACE} {")
88+
set(namespaceEnd "} // ${HEADER_NAMESPACE}")
89+
set(arrayIncludes "#pragma once\n#include <array>\n#include <cstdint>")
90+
set(arrayDefinition "const std::array<uint8_t, ${arraySize}> ${BIN2H_VARIABLE_NAME} = { ${arrayValues} };")
91+
92+
set(declarations "${arrayIncludes}\n\n${namespaceStart}\n${arrayDefinition}\n${namespaceEnd}\n\n")
93+
if(BIN2H_APPEND)
94+
file(APPEND ${BIN2H_HEADER_FILE} "${declarations}")
95+
else()
96+
file(WRITE ${BIN2H_HEADER_FILE} "${declarations}")
97+
endif()
98+
endfunction()

‎cmake/bin_file_to_header.cmake

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
cmake_minimum_required(VERSION 3.15)
2+
3+
if(${INPUT_SHADER_FILE} STREQUAL "")
4+
message(FATAL_ERROR "No input file path provided via 'INPUT_SHADER_FILE'.")
5+
endif()
6+
7+
if(${OUTPUT_HEADER_FILE} STREQUAL "")
8+
message(FATAL_ERROR "No output file path provided via 'OUTPUT_HEADER_FILE'.")
9+
endif()
10+
11+
if(${HEADER_NAMESPACE} STREQUAL "")
12+
message(FATAL_ERROR "No header namespace provided via 'HEADER_NAMESPACE'.")
13+
endif()
14+
15+
include(bin2h.cmake)
16+
17+
get_filename_component(BINARY_FILE_CONTENT ${INPUT_SHADER_FILE} NAME)
18+
bin2h(SOURCE_FILE ${INPUT_SHADER_FILE} HEADER_FILE ${OUTPUT_HEADER_FILE} VARIABLE_NAME ${BINARY_FILE_CONTENT} HEADER_NAMESPACE ${HEADER_NAMESPACE})
19+
file(APPEND ${OUTPUT_HEADER_FILE} "\n")

0 commit comments

Comments
 (0)
Please sign in to comment.