>:-) Actually, I want the whole project done yesterday. ;-) >I want R3 by tomorrow. ;-) Hehehe, sure. As we all do :) >I think that the 2.4 work and the looking at the content of the rules is good. >Sure, going and changing everything right now is kind of dumb, since the directories >will all get moved around and require another touch. But remember that that is all it is - >we aren't actually changing the structure of the source code. Just the org of the directories. Yes, true, I have thought of that. For example I'm pretty sure the general structure of the kernel src will stay the same. >I am very much a believer in the concept that the build system should "just work". >I (as a developer) don't want to spend a lot of time making build stuff work. Honestly, as we >have talked about (not sure if it was here or on the admin list), I would love to have a build system >that uses heuristics to figure out how to build, possibly with a little configuration necessary if we want >to do something complicated later. > >And Jam seems to be a lot of the way there, as it was 2 months ago, for everything but the kernel. >I looked at some of the non-kernel stuff and it was like "ok - my target is an application called foo and >my source files are foo.c and bar.c". That was it. And this is all it should need to be. This .GLOB and an exception list >sound like a really good thing. Is there a way to take that a step further? Assume that, if there is no Jamfile, that we are >building an application, that the name of the app is the same as the current directory and to compile all .C and .,c files? Well that would require some changes to the Jam C source, but I think we could get pretty darn close to that with the kind of GLOB rule I described and a script to automatically generate Jamfiles (simply the first time a directory is added.) For example, a developer needs to add a new preference app to the tree. All he needs to do is put his source in the right place in the tree, run "genjam" (or something like that), and a Jamfile with pretty much everything he needs (such as the correct SubDir call) will be created. He can make a few small changes to that file (such as setting the program name), and he will be done. That may not be quite as automated as you would like Michael, but I think it comes pretty close, and uses the tools we currently have at our disposal ("genjam" could just be a shell script.) >Now, I know that the kernel stuff is somewhat more complicated by its nature. And some of it was a hack job >by people like David and myself who don't know Jam (and don't want to). ;-) I am thrilled that you guys have a passion to >clean it up. I (and I presume David feels the same way) don't have any particular pride or interest in the build stuff that >we did. Whatever is cleaner and works better makes me happy. ;-) Well as I expressed in my response to David, I don't get that impression from him. Maybe he knows better than I since he has been "in the trenches", but I almost get the impression that he doesn't even want us to try to improve it. Like I said, I really do understand how much trouble he had creating what we have now, and I wish I could have helped out more before, but that doesn't mean we should never set about trying to improve what we have. I say consider the current system a "prototype", a job well done to prove that Jam could indeed be used to build our kernel. But I hope you all realize what is supposed to happen to prototypes, and that it is bad if one tries to make a prototype the final project... >As far as the seperate objects directory, I *strongly* prefer that objects not be stored in the same directory as the code. We store >everything inline at my "real" job and I hate it. >The biggest reasons for that are these: >1) When I am working in a directory, I want to see my source, not a bunch of intermediate files that the compiler needs. Yes, I could type: ls *.[Cch]. >2) If I want to add a directory, I have to specify which files to add, instead of cvs -z8 add *. >3) If I run low on HD space, I can cd to the objects dir and type rm - rf *. Instead of something like find . -name "*.o" -exec rm {} \; >4) The objects can be blown away easily after a build. >5) It is just cleaner. Sorry, Ryan. ;-) No reason to be sorry, like I said I was on the fence and just wanted some good reasons why we use that. Though 3 and 4 can sort of be accomplished with "jam clean", I still understand the reasoning. It sounds good and like I said in my response to David, I will keep this in any changes I make. >Finally, I want to thank you guys for doing this. It isn't a glory hound >job, but believe me, it makes the developers lives better and it will make our >ultimate product a better thing. And I appreciate that. Well I do enjoy messing around with build systems and do want to make a better system, but again I feel as if I'm always fighting against David. Considering this is definitely not a glory job, it is even more surprising the difficulty I seem to encounter in trying to change the current system... Ryan Leavengood OpenBeOS Build Team Lead