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

Side by Side Diff: tools/clang/scripts/update.py

Issue 1172363002: Revert of update.py: Check out and build libc++ libc++abi on OS X, set deployment target. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 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 | « no previous file | tools/clang/scripts/update.sh » ('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) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 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 """Windows can't run .sh files, so this is a Python implementation of 6 """Windows can't run .sh files, so this is a Python implementation of
7 update.sh. This script should replace update.sh on all platforms eventually.""" 7 update.sh. This script should replace update.sh on all platforms eventually."""
8 8
9 import argparse 9 import argparse
10 import contextlib 10 import contextlib
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 LLVM_BOOTSTRAP_DIR = os.path.join(THIRD_PARTY_DIR, 'llvm-bootstrap') 45 LLVM_BOOTSTRAP_DIR = os.path.join(THIRD_PARTY_DIR, 'llvm-bootstrap')
46 LLVM_BOOTSTRAP_INSTALL_DIR = os.path.join(THIRD_PARTY_DIR, 46 LLVM_BOOTSTRAP_INSTALL_DIR = os.path.join(THIRD_PARTY_DIR,
47 'llvm-bootstrap-install') 47 'llvm-bootstrap-install')
48 CHROME_TOOLS_SHIM_DIR = os.path.join(LLVM_DIR, 'tools', 'chrometools') 48 CHROME_TOOLS_SHIM_DIR = os.path.join(LLVM_DIR, 'tools', 'chrometools')
49 LLVM_BUILD_DIR = os.path.join(CHROMIUM_DIR, 'third_party', 'llvm-build', 49 LLVM_BUILD_DIR = os.path.join(CHROMIUM_DIR, 'third_party', 'llvm-build',
50 'Release+Asserts') 50 'Release+Asserts')
51 COMPILER_RT_BUILD_DIR = os.path.join(LLVM_BUILD_DIR, '32bit-compiler-rt') 51 COMPILER_RT_BUILD_DIR = os.path.join(LLVM_BUILD_DIR, '32bit-compiler-rt')
52 CLANG_DIR = os.path.join(LLVM_DIR, 'tools', 'clang') 52 CLANG_DIR = os.path.join(LLVM_DIR, 'tools', 'clang')
53 LLD_DIR = os.path.join(LLVM_DIR, 'tools', 'lld') 53 LLD_DIR = os.path.join(LLVM_DIR, 'tools', 'lld')
54 COMPILER_RT_DIR = os.path.join(LLVM_DIR, 'projects', 'compiler-rt') 54 COMPILER_RT_DIR = os.path.join(LLVM_DIR, 'projects', 'compiler-rt')
55 LIBCXX_DIR = os.path.join(LLVM_DIR, 'projects', 'libcxx')
56 LIBCXXABI_DIR = os.path.join(LLVM_DIR, 'projects', 'libcxxabi')
57 LLVM_BUILD_TOOLS_DIR = os.path.abspath( 55 LLVM_BUILD_TOOLS_DIR = os.path.abspath(
58 os.path.join(LLVM_DIR, '..', 'llvm-build-tools')) 56 os.path.join(LLVM_DIR, '..', 'llvm-build-tools'))
59 STAMP_FILE = os.path.join(LLVM_DIR, '..', 'llvm-build', 'cr_build_revision') 57 STAMP_FILE = os.path.join(LLVM_DIR, '..', 'llvm-build', 'cr_build_revision')
60 BINUTILS_DIR = os.path.join(THIRD_PARTY_DIR, 'binutils') 58 BINUTILS_DIR = os.path.join(THIRD_PARTY_DIR, 'binutils')
61 VERSION = '3.7.0' 59 VERSION = '3.7.0'
62 60
63 # URL for pre-built binaries. 61 # URL for pre-built binaries.
64 CDS_URL = 'https://commondatastorage.googleapis.com/chromium-browser-clang' 62 CDS_URL = 'https://commondatastorage.googleapis.com/chromium-browser-clang'
65 63
66 LLVM_REPO_URL='https://llvm.org/svn/llvm-project' 64 LLVM_REPO_URL='https://llvm.org/svn/llvm-project'
(...skipping 28 matching lines...) Expand all
95 """Return the contents of the stamp file, or '' if it doesn't exist.""" 93 """Return the contents of the stamp file, or '' if it doesn't exist."""
96 try: 94 try:
97 with open(STAMP_FILE, 'r') as f: 95 with open(STAMP_FILE, 'r') as f:
98 return f.read(); 96 return f.read();
99 except IOError: 97 except IOError:
100 return '' 98 return ''
101 99
102 100
103 def WriteStampFile(s): 101 def WriteStampFile(s):
104 """Write s to the stamp file.""" 102 """Write s to the stamp file."""
105 if not os.path.exists(os.path.dirname(STAMP_FILE)): 103 if not os.path.exists(LLVM_BUILD_DIR):
106 os.makedirs(os.path.dirname(STAMP_FILE)) 104 os.makedirs(LLVM_BUILD_DIR)
107 with open(STAMP_FILE, 'w') as f: 105 with open(STAMP_FILE, 'w') as f:
108 f.write(s) 106 f.write(s)
109 107
110 108
111 def GetSvnRevision(svn_repo): 109 def GetSvnRevision(svn_repo):
112 """Returns current revision of the svn repo at svn_repo.""" 110 """Returns current revision of the svn repo at svn_repo."""
113 svn_info = subprocess.check_output('svn info ' + svn_repo, shell=True) 111 svn_info = subprocess.check_output(['svn', 'info', svn_repo], shell=True)
114 m = re.search(r'Revision: (\d+)', svn_info) 112 m = re.search(r'Revision: (\d+)', svn_info)
115 return m.group(1) 113 return m.group(1)
116 114
117 115
118 def RmTree(dir): 116 def RmTree(dir):
119 """Delete dir.""" 117 """Delete dir."""
120 def ChmodAndRetry(func, path, _): 118 def ChmodAndRetry(func, path, _):
121 # Subversion can leave read-only files around. 119 # Subversion can leave read-only files around.
122 if not os.access(path, os.W_OK): 120 if not os.access(path, os.W_OK):
123 os.chmod(path, stat.S_IWUSR) 121 os.chmod(path, stat.S_IWUSR)
124 return func(path) 122 return func(path)
125 raise 123 raise
126 124
127 shutil.rmtree(dir, onerror=ChmodAndRetry) 125 shutil.rmtree(dir, onerror=ChmodAndRetry)
128 126
129 127
130 def RunCommand(command, env=None, fail_hard=True): 128 def RunCommand(command, fail_hard=True):
131 """Run command and return success (True) or failure; or if fail_hard is 129 """Run command and return success (True) or failure; or if fail_hard is
132 True, exit on failure.""" 130 True, exit on failure."""
133 131
134 print 'Running %s' % (str(command)) 132 print 'Running %s' % (str(command))
135 if subprocess.call(' '.join(command), env=env, shell=True) == 0: 133 if subprocess.call(command, shell=True) == 0:
136 return True 134 return True
137 print 'Failed.' 135 print 'Failed.'
138 if fail_hard: 136 if fail_hard:
139 sys.exit(1) 137 sys.exit(1)
140 return False 138 return False
141 139
142 140
143 def CopyFile(src, dst): 141 def CopyFile(src, dst):
144 """Copy a file from src to dst.""" 142 """Copy a file from src to dst."""
145 shutil.copy(src, dst) 143 shutil.copy(src, dst)
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 if not os.path.exists(cmake_dir): 214 if not os.path.exists(cmake_dir):
217 if not os.path.exists(LLVM_BUILD_TOOLS_DIR): 215 if not os.path.exists(LLVM_BUILD_TOOLS_DIR):
218 os.makedirs(LLVM_BUILD_TOOLS_DIR) 216 os.makedirs(LLVM_BUILD_TOOLS_DIR)
219 # The cmake archive is smaller than 20 MB, small enough to keep in memory: 217 # The cmake archive is smaller than 20 MB, small enough to keep in memory:
220 with contextlib.closing(cStringIO.StringIO()) as f: 218 with contextlib.closing(cStringIO.StringIO()) as f:
221 DownloadUrl(CDS_URL + '/tools/' + zip_name, f) 219 DownloadUrl(CDS_URL + '/tools/' + zip_name, f)
222 f.seek(0) 220 f.seek(0)
223 if zip_name.endswith('.zip'): 221 if zip_name.endswith('.zip'):
224 zipfile.ZipFile(f).extractall(path=LLVM_BUILD_TOOLS_DIR) 222 zipfile.ZipFile(f).extractall(path=LLVM_BUILD_TOOLS_DIR)
225 else: 223 else:
226 tarfile.open(mode='r:gz', fileobj=f).extractall(path= 224 tarfile.open(mode='r:gz', fileobj=f).extractall(path=LLVM_BUILD_DIR)
227 LLVM_BUILD_TOOLS_DIR)
228 os.environ['PATH'] = cmake_dir + os.pathsep + os.environ.get('PATH', '') 225 os.environ['PATH'] = cmake_dir + os.pathsep + os.environ.get('PATH', '')
229 226
230 vs_version = None 227 vs_version = None
231 def GetVSVersion(): 228 def GetVSVersion():
232 global vs_version 229 global vs_version
233 if vs_version: 230 if vs_version:
234 return vs_version 231 return vs_version
235 232
236 # Try using the toolchain in depot_tools. 233 # Try using the toolchain in depot_tools.
237 # This sets environment variables used by SelectVisualStudioVersion below. 234 # This sets environment variables used by SelectVisualStudioVersion below.
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 WriteStampFile(PACKAGE_VERSION) 272 WriteStampFile(PACKAGE_VERSION)
276 return 0 273 return 0
277 except urllib2.HTTPError: 274 except urllib2.HTTPError:
278 print 'Did not find prebuilt clang %s, building locally' % cds_file 275 print 'Did not find prebuilt clang %s, building locally' % cds_file
279 276
280 AddCMakeToPath() 277 AddCMakeToPath()
281 278
282 DeleteChromeToolsShim(); 279 DeleteChromeToolsShim();
283 Checkout('LLVM', LLVM_REPO_URL + '/llvm/trunk', LLVM_DIR) 280 Checkout('LLVM', LLVM_REPO_URL + '/llvm/trunk', LLVM_DIR)
284 Checkout('Clang', LLVM_REPO_URL + '/cfe/trunk', CLANG_DIR) 281 Checkout('Clang', LLVM_REPO_URL + '/cfe/trunk', CLANG_DIR)
285 if sys.platform == 'win32': 282 Checkout('LLD', LLVM_REPO_URL + '/lld/trunk', LLD_DIR)
286 Checkout('LLD', LLVM_REPO_URL + '/lld/trunk', LLD_DIR)
287 Checkout('compiler-rt', LLVM_REPO_URL + '/compiler-rt/trunk', COMPILER_RT_DIR) 283 Checkout('compiler-rt', LLVM_REPO_URL + '/compiler-rt/trunk', COMPILER_RT_DIR)
288 if sys.platform == 'darwin':
289 # clang needs a libc++ checkout, else -stdlib=libc++ won't find includes
290 # (i.e. this is needed for bootstrap builds).
291 Checkout('libcxx', LLVM_REPO_URL + '/libcxx/trunk', LIBCXX_DIR)
292 # While we're bundling our own libc++ on OS X, we need to compile libc++abi
293 # into it too (since OS X 10.6 doesn't have libc++abi.dylib either).
294 Checkout('libcxxabi', LLVM_REPO_URL + '/libcxxabi/trunk', LIBCXXABI_DIR)
295
296 CreateChromeToolsShim(); 284 CreateChromeToolsShim();
297 285
298 cc, cxx = None, None 286 # If building at head, define a macro that plugins can use for #ifdefing
299 cflags = cxxflags = ldflags = '' 287 # out code that builds at head, but not at CLANG_REVISION or vice versa.
288 cflags = cxxflags = ''
300 289
301 # LLVM uses C++11 starting in llvm 3.5. On Linux, this means libstdc++4.7+ is 290 # If building at head, define a macro that plugins can use for #ifdefing
302 # needed, on OS X it requires libc++. clang only automatically links to libc++ 291 # out code that builds at head, but not at LLVM_WIN_REVISION or vice versa.
303 # when targeting OS X 10.9+, so add stdlib=libc++ explicitly so clang can run 292 if use_head_revision:
304 # on OS X versions as old as 10.7. 293 cflags += ' -DLLVM_FORCE_HEAD_REVISION'
305 # TODO(thakis): Some bots are still on 10.6 (nacl...), so for now bundle 294 cxxflags += ' -DLLVM_FORCE_HEAD_REVISION'
306 # libc++.dylib. Remove this once all bots are on 10.7+, then use
307 # -DLLVM_ENABLE_LIBCXX=ON and change deployment_target to 10.7.
308 deployment_target = ''
309
310 if sys.platform == 'darwin':
311 # When building on 10.9, /usr/include usually doesn't exist, and while
312 # Xcode's clang automatically sets a sysroot, self-built clangs don't.
313 cflags = "-isysroot " + subprocess.check_output(
314 ['xcrun', '--show-sdk-path']).rstrip()
315 cxxflags = '-stdlib=libc++ -nostdinc++ -I%s %s' % (
316 os.path.join(LIBCXX_DIR, 'include'), cflags)
317 if args.bootstrap:
318 deployment_target = '10.6'
319 295
320 base_cmake_args = ['-GNinja', 296 base_cmake_args = ['-GNinja',
321 '-DCMAKE_BUILD_TYPE=Release', 297 '-DCMAKE_BUILD_TYPE=Release',
322 '-DLLVM_ENABLE_ASSERTIONS=ON', 298 '-DLLVM_ENABLE_ASSERTIONS=ON',
323 '-DLLVM_ENABLE_THREADS=OFF', 299 '-DLLVM_ENABLE_THREADS=OFF',
324 ] 300 ]
325 301
302 cc, cxx = None, None
326 if args.bootstrap: 303 if args.bootstrap:
327 print 'Building bootstrap compiler' 304 print 'Building bootstrap compiler'
328 if not os.path.exists(LLVM_BOOTSTRAP_DIR): 305 if not os.path.exists(LLVM_BOOTSTRAP_DIR):
329 os.makedirs(LLVM_BOOTSTRAP_DIR) 306 os.makedirs(LLVM_BOOTSTRAP_DIR)
330 os.chdir(LLVM_BOOTSTRAP_DIR) 307 os.chdir(LLVM_BOOTSTRAP_DIR)
331 bootstrap_args = base_cmake_args + [ 308 bootstrap_args = base_cmake_args + [
332 '-DLLVM_TARGETS_TO_BUILD=host', 309 '-DLLVM_TARGETS_TO_BUILD=host',
333 '-DCMAKE_INSTALL_PREFIX=' + LLVM_BOOTSTRAP_INSTALL_DIR, 310 '-DCMAKE_INSTALL_PREFIX=' + LLVM_BOOTSTRAP_INSTALL_DIR,
334 '-DCMAKE_C_FLAGS=' + cflags, 311 '-DCMAKE_C_FLAGS=' + cflags,
335 '-DCMAKE_CXX_FLAGS=' + cxxflags, 312 '-DCMAKE_CXX_FLAGS=' + cxxflags,
(...skipping 10 matching lines...) Expand all
346 # TODO(thakis): Set these to clang / clang++ on posix once this script 323 # TODO(thakis): Set these to clang / clang++ on posix once this script
347 # is used on posix. 324 # is used on posix.
348 cc = os.path.join(LLVM_BOOTSTRAP_INSTALL_DIR, 'bin', 'clang-cl.exe') 325 cc = os.path.join(LLVM_BOOTSTRAP_INSTALL_DIR, 'bin', 'clang-cl.exe')
349 cxx = os.path.join(LLVM_BOOTSTRAP_INSTALL_DIR, 'bin', 'clang-cl.exe') 326 cxx = os.path.join(LLVM_BOOTSTRAP_INSTALL_DIR, 'bin', 'clang-cl.exe')
350 # CMake has a hard time with backslashes in compiler paths: 327 # CMake has a hard time with backslashes in compiler paths:
351 # https://stackoverflow.com/questions/13050827 328 # https://stackoverflow.com/questions/13050827
352 cc = cc.replace('\\', '/') 329 cc = cc.replace('\\', '/')
353 cxx = cxx.replace('\\', '/') 330 cxx = cxx.replace('\\', '/')
354 print 'Building final compiler' 331 print 'Building final compiler'
355 332
356 if sys.platform == 'darwin':
357 # Build libc++.dylib while some bots are still on OS X 10.6.
358 RmTree(os.path.join(LLVM_BUILD_DIR, 'libcxxbuild'))
359 libcxxflags = "-O3 -std=c++11 -fstrict-aliasing"
360
361 # libcxx and libcxxabi both have a file stdexcept.cpp, so put their .o files
362 # into different subdirectories.
363 os.makedirs(os.path.join(LLVM_BUILD_DIR, 'libcxxbuild', 'libcxx'))
364 os.chdir(os.path.join(LLVM_BUILD_DIR, 'libcxxbuild', 'libcxx'))
365 RunCommand(['c++', '-c', cxxflags, libcxxflags,
366 os.path.join(LIBCXX_DIR, 'src', '*.cpp')])
367
368 os.makedirs(os.path.join(LLVM_BUILD_DIR, 'libcxxbuild', 'libcxxabi'))
369 os.chdir(os.path.join(LLVM_BUILD_DIR, 'libcxxbuild', 'libcxxabi'))
370 RunCommand(['c++', '-c', cxxflags, libcxxflags,
371 os.path.join(LIBCXXABI_DIR, 'src', '*.cpp'),
372 '-I' + os.path.join(LIBCXXABI_DIR, 'include')])
373
374 os.chdir(os.path.join(LLVM_BUILD_DIR, 'libcxxbuild'))
375 libdir = os.path.join(LIBCXX_DIR, 'lib')
376 RunCommand(['cc', 'libcxx/*.o', 'libcxxabi/*.o', '-o', 'libc++.1.dylib',
377 '-dynamiclib', '-nodefaultlibs', '-current_version', '1',
378 '-compatibility_version', '1', '-lSystem', '-install_name',
379 '@executable_path/libc++.dylib',
380 '-Wl,-unexported_symbols_list,' + libdir + '/libc++unexp.exp',
381 '-Wl,-force_symbols_not_weak_list,' + libdir + '/notweak.exp',
382 '-Wl,-force_symbols_weak_list,' + libdir + '/weak.exp'])
383 if os.path.exists('libc++.dylib'):
384 os.remove('libc++.dylib')
385 os.symlink('libc++.1.dylib', 'libc++.dylib')
386 ldflags += '-stdlib=libc++ -L' + os.path.join(LLVM_BUILD_DIR, 'libcxxbuild')
387
388 # Build clang. 333 # Build clang.
389 binutils_incdir = '' 334 binutils_incdir = ''
390 if sys.platform.startswith('linux'): 335 if sys.platform.startswith('linux'):
391 binutils_incdir = os.path.join(BINUTILS_DIR, 'Linux_x64/Release/include') 336 binutils_incdir = os.path.join(BINUTILS_DIR, 'Linux_x64/Release/include')
392 337
393 # If building at head, define a macro that plugins can use for #ifdefing
394 # out code that builds at head, but not at LLVM_WIN_REVISION or vice versa.
395 if use_head_revision:
396 cflags += ' -DLLVM_FORCE_HEAD_REVISION'
397 cxxflags += ' -DLLVM_FORCE_HEAD_REVISION'
398
399 deployment_env = os.environ.copy()
400 if deployment_target:
401 deployment_env['MACOSX_DEPLOYMENT_TARGET'] = deployment_target
402
403 cmake_args = base_cmake_args + [ 338 cmake_args = base_cmake_args + [
404 '-DLLVM_BINUTILS_INCDIR=' + binutils_incdir, 339 '-DLLVM_BINUTILS_INCDIR=' + binutils_incdir,
405 '-DCMAKE_C_FLAGS=' + cflags, 340 '-DCMAKE_C_FLAGS=' + cflags,
406 '-DCMAKE_CXX_FLAGS=' + cxxflags, 341 '-DCMAKE_CXX_FLAGS=' + cxxflags,
407 '-DCMAKE_EXE_LINKER_FLAGS="' + ldflags,
408 '-DCMAKE_SHARED_LINKER_FLAGS="' + ldflags,
409 '-DCMAKE_MODULE_LINKER_FLAGS="' + ldflags,
410 '-DCHROMIUM_TOOLS_SRC=%s' % os.path.join(CHROMIUM_DIR, 'tools', 'clang'), 342 '-DCHROMIUM_TOOLS_SRC=%s' % os.path.join(CHROMIUM_DIR, 'tools', 'clang'),
411 '-DCHROMIUM_TOOLS=%s' % ';'.join(args.tools)] 343 '-DCHROMIUM_TOOLS=%s' % ';'.join(args.tools)]
412 # TODO(thakis): Append this to base_cmake_args instead once compiler-rt 344 # TODO(thakis): Append this to base_cmake_args instead once compiler-rt
413 # can build with clang-cl (http://llvm.org/PR23698) 345 # can build with clang-cl (http://llvm.org/PR23698)
414 if cc is not None: cmake_args.append('-DCMAKE_C_COMPILER=' + cc) 346 if cc is not None: cmake_args.append('-DCMAKE_C_COMPILER=' + cc)
415 if cxx is not None: cmake_args.append('-DCMAKE_CXX_COMPILER=' + cxx) 347 if cxx is not None: cmake_args.append('-DCMAKE_CXX_COMPILER=' + cxx)
416 348
417 if not os.path.exists(LLVM_BUILD_DIR): 349 if not os.path.exists(LLVM_BUILD_DIR):
418 os.makedirs(LLVM_BUILD_DIR) 350 os.makedirs(LLVM_BUILD_DIR)
419 os.chdir(LLVM_BUILD_DIR) 351 os.chdir(LLVM_BUILD_DIR)
420 RunCommand(GetVSVersion().SetupScript('x64') + ['&&', 'cmake'] + cmake_args + 352 RunCommand(GetVSVersion().SetupScript('x64') +
421 [LLVM_DIR], env=deployment_env) 353 ['&&', 'cmake'] + cmake_args + [LLVM_DIR])
422 RunCommand(GetVSVersion().SetupScript('x64') + ['&&', 'ninja', 'all']) 354 RunCommand(GetVSVersion().SetupScript('x64') + ['&&', 'ninja', 'all'])
423 355
424 # TODO(thakis): Run `strip bin/clang` on posix (with -x on darwin)
425
426 if sys.platform == 'darwin':
427 CopyFile(os.path.join(LLVM_BUILD_DIR, 'libc++.1.dylib'),
428 os.path.join(LLVM_BUILD_DIR, 'bin'))
429
430 # Do an x86 build of compiler-rt to get the 32-bit ASan run-time. 356 # Do an x86 build of compiler-rt to get the 32-bit ASan run-time.
431 # TODO(hans): Remove once the regular build above produces this. 357 # TODO(hans): Remove once the regular build above produces this.
432 if not os.path.exists(COMPILER_RT_BUILD_DIR): 358 if not os.path.exists(COMPILER_RT_BUILD_DIR):
433 os.makedirs(COMPILER_RT_BUILD_DIR) 359 os.makedirs(COMPILER_RT_BUILD_DIR)
434 os.chdir(COMPILER_RT_BUILD_DIR) 360 os.chdir(COMPILER_RT_BUILD_DIR)
435 # TODO(thakis): Add this once compiler-rt can build with clang-cl (see 361 # TODO(thakis): Add this once compiler-rt can build with clang-cl (see
436 # above). 362 # above).
437 #if args.bootstrap: 363 #if args.bootstrap:
438 # The bootstrap compiler produces 64-bit binaries by default. 364 # The bootstrap compiler produces 64-bit binaries by default.
439 #cflags += ' -m32' 365 #cflags += ' -m32'
440 #cxxflags += ' -m32' 366 #cxxflags += ' -m32'
441 compiler_rt_args = base_cmake_args + [ 367 compiler_rt_args = base_cmake_args + [
442 '-DCMAKE_C_FLAGS=' + cflags, 368 '-DCMAKE_C_FLAGS=' + cflags,
443 '-DCMAKE_CXX_FLAGS=' + cxxflags] 369 '-DCMAKE_CXX_FLAGS=' + cxxflags]
444 RunCommand(GetVSVersion().SetupScript('x86') + ['&&', 'cmake'] + 370 RunCommand(GetVSVersion().SetupScript('x86') +
445 compiler_rt_args + [LLVM_DIR], env=deployment_env) 371 ['&&', 'cmake'] + compiler_rt_args + [LLVM_DIR])
446 RunCommand(GetVSVersion().SetupScript('x86') + ['&&', 'ninja', 'compiler-rt']) 372 RunCommand(GetVSVersion().SetupScript('x86') + ['&&', 'ninja', 'compiler-rt'])
447 373
448 # TODO(hans): Make this (and the .gypi and .isolate files) version number 374 # TODO(hans): Make this (and the .gypi and .isolate files) version number
449 # independent. 375 # independent.
450 asan_rt_lib_src_dir = os.path.join(COMPILER_RT_BUILD_DIR, 'lib', 'clang', 376 asan_rt_lib_src_dir = os.path.join(COMPILER_RT_BUILD_DIR, 'lib', 'clang',
451 VERSION, 'lib', 'windows') 377 VERSION, 'lib', 'windows')
452 asan_rt_lib_dst_dir = os.path.join(LLVM_BUILD_DIR, 'lib', 'clang', 378 asan_rt_lib_dst_dir = os.path.join(LLVM_BUILD_DIR, 'lib', 'clang',
453 VERSION, 'lib', 'windows') 379 VERSION, 'lib', 'windows')
454 CopyDirectoryContents(asan_rt_lib_src_dir, asan_rt_lib_dst_dir, 380 CopyDirectoryContents(asan_rt_lib_src_dir, asan_rt_lib_dst_dir,
455 r'^.*-i386\.lib$') 381 r'^.*-i386\.lib$')
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 # Use a real revision number rather than HEAD to make sure that the stamp 491 # Use a real revision number rather than HEAD to make sure that the stamp
566 # file logic works. 492 # file logic works.
567 LLVM_WIN_REVISION = GetSvnRevision(LLVM_REPO_URL) 493 LLVM_WIN_REVISION = GetSvnRevision(LLVM_REPO_URL)
568 PACKAGE_VERSION = LLVM_WIN_REVISION + '-0' 494 PACKAGE_VERSION = LLVM_WIN_REVISION + '-0'
569 495
570 return UpdateClang(args) 496 return UpdateClang(args)
571 497
572 498
573 if __name__ == '__main__': 499 if __name__ == '__main__':
574 sys.exit(main()) 500 sys.exit(main())
OLDNEW
« no previous file with comments | « no previous file | tools/clang/scripts/update.sh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698