mirror of
https://github.com/reactos/ninja.git
synced 2024-11-26 21:20:23 +00:00
Separate bootstrapped build from final build
AIX does not support rebuilding ninja in-place from the bootstrapped ninja.
This commit is contained in:
parent
cdab57de00
commit
aa14d6e067
1
.gitignore
vendored
1
.gitignore
vendored
@ -7,6 +7,7 @@ TAGS
|
||||
/build
|
||||
/build.ninja
|
||||
/ninja
|
||||
/ninja.bootstrap
|
||||
/build_log_perftest
|
||||
/canon_perftest
|
||||
/depfile_parser_perftest
|
||||
|
33
configure.py
33
configure.py
@ -105,6 +105,8 @@ class Platform(object):
|
||||
and not self.is_solaris()
|
||||
and not self.is_aix())
|
||||
|
||||
def can_rebuild_in_place(self):
|
||||
return not (self.is_windows() or self.is_aix())
|
||||
|
||||
class Bootstrap:
|
||||
"""API shim for ninja_syntax.Writer that instead runs the commands.
|
||||
@ -639,17 +641,28 @@ n.build('all', 'phony', all_targets)
|
||||
n.close()
|
||||
print('wrote %s.' % BUILD_FILENAME)
|
||||
|
||||
verbose = ''
|
||||
if options.verbose:
|
||||
verbose = ' -v'
|
||||
|
||||
if options.bootstrap:
|
||||
print('bootstrap complete. rebuilding...')
|
||||
if platform.is_windows():
|
||||
bootstrap_exe = 'ninja.bootstrap.exe'
|
||||
|
||||
rebuild_args = []
|
||||
|
||||
if platform.can_rebuild_in_place():
|
||||
rebuild_args.append('./ninja')
|
||||
else:
|
||||
if platform.is_windows():
|
||||
bootstrap_exe = 'ninja.bootstrap.exe'
|
||||
final_exe = 'ninja.exe'
|
||||
else:
|
||||
bootstrap_exe = './ninja.bootstrap'
|
||||
final_exe = './ninja'
|
||||
|
||||
if os.path.exists(bootstrap_exe):
|
||||
os.unlink(bootstrap_exe)
|
||||
os.rename('ninja.exe', bootstrap_exe)
|
||||
subprocess.check_call('ninja.bootstrap.exe%s' % verbose, shell=True)
|
||||
else:
|
||||
subprocess.check_call('./ninja%s' % verbose, shell=True)
|
||||
os.rename(final_exe, bootstrap_exe)
|
||||
|
||||
rebuild_args.append(bootstrap_exe)
|
||||
|
||||
if options.verbose:
|
||||
rebuild_args.append('-v')
|
||||
|
||||
subprocess.check_call(rebuild_args)
|
||||
|
Loading…
Reference in New Issue
Block a user