From: Lionel O. <lio...@gm...> - 2012-03-04 00:18:16
|
On Sun, Mar 4, 2012 at 12:02 AM, Tom Hacohen <to...@st...> wrote: > On 04/03/12 00:31, Lionel Orry wrote: >> Hi Tom, >> >> in case you want to widen your choices, attached is a wscript file to >> build Ecrire using the Waf build system. You only need python , the >> waf script from here: >> http://code.google.com/p/waf/downloads/detail?name=waf-1.6.11 (rename >> to 'waf' then chmod a+x) and the wscript in ecrire root source >> directory. Sample commands: >> >> cd <path/to/ecrire> >> cp <path_to>/wscript . >> wget -o waf http://code.google.com/p/waf/downloads/detail?name=waf-1.6.11 >> chmod a+x waf >> ./waf configure >> ./waf build >> ./waf install --destdir=$PWD/dist >> ./waf distcheck > > Thanks a lot. I went through the syntax, it looks pretty elegant. thanks for having a look. I made this one very quickly (15 minutes) so it could be much better but anyway. > How widely used is it? Not sure exactly, but it's quite addictive. I use it in all my professional projects now (mainly for C/C++). But apart from the small me, the most widely known waf users around are Samba and Node.js projects. > The main problem, I guess, is that it's not as easy > to use as windows (and other platforms?) such as cmake (because of the > python dep). That's one of the things I liked about cmake (but far from > only). About the python dep, it's unfortunately needed for all steps (configure, build, install, whatever else) since the wscript is simply a python script evaluated in a specific context. So yes, the python dep might be a no-go for windows (unless we create a waf executable embedding the python runtime, I think there are scripts to transform a python script to a .exe). Unlike CMake, waf is not a makefile generator, it is a build system by itself with its own dependency tracking and other useful features. > > Also, what about out of source builds? I've heard about Waf before > (mostly in a negative context), and maybe the python dep makes it a no > go (though it's also alluring), but I'd still like to hear more if you > care to provide. It's fun easily being able to do whatever python does. > :) Does it create windows VS project files? I heard about some efforts towards VS project files and I think it does work quite correctly though I've not tested: see http://code.google.com/p/waf/source/browse/waflib/extras/msvs.py There also is an eclipse project generator (http://code.google.com/p/waf/source/browse/waflib/extras/eclipse.py) and a XCode project generator (http://code.google.com/p/waf/source/browse/waflib/extras/xcode.py). > or Makefiles in general? it could theoretically be used to generate a Makefile easily, but I think it should also be used to generate a configure file too, since the configure step is important in the build process as designed by waf. it is close to the autotools in this regard. That being said, I've not seen a Makefile generator yet (probably because it would need other external scripts such as a configure). > > Also, what I don't like about cmake (which is an issue that seems to > exist with Waf as well, but heck, I don't know enough about both to know > if it's even true), is not being able to create a configure script so > the source tarball will be dep free. well for waf the configure step is in python, so if you know of a way to translate python code to bash code you might be my hero, but I doubt it is easily feasible. :P more seriously, configure scripts use bash and gnu-like tools (sed, awk, grep, whatever) so I don't consider that configure scripts are dependency-free. This is a question of point of view. Of course, if you attempt to build a software project, you often tend to have such an environment ready so that your "./configure; make; make install" works (think msys for mingw or cygwin for windows for example, and on MacOS I heard about packages to get a GNU-ready environment). So as I stated above, it may not be harder to generate a self-executable file embedding the python vm and the waf script (would be waf.exe on windows for example) and ship it in a way or another. Then, absolutely no dependency (other than compilation tools themselves) is needed, meaning the waf script could be executed from a cmd.exe. I tried to place myself from the windows POV since I know it better than MacOS or another OS, but you get the point. If you want to build a software, there's a environment to set up. Installing python or downloading a waf.exe file is IMHO easier than setting up a GNU-like environment (like msys/mingw) when you're not used to unixes. > > Thanks again, > Tom. > You're welcome, Lionel |