yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

Sai Praveen BangaruImprove embed tool to search all include directories as determined by CMake (#6675)b9300bae0

master
1.1 KiB39 linesraw
1#
2# Use the slang-embed tool to generate a source file for each prelude header.
3# Construct a library called 'prelude' to be linked with by slang
4#
5
6glob_append(prelude_headers "*-prelude.h")
7
8set(prelude_source)
9foreach(input ${prelude_headers})
10    get_filename_component(input_name ${input} NAME)
11    set(output "${CMAKE_CURRENT_BINARY_DIR}/${input_name}.cpp")
12    add_custom_command(
13        OUTPUT ${output}
14        COMMAND
15            slang-embed "${input}" ${output}
16            "-I$<JOIN:$<TARGET_PROPERTY:core,INCLUDE_DIRECTORIES>, -I>"
17        DEPENDS ${input} slang-embed
18        VERBATIM
19    )
20    list(APPEND prelude_source ${output})
21endforeach()
22
23slang_add_target(
24    .
25    OBJECT
26    EXPORT_MACRO_PREFIX SLANG
27    EXPLICIT_SOURCE ${prelude_source}
28    EXCLUDE_FROM_ALL
29    TARGET_NAME prelude
30    INCLUDE_DIRECTORIES_PUBLIC
31        ${CMAKE_CURRENT_LIST_DIR}
32        ${CMAKE_CURRENT_LIST_DIR}/../include
33    EXPORT_TYPE_AS ${SLANG_LIB_TYPE}
34    LINK_WITH_PRIVATE unordered_dense::unordered_dense
35    PUBLIC_HEADERS ${CMAKE_CURRENT_LIST_DIR}/slang*.h
36    # It's an object library, so the install step only installs the headers
37    INSTALL
38    FOLDER generated
39)