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()
|