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()