~plane1/maus/devel_624

« back to all changes in this revision

Viewing changes to third_party/JsonCpp_0.5.0/scons-tools/.svn/text-base/srcdist.py.svn-base

  • Committer: Christopher Tunnell
  • Date: 2010-10-22 23:28:44 UTC
  • Revision ID: c.tunnell1@physics.ox.ac.uk-20101022232844-o8bl6n26kk03deuw
remove jsoncpp (so it's now downloaded instead)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
import os
2
 
import os.path
3
 
from fnmatch import fnmatch
4
 
import targz
5
 
 
6
 
##def DoxyfileParse(file_contents):
7
 
##   """
8
 
##   Parse a Doxygen source file and return a dictionary of all the values.
9
 
##   Values will be strings and lists of strings.
10
 
##   """
11
 
##   data = {}
12
 
##
13
 
##   import shlex
14
 
##   lex = shlex.shlex(instream = file_contents, posix = True)
15
 
##   lex.wordchars += "*+./-:"
16
 
##   lex.whitespace = lex.whitespace.replace("\n", "")
17
 
##   lex.escape = ""
18
 
##
19
 
##   lineno = lex.lineno
20
 
##   last_backslash_lineno = lineno
21
 
##   token = lex.get_token()
22
 
##   key = token   # the first token should be a key
23
 
##   last_token = ""
24
 
##   key_token = False
25
 
##   next_key = False
26
 
##   new_data = True
27
 
##
28
 
##   def append_data(data, key, new_data, token):
29
 
##      if new_data or len(data[key]) == 0:
30
 
##         data[key].append(token)
31
 
##      else:
32
 
##         data[key][-1] += token
33
 
##
34
 
##   while token:
35
 
##      if token in ['\n']:
36
 
##         if last_token not in ['\\']:
37
 
##            key_token = True
38
 
##      elif token in ['\\']:
39
 
##         pass
40
 
##      elif key_token:
41
 
##         key = token
42
 
##         key_token = False
43
 
##      else:
44
 
##         if token == "+=":
45
 
##            if not data.has_key(key):
46
 
##               data[key] = list()
47
 
##         elif token == "=":
48
 
##            data[key] = list()
49
 
##         else:
50
 
##            append_data( data, key, new_data, token )
51
 
##            new_data = True
52
 
##
53
 
##      last_token = token
54
 
##      token = lex.get_token()
55
 
##      
56
 
##      if last_token == '\\' and token != '\n':
57
 
##         new_data = False
58
 
##         append_data( data, key, new_data, '\\' )
59
 
##
60
 
##   # compress lists of len 1 into single strings
61
 
##   for (k, v) in data.items():
62
 
##      if len(v) == 0:
63
 
##         data.pop(k)
64
 
##
65
 
##      # items in the following list will be kept as lists and not converted to strings
66
 
##      if k in ["INPUT", "FILE_PATTERNS", "EXCLUDE_PATTERNS"]:
67
 
##         continue
68
 
##
69
 
##      if len(v) == 1:
70
 
##         data[k] = v[0]
71
 
##
72
 
##   return data
73
 
##
74
 
##def DoxySourceScan(node, env, path):
75
 
##   """
76
 
##   Doxygen Doxyfile source scanner.  This should scan the Doxygen file and add
77
 
##   any files used to generate docs to the list of source files.
78
 
##   """
79
 
##   default_file_patterns = [
80
 
##      '*.c', '*.cc', '*.cxx', '*.cpp', '*.c++', '*.java', '*.ii', '*.ixx',
81
 
##      '*.ipp', '*.i++', '*.inl', '*.h', '*.hh ', '*.hxx', '*.hpp', '*.h++',
82
 
##      '*.idl', '*.odl', '*.cs', '*.php', '*.php3', '*.inc', '*.m', '*.mm',
83
 
##      '*.py',
84
 
##   ]
85
 
##
86
 
##   default_exclude_patterns = [
87
 
##      '*~',
88
 
##   ]
89
 
##
90
 
##   sources = []
91
 
##
92
 
##   data = DoxyfileParse(node.get_contents())
93
 
##
94
 
##   if data.get("RECURSIVE", "NO") == "YES":
95
 
##      recursive = True
96
 
##   else:
97
 
##      recursive = False
98
 
##
99
 
##   file_patterns = data.get("FILE_PATTERNS", default_file_patterns)
100
 
##   exclude_patterns = data.get("EXCLUDE_PATTERNS", default_exclude_patterns)
101
 
##
102
 
##   for node in data.get("INPUT", []):
103
 
##      if os.path.isfile(node):
104
 
##         sources.add(node)
105
 
##      elif os.path.isdir(node):
106
 
##         if recursive:
107
 
##            for root, dirs, files in os.walk(node):
108
 
##               for f in files:
109
 
##                  filename = os.path.join(root, f)
110
 
##
111
 
##                  pattern_check = reduce(lambda x, y: x or bool(fnmatch(filename, y)), file_patterns, False)
112
 
##                  exclude_check = reduce(lambda x, y: x and fnmatch(filename, y), exclude_patterns, True)
113
 
##
114
 
##                  if pattern_check and not exclude_check:
115
 
##                     sources.append(filename)
116
 
##         else:
117
 
##            for pattern in file_patterns:
118
 
##               sources.extend(glob.glob("/".join([node, pattern])))
119
 
##   sources = map( lambda path: env.File(path), sources )
120
 
##   return sources
121
 
##
122
 
##
123
 
##def DoxySourceScanCheck(node, env):
124
 
##   """Check if we should scan this file"""
125
 
##   return os.path.isfile(node.path)
126
 
 
127
 
def srcDistEmitter(source, target, env):
128
 
##   """Doxygen Doxyfile emitter"""
129
 
##   # possible output formats and their default values and output locations
130
 
##   output_formats = {
131
 
##      "HTML": ("YES", "html"),
132
 
##      "LATEX": ("YES", "latex"),
133
 
##      "RTF": ("NO", "rtf"),
134
 
##      "MAN": ("YES", "man"),
135
 
##      "XML": ("NO", "xml"),
136
 
##   }
137
 
##
138
 
##   data = DoxyfileParse(source[0].get_contents())
139
 
##
140
 
##   targets = []
141
 
##   out_dir = data.get("OUTPUT_DIRECTORY", ".")
142
 
##
143
 
##   # add our output locations
144
 
##   for (k, v) in output_formats.items():
145
 
##      if data.get("GENERATE_" + k, v[0]) == "YES":
146
 
##         targets.append(env.Dir( os.path.join(out_dir, data.get(k + "_OUTPUT", v[1]))) )
147
 
##
148
 
##   # don't clobber targets
149
 
##   for node in targets:
150
 
##      env.Precious(node)
151
 
##
152
 
##   # set up cleaning stuff
153
 
##   for node in targets:
154
 
##      env.Clean(node, node)
155
 
##
156
 
##   return (targets, source)
157
 
   return (target,source)
158
 
 
159
 
def generate(env):
160
 
   """
161
 
   Add builders and construction variables for the
162
 
   SrcDist tool.
163
 
   """
164
 
##   doxyfile_scanner = env.Scanner(
165
 
##      DoxySourceScan,
166
 
##      "DoxySourceScan",
167
 
##      scan_check = DoxySourceScanCheck,
168
 
##   )
169
 
 
170
 
   if targz.exists(env):
171
 
      srcdist_builder = targz.makeBuilder( srcDistEmitter )
172
 
 
173
 
      env['BUILDERS']['SrcDist'] = srcdist_builder
174
 
 
175
 
def exists(env):
176
 
   """
177
 
   Make sure srcdist exists.
178
 
   """
179
 
   return targz.exists(env)