Tweak svn/git ignores
[zxing.git] / cpp / scons / scons-local-2.0.0.final.0 / SCons / Tool / jar.py
1 """SCons.Tool.jar
2
3 Tool-specific initialization for jar.
4
5 There normally shouldn't be any need to import this module directly.
6 It will usually be imported through the generic SCons.Tool.Tool()
7 selection method.
8
9 """
10
11 #
12 # Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
13 #
14 # Permission is hereby granted, free of charge, to any person obtaining
15 # a copy of this software and associated documentation files (the
16 # "Software"), to deal in the Software without restriction, including
17 # without limitation the rights to use, copy, modify, merge, publish,
18 # distribute, sublicense, and/or sell copies of the Software, and to
19 # permit persons to whom the Software is furnished to do so, subject to
20 # the following conditions:
21 #
22 # The above copyright notice and this permission notice shall be included
23 # in all copies or substantial portions of the Software.
24 #
25 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
26 # KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
27 # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
28 # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
29 # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
30 # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
31 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32 #
33
34 __revision__ = "src/engine/SCons/Tool/jar.py 5023 2010/06/14 22:05:46 scons"
35
36 import SCons.Subst
37 import SCons.Util
38
39 def jarSources(target, source, env, for_signature):
40     """Only include sources that are not a manifest file."""
41     try:
42         env['JARCHDIR']
43     except KeyError:
44         jarchdir_set = False
45     else:
46         jarchdir_set = True
47         jarchdir = env.subst('$JARCHDIR', target=target, source=source)
48         if jarchdir:
49             jarchdir = env.fs.Dir(jarchdir)
50     result = []
51     for src in source:
52         contents = src.get_text_contents()
53         if contents[:16] != "Manifest-Version":
54             if jarchdir_set:
55                 _chdir = jarchdir
56             else:
57                 try:
58                     _chdir = src.attributes.java_classdir
59                 except AttributeError:
60                     _chdir = None
61             if _chdir:
62                 # If we are changing the dir with -C, then sources should
63                 # be relative to that directory.
64                 src = SCons.Subst.Literal(src.get_path(_chdir))
65                 result.append('-C')
66                 result.append(_chdir)
67             result.append(src)
68     return result
69
70 def jarManifest(target, source, env, for_signature):
71     """Look in sources for a manifest file, if any."""
72     for src in source:
73         contents = src.get_text_contents()
74         if contents[:16] == "Manifest-Version":
75             return src
76     return ''
77
78 def jarFlags(target, source, env, for_signature):
79     """If we have a manifest, make sure that the 'm'
80     flag is specified."""
81     jarflags = env.subst('$JARFLAGS', target=target, source=source)
82     for src in source:
83         contents = src.get_text_contents()
84         if contents[:16] == "Manifest-Version":
85             if not 'm' in jarflags:
86                 return jarflags + 'm'
87             break
88     return jarflags
89
90 def generate(env):
91     """Add Builders and construction variables for jar to an Environment."""
92     SCons.Tool.CreateJarBuilder(env)
93
94     env['JAR']        = 'jar'
95     env['JARFLAGS']   = SCons.Util.CLVar('cf')
96     env['_JARFLAGS']  = jarFlags
97     env['_JARMANIFEST'] = jarManifest
98     env['_JARSOURCES'] = jarSources
99     env['_JARCOM']    = '$JAR $_JARFLAGS $TARGET $_JARMANIFEST $_JARSOURCES'
100     env['JARCOM']     = "${TEMPFILE('$_JARCOM')}"
101     env['JARSUFFIX']  = '.jar'
102
103 def exists(env):
104     return env.Detect('jar')
105
106 # Local Variables:
107 # tab-width:4
108 # indent-tabs-mode:nil
109 # End:
110 # vim: set expandtab tabstop=4 shiftwidth=4: