File: HalideFeatures.cmake

package info (click to toggle)
halide 21.0.0-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 55,752 kB
  • sloc: cpp: 289,334; ansic: 22,751; python: 7,486; makefile: 4,299; sh: 2,508; java: 1,549; javascript: 282; pascal: 207; xml: 127; asm: 9
file content (59 lines) | stat: -rw-r--r-- 1,636 bytes parent folder | download | duplicates (3)
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
if (PROJECT_IS_TOP_LEVEL)
    include(FeatureSummary)
    cmake_language(
        DEFER DIRECTORY "${Halide_SOURCE_DIR}"
        CALL feature_summary WHAT ENABLED_FEATURES DISABLED_FEATURES
    )
endif ()

function(_Halide_feature_info opt doc)
    if (NOT PROJECT_IS_TOP_LEVEL)
        return()
    endif ()

    set(notice "")
    if (ARG_ADVANCED)
        cmake_language(GET_MESSAGE_LOG_LEVEL log_level)
        if (log_level MATCHES "^(VERBOSE|DEBUG|TRACE)$")
            set(notice " (advanced)")
        else ()
            return()
        endif ()
    endif ()

    add_feature_info("${opt}${notice}" "${opt}" "${doc}")
endfunction()

function(Halide_feature OPTION DOC DEFAULT)
    cmake_parse_arguments(PARSE_ARGV 3 ARG "ADVANCED" "" "DEPENDS")

    if (DEFAULT STREQUAL "TOP_LEVEL")
        set(default_value "${PROJECT_IS_TOP_LEVEL}")
    elseif (DEFAULT STREQUAL "AUTO")
        set(default_value ${ARG_DEPENDS})
    else ()
        set(default_value ${DEFAULT})
    endif ()

    if (${default_value})
        set(default_value ON)
    else ()
        set(default_value OFF)
    endif ()

    option("${OPTION}" "${DOC}" "${default_value}")
    if (ARG_ADVANCED)
        mark_as_advanced("${OPTION}")
    endif ()

    if (${OPTION} AND DEFINED ARG_DEPENDS AND NOT (${ARG_DEPENDS}))
        list(JOIN ARG_DEPENDS " " depends)
        message(WARNING "${OPTION} forcibly disabled -- requires ${depends}")
        set("${OPTION}" 0)
        set("${OPTION}" "${${OPTION}}" CACHE BOOL "${DOC}" FORCE)
    endif ()

    _Halide_feature_info("${OPTION}" "${DOC}")

    set("${OPTION}" "${${OPTION}}" PARENT_SCOPE)
endfunction()