Re: [CMake] ninja under windows

2015-08-06 Thread Dan Kegel
I've been using cygwin buildbot for some time, doing pure windows
builds.  The trick is to have the cygwin buildslave unset a few environment
variables (like cygwin's PATH and TEMP and temp), then run a windows
batch file to do everything involving compilers, e.g. running
windows cmake.  There is a tiny bit of magic involved in cleansing
the environment enough for the windows tools to be happy,
but not much.

But I agree: for cmake and things like ninja that run compilers,
use pure windows versions, even if you kick them off originally from a
cygwin shell script.
- Dan
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake


Re: [CMake] ninja under windows

2015-08-06 Thread James Johnston
 -Original Message-
 From: CMake [mailto:cmake-boun...@cmake.org] On Behalf Of Gonzalo
 Garramuño
 Sent: Monday, August 03, 2015 17:23
 To: cmake@cmake.org
 Subject: [CMake] ninja under windows
 
 I compiled Ninja on cygwin from git.  That now works fine it seems.
 I am trying to compile for msvc.  However, when cmake runs, I get:
 

I wouldn't even go there...  I would recommend:

 * Do not build anything requiring native Windows build tools from Cygwin -
for example, don't call Visual C++ compiler from Cygwin.

 * Consider not build anything requiring native Windows build tools from
MSYS/MSYS2, like Visual C++ compiler, since MSYS/MSYS2 is a fork of Cygwin.
(Unless MSYS/MSYS2 maintainers patch Cygwin to resolve the problems, which
you'd better research before going there.)

It sounds drastic but I can tell you from experience that eventually you'll
run into problems and you may be on your own.  The big reason I have run
into is that Cygwin's handling of stdin/out/err pipes differs from how most
Windows programs (i.e. programs based on Visual C++ runtime, or based on
.NET Framework) handle the pipes.  They do this for POSIX compatibility
reasons, I'd guess.  And the Cygwin maintainers in the past have shown
limited interest in being compatible with non-Cygwin programs.

The end result is you end up with things like a basic/simple .NET Framework
4.0 program not working right if called from Cygwin, for example.

If you want to forge ahead, I can offer two suggestions that seem to
mitigate the problems - today anyway: 

* Set CYGWIN environment variable to contain pipe_byte.  This is very
important but I forget the specifics why, other than non-Cygwin programs
break if this isn't set.  (Search the Cygwin mailing lists for my posts on
the issue).

* Make a custom build of Cygwin and then set CYGWIN environment variable to
contain pipe_nooverlap (a flag I added).  This is also very important
because if you don't, .NET Framework 4.0 apps and potentially other programs
called from Cygwin will break.  I submitted a patch to Cygwin maintainers
but they rejected it, so you'll have to build Cygwin yourself (and rebuild
it every time the maintainers release new Cygwin version).  The link to the
patch is here:
https://cygwin.com/ml/cygwin-patches/2013-q4/msg00020/pipepatch

Setting these flags maybe breaks some POSIX compatibility but in practice, I
have had zero problems with common Cygwin programs (bash, coreutils). 

Since proper interaction with non-Cygwin programs now requires you to make a
custom build of Cygwin - a big hassle - I suggest don't even go there, and
keep Cygwin (and its MSYS/MSYS2) derivatives out of your build system if you
require calling native Windows apps (e.g. Visual C++).

There are other unrelated considerations if you want a 100% solid build
environment, like you should research the (non-)reliability of forking under
Cygwin/MSYS/MSYS2.  I have to commend the Cygwin developers for making it
work in the first place, since Windows provides no forking API.  But in the
end, to get POSIX working on the Win32 API, I think they are relying on a
lot of undocumented Win32 stuff that works in practice but subject to
breakage when new versions of Windows come out, etc.

 
 Is compiling under the microsoft compiler not an option for ninja files (
I can
 compile with NMake Makefiles just fine in the same project ).

It is and we do it, here is how:

1.  Don't build Ninja under Cygwin.  IIRC the procedure would be (a) install
Python for Windows, (b) go to a Visual C++ command prompt to set up VC++
environment, (c) call Ninja bootstrapper script.

2.  Run CMake from a Visual C++ command prompt when you want to use the
Ninja generator because Ninja generator will just look for whatever cl.exe
is in the PATH.

At no point does Cygwin enter into the equation.

Best regards,

James Johnston

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake


Re: [CMake] ninja under windows

2015-08-03 Thread Miller, Frank
I suspect that ninja thinks its on a posix system because you compiled 
it in cygwin. Try building it in a windows terminal. I routinely use 
cmake and ninja on windows with the msvc toolchain and it works great 
but I use msys instead of cygwin.


Hopefully that helps you.

Frank

On 8/3/2015 12:22 PM, Gonzalo Garramuño wrote:

I compiled Ninja on cygwin from git.  That now works fine it seems.
I am trying to compile for msvc.  However, when cmake runs, I get:

[1/123] Building CXX object 
'libACESclip\CMakeFiles\ACESclip.dir\src\ACESclipWriter.cpp.obj'ninja: 
fatal: unknown deps type 'msvc'


$ ninja --version
1.6.0.git

Is compiling under the microsoft compiler not an option for ninja 
files ( I can compile with NMake Makefiles just fine in the same 
project ).


--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake


[CMake] ninja under windows

2015-08-03 Thread Gonzalo Garramuño

I compiled Ninja on cygwin from git.  That now works fine it seems.
I am trying to compile for msvc.  However, when cmake runs, I get:

[1/123] Building CXX object 
'libACESclip\CMakeFiles\ACESclip.dir\src\ACESclipWriter.cpp.obj'ninja: 
fatal: unknown deps type 'msvc'


$ ninja --version
1.6.0.git

Is compiling under the microsoft compiler not an option for ninja files 
( I can compile with NMake Makefiles just fine in the same project ).

--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake