set(PRODUCT "PurePhone" CACHE STRING "The product to be configured and built.") macro(validate_product_selection) # create list of valid products file(GLOB _PRODUCTS_CANDIDATES "${CMAKE_SOURCE_DIR}/products/*") set(PRODUCTS "") foreach(_P in ${_PRODUCTS_CANDIDATES}) if(IS_DIRECTORY ${_P}) get_filename_component(_DIRNAME ${_P} NAME) list(APPEND PRODUCTS ${_DIRNAME}) endif() endforeach() list(JOIN PRODUCTS ", " PRODUCTS_STRING) if("${PRODUCT}" STREQUAL "") message(FATAL_ERROR "Product not selected. Valid products: ${PRODUCTS_STRING}") endif() if(NOT ${PRODUCT} IN_LIST PRODUCTS) message(FATAL_ERROR "${PRODUCT} is not recognized as a valid product name. Valid products: ${PRODUCTS_STRING}") endif() endmacro()