3 messages in com.perforce.jammingCan Jam handle multi-compiler projects?| From | Sent On | Attachments |
|---|---|---|
| Kend...@scitechsoft.com | 23 Jul 1999 15:50 | |
| Dian...@whistle.com | 23 Jul 1999 22:03 | |
| Dian...@whistle.com | 23 Jul 1999 22:38 |
| Subject: | Can Jam handle multi-compiler projects?![]() |
|---|---|
| From: | Kend...@scitechsoft.com (Kend...@scitechsoft.com) |
| Date: | 07/23/1999 03:50:42 PM |
| List: | com.perforce.jamming |
Hi Guys,
I want to take another look at Jam for our build system. However one of the problems we have is that we need to build the components of our product using multiple compilers. We use Visual C++ for some stuff (our drivers), Borland C++ for other stuff (our VxD's and most user apps). We could change our system to build only using a single compiler for our retail products, but we also developed software libraries (our Open Source MGL graphics library) which we distribute pre-compiled libraries for. Hence doing an official build of the MGL requies us to build every library using every supported compiler on every platform.
So, is it possible to do this type of thing with Jam? Ie: to tell it that I need to build this library with all of Visual C++, Borland C++, Watcom C++, CodeWarrior and IBM VisualAge (not to mention multiple versions of each compiler!). Then other stuff only needs to be built with one compiler (such as our VxD components and runtime DLL's). In our current build system, when we do a build everything gets built from scratch because the object files for every library are always stored in the same directory as the core makefile for that library.
The way I understand Jam (which sounds very cool), is that it works by only building stuff that is out of date. To do that I would need a mechanism such that for each compiler we need to build, the object files for that compiler as put into a directory corresponding to that compiler. Ie, the directory layout might be the following:
src\mylib - Core source files src\mylib\debug\bc5 - Borland C++ 5.0 debug objects src\mylib\debug\vc5 - Visual C++ 5.0 debug objects src\mylib\debug\wc11 - Watcom C++ 11.0 debug objects src\mylib\release\bc5 - Borland C++ 5.0 release objects src\mylib\release\vc5 - Visual C++ 5.0 release objects src\mylib\release\wc11 - Watcom C++ 11.0 release objects
Of course this could take up *huge* amounts of disk space if we need to cache all the object files for every compiler. However one idea I had is that if Jam was smart enough to know where the resulting libraries live, it could do the dependencies against the library files somehow, and know that when a file needs to be re-built it should update the object file in the existing library instead of building a new library from scratch.
Anyway, your thoughts would be appreciated...
Regards,
+---------------------------------------------------------------+ | SciTech Software - Building Truly Plug'n'Play Software! | +---------------------------------------------------------------+ | Kendall Bennett | Email: Kend...@scitechsoft.com | | Director of Engineering | Phone: (530) 894 8400 | | SciTech Software, Inc. | Fax : (530) 894 9069 | | 505 Wall Street | ftp : ftp.scitechsoft.com | | Chico, CA 95928, USA | www : http://www.scitechsoft.com | +---------------------------------------------------------------+




