|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
# types: DISABLED < RUNTIME < OPTIONAL < RECOMMENDED < REQUIRED
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
macro(find_feature _feature _type _purpose _description)
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
string(TOUPPER ${_feature} _feature_upper)
|
|
Packit |
1fb8d4 |
string(TOLOWER ${_type} _type_lower)
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
if(${_type} STREQUAL "DISABLED")
|
|
Packit |
1fb8d4 |
set(_feature_default "OFF")
|
|
Packit |
1fb8d4 |
message(STATUS "Skipping ${_type_lower} feature ${_feature} for ${_purpose} (${_description})")
|
|
Packit |
1fb8d4 |
else()
|
|
Packit |
1fb8d4 |
if(${_type} STREQUAL "REQUIRED")
|
|
Packit |
1fb8d4 |
set(_feature_default "ON")
|
|
Packit |
1fb8d4 |
message(STATUS "Finding ${_type_lower} feature ${_feature} for ${_purpose} (${_description})")
|
|
Packit |
1fb8d4 |
find_package(${_feature} REQUIRED)
|
|
Packit |
1fb8d4 |
elseif(${_type} STREQUAL "RECOMMENDED")
|
|
Packit |
1fb8d4 |
if(NOT ${WITH_${_feature_upper}})
|
|
Packit |
1fb8d4 |
set(_feature_default "OFF")
|
|
Packit |
1fb8d4 |
message(STATUS "Skipping ${_type_lower} feature ${_feature} for ${_purpose} (${_description})")
|
|
Packit |
1fb8d4 |
else()
|
|
Packit |
1fb8d4 |
set(_feature_default "ON")
|
|
Packit |
1fb8d4 |
message(STATUS "Finding ${_type_lower} feature ${_feature} for ${_purpose} (${_description})")
|
|
Packit |
1fb8d4 |
message(STATUS " Disable feature ${_feature} using \"-DWITH_${_feature_upper}=OFF\"")
|
|
Packit |
1fb8d4 |
find_package(${_feature})
|
|
Packit |
1fb8d4 |
endif()
|
|
Packit |
1fb8d4 |
elseif(${_type} STREQUAL "OPTIONAL")
|
|
Packit |
1fb8d4 |
if(${WITH_${_feature_upper}})
|
|
Packit |
1fb8d4 |
set(_feature_default "ON")
|
|
Packit |
1fb8d4 |
message(STATUS "Finding ${_type_lower} feature ${_feature} for ${_purpose} (${_description})")
|
|
Packit |
1fb8d4 |
find_package(${_feature} REQUIRED)
|
|
Packit |
1fb8d4 |
else()
|
|
Packit |
1fb8d4 |
set(_feature_default "OFF")
|
|
Packit |
1fb8d4 |
message(STATUS "Skipping ${_type_lower} feature ${_feature} for ${_purpose} (${_description})")
|
|
Packit |
1fb8d4 |
message(STATUS " Enable feature ${_feature} using \"-DWITH_${_feature_upper}=ON\"")
|
|
Packit |
1fb8d4 |
endif()
|
|
Packit |
1fb8d4 |
else()
|
|
Packit |
1fb8d4 |
set(_feature_default "ON")
|
|
Packit |
1fb8d4 |
message(STATUS "Finding ${_type_lower} feature ${_feature} for ${_purpose} (${_description})")
|
|
Packit |
1fb8d4 |
find_package(${_feature})
|
|
Packit |
1fb8d4 |
endif()
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
if(NOT ${${_feature_upper}_FOUND})
|
|
Packit |
1fb8d4 |
if(${_feature_default})
|
|
Packit |
1fb8d4 |
message(WARNING " feature ${_feature} was requested but could not be found! ${_feature_default} / ${${_feature_upper}_FOUND}")
|
|
Packit |
1fb8d4 |
endif()
|
|
Packit |
1fb8d4 |
set(_feature_default "OFF")
|
|
Packit |
1fb8d4 |
endif()
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
option(WITH_${_feature_upper} "Enable feature ${_feature} for ${_purpose}" ${_feature_default})
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
set_package_properties(${_feature} PROPERTIES
|
|
Packit |
1fb8d4 |
TYPE ${_type}
|
|
Packit |
1fb8d4 |
PURPOSE "${_purpose}"
|
|
Packit |
1fb8d4 |
DESCRIPTION "${_description}")
|
|
Packit |
1fb8d4 |
endif()
|
|
Packit |
1fb8d4 |
endmacro(find_feature)
|
|
Packit |
1fb8d4 |
|