Warning, /system/qtcurve/cmake/CMakeArgumentMacros.cmake is written in an unsupported language. File is not indexed.
0001 # Copyright (C) 2013~2014 by Yichao Yu 0002 # yyc1992@gmail.com 0003 # 0004 # Redistribution and use in source and binary forms, with or without 0005 # modification, are permitted provided that the following conditions 0006 # are met: 0007 # 0008 # 1. Redistributions of source code must retain the above copyright 0009 # notice, this list of conditions and the following disclaimer. 0010 # 2. Redistributions in binary form must reproduce the above copyright 0011 # notice, this list of conditions and the following disclaimer in the 0012 # documentation and/or other materials provided with the distribution. 0013 # 0014 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 0015 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 0016 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 0017 # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 0018 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 0019 # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 0020 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 0021 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 0022 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 0023 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 0024 0025 # Public functions and macros provided by this file 0026 # (See comment of each for more detail): 0027 0028 include(CMakeArrayMacros) 0029 0030 # cmake_parse_array_default(name [prefix] [start | stop | start stop]) 0031 macro(cmake_parse_array_default name) 0032 cmake_parse_array("${name}" "${OPTIONS}" "${SINGLES}" 0033 "${MULTIPLES}" "${LISTS}" ${ARGN}) 0034 endmacro() 0035 0036 # cmake_parse_array(name options single_args multi_args multi_lists 0037 # [prefix] [start | stop | start stop]) 0038 macro(cmake_parse_array name options single_args multi_args multi_lists) 0039 cmake_parse_array_full("${name}" "${options}" "${single_args}" 0040 "${multi_args}" "${multi_lists}" "" ":" "" "[]" ${ARGN}) 0041 endmacro() 0042 0043 # cmake_parse_array_classic_default(name [prefix] [start | stop | start stop]) 0044 macro(cmake_parse_array_classic_default name) 0045 cmake_parse_array_classic("${name}" "${OPTIONS}" "${SINGLES}" 0046 "${MULTIPLES}" "${LISTS}" ${ARGN}) 0047 endmacro() 0048 0049 # cmake_parse_array_classic(name options single_args multi_args multi_lists 0050 # [prefix] [start | stop | start stop]) 0051 macro(cmake_parse_array_classic name options single_args multi_args multi_lists) 0052 cmake_parse_array_full("${name}" "${options}" "${single_args}" 0053 "${multi_args}" "${multi_lists}" "" "" "" "[]" ${ARGN}) 0054 endmacro() 0055 0056 macro(__cmake_parse_array_full_set_state state) 0057 set(__cmake_parse_array_state "${state}") 0058 set(__cmake_parse_array_cur_option "${__cmake_parse_array_option}") 0059 endmacro() 0060 0061 # cmake_parse_array_full(name options single_args multi_args multi_lists 0062 # option_prefix option_suffix array_prefix 0063 # array_suffix [prefix] [start | stop | start stop]) 0064 macro(cmake_parse_array_full name options single_args multi_args multi_lists 0065 op_pre op_suf ary_pre ary_suf) 0066 macro(__cmake_parse_array_full_multi_list_array_foreach) 0067 cmake_array_copy("${__cmake_parse_array_multi_list_array_value}" 0068 __cmake_parse_array_state) 0069 cmake_array_append("${${name}_${__cmake_parse_array_cur_option}}" 0070 "${__cmake_parse_array_state}") 0071 endmacro() 0072 0073 # init 0074 foreach(__cmake_parse_array_full_option ${options}) 0075 set("${name}_${__cmake_parse_array_full_option}" False) 0076 endforeach() 0077 foreach(__cmake_parse_array_full_option ${single_args}) 0078 set("${name}_${__cmake_parse_array_full_option}") 0079 endforeach() 0080 foreach(__cmake_parse_array_full_option ${multi_args} ${multi_lists} UNUSED) 0081 cmake_array_new("${name}_${__cmake_parse_array_full_option}") 0082 endforeach() 0083 0084 # define local variables in macro 0085 foreach(__cmake_parse_array_state unused) 0086 foreach(__cmake_parse_array_cur_option "") 0087 # Lexical scope used here. 0088 # Do not move the definition out of the parent macro. 0089 macro(__cmake_parse_array_full_foreach) 0090 # handle single argument first 0091 if("${__cmake_parse_array_state}" STREQUAL single) 0092 set("${name}_${__cmake_parse_array_cur_option}" 0093 "${__cmake_parse_array_full_value}") 0094 set(__cmake_parse_array_state unused) 0095 return() 0096 elseif("${__cmake_parse_array_state}" STREQUAL multi_array) 0097 cmake_array_concat("${${name}_${__cmake_parse_array_cur_option}}" 0098 "${__cmake_parse_array_full_value}") 0099 set(__cmake_parse_array_state unused) 0100 return() 0101 elseif("${__cmake_parse_array_state}" STREQUAL list_array) 0102 cmake_array_copy("${__cmake_parse_array_full_value}" 0103 __cmake_parse_array_state) 0104 cmake_array_append("${${name}_${__cmake_parse_array_cur_option}}" 0105 "${__cmake_parse_array_state}") 0106 set(__cmake_parse_array_state unused) 0107 return() 0108 elseif("${__cmake_parse_array_state}" STREQUAL multi_list_array) 0109 cmake_array_foreach(__cmake_parse_array_multi_list_array_value 0110 __cmake_parse_array_full_multi_list_array_foreach 0111 "${__cmake_parse_array_full_value}") 0112 set(__cmake_parse_array_state unused) 0113 return() 0114 endif() 0115 # Check if the argument is one of the options 0116 foreach(__cmake_parse_array_option ${options}) 0117 if("x${op_pre}${__cmake_parse_array_option}${op_suf}x" STREQUAL 0118 "x${__cmake_parse_array_full_value}x") 0119 set("${name}_${__cmake_parse_array_option}" True) 0120 set(__cmake_parse_array_state unused) 0121 return() 0122 endif() 0123 endforeach() 0124 # Check if the argument is one of the single value arguments 0125 foreach(__cmake_parse_array_option ${single_args}) 0126 if("x${op_pre}${__cmake_parse_array_option}${op_suf}x" STREQUAL 0127 "x${__cmake_parse_array_full_value}x") 0128 __cmake_parse_array_full_set_state(single) 0129 return() 0130 endif() 0131 endforeach() 0132 # Check if the argument is one of the multi value arguments 0133 foreach(__cmake_parse_array_option ${multi_args}) 0134 if("x${op_pre}${__cmake_parse_array_option}${op_suf}x" STREQUAL 0135 "x${__cmake_parse_array_full_value}x") 0136 __cmake_parse_array_full_set_state(multi) 0137 return() 0138 endif() 0139 if("x${ary_pre}x" STREQUAL "xx" AND "x${ary_suf}x" STREQUAL "xx") 0140 if("x${op_pre}${__cmake_parse_array_option}[]${op_suf}x" STREQUAL 0141 "x${__cmake_parse_array_full_value}x") 0142 __cmake_parse_array_full_set_state(multi_array) 0143 return() 0144 endif() 0145 else() 0146 if("x${op_pre}${ary_pre}${__cmake_parse_array_option}${ary_suf}${op_suf}x" STREQUAL "x${__cmake_parse_array_full_value}x") 0147 __cmake_parse_array_full_set_state(multi_array) 0148 return() 0149 endif() 0150 endif() 0151 endforeach() 0152 # Check if the argument is one of the multi list arguments 0153 foreach(__cmake_parse_array_option ${multi_lists}) 0154 if("x${op_pre}${__cmake_parse_array_option}${op_suf}x" STREQUAL 0155 "x${__cmake_parse_array_full_value}x") 0156 set(__cmake_parse_array_state list) 0157 cmake_array_new(__cmake_parse_array_cur_option) 0158 cmake_array_append("${${name}_${__cmake_parse_array_option}}" 0159 "${__cmake_parse_array_cur_option}") 0160 return() 0161 endif() 0162 if("x${ary_pre}x" STREQUAL "xx" AND "x${ary_suf}x" STREQUAL "xx") 0163 if("x${op_pre}${__cmake_parse_array_option}[]${op_suf}x" STREQUAL 0164 "x${__cmake_parse_array_full_value}x") 0165 __cmake_parse_array_full_set_state(list_array) 0166 return() 0167 elseif("x${op_pre}${__cmake_parse_array_option}[][]${op_suf}x" 0168 STREQUAL "x${__cmake_parse_array_full_value}x") 0169 __cmake_parse_array_full_set_state(multi_list_array) 0170 return() 0171 endif() 0172 elseif("x${op_pre}${ary_pre}${__cmake_parse_array_option}${ary_suf}${op_suf}x" STREQUAL "x${__cmake_parse_array_full_value}x") 0173 __cmake_parse_array_full_set_state(list_array) 0174 return() 0175 elseif("x${op_pre}${ary_pre}${ary_pre}${__cmake_parse_array_option}${ary_suf}${ary_suf}${op_suf}x" STREQUAL "x${__cmake_parse_array_full_value}x") 0176 __cmake_parse_array_full_set_state(multi_list_array) 0177 return() 0178 endif() 0179 endforeach() 0180 if("${__cmake_parse_array_state}" STREQUAL unused) 0181 cmake_array_append("${${name}_UNUSED}" 0182 "${__cmake_parse_array_full_value}") 0183 return() 0184 elseif("${__cmake_parse_array_state}" STREQUAL multi) 0185 cmake_array_append("${${name}_${__cmake_parse_array_cur_option}}" 0186 "${__cmake_parse_array_full_value}") 0187 return() 0188 elseif("${__cmake_parse_array_state}" STREQUAL list) 0189 cmake_array_append("${__cmake_parse_array_cur_option}" 0190 "${__cmake_parse_array_full_value}") 0191 endif() 0192 endmacro() 0193 cmake_array_foreach(__cmake_parse_array_full_value 0194 __cmake_parse_array_full_foreach ${ARGN}) 0195 endforeach() 0196 endforeach() 0197 endmacro()