From: Mike J. <mrj...@mi...> - 2012-01-09 06:02:49
|
Hi all, I could write a long rant about both of these build systems. (I did, actually, but I'll spare you most of it.) Despite the work that went into them, I just don't think either autotools or CMake are what we need. So I was looking around at the current build tools and found waf. I found it pretty easy to work with. Samba and Node.js are probably the biggest projects using it. Here are a few things I think you'll like: - Lists of sources are built from file patterns during the build phase, not during configuration. So as long as your file is called *.cpp, it'll be compiled. Adding a new file doesn't require modifying build files or reconfiguring. - There's just one top-level script to worry about, not every directory needs a build file. - Parallel builds on all OSes, including Windows (!) - On OSX, `waf install` builds /Applications/TOra.app - Runs directly from the source directory, so there's nothing for the user to install - Builds in a `build` subdir so the source tree isn't full of junk - Dependency generation is automatic - It's just Python, a real honest-to-God language. There's no limited language to learn or work around. Or scream at. - Does that fancy color output that everybody loves - Builds are really fast. There's also an improvement that we can make (including moc files), which requires some minor source changes, that gets my build down to under 3 minutes. - On Windows, I have it creating a build/release folder with all the dll dependencies so it can be run directly. - Cross platform still required work to setup, but waf gave me tools to solve problems more thoroughly than anything else we've tried. - Has actual --help messages that provide details on how to configure. Waf works really well once you grok how it works, but that can be a struggle at times. Fortunately, it's just Python code so I've found it pretty easy to hack it to bits in order to figure out what happened during my build. The best documentation is the book: http://docs.waf.googlecode.com/git/book_16/single.html Anyway, I have built it on OSX, Linux and Windows. It doesn't yet build with Oracle support, but if you'd like to check it out, here's some quick notes: General hints: use ./waf -vvvv to make it verbose if something goes wrong. Also, check the build/config.log and build/build.env files to debug. The branch is at https://tora.svn.sourceforge.net/svnroot/tora/branches/waf/tora Linux: ===== ./waf configure ./waf build -j2 Windows: ======== Download Qt 4.8 from http://get.qt.nokia.com/qt/source/qt-win-opensource-4.8.0-vs2008.exe . This one is built with MSVC 2008, so the free Express C++ can build it. Installed Postgres 9.1 binary with server. Then I had to download the source to build libpq. Run the MSVC 9 environment and build: http://www.postgresql.org/docs/9.1/static/install-windows-libpq.html Installed Windows Python binary from python.org. My configure line looks like: python waf configure --msvc_version="msvc 9.0Exp" --qtdir=c:\qt\4.8.0 --with-qscintilla=C:\projects\QScintilla-gpl-2.6 --with-pgconfig=C:\pg9.1\bin\pg_config.exe --with-pg-libpath=C:\projects\postgresql-9.1.2\src\interfaces\libpq\Release Execute: `python waf build -j2` and enjoy. :-) A mingw build should be easily done, but I have not yet worked on it. OSX: ==== All builds must be i386 because Oracle's x64 client has bugs. I built Qt 4.8, Qscintilla and Postgres for i386. I configure like this: ./waf configure --qtdir=/usr/local/qtx86 --with-pgconfig=/usr/local/pgi386/bin/pg_config --without-oracle --with-qscintilla=/usr/local/src/QScintilla-gpl-2.6 ./waf build -j2 install Builds tora and installs to /Applications/TOra.app with a standalone binary. I still have a bit of work to do, like adding stub oci.dll support, oracle, trotl and cleanups. Currently all the source is in one wscript file, which I would like to split up. But it's just a demo to see what people think. Especially on Windows and OSX, I think this could ease a lot of pain. Thanks! Mike On Tue, Jan 3, 2012 at 12:51 PM, Tomas Straupis <tom...@gm...> wrote: > > TOra rpm's are built using automake, but apparently most people use > CMake for daily builds. That is why (in my opinion) problems with > automake are usually only found when releasing stable version... > |