1# Prepare variable definitions. 2set(VAR_UNDEFINED) 3set(VAR_PATH /some/path/to/a/file.txt) 4set(FALSE_NAMES OFF NO FALSE N FOO-NOTFOUND IGNORE Off No False Ignore off n no false ignore) 5set(TRUE_NAMES ON YES TRUE Y On Yes True on yes true y) 6foreach(_arg "" 0 1 2 ${TRUE_NAMES} ${FALSE_NAMES}) 7 set(VAR_${_arg} "${_arg}") 8endforeach() 9 10macro(test_vars _old) 11 # Variables set to false or not set. 12 foreach(_var "" 0 ${FALSE_NAMES} UNDEFINED) 13 if(VAR_${_var}) 14 message(FATAL_ERROR "${_old}if(VAR_${_var}) is true!") 15 else() 16 message(STATUS "${_old}if(VAR_${_var}) is false") 17 endif() 18 19 if(NOT VAR_${_var}) 20 message(STATUS "${_old}if(NOT VAR_${_var}) is true") 21 else() 22 message(FATAL_ERROR "${_old}if(NOT VAR_${_var}) is false!") 23 endif() 24 endforeach() 25 26 # Variables set to true. 27 foreach(_var 1 2 ${TRUE_NAMES} PATH) 28 if(VAR_${_var}) 29 message(STATUS "${_old}if(VAR_${_var}) is true") 30 else() 31 message(FATAL_ERROR "${_old}if(VAR_${_var}) is false!") 32 endif() 33 34 if(NOT VAR_${_var}) 35 message(FATAL_ERROR "${_old}if(NOT VAR_${_var}) is true!") 36 else() 37 message(STATUS "${_old}if(NOT VAR_${_var}) is false") 38 endif() 39 endforeach() 40endmacro() 41 42#----------------------------------------------------------------------------- 43# Test the OLD behavior of CMP0012. 44cmake_policy(SET CMP0012 OLD) 45 46# False constants not recognized (still false). 47foreach(_false "" ${FALSE_NAMES}) 48 if("${_false}") 49 message(FATAL_ERROR "OLD if(${_false}) is true!") 50 else() 51 message(STATUS "OLD if(${_false}) is false") 52 endif() 53 54 if(NOT "${_false}") 55 message(STATUS "OLD if(NOT ${_false}) is true") 56 else() 57 message(FATAL_ERROR "OLD if(NOT ${_false}) is false!") 58 endif() 59endforeach() 60 61# True constants not recognized. 62foreach(_false ${TRUE_NAMES}) 63 if(${_false}) 64 message(FATAL_ERROR "OLD if(${_false}) is true!") 65 else() 66 message(STATUS "OLD if(${_false}) is false") 67 endif() 68 69 if(NOT ${_false}) 70 message(STATUS "OLD if(NOT ${_false}) is true") 71 else() 72 message(FATAL_ERROR "OLD if(NOT ${_false}) is false!") 73 endif() 74endforeach() 75 76# Numbers not recognized properly. 77foreach(_num 2 -2 2.0 -2.0 2x -2x) 78 if(${_num}) 79 message(FATAL_ERROR "OLD if(${_num}) is true!") 80 else() 81 message(STATUS "OLD if(${_num}) is false") 82 endif() 83 84 if(NOT ${_num}) 85 message(FATAL_ERROR "OLD if(NOT ${_num}) is true!") 86 else() 87 message(STATUS "OLD if(NOT ${_num}) is false") 88 endif() 89endforeach() 90 91test_vars("OLD ") 92 93#----------------------------------------------------------------------------- 94 95# Test the NEW behavior of CMP0012. 96cmake_policy(SET CMP0012 NEW) 97 98# Test false constants. 99foreach(_false "" 0 ${FALSE_NAMES}) 100 if("${_false}") 101 message(FATAL_ERROR "if(${_false}) is true!") 102 else() 103 message(STATUS "if(${_false}) is false") 104 endif() 105 106 if(NOT "${_false}") 107 message(STATUS "if(NOT ${_false}) is true") 108 else() 109 message(FATAL_ERROR "if(NOT ${_false}) is false!") 110 endif() 111endforeach() 112 113# Test true constants. 114foreach(_true 1 ${TRUE_NAMES}) 115 if(${_true}) 116 message(STATUS "if(${_true}) is true") 117 else() 118 message(FATAL_ERROR "if(${_true}) is false!") 119 endif() 120 121 if(NOT ${_true}) 122 message(FATAL_ERROR "if(NOT ${_true}) is true!") 123 else() 124 message(STATUS "if(NOT ${_true}) is false") 125 endif() 126endforeach() 127 128# Numbers recognized properly. 129foreach(_num 2 -2 2.0 -2.0) 130 if(${_num}) 131 message(STATUS "if(${_num}) is true") 132 else() 133 message(FATAL_ERROR "if(${_num}) is false!") 134 endif() 135 136 if(NOT ${_num}) 137 message(FATAL_ERROR "if(NOT ${_num}) is true!") 138 else() 139 message(STATUS "if(NOT ${_num}) is false") 140 endif() 141endforeach() 142 143# Bad numbers not recognized. 144foreach(_bad 2x -2x) 145 if(${_bad}) 146 message(FATAL_ERROR "if(${_bad}) is true!") 147 else() 148 message(STATUS "if(${_bad}) is false") 149 endif() 150 151 if(NOT ${_bad}) 152 message(STATUS "if(NOT ${_bad}) is true") 153 else() 154 message(FATAL_ERROR "if(NOT ${_bad}) is false!") 155 endif() 156endforeach() 157 158test_vars("") 159