macro(enum_option var values description)
  set(${var}_VALUES ${values})
  list(GET ${var}_VALUES 0 default)
  set(${var} "${default}" CACHE STRING "${description}")
  set_property(CACHE ${var} PROPERTY STRINGS ${${var}_VALUES})
  if (NOT ";${${var}_VALUES};" MATCHES ";${${var}};")
    message(FATAL_ERROR "Unknown value ${${var}}. Only -D${var}=${${var}_VALUES} allowed.")
  endif()
endmacro()