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