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

Side by Side Diff: SConstruct

Issue 6793005: Add the xrender backend to the window manager. (Closed) Base URL: ssh://gitrw.chromium.org:9222/window_manager.git@master
Patch Set: Address fourth round of comments. Created 9 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | compositor/gl/opengl_visitor.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import fnmatch 5 import fnmatch
6 import itertools 6 import itertools
7 import os 7 import os
8 8
9 import make_shaders 9 import make_shaders
10 10
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 49
50 # Check for BACKEND on the build line 50 # Check for BACKEND on the build line
51 backend = ARGUMENTS.get('BACKEND', 'OPENGL').lower() 51 backend = ARGUMENTS.get('BACKEND', 'OPENGL').lower()
52 52
53 # Start a new environment for the window manager. 53 # Start a new environment for the window manager.
54 wm_env = base_env.Clone() 54 wm_env = base_env.Clone()
55 55
56 wm_env.Append(LIBS=Split('chromeos metrics protobuf')) 56 wm_env.Append(LIBS=Split('chromeos metrics protobuf'))
57 wm_env.ParseConfig('pkg-config --cflags --libs dbus-1 libpcrecpp libpng12 ' + 57 wm_env.ParseConfig('pkg-config --cflags --libs dbus-1 libpcrecpp libpng12 ' +
58 'xcb x11-xcb xcb-composite xcb-randr xcb-shape xcb-damage ' + 58 'xcb x11-xcb xcb-composite xcb-randr xcb-shape xcb-damage ' +
59 'xcb-sync xcomposite xdamage xext') 59 'xcb-sync xcomposite xdamage xext xrender')
60 60
61 if backend == 'opengl': 61 if backend == 'opengl':
62 # This is needed so that glext headers include glBindBuffer and 62 # This is needed so that glext headers include glBindBuffer and
63 # related APIs. 63 # related APIs.
64 wm_env.Append(CPPDEFINES=['GL_GLEXT_PROTOTYPES']) 64 wm_env.Append(CPPDEFINES=['GL_GLEXT_PROTOTYPES'])
65 wm_env.ParseConfig('pkg-config --cflags --libs gl') 65 wm_env.ParseConfig('pkg-config --cflags --libs gl')
66 elif backend == 'opengles': 66 elif backend == 'opengles':
67 # Add builder for .glsl* files, and GLESv2 libraries 67 # Add builder for .glsl* files, and GLESv2 libraries
68 make_shaders.AddBuildRules(wm_env) 68 make_shaders.AddBuildRules(wm_env)
69 wm_env.Append(LIBS=['EGL', 'GLESv2']) 69 wm_env.Append(LIBS=['EGL', 'GLESv2'])
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 srcs.append(Split('''\ 127 srcs.append(Split('''\
128 compositor/gles/opengles_visitor.cc 128 compositor/gles/opengles_visitor.cc
129 compositor/gles/real_gles2_interface.cc 129 compositor/gles/real_gles2_interface.cc
130 compositor/gles/shader_base.cc 130 compositor/gles/shader_base.cc
131 compositor/gles/shaders.cc 131 compositor/gles/shaders.cc
132 ''')) 132 '''))
133 # SCons doesn't figure out this dependency on its own, since 133 # SCons doesn't figure out this dependency on its own, since
134 # opengles_visitor.cc includes "window_manager/compositor/gles/shaders.h", 134 # opengles_visitor.cc includes "window_manager/compositor/gles/shaders.h",
135 # while the shaders builder just provides "compositor/gles/shaders.h". 135 # while the shaders builder just provides "compositor/gles/shaders.h".
136 Depends('compositor/gles/opengles_visitor.o', 'compositor/gles/shaders.h') 136 Depends('compositor/gles/opengles_visitor.o', 'compositor/gles/shaders.h')
137 elif backend == 'xrender':
138 srcs.append(Split('''\
139 compositor/xrender/xrender_visitor.cc
140 '''))
137 141
138 libwm_core = wm_env.Library('wm_core', srcs) 142 libwm_core = wm_env.Library('wm_core', srcs)
139 143
140 # Define a library to be used by tests. 144 # Define a library to be used by tests.
141 srcs = Split('''\ 145 srcs = Split('''\
142 compositor/gl/mock_gl_interface.cc 146 compositor/gl/mock_gl_interface.cc
143 compositor/mock_compositor.cc 147 compositor/mock_compositor.cc
144 mock_dbus_interface.cc 148 mock_dbus_interface.cc
145 test_lib.cc 149 test_lib.cc
146 x11/mock_x_connection.cc 150 x11/mock_x_connection.cc
147 ''') 151 ''')
148 libtest = wm_env.Library('test', Split(srcs)) 152 libtest = wm_env.Library('test', Split(srcs))
149 153
150 wm_env.Prepend(LIBS=[libwm_core, libwm_ipc]) 154 wm_env.Prepend(LIBS=[libwm_core, libwm_ipc])
151 155
152 backend_defines = {'opengl': ['COMPOSITOR_OPENGL'], 156 backend_defines = {'opengl': ['COMPOSITOR_OPENGL'],
153 'opengles': ['COMPOSITOR_OPENGLES']} 157 'opengles': ['COMPOSITOR_OPENGLES'],
158 'xrender': ['COMPOSITOR_XRENDER']}
154 wm_env.Append(CPPDEFINES=backend_defines[backend]) 159 wm_env.Append(CPPDEFINES=backend_defines[backend])
155 160
156 test_env = wm_env.Clone() 161 test_env = wm_env.Clone()
157 162
158 wm_env.Program('wm', 'main.cc') 163 wm_env.Program('wm', 'main.cc')
159 164
160 test_env.Append(LIBS=['gtest']) 165 test_env.Append(LIBS=['gtest'])
161 # libtest needs to be listed first since it depends on wm_core and wm_ipc. 166 # libtest needs to be listed first since it depends on wm_core and wm_ipc.
162 test_env.Prepend(LIBS=[libtest]) 167 test_env.Prepend(LIBS=[libtest])
163 tests = [] 168 tests = []
164 169
165 # These are tests that only get built when we use particular backends. 170 # These are tests that only get built when we use particular backends.
166 backend_tests = {'opengl': ['real_compositor_test.cc', 171 backend_tests = {'opengl': ['real_compositor_test.cc',
167 'opengl_visitor_test.cc'], 172 'opengl_visitor_test.cc'],
168 'opengles': []} 173 'opengles': [],
174 'xrender': []}
169 all_backend_tests = set(itertools.chain(*backend_tests.values())) 175 all_backend_tests = set(itertools.chain(*backend_tests.values()))
170 for root, dirnames, filenames in os.walk('.'): 176 for root, dirnames, filenames in os.walk('.'):
171 for filename in fnmatch.filter(filenames, '*_test.cc'): 177 for filename in fnmatch.filter(filenames, '*_test.cc'):
172 if filename in all_backend_tests and filename not in backend_tests[backend]: 178 if filename in all_backend_tests and filename not in backend_tests[backend]:
173 continue 179 continue
174 tests += test_env.Program(os.path.join(root, filename)) 180 tests += test_env.Program(os.path.join(root, filename))
175 181
176 # Create a 'tests' target that will build all tests. 182 # Create a 'tests' target that will build all tests.
177 test_env.Alias('tests', tests) 183 test_env.Alias('tests', tests)
178 184
179 # mock_chrome is just a small program that developers can use to test 185 # mock_chrome is just a small program that developers can use to test
180 # interaction between the window manager and Chrome. We only define a 186 # interaction between the window manager and Chrome. We only define a
181 # target for it if gtkmm is installed so that this SConstruct file can 187 # target for it if gtkmm is installed so that this SConstruct file can
182 # still be parsed in the chroot build environment, which shouldn't contain 188 # still be parsed in the chroot build environment, which shouldn't contain
183 # gtkmm. 189 # gtkmm.
184 if os.system('pkg-config --exists gtkmm-2.4') == 0: 190 if os.system('pkg-config --exists gtkmm-2.4') == 0:
185 mock_chrome_env = wm_env.Clone() 191 mock_chrome_env = wm_env.Clone()
186 mock_chrome_env.ParseConfig('pkg-config --cflags --libs gtkmm-2.4') 192 mock_chrome_env.ParseConfig('pkg-config --cflags --libs gtkmm-2.4')
187 mock_chrome_env.Program('mock_chrome', 'mock_chrome.cc') 193 mock_chrome_env.Program('mock_chrome', 'mock_chrome.cc')
OLDNEW
« no previous file with comments | « no previous file | compositor/gl/opengl_visitor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698