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

Side by Side Diff: native_client_sdk/src/build_tools/build_projects.py

Issue 240493003: Support static/dynamic for bionic (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix issues. Created 6 years, 7 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 | native_client_sdk/src/build_tools/build_sdk.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import multiprocessing 6 import multiprocessing
7 import optparse 7 import optparse
8 import os 8 import os
9 import posixpath 9 import posixpath
10 import sys 10 import sys
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 with open(make_exe, 'wb') as f: 87 with open(make_exe, 'wb') as f:
88 f.write(urllib2.urlopen(make_url).read()) 88 f.write(urllib2.urlopen(make_url).read())
89 89
90 90
91 def ValidateToolchains(toolchains): 91 def ValidateToolchains(toolchains):
92 invalid_toolchains = set(toolchains) - set(VALID_TOOLCHAINS) 92 invalid_toolchains = set(toolchains) - set(VALID_TOOLCHAINS)
93 if invalid_toolchains: 93 if invalid_toolchains:
94 buildbot_common.ErrorExit('Invalid toolchain(s): %s' % ( 94 buildbot_common.ErrorExit('Invalid toolchain(s): %s' % (
95 ', '.join(invalid_toolchains))) 95 ', '.join(invalid_toolchains)))
96 96
97 def GetDeps(projects):
98 out = {}
99
100 # Build list of all project names
101 localtargets = [proj['NAME'] for proj in projects]
102
103 # For each project
104 for proj in projects:
105 deplist = []
106 # generate a list of dependencies
107 for targ in proj.get('TARGETS', []):
108 deplist.extend(targ.get('DEPS', []) + targ.get('LIBS', []))
109
110 # and add dependencies to targets built in this subtree
111 localdeps = [dep for dep in deplist if dep in localtargets]
112 if localdeps:
113 out[proj['NAME']] = localdeps
114
115 return out
116
97 117
98 def UpdateProjects(pepperdir, project_tree, toolchains, 118 def UpdateProjects(pepperdir, project_tree, toolchains,
99 clobber=False, configs=None, first_toolchain=False): 119 clobber=False, configs=None, first_toolchain=False):
100 if configs is None: 120 if configs is None:
101 configs = ['Debug', 'Release'] 121 configs = ['Debug', 'Release']
102 if not os.path.exists(os.path.join(pepperdir, 'tools')): 122 if not os.path.exists(os.path.join(pepperdir, 'tools')):
103 buildbot_common.ErrorExit('Examples depend on missing tools.') 123 buildbot_common.ErrorExit('Examples depend on missing tools.')
104 if not os.path.exists(os.path.join(pepperdir, 'toolchain')): 124 if not os.path.exists(os.path.join(pepperdir, 'toolchain')):
105 buildbot_common.ErrorExit('Examples depend on missing toolchains.') 125 buildbot_common.ErrorExit('Examples depend on missing toolchains.')
106 126
107 ValidateToolchains(toolchains) 127 ValidateToolchains(toolchains)
108 128
109 # Create the library output directories 129 # Create the library output directories
110 libdir = os.path.join(pepperdir, 'lib') 130 libdir = os.path.join(pepperdir, 'lib')
111 platform = getos.GetPlatform() 131 platform = getos.GetPlatform()
112 for config in configs: 132 for config in configs:
113 for arch in LIB_DICT[platform]: 133 for arch in LIB_DICT[platform]:
114 dirpath = os.path.join(libdir, '%s_%s_host' % (platform, arch), config) 134 dirpath = os.path.join(libdir, '%s_%s_host' % (platform, arch), config)
115 if clobber: 135 if clobber:
116 buildbot_common.RemoveDir(dirpath) 136 buildbot_common.RemoveDir(dirpath)
117 buildbot_common.MakeDir(dirpath) 137 buildbot_common.MakeDir(dirpath)
118 138
119 landing_page = None 139 landing_page = None
120 for branch, projects in project_tree.iteritems(): 140 for branch, projects in project_tree.iteritems():
121 dirpath = os.path.join(pepperdir, branch) 141 dirpath = os.path.join(pepperdir, branch)
122 if clobber: 142 if clobber:
123 buildbot_common.RemoveDir(dirpath) 143 buildbot_common.RemoveDir(dirpath)
124 buildbot_common.MakeDir(dirpath) 144 buildbot_common.MakeDir(dirpath)
125 targets = [desc['NAME'] for desc in projects] 145 targets = [desc['NAME'] for desc in projects]
146 deps = GetDeps(projects)
126 147
127 # Generate master make for this branch of projects 148 # Generate master make for this branch of projects
128 generate_make.GenerateMasterMakefile(pepperdir, 149 generate_make.GenerateMasterMakefile(pepperdir,
129 os.path.join(pepperdir, branch), 150 os.path.join(pepperdir, branch),
130 targets) 151 targets, deps)
131 152
132 if branch.startswith('examples') and not landing_page: 153 if branch.startswith('examples') and not landing_page:
133 landing_page = LandingPage() 154 landing_page = LandingPage()
134 155
135 # Generate individual projects 156 # Generate individual projects
136 for desc in projects: 157 for desc in projects:
137 srcroot = os.path.dirname(desc['FILEPATH']) 158 srcroot = os.path.dirname(desc['FILEPATH'])
138 generate_make.ProcessProject(pepperdir, srcroot, pepperdir, desc, 159 generate_make.ProcessProject(pepperdir, srcroot, pepperdir, desc,
139 toolchains, configs=configs, 160 toolchains, configs=configs,
140 first_toolchain=first_toolchain) 161 first_toolchain=first_toolchain)
141 162
142 if branch.startswith('examples'): 163 if branch.startswith('examples'):
143 landing_page.AddDesc(desc) 164 landing_page.AddDesc(desc)
144 165
145 if landing_page: 166 if landing_page:
146 # Generate the landing page text file. 167 # Generate the landing page text file.
147 index_html = os.path.join(pepperdir, 'examples', 'index.html') 168 index_html = os.path.join(pepperdir, 'examples', 'index.html')
148 index_template = os.path.join(SDK_RESOURCE_DIR, 'index.html.template') 169 index_template = os.path.join(SDK_RESOURCE_DIR, 'index.html.template')
149 with open(index_html, 'w') as fh: 170 with open(index_html, 'w') as fh:
150 out = landing_page.GeneratePage(index_template) 171 out = landing_page.GeneratePage(index_template)
151 fh.write(out) 172 fh.write(out)
152 173
153 # Generate top Make for examples 174 # Generate top Make for examples
154 targets = ['api', 'demo', 'getting_started', 'tutorial'] 175 targets = ['api', 'demo', 'getting_started', 'tutorial']
155 targets = [x for x in targets if 'examples/'+x in project_tree] 176 targets = [x for x in targets if 'examples/'+x in project_tree]
156 branch_name = 'examples' 177 branch_name = 'examples'
157 generate_make.GenerateMasterMakefile(pepperdir, 178 generate_make.GenerateMasterMakefile(pepperdir,
158 os.path.join(pepperdir, branch_name), 179 os.path.join(pepperdir, branch_name),
159 targets) 180 targets, {})
160 181
161 182
162 def BuildProjectsBranch(pepperdir, branch, deps, clean, config, args=None): 183 def BuildProjectsBranch(pepperdir, branch, deps, clean, config, args=None):
163 make_dir = os.path.join(pepperdir, branch) 184 make_dir = os.path.join(pepperdir, branch)
164 print "\nMake: " + make_dir 185 print "\nMake: " + make_dir
165 186
166 if getos.GetPlatform() == 'win': 187 if getos.GetPlatform() == 'win':
167 # We need to modify the environment to build host on Windows. 188 # We need to modify the environment to build host on Windows.
168 make = os.path.join(make_dir, 'make.bat') 189 make = os.path.join(make_dir, 'make.bat')
169 else: 190 else:
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 335
315 336
316 if __name__ == '__main__': 337 if __name__ == '__main__':
317 script_name = os.path.basename(sys.argv[0]) 338 script_name = os.path.basename(sys.argv[0])
318 try: 339 try:
319 sys.exit(main(sys.argv)) 340 sys.exit(main(sys.argv))
320 except parse_dsc.ValidationError as e: 341 except parse_dsc.ValidationError as e:
321 buildbot_common.ErrorExit('%s: %s' % (script_name, e)) 342 buildbot_common.ErrorExit('%s: %s' % (script_name, e))
322 except KeyboardInterrupt: 343 except KeyboardInterrupt:
323 buildbot_common.ErrorExit('%s: interrupted' % script_name) 344 buildbot_common.ErrorExit('%s: interrupted' % script_name)
OLDNEW
« no previous file with comments | « no previous file | native_client_sdk/src/build_tools/build_sdk.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698