Gonzalo Garramuño wrote:
Bill Hoffman wrote:
That is not a bug. MSYS in its "charter" explicitly says it does not want to become a new cygwin. The tools in msys are available only for support of the compiler tool chain. The main goal is to build native windows applications with the mingw tool chain. If you want posix applications you should be using cygwin.


Well, yes, the problem with that theory or that take on mingw's charter is that:

a) All unix autotools utilities (or other libs like ffmpeg) built under mingw/msys will not install in $PROGRAMFILES, which leads to cmake's approach being totally backwards with the rest of msys.


CMake is not an autotools utility.

The proper approach for mingw with cmake should be to detect the environment the user is using. To me the simplest approach to doing that would really be to check if $SHELL is defined. If it is, it should default to a Unix install location of /usr/local (ie MingGW root's /usr/local). If it is not defined, it should default to a windows install of $PROGRAMFILES.


There is no way to tell at cmake time what the user intends to use the code for. If the user of cmake is building a windows app, which is the standard use case for MinGW, then it you don't want /usr/local. Not only that, but cmake does not even know what /usr/local is, as it does not link to the msys run time. I guess what you really want is an msys version of cmake. This would be much like the cygwin version of cmake, it would be used to build msys binaries. I have not attempted to build such a version of cmake, currently such a thing does not exist.

b) cygwin's approach is sadly bloated and uses a somewhat inefficient approach that also forces you to depend on cygwin.dll and the microsoft runtimes (mingw only depends on an outdated microsoft runtime). That makes it not suitable for a lot of stuff (Mind you, I've used cygwin for 5+ years to have a basic unix shell environment on windows and for that I'm eternally thankful but mainly because mingw as a shell environment back then was pitiful). Now the combo of mingw-msys has evolved to be a superior solution for me (and I don't need X11 gui tools on windows which mingw will probably never provide, which is how I interpret mingw's charter).


Let's look at the www.mingw.org web page:


MinGW: A collection of freely available and freely distributable Windows specific header files and import libraries combined with GNU toolsets that allow one to produce native Windows programs that do not rely on any 3rd-party C runtime DLLs.

MSYS: A Minimal SYStem to provide POSIX/Bourne configure scripts the ability to execute and create a Makefile used by make.


The clear goal is to produce native Windows programs, and to support the autotools make toolchain with enough programs to run make in order to produce native windows applications. What you want to do is extend the msys environment with extra POSIX compatible tools. To do that cmake would have to link to the MSYS run time library in order to understand things like sym links and mount points.

-Bill

_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to