~ubuntu-branches/debian/sid/osgearth/sid

« back to all changes in this revision

Viewing changes to CMakeModules/ListHandle.cmake

  • Committer: Bazaar Package Importer
  • Author(s): Pirmin Kalberer
  • Date: 2011-07-14 22:13:36 UTC
  • Revision ID: james.westby@ubuntu.com-20110714221336-94igk9rskxveh794
Tags: upstream-2.0+dfsg
ImportĀ upstreamĀ versionĀ 2.0+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#miscellaneous macros
 
2
 
 
3
################### macros from http://www.cmake.org/Wiki/CMakeMacroListOperations
 
4
MACRO(CAR var)
 
5
  SET(${var} ${ARGV1})
 
6
ENDMACRO(CAR)
 
7
 
 
8
MACRO(CDR var junk)
 
9
  SET(${var} ${ARGN})
 
10
ENDMACRO(CDR)
 
11
 
 
12
 
 
13
MACRO(LIST_INDEX var index)
 
14
  SET(list . ${ARGN})
 
15
  FOREACH(i RANGE 1 ${index})
 
16
    CDR(list ${list})
 
17
  ENDFOREACH(i)
 
18
  CAR(${var} ${list})
 
19
ENDMACRO(LIST_INDEX)
 
20
 
 
21
######### LIST_CONTAINS usage
 
22
#SET(MYLIST hello world foo bar)
 
23
 
 
24
#LIST_CONTAINS(contains foo ${MYLIST})
 
25
#IF (contains)
 
26
#  MESSAGE("MYLIST contains foo")
 
27
#ENDIF (contains)
 
28
 
 
29
#LIST_CONTAINS(contains baz ${MYLIST})
 
30
#IF (NOT contains)
 
31
#  MESSAGE("MYLIST does not contain baz")
 
32
#ENDIF (NOT contains)
 
33
 
 
34
 
 
35
MACRO(LIST_CONTAINS var value)
 
36
  SET(${var})
 
37
  FOREACH (value2 ${ARGN})
 
38
    IF (${value} STREQUAL ${value2})
 
39
      SET(${var} TRUE)
 
40
    ENDIF (${value} STREQUAL ${value2})
 
41
  ENDFOREACH (value2)
 
42
ENDMACRO(LIST_CONTAINS)
 
43
 
 
44
############################################################
 
45
################### macros from http://www.cmake.org/Wiki/CMakeMacroParseArguments
 
46
MACRO(PARSE_ARGUMENTS prefix arg_names option_names)
 
47
  #MESSAGE("!!!! ${prefix} args-->${arg_names}<-- opt-->${option_names}<--")
 
48
  SET(DEFAULT_ARGS)
 
49
  FOREACH(arg_name ${arg_names})
 
50
    SET(${prefix}_${arg_name})
 
51
  ENDFOREACH(arg_name)
 
52
  FOREACH(option ${option_names})
 
53
    SET(${prefix}_${option} FALSE)
 
54
  ENDFOREACH(option)
 
55
 
 
56
  SET(current_arg_name DEFAULT_ARGS)
 
57
  SET(current_arg_list)
 
58
  FOREACH(arg ${ARGN})
 
59
    #debug#MESSAGE("---->${arg}<------")
 
60
    LIST_CONTAINS(is_arg_name ${arg} ${arg_names})
 
61
    IF (is_arg_name)
 
62
      SET(${prefix}_${current_arg_name} ${current_arg_list})
 
63
      SET(current_arg_name ${arg})
 
64
      SET(current_arg_list)
 
65
    ELSE (is_arg_name)
 
66
      LIST_CONTAINS(is_option ${arg} ${option_names})
 
67
      IF (is_option)
 
68
    SET(${prefix}_${arg} TRUE)
 
69
      ELSE (is_option)
 
70
    SET(current_arg_list ${current_arg_list} ${arg})
 
71
      ENDIF (is_option)
 
72
    ENDIF (is_arg_name)
 
73
  ENDFOREACH(arg)
 
74
  SET(${prefix}_${current_arg_name} ${current_arg_list})
 
75
ENDMACRO(PARSE_ARGUMENTS)
 
76
 
 
77
#############################################################
 
78
#MACRO(SHOW_USAGE_OF_PARSE_ARGUMENTS)
 
79
#  PARSE_ARGUMENTS(PLUGIN
 
80
#    "EXPORTS;AUTOLOAD_SCRIPTS;LINK_LIBRARIES;DEPENDS"
 
81
#    "AUTO_INSTALL;NO_MODULE"
 
82
#    ${ARGN}
 
83
#    )
 
84
#  CAR(PLUGIN_NAME ${PLUGIN_DEFAULT_ARGS})
 
85
#  CDR(PLUGIN_SOURCES ${PLUGIN_DEFAULT_ARGS})
 
86
#
 
87
#  MESSAGE("*** Arguments for ${PLUGIN_NAME}")
 
88
#  MESSAGE("Sources: ${PLUGIN_SOURCES}")
 
89
#  MESSAGE("Exports: ${PLUGIN_EXPORTS}")
 
90
#  MESSAGE("Autoload scripts: ${PLUGIN_AUTOLOAD_SCRIPTS}")
 
91
#  MESSAGE("Link libraries: ${PLUGIN_LINK_LIBRARIES}")
 
92
#  MESSAGE("Depends: ${PLUGIN_DEPENDS}")
 
93
#  IF (PLUGIN_AUTO_INSTALL)
 
94
#    MESSAGE("Auto install")
 
95
#  ENDIF (PLUGIN_AUTO_INSTALL)
 
96
#  IF (PLUGIN_NO_MODULE)
 
97
#    MESSAGE("No module")
 
98
#  ENDIF (PLUGIN_NO_MODULE)
 
99
#ENDMACRO(SHOW_USAGE_OF_PARSE_ARGUMENTS)
 
100
#examples
 
101
#SHOW_USAGE_OF_PARSE_ARGUMENTS(MyAppCore NO_MODULE CoreSource1.cxx CoreSource2.cxx EXPORTS RequiredObject1 RequredObject2 AUTOLOAD_SCRIPTS startup.py initialize.py)
 
102
 
 
103
#SHOW_USAGE_OF_PARSE_ARGUMENTS(MyAppDefaultComponents
 
104
#  Component1.cxx Component2.cxx
 
105
#  EXPORTS Component1 Component2
 
106
#  DEPENDS MyAppCore
 
107
#  AUTO_INSTALL
 
108
#  )
 
109
########################################################
 
110
 
 
111