1 2# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. 3# 4# This program is free software; you can redistribute it and/or modify 5# it under the terms of the GNU General Public License, version 2.0, 6# as published by the Free Software Foundation. 7# 8# This program is also distributed with certain software (including 9# but not limited to OpenSSL) that is licensed under separate terms, 10# as designated in a particular file or component or in included license 11# documentation. The authors of MySQL hereby grant you an additional 12# permission to link the program and your derivative works with the 13# separately licensed software that they have included with MySQL. 14# 15# This program is distributed in the hope that it will be useful, 16# but WITHOUT ANY WARRANTY; without even the implied warranty of 17# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18# GNU General Public License, version 2.0, for more details. 19# 20# You should have received a copy of the GNU General Public License 21# along with this program; if not, write to the Free Software 22# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 23 24# Handy macro to parse macro arguments 25MACRO(MYSQL_PARSE_ARGUMENTS prefix arg_names option_names) 26 SET(DEFAULT_ARGS) 27 FOREACH(arg_name ${arg_names}) 28 SET(${prefix}_${arg_name}) 29 ENDFOREACH(arg_name) 30 FOREACH(option ${option_names}) 31 SET(${prefix}_${option} FALSE) 32 ENDFOREACH(option) 33 34 SET(current_arg_name DEFAULT_ARGS) 35 SET(current_arg_list) 36 FOREACH(arg ${ARGN}) 37 SET(larg_names ${arg_names}) 38 LIST(FIND larg_names "${arg}" is_arg_name) 39 IF (is_arg_name GREATER -1) 40 SET(${prefix}_${current_arg_name} ${current_arg_list}) 41 SET(current_arg_name ${arg}) 42 SET(current_arg_list) 43 ELSE (is_arg_name GREATER -1) 44 SET(loption_names ${option_names}) 45 LIST(FIND loption_names "${arg}" is_option) 46 IF (is_option GREATER -1) 47 SET(${prefix}_${arg} TRUE) 48 ELSE (is_option GREATER -1) 49 SET(current_arg_list ${current_arg_list} ${arg}) 50 ENDIF (is_option GREATER -1) 51 ENDIF (is_arg_name GREATER -1) 52 ENDFOREACH(arg) 53 SET(${prefix}_${current_arg_name} ${current_arg_list}) 54ENDMACRO()