summaryrefslogtreecommitdiffstats
path: root/bootstrap.py
diff options
context:
space:
mode:
authorPatrick von Reth <vonreth@kde.org>2013-04-30 15:29:13 (GMT)
committerEvan Martin <martine@danga.com>2013-04-30 15:30:29 (GMT)
commit4c552c2c3cbc07acce9c1a379fee054a3f680100 (patch)
tree67fdefb9a448ee01ae6a77db5aa1edc58ad3ba8a /bootstrap.py
parentc0d21185113748e056c8df5dcd42a825263d4bab (diff)
downloadNinja-4c552c2c3cbc07acce9c1a379fee054a3f680100.zip
Ninja-4c552c2c3cbc07acce9c1a379fee054a3f680100.tar.gz
Ninja-4c552c2c3cbc07acce9c1a379fee054a3f680100.tar.bz2
share platform support between configure/bootstrap
Diffstat (limited to 'bootstrap.py')
-rwxr-xr-xbootstrap.py29
1 files changed, 17 insertions, 12 deletions
diff --git a/bootstrap.py b/bootstrap.py
index 8feaf79..a7a8ba6 100755
--- a/bootstrap.py
+++ b/bootstrap.py
@@ -23,20 +23,26 @@ 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)',)
# TODO: make this --platform to match configure.py.
-parser.add_option('--windows', action='store_true',
- help='force native Windows build',
- default=sys.platform.startswith('win32'))
+parser.add_option('--platform',
+ help='target platform (' + '/'.join(platform_helper.platforms()) + ')',
+ choices=platform_helper.platforms())
(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:
@@ -46,7 +52,7 @@ def run(*args, **kwargs):
# g++ call as well as in the later configure.py.
cflags = os.environ.get('CFLAGS', '').split()
ldflags = os.environ.get('LDFLAGS', '').split()
-if sys.platform.startswith('freebsd'):
+if platform.is_freebsd():
cflags.append('-I/usr/local/include')
ldflags.append('-L/usr/local/lib')
@@ -70,7 +76,7 @@ for src in glob.glob('src/*.cc'):
if filename == 'browse.cc': # Depends on generated header.
continue
- if options.windows:
+ if platform.is_windows():
if src.endswith('-posix.cc'):
continue
else:
@@ -79,10 +85,10 @@ for src in glob.glob('src/*.cc'):
sources.append(src)
-if options.windows:
+if platform.is_windows():
sources.append('src/getopt.c')
-if options.windows:
+if platform.is_msvc():
cl = 'cl'
vcdir = os.environ.get('VCINSTALLDIR')
if vcdir:
@@ -98,18 +104,17 @@ else:
cflags.extend(['-Wno-deprecated',
'-DNINJA_PYTHON="' + sys.executable + '"',
'-DNINJA_BOOTSTRAP'])
- if options.windows:
+ if platform.is_windows():
cflags.append('-D_WIN32_WINNT=0x0501')
- conf_args.append("--platform=mingw")
if options.x64:
cflags.append('-m64')
args.extend(cflags)
args.extend(ldflags)
binary = 'ninja.bootstrap'
-if options.windows:
+if platform.is_windows():
binary = 'ninja.bootstrap.exe'
args.extend(sources)
-if options.windows:
+if platform.is_msvc():
args.extend(['/link', '/out:' + binary])
else:
args.extend(['-o', binary])
@@ -127,7 +132,7 @@ verbose = []
if options.verbose:
verbose = ['-v']
-if options.windows:
+if platform.is_windows():
print('Building ninja using itself...')
run([sys.executable, 'configure.py'] + conf_args)
run(['./' + binary] + verbose)