I have been wanting to find a way to eliminate the need for msys (and Cygwin) from my development environment for several years now. I finally hit a milestone today.
Year's ago, I'd sent a patch in for GNU autotools because it couldn't even bootstrap itself natively on Windows. The response, the developers refused to accept the patch or fix the issue because there was no working shell on Windows beyond the ones that come with Cygwin or msys. That lead me to looking into porting mksh to Windows. However, when I contacted the developers of mksh, they said they weren't interested in a Windows port because they had a private party already working on it. They may have completed the project, but I have never seen it. winbash works on Windows as does an older version of zsh. I even attempted to port msh from FreeBSD to Windows but I realized it didn't have enough capability to run configure scripts. There is a good solution that doesn't require Cygwin or msys bash though and that's busybox-w32.
Using ash and some of the utilities from busybox-w32 along with some utilities from Minix 2, BSD, sbase and some that I wrote from scratch, I was able to put together a POSIX-like environment with all Win32 native programs. I have a patched version of make that lets me use a shell other than Cygwin or msys bash. I'm also using a custom built MinGW compiler based on the last public domain releases of mingwrt and w32api from the original MinGW project. I've been maintaining my own forks of those projects to preserve the public domain status.
Today, I was able to build FOSS programs with standard gnu autotools build systems like libpng and libtiff completely without msys. I'm sure I still have parts to debug in the environment and features I'd like to add. However, I feel very good about the prospects of finally being able to eliminate msys from my system and being able to completely bootstrap my own build environment (compiler and utilities) from source.
Along with gnu make and the ability to run configure scripts produced by gnu autotools, I have also built an older port of BSD make and muon. Both could be used to build software. I have been completely avoiding CMake with any projects I build. My main problem with it is that it's so complicated, you can't even bootstrap build it. You must have a working copy of CMake to build CMake. This is not true of GNU make. You can very easily bootstrap it. Personally, I like to use a combination of gnu make and CDetect. CDetect does a wonderful job of replacing configure and it's more lightweight with less dependencies. I've rewritten builds of some of the libraries and programs I work with to use CDetect and gnu make in place of other options that I've had difficulty porting. I've been able to replace the build scripts for nano, libressl as well as others and even an older version of cdrtools (last fully GPL'd version). My plan is to stick with C or shell based build programs. It feels far too bloated to require several other languages just to successfully build a C program.
I feel like this is an important step in being able to build the applications I use regularly from source. Should anything go wrong or should the upstream sources become obsolete, I am still able to fix bugs, add features, build and maintain the software I regularly work with.
Year's ago, I'd sent a patch in for GNU autotools because it couldn't even bootstrap itself natively on Windows. The response, the developers refused to accept the patch or fix the issue because there was no working shell on Windows beyond the ones that come with Cygwin or msys. That lead me to looking into porting mksh to Windows. However, when I contacted the developers of mksh, they said they weren't interested in a Windows port because they had a private party already working on it. They may have completed the project, but I have never seen it. winbash works on Windows as does an older version of zsh. I even attempted to port msh from FreeBSD to Windows but I realized it didn't have enough capability to run configure scripts. There is a good solution that doesn't require Cygwin or msys bash though and that's busybox-w32.
Using ash and some of the utilities from busybox-w32 along with some utilities from Minix 2, BSD, sbase and some that I wrote from scratch, I was able to put together a POSIX-like environment with all Win32 native programs. I have a patched version of make that lets me use a shell other than Cygwin or msys bash. I'm also using a custom built MinGW compiler based on the last public domain releases of mingwrt and w32api from the original MinGW project. I've been maintaining my own forks of those projects to preserve the public domain status.
Today, I was able to build FOSS programs with standard gnu autotools build systems like libpng and libtiff completely without msys. I'm sure I still have parts to debug in the environment and features I'd like to add. However, I feel very good about the prospects of finally being able to eliminate msys from my system and being able to completely bootstrap my own build environment (compiler and utilities) from source.
Along with gnu make and the ability to run configure scripts produced by gnu autotools, I have also built an older port of BSD make and muon. Both could be used to build software. I have been completely avoiding CMake with any projects I build. My main problem with it is that it's so complicated, you can't even bootstrap build it. You must have a working copy of CMake to build CMake. This is not true of GNU make. You can very easily bootstrap it. Personally, I like to use a combination of gnu make and CDetect. CDetect does a wonderful job of replacing configure and it's more lightweight with less dependencies. I've rewritten builds of some of the libraries and programs I work with to use CDetect and gnu make in place of other options that I've had difficulty porting. I've been able to replace the build scripts for nano, libressl as well as others and even an older version of cdrtools (last fully GPL'd version). My plan is to stick with C or shell based build programs. It feels far too bloated to require several other languages just to successfully build a C program.
I feel like this is an important step in being able to build the applications I use regularly from source. Should anything go wrong or should the upstream sources become obsolete, I am still able to fix bugs, add features, build and maintain the software I regularly work with.