summaryrefslogtreecommitdiffstats
path: root/source/slang-glsl-module/CMakeLists.txt
blob: cf7c12edd76375c16dd6a12368bd34316a63c5b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#
# Generate an embeddable glsl module
#

# This header is generated in the same call to slang-bootstrap that generates
# the core module embed, which can be found in
# ../slang-core-module/CMakeLists.txt
# The target to look for is generate_core_module_headers

# CMake doesn't allow creating an implicit dependency across directory scopes,
# see https://cmake.org/cmake/help/v3.31/prop_sf/GENERATED.html. Because of
# this we add the explicit REQUIRES
slang_add_target(
    .
    MODULE
    FOLDER generated
    LINK_WITH_PRIVATE core
    USE_EXTRA_WARNINGS
    EXPLICIT_SOURCE
        ./slang-embedded-glsl-module.cpp
        ${glsl_module_generated_header}
    REQUIRES generate_core_module_headers
    EXCLUDE_FROM_ALL
    EXTRA_COMPILE_DEFINITIONS_PRIVATE SLANG_SHARED_LIBRARY_TOOL
    EXPORT_SET_NAME SlangTargets
    INCLUDE_DIRECTORIES_PRIVATE ${glsl_module_generated_header_dir}
    INSTALL
)
set_target_properties(
    slang-glsl-module
    PROPERTIES CXX_VISIBILITY_PRESET hidden VISIBILITY_INLINES_HIDDEN ON
)
add_supported_cxx_linker_flags(
    slang-glsl-module
    PRIVATE
    "-Wl,--exclude-libs,ALL"
)