| |
| include(CMakeParseArguments) |
| |
| function(precondition var) |
| cmake_parse_arguments( |
| PRECONDITION # prefix |
| "NEGATE" # options |
| "MESSAGE" # single-value args |
| "" # multi-value args |
| ${ARGN}) |
| |
| if (PRECONDITION_NEGATE) |
| if (${var}) |
| if (PRECONDITION_MESSAGE) |
| message(FATAL_ERROR "Error! ${PRECONDITION_MESSAGE}") |
| else() |
| message(FATAL_ERROR "Error! Variable ${var} is true or not empty. The value of ${var} is ${${var}}.") |
| endif() |
| endif() |
| else() |
| if (NOT ${var}) |
| if (PRECONDITION_MESSAGE) |
| message(FATAL_ERROR "Error! ${PRECONDITION_MESSAGE}") |
| else() |
| message(FATAL_ERROR "Error! Variable ${var} is false, empty or not set.") |
| endif() |
| endif() |
| endif() |
| endfunction() |
| |
| # Translate a yes/no variable to the presence of a given string in a |
| # variable. |
| # |
| # Usage: |
| # translate_flag(is_set flag_name var_name) |
| # |
| # If is_set is true, sets ${var_name} to ${flag_name}. Otherwise, |
| # unsets ${var_name}. |
| function(translate_flag is_set flag_name var_name) |
| if(${is_set}) |
| set("${var_name}" "${flag_name}" PARENT_SCOPE) |
| else() |
| set("${var_name}" "" PARENT_SCOPE) |
| endif() |
| endfunction() |