From bca80b12ff2702d0403c31ce34fca90ec7df2d28 Mon Sep 17 00:00:00 2001 From: Evan Martin Date: Fri, 14 Nov 2014 14:22:56 -0800 Subject: drop bootstrap.py We now use configure.py --bootstrap. Direct users of this script to use the other one. --- README | 8 ++-- bootstrap.py | 151 ++--------------------------------------------------------- 2 files changed, 9 insertions(+), 150 deletions(-) diff --git a/README b/README index 733ccb3..9faf477 100644 --- a/README +++ b/README @@ -5,10 +5,12 @@ See the manual -- http://martine.github.com/ninja/manual.html or doc/manual.asciidoc included in the distribution -- for background and more details. -To build, run ./bootstrap.py. It first blindly compiles all non-test +To build, run ./configure.py --bootstrap. It first compiles all non-test source files together, then re-builds Ninja using itself. You should -end up with a 'ninja' binary in the source root. Run './ninja -h' for -help. +end up with a 'ninja' binary in the source root. + +Run './configure.py --help' for more configuration options. +Run './ninja -h' for Ninja help. There is no installation step. The only file of interest to a user is the resulting ninja binary. diff --git a/bootstrap.py b/bootstrap.py index 026396b..56eab64 100755 --- a/bootstrap.py +++ b/bootstrap.py @@ -15,152 +15,9 @@ from __future__ import print_function -from optparse import OptionParser -import sys -import os -import glob -import errno -import shlex -import shutil import subprocess -import platform_helper - -os.chdir(os.path.dirname(os.path.abspath(__file__))) - -parser = OptionParser() - -parser.add_option('--verbose', action='store_true', - help='enable verbose build',) -parser.add_option('--x64', action='store_true', - help='force 64-bit build (Windows)',) -parser.add_option('--platform', - help='target platform (' + - '/'.join(platform_helper.platforms()) + ')', - choices=platform_helper.platforms()) -parser.add_option('--force-pselect', action='store_true', - help='ppoll() is used by default where available, ' - 'but some platforms might need to use pselect instead',) -(options, conf_args) = parser.parse_args() - - -platform = platform_helper.Platform(options.platform) -conf_args.append("--platform=" + platform.platform()) - -def run(*args, **kwargs): - returncode = subprocess.call(*args, **kwargs) - if returncode != 0: - sys.exit(returncode) - -# Compute system-specific CFLAGS/LDFLAGS as used in both in the below -# g++ call as well as in the later configure.py. -cflags = os.environ.get('CFLAGS', '').split() -ldflags = os.environ.get('LDFLAGS', '').split() -if platform.is_freebsd() or platform.is_openbsd() or platform.is_bitrig(): - cflags.append('-I/usr/local/include') - ldflags.append('-L/usr/local/lib') - -print('Building ninja manually...') - -try: - os.mkdir('build') -except OSError: - e = sys.exc_info()[1] - if e.errno != errno.EEXIST: - raise - -sources = [] -for src in glob.glob('src/*.cc'): - if src.endswith('test.cc') or src.endswith('.in.cc'): - continue - if src.endswith('bench.cc'): - continue - - filename = os.path.basename(src) - if filename == 'browse.cc': # Depends on generated header. - continue - - if platform.is_windows(): - if src.endswith('-posix.cc'): - continue - else: - if src.endswith('-win32.cc'): - continue - - sources.append(src) - -if platform.is_windows(): - sources.append('src/getopt.c') - -if platform.is_msvc(): - cl = 'cl' - vcdir = os.environ.get('VCINSTALLDIR') - if vcdir: - if options.x64: - cl = os.path.join(vcdir, 'bin', 'x86_amd64', 'cl.exe') - if not os.path.exists(cl): - cl = os.path.join(vcdir, 'bin', 'amd64', 'cl.exe') - else: - cl = os.path.join(vcdir, 'bin', 'cl.exe') - args = [cl, '/nologo', '/EHsc', '/DNOMINMAX'] -else: - args = shlex.split(os.environ.get('CXX', 'g++')) - cflags.extend(['-Wno-deprecated', - '-DNINJA_PYTHON="' + sys.executable + '"', - '-DNINJA_BOOTSTRAP']) - if platform.is_windows(): - cflags.append('-D_WIN32_WINNT=0x0501') - if options.x64: - cflags.append('-m64') -if (platform.is_linux() or platform.is_openbsd() or platform.is_bitrig()) and \ - not options.force_pselect: - cflags.append('-DUSE_PPOLL') -if options.force_pselect: - conf_args.append("--force-pselect") -args.extend(cflags) -args.extend(ldflags) -binary = 'ninja.bootstrap' -if platform.is_windows(): - binary = 'ninja.bootstrap.exe' -args.extend(sources) -if platform.is_msvc(): - args.extend(['/link', '/out:' + binary]) -else: - args.extend(['-o', binary]) - -if options.verbose: - print(' '.join(args)) - -try: - run(args) -except: - print('Failure running:', args) - raise - -verbose = [] -if options.verbose: - verbose = ['-v'] - -if platform.is_windows(): - print('Building ninja using itself...') - run([sys.executable, 'configure.py'] + conf_args) - run(['./' + binary] + verbose) - - # Copy the new executable over the bootstrap one. - shutil.copyfile('ninja.exe', binary) - - # Clean up. - for obj in glob.glob('*.obj'): - os.unlink(obj) - - print(""" -Done! +import sys -Note: to work around Windows file locking, where you can't rebuild an -in-use binary, to run ninja after making any changes to build ninja -itself you should run ninja.bootstrap instead.""") -else: - print('Building ninja using itself...') - run([sys.executable, 'configure.py'] + conf_args) - run(['./' + binary] + verbose) - os.unlink(binary) - print('Done!') +print('DEPRECATED: this script will be deleted.') +print('use "configure.py --bootstrap" instead.') +subprocess.check_call([sys.executable, 'configure.py', '--bootstrap']) -- cgit v0.12