summaryrefslogtreecommitdiffstats
path: root/bootstrap.py
diff options
context:
space:
mode:
Diffstat (limited to 'bootstrap.py')
-rwxr-xr-xbootstrap.py30
1 files changed, 22 insertions, 8 deletions
diff --git a/bootstrap.py b/bootstrap.py
index db86b96..6a7d876 100755
--- a/bootstrap.py
+++ b/bootstrap.py
@@ -43,8 +43,9 @@ except OSError, e:
with open('src/browse.py') as browse_py:
with open('build/browse_py.h', 'w') as browse_py_h:
- run(['./src/inline.sh', 'kBrowsePy'],
- stdin=browse_py, stdout=browse_py_h)
+ hex_str = ''.join([hex(ord(c)) for c in browse_py.read()])
+ src = "const char %s[]=\"\n%s\n\";" % ('kBrowsePy', hex_str)
+ browse_py_h.write(src)
sources = []
for src in glob.glob('src/*.cc'):
@@ -52,7 +53,7 @@ for src in glob.glob('src/*.cc'):
continue
if sys.platform.startswith('win32'):
- if src.endswith('/browse.cc') or src.endswith('/subprocess.cc'):
+ if src.endswith('\\browse.cc') or src.endswith('\\subprocess.cc'):
continue
else:
if src.endswith('-win32.cc'):
@@ -60,17 +61,30 @@ for src in glob.glob('src/*.cc'):
sources.append(src)
-args = [os.environ.get('CXX', 'g++'), '-Wno-deprecated',
- '-DNINJA_PYTHON="' + sys.executable + '"']
+if sys.platform.startswith('win32'):
+ sources.append('src/getopt.c')
+
+vcdir = os.environ.get('VCINSTALLDIR')
+if vcdir:
+ args = [os.path.join(vcdir, 'bin', 'cl.exe'), '/nologo', '/EHsc', '/DWIN32']
+else:
+ args = [os.environ.get('CXX', 'g++'), '-Wno-deprecated',
+ '-DNINJA_PYTHON="' + sys.executable + '"']
args.extend(cflags)
args.extend(ldflags)
-args.extend(['-o', 'ninja.bootstrap'])
+binary = 'ninja.bootstrap'
+if sys.platform.startswith('win32'):
+ binary = 'ninja.bootstrap.exe'
args.extend(sources)
+if vcdir:
+ args.extend(['/link', '/out:' + binary])
+else:
+ args.extend(['-o', binary])
run(args)
print 'Building ninja using itself...'
run([sys.executable, 'configure.py'] + sys.argv[1:])
-run(['./ninja.bootstrap'])
-os.unlink('ninja.bootstrap')
+run(['./' + binary])
+os.unlink(binary)
print 'Done!'