Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(211)

Side by Side Diff: ui/ozone/generate_ozone_platform_list.py

Issue 1285183008: Ozone integration. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: add missing license header Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/ozone/generate_constructor_list.py ('k') | ui/ozone/gpu/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 """Code generator for Ozone platform list.
7
8 This script takes as arguments a list of platform names and generates a C++
9 source file containing a list of those platforms.
10
11 Each platform gets an integer identifier that is used to find objects for that
12 platform (particularly constructors for platform-specific objects).
13
14 Example Output: ./generate_ozone_platform_list.py --default wayland dri wayland
15
16 // platform_list.txt
17
18 wayland
19 dri
20
21 // platform_list.h
22
23 #ifndef UI_OZONE_PLATFORM_LIST_H_
24 #define UI_OZONE_PLATFORM_LIST_H_
25
26 namespace ui {
27
28 const int kPlatformWayland = 0;
29 const int kPlatformDri = 1;
30
31 extern const char *kPlatformNames[kPlatformCount];
32
33 } // namespace ui
34
35 // platform_list.cc
36
37 #include "ui/ozone/platform_list.h"
38
39 namespace ui {
40
41 const char *kPlatformNames[] = {
42 "wayland", // kPlatformWayland
43 "dri", // kPlatformDri
44 };
45
46 } // namespace ui
47
48 #endif // UI_OZONE_PLATFORM_LIST_H_
49
50 """
51
52 import optparse
53 import os
54 import collections
55 import re
56 import sys
57 import string
58
59
60 def GetConstantName(name):
61 """Determine name of static constructor function from platform name.
62
63 We just capitalize the platform name and prepend "CreateOzonePlatform".
64 """
65
66 return 'kPlatform' + string.capitalize(name)
67
68
69 def GeneratePlatformListText(out, platforms):
70 """Generate text file with list of platform names, in platform id order."""
71
72 for platform in platforms:
73 out.write(platform)
74 out.write('\n')
75
76 out.write('\n')
77
78
79 def GeneratePlatformListHeader(out, platforms):
80 """Generate ids of ozone platforms & declaration of static names array."""
81
82 out.write('// DO NOT MODIFY. GENERATED BY generate_ozone_platform_list.py\n')
83 out.write('\n')
84
85 out.write('#ifndef UI_OZONE_PLATFORM_LIST_H_\n')
86 out.write('#define UI_OZONE_PLATFORM_LIST_H_\n')
87 out.write('\n')
88
89 out.write('namespace ui {\n')
90 out.write('\n')
91
92 # Prototypes for platform initializers.
93 for plat_id, plat_name in enumerate(platforms):
94 out.write('const int %s = %d;\n' % (GetConstantName(plat_name), plat_id))
95 out.write('\n')
96
97 # Platform count.
98 out.write('const int kPlatformCount = %d;\n' % len(platforms))
99 out.write('\n')
100
101 # Declaration for names list.
102 out.write('extern const char* kPlatformNames[kPlatformCount];\n')
103 out.write('\n')
104
105 out.write('} // namespace ui\n')
106 out.write('\n')
107
108 out.write('#endif // UI_OZONE_PLATFORM_LIST_H_\n')
109 out.write('\n')
110
111
112 def GeneratePlatformListSource(out, platforms):
113 """Generate static array containing a list of ozone platforms."""
114
115 out.write('// DO NOT MODIFY. GENERATED BY generate_ozone_platform_list.py\n')
116 out.write('\n')
117
118 out.write('#include "ui/ozone/platform_list.h"\n')
119 out.write('\n')
120
121 out.write('namespace ui {\n')
122 out.write('\n')
123
124 # Definition of names list.
125 out.write('const char* kPlatformNames[] = {\n')
126
127 # Prototypes for platform initializers.
128 for plat_name in platforms:
129 out.write(' "%s", // %s\n' % (plat_name, GetConstantName(plat_name)))
130 out.write('};\n')
131 out.write('\n')
132
133 out.write('} // namespace ui\n')
134 out.write('\n')
135
136
137 def main(argv):
138 parser = optparse.OptionParser()
139 parser.add_option('--output_cc')
140 parser.add_option('--output_h')
141 parser.add_option('--output_txt')
142 parser.add_option('--default')
143 options, platforms = parser.parse_args(argv)
144
145 # Reorder the platforms when --default is specified.
146 # The default platform must appear first in the platform list.
147 if options.default and options.default in platforms:
148 platforms.remove(options.default)
149 platforms.insert(0, options.default)
150
151 # Write to standard output or file specified by --output_{cc,h}.
152 out_cc = sys.stdout
153 out_h = sys.stdout
154 out_txt = sys.stdout
155 if options.output_cc:
156 out_cc = open(options.output_cc, 'wb')
157 if options.output_h:
158 out_h = open(options.output_h, 'wb')
159 if options.output_txt:
160 out_txt = open(options.output_txt, 'wb')
161
162 GeneratePlatformListText(out_txt, platforms)
163 GeneratePlatformListHeader(out_h, platforms)
164 GeneratePlatformListSource(out_cc, platforms)
165
166 if options.output_cc:
167 out_cc.close()
168 if options.output_h:
169 out_h.close()
170 if options.output_txt:
171 out_txt.close()
172
173 return 0
174
175
176 if __name__ == '__main__':
177 sys.exit(main(sys.argv[1:]))
OLDNEW
« no previous file with comments | « ui/ozone/generate_constructor_list.py ('k') | ui/ozone/gpu/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698