More windows portability changes

9 views
Skip to first unread message

Scott Graham

unread,
Jul 31, 2011, 5:26:21 PM7/31/11
to ninja...@googlegroups.com
Hi,

I've got dependencies and tests working on native Win32 now. There was
a few more minor tweaks for win32 names of things when I got to
compiling the test code. I haven't tried building docs on Windows yet.

I also addressed https://github.com/martine/ninja/issues/56 with a
commit here: https://github.com/sgraham/ninja/commit/abeb00966c84534b05229753decb0011d42ce0d3

It supports : in idents when they look like part of a drive letter in
a makefile, and I also added support for ~, (, and ), for things like
"C:\Program Files (x86)" and "C:\PROGRA~1".

I decided against adding support for spaces in filenames in the way
mingw-gcc on Windows seems to output them. It seems all they do is
that backslash is always literal, unless it's followed by a space, in
which case it becomes a space. This was a bit ugly to do in the
current Tokenizer because it uses a pointer in to the buffer that's
not modified/copied, so handling the "compression" of escapes was
messy. Instead I decided to made my showIncludes parser just output
the Windows short file name so there's no spaces (hence the ~ support
above). Anyway, it's kind of hacky, but should be reliable and it was
simple. I added some tests for the dep parser in the commit above, let
me know if you see an unhandled case.


The showIncludes parser I wrote is called "cldeps", and is currently
living in misc/:
https://github.com/sgraham/ninja/blob/master/misc/cldeps.cc.

It just builds via a batch file right now that's hooked into my
version of bootstrap.bat.


But most exciting, ninja seems to work. I can build ninja and
ninja_test with itself and if touch various files, it seems to be
doing the right thing.

Anyway, I know it's kind of a dump of a bunch of things, but hopefully
we can get some or most of the changes merged with a bit more work?

Best,
scott

Reply all
Reply to author
Forward
0 new messages