yum-mirror/slang

Making it easier to work with shaders

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

Tobias FrischAllow building using external dependencies (#5076)25c17b9fc

master
1.4 KiB49 linesraw
1function(auto_option name package description)
2    set(${name} "AUTO" CACHE STRING ${description})
3    set_property(CACHE ${name} PROPERTY STRINGS AUTO ON OFF)
4
5    if(${${name}} OR ${${name}} STREQUAL "AUTO")
6        if(${${name}} STREQUAL "AUTO")
7            set(req)
8        else()
9            set(req REQUIRED)
10        endif()
11        find_package(${package} ${req})
12
13        if(${${package}_FOUND})
14            set(${name} TRUE CACHE STRING ${description} FORCE)
15        else()
16            set(${name} FALSE CACHE STRING ${description} FORCE)
17        endif()
18    endif()
19endfunction()
20
21function(enum_option name init description)
22    set(enums)
23    set(is_enum TRUE)
24    foreach(enum_or_desc ${ARGN})
25        if(is_enum)
26            list(APPEND enums ${enum_or_desc})
27            string(APPEND description "\n" "${enum_or_desc}" ": ")
28            set(is_enum FALSE)
29        else()
30            string(APPEND description "${enum_or_desc}")
31            set(is_enum TRUE)
32        endif()
33    endforeach()
34
35    set(${name} ${init} CACHE STRING ${description})
36    set_property(CACHE ${name} PROPERTY STRINGS ${enums})
37
38    foreach(enum ${enums})
39        if(${${name}} STREQUAL ${enum})
40            return()
41        endif()
42    endforeach()
43    message(FATAL_ERROR "${name} must be one of ${enums}")
44endfunction()
45
46function(advanced_option name description default)
47    option(${name} ${description} ${default})
48    mark_as_advanced(${name})
49endfunction()