3 # Copyright (c) 2009 Martin Decky
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions
10 # - Redistributions of source code must retain the above copyright
11 # notice, this list of conditions and the following disclaimer.
12 # - Redistributions in binary form must reproduce the above copyright
13 # notice, this list of conditions and the following disclaimer in the
14 # documentation and/or other materials provided with the distribution.
15 # - The name of the author may not be used to endorse or promote products
16 # derived from this software without specific prior written permission.
18 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21 # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23 # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 Add a source/object file pair to a checker jobfile
40 print(prname
+ " <JOBFILE> <CC> <INPUT> -o <OUTPUT> [CC_ARGUMENTS ...]")
43 if (len(sys
.argv
) < 6):
47 jobfname
= sys
.argv
[1]
49 srcfname
= sys
.argv
[3]
50 assert(not srcfname
.startswith("-"))
51 assert(sys
.argv
[4] == "-o")
52 tgtfname
= sys
.argv
[5]
53 options
= " ".join(sys
.argv
[6:])
56 if srcfname
.endswith(".c"):
60 if srcfname
.endswith(".s"):
64 if srcfname
.endswith(".S"):
66 category
= "asm/preproc"
68 jobfile
= open(jobfname
, "a")
69 fcntl
.lockf(jobfile
, fcntl
.LOCK_EX
)
70 jobfile
.write("{%s},{%s},{%s},{%s},{%s},{%s}\n" % (srcfname
, tgtfname
, toolname
, category
, cwd
, options
))
71 fcntl
.lockf(jobfile
, fcntl
.LOCK_UN
)
74 # Run the compiler proper.
75 os
.execvp(ccname
, sys
.argv
[2:])
77 if __name__
== '__main__':