~writer-devs/writer/trunk

« back to all changes in this revision

Viewing changes to cmake/ParseArguments.cmake

  • Committer: Anthony Huben
  • Date: 2014-09-05 01:46:13 UTC
  • mto: This revision was merged to the branch mainline in revision 54.
  • Revision ID: harp37@gmail.com-20140905014613-r5s0s8v662e4n4p4
Add initial support for cmake.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
##
 
2
# This is a helper Macro to parse optional arguments in Macros/Functions
 
3
# It has been taken from the public CMake wiki.  
 
4
# See http://www.cmake.org/Wiki/CMakeMacroParseArguments for documentation and
 
5
# licensing.
 
6
##
 
7
macro(parse_arguments prefix arg_names option_names)
 
8
  set(DEFAULT_ARGS)
 
9
  foreach(arg_name ${arg_names})
 
10
    set(${prefix}_${arg_name})
 
11
  endforeach(arg_name)
 
12
  foreach(option ${option_names})
 
13
    set(${prefix}_${option} FALSE)
 
14
  endforeach(option)
 
15
 
 
16
  set(current_arg_name DEFAULT_ARGS)
 
17
  set(current_arg_list)
 
18
  foreach(arg ${ARGN})
 
19
    set(larg_names ${arg_names})
 
20
    list(FIND larg_names "${arg}" is_arg_name)
 
21
    if(is_arg_name GREATER -1)
 
22
      set(${prefix}_${current_arg_name} ${current_arg_list})
 
23
      set(current_arg_name ${arg})
 
24
      set(current_arg_list)
 
25
    else(is_arg_name GREATER -1)
 
26
      set(loption_names ${option_names})
 
27
      list(FIND loption_names "${arg}" is_option)
 
28
      if(is_option GREATER -1)
 
29
            set(${prefix}_${arg} TRUE)
 
30
      else(is_option GREATER -1)
 
31
            set(current_arg_list ${current_arg_list} ${arg})
 
32
      endif(is_option GREATER -1)
 
33
    endif(is_arg_name GREATER -1)
 
34
  endforeach(arg)
 
35
  set(${prefix}_${current_arg_name} ${current_arg_list})
 
36
endmacro(parse_arguments)