Mercurial > codeOptimizer
annotate codeOptimizer.py @ 3:f65c2d63ab66
Rename Options to Config
| author | Tom Fredrik Blenning Klaussen <bfg@blenning.no> |
|---|---|
| date | Sun, 16 Sep 2012 21:31:41 +0200 |
| parents | 10f1d7de9bc3 |
| children | 3a56cd936c59 |
| rev | line source |
|---|---|
|
0
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
1 #!/usr/bin/env python -O |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
2 |
|
1
a1224150b8f6
Cleanup and making code easier to read.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
0
diff
changeset
|
3 import sys |
|
0
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
4 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
5 from Compilable import Compilable |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
6 from DepGraph import DepGraph |
|
3
f65c2d63ab66
Rename Options to Config
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
2
diff
changeset
|
7 from Config import Config |
|
0
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
8 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
9 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
10 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
11 def isHppfile(name): |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
12 if name.endswith(".hpp"): |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
13 return True |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
14 if name.endswith(".h"): |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
15 return True |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
16 return False |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
17 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
18 def isCppfile(name): |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
19 if name.endswith(".cpp"): |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
20 return True |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
21 return False |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
22 |
|
2
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
1
diff
changeset
|
23 try: |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
1
diff
changeset
|
24 options = Config(sys.argv[1]) |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
1
diff
changeset
|
25 except: |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
1
diff
changeset
|
26 print sys.argv[1] + ' is not a valid xml file' |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
1
diff
changeset
|
27 infiles = sys.argv[2:] |
|
0
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
28 |
|
1
a1224150b8f6
Cleanup and making code easier to read.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
0
diff
changeset
|
29 files = {} |
|
0
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
30 unknown = [] |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
31 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
32 for file in infiles: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
33 if isHppfile(file) or isCppfile(file): |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
34 c = Compilable(file) |
|
2
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
1
diff
changeset
|
35 c.setFlags(options.getCxxflags(file)) |
|
1
a1224150b8f6
Cleanup and making code easier to read.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
0
diff
changeset
|
36 files[file] = c |
|
0
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
37 else: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
38 unknown.append(file) |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
39 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
40 if len(unknown) > 0: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
41 str = ", " |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
42 raise SystemExit(str.join(unknown) + " are of unknown filetype") |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
43 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
44 depgraph = DepGraph() |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
45 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
46 for file in files: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
47 depgraph.add(files[file]) |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
48 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
49 for file in files: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
50 depgraph.addDependency(files[file], files[file].dependencies()) |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
51 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
52 files = depgraph.directedGraph() |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
53 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
54 for file in files: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
55 if not file.worksWithoutModifications(): |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
56 print file.path |
|
2
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
1
diff
changeset
|
57 raise SystemExit(file.path + " does not compile at all") |
|
0
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
58 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
59 for file in files: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
60 removable = file.removeRemovableIncludes() |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
61 if removable: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
62 print 'Removable lines in ' + file.path |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
63 for r in removable: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
64 print str(r) + ' : ' + file.lines[r].rstrip() |
|
1
a1224150b8f6
Cleanup and making code easier to read.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
0
diff
changeset
|
65 |
|
a1224150b8f6
Cleanup and making code easier to read.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
0
diff
changeset
|
66 replacable = file.replaceIncludes(dict.fromkeys(removable, '\n')) |
|
0
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
67 if replacable: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
68 print 'Replacable lines in ' + file.path |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
69 for r in replacable: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
70 print str(r) + ' : ' + file.lines[r].rstrip() |
