[haiku-development] Re: Haiku Jam question

  • From: Ingo Weinhold <ingo_weinhold@xxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Thu, 22 Jan 2009 00:08:10 +0100

On 2009-01-21 at 22:44:03 [+0100], Marcus Jacob <rossi@xxxxxxxxxxxxxxx> 
wrote:
> 
> I currently have a Haiku build setup, which generates a hybrid
> GCC2(base)/GCC4(libs) build.
> 
> Additionally I have some stuff build by its own Jamfile, which in turn
> gets included in UserBuildConfig using an include clause, which is
> framed with an if clause ensuring its only included in GCC4 builds.
> 
> Sofar so good, if I invoke jam from the GCC4 configured generated.gcc4
> directory directly on the target in question everything works as
> expected.
> 
> Now I however want to have this app and its libraries included in the
> full build. But I don't know what to do to include additional non
> system libs and the app itself in the main build, without invoking it
> manually.
> 
> My normal build of course is invoked from the GCC2 configured
> generated.gcc2 directory. Any hints?

ATM there's no special feature that allows you to do that in an easy way. 
It can be done with a bit of extra work in your UserBuildConfig, though.

First of all you need to build your gcc4 targets from the gcc2 build. You 
can do that by writing a rule that invokes the gcc4 build for those 
targets. To save the time for another jam/build system startup, you can as 
well do that in the gcc4 build that is invoked anyway for the compatibility 
libs. To identify that your UserBuildConfig is executed by that build you 
can verify that you're in a gcc4 build and that JAM_TARGETS contains the 
compatibility libs zip target (just "echo" JAM_TARGETS once to get the 
exact target name). If that's the case, just "+=" your targets to 
JAM_TARGETS and they will be built, too.

The second step is to add your gcc4 targets in your gcc2 build to the 
image. That can be done via AddFilesToHaikuImage as one would add any other 
build-external file; just use the paths of your generated gcc4 targets.

Not particularly elegant, but it should work fine. Good luck!

CU, Ingo

Other related posts: